* [ADD] User's settings module

* [MOD] Code refactoring
* [MOD] JS code refactoring
This commit is contained in:
nuxsmin
2018-02-27 13:47:12 +01:00
committed by Rubén D
parent 407a3f0694
commit 3d555919b4
21 changed files with 571 additions and 441 deletions

View File

@@ -638,22 +638,16 @@
<route>userProfile/search</route>
</action>
<action multiple="1">
<id>740</id>
<name>PREFERENCE</name>
<text>Gestión Preferencias</text>
<route>userPreference/index</route>
<id>74</id>
<name>USERSETTINGS</name>
<text>Configuración Usuario</text>
<route>userSettingsManager/index</route>
</action>
<action multiple="1">
<id>741</id>
<name>PREFERENCE_GENERAL</name>
<name>USERSETTINGS_GENERAL</name>
<text>Preferencias General</text>
<route>userPreference/general</route>
</action>
<action multiple="1">
<id>742</id>
<name>PREFERENCE_SECURITY</name>
<text>Preferencias Seguridad</text>
<route>userPreference/security</route>
<route>userSettings/general</route>
</action>
<action multiple="1">
<id>76</id>

View File

@@ -139,8 +139,8 @@ class ConfigManagerController extends ControllerBase
$userData = $this->session->getUserData();
$template->assign('langsAvailable', Language::getAvailableLanguages());
$template->assign('themesAvailable', $this->theme->getThemesAvailable());
$template->assign('langs', SelectItemAdapter::factory(Language::getAvailableLanguages())->getItemsFromArraySelected([$this->configData->getSiteLang()]));
$template->assign('themes', SelectItemAdapter::factory($this->theme->getThemesAvailable())->getItemsFromArraySelected([$this->configData->getSiteTheme()]));
$template->assign('isDemoMode', $this->configData->isDemoEnabled() && !$userData->getIsAdminApp());
$template->assign('isDisabled', $this->configData->isDemoEnabled() && !$userData->getIsAdminApp() ? 'disabled' : '');
$template->assign('configData', $this->configData);

View File

@@ -34,6 +34,7 @@ use SP\Http\JsonResponse;
use SP\Http\Request;
use SP\Modules\Web\Controllers\Helpers\LayoutHelper;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Mvc\View\Components\SelectItemAdapter;
use SP\Util\Checks;
/**
@@ -92,8 +93,7 @@ class InstallController extends ControllerBase
}
$this->view->assign('errors', $errors);
$this->view->assign('langsAvailable', Language::getAvailableLanguages());
$this->view->assign('langBrowser', Language::$globalLang);
$this->view->assign('langs', SelectItemAdapter::factory(Language::getAvailableLanguages())->getItemsFromArraySelected([Language::$globalLang]));
$this->view();
}

View File

@@ -0,0 +1,85 @@
<?php
/**
* sysPass
*
* @author nuxsmin
* @link https://syspass.org
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
*
* sysPass is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* sysPass is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
*/
namespace SP\Modules\Web\Controllers;
use SP\Http\JsonResponse;
use SP\Http\Request;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Services\User\UserService;
/**
* Class UserSettingsGeneralController
* @package SP\Modules\Web\Controllers
*/
class UserSettingsGeneralController extends SimpleControllerBase
{
use JsonTrait;
/**
* @var UserService
*/
protected $userService;
/**
* saveAction
*/
public function saveAction()
{
$userData = $this->session->getUserData();
$userPreferencesData = clone $userData->getPreferences();
$userPreferencesData->setUserId($userData->getId());
$userPreferencesData->setLang(Request::analyze('userlang'));
$userPreferencesData->setTheme(Request::analyze('usertheme', 'material-blue'));
$userPreferencesData->setResultsPerPage(Request::analyze('resultsperpage', 12));
$userPreferencesData->setAccountLink(Request::analyze('account_link', false, false, true));
$userPreferencesData->setSortViews(Request::analyze('sort_views', false, false, true));
$userPreferencesData->setTopNavbar(Request::analyze('top_navbar', false, false, true));
$userPreferencesData->setOptionalActions(Request::analyze('optional_actions', false, false, true));
$userPreferencesData->setResultsAsCards(Request::analyze('resultsascards', false, false, true));
try {
$this->userService->updatePreferencesById($userData->getId(), $userPreferencesData);
// Guardar las preferencias en la sesión
$userData->setPreferences($userPreferencesData);
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Preferencias actualizadas'));
} catch (\Exception $e) {
processException($e);
$this->returnJsonResponseException($e);
}
}
/**
* initialize
*/
protected function initialize()
{
$this->userService = $this->dic->get(UserService::class);
}
}

View File

@@ -0,0 +1,92 @@
<?php
/**
* sysPass
*
* @author nuxsmin
* @link https://syspass.org
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
*
* sysPass is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* sysPass is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
*/
namespace SP\Modules\Web\Controllers;
use SP\Core\Acl\Acl;
use SP\Core\Acl\ActionsInterface;
use SP\Core\Events\Event;
use SP\Core\Language;
use SP\Http\Request;
use SP\Modules\Web\Controllers\Helpers\TabsHelper;
use SP\Mvc\View\Components\DataTab;
use SP\Mvc\View\Components\SelectItemAdapter;
/**
* Class UserSettingsManagerController
* @package web\Controllers
*/
class UserSettingsManagerController extends ControllerBase
{
/**
* @var TabsHelper
*/
protected $tabsHelper;
public function indexAction()
{
$this->getTabs();
}
/**
* Returns a tabbed grid with items
*/
protected function getTabs()
{
$this->tabsHelper = $this->dic->get(TabsHelper::class);
$this->tabsHelper->addTab($this->getUserPreferences());
$this->eventDispatcher->notifyEvent('show.userSettings', new Event($this));
$this->tabsHelper->renderTabs(Acl::getActionRoute(ActionsInterface::USERSETTINGS), Request::analyze('tabIndex', 0));
$this->view();
}
/**
* @return DataTab
*/
private function getUserPreferences()
{
$template = clone $this->view;
$template->setBase('usersettings');
$template->addTemplate('general');
$userData = $this->session->getUserData();
$userPreferences = $userData->getPreferences();
$template->assign('langs', SelectItemAdapter::factory(Language::getAvailableLanguages())->getItemsFromArraySelected([$userPreferences->getLang() ?: $this->configData->getSiteLang()]));
$template->assign('themes', SelectItemAdapter::factory($this->theme->getThemesAvailable())->getItemsFromArraySelected([$userPreferences->getTheme() ?: $this->configData->getSiteTheme()]));
$template->assign('chkAccountLink', $userPreferences->isAccountLink() ? 'checked="checked"' : '');
$template->assign('resultsPerPage', $userPreferences->getResultsPerPage() ?: $this->configData->getAccountCount());
$template->assign('chkSortViews', $userPreferences->isSortViews() ? 'checked="checked"' : '');
$template->assign('chkTopNavbar', $userPreferences->isTopNavbar() ? 'checked="checked"' : '');
$template->assign('chkOptionalActions', $userPreferences->isOptionalActions() ? 'checked="checked"' : '');
$template->assign('chkResultsAsCards', $userPreferences->isResultsAsCards() ? 'checked="checked"' : '');
$template->assign('route', 'userSettingsGeneral/save');
return new DataTab(__('Preferencias'), $template);
}
}

File diff suppressed because one or more lines are too long

View File

@@ -55,15 +55,15 @@
<?php if ($showPassIcon): ?>
<li id="btnUserPass" class="btn-action mdl-menu__item"
data-onclick="appMgmt/show"
data-action-id="<?php echo \SP\Core\Acl\ActionsInterface::USER_EDIT_PASS; ?>"
data-item-id="<?php echo $userId; ?>"
data-action-route="user/editPass/<?php echo $userId; ?>"
data-sk="<?php echo $sk; ?>">
<i class="material-icons">security</i>
<?php echo __('Cambiar Clave de Usuario'); ?>
</li>
<?php endif; ?>
<li id="btnPrefs" class="mdl-menu__item"
data-action-id="<?php echo \SP\Core\Acl\ActionsInterface::PREFERENCE; ?>">
<li id="btnPrefs" class="btn-action mdl-menu__item"
data-onclick="user/showSettings"
data-action-route="userSettingsManager/index">
<i class="material-icons">account_circle</i>
<?php echo __('Preferencias de usuario'); ?>
</li>
@@ -83,15 +83,14 @@
<nav class="mdl-navigation">
<?php /** @var \SP\Html\DataGrid\DataGridAction $action */
foreach ($actions as $action): ?>
<a class="btn-menu mdl-navigation__link"
title="<?php echo $action->getTitle(); ?>"
data-action-id="<?php echo $action->getId(); ?>"
<a id="btn-drawer-<?php echo $action->getId(); ?>" class="btn-menu mdl-navigation__link"
<?php foreach ($action->getData() as $dataName => $dataValue): ?>
<?php echo 'data-', $dataName, '="', $dataValue, '"'; ?>
<?php endforeach; ?>>
<i class="material-icons"><?php echo $action->getIcon()->getIcon(); ?></i>
<?php echo $action->getTitle(); ?>
</a>
<span for="btn-drawer-<?php echo $action->getId(); ?>"
class="mdl-tooltip mdl-tooltip--bottom"><?php echo $action->getTitle(); ?></span>
<?php endforeach; ?>
<a id="notifications-drawer" class="btn-menu mdl-navigation__link"
@@ -115,16 +114,17 @@
<a class="btn-action mdl-navigation__link"
title="<?php echo __('Cambiar Clave de Usuario'); ?>"
data-onclick="appMgmt/show"
data-action-id="<?php echo \SP\Core\Acl\ActionsInterface::USER_EDIT_PASS; ?>"
data-item-id="<?php echo $userId; ?>"
data-action-route="user/editPass/<?php echo $userId; ?>"
data-sk="<?php echo $sk; ?>">
<i class="btn-action material-icons">security</i>
<?php echo __('Cambiar Clave de Usuario'); ?>
</a>
<?php endif; ?>
<a class="btn-menu mdl-navigation__link"
title="<?php echo __('Preferencias de usuario'); ?>"
data-action-id="<?php echo \SP\Core\Acl\ActionsInterface::PREFERENCE; ?>">
data-onclick="user/showSettings"
data-action-route="userSettingsManager/index">
<i class="btn-action material-icons">account_circle</i>
<span id="user-name"><?php echo $userName; ?></span>
<span for="user-name"

View File

@@ -24,9 +24,10 @@
<div class="lowres-title"><?php echo __('Idioma'); ?></div>
<select name="sitelang" id="sel-sitelang" size="1" class="select-box sel-chosen-ns">
<?php foreach ($langsAvailable as $langName => $langValue): ?>
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $langs */
foreach ($langs as $lang): ?>
<option
value='<?php echo $langValue; ?>' <?php echo ($configData->getSiteLang() === $langValue) ? 'SELECTED' : ''; ?>><?php echo $langName; ?></option>
value='<?php echo $lang->getId(); ?>' <?php echo $lang->isSelected() ? 'selected' : ''; ?>><?php echo $lang->getName(); ?></option>
<?php endforeach; ?>
</select>
</td>
@@ -46,10 +47,11 @@
<div class="lowres-title"><?php echo __('Tema Visual'); ?></div>
<select name="sitetheme" id="sel-sitetheme" size="1"
class="select-box sel-chosen-ns" >
<?php foreach ($themesAvailable as $themeDir => $themeName): ?>
class="select-box sel-chosen-ns">
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $themes */
foreach ($themes as $theme): ?>
<option
value='<?php echo $themeDir; ?>' <?php echo ($configData->getSiteTheme() === $themeDir) ? "SELECTED" : ""; ?>><?php echo $themeName; ?></option>
value='<?php echo $theme->getId(); ?>' <?php echo $theme->isSelected() ? 'selected' : ""; ?>><?php echo $theme->getName(); ?></option>
<?php endforeach; ?>
</select>
</td>
@@ -117,7 +119,8 @@
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="maintenance">
<input type="checkbox" id="maintenance" class="mdl-switch__input mdl-color-text--indigo-400" name="maintenance"
<input type="checkbox" id="maintenance" class="mdl-switch__input mdl-color-text--indigo-400"
name="maintenance"
<?php echo $configData->isMaintenance() ? 'checked' : ''; ?>/>
<span class="mdl-switch__label"><?php echo __('Modo mantenimiento'); ?></span>
</label>
@@ -174,7 +177,8 @@
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="encryptsession">
<input type="checkbox" id="encryptsession" class="mdl-switch__input mdl-color-text--indigo-400" name="encryptsession"
<input type="checkbox" id="encryptsession" class="mdl-switch__input mdl-color-text--indigo-400"
name="encryptsession"
<?php echo $configData->isEncryptSession() ? 'checked' : ''; ?>/>
<span class="mdl-switch__label"><?php echo __('Encriptar Sesión'); ?></span>
</label>

