diff --git a/app/modules/web/Controllers/AccessManagerController.php b/app/modules/web/Controllers/AccessManagerController.php index 1d829e8a..74b7e087 100644 --- a/app/modules/web/Controllers/AccessManagerController.php +++ b/app/modules/web/Controllers/AccessManagerController.php @@ -60,7 +60,6 @@ class AccessManagerController extends ControllerBase /** * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function indexAction() { @@ -72,7 +71,6 @@ class AccessManagerController extends ControllerBase * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getGridTabs() { @@ -115,7 +113,6 @@ class AccessManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getUsersList() { @@ -129,7 +126,6 @@ class AccessManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getUsersGroupList() { @@ -142,7 +138,6 @@ class AccessManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getUsersProfileList() { @@ -155,7 +150,6 @@ class AccessManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getApiTokensList() { @@ -168,7 +162,6 @@ class AccessManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getPublicLinksList() { diff --git a/app/modules/web/Controllers/AccountController.php b/app/modules/web/Controllers/AccountController.php index fdddc040..6fc84193 100644 --- a/app/modules/web/Controllers/AccountController.php +++ b/app/modules/web/Controllers/AccountController.php @@ -62,8 +62,8 @@ use SP\Util\Util; */ class AccountController extends ControllerBase implements CrudControllerInterface { - use JsonTrait; - use ItemTrait; + use JsonTrait, ItemTrait; + /** * @var AccountService */ @@ -531,7 +531,7 @@ class AccountController extends ControllerBase implements CrudControllerInterfac /** * Display account's password * - * @param int $id Account's ID + * @param int $id Account's ID * @param int $isHistory The account's ID refers to history * @throws \Psr\Container\ContainerExceptionInterface */ @@ -567,7 +567,7 @@ class AccountController extends ControllerBase implements CrudControllerInterfac /** * Copy account's password * - * @param int $id Account's ID + * @param int $id Account's ID * @param int $isHistory The account's ID refers to history * @throws Helpers\HelperException * @throws SPException @@ -738,7 +738,7 @@ class AccountController extends ControllerBase implements CrudControllerInterfac * Saves restore action * * @param int $historyId Account's history ID - * @param int $id Account's ID + * @param int $id Account's ID * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ diff --git a/app/modules/web/Controllers/AccountFavoriteController.php b/app/modules/web/Controllers/AccountFavoriteController.php index dd120fbc..0a3f0926 100644 --- a/app/modules/web/Controllers/AccountFavoriteController.php +++ b/app/modules/web/Controllers/AccountFavoriteController.php @@ -76,6 +76,8 @@ class AccountFavoriteController extends SimpleControllerBase protected function initialize() { + $this->checks(); + $this->accountFavoriteService = $this->dic->get(AccountFavoriteService::class); } diff --git a/app/modules/web/Controllers/AccountFileController.php b/app/modules/web/Controllers/AccountFileController.php index bbc98a96..a8df3ebf 100644 --- a/app/modules/web/Controllers/AccountFileController.php +++ b/app/modules/web/Controllers/AccountFileController.php @@ -49,8 +49,7 @@ use SP\Util\Util; */ class AccountFileController extends ControllerBase implements CrudControllerInterface { - use JsonTrait; - use ItemTrait; + use JsonTrait, ItemTrait; /** * @var AccountFileService @@ -238,7 +237,6 @@ class AccountFileController extends ControllerBase implements CrudControllerInte * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { diff --git a/app/modules/web/Controllers/ApiTokenController.php b/app/modules/web/Controllers/ApiTokenController.php index da472004..67272f21 100644 --- a/app/modules/web/Controllers/ApiTokenController.php +++ b/app/modules/web/Controllers/ApiTokenController.php @@ -49,8 +49,7 @@ use SP\Services\User\UserService; */ class ApiTokenController extends ControllerBase implements CrudControllerInterface { - use JsonTrait; - use ItemTrait; + use JsonTrait, ItemTrait; /** * @var AuthTokenService @@ -62,7 +61,6 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function searchAction() { @@ -81,7 +79,6 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { diff --git a/app/modules/web/Controllers/CategoryController.php b/app/modules/web/Controllers/CategoryController.php index 7309aa9b..1d2c8efb 100644 --- a/app/modules/web/Controllers/CategoryController.php +++ b/app/modules/web/Controllers/CategoryController.php @@ -46,8 +46,7 @@ use SP\Services\Category\CategoryService; */ class CategoryController extends ControllerBase implements CrudControllerInterface { - use JsonTrait; - use ItemTrait; + use JsonTrait, ItemTrait; /** * @var CategoryService @@ -59,7 +58,6 @@ class CategoryController extends ControllerBase implements CrudControllerInterfa * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function searchAction() { @@ -78,7 +76,6 @@ class CategoryController extends ControllerBase implements CrudControllerInterfa * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { diff --git a/app/modules/web/Controllers/ClientController.php b/app/modules/web/Controllers/ClientController.php index b41436ba..860f213f 100644 --- a/app/modules/web/Controllers/ClientController.php +++ b/app/modules/web/Controllers/ClientController.php @@ -47,8 +47,7 @@ use SP\Services\Client\ClientService; */ class ClientController extends ControllerBase implements CrudControllerInterface { - use JsonTrait; - use ItemTrait; + use JsonTrait, ItemTrait; /** * @var ClientService @@ -60,7 +59,6 @@ class ClientController extends ControllerBase implements CrudControllerInterface * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function searchAction() { @@ -79,7 +77,6 @@ class ClientController extends ControllerBase implements CrudControllerInterface * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { @@ -331,5 +328,4 @@ class ClientController extends ControllerBase implements CrudControllerInterface $this->clientService = $this->dic->get(ClientService::class); } - } \ No newline at end of file diff --git a/app/modules/web/Controllers/ConfigAccountController.php b/app/modules/web/Controllers/ConfigAccountController.php index 4757019f..666dc215 100644 --- a/app/modules/web/Controllers/ConfigAccountController.php +++ b/app/modules/web/Controllers/ConfigAccountController.php @@ -111,6 +111,7 @@ class ConfigAccountController extends SimpleControllerBase protected function initialize() { try { + $this->checks(); $this->checkAccess(ActionsInterface::ACCOUNT_CONFIG); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notifyEvent('exception', new Event($e)); diff --git a/app/modules/web/Controllers/ConfigBackupController.php b/app/modules/web/Controllers/ConfigBackupController.php index 86dcbfa4..9d3559c8 100644 --- a/app/modules/web/Controllers/ConfigBackupController.php +++ b/app/modules/web/Controllers/ConfigBackupController.php @@ -111,6 +111,7 @@ class ConfigBackupController extends SimpleControllerBase protected function initialize() { try { + $this->checks(); $this->checkAccess(ActionsInterface::BACKUP_CONFIG); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notifyEvent('exception', new Event($e)); diff --git a/app/modules/web/Controllers/ConfigEncryptionController.php b/app/modules/web/Controllers/ConfigEncryptionController.php index bd9cb236..4870306d 100644 --- a/app/modules/web/Controllers/ConfigEncryptionController.php +++ b/app/modules/web/Controllers/ConfigEncryptionController.php @@ -224,6 +224,7 @@ class ConfigEncryptionController extends SimpleControllerBase protected function initialize() { try { + $this->checks(); $this->checkAccess(ActionsInterface::ENCRYPTION_CONFIG); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notifyEvent('exception', new Event($e)); diff --git a/app/modules/web/Controllers/ConfigGeneralController.php b/app/modules/web/Controllers/ConfigGeneralController.php index af1a1315..9b4ebbbf 100644 --- a/app/modules/web/Controllers/ConfigGeneralController.php +++ b/app/modules/web/Controllers/ConfigGeneralController.php @@ -160,6 +160,7 @@ class ConfigGeneralController extends SimpleControllerBase protected function initialize() { try { + $this->checks(); $this->checkAccess(ActionsInterface::CONFIG_GENERAL); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notifyEvent('exception', new Event($e)); diff --git a/app/modules/web/Controllers/ConfigImportController.php b/app/modules/web/Controllers/ConfigImportController.php index 3d13e3ac..50c69484 100644 --- a/app/modules/web/Controllers/ConfigImportController.php +++ b/app/modules/web/Controllers/ConfigImportController.php @@ -91,6 +91,7 @@ class ConfigImportController extends SimpleControllerBase protected function initialize() { try { + $this->checks(); $this->checkAccess(ActionsInterface::IMPORT_CONFIG); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notifyEvent('exception', new Event($e)); diff --git a/app/modules/web/Controllers/ConfigLdapController.php b/app/modules/web/Controllers/ConfigLdapController.php index 5ab3c086..521c92a3 100644 --- a/app/modules/web/Controllers/ConfigLdapController.php +++ b/app/modules/web/Controllers/ConfigLdapController.php @@ -271,6 +271,7 @@ class ConfigLdapController extends SimpleControllerBase protected function initialize() { try { + $this->checks(); $this->checkAccess(ActionsInterface::LDAP_CONFIG); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notifyEvent('exception', new Event($e)); diff --git a/app/modules/web/Controllers/ConfigMailController.php b/app/modules/web/Controllers/ConfigMailController.php index 89f7351a..22d98af8 100644 --- a/app/modules/web/Controllers/ConfigMailController.php +++ b/app/modules/web/Controllers/ConfigMailController.php @@ -98,6 +98,7 @@ class ConfigMailController extends SimpleControllerBase protected function initialize() { try { + $this->checks(); $this->checkAccess(ActionsInterface::MAIL_CONFIG); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notifyEvent('exception', new Event($e)); diff --git a/app/modules/web/Controllers/ConfigWikiController.php b/app/modules/web/Controllers/ConfigWikiController.php index 9a2c36c5..5a8f532b 100644 --- a/app/modules/web/Controllers/ConfigWikiController.php +++ b/app/modules/web/Controllers/ConfigWikiController.php @@ -113,6 +113,7 @@ class ConfigWikiController extends SimpleControllerBase protected function initialize() { try { + $this->checks(); $this->checkAccess(ActionsInterface::WIKI_CONFIG); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notifyEvent('exception', new Event($e)); diff --git a/app/modules/web/Controllers/CustomFieldController.php b/app/modules/web/Controllers/CustomFieldController.php index 292e15e9..dcc1fb78 100644 --- a/app/modules/web/Controllers/CustomFieldController.php +++ b/app/modules/web/Controllers/CustomFieldController.php @@ -24,7 +24,6 @@ namespace SP\Modules\Web\Controllers; - use SP\Core\Acl\Acl; use SP\Core\Acl\ActionsInterface; use SP\Core\Events\Event; @@ -49,8 +48,7 @@ use SP\Services\CustomField\CustomFieldDefService; */ class CustomFieldController extends ControllerBase implements CrudControllerInterface { - use JsonTrait; - use ItemTrait; + use JsonTrait, ItemTrait; /** * @var CustomFieldDefService @@ -62,7 +60,6 @@ class CustomFieldController extends ControllerBase implements CrudControllerInte * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function searchAction() { @@ -81,7 +78,6 @@ class CustomFieldController extends ControllerBase implements CrudControllerInte * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { diff --git a/app/modules/web/Controllers/ErrorController.php b/app/modules/web/Controllers/ErrorController.php index 31be3c9d..5cd820f2 100644 --- a/app/modules/web/Controllers/ErrorController.php +++ b/app/modules/web/Controllers/ErrorController.php @@ -51,7 +51,6 @@ class ErrorController /** * ErrorController constructor. * - * @throws \ReflectionException * @throws \SP\Core\Dic\ContainerException */ public function __construct() diff --git a/app/modules/web/Controllers/EventlogController.php b/app/modules/web/Controllers/EventlogController.php index 40ebd181..da72182b 100644 --- a/app/modules/web/Controllers/EventlogController.php +++ b/app/modules/web/Controllers/EventlogController.php @@ -49,8 +49,6 @@ class EventlogController extends ControllerBase /** * indexAction - * - * @throws \SP\Core\Dic\ContainerException */ public function indexAction() { @@ -69,7 +67,6 @@ class EventlogController extends ControllerBase * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { @@ -114,8 +111,15 @@ class EventlogController extends ControllerBase } } + /** + * @throws \Psr\Container\ContainerExceptionInterface + * @throws \Psr\Container\NotFoundExceptionInterface + * @throws \SP\Services\Auth\AuthException + */ protected function initialize() { + $this->checkLoggedIn(); + $this->eventLogService = $this->dic->get(EventlogService::class); } } \ No newline at end of file diff --git a/app/modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php index d42eaab5..d7a352ea 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php @@ -51,7 +51,7 @@ class AccountPasswordHelper extends HelperBase * @param AccountPassData $account * @param \SP\Core\Acl\Acl $acl * @param $type - * @return string + * @return string|null * @throws HelperException * @throws \Defuse\Crypto\Exception\CryptoException * @throws \SP\Core\Exceptions\SPException @@ -68,6 +68,8 @@ class AccountPasswordHelper extends HelperBase $this->setTemplateVars($account); break; } + + return null; } /** diff --git a/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php index 1653ff76..af62d8c6 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php @@ -150,7 +150,6 @@ class AccountSearchHelper extends HelperBase * Devuelve la matriz a utilizar en la vista * * @return DataGrid - * @throws \SP\Core\Dic\ContainerException */ private function getGrid() { @@ -182,7 +181,7 @@ class AccountSearchHelper extends HelperBase $actions = $this->dic->get(AccountActionsHelper::class); - $Grid = new DataGrid(); + $Grid = new DataGrid($this->view->getTheme()); $Grid->setId('gridSearch'); $Grid->setDataHeaderTemplate('search-header', $this->view->getBase()); $Grid->setDataRowTemplate('search-rows', $this->view->getBase()); diff --git a/app/modules/web/Controllers/Helpers/ItemsGridHelper.php b/app/modules/web/Controllers/Helpers/ItemsGridHelper.php index 2de77cff..feeeb484 100644 --- a/app/modules/web/Controllers/Helpers/ItemsGridHelper.php +++ b/app/modules/web/Controllers/Helpers/ItemsGridHelper.php @@ -63,7 +63,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getCategoriesGrid(array $data) { @@ -80,7 +79,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblCategories'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -165,7 +164,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getClientsGrid(array $data) { @@ -186,7 +184,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblCustomers'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -249,7 +247,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getCustomFieldsGrid(array $data) { @@ -270,7 +267,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblCustomFields'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -333,7 +330,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getFilesGrid(array $data) { @@ -356,7 +352,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblFiles'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -419,7 +415,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getAccountsGrid(array $data) { @@ -436,7 +431,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblAccounts'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -476,7 +471,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getAccountsHistoryGrid(array $data) { @@ -501,7 +495,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblAccountsHistory'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -551,7 +545,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getUsersGrid(array $data) { @@ -577,7 +570,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblUsers'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -679,7 +672,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getUserGroupsGrid(array $data) { @@ -696,7 +688,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblGroups'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -770,7 +762,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getUserProfilesGrid(array $data) { @@ -785,7 +776,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblProfiles'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -859,7 +850,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getApiTokensGrid(array $data) { @@ -876,7 +866,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblTokens'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -950,7 +940,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getPublicLinksGrid(array $data) { @@ -977,7 +966,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblLinks'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -1050,7 +1039,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getTagsGrid(array $data) { @@ -1065,7 +1053,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblTags'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -1128,7 +1116,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGridTab - * @throws \SP\Core\Dic\ContainerException */ public function getPluginsGrid(array $data) { @@ -1147,7 +1134,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGridTab(); + $Grid = new DataGridTab($this->view->getTheme()); $Grid->setId('tblPlugins'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -1190,6 +1177,7 @@ class ItemsGridHelper extends HelperBase $GridActionEnable->setFilterRowSource('enabled'); $GridActionEnable->setFilterRowSource('available', 0); $GridActionEnable->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_ENABLE)); + $GridActionEnable->addData('action-method', 'get'); $Grid->setDataActions($GridActionEnable); @@ -1202,6 +1190,7 @@ class ItemsGridHelper extends HelperBase $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); @@ -1213,6 +1202,7 @@ class ItemsGridHelper extends HelperBase $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); @@ -1222,7 +1212,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGrid - * @throws \SP\Core\Dic\ContainerException */ public function getEventLogGrid(array $data) { @@ -1260,7 +1249,7 @@ class ItemsGridHelper extends HelperBase if (preg_match('/^SQL.*/m', $text)) { $text = preg_replace([ - '/([[:alpha:]_]+),/m', + '/([a-zA-Z_]+),/m', '/(UPDATE|DELETE|TRUNCATE|INSERT|SELECT|WHERE|LEFT|ORDER|LIMIT|FROM)/m'], ['\\1,
', '
\\1'], $text); @@ -1275,7 +1264,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGrid(); + $Grid = new DataGrid($this->view->getTheme()); $Grid->setId('tblEventLog'); $Grid->setDataTableTemplate('datagrid-table-simple', 'grid'); $Grid->setDataRowTemplate('datagrid-rows', $this->view->getBase()); @@ -1330,7 +1319,6 @@ class ItemsGridHelper extends HelperBase /** * @param array $data * @return DataGrid - * @throws \SP\Core\Dic\ContainerException */ public function getNotificationsGrid(array $data) { @@ -1360,7 +1348,7 @@ class ItemsGridHelper extends HelperBase $GridData->setData($data); // Grid - $Grid = new DataGrid(); + $Grid = new DataGrid($this->view->getTheme()); $Grid->setId('tblNotifications'); $Grid->setDataRowTemplate('datagrid-rows', 'grid'); $Grid->setDataPagerTemplate('datagrid-nav-full', 'grid'); @@ -1455,7 +1443,7 @@ class ItemsGridHelper extends HelperBase * Actualizar los datos del paginador * * @param DataGridInterface $dataGrid - * @param ItemSearchData $itemSearchData + * @param ItemSearchData $itemSearchData * @return DataGridInterface */ public function updatePager(DataGridInterface $dataGrid, ItemSearchData $itemSearchData) diff --git a/app/modules/web/Controllers/Helpers/LayoutHelper.php b/app/modules/web/Controllers/Helpers/LayoutHelper.php index 73ead596..e20da22c 100644 --- a/app/modules/web/Controllers/Helpers/LayoutHelper.php +++ b/app/modules/web/Controllers/Helpers/LayoutHelper.php @@ -375,5 +375,4 @@ class LayoutHelper extends HelperBase $this->view->assign('loggedIn', $this->loggedIn); } - } \ No newline at end of file diff --git a/app/modules/web/Controllers/ItemManagerController.php b/app/modules/web/Controllers/ItemManagerController.php index a6b02c8b..0a7f4844 100644 --- a/app/modules/web/Controllers/ItemManagerController.php +++ b/app/modules/web/Controllers/ItemManagerController.php @@ -31,13 +31,13 @@ use SP\DataModel\ItemSearchData; use SP\Http\Request; use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper; use SP\Modules\Web\Controllers\Helpers\TabsGridHelper; -use SP\Repositories\Plugin\PluginRepository; use SP\Services\Account\AccountFileService; use SP\Services\Account\AccountHistoryService; use SP\Services\Account\AccountService; use SP\Services\Category\CategoryService; use SP\Services\Client\ClientService; use SP\Services\CustomField\CustomFieldDefService; +use SP\Services\Plugin\PluginService; use SP\Services\Tag\TagService; /** @@ -63,7 +63,6 @@ class ItemManagerController extends ControllerBase /** * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function indexAction() { @@ -75,7 +74,6 @@ class ItemManagerController extends ControllerBase * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getGridTabs() { @@ -130,7 +128,6 @@ class ItemManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getCategoriesList() { @@ -143,7 +140,6 @@ class ItemManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getTagsList() { @@ -156,7 +152,6 @@ class ItemManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getClientsList() { @@ -169,7 +164,6 @@ class ItemManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getCustomFieldsList() { @@ -182,7 +176,6 @@ class ItemManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getAccountFilesList() { @@ -195,7 +188,6 @@ class ItemManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getAccountsList() { @@ -208,7 +200,6 @@ class ItemManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getAccountsHistoryList() { @@ -221,12 +212,10 @@ class ItemManagerController extends ControllerBase * @return \SP\Html\DataGrid\DataGridTab * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ protected function getPluginsList() { - // FIXME: create Plugin Service - return $this->itemsGridHelper->getPluginsGrid($this->dic->get(PluginRepository::class)->search($this->itemSearchData))->updatePager(); + return $this->itemsGridHelper->getPluginsGrid($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 6e6fc3c8..2c0308a4 100644 --- a/app/modules/web/Controllers/NotificationController.php +++ b/app/modules/web/Controllers/NotificationController.php @@ -56,7 +56,7 @@ class NotificationController extends ControllerBase implements CrudControllerInt protected $notificationService; /** - * @throws \SP\Core\Dic\ContainerException + * indexAction */ public function indexAction() { @@ -75,7 +75,6 @@ class NotificationController extends ControllerBase implements CrudControllerInt * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { @@ -147,8 +146,6 @@ class NotificationController extends ControllerBase implements CrudControllerInt /** * Search action - * - * @throws \SP\Core\Dic\ContainerException */ public function searchAction() { @@ -361,8 +358,15 @@ class NotificationController extends ControllerBase implements CrudControllerInt } } + /** + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + * @throws \SP\Services\Auth\AuthException + */ protected function initialize() { + $this->checkLoggedIn(); + $this->notificationService = $this->dic->get(NotificationService::class); } } \ No newline at end of file diff --git a/app/modules/web/Controllers/PluginController.php b/app/modules/web/Controllers/PluginController.php new file mode 100644 index 00000000..f64e3563 --- /dev/null +++ b/app/modules/web/Controllers/PluginController.php @@ -0,0 +1,238 @@ +. + */ + +namespace SP\Modules\Web\Controllers; + +use Psr\Container\ContainerExceptionInterface; +use Psr\Container\NotFoundExceptionInterface; +use SP\Core\Acl\Acl; +use SP\Core\Acl\ActionsInterface; +use SP\Core\Events\Event; +use SP\Core\Events\EventMessage; +use SP\DataModel\PluginData; +use SP\Http\JsonResponse; +use SP\Http\Request; +use SP\Modules\Web\Controllers\Helpers\ItemsGridHelper; +use SP\Modules\Web\Controllers\Traits\ItemTrait; +use SP\Modules\Web\Controllers\Traits\JsonTrait; +use SP\Services\Plugin\PluginService; + +/** + * Class PluginController + * @package web\Controllers + */ +class PluginController extends ControllerBase +{ + use JsonTrait, ItemTrait; + + /** + * @var PluginService + */ + protected $pluginService; + + /** + * indexAction + */ + public function indexAction() + { + if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN)) { + return; + } + + $this->view->addTemplate('index'); + + $this->view->assign('data', $this->getSearchGrid()); + + $this->view(); + } + + /** + * getSearchGrid + * + * @return $this + */ + protected function getSearchGrid() + { + $itemsGridHelper = $this->dic->get(ItemsGridHelper::class); + $itemSearchData = $this->getSearchData($this->configData->getAccountCount()); + + return $itemsGridHelper->updatePager($itemsGridHelper->getPluginsGrid($this->pluginService->search($itemSearchData)), $itemSearchData); + } + + /** + * Search action + * + * @throws \Psr\Container\ContainerExceptionInterface + * @throws \Psr\Container\NotFoundExceptionInterface + */ + public function searchAction() + { + if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN_SEARCH)) { + return; + } + + $this->view->addTemplate('datagrid-table', 'grid'); + $this->view->assign('index', Request::analyzeInt('activetab', 0)); + $this->view->assign('data', $this->getSearchGrid()); + + $this->returnJsonResponseData(['html' => $this->render()]); + } + + /** + * View action + * + * @param $id + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ + public function viewAction($id) + { + if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN_VIEW)) { + return; + } + + $this->view->assign('header', __('Ver Plugin')); + $this->view->assign('isView', true); + + try { + $this->setViewData($id); + + $this->eventDispatcher->notifyEvent('show.plugin', new Event($this)); + + $this->returnJsonResponseData(['html' => $this->render()]); + } catch (\Exception $e) { + processException($e); + + $this->returnJsonResponseException($e); + } + } + + /** + * Sets view data for displaying items's data + * + * @param $pluginId + * @throws \Psr\Container\ContainerExceptionInterface + * @throws \Psr\Container\NotFoundExceptionInterface + */ + protected function setViewData($pluginId = null) + { + $this->view->addTemplate('plugin'); + + $pluginData = $pluginId ? $this->pluginService->getById($pluginId) : new PluginData(); + + $this->view->assign('plugin', $pluginData); + + $this->view->assign('sk', $this->session->generateSecurityKey()); + $this->view->assign('nextAction', Acl::getActionRoute(ActionsInterface::ITEMS_MANAGE)); + + if ($this->view->isView === true) { + $this->view->assign('disabled', 'disabled'); + $this->view->assign('readonly', 'readonly'); + } else { + $this->view->assign('disabled'); + $this->view->assign('readonly'); + } + } + + /** + * enableAction + * + * @param $id + */ + public function enableAction($id) + { + try { + $this->pluginService->toggleEnabled($id, 1); + + $this->eventDispatcher->notifyEvent('edit.plugin.enable', + new Event($this, + EventMessage::factory()->addDescription(__u('Plugin habilitado'))) + ); + + $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Plugin habilitado')); + } catch (\Exception $e) { + processException($e); + + $this->returnJsonResponseException($e); + } + } + + /** + * disableAction + * + * @param $id + */ + public function disableAction($id) + { + try { + $this->pluginService->toggleEnabled($id, 0); + + $this->eventDispatcher->notifyEvent('edit.plugin.disable', + new Event($this, + EventMessage::factory()->addDescription(__u('Plugin deshabilitado'))) + ); + + $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Plugin deshabilitado')); + } catch (\Exception $e) { + processException($e); + + $this->returnJsonResponseException($e); + } + } + + /** + * resetAction + * + * @param $id + */ + public function resetAction($id) + { + try { + $this->pluginService->resetById($id); + + $this->eventDispatcher->notifyEvent('edit.plugin.reset', + new Event($this, + EventMessage::factory()->addDescription(__u('Plugin restablecido'))) + ); + + $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Plugin restablecido')); + } catch (\Exception $e) { + processException($e); + + $this->returnJsonResponseException($e); + } + } + + /** + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + * @throws \SP\Services\Auth\AuthException + */ + protected function initialize() + { + $this->checkLoggedIn(); + + $this->pluginService = $this->dic->get(PluginService::class); + } +} \ No newline at end of file diff --git a/app/modules/web/Controllers/PublicLinkController.php b/app/modules/web/Controllers/PublicLinkController.php index 407fde32..8eb0c634 100644 --- a/app/modules/web/Controllers/PublicLinkController.php +++ b/app/modules/web/Controllers/PublicLinkController.php @@ -49,8 +49,7 @@ use SP\Services\PublicLink\PublicLinkService; */ class PublicLinkController extends ControllerBase implements CrudControllerInterface { - use JsonTrait; - use ItemTrait; + use JsonTrait, ItemTrait; /** * @var PublicLinkService @@ -62,7 +61,6 @@ class PublicLinkController extends ControllerBase implements CrudControllerInter * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function searchAction() { @@ -81,7 +79,6 @@ class PublicLinkController extends ControllerBase implements CrudControllerInter * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { diff --git a/app/modules/web/Controllers/TagController.php b/app/modules/web/Controllers/TagController.php index 53497513..ec34646a 100644 --- a/app/modules/web/Controllers/TagController.php +++ b/app/modules/web/Controllers/TagController.php @@ -24,7 +24,6 @@ namespace SP\Modules\Web\Controllers; - use SP\Core\Acl\Acl; use SP\Core\Acl\ActionsInterface; use SP\Core\Events\Event; @@ -46,8 +45,7 @@ use SP\Services\Tag\TagService; */ class TagController extends ControllerBase implements CrudControllerInterface { - use JsonTrait; - use ItemTrait; + use JsonTrait, ItemTrait; /** * @var TagService @@ -59,7 +57,6 @@ class TagController extends ControllerBase implements CrudControllerInterface * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function searchAction() { @@ -78,7 +75,6 @@ class TagController extends ControllerBase implements CrudControllerInterface * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { diff --git a/app/modules/web/Controllers/UserController.php b/app/modules/web/Controllers/UserController.php index bc367cd0..252f4669 100644 --- a/app/modules/web/Controllers/UserController.php +++ b/app/modules/web/Controllers/UserController.php @@ -29,7 +29,6 @@ use SP\Core\Acl\ActionsInterface; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Core\Exceptions\ValidationException; -use SP\Core\SessionUtil; use SP\DataModel\UserData; use SP\Http\JsonResponse; use SP\Http\Request; @@ -65,7 +64,6 @@ class UserController extends ControllerBase implements CrudControllerInterface * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function searchAction() { @@ -84,7 +82,6 @@ class UserController extends ControllerBase implements CrudControllerInterface * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { @@ -203,7 +200,7 @@ class UserController extends ControllerBase implements CrudControllerInterface $this->view->assign('header', __('Cambio de Clave')); $this->view->assign('isView', false); $this->view->assign('route', 'user/saveEditPass/' . $id); - $this->view->assign('sk', SessionUtil::getSessionKey(true)); + $this->view->assign('sk', $this->session->generateSecurityKey()); try { $user = $id ? $this->userService->getById($id) : new UserData(); @@ -432,7 +429,9 @@ class UserController extends ControllerBase implements CrudControllerInterface } /** - * Initialize class + * @throws \Psr\Container\ContainerExceptionInterface + * @throws \Psr\Container\NotFoundExceptionInterface + * @throws \SP\Services\Auth\AuthException */ protected function initialize() { diff --git a/app/modules/web/Controllers/UserGroupController.php b/app/modules/web/Controllers/UserGroupController.php index 46b39fc2..7b2c94d9 100644 --- a/app/modules/web/Controllers/UserGroupController.php +++ b/app/modules/web/Controllers/UserGroupController.php @@ -49,8 +49,7 @@ use SP\Services\UserGroup\UserToUserGroupService; */ class UserGroupController extends ControllerBase implements CrudControllerInterface { - use JsonTrait; - use ItemTrait; + use JsonTrait, ItemTrait; /** * @var UserGroupService @@ -66,7 +65,6 @@ class UserGroupController extends ControllerBase implements CrudControllerInterf * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function searchAction() { @@ -85,7 +83,6 @@ class UserGroupController extends ControllerBase implements CrudControllerInterf * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { diff --git a/app/modules/web/Controllers/UserProfileController.php b/app/modules/web/Controllers/UserProfileController.php index 76107be1..7fa4a380 100644 --- a/app/modules/web/Controllers/UserProfileController.php +++ b/app/modules/web/Controllers/UserProfileController.php @@ -47,8 +47,7 @@ use SP\Services\UserProfile\UserProfileService; */ class UserProfileController extends ControllerBase implements CrudControllerInterface { - use JsonTrait; - use ItemTrait; + use JsonTrait, ItemTrait; /** * @var UserProfileService @@ -60,7 +59,6 @@ class UserProfileController extends ControllerBase implements CrudControllerInte * * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface - * @throws \SP\Core\Dic\ContainerException */ public function searchAction() { @@ -79,7 +77,6 @@ class UserProfileController extends ControllerBase implements CrudControllerInte * getSearchGrid * * @return $this - * @throws \SP\Core\Dic\ContainerException */ protected function getSearchGrid() { diff --git a/app/modules/web/Controllers/UserSettingsGeneralController.php b/app/modules/web/Controllers/UserSettingsGeneralController.php index 3e99cdd0..639750bb 100644 --- a/app/modules/web/Controllers/UserSettingsGeneralController.php +++ b/app/modules/web/Controllers/UserSettingsGeneralController.php @@ -80,6 +80,8 @@ class UserSettingsGeneralController extends SimpleControllerBase */ protected function initialize() { + $this->checks(); + $this->userService = $this->dic->get(UserService::class); } } \ No newline at end of file diff --git a/app/modules/web/Controllers/UserSettingsManagerController.php b/app/modules/web/Controllers/UserSettingsManagerController.php index 93d39339..1101bda5 100644 --- a/app/modules/web/Controllers/UserSettingsManagerController.php +++ b/app/modules/web/Controllers/UserSettingsManagerController.php @@ -89,4 +89,14 @@ class UserSettingsManagerController extends ControllerBase return new DataTab(__('Preferencias'), $template); } + + /** + * @throws \Psr\Container\ContainerExceptionInterface + * @throws \Psr\Container\NotFoundExceptionInterface + * @throws \SP\Services\Auth\AuthException + */ + protected function initialize() + { + $this->checkLoggedIn(); + } } \ No newline at end of file diff --git a/app/modules/web/themes/material-blue/css/styles.min.css b/app/modules/web/themes/material-blue/css/styles.min.css index df80b005..7692b83c 100644 --- a/app/modules/web/themes/material-blue/css/styles.min.css +++ b/app/modules/web/themes/material-blue/css/styles.min.css @@ -1 +1 @@ -html,body{margin:0;padding:0;text-align:left;background-color:#f5f5f5;color:#555;font-size:12px;font-weight:normal;box-sizing:border-box}*{font-family:"Roboto Regular",Verdana,Tahoma,sans-serif;box-sizing:inherit}*:before,*:after{box-sizing:inherit}table{font-size:11px;border-spacing:0}table th{border-bottom:2px solid transparent;vertical-align:middle}table th .icon{width:24px;height:24px}table tr{height:20px}table tr.odd{background-color:#f9f9f9}table tr.even>td,table tr.odd>td{border-bottom:1px solid #d9d9d9 !important}table tr.even:hover,table tr.odd:hover{background-color:#e8ff99}table td{padding:3px}table td.txtCliente{font-weight:bold;text-align:center}form{font-size:11px;margin:0}input.inputImg,img.inputImg{background-color:transparent !important;width:24px !important;height:24px !important;border:0;vertical-align:middle;margin:0 .5em}input.txtFile{width:200px}input.txtLong{width:300px}textarea{width:350px}select.files{width:250px}input.spinner{width:5em}img{margin:0;padding:0;border:0;cursor:pointer}img.inputImgMini{background-color:transparent !important;width:16px !important;height:16px !important;margin:0 5px 0 5px;border:0;vertical-align:middle}i{cursor:pointer}form .form-field{display:flex;justify-content:space-between}form .form-field>label{min-width:12em;padding:.5em 0;font-size:16px;align-self:center}form .form-field>div{width:100%;align-self:center}a{text-decoration:none;color:#536dfe}a:visited{text-decoration:none;color:#536dfe}a:hover,a:active,a:focus{text-decoration:none;cursor:pointer}pre,code,samp,kbd{font-family:Consolas,"Andale Mono WT","Andale Mono","Bitstream Vera Sans Mono","Nimbus Mono L",Monaco,"Courier New",monospace;font-size:1em;direction:ltr;text-align:left;background-color:#fbfaf9;color:#333;box-shadow:inset 0 0 .3em #ccc;border-radius:2px}#nojs{width:80%;text-align:center;vertical-align:middle;margin:10px auto;padding:3px;background-color:#ef5350;color:white;font-weight:bold;font-size:14px}#wrap{height:auto !important;min-height:100%;width:100%;background-color:#f5f5f5}#wrap-loading{position:fixed;z-index:9999;top:50%;left:50%;padding:1em;background-color:rgba(255,255,255,0.8);display:none;border-radius:5px !important;-moz-border-radius:5px !important;-webkit-border-radius:5px !important}#wrap-loading.overlay-full{top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,0.5)}#wrap-loading.overlay-full #loading{position:absolute;top:50%;left:50%}#wrap-loading.overlay-full #taskStatus{display:block}#wrap-loading #taskStatus{display:none;position:absolute;left:0;top:55%;width:100%;text-align:center;color:white;background-color:rgba(0,0,0,0.5);padding:1em 0}#container{margin:auto;width:100%}#container.login{padding-top:5%}#container.error,#container.install,#container.passreset{width:100%}#container .logo{height:64px}#container #actions-bar{z-index:100;display:flex;justify-content:space-between;position:fixed;border:0 none;top:0;left:0;width:100%;padding:1em 0;background-color:transparent}#container #actions-bar-icons{flex-grow:1;text-align:center}#container #actions-bar-logo{display:none;padding:0 .5em}#container #actions-bar-logo img{display:inline-block;width:50px;opacity:.75}#container #content{width:95%;margin:2em auto 8em auto}#container #content.public-link{width:70%;min-height:0;margin:5em auto}#content td.descField,#box-popup td.descField{text-align:right;padding-right:20px;width:25%;border-right:1px solid #d9d9d9;color:#999;font-size:12px;font-weight:bold}#content td.valField,#box-popup td.valField{padding-left:1em;width:100%}#content td.valField .lowres-title,#box-popup td.valField .lowres-title{display:none;width:100%;color:#607d8b;font-size:12px}#content .pager{width:100%;margin-top:15px;padding:.5em;vertical-align:middle;font-size:11px;color:#999;background-color:#fcfcfc}#content .pager img{margin-left:5px;vertical-align:middle}#content .pager a{margin-left:5px;font-size:12px;color:#999}#content .pager>div{display:inline-block;width:49%}#content .pager .pager-left{text-align:left}#content .pager .pager-right{text-align:right}#content #title{width:50%;padding:7px;margin:auto;background-color:#d9d9d9;color:#fff;font-size:17px;letter-spacing:.3em;text-align:center}#content #title.titleNormal{background-color:#607d8b;color:#fff}#content .data-container{width:75%;margin:0 auto}#content fieldset.data{margin:2em auto}#content fieldset.data>legend{color:#607d8b;padding:0 .5em;font-size:1.5em}#content fieldset.data>div{display:none}#content fieldset.data>div table{width:100%}#content .data{width:100%;padding:10px;margin:0 auto;background-color:#fff;-webkit-box-shadow:2px 2px 3px -3px rgba(0,0,0,0.14);-moz-box-shadow:2px 2px 3px -3px rgba(0,0,0,0.14);box-shadow:1px 1px 2px rgba(0,0,0,0.14)}#content .data #history-icon{position:relative;top:5em;right:2em}#content .data td{text-align:left}#content .data td.descField{text-align:right}#content .data select{min-width:210px}#content .data .list-wrap{max-height:10em;overflow:auto;padding:.5em;margin:1em 0}#content .data .dropzone{width:30em;padding:1em;border:2px dashed #26a69a;text-align:center}#content .data .dropzone img{vertical-align:middle}#content .data .file-upload{display:none}#content .data .account-permissions{width:100%}#content .data .account-permissions fieldset{border:1px solid #c9c9c9;padding:1em}#content .data .account-permissions legend{font-weight:bold;color:#999;padding:.2em 0}#content .data .account-permissions fieldset>span{font-weight:bold;color:#999;padding:.2em 0;display:inline-block;width:100px;text-align:right}#content span.tag{margin:0 3px 3px 0;padding:.2em;background:#5c6bc0;color:#fff;border:0 solid transparent;border-radius:3px !important;-moz-border-radius:3px !important;-webkit-border-radius:3px !important}#content .extra-info{margin-top:20px}#content #tabs fieldset{border:1px solid #c9c9c9}#content #tabs #frmConfig label{float:left}#content .tblConfig{margin-bottom:2em}#content .tblConfig td.descField{width:35%;font-size:11px;font-weight:bold}#content .tblConfig td.rowHeader{padding:5px 0 5px 0;background-color:#f5f5f5;text-align:center;font-weight:bold;border-top:15px solid #f9f9f9;border-bottom:3px solid #a9c1d7;letter-spacing:.5em;color:#696969}#content .tblConfig input.checkbox{width:15px;text-align:left;padding:0}#content .tblConfig .option-disabled{text-align:center;background-color:#fff8e1;color:#ffca28;font-weight:bold}#content h2{width:100%;height:1.5em;font-size:18px;color:white;background-color:#a9c1d7;margin:0;padding-top:.1em}#content .section{margin-top:2.5em;border-bottom:1px solid #d9d9d9;text-align:left;font-size:14px;font-weight:bold;color:#5c6bc0}#content .row_even>td{background-color:#f5f5f5}#content .row_odd>td{background-color:white}#content .data-header ul{list-style:none;width:100%;margin:0 0 10px 0;padding:0}#content .data-header li{display:inline-block;padding:.2em .5em;font-weight:bold;letter-spacing:.2em;color:#fff;text-align:center}#content .data-header li a{color:#777}#content .data-header li img{float:right;width:24px;height:24px;vertical-align:middle}#content .data-header-minimal{border-bottom:1px solid #dfdfdf}#content .data-header-minimal ul{display:flex;flex-wrap:wrap;justify-content:flex-start;margin:0}#content .data-header-minimal li{display:inline-flex;min-width:10em;font-weight:normal;letter-spacing:normal}#content .data-header-minimal li a{color:#b9b9b9;padding:.3em .8em}#content .data-table{width:100%}#content .data-table td:first-of-type,#content .data-table th:first-of-type{width:5em}#content .data-table thead th{background-color:#607d8b;color:#fff}#content .data-table tbody td.cell-data{text-align:left}#content .data-table tbody td.cell-nodata{padding:0 .5em;text-align:left}#content .data-table tbody td.cell-actions{text-align:right}#content .data-table tbody td.cell-actions i{opacity:.5}#content .data-table tbody td.cell-actions i:hover{opacity:1}#content .data-rows ul{display:table;list-style:none;width:100%;margin:0 0 10px 0;padding:0;background-color:#fcfcfc}#content .data-rows li{float:left;display:block;padding:1em;color:#696969;text-align:center;min-height:2em}#content .data-rows li.cell-nodata{padding:1em 0;min-height:2em;text-align:left}#content .data-rows li.cell-actions{float:right;min-height:2em;padding:1em 0;text-align:left;background-color:#fcfcfc;width:15em}#content .data-rows li.cell-nodata img,#content .data-rows li.cell-actions img{width:24px;height:24px;margin:0 .5em}#content #resEventLog .data{width:100%}#content #resEventLog thead{text-align:center}#content #resEventLog tbody{width:100%;height:500px;overflow:auto}#content #resEventLog td{border-bottom:1px solid #d9d9d9}#content #resEventLog .cell{text-align:center}#content #resEventLog .cell-description{width:60%}#content #searchbox{background-color:#fcfcfc;vertical-align:middle;position:relative;height:auto;padding:.5em 1em;margin-bottom:2em}#content #searchbox form{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;text-align:left}#content #searchbox .search-filters>*{margin:0 .5em}#content #searchbox .search-filters .filter-buttons{display:inline-block}#content #searchbox .search-filters .filter-slider{width:10em}#content #searchbox .search-filters-tags{display:none;flex-grow:2}#content .btn-clear{opacity:.35;filter:alpha(opacity=35)}#content .btn-clear:hover{opacity:1;filter:alpha(opacity=100)}#content .actions-optional{display:none}#content .error{width:350px;padding:15px;margin:0 auto;text-align:center;font-size:16px;line-height:1.5em;color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28}#content .data .list-wrap,#box-popup .list-wrap{max-height:20em;overflow:auto;padding:.5em;margin:1em 0}#content .data .list-wrap ul,#box-popup .list-wrap ul{list-style-type:none;margin:0;padding:0}#content .data .list-wrap li,#box-popup .list-wrap li{display:flex;background:#f2f2f2;padding:.5em;font-size:1em;margin-bottom:.5em}#content .data .list-wrap li:hover,#box-popup .list-wrap li:hover{background:#e8eaf6;color:#000}#content .data .list-wrap div.files-item-info,#box-popup .list-wrap div.files-item-info{flex-grow:2}#content .data .list-wrap div.files-item-info img,#box-popup .list-wrap div.files-item-info img{margin:0 .5em}#content .data .list-wrap div.files-item-actions,#box-popup .list-wrap div.files-item-actions{padding:.3em 0}#box-popup{width:-webkit-min-content;width:-moz-min-content;width:min-content;min-width:50em;margin:5em auto;padding:0;background-color:#fff}#box-popup.box-password-view{width:-webkit-min-content;width:-moz-min-content;width:min-content;min-width:30em}#box-popup>h2{position:relative;width:100%;font-size:18px;color:#fff;background-color:#607d8b;margin:0;padding:.5em 0;line-height:1em}#box-popup>h2 .btn-popup-close{display:none;position:absolute;right:.5em;top:.2em}#box-popup>table{width:100%;padding-bottom:1em}#box-popup select{width:220px}#box-popup #resFancyAccion{display:none}#box-popup #resCheck{display:inline-block;width:80%;height:4em;padding:1em 0}#box-popup.image{background-color:transparent;max-width:100%;margin:0 auto;border-radius:0 !important;-moz-border-radius:0 !important;-webkit-border-radius:0 !important}#box-popup.image img{width:auto;margin:0 auto}#box-popup.image>div.title{background-color:#607d8b;color:#fff;padding:.5em}#box-popup.help{min-height:100px;background-color:#f5f5f5}#box-popup.help p{font-size:14px;text-align:justify;line-height:2em}#box-complexity>div{text-align:justify;line-height:1.5em;margin-top:1em}#debug{float:left;text-align:left}#debuginfo{width:100%;min-height:10em;padding:1em;background-color:#fff8e1;text-align:left;line-height:1.5em}#debuginfo H3{text-align:center}.popup-data{width:100%;min-width:400px;border:0;text-align:left;margin:0;padding:1em .5em}.popup-data .descField{min-width:100px}footer{display:flex;justify-content:space-between;position:fixed;bottom:0;z-index:100;width:100%;padding:.5em 0;background-color:#f5f5f5;color:#b9b9b9;font-size:1em;-webkit-box-shadow:0 -3px 2px -2px rgba(0,0,0,0.14);-moz-box-shadow:0 -3px 2px -2px rgba(0,0,0,0.14);box-shadow:0 -3px 2px -2px rgba(0,0,0,0.14)}footer .footer-parts{display:flex;justify-content:space-between}footer #footer-left{width:50%;margin:0 1em}footer #footer-right{width:50%;margin:0 1em;justify-content:flex-end;text-align:right}footer #updates{min-width:10em;text-align:center;cursor:pointer}footer #status{margin:0 1em}footer #status>div{display:inline-block}footer #status .status-info{padding:.5em}footer #session{text-align:left;color:#999;font-size:.8em}footer a{color:#b9b9b9}footer a:visited{color:#b9b9b9}footer #project a:hover{color:#a9c1d7;border-bottom:1px solid #a9c1d7}footer #updates a:hover{color:#a9c1d7}footer img{border:0;width:16px;height:16px;vertical-align:middle}.round,.round5{border-radius:5px !important;-moz-border-radius:5px !important;-webkit-border-radius:5px !important}.midround{border-radius:0 0 10px 10px !important;-moz-border-radius:0 0 10px 10px !important;-webkit-border-radius:0 0 10px 10px !important}.midroundup{border-radius:10px 10px 0 0 !important;-moz-border-radius:10px 10px 0 0 !important;-webkit-border-radius:10px 10px 0 0 !important}.fullround{border-radius:50% !important;-moz-border-radius:50% !important;-webkit-border-radius:50% !important}.iconMini{width:16px !important;height:16px !important;vertical-align:middle}.hide{display:none !important}.btn-checks{padding:5px;margin:.2em 0;width:30em;border-bottom:1px solid #c9c9c9}.shadow{-webkit-box-shadow:2px 2px 3px -3px rgba(0,0,0,0.14);-moz-box-shadow:2px 2px 3px -3px rgba(0,0,0,0.14);box-shadow:1px 1px 2px rgba(0,0,0,0.14)}.noRes{width:60%;padding:15px;background-color:#f9f9f9;color:#a9a9a9;border:#c9c9c9 1px solid;margin:20px auto;text-align:center;font-size:16px}.header-grey{background-color:#607d8b;color:#fff;min-height:2em}.no-background{background:none !important}.action-in-box{padding:1em;text-align:right}.action-in-box ul{list-style:none;margin:0;padding:0}.tab-data{margin:2em auto 0;width:75%}.item-actions{margin:1em auto}.tab-actions{margin:2em 0}.item-actions>ul,.tab-actions>ul{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;list-style:none;margin:0;padding:0}.item-actions>ul>li,.tab-actions>ul>li{width:auto;min-width:2em;margin-left:.5em}.item-actions>ul>li.datagrid-action-search,.tab-actions>ul>li.datagrid-action-search{min-width:5em}.item-actions>ul>li.datagrid-action-search form,.tab-actions>ul>li.datagrid-action-search form{width:100%}h5.datagrid-header-title{padding:.7em;border-bottom:1px solid #d9d9d9}.fullWidth{max-width:100% !important}.filter-on{color:#26a69a;background-color:#e0f2f1;border:1px solid #26a69a;padding:.3em 1em}.global-on{color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28;padding:.3em 1em}.opacity50{filter:alpha(opacity=50);opacity:.5}.custom-combobox{position:relative;display:inline-block}.custom-combobox input{width:80%}.custom-combobox-toggle{position:absolute;top:0;bottom:0;margin-left:-1px;padding:0;*height:1.7em;*top:.1em}.custom-combobox-input{margin:0;padding:.3em}.passLevel{width:20px;height:20px;display:inline-block;position:relative;top:2px}.passLevel.strongest{color:#26a69a;background-color:#e0f2f1;border:1px solid #26a69a;font-weight:bold}.passLevel.strongest:hover{color:#26a69a;background-color:#e0f2f1;border:1px solid #26a69a;font-weight:bold}.passLevel.strong{color:#2196f3;background-color:#e3f2fd;border:1px solid #2196f3;font-weight:bold}.passLevel.strong:hover{color:#2196f3;background-color:#e3f2fd;border:1px solid #2196f3;font-weight:bold}.passLevel.good{color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28;font-weight:bold}.passLevel.good:hover{color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28;font-weight:bold}.passLevel.weak{color:#ef5350;background-color:#ffebee;border:1px solid #ef5350;font-weight:bold}.passLevel.weak:hover{color:#ef5350;background-color:#ffebee;border:1px solid #ef5350;font-weight:bold}#alert #alert-text{margin:15px auto;font-size:14px;font-weight:bold}#alert #alert-pass{width:50%;padding:10px;margin:15px auto;border:1px solid #c9c9c9;color:#555;font-weight:bold}.dialog-text,.dialog-user-text,.dialog-pass-text{font-family:Consolas,"Andale Mono WT","Andale Mono","Bitstream Vera Sans Mono","Nimbus Mono L",Monaco,"Courier New",monospace;padding:.5em;text-align:center;min-width:200px}.dialog-user-text{border-bottom:#d9d9d9 1px solid;color:#a9a9a9}.dialog-pass-text{border:transparent 1px solid;letter-spacing:.2em}.dialog-buttons{text-align:center;padding:.5em;border-top:1px solid #c9c9c9;line-height:2.5em}.dialog-clip-copy{color:#26a69a;background-color:#e0f2f1}.help-box{display:none;background-color:#fff !important;color:#607d8b}.help-box>*{font-weight:bold}.help-text{text-align:justify;line-height:1.5em;margin-top:1em}.tooltip{width:300px;max-width:300px;background-color:#777;color:#fff;z-index:101}.cursor-pointer{cursor:pointer}.password-actions{display:inline-block;width:12em}.password-actions>span,.password-actions i{margin-right:.6em}.custom-input-color{width:3em;height:1em;display:inline-block}.account-pass-image{height:32px;width:auto}.select-box{min-width:20em}fieldset.warning{padding:8px;border-radius:5px;color:#ef5350;background-color:#ffebee;border:1px solid #ef5350}fieldset.warning legend{color:#ef5350 !important}fieldset.warning a{color:#ef5350 !important;font-weight:bold}#actions{width:100%;line-height:2em;margin-bottom:5em}#actions #logo{display:flex;width:100%;margin-bottom:30px;color:#607d8b;align-items:center;background:url("../../../../../../public/images/logo_full_bg.png") left no-repeat;background-size:auto 150px;height:150px}#actions #page-title{width:100%;color:#607d8b;text-align:center}#actions #page-title h1{font-weight:bold;font-size:24px;letter-spacing:3px}#actions ul.errors{max-width:40vw;margin:0 auto;list-style:none;font-size:14px;text-align:left}#actions ul.errors>li{margin:1.5em auto;border-radius:3px;padding:1em .5em}#actions ul.errors>li.msg-critical{color:#ef5350;background-color:#ffebee;border:1px solid #ef5350}#actions ul.errors>li.msg-warning{color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28;color:#555}#actions ul.errors>li.msg-ok{color:#26a69a;background-color:#e0f2f1;border:1px solid #26a69a}#actions ul.errors>li>p.hint{color:#555;font-size:12px}#actions ul.errors>li>p.hint i{margin-right:.5em}#actions form{width:450px;margin:0 auto;text-align:left}#actions form fieldset{margin-bottom:2em}#actions form fieldset legend{width:100%;color:#fff;font-size:14px;font-weight:bold;text-align:center;background-color:#607d8b;margin:1em 0;letter-spacing:.2em;padding:.2em 0}#actions div.buttons{margin-top:2em;text-align:center}.center{text-align:center !important}.right{text-align:right !important}.left{text-align:left !important}.opacity50{opacity:.5 !important}#login-container{width:40em;margin:0 auto;background:transparent url("../../../../public/images/logo_full_bg.png") no-repeat top left;background-size:auto 10em}#login-container #boxSpacer{height:11em;background-color:transparent}#login-container #boxLogin{position:relative;margin:0 auto;width:100%;min-height:14em;padding:1em;background-color:#fff}#login-container #boxLogin #boxData{height:100%;min-height:14em;text-align:left;background-color:transparent}#login-container #boxLogin #boxData i{margin-right:.5em;opacity:.5}#login-container #boxLogin #boxData .extra-hidden{display:none}#login-container #boxLogin #boxButton{position:absolute;top:2em;right:2em}#login-container #boxLogin #boxActions{width:100%;text-align:right}#login-container #boxLogin #boxActions a{color:#c9c9c9}#login-container #boxLogout{margin-top:4em;width:100%}#login-container #boxLogout>div{margin:0 auto;width:250px;font-size:14px;padding:.5em;text-align:center;color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28}#login-container #boxUpdated{width:350px;margin:3em auto;font-size:14px;text-align:center;padding:.5em;color:#26a69a;background-color:#e0f2f1;border:1px solid #26a69a}#login-container #demo-info{margin:3em auto;color:#c9c9c9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:.5em}#login-container #demo-info ul{display:flex;justify-content:space-around;list-style:none}#login-container #demo-info ul li span{margin:0 2em}@media screen and (max-width:1000px){#content #searchbox .search-filters>*{margin:.5em 1em .5em 0}#content .data-container #title,#content .tab-data #title{width:90%}footer{display:none;justify-content:space-between;flex-wrap:wrap}footer .footer-parts{justify-content:space-between;flex-wrap:wrap}footer #footer-left,footer #footer-right{width:100%}footer .footer-parts>div{width:100%;padding:.5em 0}}@media screen and (max-width:600px){#content input,#box-popup input{width:100%}#content .mdl-textfield,#box-popup .mdl-textfield{width:100%}#content td.descField,#box-popup td.descField{display:none}#content td.valField .lowres-title,#box-popup td.valField .lowres-title{display:block}#content #searchbox .mdl-textfield{width:90%}#content #searchbox .search-text{width:90%}#content #searchbox .search-filters .selectize-control{width:100%}#content .data-container,#content .tab-data{width:100%}#content .data-container #title,#content .tab-data #title{width:90%}#content .data-container .selectize-control,#content .tab-data .selectize-control{width:100%}#box-popup h2>.btn-popup-close{display:inline-block}.mdl-data-table{table-layout:fixed;width:100%}.table-responsive td,.table-responsive th{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis}.table-responsive .cell-actions i{display:block !important}} \ No newline at end of file +html,body{margin:0;padding:0;text-align:left;background-color:#f5f5f5;color:#555;font-size:12px;font-weight:normal;box-sizing:border-box}*{font-family:"Roboto Regular",Verdana,Tahoma,sans-serif;box-sizing:inherit}*:before,*:after{box-sizing:inherit}table{font-size:11px;border-spacing:0}table th{border-bottom:2px solid transparent;vertical-align:middle}table th .icon{width:24px;height:24px}table tr{height:20px}table tr.odd{background-color:#f9f9f9}table tr.even>td,table tr.odd>td{border-bottom:1px solid #d9d9d9!important}table tr.even:hover,table tr.odd:hover{background-color:#e8ff99}table td{padding:3px}table td.txtCliente{font-weight:bold;text-align:center}form{font-size:11px;margin:0}input.inputImg,img.inputImg{background-color:transparent!important;width:24px!important;height:24px!important;border:0;vertical-align:middle;margin:0 .5em}input.txtFile{width:200px}input.txtLong{width:300px}textarea{width:350px}select.files{width:250px}input.spinner{width:5em}img{margin:0;padding:0;border:0;cursor:pointer}img.inputImgMini{background-color:transparent!important;width:16px!important;height:16px!important;margin:0 5px 0 5px;border:0;vertical-align:middle}i{cursor:pointer}form .form-field{display:flex;justify-content:space-between}form .form-field>label{min-width:12em;padding:.5em 0;font-size:16px;align-self:center}form .form-field>div{width:100%;align-self:center}a{text-decoration:none;color:#536dfe}a:visited{text-decoration:none;color:#536dfe}a:hover,a:active,a:focus{text-decoration:none;cursor:pointer}pre,code,samp,kbd{font-family:Consolas,"Andale Mono WT","Andale Mono","Bitstream Vera Sans Mono","Nimbus Mono L",Monaco,"Courier New",monospace;font-size:1em;direction:ltr;text-align:left;background-color:#fbfaf9;color:#333;box-shadow:inset 0 0 .3em #ccc;border-radius:2px}#nojs{width:80%;text-align:center;vertical-align:middle;margin:10px auto;padding:3px;background-color:#ef5350;color:white;font-weight:bold;font-size:14px}#wrap{height:auto!important;min-height:100%;width:100%;background-color:#f5f5f5}#wrap-loading{position:fixed;z-index:9999;top:50%;left:50%;padding:1em;background-color:rgba(255,255,255,0.8);display:none;border-radius:5px!important;-moz-border-radius:5px!important;-webkit-border-radius:5px!important}#wrap-loading.overlay-full{top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,0.5)}#wrap-loading.overlay-full #loading{position:absolute;top:50%;left:50%}#wrap-loading.overlay-full #taskStatus{display:block}#wrap-loading #taskStatus{display:none;position:absolute;left:0;top:55%;width:100%;text-align:center;color:white;background-color:rgba(0,0,0,0.5);padding:1em 0}#container{margin:auto;width:100%}#container.login{padding-top:5%}#container.error,#container.install,#container.passreset{width:100%}#container .logo{height:64px}#container #actions-bar{z-index:100;display:flex;justify-content:space-between;position:fixed;border:0 none;top:0;left:0;width:100%;padding:1em 0;background-color:transparent}#container #actions-bar-icons{flex-grow:1;text-align:center}#container #actions-bar-logo{display:none;padding:0 .5em}#container #actions-bar-logo img{display:inline-block;width:50px;opacity:.75}#container #content{width:95%;margin:2em auto 8em auto}#container #content.public-link{width:70%;min-height:0;margin:5em auto}#content td.descField,#box-popup td.descField{text-align:right;padding-right:20px;width:25%;border-right:1px solid #d9d9d9;color:#999;font-size:12px;font-weight:bold}#content td.valField,#box-popup td.valField{padding-left:1em;width:100%}#content td.valField .lowres-title,#box-popup td.valField .lowres-title{display:none;width:100%;color:#607d8b;font-size:12px}#content .pager{width:100%;margin-top:15px;padding:.5em;vertical-align:middle;font-size:11px;color:#999;background-color:#fcfcfc}#content .pager img{margin-left:5px;vertical-align:middle}#content .pager a{margin-left:5px;font-size:12px;color:#999}#content .pager>div{display:inline-block;width:49%}#content .pager .pager-left{text-align:left}#content .pager .pager-right{text-align:right}#content #title{width:50%;padding:7px;margin:auto;background-color:#d9d9d9;color:#fff;font-size:17px;letter-spacing:.3em;text-align:center}#content #title.titleNormal{background-color:#607d8b;color:#fff}#content .data-container{width:75%;margin:0 auto}#content fieldset.data{margin:2em auto}#content fieldset.data>legend{color:#607d8b;padding:0 .5em;font-size:1.5em}#content fieldset.data>div{display:none}#content fieldset.data>div table{width:100%}#content .data{width:100%;padding:10px;margin:0 auto;background-color:#fff;-webkit-box-shadow:2px 2px 3px -3px rgba(0,0,0,0.14);-moz-box-shadow:2px 2px 3px -3px rgba(0,0,0,0.14);box-shadow:1px 1px 2px rgba(0,0,0,0.14)}#content .data #history-icon{position:relative;top:5em;right:2em}#content .data td{text-align:left}#content .data td.descField{text-align:right}#content .data select{min-width:210px}#content .data .list-wrap{max-height:10em;overflow:auto;padding:.5em;margin:1em 0}#content .data .dropzone{width:30em;padding:1em;border:2px dashed #26a69a;text-align:center}#content .data .dropzone img{vertical-align:middle}#content .data .file-upload{display:none}#content .data .account-permissions{width:100%}#content .data .account-permissions fieldset{border:1px solid #c9c9c9;padding:1em}#content .data .account-permissions legend{font-weight:bold;color:#999;padding:.2em 0}#content .data .account-permissions fieldset>span{font-weight:bold;color:#999;padding:.2em 0;display:inline-block;width:100px;text-align:right}#content span.tag{margin:0 3px 3px 0;padding:.2em;background:#5c6bc0;color:#fff;border:0 solid transparent;border-radius:3px!important;-moz-border-radius:3px!important;-webkit-border-radius:3px!important}#content .extra-info{margin-top:20px}#content #tabs fieldset{border:1px solid #c9c9c9}#content #tabs #frmConfig label{float:left}#content .tblConfig{margin-bottom:2em}#content .tblConfig td.descField{width:35%;font-size:11px;font-weight:bold}#content .tblConfig td.rowHeader{padding:5px 0 5px 0;background-color:#f5f5f5;text-align:center;font-weight:bold;border-top:15px solid #f9f9f9;border-bottom:3px solid #a9c1d7;letter-spacing:.5em;color:#696969}#content .tblConfig input.checkbox{width:15px;text-align:left;padding:0}#content .tblConfig .option-disabled{text-align:center;background-color:#fff8e1;color:#ffca28;font-weight:bold}#content h2{width:100%;height:1.5em;font-size:18px;color:white;background-color:#a9c1d7;margin:0;padding-top:.1em}#content .section{margin-top:2.5em;border-bottom:1px solid #d9d9d9;text-align:left;font-size:14px;font-weight:bold;color:#5c6bc0}#content .row_even>td{background-color:#f5f5f5}#content .row_odd>td{background-color:white}#content .data-header ul{list-style:none;width:100%;margin:0 0 10px 0;padding:0}#content .data-header li{display:inline-block;padding:.2em .5em;font-weight:bold;letter-spacing:.2em;color:#fff;text-align:center}#content .data-header li a{color:#777}#content .data-header li img{float:right;width:24px;height:24px;vertical-align:middle}#content .data-header-minimal{border-bottom:1px solid #dfdfdf}#content .data-header-minimal ul{display:flex;flex-wrap:wrap;justify-content:flex-start;margin:0}#content .data-header-minimal li{display:inline-flex;min-width:10em;font-weight:normal;letter-spacing:normal}#content .data-header-minimal li a{color:#b9b9b9;padding:.3em .8em}#content .data-table{width:100%}#content .data-table td:first-of-type,#content .data-table th:first-of-type{width:5em}#content .data-table thead th{background-color:#607d8b;color:#fff}#content .data-table tbody td.cell-data{text-align:left}#content .data-table tbody td.cell-nodata{padding:0 .5em;text-align:left}#content .data-table tbody td.cell-actions{text-align:right}#content .data-table tbody td.cell-actions i{opacity:.5}#content .data-table tbody td.cell-actions i:hover{opacity:1}#content .data-rows ul{display:table;list-style:none;width:100%;margin:0 0 10px 0;padding:0;background-color:#fcfcfc}#content .data-rows li{float:left;display:block;padding:1em;color:#696969;text-align:center;min-height:2em}#content .data-rows li.cell-nodata{padding:1em 0;min-height:2em;text-align:left}#content .data-rows li.cell-actions{float:right;min-height:2em;padding:1em 0;text-align:left;background-color:#fcfcfc;width:15em}#content .data-rows li.cell-nodata img,#content .data-rows li.cell-actions img{width:24px;height:24px;margin:0 .5em}#content #resEventLog .data{width:100%}#content #resEventLog thead{text-align:center}#content #resEventLog tbody{width:100%;height:500px;overflow:auto}#content #resEventLog td{border-bottom:1px solid #d9d9d9}#content #resEventLog .cell{text-align:center}#content #resEventLog .cell-description{width:60%}#content #searchbox{background-color:#fcfcfc;vertical-align:middle;position:relative;height:auto;padding:.5em 1em;margin-bottom:2em}#content #searchbox form{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;text-align:left}#content #searchbox .search-filters>*{margin:0 .5em}#content #searchbox .search-filters .filter-buttons{display:inline-block}#content #searchbox .search-filters .filter-slider{width:10em}#content #searchbox .search-filters-tags{display:none;flex-grow:2}#content .btn-clear{opacity:.35;filter:alpha(opacity=35)}#content .btn-clear:hover{opacity:1;filter:alpha(opacity=100)}#content .actions-optional{display:none}#content .error{width:350px;padding:15px;margin:0 auto;text-align:center;font-size:16px;line-height:1.5em;color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28}#content .data .list-wrap,#box-popup .list-wrap{max-height:20em;overflow:auto;padding:.5em;margin:1em 0}#content .data .list-wrap ul,#box-popup .list-wrap ul{list-style-type:none;margin:0;padding:0}#content .data .list-wrap li,#box-popup .list-wrap li{display:flex;background:#f2f2f2;padding:.5em;font-size:1em;margin-bottom:.5em}#content .data .list-wrap li:hover,#box-popup .list-wrap li:hover{background:#e8eaf6;color:#000}#content .data .list-wrap div.files-item-info,#box-popup .list-wrap div.files-item-info{flex-grow:2}#content .data .list-wrap div.files-item-info img,#box-popup .list-wrap div.files-item-info img{margin:0 .5em}#content .data .list-wrap div.files-item-actions,#box-popup .list-wrap div.files-item-actions{padding:.3em 0}#box-popup{width:-webkit-min-content;width:-moz-min-content;width:min-content;min-width:50em;margin:5em auto;padding:0;background-color:#fff}#box-popup.box-password-view{width:-webkit-min-content;width:-moz-min-content;width:min-content;min-width:30em}#box-popup>h2{position:relative;width:100%;font-size:18px;color:#fff;background-color:#607d8b;margin:0;padding:.5em 0;line-height:1em}#box-popup>h2 .btn-popup-close{display:none;position:absolute;right:.5em;top:.2em}#box-popup>table{width:100%;padding-bottom:1em}#box-popup select{width:220px}#box-popup #resFancyAccion{display:none}#box-popup #resCheck{display:inline-block;width:80%;height:4em;padding:1em 0}#box-popup.image{background-color:transparent;max-width:100%;margin:0 auto;border-radius:0!important;-moz-border-radius:0!important;-webkit-border-radius:0!important}#box-popup.image img{width:auto;margin:0 auto}#box-popup.image>div.title{background-color:#607d8b;color:#fff;padding:.5em}#box-popup.help{min-height:100px;background-color:#f5f5f5}#box-popup.help p{font-size:14px;text-align:justify;line-height:2em}#box-complexity>div{text-align:justify;line-height:1.5em;margin-top:1em}#debug{float:left;text-align:left}#debuginfo{width:100%;min-height:10em;padding:1em;background-color:#fff8e1;text-align:left;line-height:1.5em}#debuginfo H3{text-align:center}.popup-data{width:100%;min-width:400px;border:0;text-align:left;margin:0;padding:1em .5em}.popup-data .descField{min-width:100px}footer{display:flex;justify-content:space-between;position:fixed;bottom:0;z-index:100;width:100%;padding:.5em 0;background-color:#f5f5f5;color:#b9b9b9;font-size:1em;-webkit-box-shadow:0 -3px 2px -2px rgba(0,0,0,0.14);-moz-box-shadow:0 -3px 2px -2px rgba(0,0,0,0.14);box-shadow:0 -3px 2px -2px rgba(0,0,0,0.14)}footer .footer-parts{display:flex;justify-content:space-between}footer #footer-left{width:50%;margin:0 1em}footer #footer-right{width:50%;margin:0 1em;justify-content:flex-end;text-align:right}footer #updates{min-width:10em;text-align:center;cursor:pointer}footer #status{margin:0 1em}footer #status>div{display:inline-block}footer #status .status-info{padding:.5em}footer #session{text-align:left;color:#999;font-size:.8em}footer a{color:#b9b9b9}footer a:visited{color:#b9b9b9}footer #project a:hover{color:#a9c1d7;border-bottom:1px solid #a9c1d7}footer #updates a:hover{color:#a9c1d7}footer img{border:0;width:16px;height:16px;vertical-align:middle}.round,.round5{border-radius:5px!important;-moz-border-radius:5px!important;-webkit-border-radius:5px!important}.midround{border-radius:0 0 10px 10px!important;-moz-border-radius:0 0 10px 10px!important;-webkit-border-radius:0 0 10px 10px!important}.midroundup{border-radius:10px 10px 0 0!important;-moz-border-radius:10px 10px 0 0!important;-webkit-border-radius:10px 10px 0 0!important}.fullround{border-radius:50%!important;-moz-border-radius:50%!important;-webkit-border-radius:50%!important}.iconMini{width:16px!important;height:16px!important;vertical-align:middle}.hide{display:none!important}.btn-checks{padding:5px;margin:.2em 0;width:30em;border-bottom:1px solid #c9c9c9}.shadow{-webkit-box-shadow:2px 2px 3px -3px rgba(0,0,0,0.14);-moz-box-shadow:2px 2px 3px -3px rgba(0,0,0,0.14);box-shadow:1px 1px 2px rgba(0,0,0,0.14)}.noRes{width:60%;padding:15px;background-color:#f9f9f9;color:#a9a9a9;border:#c9c9c9 1px solid;margin:20px auto;text-align:center;font-size:16px}.header-grey{background-color:#607d8b;color:#fff;min-height:2em}.no-background{background:none!important}.action-in-box{padding:1em;text-align:right}.action-in-box ul{list-style:none;margin:0;padding:0}.tab-data{margin:2em auto 0;width:75%}.item-actions{margin:1em auto}.tab-actions{margin:2em 0}.item-actions>ul,.tab-actions>ul{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;list-style:none;margin:0;padding:0}.item-actions>ul>li,.tab-actions>ul>li{width:auto;min-width:2em;margin-left:.5em}.item-actions>ul>li.datagrid-action-search,.tab-actions>ul>li.datagrid-action-search{min-width:5em}.item-actions>ul>li.datagrid-action-search form,.tab-actions>ul>li.datagrid-action-search form{width:100%}h5.datagrid-header-title{padding:.7em;border-bottom:1px solid #d9d9d9}.fullWidth{max-width:100%!important}.filter-on{color:#26a69a;background-color:#e0f2f1;border:1px solid #26a69a;padding:.3em 1em}.global-on{color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28;padding:.3em 1em}.opacity50{filter:alpha(opacity=50);opacity:.5}.custom-combobox{position:relative;display:inline-block}.custom-combobox input{width:80%}.custom-combobox-toggle{position:absolute;top:0;bottom:0;margin-left:-1px;padding:0;*height:1.7em;*top:.1em}.custom-combobox-input{margin:0;padding:.3em}.passLevel{width:20px;height:20px;display:inline-block;position:relative;top:2px}.passLevel.strongest{color:#26a69a;background-color:#e0f2f1;border:1px solid #26a69a;font-weight:bold}.passLevel.strongest:hover{color:#26a69a;background-color:#e0f2f1;border:1px solid #26a69a;font-weight:bold}.passLevel.strong{color:#2196f3;background-color:#e3f2fd;border:1px solid #2196f3;font-weight:bold}.passLevel.strong:hover{color:#2196f3;background-color:#e3f2fd;border:1px solid #2196f3;font-weight:bold}.passLevel.good{color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28;font-weight:bold}.passLevel.good:hover{color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28;font-weight:bold}.passLevel.weak{color:#ef5350;background-color:#ffebee;border:1px solid #ef5350;font-weight:bold}.passLevel.weak:hover{color:#ef5350;background-color:#ffebee;border:1px solid #ef5350;font-weight:bold}#alert #alert-text{margin:15px auto;font-size:14px;font-weight:bold}#alert #alert-pass{width:50%;padding:10px;margin:15px auto;border:1px solid #c9c9c9;color:#555;font-weight:bold}.dialog-text,.dialog-user-text,.dialog-pass-text{font-family:Consolas,"Andale Mono WT","Andale Mono","Bitstream Vera Sans Mono","Nimbus Mono L",Monaco,"Courier New",monospace;padding:.5em;text-align:center;min-width:200px}.dialog-user-text{border-bottom:#d9d9d9 1px solid;color:#a9a9a9}.dialog-pass-text{border:transparent 1px solid;letter-spacing:.2em}.dialog-buttons{text-align:center;padding:.5em;border-top:1px solid #c9c9c9;line-height:2.5em}.dialog-clip-copy{color:#26a69a;background-color:#e0f2f1}.help-box{display:none;background-color:#fff!important;color:#607d8b}.help-box>*{font-weight:bold}.help-text{text-align:justify;line-height:1.5em;margin-top:1em}.tooltip{width:300px;max-width:300px;background-color:#777;color:#fff;z-index:101}.cursor-pointer{cursor:pointer}.password-actions{display:inline-block;width:12em}.password-actions>span,.password-actions i{margin-right:.6em}.custom-input-color{width:3em;height:1em;display:inline-block}.account-pass-image{height:32px;width:auto}.select-box{min-width:20em}fieldset.warning{padding:8px;border-radius:5px;color:#ef5350;background-color:#ffebee;border:1px solid #ef5350}fieldset.warning legend{color:#ef5350!important}fieldset.warning a{color:#ef5350!important;font-weight:bold}#actions{width:100%;line-height:2em;margin-bottom:5em}#actions #logo{display:flex;width:100%;margin-bottom:30px;color:#607d8b;align-items:center;background:url("../../../../../../public/images/logo_full_bg.png") left no-repeat;background-size:auto 150px;height:150px}#actions #page-title{width:100%;color:#607d8b;text-align:center}#actions #page-title h1{font-weight:bold;font-size:24px;letter-spacing:3px}#actions ul.errors{max-width:40vw;margin:0 auto;list-style:none;font-size:14px;text-align:left}#actions ul.errors>li{margin:1.5em auto;border-radius:3px;padding:1em .5em}#actions ul.errors>li.msg-critical{color:#ef5350;background-color:#ffebee;border:1px solid #ef5350}#actions ul.errors>li.msg-warning{color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28;color:#555}#actions ul.errors>li.msg-ok{color:#26a69a;background-color:#e0f2f1;border:1px solid #26a69a}#actions ul.errors>li>p.hint{color:#555;font-size:12px}#actions ul.errors>li>p.hint i{margin-right:.5em}#actions form{width:450px;margin:0 auto;text-align:left}#actions form fieldset{margin-bottom:2em}#actions form fieldset legend{width:100%;color:#fff;font-size:14px;font-weight:bold;text-align:center;background-color:#607d8b;margin:1em 0;letter-spacing:.2em;padding:.2em 0}#actions div.buttons{margin-top:2em;text-align:center}.center{text-align:center!important}.right{text-align:right!important}.left{text-align:left!important}.opacity50{opacity:.5!important}#login-container{width:40em;margin:0 auto;background:transparent url("../../../../public/images/logo_full_bg.png") no-repeat top left;background-size:auto 10em}#login-container #boxSpacer{height:11em;background-color:transparent}#login-container #boxLogin{position:relative;margin:0 auto;width:100%;min-height:14em;padding:1em;background-color:#fff}#login-container #boxLogin #boxData{height:100%;min-height:14em;text-align:left;background-color:transparent}#login-container #boxLogin #boxData i{margin-right:.5em;opacity:.5}#login-container #boxLogin #boxData .extra-hidden{display:none}#login-container #boxLogin #boxButton{position:absolute;top:2em;right:2em}#login-container #boxLogin #boxActions{width:100%;text-align:right}#login-container #boxLogin #boxActions a{color:#c9c9c9}#login-container #boxLogout{margin-top:4em;width:100%}#login-container #boxLogout>div{margin:0 auto;width:250px;font-size:14px;padding:.5em;text-align:center;color:#ffca28;background-color:#fff8e1;border:1px solid #ffca28}#login-container #boxUpdated{width:350px;margin:3em auto;font-size:14px;text-align:center;padding:.5em;color:#26a69a;background-color:#e0f2f1;border:1px solid #26a69a}#login-container #demo-info{margin:3em auto;color:#c9c9c9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:.5em}#login-container #demo-info ul{display:flex;justify-content:space-around;list-style:none}#login-container #demo-info ul li span{margin:0 2em}@media screen and (max-width:1000px){#content #searchbox .search-filters>*{margin:.5em 1em .5em 0}#content .data-container #title,#content .tab-data #title{width:90%}footer{display:none;justify-content:space-between;flex-wrap:wrap}footer .footer-parts{justify-content:space-between;flex-wrap:wrap}footer #footer-left,footer #footer-right{width:100%}footer .footer-parts>div{width:100%;padding:.5em 0}}@media screen and (max-width:600px){#content input,#box-popup input{width:100%}#content .mdl-textfield,#box-popup .mdl-textfield{width:100%}#content td.descField,#box-popup td.descField{display:none}#content td.valField .lowres-title,#box-popup td.valField .lowres-title{display:block}#content #searchbox .mdl-textfield{width:90%}#content #searchbox .search-text{width:90%}#content #searchbox .search-filters .selectize-control{width:100%}#content .data-container,#content .tab-data{width:100%}#content .data-container #title,#content .tab-data #title{width:90%}#content .data-container .selectize-control,#content .tab-data .selectize-control{width:100%}#box-popup h2>.btn-popup-close{display:inline-block}.mdl-data-table{table-layout:fixed;width:100%}.table-responsive td,.table-responsive th{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis}.table-responsive .cell-actions i{display:block!important}} \ No newline at end of file diff --git a/app/modules/web/themes/material-blue/js/app-theme.min.js b/app/modules/web/themes/material-blue/js/app-theme.min.js index c25553f6..f5d5ebf9 100644 --- a/app/modules/web/themes/material-blue/js/app-theme.min.js +++ b/app/modules/web/themes/material-blue/js/app-theme.min.js @@ -1,5 +1,5 @@ var $jscomp={scope:{},findInternal:function(a,f,c){a instanceof String&&(a=String(a));for(var h=a.length,k=0;k"); a.passwordData.complexity.numbers&&(d+="1234567890");a.passwordData.complexity.chars&&(d+="abcdefghijklmnopqrstuvwxyz",a.passwordData.complexity.uppercase&&(d+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"));for(;m++injectDependencies(); - } - - /** - * @param Theme $theme - */ - public function inject(Theme $theme) + public function __construct(ThemeInterface $theme) { $this->theme = $theme; } @@ -228,7 +218,7 @@ abstract class DataGridBase implements DataGridInterface /** * @param DataGridActionInterface $action - * @param bool $isMenu Añadir al menu de acciones + * @param bool $isMenu Añadir al menu de acciones * @return $this */ public function setDataActions(DataGridActionInterface $action, $isMenu = false) @@ -278,7 +268,7 @@ abstract class DataGridBase implements DataGridInterface * Establecer la plantilla utilizada para la cabecera * * @param string $template El nombre de la plantilla a utilizar - * @param string $base Directorio base para la plantilla + * @param string $base Directorio base para la plantilla * @return $this */ public function setDataHeaderTemplate($template, $base = null) @@ -353,7 +343,7 @@ abstract class DataGridBase implements DataGridInterface * Establecer la plantilla utilizada para el paginador * * @param string $template El nombre de la plantilla a utilizar - * @param string $base Directorio base para la plantilla + * @param string $base Directorio base para la plantilla * @return $this */ public function setDataPagerTemplate($template, $base = null) @@ -379,7 +369,7 @@ abstract class DataGridBase implements DataGridInterface /** * @param string $template El nombre de la plantilla a utilizar - * @param string $base Directorio base para la plantilla + * @param string $base Directorio base para la plantilla * @return mixed */ public function setDataRowTemplate($template, $base = null) diff --git a/lib/SP/Repositories/Account/AccountFileRepository.php b/lib/SP/Repositories/Account/AccountFileRepository.php index 9c51f022..b2939ab8 100644 --- a/lib/SP/Repositories/Account/AccountFileRepository.php +++ b/lib/SP/Repositories/Account/AccountFileRepository.php @@ -245,7 +245,7 @@ class AccountFileRepository extends Repository implements RepositoryItemInterfac FROM AccountFile AF INNER JOIN Account A ON A.id = AF.accountId INNER JOIN Client C ON A.clientId = C.id - WHERE id IN (' . $this->getParamsFromArray($ids) . ')'; + WHERE AF.id IN (' . $this->getParamsFromArray($ids) . ')'; $Data = new QueryData(); $Data->setMapClassName(FileExtData::class); diff --git a/lib/SP/Repositories/Account/AccountHistoryRepository.php b/lib/SP/Repositories/Account/AccountHistoryRepository.php index 61e07552..0bb45f55 100644 --- a/lib/SP/Repositories/Account/AccountHistoryRepository.php +++ b/lib/SP/Repositories/Account/AccountHistoryRepository.php @@ -2,7 +2,7 @@ /** * sysPass * - * @author nuxsmin + * @author nuxsmin * @link https://syspass.org * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org * @@ -92,20 +92,20 @@ class AccountHistoryRepository extends Repository implements RepositoryItemInter */ public function getPasswordForHistoryId($id) { - $Data = new QueryData(); - $Data->setMapClassName(AccountPassData::class); - $Data->setLimit(1); + $queryData = new QueryData(); + $queryData->setMapClassName(AccountPassData::class); + $queryData->setLimit(1); - $Data->setSelect('AH.id, AH.name, AH.login, AH.pass, AH.key, AH.parentId'); - $Data->setFrom('AccountHistory AH'); + $queryData->setSelect('AH.id, AH.name, AH.login, AH.pass, AH.key, AH.parentId'); + $queryData->setFrom('AccountHistory AH'); - $queryWhere = AccountUtil::getAccountHistoryFilterUser($Data, $this->session); + $queryWhere = AccountUtil::getAccountHistoryFilterUser($this->session); $queryWhere[] = 'AH.id = ?'; - $Data->addParam($id); + $queryData->addParam($id); - $Data->setWhere($queryWhere); + $queryData->setWhere($queryWhere); - return DbWrapper::getResults($Data, $this->db); + return DbWrapper::getResults($queryData, $this->db); } /** diff --git a/lib/SP/Repositories/Plugin/PluginRepository.php b/lib/SP/Repositories/Plugin/PluginRepository.php index c0ec003f..eae391a9 100644 --- a/lib/SP/Repositories/Plugin/PluginRepository.php +++ b/lib/SP/Repositories/Plugin/PluginRepository.php @@ -2,7 +2,7 @@ /** * sysPass * - * @author nuxsmin + * @author nuxsmin * @link https://syspass.org * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org * @@ -25,6 +25,7 @@ namespace SP\Repositories\Plugin; use SP\Core\Exceptions\SPException; +use SP\DataModel\ItemData; use SP\DataModel\ItemSearchData; use SP\DataModel\PluginData; use SP\Repositories\Repository; @@ -46,24 +47,24 @@ class PluginRepository extends Repository implements RepositoryItemInterface * Creates an item * * @param PluginData $itemData - * @return mixed + * @return int * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ public function create($itemData) { $query = /** @lang SQL */ - 'INSERT INTO Plugin SET name = ?, data = ?, enabled = ?, available = ?'; + 'INSERT INTO Plugin SET `name` = ?, `data` = ?, enabled = ?, available = ?'; - $Data = new QueryData(); - $Data->setQuery($query); - $Data->addParam($itemData->getName()); - $Data->addParam($itemData->getData()); - $Data->addParam($itemData->getEnabled()); - $Data->addParam($itemData->getAvailable()); - $Data->setOnErrorMessage(__u('Error al crear el plugin')); + $queryData = new QueryData(); + $queryData->setQuery($query); + $queryData->addParam($itemData->getName()); + $queryData->addParam($itemData->getData()); + $queryData->addParam($itemData->getEnabled()); + $queryData->addParam($itemData->getAvailable()); + $queryData->setOnErrorMessage(__u('Error al crear el plugin')); - DbWrapper::getQuery($Data, $this->db); + DbWrapper::getQuery($queryData, $this->db); return $this->db->getLastId(); } @@ -80,47 +81,47 @@ class PluginRepository extends Repository implements RepositoryItemInterface { $query = /** @lang SQL */ 'UPDATE Plugin - SET name = ?, - data = ?, + SET `name` = ?, + `data` = ?, enabled = ?, available = ? - WHERE name = ? LIMIT 1'; + WHERE `name` = ? LIMIT 1'; - $Data = new QueryData(); - $Data->setQuery($query); - $Data->addParam($itemData->getName()); - $Data->addParam($itemData->getData()); - $Data->addParam($itemData->getEnabled()); - $Data->addParam($itemData->getAvailable()); - $Data->addParam($itemData->getName()); - $Data->setOnErrorMessage(__u('Error al actualizar el plugin')); + $queryData = new QueryData(); + $queryData->setQuery($query); + $queryData->addParam($itemData->getName()); + $queryData->addParam($itemData->getData()); + $queryData->addParam($itemData->getEnabled()); + $queryData->addParam($itemData->getAvailable()); + $queryData->addParam($itemData->getName()); + $queryData->setOnErrorMessage(__u('Error al actualizar el plugin')); - return DbWrapper::getQuery($Data, $this->db); + return DbWrapper::getQuery($queryData, $this->db); } /** * Returns the item for given id * * @param int $id - * @return mixed + * @return PluginData */ public function getById($id) { $query = /** @lang SQL */ 'SELECT id, - name, - data, + `name`, + `data`, enabled, available FROM Plugin WHERE id = ? LIMIT 1'; - $Data = new QueryData(); - $Data->setMapClassName(PluginData::class); - $Data->setQuery($query); - $Data->addParam($id); + $queryData = new QueryData(); + $queryData->setQuery($query); + $queryData->addParam($id); + $queryData->setMapClassName(PluginData::class); - return DbWrapper::getResults($Data, $this->db); + return DbWrapper::getResults($queryData, $this->db); } /** @@ -132,41 +133,41 @@ class PluginRepository extends Repository implements RepositoryItemInterface { $query = /** @lang SQL */ 'SELECT id, - name, + `name`, enabled, available FROM Plugin - ORDER BY name'; + ORDER BY `name`'; - $Data = new QueryData(); - $Data->setMapClassName(PluginData::class); - $Data->setQuery($query); + $queryData = new QueryData(); + $queryData->setQuery($query); + $queryData->setMapClassName(PluginData::class); - return DbWrapper::getResultsArray($Data, $this->db); + return DbWrapper::getResultsArray($queryData, $this->db); } /** * Returns all the items for given ids * * @param array $ids - * @return array + * @return PluginData[] */ public function getByIdBatch(array $ids) { $query = /** @lang SQL */ 'SELECT id, - name, + `name`, enabled, available FROM Plugin WHERE id IN (' . $this->getParamsFromArray($ids) . ')'; - $Data = new QueryData(); - $Data->setMapClassName(PluginData::class); - $Data->setQuery($query); - $Data->setParams($ids); + $queryData = new QueryData(); + $queryData->setQuery($query); + $queryData->setParams($ids); + $queryData->setMapClassName(PluginData::class); - return DbWrapper::getResultsArray($Data, $this->db); + return DbWrapper::getResultsArray($queryData, $this->db); } /** @@ -189,28 +190,21 @@ class PluginRepository extends Repository implements RepositoryItemInterface * Deletes an item * * @param $id - * @return PluginRepository + * @return int * @throws SPException * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ public function delete($id) { - $query = /** @lang SQL */ - 'DELETE FROM Plugin WHERE id = ? LIMIT 1'; + $queryData = new QueryData(); + $queryData->setQuery('DELETE FROM Plugin WHERE id = ? LIMIT 1'); + $queryData->addParam($id); + $queryData->setOnErrorMessage(__u('Error al eliminar el plugin')); - $Data = new QueryData(); - $Data->setQuery($query); - $Data->addParam($id); - $Data->setOnErrorMessage(__u('Error al eliminar el plugin')); + DbWrapper::getQuery($queryData, $this->db); - DbWrapper::getQuery($Data, $this->db); - - if ($Data->getQueryNumRows() === 0) { - throw new SPException(__u('Plugin no encontrado'), SPException::INFO); - } - - return $this; + return $this->db->getNumRows(); } /** @@ -249,33 +243,33 @@ class PluginRepository extends Repository implements RepositoryItemInterface /** * Searches for items by a given filter * - * @param ItemSearchData $SearchData + * @param ItemSearchData $itemSearchData * @return mixed */ - public function search(ItemSearchData $SearchData) + public function search(ItemSearchData $itemSearchData) { - $Data = new QueryData(); - $Data->setSelect('id, name, enabled, available'); - $Data->setFrom('Plugin'); - $Data->setOrder('name'); + $queryData = new QueryData(); + $queryData->setSelect('id, name, enabled, available'); + $queryData->setFrom('Plugin'); + $queryData->setOrder('name'); - if ($SearchData->getSeachString() !== '') { - $Data->setWhere('name LIKE ?'); + if ($itemSearchData->getSeachString() !== '') { + $queryData->setWhere('name LIKE ?'); - $search = '%' . $SearchData->getSeachString() . '%'; - $Data->addParam($search); + $search = '%' . $itemSearchData->getSeachString() . '%'; + $queryData->addParam($search); } - $Data->setLimit('?,?'); - $Data->addParam($SearchData->getLimitStart()); - $Data->addParam($SearchData->getLimitCount()); + $queryData->setLimit('?,?'); + $queryData->addParam($itemSearchData->getLimitStart()); + $queryData->addParam($itemSearchData->getLimitCount()); DbWrapper::setFullRowCount(); /** @var array $queryRes */ - $queryRes = DbWrapper::getResultsArray($Data, $this->db); + $queryRes = DbWrapper::getResultsArray($queryData, $this->db); - $queryRes['count'] = $Data->getQueryNumRows(); + $queryRes['count'] = $queryData->getQueryNumRows(); return $queryRes; } @@ -283,26 +277,26 @@ class PluginRepository extends Repository implements RepositoryItemInterface /** * Devuelve los datos de un plugin por su nombre * - * @param $name int - * @return mixed + * @param string $name + * @return PluginData */ public function getByName($name) { $query = /** @lang SQL */ 'SELECT id, - name, - data, + `name`, + `data`, enabled, available FROM Plugin - WHERE name = ? LIMIT 1'; + WHERE `name` = ? LIMIT 1'; - $Data = new QueryData(); - $Data->setMapClassName(PluginData::class); - $Data->setQuery($query); - $Data->addParam($name); + $queryData = new QueryData(); + $queryData->setQuery($query); + $queryData->addParam($name); + $queryData->setMapClassName(PluginData::class); - return DbWrapper::getResults($Data, $this->db); + return DbWrapper::getResults($queryData, $this->db); } /** @@ -316,18 +310,13 @@ class PluginRepository extends Repository implements RepositoryItemInterface */ public function toggleEnabled($id, $enabled) { - $query = /** @lang SQL */ - 'UPDATE Plugin - SET enabled = ? - WHERE id = ? LIMIT 1'; + $queryData = new QueryData(); + $queryData->setQuery('UPDATE Plugin SET enabled = ? WHERE id = ? LIMIT 1'); + $queryData->addParam($enabled); + $queryData->addParam($id); + $queryData->setOnErrorMessage(__u('Error al actualizar el plugin')); - $Data = new QueryData(); - $Data->setQuery($query); - $Data->addParam($enabled); - $Data->addParam($id); - $Data->setOnErrorMessage(__u('Error al actualizar el plugin')); - - return DbWrapper::getQuery($Data, $this->db); + return DbWrapper::getQuery($queryData, $this->db); } /** @@ -341,18 +330,13 @@ class PluginRepository extends Repository implements RepositoryItemInterface */ public function toggleEnabledByName($name, $enabled) { - $query = /** @lang SQL */ - 'UPDATE Plugin - SET enabled = ? - WHERE name = ? LIMIT 1'; + $queryData = new QueryData(); + $queryData->setQuery('UPDATE Plugin SET enabled = ? WHERE name = ? LIMIT 1'); + $queryData->addParam($enabled); + $queryData->addParam($name); + $queryData->setOnErrorMessage(__u('Error al actualizar el plugin')); - $Data = new QueryData(); - $Data->setQuery($query); - $Data->addParam($enabled); - $Data->addParam($name); - $Data->setOnErrorMessage(__u('Error al actualizar el plugin')); - - return DbWrapper::getQuery($Data, $this->db); + return DbWrapper::getQuery($queryData, $this->db); } /** @@ -366,18 +350,13 @@ class PluginRepository extends Repository implements RepositoryItemInterface */ public function toggleAvailable($id, $available) { - $query = /** @lang SQL */ - 'UPDATE Plugin - SET available = ? - WHERE id = ? LIMIT 1'; + $queryData = new QueryData(); + $queryData->setQuery('UPDATE Plugin SET available = ? WHERE id = ? LIMIT 1'); + $queryData->addParam($id); + $queryData->addParam($available); + $queryData->setOnErrorMessage(__u('Error al actualizar el plugin')); - $Data = new QueryData(); - $Data->setQuery($query); - $Data->addParam($id); - $Data->addParam($available); - $Data->setOnErrorMessage(__u('Error al actualizar el plugin')); - - return DbWrapper::getQuery($Data, $this->db); + return DbWrapper::getQuery($queryData, $this->db); } /** @@ -391,18 +370,13 @@ class PluginRepository extends Repository implements RepositoryItemInterface */ public function toggleAvailableByName($name, $available) { - $query = /** @lang SQL */ - 'UPDATE Plugin - SET available = ? - WHERE name = ? LIMIT 1'; + $queryData = new QueryData(); + $queryData->setQuery('UPDATE Plugin SET available = ? WHERE `name` = ? LIMIT 1'); + $queryData->addParam($available); + $queryData->addParam($name); + $queryData->setOnErrorMessage(__u('Error al actualizar el plugin')); - $Data = new QueryData(); - $Data->setQuery($query); - $Data->addParam($available); - $Data->addParam($name); - $Data->setOnErrorMessage(__u('Error al actualizar el plugin')); - - return DbWrapper::getQuery($Data, $this->db); + return DbWrapper::getQuery($queryData, $this->db); } /** @@ -415,32 +389,25 @@ class PluginRepository extends Repository implements RepositoryItemInterface */ public function resetById($id) { - $query = /** @lang SQL */ - 'UPDATE Plugin - SET data = NULL - WHERE id = ? LIMIT 1'; + $queryData = new QueryData(); + $queryData->setQuery('UPDATE Plugin SET `data` = NULL WHERE id = ? LIMIT 1'); + $queryData->addParam($id); + $queryData->setOnErrorMessage(__u('Error al actualizar el plugin')); - $Data = new QueryData(); - $Data->setQuery($query); - $Data->addParam($id); - $Data->setOnErrorMessage(__u('Error al actualizar el plugin')); - - return DbWrapper::getQuery($Data, $this->db); + return DbWrapper::getQuery($queryData, $this->db); } /** * Devolver los plugins activados * - * @return array + * @return ItemData[] */ public function getEnabled() { - $query = /** @lang SQL */ - 'SELECT name FROM Plugin WHERE enabled = 1'; + $queryData = new QueryData(); + $queryData->setQuery('SELECT id, name FROM Plugin WHERE enabled = 1'); + $queryData->setMapClassName(ItemData::class); - $Data = new QueryData(); - $Data->setQuery($query); - - return DbWrapper::getResultsArray($Data, $this->db); + return DbWrapper::getResultsArray($queryData, $this->db); } } \ No newline at end of file diff --git a/lib/SP/Repositories/Track/TrackRepository.php b/lib/SP/Repositories/Track/TrackRepository.php index 5eb46049..f4a797c2 100644 --- a/lib/SP/Repositories/Track/TrackRepository.php +++ b/lib/SP/Repositories/Track/TrackRepository.php @@ -92,9 +92,9 @@ class TrackRepository extends Repository { $query = /** @lang SQL */ 'UPDATE Track SET - track_userId = ?, - source = ?, - time = UNIX_TIMESTAMP(), + userId = ?, + `source` = ?, + `time` = UNIX_TIMESTAMP(), ipv4 = ?, ipv6 = ? WHERE id = ? LIMIT 1'; @@ -120,8 +120,8 @@ class TrackRepository extends Repository $query = /** @lang SQL */ 'SELECT id, userId, - source, - time, + `source`, + `time`, ipv4, ipv6 FROM Track diff --git a/lib/SP/Services/Plugin/PluginService.php b/lib/SP/Services/Plugin/PluginService.php new file mode 100644 index 00000000..2d9f433c --- /dev/null +++ b/lib/SP/Services/Plugin/PluginService.php @@ -0,0 +1,238 @@ +. + */ + +namespace SP\Services\Plugin; + +use SP\Core\Exceptions\SPException; +use SP\DataModel\ItemData; +use SP\DataModel\ItemSearchData; +use SP\DataModel\PluginData; +use SP\Repositories\Plugin\PluginRepository; +use SP\Services\Service; +use SP\Services\ServiceException; + +/** + * Class PluginService + * @package SP\Services\Plugin + */ +class PluginService extends Service +{ + /** + * @var PluginRepository + */ + protected $pluginRepository; + + /** + * Creates an item + * + * @param PluginData $itemData + * @return int + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function create(PluginData $itemData) + { + return $this->pluginRepository->create($itemData); + } + + /** + * Updates an item + * + * @param PluginData $itemData + * @return mixed + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function update(PluginData $itemData) + { + return $this->pluginRepository->update($itemData); + } + + /** + * Returns the item for given id + * + * @param int $id + * @return PluginData + */ + public function getById($id) + { + return $this->pluginRepository->getById($id); + } + + /** + * Returns all the items + * + * @return PluginData[] + */ + public function getAll() + { + return $this->pluginRepository->getAll(); + } + + /** + * Returns all the items for given ids + * + * @param array $ids + * @return PluginData[] + */ + public function getByIdBatch(array $ids) + { + return $this->pluginRepository->getByIdBatch($ids); + } + + /** + * Deletes all the items for given ids + * + * @param array $ids + * @throws SPException + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Core\Exceptions\SPException + */ + public function deleteByIdBatch(array $ids) + { + $this->pluginRepository->deleteByIdBatch($ids); + } + + /** + * Deletes an item + * + * @param $id + * @throws SPException + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function delete($id) + { + if ($this->pluginRepository->delete($id) === 0) { + throw new ServiceException(__u('Plugin no encontrado'), ServiceException::INFO); + } + } + + /** + * Searches for items by a given filter + * + * @param ItemSearchData $itemSearchData + * @return mixed + */ + public function search(ItemSearchData $itemSearchData) + { + return $this->pluginRepository->search($itemSearchData); + } + + /** + * Devuelve los datos de un plugin por su nombre + * + * @param string $name + * @return PluginData + */ + public function getByName($name) + { + return $this->pluginRepository->getByName($name); + } + + /** + * Cambiar el estado del plugin + * + * @param $id + * @param $enabled + * @return bool + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function toggleEnabled($id, $enabled) + { + return $this->pluginRepository->toggleEnabled($id, $enabled); + } + + /** + * Cambiar el estado del plugin + * + * @param $name + * @param $enabled + * @return bool + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function toggleEnabledByName($name, $enabled) + { + return $this->pluginRepository->toggleEnabledByName($name, $enabled); + } + + /** + * Cambiar el estado del plugin + * + * @param $id + * @param $available + * @return bool + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function toggleAvailable($id, $available) + { + return $this->pluginRepository->toggleAvailable($id, $available); + } + + /** + * Cambiar el estado del plugin + * + * @param $name + * @param $available + * @return bool + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function toggleAvailableByName($name, $available) + { + return $this->pluginRepository->toggleAvailableByName($name, $available); + } + + /** + * Restablecer los datos de un plugin + * + * @param int $id Id del plugin + * @return bool + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function resetById($id) + { + return $this->pluginRepository->resetById($id); + } + + /** + * Devolver los plugins activados + * + * @return ItemData[] + */ + public function getEnabled() + { + return $this->pluginRepository->getEnabled(); + } + + protected function initialize() + { + $this->pluginRepository = $this->dic->get(PluginRepository::class); + } +} \ No newline at end of file diff --git a/lib/SP/Services/PublicLink/PublicLinkService.php b/lib/SP/Services/PublicLink/PublicLinkService.php index d70d6877..d6a15cdb 100644 --- a/lib/SP/Services/PublicLink/PublicLinkService.php +++ b/lib/SP/Services/PublicLink/PublicLinkService.php @@ -77,15 +77,6 @@ class PublicLinkService extends Service return hash('sha256', uniqid('sysPassPublicLink', true)); } - /** - * @throws \Psr\Container\ContainerExceptionInterface - * @throws \Psr\Container\NotFoundExceptionInterface - */ - protected function initialize() - { - $this->publicLinkRepository = $this->dic->get(PublicLinkRepository::class); - } - /** * @param ItemSearchData $itemSearchData * @return mixed @@ -144,6 +135,7 @@ class PublicLinkService extends Service * Returns the hash from a composed key * * @param string $key + * @param string $salt * @return mixed */ public static function getHashForKey($key, $salt) @@ -154,7 +146,7 @@ class PublicLinkService extends Service /** * Obtener los datos de una cuenta y encriptarlos para el enlace * - * @param int $itemId + * @param int $itemId * @param string $linkKey * @return Vault * @throws \Defuse\Crypto\Exception\CryptoException @@ -243,7 +235,7 @@ class PublicLinkService extends Service } /** - * @param string $salt + * @param string $salt * @param PublicLinkData $publicLinkData * @return string */ @@ -332,4 +324,13 @@ class PublicLinkService extends Service { return $this->publicLinkRepository->getHashForItem($itemId); } + + /** + * @throws \Psr\Container\ContainerExceptionInterface + * @throws \Psr\Container\NotFoundExceptionInterface + */ + protected function initialize() + { + $this->publicLinkRepository = $this->dic->get(PublicLinkRepository::class); + } } \ No newline at end of file diff --git a/lib/SP/Storage/FileCachePacked.php b/lib/SP/Storage/FileCachePacked.php new file mode 100644 index 00000000..5f3526e5 --- /dev/null +++ b/lib/SP/Storage/FileCachePacked.php @@ -0,0 +1,162 @@ +. + */ + +namespace SP\Storage; + +use RuntimeException; + +/** + * Class FileCachePacked + * + * @package SP\Storage + */ +class FileCachePacked implements FileStorageInterface +{ + /** + * @var array + */ + protected $data; + /** + * @var bool + */ + protected $loaded = false; + + /** + * @param string $path + * + * @return mixed + * @throws \RuntimeException + */ + public function load($path) + { + if (!file_exists($path)) { + throw new RuntimeException(sprintf(__('No es posible leer/escribir el archivo: %s'), $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 (($this->data = unserialize($data)) === false) { + throw new RuntimeException(__('Error al obtener los datos')); + } + + $this->loaded = true; + + return $this; + } + + /** + * @param string $path + * @param mixed $data + * @return FileStorageInterface + */ + public function save($path, $data = null) + { + if ($data === null) { + $this->saveData($path, $this->data); + } else { + $this->saveData($path, $data); + } + + return $this; + } + + /** + * @param $path + * @param $data + */ + 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)); + } + + if (!($data = gzcompress(serialize($data)))) { + throw new RuntimeException(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)); + } + } + + /** + * @param string $path + * + * @return FileStorageInterface + */ + 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)); + } + + return $this; + } + + /** + * Gets key data from cache + * + * @param $key + * @return mixed + */ + public function get($key) + { + if (!$this->loaded) { + throw new RuntimeException((__('Datos no cargados'))); + } + + return isset($this->data[$key]) ? $this->data[$key] : null; + } + + /** + * Sets key data into cache + * + * @param $key + * @param $data + */ + public function set($key, $data) + { + if (!$this->loaded) { + $this->data = []; + } + + $this->data[$key] = ['time' => time(), 'data' => serialize($data)]; + } +} \ No newline at end of file diff --git a/public/js/app-actions.js b/public/js/app-actions.js index e495226f..9c249840 100644 --- a/public/js/app-actions.js +++ b/public/js/app-actions.js @@ -493,7 +493,6 @@ sysPass.Actions = function (Common) { log.info("items:update"); const $dst = $("#" + $obj.data("item-dst"))[0].selectize; - $dst.clearOptions(); $dst.load(function (callback) { const opts = Common.appRequests().getRequestOpts(); @@ -643,7 +642,7 @@ sysPass.Actions = function (Common) { upgrade: function ($obj) { log.info("main:upgrade"); - var atext = "

" + Common.config().LANG[59] + "

"; + const atext = "

" + Common.config().LANG[59] + "

"; mdlDialog().show({ text: atext, @@ -658,28 +657,28 @@ sysPass.Actions = function (Common) { positive: { title: Common.config().LANG[43], onClick: function (e) { - var $useTask = $obj.find("input[name='useTask']"); - var $taskStatus = $("#taskStatus"); + const $useTask = $obj.find("input[name='useTask']"); + const $taskStatus = $("#taskStatus"); $taskStatus.empty().html(Common.config().LANG[62]); if ($useTask.length > 0 && $useTask.val() == 1) { - var optsTask = Common.appRequests().getRequestOpts(); + const optsTask = Common.appRequests().getRequestOpts(); optsTask.url = ajaxUrl.entrypoint; optsTask.data = { source: $obj.find("input[name='lock']").val(), taskId: $obj.find("input[name='taskId']").val() }; - var task = Common.appRequests().getActionEvent(optsTask, function (result) { - var text = result.task + " - " + result.message + " - " + result.time + " - " + result.progress + "%"; + const task = Common.appRequests().getActionEvent(optsTask, function (result) { + let text = result.task + " - " + result.message + " - " + result.time + " - " + result.progress + "%"; text += "
" + Common.config().LANG[62]; $taskStatus.empty().html(text); }); } - var opts = Common.appRequests().getRequestOpts(); + const opts = Common.appRequests().getRequestOpts(); opts.url = ajaxUrl.entrypoint; opts.method = "get"; opts.useFullLoading = true; @@ -707,7 +706,7 @@ sysPass.Actions = function (Common) { getUpdates: function () { log.info("main:getUpdates"); - var opts = Common.appRequests().getRequestOpts(); + const opts = Common.appRequests().getRequestOpts(); opts.url = ajaxUrl.entrypoint; opts.type = "html"; opts.method = "get"; @@ -1040,7 +1039,11 @@ sysPass.Actions = function (Common) { } }; - + /** + * Common tabs actions + * + * @type {{state: {tab: {index: number, refresh: boolean, route: string}, itemId: number, update: update}, save: save}} + */ const tabs = { state: { tab: { @@ -1067,6 +1070,7 @@ sysPass.Actions = function (Common) { const opts = Common.appRequests().getRequestOpts(); opts.url = ajaxUrl.entrypoint + "?r=" + $obj.data("action-route"); + opts.method = $obj.data("action-method") || "post"; opts.data = $obj.serialize(); Common.appRequests().getActionCall(opts, function (json) { @@ -1145,7 +1149,7 @@ sysPass.Actions = function (Common) { opts.url = ajaxUrl.entrypoint; opts.method = "get"; opts.data = { - r: $obj.data("action-route") + (itemId ? "/" + itemId : ''), + r: $obj.data("action-route") + (itemId && "/" + itemId), items: items, sk: Common.sk.get(), isAjax: 1 @@ -1239,11 +1243,11 @@ sysPass.Actions = function (Common) { * * @type {{view: wiki.view}} */ - var wiki = { + const wiki = { show: function ($obj) { log.info("wiki:show"); - var opts = Common.appRequests().getRequestOpts(); + const opts = Common.appRequests().getRequestOpts(); opts.url = ajaxUrl.entrypoint; opts.method = "get"; opts.data = { @@ -1266,38 +1270,21 @@ sysPass.Actions = function (Common) { /** * Objeto para las acciones de los plugins */ - var plugin = { + const plugin = { toggle: function ($obj) { log.info("plugin:enable"); - var data = { - itemId: $obj.data("item-id"), - actionId: $obj.data("action-id"), - sk: Common.sk.get(), - activeTab: $obj.data("activetab") - }; - - var opts = Common.appRequests().getRequestOpts(); - opts.url = ajaxUrl.entrypoint; - opts.data = data; - - Common.appRequests().getActionCall(opts, function (json) { - Common.msg.out(json); - - if (json.status === 0) { - // Recargar para cargar/descargar el plugin - setTimeout(function () { - Common.redirect("index.php"); - }, 2000); - - //doAction({actionId: $obj.data("nextaction-id"), itemId: $obj.data("activetab")}); - } + tabs.save($obj, function () { + // Recargar para cargar/descargar el plugin + setTimeout(function () { + Common.redirect("index.php"); + }, 2000); }); }, reset: function ($obj) { log.info("plugin:reset"); - var atext = "

" + Common.config().LANG[58] + "

"; + const atext = "

" + Common.config().LANG[58] + "

"; mdlDialog().show({ text: atext, @@ -1314,20 +1301,7 @@ sysPass.Actions = function (Common) { onClick: function (e) { e.preventDefault(); - var data = { - "itemId": $obj.data("item-id"), - "actionId": $obj.data("action-id"), - "sk": Common.sk.get(), - "activeTab": $obj.data("activetab") - }; - - var opts = Common.appRequests().getRequestOpts(); - opts.url = ajaxUrl.entrypoint; - opts.data = data; - - Common.appRequests().getActionCall(opts, function (json) { - Common.msg.out(json); - }); + tabs.save($obj); } } }); @@ -1433,6 +1407,11 @@ sysPass.Actions = function (Common) { } }; + /** + * Common grids actions + * + * @type {{search: search, nav: nav, delete: delete}} + */ const grid = { search: function ($obj) { log.info("grid:search"); diff --git a/public/js/app-actions.min.js b/public/js/app-actions.min.js index d06792ea..2c54fafb 100644 --- a/public/js/app-actions.min.js +++ b/public/js/app-actions.min.js @@ -1,5 +1,5 @@ var $jscomp={scope:{},findInternal:function(b,e,l){b instanceof String&&(b=String(b));for(var f=b.length,g=0;g'+c+""),h=d.find("img");if(0===h.length)return m(c);h.hide();$.magnificPopup.open({items:{src:d,type:"inline"},callbacks:{open:function(){var a= @@ -16,30 +16,29 @@ void 0!==a.data.itemId&&void 0!==a.data.nextAction&&g(b.appRequests().getRouteFo update:function(a){e.info("items:update");var c=$("#"+a.data("item-dst"))[0].selectize;c.clearOptions();c.load(function(d){var c=b.appRequests().getRequestOpts();c.url=f.entrypoint;c.method="get";c.data={r:a.data("item-route"),sk:b.sk.get()};b.appRequests().getActionCall(c,function(a){d(a)})})}},t={logout:function(){b.redirect("index.php?r=login/logout")},login:function(a){e.info("main:login");var c=b.appRequests().getRequestOpts();c.url=f.entrypoint+"?r="+a.data("route");c.method="get";c.data=a.serialize(); b.appRequests().getActionCall(c,function(d){var c=$(".extra-hidden");switch(d.status){case 0:b.redirect(d.data.url);break;case 2:b.msg.out(d);a.find("input[type='text'],input[type='password']").val("");a.find("input:first").focus();0";mdlDialog().show({text:c,negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(c){c=a.find("input[name='useTask']");var d=$("#taskStatus");d.empty().html(b.config().LANG[62]);if(0";mdlDialog().show({text:c,negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(c){c=a.find("input[name='useTask']");var d=$("#taskStatus");d.empty().html(b.config().LANG[62]);0",e=a.data("selection"),f=[];if(e&&($(e).find(".is-selected").each(function(){f.push($(this).data("item-id"))}),0===f.length))return;mdlDialog().show({text:d,negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(a){a.preventDefault();"function"===typeof c&&c(f)}}})}};return{doAction:function(a,c){var d={r:a.r+(void 0!==a.itemId?"/"+a.itemId:""),isAjax:1},e=b.appRequests().getRequestOpts(); -e.url=f.entrypoint;e.method="get";e.type="html";e.addHistory=!0;e.data=d;b.appRequests().getActionCall(e,function(a){var d=$("#content");d.empty().html(a);a=b.triggers().views;a.common(d);if(void 0!==c&&"function"===typeof a[c])a[c]();d=$(".mdl-layout__content");0";mdlDialog().show({text:c,negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault(); -b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(c){c=b.appRequests().getRequestOpts();c.url=f.entrypoint;c.method="get";c.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:b.sk.get()};b.appRequests().getActionCall(c,function(a){b.msg.out(a);0===a.status&&p.listFiles($("#list-account-files"))})}}})}},checks:{wiki:function(a){e.info("checks:wiki");a=$(a.data("src"));a.find("[name='sk']").val(b.sk.get());var c=b.appRequests().getRequestOpts();c.url=f.entrypoint; -c.data=a.serialize();b.appRequests().getActionCall(c,function(a){b.msg.out(a);0===a.status&&$("#dokuWikiResCheck").html(a.data)})}},config:{save:function(a){e.info("config:save");k.save(a)},masterpass:function(a){var c='

'+b.config().LANG[59]+"

";mdlDialog().show({text:c,negative:{title:b.config().LANG[44],onClick:function(c){c.preventDefault();b.msg.error(b.config().LANG[44]);a.find(":input[type=password]").val("")}},positive:{title:b.config().LANG[43], -onClick:function(c){c=a.find("input[name='useTask']");var d=$("#taskStatus");d.empty().html(b.config().LANG[62]);0";mdlDialog().show({text:h,negative:{title:b.config().LANG[44], -onClick:function(e){e.preventDefault();b.appRequests().getActionCall(d,function(d){b.msg.out(d);0===d.status&&g({r:a.data("action-next")+"/"+c})})}},positive:{title:b.config().LANG[43],onClick:function(e){e.preventDefault();d.data.notify=1;b.appRequests().getActionCall(d,function(d){b.msg.out(d);0===d.status&&g({r:a.data("action-next")+"/"+c})})}}})},refresh:function(a){e.info("link:refresh");k.state.update(a);var c=a.data("item-id"),d=b.appRequests().getRequestOpts();d.url=f.entrypoint;d.method= -"get";d.data={r:a.data("action-route")+"/"+c,sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(d,function(d){b.msg.out(d);0===d.status&&((d=a.data("action-next"))?g({r:d+"/"+c}):g({r:k.state.tab.route,tabIndex:k.state.tab.index}))})}},eventlog:{search:function(a){e.info("eventlog:search");n.search(a)},nav:function(a){e.info("eventlog:nav");n.nav(a)},clear:function(a){var c='

'+b.config().LANG[20]+"

";mdlDialog().show({text:c,negative:{title:b.config().LANG[44], -onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(c){c.preventDefault();c=b.appRequests().getRequestOpts();c.url=f.entrypoint+"?r="+a.data("action-route");c.method="get";c.data={sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(c,function(c){b.msg.out(c);0===c.status&&g({r:a.data("nextaction")});b.sk.set(c.csrf)})}}})}},ajaxUrl:f,plugin:{toggle:function(a){e.info("plugin:enable");a={itemId:a.data("item-id"),actionId:a.data("action-id"), -sk:b.sk.get(),activeTab:a.data("activetab")};var c=b.appRequests().getRequestOpts();c.url=f.entrypoint;c.data=a;b.appRequests().getActionCall(c,function(a){b.msg.out(a);0===a.status&&setTimeout(function(){b.redirect("index.php")},2E3)})},reset:function(a){e.info("plugin:reset");var c='

'+b.config().LANG[58]+"

";mdlDialog().show({text:c,negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43], -onClick:function(c){c.preventDefault();c={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:b.sk.get(),activeTab:a.data("activetab")};var d=b.appRequests().getRequestOpts();d.url=f.entrypoint;d.data=c;b.appRequests().getActionCall(d,function(a){b.msg.out(a)})}}})}},notification:{check:function(a){e.info("notification:check");var c=b.appRequests().getRequestOpts();c.url=f.entrypoint;c.method="get";c.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(c, -function(c){b.msg.out(c);0===c.status&&g({r:a.data("nextaction")});b.sk.set(c.csrf)})},search:function(a){e.info("notification:search");n.search(a)},show:function(a){e.info("notification:show");u.show(a)},save:function(a){e.info("notification:save");var c=b.appRequests().getRequestOpts();c.url=f.entrypoint+"?r="+a.data("route");c.data=a.serialize();b.appRequests().getActionCall(c,function(c){b.msg.out(c);0===c.status&&(g({r:a.data("nextaction")}),$.magnificPopup.close())})},"delete":function(a){e.info("notification:delete"); -n["delete"](a,function(c){var d=a.data("item-id"),e=b.appRequests().getRequestOpts();e.url=f.entrypoint;e.method="get";e.data={r:a.data("action-route")+(d?"/"+d:""),items:c,sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(e,function(c){b.msg.out(c);g({r:a.data("nextaction")})})})},getActive:function(){e.info("notification:getActive");var a=b.appRequests().getRequestOpts();a.url=f.entrypoint;a.method="get";a.data={r:"items/notifications",sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(a, -function(a){return a})},nav:function(a){e.info("eventlog:nav");n.nav(a)}},wiki:{show:function(a){e.info("wiki:show");var c=b.appRequests().getRequestOpts();c.url=f.entrypoint;c.method="get";c.data={pageName:a.data("pagename"),actionId:a.data("action-id"),sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(c,function(a){0!==a.status?b.msg.out(a):m(a.data.html)})}},items:r,ldap:{check:function(a){e.info("ldap:check");var c=$(a.data("src"));c.find("[name='sk']").val(b.sk.get());var d=b.appRequests().getRequestOpts(); -d.url=f.entrypoint+"?r="+a.data("action-route");d.data=c.serialize();b.appRequests().getActionCall(d,function(a){b.msg.out(a);0===a.status&&void 0!==a.data.template&&void 0!==a.data.items&&m(a.data.template,{open:function(){var c=$("#ldap-results").find(".list-wrap").empty();a.data.items.forEach(function(a){c.append(b.appTheme().html.getList(a.items,a.icon))})}})})},"import":function(a){e.info("ldap:import");var c='

'+b.config().LANG[57]+"

";mdlDialog().show({text:c, -negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(c){c=$(a.data("src"));c.find("[name='sk']").val(b.sk.get());var d=b.appRequests().getRequestOpts();d.url=f.entrypoint+"?r="+a.data("action-route");d.data=c.serialize();b.appRequests().getActionCall(d,function(a){b.msg.out(a)})}}})}}}}; +k.state.itemId=a.data("item-id"))}},save:function(a,c){e.info("tabs:save");k.state.update(a);var d=b.appRequests().getRequestOpts();d.url=f.entrypoint+"?r="+a.data("action-route");d.method=a.data("action-method")||"post";d.data=a.serialize();b.appRequests().getActionCall(d,function(d){b.msg.out(d);0===d.status&&("function"===typeof c&&c(),!0===k.state.tab.refresh?g({r:k.state.tab.route,tabIndex:k.state.tab.index}):void 0!==a.data("reload")&&(e.info("reload"),setTimeout(function(){b.redirect("index.php")}, +2E3)))})}},u={show:function(a){e.info("appMgmt:show");k.state.update(a);var c=b.appRequests().getRequestOpts();c.url=f.entrypoint;c.method="get";c.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(c,function(c){if(0!==c.status)b.msg.out(c);else{var d=a.data("item-dst");m(c.data.html,{open:function(){d&&(k.state.tab.refresh=!1)},close:function(){d&&r.update(a)}})}})},"delete":function(a){e.info("appMgmt:delete");k.state.update(a);n["delete"](a, +function(c){var d=a.data("item-id"),h=b.appRequests().getRequestOpts();h.url=f.entrypoint;h.method="get";h.data={r:a.data("action-route")+(d&&"/"+d),items:c,sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(h,function(a){b.msg.out(a);g({r:k.state.tab.route,tabIndex:k.state.tab.index})})})},save:function(a){e.info("appMgmt:save");k.save(a,function(){$.magnificPopup.close()})},search:function(a){e.info("appMgmt:search");n.search(a)},nav:function(a){e.info("appMgmt:nav");n.nav(a)}},n={search:function(a){e.info("grid:search"); +var c=$(a.data("target")),d=b.appRequests().getRequestOpts();d.url=f.entrypoint+"?r="+a.data("action-route");d.method="get";d.data=a.serialize();b.appRequests().getActionCall(d,function(a){0===a.status?c.html(a.data.html):c.html(b.msg.html.error(a.description));b.sk.set(a.csrf)})},nav:function(a,c){e.info("grid:nav");var d=$("#"+a.data("action-form"));d.find("[name='start']").val(a.data("start"));d.find("[name='count']").val(a.data("count"));d.find("[name='sk']").val(b.sk.get());"function"===typeof c? +c(d):n.search(d)},"delete":function(a,c){var d='

'+b.config().LANG[12]+"

",e=a.data("selection"),f=[];if(e&&($(e).find(".is-selected").each(function(){f.push($(this).data("item-id"))}),0===f.length))return;mdlDialog().show({text:d,negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(a){a.preventDefault();"function"===typeof c&&c(f)}}})}};return{doAction:function(a, +c){var d={r:a.r+(void 0!==a.itemId?"/"+a.itemId:""),isAjax:1},e=b.appRequests().getRequestOpts();e.url=f.entrypoint;e.method="get";e.type="html";e.addHistory=!0;e.data=d;b.appRequests().getActionCall(e,function(a){var d=$("#content");d.empty().html(a);a=b.triggers().views;a.common(d);if(void 0!==c&&"function"===typeof a[c])a[c]();d=$(".mdl-layout__content");0";mdlDialog().show({text:c, +negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(c){c=b.appRequests().getRequestOpts();c.url=f.entrypoint;c.method="get";c.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:b.sk.get()};b.appRequests().getActionCall(c,function(a){b.msg.out(a);0===a.status&&p.listFiles($("#list-account-files"))})}}})}},checks:{wiki:function(a){e.info("checks:wiki");a=$(a.data("src"));a.find("[name='sk']").val(b.sk.get()); +var c=b.appRequests().getRequestOpts();c.url=f.entrypoint;c.data=a.serialize();b.appRequests().getActionCall(c,function(a){b.msg.out(a);0===a.status&&$("#dokuWikiResCheck").html(a.data)})}},config:{save:function(a){e.info("config:save");k.save(a)},masterpass:function(a){var c='

'+b.config().LANG[59]+"

";mdlDialog().show({text:c,negative:{title:b.config().LANG[44],onClick:function(c){c.preventDefault();b.msg.error(b.config().LANG[44]);a.find(":input[type=password]").val("")}}, +positive:{title:b.config().LANG[43],onClick:function(c){c=a.find("input[name='useTask']");var d=$("#taskStatus");d.empty().html(b.config().LANG[62]);0"; +mdlDialog().show({text:h,negative:{title:b.config().LANG[44],onClick:function(e){e.preventDefault();b.appRequests().getActionCall(d,function(d){b.msg.out(d);0===d.status&&g({r:a.data("action-next")+"/"+c})})}},positive:{title:b.config().LANG[43],onClick:function(e){e.preventDefault();d.data.notify=1;b.appRequests().getActionCall(d,function(d){b.msg.out(d);0===d.status&&g({r:a.data("action-next")+"/"+c})})}}})},refresh:function(a){e.info("link:refresh");k.state.update(a);var c=a.data("item-id"),d= +b.appRequests().getRequestOpts();d.url=f.entrypoint;d.method="get";d.data={r:a.data("action-route")+"/"+c,sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(d,function(d){b.msg.out(d);0===d.status&&((d=a.data("action-next"))?g({r:d+"/"+c}):g({r:k.state.tab.route,tabIndex:k.state.tab.index}))})}},eventlog:{search:function(a){e.info("eventlog:search");n.search(a)},nav:function(a){e.info("eventlog:nav");n.nav(a)},clear:function(a){var c='

'+b.config().LANG[20]+"

"; +mdlDialog().show({text:c,negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(c){c.preventDefault();c=b.appRequests().getRequestOpts();c.url=f.entrypoint+"?r="+a.data("action-route");c.method="get";c.data={sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(c,function(c){b.msg.out(c);0===c.status&&g({r:a.data("nextaction")});b.sk.set(c.csrf)})}}})}},ajaxUrl:f,plugin:{toggle:function(a){e.info("plugin:enable"); +k.save(a,function(){setTimeout(function(){b.redirect("index.php")},2E3)})},reset:function(a){e.info("plugin:reset");var c='

'+b.config().LANG[58]+"

";mdlDialog().show({text:c,negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(b){b.preventDefault();k.save(a)}}})}},notification:{check:function(a){e.info("notification:check");var c=b.appRequests().getRequestOpts(); +c.url=f.entrypoint;c.method="get";c.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(c,function(c){b.msg.out(c);0===c.status&&g({r:a.data("nextaction")});b.sk.set(c.csrf)})},search:function(a){e.info("notification:search");n.search(a)},show:function(a){e.info("notification:show");u.show(a)},save:function(a){e.info("notification:save");var c=b.appRequests().getRequestOpts();c.url=f.entrypoint+"?r="+a.data("route");c.data=a.serialize();b.appRequests().getActionCall(c, +function(c){b.msg.out(c);0===c.status&&(g({r:a.data("nextaction")}),$.magnificPopup.close())})},"delete":function(a){e.info("notification:delete");n["delete"](a,function(c){var d=a.data("item-id"),e=b.appRequests().getRequestOpts();e.url=f.entrypoint;e.method="get";e.data={r:a.data("action-route")+(d?"/"+d:""),items:c,sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(e,function(c){b.msg.out(c);g({r:a.data("nextaction")})})})},getActive:function(){e.info("notification:getActive");var a=b.appRequests().getRequestOpts(); +a.url=f.entrypoint;a.method="get";a.data={r:"items/notifications",sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(a,function(a){return a})},nav:function(a){e.info("eventlog:nav");n.nav(a)}},wiki:{show:function(a){e.info("wiki:show");var c=b.appRequests().getRequestOpts();c.url=f.entrypoint;c.method="get";c.data={pageName:a.data("pagename"),actionId:a.data("action-id"),sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(c,function(a){0!==a.status?b.msg.out(a):m(a.data.html)})}},items:r,ldap:{check:function(a){e.info("ldap:check"); +var c=$(a.data("src"));c.find("[name='sk']").val(b.sk.get());var d=b.appRequests().getRequestOpts();d.url=f.entrypoint+"?r="+a.data("action-route");d.data=c.serialize();b.appRequests().getActionCall(d,function(a){b.msg.out(a);0===a.status&&void 0!==a.data.template&&void 0!==a.data.items&&m(a.data.template,{open:function(){var c=$("#ldap-results").find(".list-wrap").empty();a.data.items.forEach(function(a){c.append(b.appTheme().html.getList(a.items,a.icon))})}})})},"import":function(a){e.info("ldap:import"); +var c='

'+b.config().LANG[57]+"

";mdlDialog().show({text:c,negative:{title:b.config().LANG[44],onClick:function(a){a.preventDefault();b.msg.error(b.config().LANG[44])}},positive:{title:b.config().LANG[43],onClick:function(c){c=$(a.data("src"));c.find("[name='sk']").val(b.sk.get());var d=b.appRequests().getRequestOpts();d.url=f.entrypoint+"?r="+a.data("action-route");d.data=c.serialize();b.appRequests().getActionCall(d,function(a){b.msg.out(a)})}}})}}}}; diff --git a/public/js/app-main.min.js b/public/js/app-main.min.js index 8728fc9b..1fcb67aa 100644 --- a/public/js/app-main.min.js +++ b/public/js/app-main.min.js @@ -1,5 +1,5 @@ var $jscomp={scope:{},findInternal:function(b,l,h){b instanceof String&&(b=String(b));for(var m=b.length,n=0;n