From 6caa4a02f49f3913fdd08b2bcb4e8fa01e225b8d Mon Sep 17 00:00:00 2001 From: nuxsmin Date: Thu, 27 Oct 2016 23:27:35 +0200 Subject: [PATCH] * [DEV] Improved installer by using AJAX * [DEV] Bugfixes --- ajax/ajax_appMgmtSave.php | 17 +- ajax/ajax_install.php | 65 +++ inc/SP/Config/Config.class.php | 6 +- inc/SP/Controller/ControllerBase.class.php | 23 +- inc/SP/Controller/MainController.class.php | 38 +- inc/SP/Core/Init.class.php | 12 +- inc/SP/Core/Installer.class.php | 76 ++- inc/SP/Util/Util.class.php | 43 +- .../material-blue/views/accitem/groups.inc | 11 +- .../material-blue/views/accitem/profiles.inc | 52 +- .../material-blue/views/accitem/tokens.inc | 12 +- .../material-blue/views/accitem/users.inc | 31 +- .../material-blue/views/accitem/userspass.inc | 2 +- .../views/appitem/categories.inc | 8 +- .../material-blue/views/appitem/customers.inc | 8 +- .../views/appitem/customfields.inc | 10 +- .../material-blue/views/appitem/tags.inc | 10 +- .../views/grid/datagrid-rows.inc | 4 +- .../material-blue/views/main/body-end.inc | 2 +- .../material-blue/views/main/install.inc | 259 +++++---- index.php | 8 +- js/alertify.js | 532 ++++++++++++++++++ js/alertify.min.js | 16 +- js/app-actions.js | 61 +- js/app-actions.min.js | 44 +- js/app-main.js | 26 +- js/app-main.min.js | 42 +- js/app-triggers.js | 81 ++- js/app-triggers.min.js | 24 +- 29 files changed, 1098 insertions(+), 425 deletions(-) create mode 100644 ajax/ajax_install.php create mode 100644 js/alertify.js diff --git a/ajax/ajax_appMgmtSave.php b/ajax/ajax_appMgmtSave.php index 5b4df00f..96bf0a70 100644 --- a/ajax/ajax_appMgmtSave.php +++ b/ajax/ajax_appMgmtSave.php @@ -104,6 +104,11 @@ if ($actionId === ActionsInterface::ACTION_USR_USERS_NEW $UserData->setUserIsChangePass(Request::analyze('changepass', false, false, true)); $UserData->setUserPass(Request::analyzeEncrypted('pass')); + + $CustomFieldData = new CustomFieldData(); + $CustomFieldData->setId($itemId); + $CustomFieldData->setModule(ActionsInterface::ACTION_USR_USERS); + // Nuevo usuario o editar if ($actionId === ActionsInterface::ACTION_USR_USERS_NEW || $actionId === ActionsInterface::ACTION_USR_USERS_EDIT @@ -122,10 +127,6 @@ if ($actionId === ActionsInterface::ACTION_USR_USERS_NEW Response::printJson(_('Ey, esto es una DEMO!!')); } - $CustomFieldData = new CustomFieldData(); - $CustomFieldData->setId($itemId); - $CustomFieldData->setModule(ActionsInterface::ACTION_USR_USERS); - if ($actionId === ActionsInterface::ACTION_USR_USERS_NEW) { if (!$UserData->getUserPass() || !$userPassR) { Response::printJson(_('La clave no puede estar en blanco'), 2); @@ -203,6 +204,10 @@ if ($actionId === ActionsInterface::ACTION_USR_USERS_NEW $GroupData->setUsergroupDescription(Request::analyze('description')); $GroupData->setUsers(Request::analyze('users', 0)); + $CustomFieldData = new CustomFieldData(); + $CustomFieldData->setId($itemId); + $CustomFieldData->setModule(ActionsInterface::ACTION_USR_GROUPS); + if ($actionId === ActionsInterface::ACTION_USR_GROUPS_NEW || $actionId === ActionsInterface::ACTION_USR_GROUPS_EDIT ) { @@ -210,10 +215,6 @@ if ($actionId === ActionsInterface::ACTION_USR_USERS_NEW Response::printJson(_('Es necesario un nombre de grupo'), 2); } - $CustomFieldData = new CustomFieldData(); - $CustomFieldData->setId($itemId); - $CustomFieldData->setModule(ActionsInterface::ACTION_USR_GROUPS); - if ($actionId === ActionsInterface::ACTION_USR_GROUPS_NEW) { try { Group::getItem($GroupData)->add(); diff --git a/ajax/ajax_install.php b/ajax/ajax_install.php new file mode 100644 index 00000000..f57f4588 --- /dev/null +++ b/ajax/ajax_install.php @@ -0,0 +1,65 @@ +. + */ + +use SP\Core\Exceptions\SPException; +use SP\Core\Installer; +use SP\DataModel\InstallData; +use SP\Http\JsonResponse; +use SP\Http\Request; +use SP\Util\Json; + +define('APP_ROOT', '..'); +define('IS_INSTALLER', 1); + +require_once APP_ROOT . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'Base.php'; + +Request::checkReferer('POST'); + +$Json = new JsonResponse(); + +$InstallData = new InstallData(); +$InstallData->setAdminLogin(Request::analyze('adminlogin', 'admin')); +$InstallData->setAdminPass(Request::analyzeEncrypted('adminpass')); +$InstallData->setMasterPassword(Request::analyzeEncrypted('masterpassword')); +$InstallData->setDbAdminUser(Request::analyze('dbuser', 'root')); +$InstallData->setDbAdminPass(Request::analyzeEncrypted('dbpass')); +$InstallData->setDbName(Request::analyze('dbname', 'syspass')); +$InstallData->setDbHost(Request::analyze('dbhost', 'localhost')); +$InstallData->setHostingMode(Request::analyze('hostingmode', false)); + +error_log($InstallData->getAdminPass()); + +try { + $Installer = new Installer($InstallData); + $Installer->checkData(); + $Installer->install(); + + $Json->setStatus(0); + $Json->setDescription(_('Instalación finalizada')); +} catch (SPException $e) { + $Json->setDescription($e->getMessage()); + $Json->addMessage($e->getHint()); +} + +Json::returnJson($Json); diff --git a/inc/SP/Config/Config.class.php b/inc/SP/Config/Config.class.php index 3d8f87f8..5c7154d4 100644 --- a/inc/SP/Config/Config.class.php +++ b/inc/SP/Config/Config.class.php @@ -73,7 +73,7 @@ class Config { $Config = Session::getConfig(); - return (gettype($Config) === 'object') ? $Config : self::arrayMapper(); + return is_object($Config) ? $Config : self::arrayMapper(); } /** @@ -125,6 +125,10 @@ class Config self::$Config = new ConfigData(); + if (!file_exists(XML_CONFIG_FILE)){ + return self::$Config; + } + try { $items = DiFactory::getConfigStorage()->load('config')->getItems(); $Reflection = new ReflectionObject(self::$Config); diff --git a/inc/SP/Controller/ControllerBase.class.php b/inc/SP/Controller/ControllerBase.class.php index 61bb9176..b9910b4d 100644 --- a/inc/SP/Controller/ControllerBase.class.php +++ b/inc/SP/Controller/ControllerBase.class.php @@ -35,6 +35,7 @@ use SP\Core\Exceptions\SPException; use SP\Core\DiFactory; use SP\Core\Template; use SP\Core\UI\ThemeIconsBase; +use SP\Http\JsonResponse; /** * Clase base para los controladores @@ -74,6 +75,10 @@ abstract class ControllerBase * @var string */ protected $controllerName; + /** + * @var JsonResponse + */ + protected $Json; /** * Constructor @@ -85,7 +90,7 @@ abstract class ControllerBase global $timeStart; $class = get_called_class(); - $this->controllerName = substr($class, strrpos($class, '\\') + 1, -strlen('Controller')); + $this->controllerName = substr($class, strrpos($class, '\\') + 1, -strlen('Controller')); $this->view = null === $template ? $this->getTemplate() : $template; $this->view->setBase(strtolower($this->controllerName)); @@ -159,6 +164,22 @@ abstract class ControllerBase $this->view->assign('memEnd', memory_get_usage() / 1000); } + /** + * @return JsonResponse + */ + public function getJson() + { + return $this->Json; + } + + /** + * @param JsonResponse $Json + */ + public function setJson(JsonResponse $Json) + { + $this->Json = $Json; + } + /** * Establecer la instancia del motor de plantillas a utilizar. * diff --git a/inc/SP/Controller/MainController.class.php b/inc/SP/Controller/MainController.class.php index 8c5c7aeb..fc774b0f 100644 --- a/inc/SP/Controller/MainController.class.php +++ b/inc/SP/Controller/MainController.class.php @@ -266,23 +266,6 @@ class MainController extends ControllerBase implements ActionsInterface */ public function getInstaller() { - $this->view->addTemplate('install'); - $this->view->addTemplate('footer'); - $this->view->addTemplate('body-end'); - - $InstallData = new InstallData(); - $InstallData->setAdminLogin(Request::analyze('adminlogin', 'admin')); - $InstallData->setAdminPass(Request::analyzeEncrypted('adminpass')); - $InstallData->setMasterPassword(Request::analyzeEncrypted('masterpassword')); - $InstallData->setDbAdminUser(Request::analyze('dbuser', 'root')); - $InstallData->setDbAdminPass(Request::analyzeEncrypted('dbpass')); - $InstallData->setDbName(Request::analyze('dbname', 'syspass')); - $InstallData->setDbHost(Request::analyze('dbhost', 'localhost')); - $InstallData->setHostingMode(Request::analyze('hostingmode', false)); - - $this->view->assign('isCompleted', false); - $this->view->assign('InstallData', $InstallData); - $errors = array_merge(Checks::checkPhpVersion(), Checks::checkModules()); if (@file_exists(__FILE__ . "\0Nullbyte")) { @@ -299,24 +282,11 @@ class MainController extends ControllerBase implements ActionsInterface 'hint' => _('Sin esta función un atacante puede utilizar su cuenta al resetear la clave')]; } - if (Request::analyze('install', false)) { - $Installer = new Installer($InstallData); - $resInstall = $Installer->install(); - - if ($resInstall === true) { - $this->view->append('errors', [ - 'type' => SPException::SP_OK, - 'description' => _('Instalación finalizada'), - 'hint' => _('Pulse aquí para acceder') - ]); - $this->view->assign('isCompleted', true); - return true; - } - - array_push($errors, $resInstall); - } - $this->view->assign('errors', $errors); + + $this->view->addTemplate('install'); + $this->view->addTemplate('footer'); + $this->view->addTemplate('body-end'); } /** diff --git a/inc/SP/Core/Init.class.php b/inc/SP/Core/Init.class.php index 1cb1b60d..2e5d2c85 100644 --- a/inc/SP/Core/Init.class.php +++ b/inc/SP/Core/Init.class.php @@ -129,7 +129,9 @@ class Init self::checkHttps(); // Comprobar si es necesario inicialización - if (self::checkInitSourceInclude()) { + if (self::checkInitSourceInclude() || + (defined('IS_INSTALLER') && Request::analyze('isAjax', false, true)) + ) { return; } @@ -424,7 +426,7 @@ class Init */ private static function checkInitSourceInclude() { - $srcScript = pathinfo($_SERVER["SCRIPT_NAME"], PATHINFO_BASENAME); + $srcScript = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_BASENAME); $skipInit = array('js.php', 'css.php', 'api.php', 'ajax_getEnvironment.php'); return (in_array($srcScript, $skipInit)); @@ -445,13 +447,15 @@ class Init /** * Comprueba que la aplicación esté instalada * Esta función comprueba si la aplicación está instalada. Si no lo está, redirige al instalador. + * + * @throws \SP\Core\Exceptions\FileNotFoundException */ private static function checkInstalled() { // Redirigir al instalador si no está instalada if (!Config::getConfig()->isInstalled()) { - if (self::$SUBURI != '/index.php') { - $url = 'http://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER["SERVER_PORT"] . self::$WEBROOT . '/index.php'; + if (self::$SUBURI !== '/index.php') { + $url = 'http://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'] . self::$WEBROOT . '/index.php'; header("Location: $url"); exit(); } else { diff --git a/inc/SP/Core/Installer.class.php b/inc/SP/Core/Installer.class.php index a24b4cbf..9b98d687 100644 --- a/inc/SP/Core/Installer.class.php +++ b/inc/SP/Core/Installer.class.php @@ -44,8 +44,6 @@ use SP\Util\Util; defined('APP_ROOT') || die(_('No es posible acceder directamente a este archivo')); -define('IS_INSTALLER', 1); - /** * Esta clase es la encargada de instalar sysPass. */ @@ -73,59 +71,53 @@ class Installer /** * Iniciar instalación. * - * @return array resultado del proceso + * @return bool + * @throws SPException */ public function install() { - try { - $this->checkData(); + $this->checkData(); - $Config = Config::getConfig(); + $Config = Config::getConfig(); - // Generate a random salt that is used to salt the local user passwords - $Config->setPasswordSalt(Util::generateRandomBytes(30)); - $Config->setConfigVersion(implode(Util::getVersion(true))); + // Generate a random salt that is used to salt the local user passwords + $Config->setPasswordSalt(Util::generateRandomBytes(30)); + $Config->setConfigVersion(implode(Util::getVersion(true))); - if (preg_match('/(.*):(\d{1,5})/', $this->InstallData->getDbHost(), $match)) { - $this->InstallData->setDbHost($match[1]); - $this->InstallData->setDbPort($match[2]); - } else { - $this->InstallData->setDbPort(3306); - } - - if (!preg_match('/(localhost|127.0.0.1)/', $this->InstallData->getDbHost())) { - $this->InstallData->setDbAuthHost($_SERVER['SERVER_ADDR']); - } else { - $this->InstallData->setDbAuthHost('localhost'); - } - - // Save DB connection info - $Config->setDbHost($this->InstallData->getDbHost()); - $Config->setDbName($this->InstallData->getDbName()); - - - $this->connectDatabase(); - $this->setupMySQLDatabase(); - $this->createAdminAccount(); - - ConfigDB::setValue('version', implode(Util::getVersion(true))); - - $Config->setInstalled(true); - Config::saveConfig($Config); - } catch (SPException $e) { - return [ - 'type' => $e->getType(), - 'description' => $e->getMessage(), - 'hint' => $e->getHint()]; + if (preg_match('/(.*):(\d{1,5})/', $this->InstallData->getDbHost(), $match)) { + $this->InstallData->setDbHost($match[1]); + $this->InstallData->setDbPort($match[2]); + } else { + $this->InstallData->setDbPort(3306); } + if (!preg_match('/(localhost|127.0.0.1)/', $this->InstallData->getDbHost())) { + $this->InstallData->setDbAuthHost($_SERVER['SERVER_ADDR']); + } else { + $this->InstallData->setDbAuthHost('localhost'); + } + + // Save DB connection info + $Config->setDbHost($this->InstallData->getDbHost()); + $Config->setDbName($this->InstallData->getDbName()); + + + $this->connectDatabase(); + $this->setupMySQLDatabase(); + $this->createAdminAccount(); + + ConfigDB::setValue('version', implode(Util::getVersion(true))); + + $Config->setInstalled(true); + Config::saveConfig($Config); + return true; } /** * @throws InvalidArgumentException */ - private function checkData() + public function checkData() { if (!$this->InstallData->getAdminLogin()) { throw new InvalidArgumentException( @@ -337,7 +329,7 @@ class Installer */ private function createDBStructure() { - $fileName = SQL_PATH . DIRECTORY_SEPARATOR . 'dbstructure.sql'; + $fileName = SQL_PATH . DIRECTORY_SEPARATOR . 'dbstructure.sql'; if (!file_exists($fileName)) { throw new SPException(SPException::SP_CRITICAL, diff --git a/inc/SP/Util/Util.class.php b/inc/SP/Util/Util.class.php index b67af879..93c1dfb5 100644 --- a/inc/SP/Util/Util.class.php +++ b/inc/SP/Util/Util.class.php @@ -42,16 +42,16 @@ class Util /** * Generar una clave aleatoria * - * @param int $length Longitud de la clave + * @param int $length Longitud de la clave * @param bool $useNumbers Usar números * @param bool $useSpecial Usar carácteres especiales * @return string */ public static function randomPassword($length = 16, $useNumbers = true, $useSpecial = true) { - $special = "@#$%&/()=?¿!_-:.;,{}[]*^"; - $numbers = "0123456789"; - $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ"; + $special = '@#$%&/()=?¿!_-:.;,{}[]*^'; + $numbers = '0123456789'; + $alphabet = 'abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ'; if ($useSpecial === true) { $alphabet .= $special; @@ -65,7 +65,7 @@ class Util $alphaLength = strlen($alphabet) - 1; //put the length -1 in cache for ($i = 0; $i < $length; $i++) { - $n = rand(0, $alphaLength); + $n = mt_rand(0, $alphaLength); $pass[] = $alphabet[$n]; } @@ -82,17 +82,14 @@ class Util { // Try to use openssl_random_pseudo_bytes if (function_exists('openssl_random_pseudo_bytes')) { - $pseudo_byte = bin2hex(openssl_random_pseudo_bytes($length, $strong)); - if ($strong == true) { - return substr($pseudo_byte, 0, $length); // Truncate it to match the length - } + $pseudo_byte = bin2hex(openssl_random_pseudo_bytes($length)); + return substr($pseudo_byte, 0, $length); // Truncate it to match the length } // Try to use /dev/urandom $fp = @file_get_contents('/dev/urandom', false, null, 0, $length); if ($fp !== false) { - $string = substr(bin2hex($fp), 0, $length); - return $string; + return substr(bin2hex($fp), 0, $length); } // Fallback to mt_rand() @@ -201,7 +198,7 @@ class Util * Obtener datos desde una URL usando CURL * * @param $url string La URL - * @param array $data + * @param array $data * @param bool|null $useCookie * @return bool|string * @throws SPException @@ -359,7 +356,7 @@ class Util */ public static function logout() { - exit(''); + exit(''); } /** @@ -367,12 +364,12 @@ class Util */ public static function getMaxUpload() { - $max_upload = (int)(ini_get('upload_max_filesize')); - $max_post = (int)(ini_get('post_max_size')); - $memory_limit = (int)(ini_get('memory_limit')); + $max_upload = (int)ini_get('upload_max_filesize'); + $max_post = (int)ini_get('post_max_size'); + $memory_limit = (int)ini_get('memory_limit'); $upload_mb = min($max_upload, $max_post, $memory_limit); - Log::writeNewLog(__FUNCTION__, "Max. PHP upload: " . $upload_mb . "MB"); + Log::writeNewLog(__FUNCTION__, 'Max. PHP upload: ' . $upload_mb . 'MB'); } /** @@ -381,8 +378,8 @@ class Util * such as 'false','N','yes','on','off', etc. * * @author Samuel Levy - * @param mixed $in The variable to check - * @param bool $strict If set to false, consider everything that is not false to + * @param mixed $in The variable to check + * @param bool $strict If set to false, consider everything that is not false to * be true. * @return bool The boolean equivalent or null (if strict, and no exact equivalent) */ @@ -422,7 +419,7 @@ class Util { if (Session::getReload() === true) { Session::setReload(false); - exit(""); + exit(''); } } @@ -447,7 +444,7 @@ class Util */ public static function getServerUrl() { - $urlScheme = (Checks::httpsEnabled()) ? 'https://' : 'http://'; + $urlScheme = Checks::httpsEnabled() ? 'https://' : 'http://'; $urlPort = ($_SERVER['SERVER_PORT'] != 443) ? ':' . $_SERVER['SERVER_PORT'] : ''; return $urlScheme . $_SERVER['SERVER_NAME'] . $urlPort; @@ -490,9 +487,9 @@ class Util /** * Comprobar si un valor existe en un array de objetos * - * @param array $objectArray + * @param array $objectArray * @param string $method - * @param mixed $value + * @param mixed $value * @return bool */ public static function checkInObjectArray(array $objectArray, $method, $value) diff --git a/inc/themes/material-blue/views/accitem/groups.inc b/inc/themes/material-blue/views/accitem/groups.inc index 2ad708fe..280619e9 100644 --- a/inc/themes/material-blue/views/accitem/groups.inc +++ b/inc/themes/material-blue/views/accitem/groups.inc @@ -7,7 +7,10 @@

-
+ @@ -43,7 +46,7 @@ title=""> $name): ?> - + @@ -58,11 +61,9 @@
- - - +
diff --git a/inc/themes/material-blue/views/accitem/profiles.inc b/inc/themes/material-blue/views/accitem/profiles.inc index c92ad140..bfa3f2e7 100644 --- a/inc/themes/material-blue/views/accitem/profiles.inc +++ b/inc/themes/material-blue/views/accitem/profiles.inc @@ -6,7 +6,10 @@