View File

@@ -135,8 +135,9 @@
<label for="sel-sitelang"><?php echo __('Idioma'); ?></label>
<select name="sitelang" id="sel-sitelang" size="1" class="select-box"
title="<?php echo __('Idioma'); ?>">
<?php foreach ($langsAvailable as $langName => $langValue): ?>
<option value="<?php echo $langValue; ?>" <?php echo ($langBrowser === $langValue) ? 'selected="selected"' : ''; ?>><?php echo $langName; ?></option>
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $langs */
foreach ($langs as $lang): ?>
<option value="<?php echo $lang->getId(); ?>" <?php echo $lang->isSelected() ? 'selected' : ''; ?>><?php echo $lang->getName(); ?></option>
<?php endforeach; ?>
</select>
</div>

View File

@@ -1,186 +0,0 @@
<?php /** @var $icons \Theme\Icons */ ?>
<!-- Start Tab - Preferences -->
<div id="tabs-<?php echo $preferences_tabIndex; ?>" class="mdl-tabs__panel">
<div class="tab-data">
<div id="title" class="midroundup titleNormal">
<?php echo __('Sitio'); ?>
</div>
<form method="post" name="frmPreferences" id="frmPreferences"
class="form-action"
data-onsubmit="user/savePreferences"
data-nextaction-id="<?php echo \SP\Core\Acl\ActionsInterface::PREFERENCE_GENERAL; ?>"
data-activetab="<?php echo $preferences_tabIndex; ?>"
data-hash="">
<table id="tblSite" class="data tblConfig round">
<tr>
<td class="descField"><?php echo __('Idioma'); ?></td>
<td class="valField">
<div class="lowres-title"><?php echo __('Idioma'); ?></div>
<select name="userlang" id="sel-userlang" size="1" class="select-box sel-chosen-ns">
<?php foreach ($langsAvailable as $langName => $langValue): ?>
<option
value='<?php echo $langValue; ?>' <?php echo ($currentLang == $langValue) ? "SELECTED" : ""; ?>><?php echo $langName; ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
<tr>
<td class="descField"><?php echo __('Tema Visual'); ?></td>
<td class="valField">
<div class="lowres-title"><?php echo __('Tema Visual'); ?></div>
<select name="usertheme" id="sel-usertheme" size="1"
class="select-box sel-chosen-ns">
<?php foreach ($themesAvailable as $themeDir => $themeName): ?>
<option
value='<?php echo $themeDir; ?>' <?php echo ($currentTheme == $themeDir) ? "SELECTED" : ""; ?>><?php echo $themeName; ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
<tr>
<td class="descField">
<?php echo __('Resultados por página'); ?>
<div id="help-account_count"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-account_count">
<p>
<?php echo __('Número de resultados por página a mostrar, al realizar una búsqueda.'); ?>
</p>
</div>
</td>
<td class="valField">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input id="resultsperpage" name="resultsperpage" type="number" step="6"
pattern="[0-9]{1,5}" class="mdl-textfield__input mdl-color-text--indigo-400"
maxlength="5"
value="<?php echo $resultsPerPage; ?>" required/>
<label class="mdl-textfield__label"
for="resultsperpage"><?php echo __('Número de resultados por página'); ?></label>
</div>
</td>
</tr>
<tr>
<td class="descField">
<div id="help-account_link"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-account_link">
<p>
<?php echo __('Habilita el nombre de la cuenta de la búsqueda, como enlace a los detalles de la cuenta.'); ?>
</p>
</div>
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="account_link">
<input type="checkbox" id="account_link"
class="mdl-switch__input mdl-color-text--indigo-400"
name="account_link" <?php echo $chkAccountLink; ?>/>
<span class="mdl-switch__label"><?php echo __('Nombre de cuenta como enlace'); ?></span>
</label>
</td>
</tr>
<tr>
<td class="descField">
<div id="help-sort_views"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-sort_views">
<p>
<?php echo __('Ordena los resultados de búsqueda por el número de visitas de las cuentas.'); ?>
</p>
</div>
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="sort_views">
<input type="checkbox" id="sort_views" class="mdl-switch__input mdl-color-text--indigo-400"
name="sort_views" <?php echo ($chkSortViews) ? 'checked' : ''; ?>/>
<span class="mdl-switch__label"><?php echo __('Ordenar resultados por visitas'); ?></span>
</label>
</td>
</tr>
<tr>
<td class="descField">
<div id="help-top_navbar"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-top_navbar">
<p>
<?php echo __('Mostrar una barra de navegación superior en las búsquedas.'); ?>
</p>
</div>
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="top_navbar">
<input type="checkbox" id="top_navbar" class="mdl-switch__input mdl-color-text--indigo-400"
name="top_navbar" <?php echo ($chkTopNavbar) ? 'checked' : ''; ?>/>
<span class="mdl-switch__label"><?php echo __('Barra de navegación superior'); ?></span>
</label>
</td>
</tr>
<tr>
<td class="descField">
<div id="help-optional_actions"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-optional_actions">
<p>
<?php echo __('Mostrar las acciones ocultas para los elementos de la búsqueda de cuentas.'); ?>
</p>
</div>
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="optional_actions">
<input type="checkbox" id="optional_actions"
class="mdl-switch__input mdl-color-text--indigo-400"
name="optional_actions" <?php echo ($chkOptionalActions) ? 'checked' : ''; ?>/>
<span class="mdl-switch__label"><?php echo __('Mostrar Acciones Ocultas'); ?></span>
</label>
</td>
</tr>
<tr>
<td class="descField">
<div id="help-resultsascards" class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-resultsascards">
<p>
<?php echo __('Muestra los resultados de búsqueda de cuentas en formato tarjeta.'); ?>
</p>
</div>
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="resultsascards">
<input type="checkbox" id="resultsascards" class="mdl-switch__input mdl-color-text--indigo-400"
name="resultsascards"
<?php echo $chkResultsAsCards; ?>/>
<span class="mdl-switch__label"><?php echo __('Resultados en Tarjetas'); ?></span>
</label>
</td>
</tr>
</table>
<input type="hidden" name="itemId" value="<?php echo $userId; ?>"/>
<input type="hidden" name="actionId" value="<?php echo $preferences_actionId; ?>"/>
<input type="hidden" name="isAjax" value="1"/>
<input type="hidden" name="sk" value="">
</form>
<div class="tab-actions">
<ul>
<li>
<button id="btnBack" type="button"
class="btn-back mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored <?php echo $icons->getIconBack()->getClassButton(); ?>"
title="<?php echo __('Atrás'); ?>">
<i class="material-icons"><?php echo $icons->getIconBack()->getIcon(); ?></i>
</button>
</li>
<li>
<button form="frmPreferences"
class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored <?php echo $icons->getIconSave()->getClassButton(); ?>"
title="<?php echo $icons->getIconSave()->getTitle(); ?>">
<i class="material-icons"><?php echo $icons->getIconSave()->getIcon(); ?></i>
</button>
</li>
</ul>
</div>
</div>
</div> <!-- End Tab - Preferences -->

View File

@@ -0,0 +1,181 @@
<?php /** @var $icons \Theme\Icons */ ?>
<div id="title" class="midroundup titleNormal">
<?php echo __('Sitio'); ?>
</div>
<form method="post" name="frmPreferences" id="frmPreferences" class="form-action"
data-onsubmit="user/saveSettings"
data-action-route="<?php echo $route; ?>"
data-reload="1"
data-hash="">
<table id="tblSite" class="data tblConfig round">
<tr>
<td class="descField"><?php echo __('Idioma'); ?></td>
<td class="valField">
<div class="lowres-title"><?php echo __('Idioma'); ?></div>
<select name="userlang" id="sel-userlang" size="1" class="select-box sel-chosen-ns">
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $langs */
foreach ($langs as $langName => $lang): ?>
<option
value='<?php echo $lang->getId(); ?>' <?php echo $lang->isSelected() ? 'selected' : ""; ?>><?php echo $lang->getName(); ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
<tr>
<td class="descField"><?php echo __('Tema Visual'); ?></td>
<td class="valField">
<div class="lowres-title"><?php echo __('Tema Visual'); ?></div>
<select name="usertheme" id="sel-usertheme" size="1"
class="select-box sel-chosen-ns">
<?php /** @var \SP\Mvc\View\Components\SelectItem[] $themes */
foreach ($themes as $theme): ?>
<option
value='<?php echo $theme->getId(); ?>' <?php echo $theme->isSelected() ? 'selected' : ""; ?>><?php echo $theme->getName(); ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
<tr>
<td class="descField">
<?php echo __('Resultados por página'); ?>
<div id="help-account_count"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-account_count">
<p>
<?php echo __('Número de resultados por página a mostrar, al realizar una búsqueda.'); ?>
</p>
</div>
</td>
<td class="valField">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input id="resultsperpage" name="resultsperpage" type="number" step="6"
pattern="[0-9]{1,5}" class="mdl-textfield__input mdl-color-text--indigo-400"
maxlength="5"
value="<?php echo $resultsPerPage; ?>" required/>
<label class="mdl-textfield__label"
for="resultsperpage"><?php echo __('Número de resultados por página'); ?></label>
</div>
</td>
</tr>
<tr>
<td class="descField">
<div id="help-account_link"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-account_link">
<p>
<?php echo __('Habilita el nombre de la cuenta de la búsqueda, como enlace a los detalles de la cuenta.'); ?>
</p>
</div>
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="account_link">
<input type="checkbox" id="account_link"
class="mdl-switch__input mdl-color-text--indigo-400"
name="account_link" <?php echo $chkAccountLink; ?>/>
<span class="mdl-switch__label"><?php echo __('Nombre de cuenta como enlace'); ?></span>
</label>
</td>
</tr>
<tr>
<td class="descField">
<div id="help-sort_views"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-sort_views">
<p>
<?php echo __('Ordena los resultados de búsqueda por el número de visitas de las cuentas.'); ?>
</p>
</div>
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="sort_views">
<input type="checkbox" id="sort_views" class="mdl-switch__input mdl-color-text--indigo-400"
name="sort_views" <?php echo ($chkSortViews) ? 'checked' : ''; ?>/>
<span class="mdl-switch__label"><?php echo __('Ordenar resultados por visitas'); ?></span>
</label>
</td>
</tr>
<tr>
<td class="descField">
<div id="help-top_navbar"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-top_navbar">
<p>
<?php echo __('Mostrar una barra de navegación superior en las búsquedas.'); ?>
</p>
</div>
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="top_navbar">
<input type="checkbox" id="top_navbar" class="mdl-switch__input mdl-color-text--indigo-400"
name="top_navbar" <?php echo ($chkTopNavbar) ? 'checked' : ''; ?>/>
<span class="mdl-switch__label"><?php echo __('Barra de navegación superior'); ?></span>
</label>
</td>
</tr>
<tr>
<td class="descField">
<div id="help-optional_actions"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-optional_actions">
<p>
<?php echo __('Mostrar las acciones ocultas para los elementos de la búsqueda de cuentas.'); ?>
</p>
</div>
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="optional_actions">
<input type="checkbox" id="optional_actions"
class="mdl-switch__input mdl-color-text--indigo-400"
name="optional_actions" <?php echo ($chkOptionalActions) ? 'checked' : ''; ?>/>
<span class="mdl-switch__label"><?php echo __('Mostrar Acciones Ocultas'); ?></span>
</label>
</td>
</tr>
<tr>
<td class="descField">
<div id="help-resultsascards"
class="icon material-icons <?php echo $icons->getIconHelp()->getClass(); ?>"><?php echo $icons->getIconHelp()->getIcon(); ?></div>
<div class="mdl-tooltip mdl-tooltip--large" for="help-resultsascards">
<p>
<?php echo __('Muestra los resultados de búsqueda de cuentas en formato tarjeta.'); ?>
</p>
</div>
</td>
<td class="valField">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="resultsascards">
<input type="checkbox" id="resultsascards" class="mdl-switch__input mdl-color-text--indigo-400"
name="resultsascards"
<?php echo $chkResultsAsCards; ?>/>
<span class="mdl-switch__label"><?php echo __('Resultados en Tarjetas'); ?></span>
</label>
</td>
</tr>
</table>
<input type="hidden" name="isAjax" value="1"/>
<input type="hidden" name="sk" value="">
</form>
<div class="tab-actions">
<ul>
<li>
<button id="btnBack" type="button"
class="btn-back mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored <?php echo $icons->getIconBack()->getClassButton(); ?>"
title="<?php echo __('Atrás'); ?>">
<i class="material-icons"><?php echo $icons->getIconBack()->getIcon(); ?></i>
</button>
</li>
<li>
<button form="frmPreferences"
class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored <?php echo $icons->getIconSave()->getClassButton(); ?>"
title="<?php echo $icons->getIconSave()->getTitle(); ?>">
<i class="material-icons"><?php echo $icons->getIconSave()->getIcon(); ?></i>
</button>
</li>
</ul>
</div>

