mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Igualando a rama dev/formateando
This commit is contained in:
58
.idea/workspace.xml
generated
58
.idea/workspace.xml
generated
@ -5,13 +5,31 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="7c8f7059-cd40-417c-936e-48dbc0507d86" name="Changes" comment="Add static Vuexy files">
|
<list default="true" id="7c8f7059-cd40-417c-936e-48dbc0507d86" name="Changes" comment="Add static Vuexy files">
|
||||||
|
<change afterPath="$PROJECT_DIR$/httpdocs/themes/vuexy/vendor/libs/toastr/toastr.min.js" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/ci4/app/Config/Boot/development.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Config/Boot/development.php" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/ci4/app/Config/App.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Config/App.php" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/ci4/app/Config/Routes.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Config/Routes.php" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/ci4/app/Config/Email.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Config/Email.php" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/ci4/app/Controllers/Integration.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Controllers/Integration.php" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/ci4/app/Controllers/GoBaseController.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Controllers/GoBaseController.php" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/ci4/app/Controllers/Login.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Controllers/Login.php" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/ci4/app/Controllers/Home.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Controllers/Home.php" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/ci4/app/Helpers/general_helper.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Helpers/general_helper.php" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/ci4/app/Controllers/Settings.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Controllers/Settings.php" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/ci4/app/Language/es/App.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Language/es/App.php" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/ci4/app/Filters/LoginAuthFilter.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Filters/LoginAuthFilter.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Language/en/App.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Language/en/App.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Language/es-ES/Tarifaaacabado.php" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/_commonPartialsBs/datatables.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/_commonPartialsBs/datatables.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/_commonPartialsBs/select2bs5.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/_commonPartialsBs/select2bs5.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/form/group/viewUserGroupForm.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/form/group/viewUserGroupForm.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/form/group/viewUserGroupList.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/form/group/viewUserGroupList.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/form/login/index.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/form/login/index.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/form/user/_userFormItems.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/form/user/_userFormItems.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/login/footer.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/login/footer.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/login/header.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/login/header.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/main/all.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/main/all.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/main/all_selects.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/main/all_selects.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/main/crud_layout.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/main/crud_layout.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/main/defaultlayout.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/main/defaultlayout.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/main/header.php" beforeDir="false" afterPath="$PROJECT_DIR$/ci4/app/Views/themes/backend/vuexy/main/header.php" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/datos web.txt" beforeDir="false" afterPath="$PROJECT_DIR$/datos web.txt" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/httpdocs/assets/js/login.js" beforeDir="false" afterPath="$PROJECT_DIR$/httpdocs/assets/js/login.js" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@ -33,20 +51,20 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent">{
|
<component name="PropertiesComponent"><![CDATA[{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"WebServerToolWindowFactoryState": "false",
|
"WebServerToolWindowFactoryState": "false",
|
||||||
"last_opened_file_path": "C:/temp-sk/safekat/ci4/app/Views/themes/backend/vuexy/main",
|
"last_opened_file_path": "C:/temp-sk/safekat/httpdocs/themes/vuexy/vendor/libs/toastr",
|
||||||
"node.js.detected.package.eslint": "true",
|
"node.js.detected.package.eslint": "true",
|
||||||
"node.js.detected.package.tslint": "true",
|
"node.js.detected.package.tslint": "true",
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
"node.js.selected.package.tslint": "(autodetect)",
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
"nodejs_package_manager_path": "npm",
|
"nodejs_package_manager_path": "npm",
|
||||||
"vue.rearranger.settings.migration": "true"
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}</component>
|
}]]></component>
|
||||||
<component name="RecentsManager">
|
<component name="RecentsManager">
|
||||||
<key name="CopyFile.RECENT_KEYS">
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
<recent name="C:\temp-sk\safekat\ci4\app\Views\themes\backend\vuexy\main" />
|
<recent name="C:\temp-sk\safekat\ci4\app\Views\themes\backend\vuexy\main" />
|
||||||
@ -78,6 +96,8 @@
|
|||||||
<workItem from="1683716769681" duration="8512000" />
|
<workItem from="1683716769681" duration="8512000" />
|
||||||
<workItem from="1683796910193" duration="12918000" />
|
<workItem from="1683796910193" duration="12918000" />
|
||||||
<workItem from="1684147458134" duration="7379000" />
|
<workItem from="1684147458134" duration="7379000" />
|
||||||
|
<workItem from="1684221025785" duration="2261000" />
|
||||||
|
<workItem from="1684226343116" duration="557000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00001" summary="Starting Vuexy Theme creation">
|
<task id="LOCAL-00001" summary="Starting Vuexy Theme creation">
|
||||||
<created>1682339938559</created>
|
<created>1682339938559</created>
|
||||||
|
|||||||
@ -109,7 +109,7 @@ class App extends BaseConfig
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $appTimezone = 'America/Sao_Paulo';
|
public $appTimezone = 'Europe/Madrid';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
|||||||
@ -26,14 +26,14 @@ class Email extends BaseConfig
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $userAgent = 'CodeIgniter';
|
public $userAgent = 'Safekat ERP';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The mail sending protocol: mail, sendmail, smtp
|
* The mail sending protocol: mail, sendmail, smtp
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $protocol = 'mail';
|
public $protocol = 'smtp';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The server path to Sendmail.
|
* The server path to Sendmail.
|
||||||
@ -47,21 +47,21 @@ class Email extends BaseConfig
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $SMTPHost;
|
public $SMTPHost = "imnavajas.es";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP Username
|
* SMTP Username
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $SMTPUser;
|
public $SMTPUser = "safekat@imnavajas.es";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP Password
|
* SMTP Password
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $SMTPPass;
|
public $SMTPPass = "Etkd9~448";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP Port
|
* SMTP Port
|
||||||
@ -110,7 +110,7 @@ class Email extends BaseConfig
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $mailType = 'text';
|
public $mailType = 'html';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Character set (utf-8, iso-8859-1, etc.)
|
* Character set (utf-8, iso-8859-1, etc.)
|
||||||
|
|||||||
@ -9,7 +9,7 @@ use App\Models\SettingsModel;
|
|||||||
use App\Models\TemplateModel;
|
use App\Models\TemplateModel;
|
||||||
use App\Models\ThemeModel;
|
use App\Models\ThemeModel;
|
||||||
use App\Models\TimezoneModel;
|
use App\Models\TimezoneModel;
|
||||||
use App\Models\UserGroupModel;
|
use App\Models\Usuarios\UserGroupModel;
|
||||||
use App\Models\Usuarios\UserModel;
|
use App\Models\Usuarios\UserModel;
|
||||||
|
|
||||||
class Settings extends BaseController
|
class Settings extends BaseController
|
||||||
|
|||||||
@ -139,7 +139,9 @@ class LoginAuthFilter implements FilterInterface
|
|||||||
'Integration',
|
'Integration',
|
||||||
'Migrate',
|
'Migrate',
|
||||||
'Test',
|
'Test',
|
||||||
'GoBaseController'
|
'GoBaseController',
|
||||||
|
'GoBaseResourceController'
|
||||||
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,114 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return [
|
|
||||||
'ajuste' => 'Ajuste',
|
|
||||||
'createdAt' => 'Creado en',
|
|
||||||
'deletedAt' => 'Borrado en',
|
|
||||||
'formulaPrice' => 'Fórmula precio',
|
|
||||||
'id' => 'ID',
|
|
||||||
'moduleTitle' => 'Tarifas Acabado',
|
|
||||||
'nombre' => 'Nombre',
|
|
||||||
'precioMax' => 'Precio Max',
|
|
||||||
'precioMin' => 'Precio Min',
|
|
||||||
'tarifaacabado' => 'Tarifas Acabado',
|
|
||||||
'tarifaacabadoList' => 'Lista Tarifas Acabado',
|
|
||||||
'tarifasacabado' => 'Tarifas Acabado',
|
|
||||||
'tiradaMax' => 'Tirada Max',
|
|
||||||
'tiradaMin' => 'Tirada Min',
|
|
||||||
'updatedAt' => 'Actualizado en',
|
|
||||||
'userCreatedId' => 'ID Usuario "Creado en"',
|
|
||||||
'userUpdateId' => 'ID Usuario "Actualizado en"',
|
|
||||||
'validation' => [
|
|
||||||
'formula_price' => [
|
|
||||||
'max_length' => 'El campo {field} no puede exceder {param} caracteres en longitud.',
|
|
||||||
'required' => 'El campo {field} es obligatorio.',
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
'validation' => [
|
|
||||||
'nombre' => [
|
|
||||||
'max_length' => 'El campo {field} no puede exceder {param} caracteres en longitud.',
|
|
||||||
'required' => 'El campo {field} es obligatorio.',
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
'validation' => [
|
|
||||||
'precio_max' => [
|
|
||||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
|
||||||
'required' => 'El campo {field} es obligatorio.',
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
'validation' => [
|
|
||||||
'precio_min' => [
|
|
||||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
|
||||||
'required' => 'El campo {field} es obligatorio.',
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
'validation' => [
|
|
||||||
'tirada_max' => [
|
|
||||||
'integer' => 'El campo {field} debe contener un número entero.',
|
|
||||||
'required' => 'El campo {field} es obligatorio.',
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
'validation' => [
|
|
||||||
'tirada_min' => [
|
|
||||||
'integer' => 'El campo {field} debe contener un número entero.',
|
|
||||||
'required' => 'El campo {field} es obligatorio.',
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
'validation' => [
|
|
||||||
'user_created_id' => [
|
|
||||||
'integer' => 'El campo {field} debe contener un número entero.',
|
|
||||||
'required' => 'El campo {field} es obligatorio.',
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
'validation' => [
|
|
||||||
'user_update_id' => [
|
|
||||||
'integer' => 'El campo {field} debe contener un número entero.',
|
|
||||||
'required' => 'El campo {field} es obligatorio.',
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
'validation' => [
|
|
||||||
'ajuste' => [
|
|
||||||
'decimal' => 'El campo {field} debe contener un número decimal',
|
|
||||||
'required' => 'El campo {field} es obligatorio.',
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
];
|
|
||||||
@ -4,7 +4,7 @@
|
|||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/css/select2.min.css">
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/css/select2.min.css">
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.1.1/dist/select2-bootstrap-5-theme.min.css" />
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.1.1/dist/select2-bootstrap-5-theme.min.css" />
|
||||||
*/ ?>
|
*/ ?>
|
||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/select2/select2.css') ?>">
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/select2/select2.css') ?>"/>
|
||||||
<?= $this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
|
|
||||||
<!-- Push additional js -->
|
<!-- Push additional js -->
|
||||||
@ -17,15 +17,19 @@
|
|||||||
|
|
||||||
<?= $this->section('additionalInlineJs') ?>
|
<?= $this->section('additionalInlineJs') ?>
|
||||||
|
|
||||||
<?php /*
|
'use strict';
|
||||||
$('.select2bs').select2({
|
const select2 = $('.select2');
|
||||||
theme: "bootstrap-5",
|
|
||||||
allowClear: false,
|
|
||||||
});
|
|
||||||
*/ ?>
|
|
||||||
|
|
||||||
$('.select2').select2({
|
// Select2
|
||||||
|
// --------------------------------------------------------------------
|
||||||
});
|
if (select2.length) {
|
||||||
|
select2.each(function () {
|
||||||
|
var $this = $(this);
|
||||||
|
$this.wrap('<div class="position-relative"></div>').select2({
|
||||||
|
placeholder: 'Select value',
|
||||||
|
dropdownParent: $this.parent()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
<?= $this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
@ -1,123 +1,155 @@
|
|||||||
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
|
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
|
||||||
<?=$this->extend('themes/backend/vuexy/main/defaultlayout') ?>
|
<?= $this->extend('themes/backend/vuexy/main/defaultlayout') ?>
|
||||||
|
|
||||||
<?= $this->section("content") ?>
|
<?= $this->section("content") ?>
|
||||||
<div class="row">
|
|
||||||
<div class="col-12">
|
<div class="row">
|
||||||
<div class="card card-info">
|
<div class="col-12">
|
||||||
<div class="card-header">
|
<div class="card card-info">
|
||||||
<h3 class="card-title"><?= $boxTitle ?? $pageTitle ?></h3>
|
<div class="card-header">
|
||||||
</div><!--//.card-header -->
|
<h3 class="card-title"><?= $boxTitle ?? $pageTitle ?></h3>
|
||||||
<div class="card-body">
|
</div><!--//.card-header -->
|
||||||
<?= formAlert() ?>
|
<div class="card-body">
|
||||||
<form id="groupForm" method="post" action="<?= $formAction ?>">
|
<?= formAlert() ?>
|
||||||
<?= csrf_field() ?>
|
<form id="groupForm" method="post" action="<?= $formAction ?>">
|
||||||
<input type="hidden" name="id_group" value="<?= (isset($obj)) ? $obj['id_group'] : set_value('id_group') ?>">
|
<?= csrf_field() ?>
|
||||||
<input type="hidden" name="token" value="<?= (isset($obj)) ? $obj['token'] : set_value('token') ?>">
|
<input type="hidden" name="id_group"
|
||||||
<div class="form-body">
|
value="<?= (isset($obj)) ? $obj['id_group'] : set_value('id_group') ?>">
|
||||||
<div class="row">
|
<input type="hidden" name="token"
|
||||||
<div class="col-md-8">
|
value="<?= (isset($obj)) ? $obj['token'] : set_value('token') ?>">
|
||||||
<div class="form-group">
|
<div class="form-body">
|
||||||
<label for="title" class="text-dark"><?=lang("App.group_field_title")?></label>
|
<div class="row">
|
||||||
<input type="text" name="title" id="title" class="form-control" value="<?= old('title', $group->title) ?>">
|
<div class="col-md-8">
|
||||||
</div>
|
<div class="form-group">
|
||||||
</div>
|
<label for="title"
|
||||||
<div class="col-md-4">
|
class="text-dark"><?= lang("App.group_field_title") ?></label>
|
||||||
<div class="form-group">
|
<input type="text" name="title" id="title" class="form-control"
|
||||||
<label for="dashboard" class="text-dark"><?=lang("App.group_field_dashboard")?></label>
|
value="<?= old('title', $group->title) ?>">
|
||||||
<?php $id_select = (isset($group)) ? $group->dashboard : set_value('dashboard');?>
|
|
||||||
<select name="dashboard" id="dashboard" class="form-control">
|
|
||||||
<option value="user" <?= $id_select == "user" ? 'selected' : '' ?>><?=lang("App.group_label_user")?></option>
|
|
||||||
<option value="admin" <?= $id_select == "admin" ? 'selected' : '' ?>><?=lang("App.group_label_admin")?></option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12 right">
|
|
||||||
<div class="form-group">
|
|
||||||
<button type="button" name="select_all" id="select_all" class="btn btn-primary round"><i class="la la-toggle-on"></i> <?=lang("App.group_btn_select")?></button>
|
|
||||||
<button type="button" name="remove_all" id="remove_all" class="btn btn-primary round ml-1"><i class="la la-toggle-off"></i> <?=lang("App.group_btn_remove")?></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12 right">
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-header">
|
|
||||||
<h4 class="card-title"><?= lang("App.permisos_general") ?></h4>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
</div>
|
||||||
<div class="row">
|
<div class="col-md-4">
|
||||||
<?php foreach(getAllClass() as $item): ?>
|
<div class="form-group">
|
||||||
<?php if (empty($item['path'])): ?>
|
<label for="dashboard"
|
||||||
<div class="col-md-3 col-lg-2">
|
class="text-dark"><?= lang("App.group_field_dashboard") ?></label>
|
||||||
<h4 class="danger"><?=getDictionary($item['name'])?></h4>
|
<?php $id_select = (isset($group)) ? $group->dashboard : set_value('dashboard'); ?>
|
||||||
<?php foreach($item['methods'] as $subitem): ?>
|
<select name="dashboard" id="dashboard" class="form-control">
|
||||||
<?php if(!getIgnoreMethod($subitem)): ?>
|
<option value="user" <?= $id_select == "user" ? 'selected' : '' ?>><?= lang("App.group_label_user") ?></option>
|
||||||
<div class="custom-control custom-switch">
|
<option value="admin" <?= $id_select == "admin" ? 'selected' : '' ?>><?= lang("App.group_label_admin") ?></option>
|
||||||
<input type="checkbox" id="<?=$item['name'].'_'.$subitem?>" name="<?=$item['name'].'_'.$subitem?>" class="custom-control-input">
|
</select>
|
||||||
<label for="<?=$item['name'].'_'.$subitem?>" class="custom-control-label"><?=getDictionary($subitem)?></label>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 right">
|
||||||
|
<div class="form-group">
|
||||||
|
<button type="button" name="select_all" id="select_all"
|
||||||
|
class="btn btn-primary round"><i
|
||||||
|
class="la la-toggle-on"></i> <?= lang("App.group_btn_select") ?>
|
||||||
|
</button>
|
||||||
|
<button type="button" name="remove_all" id="remove_all"
|
||||||
|
class="btn btn-primary round ml-1"><i
|
||||||
|
class="la la-toggle-off"></i> <?= lang("App.group_btn_remove") ?>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<h5>Role Permissions</h5>
|
||||||
|
<!-- Permission table -->
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-flush-spacing">
|
||||||
|
<tbody>
|
||||||
|
<!-- <tr>-->
|
||||||
|
<!-- <td class="text-nowrap fw-semibold">-->
|
||||||
|
<!-- Permisos GLobales-->
|
||||||
|
<!-- <i-->
|
||||||
|
<!-- class="ti ti-info-circle"-->
|
||||||
|
<!-- data-bs-toggle="tooltip"-->
|
||||||
|
<!-- data-bs-placement="top"-->
|
||||||
|
<!-- title="Allows a full access to the system"></i>-->
|
||||||
|
<!-- </td>-->
|
||||||
|
<!-- <td>-->
|
||||||
|
<!-- <div class="form-check">-->
|
||||||
|
<!-- <input class="form-check-input" type="checkbox" id="selectAll"/>-->
|
||||||
|
<!-- <label class="form-check-label" for="selectAll"> Seleccionar-->
|
||||||
|
<!-- todos </label>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- </td>-->
|
||||||
|
<!-- </tr>-->
|
||||||
|
<?php foreach (getAllFolder() as $folder): ?>
|
||||||
|
|
||||||
|
<?php foreach (getAllClass() as $item): ?>
|
||||||
|
<?php if (str_contains($item['path'], $folder)): ?>
|
||||||
|
<tr>
|
||||||
|
<td class="text-nowrap fw-semibold"><?= getDictionary($folder) ?? '' ?> >> <?= getDictionary($item['name']) ?></td>
|
||||||
|
<?php foreach ($item['methods'] as $subitem): ?>
|
||||||
|
<?php if (!getIgnoreMethod($subitem)): ?>
|
||||||
|
<td>
|
||||||
|
<div class="form-check">
|
||||||
|
<input type="checkbox"
|
||||||
|
id="<?= $item['name'] . '_' . $subitem ?>"
|
||||||
|
name="<?= $item['name'] . '_' . $subitem ?>"
|
||||||
|
class="form-check-input">
|
||||||
|
<label for="<?= $item['name'] . '_' . $subitem ?>"
|
||||||
|
class="form-check-label"><?= getDictionary($subitem) ?></label>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tr>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</div>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</div>
|
|
||||||
</div>
|
<?php foreach (getAllClass() as $item): ?>
|
||||||
</div>
|
<?php if (empty($item['path'])): ?>
|
||||||
<?php foreach(getAllFolder() as $folder): ?>
|
<tr>
|
||||||
<div class="card">
|
<td class="text-nowrap fw-semibold"><?= getDictionary($item['name']) ?></td>
|
||||||
<div class="card-header">
|
<?php foreach ($item['methods'] as $subitem): ?>
|
||||||
<h4 class="card-title"><?= getDictionary($folder)??'' ?></h4>
|
<?php if (!getIgnoreMethod($subitem)): ?>
|
||||||
</div>
|
<td>
|
||||||
<div class="card-body">
|
<div class="form-check">
|
||||||
<div class="row">
|
<input type="checkbox"
|
||||||
<?php foreach(getAllClass() as $item): ?>
|
id="<?= $item['name'] . '_' . $subitem ?>"
|
||||||
<?php if (str_contains($item['path'], $folder)): ?>
|
name="<?= $item['name'] . '_' . $subitem ?>"
|
||||||
<div class="col-md-3 col-lg-2">
|
class="form-check-input">
|
||||||
<h4 class="danger"><?=getDictionary($item['name'])?></h4>
|
<label for="<?= $item['name'] . '_' . $subitem ?>"
|
||||||
<?php foreach($item['methods'] as $subitem): ?>
|
class="form-check-label"><?= getDictionary($subitem) ?></label>
|
||||||
<?php if(!getIgnoreMethod($subitem)): ?>
|
</div>
|
||||||
<div class="custom-control custom-switch">
|
</td>
|
||||||
<input type="checkbox" id="<?=$item['name'].'_'.$subitem?>" name="<?=$item['name'].'_'.$subitem?>" class="custom-control-input">
|
|
||||||
<label for="<?=$item['name'].'_'.$subitem?>" class="custom-control-label"><?=getDictionary($subitem)?></label>
|
|
||||||
</div>
|
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</div>
|
</tr>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</div>
|
|
||||||
</div>
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<?php endforeach; ?>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="form-actions mt-2">
|
||||||
<div class="form-actions mt-2">
|
<?= anchor(route_to("groupIndex"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?>
|
||||||
<?= anchor(route_to("groupIndex"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?>
|
<input type="submit" class="btn btn-primary float-end" name="save"
|
||||||
<input type="submit" class="btn btn-primary float-end" name="save" value="<?= lang("Basic.global.Save") ?>">
|
value="<?= lang("Basic.global.Save") ?>">
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
</div><!-- /.card-body -->
|
||||||
|
|
||||||
</div><!-- /.card-body -->
|
</div><!-- //.card -->
|
||||||
|
</div><!--//.col -->
|
||||||
</div><!-- //.card -->
|
</div><!--//.row -->
|
||||||
</div><!--//.col -->
|
|
||||||
</div><!--//.row -->
|
|
||||||
<?= $this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
|
|
||||||
<?= $this->section('additionalInlineJs') ?>
|
<?= $this->section('additionalInlineJs') ?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$('#select_all').on('click', function () {
|
$('#select_all').on('click', function () {
|
||||||
$(':checkbox').each(function() {
|
$(':checkbox').each(function() {
|
||||||
this.checked = true;
|
this.checked = true;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
$('#remove_all').on('click', function () {
|
$('#remove_all').on('click', function () {
|
||||||
$(':checkbox').each(function() {
|
$(':checkbox').each(function() {
|
||||||
@ -125,5 +157,4 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
<?= $this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
@ -1,66 +1,82 @@
|
|||||||
<?=$this->include('themes/_commonPartialsBs/datatables') ?>
|
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
|
||||||
<?=$this->extend('themes/backend/vuexy/main/defaultlayout') ?>
|
<?= $this->extend('themes/backend/vuexy/main/defaultlayout') ?>
|
||||||
<?=$this->section('content'); ?>
|
<?= $this->section('content'); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
|
<div class="card card-info">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title"><?= lang('Group.grouplist') ?></h3>
|
||||||
|
</div><!--//.card-header -->
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="container-xxl flex-grow-1 container-p-y">
|
||||||
|
<!-- Role cards -->
|
||||||
|
<div class="row g-4">
|
||||||
|
<div class="col-xl-4 col-lg-6 col-md-6">
|
||||||
|
<div class="card h-100">
|
||||||
|
<div class="row h-100">
|
||||||
|
<div class="col-sm-5">
|
||||||
|
<div class="d-flex align-items-end h-100 justify-content-center mt-sm-0 mt-3">
|
||||||
|
<img
|
||||||
|
src="<?= site_url('themes/vuexy/img/illustrations/add-new-roles.png') ?>"
|
||||||
|
class="img-fluid mt-sm-4 mt-md-0"
|
||||||
|
alt="add-new-roles"
|
||||||
|
width="83"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-7">
|
||||||
|
<div class="card-body text-sm-end text-center ps-sm-0">
|
||||||
|
<button
|
||||||
|
onclick="window.location='<?= route_to('newGroup') ?>'"
|
||||||
|
class="btn btn-primary mb-2 text-nowrap add-new-role"
|
||||||
|
>
|
||||||
|
<?= lang('Basic.global.addNew') ?>
|
||||||
|
</button>
|
||||||
|
<p class="mb-0 mt-1">Añadir rol si no existe</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="card card-info">
|
<?php foreach ($userGroupList as $item) : ?>
|
||||||
<div class="card-header">
|
<div class="col-xl-4 col-lg-6 col-md-6">
|
||||||
<h3 class="card-title"><?=lang('Group.grouplist') ?></h3>
|
<div class="card">
|
||||||
<?=anchor(route_to('newGroup'), lang('Basic.global.addNew').' '.lang('Group.group'), ['class'=>'btn btn-primary float-end']); ?>
|
<div class="card-body">
|
||||||
</div><!--//.card-header -->
|
<div class="d-flex justify-content-between">
|
||||||
<div class="card-body">
|
<h6 class="fw-normal mb-2">Total 4 users</h6>
|
||||||
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
|
</div>
|
||||||
|
<div class="d-flex justify-content-between align-items-end mt-1">
|
||||||
|
<div class="role-heading">
|
||||||
|
<h4 class="mb-1"><?= esc($item->title) ?></h4>
|
||||||
|
<a href="<?= route_to('editGroup', $item->id_group) ?>">
|
||||||
|
<span><?= lang('Basic.global.edit') ?></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<?=
|
||||||
|
anchor('#confirm2delete', "<i class='ti ti-trash ti-md'></i>",
|
||||||
|
[
|
||||||
|
'class' => 'text-muted',
|
||||||
|
'data-href' => route_to('deleteGroup', $item->id_group),
|
||||||
|
'data-bs-toggle' => 'modal',
|
||||||
|
'data-bs-target' => '#confirm2delete'
|
||||||
|
]);
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
<!--/ Role cards -->
|
||||||
|
</div>
|
||||||
|
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
|
||||||
|
|
||||||
<table id="tableOfGroups" class="table table-striped table-hover using-data-table" style="width: 100%;">
|
</div><!--//.card-body -->
|
||||||
<thead>
|
<div class="card-footer">
|
||||||
<tr>
|
|
||||||
<th><?=lang("Group.id")?></th>
|
|
||||||
<th><?=lang("Group.group_grid_title")?></th>
|
|
||||||
<th><?=lang("Group.group_grid_dashboard")?></th>
|
|
||||||
<th><?= lang('UserGroups.token') ?></th>
|
|
||||||
<th><?= lang('UserGroups.createdAt') ?></th>
|
|
||||||
<th><?= lang('UserGroups.updatedAt') ?></th>
|
|
||||||
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<?php foreach ($userGroupList as $item ) : ?>
|
|
||||||
<tr>
|
|
||||||
<td class="align-middle text-center">
|
|
||||||
<?=$item->id_group ?>
|
|
||||||
</td>
|
|
||||||
<td class="align-middle">
|
|
||||||
<?= esc($item->title) ?>
|
|
||||||
</td>
|
|
||||||
<td class="align-middle">
|
|
||||||
<?= esc($item->dashboard) ?>
|
|
||||||
</td>
|
|
||||||
<td class="align-middle">
|
|
||||||
<?= esc($item->token) ?>
|
|
||||||
</td>
|
|
||||||
</td>
|
|
||||||
<td class="align-middle text-nowrap">
|
|
||||||
<?= empty($item->created_at) ? '' : date('d/m/Y H:m:s', strtotime($item->created_at)) ?>
|
|
||||||
</td>
|
|
||||||
<td class="align-middle text-nowrap">
|
|
||||||
<?= empty($item->updated_at) ? '' : date('d/m/Y H:m:s', strtotime($item->updated_at)) ?>
|
|
||||||
</td>
|
|
||||||
<td class="align-middle text-center text-nowrap">
|
|
||||||
<?=anchor(route_to('editGroup', $item->id_group), lang('Basic.global.edit'), ['class'=>'btn btn-sm btn-warning btn-edit me-1', 'data-id'=>$item->id_group,]); ?>
|
|
||||||
<?=anchor('#confirm2delete', lang('Basic.global.Delete'), ['class'=>'btn btn-sm btn-danger btn-delete ms-1', 'data-href'=>route_to('deleteGroup', $item->id_group), 'data-bs-toggle'=>'modal', 'data-bs-target'=>'#confirm2delete']); ?>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<?php endforeach; ?>
|
</div><!--//.card-footer -->
|
||||||
</tbody>
|
</div><!--//.card -->
|
||||||
</table>
|
</div><!--//.col -->
|
||||||
</div><!--//.card-body -->
|
</div><!--//.row -->
|
||||||
<div class="card-footer">
|
|
||||||
|
|
||||||
</div><!--//.card-footer -->
|
|
||||||
</div><!--//.card -->
|
|
||||||
</div><!--//.col -->
|
|
||||||
</div><!--//.row -->
|
|
||||||
|
|
||||||
<?=$this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
@ -71,7 +71,7 @@
|
|||||||
aria-describedby="password"
|
aria-describedby="password"
|
||||||
onclick="pass()"
|
onclick="pass()"
|
||||||
/>
|
/>
|
||||||
<span class="input-group-text cursor-pointer"><i class="ti ti-eye-off"></i></span>
|
<span id="show_pass" class="input-group-text cursor-pointer"><i class="ti ti-eye-off"></i></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php if($settings['remember_me']??false): ?>
|
<?php if($settings['remember_me']??false): ?>
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
<?=lang('Users.country') ?>*
|
<?=lang('Users.country') ?>*
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<select id="country" name="country" required class="form-control " style="width: 100%;" >
|
<select id="country" name="country" required class="select2 form-control " style="width: 100%;" >
|
||||||
<option value=""><?=lang('Basic.global.pleaseSelectA', [lang('Users.country')]) ?></option>
|
<option value=""><?=lang('Basic.global.pleaseSelectA', [lang('Users.country')]) ?></option>
|
||||||
|
|
||||||
<?php foreach ($paisList as $item) : ?>
|
<?php foreach ($paisList as $item) : ?>
|
||||||
@ -136,7 +136,7 @@
|
|||||||
<?=lang('Users.blocked') ?>*
|
<?=lang('Users.blocked') ?>*
|
||||||
</label>
|
</label>
|
||||||
<?php $id_select = old('blocked', $user->blocked);?>
|
<?php $id_select = old('blocked', $user->blocked);?>
|
||||||
<select name="blocked" id="blocked" class="form-control">
|
<select name="blocked" id="blocked" class="select2 form-control">
|
||||||
<option value="0" <?= $id_select == "0" ? 'selected' : '' ?>><?=lang("User.user_non_blocked")?></option>
|
<option value="0" <?= $id_select == "0" ? 'selected' : '' ?>><?=lang("User.user_non_blocked")?></option>
|
||||||
<option value="1" <?= $id_select == "1" ? 'selected' : '' ?>><?=lang("User.user_blocked")?></option>
|
<option value="1" <?= $id_select == "1" ? 'selected' : '' ?>><?=lang("User.user_blocked")?></option>
|
||||||
</select>
|
</select>
|
||||||
@ -147,7 +147,7 @@
|
|||||||
<?=lang('Users.emailConfirmed') ?>*
|
<?=lang('Users.emailConfirmed') ?>*
|
||||||
</label>
|
</label>
|
||||||
<?php $id_select = old('email_confirmed', $user->email_confirmed);?>
|
<?php $id_select = old('email_confirmed', $user->email_confirmed);?>
|
||||||
<select name="email_confirmed" id="email_confirmed" class="form-control">
|
<select name="email_confirmed" id="email_confirmed" class="select2 form-control">
|
||||||
<option value="0" <?= $id_select == "0" ? 'selected' : '' ?>><?=lang("User.user_alert_not_confirmed")?></option>
|
<option value="0" <?= $id_select == "0" ? 'selected' : '' ?>><?=lang("User.user_alert_not_confirmed")?></option>
|
||||||
<option value="1" <?= $id_select == "1" ? 'selected' : '' ?>><?=lang("User.user_alert_confirmed")?></option>
|
<option value="1" <?= $id_select == "1" ? 'selected' : '' ?>><?=lang("User.user_alert_confirmed")?></option>
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@ -14,18 +14,16 @@
|
|||||||
|
|
||||||
|
|
||||||
<!-- Vendors JS -->
|
<!-- Vendors JS -->
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.min.js') ?>"></script>
|
<script src="<?= site_url('themes/vuexy/vendor/libs/toastr/toastr.min.js'); ?>"></script>
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js') ?>"></script>
|
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js') ?>"></script>
|
|
||||||
|
|
||||||
<!-- Main JS -->
|
<!-- Main JS -->
|
||||||
<script src="<?= site_url('themes/vuexy/js/main.js') ?>"></script>
|
<script src="<?= site_url('themes/vuexy/js/main.js') ?>"></script>
|
||||||
|
|
||||||
<!-- Page JS -->
|
<!-- Page JS -->
|
||||||
<script src="<?= site_url('themes/vuexy/js/pages-auth.js') ?>"></script>
|
|
||||||
|
|
||||||
<!-- Custom JS -->
|
<!-- Custom JS -->
|
||||||
<script src="<?= site_url('assets/js/login.js'); ?>"></script>
|
<script src="<?= site_url('assets/js/login.js'); ?>"></script>
|
||||||
|
|
||||||
<?= toastAlert() ?>
|
<?= toastAlert() ?>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -57,8 +57,8 @@ if (!empty($token) && $tfa == false) {
|
|||||||
<link rel="manifest" href="<?= site_url('themes/vuexy/img/favicon/manifest.json') ?>">
|
<link rel="manifest" href="<?= site_url('themes/vuexy/img/favicon/manifest.json') ?>">
|
||||||
|
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
<link rel="preconnect" href="https:/fonts.googleapis.com"/>
|
<link rel="preconnect" href="https://fonts.googleapis.com"/>
|
||||||
<link rel="preconnect" href="https:/fonts.gstatic.com" crossorigin/>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/>
|
||||||
<link
|
<link
|
||||||
href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
@ -78,6 +78,8 @@ if (!empty($token) && $tfa == false) {
|
|||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') ?>"/>
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') ?>"/>
|
||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/node-waves/node-waves.css') ?>"/>
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/node-waves/node-waves.css') ?>"/>
|
||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/typeahead-js/typeahead.css') ?>"/>
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/typeahead-js/typeahead.css') ?>"/>
|
||||||
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/toastr/toastr.css') ?>"/>
|
||||||
|
|
||||||
<!-- Vendor -->
|
<!-- Vendor -->
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>"/>
|
href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>"/>
|
||||||
@ -91,9 +93,9 @@ if (!empty($token) && $tfa == false) {
|
|||||||
|
|
||||||
<?php
|
<?php
|
||||||
if ($settings['captcha_gateway'] == 'recaptcha') {
|
if ($settings['captcha_gateway'] == 'recaptcha') {
|
||||||
echo "<script src='https:/www.google.com/recaptcha/api.js' async defer></script>";
|
echo "<script src='https://www.google.com/recaptcha/api.js' async defer></script>";
|
||||||
} else {
|
} else {
|
||||||
echo "<script src='https:/www.hCaptcha.com/1/api.js' async defer></script>";
|
echo "<script src='https://www.hCaptcha.com/1/api.js' async defer></script>";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@ -61,8 +61,8 @@ if (!empty($token) && $tfa == false) {
|
|||||||
<link rel="manifest" href="<?= site_url('themes/vuexy/img/favicon/manifest.json') ?>">
|
<link rel="manifest" href="<?= site_url('themes/vuexy/img/favicon/manifest.json') ?>">
|
||||||
|
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
<link rel="preconnect" href="https:/fonts.googleapis.com"/>
|
<link rel="preconnect" href="https://fonts.googleapis.com"/>
|
||||||
<link rel="preconnect" href="https:/fonts.gstatic.com" crossorigin/>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/>
|
||||||
<link
|
<link
|
||||||
href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
@ -82,9 +82,6 @@ if (!empty($token) && $tfa == false) {
|
|||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') ?>"/>
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') ?>"/>
|
||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/node-waves/node-waves.css') ?>"/>
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/node-waves/node-waves.css') ?>"/>
|
||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/select2/select2.css') ?>"/>
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/select2/select2.css') ?>"/>
|
||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/tagify/tagify.css') ?>"/>
|
|
||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/bootstrap-select/bootstrap-select.css') ?>"/>
|
|
||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/typeahead-js/typeahead.css') ?>"/>
|
|
||||||
|
|
||||||
<!-- Page CSS -->
|
<!-- Page CSS -->
|
||||||
|
|
||||||
@ -402,32 +399,23 @@ if (!empty($token) && $tfa == false) {
|
|||||||
<script src="<?= site_url('themes/vuexy/vendor/js/bootstrap.js') ?>"></script>
|
<script src="<?= site_url('themes/vuexy/vendor/js/bootstrap.js') ?>"></script>
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
|
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/node-waves/node-waves.js') ?>"></script>
|
<script src="<?= site_url('themes/vuexy/vendor/libs/node-waves/node-waves.js') ?>"></script>
|
||||||
|
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/hammer/hammer.js') ?>"></script>
|
<script src="<?= site_url('themes/vuexy/vendor/libs/hammer/hammer.js') ?>"></script>
|
||||||
<!--<script src="--><?php //= site_url('themes/vuexy/vendor/libs/i18n/i18n.js') ?><!--"></script>-->
|
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/typeahead-js/typeahead.js') ?>"></script>
|
|
||||||
|
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
|
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
|
||||||
<!-- endbuild -->
|
<!-- endbuild -->
|
||||||
|
|
||||||
<!-- Vendors JS -->
|
<!-- Vendors JS -->
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/select2/select2.js') ?>"></script>
|
<script src="<?= site_url('themes/vuexy/vendor/libs/select2/select2.js') ?>"></script>
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/tagify/tagify.js') ?>"></script>
|
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/bootstrap-select/bootstrap-select.js') ?>"></script>
|
|
||||||
<script src="<?= site_url('themes/vuexy/vendor/libs/bloodhound/bloodhound.js') ?>"></script>
|
|
||||||
|
|
||||||
<!-- Main JS -->
|
<!-- Main JS -->
|
||||||
<script src="<?= site_url('themes/vuexy/js/main.js') ?>"></script>
|
<script src="<?= site_url('themes/vuexy/js/main.js') ?>"></script>
|
||||||
|
|
||||||
<!-- Page JS -->
|
<!-- Page JS -->
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
$(function () {
|
$(function () {
|
||||||
const selectPicker = $('.selectpicker'),
|
const selectPicker = $('.selectpicker'),
|
||||||
select2 = $('.select2'),
|
select2 = $('.select2');
|
||||||
select2Icons = $('.select2-icons');
|
|
||||||
|
|
||||||
// Bootstrap Select
|
// Bootstrap Select
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
@ -448,324 +436,8 @@ if (!empty($token) && $tfa == false) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select2 Icons
|
|
||||||
if (select2Icons.length) {
|
|
||||||
// custom template to render icons
|
|
||||||
function renderIcons(option) {
|
|
||||||
if (!option.id) {
|
|
||||||
return option.text;
|
|
||||||
}
|
|
||||||
var $icon = "<i class='" + $(option.element).data('icon') + " me-2'></i>" + option.text;
|
|
||||||
|
|
||||||
return $icon;
|
|
||||||
}
|
|
||||||
select2Icons.wrap('<div class="position-relative"></div>').select2({
|
|
||||||
templateResult: renderIcons,
|
|
||||||
templateSelection: renderIcons,
|
|
||||||
escapeMarkup: function (es) {
|
|
||||||
return es;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
(function () {
|
|
||||||
// Basic
|
|
||||||
//------------------------------------------------------
|
|
||||||
const tagifyBasicEl = document.querySelector('#TagifyBasic');
|
|
||||||
const TagifyBasic = new Tagify(tagifyBasicEl);
|
|
||||||
|
|
||||||
// Read only
|
|
||||||
//------------------------------------------------------
|
|
||||||
const tagifyReadonlyEl = document.querySelector('#TagifyReadonly');
|
|
||||||
const TagifyReadonly = new Tagify(tagifyReadonlyEl);
|
|
||||||
|
|
||||||
// Custom list & inline suggestion
|
|
||||||
//------------------------------------------------------
|
|
||||||
const TagifyCustomInlineSuggestionEl = document.querySelector('#TagifyCustomInlineSuggestion');
|
|
||||||
const TagifyCustomListSuggestionEl = document.querySelector('#TagifyCustomListSuggestion');
|
|
||||||
|
|
||||||
const whitelist = [
|
|
||||||
'A# .NET',
|
|
||||||
'A# (Axiom)',
|
|
||||||
'A-0 System',
|
|
||||||
'A+',
|
|
||||||
'A++',
|
|
||||||
'ABAP',
|
|
||||||
'ABC',
|
|
||||||
'ABC ALGOL',
|
|
||||||
'ABSET',
|
|
||||||
'ABSYS',
|
|
||||||
'ACC',
|
|
||||||
'Accent',
|
|
||||||
'Ace DASL',
|
|
||||||
'ACL2',
|
|
||||||
'Avicsoft',
|
|
||||||
'ACT-III',
|
|
||||||
'Action!',
|
|
||||||
'ActionScript',
|
|
||||||
'Ada',
|
|
||||||
'Adenine',
|
|
||||||
'Agda',
|
|
||||||
'Agilent VEE',
|
|
||||||
'Agora',
|
|
||||||
'AIMMS',
|
|
||||||
'Alef',
|
|
||||||
'ALF',
|
|
||||||
'ALGOL 58',
|
|
||||||
'ALGOL 60',
|
|
||||||
'ALGOL 68',
|
|
||||||
'ALGOL W',
|
|
||||||
'Alice',
|
|
||||||
'Alma-0',
|
|
||||||
'AmbientTalk',
|
|
||||||
'Amiga E',
|
|
||||||
'AMOS',
|
|
||||||
'AMPL',
|
|
||||||
'Apex (Salesforce.com)',
|
|
||||||
'APL',
|
|
||||||
'AppleScript',
|
|
||||||
'Arc',
|
|
||||||
'ARexx',
|
|
||||||
'Argus',
|
|
||||||
'AspectJ',
|
|
||||||
'Assembly language',
|
|
||||||
'ATS',
|
|
||||||
'Ateji PX',
|
|
||||||
'AutoHotkey',
|
|
||||||
'Autocoder',
|
|
||||||
'AutoIt',
|
|
||||||
'AutoLISP / Visual LISP',
|
|
||||||
'Averest',
|
|
||||||
'AWK',
|
|
||||||
'Axum',
|
|
||||||
'Active Server Pages',
|
|
||||||
'ASP.NET'
|
|
||||||
];
|
|
||||||
// Inline
|
|
||||||
let TagifyCustomInlineSuggestion = new Tagify(TagifyCustomInlineSuggestionEl, {
|
|
||||||
whitelist: whitelist,
|
|
||||||
maxTags: 10,
|
|
||||||
dropdown: {
|
|
||||||
maxItems: 20,
|
|
||||||
classname: 'tags-inline',
|
|
||||||
enabled: 0,
|
|
||||||
closeOnSelect: false
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// List
|
|
||||||
let TagifyCustomListSuggestion = new Tagify(TagifyCustomListSuggestionEl, {
|
|
||||||
whitelist: whitelist,
|
|
||||||
maxTags: 10,
|
|
||||||
dropdown: {
|
|
||||||
maxItems: 20,
|
|
||||||
classname: '',
|
|
||||||
enabled: 0,
|
|
||||||
closeOnSelect: false
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Users List suggestion
|
|
||||||
//------------------------------------------------------
|
|
||||||
const TagifyUserListEl = document.querySelector('#TagifyUserList');
|
|
||||||
|
|
||||||
const usersList = [
|
|
||||||
{
|
|
||||||
value: 1,
|
|
||||||
name: 'Justinian Hattersley',
|
|
||||||
avatar: 'https://i.pravatar.cc/80?img=1',
|
|
||||||
email: 'jhattersley0@ucsd.edu'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 2,
|
|
||||||
name: 'Antons Esson',
|
|
||||||
avatar: 'https://i.pravatar.cc/80?img=2',
|
|
||||||
email: 'aesson1@ning.com'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 3,
|
|
||||||
name: 'Ardeen Batisse',
|
|
||||||
avatar: 'https://i.pravatar.cc/80?img=3',
|
|
||||||
email: 'abatisse2@nih.gov'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 4,
|
|
||||||
name: 'Graeme Yellowley',
|
|
||||||
avatar: 'https://i.pravatar.cc/80?img=4',
|
|
||||||
email: 'gyellowley3@behance.net'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 5,
|
|
||||||
name: 'Dido Wilford',
|
|
||||||
avatar: 'https://i.pravatar.cc/80?img=5',
|
|
||||||
email: 'dwilford4@jugem.jp'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 6,
|
|
||||||
name: 'Celesta Orwin',
|
|
||||||
avatar: 'https://i.pravatar.cc/80?img=6',
|
|
||||||
email: 'corwin5@meetup.com'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 7,
|
|
||||||
name: 'Sally Main',
|
|
||||||
avatar: 'https://i.pravatar.cc/80?img=7',
|
|
||||||
email: 'smain6@techcrunch.com'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 8,
|
|
||||||
name: 'Grethel Haysman',
|
|
||||||
avatar: 'https://i.pravatar.cc/80?img=8',
|
|
||||||
email: 'ghaysman7@mashable.com'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 9,
|
|
||||||
name: 'Marvin Mandrake',
|
|
||||||
avatar: 'https://i.pravatar.cc/80?img=9',
|
|
||||||
email: 'mmandrake8@sourceforge.net'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 10,
|
|
||||||
name: 'Corrie Tidey',
|
|
||||||
avatar: 'https://i.pravatar.cc/80?img=10',
|
|
||||||
email: 'ctidey9@youtube.com'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
function tagTemplate(tagData) {
|
|
||||||
return `
|
|
||||||
<tag title="${tagData.title || tagData.email}"
|
|
||||||
contenteditable='false'
|
|
||||||
spellcheck='false'
|
|
||||||
tabIndex="-1"
|
|
||||||
class="${this.settings.classNames.tag} ${tagData.class ? tagData.class : ''}"
|
|
||||||
${this.getAttributes(tagData)}
|
|
||||||
>
|
|
||||||
<x title='' class='tagify__tag__removeBtn' role='button' aria-label='remove tag'></x>
|
|
||||||
<div>
|
|
||||||
<div class='tagify__tag__avatar-wrap'>
|
|
||||||
<img onerror="this.style.visibility='hidden'" src="${tagData.avatar}">
|
|
||||||
</div>
|
|
||||||
<span class='tagify__tag-text'>${tagData.name}</span>
|
|
||||||
</div>
|
|
||||||
</tag>
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function suggestionItemTemplate(tagData) {
|
|
||||||
return `
|
|
||||||
<div ${this.getAttributes(tagData)}
|
|
||||||
class='tagify__dropdown__item align-items-center ${tagData.class ? tagData.class : ''}'
|
|
||||||
tabindex="0"
|
|
||||||
role="option"
|
|
||||||
>
|
|
||||||
${
|
|
||||||
tagData.avatar
|
|
||||||
? `<div class='tagify__dropdown__item__avatar-wrap'>
|
|
||||||
<img onerror="this.style.visibility='hidden'" src="${tagData.avatar}">
|
|
||||||
</div>`
|
|
||||||
: ''
|
|
||||||
}
|
|
||||||
<strong>${tagData.name}</strong>
|
|
||||||
<span>${tagData.email}</span>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
|
|
||||||
// initialize Tagify on the above input node reference
|
|
||||||
let TagifyUserList = new Tagify(TagifyUserListEl, {
|
|
||||||
tagTextProp: 'name', // very important since a custom template is used with this property as text. allows typing a "value" or a "name" to match input with whitelist
|
|
||||||
enforceWhitelist: true,
|
|
||||||
skipInvalid: true, // do not remporarily add invalid tags
|
|
||||||
dropdown: {
|
|
||||||
closeOnSelect: false,
|
|
||||||
enabled: 0,
|
|
||||||
classname: 'users-list',
|
|
||||||
searchKeys: ['name', 'email'] // very important to set by which keys to search for suggesttions when typing
|
|
||||||
},
|
|
||||||
templates: {
|
|
||||||
tag: tagTemplate,
|
|
||||||
dropdownItem: suggestionItemTemplate
|
|
||||||
},
|
|
||||||
whitelist: usersList
|
|
||||||
});
|
|
||||||
|
|
||||||
TagifyUserList.on('dropdown:show dropdown:updated', onDropdownShow);
|
|
||||||
TagifyUserList.on('dropdown:select', onSelectSuggestion);
|
|
||||||
|
|
||||||
let addAllSuggestionsEl;
|
|
||||||
|
|
||||||
function onDropdownShow(e) {
|
|
||||||
let dropdownContentEl = e.detail.tagify.DOM.dropdown.content;
|
|
||||||
|
|
||||||
if (TagifyUserList.suggestedListItems.length > 1) {
|
|
||||||
addAllSuggestionsEl = getAddAllSuggestionsEl();
|
|
||||||
|
|
||||||
// insert "addAllSuggestionsEl" as the first element in the suggestions list
|
|
||||||
dropdownContentEl.insertBefore(addAllSuggestionsEl, dropdownContentEl.firstChild);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onSelectSuggestion(e) {
|
|
||||||
if (e.detail.elm == addAllSuggestionsEl) TagifyUserList.dropdown.selectAll.call(TagifyUserList);
|
|
||||||
}
|
|
||||||
|
|
||||||
// create an "add all" custom suggestion element every time the dropdown changes
|
|
||||||
function getAddAllSuggestionsEl() {
|
|
||||||
// suggestions items should be based on "dropdownItem" template
|
|
||||||
return TagifyUserList.parseTemplate('dropdownItem', [
|
|
||||||
{
|
|
||||||
class: 'addAll',
|
|
||||||
name: 'Add all',
|
|
||||||
email:
|
|
||||||
TagifyUserList.settings.whitelist.reduce(function (remainingSuggestions, item) {
|
|
||||||
return TagifyUserList.isTagDuplicate(item.value) ? remainingSuggestions : remainingSuggestions + 1;
|
|
||||||
}, 0) + ' Members'
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Email List suggestion
|
|
||||||
//------------------------------------------------------
|
|
||||||
// generate random whitelist items (for the demo)
|
|
||||||
let randomStringsArr = Array.apply(null, Array(100)).map(function () {
|
|
||||||
return (
|
|
||||||
Array.apply(null, Array(~~(Math.random() * 10 + 3)))
|
|
||||||
.map(function () {
|
|
||||||
return String.fromCharCode(Math.random() * (123 - 97) + 97);
|
|
||||||
})
|
|
||||||
.join('') + '@gmail.com'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
const TagifyEmailListEl = document.querySelector('#TagifyEmailList'),
|
|
||||||
TagifyEmailList = new Tagify(TagifyEmailListEl, {
|
|
||||||
// email address validation (https://stackoverflow.com/a/46181/104380)
|
|
||||||
pattern:
|
|
||||||
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
|
||||||
whitelist: randomStringsArr,
|
|
||||||
callbacks: {
|
|
||||||
invalid: onInvalidTag
|
|
||||||
},
|
|
||||||
dropdown: {
|
|
||||||
position: 'text',
|
|
||||||
enabled: 1 // show suggestions dropdown after 1 typed character
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
button = TagifyEmailListEl.nextElementSibling; // "add new tag" action-button
|
|
||||||
|
|
||||||
button.addEventListener('click', onAddButtonClick);
|
|
||||||
|
|
||||||
function onAddButtonClick() {
|
|
||||||
TagifyEmailList.addEmptyTag();
|
|
||||||
}
|
|
||||||
|
|
||||||
function onInvalidTag(e) {
|
|
||||||
console.log('invalid', e.detail);
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -137,237 +137,6 @@ if (!empty($token) && $tfa == false) {
|
|||||||
<i class="ti ti-bell ti-md"></i>
|
<i class="ti ti-bell ti-md"></i>
|
||||||
<span class="badge bg-danger rounded-pill badge-notifications">5</span>
|
<span class="badge bg-danger rounded-pill badge-notifications">5</span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu dropdown-menu-end py-0">
|
|
||||||
<li class="dropdown-menu-header border-bottom">
|
|
||||||
<div class="dropdown-header d-flex align-items-center py-3">
|
|
||||||
<h5 class="text-body mb-0 me-auto">Notification</h5>
|
|
||||||
<a
|
|
||||||
href="javascript:void(0)"
|
|
||||||
class="dropdown-notifications-all text-body"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-placement="top"
|
|
||||||
title="Mark all as read"
|
|
||||||
><i class="ti ti-mail-opened fs-4"></i
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown-notifications-list scrollable-container">
|
|
||||||
<ul class="list-group list-group-flush">
|
|
||||||
<li class="list-group-item list-group-item-action dropdown-notifications-item">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar">
|
|
||||||
<img src="../../assets/img/avatars/1.png" alt class="h-auto rounded-circle" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<h6 class="mb-1">Congratulation Lettie 🎉</h6>
|
|
||||||
<p class="mb-0">Won the monthly best seller gold badge</p>
|
|
||||||
<small class="text-muted">1h ago</small>
|
|
||||||
</div>
|
|
||||||
<div class="flex-shrink-0 dropdown-notifications-actions">
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-read"
|
|
||||||
><span class="badge badge-dot"></span
|
|
||||||
></a>
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-archive"
|
|
||||||
><span class="ti ti-x"></span
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="list-group-item list-group-item-action dropdown-notifications-item">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar">
|
|
||||||
<span class="avatar-initial rounded-circle bg-label-danger">CF</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<h6 class="mb-1">Charles Franklin</h6>
|
|
||||||
<p class="mb-0">Accepted your connection</p>
|
|
||||||
<small class="text-muted">12hr ago</small>
|
|
||||||
</div>
|
|
||||||
<div class="flex-shrink-0 dropdown-notifications-actions">
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-read"
|
|
||||||
><span class="badge badge-dot"></span
|
|
||||||
></a>
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-archive"
|
|
||||||
><span class="ti ti-x"></span
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="list-group-item list-group-item-action dropdown-notifications-item marked-as-read">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar">
|
|
||||||
<img src="../../assets/img/avatars/2.png" alt class="h-auto rounded-circle" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<h6 class="mb-1">New Message ✉️</h6>
|
|
||||||
<p class="mb-0">You have new message from Natalie</p>
|
|
||||||
<small class="text-muted">1h ago</small>
|
|
||||||
</div>
|
|
||||||
<div class="flex-shrink-0 dropdown-notifications-actions">
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-read"
|
|
||||||
><span class="badge badge-dot"></span
|
|
||||||
></a>
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-archive"
|
|
||||||
><span class="ti ti-x"></span
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="list-group-item list-group-item-action dropdown-notifications-item">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar">
|
|
||||||
<span class="avatar-initial rounded-circle bg-label-success"
|
|
||||||
><i class="ti ti-shopping-cart"></i
|
|
||||||
></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<h6 class="mb-1">Whoo! You have new order 🛒</h6>
|
|
||||||
<p class="mb-0">ACME Inc. made new order $1,154</p>
|
|
||||||
<small class="text-muted">1 day ago</small>
|
|
||||||
</div>
|
|
||||||
<div class="flex-shrink-0 dropdown-notifications-actions">
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-read"
|
|
||||||
><span class="badge badge-dot"></span
|
|
||||||
></a>
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-archive"
|
|
||||||
><span class="ti ti-x"></span
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="list-group-item list-group-item-action dropdown-notifications-item marked-as-read">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar">
|
|
||||||
<img src="../../assets/img/avatars/9.png" alt class="h-auto rounded-circle" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<h6 class="mb-1">Application has been approved 🚀</h6>
|
|
||||||
<p class="mb-0">Your ABC project application has been approved.</p>
|
|
||||||
<small class="text-muted">2 days ago</small>
|
|
||||||
</div>
|
|
||||||
<div class="flex-shrink-0 dropdown-notifications-actions">
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-read"
|
|
||||||
><span class="badge badge-dot"></span
|
|
||||||
></a>
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-archive"
|
|
||||||
><span class="ti ti-x"></span
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="list-group-item list-group-item-action dropdown-notifications-item marked-as-read">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar">
|
|
||||||
<span class="avatar-initial rounded-circle bg-label-success"
|
|
||||||
><i class="ti ti-chart-pie"></i
|
|
||||||
></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<h6 class="mb-1">Monthly report is generated</h6>
|
|
||||||
<p class="mb-0">July monthly financial report is generated</p>
|
|
||||||
<small class="text-muted">3 days ago</small>
|
|
||||||
</div>
|
|
||||||
<div class="flex-shrink-0 dropdown-notifications-actions">
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-read"
|
|
||||||
><span class="badge badge-dot"></span
|
|
||||||
></a>
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-archive"
|
|
||||||
><span class="ti ti-x"></span
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="list-group-item list-group-item-action dropdown-notifications-item marked-as-read">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar">
|
|
||||||
<img src="../../assets/img/avatars/5.png" alt class="h-auto rounded-circle" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<h6 class="mb-1">Send connection request</h6>
|
|
||||||
<p class="mb-0">Peter sent you connection request</p>
|
|
||||||
<small class="text-muted">4 days ago</small>
|
|
||||||
</div>
|
|
||||||
<div class="flex-shrink-0 dropdown-notifications-actions">
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-read"
|
|
||||||
><span class="badge badge-dot"></span
|
|
||||||
></a>
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-archive"
|
|
||||||
><span class="ti ti-x"></span
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="list-group-item list-group-item-action dropdown-notifications-item">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar">
|
|
||||||
<img src="../../assets/img/avatars/6.png" alt class="h-auto rounded-circle" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<h6 class="mb-1">New message from Jane</h6>
|
|
||||||
<p class="mb-0">Your have new message from Jane</p>
|
|
||||||
<small class="text-muted">5 days ago</small>
|
|
||||||
</div>
|
|
||||||
<div class="flex-shrink-0 dropdown-notifications-actions">
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-read"
|
|
||||||
><span class="badge badge-dot"></span
|
|
||||||
></a>
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-archive"
|
|
||||||
><span class="ti ti-x"></span
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="list-group-item list-group-item-action dropdown-notifications-item marked-as-read">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar">
|
|
||||||
<span class="avatar-initial rounded-circle bg-label-warning"
|
|
||||||
><i class="ti ti-alert-triangle"></i
|
|
||||||
></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<h6 class="mb-1">CPU is running high</h6>
|
|
||||||
<p class="mb-0">CPU Utilization Percent is currently at 88.63%,</p>
|
|
||||||
<small class="text-muted">5 days ago</small>
|
|
||||||
</div>
|
|
||||||
<div class="flex-shrink-0 dropdown-notifications-actions">
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-read"
|
|
||||||
><span class="badge badge-dot"></span
|
|
||||||
></a>
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-archive"
|
|
||||||
><span class="ti ti-x"></span
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown-menu-footer border-top">
|
|
||||||
<a
|
|
||||||
href="javascript:void(0);"
|
|
||||||
class="dropdown-item d-flex justify-content-center text-primary p-2 h-px-40 mb-1 align-items-center"
|
|
||||||
>
|
|
||||||
View all notifications
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
</li>
|
||||||
<!--/ Notification -->
|
<!--/ Notification -->
|
||||||
|
|
||||||
|
|||||||
@ -6,5 +6,5 @@ datos web guard:
|
|||||||
email admin: jajaime.jim@gmail.com
|
email admin: jajaime.jim@gmail.com
|
||||||
password: 1234
|
password: 1234
|
||||||
|
|
||||||
FTP SK-IMN: Kqd1s#917
|
FTP SK-IMN: pjS9~l138
|
||||||
|
|
||||||
|
|||||||
@ -9,10 +9,10 @@ function pass(){
|
|||||||
"use strict";
|
"use strict";
|
||||||
if(document.getElementById('password').type === 'text'){
|
if(document.getElementById('password').type === 'text'){
|
||||||
document.getElementById('password').type = 'password';
|
document.getElementById('password').type = 'password';
|
||||||
document.getElementById('btn_pass').innerHTML = '<i class="far fa-eye"></i>';
|
document.getElementById('show_pass').innerHTML = '<i class="ti ti-eye"></i>';
|
||||||
}else{
|
}else{
|
||||||
document.getElementById('password').type = 'text';
|
document.getElementById('password').type = 'text';
|
||||||
document.getElementById('btn_pass').innerHTML = '<i class="far fa-eye-slash"></i>';
|
document.getElementById('show_pass').innerHTML = '<i class="ti ti-eye-off"></i>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function accepted(){
|
function accepted(){
|
||||||
|
|||||||
2
httpdocs/themes/vuexy/vendor/libs/toastr/toastr.min.js
vendored
Normal file
2
httpdocs/themes/vuexy/vendor/libs/toastr/toastr.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user