-
+ @@ -26,47 +29,47 @@
@@ -78,22 +81,22 @@
@@ -105,42 +108,42 @@
@@ -152,7 +155,7 @@
@@ -176,10 +179,9 @@
- - +
diff --git a/inc/themes/material-blue/views/accitem/tokens.inc b/inc/themes/material-blue/views/accitem/tokens.inc index e5977c5b..264b58a3 100644 --- a/inc/themes/material-blue/views/accitem/tokens.inc +++ b/inc/themes/material-blue/views/accitem/tokens.inc @@ -1,7 +1,10 @@

-
+ @@ -45,16 +48,15 @@ - +
authtoken_token : ''; ?>authtoken_token : ''; ?>
- - + - +
diff --git a/inc/themes/material-blue/views/accitem/users.inc b/inc/themes/material-blue/views/accitem/users.inc index d038e5a6..05568ebf 100644 --- a/inc/themes/material-blue/views/accitem/users.inc +++ b/inc/themes/material-blue/views/accitem/users.inc @@ -6,7 +6,10 @@

-
+ @@ -14,7 +17,8 @@ @@ -77,7 +84,8 @@ @@ -196,7 +204,6 @@
- @@ -30,8 +34,10 @@
- isUserIsLdap()) ? 'readonly' : ''; ?>> + isUserIsLdap() ? 'readonly' : ''; ?>>
@@ -39,7 +45,8 @@ getUserLogin(); ?> isUserIsLdap()): ?> - getIconLdapUser()->getIcon(); ?> + getIconLdapUser()->getIcon(); ?>
- @@ -96,7 +104,7 @@
+ maxlength="50">
@@ -140,14 +148,14 @@ @@ -155,14 +163,14 @@
- diff --git a/inc/themes/material-blue/views/accitem/userspass.inc b/inc/themes/material-blue/views/accitem/userspass.inc index ce513068..5b5bd1d6 100644 --- a/inc/themes/material-blue/views/accitem/userspass.inc +++ b/inc/themes/material-blue/views/accitem/userspass.inc @@ -1,7 +1,7 @@

