mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'main' into 'rev/roles_1'
Main See merge request jjimenez/safekat!672
This commit is contained in:
@ -16,17 +16,15 @@ $routes->get('/', 'Home::index', ['as' => 'home']);
|
|||||||
$routes->get('lang/{locale}', 'Language::index');
|
$routes->get('lang/{locale}', 'Language::index');
|
||||||
$routes->get('viewmode/(:alpha)', 'Viewmode::index/$1');
|
$routes->get('viewmode/(:alpha)', 'Viewmode::index/$1');
|
||||||
|
|
||||||
|
/* URL FOR TESTS */
|
||||||
|
$routes->get('test', 'Test::index');
|
||||||
|
|
||||||
|
|
||||||
$routes->group('activity', ['namespace' => 'App\Controllers\Sistema'], function ($routes) {
|
$routes->group('activity', ['namespace' => 'App\Controllers\Sistema'], function ($routes) {
|
||||||
$routes->get('', 'Actividad::index', ['as' => 'activityList']);
|
$routes->get('', 'Actividad::index', ['as' => 'activityList']);
|
||||||
$routes->post('datatable', 'Actividad::datatable', ['as' => 'activityDT']);
|
$routes->post('datatable', 'Actividad::datatable', ['as' => 'activityDT']);
|
||||||
});
|
});
|
||||||
|
|
||||||
$routes->group('settings', ['namespace' => 'App\Controllers\Sistema'], function ($routes) {
|
|
||||||
$routes->get('', 'Ajustes::settings', ['as' => 'ajustesList']);
|
|
||||||
$routes->post('', 'Ajustes::settings', ['as' => 'ajustesEdit']);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* --------------------------------------------------------------------
|
* --------------------------------------------------------------------
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
namespace App\Controllers;
|
namespace App\Controllers;
|
||||||
|
|
||||||
use App\Models\NotificationModel;
|
|
||||||
use App\Models\SettingsModel;
|
|
||||||
use CodeIgniter\Controller;
|
use CodeIgniter\Controller;
|
||||||
use CodeIgniter\HTTP\CLIRequest;
|
use CodeIgniter\HTTP\CLIRequest;
|
||||||
use CodeIgniter\HTTP\IncomingRequest;
|
use CodeIgniter\HTTP\IncomingRequest;
|
||||||
|
|||||||
@ -17,10 +17,10 @@ namespace App\Controllers;
|
|||||||
*/
|
*/
|
||||||
use CodeIgniter\Controller;
|
use CodeIgniter\Controller;
|
||||||
use CodeIgniter\Database\Query;
|
use CodeIgniter\Database\Query;
|
||||||
use App\Models\NotificationModel;
|
|
||||||
|
|
||||||
|
|
||||||
abstract class GoBaseController extends Controller {
|
abstract class GoBaseController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -102,7 +102,7 @@ abstract class GoBaseController extends Controller {
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
public $viewData;
|
public $viewData;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JJO: Variable para indicar si el controlador hace soft_delete o no
|
* JJO: Variable para indicar si el controlador hace soft_delete o no
|
||||||
@ -139,14 +139,15 @@ abstract class GoBaseController extends Controller {
|
|||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $helpers = ['session', 'go_common', 'text', 'general','jwt', 'rbac']; //JJO
|
protected $helpers = ['session', 'go_common', 'text', 'general', 'jwt', 'rbac']; //JJO
|
||||||
|
|
||||||
public static $queries = [];
|
public static $queries = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*/
|
*/
|
||||||
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger) {
|
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
|
||||||
|
{
|
||||||
// Do Not Edit This Line
|
// Do Not Edit This Line
|
||||||
parent::initController($request, $response, $logger);
|
parent::initController($request, $response, $logger);
|
||||||
|
|
||||||
@ -155,9 +156,9 @@ abstract class GoBaseController extends Controller {
|
|||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
// E.g.:
|
// E.g.:
|
||||||
$this->session = \Config\Services::session();
|
$this->session = \Config\Services::session();
|
||||||
|
|
||||||
|
|
||||||
if ((!isset($this->viewData['pageTitle']) || empty($this->viewData['pageTitle']) ) && isset(static::$pluralObjectName) && !empty(static::$pluralObjectName)) {
|
|
||||||
|
if ((!isset($this->viewData['pageTitle']) || empty($this->viewData['pageTitle'])) && isset(static::$pluralObjectName) && !empty(static::$pluralObjectName)) {
|
||||||
$this->viewData['pageTitle'] = ucfirst(static::$pluralObjectName);
|
$this->viewData['pageTitle'] = ucfirst(static::$pluralObjectName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,7 +172,7 @@ abstract class GoBaseController extends Controller {
|
|||||||
if (empty(static::$controllerSlug)) {
|
if (empty(static::$controllerSlug)) {
|
||||||
$reflect = new \ReflectionClass($this);
|
$reflect = new \ReflectionClass($this);
|
||||||
$className = $reflect->getShortName();
|
$className = $reflect->getShortName();
|
||||||
$this->viewData['currentModule'] = slugify(convertToSnakeCase(str_replace('Controller','',$className)));
|
$this->viewData['currentModule'] = slugify(convertToSnakeCase(str_replace('Controller', '', $className)));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$this->viewData['currentModule'] = strtolower(static::$controllerSlug);
|
$this->viewData['currentModule'] = strtolower(static::$controllerSlug);
|
||||||
@ -185,43 +186,31 @@ abstract class GoBaseController extends Controller {
|
|||||||
$this->model = &$this->primaryModel;
|
$this->model = &$this->primaryModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Preload any models, libraries, etc, here.
|
// Preload any models, libraries, etc, here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Language Validate
|
// Language Validate
|
||||||
$language = \Config\Services::language();
|
$language = \Config\Services::language();
|
||||||
$language->setLocale($this->session->lang);
|
$language->setLocale($this->session->lang);
|
||||||
|
|
||||||
// Set TimeZone
|
// Set TimeZone
|
||||||
if(empty($this->session->get('settings'))){
|
if (empty($this->session->get('settings'))) {
|
||||||
$settingsModel = new SettingsModel();
|
$time_zone = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('default_timezone')->value;
|
||||||
$settings = $settingsModel->select('default_timezone')->first()??[];
|
date_default_timezone_set($time_zone ?? 'Europe/Madrid');
|
||||||
date_default_timezone_set($this->$settings['default_timezone']??'America/Sao_Paulo');
|
} else {
|
||||||
}else{
|
date_default_timezone_set($this->session->get('settings')['default_timezone'] ?? 'Europe/Madrid');
|
||||||
date_default_timezone_set($this->session->get('settings')['default_timezone']??'America/Sao_Paulo');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get notification
|
|
||||||
if(!empty($this->session->get('token'))) {
|
|
||||||
$notificationModel = new NotificationModel();
|
|
||||||
$pulse = $notificationModel->where('user_recipient',$this->session->get('token'))->where('is_read',false)->countAllResults() ?? 0;
|
|
||||||
$notification = $notificationModel->select('token,title,is_read,created_at')->where('user_recipient',$this->session->get('token'))->orderBy('created_at','desc')->findAll(5) ?? [];
|
|
||||||
$this->session->set('notification', $notification);
|
|
||||||
$this->session->set('pulse', $pulse);
|
|
||||||
}else{
|
|
||||||
$this->session->set('notification', []);
|
|
||||||
$this->session->set('pulse', 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->viewData['currentLocale'] = $this->request->getLocale();
|
$this->viewData['currentLocale'] = $this->request->getLocale();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function index() {
|
public function index()
|
||||||
|
{
|
||||||
|
|
||||||
helper('text');
|
helper('text');
|
||||||
|
|
||||||
if ((!isset($this->viewData['boxTitle']) || empty($this->viewData['boxTitle']) ) && isset(static::$pluralObjectName) && !empty(static::$pluralObjectName)) {
|
if ((!isset($this->viewData['boxTitle']) || empty($this->viewData['boxTitle'])) && isset(static::$pluralObjectName) && !empty(static::$pluralObjectName)) {
|
||||||
$this->viewData['boxTitle'] = ucfirst(static::$pluralObjectName);
|
$this->viewData['boxTitle'] = ucfirst(static::$pluralObjectName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -236,10 +225,10 @@ abstract class GoBaseController extends Controller {
|
|||||||
|
|
||||||
// if $this->currentView is assigned a view name, use it, otherwise assume the view something like 'viewSingleObjectList'
|
// if $this->currentView is assigned a view name, use it, otherwise assume the view something like 'viewSingleObjectList'
|
||||||
$viewFilePath = static::$viewPath . (empty($this->currentView) ? 'view' . ucfirst(static::$singularObjectNameCc) . 'List' : $this->currentView);
|
$viewFilePath = static::$viewPath . (empty($this->currentView) ? 'view' . ucfirst(static::$singularObjectNameCc) . 'List' : $this->currentView);
|
||||||
|
|
||||||
echo view($viewFilePath, $this->viewData);
|
echo view($viewFilePath, $this->viewData);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -248,12 +237,13 @@ abstract class GoBaseController extends Controller {
|
|||||||
* @param null $objId
|
* @param null $objId
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function displayForm($forMethod, $objId = null) {
|
protected function displayForm($forMethod, $objId = null)
|
||||||
|
{
|
||||||
|
|
||||||
helper('form');
|
helper('form');
|
||||||
$this->viewData['usingSelect2'] = true;
|
$this->viewData['usingSelect2'] = true;
|
||||||
|
|
||||||
$validation = \Config\Services::validation();
|
$validation = \Config\Services::validation();
|
||||||
|
|
||||||
$action = str_replace(static::class . '::', '', $forMethod);
|
$action = str_replace(static::class . '::', '', $forMethod);
|
||||||
$actionSuffix = ' ';
|
$actionSuffix = ' ';
|
||||||
@ -270,13 +260,13 @@ abstract class GoBaseController extends Controller {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($this->viewData['formAction'])) {
|
if (!isset($this->viewData['formAction'])) {
|
||||||
$this->viewData['formAction'] = base_url(strtolower($this->viewData['currentModule']) . '/' . $action . '/' . $formActionSuffix);
|
$this->viewData['formAction'] = base_url(strtolower($this->viewData['currentModule']) . '/' . $action . '/' . $formActionSuffix);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((!isset($this->viewData['boxTitle']) || empty($this->viewData['boxTitle']) ) && isset(static::$singularObjectName) && !empty(static::$singularObjectName)) {
|
if ((!isset($this->viewData['boxTitle']) || empty($this->viewData['boxTitle'])) && isset(static::$singularObjectName) && !empty(static::$singularObjectName)) {
|
||||||
$this->viewData['boxTitle'] = ucfirst($action) . $actionSuffix . ucfirst(static::$singularObjectName);
|
$this->viewData['boxTitle'] = ucfirst($action) . $actionSuffix . ucfirst(static::$singularObjectName);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->viewData['validation'] = $validation;
|
$this->viewData['validation'] = $validation;
|
||||||
|
|
||||||
$viewFilePath = static::$viewPath . 'view' . ucfirst(static::$singularObjectNameCc) . 'Form';
|
$viewFilePath = static::$viewPath . 'view' . ucfirst(static::$singularObjectNameCc) . 'Form';
|
||||||
@ -284,7 +274,8 @@ abstract class GoBaseController extends Controller {
|
|||||||
return view($viewFilePath, $this->viewData);
|
return view($viewFilePath, $this->viewData);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function redirect2listView($flashDataKey = null, $flashDataValue = null) {
|
protected function redirect2listView($flashDataKey = null, $flashDataValue = null)
|
||||||
|
{
|
||||||
|
|
||||||
if (!empty($this->indexRoute)) {
|
if (!empty($this->indexRoute)) {
|
||||||
$uri = base_url(route_to($this->indexRoute));
|
$uri = base_url(route_to($this->indexRoute));
|
||||||
@ -304,9 +295,9 @@ abstract class GoBaseController extends Controller {
|
|||||||
} else {
|
} else {
|
||||||
$getHandlingRoutes = $routes->getRoutes('get');
|
$getHandlingRoutes = $routes->getRoutes('get');
|
||||||
|
|
||||||
$indexMethod = array_search('\\App\\Controllers\\'.$className.'::index', $getHandlingRoutes);
|
$indexMethod = array_search('\\App\\Controllers\\' . $className . '::index', $getHandlingRoutes);
|
||||||
if ($indexMethod) {
|
if ($indexMethod) {
|
||||||
$uri = route_to('App\\Controllers\\'.$className.'::index');
|
$uri = route_to('App\\Controllers\\' . $className . '::index');
|
||||||
} else {
|
} else {
|
||||||
$uri = base_url(static::$controllerSlug);
|
$uri = base_url(static::$controllerSlug);
|
||||||
}
|
}
|
||||||
@ -315,7 +306,7 @@ abstract class GoBaseController extends Controller {
|
|||||||
$uri = base_url($className);
|
$uri = base_url($className);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($flashDataKey != null && $flashDataValue != null) {
|
if ($flashDataKey != null && $flashDataValue != null) {
|
||||||
return redirect()->to($uri)->with($flashDataKey, $flashDataValue);
|
return redirect()->to($uri)->with($flashDataKey, $flashDataValue);
|
||||||
} else {
|
} else {
|
||||||
@ -323,10 +314,11 @@ abstract class GoBaseController extends Controller {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function delete($requestedId, bool $deletePermanently = true) {
|
public function delete($requestedId, bool $deletePermanently = true)
|
||||||
|
{
|
||||||
|
|
||||||
if (is_string($requestedId)) :
|
if (is_string($requestedId)):
|
||||||
if (is_numeric($requestedId)) :
|
if (is_numeric($requestedId)):
|
||||||
$id = filter_var($requestedId, FILTER_SANITIZE_NUMBER_INT);
|
$id = filter_var($requestedId, FILTER_SANITIZE_NUMBER_INT);
|
||||||
else:
|
else:
|
||||||
$onlyAlphaNumeric = true;
|
$onlyAlphaNumeric = true;
|
||||||
@ -338,64 +330,66 @@ abstract class GoBaseController extends Controller {
|
|||||||
$id = intval($requestedId);
|
$id = intval($requestedId);
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
if (empty($id) || $id === 0) :
|
if (empty($id) || $id === 0):
|
||||||
$error = 'Invalid identifier provided to delete the object.';
|
$error = 'Invalid identifier provided to delete the object.';
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
$rawResult = null;
|
$rawResult = null;
|
||||||
|
|
||||||
if (!isset($error)) :
|
if (!isset($error)):
|
||||||
try {
|
try {
|
||||||
if ($deletePermanently && !$this->soft_delete) :
|
if ($deletePermanently && !$this->soft_delete):
|
||||||
if (is_numeric($id)) :
|
if (is_numeric($id)):
|
||||||
$rawResult = $this->primaryModel->delete($id);
|
$rawResult = $this->primaryModel->delete($id);
|
||||||
else:
|
else:
|
||||||
$rawResult = $this->primaryModel->where($this->primaryModel->getPrimaryKeyName(), $id)->delete();
|
$rawResult = $this->primaryModel->where($this->primaryModel->getPrimaryKeyName(), $id)->delete();
|
||||||
endif;
|
endif;
|
||||||
elseif ($this->soft_delete):
|
elseif ($this->soft_delete):
|
||||||
$datetime = (new \CodeIgniter\I18n\Time("now"));
|
$datetime = (new \CodeIgniter\I18n\Time("now"));
|
||||||
$rawResult = $this->primaryModel->where('id',$id)
|
$rawResult = $this->primaryModel->where('id', $id)
|
||||||
->set(['deleted_at' => $datetime->format('Y-m-d H:i:s'),
|
->set([
|
||||||
'is_deleted' => $this->delete_flag])
|
'deleted_at' => $datetime->format('Y-m-d H:i:s'),
|
||||||
->update();
|
'is_deleted' => $this->delete_flag
|
||||||
|
])
|
||||||
|
->update();
|
||||||
|
|
||||||
else:
|
else:
|
||||||
$rawResult = $this->primaryModel->update($id, ['deleted' => true]);
|
$rawResult = $this->primaryModel->update($id, ['deleted' => true]);
|
||||||
endif;
|
endif;
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
log_message('error', "Exception: Error deleting object named '".(static::$singularObjectName ?? 'unknown')."' with $id :\r\n".$e->getMessage());
|
log_message('error', "Exception: Error deleting object named '" . (static::$singularObjectName ?? 'unknown') . "' with $id :\r\n" . $e->getMessage());
|
||||||
}
|
}
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
$ar = $this->primaryModel->db->affectedRows();
|
$ar = $this->primaryModel->db->affectedRows();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$dbError = $this->primaryModel->db->error();
|
$dbError = $this->primaryModel->db->error();
|
||||||
} catch (\Exception $e2) {
|
} catch (\Exception $e2) {
|
||||||
if ($e2->getMessage() != "Trying to get property 'errno' of non-object") {
|
if ($e2->getMessage() != "Trying to get property 'errno' of non-object") {
|
||||||
log_message('error', $e2->getCode() . ' : ' . $e2->getMessage()) ;
|
log_message('error', $e2->getCode() . ' : ' . $e2->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isset($dbError['code']) && isset($dbError['message'])) {
|
if (isset($dbError['code']) && isset($dbError['message'])) {
|
||||||
log_message('error', $dbError['code'].' '.$dbError['message']);
|
log_message('error', $dbError['code'] . ' ' . $dbError['message']);
|
||||||
} else {
|
} else {
|
||||||
$dbError = ['code' => '', 'message'=>''];
|
$dbError = ['code' => '', 'message' => ''];
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = ['persisted'=>$ar>0, 'ar'=>$ar, 'persistedId'=>null, 'affectedRows'=>$ar, 'errorCode'=>$dbError['code'], 'error'=>$dbError['message']];
|
$result = ['persisted' => $ar > 0, 'ar' => $ar, 'persistedId' => null, 'affectedRows' => $ar, 'errorCode' => $dbError['code'], 'error' => $dbError['message']];
|
||||||
|
|
||||||
$nameOfDeletedObject = static::$singularObjectNameCc;
|
$nameOfDeletedObject = static::$singularObjectNameCc;
|
||||||
|
|
||||||
if ($ar < 1) :
|
if ($ar < 1):
|
||||||
$errorMessage = lang('Basic.global.deleteError', [$nameOfDeletedObject]); // 'No ' . static::$singularObjectName . ' was deleted now, because it probably had already been deleted.';
|
$errorMessage = lang('Basic.global.deleteError', [$nameOfDeletedObject]); // 'No ' . static::$singularObjectName . ' was deleted now, because it probably had already been deleted.';
|
||||||
$fdKey = isset($this->viewData['usingSweetAlert'] ) && $this->viewData['usingSweetAlert'] ? 'sweet-error' : 'errorMessage';
|
$fdKey = isset($this->viewData['usingSweetAlert']) && $this->viewData['usingSweetAlert'] ? 'sweet-error' : 'errorMessage';
|
||||||
$errorMessage = str_replace("'", "\'", $errorMessage);
|
$errorMessage = str_replace("'", "\'", $errorMessage);
|
||||||
return $this->redirect2listView($fdKey, str_replace("'", '', $errorMessage));
|
return $this->redirect2listView($fdKey, str_replace("'", '', $errorMessage));
|
||||||
else:
|
else:
|
||||||
$message = lang('Basic.global.deleteSuccess', [$nameOfDeletedObject]); // 'The ' . static::$singularObjectName . ' was successfully deleted.';
|
$message = lang('Basic.global.deleteSuccess', [$nameOfDeletedObject]); // 'The ' . static::$singularObjectName . ' was successfully deleted.';
|
||||||
$fdKey = isset($this->viewData['usingSweetAlert'] ) && $this->viewData['usingSweetAlert'] ? 'sweet-success' : 'successMessage';
|
$fdKey = isset($this->viewData['usingSweetAlert']) && $this->viewData['usingSweetAlert'] ? 'sweet-success' : 'successMessage';
|
||||||
if ($result['affectedRows']>1) :
|
if ($result['affectedRows'] > 1):
|
||||||
log_message('warning', "More than one row has been deleted in attempt to delete row for object named '".(static::$singularObjectName ?? 'unknown')."' with id: $id");
|
log_message('warning', "More than one row has been deleted in attempt to delete row for object named '" . (static::$singularObjectName ?? 'unknown') . "' with id: $id");
|
||||||
endif;
|
endif;
|
||||||
$message = str_replace("'", "\'", $message);
|
$message = str_replace("'", "\'", $message);
|
||||||
return $this->redirect2listView($fdKey, $message);
|
return $this->redirect2listView($fdKey, $message);
|
||||||
@ -403,7 +397,7 @@ abstract class GoBaseController extends Controller {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience method to validate form submission
|
* Convenience method to validate form submission
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
@ -416,14 +410,15 @@ abstract class GoBaseController extends Controller {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$validationErrorMessages = $this->model->validationMessages ?? $this->formValidationErrorMessagess ?? null;;
|
$validationErrorMessages = $this->model->validationMessages ?? $this->formValidationErrorMessagess ?? null;
|
||||||
|
;
|
||||||
|
|
||||||
if ($validationErrorMessages != null) {
|
if ($validationErrorMessages != null) {
|
||||||
$valid = $this->validate($validationRules, $validationErrorMessages);
|
$valid = $this->validate($validationRules, $validationErrorMessages);
|
||||||
} else {
|
} else {
|
||||||
$valid = $this->validate($validationRules);
|
$valid = $this->validate($validationRules);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->validationErrors = $valid ? '' : $this->validator->getErrors();
|
$this->validationErrors = $valid ? '' : $this->validator->getErrors();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -443,7 +438,8 @@ abstract class GoBaseController extends Controller {
|
|||||||
* @param array|null $postData
|
* @param array|null $postData
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function sanitized(array $postData = null, bool $nullIfEmpty = false) {
|
protected function sanitized(array $postData = null, bool $nullIfEmpty = false)
|
||||||
|
{
|
||||||
if ($postData == null) {
|
if ($postData == null) {
|
||||||
$postData = $this->request->getPost();
|
$postData = $this->request->getPost();
|
||||||
}
|
}
|
||||||
@ -462,29 +458,31 @@ abstract class GoBaseController extends Controller {
|
|||||||
* Convenience method for common exception handling
|
* Convenience method for common exception handling
|
||||||
* @param \Exception $e
|
* @param \Exception $e
|
||||||
*/
|
*/
|
||||||
protected function dealWithException(\Exception $e) {
|
protected function dealWithException(\Exception $e)
|
||||||
|
{
|
||||||
// using another try / catch block to prevent to avoid CodeIgniter bug throwing trivial exceptions for querying DB errors
|
// using another try / catch block to prevent to avoid CodeIgniter bug throwing trivial exceptions for querying DB errors
|
||||||
try {
|
try {
|
||||||
$query = $this->model->db->getLastQuery();
|
$query = $this->model->db->getLastQuery();
|
||||||
$queryStr = !is_null($query) ? $query->getQuery() : '';
|
$queryStr = !is_null($query) ? $query->getQuery() : '';
|
||||||
$dbError = $this->model->db->error();
|
$dbError = $this->model->db->error();
|
||||||
$userFriendlyErrMsg = lang('Basic.global.persistErr1', [static::$singularObjectNameCc]);
|
$userFriendlyErrMsg = lang('Basic.global.persistErr1', [static::$singularObjectNameCc]);
|
||||||
if (isset($dbError['code']) && $dbError['code'] == 1062) :
|
if (isset($dbError['code']) && $dbError['code'] == 1062):
|
||||||
$userFriendlyErrMsg .= PHP_EOL.lang('Basic.global.persistDuplErr', [static::$singularObjectNameCc]);
|
$userFriendlyErrMsg .= PHP_EOL . lang('Basic.global.persistDuplErr', [static::$singularObjectNameCc]);
|
||||||
endif;
|
endif;
|
||||||
// $userFriendlyErrMsg = str_replace("'", "\'", $userFriendlyErrMsg); // Uncomment if experiencing unescaped single quote errors
|
// $userFriendlyErrMsg = str_replace("'", "\'", $userFriendlyErrMsg); // Uncomment if experiencing unescaped single quote errors
|
||||||
log_message('error', $userFriendlyErrMsg.PHP_EOL.$e->getMessage().PHP_EOL.$queryStr);
|
log_message('error', $userFriendlyErrMsg . PHP_EOL . $e->getMessage() . PHP_EOL . $queryStr);
|
||||||
if (isset($dbError['message']) && !empty($dbError['message'])) :
|
if (isset($dbError['message']) && !empty($dbError['message'])):
|
||||||
log_message('error', $dbError['code'].' : '.$dbError['message']);
|
log_message('error', $dbError['code'] . ' : ' . $dbError['message']);
|
||||||
endif;
|
endif;
|
||||||
$this->viewData['errorMessage'] = $userFriendlyErrMsg;
|
$this->viewData['errorMessage'] = $userFriendlyErrMsg;
|
||||||
} catch (\Exception $e2) {
|
} catch (\Exception $e2) {
|
||||||
log_message('debug', 'You can probably safely ignore this: In attempt to check DB errors, CodeIgniter threw: '.PHP_EOL.$e2->getMessage());
|
log_message('debug', 'You can probably safely ignore this: In attempt to check DB errors, CodeIgniter threw: ' . PHP_EOL . $e2->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Collect the queries so something can be done with them later.
|
// Collect the queries so something can be done with them later.
|
||||||
public static function collect(Query $query) {
|
public static function collect(Query $query)
|
||||||
|
{
|
||||||
static::$queries[] = $query;
|
static::$queries[] = $query;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -495,7 +493,8 @@ abstract class GoBaseController extends Controller {
|
|||||||
* @param object $sourceObject
|
* @param object $sourceObject
|
||||||
* @return object
|
* @return object
|
||||||
*/
|
*/
|
||||||
function cast($destination, $sourceObject) {
|
function cast($destination, $sourceObject)
|
||||||
|
{
|
||||||
if (is_string($destination)) {
|
if (is_string($destination)) {
|
||||||
$destination = new $destination();
|
$destination = new $destination();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,518 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Controllers;
|
|
||||||
|
|
||||||
use App\Models\ActivityModel;
|
|
||||||
use App\Models\PasswordRecoveryModel;
|
|
||||||
use App\Models\SettingsModel;
|
|
||||||
use App\Models\TemplateModel;
|
|
||||||
use App\Models\Usuarios\UserModel;
|
|
||||||
use App\Libraries\PasswordHash;
|
|
||||||
use CodeIgniter\HTTP\Files\FileCollection;
|
|
||||||
|
|
||||||
class Integration extends BaseController
|
|
||||||
{
|
|
||||||
private $user_model;
|
|
||||||
private $settings_model;
|
|
||||||
private $pass_recovery_model;
|
|
||||||
private $template_model;
|
|
||||||
private $activity_model;
|
|
||||||
private $id_user;
|
|
||||||
private $token_user;
|
|
||||||
|
|
||||||
function __construct()
|
|
||||||
{
|
|
||||||
$this->user_model = new UserModel();
|
|
||||||
$this->settings_model = new SettingsModel();
|
|
||||||
$this->pass_recovery_model = new PasswordRecoveryModel();
|
|
||||||
$this->template_model = new TemplateModel();
|
|
||||||
$this->activity_model = new ActivityModel();
|
|
||||||
$this->id_user = session()->get('id_user');
|
|
||||||
$this->token_user = session()->get('token');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
echo view(getenv('theme.path').'main/header');
|
|
||||||
echo view(getenv('theme.path').'form/dashboard/index');
|
|
||||||
echo view(getenv('theme.path').'main/footer');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function send_email($email='',$subject='',$body='',$key='',$json=false){
|
|
||||||
if(empty($email)){
|
|
||||||
return $json ? json_encode(["return" => false]) : false;
|
|
||||||
}
|
|
||||||
$phpass = new PasswordHash(8, true);
|
|
||||||
if(!$phpass->CheckPassword(MD5($email), $key)){
|
|
||||||
return $json ? json_encode(["return" => false]) : false;
|
|
||||||
}
|
|
||||||
$user = $this->user_model->where('email',$email??null)->first();
|
|
||||||
if(!empty($user)){
|
|
||||||
foreach (keywordEmail()??[] as $item){
|
|
||||||
$field = str_replace(['[','user_',']'],'',$item);
|
|
||||||
if(str_contains($body, $field)){
|
|
||||||
$body = str_replace('['.$item.']',$user->{$field},$body);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if($this->sendMail($subject,unescape($body),$email)){
|
|
||||||
return $json ? json_encode(["return" => true]) : true;
|
|
||||||
}else{
|
|
||||||
return $json ? json_encode(["return" => false]) : false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function send_email_test($email=''){
|
|
||||||
$token = session()->get('token')??'';
|
|
||||||
if(!empty($token)){
|
|
||||||
if(empty($email)){
|
|
||||||
return $this->response->setJSON(["return" => false]);
|
|
||||||
}
|
|
||||||
$subject = "Email Test";
|
|
||||||
$body = "Email working successfully!";
|
|
||||||
if($this->sendMail($subject,unescape($body),$email)){
|
|
||||||
return $this->response->setJSON(["return" => true]);
|
|
||||||
}else{
|
|
||||||
return $this->response->setJSON(["return" => false]);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
return $this->response->setJSON(["return" => false]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function reset_password(){
|
|
||||||
$session = session();
|
|
||||||
$settings = $session->get('settings');
|
|
||||||
helper('text');
|
|
||||||
|
|
||||||
if($listPost = $this->request->getPost()){
|
|
||||||
|
|
||||||
// Captcha Validation
|
|
||||||
if($settings['captcha_recovery']??false){
|
|
||||||
if($settings['captcha_gateway'] == 'recaptcha'){
|
|
||||||
if(isset($listPost['g-recaptcha-response'])){
|
|
||||||
$captcha = $listPost['g-recaptcha-response'];
|
|
||||||
$url = 'https://www.google.com/recaptcha/api/siteverify?secret='.urlencode($settings['captcha_secret_key']??'').'&response='.urlencode($captcha);
|
|
||||||
$response = file_get_contents($url);
|
|
||||||
$responseKeys = json_decode($response,true);
|
|
||||||
if(!$responseKeys["success"]) {
|
|
||||||
$session->setFlashdata('toast', ['error',lang("App.login_alert"),lang("App.login_alert_captcha_invalid")]);
|
|
||||||
return redirect()->to('/login/forgot_password');
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
$session->setFlashdata('toast', ['error',lang("App.login_alert"),lang("App.login_alert_captcha_not_found")]);
|
|
||||||
return redirect()->to('/login/forgot_password');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($settings['captcha_gateway'] == 'hcaptcha'){
|
|
||||||
if(isset($listPost['h-captcha-response'])){
|
|
||||||
$captcha = $listPost['h-captcha-response'];
|
|
||||||
$url = 'https://hcaptcha.com/siteverify?secret='.urlencode($settings['captcha_secret_key']??'').'&response='.urlencode($captcha).'&remoteip='.$_SERVER['REMOTE_ADDR'];
|
|
||||||
$response = file_get_contents($url);
|
|
||||||
$responseKeys = json_decode($response,true);
|
|
||||||
if(!$responseKeys["success"]) {
|
|
||||||
$session->setFlashdata('toast', ['error',lang("App.login_alert"),lang("App.login_alert_captcha_invalid")]);
|
|
||||||
return redirect()->to('/login/forgot_password');
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
$session->setFlashdata('toast', ['error',lang("App.login_alert"),lang("App.login_alert_captcha_not_found")]);
|
|
||||||
return redirect()->to('/login/forgot_password');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$user = $this->user_model->where('email',$listPost['email']??null)->first();
|
|
||||||
|
|
||||||
if(empty($user)){
|
|
||||||
$session->setFlashdata('toast', ['error',lang("App.login_alert"),lang("App.login_alert_user_not_found")]);
|
|
||||||
return redirect()->to('/login/forgot_password');
|
|
||||||
}
|
|
||||||
|
|
||||||
$template = $this->template_model->where('id_template',1)->first();
|
|
||||||
|
|
||||||
foreach (keywordEmail()??[] as $item){
|
|
||||||
$field = str_replace(['[','user_',']'],'',$item);
|
|
||||||
$template = str_replace('['.$item.']',$user->$field ?? "",$template);
|
|
||||||
}
|
|
||||||
|
|
||||||
$token = random_string("alnum", 50);
|
|
||||||
$url = base_url().'login/recovery/'.$token;
|
|
||||||
|
|
||||||
$this->pass_recovery_model->save([
|
|
||||||
'user' => $user->token,
|
|
||||||
'token' => $token
|
|
||||||
]);
|
|
||||||
|
|
||||||
$title = $template['subject']??'';
|
|
||||||
$msg = $template['body']??'';
|
|
||||||
$msg = str_replace('[recovery_password]',$url,$msg);
|
|
||||||
$email = $user->email;
|
|
||||||
|
|
||||||
$this->setLog('recovery','recovery-password',$user->token);
|
|
||||||
$send = $this->sendMail($title,$msg,$email);
|
|
||||||
if($send){
|
|
||||||
$session->setFlashdata('toast', ['success',lang("App.login_alert_send"),lang("App.login_alert_send_pass")]);
|
|
||||||
return redirect()->to('/login/forgot_password');
|
|
||||||
}else{
|
|
||||||
$session->setFlashdata('toast', ['error',lang("App.login_alert"),lang("App.login_alert_error_email")]);
|
|
||||||
return redirect()->to('/login/forgot_password');
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
$session->setFlashdata('toast', ['error',lang("App.login_alert"),lang("App.login_alert_error_pass")]);
|
|
||||||
return redirect()->to('/login/forgot_password');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setLog($level,$event,$user='')
|
|
||||||
{
|
|
||||||
$request = \Config\Services::request();
|
|
||||||
$ip = $request->getIPAddress();
|
|
||||||
$agent = $request->getUserAgent();
|
|
||||||
|
|
||||||
if ($agent->isBrowser())
|
|
||||||
{
|
|
||||||
$currentAgent = $agent->getBrowser().' '.$agent->getVersion();
|
|
||||||
}
|
|
||||||
elseif ($agent->isRobot())
|
|
||||||
{
|
|
||||||
$currentAgent = $this->agent->robot();
|
|
||||||
}
|
|
||||||
elseif ($agent->isMobile())
|
|
||||||
{
|
|
||||||
$currentAgent = $agent->getMobile();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$currentAgent = 'Unidentified User Agent';
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->activity_model->save([
|
|
||||||
'user' => $this->token_user??$user,
|
|
||||||
'level' => $level,
|
|
||||||
'event' => $event,
|
|
||||||
'ip' => $ip,
|
|
||||||
'os' => $agent->getPlatform(),
|
|
||||||
'browser' => $currentAgent,
|
|
||||||
'detail' => $agent
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function sendMail($subject,$body,$recipient)
|
|
||||||
{
|
|
||||||
$config = $this->settings_model->first();
|
|
||||||
$gateway = $config['email_gateway'];
|
|
||||||
$body = html_entity_decode($body);
|
|
||||||
|
|
||||||
if($gateway == 'smtp'){
|
|
||||||
try {
|
|
||||||
//https://codeigniter.com/user_guide/libraries/email.html
|
|
||||||
$email = \Config\Services::email();
|
|
||||||
$config['protocol'] = $config['email_gateway'];
|
|
||||||
$config['SMTPHost'] = $config['email_smtp'];
|
|
||||||
$config['SMTPUser'] = $config['email_address'];
|
|
||||||
$config['SMTPPass'] = $config['email_pass'];
|
|
||||||
$config['SMTPPort'] = $config['email_port'];
|
|
||||||
$config['SMTPCrypto'] = $config['email_cert']=='none'?'':$config['email_cert'];
|
|
||||||
$config['SMTPTimeout'] = 15;
|
|
||||||
$config['mailType'] = 'html';
|
|
||||||
$config['wordWrap'] = true;
|
|
||||||
|
|
||||||
$email->initialize($config);
|
|
||||||
|
|
||||||
$email->setFrom($config['email_address'], $config['email_name']);
|
|
||||||
$email->setTo($recipient);
|
|
||||||
|
|
||||||
$email->setSubject($subject);
|
|
||||||
$email->setMessage($body);
|
|
||||||
|
|
||||||
if (!$email->send())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}else{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function saveStorage($file=null,$path='',$allow=[]){
|
|
||||||
$config = $this->settings_model->first();
|
|
||||||
$gateway = $config['storage_gateway'];
|
|
||||||
|
|
||||||
switch ($gateway) {
|
|
||||||
case "local":
|
|
||||||
try {
|
|
||||||
$ext = $file ? $file->getExtension() : '';
|
|
||||||
if (in_array(strtolower($ext), $allow)) {
|
|
||||||
if(strtolower(PHP_OS) == 'linux'){
|
|
||||||
$pathServer = $path;
|
|
||||||
}else{
|
|
||||||
$pathServer = str_replace('/','\\',$path);
|
|
||||||
}
|
|
||||||
if ($file->isValid()) {
|
|
||||||
$name = $file->getName();
|
|
||||||
$rename = $file->getRandomName();
|
|
||||||
$file->move($pathServer,$rename);
|
|
||||||
return $path.$rename;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "aws":
|
|
||||||
case "minio":
|
|
||||||
$aws_endpoint = $config['aws_endpoint'];
|
|
||||||
$aws_key = $config['aws_key'];
|
|
||||||
$aws_secret = $config['aws_secret'];
|
|
||||||
$aws_region = $config['aws_region'];
|
|
||||||
$aws_bucket = $config['aws_bucket'];
|
|
||||||
|
|
||||||
try {
|
|
||||||
$ext = $file ? $file->getExtension() : '';
|
|
||||||
if (in_array(strtolower($ext), $allow)) {
|
|
||||||
|
|
||||||
if($gateway=="minio"){
|
|
||||||
$s3Client = new \Aws\S3\S3Client([
|
|
||||||
'version' => 'latest',
|
|
||||||
'region' => $aws_region,
|
|
||||||
'endpoint' => $aws_endpoint,
|
|
||||||
'use_path_style_endpoint' => true,
|
|
||||||
'credentials' => [
|
|
||||||
'key' => $aws_key,
|
|
||||||
'secret' => $aws_secret
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
}else{
|
|
||||||
$s3Client = new \Aws\S3\S3Client([
|
|
||||||
'version' => 'latest',
|
|
||||||
'region' => $aws_region,
|
|
||||||
'credentials' => [
|
|
||||||
'key' => $aws_key,
|
|
||||||
'secret' => $aws_secret
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$rename = $file->getRandomName();
|
|
||||||
$file->move(WRITEPATH.'uploads',$rename);
|
|
||||||
if(strtolower(PHP_OS) == 'linux'){
|
|
||||||
$file_Path = WRITEPATH.'uploads/'. $rename;
|
|
||||||
}else{
|
|
||||||
$file_Path = WRITEPATH.'uploads\\'. $rename;
|
|
||||||
}
|
|
||||||
$result = $s3Client->putObject([
|
|
||||||
'Bucket' => $aws_bucket,
|
|
||||||
'Key' => $rename,
|
|
||||||
'Body' => fopen($file_Path, 'r')
|
|
||||||
]);
|
|
||||||
unlink($file_Path);
|
|
||||||
if($result['@metadata']['statusCode'] == 200){
|
|
||||||
return $result['@metadata']['effectiveUri'];
|
|
||||||
}else{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} catch (\Aws\S3\Exception\S3Exception $e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function saveStorageBackup($file=null,$name=null){
|
|
||||||
$config = $this->settings_model->first();
|
|
||||||
$gateway = $config['backup_storage'];
|
|
||||||
|
|
||||||
switch ($gateway) {
|
|
||||||
case "local":
|
|
||||||
try {
|
|
||||||
return $file;
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "aws":
|
|
||||||
case "minio":
|
|
||||||
$aws_endpoint = $config['aws_endpoint'];
|
|
||||||
$aws_key = $config['aws_key'];
|
|
||||||
$aws_secret = $config['aws_secret'];
|
|
||||||
$aws_region = $config['aws_region'];
|
|
||||||
$aws_bucket = $config['aws_bucket'];
|
|
||||||
|
|
||||||
try {
|
|
||||||
if($gateway=="minio"){
|
|
||||||
$s3Client = new \Aws\S3\S3Client([
|
|
||||||
'version' => 'latest',
|
|
||||||
'region' => $aws_region,
|
|
||||||
'endpoint' => $aws_endpoint,
|
|
||||||
'use_path_style_endpoint' => true,
|
|
||||||
'credentials' => [
|
|
||||||
'key' => $aws_key,
|
|
||||||
'secret' => $aws_secret
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
}else{
|
|
||||||
$s3Client = new \Aws\S3\S3Client([
|
|
||||||
'version' => 'latest',
|
|
||||||
'region' => $aws_region,
|
|
||||||
'credentials' => [
|
|
||||||
'key' => $aws_key,
|
|
||||||
'secret' => $aws_secret
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$result = $s3Client->putObject([
|
|
||||||
'Bucket' => $aws_bucket,
|
|
||||||
'Key' => $name,
|
|
||||||
'Body' => fopen($file, 'r')
|
|
||||||
]);
|
|
||||||
unlink($file);
|
|
||||||
if($result['@metadata']['statusCode'] == 200){
|
|
||||||
return $result['@metadata']['effectiveUri'];
|
|
||||||
}else{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} catch (\Aws\S3\Exception\S3Exception $e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} catch (\Exception $ex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function create_backup($download=false)
|
|
||||||
{
|
|
||||||
//Demo Mode
|
|
||||||
if(env('demo.mode')??false){
|
|
||||||
if($download==true){
|
|
||||||
session()->setFlashdata('sweet', ['warning',lang("App.general_demo_mode")]);
|
|
||||||
return redirect()->to('/settings');
|
|
||||||
}else{
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$settings = $this->settings_model->first()??[];
|
|
||||||
if($settings['backup_automatic']){
|
|
||||||
helper('text');
|
|
||||||
$db = db_connect('default');
|
|
||||||
try {
|
|
||||||
$all = false;
|
|
||||||
$tables = explode(',',$settings['backup_table']??'');
|
|
||||||
foreach ($tables as $item){
|
|
||||||
if ($item == 'all'){
|
|
||||||
$all = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$token = random_string("alnum", 10);
|
|
||||||
$name ='mysql_'.$token.'_'.date("YmdHis").'.sql';
|
|
||||||
if(strtolower(PHP_OS) == 'linux'){
|
|
||||||
$file_Path = WRITEPATH.'uploads/'.$name;
|
|
||||||
}else{
|
|
||||||
$file_Path = WRITEPATH.'uploads\\'.$name;
|
|
||||||
}
|
|
||||||
if($all){
|
|
||||||
\Spatie\DbDumper\Databases\MySql::create()
|
|
||||||
->setHost(getenv('database.default.hostname'))
|
|
||||||
->setDbName(getenv('database.default.database'))
|
|
||||||
->setUserName(getenv('database.default.username'))
|
|
||||||
->setPassword(getenv('database.default.password'))
|
|
||||||
->setDumpBinaryPath(getenv('database.default.dump'))
|
|
||||||
->dumpToFile($file_Path);
|
|
||||||
}else{
|
|
||||||
\Spatie\DbDumper\Databases\MySql::create()
|
|
||||||
->setHost(getenv('database.default.hostname'))
|
|
||||||
->setDbName(getenv('database.default.database'))
|
|
||||||
->setUserName(getenv('database.default.username'))
|
|
||||||
->setPassword(getenv('database.default.password'))
|
|
||||||
->setDumpBinaryPath(getenv('database.default.dump'))
|
|
||||||
->includeTables($tables)
|
|
||||||
->dumpToFile($file_Path);
|
|
||||||
}
|
|
||||||
$file = $this->saveStorageBackup($file_Path,$name);
|
|
||||||
$db->query("INSERT INTO backup VALUES (NULL,'".$file."','',NOW(),NOW())");
|
|
||||||
if($settings['backup_notification_email']){
|
|
||||||
$send = $this->send_email($settings['backup_email'],$settings['title']." (BACKUP)",lang("App.crontab_backup_success").date("Y-m-d H:i:s"));
|
|
||||||
if(!$send){
|
|
||||||
$db->query("INSERT INTO backup VALUES (NULL,'','".lang("App.crontab_email_error")."',NOW(),NOW())");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($download){
|
|
||||||
$this->download_backup($file,$name);
|
|
||||||
}
|
|
||||||
} catch (\Spatie\DbDumper\Exceptions\DumpFailed $e) {
|
|
||||||
$error = str_replace("'","\'",$e->getMessage());
|
|
||||||
$db->query("INSERT INTO backup VALUES (NULL,'','".$error."',NOW(),NOW())");
|
|
||||||
if($settings['backup_notification_email']){
|
|
||||||
$send = $this->send_email($settings['backup_email'],$settings['title']." (BACKUP ERROR)",'Error: '.$e->getMessage());
|
|
||||||
if(!$send){
|
|
||||||
$db->query("INSERT INTO backup VALUES (NULL,'','".lang("App.crontab_email_error")."',NOW(),NOW())");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($download){
|
|
||||||
session()->setFlashdata('sweet', ['error',lang("App.crontab_backup_error")]);
|
|
||||||
return redirect()->to('/settings');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function download_backup($path=null,$name=null)
|
|
||||||
{
|
|
||||||
if (!empty(session()->get('token')??'')){
|
|
||||||
set_time_limit(0);
|
|
||||||
if(!empty($path) && !empty($name) && file_exists($path)){
|
|
||||||
header('Content-Description: File Transfer');
|
|
||||||
header('Content-Disposition: attachment; filename="'.$name.'"');
|
|
||||||
header('Content-Type: application/octet-stream');
|
|
||||||
header('Content-Transfer-Encoding: binary');
|
|
||||||
header('Content-Length: ' . filesize($path));
|
|
||||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
|
||||||
header('Pragma: public');
|
|
||||||
header('Expires: 0');
|
|
||||||
readfile($path);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
return redirect()->to('/settings');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function download_postman()
|
|
||||||
{
|
|
||||||
if(!empty(session()->get('token')??'')){
|
|
||||||
set_time_limit(0);
|
|
||||||
$path = WRITEPATH.'postman_collection.json';
|
|
||||||
if(file_exists($path)){
|
|
||||||
header('Content-Description: File Transfer');
|
|
||||||
header('Content-Disposition: attachment; filename="WebGuard ApiRest - postman_collection.json"');
|
|
||||||
header('Content-Type: application/octet-stream');
|
|
||||||
header('Content-Transfer-Encoding: binary');
|
|
||||||
header('Content-Length: ' . filesize($path));
|
|
||||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
|
||||||
header('Pragma: public');
|
|
||||||
header('Expires: 0');
|
|
||||||
readfile($path);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
return redirect()->to('/settings');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,111 +0,0 @@
|
|||||||
<?php namespace App\Controllers\Sistema;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Controllers\BaseResourceController;
|
|
||||||
use App\Models\Sistema\SettingsModel;
|
|
||||||
|
|
||||||
|
|
||||||
class Ajustes extends BaseResourceController
|
|
||||||
{
|
|
||||||
|
|
||||||
protected $modelName = SettingsModel::class;
|
|
||||||
protected $format = 'json';
|
|
||||||
|
|
||||||
protected static $controllerSlug = 'settings';
|
|
||||||
|
|
||||||
protected static $viewPath = 'themes/vuexy/form/settings/';
|
|
||||||
|
|
||||||
protected static string $formViewName = 'settingsForm';
|
|
||||||
|
|
||||||
protected static $singularObjectName = 'settings';
|
|
||||||
protected static $singularObjectNameCc = 'settings';
|
|
||||||
|
|
||||||
protected $indexRoute = 'ajustesList';
|
|
||||||
|
|
||||||
|
|
||||||
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
|
|
||||||
{
|
|
||||||
$this->viewData['pageTitle'] = lang('Provincias.moduleTitle');
|
|
||||||
$this->viewData['usingSweetAlert'] = true;
|
|
||||||
|
|
||||||
// Breadcrumbs (IMN)
|
|
||||||
$this->viewData['breadcrumb'] = [
|
|
||||||
['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false],
|
|
||||||
['title' => lang("App.menu_settings"), 'route' => route_to('ajustesList'), 'active' => true]
|
|
||||||
];
|
|
||||||
|
|
||||||
parent::initController($request, $response, $logger);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function settings()
|
|
||||||
{
|
|
||||||
checkPermission('ajustes.menu');
|
|
||||||
|
|
||||||
$id = 1;
|
|
||||||
$settingsEntity = $this->model->find($id);
|
|
||||||
|
|
||||||
if (!$settingsEntity) :
|
|
||||||
$message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Provincias.provincia')), $id]);
|
|
||||||
return $this->redirect2listView('sweet-error', $message);
|
|
||||||
endif;
|
|
||||||
|
|
||||||
|
|
||||||
if ($this->request->is('post')) :
|
|
||||||
|
|
||||||
$postData = $this->request->getPost();
|
|
||||||
|
|
||||||
$sanitizedData = $this->sanitized($postData, true);
|
|
||||||
|
|
||||||
$noException = true;
|
|
||||||
if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) :
|
|
||||||
|
|
||||||
|
|
||||||
if ($this->canValidate()) :
|
|
||||||
try {
|
|
||||||
$successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData);
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$noException = false;
|
|
||||||
$this->dealWithException($e);
|
|
||||||
}
|
|
||||||
else:
|
|
||||||
$this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('Provincias.provincia'))]);
|
|
||||||
$this->session->setFlashdata('formErrors', $this->model->errors());
|
|
||||||
|
|
||||||
endif;
|
|
||||||
|
|
||||||
$settingsEntity->fill($sanitizedData);
|
|
||||||
|
|
||||||
$thenRedirect = false;
|
|
||||||
endif;
|
|
||||||
if ($noException && $successfulResult) :
|
|
||||||
$id = $settingsEntity->id ?? $id;
|
|
||||||
$message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]) . '.';
|
|
||||||
|
|
||||||
if ($thenRedirect) :
|
|
||||||
if (!empty($this->indexRoute)) :
|
|
||||||
return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message);
|
|
||||||
else:
|
|
||||||
return $this->redirect2listView('sweet-success', $message);
|
|
||||||
endif;
|
|
||||||
else:
|
|
||||||
$this->session->setFlashData('sweet-success', $message);
|
|
||||||
endif;
|
|
||||||
|
|
||||||
endif; // $noException && $successfulResult
|
|
||||||
endif; // ($requestMethod === 'post')
|
|
||||||
|
|
||||||
$this->viewData['settingsEntity'] = $settingsEntity;
|
|
||||||
$this->viewData['formAction'] = route_to('settingsEdit');
|
|
||||||
|
|
||||||
$this->viewData['tables'] = db_connect()->listTables();
|
|
||||||
|
|
||||||
|
|
||||||
return $this->displayForm(__METHOD__, $id);
|
|
||||||
} // end function settings(...)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace App\Controllers\Soporte;
|
namespace App\Controllers\Soporte;
|
||||||
|
|
||||||
use App\Models\Sistema\SettingsModel;
|
|
||||||
use App\Models\Soporte\TicketModel;
|
use App\Models\Soporte\TicketModel;
|
||||||
use App\Models\CategoriaModel;
|
use App\Models\CategoriaModel;
|
||||||
use App\Models\EstadoModel;
|
use App\Models\EstadoModel;
|
||||||
|
|||||||
@ -14,7 +14,6 @@ use App\Models\Usuarios\GroupModel;
|
|||||||
use App\Models\Usuarios\PermisosModel;
|
use App\Models\Usuarios\PermisosModel;
|
||||||
use App\Services\PresupuestoService;
|
use App\Services\PresupuestoService;
|
||||||
use CodeIgniter\Shield\Entities\User;
|
use CodeIgniter\Shield\Entities\User;
|
||||||
use App\Models\Sistema\SettingsModel;
|
|
||||||
|
|
||||||
|
|
||||||
class Test extends BaseController
|
class Test extends BaseController
|
||||||
@ -31,11 +30,9 @@ class Test extends BaseController
|
|||||||
|
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$clienteModel = model('App\Models\Clientes\ClienteModel');
|
$emailService = service('emailService');
|
||||||
$datos = $clienteModel->getResumenPagos(1870);
|
|
||||||
echo '<pre>';
|
return $emailService->send("Hola mundo", "Hola mundo", "imnavajas@coit.es");
|
||||||
var_dump($datos);
|
|
||||||
echo '</pre>';
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -172,9 +172,6 @@ if (!function_exists('getSystemSettings')) {
|
|||||||
{
|
{
|
||||||
// Get Settings
|
// Get Settings
|
||||||
$session = session();
|
$session = session();
|
||||||
$settingsBase = new \App\Models\Sistema\SettingsModel();
|
|
||||||
$settings = $settingsBase->asArray()->first() ?? [];
|
|
||||||
$session->set('settings', $settings);
|
|
||||||
if (empty($session->get('lang'))) {
|
if (empty($session->get('lang'))) {
|
||||||
$session->set('lang', 'es');
|
$session->set('lang', 'es');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -573,10 +573,14 @@ class ClienteModel extends \App\Models\BaseModel
|
|||||||
$result['total_pedidos_finalizados'] =
|
$result['total_pedidos_finalizados'] =
|
||||||
round(floatval(($data && $data[0]->total != null) ? $data[0]->total : 0), 2);
|
round(floatval(($data && $data[0]->total != null) ? $data[0]->total : 0), 2);
|
||||||
|
|
||||||
|
$result['pendiente_old_erp'] =
|
||||||
|
round(floatval($this->getTotalPendienteOldERP($cliente_id)), 2);
|
||||||
|
|
||||||
$result['total_pendiente'] =
|
$result['total_pendiente'] =
|
||||||
$result['total_facturas_sin_pagar']
|
$result['total_facturas_sin_pagar']
|
||||||
+ $result['total_pedidos_produccion']
|
+ $result['total_pedidos_produccion']
|
||||||
+ $result['total_pedidos_finalizados'];
|
+ $result['total_pedidos_finalizados'] +
|
||||||
|
$result['pendiente_old_erp'];
|
||||||
$result['total_pendiente'] = round(floatval($result['total_pendiente']), 2);
|
$result['total_pendiente'] = round(floatval($result['total_pendiente']), 2);
|
||||||
|
|
||||||
$result['limite_credito'] = $this->db->table('clientes')
|
$result['limite_credito'] = $this->db->table('clientes')
|
||||||
|
|||||||
@ -163,7 +163,6 @@ class PapelImpresionModel extends \App\Models\BaseModel
|
|||||||
|
|
||||||
$builder->join("lg_papel_generico t2", "t1.papel_generico_id = t2.id", "left");
|
$builder->join("lg_papel_generico t2", "t1.papel_generico_id = t2.id", "left");
|
||||||
$builder->where("t1.is_deleted", 0);
|
$builder->where("t1.is_deleted", 0);
|
||||||
$builder->where("t1.isActivo", 1);
|
|
||||||
if ($generico_id > 0) {
|
if ($generico_id > 0) {
|
||||||
$builder->where("t1.papel_generico_id", $generico_id);
|
$builder->where("t1.papel_generico_id", $generico_id);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,38 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace App\Models\Sistema;
|
|
||||||
|
|
||||||
use App\Models\BaseModel;
|
|
||||||
|
|
||||||
class SettingsModel extends BaseModel
|
|
||||||
{
|
|
||||||
protected $table = 'auth_settings';
|
|
||||||
protected $primaryKey = 'id';
|
|
||||||
|
|
||||||
protected $returnType = "App\Entities\Sistema\SettingsEntity";
|
|
||||||
|
|
||||||
const SORTABLE = [
|
|
||||||
];
|
|
||||||
|
|
||||||
protected $allowedFields = [
|
|
||||||
'email_gateway',
|
|
||||||
'email_name',
|
|
||||||
'email_address',
|
|
||||||
'email_smtp',
|
|
||||||
'email_port',
|
|
||||||
'email_pass',
|
|
||||||
'email_cert',
|
|
||||||
'remove_log',
|
|
||||||
'remove_log_time',
|
|
||||||
'remove_log_latest',
|
|
||||||
'storage_gateway',
|
|
||||||
'backup_storage',
|
|
||||||
'backup_table',
|
|
||||||
'backup_email',
|
|
||||||
'backup_notification_email',
|
|
||||||
'backup_automatic',
|
|
||||||
'backup_time',
|
|
||||||
'backup_latest'
|
|
||||||
];
|
|
||||||
protected $useTimestamps = true;
|
|
||||||
protected $updatedField = 'updated_at';
|
|
||||||
}
|
|
||||||
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace App\Services;
|
namespace App\Services;
|
||||||
|
|
||||||
use App\Models\Sistema\SettingsModel;
|
|
||||||
use Config\Services;
|
use Config\Services;
|
||||||
|
|
||||||
class EmailService
|
class EmailService
|
||||||
@ -17,10 +16,8 @@ class EmailService
|
|||||||
$recipient = 'imnavajas@coit.es'; // <-- Cambia por el correo de pruebas
|
$recipient = 'imnavajas@coit.es'; // <-- Cambia por el correo de pruebas
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$settings_model = model('App\Models\Configuracion\ConfigVariableModel');
|
||||||
$settings_model = new SettingsModel();
|
$gateway = $settings_model->getVariable('email_protocol')->value;
|
||||||
$config = $settings_model->first()->toArray();
|
|
||||||
$gateway = $config['email_gateway'];
|
|
||||||
$body = html_entity_decode($body);
|
$body = html_entity_decode($body);
|
||||||
|
|
||||||
if ($gateway === 'smtp') {
|
if ($gateway === 'smtp') {
|
||||||
@ -28,12 +25,12 @@ class EmailService
|
|||||||
$email = Services::email();
|
$email = Services::email();
|
||||||
|
|
||||||
$emailConfig = [
|
$emailConfig = [
|
||||||
'protocol' => $config['email_gateway'],
|
'protocol' => $gateway,
|
||||||
'SMTPHost' => $config['email_smtp'],
|
'SMTPHost' => $settings_model->getVariable('email_host')->value,
|
||||||
'SMTPUser' => $config['email_address'],
|
'SMTPUser' => $settings_model->getVariable('email_from_address')->value,
|
||||||
'SMTPPass' => $config['email_pass'],
|
'SMTPPass' => $settings_model->getVariable('email_pass')->value,
|
||||||
'SMTPPort' => (int) $config['email_port'],
|
'SMTPPort' => (int) $settings_model->getVariable('email_port')->value,
|
||||||
'SMTPCrypto' => $config['email_cert'] === 'none' ? '' : $config['email_cert'],
|
'SMTPCrypto' => $settings_model->getVariable('email_cert')->value === 'none' ? '' : $settings_model->getVariable('email_cert')->value,
|
||||||
'SMTPTimeout' => 15,
|
'SMTPTimeout' => 15,
|
||||||
'mailType' => 'html',
|
'mailType' => 'html',
|
||||||
'wordWrap' => true,
|
'wordWrap' => true,
|
||||||
@ -41,7 +38,7 @@ class EmailService
|
|||||||
|
|
||||||
$email->initialize($emailConfig);
|
$email->initialize($emailConfig);
|
||||||
|
|
||||||
$email->setFrom($config['email_address'], $config['email_name']);
|
$email->setFrom($settings_model->getVariable('email_from_address')->value, $settings_model->getVariable('email_from_name')->value);
|
||||||
$email->setTo($recipient);
|
$email->setTo($recipient);
|
||||||
$email->setSubject($subject);
|
$email->setSubject($subject);
|
||||||
$email->setMessage($body);
|
$email->setMessage($body);
|
||||||
|
|||||||
@ -62,6 +62,14 @@
|
|||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Pendiente ERP antiguo: </td>
|
||||||
|
<td class="right">
|
||||||
|
<span class="autonumeric autonumeric-currency">
|
||||||
|
<?= $credito['pendiente_old_erp'] ?>
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Total pendiente: </td>
|
<td>Total pendiente: </td>
|
||||||
<td class="right">
|
<td class="right">
|
||||||
|
|||||||
@ -1,431 +0,0 @@
|
|||||||
<div class="row mt-4">
|
|
||||||
|
|
||||||
<!-- Navigation -->
|
|
||||||
<div class="col-lg-3 col-md-4 col-12 mb-md-0 mb-3">
|
|
||||||
<div class="d-flex justify-content-between flex-column mb-2 mb-md-0">
|
|
||||||
<ul class="nav nav-align-left nav-pills flex-column">
|
|
||||||
<li class="nav-item">
|
|
||||||
<button class="nav-link active" data-bs-toggle="tab" data-bs-target="#general">
|
|
||||||
<i class="ti ti-sitemap me-1 ti-sm"></i>
|
|
||||||
<span class="align-middle fw-semibold"><?=lang("App.settings_label_general")?></span>
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#email">
|
|
||||||
<i class="ti ti-mail me-1 ti-sm"></i>
|
|
||||||
<span class="align-middle fw-semibold"><?=lang("App.settings_label_email")?></span>
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<?php /*
|
|
||||||
<li class="nav-item">
|
|
||||||
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#backup">
|
|
||||||
<i class="ti ti-server me-1 ti-sm"></i>
|
|
||||||
<span class="align-middle fw-semibold"><?=lang("App.settings_label_backup")?></span>
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#logs">
|
|
||||||
<i class="ti ti-archive me-1 ti-sm"></i>
|
|
||||||
<span class="align-middle fw-semibold"><?=lang("App.settings_label_logs")?></span>
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#cron">
|
|
||||||
<i class="ti ti-rotate-clockwise me-1 ti-sm"></i>
|
|
||||||
<span class="align-middle fw-semibold"><?=lang("App.settings_label_cron")?></span>
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
*/ ?>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /Navigation -->
|
|
||||||
|
|
||||||
<!-- System Settings -->
|
|
||||||
<div class="col-lg-9 col-md-8 col-12">
|
|
||||||
<form class="form" action="<?= $formAction ?>" method="post">
|
|
||||||
<?= csrf_field() ?>
|
|
||||||
<div class="tab-content py-0">
|
|
||||||
<!-- General Settings -->
|
|
||||||
<div class="tab-pane fade show active" id="general" role="tabpanel">
|
|
||||||
<div class="d-flex mb-3 gap-3">
|
|
||||||
<div>
|
|
||||||
<span class="badge bg-label-primary rounded-2 p-2">
|
|
||||||
<i class="ti ti-sitemap ti-lg"></i>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h4 class="mb-0">
|
|
||||||
<span class="align-middle"><?=lang("App.settings_label_general_title")?></span>
|
|
||||||
</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card">
|
|
||||||
<div class="row card-body">
|
|
||||||
DETALLES ESPECIFICOS DEL ERP (TBD)
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /General Settings -->
|
|
||||||
|
|
||||||
<!-- Email Settings -->
|
|
||||||
<div class="tab-pane fade show" id="email" role="tabpanel">
|
|
||||||
<div class="d-flex mb-3 gap-3">
|
|
||||||
<div>
|
|
||||||
<span class="badge bg-label-primary rounded-2 p-2">
|
|
||||||
<i class="ti ti-mail ti-lg"></i>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h4 class="mb-0">
|
|
||||||
<span class="align-middle"><?=lang("App.settings_label_email_title")?></span>
|
|
||||||
</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card">
|
|
||||||
<div class="row card-body">
|
|
||||||
<div class="col-lg-12 mb-3">
|
|
||||||
<label class="text-primary"><?=lang("App.settings_label_email_subtitle_1")?></label>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 mb-3">
|
|
||||||
<label for="email_gateway" class="form-label"><?=lang("App.settings_field_email_gateway")?></label>
|
|
||||||
<?php $id_select = (isset($obj)) ? $obj['email_gateway'] : set_value('email_gateway');?>
|
|
||||||
<select name="email_gateway" id="email_gateway" class="select2 form-control">
|
|
||||||
<option value="smtp" <?= $id_select == "smtp" ? 'selected' : '' ?>><?=lang("App.settings_field_email_gateway_smtp")?></option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 mb-3">
|
|
||||||
<label for="email_smtp" class="form-label"><?=lang("App.settings_field_email_smtp")?></label>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
id="email_smtp"
|
|
||||||
name="email_smtp"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="<?=lang("App.settings_field_email_smtp_ph")?>"
|
|
||||||
value="<?= old('email_smtp', $settingsEntity->email_smtp) ?>"
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 mb-3">
|
|
||||||
<label for="email_port" class="form-label"><?=lang("App.settings_field_email_port")?></label>
|
|
||||||
<input
|
|
||||||
type="number"
|
|
||||||
id="email_port"
|
|
||||||
name="email_port"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="<?=lang("App.settings_field_email_port_ph")?>"
|
|
||||||
value="<?= old('email_port', $settingsEntity->email_port) ?>"
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 mb-3">
|
|
||||||
<label for="email_cert" class="form-label"><?=lang("App.settings_field_email_cert")?></label>
|
|
||||||
<?php $id_select = (isset($settingsEntity)) ? $settingsEntity->email_cert : 'none';?>
|
|
||||||
<select name="email_cert" id="email_cert" class="select2 form-control">
|
|
||||||
<option value="none" <?= $id_select == "none" ? 'selected' : '' ?>><?=lang("App.settings_field_email_cert_none")?></option>
|
|
||||||
<option value="ssl" <?= $id_select == "ssl" ? 'selected' : '' ?>><?=lang("App.settings_field_email_cert_ssl")?></option>
|
|
||||||
<option value="tls" <?= $id_select == "tls" ? 'selected' : '' ?>><?=lang("App.settings_field_email_cert_tls")?></option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6 mb-3">
|
|
||||||
<label for="email_address" class="form-label"><?=lang("App.settings_field_email_address")?></label>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
id="email_address"
|
|
||||||
name="email_address"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="<?=lang("App.settings_field_email_address_ph")?>"
|
|
||||||
value="<?= old('email_address', $settingsEntity->email_address) ?>"
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6 mb-3">
|
|
||||||
<label for="email_pass" class="form-label"><?=lang("App.settings_field_email_pass")?></label>
|
|
||||||
<input
|
|
||||||
type="password"
|
|
||||||
id="email_pass"
|
|
||||||
name="email_pass"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="<?=lang("App.settings_field_email_pass_ph")?>"
|
|
||||||
value="<?= old('email_pass', $settingsEntity->email_pass) ?>"
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-lg-6 mb-3">
|
|
||||||
<label for="email_name" class="form-label"><?=lang("App.settings_field_email_name")?></label>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
id="email_name"
|
|
||||||
name="email_name" class="form-control"
|
|
||||||
placeholder="<?=lang("App.settings_field_email_name_ph")?>"
|
|
||||||
value="<?= old('email_name', $settingsEntity->email_name) ?>"
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<?php /*
|
|
||||||
<div class="col-lg-12 mt-4 mb-3">
|
|
||||||
<label class="text-primary"><?=lang("App.settings_field_test_send")?></label>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6 mb-3">
|
|
||||||
<label class="form-label"><?=lang("App.settings_field_email_address")?></label>
|
|
||||||
<div class="input-group">
|
|
||||||
<input
|
|
||||||
type="email"
|
|
||||||
id="send_email_test"
|
|
||||||
name="send_email_test"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="<?=lang("App.settings_field_email_address_ph")?>"
|
|
||||||
>
|
|
||||||
<div class="input-group-append">
|
|
||||||
<button type="button" class="btn btn-outline-primary" onclick="send_test()"><?=lang("App.settings_field_test_send_btn")?></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p class="text-primary" id="msg_email_test" style="display: none;"><i class="fas fa-spinner fa-pulse"></i> <?= lang("App.login_wait") ?></p>
|
|
||||||
</div>
|
|
||||||
*/ ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /Email Settings -->
|
|
||||||
|
|
||||||
<?php /*
|
|
||||||
<!-- Backup Settings -->
|
|
||||||
<div class="tab-pane fade show" id="backup" role="tabpanel">
|
|
||||||
<div class="d-flex mb-3 gap-3">
|
|
||||||
<div>
|
|
||||||
<span class="badge bg-label-primary rounded-2 p-2">
|
|
||||||
<i class="ti ti-server ti-lg"></i>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h4 class="mb-0">
|
|
||||||
<span class="align-middle"><?=lang("App.settings_label_backup_title")?></span>
|
|
||||||
</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card">
|
|
||||||
<div class="row card-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 mb-3">
|
|
||||||
<label class="text-primary"><?=lang("App.settings_label_backup_subtitle_1")?></label>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4 mb-3">
|
|
||||||
<label for="backup_storage" class="form-label"><?=lang("App.settings_field_backup_storage")?></label>
|
|
||||||
<?php $id_select = (isset($obj)) ? $obj['backup_storage'] : set_value('backup_storage');?>
|
|
||||||
<select name="backup_storage" id="backup_storage" class="select2 form-control">
|
|
||||||
<option value="local" <?= $id_select == "local" ? 'selected' : '' ?>><?=lang("App.settings_field_storage_gateway_local")?></option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4 mb-3">
|
|
||||||
<label for="backup_table" class="form-label"><?=lang("App.settings_field_backup_table")?></label>
|
|
||||||
<?php $select = (isset($obj)) ? $obj['backup_table'] : set_value('backup_table');?>
|
|
||||||
<select name="backup_table[]" id="backup_table" class="select2 form-control" multiple="multiple">
|
|
||||||
<?php
|
|
||||||
$select = explode(',',$select);
|
|
||||||
foreach($select??[] as $id_select){
|
|
||||||
if ($id_select == "all"){
|
|
||||||
$all = 'selected';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<option value="all" <?=$all??''?>><?=lang("App.settings_field_backup_table_all")?></option>
|
|
||||||
<?php foreach ($tables??[] as $item) : ?>
|
|
||||||
<?php foreach ($select??[] as $id_select) : ?>
|
|
||||||
<?php
|
|
||||||
if ($id_select == $item){
|
|
||||||
$selItem = 'selected';
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<?php endforeach; ?>
|
|
||||||
<option value="<?=$item?>" <?=$selItem??''?>><?=lang("App.settings_field_backup_table")?> (<?=$item?>)</option>
|
|
||||||
<?php endforeach; ?>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4 mb-3">
|
|
||||||
<label for="backup_time" class="form-label"><?=lang("App.settings_field_backup_time")?></label>
|
|
||||||
<?php $id_select = (isset($obj)) ? $obj['backup_time'] : set_value('backup_time');?>
|
|
||||||
<select name="backup_time" id="backup_time" class="select2 form-control">
|
|
||||||
<?php for ($i = 0; $i <= 23; $i++) : ?>
|
|
||||||
<option value="<?= $i < 10 ? '0'.$i.':00:00':$i.':00:00' ?>" <?= $id_select == "<?= $i < 10 ? '0'.$i.':00:00':$i.':00:00' ?>" ? 'selected' : '' ?>><?= $i < 10 ? '0'.$i.':00':$i.':00' ?></option>
|
|
||||||
<option value="<?= $i < 10 ? '0'.$i.':30:00':$i.':30:00' ?>" <?= $id_select == "<?= $i < 10 ? '0'.$i.':30:00':$i.':30:00' ?>" ? 'selected' : '' ?>><?= $i < 10 ? '0'.$i.':30':$i.':30' ?></option>
|
|
||||||
<?php endfor; ?>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-12 mb-3">
|
|
||||||
<label for="backup_email" class="form-label"><?=lang("App.settings_field_backup_email")?></label>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
id="backup_email"
|
|
||||||
min="1"
|
|
||||||
name="backup_email"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="<?=lang("App.settings_field_backup_email_ph")?>"
|
|
||||||
value="<?= (isset($obj)) ? $obj['backup_email'] : set_value('backup_email');?>"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 mb-3">
|
|
||||||
<div class="small mb-3"><?=lang("App.settings_field_backup_notification_email")?></div>
|
|
||||||
<label class="switch">
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
id="backup_notification_email"
|
|
||||||
name="backup_notification_email"
|
|
||||||
class="switch-input"
|
|
||||||
<?= $obj['backup_notification_email']??false ? 'checked' : ''?>
|
|
||||||
/>
|
|
||||||
<span class="switch-toggle-slider">
|
|
||||||
<span class="switch-on"></span>
|
|
||||||
<span class="switch-off"></span>
|
|
||||||
</span>
|
|
||||||
<span class="switch-label"><?=lang("App.global_activate")?></span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 mb-3">
|
|
||||||
<div class="small mb-3"><?=lang("App.settings_field_backup_automatic")?></div>
|
|
||||||
<label class="switch">
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
id="backup_automatic"
|
|
||||||
name="backup_automatic"
|
|
||||||
class="switch-input"
|
|
||||||
<?= $obj['backup_automatic']??false ? 'checked' : ''?>
|
|
||||||
/>
|
|
||||||
<span class="switch-toggle-slider">
|
|
||||||
<span class="switch-on"></span>
|
|
||||||
<span class="switch-off"></span>
|
|
||||||
</span>
|
|
||||||
<span class="switch-label"><?=lang("App.global_activate")?></span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 text-right mb-3">
|
|
||||||
<a href="<?=site_url("integration/create_backup/1")?>" class="btn btn-primary mt-2">
|
|
||||||
<i class="fas fa-download"></i> <?=lang("App.settings_label_backup_btn_1")?>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /Backup Settings -->
|
|
||||||
|
|
||||||
<!-- Logs Settings -->
|
|
||||||
<div class="tab-pane fade show" id="logs" role="tabpanel">
|
|
||||||
<div class="d-flex mb-3 gap-3">
|
|
||||||
<div>
|
|
||||||
<span class="badge bg-label-primary rounded-2 p-2">
|
|
||||||
<i class="ti ti-archive ti-lg"></i>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h4 class="mb-0">
|
|
||||||
<span class="align-middle"><?=lang("App.settings_label_logs_title")?></span>
|
|
||||||
</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card">
|
|
||||||
<div class="row card-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 mb-3">
|
|
||||||
<label class="text-primary"><?=lang("App.settings_label_logs_subtitle_1")?></label>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 mb-3">
|
|
||||||
<div class="small mb-3"><?=lang("App.settings_field_remove_log")?></div>
|
|
||||||
<label class="switch">
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
id="remove_log"
|
|
||||||
name="remove_log"
|
|
||||||
class="switch-input"
|
|
||||||
<?= $obj['remove_log']??false ? 'checked' : ''?>
|
|
||||||
/>
|
|
||||||
<span class="switch-toggle-slider">
|
|
||||||
<span class="switch-on"></span>
|
|
||||||
<span class="switch-off"></span>
|
|
||||||
</span>
|
|
||||||
<span class="switch-label"><?=lang("App.global_activate")?></span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 mb-3">
|
|
||||||
<label for="remove_log_time" class="form-label"><?=lang("App.settings_field_remove_log_time")?></label>
|
|
||||||
<div class="input-group">
|
|
||||||
<input
|
|
||||||
type="number"
|
|
||||||
id="remove_log_time"
|
|
||||||
min="1"
|
|
||||||
name="remove_log_time"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="<?=lang("App.settings_field_remove_log_time_ph")?>"
|
|
||||||
value="<?= (isset($obj)) ? $obj['remove_log_time'] : set_value('remove_log_time');?>"
|
|
||||||
/>
|
|
||||||
<span class="input-group-text"><?=lang("App.global_days")?></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /Logs Settings -->
|
|
||||||
|
|
||||||
<!-- Cron Settings -->
|
|
||||||
<div class="tab-pane fade show" id="cron" role="tabpanel">
|
|
||||||
<div class="d-flex mb-3 gap-3">
|
|
||||||
<div>
|
|
||||||
<span class="badge bg-label-primary rounded-2 p-2">
|
|
||||||
<i class="ti ti-rotate-clockwise ti-lg"></i>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h4 class="mb-0">
|
|
||||||
<span class="align-middle"><?=lang("App.settings_label_cron_title")?></span>
|
|
||||||
</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card">
|
|
||||||
<div class="row card-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 mb-3">
|
|
||||||
<label class="text-primary"><?=lang("App.settings_label_cron_subtitle_1")?></label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-lg-12 mb-3">
|
|
||||||
<p class="form-label">
|
|
||||||
<b><?=lang("App.settings_label_cron_timer")?></b>
|
|
||||||
<br><?=lang("App.settings_label_cron_timer_time")?>
|
|
||||||
<br><?=getenv('app.baseURL').'/cron'?>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-12 mb-3">
|
|
||||||
<label class="text-primary"><?=lang("App.settings_label_cron_subtitle_2")?></label>
|
|
||||||
<!-- CSRF token -->
|
|
||||||
<input type="hidden" class="txt_csrfname" name="<?= csrf_token() ?>" value="<?= csrf_hash() ?>" />
|
|
||||||
<!-- Table -->
|
|
||||||
<table id='table-grid' class="table table-striped nowrap" style="width:100%">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th><?=lang("App.settings_grid_routine")?></th>
|
|
||||||
<th><?=lang("App.settings_group_grid_error")?></th>
|
|
||||||
<th><?=lang("App.settings_group_grid_created_at")?></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /Cron Settings -->
|
|
||||||
*/ ?>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="tab-content pt-4">
|
|
||||||
<button type="submit" class="btn btn-primary float-start me-sm-3 me-1">
|
|
||||||
<?= lang("App.global_save") ?>
|
|
||||||
</button>
|
|
||||||
<a href="<?= site_url('/') ?>" class="btn btn-secondary">
|
|
||||||
<?= lang("App.global_come_back") ?>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<!-- /System Settings -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
|
|
||||||
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
|
|
||||||
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
|
|
||||||
<?= $this->section("content") ?>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-12">
|
|
||||||
<div class="card card-info">
|
|
||||||
<div class="card-header">
|
|
||||||
<h3 class="card-title"><?= $boxTitle ?? $pageTitle ?></h3>
|
|
||||||
</div><!--//.card-header -->
|
|
||||||
|
|
||||||
<div class="card-body">
|
|
||||||
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
|
|
||||||
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
|
|
||||||
<?= view("themes/vuexy/form/settings/_settingsFormItems") ?>
|
|
||||||
</div><!-- /.card-body -->
|
|
||||||
|
|
||||||
<div class="card-footer">
|
|
||||||
|
|
||||||
</div><!-- /.card-footer -->
|
|
||||||
|
|
||||||
</div><!-- //.card -->
|
|
||||||
</div><!--//.col -->
|
|
||||||
</div><!--//.row -->
|
|
||||||
<?= $this->endSection() ?>
|
|
||||||
|
|
||||||
|
|
||||||
<?= $this->section("additionalInlineJs") ?>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<?= $this->endSection() ?>
|
|
||||||
@ -300,10 +300,8 @@
|
|||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="menu-header small text-uppercase">
|
<li class="menu-header small text-uppercase">
|
||||||
<span class="menu-header-text">Ajustes del Sistema</span>
|
<span class="menu-header-text">Sistema</span>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|||||||
@ -325,7 +325,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<li class="menu-header small text-uppercase">
|
<li class="menu-header small text-uppercase">
|
||||||
<span class="menu-header-text">Ajustes del Sistema</span>
|
<span class="menu-header-text">Sistema</span>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|||||||
@ -3,28 +3,12 @@
|
|||||||
* SEPARADOR Y MENUS DE SISTEMA
|
* SEPARADOR Y MENUS DE SISTEMA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (auth()->user()->can('ajustes.menu') ||
|
if (auth()->user()->can('actividad.menu')) {
|
||||||
auth()->user()->can('actividad.menu')) {
|
|
||||||
?>
|
?>
|
||||||
<li class="menu-header small text-uppercase">
|
<li class="menu-header small text-uppercase">
|
||||||
<span class="menu-header-text">Ajustes del Sistema</span>
|
<span class="menu-header-text">Sistema</span>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* MENU AJUSTES
|
|
||||||
*/
|
|
||||||
if (auth()->user()->can('ajustes.menu')) {
|
|
||||||
?>
|
|
||||||
<!-- Settings -->
|
|
||||||
<li class="menu-item">
|
|
||||||
<a href="<?= route_to("ajustesList") ?>" class="menu-link">
|
|
||||||
<i class="menu-icon tf-icons ti ti-settings""></i>
|
|
||||||
<div data-i18n="<?= lang("App.menu_settings") ?>"><?= lang("App.menu_settings") ?></div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<?php } ?>
|
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* MENU ACTIVIDAD
|
* MENU ACTIVIDAD
|
||||||
|
|||||||
@ -1,463 +0,0 @@
|
|||||||
{
|
|
||||||
"draw": 1,
|
|
||||||
"recordsTotal": 57,
|
|
||||||
"recordsFiltered": 57,
|
|
||||||
"data": [
|
|
||||||
[
|
|
||||||
"Tiger Nixon",
|
|
||||||
"tiger@example.com",
|
|
||||||
"System Architect",
|
|
||||||
"Edinburgh",
|
|
||||||
"2011/04/25",
|
|
||||||
"$320,800"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Garrett Winters",
|
|
||||||
"garrett@example.com",
|
|
||||||
"Accountant",
|
|
||||||
"Tokyo",
|
|
||||||
"2011/07/25",
|
|
||||||
"$170,750"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Ashton Cox",
|
|
||||||
"ashton@example.com",
|
|
||||||
"Junior Technical Author",
|
|
||||||
"San Francisco",
|
|
||||||
"2009/01/12",
|
|
||||||
"$86,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Cedric Kelly",
|
|
||||||
"cedric@example.com",
|
|
||||||
"Senior Javascript Developer",
|
|
||||||
"Edinburgh",
|
|
||||||
"2012/03/29",
|
|
||||||
"$433,060"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Airi Satou",
|
|
||||||
"airi@example.com",
|
|
||||||
"Accountant",
|
|
||||||
"Tokyo",
|
|
||||||
"2008/11/28",
|
|
||||||
"$162,700"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Brielle Williamson",
|
|
||||||
"brielle@example.com",
|
|
||||||
"Integration Specialist",
|
|
||||||
"New York",
|
|
||||||
"2012/12/02",
|
|
||||||
"$372,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Herrod Chandler",
|
|
||||||
"herrod@example.com",
|
|
||||||
"Sales Assistant",
|
|
||||||
"San Francisco",
|
|
||||||
"2012/08/06",
|
|
||||||
"$137,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Rhona Davidson",
|
|
||||||
"rhona@example.com",
|
|
||||||
"Integration Specialist",
|
|
||||||
"Tokyo",
|
|
||||||
"2010/10/14",
|
|
||||||
"$327,900"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Colleen Hurst",
|
|
||||||
"colleen@example.com",
|
|
||||||
"Javascript Developer",
|
|
||||||
"San Francisco",
|
|
||||||
"2009/09/15",
|
|
||||||
"$205,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Sonya Frost",
|
|
||||||
"sonya@example.com",
|
|
||||||
"Software Engineer",
|
|
||||||
"Edinburgh",
|
|
||||||
"2008/12/13",
|
|
||||||
"$103,600"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Jena Gaines",
|
|
||||||
"jena@example.com",
|
|
||||||
"Office Manager",
|
|
||||||
"London",
|
|
||||||
"2008/12/19",
|
|
||||||
"$90,560"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Quinn Flynn",
|
|
||||||
"quinn@example.com",
|
|
||||||
"Support Lead",
|
|
||||||
"Edinburgh",
|
|
||||||
"2013/03/03",
|
|
||||||
"$342,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Charde Marshall",
|
|
||||||
"charde@example.com",
|
|
||||||
"Regional Director",
|
|
||||||
"San Francisco",
|
|
||||||
"2008/10/16",
|
|
||||||
"$470,600"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Haley Kennedy",
|
|
||||||
"haley@example.com",
|
|
||||||
"Senior Marketing Designer",
|
|
||||||
"London",
|
|
||||||
"2012/12/18",
|
|
||||||
"$313,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Tatyana Fitzpatrick",
|
|
||||||
"tatyana@example.com",
|
|
||||||
"Regional Director",
|
|
||||||
"London",
|
|
||||||
"2010/03/17",
|
|
||||||
"$385,750"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Michael Silva",
|
|
||||||
"michael@example.com",
|
|
||||||
"Marketing Designer",
|
|
||||||
"London",
|
|
||||||
"2012/11/27",
|
|
||||||
"$198,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Paul Byrd",
|
|
||||||
"paul@example.com",
|
|
||||||
"Chief Financial Officer (CFO)",
|
|
||||||
"New York",
|
|
||||||
"2010/06/09",
|
|
||||||
"$725,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Gloria Little",
|
|
||||||
"gloria@example.com",
|
|
||||||
"Systems Administrator",
|
|
||||||
"New York",
|
|
||||||
"2009/04/10",
|
|
||||||
"$237,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Bradley Greer",
|
|
||||||
"bradley@example.com",
|
|
||||||
"Software Engineer",
|
|
||||||
"London",
|
|
||||||
"2012/10/13",
|
|
||||||
"$132,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Dai Rios",
|
|
||||||
"dai@example.com",
|
|
||||||
"Personnel Lead",
|
|
||||||
"Edinburgh",
|
|
||||||
"2012/09/26",
|
|
||||||
"$217,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Jenette Caldwell",
|
|
||||||
"jenette@example.com",
|
|
||||||
"Development Lead",
|
|
||||||
"New York",
|
|
||||||
"2011/09/03",
|
|
||||||
"$345,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Yuri Berry",
|
|
||||||
"yuri@example.com",
|
|
||||||
"Chief Marketing Officer (CMO)",
|
|
||||||
"New York",
|
|
||||||
"2009/06/25",
|
|
||||||
"$675,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Caesar Vance",
|
|
||||||
"caesar@example.com",
|
|
||||||
"Pre-Sales Support",
|
|
||||||
"New York",
|
|
||||||
"2011/12/12",
|
|
||||||
"$106,450"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Doris Wilder",
|
|
||||||
"doris@example.com",
|
|
||||||
"Sales Assistant",
|
|
||||||
"Sydney",
|
|
||||||
"2010/09/20",
|
|
||||||
"$85,600"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Angelica Ramos",
|
|
||||||
"angelica@example.com",
|
|
||||||
"Chief Executive Officer (CEO)",
|
|
||||||
"London",
|
|
||||||
"2009/10/09",
|
|
||||||
"$1,200,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Gavin Joyce",
|
|
||||||
"gavin@example.com",
|
|
||||||
"Developer",
|
|
||||||
"Edinburgh",
|
|
||||||
"2010/12/22",
|
|
||||||
"$92,575"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Jennifer Chang",
|
|
||||||
"jennifer@example.com",
|
|
||||||
"Regional Director",
|
|
||||||
"Singapore",
|
|
||||||
"2010/11/14",
|
|
||||||
"$357,650"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Brenden Wagner",
|
|
||||||
"brenden@example.com",
|
|
||||||
"Software Engineer",
|
|
||||||
"San Francisco",
|
|
||||||
"2011/06/07",
|
|
||||||
"$206,850"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Fiona Green",
|
|
||||||
"fiona@example.com",
|
|
||||||
"Chief Operating Officer (COO)",
|
|
||||||
"San Francisco",
|
|
||||||
"2010/03/11",
|
|
||||||
"$850,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Shou Itou",
|
|
||||||
"shou@example.com",
|
|
||||||
"Regional Marketing",
|
|
||||||
"Tokyo",
|
|
||||||
"2011/08/14",
|
|
||||||
"$163,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Michelle House",
|
|
||||||
"michelle@example.com",
|
|
||||||
"Integration Specialist",
|
|
||||||
"Sydney",
|
|
||||||
"2011/06/02",
|
|
||||||
"$95,400"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Suki Burks",
|
|
||||||
"suki@example.com",
|
|
||||||
"Developer",
|
|
||||||
"London",
|
|
||||||
"2009/10/22",
|
|
||||||
"$114,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Prescott Bartlett",
|
|
||||||
"prescott@example.com",
|
|
||||||
"Technical Author",
|
|
||||||
"London",
|
|
||||||
"2011/05/07",
|
|
||||||
"$145,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Gavin Cortez",
|
|
||||||
"gavin@example.com",
|
|
||||||
"Team Leader",
|
|
||||||
"San Francisco",
|
|
||||||
"2008/10/26",
|
|
||||||
"$235,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Martena Mccray",
|
|
||||||
"martena@example.com",
|
|
||||||
"Post-Sales support",
|
|
||||||
"Edinburgh",
|
|
||||||
"2011/03/09",
|
|
||||||
"$324,050"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Unity Butler",
|
|
||||||
"unity@example.com",
|
|
||||||
"Marketing Designer",
|
|
||||||
"San Francisco",
|
|
||||||
"2009/12/09",
|
|
||||||
"$85,675"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Howard Hatfield",
|
|
||||||
"howard@example.com",
|
|
||||||
"Office Manager",
|
|
||||||
"San Francisco",
|
|
||||||
"2008/12/16",
|
|
||||||
"$164,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Hope Fuentes",
|
|
||||||
"hope@example.com",
|
|
||||||
"Secretary",
|
|
||||||
"San Francisco",
|
|
||||||
"2010/02/12",
|
|
||||||
"$109,850"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Vivian Harrell",
|
|
||||||
"vivian@example.com",
|
|
||||||
"Financial Controller",
|
|
||||||
"San Francisco",
|
|
||||||
"2009/02/14",
|
|
||||||
"$452,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Timothy Mooney",
|
|
||||||
"timothy@example.com",
|
|
||||||
"Office Manager",
|
|
||||||
"London",
|
|
||||||
"2008/12/11",
|
|
||||||
"$136,200"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Jackson Bradshaw",
|
|
||||||
"jackson@example.com",
|
|
||||||
"Director",
|
|
||||||
"New York",
|
|
||||||
"2008/09/26",
|
|
||||||
"$645,750"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Olivia Liang",
|
|
||||||
"olivia@example.com",
|
|
||||||
"Support Engineer",
|
|
||||||
"Singapore",
|
|
||||||
"2011/02/03",
|
|
||||||
"$234,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Bruno Nash",
|
|
||||||
"bruno@example.com",
|
|
||||||
"Software Engineer",
|
|
||||||
"London",
|
|
||||||
"2011/05/03",
|
|
||||||
"$163,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Sakura Yamamoto",
|
|
||||||
"sakura@example.com",
|
|
||||||
"Support Engineer",
|
|
||||||
"Tokyo",
|
|
||||||
"2009/08/19",
|
|
||||||
"$139,575"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Thor Walton",
|
|
||||||
"thor@example.com",
|
|
||||||
"Developer",
|
|
||||||
"New York",
|
|
||||||
"2013/08/11",
|
|
||||||
"$98,540"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Finn Camacho",
|
|
||||||
"finn@example.com",
|
|
||||||
"Support Engineer",
|
|
||||||
"San Francisco",
|
|
||||||
"2009/07/07",
|
|
||||||
"$87,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Serge Baldwin",
|
|
||||||
"serge@example.com",
|
|
||||||
"Data Coordinator",
|
|
||||||
"Singapore",
|
|
||||||
"2012/04/09",
|
|
||||||
"$138,575"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Zenaida Frank",
|
|
||||||
"zenaida@example.com",
|
|
||||||
"Software Engineer",
|
|
||||||
"New York",
|
|
||||||
"2010/01/04",
|
|
||||||
"$125,250"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Zorita Serrano",
|
|
||||||
"zorita@example.com",
|
|
||||||
"Software Engineer",
|
|
||||||
"San Francisco",
|
|
||||||
"2012/06/01",
|
|
||||||
"$115,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Jennifer Acosta",
|
|
||||||
"jennifer@example.com",
|
|
||||||
"Junior Javascript Developer",
|
|
||||||
"Edinburgh",
|
|
||||||
"2013/02/01",
|
|
||||||
"$75,650"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Cara Stevens",
|
|
||||||
"cara@example.com",
|
|
||||||
"Sales Assistant",
|
|
||||||
"New York",
|
|
||||||
"2011/12/06",
|
|
||||||
"$145,600"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Hermione Butler",
|
|
||||||
"hermione@example.com",
|
|
||||||
"Regional Director",
|
|
||||||
"London",
|
|
||||||
"2011/03/21",
|
|
||||||
"$356,250"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Lael Greer",
|
|
||||||
"lael@example.com",
|
|
||||||
"Systems Administrator",
|
|
||||||
"London",
|
|
||||||
"2009/02/27",
|
|
||||||
"$103,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Jonas Alexander",
|
|
||||||
"jonas@example.com",
|
|
||||||
"Developer",
|
|
||||||
"San Francisco",
|
|
||||||
"2010/07/14",
|
|
||||||
"$86,500"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Shad Decker",
|
|
||||||
"shad@example.com",
|
|
||||||
"Regional Director",
|
|
||||||
"Edinburgh",
|
|
||||||
"2008/11/13",
|
|
||||||
"$183,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Michael Bruce",
|
|
||||||
"michael@example.com",
|
|
||||||
"Javascript Developer",
|
|
||||||
"Singapore",
|
|
||||||
"2011/06/27",
|
|
||||||
"$183,000"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Donna Snider",
|
|
||||||
"donna@example.com",
|
|
||||||
"Customer Support",
|
|
||||||
"New York",
|
|
||||||
"2011/01/25",
|
|
||||||
"$112,000"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,64 +0,0 @@
|
|||||||
{
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"chart_data": [
|
|
||||||
28,
|
|
||||||
10,
|
|
||||||
45,
|
|
||||||
38,
|
|
||||||
15,
|
|
||||||
30,
|
|
||||||
35,
|
|
||||||
30,
|
|
||||||
8
|
|
||||||
],
|
|
||||||
"active_option": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 2,
|
|
||||||
"chart_data": [
|
|
||||||
35,
|
|
||||||
25,
|
|
||||||
15,
|
|
||||||
40,
|
|
||||||
42,
|
|
||||||
25,
|
|
||||||
48,
|
|
||||||
8,
|
|
||||||
30
|
|
||||||
],
|
|
||||||
"active_option": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 3,
|
|
||||||
"chart_data": [
|
|
||||||
10,
|
|
||||||
22,
|
|
||||||
27,
|
|
||||||
33,
|
|
||||||
42,
|
|
||||||
32,
|
|
||||||
27,
|
|
||||||
22,
|
|
||||||
8
|
|
||||||
],
|
|
||||||
"active_option": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 4,
|
|
||||||
"chart_data": [
|
|
||||||
5,
|
|
||||||
9,
|
|
||||||
12,
|
|
||||||
18,
|
|
||||||
20,
|
|
||||||
25,
|
|
||||||
30,
|
|
||||||
36,
|
|
||||||
48
|
|
||||||
],
|
|
||||||
"active_option": 8
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,604 +0,0 @@
|
|||||||
{
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"invoice_id": 4477,
|
|
||||||
"issued_date": "12/13/2020",
|
|
||||||
"client_name": "Roxy Floodgate",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 3428,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Paid",
|
|
||||||
"balance": "$724",
|
|
||||||
"due_date": "04/23/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 5020,
|
|
||||||
"issued_date": "07/17/2020",
|
|
||||||
"client_name": "Roy Southerell",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 5219,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Downloaded",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "12/15/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4506,
|
|
||||||
"issued_date": "10/19/2020",
|
|
||||||
"client_name": "Briny Undrell",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 3719,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Paid",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "11/03/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4515,
|
|
||||||
"issued_date": "03/06/2021",
|
|
||||||
"client_name": "Kendell Longstreeth",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 4749,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Sent",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "02/11/2021",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4831,
|
|
||||||
"issued_date": "02/08/2021",
|
|
||||||
"client_name": "Dorris Grigoriev",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 4056,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": "$815",
|
|
||||||
"due_date": "06/30/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4881,
|
|
||||||
"issued_date": "08/26/2020",
|
|
||||||
"client_name": "Zeb Kenningham",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 2771,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Paid",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "06/24/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4877,
|
|
||||||
"issued_date": "09/17/2020",
|
|
||||||
"client_name": "Tudor Pereira",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 2713,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": "$407",
|
|
||||||
"due_date": "11/22/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4687,
|
|
||||||
"issued_date": "02/11/2021",
|
|
||||||
"client_name": "Peggy Viccary",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 4309,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Paid",
|
|
||||||
"balance": "-$205",
|
|
||||||
"due_date": "02/10/2021",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4917,
|
|
||||||
"issued_date": "01/26/2021",
|
|
||||||
"client_name": "Charo Praill",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 3367,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Downloaded",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "12/24/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4790,
|
|
||||||
"issued_date": "01/15/2021",
|
|
||||||
"client_name": "Ozzie Youles",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 4776,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Downloaded",
|
|
||||||
"balance": "$305",
|
|
||||||
"due_date": "06/02/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4965,
|
|
||||||
"issued_date": "09/27/2020",
|
|
||||||
"client_name": "Yelena O'Hear",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 3789,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": "$666",
|
|
||||||
"due_date": "03/18/2021",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4449,
|
|
||||||
"issued_date": "07/31/2020",
|
|
||||||
"client_name": "Tom O'Loughlin",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 5200,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "01/17/2021",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4511,
|
|
||||||
"issued_date": "02/14/2021",
|
|
||||||
"client_name": "Donni Goning",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 4558,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Paid",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "10/01/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4677,
|
|
||||||
"issued_date": "05/21/2020",
|
|
||||||
"client_name": "Syman Asbery",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 3503,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Paid",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "05/22/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 5024,
|
|
||||||
"issued_date": "06/30/2020",
|
|
||||||
"client_name": "Ariella Filippyev",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 5285,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": "-$202",
|
|
||||||
"due_date": "08/02/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4743,
|
|
||||||
"issued_date": "06/21/2020",
|
|
||||||
"client_name": "Britteny Barham",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 3668,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Downloaded",
|
|
||||||
"balance": "$731",
|
|
||||||
"due_date": "12/15/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4416,
|
|
||||||
"issued_date": "12/30/2020",
|
|
||||||
"client_name": "Shelly Pyott",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 4372,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Sent",
|
|
||||||
"balance": "-$344",
|
|
||||||
"due_date": "09/17/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4943,
|
|
||||||
"issued_date": "05/27/2020",
|
|
||||||
"client_name": "Fancy Hunnicot",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 3198,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": "-$253",
|
|
||||||
"due_date": "08/16/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4989,
|
|
||||||
"issued_date": "07/30/2020",
|
|
||||||
"client_name": "Orson Grafton",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 5293,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Past Due",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "08/01/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4582,
|
|
||||||
"issued_date": "06/10/2020",
|
|
||||||
"client_name": "Keane Barfitt",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 5612,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Downloaded",
|
|
||||||
"balance": "$883",
|
|
||||||
"due_date": "04/12/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 5041,
|
|
||||||
"issued_date": "02/01/2021",
|
|
||||||
"client_name": "Shamus Tuttle",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 2230,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Sent",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "11/19/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4401,
|
|
||||||
"issued_date": "03/22/2021",
|
|
||||||
"client_name": "Bealle Daskiewicz",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 2032,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "11/30/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4535,
|
|
||||||
"issued_date": "11/30/2020",
|
|
||||||
"client_name": "Ignace Levington",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 3128,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Paid",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "09/10/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4683,
|
|
||||||
"issued_date": "01/06/2021",
|
|
||||||
"client_name": "Isidor Navarro",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 2060,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Downloaded",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "12/08/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4410,
|
|
||||||
"issued_date": "06/01/2020",
|
|
||||||
"client_name": "Keslie Lermit",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 4077,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "02/01/2021",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4716,
|
|
||||||
"issued_date": "10/30/2020",
|
|
||||||
"client_name": "Ninette Forde",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 2872,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "10/18/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4341,
|
|
||||||
"issued_date": "02/05/2021",
|
|
||||||
"client_name": "Ninnetta Roylance",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 3740,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "11/01/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4989,
|
|
||||||
"issued_date": "12/01/2020",
|
|
||||||
"client_name": "Lorine Hischke",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 3623,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Downloaded",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "09/23/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4446,
|
|
||||||
"issued_date": "04/16/2020",
|
|
||||||
"client_name": "Gray Waldock",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 2477,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "04/01/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4765,
|
|
||||||
"issued_date": "01/24/2021",
|
|
||||||
"client_name": "Pryce Scothorn",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 3904,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Paid",
|
|
||||||
"balance": "$951",
|
|
||||||
"due_date": "09/30/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4575,
|
|
||||||
"issued_date": "02/24/2021",
|
|
||||||
"client_name": "Hermia Fosten",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 3102,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": "-$153",
|
|
||||||
"due_date": "08/25/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4538,
|
|
||||||
"issued_date": "02/29/2021",
|
|
||||||
"client_name": "Brandy Cleveland",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 2483,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "07/10/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4798,
|
|
||||||
"issued_date": "08/07/2020",
|
|
||||||
"client_name": "Lloyd Janaszkiewicz",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 2825,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": "-$459",
|
|
||||||
"due_date": "10/14/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4963,
|
|
||||||
"issued_date": "05/10/2020",
|
|
||||||
"client_name": "Morgan Ewbanks",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 2029,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Past Due",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "03/28/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4528,
|
|
||||||
"issued_date": "04/02/2020",
|
|
||||||
"client_name": "Rahal Bezemer",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 3208,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Sent",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "09/06/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 5089,
|
|
||||||
"issued_date": "05/02/2020",
|
|
||||||
"client_name": "Jamal Kerrod",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 3077,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Sent",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "05/09/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4456,
|
|
||||||
"issued_date": "03/23/2021",
|
|
||||||
"client_name": "Claudine Mechell",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 5578,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "07/23/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 5027,
|
|
||||||
"issued_date": "09/28/2020",
|
|
||||||
"client_name": "Devonne Wallbridge",
|
|
||||||
"service": "Software Development",
|
|
||||||
"total": 2787,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "09/25/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4748,
|
|
||||||
"issued_date": "02/21/2021",
|
|
||||||
"client_name": "Ruddie Gabb",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 5591,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Downloaded",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "06/07/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4651,
|
|
||||||
"issued_date": "05/24/2020",
|
|
||||||
"client_name": "Jennica Aronov",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 2783,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "10/22/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4794,
|
|
||||||
"issued_date": "01/13/2021",
|
|
||||||
"client_name": "Hephzibah Hanshawe",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 2719,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Sent",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "02/04/2021",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4593,
|
|
||||||
"issued_date": "05/18/2020",
|
|
||||||
"client_name": "Darwin Dory",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 3325,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": "$361",
|
|
||||||
"due_date": "03/02/2021",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4437,
|
|
||||||
"issued_date": "10/29/2020",
|
|
||||||
"client_name": "Orbadiah Norton",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 3851,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "08/25/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4632,
|
|
||||||
"issued_date": "04/07/2020",
|
|
||||||
"client_name": "Eadith Garshore",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 5565,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "03/06/2021",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4995,
|
|
||||||
"issued_date": "08/21/2020",
|
|
||||||
"client_name": "Raynell Clendennen",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 3313,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "06/09/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4375,
|
|
||||||
"issued_date": "05/31/2020",
|
|
||||||
"client_name": "Dido Smitton",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 5181,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "10/22/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4323,
|
|
||||||
"issued_date": "07/12/2020",
|
|
||||||
"client_name": "Hershel Pennetti",
|
|
||||||
"service": "Template Customization",
|
|
||||||
"total": 2869,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "03/22/2021",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4993,
|
|
||||||
"issued_date": "07/10/2020",
|
|
||||||
"client_name": "Lutero Aloshechkin",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 4836,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Partial Payment",
|
|
||||||
"balance": 0,
|
|
||||||
"due_date": "10/22/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4439,
|
|
||||||
"issued_date": "07/20/2020",
|
|
||||||
"client_name": "Beck Cottle",
|
|
||||||
"service": "UI/UX Design & Development",
|
|
||||||
"total": 4263,
|
|
||||||
"avatar_image": false,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": "$762",
|
|
||||||
"due_date": "06/12/2020",
|
|
||||||
"action": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"invoice_id": 4567,
|
|
||||||
"issued_date": "04/19/2020",
|
|
||||||
"client_name": "Deny Pell",
|
|
||||||
"service": "Unlimited Extended License",
|
|
||||||
"total": 3171,
|
|
||||||
"avatar_image": true,
|
|
||||||
"invoice_status": "Draft",
|
|
||||||
"balance": "-$205",
|
|
||||||
"due_date": "09/25/2020",
|
|
||||||
"action": 1
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,66 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"text": "css",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"text": "app.css",
|
|
||||||
"type": "css"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "style.css",
|
|
||||||
"type": "css"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 2,
|
|
||||||
"text": "img",
|
|
||||||
"state": {
|
|
||||||
"opened": true
|
|
||||||
},
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"text": "bg.jpg",
|
|
||||||
"type": "img"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "logo.png",
|
|
||||||
"type": "img"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "avatar.png",
|
|
||||||
"type": "img"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 3,
|
|
||||||
"text": "js",
|
|
||||||
"state": {
|
|
||||||
"opened": true
|
|
||||||
},
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"text": "jquery.js",
|
|
||||||
"type": "js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "app.js",
|
|
||||||
"type": "js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "index.html",
|
|
||||||
"type": "html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "page-one.html",
|
|
||||||
"type": "html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "page-two.html",
|
|
||||||
"type": "html"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@ -1,127 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": "board-in-progress",
|
|
||||||
"title": "In Progress",
|
|
||||||
"item": [
|
|
||||||
{
|
|
||||||
"id": "in-progress-1",
|
|
||||||
"title": "Research FAQ page UX",
|
|
||||||
"comments": "12",
|
|
||||||
"badge-text": "UX",
|
|
||||||
"badge": "success",
|
|
||||||
"due-date": "5 April",
|
|
||||||
"attachments": "4",
|
|
||||||
"assigned": [
|
|
||||||
"12.png",
|
|
||||||
"5.png"
|
|
||||||
],
|
|
||||||
"members": [
|
|
||||||
"Bruce",
|
|
||||||
"Clark"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "in-progress-2",
|
|
||||||
"title": "Review Javascript code",
|
|
||||||
"comments": "8",
|
|
||||||
"badge-text": "Code Review",
|
|
||||||
"badge": "danger",
|
|
||||||
"attachments": "2",
|
|
||||||
"due-date": "10 April",
|
|
||||||
"assigned": [
|
|
||||||
"3.png",
|
|
||||||
"8.png"
|
|
||||||
],
|
|
||||||
"members": [
|
|
||||||
"Helena",
|
|
||||||
"Iris"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "board-in-review",
|
|
||||||
"title": "In Review",
|
|
||||||
"item": [
|
|
||||||
{
|
|
||||||
"id": "in-review-1",
|
|
||||||
"title": "Review completed Apps",
|
|
||||||
"comments": "17",
|
|
||||||
"badge-text": "Info",
|
|
||||||
"badge": "info",
|
|
||||||
"due-date": "8 April",
|
|
||||||
"attachments": "8",
|
|
||||||
"assigned": [
|
|
||||||
"11.png",
|
|
||||||
"6.png"
|
|
||||||
],
|
|
||||||
"members": [
|
|
||||||
"Laurel",
|
|
||||||
"Harley"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "in-review-2",
|
|
||||||
"title": "Find new images for pages",
|
|
||||||
"comments": "18",
|
|
||||||
"badge-text": "Images",
|
|
||||||
"image": "16.jpg",
|
|
||||||
"badge": "warning",
|
|
||||||
"due-date": "2 April",
|
|
||||||
"attachments": "10",
|
|
||||||
"assigned": [
|
|
||||||
"9.png",
|
|
||||||
"2.png",
|
|
||||||
"3.png",
|
|
||||||
"12.png"
|
|
||||||
],
|
|
||||||
"members": [
|
|
||||||
"Dianna",
|
|
||||||
"Jordan",
|
|
||||||
"Vinnie",
|
|
||||||
"Lasa"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "board-done",
|
|
||||||
"title": "Done",
|
|
||||||
"item": [
|
|
||||||
{
|
|
||||||
"id": "done-1",
|
|
||||||
"title": "Forms & Tables section",
|
|
||||||
"comments": "4",
|
|
||||||
"badge-text": "App",
|
|
||||||
"badge": "secondary",
|
|
||||||
"due-date": "7 April",
|
|
||||||
"attachments": "1",
|
|
||||||
"assigned": [
|
|
||||||
"2.png",
|
|
||||||
"9.png",
|
|
||||||
"10.png"
|
|
||||||
],
|
|
||||||
"members": [
|
|
||||||
"Kara",
|
|
||||||
"Nyssa",
|
|
||||||
"Darcey"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "done-2",
|
|
||||||
"title": "Completed Charts & Maps",
|
|
||||||
"comments": "21",
|
|
||||||
"badge-text": "Charts & Maps",
|
|
||||||
"badge": "primary",
|
|
||||||
"due-date": "7 April",
|
|
||||||
"attachments": "6",
|
|
||||||
"assigned": [
|
|
||||||
"1.png"
|
|
||||||
],
|
|
||||||
"members": [
|
|
||||||
"Sarah"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@ -1,85 +0,0 @@
|
|||||||
{
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"name": "Management",
|
|
||||||
"assigned_to": [
|
|
||||||
"Admin"
|
|
||||||
],
|
|
||||||
"created_date": "14 Apr 2021, 8:43 PM"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 2,
|
|
||||||
"name": "Manage Billing & Roles",
|
|
||||||
"assigned_to": [
|
|
||||||
"Admin"
|
|
||||||
],
|
|
||||||
"created_date": "16 Sep 2021, 5:20 PM"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 3,
|
|
||||||
"name": "Add & Remove Users",
|
|
||||||
"assigned_to": [
|
|
||||||
"Admin",
|
|
||||||
"Manager"
|
|
||||||
],
|
|
||||||
"created_date": "14 Oct 2021, 10:20 AM"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 4,
|
|
||||||
"name": "Project Planning",
|
|
||||||
"assigned_to": [
|
|
||||||
"Admin",
|
|
||||||
"Users",
|
|
||||||
"Support"
|
|
||||||
],
|
|
||||||
"created_date": "14 May 2021, 12:10 PM"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 5,
|
|
||||||
"name": "Manage Email Sequences",
|
|
||||||
"assigned_to": [
|
|
||||||
"Admin",
|
|
||||||
"Users",
|
|
||||||
"Support"
|
|
||||||
],
|
|
||||||
"created_date": "23 Aug 2021, 2:00 PM"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 6,
|
|
||||||
"name": "Client Communication",
|
|
||||||
"assigned_to": [
|
|
||||||
"Admin",
|
|
||||||
"Manager"
|
|
||||||
],
|
|
||||||
"created_date": "15 Apr 2021, 11:30 AM"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 7,
|
|
||||||
"name": "Only View",
|
|
||||||
"assigned_to": [
|
|
||||||
"Admin",
|
|
||||||
"Restricted"
|
|
||||||
],
|
|
||||||
"created_date": "04 Dec 2021, 8:15 PM"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 8,
|
|
||||||
"name": "Financial Management",
|
|
||||||
"assigned_to": [
|
|
||||||
"Admin",
|
|
||||||
"Manager"
|
|
||||||
],
|
|
||||||
"created_date": "25 Feb 2021, 10:30 AM"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 9,
|
|
||||||
"name": "Manage Others’ Tasks",
|
|
||||||
"assigned_to": [
|
|
||||||
"Admin",
|
|
||||||
"Support"
|
|
||||||
],
|
|
||||||
"created_date": "04 Nov 2021, 11:45 AM"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,92 +0,0 @@
|
|||||||
{
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"project_name": "BGC eCommerce App",
|
|
||||||
"framework": "React Project",
|
|
||||||
"total_task": "122/240",
|
|
||||||
"project_image": "react-label.png",
|
|
||||||
"hours": "210:30h",
|
|
||||||
"progress": "60"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"project_name": "Falcon Logo Design",
|
|
||||||
"framework": "UI/UX Project",
|
|
||||||
"total_task": "9/50",
|
|
||||||
"project_image": "xd-label.png",
|
|
||||||
"hours": "89h",
|
|
||||||
"progress": "15"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"project_name": "Dashboard Design",
|
|
||||||
"framework": "Vuejs Project",
|
|
||||||
"total_task": "100/190",
|
|
||||||
"project_image": "vue-label.png",
|
|
||||||
"hours": "129:45h",
|
|
||||||
"progress": "90"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"project_name": "Foodista mobile app",
|
|
||||||
"framework": "iPhone Project",
|
|
||||||
"total_task": "12/86",
|
|
||||||
"project_image": "sketch-label.png",
|
|
||||||
"hours": "45h",
|
|
||||||
"progress": "49"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"project_name": "Dojo React Project",
|
|
||||||
"framework": "React Project",
|
|
||||||
"total_task": "234/378",
|
|
||||||
"project_image": "react-label.png",
|
|
||||||
"hours": "67:10h",
|
|
||||||
"progress": "73"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"project_name": "Crypto Website",
|
|
||||||
"framework": "HTML Project",
|
|
||||||
"total_task": "264/537",
|
|
||||||
"project_image": "html-label.png",
|
|
||||||
"hours": "108:39h",
|
|
||||||
"progress": "81"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"project_name": "Vue Admin template",
|
|
||||||
"framework": "Vuejs Project",
|
|
||||||
"total_task": "214/627",
|
|
||||||
"project_image": "vue-label.png",
|
|
||||||
"hours": "88:19h",
|
|
||||||
"progress": "78"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"project_name": "Admin template Project",
|
|
||||||
"framework": "UI/UX Project",
|
|
||||||
"total_task": "148/280",
|
|
||||||
"project_image": "xd-label.png",
|
|
||||||
"hours": "26:02h",
|
|
||||||
"progress": "53"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"project_name": "Online Webinar",
|
|
||||||
"framework": "Official Event",
|
|
||||||
"total_task": "12/20",
|
|
||||||
"project_image": "event-label.png",
|
|
||||||
"hours": "12:12h",
|
|
||||||
"progress": "69"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"project_name": "Blockchain Website",
|
|
||||||
"framework": "Python Project",
|
|
||||||
"total_task": "104/137",
|
|
||||||
"project_image": "figma-label.png",
|
|
||||||
"hours": "138:39h",
|
|
||||||
"progress": "95"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"project_name": "Hoffman Website",
|
|
||||||
"framework": "HTML Project",
|
|
||||||
"total_task": "56/183",
|
|
||||||
"project_image": "html-label.png",
|
|
||||||
"hours": "76h",
|
|
||||||
"progress": "43"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,720 +0,0 @@
|
|||||||
{
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"name": "Dashboard Analytics",
|
|
||||||
"icon": "ti-smart-home",
|
|
||||||
"url": "index.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dashboard CRM",
|
|
||||||
"icon": "ti-smart-home",
|
|
||||||
"url": "dashboards-crm.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dashboard eCommerce",
|
|
||||||
"icon": "ti-smart-home",
|
|
||||||
"url": "dashboards-ecommerce.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Without menu",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-without-menu.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Fluid",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-fluid.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Container",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-container.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Blank",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-blank.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Email",
|
|
||||||
"icon": "ti-mail",
|
|
||||||
"url": "app-email.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Chat",
|
|
||||||
"icon": "ti-messages",
|
|
||||||
"url": "app-chat.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Calendar",
|
|
||||||
"icon": "ti-calendar",
|
|
||||||
"url": "app-calendar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Kanban",
|
|
||||||
"icon": "ti-layout-kanban",
|
|
||||||
"url": "app-kanban.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User List",
|
|
||||||
"icon": "ti-list-numbers",
|
|
||||||
"url": "app-user-list.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User View - Account",
|
|
||||||
"icon": "ti-user",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User View - Security",
|
|
||||||
"icon": "ti-shield-chevron",
|
|
||||||
"url": "app-user-view-security.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User View - Billing & Plans",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "app-user-view-billing.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User View - Notifications",
|
|
||||||
"icon": "ti-notification",
|
|
||||||
"url": "app-user-view-notifications.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User View - Connections",
|
|
||||||
"icon": "ti-brand-google",
|
|
||||||
"url": "app-user-view-connections.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Roles",
|
|
||||||
"icon": "ti-shield-checkered",
|
|
||||||
"url": "app-access-roles.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Permission",
|
|
||||||
"icon": "ti-ban",
|
|
||||||
"url": "app-access-permission.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Invoice List",
|
|
||||||
"icon": "ti-list-numbers",
|
|
||||||
"url": "app-invoice-list.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Invoice Preview",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "app-invoice-preview.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Invoice Edit",
|
|
||||||
"icon": "ti-pencil",
|
|
||||||
"url": "app-invoice-edit.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Invoice Add",
|
|
||||||
"icon": "ti-user-plus",
|
|
||||||
"url": "app-invoice-add.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User Profile",
|
|
||||||
"icon": "ti-user-circle",
|
|
||||||
"url": "pages-profile-user.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User Profile - Teams",
|
|
||||||
"icon": "ti-users",
|
|
||||||
"url": "pages-profile-teams.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User Profile - Projects",
|
|
||||||
"icon": "ti-layout-grid",
|
|
||||||
"url": "pages-profile-projects.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User Profile - Connections",
|
|
||||||
"icon": "ti-link",
|
|
||||||
"url": "pages-profile-connections.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Account Settings - Account",
|
|
||||||
"icon": "ti-user",
|
|
||||||
"url": "pages-account-settings-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Account Settings - Security",
|
|
||||||
"icon": "ti-shield-chevron",
|
|
||||||
"url": "pages-account-settings-security.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Account Settings - Billing & Plans",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "pages-account-settings-billing.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Account Settings - Notifications",
|
|
||||||
"icon": "ti-notification",
|
|
||||||
"url": "pages-account-settings-notifications.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Account Settings - Connections",
|
|
||||||
"icon": "ti-link",
|
|
||||||
"url": "pages-account-settings-connections.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "FAQ",
|
|
||||||
"icon": "ti-help",
|
|
||||||
"url": "pages-faq.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Help Center Landing",
|
|
||||||
"icon": "ti-lifebuoy",
|
|
||||||
"url": "pages-help-center-landing.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Help Center Categories",
|
|
||||||
"icon": "ti-lifebuoy",
|
|
||||||
"url": "pages-help-center-categories.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Help Center Article",
|
|
||||||
"icon": "ti-lifebuoy",
|
|
||||||
"url": "pages-help-center-article.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Pricing",
|
|
||||||
"icon": "ti-diamond",
|
|
||||||
"url": "pages-pricing.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Error",
|
|
||||||
"icon": "ti-alert-circle",
|
|
||||||
"url": "pages-misc-error.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Under Maintenance",
|
|
||||||
"icon": "ti-barrier-block",
|
|
||||||
"url": "pages-misc-under-maintenance.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Coming Soon",
|
|
||||||
"icon": "ti-clock",
|
|
||||||
"url": "pages-misc-comingsoon.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Not Authorized",
|
|
||||||
"icon": "ti-user-x",
|
|
||||||
"url": "pages-misc-not-authorized.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Login Basic",
|
|
||||||
"icon": "ti-login",
|
|
||||||
"url": "auth-login-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Login Cover",
|
|
||||||
"icon": "ti-login",
|
|
||||||
"url": "auth-login-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Register Basic",
|
|
||||||
"icon": "ti-user-plus",
|
|
||||||
"url": "auth-register-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Register Cover",
|
|
||||||
"icon": "ti-user-plus",
|
|
||||||
"url": "auth-register-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Register Multi-steps",
|
|
||||||
"icon": "ti-user-plus",
|
|
||||||
"url": "auth-register-multisteps.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Verify Email Basic",
|
|
||||||
"icon": "ti-mail",
|
|
||||||
"url": "auth-verify-email-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Verify Email Cover",
|
|
||||||
"icon": "ti-mail",
|
|
||||||
"url": "auth-verify-email-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Reset Password Basic",
|
|
||||||
"icon": "ti-help",
|
|
||||||
"url": "auth-reset-password-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Reset Password Cover",
|
|
||||||
"icon": "ti-help",
|
|
||||||
"url": "auth-reset-password-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Forgot Password Basic",
|
|
||||||
"icon": "ti-question-mark",
|
|
||||||
"url": "auth-forgot-password-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Forgot Password Cover",
|
|
||||||
"icon": "ti-question-mark",
|
|
||||||
"url": "auth-forgot-password-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Two Steps Verification Basic",
|
|
||||||
"icon": "ti-question-mark",
|
|
||||||
"url": "auth-two-steps-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Two Steps Verification Cover",
|
|
||||||
"icon": "ti-question-mark",
|
|
||||||
"url": "auth-two-steps-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Modal Examples",
|
|
||||||
"icon": "ti-square",
|
|
||||||
"url": "modal-examples.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Checkout Wizard",
|
|
||||||
"icon": "ti-shopping-cart",
|
|
||||||
"url": "wizard-ex-checkout.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Property Listing Wizard",
|
|
||||||
"icon": "ti-building-cottage",
|
|
||||||
"url": "wizard-ex-property-listing.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Create Deal Wizard",
|
|
||||||
"icon": "ti-gift",
|
|
||||||
"url": "wizard-ex-create-deal.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tabler",
|
|
||||||
"icon": "ti-pencil",
|
|
||||||
"url": "icons-tabler.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Font Awesome",
|
|
||||||
"icon": "ti-typography",
|
|
||||||
"url": "icons-font-awesome.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Basic Cards",
|
|
||||||
"icon": "ti-credit-card",
|
|
||||||
"url": "cards-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Advance Cards",
|
|
||||||
"icon": "ti-id",
|
|
||||||
"url": "cards-advance.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Statistics Cards",
|
|
||||||
"icon": "ti-chart-bar",
|
|
||||||
"url": "cards-statistics.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Analytics Cards",
|
|
||||||
"icon": "ti-chart-bar",
|
|
||||||
"url": "cards-analytics.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Actions Cards",
|
|
||||||
"icon": "ti-mouse-2",
|
|
||||||
"url": "cards-actions.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Accordion",
|
|
||||||
"icon": "ti-arrows-maximize",
|
|
||||||
"url": "ui-accordion.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Alerts",
|
|
||||||
"icon": "ti-alert-triangle",
|
|
||||||
"url": "ui-alerts.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Badges",
|
|
||||||
"icon": "ti-badge",
|
|
||||||
"url": "ui-badges.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Buttons",
|
|
||||||
"icon": "ti-circle-plus",
|
|
||||||
"url": "ui-buttons.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Carousel",
|
|
||||||
"icon": "ti-photo",
|
|
||||||
"url": "ui-carousel.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Collapse",
|
|
||||||
"icon": "ti-arrows-minimize",
|
|
||||||
"url": "ui-collapse.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dropdowns",
|
|
||||||
"icon": "ti-arrow-autofit-height",
|
|
||||||
"url": "ui-dropdowns.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Footer",
|
|
||||||
"icon": "ti-layout-bottombar",
|
|
||||||
"url": "ui-footer.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "List Groups",
|
|
||||||
"icon": "ti-list-numbers",
|
|
||||||
"url": "ui-list-groups.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Modals",
|
|
||||||
"icon": "ti-layout",
|
|
||||||
"url": "ui-modals.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Navbar",
|
|
||||||
"icon": "ti-layout-navbar",
|
|
||||||
"url": "ui-navbar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Offcanvas",
|
|
||||||
"icon": "ti-layout",
|
|
||||||
"url": "ui-offcanvas.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Pagination & Breadcrumbs",
|
|
||||||
"icon": "ti-chevrons-right",
|
|
||||||
"url": "ui-pagination-breadcrumbs.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Progress",
|
|
||||||
"icon": "ti-adjustments-horizontal",
|
|
||||||
"url": "ui-progress.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Spinners",
|
|
||||||
"icon": "ti-loader-2",
|
|
||||||
"url": "ui-spinners.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tabs & Pills",
|
|
||||||
"icon": "ti-server-2",
|
|
||||||
"url": "ui-tabs-pills.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Toasts",
|
|
||||||
"icon": "ti-box-model",
|
|
||||||
"url": "ui-toasts.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tooltips & Popovers",
|
|
||||||
"icon": "ti-message-2",
|
|
||||||
"url": "ui-tooltips-popovers.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Typography",
|
|
||||||
"icon": "ti-typography",
|
|
||||||
"url": "ui-typography.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Avatar",
|
|
||||||
"icon": "ti-user-circle",
|
|
||||||
"url": "extended-ui-avatar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "BlockUI",
|
|
||||||
"icon": "ti-window-maximize",
|
|
||||||
"url": "extended-ui-blockui.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Drag & Drop",
|
|
||||||
"icon": "ti-drag-drop",
|
|
||||||
"url": "extended-ui-drag-and-drop.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Media Player",
|
|
||||||
"icon": "ti-music",
|
|
||||||
"url": "extended-ui-media-player.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Perfect Scrollbar",
|
|
||||||
"icon": "ti-arrows-move-vertical",
|
|
||||||
"url": "extended-ui-perfect-scrollbar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Star Ratings",
|
|
||||||
"icon": "ti-star",
|
|
||||||
"url": "extended-ui-star-ratings.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SweetAlert2",
|
|
||||||
"icon": "ti-alert-triangle",
|
|
||||||
"url": "extended-ui-sweetalert2.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Text Divider",
|
|
||||||
"icon": "ti-separator-horizontal",
|
|
||||||
"url": "extended-ui-text-divider.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Timeline Basic",
|
|
||||||
"icon": "ti-arrows-horizontal",
|
|
||||||
"url": "extended-ui-timeline-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Timeline Fullscreen",
|
|
||||||
"icon": "ti-arrows-horizontal",
|
|
||||||
"url": "extended-ui-timeline-fullscreen.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tour",
|
|
||||||
"icon": "ti-brand-telegram",
|
|
||||||
"url": "extended-ui-tour.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Treeview",
|
|
||||||
"icon": "ti-git-fork rotate-180",
|
|
||||||
"url": "extended-ui-treeview.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Miscellaneous",
|
|
||||||
"icon": "ti-sitemap",
|
|
||||||
"url": "extended-ui-misc.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Basic Inputs",
|
|
||||||
"icon": "ti-cursor-text",
|
|
||||||
"url": "forms-basic-inputs.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Input groups",
|
|
||||||
"icon": "ti-arrow-autofit-content",
|
|
||||||
"url": "forms-input-groups.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Custom Options",
|
|
||||||
"icon": "ti-circle",
|
|
||||||
"url": "forms-custom-options.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Editors",
|
|
||||||
"icon": "ti-text-resize",
|
|
||||||
"url": "forms-editors.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "File Upload",
|
|
||||||
"icon": "ti-file-upload",
|
|
||||||
"url": "forms-file-upload.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Pickers",
|
|
||||||
"icon": "ti-edit-circle",
|
|
||||||
"url": "forms-pickers.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Select & Tags",
|
|
||||||
"icon": "ti-select",
|
|
||||||
"url": "forms-selects.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sliders",
|
|
||||||
"icon": "ti-adjustments-alt rotate-90",
|
|
||||||
"url": "forms-sliders.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Switches",
|
|
||||||
"icon": "ti-toggle-right",
|
|
||||||
"url": "forms-switches.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Extras",
|
|
||||||
"icon": "ti-circle-plus",
|
|
||||||
"url": "forms-extras.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Vertical Form",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "form-layouts-vertical.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Horizontal Form",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "form-layouts-horizontal.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sticky Actions",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "form-layouts-sticky.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Numbered Wizard",
|
|
||||||
"icon": "ti-text-wrap-disabled",
|
|
||||||
"url": "form-wizard-numbered.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Icons Wizard",
|
|
||||||
"icon": "ti-text-wrap-disabled",
|
|
||||||
"url": "form-wizard-icons.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Form Validation",
|
|
||||||
"icon": "ti-checkbox",
|
|
||||||
"url": "form-validation.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tables",
|
|
||||||
"icon": "ti-table",
|
|
||||||
"url": "tables-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Datatable Basic",
|
|
||||||
"icon": "ti-layout-grid",
|
|
||||||
"url": "tables-datatables-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Datatable Advanced",
|
|
||||||
"icon": "ti-layout-grid",
|
|
||||||
"url": "tables-datatables-advanced.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Datatable Extensions",
|
|
||||||
"icon": "ti-layout-grid",
|
|
||||||
"url": "tables-datatables-extensions.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Apex Charts",
|
|
||||||
"icon": "ti-chart-line",
|
|
||||||
"url": "charts-apex.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ChartJS",
|
|
||||||
"icon": "ti-chart-bar",
|
|
||||||
"url": "charts-chartjs.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Leaflet Maps",
|
|
||||||
"icon": "ti-map-pin",
|
|
||||||
"url": "maps-leaflet.html"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"files": [
|
|
||||||
{
|
|
||||||
"name": "Class Attendance",
|
|
||||||
"subtitle": "By Tommy Shelby",
|
|
||||||
"src": "img/icons/misc/search-xls.png",
|
|
||||||
"meta": "17kb",
|
|
||||||
"url": "javascript:;"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Passport Image",
|
|
||||||
"subtitle": "By William Budd",
|
|
||||||
"src": "img/icons/misc/search-jpg.png",
|
|
||||||
"meta": "35kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Class Notes",
|
|
||||||
"subtitle": "By Laurel Lance",
|
|
||||||
"src": "img/icons/misc/search-doc.png",
|
|
||||||
"meta": "153kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Receipt",
|
|
||||||
"subtitle": "By Donnie Darko",
|
|
||||||
"src": "img/icons/misc/search-jpg.png",
|
|
||||||
"meta": "25kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Social Guide",
|
|
||||||
"subtitle": "By Ryan Middleton",
|
|
||||||
"src": "img/icons/misc/search-doc.png",
|
|
||||||
"meta": "39kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Expenses",
|
|
||||||
"subtitle": "By Slade Wilson",
|
|
||||||
"src": "img/icons/misc/search-xls.png",
|
|
||||||
"meta": "15kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Documentation",
|
|
||||||
"subtitle": "By Walter White",
|
|
||||||
"src": "img/icons/misc/search-doc.png",
|
|
||||||
"meta": "200kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Avatar",
|
|
||||||
"subtitle": "By Ross Geller",
|
|
||||||
"src": "img/icons/misc/search-jpg.png",
|
|
||||||
"meta": "100kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Data",
|
|
||||||
"subtitle": "By Erik Foreman",
|
|
||||||
"src": "img/icons/misc/search-xls.png",
|
|
||||||
"meta": "5kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Gardening Guide",
|
|
||||||
"subtitle": "By Jerry Seinfeld",
|
|
||||||
"src": "img/icons/misc/search-doc.png",
|
|
||||||
"meta": "25kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"members": [
|
|
||||||
{
|
|
||||||
"name": "John Doe",
|
|
||||||
"subtitle": "Admin",
|
|
||||||
"src": "img/avatars/1.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Micheal Clarke",
|
|
||||||
"subtitle": "Customer",
|
|
||||||
"src": "img/avatars/2.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Melina Gibson",
|
|
||||||
"subtitle": "Staff",
|
|
||||||
"src": "img/avatars/5.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Anna Strong",
|
|
||||||
"subtitle": "Staff",
|
|
||||||
"src": "img/avatars/7.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Stephanie Gould",
|
|
||||||
"subtitle": "Customer",
|
|
||||||
"src": "img/avatars/3.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "David Budd",
|
|
||||||
"subtitle": "Admin",
|
|
||||||
"src": "img/avatars/10.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mark Shepiro",
|
|
||||||
"subtitle": "Admin",
|
|
||||||
"src": "img/avatars/12.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,740 +0,0 @@
|
|||||||
{
|
|
||||||
"pages": [
|
|
||||||
{
|
|
||||||
"name": "Dashboard Analytics",
|
|
||||||
"icon": "ti-smart-home",
|
|
||||||
"url": "index.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dashboard CRM",
|
|
||||||
"icon": "ti-smart-home",
|
|
||||||
"url": "dashboards-crm.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dashboard eCommerce",
|
|
||||||
"icon": "ti-smart-home",
|
|
||||||
"url": "dashboards-ecommerce.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Collapsed menu",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-collapsed-menu.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Content navbar",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-content-navbar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Content nav + Sidebar",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-content-navbar-with-sidebar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Without menu",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-without-menu.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Without navbar",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-without-navbar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Fluid",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-fluid.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Container",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-container.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Layout Blank",
|
|
||||||
"icon": "ti-layout-sidebar",
|
|
||||||
"url": "layouts-blank.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Email",
|
|
||||||
"icon": "ti-mail",
|
|
||||||
"url": "app-email.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Chat",
|
|
||||||
"icon": "ti-messages",
|
|
||||||
"url": "app-chat.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Calendar",
|
|
||||||
"icon": "ti-calendar",
|
|
||||||
"url": "app-calendar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Kanban",
|
|
||||||
"icon": "ti-layout-kanban",
|
|
||||||
"url": "app-kanban.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User List",
|
|
||||||
"icon": "ti-list-numbers",
|
|
||||||
"url": "app-user-list.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User View - Account",
|
|
||||||
"icon": "ti-user",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User View - Security",
|
|
||||||
"icon": "ti-shield-chevron",
|
|
||||||
"url": "app-user-view-security.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User View - Billing & Plans",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "app-user-view-billing.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User View - Notifications",
|
|
||||||
"icon": "ti-notification",
|
|
||||||
"url": "app-user-view-notifications.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User View - Connections",
|
|
||||||
"icon": "ti-brand-google",
|
|
||||||
"url": "app-user-view-connections.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Roles",
|
|
||||||
"icon": "ti-shield-checkered",
|
|
||||||
"url": "app-access-roles.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Permission",
|
|
||||||
"icon": "ti-ban",
|
|
||||||
"url": "app-access-permission.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Invoice List",
|
|
||||||
"icon": "ti-list-numbers",
|
|
||||||
"url": "app-invoice-list.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Invoice Preview",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "app-invoice-preview.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Invoice Edit",
|
|
||||||
"icon": "ti-pencil",
|
|
||||||
"url": "app-invoice-edit.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Invoice Add",
|
|
||||||
"icon": "ti-user-plus",
|
|
||||||
"url": "app-invoice-add.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User Profile",
|
|
||||||
"icon": "ti-user-circle",
|
|
||||||
"url": "pages-profile-user.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User Profile - Teams",
|
|
||||||
"icon": "ti-users",
|
|
||||||
"url": "pages-profile-teams.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User Profile - Projects",
|
|
||||||
"icon": "ti-layout-grid",
|
|
||||||
"url": "pages-profile-projects.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "User Profile - Connections",
|
|
||||||
"icon": "ti-link",
|
|
||||||
"url": "pages-profile-connections.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Account Settings - Account",
|
|
||||||
"icon": "ti-user",
|
|
||||||
"url": "pages-account-settings-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Account Settings - Security",
|
|
||||||
"icon": "ti-shield-chevron",
|
|
||||||
"url": "pages-account-settings-security.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Account Settings - Billing & Plans",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "pages-account-settings-billing.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Account Settings - Notifications",
|
|
||||||
"icon": "ti-notification",
|
|
||||||
"url": "pages-account-settings-notifications.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Account Settings - Connections",
|
|
||||||
"icon": "ti-link",
|
|
||||||
"url": "pages-account-settings-connections.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "FAQ",
|
|
||||||
"icon": "ti-help",
|
|
||||||
"url": "pages-faq.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Help Center Landing",
|
|
||||||
"icon": "ti-lifebuoy",
|
|
||||||
"url": "pages-help-center-landing.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Help Center Categories",
|
|
||||||
"icon": "ti-lifebuoy",
|
|
||||||
"url": "pages-help-center-categories.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Help Center Article",
|
|
||||||
"icon": "ti-lifebuoy",
|
|
||||||
"url": "pages-help-center-article.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Pricing",
|
|
||||||
"icon": "ti-diamond",
|
|
||||||
"url": "pages-pricing.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Error",
|
|
||||||
"icon": "ti-alert-circle",
|
|
||||||
"url": "pages-misc-error.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Under Maintenance",
|
|
||||||
"icon": "ti-barrier-block",
|
|
||||||
"url": "pages-misc-under-maintenance.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Coming Soon",
|
|
||||||
"icon": "ti-clock",
|
|
||||||
"url": "pages-misc-comingsoon.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Not Authorized",
|
|
||||||
"icon": "ti-user-x",
|
|
||||||
"url": "pages-misc-not-authorized.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Login Basic",
|
|
||||||
"icon": "ti-login",
|
|
||||||
"url": "auth-login-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Login Cover",
|
|
||||||
"icon": "ti-login",
|
|
||||||
"url": "auth-login-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Register Basic",
|
|
||||||
"icon": "ti-user-plus",
|
|
||||||
"url": "auth-register-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Register Cover",
|
|
||||||
"icon": "ti-user-plus",
|
|
||||||
"url": "auth-register-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Register Multi-steps",
|
|
||||||
"icon": "ti-user-plus",
|
|
||||||
"url": "auth-register-multisteps.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Verify Email Basic",
|
|
||||||
"icon": "ti-mail",
|
|
||||||
"url": "auth-verify-email-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Verify Email Cover",
|
|
||||||
"icon": "ti-mail",
|
|
||||||
"url": "auth-verify-email-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Reset Password Basic",
|
|
||||||
"icon": "ti-help",
|
|
||||||
"url": "auth-reset-password-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Reset Password Cover",
|
|
||||||
"icon": "ti-help",
|
|
||||||
"url": "auth-reset-password-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Forgot Password Basic",
|
|
||||||
"icon": "ti-question-mark",
|
|
||||||
"url": "auth-forgot-password-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Forgot Password Cover",
|
|
||||||
"icon": "ti-question-mark",
|
|
||||||
"url": "auth-forgot-password-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Two Steps Verification Basic",
|
|
||||||
"icon": "ti-question-mark",
|
|
||||||
"url": "auth-two-steps-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Two Steps Verification Cover",
|
|
||||||
"icon": "ti-question-mark",
|
|
||||||
"url": "auth-two-steps-cover.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Modal Examples",
|
|
||||||
"icon": "ti-square",
|
|
||||||
"url": "modal-examples.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Checkout Wizard",
|
|
||||||
"icon": "ti-shopping-cart",
|
|
||||||
"url": "wizard-ex-checkout.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Property Listing Wizard",
|
|
||||||
"icon": "ti-building-cottage",
|
|
||||||
"url": "wizard-ex-property-listing.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Create Deal Wizard",
|
|
||||||
"icon": "ti-gift",
|
|
||||||
"url": "wizard-ex-create-deal.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tabler",
|
|
||||||
"icon": "ti-pencil",
|
|
||||||
"url": "icons-tabler.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Font Awesome",
|
|
||||||
"icon": "ti-typography",
|
|
||||||
"url": "icons-font-awesome.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Basic Cards",
|
|
||||||
"icon": "ti-credit-card",
|
|
||||||
"url": "cards-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Advance Cards",
|
|
||||||
"icon": "ti-id",
|
|
||||||
"url": "cards-advance.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Statistics Cards",
|
|
||||||
"icon": "ti-chart-bar",
|
|
||||||
"url": "cards-statistics.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Analytics Cards",
|
|
||||||
"icon": "ti-chart-bar",
|
|
||||||
"url": "cards-analytics.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Actions Cards",
|
|
||||||
"icon": "ti-mouse-2",
|
|
||||||
"url": "cards-actions.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Accordion",
|
|
||||||
"icon": "ti-arrows-maximize",
|
|
||||||
"url": "ui-accordion.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Alerts",
|
|
||||||
"icon": "ti-alert-triangle",
|
|
||||||
"url": "ui-alerts.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Badges",
|
|
||||||
"icon": "ti-badge",
|
|
||||||
"url": "ui-badges.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Buttons",
|
|
||||||
"icon": "ti-circle-plus",
|
|
||||||
"url": "ui-buttons.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Carousel",
|
|
||||||
"icon": "ti-photo",
|
|
||||||
"url": "ui-carousel.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Collapse",
|
|
||||||
"icon": "ti-arrows-minimize",
|
|
||||||
"url": "ui-collapse.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dropdowns",
|
|
||||||
"icon": "ti-arrow-autofit-height",
|
|
||||||
"url": "ui-dropdowns.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Footer",
|
|
||||||
"icon": "ti-layout-bottombar",
|
|
||||||
"url": "ui-footer.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "List Groups",
|
|
||||||
"icon": "ti-list-numbers",
|
|
||||||
"url": "ui-list-groups.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Modals",
|
|
||||||
"icon": "ti-layout",
|
|
||||||
"url": "ui-modals.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Navbar",
|
|
||||||
"icon": "ti-layout-navbar",
|
|
||||||
"url": "ui-navbar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Offcanvas",
|
|
||||||
"icon": "ti-layout",
|
|
||||||
"url": "ui-offcanvas.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Pagination & Breadcrumbs",
|
|
||||||
"icon": "ti-chevrons-right",
|
|
||||||
"url": "ui-pagination-breadcrumbs.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Progress",
|
|
||||||
"icon": "ti-adjustments-horizontal",
|
|
||||||
"url": "ui-progress.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Spinners",
|
|
||||||
"icon": "ti-loader-2",
|
|
||||||
"url": "ui-spinners.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tabs & Pills",
|
|
||||||
"icon": "ti-server-2",
|
|
||||||
"url": "ui-tabs-pills.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Toasts",
|
|
||||||
"icon": "ti-box-model",
|
|
||||||
"url": "ui-toasts.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tooltips & Popovers",
|
|
||||||
"icon": "ti-message-2",
|
|
||||||
"url": "ui-tooltips-popovers.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Typography",
|
|
||||||
"icon": "ti-typography",
|
|
||||||
"url": "ui-typography.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Avatar",
|
|
||||||
"icon": "ti-user-circle",
|
|
||||||
"url": "extended-ui-avatar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "BlockUI",
|
|
||||||
"icon": "ti-window-maximize",
|
|
||||||
"url": "extended-ui-blockui.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Drag & Drop",
|
|
||||||
"icon": "ti-drag-drop",
|
|
||||||
"url": "extended-ui-drag-and-drop.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Media Player",
|
|
||||||
"icon": "ti-music",
|
|
||||||
"url": "extended-ui-media-player.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Perfect Scrollbar",
|
|
||||||
"icon": "ti-arrows-move-vertical",
|
|
||||||
"url": "extended-ui-perfect-scrollbar.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Star Ratings",
|
|
||||||
"icon": "ti-star",
|
|
||||||
"url": "extended-ui-star-ratings.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SweetAlert2",
|
|
||||||
"icon": "ti-alert-triangle",
|
|
||||||
"url": "extended-ui-sweetalert2.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Text Divider",
|
|
||||||
"icon": "ti-separator-horizontal",
|
|
||||||
"url": "extended-ui-text-divider.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Timeline Basic",
|
|
||||||
"icon": "ti-arrows-horizontal",
|
|
||||||
"url": "extended-ui-timeline-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Timeline Fullscreen",
|
|
||||||
"icon": "ti-arrows-horizontal",
|
|
||||||
"url": "extended-ui-timeline-fullscreen.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tour",
|
|
||||||
"icon": "ti-brand-telegram",
|
|
||||||
"url": "extended-ui-tour.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Treeview",
|
|
||||||
"icon": "ti-git-fork rotate-180",
|
|
||||||
"url": "extended-ui-treeview.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Miscellaneous",
|
|
||||||
"icon": "ti-sitemap",
|
|
||||||
"url": "extended-ui-misc.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Basic Inputs",
|
|
||||||
"icon": "ti-cursor-text",
|
|
||||||
"url": "forms-basic-inputs.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Input groups",
|
|
||||||
"icon": "ti-arrow-autofit-content",
|
|
||||||
"url": "forms-input-groups.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Custom Options",
|
|
||||||
"icon": "ti-circle",
|
|
||||||
"url": "forms-custom-options.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Editors",
|
|
||||||
"icon": "ti-text-resize",
|
|
||||||
"url": "forms-editors.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "File Upload",
|
|
||||||
"icon": "ti-file-upload",
|
|
||||||
"url": "forms-file-upload.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Pickers",
|
|
||||||
"icon": "ti-edit-circle",
|
|
||||||
"url": "forms-pickers.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Select & Tags",
|
|
||||||
"icon": "ti-select",
|
|
||||||
"url": "forms-selects.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sliders",
|
|
||||||
"icon": "ti-adjustments-alt rotate-90",
|
|
||||||
"url": "forms-sliders.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Switches",
|
|
||||||
"icon": "ti-toggle-right",
|
|
||||||
"url": "forms-switches.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Extras",
|
|
||||||
"icon": "ti-circle-plus",
|
|
||||||
"url": "forms-extras.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Vertical Form",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "form-layouts-vertical.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Horizontal Form",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "form-layouts-horizontal.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Sticky Actions",
|
|
||||||
"icon": "ti-file-text",
|
|
||||||
"url": "form-layouts-sticky.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Numbered Wizard",
|
|
||||||
"icon": "ti-text-wrap-disabled",
|
|
||||||
"url": "form-wizard-numbered.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Icons Wizard",
|
|
||||||
"icon": "ti-text-wrap-disabled",
|
|
||||||
"url": "form-wizard-icons.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Form Validation",
|
|
||||||
"icon": "ti-checkbox",
|
|
||||||
"url": "form-validation.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tables",
|
|
||||||
"icon": "ti-table",
|
|
||||||
"url": "tables-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Datatable Basic",
|
|
||||||
"icon": "ti-layout-grid",
|
|
||||||
"url": "tables-datatables-basic.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Datatable Advanced",
|
|
||||||
"icon": "ti-layout-grid",
|
|
||||||
"url": "tables-datatables-advanced.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Datatable Extensions",
|
|
||||||
"icon": "ti-layout-grid",
|
|
||||||
"url": "tables-datatables-extensions.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Apex Charts",
|
|
||||||
"icon": "ti-chart-line",
|
|
||||||
"url": "charts-apex.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ChartJS",
|
|
||||||
"icon": "ti-chart-bar",
|
|
||||||
"url": "charts-chartjs.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Leaflet Maps",
|
|
||||||
"icon": "ti-map-pin",
|
|
||||||
"url": "maps-leaflet.html"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"files": [
|
|
||||||
{
|
|
||||||
"name": "Class Attendance",
|
|
||||||
"subtitle": "By Tommy Shelby",
|
|
||||||
"src": "img/icons/misc/search-xls.png",
|
|
||||||
"meta": "17kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Passport Image",
|
|
||||||
"subtitle": "By William Budd",
|
|
||||||
"src": "img/icons/misc/search-jpg.png",
|
|
||||||
"meta": "35kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Class Notes",
|
|
||||||
"subtitle": "By Laurel Lance",
|
|
||||||
"src": "img/icons/misc/search-doc.png",
|
|
||||||
"meta": "153kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Receipt",
|
|
||||||
"subtitle": "By Donnie Darko",
|
|
||||||
"src": "img/icons/misc/search-jpg.png",
|
|
||||||
"meta": "25kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Social Guide",
|
|
||||||
"subtitle": "By Ryan Middleton",
|
|
||||||
"src": "img/icons/misc/search-doc.png",
|
|
||||||
"meta": "39kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Expenses",
|
|
||||||
"subtitle": "By Slade Wilson",
|
|
||||||
"src": "img/icons/misc/search-xls.png",
|
|
||||||
"meta": "15kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Documentation",
|
|
||||||
"subtitle": "By Walter White",
|
|
||||||
"src": "img/icons/misc/search-doc.png",
|
|
||||||
"meta": "200kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Avatar",
|
|
||||||
"subtitle": "By Ross Geller",
|
|
||||||
"src": "img/icons/misc/search-jpg.png",
|
|
||||||
"meta": "100kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Data",
|
|
||||||
"subtitle": "By Erik Foreman",
|
|
||||||
"src": "img/icons/misc/search-xls.png",
|
|
||||||
"meta": "5kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Gardening Guide",
|
|
||||||
"subtitle": "By Jerry Seinfeld",
|
|
||||||
"src": "img/icons/misc/search-doc.png",
|
|
||||||
"meta": "25kb",
|
|
||||||
"url": "app-file-manager.html"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"members": [
|
|
||||||
{
|
|
||||||
"name": "John Doe",
|
|
||||||
"subtitle": "Admin",
|
|
||||||
"src": "img/avatars/1.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Micheal Clarke",
|
|
||||||
"subtitle": "Customer",
|
|
||||||
"src": "img/avatars/2.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Melina Gibson",
|
|
||||||
"subtitle": "Staff",
|
|
||||||
"src": "img/avatars/5.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Anna Strong",
|
|
||||||
"subtitle": "Staff",
|
|
||||||
"src": "img/avatars/7.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Stephanie Gould",
|
|
||||||
"subtitle": "Customer",
|
|
||||||
"src": "img/avatars/3.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "David Budd",
|
|
||||||
"subtitle": "Admin",
|
|
||||||
"src": "img/avatars/10.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mark Shepiro",
|
|
||||||
"subtitle": "Admin",
|
|
||||||
"src": "img/avatars/12.png",
|
|
||||||
"url": "app-user-view-account.html"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,452 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"year": "1961",
|
|
||||||
"value": "West Side Story",
|
|
||||||
"tokens": [
|
|
||||||
"West",
|
|
||||||
"Side",
|
|
||||||
"Story"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1962",
|
|
||||||
"value": "Lawrence of Arabia",
|
|
||||||
"tokens": [
|
|
||||||
"Lawrence",
|
|
||||||
"of",
|
|
||||||
"Arabia"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1963",
|
|
||||||
"value": "Tom Jones",
|
|
||||||
"tokens": [
|
|
||||||
"Tom",
|
|
||||||
"Jones"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1964",
|
|
||||||
"value": "My Fair Lady",
|
|
||||||
"tokens": [
|
|
||||||
"My",
|
|
||||||
"Fair",
|
|
||||||
"Lady"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1965",
|
|
||||||
"value": "The Sound of Music",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Sound",
|
|
||||||
"of",
|
|
||||||
"Music"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1966",
|
|
||||||
"value": "A Man for All Seasons",
|
|
||||||
"tokens": [
|
|
||||||
"A",
|
|
||||||
"Man",
|
|
||||||
"for",
|
|
||||||
"All",
|
|
||||||
"Seasons"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1967",
|
|
||||||
"value": "In the Heat of the Night",
|
|
||||||
"tokens": [
|
|
||||||
"In",
|
|
||||||
"the",
|
|
||||||
"Heat",
|
|
||||||
"of",
|
|
||||||
"the",
|
|
||||||
"Night"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1968",
|
|
||||||
"value": "Oliver!",
|
|
||||||
"tokens": [
|
|
||||||
"Oliver!"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1969",
|
|
||||||
"value": "Midnight Cowboy",
|
|
||||||
"tokens": [
|
|
||||||
"Midnight",
|
|
||||||
"Cowboy"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1970",
|
|
||||||
"value": "Patton",
|
|
||||||
"tokens": [
|
|
||||||
"Patton"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1971",
|
|
||||||
"value": "The French Connection",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"French",
|
|
||||||
"Connection"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1972",
|
|
||||||
"value": "The Godfather",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Godfather"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1973",
|
|
||||||
"value": "The Sting",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Sting"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1974",
|
|
||||||
"value": "The Godfather Part II",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Godfather",
|
|
||||||
"Part",
|
|
||||||
"II"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1975",
|
|
||||||
"value": "One Flew over the Cuckoo's Nest",
|
|
||||||
"tokens": [
|
|
||||||
"One",
|
|
||||||
"Flew",
|
|
||||||
"over",
|
|
||||||
"the",
|
|
||||||
"Cuckoo's",
|
|
||||||
"Nest"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1976",
|
|
||||||
"value": "Rocky",
|
|
||||||
"tokens": [
|
|
||||||
"Rocky"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1977",
|
|
||||||
"value": "Annie Hall",
|
|
||||||
"tokens": [
|
|
||||||
"Annie",
|
|
||||||
"Hall"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1978",
|
|
||||||
"value": "The Deer Hunter",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Deer",
|
|
||||||
"Hunter"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1979",
|
|
||||||
"value": "Kramer vs. Kramer",
|
|
||||||
"tokens": [
|
|
||||||
"Kramer",
|
|
||||||
"vs.",
|
|
||||||
"Kramer"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1980",
|
|
||||||
"value": "Ordinary People",
|
|
||||||
"tokens": [
|
|
||||||
"Ordinary",
|
|
||||||
"People"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1981",
|
|
||||||
"value": "Chariots of Fire",
|
|
||||||
"tokens": [
|
|
||||||
"Chariots",
|
|
||||||
"of",
|
|
||||||
"Fire"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1982",
|
|
||||||
"value": "Gandhi",
|
|
||||||
"tokens": [
|
|
||||||
"Gandhi"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1983",
|
|
||||||
"value": "Terms of Endearment",
|
|
||||||
"tokens": [
|
|
||||||
"Terms",
|
|
||||||
"of",
|
|
||||||
"Endearment"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1984",
|
|
||||||
"value": "Amadeus",
|
|
||||||
"tokens": [
|
|
||||||
"Amadeus"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1985",
|
|
||||||
"value": "Out of Africa",
|
|
||||||
"tokens": [
|
|
||||||
"Out",
|
|
||||||
"of",
|
|
||||||
"Africa"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1986",
|
|
||||||
"value": "Platoon",
|
|
||||||
"tokens": [
|
|
||||||
"Platoon"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1987",
|
|
||||||
"value": "The Last Emperor",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Last",
|
|
||||||
"Emperor"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1988",
|
|
||||||
"value": "Rain Man",
|
|
||||||
"tokens": [
|
|
||||||
"Rain",
|
|
||||||
"Man"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1989",
|
|
||||||
"value": "Driving Miss Daisy",
|
|
||||||
"tokens": [
|
|
||||||
"Driving",
|
|
||||||
"Miss",
|
|
||||||
"Daisy"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1990",
|
|
||||||
"value": "Dances With Wolves",
|
|
||||||
"tokens": [
|
|
||||||
"Dances",
|
|
||||||
"With",
|
|
||||||
"Wolves"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1991",
|
|
||||||
"value": "The Silence of the Lambs",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Silence",
|
|
||||||
"of",
|
|
||||||
"the",
|
|
||||||
"Lambs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1992",
|
|
||||||
"value": "Unforgiven",
|
|
||||||
"tokens": [
|
|
||||||
"Unforgiven"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1993",
|
|
||||||
"value": "Schindler’s List",
|
|
||||||
"tokens": [
|
|
||||||
"Schindler’s",
|
|
||||||
"List"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1994",
|
|
||||||
"value": "Forrest Gump",
|
|
||||||
"tokens": [
|
|
||||||
"Forrest",
|
|
||||||
"Gump"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1995",
|
|
||||||
"value": "Braveheart",
|
|
||||||
"tokens": [
|
|
||||||
"Braveheart"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1996",
|
|
||||||
"value": "The English Patient",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"English",
|
|
||||||
"Patient"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1997",
|
|
||||||
"value": "Titanic",
|
|
||||||
"tokens": [
|
|
||||||
"Titanic"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1998",
|
|
||||||
"value": "Shakespeare in Love",
|
|
||||||
"tokens": [
|
|
||||||
"Shakespeare",
|
|
||||||
"in",
|
|
||||||
"Love"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "1999",
|
|
||||||
"value": "American Beauty",
|
|
||||||
"tokens": [
|
|
||||||
"American",
|
|
||||||
"Beauty"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2000",
|
|
||||||
"value": "Gladiator",
|
|
||||||
"tokens": [
|
|
||||||
"Gladiator"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2001",
|
|
||||||
"value": "A Beautiful Mind",
|
|
||||||
"tokens": [
|
|
||||||
"A",
|
|
||||||
"Beautiful",
|
|
||||||
"Mind"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2002",
|
|
||||||
"value": "Chicago",
|
|
||||||
"tokens": [
|
|
||||||
"Chicago"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2003",
|
|
||||||
"value": "The Lord of the Rings: The Return of the King",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Lord",
|
|
||||||
"of",
|
|
||||||
"the",
|
|
||||||
"Rings:",
|
|
||||||
"The",
|
|
||||||
"Return",
|
|
||||||
"of",
|
|
||||||
"the",
|
|
||||||
"King"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2004",
|
|
||||||
"value": "Million Dollar Baby",
|
|
||||||
"tokens": [
|
|
||||||
"Million",
|
|
||||||
"Dollar",
|
|
||||||
"Baby"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2005",
|
|
||||||
"value": "Crash",
|
|
||||||
"tokens": [
|
|
||||||
"Crash"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2006",
|
|
||||||
"value": "The Departed",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Departed"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2007",
|
|
||||||
"value": "No Country for Old Men",
|
|
||||||
"tokens": [
|
|
||||||
"No",
|
|
||||||
"Country",
|
|
||||||
"for",
|
|
||||||
"Old",
|
|
||||||
"Men"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2008",
|
|
||||||
"value": "Slumdog Millionaire",
|
|
||||||
"tokens": [
|
|
||||||
"Slumdog",
|
|
||||||
"Millionaire"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2009",
|
|
||||||
"value": "The Hurt Locker",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Hurt",
|
|
||||||
"Locker"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2010",
|
|
||||||
"value": "The King's Speech",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"King's",
|
|
||||||
"Speech"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2011",
|
|
||||||
"value": "The Artist",
|
|
||||||
"tokens": [
|
|
||||||
"The",
|
|
||||||
"Artist"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"year": "2012",
|
|
||||||
"value": "Argo",
|
|
||||||
"tokens": [
|
|
||||||
"Argo"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@ -1,52 +0,0 @@
|
|||||||
[
|
|
||||||
"Alabama",
|
|
||||||
"Alaska",
|
|
||||||
"Arizona",
|
|
||||||
"Arkansas",
|
|
||||||
"California",
|
|
||||||
"Colorado",
|
|
||||||
"Connecticut",
|
|
||||||
"Delaware",
|
|
||||||
"Florida",
|
|
||||||
"Georgia",
|
|
||||||
"Hawaii",
|
|
||||||
"Idaho",
|
|
||||||
"Illinois",
|
|
||||||
"Indiana",
|
|
||||||
"Iowa",
|
|
||||||
"Kansas",
|
|
||||||
"Kentucky",
|
|
||||||
"Louisiana",
|
|
||||||
"Maine",
|
|
||||||
"Maryland",
|
|
||||||
"Massachusetts",
|
|
||||||
"Michigan",
|
|
||||||
"Minnesota",
|
|
||||||
"Mississippi",
|
|
||||||
"Missouri",
|
|
||||||
"Montana",
|
|
||||||
"Nebraska",
|
|
||||||
"Nevada",
|
|
||||||
"New Hampshire",
|
|
||||||
"New Jersey",
|
|
||||||
"New Mexico",
|
|
||||||
"New York",
|
|
||||||
"North Carolina",
|
|
||||||
"North Dakota",
|
|
||||||
"Ohio",
|
|
||||||
"Oklahoma",
|
|
||||||
"Oregon",
|
|
||||||
"Pennsylvania",
|
|
||||||
"Rhode Island",
|
|
||||||
"South Carolina",
|
|
||||||
"South Dakota",
|
|
||||||
"Tennessee",
|
|
||||||
"Texas",
|
|
||||||
"Utah",
|
|
||||||
"Vermont",
|
|
||||||
"Virginia",
|
|
||||||
"Washington",
|
|
||||||
"West Virginia",
|
|
||||||
"Wisconsin",
|
|
||||||
"Wyoming"
|
|
||||||
]
|
|
||||||
@ -1,554 +0,0 @@
|
|||||||
{
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"full_name": "Galen Slixby",
|
|
||||||
"role": "Editor",
|
|
||||||
"username": "gslixby0",
|
|
||||||
"email": "gslixby0@abc.net.au",
|
|
||||||
"current_plan": "Enterprise",
|
|
||||||
"billing": "Manual - Credit Card",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 2,
|
|
||||||
"full_name": "Halsey Redmore",
|
|
||||||
"role": "Author",
|
|
||||||
"username": "hredmore1",
|
|
||||||
"email": "hredmore1@imgur.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "10.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 3,
|
|
||||||
"full_name": "Marjory Sicely",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "msicely2",
|
|
||||||
"email": "msicely2@who.int",
|
|
||||||
"current_plan": "Enterprise",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "1.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 4,
|
|
||||||
"full_name": "Cyrill Risby",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "crisby3",
|
|
||||||
"email": "crisby3@wordpress.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Credit Card",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": "9.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 5,
|
|
||||||
"full_name": "Maggy Hurran",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "mhurran4",
|
|
||||||
"email": "mhurran4@yahoo.co.jp",
|
|
||||||
"current_plan": "Enterprise",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "10.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 6,
|
|
||||||
"full_name": "Silvain Halstead",
|
|
||||||
"role": "Author",
|
|
||||||
"username": "shalstead5",
|
|
||||||
"email": "shalstead5@shinystat.com",
|
|
||||||
"current_plan": "Company",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 7,
|
|
||||||
"full_name": "Breena Gallemore",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "bgallemore6",
|
|
||||||
"email": "bgallemore6@boston.com",
|
|
||||||
"current_plan": "Company",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 8,
|
|
||||||
"full_name": "Kathryne Liger",
|
|
||||||
"role": "Author",
|
|
||||||
"username": "kliger7",
|
|
||||||
"email": "kliger7@vinaora.com",
|
|
||||||
"current_plan": "Enterprise",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "9.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 9,
|
|
||||||
"full_name": "Franz Scotfurth",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "fscotfurth8",
|
|
||||||
"email": "fscotfurth8@dailymotion.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "2.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 10,
|
|
||||||
"full_name": "Jillene Bellany",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "jbellany9",
|
|
||||||
"email": "jbellany9@kickstarter.com",
|
|
||||||
"current_plan": "Company",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": "9.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 11,
|
|
||||||
"full_name": "Jonah Wharlton",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "jwharltona",
|
|
||||||
"email": "jwharltona@oakley.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": "4.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 12,
|
|
||||||
"full_name": "Seth Hallam",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "shallamb",
|
|
||||||
"email": "shallamb@hugedomains.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Credit Card",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "5.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 13,
|
|
||||||
"full_name": "Yoko Pottie",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "ypottiec",
|
|
||||||
"email": "ypottiec@privacy.gov.au",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": "7.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 14,
|
|
||||||
"full_name": "Maximilianus Krause",
|
|
||||||
"role": "Author",
|
|
||||||
"username": "mkraused",
|
|
||||||
"email": "mkraused@stanford.edu",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "9.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 15,
|
|
||||||
"full_name": "Zsazsa McCleverty",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "zmcclevertye",
|
|
||||||
"email": "zmcclevertye@soundcloud.com",
|
|
||||||
"current_plan": "Enterprise",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "2.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 16,
|
|
||||||
"full_name": "Bentlee Emblin",
|
|
||||||
"role": "Author",
|
|
||||||
"username": "bemblinf",
|
|
||||||
"email": "bemblinf@wired.com",
|
|
||||||
"current_plan": "Company",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "6.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 17,
|
|
||||||
"full_name": "Brockie Myles",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "bmylesg",
|
|
||||||
"email": "bmylesg@amazon.com",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 18,
|
|
||||||
"full_name": "Bertha Biner",
|
|
||||||
"role": "Editor",
|
|
||||||
"username": "bbinerh",
|
|
||||||
"email": "bbinerh@mozilla.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "7.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 19,
|
|
||||||
"full_name": "Travus Bruntjen",
|
|
||||||
"role": "Admin",
|
|
||||||
"username": "tbruntjeni",
|
|
||||||
"email": "tbruntjeni@sitemeter.com",
|
|
||||||
"current_plan": "Enterprise",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 20,
|
|
||||||
"full_name": "Wesley Burland",
|
|
||||||
"role": "Editor",
|
|
||||||
"username": "wburlandj",
|
|
||||||
"email": "wburlandj@uiuc.edu",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": "6.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 21,
|
|
||||||
"full_name": "Stu Delamaine",
|
|
||||||
"role": "Author",
|
|
||||||
"username": "sdelamainek",
|
|
||||||
"email": "sdelamainek@who.int",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "1.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 22,
|
|
||||||
"full_name": "Jameson Lyster",
|
|
||||||
"role": "Editor",
|
|
||||||
"username": "jlysterl",
|
|
||||||
"email": "jlysterl@guardian.co.uk",
|
|
||||||
"current_plan": "Company",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": "8.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 23,
|
|
||||||
"full_name": "Kare Skitterel",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "kskitterelm",
|
|
||||||
"email": "kskitterelm@washingtonpost.com",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "3.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 24,
|
|
||||||
"full_name": "Cleavland Hatherleigh",
|
|
||||||
"role": "Admin",
|
|
||||||
"username": "chatherleighn",
|
|
||||||
"email": "chatherleighn@washington.edu",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "2.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 25,
|
|
||||||
"full_name": "Adeline Micco",
|
|
||||||
"role": "Admin",
|
|
||||||
"username": "amiccoo",
|
|
||||||
"email": "amiccoo@whitehouse.gov",
|
|
||||||
"current_plan": "Enterprise",
|
|
||||||
"billing": "Manual - Credit Card",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 26,
|
|
||||||
"full_name": "Hugh Hasson",
|
|
||||||
"role": "Admin",
|
|
||||||
"username": "hhassonp",
|
|
||||||
"email": "hhassonp@bizjournals.com",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": "4.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 27,
|
|
||||||
"full_name": "Germain Jacombs",
|
|
||||||
"role": "Editor",
|
|
||||||
"username": "gjacombsq",
|
|
||||||
"email": "gjacombsq@jigsy.com",
|
|
||||||
"current_plan": "Enterprise",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "10.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 28,
|
|
||||||
"full_name": "Bree Kilday",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "bkildayr",
|
|
||||||
"email": "bkildayr@mashable.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Credit Card",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 29,
|
|
||||||
"full_name": "Candice Pinyon",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "cpinyons",
|
|
||||||
"email": "cpinyons@behance.net",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "7.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 30,
|
|
||||||
"full_name": "Isabel Mallindine",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "imallindinet",
|
|
||||||
"email": "imallindinet@shinystat.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Credit Card",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 31,
|
|
||||||
"full_name": "Gwendolyn Meineken",
|
|
||||||
"role": "Admin",
|
|
||||||
"username": "gmeinekenu",
|
|
||||||
"email": "gmeinekenu@hc360.com",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "1.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 32,
|
|
||||||
"full_name": "Rafaellle Snowball",
|
|
||||||
"role": "Editor",
|
|
||||||
"username": "rsnowballv",
|
|
||||||
"email": "rsnowballv@indiegogo.com",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "5.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 33,
|
|
||||||
"full_name": "Rochette Emer",
|
|
||||||
"role": "Admin",
|
|
||||||
"username": "remerw",
|
|
||||||
"email": "remerw@blogtalkradio.com",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "8.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 34,
|
|
||||||
"full_name": "Ophelie Fibbens",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "ofibbensx",
|
|
||||||
"email": "ofibbensx@booking.com",
|
|
||||||
"current_plan": "Company",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "4.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 35,
|
|
||||||
"full_name": "Stephen MacGilfoyle",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "smacgilfoyley",
|
|
||||||
"email": "smacgilfoyley@bigcartel.com",
|
|
||||||
"current_plan": "Company",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 36,
|
|
||||||
"full_name": "Bradan Rosebotham",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "brosebothamz",
|
|
||||||
"email": "brosebothamz@tripadvisor.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 37,
|
|
||||||
"full_name": "Skip Hebblethwaite",
|
|
||||||
"role": "Admin",
|
|
||||||
"username": "shebblethwaite10",
|
|
||||||
"email": "shebblethwaite10@arizona.edu",
|
|
||||||
"current_plan": "Company",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": "9.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 38,
|
|
||||||
"full_name": "Moritz Piccard",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "mpiccard11",
|
|
||||||
"email": "mpiccard11@vimeo.com",
|
|
||||||
"current_plan": "Enterprise",
|
|
||||||
"billing": "Manual - Credit Card",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": "1.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 39,
|
|
||||||
"full_name": "Tyne Widmore",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "twidmore12",
|
|
||||||
"email": "twidmore12@bravesites.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 40,
|
|
||||||
"full_name": "Florenza Desporte",
|
|
||||||
"role": "Author",
|
|
||||||
"username": "fdesporte13",
|
|
||||||
"email": "fdesporte13@omniture.com",
|
|
||||||
"current_plan": "Company",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "6.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 41,
|
|
||||||
"full_name": "Edwina Baldetti",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "ebaldetti14",
|
|
||||||
"email": "ebaldetti14@theguardian.com",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Credit Card",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 42,
|
|
||||||
"full_name": "Benedetto Rossiter",
|
|
||||||
"role": "Editor",
|
|
||||||
"username": "brossiter15",
|
|
||||||
"email": "brossiter15@craigslist.org",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 43,
|
|
||||||
"full_name": "Micaela McNirlan",
|
|
||||||
"role": "Admin",
|
|
||||||
"username": "mmcnirlan16",
|
|
||||||
"email": "mmcnirlan16@hc360.com",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Manual - Credit Card",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 44,
|
|
||||||
"full_name": "Vladamir Koschek",
|
|
||||||
"role": "Author",
|
|
||||||
"username": "vkoschek17",
|
|
||||||
"email": "vkoschek17@abc.net.au",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 45,
|
|
||||||
"full_name": "Corrie Perot",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "cperot18",
|
|
||||||
"email": "cperot18@goo.ne.jp",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": "3.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 46,
|
|
||||||
"full_name": "Saunder Offner",
|
|
||||||
"role": "Maintainer",
|
|
||||||
"username": "soffner19",
|
|
||||||
"email": "soffner19@mac.com",
|
|
||||||
"current_plan": "Enterprise",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 47,
|
|
||||||
"full_name": "Karena Courtliff",
|
|
||||||
"role": "Admin",
|
|
||||||
"username": "kcourtliff1a",
|
|
||||||
"email": "kcourtliff1a@bbc.co.uk",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "1.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 48,
|
|
||||||
"full_name": "Onfre Wind",
|
|
||||||
"role": "Admin",
|
|
||||||
"username": "owind1b",
|
|
||||||
"email": "owind1b@yandex.ru",
|
|
||||||
"current_plan": "Basic",
|
|
||||||
"billing": "Manual - Paypal",
|
|
||||||
"status": 1,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 49,
|
|
||||||
"full_name": "Paulie Durber",
|
|
||||||
"role": "Subscriber",
|
|
||||||
"username": "pdurber1c",
|
|
||||||
"email": "pdurber1c@gov.uk",
|
|
||||||
"current_plan": "Team",
|
|
||||||
"billing": "Manual - Cash",
|
|
||||||
"status": 3,
|
|
||||||
"avatar": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 50,
|
|
||||||
"full_name": "Beverlie Krabbe",
|
|
||||||
"role": "Editor",
|
|
||||||
"username": "bkrabbe1d",
|
|
||||||
"email": "bkrabbe1d@home.pl",
|
|
||||||
"current_plan": "Company",
|
|
||||||
"billing": "Auto Debit",
|
|
||||||
"status": 2,
|
|
||||||
"avatar": "9.png"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,140 +0,0 @@
|
|||||||
{
|
|
||||||
"data": [
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"project_img": "xd-label.png",
|
|
||||||
"project_leader": "Fred",
|
|
||||||
"project_name": "App Design",
|
|
||||||
"team": [
|
|
||||||
"1.png",
|
|
||||||
"3.png",
|
|
||||||
"4.png"
|
|
||||||
],
|
|
||||||
"date": "09 Feb 2021",
|
|
||||||
"status": "89%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 2,
|
|
||||||
"project_img": "react-label.png",
|
|
||||||
"project_leader": "Georgie",
|
|
||||||
"project_name": "Create Website",
|
|
||||||
"team": [
|
|
||||||
"2.png",
|
|
||||||
"6.png",
|
|
||||||
"5.png",
|
|
||||||
"3.png"
|
|
||||||
],
|
|
||||||
"date": "20 Mar 2021",
|
|
||||||
"status": "72%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 3,
|
|
||||||
"project_img": "social-label.png",
|
|
||||||
"project_leader": "Owen",
|
|
||||||
"project_name": "Social Banners",
|
|
||||||
"team": [
|
|
||||||
"11.png",
|
|
||||||
"10.png"
|
|
||||||
],
|
|
||||||
"date": "03 Jan 2021",
|
|
||||||
"status": "45%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 4,
|
|
||||||
"project_img": "sketch-label.png",
|
|
||||||
"project_leader": "Keith",
|
|
||||||
"project_name": "Logo Designs",
|
|
||||||
"team": [
|
|
||||||
"5.png",
|
|
||||||
"7.png",
|
|
||||||
"12.png",
|
|
||||||
"4.png"
|
|
||||||
],
|
|
||||||
"date": "12 Aug 2021",
|
|
||||||
"status": "92%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 5,
|
|
||||||
"project_img": "figma-label.png",
|
|
||||||
"project_leader": "Harmonia",
|
|
||||||
"project_name": "Figma Dashboards",
|
|
||||||
"team": [
|
|
||||||
"9.png",
|
|
||||||
"2.png",
|
|
||||||
"4.png"
|
|
||||||
],
|
|
||||||
"date": "08 Apr 2021",
|
|
||||||
"status": "25%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 6,
|
|
||||||
"project_img": "vue-label.png",
|
|
||||||
"project_leader": "Genevra",
|
|
||||||
"project_name": "Admin Template",
|
|
||||||
"team": [
|
|
||||||
"11.png",
|
|
||||||
"13.png",
|
|
||||||
"7.png",
|
|
||||||
"6.png"
|
|
||||||
],
|
|
||||||
"date": "06 Oct 2021",
|
|
||||||
"status": "100%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 7,
|
|
||||||
"project_img": "",
|
|
||||||
"project_leader": "Eileen",
|
|
||||||
"project_name": "Website SEO",
|
|
||||||
"team": [
|
|
||||||
"10.png",
|
|
||||||
"3.png",
|
|
||||||
"2.png",
|
|
||||||
"8.png"
|
|
||||||
],
|
|
||||||
"date": "10 May 2021",
|
|
||||||
"status": "38%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 8,
|
|
||||||
"project_img": "xd-label.png",
|
|
||||||
"project_leader": "Richardo",
|
|
||||||
"project_name": "Angular APIs",
|
|
||||||
"team": [
|
|
||||||
"4.png",
|
|
||||||
"13.png",
|
|
||||||
"10.png",
|
|
||||||
"3.png"
|
|
||||||
],
|
|
||||||
"date": "17 June 2021",
|
|
||||||
"status": "77%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 9,
|
|
||||||
"project_img": "html-label.png",
|
|
||||||
"project_leader": "Allyson",
|
|
||||||
"project_name": "Crypto Admin",
|
|
||||||
"team": [
|
|
||||||
"7.png",
|
|
||||||
"3.png",
|
|
||||||
"7.png",
|
|
||||||
"2.png"
|
|
||||||
],
|
|
||||||
"date": "29 Sept 2021",
|
|
||||||
"status": "36%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 10,
|
|
||||||
"project_img": "sketch-label.png",
|
|
||||||
"project_leader": "Merline",
|
|
||||||
"project_name": "IOS App Design",
|
|
||||||
"team": [
|
|
||||||
"2.png",
|
|
||||||
"8.png",
|
|
||||||
"5.png",
|
|
||||||
"1.png"
|
|
||||||
],
|
|
||||||
"date": "19 Apr 2021",
|
|
||||||
"status": "56%"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user