адм. раздел
отображение счётчика до наступления события
отображение счётчика после наступления события
Скачать архив, распаковать, заменить файлы трекера файлами из архива, JS код мода основан на скрипте jQuery - countdown (http://www.texotela.co.uk/code/jquery/countdown/).
Для работы мода так же необходимо подключение библиотеки jQuery.
В phpmyadmin выполнить:
Код: Выделить всё
INSERT INTO `phpbb_config` (`config_name`, `config_value`, `is_dynamic`) VALUES ('ppkbb_countdown_precision', 's', '0');
INSERT INTO `phpbb_config` (`config_name`, `config_value`, `is_dynamic`) VALUES ('ppkbb_countdown_prefix', '', '0');
INSERT INTO `phpbb_config` (`config_name`, `config_value`, `is_dynamic`) VALUES ('ppkbb_countdown_suffix', '', '0');
INSERT INTO `phpbb_config` (`config_name`, `config_value`, `is_dynamic`) VALUES ('ppkbb_countdown_passed', '', '0');
INSERT INTO `phpbb_config` (`config_name`, `config_value`, `is_dynamic`) VALUES ('ppkbb_countdown_start', '', '0');
INSERT INTO `phpbb_config` (`config_name`, `config_value`, `is_dynamic`) VALUES ('ppkbb_countdown_end', '', '0');
Код: Выделить всё
));
?>
Код: Выделить всё
//PPK CD
'ACP_PPKBB_COUNTDOWN' => 'Обратный отсчёт',
'ACP_PPKBB_COUNTDOWN_EXPLAIN' => '',
'PPKBB_COUNTDOWN_PRECISION' => 'Точность измерения',
'PPKBB_COUNTDOWN_PRECISION_EXPLAIN' => 'Точность обратного отсчёта, s - до секунд, m - до минут, h - до часов, d - до дней',
'PPKBB_COUNTDOWN_END' => 'Дата окончания показа сообщения о наступившем событии',
'PPKBB_COUNTDOWN_END_EXPLAIN' => '(в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС, 0 или пустая строка - отображать всегда)',
'PPKBB_COUNTDOWN_START' => 'Дата события',
'PPKBB_COUNTDOWN_START_EXPLAIN' => '(в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС)',
'PPKBB_COUNTDOWN_PREFIX' => 'Префикс сообщения в счётчике обратного отсчёта',
'PPKBB_COUNTDOWN_PREFIX_EXPLAIN' => '(до 255 символов, можно использовать html код)',
'PPKBB_COUNTDOWN_SUFFIX' => 'Суффикс сообщения в счётчике обратного отсчёта',
'PPKBB_COUNTDOWN_SUFFIX_EXPLAIN' => '(до 255 символов, можно использовать html код)',
'PPKBB_COUNTDOWN_PASSED' => 'Сообщение отображаемое при наступлении события',
'PPKBB_COUNTDOWN_PASSED_EXPLAIN' => '(до 255 символов, можно использовать html код)',
//PPK CD
Код: Выделить всё
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
Код: Выделить всё
//PPK CD
$dt=time();
$ppkbb_countdown_passed=$ppkbb_countdown_prefix=$ppkbb_countdown_suffix=$ppkbb_countdown_start=$ppkbb_countdown_end='';
$ppkbb_countdown_precision=in_array($config['ppkbb_countdown_precision'], array('s', 'm', 'h', 'd')) ? $config['ppkbb_countdown_precision'] : 's';
if($config['ppkbb_countdown_start'])
{
$ppkbb_countdown_start_dt=my_split_config($config['ppkbb_countdown_start'], 2, 'strval', ' ');
$ppkbb_countdown_start_date=my_split_config($ppkbb_countdown_start_dt[0], 3, 'my_int_val', '-');
$ppkbb_countdown_start_time=my_split_config($ppkbb_countdown_start_dt[1], 3, 'my_int_val', ':');
if(checkdate($ppkbb_countdown_start_date[1], $ppkbb_countdown_start_date[2], $ppkbb_countdown_start_date[0]) && my_checktime($ppkbb_countdown_start_time[0], $ppkbb_countdown_start_time[1], $ppkbb_countdown_start_time[2]))
{
if(mktime(intval($ppkbb_countdown_start_time[0]), intval($ppkbb_countdown_start_time[1]), intval($ppkbb_countdown_start_time[2]), intval($ppkbb_countdown_start_date[1]), intval($ppkbb_countdown_start_date[2]), intval($ppkbb_countdown_start_date[0])) < $dt)
{
$ppkbb_countdown_passed=htmlspecialchars_decode($config['ppkbb_countdown_passed']);
}
else
{
$ppkbb_countdown_prefix=htmlspecialchars_decode($config['ppkbb_countdown_prefix']);
$ppkbb_countdown_suffix=htmlspecialchars_decode($config['ppkbb_countdown_suffix']);
$ppkbb_countdown_start="{$ppkbb_countdown_start_date[0]}, ".($ppkbb_countdown_start_date[1]-1).", {$ppkbb_countdown_start_date[2]}, {$ppkbb_countdown_start_time[0]}, {$ppkbb_countdown_start_time[1]}, {$ppkbb_countdown_start_time[2]}";
}
if($config['ppkbb_countdown_end'])
{
$ppkbb_countdown_end_dt=my_split_config($config['ppkbb_countdown_end'], 2, 'strval', ' ');
$ppkbb_countdown_end_date=my_split_config($ppkbb_countdown_end_dt[0], 3, 'my_int_val', '-');
$ppkbb_countdown_end_time=my_split_config($ppkbb_countdown_end_dt[1], 3, 'my_int_val', ':');
if(checkdate($ppkbb_countdown_end_date[1], $ppkbb_countdown_end_date[2], $ppkbb_countdown_end_date[0]) && my_checktime($ppkbb_countdown_end_time[0], $ppkbb_countdown_end_time[1], $ppkbb_countdown_end_time[2]))
{
if(mktime(intval($ppkbb_countdown_end_time[0]), intval($ppkbb_countdown_end_time[1]), intval($ppkbb_countdown_end_time[2]), intval($ppkbb_countdown_end_date[1]), intval($ppkbb_countdown_end_date[2]), intval($ppkbb_countdown_end_date[0])) < $dt)
{
$ppkbb_countdown_passed=$ppkbb_countdown_start='';
}
else
{
$ppkbb_countdown_passed=htmlspecialchars_decode($config['ppkbb_countdown_passed']);
$ppkbb_countdown_start="{$ppkbb_countdown_start_date[0]}, ".($ppkbb_countdown_start_date[1]-1).", {$ppkbb_countdown_start_date[2]}, {$ppkbb_countdown_start_time[0]}, {$ppkbb_countdown_start_time[1]}, {$ppkbb_countdown_start_time[2]}";
}
}
}
else
{
$ppkbb_countdown_passed=htmlspecialchars_decode($config['ppkbb_countdown_passed']);
$ppkbb_countdown_start="{$ppkbb_countdown_start_date[0]}, ".($ppkbb_countdown_start_date[1]-1).", {$ppkbb_countdown_start_date[2]}, {$ppkbb_countdown_start_time[0]}, {$ppkbb_countdown_start_time[1]}, {$ppkbb_countdown_start_time[2]}";
}
}
}
//PPK CD
Код: Выделить всё
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
Код: Выделить всё
//PPK CD
'S_COUNTDOWN_PASSED' => str_replace("'", '"', $ppkbb_countdown_passed),
'S_COUNTDOWN_PREFIX' => str_replace("'", '"', $ppkbb_countdown_prefix),
'S_COUNTDOWN_SUFFIX' => str_replace("'", '"', $ppkbb_countdown_suffix),
'S_COUNTDOWN_PRECISION' => $ppkbb_countdown_precision,
'S_COUNTDOWN_START' => $ppkbb_countdown_start,
'S_COUNTDOWN_END' => $ppkbb_countdown_end,
//PPK CD
Код: Выделить всё
function my_split_config($config, $count=0, $type=false, $split='')
Код: Выделить всё
/**
* Set dynamic config value with arithmetic operation.
*/
Код: Выделить всё
function my_split_config($config, $count=0, $type=false, $split='')
{
$count=intval($count);
$s_config=$count > 0 ? @explode($split ? $split : ' ', $config, $count) : @explode($split ? $split : ' ', $config);
$count=$count > 0 ? $count : sizeof($s_config);
if($count)
{
for($i=0;$i<$count;$i++)
{
if($type)
{
if(is_array($type) && @function_exists(@$type[$i]))
{
$s_config[$i]=call_user_func($type[$i], @$s_config[$i]);
}
else if(@function_exists($type))
{
$s_config[$i]=call_user_func($type, @$s_config[$i]);
}
else
{
$s_config[$i]=@$s_config[$i];
}
}
else
{
$s_config[$i]=@$s_config[$i];
}
}
}
return $s_config;
}
Код: Выделить всё
function my_int_val($v=0)
Код: Выделить всё
/**
* Set dynamic config value with arithmetic operation.
*/
Код: Выделить всё
function my_int_val($v=0)
{
if(!$v || $v < 0)
{
return 0;
}
return @number_format($v, 0, '', '');
}
Код: Выделить всё
/**
* Set dynamic config value with arithmetic operation.
*/
Код: Выделить всё
function my_checktime($h, $m, $s)
{
if(!is_numeric($h) || !is_numeric($m) || !is_numeric($s))
{
return false;
}
if($h > -1 && $h < 24 && $m > -1 && $m < 60 && $s > -1 && $s < 60)
{
return true;
}
return false;
}
Код: Выделить всё
'load_cpf_viewtopic' => array('lang' => 'LOAD_CPF_VIEWTOPIC', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
Код: Выделить всё
//PPK CD
'legend4' => 'ACP_PPKBB_COUNTDOWN',
'ppkbb_countdown_start' => array('lang' => 'PPKBB_COUNTDOWN_START', 'validate' => 'string', 'type' => 'text:19:19', 'explain' => true),
'ppkbb_countdown_end' => array('lang' => 'PPKBB_COUNTDOWN_END', 'validate' => 'string', 'type' => 'text:19:19', 'explain' => true),
'ppkbb_countdown_prefix' => array('lang' => 'PPKBB_COUNTDOWN_PREFIX', 'validate' => 'string', 'type' => 'text:48:255', 'explain' => true),
'ppkbb_countdown_suffix' => array('lang' => 'PPKBB_COUNTDOWN_SUFFIX', 'validate' => 'string', 'type' => 'text:48:255', 'explain' => true),
'ppkbb_countdown_passed' => array('lang' => 'PPKBB_COUNTDOWN_PASSED', 'validate' => 'string', 'type' => 'text:48:255', 'explain' => true),
'ppkbb_countdown_precision' => array('lang' => 'PPKBB_COUNTDOWN_PRECISION', 'validate' => 'string', 'type' => 'text:1:1', 'explain' => true),
//PPCD
Код: Выделить всё
</head>
Код: Выделить всё
<!-- PPK CD -->
<!-- IF S_COUNTDOWN_START -->
<script src="{ROOT_PATH}tracker/addons/js/jquery.countdown.js" type="text/javascript"></script>
<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(
function($)
{
var now = new Date();
var endingSoon = new Date({S_COUNTDOWN_START});
$("#ppkbb_countdown").countdown(endingSoon,
{
precision: '{S_COUNTDOWN_PRECISION}',
prefix: '{S_COUNTDOWN_PREFIX}',
suffix: '{S_COUNTDOWN_SUFFIX}',
passed: '{S_COUNTDOWN_PASSED}'
}
);
}
);
// ]]>
</script>
<!-- ENDIF -->
<!-- PPK CD -->
Код: Выделить всё
<!-- IF S_BOARD_DISABLED and S_USER_LOGGED_IN and (U_MCP or U_ACP) -->
<div id="information" class="rules">
<div class="inner"><span class="corners-top"><span></span></span>
<strong>{L_INFORMATION}:</strong> {L_BOARD_DISABLED}
<span class="corners-bottom"><span></span></span></div>
</div>
<!-- ENDIF -->
Код: Выделить всё
<!-- PPK CD -->
<!-- IF S_COUNTDOWN_START -->
<div class="panel">
<div class="inner"><span class="corners-top"><span></span></span>
<div id="ppkbb_countdown" style="text-align:center;"></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<!-- ENDIF -->
<!-- PPK CD -->
Код: Выделить всё
</head>
Код: Выделить всё
<!-- PPK CD -->
<!-- IF S_COUNTDOWN_START -->
<script src="{ROOT_PATH}tracker/addons/js/jquery.countdown.js" type="text/javascript"></script>
<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(
function($)
{
var now = new Date();
var endingSoon = new Date({S_COUNTDOWN_START});
$("#ppkbb_countdown").countdown(endingSoon,
{
precision: '{S_COUNTDOWN_PRECISION}',
prefix: '{S_COUNTDOWN_PREFIX}',
suffix: '{S_COUNTDOWN_SUFFIX}',
passed: '{S_COUNTDOWN_PASSED}'
}
);
}
);
// ]]>
</script>
<!-- ENDIF -->
<!-- PPK CD -->
Код: Выделить всё
<br style="clear: both;" />
<!-- INCLUDE breadcrumbs.html -->
Код: Выделить всё
<!-- PPK CD -->
<!-- IF S_COUNTDOWN_START -->
<table class="tablebg" width="100%" cellspacing="1" cellpadding="0" style="margin-top: 5px;">
<tr>
<td class="row1">
<div id="ppkbb_countdown" style="text-align:center;"></div>
</td>
</tr>
</table>
<!-- ENDIF -->
<!-- PPK CD -->
Адм. раздел - функции конферениции - Обратный отсчёт - настроить опции.