Browse Source

Fixes

pull/3/head
M@dD3n 5 years ago
parent
commit
e2e034f316
  1. 4
      README.md
  2. 4
      admin/index.php
  3. 230
      class/class.debug.php
  4. 42
      class/class.docs.php
  5. 10
      inc/config.php
  6. 160
      lib/debug/debug.css
  7. 51
      lib/debug/debug.js

4
README.md

@ -26,8 +26,8 @@
1. Распакуйте содержимое архива в новую папку на вашем локальном компьютере. 1. Распакуйте содержимое архива в новую папку на вашем локальном компьютере.
2. Загрузить эту папку целиком через FTP-клиент на ваш хост. 2. Загрузить эту папку целиком через FTP-клиент на ваш хост.
3. Вам также может потребоваться установить права доступа (CHMOD 777) рекурсивно, на папки /tmp/cache/, /tmp/session/ и /uploads/, если ваш хостинг не установливает это по умолчанию. 3. Вам также может потребоваться установить права доступа (CHMOD 777) рекурсивно, на папки /tmp/cache/, /tmp/session/ и /uploads/, если ваш хостинг не устанавливает это по умолчанию.
4. Также вам может потребоваться установить права доступа (CHMOD 777) рекурсивно, на файлы inc/db.config.php и inc/config.inc.php, если ваш хостинг не установливает это по умолчанию. 4. Также вам может потребоваться установить права доступа (CHMOD 777) рекурсивно, на файлы inc/db.config.php и inc/config.inc.php, если ваш хостинг не устанавливает это по умолчанию.
5. Наберите http://адрес вашего сайта/ в браузере. 5. Наберите http://адрес вашего сайта/ в браузере.
6. Следуйте инструкциям. 6. Следуйте инструкциям.
7. После установки системы настоятельно рекомендуем устанавливать права доступа на папку uploads не выше CHMOD 755. 7. После установки системы настоятельно рекомендуем устанавливать права доступа на папку uploads не выше CHMOD 755.

4
admin/index.php

@ -132,6 +132,6 @@
$AVE_Template->display($tpl); $AVE_Template->display($tpl);
// Статистика // Статистика
//if (defined('PROFILING') && PROFILING) if (defined('PROFILING_ADMIN') && PROFILING_ADMIN)
// echo get_statistic(1, 1, 1, 1); echo Debug::displayInfo();
?> ?>

230
class/class.debug.php

