/** * Вывод JS скрипта пейджинатора * @param int $count см. назначение из функции pages * @param int $perpage см. назначение из функции pages * @param string $file см. назначение из функции pages * @param string $var см. назначение из функции pages * @param int $page_on_this см. назначение из функции pages * @param bollean $ajax см. назначение из функции pages * @return string JS скрипт пейджинатора */ public function pagintator_js($count, $perpage = 50, $file = "", $var = "page", $page_on_this = 5, $ajax = false) { if (!is_numeric($perpage) || !$perpage) { $perpage = 50; } if (!is_numeric($page_on_this) || !$page_on_this) { $page_on_this = 5; } if (!$var) { $var = "page"; } if (!$_REQUEST[$var] || !is_numeric($_REQUEST[$var])) { $page = 1; } else { $page = longval($_REQUEST[$var]); } if (!is_numeric($count) || !$count) { $count = 0; } $pagesTotal = longval($count / $perpage) + ($count % $perpage == 0 ? 0 : 1); $qs = preg_replace('/\\&' . mpc($var) . '\\=([0-9]+)/siu', '', $_SERVER['QUERY_STRING']); $surl = w3c_amp_replace($_SERVER['PHP_SELF'] . "?" . $qs . "&" . $var . "=%number%"); if ($ajax && $file) { $base_url = "javascript:" . $file . '(%number%);'; } else { $base_url = slashes_smarty($file ? $file : $surl); } return "<script type='text/javascript'>\n\t\tjQuery('#" . slashes_smarty(self::paginator_id_prefix . $this->paginator_id) . "').paginator({\n 'pagesTotal':" . $pagesTotal . ",\n\t\t\t\t'pagesSpan':" . $page_on_this . ",\n\t\t\t\t'pageCurrent':" . $page . ",\n\t\t\t\t'baseurl': '" . $base_url . "',\n\t\t\t\t'lang' : {next : '" . slashes_smarty(lang::o()->v('paginator_next')) . "',\n\t\t\t\tlast : '" . slashes_smarty(lang::o()->v('paginator_last')) . "',\n\t\t\t\tprior : '" . slashes_smarty(lang::o()->v('paginator_prev')) . "',\n\t\t\t\tfirst : '" . slashes_smarty(lang::o()->v('paginator_first')) . "',\n\t\t\t\tarrowRight : String.fromCharCode(8594),\n\t\t\t\tarrowLeft : String.fromCharCode(8592)}});\n\t\t</script>"; }
/** * Функция создания Человекопонятного URL, исходя из заданных параметров, * по предустановленным правилам * @param string $module имя модуля * @param array $params массив параметров, например: * array('id' => 1, 'name' => 'CTRev', 'cat' => 'demo') * ключ slashes экранирует результат для JavaScript, иначе & заменяется на & * @param bool $page является ли указанный модуль ссылкой на документ? * @param bool $no_end нужно ли в конец добавлять .html/index.html? * @param bool $nobaseurl не добавлять в начало $baseurl * @return string ЧПУ */ public function construct($module, $params = array(), $page = false, $no_end = false, $nobaseurl = false) { $baseurl = globals::g('baseurl'); $burl = true; $assign = false; if (is_array($module)) { $module_t = $module['module']; if ($module['no_end']) { $no_end = $module['no_end']; } if ($module['assign']) { $assign = (string) $module['assign']; } if (!$module_t && $module['page']) { $module = $module['page']; $page = true; } elseif (!$module_t) { return; } else { unset($module['module']); $params = $module; $module = $module_t; } } elseif ($nobaseurl) { $burl = false; } if (!is_array($params)) { $params = array(); } if ($params["_filetype"]) { $filetype = '.' . file::o()->get_filetype($params["_filetype"]); } else { $filetype = ".html"; } $url = $burl ? $baseurl : ""; if (config::o()->v('furl')) { $url .= $this->module_name($module) . ($page ? '' : "/"); $function = $module . '_furl_rules'; } else { $url .= 'index.php?module=' . ($this->rmodules[$module] ? $this->rmodules[$module] : $module); $function = $module . '_nfurl_rules'; } $slashes = $params['slashes']; $noencode = $params['noencode']; $b = $this->is_callable($function); if ($b) { $params = $this->resort($module, $params); } $postfix = ""; $surl = ''; $ourl = $url; if ($params && !$page) { foreach ($params as $param => $value) { if ($this->postfixes[$module][$param]) { $postfix .= $this->postfixes[$module][$param] . $value; } if ($b) { $r = $this->call_method($function, array($param, $value, !$slashes && !$noencode)); } elseif (!config::o()->v('furl')) { $r = $param . "=" . $value; } else { $r = $param . "-" . $value . "/"; } if (!config::o()->v('furl') && $r) { $surl .= '&' . $r; $r = ($slashes || $noencode ? '&' : '&') . $r; } $url .= $r; } } if (!$surl) { $surl = $url; } else { $surl = $ourl . $surl; } $add = ''; if (config::o()->v('furl')) { if (!$no_end && !$page && (!$params || !$b || preg_match('/\\/$/siu', $url))) { $add .= "index"; } if (!$no_end) { $add .= $filetype; } } $add .= $postfix; $url = $url . $add; $surl = $surl . $add; $this->forlocation = array($surl, $url); if ($slashes) { $url = slashes_smarty($url); } if ($assign) { tpl::o()->assign($assign, $url); } else { return $url; } }