- + diff --git a/inc/themes/material-blue/views/appitem/categories.inc b/inc/themes/material-blue/views/appitem/categories.inc index de54ba1c..69adfcc0 100644 --- a/inc/themes/material-blue/views/appitem/categories.inc +++ b/inc/themes/material-blue/views/appitem/categories.inc @@ -1,11 +1,14 @@

- +
@@ -38,7 +41,6 @@
- diff --git a/inc/themes/material-blue/views/appitem/customers.inc b/inc/themes/material-blue/views/appitem/customers.inc index 9b6ec667..ba6acda8 100644 --- a/inc/themes/material-blue/views/appitem/customers.inc +++ b/inc/themes/material-blue/views/appitem/customers.inc @@ -8,7 +8,10 @@

- + @@ -43,10 +46,9 @@
- - +
diff --git a/inc/themes/material-blue/views/appitem/customfields.inc b/inc/themes/material-blue/views/appitem/customfields.inc index 3c36b744..08955e42 100644 --- a/inc/themes/material-blue/views/appitem/customfields.inc +++ b/inc/themes/material-blue/views/appitem/customfields.inc @@ -8,7 +8,10 @@

-
+ @@ -62,7 +65,7 @@ @@ -70,10 +73,9 @@
- - +
diff --git a/inc/themes/material-blue/views/appitem/tags.inc b/inc/themes/material-blue/views/appitem/tags.inc index dac97dde..a9d4123a 100644 --- a/inc/themes/material-blue/views/appitem/tags.inc +++ b/inc/themes/material-blue/views/appitem/tags.inc @@ -1,11 +1,14 @@

-
+ @@ -23,10 +26,9 @@
- - +
diff --git a/inc/themes/material-blue/views/grid/datagrid-rows.inc b/inc/themes/material-blue/views/grid/datagrid-rows.inc index 64c8accc..d5e338dc 100644 --- a/inc/themes/material-blue/views/grid/datagrid-rows.inc +++ b/inc/themes/material-blue/views/grid/datagrid-rows.inc @@ -14,14 +14,14 @@
    getData()->getDataRowSources() as $rowSrc): ?>
  • - $rowSrc)) ? $dataItem->$rowSrc : ' '; // Fix height ?> + {$rowSrc}) ? $dataItem->{$rowSrc} : ' '; // Fix height ?>
  • getData()->getDataRowSourcesWithIcon()) > 0): ?>
  • getData()->getDataRowSourcesWithIcon() as $rowSrcIcon): ?> - $rowSrcIcon[0] == 1): ?> + {$rowSrcIcon[0]} == 1): ?> getIcon(); ?> diff --git a/inc/themes/material-blue/views/main/body-end.inc b/inc/themes/material-blue/views/main/body-end.inc index aa336a0d..14b0bc57 100644 --- a/inc/themes/material-blue/views/main/body-end.inc +++ b/inc/themes/material-blue/views/main/body-end.inc @@ -9,7 +9,7 @@ console.info("DOMContentLoaded"); sysPassApp.triggers().views.main(); - + sysPassApp.triggers().views.install(); }); diff --git a/inc/themes/material-blue/views/main/install.inc b/inc/themes/material-blue/views/main/install.inc index cd01aeb2..219f1895 100644 --- a/inc/themes/material-blue/views/main/install.inc +++ b/inc/themes/material-blue/views/main/install.inc @@ -6,7 +6,7 @@
    @@ -23,125 +23,146 @@