@ -20,9 +20,11 @@
class Debug { class Debug {
protected static $time = array(); protected static $time = [];
protected static $memory = array(); protected static $memory = [];
protected static $_debug = [];
public function __construct() public function __construct()
@ -607,6 +609,119 @@
} }
/**
* Функция для вывода переменной (для отладки)
*
* @param mixed $var любая переменная
* @param bool $exit
* @param null $bg
* @param bool $echo
*
* @return false|null|string|string[]
*/
public static function _($var, $_bg = null, $from = '')
{
$code = '';
$backtrace = debug_backtrace();
$backtrace = $backtrace[0];
if (preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file']))
{
preg_match('/([^\(]*)\((.*)\)/i', $backtrace['file'], $match);
$file = $match[1];
}
$fh = fopen((isset($file)
? $file
: $backtrace['file']), 'r');
$line = 0;
while (++$line <= $backtrace['line'])
$code = fgets($fh);
fclose($fh);
preg_match('/' . __FUNCTION__ . '\s*\((.*)\)\s*;/u', $code, $name);
unset ($code, $backtrace);
ob_start();
var_dump($var);
$var_dump = ob_get_contents();
$var_dump = preg_replace('/=>(\s+|\s$)/', ' => ', $var_dump);
$var_dump = htmlspecialchars($var_dump);
$var_dump = preg_replace('/(=&gt;)/', '<span style="color: #ff8c00;">$1</span>', $var_dump);
ob_end_clean();
if (! empty($name))
{
$fn_name = explode(',', $name[1]);
$fn_name = array_shift($fn_name);
}
else
$fn_name = 'EVAL';
if ($_bg)
$bg = 'style="background: #' . $_bg . ';"';
else
$bg = '';
$var_dump = '
<style>
.debug_bg {
margin: 20px;
border: 1px solid #d9d9d9;
background-color: #f1efef;
border-radius: 5px;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
font-family: "Consolas", Verdana, Arial;
font-size: 11px;
}
.debug_top {
color: #ffffff;
font-size: 15px;
font-weight: bold;
padding-left: 20px;
padding-top: 10px;
padding-bottom: 10px;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.75);
background-color: #43648c;
background-repeat: repeat-x;
border-bottom: 1px solid #ffffff;
}
.debug_box {
margin: 10px;
padding: 4px;
background-color: #efeded;
border: 1px solid #dedcdc;
}
</style>
<div class="debug_bg">
<div class="debug_top" ' . $bg . '>
var_dump(<strong>' . trim($fn_name) . '</strong>) ' . $from . '
</div>
'.self::_trace().'
<div class="debug_box">
<pre style="background:#f5f5f5; color: #000; margin: 0; padding: 5px; border: 0; font-size: 11px; font-family: Consolas, Verdana, Arial;">'
. $var_dump .
'</pre>
</div>
</div>
';
self::$_debug[] = $var_dump;
}
/** /**
* Функция для трейсинга дебаггера * Функция для трейсинга дебаггера
* *
@ -793,6 +908,18 @@
$stat = self::_stat_get('request'); $stat = self::_stat_get('request');
break; break;
case 'files':
$stat = self::_stat_get('files');
break;
case 'cookie':
$stat = self::_stat_get('cookie');
break;
case 'env':
$stat = self::_stat_get('env');
break;
case 'session': case 'session':
$stat = self::_stat_get('session'); $stat = self::_stat_get('session');
break; break;
@ -824,10 +951,16 @@
var_dump($_POST); var_dump($_POST);
else if ($type == 'request') else if ($type == 'request')
var_dump($_REQUEST); var_dump($_REQUEST);
else if ($type == 'files')
var_dump($_FILES);
else if ($type == 'cookie')
var_dump($_COOKIE);
else if ($type == 'session') else if ($type == 'session')
var_dump($_SESSION); var_dump($_SESSION);
else if ($type == 'server') else if ($type == 'server')
var_dump($_SERVER); var_dump($_SERVER);
else if ($type == 'env')
var_dump($_ENV);
else if ($type == 'globals') else if ($type == 'globals')
var_dump($GLOBALS); var_dump($GLOBALS);
$stat = ob_get_contents(); $stat = ob_get_contents();
@ -855,23 +988,28 @@
$out .= PHP_EOL; $out .= PHP_EOL;
$out .= '<script src="/lib/debug/debug.js"></script>'; $out .= '<script src="/lib/debug/debug.js"></script>';
$out .= PHP_EOL; $out .= PHP_EOL;
$out .= '<div id="debug_btn"></div>';
$out .= PHP_EOL;
$out .= ' $out .= '
<div id="debug-panel"> <div id="debug_bar">
<div class="debug-wrapper"> <ul class="debug_tabs">
<div id="debug-panel-legend" class="legend"> <li id="debug-1">Timers</li>
<span>Debug console</span> <li id="debug-2">$_GET</li>
<a id="debugArrowMinimize" class="debugArrow" href="javascript:void(0)" title="Minimize" onclick="javascript:appTabsHide()">&times;</a> <li id="debug-3">$_POST</li>
<span> <li id="debug-4">$_REQUEST</li>
<a id="tabGeneral" href="javascript:void(\'General\')" onclick="javascript:appExpandTabs(\'auto\', \'General\')">General</a> <li id="debug-5">$_FILES</li>
<a id="tabParams" href="javascript:void(\'Params\')" onclick="javascript:appExpandTabs(\'auto\', \'Params\')">Params</a> <li id="debug-6">$_COOKIE</li>
<a id="tabGlobals" href="javascript:void(\'Globals\')" onclick="javascript:appExpandTabs(\'auto\', \'Globals\')">Globals</a> <li id="debug-7">$_SESSION</li>
<a id="tabQueries" href="javascript:void(\'Queries\')" onclick="javascript:appExpandTabs(\'auto\', \'Queries\')">SQL Queries (' . self::getStatistic('sqlcount') . ')</a> <li id="debug-8">$_SERVER</li>
<a id="tabSqlTrace" href="javascript:void(\'SqlTrace\')" onclick="javascript:appExpandTabs(\'auto\', \'SqlTrace\')">SQL Trace (' . self::getStatistic('sqltrace') . ')</a> <li id="debug-9">$_ENV</li>
</span> <li id="debug-10">$GLOBALS</li>
</div> <li id="debug-11">MySQL</li>
<li id="debug-12">Trace</li>
<li id="debug-13">Debug</li>
</ul>
'; ';
$out .= PHP_EOL; $out .= PHP_EOL;
$out .= '<div id="contentGeneral" class="items" style="display: none">' . PHP_EOL; $out .= '<div class="debug_tab" id="debug-1-cont" style="display: block;">' . PHP_EOL;
$out .= 'Time generation: ' . self::getStatistic('time') . ' sec'; $out .= 'Time generation: ' . self::getStatistic('time') . ' sec';
$out .= '<br>'; $out .= '<br>';
$out .= 'Memory usage: ' . self::getStatistic('memory'); $out .= 'Memory usage: ' . self::getStatistic('memory');
@ -882,38 +1020,82 @@
$out .= '</div>'; $out .= '</div>';
$out .= PHP_EOL; $out .= PHP_EOL;
$out .= '<div id="contentParams" class="items" style="display: none">' . PHP_EOL;
$out .= '<div class="debug_tab" id="debug-2-cont" style="display: none;">' . PHP_EOL;
$out .= 'GET:'; $out .= 'GET:';
$out .= self::getStatistic('get'); $out .= self::getStatistic('get');
$out .= '<br>'; $out .= '</div>';
$out .= PHP_EOL;
$out .= '<div class="debug_tab" id="debug-3-cont" style="display: none;">' . PHP_EOL;
$out .= 'POST:'; $out .= 'POST:';
$out .= self::getStatistic('post'); $out .= self::getStatistic('post');
$out .= '<br>'; $out .= '</div>';
$out .= PHP_EOL;
$out .= '<div class="debug_tab" id="debug-4-cont" style="display: none;">' . PHP_EOL;
$out .= 'REQUEST:'; $out .= 'REQUEST:';
$out .= self::getStatistic('request'); $out .= self::getStatistic('request');
$out .= '<br>'; $out .= '</div>';
$out .= PHP_EOL;
$out .= '<div class="debug_tab" id="debug-5-cont" style="display: none;">' . PHP_EOL;
$out .= 'FILES:';
$out .= self::getStatistic('files');
$out .= '</div>';
$out .= PHP_EOL;
$out .= '<div class="debug_tab" id="debug-6-cont" style="display: none;">' . PHP_EOL;
$out .= 'COOKIE:';
$out .= self::getStatistic('cookie');
$out .= '</div>';
$out .= PHP_EOL;
$out .= '<div class="debug_tab" id="debug-7-cont" style="display: none;">' . PHP_EOL;
$out .= 'SESSION:'; $out .= 'SESSION:';
$out .= self::getStatistic('session'); $out .= self::getStatistic('session');
$out .= '<br>'; $out .= '</div>';
$out .= PHP_EOL;
$out .= '<div class="debug_tab" id="debug-8-cont" style="display: none;">' . PHP_EOL;
$out .= 'SERVER:'; $out .= 'SERVER:';
$out .= self::getStatistic('server'); $out .= self::getStatistic('server');
$out .= '</div>'; $out .= '</div>';
$out .= PHP_EOL; $out .= PHP_EOL;
$out .= '<div id="contentGlobals" class="items" style="display: none">' . PHP_EOL;
$out .= '<div class="debug_tab" id="debug-9-cont" style="display: none;">' . PHP_EOL;
$out .= 'ENV:';
$out .= self::getStatistic('env');
$out .= '</div>';
$out .= PHP_EOL;
$out .= '<div class="debug_tab" id="debug-10-cont" style="display: none;">' . PHP_EOL;
$out .= self::getStatistic('globals'); $out .= self::getStatistic('globals');
$out .= '</div>'; $out .= '</div>';
$out .= PHP_EOL; $out .= PHP_EOL;
$out .= '<div id="contentQueries" class="items" style="display: none">' . PHP_EOL; $out .= '<div class="debug_tab" id="debug-11-cont" style="display: none;">' . PHP_EOL;
$out .= $AVE_DB->DBProfilesGet('list'); $out .= $AVE_DB->DBProfilesGet('list');
$out .= '</div>'; $out .= '</div>';
$out .= PHP_EOL; $out .= PHP_EOL;
$out .= '<div id="contentSqlTrace" class="items" style="display: none">' . PHP_EOL; $out .= '<div class="debug_tab" id="debug-12-cont" style="display: none;">' . PHP_EOL;
$out .= $AVE_DB->showAllQueries(); $out .= $AVE_DB->showAllQueries();
$out .= '</div>'; $out .= '</div>';
$out .= PHP_EOL;
$out .= '<div class="debug_tab" id="debug-13-cont" style="display: none;">' . PHP_EOL;
$out .= implode('', self::$_debug);
$out .= '</div>';
$out .= PHP_EOL; $out .= PHP_EOL;
$out .= '</div>'; $out .= '</div>';

42
class/class.docs.php

@ -1234,7 +1234,6 @@
* *
* @return int|bool Возвращает номер документа если все удачно или false если все плохо * @return int|bool Возвращает номер документа если все удачно или false если все плохо
*/ */
function documentSave ($rubric_id, $document_id, $data, $update_non_exists_fields = false, $rubric_code = true, $revisions = true, $logs = true, $generate = true) function documentSave ($rubric_id, $document_id, $data, $update_non_exists_fields = false, $rubric_code = true, $revisions = true, $logs = true, $generate = true)
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
@ -1262,8 +1261,19 @@
// Забираем параметры рубрики // Забираем параметры рубрики
$_rubric = $this->_get_rubric($rubric_id); $_rubric = $this->_get_rubric($rubric_id);
// Запускаем триггер перед сохранением $_data = [
Hooks::trigger('DocumentBeforeSave', array('rubric_id' => $rubric_id, 'document_id' => $document_id, 'data' => $data, 'requests' => $_REQUEST)); 'rubric_id' => $rubric_id,
'document_id' => $document_id,
'data' => $data,
'requests' => $_REQUEST
];
Hooks::register('DocumentBeforeSave', 'DocumentBeforeSave', 100);
// Запускаем триггер перед сохранением, возвращаем $data для дальнейшего сохранения
$data = Hooks::trigger('DocumentBeforeSave', $_data);
unset ($_data);
// Выполняем стартовый код рубрики // Выполняем стартовый код рубрики
if ($rubric_code) if ($rubric_code)
@ -1816,8 +1826,19 @@
? $data['field_module'] ? $data['field_module']
: ''; : '';
Hooks::register('DocumentAfterSave', 'DocumentAfterSave', 100);
$_data = [
'rubric_id' => $rubric_id,
'document_id' => $document_id,
'data' => $data,
'field_module' => $field_module
];
// Запускаем триггер после сохранения // Запускаем триггер после сохранения
Hooks::trigger('DocumentAfterSave', array('rubric_id' => $rubric_id, 'document_id' => $document_id, 'data' => $data, 'field_module' => $field_module)); Hooks::trigger('DocumentAfterSave', $_data);
unset ($_data);
// Выполняем код рубрики, после сохранения // Выполняем код рубрики, после сохранения
if ($rubric_code) if ($rubric_code)
@ -1845,6 +1866,7 @@
return $document_id; return $document_id;
} }
/** /**
* Метод, предназначенный для добавления нового документа в БД * Метод, предназначенный для добавления нового документа в БД
* *
@ -4419,5 +4441,17 @@
exit; exit;
} }
function DocumentBeforeSave ($data)
{
return $data['data'];
}
function DocumentAfterSave ($data)
{
return $data;
}
} }
?> ?>

10
inc/config.php

@ -12,7 +12,7 @@
*/ */
@define('APP_NAME', 'AVE.cms'); @define('APP_NAME', 'AVE.cms');
@define('APP_VERSION', '3.26'); @define('APP_VERSION', '3.25');
@define('APP_INFO', '<a target="_blank" href="https://www.ave-cms.ru/">Ave-Cms.Ru</a> '.'&copy; 2007-' . date('Y')); @define('APP_INFO', '<a target="_blank" href="https://www.ave-cms.ru/">Ave-Cms.Ru</a> '.'&copy; 2007-' . date('Y'));
$themes = array(); $themes = array();
@ -280,6 +280,14 @@
'VARIANT' => array('off', 'light', 'full') 'VARIANT' => array('off', 'light', 'full')
); );
//-- Вывод общей статистики
$GLOBALS['CMS_CONFIG']['_CONST_DEV']['PROFILING_ADMIN'] = array(
'DESCR' => 'Вывод общей статистики в дминистративной части',
'DEFAULT' => false,
'TYPE' => 'bool',
'VARIANT' => ''
);
//-- Собирать статистику выполненных запросов //-- Собирать статистику выполненных запросов
$GLOBALS['CMS_CONFIG']['_CONST_DEV']['SQL_PROFILING'] = array( $GLOBALS['CMS_CONFIG']['_CONST_DEV']['SQL_PROFILING'] = array(
'DESCR' => 'Собирать статистику выполненных SQL запросов', 'DESCR' => 'Собирать статистику выполненных SQL запросов',

160
lib/debug/debug.css

@ -1,51 +1,123 @@
/* == Debug Panel == */ #debug_btn {
#debug-panel { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKYSURBVDjLnZPJT1NRFMb5G1wDHV5boNiqdHrvFYolCAtsGSSWKpMFKhYqlDI6oAEKaVJwCIgSphaKtLYWCgSNBgRjMNHoxsSFS3cmJmA0NMTw+R6JKKZl4eJL7sm953fOd3JPHIC4WMpcppG5SGnZc8ZjVVF6QLn975sDgfaZmvg71oRJZIRUYcuAnq/2KWroGfm3QwEn2YpLVPPvOD2oiqj9yq/mGznegl56mx6T7ZbY1M6YAM0CuZkxT0b2Wg6QW/SsApRXDsotR+d6E9Y/h9DuqoCuJq0lKoDxqU1/pITGR27mBU4h+GEcTz5OY+ClA5JbyahYzof/9TBO9B/FcWcqpA4xU3We3GJ87ntnfO5meinMvruNnqcmXA2XoDVcCc0wCYkzBaZpA7ILRJ/2O2B87jA+QT9UeDRe8svZYAG8b/txc6kc9mA+yqayYPQXwvdmBEOrA5B2p0BtFIYOWKCm5RukWwZyXIbA+0F0LpaiKaBHmVsLw4we99ccsM8a8GClF5JOMcQdou8prULrgRmQo7KI0VcE13MrGv06lE5kodhzGvdWu2GdKkTVWC4DcELcJkKyXbCb1EhAVM//M0DVUNqP2qAJd1baUDaZjTMTeXAttsPi0cM0mgvHvA0NkxYk2QRIrieOsDmEmXttH0DfVfSluSToWmpD8bgOroUOWNw6VI7koGfOBuq6EqLLTNU6ojrmP5D1HVsjmrkYezGIrlA9LjKgnrlGXJlpgbCOD0EtD0QNN8I3cZqjAlhJr4rXpB1iNLhrYffUQWoT7yUKzbxqJlHLq0jc5JYmgHMunogKYJVqF7mTrPyfgktMRTMX/CrOq1gLF3fYNrLiX+Bs8MoTwT2fQPwXgBXHGL+TaIjfinb3C7cscRMIcYL6AAAAAElFTkSuQmCC);
font-size: 12px !important; cursor: pointer;
opacity: 0.9;
position: fixed; position: fixed;
bottom: 0; top: 4px;
right: 4px;
width: 16px;
height: 16px;
z-index: 99999999;
}
#debug_bar {
background: #ffffff;
color: #000000;
display: none;
font-family: "Consolas", Verdana, Arial;
font-size: 11pt;
font-weight: normal;
line-height: normal;
position: fixed;
top: 0;
left: 0; left: 0;
z-index: 2000;
width: 100%; width: 100%;
font-family: Consolas, Monaco, Menlo, "Courier New", monospace !important; height: 100%;
} z-index: 90000000;
#debug-panel .debug-wrapper { }
padding: 0px .875em;
background-color: #fff; #debug_bar .debug_tabs {
border: 1px solid rgba(0,0,0,0.2); display: block;
border-bottom: 0; list-style: none;
margin: 0px auto 0px auto; margin: 0;
} padding: 0;
#debug-panel .items { border-bottom: 1px solid #999999;
padding: 10px; overflow: hidden;
height: 350px; }
padding-top: 1em;
font-size: 12px !important; #debug_bar .debug_tabs > li {
color: #888; cursor: pointer;
font-family: Consolas, Monaco, Menlo, "Courier New", monospace !important; font-family: Tahoma;
} font-size: 10px;
#debug-panel .debug-wrapper .legend { font-weight: bold;
background-color: #f9f9f9; color: #000000;
padding: .25em; display: block;
border: 1px solid rgba(0,0,0,0.2); float: left;
width: auto; line-height: 18px;
margin-top: -1.25em; padding: 3px 5px;
} border-right: 1px solid #999999;
#debug-panel .debug-wrapper .legend span { }
color: #999;
font-weight: 300 !important #debug_bar .debug_tabs > li:hover {
} background: #ff8000;
#debug-panel a { }
text-decoration: none;
color: rgba(0,0,0,0.5); #debug_bar .debug_tabs > li.selected {
background: #999999;
border-bottom: 3px solid #999999;
margin-bottom: -3px;
color: #ffffff;
}
#debug_bar .debug_tab {
font-family: "Consolas", Verdana, Arial;
font-size: 12px; font-size: 12px;
margin: 0 .25em; clear: both;
display: none;
padding: 15px;
overflow: scroll;
position: absolute;
left: 0;
right: 0;
top: 25px;
bottom: 0;
}
#debug_bar pre,
#debug_bar code {
display: block;
margin: 0;
color: #000;
background: #FFF;
font-size: 12px;
border: 0;
padding: 5px 10px;
overflow-y: auto;
max-height: calc(100vh - 30px);
max-width: 100%;
overflow-x: hidden;
}
#debug_bar pre.pre_wrap,
#debug_bar code.pre_wrap {
white-space: pre-wrap; /* Since CSS 2.1 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
word-break: break-all;
}
#debug_bar .debug_one_query {
padding: 2px 0px;
}
#debug_bar .debug_one_query span {
display: inline-block;
vertical-align: middle;
width: calc(100% - 64px);
}
#debug_bar .debug_one_query span:first-child {
width: 64px;
} }
#debug-panel pre {
border: 0px; #debug_bar .debug_one_dump {
font-family: Consolas, Monaco, Menlo, "Courier New", monospace !important; padding:0 0 40px 0;
font-size: 12px !important;
} }
#debugArrowMinimize {
float: right; #debug_bar .debug_one_dump .debug_varname {
display:block;
font-weight:bold;
font-size: 16px;
text-transform: uppercase;
} }

51
lib/debug/debug.js

@ -1,30 +1,35 @@
function appExpandTabs(act, key) { $(document).ready(function() {
var arrDebugTabs = ["General", "Params", "Globals", "Queries", "SqlTrace"];
keyTab = (key == null) $('#debug_btn').on('click', function() {
? "General"
: key;
for (var i = 0; i < arrDebugTabs.length; i++) { $bar = $('#debug_bar');
if (act == "min" || arrDebugTabs[i] != keyTab) {
$("#content" + arrDebugTabs[i]).css("display", "none"); if ($bar.css('display') == 'none') {
$("#tab" + arrDebugTabs[i]).css("color", "#bbb") $(document.body).css('overflow', 'hidden');
} $bar.show();
} else {
$(document.body).css('overflow', '');
$bar.hide();
} }
if (act != "min") {
$("#content" + keyTab).css("display", "");
$("#content" + keyTab).css({
"overflow-y": "auto"
}); });
$("#tab" + keyTab).css("color", "#222")
}
$("#debug-panel").css("opacity", (act == "min") ? "0.9" : "1"); $('.debug_tabs > li').on('click', function() {
}; $('.debug_tabs > li').removeClass('selected');
$('.debug_tab').hide();
$(this).addClass('selected');
$('#'+this.id+'-cont').show();
if($.cookie){
$.cookie('__debug_bar', this.id, {expires: 7, path: '/'});
}
});
if($.cookie){
var id = $.cookie('__debug_bar');
var tab = $('.debug_tabs > li#'+id);
if(tab.length > 0){
tab.click();
}
}
function appTabsHide() }); //document.ready
{
$('#debug-panel-legend span a').css("color", "#bbb");
$("#debug-panel .items").hide();
}
Loading…
Cancel
Save