View File

@@ -2,7 +2,7 @@
/**
* sysPass
*
* @author nuxsmin
* @author nuxsmin
* @link https://syspass.org
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
*
@@ -194,6 +194,8 @@ class Bootstrap
$controllerClass = 'SP\\Modules\\' . ucfirst(APP_MODULE) . '\\Controllers\\' . ucfirst($controller) . 'Controller';
if (!method_exists($controllerClass, $method)) {
debugLog($controllerClass . '::' . $method);
throw new RuntimeException($oops);
}
@@ -621,7 +623,7 @@ class Bootstrap
/**
* @param Container $container
* @param string $module
* @param string $module
* @throws InitializationException
* @throws \DI\DependencyException
* @throws \DI\NotFoundException

View File

@@ -139,9 +139,8 @@ interface ActionsInterface
const PROFILE_EDIT = 732;
const PROFILE_DELETE = 733;
const PROFILE_SEARCH = 735;
const PREFERENCE = 740;
const PREFERENCE_GENERAL = 741;
const PREFERENCE_SECURITY = 742;
const USERSETTINGS = 74;
const USERSETTINGS_GENERAL = 741;
const NOTIFICATION = 76;
const NOTIFICATION_VIEW = 760;
const NOTIFICATION_CREATE = 761;

View File

@@ -62,6 +62,21 @@ class Language
* @var bool
*/
protected static $appSet = false;
/**
* @var array Available languages
*/
private static $langs = [
'es_ES' => 'Español',
'ca_ES' => 'Catalá',
'en_US' => 'English',
'de_DE' => 'Deutsch',
'hu_HU' => 'Magyar',
'fr_FR' => 'Français',
'po_PO' => 'Polski',
'ru_RU' => 'русский',
'nl_NL' => 'Nederlands',
'pt_BR' => 'Português'
];
/**
* @var ConfigData
*/
@@ -75,12 +90,14 @@ class Language
* Language constructor.
*
* @param Session $session
* @param Config $config
* @param Config $config
*/
public function __construct(Session $session, Config $config)
{
$this->session = $session;
$this->configData = $config->getConfigData();
sort(self::$langs);
}
/**
@@ -90,22 +107,7 @@ class Language
*/
public static function getAvailableLanguages()
{
$langs = [
'Español' => 'es_ES',
'Catalá' => 'ca_ES',
'English' => 'en_US',
'Deutsch' => 'de_DE',
'Magyar' => 'hu_HU',
'Français' => 'fr_FR',
'Polski' => 'po_PO',
'русский' => 'ru_RU',
'Nederlands' => 'nl_NL',
'Português' => 'pt_BR'
];
ksort($langs);
return $langs;
return self::$langs;
}
/**

View File

@@ -2,7 +2,7 @@
/**
* sysPass
*
* @author nuxsmin
* @author nuxsmin
* @link https://syspass.org
* @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
*
@@ -27,6 +27,7 @@ namespace SP\Repositories\User;
use SP\Core\Exceptions\SPException;
use SP\DataModel\ItemSearchData;
use SP\DataModel\UserData;
use SP\DataModel\UserPreferencesData;
use SP\Repositories\NoSuchItemException;
use SP\Repositories\Repository;
use SP\Repositories\RepositoryItemInterface;
@@ -134,7 +135,7 @@ class UserRepository extends Repository implements RepositoryItemInterface
/**
* Updates an user's pass
*
* @param int $id
* @param int $id
* @param UpdatePassRequest $passRequest
* @return bool
* @throws \SP\Core\Exceptions\ConstraintException
@@ -671,4 +672,24 @@ class UserRepository extends Repository implements RepositoryItemInterface
return DbWrapper::getQuery($queryData, $this->db);
}
/**
* Updates an user's pass
*
* @param int $id
* @param UserPreferencesData $userPreferencesData
* @return bool
* @throws \SP\Core\Exceptions\ConstraintException
* @throws \SP\Core\Exceptions\QueryException
*/
public function updatePreferencesById($id, UserPreferencesData $userPreferencesData)
{
$queryData = new QueryData();
$queryData->setQuery('UPDATE User SET preferences = ? WHERE id = ? LIMIT 1');
$queryData->addParam(serialize($userPreferencesData));
$queryData->addParam($id);
$queryData->setOnErrorMessage(__u('Error al actualizar preferencias\''));
return DbWrapper::getQuery($queryData, $this->db);
}
}

View File

