diff --git a/inc/Base.php b/inc/Base.php index 18e9ac5d..4655718a 100644 --- a/inc/Base.php +++ b/inc/Base.php @@ -72,8 +72,9 @@ function debugLog($data, $printLastCaller = false) $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); $n = count($backtrace); - for ($i = 1; $i <= $n - 1; $i++){ - error_log(sprintf('Caller %d: %s\%s', $i, $backtrace[$i]['class'], $backtrace[$i]['function'])); + for ($i = 1; $i <= $n - 1; $i++) { + $class = isset($backtrace[$i]['class']) ? $backtrace[$i]['class'] : ''; + error_log(sprintf('Caller %d: %s\%s', $i, $class, $backtrace[$i]['function'])); } } } @@ -85,7 +86,8 @@ function debugLog($data, $printLastCaller = false) * @param $message * @return string */ -function _t($domain, $message) { +function _t($domain, $message) +{ return dgettext($domain, $message); } diff --git a/inc/SP/Api/ApiRequest.class.php b/inc/SP/Api/ApiRequest.class.php index d4c2c3b6..6e5275c0 100644 --- a/inc/SP/Api/ApiRequest.class.php +++ b/inc/SP/Api/ApiRequest.class.php @@ -38,6 +38,7 @@ defined('APP_ROOT') || die(_('No es posible acceder directamente a este archivo' * * {"jsonrpc": "2.0", "method": "subtract", "params": {"minuend": 42, "subtrahend": 23}, "id": 3} * + * @see http://www.jsonrpc.org/specification * @package SP */ class ApiRequest extends Request diff --git a/inc/SP/Core/Init.class.php b/inc/SP/Core/Init.class.php index a0222612..f4787c0d 100644 --- a/inc/SP/Core/Init.class.php +++ b/inc/SP/Core/Init.class.php @@ -34,6 +34,7 @@ use SP\Core\Plugin\PluginUtil; use SP\Http\Request; use SP\Log\Email; use SP\Log\Log; +use SP\Mgmt\Plugins\Plugin; use SP\Mgmt\Profiles\Profile; use SP\Storage\DBUtil; use SP\Util\Checks; @@ -180,8 +181,8 @@ class Init // Comprobar si se ha identificado mediante el servidor web y el usuario coincide if ($AuthBrowser->checkServerAuthUser(Session::getUserData()->getUserLogin()) === false) { self::logout(); - // Denegar la redirección si la URL contiene una @ - // Esto previene redirecciones como ?redirect_url=:user@domain.com + // Denegar la redirección si la URL contiene una @ + // Esto previene redirecciones como ?redirect_url=:user@domain.com } elseif (Request::analyze('redirect_url', '', true) && strpos('index.php', '@') === false) { header('Location: ' . 'index.php'); } @@ -284,7 +285,7 @@ class Init /** * Devuelve un eror utilizando la plantilla de error. * - * @param string $str con la descripción del error + * @param string $str con la descripción del error * @param string $hint opcional, con una ayuda sobre el error */ public static function initError($str, $hint = '') @@ -655,6 +656,23 @@ class Init return Session::getSessionTimeout(); } + /** + * Cargar los Plugins disponibles + */ + private static function loadPlugins() + { + foreach (PluginUtil::getPlugins() as $plugin) { + $Plugin = PluginUtil::loadPlugin($plugin); + + if ($Plugin !== false) { + DiFactory::getEventDispatcher()->attach($Plugin); + } + } + + Session::setPluginsLoaded(PluginUtil::getLoadedPlugins()); + Session::setPluginsDisabled(PluginUtil::getDisabledPlugins()); + } + /** * Comprobar si hay que ejecutar acciones de URL antes de presentar la pantalla de login. * @@ -666,7 +684,7 @@ class Init { $action = Request::analyze('a'); - if ($action === '' ) { + if ($action === '') { return false; } @@ -701,7 +719,7 @@ class Init { $action = Request::analyze('a'); - if ($action === '' ) { + if ($action === '') { return false; } @@ -722,21 +740,4 @@ class Init list($usec, $sec) = explode(' ', microtime()); return ((float)$usec + (float)$sec); } - - /** - * Cargar los Plugins disponibles - */ - private static function loadPlugins() - { - foreach (PluginUtil::getPlugins() as $plugin){ - $Plugin = PluginUtil::loadPlugin($plugin); - - if ($Plugin !== false) { - DiFactory::getEventDispatcher()->attach($Plugin); - } - } - - Session::setPluginsLoaded(PluginUtil::getLoadedPlugins()); - Session::setPluginsDisabled(PluginUtil::getDisabledPlugins()); - } } \ No newline at end of file diff --git a/inc/SP/Core/Plugin/PluginBase.class.php b/inc/SP/Core/Plugin/PluginBase.class.php index 9a75776f..2076461f 100644 --- a/inc/SP/Core/Plugin/PluginBase.class.php +++ b/inc/SP/Core/Plugin/PluginBase.class.php @@ -59,8 +59,6 @@ abstract class PluginBase implements PluginInterface */ public final function __construct() { - DiFactory::getEventDispatcher()->attach($this); - $this->init(); } diff --git a/inc/SP/Mgmt/Users/UserPass.class.php b/inc/SP/Mgmt/Users/UserPass.class.php index d992bc8a..75dae2c7 100644 --- a/inc/SP/Mgmt/Users/UserPass.class.php +++ b/inc/SP/Mgmt/Users/UserPass.class.php @@ -214,8 +214,8 @@ class UserPass extends UserBase if ($queryRes === false) { return false; - } elseif ($queryRes->user_mPass === null - || $queryRes->user_mIV === null + } elseif ($queryRes->user_mPass === '' + || $queryRes->user_mIV === '' ) { return null; } diff --git a/inc/themes/material-blue/css/search-grid.css b/inc/themes/material-blue/css/search-grid.css index a902277a..a83fd9c0 100644 --- a/inc/themes/material-blue/css/search-grid.css +++ b/inc/themes/material-blue/css/search-grid.css @@ -24,7 +24,6 @@ #content #data-search .account-label .label-row-up, #content #data-search .account-label .label-row-down { display: flex; - flex-wrap: wrap; min-height: 3em; height: auto; width: 100%; @@ -34,23 +33,27 @@ #content #data-search .account-label .label-left { display: flex; flex-wrap: wrap; - align-items: center; } + align-items: center; + width: 100%; + height: 4em; } #content #data-search .account-label .label-right { display: flex; flex-wrap: wrap; - width: 18em; } + width: 18em; + height: 4em; } #content #data-search .account-label .label-right > div { width: 18em; } #content #data-search .account-label .label-field { - width: 18em; + width: 100%; min-height: 3em; - height: auto; } + height: auto; + padding: 0 .3em; } #content #data-search .account-label .field-text { word-wrap: break-word; } #content #data-search .account-label .field-text a { color: #5c6bc0; } #content #data-search .account-label .field-customer { - width: 20em; } + flex-grow: 2; } #content #data-search .account-label .field-name { padding: 0.3em 0.2em; color: #b9b9b9; diff --git a/inc/themes/material-blue/css/search-grid.css.map b/inc/themes/material-blue/css/search-grid.css.map index cb9603e2..dc95e22b 100644 --- a/inc/themes/material-blue/css/search-grid.css.map +++ b/inc/themes/material-blue/css/search-grid.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": ";;AAIE,qBAAa;EACX,UAAU,EAAE,MAAM;EAClB,OAAO,EAAE,OAAO;EAChB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,MAAM;EAEd;4CACqB;IACnB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,OAAO;EAGjB,oCAAe;IACb,OAAO,EAAE,IAAI;IACb,eAAe,EAAE,aAAa;IAC9B,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,OAAO;IACd,gBAAgB,EAAE,OAAO;IACzB,OAAO,EAAE,MAAM;IAEf;wDACgB;MACd,OAAO,EAAE,IAAI;MACb,SAAS,EAAE,IAAI;MACf,UAAU,EAAE,GAAG;MACf,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,OAAO,EAAE,OAAO;IAGlB,oDAAgB;MACd,MAAM,EAAE,GAAG;IAGb,gDAAY;MACV,OAAO,EAAE,IAAI;MACb,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,MAAM;IAGrB,iDAAa;MACX,OAAO,EAAE,IAAI;MACb,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,IAAI;MACX,uDAAQ;QACN,KAAK,EAAE,IAAI;IAIf,iDAAa;MACX,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,GAAG;MACf,MAAM,EAAE,IAAI;IAGd,gDAAY;MACV,SAAS,EAAE,UAAU;MACrB,kDAAE;QACA,KAAK,EC1DG,OAAO;ID8DnB,oDAAgB;MACd,KAAK,EAAE,IAAI;IAGb,gDAAY;MACV,OAAO,EAAE,WAAW;MACpB,KAAK,EAAE,OAAO;MACd,OAAO,EAAE,IAAI;IAGf,wDAAoB;MAClB,KAAK,EAAE,KAAK;MACZ,WAAW,EAAE,IAAI;IAGnB;mDACW;MACT,KAAK,EAAE,KAAK;MACZ,WAAW,EAAE,IAAI;EAIrB,mCAAc;IACZ,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,GAAG;IACZ,yCAAQ;MACN,OAAO,EAAE,CAAC;EAId,sCAAiB;IACf,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,iBAAiB;EAG/B,qCAAgB;IACd,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;EAGZ,+BAAU;IACR,OAAO,EAAE,YAAY;IAErB,wCAAS;MACP,MAAM,EAAE,OAAO;MACf,OAAO,EAAE,GAAG;MACZ,8CAAQ;QACN,OAAO,EAAE,CAAC;;AAOpB,qCAAsC;EAGhC,oCAAe;IACb,SAAS,EAAE,IAAI;IAEf,iDAAa;MACX,KAAK,EAAE,IAAI;IAGb,gDAAY;MACV,OAAO,EAAE,KAAK;MACd,UAAU,EAAE,IAAI;MAChB,aAAa,EAAE,iBAAiB;IAGlC;2DACmB;MACjB,KAAK,EAAE,IAAI", +"mappings": ";;AAIE,qBAAa;EACX,UAAU,EAAE,MAAM;EAClB,OAAO,EAAE,OAAO;EAChB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,MAAM;EAEd;4CACqB;IACnB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,OAAO;EAGjB,oCAAe;IACb,OAAO,EAAE,IAAI;IACb,eAAe,EAAE,aAAa;IAC9B,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,OAAO;IACd,gBAAgB,EAAE,OAAO;IACzB,OAAO,EAAE,MAAM;IAEf;wDACgB;MACd,OAAO,EAAE,IAAI;MAEb,UAAU,EAAE,GAAG;MACf,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,OAAO,EAAE,OAAO;IAGlB,oDAAgB;MACd,MAAM,EAAE,GAAG;IAGb,gDAAY;MACV,OAAO,EAAE,IAAI;MACb,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,MAAM;MACnB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,GAAG;IAGb,iDAAa;MACX,OAAO,EAAE,IAAI;MACb,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,GAAG;MACX,uDAAQ;QACN,KAAK,EAAE,IAAI;IAIf,iDAAa;MACX,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,GAAG;MACf,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,MAAM;IAGjB,gDAAY;MACV,SAAS,EAAE,UAAU;MACrB,kDAAE;QACA,KAAK,EC9DG,OAAO;IDkEnB,oDAAgB;MACd,SAAS,EAAE,CAAC;IAId,gDAAY;MACV,OAAO,EAAE,WAAW;MACpB,KAAK,EAAE,OAAO;MACd,OAAO,EAAE,IAAI;IAGf,wDAAoB;MAClB,KAAK,EAAE,KAAK;MACZ,WAAW,EAAE,IAAI;IAGnB;mDACW;MACT,KAAK,EAAE,KAAK;MACZ,WAAW,EAAE,IAAI;EAIrB,mCAAc;IACZ,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,GAAG;IACZ,yCAAQ;MACN,OAAO,EAAE,CAAC;EAId,sCAAiB;IACf,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,iBAAiB;EAG/B,qCAAgB;IACd,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;EAGZ,+BAAU;IACR,OAAO,EAAE,YAAY;IAErB,wCAAS;MACP,MAAM,EAAE,OAAO;MACf,OAAO,EAAE,GAAG;MACZ,8CAAQ;QACN,OAAO,EAAE,CAAC;;AAOpB,qCAAsC;EAGhC,oCAAe;IACb,SAAS,EAAE,IAAI;IAEf,iDAAa;MACX,KAAK,EAAE,IAAI;IAGb,gDAAY;MACV,OAAO,EAAE,KAAK;MACd,UAAU,EAAE,IAAI;MAChB,aAAa,EAAE,iBAAiB;IAGlC;2DACmB;MACjB,KAAK,EAAE,IAAI", "sources": ["search-grid.scss","_base.scss"], "names": [], "file": "search-grid.css" diff --git a/inc/themes/material-blue/css/search-grid.min.css b/inc/themes/material-blue/css/search-grid.min.css index cd50b7c4..c0909542 100644 --- a/inc/themes/material-blue/css/search-grid.min.css +++ b/inc/themes/material-blue/css/search-grid.min.css @@ -1 +1 @@ -@charset "UTF-8";#content #data-search{text-align:center;padding:.5em 0;width:100%;margin:0 auto}#content #data-search .account-info img,#content #data-search .account-actions img{width:24px;height:24px;margin:0 .5em}#content #data-search .account-label{display:flex;justify-content:space-between;width:100%;min-height:8em;height:auto;text-align:left;margin:0 auto .5em;color:#696969;background-color:#fcfcfc;padding:0 .5em}#content #data-search .account-label .label-row-up,#content #data-search .account-label .label-row-down{display:flex;flex-wrap:wrap;min-height:3em;height:auto;width:100%;padding:.5em 0}#content #data-search .account-label .label-row-down{height:3em}#content #data-search .account-label .label-left{display:flex;flex-wrap:wrap;align-items:center}#content #data-search .account-label .label-right{display:flex;flex-wrap:wrap;width:18em}#content #data-search .account-label .label-right>div{width:18em}#content #data-search .account-label .label-field{width:18em;min-height:3em;height:auto}#content #data-search .account-label .field-text{word-wrap:break-word}#content #data-search .account-label .field-text a{color:#5c6bc0}#content #data-search .account-label .field-customer{width:20em}#content #data-search .account-label .field-name{padding:.3em .2em;color:#b9b9b9;display:none}#content #data-search .account-label .header .field-name{color:white;font-weight:bold}#content #data-search .account-label .no-link,#content #data-search .account-label .no-link a{color:white;font-weight:bold}#content #data-search .account-info{padding:.5em 0 .5em 0;text-align:left;opacity:.3}#content #data-search .account-info:hover{opacity:1}#content #data-search .account-actions{align-self:baseline;padding:.5em 0;text-align:right;border-top:1px solid #c9c9c9}#content #data-search .account-spacer{float:left;clear:left;height:2em;width:20%}#content #data-search .tags-box{display:inline-block}#content #data-search .tags-box span.tag{cursor:pointer;opacity:.3}#content #data-search .tags-box span.tag:hover{opacity:1}@media screen and (max-width:1000px){#content #data-search .account-label{flex-wrap:wrap}#content #data-search .account-label .label-field{width:100%}#content #data-search .account-label .field-name{display:block;text-align:left;border-bottom:1px solid #d9d9d9}#content #data-search .account-label .label-right,#content #data-search .account-label .label-right>div{width:100%}} \ No newline at end of file +@charset "UTF-8";#content #data-search{text-align:center;padding:.5em 0;width:100%;margin:0 auto}#content #data-search .account-info img,#content #data-search .account-actions img{width:24px;height:24px;margin:0 .5em}#content #data-search .account-label{display:flex;justify-content:space-between;width:100%;min-height:8em;height:auto;text-align:left;margin:0 auto .5em;color:#696969;background-color:#fcfcfc;padding:0 .5em}#content #data-search .account-label .label-row-up,#content #data-search .account-label .label-row-down{display:flex;min-height:3em;height:auto;width:100%;padding:.5em 0}#content #data-search .account-label .label-row-down{height:3em}#content #data-search .account-label .label-left{display:flex;flex-wrap:wrap;align-items:center;width:100%;height:4em}#content #data-search .account-label .label-right{display:flex;flex-wrap:wrap;width:18em;height:4em}#content #data-search .account-label .label-right>div{width:18em}#content #data-search .account-label .label-field{width:100%;min-height:3em;height:auto;padding:0 .3em}#content #data-search .account-label .field-text{word-wrap:break-word}#content #data-search .account-label .field-text a{color:#5c6bc0}#content #data-search .account-label .field-customer{flex-grow:2}#content #data-search .account-label .field-name{padding:.3em .2em;color:#b9b9b9;display:none}#content #data-search .account-label .header .field-name{color:white;font-weight:bold}#content #data-search .account-label .no-link,#content #data-search .account-label .no-link a{color:white;font-weight:bold}#content #data-search .account-info{padding:.5em 0 .5em 0;text-align:left;opacity:.3}#content #data-search .account-info:hover{opacity:1}#content #data-search .account-actions{align-self:baseline;padding:.5em 0;text-align:right;border-top:1px solid #c9c9c9}#content #data-search .account-spacer{float:left;clear:left;height:2em;width:20%}#content #data-search .tags-box{display:inline-block}#content #data-search .tags-box span.tag{cursor:pointer;opacity:.3}#content #data-search .tags-box span.tag:hover{opacity:1}@media screen and (max-width:1000px){#content #data-search .account-label{flex-wrap:wrap}#content #data-search .account-label .label-field{width:100%}#content #data-search .account-label .field-name{display:block;text-align:left;border-bottom:1px solid #d9d9d9}#content #data-search .account-label .label-right,#content #data-search .account-label .label-right>div{width:100%}} \ No newline at end of file diff --git a/inc/themes/material-blue/css/search-grid.scss b/inc/themes/material-blue/css/search-grid.scss index 2413f50f..e2e2e479 100644 --- a/inc/themes/material-blue/css/search-grid.scss +++ b/inc/themes/material-blue/css/search-grid.scss @@ -30,7 +30,7 @@ .label-row-up, .label-row-down { display: flex; - flex-wrap: wrap; + //flex-wrap: wrap; min-height: 3em; height: auto; width: 100%; @@ -45,21 +45,25 @@ display: flex; flex-wrap: wrap; align-items: center; + width: 100%; + height: 4em; } .label-right { display: flex; flex-wrap: wrap; width: 18em; + height: 4em; & > div { width: 18em; } } .label-field { - width: 18em; + width: 100%; min-height: 3em; height: auto; + padding: 0 .3em; } .field-text { @@ -70,7 +74,8 @@ } .field-customer { - width: 20em; + flex-grow: 2; + //width: 20em; } .field-name { diff --git a/js/app-actions.js b/js/app-actions.js index ee8eebf3..19415c41 100644 --- a/js/app-actions.js +++ b/js/app-actions.js @@ -1145,7 +1145,12 @@ sysPass.Actions = function (Common) { Common.msg.out(json); if (json.status === 0) { - doAction({actionId: $obj.data("nextaction-id"), itemId: $obj.data("activetab")}); + // Recargar para cargar/descargar el plugin + setTimeout(function () { + Common.redirect("index.php"); + }, 2000); + + //doAction({actionId: $obj.data("nextaction-id"), itemId: $obj.data("activetab")}); } }); }, diff --git a/js/app-actions.min.js b/js/app-actions.min.js index faa863d9..84842036 100644 --- a/js/app-actions.min.js +++ b/js/app-actions.min.js @@ -4,8 +4,8 @@ $jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,h){ret sysPass.Actions=function(c){var d=c.log,h=0,e={doAction:"/ajax/ajax_getContent.php",updateItems:"/ajax/ajax_getItems.php",user:{savePreferences:"/ajax/ajax_userPrefsSave.php",password:"/ajax/ajax_usrpass.php",passreset:"/ajax/ajax_passReset.php"},main:{login:"/ajax/ajax_doLogin.php",install:"/ajax/ajax_install.php",twofa:"/ajax/ajax_2fa.php",getUpdates:"/ajax/ajax_checkUpds.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:"/ajax/ajax_itemSave.php",plugin:"/ajax/ajax_itemSave.php",account:{save:"/ajax/ajax_itemSave.php",showPass:"/ajax/ajax_accViewPass.php",saveFavorite:"/ajax/ajax_itemSave.php",request:"/ajax/ajax_itemSave.php",getFiles:"/ajax/ajax_accGetFiles.php",search:"/ajax/ajax_accSearch.php"},appMgmt:{show:"/ajax/ajax_itemShow.php",save:"/ajax/ajax_itemSave.php",search:"/ajax/ajax_itemSearch.php"},eventlog:"/ajax/ajax_eventlog.php",wiki:{show:"/ajax/ajax_wiki.php"}, notice:{show:"/ajax/ajax_noticeShow.php",search:"/ajax/ajax_noticeSearch.php"}},g=function(a){a={actionId:a.actionId,itemId:"undefined"!==a.itemId?a.itemId:0,isAjax:1};var b=c.appRequests().getRequestOpts();b.url=e.doAction;b.type="html";b.addHistory=!0;b.data=a;c.appRequests().getActionCall(b,function(a){$("#content").empty().html(a)})},n=function(a){d.info("updateItems");var b=$("#"+a.data("item-dst"))[0].selectize;b.clearOptions();b.load(function(b){var f=c.appRequests().getRequestOpts();f.url= -e.updateItems;f.method="get";f.data={sk:c.sk.get(),itemType:a.data("item-type")};c.appRequests().getActionCall(f,function(a){b(a.items)})})},l=function(a,b){$.magnificPopup.open({items:{src:b,type:"inline"},callbacks:{open:function(){c.appTriggers().views.common("#box-popup");$("#box-popup").find(":input:text:visible:first").focus()},close:function(){a.data("item-dst")&&n(a)}},showCloseBtn:!1})},r=function(a,b){var f=$('
'+c.config().LANG[48]+"
";showDialog({text:a,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}}, positive:{title:c.config().LANG[43],onClick:function(a){a.preventDefault();b.data.notify=1;c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}}})},refresh:function(a){d.info("link:refresh");var b={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")},f=c.appRequests().getRequestOpts();f.url=e.link;f.data=b;c.appRequests().getActionCall(f,function(b){c.msg.out(b);0===b.status&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}}, eventlog:{nav:function(a){if(void 0===a.data("start"))return!1;var b=c.appRequests().getRequestOpts();b.url=e.eventlog;b.type="html";b.data={start:a.data("start"),current:a.data("current")};c.appRequests().getActionCall(b,function(a){$("#content").html(a);c.scrollUp()})},clear:function(a){var b=''+c.config().LANG[20]+"
'+c.config().LANG[58]+"
'+c.config().LANG[58]+"