- -
- + + + -
- +
+ -
- - -
- -
getIconHelp()->getIcon(); ?>
-
- -
- -
- - -
-
- -
- -
- - -
- -
- - -
-
- -
- - - - - -
- - -
- -
getIconHelp()->getIcon(); ?>
-
- -
- -
- - -
- -
- - -
- -
getIconHelp()->getIcon(); ?>
-
- -
- -
- - -
- -
getIconHelp()->getIcon(); ?>
-
- -
- - - -
- -
- -
- -
- +
+ +
- - + +
+ getIconHelp()->getIcon(); ?> +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+ +
+ + +
+
+ +
+ + + + + +
+ + +
+ +
+ getIconHelp()->getIcon(); ?> +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ getIconHelp()->getIcon(); ?> +
+
+ +
+ +
+ + +
+ +
+ getIconHelp()->getIcon(); ?> +
+
+ +
+ + + +
+ +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/index.php b/index.php index 101264db..a7599ffe 100644 --- a/index.php +++ b/index.php @@ -23,12 +23,14 @@ * */ +use SP\Controller\MainController; + define('APP_ROOT', '.'); require APP_ROOT . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'Base.php'; if (!\SP\Core\Init::checkPostLoginActions()) { - $controller = new \SP\Controller\MainController(null, 'main'); - $controller->getMain(); - $controller->view(); + $Controller = new MainController(null, 'main'); + $Controller->getMain(); + $Controller->view(); } \ No newline at end of file diff --git a/js/alertify.js b/js/alertify.js new file mode 100644 index 00000000..073e8706 --- /dev/null +++ b/js/alertify.js @@ -0,0 +1,532 @@ +(function() { + + "use strict"; + + var TRANSITION_FALLBACK_DURATION = 500; + var hideElement = function(el) { + + if (! el) { + return; + } + + var removeThis = function() { + if (el && el.parentNode) { + el.parentNode.removeChild(el); + } + }; + + el.classList.remove("show"); + el.classList.add("hide"); + el.addEventListener("transitionend", removeThis); + + // Fallback for no transitions. + setTimeout(removeThis, TRANSITION_FALLBACK_DURATION); + + }; + + function Alertify() { + + /** + * Alertify private object + * @type {Object} + */ + var _alertify = { + + parent: document.body, + version: "1.0.11", + defaultOkLabel: "Ok", + okLabel: "Ok", + defaultCancelLabel: "Cancel", + cancelLabel: "Cancel", + defaultMaxLogItems: 2, + maxLogItems: 2, + promptValue: "", + promptPlaceholder: "", + closeLogOnClick: false, + closeLogOnClickDefault: false, + delay: 5000, + defaultDelay: 5000, + logContainerClass: "alertify-logs", + logContainerDefaultClass: "alertify-logs", + dialogs: { + buttons: { + holder: "", + ok: "", + cancel: "" + }, + input: "", + message: "

{{message}}

", + log: "
{{message}}
" + }, + + defaultDialogs: { + buttons: { + holder: "", + ok: "", + cancel: "" + }, + input: "", + message: "

{{message}}

", + log: "
{{message}}
" + }, + + /** + * Build the proper message box + * + * @param {Object} item Current object in the queue + * + * @return {String} An HTML string of the message box + */ + build: function(item) { + + var btnTxt = this.dialogs.buttons.ok; + var html = "
" + "
" + this.dialogs.message.replace("{{message}}", item.message); + + if(item.type === "confirm" || item.type === "prompt") { + btnTxt = this.dialogs.buttons.cancel + this.dialogs.buttons.ok; + } + + if (item.type === "prompt") { + html += this.dialogs.input; + } + + html = (html + this.dialogs.buttons.holder + "
" + "
") + .replace("{{buttons}}", btnTxt) + .replace("{{ok}}", this.okLabel) + .replace("{{cancel}}", this.cancelLabel); + + return html; + + }, + + setCloseLogOnClick: function(bool) { + this.closeLogOnClick = !! bool; + }, + + /** + * Close the log messages + * + * @param {Object} elem HTML Element of log message to close + * @param {Number} wait [optional] Time (in ms) to wait before automatically hiding the message, if 0 never hide + * + * @return {undefined} + */ + close: function(elem, wait) { + + if (this.closeLogOnClick) { + elem.addEventListener("click", function() { + hideElement(elem); + }); + } + + wait = wait && !isNaN(+wait) ? +wait : this.delay; + + if (wait < 0) { + hideElement(elem); + } else if(wait > 0) { + setTimeout(function() { + hideElement(elem); + }, wait); + } + + }, + + /** + * Create a dialog box + * + * @param {String} message The message passed from the callee + * @param {String} type Type of dialog to create + * @param {Function} onOkay [Optional] Callback function when clicked okay. + * @param {Function} onCancel [Optional] Callback function when cancelled. + * + * @return {Object} + */ + dialog: function(message, type, onOkay, onCancel) { + return this.setup({ + type: type, + message: message, + onOkay: onOkay, + onCancel: onCancel + }); + }, + + /** + * Show a new log message box + * + * @param {String} message The message passed from the callee + * @param {String} type [Optional] Optional type of log message + * @param {Number} wait [Optional] Time (in ms) to wait before auto-hiding the log + * + * @return {Object} + */ + log: function(message, type, click) { + + var existing = document.querySelectorAll(".alertify-logs > div"); + if (existing) { + var diff = existing.length - this.maxLogItems; + if (diff >= 0) { + for (var i = 0, _i = diff + 1; i < _i; i++) { + this.close(existing[i], -1); + } + } + } + + this.notify(message, type, click); + }, + + setLogPosition: function(str) { + this.logContainerClass = "alertify-logs " + str; + }, + + setupLogContainer: function() { + + var elLog = document.querySelector(".alertify-logs"); + var className = this.logContainerClass; + if (! elLog) { + elLog = document.createElement("div"); + elLog.className = className; + this.parent.appendChild(elLog); + } + + // Make sure it's positioned properly. + if (elLog.className !== className) { + elLog.className = className; + } + + return elLog; + + }, + + /** + * Add new log message + * If a type is passed, a class name "{type}" will get added. + * This allows for custom look and feel for various types of notifications. + * + * @param {String} message The message passed from the callee + * @param {String} type [Optional] Type of log message + * @param {Number} wait [Optional] Time (in ms) to wait before auto-hiding + * + * @return {undefined} + */ + notify: function(message, type, click) { + + var elLog = this.setupLogContainer(); + var log = document.createElement("div"); + + log.className = (type || "default"); + if (_alertify.logTemplateMethod) { + log.innerHTML = _alertify.logTemplateMethod(message); + } else { + log.innerHTML = message; + } + + // Add the click handler, if specified. + if ("function" === typeof click) { + log.addEventListener("click", click); + } + + elLog.appendChild(log); + setTimeout(function() { + log.className += " show"; + }, 10); + + this.close(log, this.delay); + + }, + + /** + * Initiate all the required pieces for the dialog box + * + * @return {undefined} + */ + setup: function(item) { + + var el = document.createElement("div"); + el.className = "alertify hide"; + el.innerHTML = this.build(item); + + var btnOK = el.querySelector(".ok"); + var btnCancel = el.querySelector(".cancel"); + var input = el.querySelector("input"); + var label = el.querySelector("label"); + + // Set default value/placeholder of input + if (input) { + if (typeof this.promptPlaceholder === "string") { + // Set the label, if available, for MDL, etc. + if (label) { + label.textContent = this.promptPlaceholder; + } else { + input.placeholder = this.promptPlaceholder; + } + } + if (typeof this.promptValue === "string") { + input.value = this.promptValue; + } + } + + function setupHandlers(resolve) { + if ("function" !== typeof resolve) { + // promises are not available so resolve is a no-op + resolve = function () {}; + } + + if (btnOK) { + btnOK.addEventListener("click", function(ev) { + if (item.onOkay && "function" === typeof item.onOkay) { + if (input) { + item.onOkay(input.value, ev); + } else { + item.onOkay(ev); + } + } + + if (input) { + resolve({ + buttonClicked: "ok", + inputValue: input.value, + event: ev + }); + } else { + resolve({ + buttonClicked: "ok", + event: ev + }); + } + + hideElement(el); + }); + } + + if (btnCancel) { + btnCancel.addEventListener("click", function(ev) { + if (item.onCancel && "function" === typeof item.onCancel) { + item.onCancel(ev); + } + + resolve({ + buttonClicked: "cancel", + event: ev + }); + + hideElement(el); + }); + } + + if (input) { + input.addEventListener("keyup", function(ev) { + if (ev.which === 13) { + btnOK.click(); + } + }); + } + } + + var promise; + + if (typeof Promise === "function") { + promise = new Promise(setupHandlers); + } else { + setupHandlers(); + } + + this.parent.appendChild(el); + setTimeout(function() { + el.classList.remove("hide"); + if(input && item.type && item.type === "prompt") { + input.select(); + input.focus(); + } else { + if (btnOK) { + btnOK.focus(); + } + } + }, 100); + + return promise; + }, + + okBtn: function(label) { + this.okLabel = label; + return this; + }, + + setDelay: function(time) { + time = time || 0; + this.delay = isNaN(time) ? this.defaultDelay : parseInt(time, 10); + return this; + }, + + cancelBtn: function(str) { + this.cancelLabel = str; + return this; + }, + + setMaxLogItems: function(num) { + this.maxLogItems = parseInt(num || this.defaultMaxLogItems); + }, + + theme: function(themeStr) { + switch(themeStr.toLowerCase()) { + case "bootstrap": + this.dialogs.buttons.ok = ""; + this.dialogs.buttons.cancel = ""; + this.dialogs.input = ""; + break; + case "purecss": + this.dialogs.buttons.ok = ""; + this.dialogs.buttons.cancel = ""; + break; + case "mdl": + case "material-design-light": + this.dialogs.buttons.ok = ""; + this.dialogs.buttons.cancel = ""; + this.dialogs.input = "
"; + break; + case "angular-material": + this.dialogs.buttons.ok = ""; + this.dialogs.buttons.cancel = ""; + this.dialogs.input = "
"; + break; + case "default": + default: + this.dialogs.buttons.ok = this.defaultDialogs.buttons.ok; + this.dialogs.buttons.cancel = this.defaultDialogs.buttons.cancel; + this.dialogs.input = this.defaultDialogs.input; + break; + } + }, + + reset: function() { + this.parent = document.body; + this.theme("default"); + this.okBtn(this.defaultOkLabel); + this.cancelBtn(this.defaultCancelLabel); + this.setMaxLogItems(); + this.promptValue = ""; + this.promptPlaceholder = ""; + this.delay = this.defaultDelay; + this.setCloseLogOnClick(this.closeLogOnClickDefault); + this.setLogPosition("bottom left"); + this.logTemplateMethod = null; + }, + + injectCSS: function() { + if (!document.querySelector("#alertifyCSS")) { + var head = document.getElementsByTagName("head")[0]; + var css = document.createElement("style"); + css.type = "text/css"; + css.id = "alertifyCSS"; + css.innerHTML = "/* style.css */"; + head.insertBefore(css, head.firstChild); + } + }, + + removeCSS: function() { + var css = document.querySelector("#alertifyCSS"); + if (css && css.parentNode) { + css.parentNode.removeChild(css); + } + } + + }; + + _alertify.injectCSS(); + + return { + _$$alertify: _alertify, + parent: function(elem) { + _alertify.parent = elem; + }, + reset: function() { + _alertify.reset(); + return this; + }, + alert: function(message, onOkay, onCancel) { + return _alertify.dialog(message, "alert", onOkay, onCancel) || this; + }, + confirm: function(message, onOkay, onCancel) { + return _alertify.dialog(message, "confirm", onOkay, onCancel) || this; + }, + prompt: function(message, onOkay, onCancel) { + return _alertify.dialog(message, "prompt", onOkay, onCancel) || this; + }, + log: function(message, click) { + _alertify.log(message, "default", click); + return this; + }, + theme: function(themeStr) { + _alertify.theme(themeStr); + return this; + }, + success: function(message, click) { + _alertify.log(message, "success", click); + return this; + }, + error: function(message, click) { + _alertify.log(message, "error", click); + return this; + }, + cancelBtn: function(label) { + _alertify.cancelBtn(label); + return this; + }, + okBtn: function(label) { + _alertify.okBtn(label); + return this; + }, + delay: function(time) { + _alertify.setDelay(time); + return this; + }, + placeholder: function(str) { + _alertify.promptPlaceholder = str; + return this; + }, + defaultValue: function(str) { + _alertify.promptValue = str; + return this; + }, + maxLogItems: function(num) { + _alertify.setMaxLogItems(num); + return this; + }, + closeLogOnClick: function(bool) { + _alertify.setCloseLogOnClick(!! bool); + return this; + }, + logPosition: function(str) { + _alertify.setLogPosition(str || ""); + return this; + }, + setLogTemplate: function(templateMethod) { + _alertify.logTemplateMethod = templateMethod; + return this; + }, + clearLogs: function() { + _alertify.setupLogContainer().innerHTML = ""; + return this; + }, + version: _alertify.version + }; + } + + // AMD, window, and NPM support + if ("undefined" !== typeof module && !! module && !! module.exports) { + // Preserve backwards compatibility + module.exports = function() { + return new Alertify(); + }; + var obj = new Alertify(); + for (var key in obj) { + module.exports[key] = obj[key]; + } + } else if (typeof define === "function" && define.amd) { + define(function() { + return new Alertify(); + }); + } else { + window.alertify = new Alertify(); + } + +}()); diff --git a/js/alertify.min.js b/js/alertify.min.js index aed2a29e..842e8479 100644 --- a/js/alertify.min.js +++ b/js/alertify.min.js @@ -1 +1,15 @@ -(function(){var a=500;var c=function(e){if(!e){return}var d=function(){if(e&&e.parentNode){e.parentNode.removeChild(e)}};e.classList.remove("show");e.classList.add("hide");e.addEventListener("transitionend",d);setTimeout(d,a)};function b(){var d={defaultOkLabel:"Ok",okLabel:"Ok",defaultCancelLabel:"Cancel",cancelLabel:"Cancel",defaultMaxLogItems:2,maxLogItems:2,promptValue:"",promptPlaceholder:"",closeLogOnClick:false,closeLogOnClickDefault:false,delay:5000,defaultDelay:5000,logContainerClass:"alertify-logs bottom right",logContainerDefaultClass:"alertify-logs",dialogs:{buttons:{holder:"",ok:"",cancel:""},input:"",message:"

{{message}}

",log:"
{{message}}
"},defaultDialogs:{buttons:{holder:"",ok:"",cancel:""},input:"",message:"

{{message}}

",log:"
{{message}}
"},build:function(g){var e=this.dialogs.buttons.ok;var f="
"+this.dialogs.message.replace("{{message}}",g.message);if(g.type==="confirm"||g.type==="prompt"){e=this.dialogs.buttons.cancel+this.dialogs.buttons.ok}if(g.type==="prompt"){f+=this.dialogs.input}f=(f+this.dialogs.buttons.holder+"
").replace("{{buttons}}",e).replace("{{ok}}",this.okLabel).replace("{{cancel}}",this.cancelLabel);return f},setCloseLogOnClick:function(e){this.closeLogOnClick=!!e},close:function(e,f){if(this.closeLogOnClick){e.addEventListener("click",function(h){console.log("click");var g=(h.srcElement?h.srcElement:h.target);c(g)})}f=f&&!isNaN(+f)?+f:this.delay;if(f<0){c(e)}else{if(f>0){setTimeout(function(){c(e)},f)}}},dialog:function(g,f,e,h){return this.setup({type:f,message:g,onOkay:e,onCancel:h})},log:function(j,f,h){var g=document.querySelectorAll(".alertify-logs > div");if(g){var l=g.length-this.maxLogItems;if(l>=0){for(var e=0,k=l+1;e{{ok}}";this.dialogs.buttons.cancel="";this.dialogs.input="";break;case"purecss":this.dialogs.buttons.ok="";this.dialogs.buttons.cancel="";break;case"mdl":case"material-design-light":this.dialogs.buttons.ok="";this.dialogs.buttons.cancel="";this.dialogs.input="
";break;case"angular-material":this.dialogs.buttons.ok="";this.dialogs.buttons.cancel="";this.dialogs.input="
";break;case"default":default:this.dialogs.buttons.ok=this.defaultDialogs.buttons.ok;this.dialogs.buttons.cancel=this.defaultDialogs.buttons.cancel;this.dialogs.input=this.defaultDialogs.input;break}},reset:function(){this.theme("default");this.okBtn(this.defaultOkLabel);this.cancelBtn(this.defaultCancelLabel);this.setMaxLogItems();this.promptValue="";this.promptPlaceholder="";this.delay=this.defaultDelay;this.setCloseLogOnClick(this.closeLogOnClickDefault);this.setLogPosition("bottom left")},injectCSS:function(){if(!document.querySelector("#alertifyCSS")){var f=document.getElementsByTagName("head")[0];var e=document.createElement("style");e.type="text/css";e.id="alertifyCSS";e.innerHTML="/* style.css */";f.insertBefore(e,f.firstChild)}},removeCSS:function(){var e=document.querySelector("#alertifyCSS");if(e&&e.parentNode){e.parentNode.removeChild(e)}}};d.injectCSS();return{_$$alertify:d,reset:function(){d.reset();return this},alert:function(f,e,g){return d.dialog(f,"alert",e,g)||this},confirm:function(f,e,g){return d.dialog(f,"confirm",e,g)||this},prompt:function(f,e,g){return d.dialog(f,"prompt",e,g)||this},log:function(f,e){d.log(f,"default",e);return this},theme:function(e){d.theme(e);return this},success:function(f,e){d.log(f,"success",e);return this},error:function(f,e){d.log(f,"error",e);return this},cancelBtn:function(e){d.cancelBtn(e);return this},okBtn:function(e){d.okBtn(e);return this},delay:function(e){d.setDelay(e);return this},placeholder:function(e){d.promptPlaceholder=e;return this},defaultValue:function(e){d.promptValue=e;return this},maxLogItems:function(e){d.setMaxLogItems(e);return this},closeLogOnClick:function(e){d.setCloseLogOnClick(!!e);return this},logPosition:function(e){d.setLogPosition(e||"");return this}}}if("undefined"!==typeof module&&!!module&&!!module.exports){module.exports=b}else{if(typeof define==="function"&&define.amd){define(function(){return new b()})}else{window.alertify=new b()}}}()); \ No newline at end of file +(function(){function h(){var b={parent:document.body,version:"1.0.11",defaultOkLabel:"Ok",okLabel:"Ok",defaultCancelLabel:"Cancel",cancelLabel:"Cancel",defaultMaxLogItems:2,maxLogItems:2,promptValue:"",promptPlaceholder:"",closeLogOnClick:!1,closeLogOnClickDefault:!1,delay:5E3,defaultDelay:5E3,logContainerClass:"alertify-logs",logContainerDefaultClass:"alertify-logs",dialogs:{buttons:{holder:"",ok:"",cancel:""}, +input:"",message:"

{{message}}

",log:"
{{message}}
"},defaultDialogs:{buttons:{holder:"",ok:"",cancel:""},input:"",message:"

{{message}}

",log:"
{{message}}
"},build:function(a){var c=this.dialogs.buttons.ok,b="
"+this.dialogs.message.replace("{{message}}", +a.message);if("confirm"===a.type||"prompt"===a.type)c=this.dialogs.buttons.cancel+this.dialogs.buttons.ok;"prompt"===a.type&&(b+=this.dialogs.input);return b=(b+this.dialogs.buttons.holder+"
").replace("{{buttons}}",c).replace("{{ok}}",this.okLabel).replace("{{cancel}}",this.cancelLabel)},setCloseLogOnClick:function(a){this.closeLogOnClick=!!a},close:function(a,c){this.closeLogOnClick&&a.addEventListener("click",function(){l(a)});c=c&&!isNaN(+c)?+c:this.delay;0>c?l(a):0 div");if(d){var f=d.length-this.maxLogItems;if(0<=f)for(var e=0,f=f+1;e 0) { - window.location.replace("index.php" + search + "&logout=1"); + url = "index.php" + search + "&logout=1"; } else { - window.location.replace("index.php?logout=1"); + url = "index.php?logout=1"; } + + Common.redirect(url); }, login: function ($obj) { log.info("main:login"); @@ -149,7 +154,7 @@ sysPass.Actions = function (Common) { Common.appRequests().getActionCall(opts, function (json) { switch (json.status) { case 0: - window.location.replace(json.data.url); + Common.redirect(json.data.url); break; case 2: Common.resMsg("error", json.description); @@ -167,6 +172,23 @@ sysPass.Actions = function (Common) { $obj.find("input:first").focus(); } }); + }, + install: function ($obj) { + log.info("main:install"); + + var opts = Common.appRequests().getRequestOpts(); + opts.url = "/ajax/ajax_install.php"; + opts.data = $obj.serialize(); + + Common.appRequests().getActionCall(opts, function (json) { + Common.jsonResponseMessage(json); + + if (json.status == 0) { + setTimeout(function () { + Common.redirect("index.php"); + }, 2000); + } + }); } }; @@ -679,6 +701,7 @@ sysPass.Actions = function (Common) { opts.data = { itemId: $obj.data("item-id"), actionId: $obj.data("action-id"), + activeTab: $obj.data("activetab"), sk: Common.sk.get(), isAjax: 1 }; @@ -687,7 +710,7 @@ sysPass.Actions = function (Common) { $.fancybox(response, { padding: [0, 10, 10, 10], afterClose: function () { - if ($obj.data("action-dst")) { + if ($obj.data("item-dst")) { updateItems($obj); } }, @@ -738,8 +761,12 @@ sysPass.Actions = function (Common) { Common.appRequests().getActionCall(opts, function (json) { Common.jsonResponseMessage(json); - if ($obj.data("nextaction-id")) { - doAction({actionId: $obj.data("nextaction-id"), itemId: $obj.data("activetab")}); + if (json.status === 0) { + if ($obj.data("nextaction-id") && $obj.data("activetab")) { + doAction({actionId: $obj.data("nextaction-id"), itemId: $obj.data("activetab")}); + } + + $.fancybox.close(); } }); }, @@ -785,28 +812,6 @@ sysPass.Actions = function (Common) { }); return false; - }, - userpass: function ($obj) { - log.info("appMgmt:userpass"); - - var opts = Common.appRequests().getRequestOpts(); - opts.type = "html"; - opts.method = "get"; - opts.url = "/ajax/ajax_usrpass.php"; - opts.data = { - actionId: $obj.data("action-id"), - userId: $obj.data("item-id"), - sk: $obj.data("sk"), - isAjax: 1 - }; - - Common.appRequests().getActionCall(opts, function (response) { - if (response.length === 0) { - main.logout(); - } else { - $.fancybox(response, {padding: 0}); - } - }); } }; diff --git a/js/app-actions.min.js b/js/app-actions.min.js index ac219321..138a53bf 100644 --- a/js/app-actions.min.js +++ b/js/app-actions.min.js @@ -1,29 +1,29 @@ var $jscomp={scope:{},findInternal:function(c,d,f){c instanceof String&&(c=String(c));for(var e=c.length,h=0;h
";alertify.okBtn(c.config().LANG[43]).cancelBtn(c.config().LANG[44]).confirm(b,function(b){b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_accountSave.php";b.data={accountid:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get()};c.appRequests().getActionCall(b, -function(a){c.jsonResponseMessage(a)})},function(a){a.preventDefault();alertify.error(c.config().LANG[44])})},showpass:function(a){d.info("account:showpass");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_accViewPass.php";b.data={accountid:a.data("item-id"),isHistory:a.data("history"),isAjax:1};c.appRequests().getActionCall(b,function(a){if(10===a.status)doLogout();else{var b;$("
").dialog({modal:!0,title:c.config().LANG[47],width:"auto",open:function(){b=$(this);var g,d="";g= -'";var e='
";alertify.okBtn(c.config().LANG[43]).cancelBtn(c.config().LANG[44]).confirm(b, +function(b){b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_accountSave.php";b.data={accountid:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a)})},function(a){a.preventDefault();alertify.error(c.config().LANG[44])})},showpass:function(a){d.info("account:showpass");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_accViewPass.php";b.data={accountid:a.data("item-id"),isHistory:a.data("history"),isAjax:1};c.appRequests().getActionCall(b, +function(a){if(10===a.status)doLogout();else{var b;$("
").dialog({modal:!0,title:c.config().LANG[47],width:"auto",open:function(){b=$(this);var g,d="";g='";var e='",d=a.useimage,m='

'+a.acclogin+"

";0===a.status?(0===d?d='

'+a.accpass+"

":(d='',e=""),g=m+d+'
'+g+e+"
"):(g=''+a.description+"",b.dialog("option","buttons",[{text:"Ok",icons:{primary:"ui-icon-close"},click:function(){b.dialog("close")}}]));b.html(g);b.dialog("option", "position","center");b.parent().on("mouseleave",function(){clearTimeout(f);f=setTimeout(function(){b.dialog("close")},3E4)})},close:function(){clearTimeout(f);b.dialog("destroy")}})}})},copypass:function(a){d.info("account:copypass");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_accViewPass.php";b.async=!1;b.data={accountid:a.data("item-id"),isHistory:a.data("history"),isAjax:1};return c.appRequests().getActionCall(b)},copy:function(a){d.info("account:copy");e({actionId:a.data("action-id"), itemId:a.data("item-id")})},savefavorite:function(a,b){d.info("account:saveFavorite");var g="on"===a.data("status"),e={actionId:g?a.data("action-id-off"):a.data("action-id-on"),accountId:a.data("item-id"),sk:c.sk.get(),isAjax:1},f=c.appRequests().getRequestOpts();f.url="/ajax/ajax_accFavorites.php";f.data=e;c.appRequests().getActionCall(f,function(d){0===d.status?(a.data("status",g?"off":"on"),"function"===typeof b&&b(),c.resMsg("ok",d.description)):1===d.status&&c.resMsg("error",d.description)})}, -request:function(a){d.info("account:request");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_sendRequest.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a)})},menu:function(a){a.hide();a.parent().children(".actions-optional").show(250)},sort:function(a){d.info("account:sort");var b=$("#frmSearch");b.find('input[name="skey"]').val(a.data("key"));b.find('input[name="sorder"]').val(a.data("dir"));b.find('input[name="start"]').val(a.data("start")); -l.search()},editpass:function(a){d.info("account:editpass");e({actionId:a.data("action-id"),itemId:a.data("item-id")})},restore:function(a){d.info("account:restore");e({actionId:a.data("action-id"),itemId:a.data("item-id")})},getfiles:function(a){d.info("account:getfiles");var b=c.appRequests().getRequestOpts();b.method="get";b.type="html";b.url="/ajax/ajax_accGetFiles.php";b.data={id:a.data("item-id"),del:a.data("delete"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(b){a.html(b)})},search:function(a){d.info("account:search"); +request:function(a){d.info("account:request");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_sendRequest.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a)})},menu:function(a){a.hide();a.parent().children(".actions-optional").show(250)},sort:function(a){d.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")); +l.search()},editpass:function(a){d.info("account:editpass");e({actionId:a.data("action-id"),itemId:a.data("item-id")})},restore:function(a){d.info("account:restore");e({actionId:a.data("action-id"),itemId:a.data("item-id")})},getfiles:function(a){d.info("account:getfiles");var b=c.appRequests().getRequestOpts();b.method="get";b.type="html";b.url="/ajax/ajax_accGetFiles.php";b.data={id:a.data("item-id"),del:a.data("delete"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(c){a.html(c)})},search:function(a){d.info("account:search"); var b=$("#frmSearch");!0===a&&(b.find("select").each(function(){$(this)[0].selectize.clear()}),b.find('input[name="search"]').val(""),b.find('input[name="start"], input[name="skey"], input[name="sorder"]').val(0),b.find('input[name="searchfav"]').val(0).change());a=c.appRequests().getRequestOpts();a.url="/ajax/ajax_accSearch.php";a.data=b.serialize();c.appRequests().getActionCall(a,function(a){"undefined"!==typeof a.sk&&(c.sk.set(a.sk),b.find('input[name="sk"]').val(a.sk));$("#res-content").html(a.html)})}, -save:function(a){d.info("account:save");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_accSave.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a)})}};return{doAction:e,appMgmt:{show:function(a){d.info("appMgmt:show");var b=c.appRequests().getRequestOpts();b.type="html";b.url="/ajax/ajax_appMgmtData.php";b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(b){$.fancybox(b, -{padding:[0,10,10,10],afterClose:function(){a.data("action-dst")&&h(a)},beforeShow:function(){c.appTriggers().views.common("#fancyContainer")}})})},"delete":function(a){d.info("appMgmt:delete");var b='

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

";alertify.okBtn(c.config().LANG[43]).cancelBtn(c.config().LANG[44]).confirm(b,function(b){b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_appMgmtSave.php";b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(), -isAjax:1};c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);a.data("nextaction-id")&&e({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},function(a){a.preventDefault();alertify.error(c.config().LANG[44])})},save:function(a){d.info("appMgmt:save");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_appMgmtSave.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);a.data("nextaction-id")&&e({actionId:a.data("nextaction-id"), -itemId:a.data("activetab")})})},search:function(a){d.info("appMgmt:search");var b=$(a),g=b.find("[name=target]").val();a=c.appRequests().getRequestOpts();a.url="/ajax/ajax_appMgmtSearch.php";a.data=b.serialize();c.appRequests().getActionCall(a,function(a){0===a.status?($("#"+g).html(a.html),b.find("[name='sk']").val(a.sk)):$("#"+g).html(c.resMsg("nofancyerror",a.description))});return!1},nav:function(a){d.info("appMgmt:nav");var b=$("#"+a.data("action-form")),g=c.appRequests().getRequestOpts();g.url= -"/ajax/ajax_appMgmtSearch.php";g.data=b.serialize()+"&start="+a.data("start")+"&count="+a.data("count");c.getActionCall(g,function(a){var g=$("#"+b.find("[name=target]").val());0===a.status?(g.html(a.html),b.find("[name='sk']").val(a.sk)):g.html(c.resMsg("nofancyerror",a.description))});return!1},userpass:function(a){d.info("appMgmt:userpass");var b=c.appRequests().getRequestOpts();b.type="html";b.method="get";b.url="/ajax/ajax_usrpass.php";b.data={actionId:a.data("action-id"),userId:a.data("item-id"), -sk:a.data("sk"),isAjax:1};c.appRequests().getActionCall(b,function(a){0===a.length?k.logout():$.fancybox(a,{padding:0})})}},account:l,file:{view:function(a){d.info("file:view");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_files.php";b.type="html";b.data={fileId:a.data("item-id"),sk:c.sk.get(),actionId:a.data("action-id")};c.appRequests().getActionCall(b,function(a){"undefined"!==typeof a.status&&1===a.status?c.resMsg("error",a.description):a?($.fancybox(a,{padding:[10,10,10,10]}),setTimeout(function(){$.fancybox.update()}, -1E3)):c.resMsg("error",c.config().LANG[14])})},download:function(a){d.info("file:download");a={fileId:a.data("item-id"),sk:c.sk.get(),actionId:a.data("action-id")};$.fileDownload(c.config().APP_ROOT+"/ajax/ajax_files.php",{httpMethod:"POST",data:a})},"delete":function(a){d.info("file:delete");var b='

'+c.config().LANG[15]+"

";alertify.okBtn(c.config().LANG[43]).cancelBtn(c.config().LANG[44]).confirm(b,function(b){b=c.appRequests().getRequestOpts();b.url= -"/ajax/ajax_files.php";b.data={fileId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(a){if(0===a.status){var b=$("#list-account-files");l.getfiles(b);c.resMsg("ok",a.description)}else c.resMsg("error",a.description)})},function(a){a.preventDefault();alertify.error(c.config().LANG[44])})}},checks:{ldap:function(a){d.info("checks:ldap");a=$(a.data("src"));var b=a.find("[name='ldap_bindpass']").val();a={type:"ldap",ldap_server:a.find("[name='ldap_server']").val(), -ldap_base:a.find("[name='ldap_base']").val(),ldap_group:a.find("[name='ldap_group']").val(),ldap_binduser:a.find("[name='ldap_binduser']").val(),ldap_bindpass:""!==c.config().PK?c.config().crypt.encrypt(b):b,sk:c.sk.get(),isAjax:1};b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_checkConnection.php";b.data=a;c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a)})},wiki:function(a){d.info("checks:wiki");a=$(a.data("src"));a={type:"dokuwiki",dokuwiki_url:a.find("[name='dokuwiki_url']").val(), -dokuwiki_user:a.find("[name='dokuwiki_user']").val(),dokuwiki_pass:a.find("[name='dokuwiki_pass']").val(),isAjax:1,sk:c.sk.get()};var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_checkConnection.php";b.data=a;c.appRequests().getActionCall(b,function(a){1===a.status?c.resMsg("error",a.description):0===a.status&&(c.resMsg("ok",a.description),$("#dokuWikiResCheck").html(a.data))})}},config:{save:function(a){d.info("config:save");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_configSave.php"; -b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&e({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},backup:function(a){d.info("config:backup");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_export.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&e({actionId:a.data("nextaction-id"), -itemId:a.data("activetab")})})},"export":function(a){d.info("config:export");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_export.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&e({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},"import":function(a){d.info("config:import");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_import.php";b.data=a.serialize();c.appRequests().getActionCall(b, -function(b){c.jsonResponseMessage(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&e({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}},main:k,user:{savePreferences:function(a){d.info("user:savePreferences");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_userPrefsSave.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a);setTimeout(function(){window.location.replace("index.php")},2E3)})},saveSecurity:function(a){d.info("user:saveSecurity"); -var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_userPrefsSave.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a)})},password:function(a){d.info("user:password");var b=c.appRequests().getRequestOpts();b.type="html";b.method="get";b.url="/ajax/ajax_usrpass.php";b.data={actionId:a.data("action-id"),userId:a.data("item-id"),sk:a.data("sk"),isAjax:1};c.appRequests().getActionCall(b,function(a){0===a.length?k.logout():$.fancybox(a,{padding:0})})}}}}; +save:function(a){d.info("account:save");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_accSave.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a)})}};return{doAction:e,appMgmt:{show:function(a){d.info("appMgmt:show");var b=c.appRequests().getRequestOpts();b.type="html";b.url="/ajax/ajax_appMgmtData.php";b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),activeTab:a.data("activetab"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b, +function(b){$.fancybox(b,{padding:[0,10,10,10],afterClose:function(){a.data("item-dst")&&h(a)},beforeShow:function(){c.appTriggers().views.common("#fancyContainer")}})})},"delete":function(a){d.info("appMgmt:delete");var b='

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

";alertify.okBtn(c.config().LANG[43]).cancelBtn(c.config().LANG[44]).confirm(b,function(b){b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_appMgmtSave.php";b.data={itemId:a.data("item-id"),actionId:a.data("action-id"), +sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);a.data("nextaction-id")&&e({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},function(a){a.preventDefault();alertify.error(c.config().LANG[44])})},save:function(a){d.info("appMgmt:save");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_appMgmtSave.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);0===b.status&&(a.data("nextaction-id")&&a.data("activetab")&& +e({actionId:a.data("nextaction-id"),itemId:a.data("activetab")}),$.fancybox.close())})},search:function(a){d.info("appMgmt:search");var b=$(a),g=b.find("[name=target]").val();a=c.appRequests().getRequestOpts();a.url="/ajax/ajax_appMgmtSearch.php";a.data=b.serialize();c.appRequests().getActionCall(a,function(a){0===a.status?($("#"+g).html(a.html),b.find("[name='sk']").val(a.sk)):$("#"+g).html(c.resMsg("nofancyerror",a.description))});return!1},nav:function(a){d.info("appMgmt:nav");var b=$("#"+a.data("action-form")), +g=c.appRequests().getRequestOpts();g.url="/ajax/ajax_appMgmtSearch.php";g.data=b.serialize()+"&start="+a.data("start")+"&count="+a.data("count");c.getActionCall(g,function(a){var g=$("#"+b.find("[name=target]").val());0===a.status?(g.html(a.html),b.find("[name='sk']").val(a.sk)):g.html(c.resMsg("nofancyerror",a.description))});return!1}},account:l,file:{view:function(a){d.info("file:view");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_files.php";b.type="html";b.data={fileId:a.data("item-id"), +sk:c.sk.get(),actionId:a.data("action-id")};c.appRequests().getActionCall(b,function(a){"undefined"!==typeof a.status&&1===a.status?c.resMsg("error",a.description):a?($.fancybox(a,{padding:[10,10,10,10]}),setTimeout(function(){$.fancybox.update()},1E3)):c.resMsg("error",c.config().LANG[14])})},download:function(a){d.info("file:download");a={fileId:a.data("item-id"),sk:c.sk.get(),actionId:a.data("action-id")};$.fileDownload(c.config().APP_ROOT+"/ajax/ajax_files.php",{httpMethod:"POST",data:a})},"delete":function(a){d.info("file:delete"); +var b='

'+c.config().LANG[15]+"

";alertify.okBtn(c.config().LANG[43]).cancelBtn(c.config().LANG[44]).confirm(b,function(b){b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_files.php";b.data={fileId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(a){if(0===a.status){var b=$("#list-account-files");l.getfiles(b);c.resMsg("ok",a.description)}else c.resMsg("error",a.description)})},function(a){a.preventDefault(); +alertify.error(c.config().LANG[44])})}},checks:{ldap:function(a){d.info("checks:ldap");a=$(a.data("src"));var b=a.find("[name='ldap_bindpass']").val();a={type:"ldap",ldap_server:a.find("[name='ldap_server']").val(),ldap_base:a.find("[name='ldap_base']").val(),ldap_group:a.find("[name='ldap_group']").val(),ldap_binduser:a.find("[name='ldap_binduser']").val(),ldap_bindpass:""!==c.config().PK?c.config().crypt.encrypt(b):b,sk:c.sk.get(),isAjax:1};b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_checkConnection.php"; +b.data=a;c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a)})},wiki:function(a){d.info("checks:wiki");a=$(a.data("src"));a={type:"dokuwiki",dokuwiki_url:a.find("[name='dokuwiki_url']").val(),dokuwiki_user:a.find("[name='dokuwiki_user']").val(),dokuwiki_pass:a.find("[name='dokuwiki_pass']").val(),isAjax:1,sk:c.sk.get()};var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_checkConnection.php";b.data=a;c.appRequests().getActionCall(b,function(a){1===a.status?c.resMsg("error",a.description): +0===a.status&&(c.resMsg("ok",a.description),$("#dokuWikiResCheck").html(a.data))})}},config:{save:function(a){d.info("config:save");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_configSave.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&e({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},backup:function(a){d.info("config:backup");var b=c.appRequests().getRequestOpts(); +b.url="/ajax/ajax_export.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&e({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},"export":function(a){d.info("config:export");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_export.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&& +e({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},"import":function(a){d.info("config:import");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_import.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.jsonResponseMessage(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&e({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}},main:k,user:{savePreferences:function(a){d.info("user:savePreferences");var b=c.appRequests().getRequestOpts(); +b.url="/ajax/ajax_userPrefsSave.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a);setTimeout(function(){window.location.replace("index.php")},2E3)})},saveSecurity:function(a){d.info("user:saveSecurity");var b=c.appRequests().getRequestOpts();b.url="/ajax/ajax_userPrefsSave.php";b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.jsonResponseMessage(a)})},password:function(a){d.info("user:password");var b=c.appRequests().getRequestOpts(); +b.type="html";b.method="get";b.url="/ajax/ajax_usrpass.php";b.data={actionId:a.data("action-id"),userId:a.data("item-id"),sk:a.data("sk"),isAjax:1};c.appRequests().getActionCall(b,function(a){0===a.length?k.logout():$.fancybox(a,{padding:0})})}}}}; diff --git a/js/app-main.js b/js/app-main.js index cbd422bd..2a45db44 100644 --- a/js/app-main.js +++ b/js/app-main.js @@ -106,33 +106,33 @@ sysPass.Main = function () { * Respuesta en formato json para mostrar mensaje * * @param json + * @param callback */ - var jsonResponseMessage = function (json) { + var jsonResponseMessage = function (json, callback) { var status = json.status; var description = json.description; - var action = json.action; + // var action = json.action; if (typeof json.messages !== "undefined" && json.messages.length > 0) { description = description + "
" + json.messages.join("
"); } + //$.fancybox.close(); + var $alertify = alertify + .logPosition("bottom right") + .closeLogOnClick(true) + .delay(10000); + switch (status) { case 0: - $.fancybox.close(); - resMsg("ok", description, undefined, action); + $alertify.success(description, callback); break; case 1: - $.fancybox.close(); - $(":input[type='password']").val(""); - resMsg("error", description, undefined, action); - break; case 2: - resMsg("error", description, undefined, action); - //$("#resFancyAccion").html('' + description + '').show(); + $alertify.error(description, callback); break; case 3: - $.fancybox.close(); - resMsg("warn", description, undefined, action); + $alertify.warn(description, callback); break; case 10: appActions.main.logout(); @@ -284,7 +284,7 @@ sysPass.Main = function () { }; var redirect = function (url) { - location.href = url; + window.location.replace(url); }; // Función para enviar una solicitud de modificación de cuenta diff --git a/js/app-main.min.js b/js/app-main.min.js index e85aeaed..0f02804a 100644 --- a/js/app-main.min.js +++ b/js/app-main.min.js @@ -1,24 +1,24 @@ -var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,h,k){if(k.get||k.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[h]=k.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_"; +var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,g,h){if(h.get||h.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[g]=h.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$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(a){return $jscomp.SYMBOL_PREFIX+(a||"")+$jscomp.symbolCounter_++}; -$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var h=0;return $jscomp.iteratorPrototype(function(){return h"+ -b.messages.join("
"));switch(a){case 0:$.fancybox.close();n("ok",c,void 0,g);break;case 1:$.fancybox.close();$(":input[type='password']").val("");n("error",c,void 0,g);break;case 2:n("error",c,void 0,g);break;case 3:$.fancybox.close();n("warn",c,void 0,g);break;case 10:l.main.logout()}},z=function(b){m.info("getEnvironment");var d=window.location.pathname.split("/"),c=window.location.protocol+"//"+window.location.host+function(){for(var b="",a=1;a<=d.length-2;a++)b+="/"+d[a];return b}(),g=f.getRequestOpts(); -g.url=c+"/ajax/ajax_getEnvironment.php";g.method="get";g.async=!1;g.data={isAjax:1};f.getActionCall(g,function(c){a.APP_ROOT=c.app_root;a.LANG=c.lang;a.PK=c.pk;a.CHECK_UPDATES=c.check_updates;a.crypt.setPublicKey(c.pk);"function"===typeof b&&b()})},v={get:function(){m.info("sk:get");return $("#content").attr("data-sk")},set:function(b){m.info("sk:set");$("#content").attr("data-sk",b)}},A=function(){var b=$("#container");if(!b.hasClass("content-no-auto-resize")){var a=$("#content").height()+200;b.css("height", -a)}},w=function(){$("html, body").animate({scrollTop:0},"slow")},B=function(a,d){if("undefined"===typeof a)return!1;var b=f.getRequestOpts();b.url="/ajax/ajax_eventlog.php";b.type="html";b.data={start:a,current:d};f.getActionCall(b,function(a){$("#content").html(a);w()})},C=function(a){location.href=a},D=function(){var a=f.getRequestOpts();a.url="/ajax/ajax_sendRequest.php";a.data=$("#frmRequestModify").serialize();f.getActionCall(a,function(a){p(a)})},E=function(b){var d=function(){return{actionId:b.data("action-id"), -itemId:b.data("item-id"),sk:v.get()}},c={requestDoneAction:"",requestData:function(a){d=function(){return a}},beforeSendAction:"",url:""},g=function(a){if("undefined"===typeof c.url||""===c.url)return!1;var b=new FormData;b.append("inFile",a);b.append("isAjax",1);var g=d();Object.keys(g).forEach(function(a){m.info(a);b.append(a,g[a])});a=f.getRequestOpts();a.url=c.url;a.processData=!1;a.contentType=!1;a.data=b;f.getActionCall(a,function(a){var b=a.status;a=a.description;0===b?("function"===typeof c.requestDoneAction&& -c.requestDoneAction(),n("ok",a)):10===b?l.main.logout():n("error",a)})},r=function(c){if(5a.MAX_FILE_SIZE)n("error",a.LANG[18]+"
"+f.name+" (Max: "+a.MAX_FILE_SIZE+")");else{var e;a:{e=f.name;for(var r=b.data("files-ext").toLowerCase().split(","),h=0;h<=r.length;h++)if(-1!==e.indexOf(r[h])){e=!0;break a}e=!1}e?g(c[d]):n("error",a.LANG[19]+"
"+f.name)}}},e=function(a){var b=$("#fileUploadForm"); -!1===a&&b.hide();a=b.find("input[type='file']");a.on("change",function(){"function"===typeof c.beforeSendAction&&c.beforeSendAction();r(this.files)});return a};window.File&&window.FileList&&window.FileReader?function(){m.info("fileUpload:init");var a=e(!1);b.on("dragover dragenter",function(a){m.info("fileUpload:drag");a.stopPropagation();a.preventDefault()});b.on("drop",function(a){m.info("fileUpload:drop");a.stopPropagation();a.preventDefault();"function"===typeof c.beforeSendAction&&c.beforeSendAction(); -r(a.dataTransfer.files)});b.on("click",function(){a.click()})}():e(!0);return c},F=function(a,d){var b=f.getRequestOpts();b.url=d;b.data=a;f.getActionCall(b,function(a){p(a)})},G=function(b,d,c){var g={itemId:b,actionId:d,sk:c,isAjax:1};alertify.okBtn(a.LANG[40]).cancelBtn(a.LANG[41]).confirm(a.LANG[48],function(a){$.extend(g,{notify:1});a=f.getRequestOpts();a.url="/ajax/ajax_appMgmtSave.php";a.data=g;f.getActionCall(a,function(a){p(a)})},function(a){a.preventDefault();a=f.getRequestOpts();a.url= -"/ajax/ajax_appMgmtSave.php";a.data=g;f.getActionCall(a,function(a){p(a)})})},H=function(a,d,c){var b=$(a).attr("data-itemid"),e=$(a).attr("data-activetab");a=$(a).attr("data-nextactionid");d={itemId:b,actionId:d,sk:c,activeTab:e,onCloseAction:a};c=f.getRequestOpts();c.url="/ajax/ajax_appMgmtSave.php";c.data=d;f.getActionCall(c,function(a){p(a)})},x=function(){var a=f.getRequestOpts();a.type="html";a.method="get";a.timeout=1E4;a.url="/ajax/ajax_checkUpds.php";f.getActionCall(a,function(a){$("#updates").html(a); -"undefined"!==typeof componentHandler&&componentHandler.upgradeDom()},function(){$("#updates").html("!")})},I=function(b){var d='

'+a.LANG[20]+"

";alertify.okBtn(a.LANG[43]).cancelBtn(a.LANG[44]).confirm(d,function(a){a=f.getRequestOpts();a.url="/ajax/ajax_eventlog.php";a.data={clear:1,sk:b,isAjax:1};f.getActionCall(a,function(a){p(a)})},function(b){b.preventDefault();alertify.error(a.LANG[44])})},J=function(a,d){h.passLength=a.length;y(zxcvbn(a),d)},y=function(b, -d){var c,g=b.score;c=$(".passLevel-"+d);c.show();c.removeClass("weak good strong strongest");0===h.passLength?c.attr("title","").empty():h.passLength");switch(b){case "ok":alertify.closeLogOnClick(!0).delay(15E3).success(d);break;case "error":alertify.closeLogOnClick(!0).delay(15E3).error(d);break;case "warn":alertify.delay(3E4).log(d);break;case "nofancyerror":return b='

Oops...
'+a.LANG[1]+"
"+d+"

";default:alertify.error(d)}"undefined"!==typeof g&&eval(g)},K=function(b){$(b).find(".checkbox").button({icons:{primary:"ui-icon-transferthick-e-w"}}).click(function(){var b= +$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var g=0;return $jscomp.iteratorPrototype(function(){return g"+b.messages.join("
")); +var n=alertify.logPosition("bottom right").closeLogOnClick(!0).delay(1E4);switch(c){case 0:n.success(d,a);break;case 1:case 2:n.error(d,a);break;case 3:n.warn(d,a);break;case 10:k.main.logout()}},z=function(b){m.info("getEnvironment");var d=window.location.pathname.split("/"),c=window.location.protocol+"//"+window.location.host+function(){for(var a="",b=1;b<=d.length-2;b++)a+="/"+d[b];return a}(),l=e.getRequestOpts();l.url=c+"/ajax/ajax_getEnvironment.php";l.method="get";l.async=!1;l.data={isAjax:1}; +e.getActionCall(l,function(c){a.APP_ROOT=c.app_root;a.LANG=c.lang;a.PK=c.pk;a.CHECK_UPDATES=c.check_updates;a.crypt.setPublicKey(c.pk);"function"===typeof b&&b()})},v={get:function(){m.info("sk:get");return $("#content").attr("data-sk")},set:function(a){m.info("sk:set");$("#content").attr("data-sk",a)}},A=function(){var a=$("#container");if(!a.hasClass("content-no-auto-resize")){var d=$("#content").height()+200;a.css("height",d)}},w=function(){$("html, body").animate({scrollTop:0},"slow")},B=function(a, +d){if("undefined"===typeof a)return!1;var b=e.getRequestOpts();b.url="/ajax/ajax_eventlog.php";b.type="html";b.data={start:a,current:d};e.getActionCall(b,function(a){$("#content").html(a);w()})},C=function(a){window.location.replace(a)},D=function(){var a=e.getRequestOpts();a.url="/ajax/ajax_sendRequest.php";a.data=$("#frmRequestModify").serialize();e.getActionCall(a,function(a){q(a)})},E=function(b){var d=function(){return{actionId:b.data("action-id"),itemId:b.data("item-id"),sk:v.get()}},c={requestDoneAction:"", +requestData:function(a){d=function(){return a}},beforeSendAction:"",url:""},l=function(a){if("undefined"===typeof c.url||""===c.url)return!1;var b=new FormData;b.append("inFile",a);b.append("isAjax",1);var l=d();Object.keys(l).forEach(function(a){m.info(a);b.append(a,l[a])});a=e.getRequestOpts();a.url=c.url;a.processData=!1;a.contentType=!1;a.data=b;e.getActionCall(a,function(a){var b=a.status;a=a.description;0===b?("function"===typeof c.requestDoneAction&&c.requestDoneAction(),p("ok",a)):10===b? +k.main.logout():p("error",a)})},n=function(c){if(5a.MAX_FILE_SIZE)p("error",a.LANG[18]+"
"+e.name+" (Max: "+a.MAX_FILE_SIZE+")");else{var n;a:{n=e.name;for(var f=b.data("files-ext").toLowerCase().split(","),g=0;g<=f.length;g++)if(-1!==n.indexOf(f[g])){n=!0;break a}n=!1}n?l(c[d]):p("error",a.LANG[19]+"
"+e.name)}}},f=function(a){var b=$("#fileUploadForm");!1===a&&b.hide();a=b.find("input[type='file']"); +a.on("change",function(){"function"===typeof c.beforeSendAction&&c.beforeSendAction();n(this.files)});return a};window.File&&window.FileList&&window.FileReader?function(){m.info("fileUpload:init");var a=f(!1);b.on("dragover dragenter",function(a){m.info("fileUpload:drag");a.stopPropagation();a.preventDefault()});b.on("drop",function(a){m.info("fileUpload:drop");a.stopPropagation();a.preventDefault();"function"===typeof c.beforeSendAction&&c.beforeSendAction();n(a.dataTransfer.files)});b.on("click", +function(){a.click()})}():f(!0);return c},F=function(a,d){var b=e.getRequestOpts();b.url=d;b.data=a;e.getActionCall(b,function(a){q(a)})},G=function(b,d,c){var l={itemId:b,actionId:d,sk:c,isAjax:1};alertify.okBtn(a.LANG[40]).cancelBtn(a.LANG[41]).confirm(a.LANG[48],function(a){$.extend(l,{notify:1});a=e.getRequestOpts();a.url="/ajax/ajax_appMgmtSave.php";a.data=l;e.getActionCall(a,function(a){q(a)})},function(a){a.preventDefault();a=e.getRequestOpts();a.url="/ajax/ajax_appMgmtSave.php";a.data=l;e.getActionCall(a, +function(a){q(a)})})},H=function(a,d,c){var b=$(a).attr("data-itemid"),f=$(a).attr("data-activetab");a=$(a).attr("data-nextactionid");d={itemId:b,actionId:d,sk:c,activeTab:f,onCloseAction:a};c=e.getRequestOpts();c.url="/ajax/ajax_appMgmtSave.php";c.data=d;e.getActionCall(c,function(a){q(a)})},x=function(){var a=e.getRequestOpts();a.type="html";a.method="get";a.timeout=1E4;a.url="/ajax/ajax_checkUpds.php";e.getActionCall(a,function(a){$("#updates").html(a);"undefined"!==typeof componentHandler&&componentHandler.upgradeDom()}, +function(){$("#updates").html("!")})},I=function(b){var d='

'+a.LANG[20]+"

";alertify.okBtn(a.LANG[43]).cancelBtn(a.LANG[44]).confirm(d,function(a){a=e.getRequestOpts();a.url="/ajax/ajax_eventlog.php";a.data={clear:1,sk:b,isAjax:1};e.getActionCall(a,function(a){q(a)})},function(b){b.preventDefault();alertify.error(a.LANG[44])})},J=function(a,d){g.passLength=a.length;y(zxcvbn(a),d)},y=function(b,d){var c,e=b.score;c=$(".passLevel-"+d);c.show();c.removeClass("weak good strong strongest"); +0===g.passLength?c.attr("title","").empty():g.passLength");switch(b){case "ok":alertify.closeLogOnClick(!0).delay(15E3).success(d);break;case "error":alertify.closeLogOnClick(!0).delay(15E3).error(d);break;case "warn":alertify.delay(3E4).log(d);break;case "nofancyerror":return b='

Oops...
'+a.LANG[1]+"
"+d+"

";default:alertify.error(d)}"undefined"!==typeof f&&eval(f)},K=function(b){$(b).find(".checkbox").button({icons:{primary:"ui-icon-transferthick-e-w"}}).click(function(){var b= $(this);!0===b.prop("checked")?b.button("option","label",a.LANG[40]):b.button("option","label",a.LANG[41])})},u=function(b){var d=$(b),c=d.val();b+="-encrypted";var e=d.next(':input[name="'+b+'"]');if(""!==c&&e.attr("name")!==b||""!==c&&e.attr("name")===b&&parseInt(d.next().val())!==c.length)c=a.crypt.encrypt(c),d.val(c),0')},L=function(){m.info("initializeClipboard");var b=new Clipboard(".clip-pass-button", -{text:function(a){return l.account.copypass($(a)).responseJSON.accpass}});b.on("success",function(b){n("ok",a.LANG[45])});b.on("error",function(b){n("error",a.LANG[46])});var b=new Clipboard(".dialog-clip-pass-button"),d=new Clipboard(".dialog-clip-user-button");b.on("success",function(a){$(".dialog-pass-text").addClass("dialog-clip-pass-copy round");a.clearSelection()});d.on("success",function(a){a.clearSelection()})},M=function(){m.info("bindPassEncrypt");var a=$("body");a.on("blur",":input[type=password]", -function(a){$(this).hasClass("passwordfield__no-pki")||(a=$(this).attr("id"),u("#"+a))});a.on("keypress",":input[type=password]",function(a){if(13===a.keyCode){a.preventDefault();a=$(this).closest("form");var b=$(this).attr("id");u("#"+b);a.submit()}})},N=function(a,d,c){var b=f.getRequestOpts();b.type="html";b.url="/ajax/ajax_wiki.php";b.data={pageName:a,actionId:d,sk:c,isAjax:1};f.getActionCall(b,function(a){$.fancybox(a,{padding:[0,10,10,10]})})},O=function(a,d){console.info("Eval: "+a);if("function"=== -typeof a)a(d);else throw Error("Function not found: "+a);},P=function(){return $.extend({log:m,config:function(){return a},appTheme:function(){return k},appActions:function(){return l},appTriggers:function(){return e},appRequests:function(){return f},evalAction:O},t)},Q=function(){return{sk:v,actions:function(){return l},triggers:function(){return e},jsonResponseMessage:p,checkboxDetect:K,checkPassLevel:J,checkUpds:x,clearEventlog:I,encryptFormValue:u,fileUpload:E,linksMgmtSave:G,linksMgmtRefresh:H, -navLog:B,outputResult:y,passToClip:0,passwordData:h,redirect:C,resMsg:n,scrollUp:w,sendAjax:F,sendRequest:D,setContentSize:A,viewWiki:N}};(function(){m.info("init");t=Q();q=P();e=sysPass.Triggers(q);l=sysPass.Actions(q);f=sysPass.Requests(q);z(function(){""!==a.PK&&M();"function"===typeof sysPass.Theme&&(k=sysPass.Theme(q));!0===a.CHECK_UPDATES&&x();L();m.info("setupCallbacks");0<$("#boxLogin").length&&e.views.login();0<$("#searchbox").length&&e.views.search();0<$("footer").length&&e.views.footer()})})(); +{text:function(a){return k.account.copypass($(a)).responseJSON.accpass}});b.on("success",function(b){p("ok",a.LANG[45])});b.on("error",function(b){p("error",a.LANG[46])});var b=new Clipboard(".dialog-clip-pass-button"),d=new Clipboard(".dialog-clip-user-button");b.on("success",function(a){$(".dialog-pass-text").addClass("dialog-clip-pass-copy round");a.clearSelection()});d.on("success",function(a){a.clearSelection()})},M=function(){m.info("bindPassEncrypt");var a=$("body");a.on("blur",":input[type=password]", +function(a){$(this).hasClass("passwordfield__no-pki")||(a=$(this).attr("id"),u("#"+a))});a.on("keypress",":input[type=password]",function(a){if(13===a.keyCode){a.preventDefault();a=$(this).closest("form");var b=$(this).attr("id");u("#"+b);a.submit()}})},N=function(a,d,c){var b=e.getRequestOpts();b.type="html";b.url="/ajax/ajax_wiki.php";b.data={pageName:a,actionId:d,sk:c,isAjax:1};e.getActionCall(b,function(a){$.fancybox(a,{padding:[0,10,10,10]})})},O=function(a,d){console.info("Eval: "+a);if("function"=== +typeof a)a(d);else throw Error("Function not found: "+a);},P=function(){return $.extend({log:m,config:function(){return a},appTheme:function(){return h},appActions:function(){return k},appTriggers:function(){return f},appRequests:function(){return e},evalAction:O},t)},Q=function(){return{sk:v,actions:function(){return k},triggers:function(){return f},jsonResponseMessage:q,checkboxDetect:K,checkPassLevel:J,checkUpds:x,clearEventlog:I,encryptFormValue:u,fileUpload:E,linksMgmtSave:G,linksMgmtRefresh:H, +navLog:B,outputResult:y,passToClip:0,passwordData:g,redirect:C,resMsg:p,scrollUp:w,sendAjax:F,sendRequest:D,setContentSize:A,viewWiki:N}};(function(){m.info("init");t=Q();r=P();f=sysPass.Triggers(r);k=sysPass.Actions(r);e=sysPass.Requests(r);z(function(){""!==a.PK&&M();"function"===typeof sysPass.Theme&&(h=sysPass.Theme(r));!0===a.CHECK_UPDATES&&x();L();m.info("setupCallbacks");0<$("#boxLogin").length&&f.views.login();0<$("#searchbox").length&&f.views.search();0<$("footer").length&&f.views.footer()})})(); return t}; diff --git a/js/app-triggers.js b/js/app-triggers.js index be6559de..e6b5b31c 100644 --- a/js/app-triggers.js +++ b/js/app-triggers.js @@ -161,11 +161,41 @@ sysPass.Triggers = function (Common) { } }; + var bodyHooks = function () { + log.info("bodyHooks"); + + $("body").on("click", ".btn-action[data-onclick],.btn-action-pager[data-onclick]", function () { + btnAction($(this)); + }).on("click", ".btn-back", function () { + var appRequests = Common.appRequests(); + + if (appRequests.history.length() > 0) { + log.info("back"); + + var lastHistory = appRequests.history.del(); + + appRequests.getActionCall(lastHistory, lastHistory.callback); + } + }).on("submit", ".form-action", function (e) { + e.preventDefault(); + + formAction($(this)); + }).on("click", ".btn-help", function () { + var $this = $(this); + + $("#" + $this.data("help")).dialog("open"); + }); + }; + /** * Triggers que se ejecutan en determinadas vistas */ var views = { main: function () { + log.info("views:main"); + + bodyHooks(); + $(".btn-menu").click(function () { var $this = $(this); @@ -176,33 +206,14 @@ sysPass.Triggers = function (Common) { Common.appActions().doAction({actionId: $(this).data("action-id")}); }); - $("body").on("click", ".btn-action[data-onclick],.btn-action-pager[data-onclick]", function () { - btnAction($(this)); - }).on("click", ".btn-back", function () { - var appRequests = Common.appRequests(); - - if (appRequests.history.length() > 0) { - log.info("back"); - - var lastHistory = appRequests.history.del(); - - appRequests.getActionCall(lastHistory, lastHistory.callback); - } - }).on("submit", ".form-action", function (e) { - e.preventDefault(); - - formAction($(this)); - }).on("click", ".btn-help", function () { - var $this = $(this); - - $("#" + $this.data("help")).dialog("open"); - }); setFixedMenu(); Common.appActions().doAction({actionId: 1}); }, search: function () { + log.info("views:search"); + var $frmSearch = $("#frmSearch"); $frmSearch.on("submit", function (e) { @@ -236,17 +247,17 @@ sysPass.Triggers = function (Common) { } }, login: function () { - $("#frmLogin").on("submit", function (e) { - e.preventDefault(); + log.info("views:login"); - formAction($(this)); - }); + bodyHooks(); $("#boxLogout").fadeOut(1500, function () { location.href = Common.config().APP_ROOT + "/index.php"; }); }, footer: function () { + log.info("views:footer"); + $("#btnLogout").click(function (e) { Common.appActions().main.logout(); }); @@ -256,10 +267,12 @@ sysPass.Triggers = function (Common) { }); $("#btnUserPass").click(function (e) { - Common.appActions().appMgmt.userpass($(this)); + Common.appActions().user.password($(this)); }); }, common: function (container) { + log.info("views:common"); + var $container = $(container); selectDetect($container); @@ -275,6 +288,8 @@ sysPass.Triggers = function (Common) { } }, datatabs: function (active) { + log.info("views:datatabs"); + $("#tabs").tabs({ active: active }); @@ -288,6 +303,8 @@ sysPass.Triggers = function (Common) { }); }, config: function () { + log.info("views:config"); + var $dropFiles = $("#drop-import-files"); if ($dropFiles.length > 0) { @@ -317,6 +334,8 @@ sysPass.Triggers = function (Common) { } }, account: function () { + log.info("views:account"); + var $listFiles = $("#list-account-files"); if ($listFiles.length > 0) { @@ -340,8 +359,14 @@ sysPass.Triggers = function (Common) { $form.attr("data-hash", SparkMD5.hash($form.serialize(), false)); } }, - install: function() { - Common.appTheme().passwordDetect($("#frmInstall")); + install: function () { + log.info("views:install"); + + bodyHooks(); + + var $form = $("#frmInstall"); + + Common.appTheme().passwordDetect($form); } }; diff --git a/js/app-triggers.min.js b/js/app-triggers.min.js index 12a5d6d2..cc188742 100644 --- a/js/app-triggers.min.js +++ b/js/app-triggers.min.js @@ -1,13 +1,13 @@ -var $jscomp={scope:{},findInternal:function(b,e,c){b instanceof String&&(b=String(b));for(var g=b.length,f=0;fa.height();d&&!c?(a.css(e),b.show().css({opacity:.75}),c=!0):!d&&c&&(a.css({backgroundColor:"transparent",border:"0"}),b.hide(),c=!1)});0form").each(function(){var a=$(this); -a.find("i.btn-clear").on("click",function(){a.trigger("reset").submit()})})},config:function(){var a=$("#drop-import-files");if(0a.height();d&&!c?(a.css(e),b.show().css({opacity:.75}),c=!0):!d&&c&&(a.css({backgroundColor:"transparent",border:"0"}),b.hide(),c=!1)});0form").each(function(){var a=$(this);a.find("i.btn-clear").on("click",function(){a.trigger("reset").submit()})})},config:function(){c.info("views:config");var a=$("#drop-import-files");if(0