@@ -211,8 +211,8 @@ class UserService extends Service
* Creates an item
*
* @param UserData $itemData
* @param string $userPass
* @param string $masterPass
* @param string $userPass
* @param string $masterPass
* @return int
* @throws SPException
* @throws \Defuse\Crypto\Exception\CryptoException
@@ -257,7 +257,7 @@ class UserService extends Service
/**
* Updates an user's pass
*
* @param int $userId
* @param int $userId
* @param string $pass
* @return bool
* @throws \SP\Core\Exceptions\ConstraintException
@@ -272,6 +272,18 @@ class UserService extends Service
return $this->userRepository->updatePassById($userId, $passRequest);
}
/**
* @param $userId
* @param UserPreferencesData $userPreferencesData
* @return bool
* @throws \SP\Core\Exceptions\ConstraintException
* @throws \SP\Core\Exceptions\QueryException
*/
public function updatePreferencesById($userId, UserPreferencesData $userPreferencesData)
{
return $this->userRepository->updatePreferencesById($userId, $userPreferencesData);
}
/**
* @param UserLoginRequest $userLoginRequest
* @return bool

View File

@@ -34,50 +34,7 @@ sysPass.Actions = function (Common) {
// Objeto con las URLs de las acciones
const ajaxUrl = {
entrypoint: "/index.php",
doAction: "/index.php",
updateItems: "/index.php",
user: {
savePreferences: "/ajax/ajax_userPrefsSave.php",
password: "/ajax/ajax_usrpass.php",
passreset: "/ajax/ajax_passReset.php"
},
main: {
login: "/index.php?r=login/login",
install: "/ajax/ajax_install.php",
upgrade: "/ajax/ajax_upgrade.php",
getUpdates: "/index.php?r=index/checkUpdates",
task: "/ajax/ajax_task.php"
},
checks: "/ajax/ajax_checkConnection.php",
config: {
save: "/ajax/ajax_configSave.php",
export: "/ajax/ajax_configSave.php",
import: "/ajax/ajax_configSave.php"
},
file: "/ajax/ajax_filesMgmt.php",
link: "/index.php",
plugin: "/ajax/ajax_itemSave.php",
account: {
save: "/index.php",
saveFavorite: "/ajax/ajax_itemSave.php",
request: "/ajax/ajax_itemSave.php",
getFiles: "/index.php",
search: "/index.php?r=account/search"
},
appMgmt: {
show: "/index.php",
save: "/index.php",
search: "/index.php"
},
eventlog: "/ajax/ajax_eventlog.php",
wiki: {
show: "/ajax/ajax_wiki.php"
},
notice: {
show: "/ajax/ajax_noticeShow.php",
search: "/ajax/ajax_noticeSearch.php"
}
entrypoint: "/index.php"
};
Object.freeze(ajaxUrl);
@@ -92,7 +49,7 @@ sysPass.Actions = function (Common) {
};
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.doAction;
opts.url = ajaxUrl.entrypoint;
opts.method = "get";
opts.type = "html";
opts.addHistory = true;
@@ -125,7 +82,7 @@ sysPass.Actions = function (Common) {
data.isAjax = 1;
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.doAction;
opts.url = ajaxUrl.entrypoint;
opts.method = "get";
opts.type = "html";
opts.addHistory = true;
@@ -279,7 +236,7 @@ sysPass.Actions = function (Common) {
title: Common.config().LANG[43],
onClick: function (e) {
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.account.save;
opts.url = ajaxUrl.entrypoint;
opts.data = {
r: "account/saveDelete/" + $obj.data("item-id"),
sk: Common.sk.get()
@@ -372,7 +329,7 @@ sysPass.Actions = function (Common) {
};
var opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.account.saveFavorite;
opts.url = ajaxUrl.entrypoint;
opts.data = data;
Common.appRequests().getActionCall(opts, function (json) {
@@ -391,7 +348,7 @@ sysPass.Actions = function (Common) {
log.info("account:request");
var opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.account.request;
opts.url = ajaxUrl.entrypoint;
opts.data = $obj.serialize();
Common.appRequests().getActionCall(opts, function (json) {
@@ -470,7 +427,7 @@ sysPass.Actions = function (Common) {
}
var opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.account.search;
opts.url = ajaxUrl.entrypoint;
opts.method = "get";
opts.data = $frmSearch.serialize();
@@ -488,7 +445,7 @@ sysPass.Actions = function (Common) {
log.info("account:save");
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.account.save + "?r=" + $obj.data("action-route") + "/" + $obj.data("item-id");
opts.url = ajaxUrl.entrypoint + "?r=" + $obj.data("action-route") + "/" + $obj.data("item-id");
opts.data = $obj.serialize();
Common.appRequests().getActionCall(opts, function (json) {
@@ -514,7 +471,7 @@ sysPass.Actions = function (Common) {
$dst.clearOptions();
$dst.load(function (callback) {
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.updateItems;
opts.url = ajaxUrl.entrypoint;
opts.method = "get";
opts.data = {
r: $obj.data("action-route") + "/" + $obj.data("item-id"),
@@ -538,7 +495,7 @@ sysPass.Actions = function (Common) {
$dst.clearOptions();
$dst.load(function (callback) {
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.updateItems;
opts.url = ajaxUrl.entrypoint;
opts.method = "get";
opts.data = {
r: $obj.data("item-route"),
@@ -554,24 +511,17 @@ sysPass.Actions = function (Common) {
/**
* Objeto con las acciones de usuario
*
* @type {{savePreferences: user.savePreferences, saveSecurity: user.saveSecurity, password: user.password, passreset: user.passreset}}
*/
const user = {
savePreferences: function ($obj) {
log.info("user:savePreferences");
showSettings: function ($obj) {
log.info("user:showSettings");
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.user.savePreferences;
opts.data = $obj.serialize();
getContent({r: $obj.data("action-route")}, "userSettings");
},
saveSettings: function ($obj) {
log.info("user:saveSettings");
Common.appRequests().getActionCall(opts, function (json) {
Common.msg.out(json);
setTimeout(function () {
Common.redirect("index.php");
}, 2000);
});
tabs.save($obj);
},
password: function ($obj) {
log.info("user:password");
@@ -579,10 +529,9 @@ sysPass.Actions = function (Common) {
const opts = Common.appRequests().getRequestOpts();
opts.type = "html";
opts.method = "get";
opts.url = ajaxUrl.user.password;
opts.url = ajaxUrl.entrypoint;
opts.data = {
actionId: $obj.data("action-id"),
itemId: $obj.data("item-id"),
r: $obj.data("action-route") + "/" + $obj.data("item-id"),
sk: Common.sk.get(),
isAjax: 1
};
@@ -714,7 +663,7 @@ sysPass.Actions = function (Common) {
if ($useTask.length > 0 && $useTask.val() == 1) {
var optsTask = Common.appRequests().getRequestOpts();
optsTask.url = ajaxUrl.main.task;
optsTask.url = ajaxUrl.entrypoint;
optsTask.data = {
source: $obj.find("input[name='lock']").val(),
taskId: $obj.find("input[name='taskId']").val()
@@ -729,7 +678,7 @@ sysPass.Actions = function (Common) {
}
var opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.main.upgrade;
opts.url = ajaxUrl.entrypoint;
opts.method = "get";
opts.useFullLoading = true;
opts.data = $obj.serialize();
@@ -757,7 +706,7 @@ sysPass.Actions = function (Common) {
log.info("main:getUpdates");
var opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.main.getUpdates;
opts.url = ajaxUrl.entrypoint;
opts.type = "html";
opts.method = "get";
opts.timeout = 10000;
@@ -789,7 +738,7 @@ sysPass.Actions = function (Common) {
$form.find("[name='sk']").val(Common.sk.get());
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.checks;
opts.url = ajaxUrl.entrypoint;
opts.data = $form.serialize();
Common.appRequests().getActionCall(opts, function (json) {
@@ -807,7 +756,7 @@ sysPass.Actions = function (Common) {
$form.find("[name='sk']").val(Common.sk.get());
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.checks;
opts.url = ajaxUrl.entrypoint;
opts.data = $form.serialize();
Common.appRequests().getActionCall(opts, function (json) {
@@ -829,28 +778,7 @@ sysPass.Actions = function (Common) {
save: function ($obj) {
log.info("config:save");
tabs.state.update($obj);
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.entrypoint + "?r=" + $obj.data("action-route");
opts.data = $obj.serialize();
Common.appRequests().getActionCall(opts, function (json) {
Common.msg.out(json);
if (json.status === 0) {
if (tabs.state.tab.refresh === true) {
getContent({
r: tabs.state.tab.route,
tabIndex: tabs.state.tab.index
});
} else if ($obj.data("reload") !== undefined) {
setTimeout(function () {
Common.redirect("index.php");
}, 2000);
}
}
});
tabs.save($obj);
},
masterpass: function ($obj) {
const atext = "<div id=\"alert\"><p id=\"alert-text\">" + Common.config().LANG[59] + "</p></div>";
@@ -877,7 +805,7 @@ sysPass.Actions = function (Common) {
if ($useTask.length > 0 && $useTask.val() == 1) {
const optsTask = Common.appRequests().getRequestOpts();
optsTask.url = ajaxUrl.main.task;
optsTask.url = ajaxUrl.entrypoint;
optsTask.data = {
source: $obj.find("input[name='lock']").val(),
taskId: $obj.find("input[name='taskId']").val()
@@ -892,7 +820,7 @@ sysPass.Actions = function (Common) {
}
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.config.save;
opts.url = ajaxUrl.entrypoint;
opts.useFullLoading = true;
opts.data = $obj.serialize();
@@ -933,22 +861,7 @@ sysPass.Actions = function (Common) {
export: function ($obj) {
log.info("config:export");
tabs.state.update($obj);
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.entrypoint + "?r=" + $obj.data("action-route");
opts.data = $obj.serialize();
Common.appRequests().getActionCall(opts, function (json) {
Common.msg.out(json);
if (json.status === 0) {
getContent({
r: tabs.state.tab.route,
tabIndex: tabs.state.tab.index
});
}
});
tabs.save($obj);
},
import: function ($obj) {
log.info("config:import");
@@ -1155,12 +1068,44 @@ sysPass.Actions = function (Common) {
const $currentTab = $("#content").find("[id^='tabs-'].is-active");
if ($currentTab.length > 0) {
tabs.state.tab.refresh = !$obj.data("item-dst");
tabs.state.tab.refresh = !!$obj.data("item-dst");
tabs.state.tab.index = $currentTab.data("tab-index");
tabs.state.tab.route = $currentTab.data("tab-route");
tabs.state.itemId = $obj.data("item-id");
}
}
},
save: function ($obj, onSuccess) {
log.info("tabs:save");
tabs.state.update($obj);
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.entrypoint + "?r=" + $obj.data("action-route");
opts.data = $obj.serialize();
Common.appRequests().getActionCall(opts, function (json) {
Common.msg.out(json);
if (json.status === 0) {
if (typeof onSuccess === "function") {
onSuccess();
}
if (tabs.state.tab.refresh === true) {
getContent({
r: tabs.state.tab.route,
tabIndex: tabs.state.tab.index
});
} else if ($obj.data("reload") !== undefined) {
log.info('reload');
setTimeout(function () {
Common.redirect("index.php");
}, 2000);
}
}
});
}
};
@@ -1174,7 +1119,7 @@ sysPass.Actions = function (Common) {
tabs.state.update($obj);
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.appMgmt.show;
opts.url = ajaxUrl.entrypoint;
opts.method = "get";
opts.data = {
r: $obj.data("action-route") + "/" + $obj.data("item-id"),
@@ -1234,23 +1179,8 @@ sysPass.Actions = function (Common) {
save: function ($obj) {
log.info("appMgmt:save");
const opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.entrypoint + "?r=" + $obj.data("route");
opts.data = $obj.serialize();
Common.appRequests().getActionCall(opts, function (json) {
Common.msg.out(json);
if (json.status === 0) {
if (tabs.state.tab.refresh === true) {
getContent({
r: tabs.state.tab.route,
tabIndex: tabs.state.tab.index
});
}
$.magnificPopup.close();
}
tabs.save($obj, function () {
closeFloatingBox();
});
},
search: function ($obj) {
@@ -1282,7 +1212,7 @@ sysPass.Actions = function (Common) {
title: Common.config().LANG[43],
onClick: function (e) {
var opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.appMgmt.save;
opts.url = ajaxUrl.entrypoint;
opts.data = {
actionId: $obj.data("action-id"),
sk: Common.sk.get(),
@@ -1365,7 +1295,7 @@ sysPass.Actions = function (Common) {
log.info("wiki:show");
var opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.wiki.show;
opts.url = ajaxUrl.entrypoint;
opts.method = "get";
opts.data = {
pageName: $obj.data("pagename"),
@@ -1399,7 +1329,7 @@ sysPass.Actions = function (Common) {
};
var opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.appMgmt.save;
opts.url = ajaxUrl.entrypoint;
opts.data = data;
Common.appRequests().getActionCall(opts, function (json) {
@@ -1443,7 +1373,7 @@ sysPass.Actions = function (Common) {
};
var opts = Common.appRequests().getRequestOpts();
opts.url = ajaxUrl.appMgmt.save;
opts.url = ajaxUrl.entrypoint;
opts.data = data;
Common.appRequests().getActionCall(opts, function (json) {

View File

@@ -1,48 +1,45 @@
var $jscomp={scope:{},findInternal:function(c,e,l){c instanceof String&&(c=String(c));for(var f=c.length,g=0;g<f;g++){var n=c[g];if(e.call(l,n,g,c))return{i:g,v:n}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(c,e,l){if(l.get||l.set)throw new TypeError("ES3 does not support getters and setters.");c!=Array.prototype&&c!=Object.prototype&&(c[e]=l.value)};
$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(c,e,l,f){if(e){l=$jscomp.global;c=c.split(".");for(f=0;f<c.length-1;f++){var g=c[f];g in l||(l[g]={});l=l[g]}c=c[c.length-1];f=l[c];e=e(f);e!=f&&null!=e&&$jscomp.defineProperty(l,c,{configurable:!0,writable:!0,value:e})}};
$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(c,e,l,f){if(e){l=$jscomp.global;c=c.split(".");for(f=0;f<c.length-1;f++){var g=c[f];g in l||(l[g]={});l=l[g]}c=c[c.length-1];f=l[c];e=e(f);e!=f&&null!=e&&$jscomp.defineProperty(l,c,{configurable:!0,writable:!0,value:e})}};
$jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,l){return $jscomp.findInternal(this,c,l).v}},"es6-impl","es3");
sysPass.Actions=function(c){var e=c.log,l=0,f={entrypoint:"/index.php",doAction:"/index.php",updateItems:"/index.php",user:{savePreferences:"/ajax/ajax_userPrefsSave.php",password:"/ajax/ajax_usrpass.php",passreset:"/ajax/ajax_passReset.php"},main:{login:"/index.php?r=login/login",install:"/ajax/ajax_install.php",upgrade:"/ajax/ajax_upgrade.php",getUpdates:"/index.php?r=index/checkUpdates",task:"/ajax/ajax_task.php"},checks:"/ajax/ajax_checkConnection.php",config:{save:"/ajax/ajax_configSave.php",
"export":"/ajax/ajax_configSave.php","import":"/ajax/ajax_configSave.php"},file:"/ajax/ajax_filesMgmt.php",link:"/index.php",plugin:"/ajax/ajax_itemSave.php",account:{save:"/index.php",saveFavorite:"/ajax/ajax_itemSave.php",request:"/ajax/ajax_itemSave.php",getFiles:"/index.php",search:"/index.php?r=account/search"},appMgmt:{show:"/index.php",save:"/index.php",search:"/index.php"},eventlog:"/ajax/ajax_eventlog.php",wiki:{show:"/ajax/ajax_wiki.php"},notice:{show:"/ajax/ajax_noticeShow.php",search:"/ajax/ajax_noticeSearch.php"}};
Object.freeze(f);var g=function(a,b){e.info("getContent");a.isAjax=1;var d=c.appRequests().getRequestOpts();d.url=f.doAction;d.method="get";d.type="html";d.addHistory=!0;d.data=a;c.appRequests().getActionCall(d,function(a){var d=$("#content");d.empty().html(a);a=c.triggers().views;a.common(d);if(void 0!==b&&"function"===typeof a[b])a[b]();d=$(".mdl-layout__content");0<d.scrollTop()&&d.animate({scrollTop:0},1E3)})},n=function(a,b){$.magnificPopup.open({items:{src:a||"",type:"inline"},callbacks:{open:function(){var a=
$("#box-popup");c.appTriggers().views.common(a);a.find(":input:text:visible:first").focus();void 0!==b&&"function"===typeof b.open&&b.open()},close:function(){void 0!==b&&"function"===typeof b.close&&b.close()}},showCloseBtn:!1})},v=function(a,b){var d=$('<div id="box-popup" class="image">'+b+"</div>"),k=d.find("img");if(0===k.length)return n(b);k.hide();$.magnificPopup.open({items:{src:d,type:"inline"},callbacks:{open:function(){var a=this;k.on("click",function(){a.close()});setTimeout(function(){var a=
c.resizeImage(k);d.css({backgroundColor:"#fff",width:a.width,height:"auto"});k.show("slow")},500)}}})},p={view:function(a){e.info("account:show");g(c.appRequests().getRouteForQuery(a.data("action-route"),a.data("item-id")),"account")},viewHistory:function(a){e.info("account:showHistory");g(c.appRequests().getRouteForQuery(a.data("action-route"),a.val()),"account")},edit:function(a){e.info("account:edit");g(c.appRequests().getRouteForQuery(a.data("action-route"),a.data("item-id")),"account")},"delete":function(a){e.info("account:delete");
var b='<div id="alert"><p id="alert-text">'+c.config().LANG[3]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(d){d=c.appRequests().getRequestOpts();d.url=f.account.save;d.data={r:"account/saveDelete/"+a.data("item-id"),sk:c.sk.get()};c.appRequests().getActionCall(d,function(a){c.msg.out(a);p.search()})}}})},viewPass:function(a){e.info("account:showpass");
var b=a.data("parent-id")||0,b=0===b?a.data("item-id"):b,d=a.data("history")||0,k=c.appRequests().getRequestOpts();k.url=f.entrypoint;k.method="get";k.data={r:a.data("action-route")+"/"+b+"/"+d,sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(k,function(a){0!==a.status?c.msg.out(a):(a=$(a.data.html),n(a),l=setTimeout(function(){$.magnificPopup.close()},3E4),a.on("mouseleave",function(){clearTimeout(l);l=setTimeout(function(){$.magnificPopup.close()},3E4)}).on("mouseenter",function(){0!==l&&clearTimeout(l)}))})},
copyPass:function(a){e.info("account:copypass");var b=a.data("parent-id"),b=0===b?a.data("item-id"):b,d=c.appRequests().getRequestOpts();d.url=f.entrypoint;d.method="get";d.async=!1;d.data={r:a.data("action-route")+"/"+b+"/"+a.data("history"),sk:c.sk.get(),isAjax:1};return c.appRequests().getActionCall(d)},copy:function(a){e.info("account:copy");g(c.appRequests().getRouteForQuery(a.data("action-route"),a.data("item-id")),"account")},saveFavorite:function(a,b){e.info("account:saveFavorite");var d=
"on"===a.data("status"),k={r:(d?a.data("action-id-off"):a.data("action-id-on"))+"/"+a.data("item-id"),sk:c.sk.get(),isAjax:1},q=c.appRequests().getRequestOpts();q.url=f.account.saveFavorite;q.data=k;c.appRequests().getActionCall(q,function(k){c.msg.out(k);0===k.status&&(a.data("status",d?"off":"on"),"function"===typeof b&&b())})},request:function(a){e.info("account:request");var b=c.appRequests().getRequestOpts();b.url=f.account.request;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})},
menu:function(a){a.hide();a.parent().children(".actions-optional").show(250)},sort:function(a){e.info("account:sort");var c=$("#frmSearch");c.find('input[name="skey"]').val(a.data("key"));c.find('input[name="sorder"]').val(a.data("dir"));c.find('input[name="start"]').val(a.data("start"));p.search()},editPass:function(a){e.info("account:editpass");var b=a.data("parent-id"),b=void 0===b?a.data("item-id"):b;g(c.appRequests().getRouteForQuery(a.data("action-route"),b),"account")},saveEditRestore:function(a){e.info("account:restore");
var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route")+"/"+a.data("history-id")+"/"+a.data("item-id");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);void 0!==a.data.itemId&&void 0!==a.data.nextAction&&g(c.appRequests().getRouteForQuery(a.data.nextAction,a.data.itemId),"account")})},listFiles:function(a){e.info("account:getfiles");var b=c.appRequests().getRequestOpts();b.method="get";b.type="html";b.url=f.entrypoint;b.data={r:a.data("action-route")+
"/"+a.data("item-id"),del:a.data("delete"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(c){a.html(c)})},search:function(a){e.info("account:search");var b=$("#frmSearch");b.find("input[name='sk']").val(c.sk.get());b.find("input[name='skey']").val();b.find("input[name='sorder']").val();void 0!==a&&b.find("input[name='start']").val(0);a=c.appRequests().getRequestOpts();a.url=f.account.search;a.method="get";a.data=b.serialize();c.appRequests().getActionCall(a,function(a){10===a.status&&c.msg.out(a);
c.sk.set(a.data.sk);$("#res-content").empty().html(a.data.html)})},save:function(a){e.info("account:save");var b=c.appRequests().getRequestOpts();b.url=f.account.save+"?r="+a.data("action-route")+"/"+a.data("item-id");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);void 0!==a.data.itemId&&void 0!==a.data.nextAction&&g(c.appRequests().getRouteForQuery(a.data.nextAction,a.data.itemId),"account")})}},r={get:function(a){e.info("items:get");var b=a[0].selectize;b.clearOptions();
b.load(function(d){var k=c.appRequests().getRequestOpts();k.url=f.updateItems;k.method="get";k.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:a.data("sk")};c.appRequests().getActionCall(k,function(k){d(k.data);b.setValue(a.data("selected-id"),!0);c.appTriggers().updateFormHash()})})},update:function(a){e.info("items:update");var b=$("#"+a.data("item-dst"))[0].selectize;b.clearOptions();b.load(function(b){var d=c.appRequests().getRequestOpts();d.url=f.updateItems;d.method="get";d.data={r:a.data("item-route"),
sk:c.sk.get()};c.appRequests().getActionCall(d,function(a){b(a)})})}},t={logout:function(){c.redirect("index.php?r=login/logout")},login:function(a){e.info("main:login");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("route");b.method="get";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){var d=$(".extra-hidden");switch(b.status){case 0:c.redirect(b.data.url);break;case 2:c.msg.out(b);a.find("input[type='text'],input[type='password']").val("");a.find("input:first").focus();
0<d.length&&d.hide();$("#mpass").prop("disabled",!1).val("");$("#smpass").show();break;case 5:c.msg.out(b);a.find("input[type='text'],input[type='password']").val("");a.find("input:first").focus();0<d.length&&d.hide();$("#oldpass").prop("disabled",!1).val("");$("#soldpass").show();break;default:c.msg.out(b),a.find("input[type='text'],input[type='password']").val(""),a.find("input:first").focus()}})},install:function(a){e.info("main:install");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+
"?r="+a.data("route");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&setTimeout(function(){c.redirect("index.php?r=login/index")},1E3)})},upgrade:function(a){e.info("main:upgrade");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[59]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b=a.find("input[name='useTask']");
var d=$("#taskStatus");d.empty().html(c.config().LANG[62]);if(0<b.length&&1==b.val()){b=c.appRequests().getRequestOpts();b.url=f.main.task;b.data={source:a.find("input[name='lock']").val(),taskId:a.find("input[name='taskId']").val()};var e=c.appRequests().getActionEvent(b,function(a){a=a.task+" - "+a.message+" - "+a.time+" - "+a.progress+"%";a+="<br>"+c.config().LANG[62];d.empty().html(a)})}b=c.appRequests().getRequestOpts();b.url=f.main.upgrade;b.method="get";b.useFullLoading=!0;b.data=a.serialize();
c.appRequests().getActionCall(b,function(b){c.msg.out(b);0!==b.status?a.find(":input[name=h]").val(""):(void 0!==e&&e.close(),setTimeout(function(){c.redirect("index.php")},5E3))})}}})},getUpdates:function(){e.info("main:getUpdates");var a=c.appRequests().getRequestOpts();a.url=f.main.getUpdates;a.type="html";a.method="get";a.timeout=1E4;a.useLoading=!1;a.data={isAjax:1};c.appRequests().getActionCall(a,function(a){$("#updates").html(a);void 0!==componentHandler&&componentHandler.upgradeDom()},function(){$("#updates").html("!")})}},
h={state:{tab:{index:0,refresh:!0,route:""},itemId:0,update:function(a){var c=$("#content").find("[id^='tabs-'].is-active");0<c.length&&(h.state.tab.refresh=!a.data("item-dst"),h.state.tab.index=c.data("tab-index"),h.state.tab.route=c.data("tab-route"),h.state.itemId=a.data("item-id"))}}},u={show:function(a){e.info("appMgmt:show");h.state.update(a);var b=c.appRequests().getRequestOpts();b.url=f.appMgmt.show;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:c.sk.get(),isAjax:1};
c.appRequests().getActionCall(b,function(b){if(0!==b.status)c.msg.out(b);else{var d=a.data("item-dst");n(b.data.html,{open:function(){d&&(h.state.tab.refresh=!1)},close:function(){d&&r.update(a)}})}})},"delete":function(a){e.info("appMgmt:delete");h.state.update(a);m["delete"](a,function(b){var d=a.data("item-id"),e=c.appRequests().getRequestOpts();e.url=f.entrypoint;e.method="get";e.data={r:a.data("action-route")+(d?"/"+d:""),items:b,sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(e,function(a){c.msg.out(a);
g({r:h.state.tab.route,tabIndex:h.state.tab.index})})})},save:function(a){e.info("appMgmt:save");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("route");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&(!0===h.state.tab.refresh&&g({r:h.state.tab.route,tabIndex:h.state.tab.index}),$.magnificPopup.close())})},search:function(a){e.info("appMgmt:search");m.search(a)},nav:function(a){e.info("appMgmt:nav");m.nav(a)},ldapSync:function(a){e.info("appMgmt:ldapSync");
var b='<div id="alert"><p id="alert-text">'+c.config().LANG[57]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b=c.appRequests().getRequestOpts();b.url=f.appMgmt.save;b.data={actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1,ldap_loginattribute:$("#ldap_loginattribute").val(),ldap_nameattribute:$("#ldap_nameattribute").val(),ldap_ads:$("#ldap_ads").prop("checked")};
c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}}})}},m={search:function(a){e.info("grid:search");var b=$(a.data("target")),d=c.appRequests().getRequestOpts();d.url=f.entrypoint+"?r="+a.data("action-route");d.method="get";d.data=a.serialize();c.appRequests().getActionCall(d,function(a){0===a.status?b.html(a.data.html):b.html(c.msg.html.error(a.description));c.sk.set(a.csrf)})},nav:function(a,b){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(c.sk.get());"function"===typeof b?b(d):m.search(d)},"delete":function(a,b){var d='<div id="alert"><p id="alert-text">'+c.config().LANG[12]+"</p></div>",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:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],
onClick:function(a){a.preventDefault();"function"===typeof b&&b(f)}}})}};return{doAction:function(a,b){var d={r:a.r+(void 0!==a.itemId?"/"+a.itemId:""),isAjax:1},e=c.appRequests().getRequestOpts();e.url=f.doAction;e.method="get";e.type="html";e.addHistory=!0;e.data=d;c.appRequests().getActionCall(e,function(a){var d=$("#content");d.empty().html(a);a=c.triggers().views;a.common(d);if(void 0!==b&&"function"===typeof a[b])a[b]();d=$(".mdl-layout__content");0<d.scrollTop()&&d.animate({scrollTop:0},1E3)})},
appMgmt:u,account:p,file:{view:function(a){e.info("file:view");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(b){if(1===b.status)return c.msg.out(b);v(a,b.data.html)})},download:function(a){e.info("file:download");a={r:a.data("action-route")+"/"+a.data("item-id"),sk:c.sk.get()};$.fileDownload(f.entrypoint,{httpMethod:"GET",data:a})},"delete":function(a){e.info("file:delete");
var b='<div id="alert"><p id="alert-text">'+c.config().LANG[15]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&p.listFiles($("#list-account-files"))})}}})}},
checks:{ldap:function(a){e.info("checks:ldap");a=$(a.data("src"));a.find("[name='sk']").val(c.sk.get());var b=c.appRequests().getRequestOpts();b.url=f.checks;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);var b=$("#ldap-results");b.find(".list-wrap").html(c.appTheme().html.getList(a.data));b.show("slow")})},wiki:function(a){e.info("checks:wiki");a=$(a.data("src"));a.find("[name='sk']").val(c.sk.get());var b=c.appRequests().getRequestOpts();b.url=f.checks;b.data=a.serialize();
c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&$("#dokuWikiResCheck").html(a.data)})}},config:{save:function(a){e.info("config:save");h.state.update(a);var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route");b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&(!0===h.state.tab.refresh?g({r:h.state.tab.route,tabIndex:h.state.tab.index}):void 0!==a.data("reload")&&setTimeout(function(){c.redirect("index.php")},
2E3))})},masterpass:function(a){var b='<div id="alert"><p id="alert-text">'+c.config().LANG[59]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(b){b.preventDefault();c.msg.error(c.config().LANG[44]);a.find(":input[type=password]").val("")}},positive:{title:c.config().LANG[43],onClick:function(b){b=a.find("input[name='useTask']");var d=$("#taskStatus");d.empty().html(c.config().LANG[62]);0<b.length&&1==b.val()&&(b=c.appRequests().getRequestOpts(),b.url=f.main.task,
b.data={source:a.find("input[name='lock']").val(),taskId:a.find("input[name='taskId']").val()},c.appRequests().getActionEvent(b,function(a){a=a.task+" - "+a.message+" - "+a.time+" - "+a.progress+"%";a+="<br>"+c.config().LANG[62];d.empty().html(a)}));b=c.appRequests().getRequestOpts();b.url=f.config.save;b.useFullLoading=!0;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);a.find(":input[type=password]").val("");void 0!==task&&task.close()})}}})},backup:function(a){e.info("config:backup");
h.state.update(a);var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route");b.useFullLoading=!0;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&g({r:h.state.tab.route,tabIndex:h.state.tab.index})})},"export":function(a){e.info("config:export");h.state.update(a);var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===
a.status&&g({r:h.state.tab.route,tabIndex:h.state.tab.index})})},"import":function(a){e.info("config:import");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})},refreshMpass:function(a){e.info("config:import");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route");b.data={sk:a.data("sk"),isAjax:1};c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}},
main:t,user:{savePreferences:function(a){e.info("user:savePreferences");var b=c.appRequests().getRequestOpts();b.url=f.user.savePreferences;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);setTimeout(function(){c.redirect("index.php")},2E3)})},password:function(a){e.info("user:password");var b=c.appRequests().getRequestOpts();b.type="html";b.method="get";b.url=f.user.password;b.data={actionId:a.data("action-id"),itemId:a.data("item-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,
function(a){0===a.length?t.logout():n(a)})},passreset:function(a){e.info("user:passreset");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"/?r="+a.data("action-route");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&setTimeout(function(){c.redirect("index.php")},2E3)})}},link:{save:function(a){e.info("link:save");var b=a.data("item-id"),d=c.appRequests().getRequestOpts();d.url=f.entrypoint;d.data={r:a.data("action-route"),accountId:b,notify:0,
sk:c.sk.get(),isAjax:1};var k='<div id="alert"><p id="alert-text">'+c.config().LANG[48]+"</p></div>";mdlDialog().show({text:k,negative:{title:c.config().LANG[44],onClick:function(e){e.preventDefault();c.appRequests().getActionCall(d,function(d){c.msg.out(d);0===d.status&&g({r:a.data("action-next")+"/"+b})})}},positive:{title:c.config().LANG[43],onClick:function(e){e.preventDefault();d.data.notify=1;c.appRequests().getActionCall(d,function(d){c.msg.out(d);0===d.status&&g({r:a.data("action-next")+"/"+
b})})}}})},refresh:function(a){e.info("link:refresh");h.state.update(a);var b=a.data("item-id"),d=c.appRequests().getRequestOpts();d.url=f.entrypoint;d.data={r:a.data("action-route")+"/"+b,sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(d,function(d){c.msg.out(d);0===d.status&&((d=a.data("action-next"))?g({r:d+"/"+b}):g({r:h.state.tab.route,tabIndex:h.state.tab.index}))})}},eventlog:{search:function(a){e.info("eventlog:search");m.search(a)},nav:function(a){e.info("eventlog:nav");m.nav(a)},clear:function(a){var b=
'<div id="alert"><p id="alert-text">'+c.config().LANG[20]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b.preventDefault();b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route");b.method="get";b.data={sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&g({r:a.data("nextaction")});
c.sk.set(b.csrf)})}}})}},ajaxUrl:f,plugin:{toggle:function(a){e.info("plugin:enable");a={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")};var b=c.appRequests().getRequestOpts();b.url=f.appMgmt.save;b.data=a;c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&setTimeout(function(){c.redirect("index.php")},2E3)})},reset:function(a){e.info("plugin:reset");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[58]+"</p></div>";
mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b.preventDefault();b={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")};var d=c.appRequests().getRequestOpts();d.url=f.appMgmt.save;d.data=b;c.appRequests().getActionCall(d,function(a){c.msg.out(a)})}}})}},notification:{check:function(a){e.info("notification:check");
sysPass.Actions=function(c){var e=c.log,l=0,f={entrypoint:"/index.php"};Object.freeze(f);var g=function(a,b){e.info("getContent");a.isAjax=1;var d=c.appRequests().getRequestOpts();d.url=f.entrypoint;d.method="get";d.type="html";d.addHistory=!0;d.data=a;c.appRequests().getActionCall(d,function(a){var d=$("#content");d.empty().html(a);a=c.triggers().views;a.common(d);if(void 0!==b&&"function"===typeof a[b])a[b]();d=$(".mdl-layout__content");0<d.scrollTop()&&d.animate({scrollTop:0},1E3)})},n=function(a,
b){$.magnificPopup.open({items:{src:a||"",type:"inline"},callbacks:{open:function(){var a=$("#box-popup");c.appTriggers().views.common(a);a.find(":input:text:visible:first").focus();void 0!==b&&"function"===typeof b.open&&b.open()},close:function(){void 0!==b&&"function"===typeof b.close&&b.close()}},showCloseBtn:!1})},v=function(a,b){var d=$('<div id="box-popup" class="image">'+b+"</div>"),h=d.find("img");if(0===h.length)return n(b);h.hide();$.magnificPopup.open({items:{src:d,type:"inline"},callbacks:{open:function(){var a=
this;h.on("click",function(){a.close()});setTimeout(function(){var a=c.resizeImage(h);d.css({backgroundColor:"#fff",width:a.width,height:"auto"});h.show("slow")},500)}}})},p={view:function(a){e.info("account:show");g(c.appRequests().getRouteForQuery(a.data("action-route"),a.data("item-id")),"account")},viewHistory:function(a){e.info("account:showHistory");g(c.appRequests().getRouteForQuery(a.data("action-route"),a.val()),"account")},edit:function(a){e.info("account:edit");g(c.appRequests().getRouteForQuery(a.data("action-route"),
a.data("item-id")),"account")},"delete":function(a){e.info("account:delete");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[3]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(d){d=c.appRequests().getRequestOpts();d.url=f.entrypoint;d.data={r:"account/saveDelete/"+a.data("item-id"),sk:c.sk.get()};c.appRequests().getActionCall(d,function(a){c.msg.out(a);
p.search()})}}})},viewPass:function(a){e.info("account:showpass");var b=a.data("parent-id")||0,b=0===b?a.data("item-id"):b,d=a.data("history")||0,h=c.appRequests().getRequestOpts();h.url=f.entrypoint;h.method="get";h.data={r:a.data("action-route")+"/"+b+"/"+d,sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(h,function(a){0!==a.status?c.msg.out(a):(a=$(a.data.html),n(a),l=setTimeout(function(){$.magnificPopup.close()},3E4),a.on("mouseleave",function(){clearTimeout(l);l=setTimeout(function(){$.magnificPopup.close()},
3E4)}).on("mouseenter",function(){0!==l&&clearTimeout(l)}))})},copyPass:function(a){e.info("account:copypass");var b=a.data("parent-id"),b=0===b?a.data("item-id"):b,d=c.appRequests().getRequestOpts();d.url=f.entrypoint;d.method="get";d.async=!1;d.data={r:a.data("action-route")+"/"+b+"/"+a.data("history"),sk:c.sk.get(),isAjax:1};return c.appRequests().getActionCall(d)},copy:function(a){e.info("account:copy");g(c.appRequests().getRouteForQuery(a.data("action-route"),a.data("item-id")),"account")},saveFavorite:function(a,
b){e.info("account:saveFavorite");var d="on"===a.data("status"),h={r:(d?a.data("action-id-off"):a.data("action-id-on"))+"/"+a.data("item-id"),sk:c.sk.get(),isAjax:1},q=c.appRequests().getRequestOpts();q.url=f.entrypoint;q.data=h;c.appRequests().getActionCall(q,function(h){c.msg.out(h);0===h.status&&(a.data("status",d?"off":"on"),"function"===typeof b&&b())})},request:function(a){e.info("account:request");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.data=a.serialize();c.appRequests().getActionCall(b,
function(a){c.msg.out(a)})},menu:function(a){a.hide();a.parent().children(".actions-optional").show(250)},sort:function(a){e.info("account:sort");var c=$("#frmSearch");c.find('input[name="skey"]').val(a.data("key"));c.find('input[name="sorder"]').val(a.data("dir"));c.find('input[name="start"]').val(a.data("start"));p.search()},editPass:function(a){e.info("account:editpass");var b=a.data("parent-id"),b=void 0===b?a.data("item-id"):b;g(c.appRequests().getRouteForQuery(a.data("action-route"),b),"account")},
saveEditRestore:function(a){e.info("account:restore");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route")+"/"+a.data("history-id")+"/"+a.data("item-id");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);void 0!==a.data.itemId&&void 0!==a.data.nextAction&&g(c.appRequests().getRouteForQuery(a.data.nextAction,a.data.itemId),"account")})},listFiles:function(a){e.info("account:getfiles");var b=c.appRequests().getRequestOpts();b.method="get";
b.type="html";b.url=f.entrypoint;b.data={r:a.data("action-route")+"/"+a.data("item-id"),del:a.data("delete"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(c){a.html(c)})},search:function(a){e.info("account:search");var b=$("#frmSearch");b.find("input[name='sk']").val(c.sk.get());b.find("input[name='skey']").val();b.find("input[name='sorder']").val();void 0!==a&&b.find("input[name='start']").val(0);a=c.appRequests().getRequestOpts();a.url=f.entrypoint;a.method="get";a.data=b.serialize();
c.appRequests().getActionCall(a,function(a){10===a.status&&c.msg.out(a);c.sk.set(a.data.sk);$("#res-content").empty().html(a.data.html)})},save:function(a){e.info("account:save");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route")+"/"+a.data("item-id");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);void 0!==a.data.itemId&&void 0!==a.data.nextAction&&g(c.appRequests().getRouteForQuery(a.data.nextAction,a.data.itemId),"account")})}},
r={get:function(a){e.info("items:get");var b=a[0].selectize;b.clearOptions();b.load(function(d){var h=c.appRequests().getRequestOpts();h.url=f.entrypoint;h.method="get";h.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:a.data("sk")};c.appRequests().getActionCall(h,function(h){d(h.data);b.setValue(a.data("selected-id"),!0);c.appTriggers().updateFormHash()})})},update:function(a){e.info("items:update");var b=$("#"+a.data("item-dst"))[0].selectize;b.clearOptions();b.load(function(d){var b=c.appRequests().getRequestOpts();
b.url=f.entrypoint;b.method="get";b.data={r:a.data("item-route"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(a){d(a)})})}},t={logout:function(){c.redirect("index.php?r=login/logout")},login:function(a){e.info("main:login");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("route");b.method="get";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){var d=$(".extra-hidden");switch(b.status){case 0:c.redirect(b.data.url);break;case 2:c.msg.out(b);a.find("input[type='text'],input[type='password']").val("");
a.find("input:first").focus();0<d.length&&d.hide();$("#mpass").prop("disabled",!1).val("");$("#smpass").show();break;case 5:c.msg.out(b);a.find("input[type='text'],input[type='password']").val("");a.find("input:first").focus();0<d.length&&d.hide();$("#oldpass").prop("disabled",!1).val("");$("#soldpass").show();break;default:c.msg.out(b),a.find("input[type='text'],input[type='password']").val(""),a.find("input:first").focus()}})},install:function(a){e.info("main:install");var b=c.appRequests().getRequestOpts();
b.url=f.entrypoint+"?r="+a.data("route");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&setTimeout(function(){c.redirect("index.php?r=login/index")},1E3)})},upgrade:function(a){e.info("main:upgrade");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[59]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b=
a.find("input[name='useTask']");var d=$("#taskStatus");d.empty().html(c.config().LANG[62]);if(0<b.length&&1==b.val()){b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.data={source:a.find("input[name='lock']").val(),taskId:a.find("input[name='taskId']").val()};var e=c.appRequests().getActionEvent(b,function(a){a=a.task+" - "+a.message+" - "+a.time+" - "+a.progress+"%";a+="<br>"+c.config().LANG[62];d.empty().html(a)})}b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.method="get";b.useFullLoading=
!0;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0!==b.status?a.find(":input[name=h]").val(""):(void 0!==e&&e.close(),setTimeout(function(){c.redirect("index.php")},5E3))})}}})},getUpdates:function(){e.info("main:getUpdates");var a=c.appRequests().getRequestOpts();a.url=f.entrypoint;a.type="html";a.method="get";a.timeout=1E4;a.useLoading=!1;a.data={isAjax:1};c.appRequests().getActionCall(a,function(a){$("#updates").html(a);void 0!==componentHandler&&componentHandler.upgradeDom()},
function(){$("#updates").html("!")})}},k={state:{tab:{index:0,refresh:!0,route:""},itemId:0,update:function(a){var c=$("#content").find("[id^='tabs-'].is-active");0<c.length&&(k.state.tab.refresh=!!a.data("item-dst"),k.state.tab.index=c.data("tab-index"),k.state.tab.route=c.data("tab-route"),k.state.itemId=a.data("item-id"))}},save:function(a,b){e.info("tabs:save");k.state.update(a);var d=c.appRequests().getRequestOpts();d.url=f.entrypoint+"?r="+a.data("action-route");d.data=a.serialize();c.appRequests().getActionCall(d,
function(d){c.msg.out(d);0===d.status&&("function"===typeof b&&b(),!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(){c.redirect("index.php")},2E3)))})}},u={show:function(a){e.info("appMgmt:show");k.state.update(a);var b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(b){if(0!==
b.status)c.msg.out(b);else{var d=a.data("item-dst");n(b.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);m["delete"](a,function(b){var d=a.data("item-id"),e=c.appRequests().getRequestOpts();e.url=f.entrypoint;e.method="get";e.data={r:a.data("action-route")+(d?"/"+d:""),items:b,sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(e,function(a){c.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");m.search(a)},nav:function(a){e.info("appMgmt:nav");m.nav(a)},ldapSync:function(a){e.info("appMgmt:ldapSync");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[57]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b=
c.appRequests().getRequestOpts();b.url=f.entrypoint;b.data={actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1,ldap_loginattribute:$("#ldap_loginattribute").val(),ldap_nameattribute:$("#ldap_nameattribute").val(),ldap_ads:$("#ldap_ads").prop("checked")};c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}}})}},m={search:function(a){e.info("grid:search");var b=$(a.data("target")),d=c.appRequests().getRequestOpts();d.url=f.entrypoint+"?r="+a.data("action-route");d.method="get";d.data=a.serialize();
c.appRequests().getActionCall(d,function(a){0===a.status?b.html(a.data.html):b.html(c.msg.html.error(a.description));c.sk.set(a.csrf)})},nav:function(a,b){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(c.sk.get());"function"===typeof b?b(d):m.search(d)},"delete":function(a,b){var d='<div id="alert"><p id="alert-text">'+c.config().LANG[12]+"</p></div>",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:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(a){a.preventDefault();"function"===typeof b&&b(f)}}})}};return{doAction:function(a,b){var d={r:a.r+(void 0!==a.itemId?"/"+a.itemId:""),isAjax:1},e=c.appRequests().getRequestOpts();e.url=f.entrypoint;e.method=
"get";e.type="html";e.addHistory=!0;e.data=d;c.appRequests().getActionCall(e,function(a){var d=$("#content");d.empty().html(a);a=c.triggers().views;a.common(d);if(void 0!==b&&"function"===typeof a[b])a[b]();d=$(".mdl-layout__content");0<d.scrollTop()&&d.animate({scrollTop:0},1E3)})},appMgmt:u,account:p,file:{view:function(a){e.info("file:view");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:c.sk.get()};c.appRequests().getActionCall(b,
function(b){if(1===b.status)return c.msg.out(b);v(a,b.data.html)})},download:function(a){e.info("file:download");a={r:a.data("action-route")+"/"+a.data("item-id"),sk:c.sk.get()};$.fileDownload(f.entrypoint,{httpMethod:"GET",data:a})},"delete":function(a){e.info("file:delete");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[15]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],
onClick:function(b){b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&p.listFiles($("#list-account-files"))})}}})}},checks:{ldap:function(a){e.info("checks:ldap");a=$(a.data("src"));a.find("[name='sk']").val(c.sk.get());var b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);
var b=$("#ldap-results");b.find(".list-wrap").html(c.appTheme().html.getList(a.data));b.show("slow")})},wiki:function(a){e.info("checks:wiki");a=$(a.data("src"));a.find("[name='sk']").val(c.sk.get());var b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.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 b='<div id="alert"><p id="alert-text">'+
c.config().LANG[59]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(b){b.preventDefault();c.msg.error(c.config().LANG[44]);a.find(":input[type=password]").val("")}},positive:{title:c.config().LANG[43],onClick:function(b){b=a.find("input[name='useTask']");var d=$("#taskStatus");d.empty().html(c.config().LANG[62]);0<b.length&&1==b.val()&&(b=c.appRequests().getRequestOpts(),b.url=f.entrypoint,b.data={source:a.find("input[name='lock']").val(),taskId:a.find("input[name='taskId']").val()},
c.appRequests().getActionEvent(b,function(a){a=a.task+" - "+a.message+" - "+a.time+" - "+a.progress+"%";a+="<br>"+c.config().LANG[62];d.empty().html(a)}));b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.useFullLoading=!0;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);a.find(":input[type=password]").val("");void 0!==task&&task.close()})}}})},backup:function(a){e.info("config:backup");k.state.update(a);var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+
"?r="+a.data("action-route");b.useFullLoading=!0;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&g({r:k.state.tab.route,tabIndex:k.state.tab.index})})},"export":function(a){e.info("config:export");k.save(a)},"import":function(a){e.info("config:import");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})},refreshMpass:function(a){e.info("config:import");
var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route");b.data={sk:a.data("sk"),isAjax:1};c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}},main:t,user:{showSettings:function(a){e.info("user:showSettings");g({r:a.data("action-route")},"userSettings")},saveSettings:function(a){e.info("user:saveSettings");k.save(a)},password:function(a){e.info("user:password");var b=c.appRequests().getRequestOpts();b.type="html";b.method="get";b.url=f.entrypoint;b.data={r:a.data("action-route")+
"/"+a.data("item-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(a){0===a.length?t.logout():n(a)})},passreset:function(a){e.info("user:passreset");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"/?r="+a.data("action-route");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&setTimeout(function(){c.redirect("index.php")},2E3)})}},link:{save:function(a){e.info("link:save");var b=a.data("item-id"),d=c.appRequests().getRequestOpts();
d.url=f.entrypoint;d.data={r:a.data("action-route"),accountId:b,notify:0,sk:c.sk.get(),isAjax:1};var h='<div id="alert"><p id="alert-text">'+c.config().LANG[48]+"</p></div>";mdlDialog().show({text:h,negative:{title:c.config().LANG[44],onClick:function(e){e.preventDefault();c.appRequests().getActionCall(d,function(d){c.msg.out(d);0===d.status&&g({r:a.data("action-next")+"/"+b})})}},positive:{title:c.config().LANG[43],onClick:function(e){e.preventDefault();d.data.notify=1;c.appRequests().getActionCall(d,
function(d){c.msg.out(d);0===d.status&&g({r:a.data("action-next")+"/"+b})})}}})},refresh:function(a){e.info("link:refresh");k.state.update(a);var b=a.data("item-id"),d=c.appRequests().getRequestOpts();d.url=f.entrypoint;d.data={r:a.data("action-route")+"/"+b,sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(d,function(d){c.msg.out(d);0===d.status&&((d=a.data("action-next"))?g({r:d+"/"+b}):g({r:k.state.tab.route,tabIndex:k.state.tab.index}))})}},eventlog:{search:function(a){e.info("eventlog:search");
m.search(a)},nav:function(a){e.info("eventlog:nav");m.nav(a)},clear:function(a){var b='<div id="alert"><p id="alert-text">'+c.config().LANG[20]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b.preventDefault();b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route");b.method="get";b.data={sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,
function(b){c.msg.out(b);0===b.status&&g({r:a.data("nextaction")});c.sk.set(b.csrf)})}}})}},ajaxUrl:f,plugin:{toggle:function(a){e.info("plugin:enable");a={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")};var b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.data=a;c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&setTimeout(function(){c.redirect("index.php")},2E3)})},reset:function(a){e.info("plugin:reset");var b='<div id="alert"><p id="alert-text">'+
c.config().LANG[58]+"</p></div>";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b.preventDefault();b={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")};var d=c.appRequests().getRequestOpts();d.url=f.entrypoint;d.data=b;c.appRequests().getActionCall(d,function(a){c.msg.out(a)})}}})}},notification:{check:function(a){e.info("notification:check");
var b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.method="get";b.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&g({r:a.data("nextaction")});c.sk.set(b.csrf)})},search:function(a){e.info("notification:search");m.search(a)},show:function(a){e.info("notification:show");u.show(a)},save:function(a){e.info("notification:save");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("route");
b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&(g({r:a.data("nextaction")}),$.magnificPopup.close())})},"delete":function(a){e.info("notification:delete");m["delete"](a,function(b){0<b.length?b.join(","):b=a.data("item-id");var d=c.appRequests().getRequestOpts();d.url=f.entrypoint;d.method="get";d.data={r:a.data("action-route")+"/"+b,sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(d,function(b){c.msg.out(b);g({r:a.data("nextaction")})})})},getActive:function(){e.info("notification:getActive");
var a=c.appRequests().getRequestOpts();a.url=f.entrypoint;a.method="get";a.data={r:"items/notifications",sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(a,function(a){return a})},nav:function(a){e.info("eventlog:nav");m.nav(a)}},wiki:{show:function(a){e.info("wiki:show");var b=c.appRequests().getRequestOpts();b.url=f.wiki.show;b.method="get";b.data={pageName:a.data("pagename"),actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(a){0!==a.status?c.msg.out(a):
var a=c.appRequests().getRequestOpts();a.url=f.entrypoint;a.method="get";a.data={r:"items/notifications",sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(a,function(a){return a})},nav:function(a){e.info("eventlog:nav");m.nav(a)}},wiki:{show:function(a){e.info("wiki:show");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.method="get";b.data={pageName:a.data("pagename"),actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(a){0!==a.status?c.msg.out(a):
n(a.data.html)})}},items:r}};

View File

@@ -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<m;n++){var w=b[n];if(l.call(h,w,n,b))return{i:n,v:w}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(b,l,h){if(h.get||h.set)throw new TypeError("ES3 does not support getters and setters.");b!=Array.prototype&&b!=Object.prototype&&(b[l]=h.value)};
$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,l,h,m){if(l){h=$jscomp.global;b=b.split(".");for(m=0;m<b.length-1;m++){var n=b[m];n in h||(h[n]={});h=h[n]}b=b[b.length-1];m=h[b];l=l(m);l!=m&&null!=l&&$jscomp.defineProperty(h,b,{configurable:!0,writable:!0,value:l})}};
$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,l,h,m){if(l){h=$jscomp.global;b=b.split(".");for(m=0;m<b.length-1;m++){var n=b[m];n in h||(h[n]={});h=h[n]}b=b[b.length-1];m=h[b];l=l(m);l!=m&&null!=l&&$jscomp.defineProperty(h,b,{configurable:!0,writable:!0,value:l})}};
$jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(b,h){return $jscomp.findInternal(this,b,h).v}},"es6-impl","es3");$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(b){return $jscomp.SYMBOL_PREFIX+(b||"")+$jscomp.symbolCounter_++};
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.iterator;b||(b=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[b]&&$jscomp.defineProperty(Array.prototype,b,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(b){var l=0;return $jscomp.iteratorPrototype(function(){return l<b.length?{done:!1,value:b[l++]}:{done:!0}})};
$jscomp.iteratorPrototype=function(b){$jscomp.initSymbolIterator();b={next:b};b[$jscomp.global.Symbol.iterator]=function(){return this};return b};$jscomp.array=$jscomp.array||{};$jscomp.iteratorFromArray=function(b,l){$jscomp.initSymbolIterator();b instanceof String&&(b+="");var h=0,m={next:function(){if(h<b.length){var n=h++;return{value:l(n,b[n]),done:!1}}m.next=function(){return{done:!0,value:void 0}};return m.next()}};m[Symbol.iterator]=function(){return m};return m};

View File

@@ -211,10 +211,6 @@ sysPass.Triggers = function (Common) {
Common.appActions().main.logout();
});
$("#btnPrefs").click(function (e) {
Common.appActions().doAction({actionId: $(this).data("route")});
});
// setInterval(function () {
// Common.appActions().notification.getActive();
// }, 60000);

View File

@@ -1,12 +1,12 @@
var $jscomp={scope:{},findInternal:function(b,d,f){b instanceof String&&(b=String(b));for(var a=b.length,c=0;c<a;c++){var e=b[c];if(d.call(f,e,c,b))return{i:c,v:e}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(b,d,f){if(f.get||f.set)throw new TypeError("ES3 does not support getters and setters.");b!=Array.prototype&&b!=Object.prototype&&(b[d]=f.value)};
$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,d,f,a){if(d){f=$jscomp.global;b=b.split(".");for(a=0;a<b.length-1;a++){var c=b[a];c in f||(f[c]={});f=f[c]}b=b[b.length-1];a=f[b];d=d(a);d!=a&&null!=d&&$jscomp.defineProperty(f,b,{configurable:!0,writable:!0,value:d})}};
$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,d,f,a){if(d){f=$jscomp.global;b=b.split(".");for(a=0;a<b.length-1;a++){var c=b[a];c in f||(f[c]={});f=f[c]}b=b[b.length-1];a=f[b];d=d(a);d!=a&&null!=d&&$jscomp.defineProperty(f,b,{configurable:!0,writable:!0,value:d})}};
$jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(b,f){return $jscomp.findInternal(this,b,f).v}},"es6-impl","es3");
sysPass.Triggers=function(b){var d=b.log,f=function(a){var c={valueField:"id",labelField:"name",searchField:["name"]};a.find(".select-box").each(function(a){var d=$(this);c.plugins=d.hasClass("select-box-deselect")?{clear_selection:{title:b.config().LANG[51]}}:{};if(d.data("onchange")){var e=d.data("onchange").split("/");c.onChange=function(a){if(0<a)if(2===e.length)sysPassApp.actions()[e[0]][e[1]](d);else sysPassApp.actions()[e[0]](d)}}d.selectize(c)});a.find("#allowed_exts").selectize({create:function(a){return{value:a.toUpperCase(),
text:a.toUpperCase()}},createFilter:/^[a-z0-9]{1,4}$/i,plugins:["remove_button"]});a.find("#wikifilter").selectize({create:!0,createFilter:/^[a-z0-9:._-]+$/i,plugins:["remove_button"]})};return{views:{main:function(){d.info("views:main");clipboard.isSupported()||b.msg.info(b.config().LANG[65]);$(".btn-menu").click(function(){var a=$(this);"1"===a.attr("data-history-reset")&&b.appRequests().history.reset();b.appActions().doAction({r:a.data("route")},a.data("view"))});$("#btnLogout").click(function(a){b.appActions().main.logout()});
$("#btnPrefs").click(function(a){b.appActions().doAction({actionId:$(this).data("route")})});b.appActions().doAction({r:"account/index"},"search");"function"===typeof b.appTheme().viewsTriggers.main&&b.appTheme().viewsTriggers.main()},search:function(){d.info("views:search");var a=$("#frmSearch");0!==a.length&&(a.find("input[name='search']").on("keyup",function(b){b.preventDefault();13!==b.which&&13!==b.keyCode||a.submit()}),a.find("select, #rpp").on("change",function(){a.submit()}),a.find("button.btn-clear").on("click",
function(b){b.preventDefault();a.find('input[name="searchfav"]').val(0);a[0].reset()}),a.find("input:text:visible:first").focus(),$("#globalSearch").click(function(){var b=1==$(this).prop("checked")?1:0;a.find("input[name='gsearch']").val(b);a.submit()}),"function"===typeof b.appTheme().viewsTriggers.search&&b.appTheme().viewsTriggers.search())},login:function(){d.info("views:login");var a=$("#frmLogin");b.config().AUTHBASIC_AUTOLOGIN&&"0"===a.find("input[name='loggedOut']").val()&&(d.info("views:login:autologin"),
b.msg.info(b.config().LANG[66]),b.appActions().main.login(a))},passreset:function(){d.info("views:passreset");var a=$("#frmPassReset");b.appTheme().passwordDetect(a)},footer:function(){d.info("views:footer")},common:function(a){d.info("views:common");f(a);var c=a.find(":input [name='sk']");0<c.length&&b.sk.set(c.val());"function"===typeof b.appTheme().viewsTriggers.common&&b.appTheme().viewsTriggers.common(a);b.appTriggers().updateFormHash(a)},datatabs:function(){d.info("views:datatabs");$(".datagrid-action-search>form").each(function(){var a=
$(this);a.find("button.btn-clear").on("click",function(b){b.preventDefault();a.trigger("reset")})})},config:function(){d.info("views:config");var a=$("#drop-import-files");if(0<a.length){var c=b.fileUpload(a);c.url=b.appActions().ajaxUrl.entrypoint+"?r="+a.data("action-route");c.allowedExts=b.config().IMPORT_ALLOWED_EXTS;c.beforeSendAction=function(){c.setRequestData({sk:b.sk.get(),csvDelimiter:$("#csvDelimiter").val(),importPwd:$("#importPwd").val(),importMasterPwd:$("#importMasterPwd").val(),import_defaultuser:$("#import_defaultuser").val(),
b.appActions().doAction({r:"account/index"},"search");"function"===typeof b.appTheme().viewsTriggers.main&&b.appTheme().viewsTriggers.main()},search:function(){d.info("views:search");var a=$("#frmSearch");0!==a.length&&(a.find("input[name='search']").on("keyup",function(b){b.preventDefault();13!==b.which&&13!==b.keyCode||a.submit()}),a.find("select, #rpp").on("change",function(){a.submit()}),a.find("button.btn-clear").on("click",function(b){b.preventDefault();a.find('input[name="searchfav"]').val(0);
a[0].reset()}),a.find("input:text:visible:first").focus(),$("#globalSearch").click(function(){var b=1==$(this).prop("checked")?1:0;a.find("input[name='gsearch']").val(b);a.submit()}),"function"===typeof b.appTheme().viewsTriggers.search&&b.appTheme().viewsTriggers.search())},login:function(){d.info("views:login");var a=$("#frmLogin");b.config().AUTHBASIC_AUTOLOGIN&&"0"===a.find("input[name='loggedOut']").val()&&(d.info("views:login:autologin"),b.msg.info(b.config().LANG[66]),b.appActions().main.login(a))},
passreset:function(){d.info("views:passreset");var a=$("#frmPassReset");b.appTheme().passwordDetect(a)},footer:function(){d.info("views:footer")},common:function(a){d.info("views:common");f(a);var c=a.find(":input [name='sk']");0<c.length&&b.sk.set(c.val());"function"===typeof b.appTheme().viewsTriggers.common&&b.appTheme().viewsTriggers.common(a);b.appTriggers().updateFormHash(a)},datatabs:function(){d.info("views:datatabs");$(".datagrid-action-search>form").each(function(){var a=$(this);a.find("button.btn-clear").on("click",
function(b){b.preventDefault();a.trigger("reset")})})},config:function(){d.info("views:config");var a=$("#drop-import-files");if(0<a.length){var c=b.fileUpload(a);c.url=b.appActions().ajaxUrl.entrypoint+"?r="+a.data("action-route");c.allowedExts=b.config().IMPORT_ALLOWED_EXTS;c.beforeSendAction=function(){c.setRequestData({sk:b.sk.get(),csvDelimiter:$("#csvDelimiter").val(),importPwd:$("#importPwd").val(),importMasterPwd:$("#importMasterPwd").val(),import_defaultuser:$("#import_defaultuser").val(),
import_defaultgroup:$("#import_defaultgroup").val()})}}},account:function(){d.info("views:account");var a=$("#list-account-files");0<a.length&&b.appActions().account.listFiles(a);var c=$("#drop-account-files");if(0<c.length){var e=b.fileUpload(c);e.url=b.appActions().ajaxUrl.entrypoint+"?r="+c.data("action-route")+"/"+c.data("item-id");e.allowedExts=b.config().FILES_ALLOWED_EXTS;e.requestDoneAction=function(){b.appActions().account.listFiles(a)}}c=$(".show-extra-info");if(0<c.length)c.on("click",
function(){var a=$(this),b=$(a.data("target"));b.is(":hidden")?(b.slideDown("slow"),a.html(a.data("icon-up"))):(b.slideUp("slow"),a.html(a.data("icon-down")))});c=$("#selParentAccount");0<c.length&&(c.on("change",function(){var a=$(this),b=$("#accountpass,#accountpassR");0<a[0].value?b.each(function(){$(this).prop("disabled","true");$(this).prop("required","false")}):b.each(function(){$(this).prop("disabled","");$(this).prop("required","true")})}),b.appActions().items.get(c));c=$("#selTags");0<c.length&&
c.selectize({persist:!1,maxItems:null,valueField:"id",labelField:"name",searchField:["name"],plugins:["remove_button"]});var f=$("#otherUsers");0<f.length&&f.selectize({persist:!1,valueField:"id",labelField:"name",searchField:["name"],plugins:["remove_button"],onInitialize:function(){var a=f.data("userId");0<a&&this.removeOption(a)}});var g=$("#otherUserGroups");0<g.length&&g.selectize({persist:!1,valueField:"id",labelField:"name",searchField:["name"],plugins:["remove_button"],onInitialize:function(){var a=