diff --git a/app/config/actions.xml b/app/config/actions.xml
index 1ba6d586..768a5b1d 100644
--- a/app/config/actions.xml
+++ b/app/config/actions.xml
@@ -791,7 +791,7 @@
1315
ACCOUNTMGR_HISTORY_RESTORE
Restaurar Cuenta
- accountManager/restore
+ accountHistoryManager/restore
1403
diff --git a/app/modules/web/Controllers/AccessManagerController.php b/app/modules/web/Controllers/AccessManagerController.php
index d4a13702..1bdcadaa 100644
--- a/app/modules/web/Controllers/AccessManagerController.php
+++ b/app/modules/web/Controllers/AccessManagerController.php
@@ -27,7 +27,11 @@ namespace SP\Modules\Web\Controllers;
use SP\Core\Acl\Acl;
use SP\Core\Events\Event;
use SP\DataModel\ItemSearchData;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\AuthTokenGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\PublicLinkGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\UserGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\UserGroupGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\UserProfileGrid;
use SP\Modules\Web\Controllers\Helpers\TabsGridHelper;
use SP\Services\AuthToken\AuthTokenService;
use SP\Services\PublicLink\PublicLinkService;
@@ -46,10 +50,6 @@ final class AccessManagerController extends ControllerBase
* @var ItemSearchData
*/
protected $itemSearchData;
- /**
- * @var ItemsGridHelper
- */
- protected $itemsGridHelper;
/**
* @var TabsGridHelper
*/
@@ -75,11 +75,8 @@ final class AccessManagerController extends ControllerBase
$this->itemSearchData = new ItemSearchData();
$this->itemSearchData->setLimitCount($this->configData->getAccountCount());
- $this->itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$this->tabsGridHelper = $this->dic->get(TabsGridHelper::class);
- $this->itemsGridHelper->setQueryTimeStart(microtime(true));
-
if ($this->checkAccess(Acl::USER)) {
$this->tabsGridHelper->addTab($this->getUsersList());
}
@@ -117,7 +114,9 @@ final class AccessManagerController extends ControllerBase
protected function getUsersList()
{
- return $this->itemsGridHelper->getUsersGrid($this->dic->get(UserService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(UserGrid::class)
+ ->getGrid($this->dic->get(UserService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -129,7 +128,9 @@ final class AccessManagerController extends ControllerBase
*/
protected function getUsersGroupList()
{
- return $this->itemsGridHelper->getUserGroupsGrid($this->dic->get(UserGroupService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(UserGroupGrid::class)
+ ->getGrid($this->dic->get(UserGroupService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -141,7 +142,9 @@ final class AccessManagerController extends ControllerBase
*/
protected function getUsersProfileList()
{
- return $this->itemsGridHelper->getUserProfilesGrid($this->dic->get(UserProfileService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(UserProfileGrid::class)
+ ->getGrid($this->dic->get(UserProfileService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -153,7 +156,9 @@ final class AccessManagerController extends ControllerBase
*/
protected function getApiTokensList()
{
- return $this->itemsGridHelper->getAuthTokensGrid($this->dic->get(AuthTokenService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(AuthTokenGrid::class)
+ ->getGrid($this->dic->get(AuthTokenService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -165,7 +170,9 @@ final class AccessManagerController extends ControllerBase
*/
protected function getPublicLinksList()
{
- return $this->itemsGridHelper->getPublicLinksGrid($this->dic->get(PublicLinkService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(PublicLinkGrid::class)
+ ->getGrid($this->dic->get(PublicLinkService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
diff --git a/app/modules/web/Controllers/AccountFileController.php b/app/modules/web/Controllers/AccountFileController.php
index 7a8d3f62..45643e6e 100644
--- a/app/modules/web/Controllers/AccountFileController.php
+++ b/app/modules/web/Controllers/AccountFileController.php
@@ -31,7 +31,7 @@ use SP\Core\Exceptions\SPException;
use SP\DataModel\FileData;
use SP\Html\Html;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\FileGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Mvc\Controller\CrudControllerInterface;
@@ -267,10 +267,11 @@ final class AccountFileController extends ControllerBase implements CrudControll
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getFilesGrid($this->accountFileService->search($itemSearchData)), $itemSearchData);
+ $fileGrid = $this->dic->get(FileGrid::class);
+
+ return $fileGrid->updatePager($fileGrid->getGrid($this->accountFileService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/AccountHistoryManagerController.php b/app/modules/web/Controllers/AccountHistoryManagerController.php
index 6f425fa0..6b5f3399 100644
--- a/app/modules/web/Controllers/AccountHistoryManagerController.php
+++ b/app/modules/web/Controllers/AccountHistoryManagerController.php
@@ -28,10 +28,11 @@ use SP\Core\Acl\Acl;
use SP\Core\Events\Event;
use SP\Core\Events\EventMessage;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\AccountHistoryGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Services\Account\AccountHistoryService;
+use SP\Services\Account\AccountService;
/**
* Class AccountHistoryManagerController
@@ -73,10 +74,11 @@ final class AccountHistoryManagerController extends ControllerBase
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getAccountsHistoryGrid($this->accountHistoryService->search($itemSearchData)), $itemSearchData);
+ $historyGrid = $this->dic->get(AccountHistoryGrid::class);
+
+ return $historyGrid->updatePager($historyGrid->getGrid($this->accountHistoryService->search($itemSearchData)), $itemSearchData);
}
/**
@@ -116,6 +118,39 @@ final class AccountHistoryManagerController extends ControllerBase
}
}
+ /**
+ * Saves restore action
+ *
+ * @param int $id Account's history ID
+ */
+ public function restoreAction($id)
+ {
+ try {
+ $accountDetails = $this->accountHistoryService->getById($id);
+
+ $accountService = $this->dic->get(AccountService::class);
+
+ if ($accountDetails->isModify) {
+ $accountService->editRestore($id, $accountDetails->getAccountId());
+ } else {
+ $accountService->createFromHistory($accountDetails);
+ }
+
+ $this->eventDispatcher->notifyEvent('restore.accountHistory',
+ new Event($this, EventMessage::factory()
+ ->addDescription(__u('Cuenta restaurada'))
+ ->addDetail(__u('Cuenta'), $accountDetails->getName())
+ ->addDetail(__u('Cliente'), $accountDetails->getClientName()))
+ );
+
+ $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Cuenta restaurada'));
+ } catch (\Exception $e) {
+ processException($e);
+
+ $this->returnJsonResponseException($e);
+ }
+ }
+
/**
* Initialize class
*
diff --git a/app/modules/web/Controllers/AccountManagerController.php b/app/modules/web/Controllers/AccountManagerController.php
index 18cf3c3d..8fba46d4 100644
--- a/app/modules/web/Controllers/AccountManagerController.php
+++ b/app/modules/web/Controllers/AccountManagerController.php
@@ -28,7 +28,7 @@ use SP\Core\Acl\Acl;
use SP\Core\Events\Event;
use SP\Core\Events\EventMessage;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\AccountGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Services\Account\AccountService;
@@ -73,10 +73,11 @@ final class AccountManagerController extends ControllerBase
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getAccountsGrid($this->accountService->search($itemSearchData)), $itemSearchData);
+ $accountGrid = $this->dic->get(AccountGrid::class);
+
+ return $accountGrid->updatePager($accountGrid->getGrid($this->accountService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/AuthTokenController.php b/app/modules/web/Controllers/AuthTokenController.php
index cdd39d19..d2d0e3cf 100644
--- a/app/modules/web/Controllers/AuthTokenController.php
+++ b/app/modules/web/Controllers/AuthTokenController.php
@@ -30,7 +30,7 @@ use SP\Core\Events\EventMessage;
use SP\Core\Exceptions\ValidationException;
use SP\DataModel\AuthTokenData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\AuthTokenGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\AuthTokenForm;
@@ -81,10 +81,11 @@ final class AuthTokenController extends ControllerBase implements CrudController
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getAuthTokensGrid($this->authTokenService->search($itemSearchData)), $itemSearchData);
+ $authTokenGrid = $this->dic->get(AuthTokenGrid::class);
+
+ return $authTokenGrid->updatePager($authTokenGrid->getGrid($this->authTokenService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/CategoryController.php b/app/modules/web/Controllers/CategoryController.php
index a4cbc380..8acb0072 100644
--- a/app/modules/web/Controllers/CategoryController.php
+++ b/app/modules/web/Controllers/CategoryController.php
@@ -30,7 +30,7 @@ use SP\Core\Events\EventMessage;
use SP\Core\Exceptions\ValidationException;
use SP\DataModel\CategoryData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\CategoryGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\CategoryForm;
@@ -79,10 +79,11 @@ final class CategoryController extends ControllerBase implements CrudControllerI
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getCategoriesGrid($this->categoryService->search($itemSearchData)), $itemSearchData);
+ $itemsGridHelper = $this->dic->get(CategoryGrid::class);
+
+ return $itemsGridHelper->updatePager($itemsGridHelper->getGrid($this->categoryService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/ClientController.php b/app/modules/web/Controllers/ClientController.php
index ba085982..b61370ff 100644
--- a/app/modules/web/Controllers/ClientController.php
+++ b/app/modules/web/Controllers/ClientController.php
@@ -31,7 +31,7 @@ use SP\Core\Events\EventMessage;
use SP\Core\Exceptions\ValidationException;
use SP\DataModel\ClientData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\ClientGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\ClientForm;
@@ -80,10 +80,11 @@ final class ClientController extends ControllerBase implements CrudControllerInt
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getClientsGrid($this->clientService->search($itemSearchData)), $itemSearchData);
+ $clientGrid = $this->dic->get(ClientGrid::class);
+
+ return $clientGrid->updatePager($clientGrid->getGrid($this->clientService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/CustomFieldController.php b/app/modules/web/Controllers/CustomFieldController.php
index 49b613d3..70f68dc6 100644
--- a/app/modules/web/Controllers/CustomFieldController.php
+++ b/app/modules/web/Controllers/CustomFieldController.php
@@ -30,7 +30,7 @@ use SP\Core\Events\EventMessage;
use SP\Core\Exceptions\ValidationException;
use SP\DataModel\CustomFieldDefinitionData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\CustomFieldGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\CustomFieldDefForm;
@@ -81,10 +81,11 @@ final class CustomFieldController extends ControllerBase implements CrudControll
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getCustomFieldsGrid($this->customFieldService->search($itemSearchData)), $itemSearchData);
+ $customFieldGrid = $this->dic->get(CustomFieldGrid::class);
+
+ return $customFieldGrid->updatePager($customFieldGrid->getGrid($this->customFieldService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/EventlogController.php b/app/modules/web/Controllers/EventlogController.php
index 301f2a50..5523979b 100644
--- a/app/modules/web/Controllers/EventlogController.php
+++ b/app/modules/web/Controllers/EventlogController.php
@@ -28,7 +28,7 @@ use SP\Core\Acl\Acl;
use SP\Core\Events\Event;
use SP\Core\Events\EventMessage;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\EventlogGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Services\EventLog\EventlogService;
@@ -75,12 +75,11 @@ final class EventlogController extends ControllerBase
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
- $itemsGridHelper->setQueryTimeStart(microtime(true));
-
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getEventLogGrid($this->eventLogService->search($itemSearchData)), $itemSearchData);
+ $eventlogGrid = $this->dic->get(EventlogGrid::class);
+
+ return $eventlogGrid->updatePager($eventlogGrid->getGrid($this->eventLogService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/Helpers/Grid/AccountGrid.php b/app/modules/web/Controllers/Helpers/Grid/AccountGrid.php
new file mode 100644
index 00000000..830e2b8b
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/AccountGrid.php
@@ -0,0 +1,155 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class AccountGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class AccountGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblAccounts');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Cuentas'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Nombre'));
+ $gridHeader->addHeader(__('Cliente'));
+ $gridHeader->addHeader(__('Categoría'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('name');
+ $gridData->addDataRowSource('clientName');
+ $gridData->addDataRowSource('categoryName');
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::ACCOUNTMGR_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchAccount');
+ $gridActionSearch->setTitle(__('Buscar Cuenta'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNTMGR_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::ACCOUNTMGR_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Cuenta'));
+ $gridAction->setTitle(__('Eliminar Cuenta'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNTMGR_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php b/app/modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php
new file mode 100644
index 00000000..53d465f8
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/AccountHistoryGrid.php
@@ -0,0 +1,183 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class AccountHistoryGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class AccountHistoryGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+
+ $grid->setDataActions($this->getRestoreAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblAccountsHistory');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Cuentas (H)'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Nombre'));
+ $gridHeader->addHeader(__('Cliente'));
+ $gridHeader->addHeader(__('Categoría'));
+ $gridHeader->addHeader(__('Fecha'));
+ $gridHeader->addHeader(__('Estado'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $iconEdit = clone $this->icons->getIconEdit();
+ $iconDelete = clone $this->icons->getIconDelete();
+
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('name');
+ $gridData->addDataRowSource('clientName');
+ $gridData->addDataRowSource('categoryName');
+ $gridData->addDataRowSource('date');
+ $gridData->addDataRowSourceWithIcon('isModify', $iconEdit->setTitle(__('Modificada'))->setClass('opacity50'));
+ $gridData->addDataRowSourceWithIcon('isDeleted', $iconDelete->setTitle(__('Eliminada'))->setClass('opacity50'));
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::ACCOUNTMGR_HISTORY_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchAccountHistory');
+ $gridActionSearch->setTitle(__('Buscar Cuenta'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNTMGR_HISTORY_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getRestoreAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::ACCOUNTMGR_HISTORY_RESTORE);
+ $gridAction->setType(DataGridActionType::EDIT_ITEM);
+ $gridAction->setName(__('Restaurar Cuenta'));
+ $gridAction->setTitle(__('Restaurar Cuenta'));
+ $gridAction->setIcon($this->icons->getIconRestore());
+ $gridAction->setOnClickFunction('accountManager/restore');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNTMGR_HISTORY_RESTORE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::ACCOUNTMGR_HISTORY_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Cuenta'));
+ $gridAction->setTitle(__('Eliminar Cuenta'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNTMGR_HISTORY_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php b/app/modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php
new file mode 100644
index 00000000..b25dc4db
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/AuthTokenGrid.php
@@ -0,0 +1,213 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class AuthTokenGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class AuthTokenGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+
+ $grid->setDataActions($this->getCreateAction());
+ $grid->setDataActions($this->getViewAction());
+ $grid->setDataActions($this->getEditAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblTokens');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Autorizaciones API'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Usuario'));
+ $gridHeader->addHeader(__('Acción'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('userLogin');
+ $gridData->addDataRowSource('actionId', false, function ($value) {
+ return Acl::getActionInfo($value);
+ });
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::AUTHTOKEN_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchToken');
+ $gridActionSearch->setTitle(__('Buscar Token'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCreateAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::AUTHTOKEN_CREATE);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Nueva Autorización'));
+ $gridAction->setTitle(__('Nueva Autorización'));
+ $gridAction->setIcon($this->icons->getIconAdd());
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_CREATE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getViewAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::AUTHTOKEN_VIEW);
+ $gridAction->setType(DataGridActionType::VIEW_ITEM);
+ $gridAction->setName(__('Ver token de Autorización'));
+ $gridAction->setTitle(__('Ver token de Autorización'));
+ $gridAction->setIcon($this->icons->getIconView());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_VIEW));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEditAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::AUTHTOKEN_EDIT);
+ $gridAction->setType(DataGridActionType::EDIT_ITEM);
+ $gridAction->setName(__('Editar Autorización'));
+ $gridAction->setTitle(__('Editar Autorización'));
+ $gridAction->setIcon($this->icons->getIconEdit());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_EDIT));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::AUTHTOKEN_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Autorización'));
+ $gridAction->setTitle(__('Eliminar Autorización'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/CategoryGrid.php b/app/modules/web/Controllers/Helpers/Grid/CategoryGrid.php
new file mode 100644
index 00000000..34b3dac0
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/CategoryGrid.php
@@ -0,0 +1,192 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class CategoryGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class CategoryGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+ $grid->setDataActions($this->getCreateAction());
+ $grid->setDataActions($this->getEditAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblCategories');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Categorías'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Nombre'));
+ $gridHeader->addHeader(__('Descripción'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('name');
+ $gridData->addDataRowSource('description');
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::CATEGORY_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchCategory');
+ $gridActionSearch->setTitle(__('Buscar Categoría'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::CATEGORY_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCreateAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::CATEGORY_CREATE);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Nueva Categoría'));
+ $gridAction->setTitle(__('Nueva Categoría'));
+ $gridAction->setIcon($this->icons->getIconAdd());
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CATEGORY_CREATE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEditAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::CATEGORY_EDIT);
+ $gridAction->setType(DataGridActionType::EDIT_ITEM);
+ $gridAction->setName(__('Editar Categoría'));
+ $gridAction->setTitle(__('Editar Categoría'));
+ $gridAction->setIcon($this->icons->getIconEdit());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CATEGORY_EDIT));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::CATEGORY_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Categoría'));
+ $gridAction->setTitle(__('Eliminar Categoría'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CATEGORY_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/ClientGrid.php b/app/modules/web/Controllers/Helpers/Grid/ClientGrid.php
new file mode 100644
index 00000000..900d8fec
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/ClientGrid.php
@@ -0,0 +1,195 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class ClientGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class ClientGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+ $grid->setDataActions($this->getCreateAction());
+ $grid->setDataActions($this->getEditAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblCustomers');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Clientes'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Nombre'));
+ $gridHeader->addHeader(__('Descripción'));
+ $gridHeader->addHeader(__('Global'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('name');
+ $gridData->addDataRowSource('description');
+ $gridData->addDataRowSource('isGlobal', false, function ($value) {
+ return $value ? __('SI') : __('NO');
+ });
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::CLIENT_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchCustomer');
+ $gridActionSearch->setTitle(__('Buscar Cliente'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCreateAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::CLIENT_CREATE);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Nuevo Cliente'));
+ $gridAction->setTitle(__('Nuevo Cliente'));
+ $gridAction->setIcon($this->icons->getIconAdd());
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_CREATE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEditAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::CLIENT_EDIT);
+ $gridAction->setType(DataGridActionType::EDIT_ITEM);
+ $gridAction->setName(__('Editar Cliente'));
+ $gridAction->setTitle(__('Editar Cliente'));
+ $gridAction->setIcon($this->icons->getIconEdit());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_EDIT));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::CLIENT_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Cliente'));
+ $gridAction->setTitle(__('Eliminar Cliente'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php b/app/modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php
new file mode 100644
index 00000000..4c38c88d
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/CustomFieldGrid.php
@@ -0,0 +1,198 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Services\CustomField\CustomFieldDefService;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class CustomFieldGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class CustomFieldGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+ $grid->setDataActions($this->getCreateAction());
+ $grid->setDataActions($this->getEditAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblCustomFields');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Campos Personalizados'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Nombre'));
+ $gridHeader->addHeader(__('Módulo'));
+ $gridHeader->addHeader(__('Tipo'));
+ $gridHeader->addHeader(__('Propiedades'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('name');
+ $gridData->addDataRowSource('moduleId', false, function ($value) {
+ return CustomFieldDefService::getFieldModuleById($value);
+ });
+ $gridData->addDataRowSource('typeName');
+ $gridData->addDataRowSourceWithIcon('isEncrypted', $this->icons->getIconEditPass()->setTitle(__('Encriptado')));
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::CUSTOMFIELD_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchCustomField');
+ $gridActionSearch->setTitle(__('Buscar Campo'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::CUSTOMFIELD_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCreateAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::CUSTOMFIELD_CREATE);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Nuevo Campo'));
+ $gridAction->setTitle(__('Nuevo Campo'));
+ $gridAction->setIcon($this->icons->getIconAdd());
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CUSTOMFIELD_CREATE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEditAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::CUSTOMFIELD_EDIT);
+ $gridAction->setType(DataGridActionType::EDIT_ITEM);
+ $gridAction->setName(__('Editar Campo'));
+ $gridAction->setTitle(__('Editar Campo'));
+ $gridAction->setIcon($this->icons->getIconEdit());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CUSTOMFIELD_EDIT));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::CUSTOMFIELD_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Campo'));
+ $gridAction->setTitle(__('Eliminar Campo'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CUSTOMFIELD_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/EventlogGrid.php b/app/modules/web/Controllers/Helpers/Grid/EventlogGrid.php
new file mode 100644
index 00000000..b65934ed
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/EventlogGrid.php
@@ -0,0 +1,210 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGrid;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class EventlogGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class EventlogGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridTab
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction)->setOnClickFunction('eventlog/nav'));
+
+ $grid->setDataActions($this->getRefrestAction());
+ $grid->setDataActions($this->getClearAction());
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $dataGrid = new DataGrid($this->view->getTheme());
+ $dataGrid->setId('tblEventLog');
+ $dataGrid->setDataTableTemplate('datagrid-table-simple', 'grid');
+ $dataGrid->setDataRowTemplate('datagrid-rows', $this->view->getBase());
+ $dataGrid->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $dataGrid->setHeader($this->getHeader());
+ $dataGrid->setData($this->getData());
+ $dataGrid->setTitle(__('Registro de Eventos'));
+
+ return $dataGrid;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('ID'));
+ $gridHeader->addHeader(__('Fecha / Hora'));
+ $gridHeader->addHeader(__('Nivel'));
+ $gridHeader->addHeader(__('Evento'));
+ $gridHeader->addHeader(__('Login'));
+ $gridHeader->addHeader(__('IP'));
+ $gridHeader->addHeader(__('Descripción'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $isDemoMode = $this->configData->isDemoEnabled();
+
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('id');
+ $gridData->addDataRowSource('date');
+ $gridData->addDataRowSource('level');
+ $gridData->addDataRowSource('action');
+ $gridData->addDataRowSource('login');
+ $gridData->addDataRowSource('ipAddress', false,
+ function ($value) use ($isDemoMode) {
+ return $isDemoMode ? preg_replace('#\d+#', '*', $value) : $value;
+ });
+ $gridData->addDataRowSource('description', false,
+ function ($value) use ($isDemoMode) {
+ if ($isDemoMode) {
+ $value = preg_replace('/\\d+\\.\\d+\\.\\d+\\.\\d+/', "*.*.*.*", $value);
+ }
+
+ $text = str_replace(';;', PHP_EOL, $value);
+
+ if (preg_match('/^SQL.*/m', $text)) {
+ $text = preg_replace([
+ '/([a-zA-Z_]+),/m',
+ '/(UPDATE|DELETE|TRUNCATE|INSERT|SELECT|WHERE|LEFT|ORDER|LIMIT|FROM)/m'],
+ ['\\1,
', '
\\1'],
+ $text);
+ }
+
+// if (strlen($text) >= 100) {
+// $text = wordwrap($text, 100, PHP_EOL, true);
+// }
+
+ return str_replace(PHP_EOL, '
', $text);
+ });
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::EVENTLOG_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchEvent');
+ $gridActionSearch->setTitle(__('Buscar Evento'));
+ $gridActionSearch->setOnSubmitFunction('eventlog/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::EVENTLOG_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getRefrestAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::EVENTLOG_SEARCH);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Refrescar'));
+ $gridAction->setTitle(__('Refrescar'));
+ $gridAction->setIcon($this->icons->getIconRefresh());
+ $gridAction->setOnClickFunction('eventlog/search');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::EVENTLOG_SEARCH));
+ $gridAction->addData('target', '#data-table-tblEventLog');
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getClearAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::EVENTLOG_CLEAR);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Vaciar registro de eventos'));
+ $gridAction->setTitle(__('Vaciar registro de eventos'));
+ $gridAction->setIcon($this->icons->getIconClear());
+ $gridAction->setOnClickFunction('eventlog/clear');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::EVENTLOG_CLEAR));
+ $gridAction->addData('nextaction', Acl::getActionRoute(ActionsInterface::EVENTLOG));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/FileGrid.php b/app/modules/web/Controllers/Helpers/Grid/FileGrid.php
new file mode 100644
index 00000000..6ad14396
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/FileGrid.php
@@ -0,0 +1,198 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class FileGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class FileGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+ $grid->setDataActions($this->getViewAction());
+ $grid->setDataActions($this->getDownloadAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblFiles');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Archivos'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Cuenta'));
+ $gridHeader->addHeader(__('Cliente'));
+ $gridHeader->addHeader(__('Nombre'));
+ $gridHeader->addHeader(__('Tipo'));
+ $gridHeader->addHeader(__('Tamaño'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('accountName');
+ $gridData->addDataRowSource('clientName');
+ $gridData->addDataRowSource('name');
+ $gridData->addDataRowSource('type');
+ $gridData->addDataRowSource('size', false, function ($value) {
+ return sprintf('%.2f KB', $value / 1000);
+ });
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::ACCOUNT_FILE_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchFile');
+ $gridActionSearch->setTitle(__('Buscar Archivo'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_FILE_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getViewAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::ACCOUNT_FILE_VIEW);
+ $gridAction->setType(DataGridActionType::VIEW_ITEM);
+ $gridAction->setName(__('Ver Archivo'));
+ $gridAction->setTitle(__('Ver Archivo'));
+ $gridAction->setIcon($this->icons->getIconView());
+ $gridAction->setOnClickFunction('file/view');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_FILE_VIEW));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDownloadAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::ACCOUNT_FILE_DOWNLOAD);
+ $gridAction->setType(DataGridActionType::VIEW_ITEM);
+ $gridAction->setName(__('Descargar Archivo'));
+ $gridAction->setTitle(__('Descargar Archivo'));
+ $gridAction->setIcon($this->icons->getIconDownload());
+ $gridAction->setOnClickFunction('file/download');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_FILE_DOWNLOAD));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::ACCOUNT_FILE_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Archivo'));
+ $gridAction->setTitle(__('Eliminar Archivo'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_FILE_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/GridBase.php b/app/modules/web/Controllers/Helpers/Grid/GridBase.php
new file mode 100644
index 00000000..9d25183f
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/GridBase.php
@@ -0,0 +1,124 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+use SP\Core\Acl\Acl;
+use SP\Core\UI\ThemeIcons;
+use SP\DataModel\ItemSearchData;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridPager;
+use SP\Modules\Web\Controllers\Helpers\HelperBase;
+
+/**
+ * Class GridBase
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+abstract class GridBase extends HelperBase implements GridInterface
+{
+ /**
+ * @var float
+ */
+ protected $queryTimeStart;
+ /**
+ * @var ThemeIcons
+ */
+ protected $icons;
+ /**
+ * @var \SP\Core\Acl\Acl
+ */
+ protected $acl;
+
+ /**
+ * Actualizar los datos del paginador
+ *
+ * @param DataGridInterface $dataGrid
+ * @param ItemSearchData $itemSearchData
+ *
+ * @return DataGridInterface
+ */
+ public function updatePager(DataGridInterface $dataGrid, ItemSearchData $itemSearchData)
+ {
+ $dataGrid->getPager()
+ ->setLimitStart($itemSearchData->getLimitStart())
+ ->setLimitCount($itemSearchData->getLimitCount())
+ ->setFilterOn($itemSearchData->getSeachString() !== '');
+
+ $dataGrid->updatePager();
+
+ return $dataGrid;
+ }
+
+ /**
+ * Devolver el paginador por defecto
+ *
+ * @param DataGridActionSearch $sourceAction
+ *
+ * @return DataGridPager
+ */
+ protected function getPager(DataGridActionSearch $sourceAction)
+ {
+ $GridPager = new DataGridPager();
+ $GridPager->setSourceAction($sourceAction);
+ $GridPager->setOnClickFunction('appMgmt/nav');
+ $GridPager->setLimitStart(0);
+ $GridPager->setLimitCount($this->configData->getAccountCount());
+ $GridPager->setIconPrev($this->icons->getIconNavPrev());
+ $GridPager->setIconNext($this->icons->getIconNavNext());
+ $GridPager->setIconFirst($this->icons->getIconNavFirst());
+ $GridPager->setIconLast($this->icons->getIconNavLast());
+
+ return $GridPager;
+ }
+
+ /**
+ * @throws \Psr\Container\ContainerExceptionInterface
+ * @throws \Psr\Container\NotFoundExceptionInterface
+ */
+ protected function initialize()
+ {
+ $this->queryTimeStart = microtime(true);
+ $this->acl = $this->dic->get(Acl::class);
+ $this->icons = $this->view->getTheme()->getIcons();
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected abstract function getGridLayout(): DataGridInterface;
+
+ /**
+ * @return DataGridHeader
+ */
+ protected abstract function getHeader(): DataGridHeader;
+
+ /**
+ * @return DataGridData
+ */
+ protected abstract function getData(): DataGridData;
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/GridInterface.php b/app/modules/web/Controllers/Helpers/Grid/GridInterface.php
new file mode 100644
index 00000000..d38320f1
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/GridInterface.php
@@ -0,0 +1,44 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Storage\Database\QueryResult;
+
+
+/**
+ * Interface GridInterface
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+interface GridInterface
+{
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface;
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/NotificationGrid.php b/app/modules/web/Controllers/Helpers/Grid/NotificationGrid.php
new file mode 100644
index 00000000..815e530f
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/NotificationGrid.php
@@ -0,0 +1,267 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGrid;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionInterface;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Storage\Database\QueryResult;
+use SP\Util\DateUtil;
+
+/**
+ * Class NotificationGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class NotificationGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+ /**
+ * @var bool
+ */
+ private $isAdminApp;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+
+ $this->isAdminApp = $this->context->getUserData()->getIsAdminApp();
+
+ if ($this->isAdminApp) {
+ $grid->setDataActions($this->getCreateAction());
+ }
+
+ $grid->setDataActions($this->getViewAction());
+ $grid->setDataActions($this->setNonAdminFilter($this->getCheckAction()));
+ $grid->setDataActions($this->setNonAdminFilter($this->getEditAction()));
+
+ $deleteAction = $this->setNonAdminFilter($this->getDeleteAction());
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $dataGrid = new DataGrid($this->view->getTheme());
+ $dataGrid->setId('tblNotifications');
+ $dataGrid->setDataRowTemplate('datagrid-rows', 'grid');
+ $dataGrid->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $dataGrid->setHeader($this->getHeader());
+ $dataGrid->setData($this->getData());
+ $dataGrid->setTitle(__('Notificaciones'));
+ $dataGrid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $dataGrid;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Fecha'));
+ $gridHeader->addHeader(__('Tipo'));
+ $gridHeader->addHeader(__('Componente'));
+ $gridHeader->addHeader(__('Descripción'));
+ $gridHeader->addHeader(__('Estado'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('date', false,
+ function ($value) {
+ return DateUtil::getDateFromUnix($value);
+ });
+ $gridData->addDataRowSource('type');
+ $gridData->addDataRowSource('component');
+ $gridData->addDataRowSource('description');
+ $gridData->addDataRowSourceWithIcon('checked', $this->icons->getIconEnabled()->setTitle(__('Leída')));
+ $gridData->addDataRowSourceWithIcon('onlyAdmin', $this->icons->getIconAppAdmin()->setTitle(__('Sólo Admins')));
+ $gridData->addDataRowSourceWithIcon('sticky', $this->icons->getIconGroup()->setTitle(__('Global')));
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::NOTIFICATION_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchNotification');
+ $gridActionSearch->setTitle(__('Buscar Notificación'));
+ $gridActionSearch->setOnSubmitFunction('notification/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCreateAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::NOTIFICATION_CREATE);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Nueva Notificación'));
+ $gridAction->setTitle(__('Nueva Notificación'));
+ $gridAction->setIcon($this->icons->getIconAdd());
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('notification/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_CREATE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getViewAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::NOTIFICATION_VIEW);
+ $gridAction->setType(DataGridActionType::VIEW_ITEM);
+ $gridAction->setName(__('Ver Notificación'));
+ $gridAction->setTitle(__('Ver Notificación'));
+ $gridAction->setIcon($this->icons->getIconView());
+ $gridAction->setOnClickFunction('notification/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_VIEW));
+
+ return $gridAction;
+ }
+
+ /**
+ * @param DataGridActionInterface $gridAction
+ *
+ * @return DataGridActionInterface
+ */
+ private function setNonAdminFilter(DataGridActionInterface $gridAction)
+ {
+ if (!$this->isAdminApp) {
+ $gridAction->setFilterRowSource('sticky');
+ }
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCheckAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::NOTIFICATION_CHECK);
+ $gridAction->setName(__('Marcar Notificación'));
+ $gridAction->setTitle(__('Marcar Notificación'));
+ $gridAction->setIcon($this->icons->getIconEnabled());
+ $gridAction->setOnClickFunction('notification/check');
+ $gridAction->setFilterRowSource('checked');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_CHECK));
+ $gridAction->addData('nextaction', Acl::getActionRoute(ActionsInterface::NOTIFICATION));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEditAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::NOTIFICATION_EDIT);
+ $gridAction->setName(__('Editar Notificación'));
+ $gridAction->setTitle(__('Editar Notificación'));
+ $gridAction->setIcon($this->icons->getIconEdit());
+ $gridAction->setOnClickFunction('notification/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_EDIT));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::NOTIFICATION_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Notificación'));
+ $gridAction->setTitle(__('Eliminar Notificación'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('notification/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_DELETE));
+ $gridAction->addData('nextaction', Acl::getActionRoute(ActionsInterface::NOTIFICATION));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/PluginGrid.php b/app/modules/web/Controllers/Helpers/Grid/PluginGrid.php
new file mode 100644
index 00000000..9290e08d
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/PluginGrid.php
@@ -0,0 +1,214 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class PluginGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class PluginGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+
+ $grid->setDataActions($this->getViewAction());
+ $grid->setDataActions($this->getEnableAction());
+ $grid->setDataActions($this->getDisableAction());
+ $grid->setDataActions($this->getResetAction());
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblPlugins');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Plugins'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Plugin'));
+ $gridHeader->addHeader(__('Estado'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('name');
+ $gridData->addDataRowSourceWithIcon('enabled', $this->icons->getIconEnabled());
+ $gridData->addDataRowSourceWithIcon('enabled', $this->icons->getIconDisabled(), 0);
+ $gridData->addDataRowSourceWithIcon('available', $this->icons->getIconDelete()->setTitle(__('No disponible')), 0);
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::PLUGIN_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchPlugin');
+ $gridActionSearch->setTitle(__('Buscar Plugin'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getViewAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PLUGIN_VIEW);
+ $gridAction->setType(DataGridActionType::VIEW_ITEM);
+ $gridAction->setName(__('Ver Plugin'));
+ $gridAction->setTitle(__('Ver Plugin'));
+ $gridAction->setIcon($this->icons->getIconView());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->setFilterRowSource('available', 0);
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_VIEW));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEnableAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PLUGIN_ENABLE);
+ $gridAction->setName(__('Habilitar'));
+ $gridAction->setTitle(__('Habilitar'));
+ $gridAction->setIcon($this->icons->getIconEnabled());
+ $gridAction->setOnClickFunction('plugin/toggle');
+ $gridAction->setFilterRowSource('enabled');
+ $gridAction->setFilterRowSource('available', 0);
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_ENABLE));
+ $gridAction->addData('action-method', 'get');
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDisableAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PLUGIN_DISABLE);
+ $gridAction->setName(__('Deshabilitar'));
+ $gridAction->setTitle(__('Deshabilitar'));
+ $gridAction->setIcon($this->icons->getIconDisabled());
+ $gridAction->setOnClickFunction('plugin/toggle');
+ $gridAction->setFilterRowSource('enabled', 0);
+ $gridAction->setFilterRowSource('available', 0);
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_DISABLE));
+ $gridAction->addData('action-method', 'get');
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getResetAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PLUGIN_RESET);
+ $gridAction->setName(__('Restablecer Datos'));
+ $gridAction->setTitle(__('Restablecer Datos'));
+ $gridAction->setIcon($this->icons->getIconRefresh());
+ $gridAction->setOnClickFunction('plugin/reset');
+ $gridAction->setFilterRowSource('available', 0);
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_RESET));
+ $gridAction->addData('action-method', 'get');
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php b/app/modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php
new file mode 100644
index 00000000..343f94d0
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/PublicLinkGrid.php
@@ -0,0 +1,220 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class PublicLinkGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class PublicLinkGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+
+ $grid->setDataActions($this->getCreateAction());
+ $grid->setDataActions($this->getViewAction());
+ $grid->setDataActions($this->getRefreshAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblLinks');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Enlaces'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Cuenta'));
+ $gridHeader->addHeader(__('Cliente'));
+ $gridHeader->addHeader(__('Fecha Creación'));
+ $gridHeader->addHeader(__('Fecha Caducidad'));
+ $gridHeader->addHeader(__('Usuario'));
+ $gridHeader->addHeader(__('Notificar'));
+ $gridHeader->addHeader(__('Visitas'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('accountName');
+ $gridData->addDataRowSource('clientName');
+ $gridData->addDataRowSource('getDateAddFormat', true);
+ $gridData->addDataRowSource('getDateExpireFormat', true);
+ $gridData->addDataRowSource('userLogin');
+ $gridData->addDataRowSource('getNotifyString', true);
+ $gridData->addDataRowSource('getCountViewsString', true);
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::PUBLICLINK_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchLink');
+ $gridActionSearch->setTitle(__('Buscar Enlace'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCreateAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PUBLICLINK_CREATE);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Nuevo Enlace'));
+ $gridAction->setTitle(__('Nuevo Enlace'));
+ $gridAction->setIcon($this->icons->getIconAdd());
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_CREATE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getViewAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PUBLICLINK_VIEW);
+ $gridAction->setType(DataGridActionType::VIEW_ITEM);
+ $gridAction->setName(__('Ver Enlace'));
+ $gridAction->setTitle(__('Ver Enlace'));
+ $gridAction->setIcon($this->icons->getIconView());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_VIEW));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getRefreshAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PUBLICLINK_REFRESH);
+ $gridAction->setName(__('Renovar Enlace'));
+ $gridAction->setTitle(__('Renovar Enlace'));
+ $gridAction->setIcon($this->icons->getIconRefresh());
+ $gridAction->setOnClickFunction('link/refresh');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_REFRESH));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PUBLICLINK_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Enlace'));
+ $gridAction->setTitle(__('Eliminar Enlace'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/TagGrid.php b/app/modules/web/Controllers/Helpers/Grid/TagGrid.php
new file mode 100644
index 00000000..9cc2d97b
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/TagGrid.php
@@ -0,0 +1,190 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class TagGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class TagGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+ $grid->setDataActions($this->getCreateAction());
+ $grid->setDataActions($this->getEditAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblTags');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Etiquetas'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Nombre'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('name');
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::TAG_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchTag');
+ $gridActionSearch->setTitle(__('Buscar Etiqueta'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::TAG_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCreateAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::TAG_CREATE);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Nueva Etiqueta'));
+ $gridAction->setTitle(__('Nueva Etiqueta'));
+ $gridAction->setIcon($this->icons->getIconAdd());
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::TAG_CREATE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEditAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::TAG_EDIT);
+ $gridAction->setType(DataGridActionType::EDIT_ITEM);
+ $gridAction->setName(__('Editar Etiqueta'));
+ $gridAction->setTitle(__('Editar Etiqueta'));
+ $gridAction->setIcon($this->icons->getIconEdit());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::TAG_EDIT));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::TAG_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Etiqueta'));
+ $gridAction->setTitle(__('Eliminar Etiqueta'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::TAG_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/UserGrid.php b/app/modules/web/Controllers/Helpers/Grid/UserGrid.php
new file mode 100644
index 00000000..0f53c18a
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/UserGrid.php
@@ -0,0 +1,262 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\Assets\FontIcon;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class UserGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class UserGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+
+ $grid->setDataActions($this->getCreateAction());
+
+ if ($this->acl->checkUserAccess(ActionsInterface::CONFIG_IMPORT)
+ && $this->configData->isLdapEnabled()
+ ) {
+ $grid->setDataActions($this->getLdapSyncAction());
+ }
+
+ $grid->setDataActions($this->getViewAction());
+ $grid->setDataActions($this->getEditAction());
+ $grid->setDataActions($this->getEditPassAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblUsers');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Usuarios'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Nombre'));
+ $gridHeader->addHeader(__('Login'));
+ $gridHeader->addHeader(__('Perfil'));
+ $gridHeader->addHeader(__('Grupo'));
+ $gridHeader->addHeader(__('Propiedades'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('name');
+ $gridData->addDataRowSource('login');
+ $gridData->addDataRowSource('userProfileName');
+ $gridData->addDataRowSource('userGroupName');
+ $gridData->addDataRowSourceWithIcon('isAdminApp', $this->icons->getIconAppAdmin());
+ $gridData->addDataRowSourceWithIcon('isAdminAcc', $this->icons->getIconAccAdmin());
+ $gridData->addDataRowSourceWithIcon('isLdap', $this->icons->getIconLdapUser());
+ $gridData->addDataRowSourceWithIcon('isDisabled', $this->icons->getIconDisabled());
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::USER_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchUser');
+ $gridActionSearch->setTitle(__('Buscar Usuario'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCreateAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::USER_CREATE);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Nuevo Usuario'));
+ $gridAction->setTitle(__('Nuevo Usuario'));
+ $gridAction->setIcon($this->icons->getIconAdd());
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_CREATE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEditAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::USER_EDIT);
+ $gridAction->setType(DataGridActionType::EDIT_ITEM);
+ $gridAction->setName(__('Editar Usuario'));
+ $gridAction->setTitle(__('Editar Usuario'));
+ $gridAction->setIcon($this->icons->getIconEdit());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_EDIT));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::USER_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Usuario'));
+ $gridAction->setTitle(__('Eliminar Usuario'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_DELETE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getLdapSyncAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::CONFIG_LDAP_SYNC);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Importar usuarios de LDAP'));
+ $gridAction->setTitle(__('Importar usuarios de LDAP'));
+ $gridAction->setIcon(new FontIcon('get_app'));
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('appMgmt/ldapSync');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CONFIG_LDAP_SYNC));
+
+ return $gridAction;
+ }
+
+ private function getViewAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::USER_VIEW);
+ $gridAction->setType(DataGridActionType::VIEW_ITEM);
+ $gridAction->setName(__('Ver Detalles de Usuario'));
+ $gridAction->setTitle(__('Ver Detalles de Usuario'));
+ $gridAction->setIcon($this->icons->getIconView());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_VIEW));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEditPassAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::USER_EDIT_PASS);
+ $gridAction->setType(DataGridActionType::EDIT_ITEM);
+ $gridAction->setName(__('Cambiar Clave de Usuario'));
+ $gridAction->setTitle(__('Cambiar Clave de Usuario'));
+ $gridAction->setIcon($this->icons->getIconEditPass());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->setFilterRowSource('isLdap');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_EDIT_PASS));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/UserGroupGrid.php b/app/modules/web/Controllers/Helpers/Grid/UserGroupGrid.php
new file mode 100644
index 00000000..a2290bd2
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/UserGroupGrid.php
@@ -0,0 +1,211 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class UserGroupGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class UserGroupGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+
+ $grid->setDataActions($this->getCreateAction());
+ $grid->setDataActions($this->getViewAction());
+ $grid->setDataActions($this->getEditAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblGroups');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Grupos'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Nombre'));
+ $gridHeader->addHeader(__('Descripción'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('name');
+ $gridData->addDataRowSource('description');
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::GROUP_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchGroup');
+ $gridActionSearch->setTitle(__('Buscar Grupo'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::GROUP_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCreateAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::GROUP_CREATE);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Nuevo Grupo'));
+ $gridAction->setTitle(__('Nuevo Grupo'));
+ $gridAction->setIcon($this->icons->getIconAdd());
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::GROUP_CREATE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getViewAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::GROUP_VIEW);
+ $gridAction->setType(DataGridActionType::VIEW_ITEM);
+ $gridAction->setName(__('Ver Grupo'));
+ $gridAction->setTitle(__('Ver Grupo'));
+ $gridAction->setIcon($this->icons->getIconView());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::GROUP_VIEW));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEditAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::GROUP_EDIT);
+ $gridAction->setType(DataGridActionType::EDIT_ITEM);
+ $gridAction->setName(__('Editar Grupo'));
+ $gridAction->setTitle(__('Editar Grupo'));
+ $gridAction->setIcon($this->icons->getIconEdit());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::GROUP_EDIT));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::GROUP_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Grupo'));
+ $gridAction->setTitle(__('Eliminar Grupo'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::GROUP_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/Grid/UserProfileGrid.php b/app/modules/web/Controllers/Helpers/Grid/UserProfileGrid.php
new file mode 100644
index 00000000..3c652637
--- /dev/null
+++ b/app/modules/web/Controllers/Helpers/Grid/UserProfileGrid.php
@@ -0,0 +1,209 @@
+.
+ */
+
+namespace SP\Modules\Web\Controllers\Helpers\Grid;
+
+
+use SP\Core\Acl\Acl;
+use SP\Core\Acl\ActionsInterface;
+use SP\Html\DataGrid\DataGridAction;
+use SP\Html\DataGrid\DataGridActionSearch;
+use SP\Html\DataGrid\DataGridActionType;
+use SP\Html\DataGrid\DataGridData;
+use SP\Html\DataGrid\DataGridHeader;
+use SP\Html\DataGrid\DataGridInterface;
+use SP\Html\DataGrid\DataGridTab;
+use SP\Storage\Database\QueryResult;
+
+/**
+ * Class UserProfileGrid
+ *
+ * @package SP\Modules\Web\Controllers\Helpers\Grid
+ */
+final class UserProfileGrid extends GridBase
+{
+ /**
+ * @var QueryResult
+ */
+ private $queryResult;
+
+ /**
+ * @param QueryResult $queryResult
+ *
+ * @return DataGridInterface
+ */
+ public function getGrid(QueryResult $queryResult): DataGridInterface
+ {
+ $this->queryResult = $queryResult;
+
+ $grid = $this->getGridLayout();
+
+ $searchAction = $this->getSearchAction();
+
+ $grid->setDataActions($this->getSearchAction());
+ $grid->setPager($this->getPager($searchAction));
+
+ $grid->setDataActions($this->getCreateAction());
+ $grid->setDataActions($this->getViewAction());
+ $grid->setDataActions($this->getEditAction());
+
+ $deleteAction = $this->getDeleteAction();
+
+ $grid->setDataActions($deleteAction);
+ $grid->setDataActions($deleteAction, true);
+
+ $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
+
+ return $grid;
+ }
+
+ /**
+ * @return DataGridInterface
+ */
+ protected function getGridLayout(): DataGridInterface
+ {
+ // Grid
+ $gridTab = new DataGridTab($this->view->getTheme());
+ $gridTab->setId('tblProfiles');
+ $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
+ $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
+ $gridTab->setHeader($this->getHeader());
+ $gridTab->setData($this->getData());
+ $gridTab->setTitle(__('Perfiles'));
+
+ return $gridTab;
+ }
+
+ /**
+ * @return DataGridHeader
+ */
+ protected function getHeader(): DataGridHeader
+ {
+ // Grid Header
+ $gridHeader = new DataGridHeader();
+ $gridHeader->addHeader(__('Nombre'));
+
+ return $gridHeader;
+ }
+
+ /**
+ * @return DataGridData
+ */
+ protected function getData(): DataGridData
+ {
+ // Grid Data
+ $gridData = new DataGridData();
+ $gridData->setDataRowSourceId('id');
+ $gridData->addDataRowSource('name');
+ $gridData->setData($this->queryResult);
+
+ return $gridData;
+ }
+
+ /**
+ * @return DataGridActionSearch
+ */
+ private function getSearchAction()
+ {
+ // Grid Actions
+ $gridActionSearch = new DataGridActionSearch();
+ $gridActionSearch->setId(ActionsInterface::PROFILE_SEARCH);
+ $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
+ $gridActionSearch->setName('frmSearchProfile');
+ $gridActionSearch->setTitle(__('Buscar Perfil'));
+ $gridActionSearch->setOnSubmitFunction('appMgmt/search');
+ $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::PROFILE_SEARCH));
+
+ return $gridActionSearch;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getCreateAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PROFILE_CREATE);
+ $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
+ $gridAction->setName(__('Nuevo Perfil'));
+ $gridAction->setTitle(__('Nuevo Perfil'));
+ $gridAction->setIcon($this->icons->getIconAdd());
+ $gridAction->setSkip(true);
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PROFILE_CREATE));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getViewAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PROFILE_VIEW);
+ $gridAction->setType(DataGridActionType::VIEW_ITEM);
+ $gridAction->setName(__('Ver Detalles de Perfil'));
+ $gridAction->setTitle(__('Ver Detalles de Perfil'));
+ $gridAction->setIcon($this->icons->getIconView());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PROFILE_VIEW));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getEditAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PROFILE_EDIT);
+ $gridAction->setType(DataGridActionType::EDIT_ITEM);
+ $gridAction->setName(__('Editar Perfil'));
+ $gridAction->setTitle(__('Editar Perfil'));
+ $gridAction->setIcon($this->icons->getIconEdit());
+ $gridAction->setOnClickFunction('appMgmt/show');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PROFILE_EDIT));
+
+ return $gridAction;
+ }
+
+ /**
+ * @return DataGridAction
+ */
+ private function getDeleteAction()
+ {
+ $gridAction = new DataGridAction();
+ $gridAction->setId(ActionsInterface::PROFILE_DELETE);
+ $gridAction->setType(DataGridActionType::DELETE_ITEM);
+ $gridAction->setName(__('Eliminar Perfil'));
+ $gridAction->setTitle(__('Eliminar Perfil'));
+ $gridAction->setIcon($this->icons->getIconDelete());
+ $gridAction->setOnClickFunction('appMgmt/delete');
+ $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PROFILE_DELETE));
+
+ return $gridAction;
+ }
+}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/Helpers/ItemsGridHelper.php b/app/modules/web/Controllers/Helpers/ItemsGridHelper.php
deleted file mode 100644
index c689c667..00000000
--- a/app/modules/web/Controllers/Helpers/ItemsGridHelper.php
+++ /dev/null
@@ -1,1509 +0,0 @@
-.
- */
-
-namespace SP\Modules\Web\Controllers\Helpers;
-
-defined('APP_ROOT') || die();
-
-use SP\Core\Acl\Acl;
-use SP\Core\Acl\ActionsInterface;
-use SP\Core\UI\ThemeIcons;
-use SP\DataModel\ItemSearchData;
-use SP\Html\Assets\FontIcon;
-use SP\Html\DataGrid\DataGrid;
-use SP\Html\DataGrid\DataGridAction;
-use SP\Html\DataGrid\DataGridActionSearch;
-use SP\Html\DataGrid\DataGridActionType;
-use SP\Html\DataGrid\DataGridData;
-use SP\Html\DataGrid\DataGridHeader;
-use SP\Html\DataGrid\DataGridInterface;
-use SP\Html\DataGrid\DataGridPager;
-use SP\Html\DataGrid\DataGridTab;
-use SP\Services\CustomField\CustomFieldDefService;
-use SP\Storage\Database\QueryResult;
-use SP\Util\DateUtil;
-
-/**
- * Class Grids con las plantillas de tablas de datos
- *
- * @package SP\Controller
- */
-final class ItemsGridHelper extends HelperBase
-{
- /**
- * @var float
- */
- protected $queryTimeStart;
- /**
- * @var ThemeIcons
- */
- protected $icons;
- /**
- * @var \SP\Core\Acl\Acl
- */
- protected $acl;
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getCategoriesGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Nombre'));
- $GridHeaders->addHeader(__('Descripción'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('name');
- $GridData->addDataRowSource('description');
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblCategories');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Categorías'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::CATEGORY_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchCategory');
- $GridActionSearch->setTitle(__('Buscar Categoría'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::CATEGORY_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionNew = new DataGridAction();
- $GridActionNew->setId(ActionsInterface::CATEGORY_CREATE);
- $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionNew->setName(__('Nueva Categoría'));
- $GridActionNew->setTitle(__('Nueva Categoría'));
- $GridActionNew->setIcon($this->icons->getIconAdd());
- $GridActionNew->setSkip(true);
- $GridActionNew->setOnClickFunction('appMgmt/show');
- $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::CATEGORY_CREATE));
-
- $Grid->setDataActions($GridActionNew);
-
- $GridActionEdit = new DataGridAction();
- $GridActionEdit->setId(ActionsInterface::CATEGORY_EDIT);
- $GridActionEdit->setType(DataGridActionType::EDIT_ITEM);
- $GridActionEdit->setName(__('Editar Categoría'));
- $GridActionEdit->setTitle(__('Editar Categoría'));
- $GridActionEdit->setIcon($this->icons->getIconEdit());
- $GridActionEdit->setOnClickFunction('appMgmt/show');
- $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::CATEGORY_EDIT));
-
-
- $Grid->setDataActions($GridActionEdit);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::CATEGORY_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Categoría'));
- $GridActionDel->setTitle(__('Eliminar Categoría'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::CATEGORY_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * Devolver el paginador por defecto
- *
- * @param DataGridActionSearch $sourceAction
- *
- * @return DataGridPager
- */
- protected function getPager(DataGridActionSearch $sourceAction)
- {
- $GridPager = new DataGridPager();
- $GridPager->setSourceAction($sourceAction);
- $GridPager->setOnClickFunction('appMgmt/nav');
- $GridPager->setLimitStart(0);
- $GridPager->setLimitCount($this->configData->getAccountCount());
- $GridPager->setIconPrev($this->icons->getIconNavPrev());
- $GridPager->setIconNext($this->icons->getIconNavNext());
- $GridPager->setIconFirst($this->icons->getIconNavFirst());
- $GridPager->setIconLast($this->icons->getIconNavLast());
-
- return $GridPager;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getClientsGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Nombre'));
- $GridHeaders->addHeader(__('Descripción'));
- $GridHeaders->addHeader(__('Global'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('name');
- $GridData->addDataRowSource('description');
- $GridData->addDataRowSource('isGlobal', false, function ($value) {
- return $value ? __('SI') : __('NO');
- });
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblCustomers');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Clientes'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::CLIENT_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchCustomer');
- $GridActionSearch->setTitle(__('Buscar Cliente'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionNew = new DataGridAction();
- $GridActionNew->setId(ActionsInterface::CLIENT_CREATE);
- $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionNew->setName(__('Nuevo Cliente'));
- $GridActionNew->setTitle(__('Nuevo Cliente'));
- $GridActionNew->setIcon($this->icons->getIconAdd());
- $GridActionNew->setSkip(true);
- $GridActionNew->setOnClickFunction('appMgmt/show');
- $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_CREATE));
-
- $Grid->setDataActions($GridActionNew);
-
- $GridActionEdit = new DataGridAction();
- $GridActionEdit->setId(ActionsInterface::CLIENT_EDIT);
- $GridActionEdit->setType(DataGridActionType::EDIT_ITEM);
- $GridActionEdit->setName(__('Editar Cliente'));
- $GridActionEdit->setTitle(__('Editar Cliente'));
- $GridActionEdit->setIcon($this->icons->getIconEdit());
- $GridActionEdit->setOnClickFunction('appMgmt/show');
- $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_EDIT));
-
- $Grid->setDataActions($GridActionEdit);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::CLIENT_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Cliente'));
- $GridActionDel->setTitle(__('Eliminar Cliente'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::CLIENT_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getCustomFieldsGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Nombre'));
- $GridHeaders->addHeader(__('Módulo'));
- $GridHeaders->addHeader(__('Tipo'));
- $GridHeaders->addHeader(__('Propiedades'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('name');
- $GridData->addDataRowSource('moduleId', false, function ($value) {
- return CustomFieldDefService::getFieldModuleById($value);
- });
- $GridData->addDataRowSource('typeName');
- $GridData->addDataRowSourceWithIcon('isEncrypted', $this->icons->getIconEditPass()->setTitle(__('Encriptado')));
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblCustomFields');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Campos Personalizados'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::CUSTOMFIELD_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchCustomField');
- $GridActionSearch->setTitle(__('Buscar Campo'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::CUSTOMFIELD_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionNew = new DataGridAction();
- $GridActionNew->setId(ActionsInterface::CUSTOMFIELD_CREATE);
- $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionNew->setName(__('Nuevo Campo'));
- $GridActionNew->setTitle(__('Nuevo Campo'));
- $GridActionNew->setIcon($this->icons->getIconAdd());
- $GridActionNew->setSkip(true);
- $GridActionNew->setOnClickFunction('appMgmt/show');
- $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::CUSTOMFIELD_CREATE));
-
- $Grid->setDataActions($GridActionNew);
-
- $GridActionEdit = new DataGridAction();
- $GridActionEdit->setId(ActionsInterface::CUSTOMFIELD_EDIT);
- $GridActionEdit->setType(DataGridActionType::EDIT_ITEM);
- $GridActionEdit->setName(__('Editar Campo'));
- $GridActionEdit->setTitle(__('Editar Campo'));
- $GridActionEdit->setIcon($this->icons->getIconEdit());
- $GridActionEdit->setOnClickFunction('appMgmt/show');
- $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::CUSTOMFIELD_EDIT));
-
- $Grid->setDataActions($GridActionEdit);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::CUSTOMFIELD_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Campo'));
- $GridActionDel->setTitle(__('Eliminar Campo'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::CUSTOMFIELD_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getFilesGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Cuenta'));
- $GridHeaders->addHeader(__('Cliente'));
- $GridHeaders->addHeader(__('Nombre'));
- $GridHeaders->addHeader(__('Tipo'));
- $GridHeaders->addHeader(__('Tamaño'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('accountName');
- $GridData->addDataRowSource('clientName');
- $GridData->addDataRowSource('name');
- $GridData->addDataRowSource('type');
- $GridData->addDataRowSource('size', false, function ($value) {
- return sprintf('%.2f KB', $value / 1000);
- });
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblFiles');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Archivos'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::ACCOUNT_FILE_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchFile');
- $GridActionSearch->setTitle(__('Buscar Archivo'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_FILE_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionView = new DataGridAction();
- $GridActionView->setId(ActionsInterface::ACCOUNT_FILE_VIEW);
- $GridActionView->setType(DataGridActionType::VIEW_ITEM);
- $GridActionView->setName(__('Ver Archivo'));
- $GridActionView->setTitle(__('Ver Archivo'));
- $GridActionView->setIcon($this->icons->getIconView());
- $GridActionView->setOnClickFunction('file/view');
- $GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_FILE_VIEW));
-
- $Grid->setDataActions($GridActionView);
-
- // Grid item's actions
- $GridActionDownload = new DataGridAction();
- $GridActionDownload->setId(ActionsInterface::ACCOUNT_FILE_DOWNLOAD);
- $GridActionDownload->setType(DataGridActionType::VIEW_ITEM);
- $GridActionDownload->setName(__('Descargar Archivo'));
- $GridActionDownload->setTitle(__('Descargar Archivo'));
- $GridActionDownload->setIcon($this->icons->getIconDownload());
- $GridActionDownload->setOnClickFunction('file/download');
- $GridActionDownload->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_FILE_DOWNLOAD));
-
- $Grid->setDataActions($GridActionDownload);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::ACCOUNT_FILE_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Archivo'));
- $GridActionDel->setTitle(__('Eliminar Archivo'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNT_FILE_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getAccountsGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Nombre'));
- $GridHeaders->addHeader(__('Cliente'));
- $GridHeaders->addHeader(__('Categoría'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('name');
- $GridData->addDataRowSource('clientName');
- $GridData->addDataRowSource('categoryName');
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblAccounts');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Cuentas'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::ACCOUNTMGR_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchAccount');
- $GridActionSearch->setTitle(__('Buscar Cuenta'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNTMGR_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::ACCOUNTMGR_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Cuenta'));
- $GridActionDel->setTitle(__('Eliminar Cuenta'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNTMGR_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getAccountsHistoryGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Nombre'));
- $GridHeaders->addHeader(__('Cliente'));
- $GridHeaders->addHeader(__('Categoría'));
- $GridHeaders->addHeader(__('Fecha'));
- $GridHeaders->addHeader(__('Estado'));
-
- $iconEdit = clone $this->icons->getIconEdit();
- $iconDelete = clone $this->icons->getIconDelete();
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('name');
- $GridData->addDataRowSource('clientName');
- $GridData->addDataRowSource('categoryName');
- $GridData->addDataRowSource('date');
- $GridData->addDataRowSourceWithIcon('isModify', $iconEdit->setTitle(__('Modificada'))->setClass('opacity50'));
- $GridData->addDataRowSourceWithIcon('isDeleted', $iconDelete->setTitle(__('Eliminada'))->setClass('opacity50'));
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblAccountsHistory');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Cuentas (H)'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::ACCOUNTMGR_HISTORY_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchAccountHistory');
- $GridActionSearch->setTitle(__('Buscar Cuenta'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNTMGR_HISTORY_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionRestore = new DataGridAction();
- $GridActionRestore->setId(ActionsInterface::ACCOUNTMGR_HISTORY_RESTORE);
- $GridActionRestore->setType(DataGridActionType::EDIT_ITEM);
- $GridActionRestore->setName(__('Restaurar Cuenta'));
- $GridActionRestore->setTitle(__('Restaurar Cuenta'));
- $GridActionRestore->setIcon($this->icons->getIconRestore());
- $GridActionRestore->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNTMGR_HISTORY_RESTORE));
-
-// $Grid->setDataActions($GridActionRestore);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::ACCOUNTMGR_HISTORY_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Cuenta'));
- $GridActionDel->setTitle(__('Eliminar Cuenta'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::ACCOUNTMGR_HISTORY_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getUsersGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Nombre'));
- $GridHeaders->addHeader(__('Login'));
- $GridHeaders->addHeader(__('Perfil'));
- $GridHeaders->addHeader(__('Grupo'));
- $GridHeaders->addHeader(__('Propiedades'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('name');
- $GridData->addDataRowSource('login');
- $GridData->addDataRowSource('userProfileName');
- $GridData->addDataRowSource('userGroupName');
- $GridData->addDataRowSourceWithIcon('isAdminApp', $this->icons->getIconAppAdmin());
- $GridData->addDataRowSourceWithIcon('isAdminAcc', $this->icons->getIconAccAdmin());
- $GridData->addDataRowSourceWithIcon('isLdap', $this->icons->getIconLdapUser());
- $GridData->addDataRowSourceWithIcon('isDisabled', $this->icons->getIconDisabled());
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblUsers');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Usuarios'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::USER_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchUser');
- $GridActionSearch->setTitle(__('Buscar Usuario'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- $GridActionNew = new DataGridAction();
- $GridActionNew->setId(ActionsInterface::USER_CREATE);
- $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionNew->setName(__('Nuevo Usuario'));
- $GridActionNew->setTitle(__('Nuevo Usuario'));
- $GridActionNew->setIcon($this->icons->getIconAdd());
- $GridActionNew->setSkip(true);
- $GridActionNew->setOnClickFunction('appMgmt/show');
- $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_CREATE));
-
- $Grid->setDataActions($GridActionNew);
-
- if ($this->acl->checkUserAccess(ActionsInterface::CONFIG_IMPORT)
- && $this->configData->isLdapEnabled()
- ) {
- $GridActionLdapSync = new DataGridAction();
- $GridActionLdapSync->setId(ActionsInterface::CONFIG_LDAP_SYNC);
- $GridActionLdapSync->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionLdapSync->setName(__('Importar usuarios de LDAP'));
- $GridActionLdapSync->setTitle(__('Importar usuarios de LDAP'));
- $GridActionLdapSync->setIcon(new FontIcon('get_app'));
- $GridActionLdapSync->setSkip(true);
- $GridActionLdapSync->setOnClickFunction('appMgmt/ldapSync');
- $GridActionLdapSync->addData('action-route', Acl::getActionRoute(ActionsInterface::CONFIG_LDAP_SYNC));
-
- $Grid->setDataActions($GridActionLdapSync);
- }
-
- // Grid item's actions
- $GridActionView = new DataGridAction();
- $GridActionView->setId(ActionsInterface::USER_VIEW);
- $GridActionView->setType(DataGridActionType::VIEW_ITEM);
- $GridActionView->setName(__('Ver Detalles de Usuario'));
- $GridActionView->setTitle(__('Ver Detalles de Usuario'));
- $GridActionView->setIcon($this->icons->getIconView());
- $GridActionView->setOnClickFunction('appMgmt/show');
- $GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_VIEW));
-
- $Grid->setDataActions($GridActionView);
-
- $GridActionEdit = new DataGridAction();
- $GridActionEdit->setId(ActionsInterface::USER_EDIT);
- $GridActionEdit->setType(DataGridActionType::EDIT_ITEM);
- $GridActionEdit->setName(__('Editar Usuario'));
- $GridActionEdit->setTitle(__('Editar Usuario'));
- $GridActionEdit->setIcon($this->icons->getIconEdit());
- $GridActionEdit->setOnClickFunction('appMgmt/show');
- $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_EDIT));
-
- $Grid->setDataActions($GridActionEdit);
-
- $GridActionEditPass = new DataGridAction();
- $GridActionEditPass->setId(ActionsInterface::USER_EDIT_PASS);
- $GridActionEditPass->setType(DataGridActionType::EDIT_ITEM);
- $GridActionEditPass->setName(__('Cambiar Clave de Usuario'));
- $GridActionEditPass->setTitle(__('Cambiar Clave de Usuario'));
- $GridActionEditPass->setIcon($this->icons->getIconEditPass());
- $GridActionEditPass->setOnClickFunction('appMgmt/show');
- $GridActionEditPass->setFilterRowSource('isLdap');
- $GridActionEditPass->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_EDIT_PASS));
-
- $Grid->setDataActions($GridActionEditPass);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::USER_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Usuario'));
- $GridActionDel->setTitle(__('Eliminar Usuario'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getUserGroupsGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Nombre'));
- $GridHeaders->addHeader(__('Descripción'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('name');
- $GridData->addDataRowSource('description');
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblGroups');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Grupos'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::GROUP_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchGroup');
- $GridActionSearch->setTitle(__('Buscar Grupo'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::GROUP_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionNew = new DataGridAction();
- $GridActionNew->setId(ActionsInterface::GROUP_CREATE);
- $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionNew->setName(__('Nuevo Grupo'));
- $GridActionNew->setTitle(__('Nuevo Grupo'));
- $GridActionNew->setIcon($this->icons->getIconAdd());
- $GridActionNew->setSkip(true);
- $GridActionNew->setOnClickFunction('appMgmt/show');
- $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::GROUP_CREATE));
-
- $Grid->setDataActions($GridActionNew);
-
- $GridActionView = new DataGridAction();
- $GridActionView->setId(ActionsInterface::GROUP_VIEW);
- $GridActionView->setType(DataGridActionType::VIEW_ITEM);
- $GridActionView->setName(__('Ver Grupo'));
- $GridActionView->setTitle(__('Ver Grupo'));
- $GridActionView->setIcon($this->icons->getIconView());
- $GridActionView->setOnClickFunction('appMgmt/show');
- $GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::GROUP_VIEW));
-
- $Grid->setDataActions($GridActionView);
-
- $GridActionEdit = new DataGridAction();
- $GridActionEdit->setId(ActionsInterface::GROUP_EDIT);
- $GridActionEdit->setType(DataGridActionType::EDIT_ITEM);
- $GridActionEdit->setName(__('Editar Grupo'));
- $GridActionEdit->setTitle(__('Editar Grupo'));
- $GridActionEdit->setIcon($this->icons->getIconEdit());
- $GridActionEdit->setOnClickFunction('appMgmt/show');
- $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::GROUP_EDIT));
-
- $Grid->setDataActions($GridActionEdit);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::GROUP_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Grupo'));
- $GridActionDel->setTitle(__('Eliminar Grupo'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::GROUP_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getUserProfilesGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Nombre'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('name');
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblProfiles');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Perfiles'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::PROFILE_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchProfile');
- $GridActionSearch->setTitle(__('Buscar Perfil'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::PROFILE_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionNew = new DataGridAction();
- $GridActionNew->setId(ActionsInterface::PROFILE_CREATE);
- $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionNew->setName(__('Nuevo Perfil'));
- $GridActionNew->setTitle(__('Nuevo Perfil'));
- $GridActionNew->setIcon($this->icons->getIconAdd());
- $GridActionNew->setSkip(true);
- $GridActionNew->setOnClickFunction('appMgmt/show');
- $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::PROFILE_CREATE));
-
- $Grid->setDataActions($GridActionNew);
-
- $GridActionView = new DataGridAction();
- $GridActionView->setId(ActionsInterface::PROFILE_VIEW);
- $GridActionView->setType(DataGridActionType::VIEW_ITEM);
- $GridActionView->setName(__('Ver Detalles de Perfil'));
- $GridActionView->setTitle(__('Ver Detalles de Perfil'));
- $GridActionView->setIcon($this->icons->getIconView());
- $GridActionView->setOnClickFunction('appMgmt/show');
- $GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::PROFILE_VIEW));
-
- $Grid->setDataActions($GridActionView);
-
- $GridActionEdit = new DataGridAction();
- $GridActionEdit->setId(ActionsInterface::PROFILE_EDIT);
- $GridActionEdit->setType(DataGridActionType::EDIT_ITEM);
- $GridActionEdit->setName(__('Editar Perfil'));
- $GridActionEdit->setTitle(__('Editar Perfil'));
- $GridActionEdit->setIcon($this->icons->getIconEdit());
- $GridActionEdit->setOnClickFunction('appMgmt/show');
- $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::PROFILE_EDIT));
-
- $Grid->setDataActions($GridActionEdit);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::PROFILE_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Perfil'));
- $GridActionDel->setTitle(__('Eliminar Perfil'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::PROFILE_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getAuthTokensGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Usuario'));
- $GridHeaders->addHeader(__('Acción'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('userLogin');
- $GridData->addDataRowSource('actionId', false, function ($value) {
- return Acl::getActionInfo($value);
- });
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblTokens');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Autorizaciones API'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::AUTHTOKEN_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchToken');
- $GridActionSearch->setTitle(__('Buscar Token'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionNew = new DataGridAction();
- $GridActionNew->setId(ActionsInterface::AUTHTOKEN_CREATE);
- $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionNew->setName(__('Nueva Autorización'));
- $GridActionNew->setTitle(__('Nueva Autorización'));
- $GridActionNew->setIcon($this->icons->getIconAdd());
- $GridActionNew->setSkip(true);
- $GridActionNew->setOnClickFunction('appMgmt/show');
- $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_CREATE));
-
- $Grid->setDataActions($GridActionNew);
-
- $GridActionView = new DataGridAction();
- $GridActionView->setId(ActionsInterface::AUTHTOKEN_VIEW);
- $GridActionView->setType(DataGridActionType::VIEW_ITEM);
- $GridActionView->setName(__('Ver token de Autorización'));
- $GridActionView->setTitle(__('Ver token de Autorización'));
- $GridActionView->setIcon($this->icons->getIconView());
- $GridActionView->setOnClickFunction('appMgmt/show');
- $GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_VIEW));
-
- $Grid->setDataActions($GridActionView);
-
- $GridActionEdit = new DataGridAction();
- $GridActionEdit->setId(ActionsInterface::AUTHTOKEN_EDIT);
- $GridActionEdit->setType(DataGridActionType::EDIT_ITEM);
- $GridActionEdit->setName(__('Editar Autorización'));
- $GridActionEdit->setTitle(__('Editar Autorización'));
- $GridActionEdit->setIcon($this->icons->getIconEdit());
- $GridActionEdit->setOnClickFunction('appMgmt/show');
- $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_EDIT));
-
- $Grid->setDataActions($GridActionEdit);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::AUTHTOKEN_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Autorización'));
- $GridActionDel->setTitle(__('Eliminar Autorización'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getPublicLinksGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Cuenta'));
- $GridHeaders->addHeader(__('Cliente'));
- $GridHeaders->addHeader(__('Fecha Creación'));
- $GridHeaders->addHeader(__('Fecha Caducidad'));
- $GridHeaders->addHeader(__('Usuario'));
- $GridHeaders->addHeader(__('Notificar'));
- $GridHeaders->addHeader(__('Visitas'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('accountName');
- $GridData->addDataRowSource('clientName');
- $GridData->addDataRowSource('getDateAddFormat', true);
- $GridData->addDataRowSource('getDateExpireFormat', true);
- $GridData->addDataRowSource('userLogin');
- $GridData->addDataRowSource('getNotifyString', true);
- $GridData->addDataRowSource('getCountViewsString', true);
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblLinks');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Enlaces'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::PUBLICLINK_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchLink');
- $GridActionSearch->setTitle(__('Buscar Enlace'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionNew = new DataGridAction();
- $GridActionNew->setId(ActionsInterface::PUBLICLINK_CREATE);
- $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionNew->setName(__('Nuevo Enlace'));
- $GridActionNew->setTitle(__('Nuevo Enlace'));
- $GridActionNew->setIcon($this->icons->getIconAdd());
- $GridActionNew->setSkip(true);
- $GridActionNew->setOnClickFunction('appMgmt/show');
- $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_CREATE));
-
- $Grid->setDataActions($GridActionNew);
-
- $GridActionView = new DataGridAction();
- $GridActionView->setId(ActionsInterface::PUBLICLINK_VIEW);
- $GridActionView->setType(DataGridActionType::VIEW_ITEM);
- $GridActionView->setName(__('Ver Enlace'));
- $GridActionView->setTitle(__('Ver Enlace'));
- $GridActionView->setIcon($this->icons->getIconView());
- $GridActionView->setOnClickFunction('appMgmt/show');
- $GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_VIEW));
-
- $Grid->setDataActions($GridActionView);
-
- $GridActionRefresh = new DataGridAction();
- $GridActionRefresh->setId(ActionsInterface::PUBLICLINK_REFRESH);
- $GridActionRefresh->setName(__('Renovar Enlace'));
- $GridActionRefresh->setTitle(__('Renovar Enlace'));
- $GridActionRefresh->setIcon($this->icons->getIconRefresh());
- $GridActionRefresh->setOnClickFunction('link/refresh');
- $GridActionRefresh->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_REFRESH));
-
- $Grid->setDataActions($GridActionRefresh);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::PUBLICLINK_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Enlace'));
- $GridActionDel->setTitle(__('Eliminar Enlace'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getTagsGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Nombre'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('name');
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblTags');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Etiquetas'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::TAG_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchTag');
- $GridActionSearch->setTitle(__('Buscar Etiqueta'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::TAG_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionNew = new DataGridAction();
- $GridActionNew->setId(ActionsInterface::TAG_CREATE);
- $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionNew->setName(__('Nueva Etiqueta'));
- $GridActionNew->setTitle(__('Nueva Etiqueta'));
- $GridActionNew->setIcon($this->icons->getIconAdd());
- $GridActionNew->setSkip(true);
- $GridActionNew->setOnClickFunction('appMgmt/show');
- $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::TAG_CREATE));
-
- $Grid->setDataActions($GridActionNew);
-
- $GridActionEdit = new DataGridAction();
- $GridActionEdit->setId(ActionsInterface::TAG_EDIT);
- $GridActionEdit->setType(DataGridActionType::EDIT_ITEM);
- $GridActionEdit->setName(__('Editar Etiqueta'));
- $GridActionEdit->setTitle(__('Editar Etiqueta'));
- $GridActionEdit->setIcon($this->icons->getIconEdit());
- $GridActionEdit->setOnClickFunction('appMgmt/show');
- $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::TAG_EDIT));
-
- $Grid->setDataActions($GridActionEdit);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::TAG_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Etiqueta'));
- $GridActionDel->setTitle(__('Eliminar Etiqueta'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('appMgmt/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::TAG_DELETE));
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGridTab
- */
- public function getPluginsGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Plugin'));
- $GridHeaders->addHeader(__('Estado'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('name');
- $GridData->addDataRowSourceWithIcon('enabled', $this->icons->getIconEnabled());
- $GridData->addDataRowSourceWithIcon('enabled', $this->icons->getIconDisabled(), 0);
- $GridData->addDataRowSourceWithIcon('available', $this->icons->getIconDelete()->setTitle(__('No disponible')), 0);
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGridTab($this->view->getTheme());
- $Grid->setId('tblPlugins');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Plugins'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::PLUGIN_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchPlugin');
- $GridActionSearch->setTitle(__('Buscar Plugin'));
- $GridActionSearch->setOnSubmitFunction('appMgmt/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- // Grid item's actions
- $GridActionView = new DataGridAction();
- $GridActionView->setId(ActionsInterface::PLUGIN_VIEW);
- $GridActionView->setType(DataGridActionType::VIEW_ITEM);
- $GridActionView->setName(__('Ver Plugin'));
- $GridActionView->setTitle(__('Ver Plugin'));
- $GridActionView->setIcon($this->icons->getIconView());
- $GridActionView->setOnClickFunction('appMgmt/show');
- $GridActionView->setFilterRowSource('available', 0);
- $GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_VIEW));
-
- $Grid->setDataActions($GridActionView);
-
- $GridActionEnable = new DataGridAction();
- $GridActionEnable->setId(ActionsInterface::PLUGIN_ENABLE);
- $GridActionEnable->setName(__('Habilitar'));
- $GridActionEnable->setTitle(__('Habilitar'));
- $GridActionEnable->setIcon($this->icons->getIconEnabled());
- $GridActionEnable->setOnClickFunction('plugin/toggle');
- $GridActionEnable->setFilterRowSource('enabled');
- $GridActionEnable->setFilterRowSource('available', 0);
- $GridActionEnable->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_ENABLE));
- $GridActionEnable->addData('action-method', 'get');
-
- $Grid->setDataActions($GridActionEnable);
-
- $GridActionDisable = new DataGridAction();
- $GridActionDisable->setId(ActionsInterface::PLUGIN_DISABLE);
- $GridActionDisable->setName(__('Deshabilitar'));
- $GridActionDisable->setTitle(__('Deshabilitar'));
- $GridActionDisable->setIcon($this->icons->getIconDisabled());
- $GridActionDisable->setOnClickFunction('plugin/toggle');
- $GridActionDisable->setFilterRowSource('enabled', 0);
- $GridActionDisable->setFilterRowSource('available', 0);
- $GridActionDisable->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_DISABLE));
- $GridActionDisable->addData('action-method', 'get');
-
- $Grid->setDataActions($GridActionDisable);
-
- $GridActionReset = new DataGridAction();
- $GridActionReset->setId(ActionsInterface::PLUGIN_RESET);
- $GridActionReset->setName(__('Restablecer Datos'));
- $GridActionReset->setTitle(__('Restablecer Datos'));
- $GridActionReset->setIcon($this->icons->getIconRefresh());
- $GridActionReset->setOnClickFunction('plugin/reset');
- $GridActionReset->setFilterRowSource('available', 0);
- $GridActionReset->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_RESET));
- $GridActionReset->addData('action-method', 'get');
-
- $Grid->setDataActions($GridActionReset);
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGrid
- */
- public function getEventLogGrid(QueryResult $queryResult)
- {
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('ID'));
- $GridHeaders->addHeader(__('Fecha / Hora'));
- $GridHeaders->addHeader(__('Nivel'));
- $GridHeaders->addHeader(__('Evento'));
- $GridHeaders->addHeader(__('Login'));
- $GridHeaders->addHeader(__('IP'));
- $GridHeaders->addHeader(__('Descripción'));
-
- $isDemoMode = $this->configData->isDemoEnabled();
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('id');
- $GridData->addDataRowSource('date');
- $GridData->addDataRowSource('level');
- $GridData->addDataRowSource('action');
- $GridData->addDataRowSource('login');
- $GridData->addDataRowSource('ipAddress', false,
- function ($value) use ($isDemoMode) {
- return $isDemoMode ? preg_replace('#\d+#', '*', $value) : $value;
- });
- $GridData->addDataRowSource('description', false,
- function ($value) use ($isDemoMode) {
- if ($isDemoMode) {
- $value = preg_replace('/\\d+\\.\\d+\\.\\d+\\.\\d+/', "*.*.*.*", $value);
- }
-
- $text = str_replace(';;', PHP_EOL, $value);
-
- if (preg_match('/^SQL.*/m', $text)) {
- $text = preg_replace([
- '/([a-zA-Z_]+),/m',
- '/(UPDATE|DELETE|TRUNCATE|INSERT|SELECT|WHERE|LEFT|ORDER|LIMIT|FROM)/m'],
- ['\\1,
', '
\\1'],
- $text);
- }
-
-// if (strlen($text) >= 100) {
-// $text = wordwrap($text, 100, PHP_EOL, true);
-// }
-
- return str_replace(PHP_EOL, '
', $text);
- });
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGrid($this->view->getTheme());
- $Grid->setId('tblEventLog');
- $Grid->setDataTableTemplate('datagrid-table-simple', 'grid');
- $Grid->setDataRowTemplate('datagrid-rows', $this->view->getBase());
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Registro de Eventos'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::EVENTLOG_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchEvent');
- $GridActionSearch->setTitle(__('Buscar Evento'));
- $GridActionSearch->setOnSubmitFunction('eventlog/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::EVENTLOG_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
-
- $GridActionRefresh = new DataGridAction();
- $GridActionRefresh->setId(ActionsInterface::EVENTLOG_SEARCH);
- $GridActionRefresh->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionRefresh->setName(__('Refrescar'));
- $GridActionRefresh->setTitle(__('Refrescar'));
- $GridActionRefresh->setIcon($this->icons->getIconRefresh());
- $GridActionRefresh->setOnClickFunction('eventlog/search');
- $GridActionRefresh->addData('action-route', Acl::getActionRoute(ActionsInterface::EVENTLOG_SEARCH));
- $GridActionRefresh->addData('target', '#data-table-tblEventLog');
-
- $Grid->setDataActions($GridActionRefresh);
-
- $GridActionClear = new DataGridAction();
- $GridActionClear->setId(ActionsInterface::EVENTLOG_CLEAR);
- $GridActionClear->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionClear->setName(__('Vaciar registro de eventos'));
- $GridActionClear->setTitle(__('Vaciar registro de eventos'));
- $GridActionClear->setIcon($this->icons->getIconClear());
- $GridActionClear->setOnClickFunction('eventlog/clear');
- $GridActionClear->addData('action-route', Acl::getActionRoute(ActionsInterface::EVENTLOG_CLEAR));
- $GridActionClear->addData('nextaction', Acl::getActionRoute(ActionsInterface::EVENTLOG));
-
- $Grid->setDataActions($GridActionClear);
-
- $Grid->setPager($this->getPager($GridActionSearch)
- ->setOnClickFunction('eventlog/nav')
- );
-
- return $Grid;
- }
-
- /**
- * @param QueryResult $queryResult
- *
- * @return DataGrid
- */
- public function getNotificationsGrid(QueryResult $queryResult)
- {
- $isAdminApp = $this->context->getUserData()->getIsAdminApp();
-
- // Grid Header
- $GridHeaders = new DataGridHeader();
- $GridHeaders->addHeader(__('Fecha'));
- $GridHeaders->addHeader(__('Tipo'));
- $GridHeaders->addHeader(__('Componente'));
- $GridHeaders->addHeader(__('Descripción'));
- $GridHeaders->addHeader(__('Estado'));
-
- // Grid Data
- $GridData = new DataGridData();
- $GridData->setDataRowSourceId('id');
- $GridData->addDataRowSource('date', false,
- function ($value) {
- return DateUtil::getDateFromUnix($value);
- });
- $GridData->addDataRowSource('type');
- $GridData->addDataRowSource('component');
- $GridData->addDataRowSource('description');
- $GridData->addDataRowSourceWithIcon('checked', $this->icons->getIconEnabled()->setTitle(__('Leída')));
- $GridData->addDataRowSourceWithIcon('onlyAdmin', $this->icons->getIconAppAdmin()->setTitle(__('Sólo Admins')));
- $GridData->addDataRowSourceWithIcon('sticky', $this->icons->getIconGroup()->setTitle(__('Global')));
- $GridData->setData($queryResult);
-
- // Grid
- $Grid = new DataGrid($this->view->getTheme());
- $Grid->setId('tblNotifications');
- $Grid->setDataRowTemplate('datagrid-rows', 'grid');
- $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid');
- $Grid->setHeader($GridHeaders);
- $Grid->setData($GridData);
- $Grid->setTitle(__('Notificaciones'));
- $Grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
-
- // Grid Actions
- $GridActionSearch = new DataGridActionSearch();
- $GridActionSearch->setId(ActionsInterface::NOTIFICATION_SEARCH);
- $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
- $GridActionSearch->setName('frmSearchNotification');
- $GridActionSearch->setTitle(__('Buscar Notificación'));
- $GridActionSearch->setOnSubmitFunction('notification/search');
- $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_SEARCH));
-
- $Grid->setDataActions($GridActionSearch);
- $Grid->setPager($this->getPager($GridActionSearch));
-
- if ($isAdminApp) {
- // Grid item's actions
- $GridActionNew = new DataGridAction();
- $GridActionNew->setId(ActionsInterface::NOTIFICATION_CREATE);
- $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM);
- $GridActionNew->setName(__('Nueva Notificación'));
- $GridActionNew->setTitle(__('Nueva Notificación'));
- $GridActionNew->setIcon($this->icons->getIconAdd());
- $GridActionNew->setSkip(true);
- $GridActionNew->setOnClickFunction('notification/show');
- $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_CREATE));
-
- $Grid->setDataActions($GridActionNew);
- }
-
- $GridActionView = new DataGridAction();
- $GridActionView->setId(ActionsInterface::NOTIFICATION_VIEW);
- $GridActionView->setType(DataGridActionType::VIEW_ITEM);
- $GridActionView->setName(__('Ver Notificación'));
- $GridActionView->setTitle(__('Ver Notificación'));
- $GridActionView->setIcon($this->icons->getIconView());
- $GridActionView->setOnClickFunction('notification/show');
- $GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_VIEW));
-
- $Grid->setDataActions($GridActionView);
-
- $GridActionCheck = new DataGridAction();
- $GridActionCheck->setId(ActionsInterface::NOTIFICATION_CHECK);
- $GridActionCheck->setName(__('Marcar Notificación'));
- $GridActionCheck->setTitle(__('Marcar Notificación'));
- $GridActionCheck->setIcon($this->icons->getIconEnabled());
- $GridActionCheck->setOnClickFunction('notification/check');
- $GridActionCheck->setFilterRowSource('checked');
- $GridActionCheck->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_CHECK));
- $GridActionCheck->addData('nextaction', Acl::getActionRoute(ActionsInterface::NOTIFICATION));
-
- $Grid->setDataActions($GridActionCheck);
-
- $GridActionEdit = new DataGridAction();
- $GridActionEdit->setId(ActionsInterface::NOTIFICATION_EDIT);
- $GridActionEdit->setName(__('Editar Notificación'));
- $GridActionEdit->setTitle(__('Editar Notificación'));
- $GridActionEdit->setIcon($this->icons->getIconEdit());
- $GridActionEdit->setOnClickFunction('notification/show');
- $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_EDIT));
-
- $Grid->setDataActions($GridActionEdit);
-
- $GridActionDel = new DataGridAction();
- $GridActionDel->setId(ActionsInterface::NOTIFICATION_DELETE);
- $GridActionDel->setType(DataGridActionType::DELETE_ITEM);
- $GridActionDel->setName(__('Eliminar Notificación'));
- $GridActionDel->setTitle(__('Eliminar Notificación'));
- $GridActionDel->setIcon($this->icons->getIconDelete());
- $GridActionDel->setOnClickFunction('notification/delete');
- $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::NOTIFICATION_DELETE));
- $GridActionDel->addData('nextaction', Acl::getActionRoute(ActionsInterface::NOTIFICATION));
-
- if (!$isAdminApp) {
- $GridActionCheck->setFilterRowSource('sticky');
- $GridActionEdit->setFilterRowSource('sticky');
- $GridActionDel->setFilterRowSource('sticky');
- }
-
- $Grid->setDataActions($GridActionDel);
- $Grid->setDataActions($GridActionDel, true);
-
- return $Grid;
- }
-
- /**
- * Actualizar los datos del paginador
- *
- * @param DataGridInterface $dataGrid
- * @param ItemSearchData $itemSearchData
- *
- * @return DataGridInterface
- */
- public function updatePager(DataGridInterface $dataGrid, ItemSearchData $itemSearchData)
- {
- $dataGrid->getPager()
- ->setLimitStart($itemSearchData->getLimitStart())
- ->setLimitCount($itemSearchData->getLimitCount())
- ->setFilterOn($itemSearchData->getSeachString() !== '');
-
- $dataGrid->updatePager();
-
- return $dataGrid;
- }
-
- /**
- * @param mixed $queryTimeStart
- */
- public function setQueryTimeStart(float $queryTimeStart)
- {
- $this->queryTimeStart = $queryTimeStart;
- }
-
- /**
- * @throws \Psr\Container\ContainerExceptionInterface
- * @throws \Psr\Container\NotFoundExceptionInterface
- */
- protected function initialize()
- {
- $this->acl = $this->dic->get(Acl::class);
- $this->icons = $this->view->getTheme()->getIcons();
- }
-}
\ No newline at end of file
diff --git a/app/modules/web/Controllers/ItemManagerController.php b/app/modules/web/Controllers/ItemManagerController.php
index 67164054..6ab288fc 100644
--- a/app/modules/web/Controllers/ItemManagerController.php
+++ b/app/modules/web/Controllers/ItemManagerController.php
@@ -27,7 +27,14 @@ namespace SP\Modules\Web\Controllers;
use SP\Core\Acl\Acl;
use SP\Core\Events\Event;
use SP\DataModel\ItemSearchData;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\AccountGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\AccountHistoryGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\CategoryGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\ClientGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\CustomFieldGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\FileGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\PluginGrid;
+use SP\Modules\Web\Controllers\Helpers\Grid\TagGrid;
use SP\Modules\Web\Controllers\Helpers\TabsGridHelper;
use SP\Services\Account\AccountFileService;
use SP\Services\Account\AccountHistoryService;
@@ -49,10 +56,6 @@ final class ItemManagerController extends ControllerBase
* @var ItemSearchData
*/
protected $itemSearchData;
- /**
- * @var ItemsGridHelper
- */
- protected $itemsGridHelper;
/**
* @var TabsGridHelper
*/
@@ -78,11 +81,8 @@ final class ItemManagerController extends ControllerBase
$this->itemSearchData = new ItemSearchData();
$this->itemSearchData->setLimitCount($this->configData->getAccountCount());
- $this->itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$this->tabsGridHelper = $this->dic->get(TabsGridHelper::class);
- $this->itemsGridHelper->setQueryTimeStart(microtime(true));
-
if ($this->checkAccess(Acl::CATEGORY)) {
$this->tabsGridHelper->addTab($this->getCategoriesList());
}
@@ -131,7 +131,9 @@ final class ItemManagerController extends ControllerBase
*/
protected function getCategoriesList()
{
- return $this->itemsGridHelper->getCategoriesGrid($this->dic->get(CategoryService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(CategoryGrid::class)
+ ->getGrid($this->dic->get(CategoryService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -143,7 +145,9 @@ final class ItemManagerController extends ControllerBase
*/
protected function getTagsList()
{
- return $this->itemsGridHelper->getTagsGrid($this->dic->get(TagService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(TagGrid::class)
+ ->getGrid($this->dic->get(TagService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -155,7 +159,9 @@ final class ItemManagerController extends ControllerBase
*/
protected function getClientsList()
{
- return $this->itemsGridHelper->getClientsGrid($this->dic->get(ClientService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(ClientGrid::class)
+ ->getGrid($this->dic->get(ClientService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -167,7 +173,9 @@ final class ItemManagerController extends ControllerBase
*/
protected function getCustomFieldsList()
{
- return $this->itemsGridHelper->getCustomFieldsGrid($this->dic->get(CustomFieldDefService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(CustomFieldGrid::class)
+ ->getGrid($this->dic->get(CustomFieldDefService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -179,7 +187,9 @@ final class ItemManagerController extends ControllerBase
*/
protected function getAccountFilesList()
{
- return $this->itemsGridHelper->getFilesGrid($this->dic->get(AccountFileService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(FileGrid::class)
+ ->getGrid($this->dic->get(AccountFileService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -191,7 +201,9 @@ final class ItemManagerController extends ControllerBase
*/
protected function getAccountsList()
{
- return $this->itemsGridHelper->getAccountsGrid($this->dic->get(AccountService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(AccountGrid::class)
+ ->getGrid($this->dic->get(AccountService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -203,7 +215,9 @@ final class ItemManagerController extends ControllerBase
*/
protected function getAccountsHistoryList()
{
- return $this->itemsGridHelper->getAccountsHistoryGrid($this->dic->get(AccountHistoryService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(AccountHistoryGrid::class)
+ ->getGrid($this->dic->get(AccountHistoryService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
@@ -215,7 +229,9 @@ final class ItemManagerController extends ControllerBase
*/
protected function getPluginsList()
{
- return $this->itemsGridHelper->getPluginsGrid($this->dic->get(PluginService::class)->search($this->itemSearchData))->updatePager();
+ return $this->dic->get(PluginGrid::class)
+ ->getGrid($this->dic->get(PluginService::class)->search($this->itemSearchData))
+ ->updatePager();
}
/**
diff --git a/app/modules/web/Controllers/NotificationController.php b/app/modules/web/Controllers/NotificationController.php
index 93b7a811..a01bd184 100644
--- a/app/modules/web/Controllers/NotificationController.php
+++ b/app/modules/web/Controllers/NotificationController.php
@@ -31,7 +31,7 @@ use SP\Core\Events\Event;
use SP\Core\Events\EventMessage;
use SP\DataModel\NotificationData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\NotificationGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\NotificationForm;
@@ -82,12 +82,11 @@ final class NotificationController extends ControllerBase implements CrudControl
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
- $itemsGridHelper->setQueryTimeStart(microtime(true));
-
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getNotificationsGrid($this->notificationService->search($itemSearchData)), $itemSearchData);
+ $notificationGrid = $this->dic->get(NotificationGrid::class);
+
+ return $notificationGrid->updatePager($notificationGrid->getGrid($this->notificationService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/PluginController.php b/app/modules/web/Controllers/PluginController.php
index af716e03..1f7eb9e0 100644
--- a/app/modules/web/Controllers/PluginController.php
+++ b/app/modules/web/Controllers/PluginController.php
@@ -31,7 +31,7 @@ use SP\Core\Events\Event;
use SP\Core\Events\EventMessage;
use SP\DataModel\PluginData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\PluginGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Services\Plugin\PluginService;
@@ -78,10 +78,11 @@ final class PluginController extends ControllerBase
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getPluginsGrid($this->pluginService->search($itemSearchData)), $itemSearchData);
+ $pluginGrid = $this->dic->get(PluginGrid::class);
+
+ return $pluginGrid->updatePager($pluginGrid->getGrid($this->pluginService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/PublicLinkController.php b/app/modules/web/Controllers/PublicLinkController.php
index 019ff7af..8573a772 100644
--- a/app/modules/web/Controllers/PublicLinkController.php
+++ b/app/modules/web/Controllers/PublicLinkController.php
@@ -32,7 +32,7 @@ use SP\Core\Exceptions\ValidationException;
use SP\DataModel\PublicLinkData;
use SP\DataModel\PublicLinkListData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\PublicLinkGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\PublicLinkForm;
@@ -84,10 +84,11 @@ final class PublicLinkController extends ControllerBase implements CrudControlle
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getPublicLinksGrid($this->publicLinkService->search($itemSearchData)), $itemSearchData);
+ $publicLinkGrid = $this->dic->get(PublicLinkGrid::class);
+
+ return $publicLinkGrid->updatePager($publicLinkGrid->getGrid($this->publicLinkService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/StatusController.php b/app/modules/web/Controllers/StatusController.php
index e3ecf9be..5e479d62 100644
--- a/app/modules/web/Controllers/StatusController.php
+++ b/app/modules/web/Controllers/StatusController.php
@@ -82,6 +82,7 @@ final class StatusController extends SimpleControllerBase
}
$this->returnJsonResponseData([]);
+ return;
}
}
@@ -128,6 +129,7 @@ final class StatusController extends SimpleControllerBase
}
$this->returnJsonResponseData($notices);
+ return;
}
logger($requestData->message);
diff --git a/app/modules/web/Controllers/TagController.php b/app/modules/web/Controllers/TagController.php
index ef36ae1c..908a3bd9 100644
--- a/app/modules/web/Controllers/TagController.php
+++ b/app/modules/web/Controllers/TagController.php
@@ -29,7 +29,7 @@ use SP\Core\Events\Event;
use SP\Core\Exceptions\ValidationException;
use SP\DataModel\TagData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\TagGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\TagForm;
@@ -78,10 +78,11 @@ final class TagController extends ControllerBase implements CrudControllerInterf
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getTagsGrid($this->tagService->search($itemSearchData)), $itemSearchData);
+ $tagGrid = $this->dic->get(TagGrid::class);
+
+ return $tagGrid->updatePager($tagGrid->getGrid($this->tagService->search($itemSearchData)), $itemSearchData);
}
/**
@@ -120,6 +121,7 @@ final class TagController extends ControllerBase implements CrudControllerInterf
*
* @throws \SP\Core\Exceptions\ConstraintException
* @throws \SP\Core\Exceptions\QueryException
+ * @throws \SP\Repositories\NoSuchItemException
*/
protected function setViewData($tagId = null)
{
diff --git a/app/modules/web/Controllers/UserController.php b/app/modules/web/Controllers/UserController.php
index 4080e8db..99c9f2c7 100644
--- a/app/modules/web/Controllers/UserController.php
+++ b/app/modules/web/Controllers/UserController.php
@@ -30,7 +30,7 @@ use SP\Core\Events\EventMessage;
use SP\Core\Exceptions\ValidationException;
use SP\DataModel\UserData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\UserGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\UserForm;
@@ -85,10 +85,11 @@ final class UserController extends ControllerBase implements CrudControllerInter
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getUsersGrid($this->userService->search($itemSearchData)), $itemSearchData);
+ $userGrid = $this->dic->get(UserGrid::class);
+
+ return $userGrid->updatePager($userGrid->getGrid($this->userService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/UserGroupController.php b/app/modules/web/Controllers/UserGroupController.php
index 718d2767..7af418c0 100644
--- a/app/modules/web/Controllers/UserGroupController.php
+++ b/app/modules/web/Controllers/UserGroupController.php
@@ -30,7 +30,7 @@ use SP\Core\Events\EventMessage;
use SP\Core\Exceptions\ValidationException;
use SP\DataModel\UserGroupData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\UserGroupGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\UserGroupForm;
@@ -86,10 +86,11 @@ final class UserGroupController extends ControllerBase implements CrudController
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getUserGroupsGrid($this->userGroupService->search($itemSearchData)), $itemSearchData);
+ $userGroupGrid = $this->dic->get(UserGroupGrid::class);
+
+ return $userGroupGrid->updatePager($userGroupGrid->getGrid($this->userGroupService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/app/modules/web/Controllers/UserProfileController.php b/app/modules/web/Controllers/UserProfileController.php
index 0fed39a9..6207c5d5 100644
--- a/app/modules/web/Controllers/UserProfileController.php
+++ b/app/modules/web/Controllers/UserProfileController.php
@@ -31,7 +31,7 @@ use SP\Core\Exceptions\ValidationException;
use SP\DataModel\ProfileData;
use SP\DataModel\UserProfileData;
use SP\Http\JsonResponse;
-use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper;
+use SP\Modules\Web\Controllers\Helpers\Grid\UserProfileGrid;
use SP\Modules\Web\Controllers\Traits\ItemTrait;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Modules\Web\Forms\UserProfileForm;
@@ -80,10 +80,11 @@ final class UserProfileController extends ControllerBase implements CrudControll
*/
protected function getSearchGrid()
{
- $itemsGridHelper = $this->dic->get(ItemsGridHelper::class);
$itemSearchData = $this->getSearchData($this->configData->getAccountCount(), $this->request);
- return $itemsGridHelper->updatePager($itemsGridHelper->getUserProfilesGrid($this->userProfileService->search($itemSearchData)), $itemSearchData);
+ $userProfileGrid = $this->dic->get(UserProfileGrid::class);
+
+ return $userProfileGrid->updatePager($userProfileGrid->getGrid($this->userProfileService->search($itemSearchData)), $itemSearchData);
}
/**
diff --git a/lib/SP/Core/Acl/Actions.php b/lib/SP/Core/Acl/Actions.php
index b26ec102..38af8f1c 100644
--- a/lib/SP/Core/Acl/Actions.php
+++ b/lib/SP/Core/Acl/Actions.php
@@ -85,7 +85,9 @@ final class Actions
*/
protected function loadCache()
{
- if ($this->fileStorage->isExpired(self::ACTIONS_CACHE_FILE, self::CACHE_EXPIRE)) {
+ if ($this->fileStorage->isExpired(self::ACTIONS_CACHE_FILE, self::CACHE_EXPIRE)
+ || $this->fileStorage->isExpiredDate(self::ACTIONS_CACHE_FILE, $this->xmlFileStorage->getFileHandler()->getFileTime())
+ ) {
$this->mapAndSave();
} else {
try {
diff --git a/lib/SP/Repositories/Account/AccountHistoryRepository.php b/lib/SP/Repositories/Account/AccountHistoryRepository.php
index 140be8f4..f3382ed1 100644
--- a/lib/SP/Repositories/Account/AccountHistoryRepository.php
+++ b/lib/SP/Repositories/Account/AccountHistoryRepository.php
@@ -347,7 +347,7 @@ final class AccountHistoryRepository extends Repository implements RepositoryIte
INNER JOIN Client C ON AH.clientId = C.id
INNER JOIN Category C2 ON AH.categoryId = C2.id
');
- $queryData->setOrder('AH.name, C.name, AH.id DESC');
+ $queryData->setOrder('date DESC, AH.name, C.name, AH.id DESC');
if ($itemSearchData->getSeachString() !== '') {
$queryData->setWhere('AH.name LIKE ? OR C.name LIKE ?');
diff --git a/lib/SP/Repositories/Account/AccountRepository.php b/lib/SP/Repositories/Account/AccountRepository.php
index 15a9b07e..89ae875e 100644
--- a/lib/SP/Repositories/Account/AccountRepository.php
+++ b/lib/SP/Repositories/Account/AccountRepository.php
@@ -172,8 +172,6 @@ final class AccountRepository extends Repository implements RepositoryItemInterf
userId = ?,
userGroupId = ?,
userEditId = ?,
- otherUserEdit = ?,
- otherUserGroupEdit = ?,
isPrivate = ?,
isPrivateGroup = ?,
passDate = UNIX_TIMESTAMP(),
@@ -194,8 +192,6 @@ final class AccountRepository extends Repository implements RepositoryItemInterf
$itemData->userId,
$itemData->userGroupId,
$itemData->userId,
- $itemData->otherUserEdit,
- $itemData->otherUserGroupEdit,
$itemData->isPrivate,
$itemData->isPrivateGroup,
$itemData->passDateChange,
diff --git a/lib/SP/Services/Account/AccountService.php b/lib/SP/Services/Account/AccountService.php
index dc64c551..635b5870 100644
--- a/lib/SP/Services/Account/AccountService.php
+++ b/lib/SP/Services/Account/AccountService.php
@@ -29,6 +29,7 @@ use SP\Core\Crypt\Crypt;
use SP\Core\Exceptions\QueryException;
use SP\Core\Exceptions\SPException;
use SP\DataModel\AccountData;
+use SP\DataModel\AccountHistoryData;
use SP\DataModel\AccountPassData;
use SP\DataModel\AccountSearchVData;
use SP\DataModel\Dto\AccountDetailsResponse;
@@ -271,6 +272,34 @@ final class AccountService extends Service implements AccountServiceInterface
}
}
+ /**
+ * @param AccountHistoryData $data
+ *
+ * @return int
+ * @throws QueryException
+ * @throws \SP\Core\Exceptions\ConstraintException
+ */
+ public function createFromHistory(AccountHistoryData $data)
+ {
+ $accountRequest = new AccountRequest();
+ $accountRequest->name = $data->getName();
+ $accountRequest->categoryId = $data->getCategoryId();
+ $accountRequest->clientId = $data->getClientId();
+ $accountRequest->url = $data->getUrl();
+ $accountRequest->login = $data->getLogin();
+ $accountRequest->pass = $data->getPass();
+ $accountRequest->key = $data->getKey();
+ $accountRequest->notes = $data->getNotes();
+ $accountRequest->userId = $data->getUserId();
+ $accountRequest->userGroupId = $data->getUserGroupId();
+ $accountRequest->passDateChange = $data->getPassDateChange();
+ $accountRequest->parentId = $data->getParentId();
+ $accountRequest->isPrivate = $data->getIsPrivate();
+ $accountRequest->isPrivateGroup = $data->getIsPrivateGroup();
+
+ return $this->accountRepository->create($accountRequest);
+ }
+
/**
* Updates external items for the account
*
@@ -313,8 +342,8 @@ final class AccountService extends Service implements AccountServiceInterface
return $accountHistoryRepository->create(
new AccountHistoryCreateDto(
$accountId,
- $isDelete,
!$isDelete,
+ $isDelete,
$configService->getByParam('masterPwd'))
);
}
@@ -422,15 +451,18 @@ final class AccountService extends Service implements AccountServiceInterface
* @param $id
*
* @return AccountService
- * @throws NoSuchItemException
- * @throws QueryException
- * @throws \SP\Core\Exceptions\ConstraintException
+ * @throws ServiceException
*/
public function delete($id)
{
- if ($this->accountRepository->delete($id) === 0) {
- throw new NoSuchItemException(__u('Cuenta no encontrada'));
- }
+ $this->transactionAware(function () use ($id) {
+ $this->addHistory($id, 1);
+
+ if ($this->accountRepository->delete($id) === 0) {
+ throw new NoSuchItemException(__u('Cuenta no encontrada'));
+ }
+
+ });
return $this;
}
diff --git a/lib/SP/Services/Install/Installer.php b/lib/SP/Services/Install/Installer.php
index 490931a7..6a355d53 100644
--- a/lib/SP/Services/Install/Installer.php
+++ b/lib/SP/Services/Install/Installer.php
@@ -55,7 +55,7 @@ final class Installer extends Service
*/
const VERSION = [3, 0, 0];
const VERSION_TEXT = '3.0-beta';
- const BUILD = 18080601;
+ const BUILD = 18080701;
/**
* @var DatabaseSetupInterface
diff --git a/lib/SP/Storage/File/FileCache.php b/lib/SP/Storage/File/FileCache.php
index e5715940..594b30a6 100644
--- a/lib/SP/Storage/File/FileCache.php
+++ b/lib/SP/Storage/File/FileCache.php
@@ -39,15 +39,9 @@ final class FileCache implements FileStorageInterface
*/
public function load($path)
{
- if (!file_exists($path)) {
- throw new FileException(sprintf(__('No es posible leer el archivo (%s)'), $path));
- }
+ $file = new FileHandler($path);
- if (!($data = file_get_contents($path))) {
- throw new FileException(sprintf(__('Error al leer datos del archivo (%s)'), $path));
- }
-
- return unserialize($data);
+ return unserialize($file->checkIsReadable()->readToString());
}
/**
@@ -59,23 +53,28 @@ final class FileCache implements FileStorageInterface
*/
public function save($path, $data)
{
- $dir = dirname($path);
+ $this->createPath(dirname($path));
- if (!is_dir($dir) && mkdir($dir, 0700, true) === false) {
- throw new FileException(sprintf(__('No es posible crear el directorio (%s)'), $dir));
- }
-
- if (file_exists($path) && !is_writable($path)) {
- throw new FileException(sprintf(__('No es posible escribir en el archivo (%s)'), $path));
- }
-
- if (!file_put_contents($path, serialize($data))) {
- throw new FileException(sprintf(__('No es posible escribir en el archivo (%s)'), $path));
- }
+ $file = new FileHandler($path);
+ $file->checkIsWritable()
+ ->write(serialize($data))
+ ->close();
return $this;
}
+ /**
+ * @param $path
+ *
+ * @throws FileException
+ */
+ public function createPath($path)
+ {
+ if (!is_dir($path) && mkdir($path, 0700, true) === false) {
+ throw new FileException(sprintf(__('No es posible crear el directorio (%s)'), $path));
+ }
+ }
+
/**
* @param string $path
*
@@ -84,13 +83,8 @@ final class FileCache implements FileStorageInterface
*/
public function delete($path)
{
- if (file_exists($path) && !is_writable($path)) {
- throw new FileException(sprintf(__('No es posible abrir el archivo (%s)'), $path));
- }
-
- if (!unlink($path)) {
- throw new FileException(sprintf(__('Error al eliminar el archivo (%s)'), $path));
- }
+ $file = new FileHandler($path);
+ $file->delete();
return $this;
}
@@ -101,11 +95,15 @@ final class FileCache implements FileStorageInterface
* @param string $path
* @param int $time
*
- * @return mixed
+ * @return bool
+ * @throws FileException
*/
- public function isExpired($path, $time = 86400)
+ public function isExpired($path, $time = 86400): bool
{
- return !file_exists($path) || time() > filemtime($path) + $time;
+ $file = new FileHandler($path);
+ $file->checkFileExists();
+
+ return time() > $file->getFileTime() + $time;
}
/**
@@ -114,10 +112,14 @@ final class FileCache implements FileStorageInterface
* @param string $path
* @param int $date
*
- * @return mixed
+ * @return bool
+ * @throws FileException
*/
- public function isExpiredDate($path, $date)
+ public function isExpiredDate($path, $date): bool
{
- return !file_exists($path) || (int)$date > filemtime($path);
+ $file = new FileHandler($path);
+ $file->checkFileExists();
+
+ return (int)$date > $file->getFileTime();
}
}
\ No newline at end of file
diff --git a/lib/SP/Storage/File/FileCachePacked.php b/lib/SP/Storage/File/FileCachePacked.php
index 25c44666..de0236eb 100644
--- a/lib/SP/Storage/File/FileCachePacked.php
+++ b/lib/SP/Storage/File/FileCachePacked.php
@@ -47,23 +47,18 @@ final class FileCachePacked implements FileStorageInterface
*
* @return mixed
* @throws \RuntimeException
+ * @throws FileException
*/
public function load($path)
{
- if (!file_exists($path)) {
- throw new RuntimeException(sprintf(__('No es posible leer/escribir el archivo (%s)'), $path));
- }
+ $file = new FileHandler($path);
- if (!($data = file_get_contents($path))) {
- throw new RuntimeException(sprintf(__('Error al leer datos del archivo (%s)'), $path));
- }
-
- if (!($data = gzuncompress($data))) {
- throw new RuntimeException(sprintf(__('Error al descomprimir datos del archivo (%s)'), $path));
+ if (!($data = gzuncompress($file->checkIsReadable()->readToString()))) {
+ throw new FileException(sprintf(__('Error al descomprimir datos del archivo (%s)'), $path));
}
if (($this->data = unserialize($data)) === false) {
- throw new RuntimeException(__('Error al obtener los datos'));
+ throw new FileException(__('Error al obtener los datos'));
}
$this->loaded = true;
@@ -76,6 +71,7 @@ final class FileCachePacked implements FileStorageInterface
* @param mixed $data
*
* @return FileStorageInterface
+ * @throws FileException
*/
public function save($path, $data = null)
{
@@ -91,25 +87,33 @@ final class FileCachePacked implements FileStorageInterface
/**
* @param $path
* @param $data
+ *
+ * @throws FileException
*/
protected function saveData($path, $data)
{
- $dir = dirname($path);
- if (!is_dir($dir) && mkdir($dir, 0700, true) === false) {
- throw new RuntimeException(sprintf(__('No es posible crear el directorio (%s)'), $dir));
- }
-
- if (file_exists($path) && !is_writable($path)) {
- throw new RuntimeException(sprintf(__('No es posible leer/escribir el archivo (%s)'), $path));
- }
+ $this->createPath(dirname($path));
if (!($data = gzcompress(serialize($data)))) {
- throw new RuntimeException(sprintf(__('Error al comprimir datos del archivo (%s)'), $path));
+ throw new FileException(sprintf(__('Error al comprimir datos del archivo (%s)'), $path));
}
- if (!file_put_contents($path, $data)) {
- throw new RuntimeException(sprintf(__('Error al escribir datos en el archivo (%s)'), $path));
+ $file = new FileHandler($path);
+ $file->checkIsWritable()
+ ->write(gzcompress(serialize($data)))
+ ->close();
+ }
+
+ /**
+ * @param $path
+ *
+ * @throws FileException
+ */
+ public function createPath($path)
+ {
+ if (!is_dir($path) && mkdir($path, 0700, true) === false) {
+ throw new FileException(sprintf(__('No es posible crear el directorio (%s)'), $path));
}
}
@@ -117,16 +121,12 @@ final class FileCachePacked implements FileStorageInterface
* @param string $path
*
* @return FileStorageInterface
+ * @throws FileException
*/
public function delete($path)
{
- if (file_exists($path) && !is_writable($path)) {
- throw new RuntimeException(sprintf(__('No es posible leer/escribir el archivo (%s)'), $path));
- }
-
- if (!unlink($path)) {
- throw new RuntimeException(sprintf(__('Error al eliminar el archivo (%s)'), $path));
- }
+ $file = new FileHandler($path);
+ $file->delete();
return $this;
}
@@ -168,10 +168,31 @@ final class FileCachePacked implements FileStorageInterface
* @param string $path
* @param int $time
*
- * @return mixed
+ * @return bool
+ * @throws FileException
*/
- public function isExpired($path, $time = 86400)
+ public function isExpired($path, $time = 86400): bool
{
- // TODO: Implement isExpired() method.
+ $file = new FileHandler($path);
+ $file->checkFileExists();
+
+ return time() > $file->getFileTime() + $time;
+ }
+
+ /**
+ * Returns if the file is expired adding time to modification date
+ *
+ * @param string $path
+ * @param int $date
+ *
+ * @return bool
+ * @throws FileException
+ */
+ public function isExpiredDate($path, $date): bool
+ {
+ $file = new FileHandler($path);
+ $file->checkFileExists();
+
+ return (int)$date > $file->getFileTime();
}
}
\ No newline at end of file
diff --git a/lib/SP/Storage/File/FileHandler.php b/lib/SP/Storage/File/FileHandler.php
index 045822da..444ee608 100644
--- a/lib/SP/Storage/File/FileHandler.php
+++ b/lib/SP/Storage/File/FileHandler.php
@@ -265,4 +265,15 @@ final class FileHandler
return $this;
}
+
+ /**
+ * @return int
+ * @throws FileException
+ */
+ public function getFileTime(): int
+ {
+ $this->checkIsReadable();
+
+ return filemtime($this->file) ?: 0;
+ }
}
\ No newline at end of file
diff --git a/lib/SP/Storage/File/FileStorageInterface.php b/lib/SP/Storage/File/FileStorageInterface.php
index 447493ab..d6270e6a 100644
--- a/lib/SP/Storage/File/FileStorageInterface.php
+++ b/lib/SP/Storage/File/FileStorageInterface.php
@@ -61,7 +61,18 @@ interface FileStorageInterface
* @param string $path
* @param int $time
*
- * @return mixed
+ * @return bool
*/
- public function isExpired($path, $time = 86400);
+ public function isExpired($path, $time = 86400): bool;
+
+ /**
+ * Returns if the file is expired adding time to modification date
+ *
+ * @param string $path
+ * @param int $date
+ *
+ * @return bool
+ * @throws FileException
+ */
+ public function isExpiredDate($path, $date): bool;
}
\ No newline at end of file
diff --git a/lib/SP/Storage/File/XmlFileStorageInterface.php b/lib/SP/Storage/File/XmlFileStorageInterface.php
index 74bc00ac..b1f0e4ea 100644
--- a/lib/SP/Storage/File/XmlFileStorageInterface.php
+++ b/lib/SP/Storage/File/XmlFileStorageInterface.php
@@ -61,4 +61,9 @@ interface XmlFileStorageInterface
* @throws FileException
*/
public function getPathValue($path);
+
+ /**
+ * @return FileHandler
+ */
+ public function getFileHandler(): FileHandler;
}
\ No newline at end of file
diff --git a/lib/SP/Storage/File/XmlHandler.php b/lib/SP/Storage/File/XmlHandler.php
index bcc1d90c..45b9c8c4 100644
--- a/lib/SP/Storage/File/XmlHandler.php
+++ b/lib/SP/Storage/File/XmlHandler.php
@@ -312,4 +312,12 @@ final class XmlHandler implements XmlFileStorageInterface
return $query->item(0)->nodeValue;
}
+
+ /**
+ * @return FileHandler
+ */
+ public function getFileHandler(): FileHandler
+ {
+ return $this->fileHandler;
+ }
}
\ No newline at end of file
diff --git a/public/js/app-actions.js b/public/js/app-actions.js
index 0214e884..b5fd3338 100644
--- a/public/js/app-actions.js
+++ b/public/js/app-actions.js
@@ -1589,6 +1589,44 @@ sysPass.Actions = function (Common) {
}
};
+ const accountManager = {
+ restore: function ($obj) {
+ log.info("accountManager:restore");
+
+ tabs.state.update($obj);
+
+ const itemId = $obj.data("item-id");
+
+ const opts = Common.appRequests().getRequestOpts();
+ opts.url = ajaxUrl.entrypoint;
+ opts.method = "get";
+ opts.data = {
+ r: $obj.data("action-route") + "/" + itemId,
+ sk: Common.sk.get(),
+ isAjax: 1
+ };
+
+ Common.appRequests().getActionCall(opts, function (json) {
+ Common.msg.out(json);
+
+ if (json.status === 0) {
+ const actionNext = $obj.data("action-next");
+
+ if (actionNext) {
+ getContent({
+ r: actionNext + "/" + itemId
+ });
+ } else {
+ getContent({
+ r: tabs.state.tab.route,
+ tabIndex: tabs.state.tab.index
+ });
+ }
+ }
+ });
+ },
+ };
+
const task = function (taskId) {
const $taskStatus = $("#taskStatus");
@@ -1610,6 +1648,7 @@ sysPass.Actions = function (Common) {
doAction: doAction,
appMgmt: appMgmt,
account: account,
+ accountManager: accountManager,
file: file,
checks: checks,
config: config,
diff --git a/public/js/app-actions.min.js b/public/js/app-actions.min.js
index aad4cad3..98c57745 100644
--- a/public/js/app-actions.min.js
+++ b/public/js/app-actions.min.js
@@ -1,19 +1,19 @@
-var $jscomp={scope:{},findInternal:function(b,e,l){b instanceof String&&(b=String(b));for(var f=b.length,h=0;h