<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
function paginator_autoload($a = array())
{
mso_hook_add('head', 'paginator_head');
mso_hook_add('head_css', 'paginator_head_css');
mso_hook_add('admin_head', 'paginator_head');
mso_hook_add('pagination', 'paginator_go', 10);
return $a;
}
function paginator_activate($args = array())
{
if (!function_exists('paginator3000_go')) mso_delete_option('paginator3000', 'plugins' );
return $args;
}
function paginator_head()
{
echo '<script src="' . getinfo('plugins_url').'paginator/paginator.js"></script>' . NR;
}
function paginator_head_css()
{
$url = getinfo('plugins_url').'paginator/';
$options = mso_get_option('paginator', 'plugins', array() );
if ( !isset($options['css']) ) $options['css'] = '1';
if ( $options['css'] == '1' )
echo '<link rel="stylesheet" href="' . $url . 'paginator.css">' . NR;
}
function paginator_mso_options()
{
mso_admin_plugin_options('paginator', 'plugins',
array(
'page_count' => array(
'type' => 'text',
'name' => t('Количество отображаемых страниц'),
'description' => '',
'default' => '10'
),
'lang_next' => array(
'type' => 'text',
'name' => t('Записи новее'),
'description' => '',
'default' => t('Следующая')
),
'lang_prior' => array(
'type' => 'text',
'name' => t('Записи старее'),
'description' => '',
'default' => t('Предыдущая')
),
'lang_first' => array(
'type' => 'text',
'name' => t('Первая запись'),
'description' => '',
'default' => t('Первая')
),
'lang_last' => array(
'type' => 'text',
'name' => t('Последняя запись'),
'description' => '',
'default' => t('Последняя')
),
'returnOrder' => array(
'type' => 'checkbox',
'name' => t('Выводить страницы в обратном порядке'),
'description' => '',
'default' => '0'
),
'css' => array(
'type' => 'checkbox',
'name' => t('Загружать дефолтные css-стили'),
'description' => t('Снимите галочку если будут использоваться собственные css-стили для пагинатора'),
'default' => '1'
)
),
t('Настройки плагина «Paginator»'),
t('Укажите необходимые опции')
);
}
function paginator_uninstall($args = array())
{
mso_delete_option('paginator', 'plugins' );
return $args;
}
function paginator_go($r = array())
{
global $MSO;
$r_orig = $r;
if (!$r) return $r;
if ( !isset($r['maxcount']) || $r['maxcount'] == '1' ) return $r;
if ( !isset($r['limit']) ) return $r;
if ( !isset($r['type']) ) $r['type'] = false;
if ( !isset($r['next_url']) ) $r['next_url'] = 'next';
$options = mso_get_option('paginator', 'plugins', array() );
if ( !isset($options['page_count']) ) $options['page_count'] = '10';
if ( !isset($options['returnOrder']) ) $options['returnOrder'] = '0';
if ( !isset($options['lang_next']) ) $options['lang_next'] = t('Следующая');
if ( !isset($options['lang_prior']) ) $options['lang_prior'] = t('Предыдущая');
if ( !isset($options['lang_last']) ) $options['lang_last'] = t('Последняя');
if ( !isset($options['lang_first']) ) $options['lang_first'] = t('Первая');
$current_paged = mso_current_paged($r['next_url']);
if ($current_paged > $r['maxcount']) $current_paged = $r['maxcount'];
if ($r['type'] !== false) $type = $r['type'];
else $type = $MSO->data['type'];
$a_cur_url = $MSO->data['uri_segment'];
if ($type != 'page_404') $cur_url = getinfo('site_url').$type;
else $cur_url = getinfo('site_url');
foreach ($a_cur_url as $val)
{
if ($val == $r['next_url']) break;
else
{
if ($val != $type) $cur_url .= '/@@' . $val;
}
}
$cur_url = str_replace('//@@', '/', $cur_url);
$cur_url = str_replace('@@', '', $cur_url);
$returnOrder = ( $options['returnOrder'] == '1' ) ? 'true' : 'false';
$id = mt_rand(1,999);
echo '<script>$(document).ready(function() {$("#pag'.$id.'").paginator({pagesTotal:'.$r['maxcount'].', pagesSpan:'.$options['page_count'].', pageCurrent:'.$current_paged.', baseUrl:"'.$cur_url.'/next/", returnOrder:'.$returnOrder.', lang: {next:"'.$options['lang_next'].'", last:"'.$options['lang_last'].'", prior:"'.$options['lang_prior'].'", first:"'.$options['lang_first'].'", arrowRight:String.fromCharCode(8594), arrowLeft:String.fromCharCode(8592)}});})</script>'.NR.'<div id="pag'.$id.'" class="paginator"></div>'.NR;
return $r_orig;
}
# end file