mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Eliminados ajustes de sistemas. Ahora estan en variables del ERP
This commit is contained in:
@ -16,17 +16,15 @@ $routes->get('/', 'Home::index', ['as' => 'home']);
|
||||
$routes->get('lang/{locale}', 'Language::index');
|
||||
$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->get('', 'Actividad::index', ['as' => 'activityList']);
|
||||
$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;
|
||||
|
||||
use App\Models\NotificationModel;
|
||||
use App\Models\SettingsModel;
|
||||
use CodeIgniter\Controller;
|
||||
use CodeIgniter\HTTP\CLIRequest;
|
||||
use CodeIgniter\HTTP\IncomingRequest;
|
||||
|
||||
@ -17,10 +17,10 @@ namespace App\Controllers;
|
||||
*/
|
||||
use CodeIgniter\Controller;
|
||||
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
|
||||
*/
|
||||
public $viewData;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* JJO: Variable para indicar si el controlador hace soft_delete o no
|
||||
@ -139,14 +139,15 @@ abstract class GoBaseController extends Controller {
|
||||
*
|
||||
* @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 = [];
|
||||
|
||||
/**
|
||||
* 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
|
||||
parent::initController($request, $response, $logger);
|
||||
|
||||
@ -155,9 +156,9 @@ abstract class GoBaseController extends Controller {
|
||||
//--------------------------------------------------------------------
|
||||
// E.g.:
|
||||
$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);
|
||||
}
|
||||
|
||||
@ -171,7 +172,7 @@ abstract class GoBaseController extends Controller {
|
||||
if (empty(static::$controllerSlug)) {
|
||||
$reflect = new \ReflectionClass($this);
|
||||
$className = $reflect->getShortName();
|
||||
$this->viewData['currentModule'] = slugify(convertToSnakeCase(str_replace('Controller','',$className)));
|
||||
$this->viewData['currentModule'] = slugify(convertToSnakeCase(str_replace('Controller', '', $className)));
|
||||
|
||||
} else {
|
||||
$this->viewData['currentModule'] = strtolower(static::$controllerSlug);
|
||||
@ -185,43 +186,31 @@ abstract class GoBaseController extends Controller {
|
||||
$this->model = &$this->primaryModel;
|
||||
}
|
||||
|
||||
// Preload any models, libraries, etc, here.
|
||||
// Preload any models, libraries, etc, here.
|
||||
|
||||
|
||||
|
||||
// Language Validate
|
||||
$language = \Config\Services::language();
|
||||
$language->setLocale($this->session->lang);
|
||||
|
||||
// Set TimeZone
|
||||
if(empty($this->session->get('settings'))){
|
||||
$settingsModel = new SettingsModel();
|
||||
$settings = $settingsModel->select('default_timezone')->first()??[];
|
||||
date_default_timezone_set($this->$settings['default_timezone']??'America/Sao_Paulo');
|
||||
}else{
|
||||
date_default_timezone_set($this->session->get('settings')['default_timezone']??'America/Sao_Paulo');
|
||||
if (empty($this->session->get('settings'))) {
|
||||
$time_zone = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('default_timezone')->value;
|
||||
date_default_timezone_set($time_zone ?? 'Europe/Madrid');
|
||||
} else {
|
||||
date_default_timezone_set($this->session->get('settings')['default_timezone'] ?? 'Europe/Madrid');
|
||||
}
|
||||
|
||||
// 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();
|
||||
|
||||
}
|
||||
|
||||
public function index() {
|
||||
public function index()
|
||||
{
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@ -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'
|
||||
$viewFilePath = static::$viewPath . (empty($this->currentView) ? 'view' . ucfirst(static::$singularObjectNameCc) . 'List' : $this->currentView);
|
||||
|
||||
|
||||
echo view($viewFilePath, $this->viewData);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -248,12 +237,13 @@ abstract class GoBaseController extends Controller {
|
||||
* @param null $objId
|
||||
* @return string
|
||||
*/
|
||||
protected function displayForm($forMethod, $objId = null) {
|
||||
protected function displayForm($forMethod, $objId = null)
|
||||
{
|
||||
|
||||
helper('form');
|
||||
$this->viewData['usingSelect2'] = true;
|
||||
|
||||
$validation = \Config\Services::validation();
|
||||
|
||||
$validation = \Config\Services::validation();
|
||||
|
||||
$action = str_replace(static::class . '::', '', $forMethod);
|
||||
$actionSuffix = ' ';
|
||||
@ -270,13 +260,13 @@ abstract class GoBaseController extends Controller {
|
||||
}
|
||||
|
||||
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['validation'] = $validation;
|
||||
|
||||
$viewFilePath = static::$viewPath . 'view' . ucfirst(static::$singularObjectNameCc) . 'Form';
|
||||
@ -284,7 +274,8 @@ abstract class GoBaseController extends Controller {
|
||||
return view($viewFilePath, $this->viewData);
|
||||
}
|
||||
|
||||
protected function redirect2listView($flashDataKey = null, $flashDataValue = null) {
|
||||
protected function redirect2listView($flashDataKey = null, $flashDataValue = null)
|
||||
{
|
||||
|
||||
if (!empty($this->indexRoute)) {
|
||||
$uri = base_url(route_to($this->indexRoute));
|
||||
@ -304,9 +295,9 @@ abstract class GoBaseController extends Controller {
|
||||
} else {
|
||||
$getHandlingRoutes = $routes->getRoutes('get');
|
||||
|
||||
$indexMethod = array_search('\\App\\Controllers\\'.$className.'::index', $getHandlingRoutes);
|
||||
$indexMethod = array_search('\\App\\Controllers\\' . $className . '::index', $getHandlingRoutes);
|
||||
if ($indexMethod) {
|
||||
$uri = route_to('App\\Controllers\\'.$className.'::index');
|
||||
$uri = route_to('App\\Controllers\\' . $className . '::index');
|
||||
} else {
|
||||
$uri = base_url(static::$controllerSlug);
|
||||
}
|
||||
@ -315,7 +306,7 @@ abstract class GoBaseController extends Controller {
|
||||
$uri = base_url($className);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($flashDataKey != null && $flashDataValue != null) {
|
||||
return redirect()->to($uri)->with($flashDataKey, $flashDataValue);
|
||||
} 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_numeric($requestedId)) :
|
||||
if (is_string($requestedId)):
|
||||
if (is_numeric($requestedId)):
|
||||
$id = filter_var($requestedId, FILTER_SANITIZE_NUMBER_INT);
|
||||
else:
|
||||
$onlyAlphaNumeric = true;
|
||||
@ -338,64 +330,66 @@ abstract class GoBaseController extends Controller {
|
||||
$id = intval($requestedId);
|
||||
endif;
|
||||
|
||||
if (empty($id) || $id === 0) :
|
||||
if (empty($id) || $id === 0):
|
||||
$error = 'Invalid identifier provided to delete the object.';
|
||||
endif;
|
||||
|
||||
$rawResult = null;
|
||||
|
||||
if (!isset($error)) :
|
||||
if (!isset($error)):
|
||||
try {
|
||||
if ($deletePermanently && !$this->soft_delete) :
|
||||
if (is_numeric($id)) :
|
||||
$rawResult = $this->primaryModel->delete($id);
|
||||
else:
|
||||
$rawResult = $this->primaryModel->where($this->primaryModel->getPrimaryKeyName(), $id)->delete();
|
||||
endif;
|
||||
elseif ($this->soft_delete):
|
||||
$datetime = (new \CodeIgniter\I18n\Time("now"));
|
||||
$rawResult = $this->primaryModel->where('id',$id)
|
||||
->set(['deleted_at' => $datetime->format('Y-m-d H:i:s'),
|
||||
'is_deleted' => $this->delete_flag])
|
||||
->update();
|
||||
if ($deletePermanently && !$this->soft_delete):
|
||||
if (is_numeric($id)):
|
||||
$rawResult = $this->primaryModel->delete($id);
|
||||
else:
|
||||
$rawResult = $this->primaryModel->where($this->primaryModel->getPrimaryKeyName(), $id)->delete();
|
||||
endif;
|
||||
elseif ($this->soft_delete):
|
||||
$datetime = (new \CodeIgniter\I18n\Time("now"));
|
||||
$rawResult = $this->primaryModel->where('id', $id)
|
||||
->set([
|
||||
'deleted_at' => $datetime->format('Y-m-d H:i:s'),
|
||||
'is_deleted' => $this->delete_flag
|
||||
])
|
||||
->update();
|
||||
|
||||
else:
|
||||
$rawResult = $this->primaryModel->update($id, ['deleted' => true]);
|
||||
endif;
|
||||
else:
|
||||
$rawResult = $this->primaryModel->update($id, ['deleted' => true]);
|
||||
endif;
|
||||
} 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;
|
||||
|
||||
$ar = $this->primaryModel->db->affectedRows();
|
||||
|
||||
|
||||
try {
|
||||
$dbError = $this->primaryModel->db->error();
|
||||
} catch (\Exception $e2) {
|
||||
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'])) {
|
||||
log_message('error', $dbError['code'].' '.$dbError['message']);
|
||||
log_message('error', $dbError['code'] . ' ' . $dbError['message']);
|
||||
} 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;
|
||||
|
||||
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.';
|
||||
$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);
|
||||
return $this->redirect2listView($fdKey, str_replace("'", '', $errorMessage));
|
||||
else:
|
||||
$message = lang('Basic.global.deleteSuccess', [$nameOfDeletedObject]); // 'The ' . static::$singularObjectName . ' was successfully deleted.';
|
||||
$fdKey = isset($this->viewData['usingSweetAlert'] ) && $this->viewData['usingSweetAlert'] ? 'sweet-success' : 'successMessage';
|
||||
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");
|
||||
$fdKey = isset($this->viewData['usingSweetAlert']) && $this->viewData['usingSweetAlert'] ? 'sweet-success' : 'successMessage';
|
||||
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");
|
||||
endif;
|
||||
$message = str_replace("'", "\'", $message);
|
||||
return $this->redirect2listView($fdKey, $message);
|
||||
@ -403,7 +397,7 @@ abstract class GoBaseController extends Controller {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Convenience method to validate form submission
|
||||
* @return bool
|
||||
*/
|
||||
@ -416,14 +410,15 @@ abstract class GoBaseController extends Controller {
|
||||
return true;
|
||||
}
|
||||
|
||||
$validationErrorMessages = $this->model->validationMessages ?? $this->formValidationErrorMessagess ?? null;;
|
||||
$validationErrorMessages = $this->model->validationMessages ?? $this->formValidationErrorMessagess ?? null;
|
||||
;
|
||||
|
||||
if ($validationErrorMessages != null) {
|
||||
$valid = $this->validate($validationRules, $validationErrorMessages);
|
||||
} else {
|
||||
$valid = $this->validate($validationRules);
|
||||
}
|
||||
|
||||
|
||||
$this->validationErrors = $valid ? '' : $this->validator->getErrors();
|
||||
|
||||
/*
|
||||
@ -443,7 +438,8 @@ abstract class GoBaseController extends Controller {
|
||||
* @param array|null $postData
|
||||
* @return array
|
||||
*/
|
||||
protected function sanitized(array $postData = null, bool $nullIfEmpty = false) {
|
||||
protected function sanitized(array $postData = null, bool $nullIfEmpty = false)
|
||||
{
|
||||
if ($postData == null) {
|
||||
$postData = $this->request->getPost();
|
||||
}
|
||||
@ -462,29 +458,31 @@ abstract class GoBaseController extends Controller {
|
||||
* Convenience method for common exception handling
|
||||
* @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
|
||||
try {
|
||||
$query = $this->model->db->getLastQuery();
|
||||
$queryStr = !is_null($query) ? $query->getQuery() : '';
|
||||
$dbError = $this->model->db->error();
|
||||
$userFriendlyErrMsg = lang('Basic.global.persistErr1', [static::$singularObjectNameCc]);
|
||||
if (isset($dbError['code']) && $dbError['code'] == 1062) :
|
||||
$userFriendlyErrMsg .= PHP_EOL.lang('Basic.global.persistDuplErr', [static::$singularObjectNameCc]);
|
||||
if (isset($dbError['code']) && $dbError['code'] == 1062):
|
||||
$userFriendlyErrMsg .= PHP_EOL . lang('Basic.global.persistDuplErr', [static::$singularObjectNameCc]);
|
||||
endif;
|
||||
// $userFriendlyErrMsg = str_replace("'", "\'", $userFriendlyErrMsg); // Uncomment if experiencing unescaped single quote errors
|
||||
log_message('error', $userFriendlyErrMsg.PHP_EOL.$e->getMessage().PHP_EOL.$queryStr);
|
||||
if (isset($dbError['message']) && !empty($dbError['message'])) :
|
||||
log_message('error', $dbError['code'].' : '.$dbError['message']);
|
||||
log_message('error', $userFriendlyErrMsg . PHP_EOL . $e->getMessage() . PHP_EOL . $queryStr);
|
||||
if (isset($dbError['message']) && !empty($dbError['message'])):
|
||||
log_message('error', $dbError['code'] . ' : ' . $dbError['message']);
|
||||
endif;
|
||||
$this->viewData['errorMessage'] = $userFriendlyErrMsg;
|
||||
} 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.
|
||||
public static function collect(Query $query) {
|
||||
public static function collect(Query $query)
|
||||
{
|
||||
static::$queries[] = $query;
|
||||
}
|
||||
|
||||
@ -495,7 +493,8 @@ abstract class GoBaseController extends Controller {
|
||||
* @param object $sourceObject
|
||||
* @return object
|
||||
*/
|
||||
function cast($destination, $sourceObject) {
|
||||
function cast($destination, $sourceObject)
|
||||
{
|
||||
if (is_string($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;
|
||||
|
||||
use App\Models\Sistema\SettingsModel;
|
||||
use App\Models\Soporte\TicketModel;
|
||||
use App\Models\CategoriaModel;
|
||||
use App\Models\EstadoModel;
|
||||
|
||||
@ -14,7 +14,6 @@ use App\Models\Usuarios\GroupModel;
|
||||
use App\Models\Usuarios\PermisosModel;
|
||||
use App\Services\PresupuestoService;
|
||||
use CodeIgniter\Shield\Entities\User;
|
||||
use App\Models\Sistema\SettingsModel;
|
||||
|
||||
|
||||
class Test extends BaseController
|
||||
@ -31,11 +30,9 @@ class Test extends BaseController
|
||||
|
||||
public function index()
|
||||
{
|
||||
$clienteModel = model('App\Models\Clientes\ClienteModel');
|
||||
$datos = $clienteModel->getResumenPagos(1870);
|
||||
echo '<pre>';
|
||||
var_dump($datos);
|
||||
echo '</pre>';
|
||||
$emailService = service('emailService');
|
||||
|
||||
return $emailService->send("Hola mundo", "Hola mundo", "imnavajas@coit.es");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -172,9 +172,6 @@ if (!function_exists('getSystemSettings')) {
|
||||
{
|
||||
// Get Settings
|
||||
$session = session();
|
||||
$settingsBase = new \App\Models\Sistema\SettingsModel();
|
||||
$settings = $settingsBase->asArray()->first() ?? [];
|
||||
$session->set('settings', $settings);
|
||||
if (empty($session->get('lang'))) {
|
||||
$session->set('lang', 'es');
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
use App\Models\Sistema\SettingsModel;
|
||||
use Config\Services;
|
||||
|
||||
class EmailService
|
||||
@ -17,10 +16,8 @@ class EmailService
|
||||
$recipient = 'imnavajas@coit.es'; // <-- Cambia por el correo de pruebas
|
||||
}
|
||||
|
||||
|
||||
$settings_model = new SettingsModel();
|
||||
$config = $settings_model->first()->toArray();
|
||||
$gateway = $config['email_gateway'];
|
||||
$settings_model = model('App\Models\Configuracion\ConfigVariableModel');
|
||||
$gateway = $settings_model->getVariable('email_protocol')->value;
|
||||
$body = html_entity_decode($body);
|
||||
|
||||
if ($gateway === 'smtp') {
|
||||
@ -28,12 +25,12 @@ class EmailService
|
||||
$email = Services::email();
|
||||
|
||||
$emailConfig = [
|
||||
'protocol' => $config['email_gateway'],
|
||||
'SMTPHost' => $config['email_smtp'],
|
||||
'SMTPUser' => $config['email_address'],
|
||||
'SMTPPass' => $config['email_pass'],
|
||||
'SMTPPort' => (int) $config['email_port'],
|
||||
'SMTPCrypto' => $config['email_cert'] === 'none' ? '' : $config['email_cert'],
|
||||
'protocol' => $gateway,
|
||||
'SMTPHost' => $settings_model->getVariable('email_host')->value,
|
||||
'SMTPUser' => $settings_model->getVariable('email_from_address')->value,
|
||||
'SMTPPass' => $settings_model->getVariable('email_pass')->value,
|
||||
'SMTPPort' => (int) $settings_model->getVariable('email_port')->value,
|
||||
'SMTPCrypto' => $settings_model->getVariable('email_cert')->value === 'none' ? '' : $settings_model->getVariable('email_cert')->value,
|
||||
'SMTPTimeout' => 15,
|
||||
'mailType' => 'html',
|
||||
'wordWrap' => true,
|
||||
@ -41,7 +38,7 @@ class EmailService
|
||||
|
||||
$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->setSubject($subject);
|
||||
$email->setMessage($body);
|
||||
|
||||
@ -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; ?>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="menu-header small text-uppercase">
|
||||
<span class="menu-header-text">Ajustes del Sistema</span>
|
||||
<span class="menu-header-text">Sistema</span>
|
||||
</li>
|
||||
|
||||
<?php
|
||||
|
||||
@ -325,7 +325,7 @@
|
||||
|
||||
|
||||
<li class="menu-header small text-uppercase">
|
||||
<span class="menu-header-text">Ajustes del Sistema</span>
|
||||
<span class="menu-header-text">Sistema</span>
|
||||
</li>
|
||||
|
||||
<?php
|
||||
|
||||
@ -55,7 +55,7 @@ if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente
|
||||
<?php } ?>
|
||||
<?php if (auth()->user()->can('plantilla-tarifa.menu')) { ?>
|
||||
<li class="menu-item">
|
||||
<a href="<?= site_url("clientes/clienteplantillaprecios") ?>" class="menu-link">
|
||||
<a href="<?= route_to('clienteplantillapreciosList') ?>" class="menu-link">
|
||||
<?= lang("App.menu_plantillas_tarifas_clientes") ?>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -3,28 +3,12 @@
|
||||
* SEPARADOR Y MENUS DE SISTEMA
|
||||
*/
|
||||
|
||||
if (auth()->user()->can('ajustes.menu') ||
|
||||
auth()->user()->can('actividad.menu')) {
|
||||
if (auth()->user()->can('actividad.menu')) {
|
||||
?>
|
||||
<li class="menu-header small text-uppercase">
|
||||
<span class="menu-header-text">Ajustes del Sistema</span>
|
||||
<span class="menu-header-text">Sistema</span>
|
||||
</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
|
||||
/**
|
||||
* 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