Browse Source

v 3.24

pull/3/head
M@d D3n 7 years ago
parent
commit
4e4a58d40a
  1. 44
      admin/admin.php
  2. 54
      admin/docs.php
  3. 185
      admin/functions/func.admin.common.php
  4. 19
      admin/index.php
  5. 47
      admin/init.php
  6. 6
      admin/lang/bg/settings.txt
  7. 3
      admin/lang/ru/docs.txt
  8. 8
      admin/lang/ru/groups.txt
  9. 54
      admin/lang/ru/rubs.txt
  10. 8
      admin/lang/ru/settings.txt
  11. 1
      admin/lang/ru/templates.txt
  12. 39
      admin/modules.php
  13. 108
      admin/rubs.php
  14. 11
      admin/settings.php
  15. 2
      admin/start.php
  16. 14
      admin/templates/css/main.css
  17. 15
      admin/templates/documents/doc_search.tpl
  18. 6
      admin/templates/documents/form.tpl
  19. 5
      admin/templates/documents/form_after.tpl
  20. 4
      admin/templates/groups/perms.tpl
  21. 4
      admin/templates/js/main.js
  22. 60
      admin/templates/main.tpl
  23. 136
      admin/templates/rubs/_field_code.tpl
  24. 142
      admin/templates/rubs/_field_list.tpl
  25. 136
      admin/templates/rubs/_fields_list.tpl
  26. 51
      admin/templates/rubs/code.tpl
  27. 2
      admin/templates/rubs/field_template.tpl
  28. 55
      admin/templates/rubs/fields_groups.tpl
  29. 198
      admin/templates/rubs/fields_list.tpl
  30. 170
      admin/templates/rubs/form.tpl
  31. 15
      admin/templates/rubs/list.tpl
  32. 240
      admin/templates/rubs/rules.tpl
  33. 34
      admin/templates/rubs/tmpls.tpl
  34. 78
      admin/templates/settings/edit_file.tpl
  35. 13
      admin/templates/settings/pagination_edit.tpl
  36. 14
      admin/templates/settings/settings_case.tpl
  37. 14
      admin/templates/settings/settings_countries.tpl
  38. 14
      admin/templates/settings/settings_lang.tpl
  39. 13
      admin/templates/settings/settings_main.tpl
  40. 14
      admin/templates/settings/settings_pagination.tpl
  41. 8
      admin/templates/templates/form.tpl
  42. 135
      class/class.core.php
  43. 95
      class/class.database.php
  44. 293
      class/class.docs.php
  45. 289
      class/class.modules.php
  46. 50
      class/class.navigation.php
  47. 14
      class/class.request.php
  48. 465
      class/class.rubs.php
  49. 142
      class/class.settings.php
  50. 3
      class/class.thumbnail.php
  51. 11
      class/class.user.php
  52. 26
      fields/checkbox/field.php
  53. 2
      fields/image_mega/tpl/field-doc.tpl
  54. 0
      fields/image_multi_new_3inputs/.gitkeep
  55. 0
      fields/image_multi_new_3inputs/css/.gitkeep
  56. 96
      fields/image_multi_new_3inputs/css/field.css
  57. 307
      fields/image_multi_new_3inputs/field.php
  58. 0
      fields/image_multi_new_3inputs/js/.gitkeep
  59. 235
      fields/image_multi_new_3inputs/js/field.js
  60. 231
      fields/image_multi_new_3inputs/js/outside.js
  61. 0
      fields/image_multi_new_3inputs/lang/.gitkeep
  62. 27
      fields/image_multi_new_3inputs/lang/bg.txt
  63. 29
      fields/image_multi_new_3inputs/lang/cz.txt
  64. 26
      fields/image_multi_new_3inputs/lang/en.txt
  65. 27
      fields/image_multi_new_3inputs/lang/pl.txt
  66. 27
      fields/image_multi_new_3inputs/lang/ru.txt
  67. 27
      fields/image_multi_new_3inputs/lang/ua.txt
  68. 0
      fields/image_multi_new_3inputs/tpl/.gitkeep
  69. 3
      fields/image_multi_new_3inputs/tpl/field-doc.tpl
  70. 3
      fields/image_multi_new_3inputs/tpl/field-req.tpl
  71. 65
      fields/image_multi_new_3inputs/tpl/field.tpl
  72. 24
      fields/teasers/field.php
  73. 29
      fields/teasers/js/field.js
  74. 4
      fields/teasers/tpl/field.tpl
  75. 8
      fields/youtube/lang/bg.txt
  76. 7
      fields/youtube/lang/cz.txt
  77. 7
      fields/youtube/lang/en.txt
  78. 7
      fields/youtube/lang/pl.txt
  79. 7
      fields/youtube/lang/ru.txt
  80. 7
      fields/youtube/lang/ua.txt
  81. 14
      fields/youtube/tpl/field.tpl
  82. 9
      functions/func.block.php
  83. 19
      functions/func.breadcrumbs.php
  84. 39
      functions/func.common.php
  85. 103
      functions/func.fields.php
  86. 18
      functions/func.helpers.php
  87. 95
      functions/func.navigation.php
  88. 254
      functions/func.parserequest.php
  89. 9
      functions/func.sysblock.php
  90. 21
      inc/config.php
  91. 18
      inc/init.php
  92. 2
      install/data_base.sql
  93. 59
      install/structure_base.sql

44
admin/admin.php

@ -1,6 +1,6 @@
<?php <?php
/** /**
* AVE.cms * AVE.cms
* *
* @package AVE.cms * @package AVE.cms
@ -11,41 +11,43 @@
* @license GPL v.2 * @license GPL v.2
*/ */
define('ACP', 1); define('ACP', 1);
define('ACPL', 1); define('ACPL', 1);
define('BASE_DIR', str_replace("\\", "/", dirname(dirname(__FILE__)))); define('BASE_DIR', str_replace("\\", "/", dirname(dirname(__FILE__))));
if (! @filesize(BASE_DIR . '/inc/db.config.php')) { if (! @filesize(BASE_DIR . '/inc/db.config.php'))
{
header('Location:/install/index.php'); header('Location:/install/index.php');
exit; exit;
} }
require(BASE_DIR . '/admin/init.php'); require(BASE_DIR . '/admin/init.php');
unset ($captcha_ok); unset ($captcha_ok);
if (isset($_REQUEST['do']) && $_REQUEST['do'] == 'logout') if (isset($_REQUEST['do']) && $_REQUEST['do'] == 'logout')
{ {
// Завершение работы в админке // Завершение работы в админке
reportLog($AVE_Template->get_config_vars('EXIT_ADMIN')); reportLog($AVE_Template->get_config_vars('EXIT_ADMIN'));
user_logout(); user_logout();
header('Location:admin.php'); header('Location:admin.php');
} }
if(auth_cookie()) if (auth_cookie())
{ {
header('Location:index.php'); header('Location:index.php');
exit; exit;
} }
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'login') if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'login')
{ {
// Авторизация // Авторизация
if (!empty($_POST['user_login']) && !empty($_POST['user_pass'])) if (! empty($_POST['user_login']) && !empty($_POST['user_pass']))
{ {
if (ADMIN_CAPTCHA) if (ADMIN_CAPTCHA)
{ {
if (isset($_SESSION['captcha_keystring']) && isset($_POST['securecode']) && $_SESSION['captcha_keystring'] == $_POST['securecode']) $captcha_ok = 1; if (isset($_SESSION['captcha_keystring']) && isset($_POST['securecode']) && $_SESSION['captcha_keystring'] == $_POST['securecode'])
$captcha_ok = 1;
else else
{ {
unset($_SESSION['user_id'], $_SESSION['user_pass']); unset($_SESSION['user_id'], $_SESSION['user_pass']);
@ -90,8 +92,8 @@ if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'login')
} }
} }
} }
$AVE_Template->assign('captcha', ADMIN_CAPTCHA); $AVE_Template->assign('captcha', ADMIN_CAPTCHA);
$AVE_Template->display('login.tpl'); $AVE_Template->display('login.tpl');
?> ?>

54
admin/docs.php

@ -1,6 +1,6 @@
<?php <?php
/** /**
* AVE.cms * AVE.cms
* *
* @package AVE.cms * @package AVE.cms
@ -11,34 +11,34 @@
* @license GPL v.2 * @license GPL v.2
*/ */
if (!defined('ACP')) if (! defined('ACP'))
{ {
header('Location:index.php'); header('Location:index.php');
exit; exit;
} }
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
require(BASE_DIR . '/class/class.docs.php'); require(BASE_DIR . '/class/class.docs.php');
require(BASE_DIR . '/class/class.rubs.php'); require(BASE_DIR . '/class/class.rubs.php');
require(BASE_DIR . '/class/class.navigation.php'); require(BASE_DIR . '/class/class.navigation.php');
require(BASE_DIR . '/class/class.request.php'); require(BASE_DIR . '/class/class.request.php');
$AVE_Document = new AVE_Document; $AVE_Document = new AVE_Document;
$AVE_Rubric = new AVE_Rubric; $AVE_Rubric = new AVE_Rubric;
$AVE_Navigation = new AVE_Navigation; $AVE_Navigation = new AVE_Navigation;
$AVE_Request = new AVE_Request; $AVE_Request = new AVE_Request;
$AVE_Document->documentTemplateTimeAssign(); $AVE_Document->documentTemplateTimeAssign();
$AVE_Rubric->rubricPermissionFetch(); $AVE_Rubric->rubricPermissionFetch();
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/docs.txt', 'docs'); $AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/docs.txt', 'docs');
$AVE_Template->assign("navi", $AVE_Template->fetch("navi/navi.tpl")); $AVE_Template->assign("navi", $AVE_Template->fetch("navi/navi.tpl"));
switch($_REQUEST['action']) switch($_REQUEST['action'])
{ {
case '' : case '' :
if (check_permission_acp('document_view')) if (check_permission_acp('document_view'))
{ {
@ -74,8 +74,11 @@ switch($_REQUEST['action'])
if (check_permission_acp('document_view')) if (check_permission_acp('document_view'))
{ {
$_SESSION['use_editor'] = get_settings('use_editor'); $_SESSION['use_editor'] = get_settings('use_editor');
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] != 'save')
{
$AVE_Navigation->navigationAllItemList(); $AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch(); $AVE_Request->requestListFetch();
}
$AVE_Document->documentEdit((int)$_REQUEST['Id']); $AVE_Document->documentEdit((int)$_REQUEST['Id']);
} }
break; break;
@ -94,8 +97,13 @@ switch($_REQUEST['action'])
if (check_permission_acp('document_view')) if (check_permission_acp('document_view'))
{ {
$_SESSION['use_editor'] = get_settings('use_editor'); $_SESSION['use_editor'] = get_settings('use_editor');
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] != 'save')
{
$AVE_Navigation->navigationAllItemList(); $AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch(); $AVE_Request->requestListFetch();
}
$AVE_Document->documentNew((int)$_REQUEST['rubric_id']); $AVE_Document->documentNew((int)$_REQUEST['rubric_id']);
} }
break; break;
@ -293,6 +301,12 @@ switch($_REQUEST['action'])
$AVE_Document->documentAliasDel(); $AVE_Document->documentAliasDel();
} }
break; break;
}
case 'redirect':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentSaveRedirect();
}
break;
}
?> ?>

185
admin/functions/func.admin.common.php

@ -1,6 +1,6 @@
<?php <?php
/** /**
* AVE.cms * AVE.cms
* *
* @package AVE.cms * @package AVE.cms
@ -8,14 +8,14 @@
* @filesource * @filesource
*/ */
/** /**
* Если был referer, то перенапрявляем на него * Если был referer, то перенапрявляем на него
* *
* @param * @param
* @return $link * @return $link
*/ */
function get_referer_admin_link() function get_referer_admin_link()
{ {
static $link = null; static $link = null;
if ($link === null) if ($link === null)
@ -31,15 +31,16 @@ function get_referer_admin_link()
} }
return $link; return $link;
} }
/** /**
* Получаем кол-во записей в журналах событий * Получаем кол-во записей в журналах событий
* *
* @return Array массив из кол-ва записей * @return Array массив из кол-ва записей
*/ */
function getLogRecords(){ function getLogRecords()
{
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$logs = array(); $logs = array();
@ -72,15 +73,15 @@ function getLogRecords(){
// Передаем данные в шаблон для вывода // Передаем данные в шаблон для вывода
$AVE_Template->assign('logs', $logs); $AVE_Template->assign('logs', $logs);
} }
/** /**
* Список пользователей за последние $onlinetime секунд * Список пользователей за последние $onlinetime секунд
* *
* @param int $onlinetime количество секунд * @param int $onlinetime количество секунд
* @return Array массив из пользователей отсортированный по последней активности * @return Array массив из пользователей отсортированный по последней активности
*/ */
function get_online_users($onlinetime=USERS_TIME_SHOW){ function get_online_users($onlinetime=USERS_TIME_SHOW){
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$time=(time()-intval($onlinetime)); $time=(time()-intval($onlinetime));
$sql=@$AVE_DB->Query("SELECT * FROM ".PREFIX."_users WHERE last_visit>".$time." ORDER BY last_visit DESC"); $sql=@$AVE_DB->Query("SELECT * FROM ".PREFIX."_users WHERE last_visit>".$time." ORDER BY last_visit DESC");
@ -92,16 +93,16 @@ function get_online_users($onlinetime=USERS_TIME_SHOW){
array_push($online_users,$row); array_push($online_users,$row);
} }
$AVE_Template->assign('online_users', $online_users); $AVE_Template->assign('online_users', $online_users);
} }
/** /**
* Форматированный вывод размера * Форматированный вывод размера
* *
* @param int $file_size размер * @param int $file_size размер
* @return string нормированный размер с единицой измерения * @return string нормированный размер с единицой измерения
*/ */
function format_size($file_size) function format_size($file_size)
{ {
if ($file_size >= 1073741824) if ($file_size >= 1073741824)
{ {
$file_size = round($file_size / 1073741824 * 100) / 100 . ' Gb'; $file_size = round($file_size / 1073741824 * 100) / 100 . ' Gb';
@ -120,14 +121,14 @@ function format_size($file_size)
} }
return $file_size; return $file_size;
} }
/** /**
* Извлечение из БД статистики по основным компонентам системы * Извлечение из БД статистики по основным компонентам системы
* *
*/ */
function get_ave_info() function get_ave_info()
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$cnts = array(); $cnts = array();
@ -162,16 +163,16 @@ function get_ave_info()
} }
$AVE_Template->assign('cnts', $cnts); $AVE_Template->assign('cnts', $cnts);
} }
/** /**
* Размер дириктории * Размер дириктории
* *
* @param string $directory наименование директории * @param string $directory наименование директории
* @return int * @return int
*/ */
function get_dir_size($directory) function get_dir_size($directory)
{ {
if (!is_dir($directory)) return -1; if (!is_dir($directory)) return -1;
$size = 0; $size = 0;
if ($DIR = opendir($directory)) if ($DIR = opendir($directory))
@ -200,15 +201,15 @@ function get_dir_size($directory)
} }
return $size; return $size;
} }
/** /**
* Размер базы данных * Размер базы данных
* *
* @return int * @return int
*/ */
function get_mysql_size() function get_mysql_size()
{ {
global $AVE_DB; global $AVE_DB;
$mysql_size = 0; $mysql_size = 0;
@ -219,10 +220,11 @@ function get_mysql_size()
} }
return format_size($mysql_size); return format_size($mysql_size);
} }
function get_ave_tags($srcfile) function get_ave_tags($srcfile)
{ {
if (@include_once($srcfile)) if (@include_once($srcfile))
{ {
reset ($vorlage); reset ($vorlage);
@ -241,11 +243,11 @@ function get_ave_tags($srcfile)
} }
return null; return null;
} }
function get_all_templates() function get_all_templates()
{ {
global $AVE_DB; global $AVE_DB;
static $templates = null; static $templates = null;
@ -268,35 +270,34 @@ function get_all_templates()
} }
return $templates; return $templates;
} }
function get_editable_module()
{
global $AVE_DB, $AVE_Template;
$modules = array(); function getInstaledModules()
$sql = $AVE_DB->Query("
SELECT
ModuleName,
ModuleSysName
FROM " . PREFIX . "_module
WHERE `ModuleStatus` = '1'
AND `ModuleAdminEdit` = '1'
ORDER BY ModuleName ASC
");
while ($row = $sql->FetchRow())
{ {
if (check_permission('mod_' . $row->ModuleSysName)) global $AVE_DB, $AVE_Template, $AVE_Module;
$modules = $AVE_Module->_modules;
$modules_instaled = array();
foreach ($modules AS $module)
{ {
array_push($modules, $row); if ($module['ModuleAdminEdit'] == 1 && $module['status'])
$modules_instaled[] = array(
'ModuleName' => $module['ModuleName'],
'ModuleSysName' => $module['ModuleSysName']
);
} }
unset ($modules);
$AVE_Template->assign('modules', $modules_instaled);
} }
$AVE_Template->assign('modules', $modules);
}
function get_mime_type($file) function get_mime_type($file)
{ {
$file_extension = strtolower(mb_substr(strrchr($file, '.'), 1)); $file_extension = strtolower(mb_substr(strrchr($file, '.'), 1));
switch ($file_extension) switch ($file_extension)
@ -379,10 +380,11 @@ function get_mime_type($file)
} }
return $ctype; return $ctype;
} }
function file_download($filename, $retbytes = true) function file_download($filename, $retbytes = true)
{ {
$chunksize = 1*(1024*1024); $chunksize = 1*(1024*1024);
$buffer = ''; $buffer = '';
$cnt = 0; $cnt = 0;
@ -404,10 +406,11 @@ function file_download($filename, $retbytes = true)
if ($retbytes && $status) return $cnt; if ($retbytes && $status) return $cnt;
return $status; return $status;
} }
function is_php_code($check_code)
{ function is_php_code($check_code)
{
$check_code = stripslashes($check_code); $check_code = stripslashes($check_code);
$check_code = str_replace(' ', '', $check_code); $check_code = str_replace(' ', '', $check_code);
$check_code = strtolower($check_code); $check_code = strtolower($check_code);
@ -425,21 +428,25 @@ function is_php_code($check_code)
} }
return false; return false;
} }
function check_permission_acp($perm) function check_permission_acp($perm)
{
if (!check_permission($perm))
{ {
if (!defined('NOPERM')) define('NOPERM', 1); if (! check_permission($perm))
{
if (! defined('NOPERM'))
define('NOPERM', 1);
return false; return false;
} }
return true; return true;
} }
//Проверка на наличие модуля Контакты и новых писем //Проверка на наличие модуля Контакты и новых писем
function ContactsModuleCheck() { function ContactsModuleCheck() {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module WHERE ModuleFunction = 'contact' and ModuleStatus = '1'"); $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module WHERE ModuleFunction = 'contact' and ModuleStatus = '1'");
@ -453,10 +460,11 @@ function ContactsModuleCheck() {
} }
$AVE_Template->assign('num_posts', $num_posts); $AVE_Template->assign('num_posts', $num_posts);
$AVE_Template->assign('contacts', $contacts); $AVE_Template->assign('contacts', $contacts);
} }
//Проверка на наличие модуля Логин //Проверка на наличие модуля Логин
function LoginModuleCheck() { function LoginModuleCheck() {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module WHERE ModuleFunction = 'mod_login' and ModuleStatus = '1'"); $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module WHERE ModuleFunction = 'mod_login' and ModuleStatus = '1'");
@ -467,13 +475,16 @@ function LoginModuleCheck() {
$login_menu = "0"; $login_menu = "0";
} }
$AVE_Template->assign('login_menu', $login_menu); $AVE_Template->assign('login_menu', $login_menu);
} }
//Выводим на главную список последних 15 документов
function DisplayMainDocuments() { //Выводим на главную список последних 15 документов
function DisplayMainDocuments()
{
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$doc_start = array(); $doc_start = array();
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
SELECT SELECT
doc.*, doc.*,
@ -533,32 +544,36 @@ function DisplayMainDocuments() {
array_push($doc_start, $row); array_push($doc_start, $row);
} }
$AVE_Template->assign('doc_start', $doc_start); $AVE_Template->assign('doc_start', $doc_start);
} }
function showrubricName($id) { function showrubricName($id)
{
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$sql = $AVE_DB->Query("SELECT rubric_title FROM " . PREFIX . "_rubrics WHERE Id='$id'"); $sql = $AVE_DB->Query("SELECT rubric_title FROM " . PREFIX . "_rubrics WHERE Id='$id'");
$row = $sql->fetchrow(); $row = $sql->fetchrow();
return $row->rubric_title; return $row->rubric_title;
} }
function showuserName($id) { function showuserName($id)
{
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$sql = $AVE_DB->Query("SELECT user_name FROM " . PREFIX . "_users WHERE Id='$id'"); $sql = $AVE_DB->Query("SELECT user_name FROM " . PREFIX . "_users WHERE Id='$id'");
$row = $sql->fetchrow(); $row = $sql->fetchrow();
return $row->user_name; return $row->user_name;
} }
function cacheShow() { function cacheShow()
{
global $AVE_Template; global $AVE_Template;
$showCache = format_size(get_dir_size($AVE_Template->compile_dir)+get_dir_size($AVE_Template->cache_dir_root)); $showCache = format_size(get_dir_size($AVE_Template->compile_dir)+get_dir_size($AVE_Template->cache_dir_root));
echo json_encode(array($showCache, 'accept')); echo json_encode(array($showCache, 'accept'));
} }
function templateName($id) { function templateName($id)
{
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
@ -568,9 +583,10 @@ function templateName($id) {
$row = $sql->fetchrow(); $row = $sql->fetchrow();
return $row->template_title; return $row->template_title;
} }
function groupName($id) { function groupName($id)
{
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
@ -580,6 +596,5 @@ function groupName($id) {
$row = $sql->fetchrow(); $row = $sql->fetchrow();
return $row->user_group_name; return $row->user_group_name;
} }
?> ?>

19
admin/index.php

@ -25,13 +25,16 @@
exit; exit;
} }
require(BASE_DIR . '/admin/init.php'); require (BASE_DIR . '/admin/init.php');
if (! isset($_SESSION['user_id'])) if (! isset($_SESSION['user_id']))
{ {
@session_destroy(); @session_destroy();
if (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] == 'run' || ( !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' )) if (
isset($_REQUEST['ajax']) && $_REQUEST['ajax'] == 'run'
|| (! empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' )
)
{ {
header($_SERVER['SERVER_PROTOCOL'] . ' 401 Unauthorised access', true); header($_SERVER['SERVER_PROTOCOL'] . ' 401 Unauthorised access', true);
exit; exit;
@ -69,16 +72,16 @@
} }
/* Вывод модулей на всех страницах */ /* Вывод модулей на всех страницах */
get_editable_module(); getInstaledModules();
LoginModuleCheck(); LoginModuleCheck();
$AVE_Template->assign('use_editor', get_settings('use_editor')); $AVE_Template->assign('use_editor', get_settings('use_editor'));
$AVE_Template->assign('user_avatar', getAvatar($_SESSION['user_id'],25)); $AVE_Template->assign('user_avatar', getAvatar($_SESSION['user_id'],25));
if (!isset($_REQUEST['do'])) $_REQUEST['do'] = ''; if (! isset($_REQUEST['do'])) $_REQUEST['do'] = '';
if (!isset($_REQUEST['action'])) $_REQUEST['action'] = ''; if (! isset($_REQUEST['action'])) $_REQUEST['action'] = '';
if (!isset($_REQUEST['sub'])) $_REQUEST['sub'] = ''; if (! isset($_REQUEST['sub'])) $_REQUEST['sub'] = '';
if (!isset($_REQUEST['submit'])) $_REQUEST['submit'] = ''; if (! isset($_REQUEST['submit'])) $_REQUEST['submit'] = '';
//Шаблоны навигации //Шаблоны навигации
$AVE_Template->assign('navi', $AVE_Template->fetch('navi/navi.tpl')); $AVE_Template->assign('navi', $AVE_Template->fetch('navi/navi.tpl'));
@ -113,7 +116,7 @@
header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: no-store, no-cache, must-revalidate");
header("Expires: " . date("r")); header("Expires: " . date("r"));
include(BASE_DIR . '/admin/' . $do . '.php'); include (BASE_DIR . '/admin/' . $do . '.php');
if (defined('NOPERM')) if (defined('NOPERM'))
$AVE_Template->assign('content', $config_vars['MAIN_NO_PERMISSION']); $AVE_Template->assign('content', $config_vars['MAIN_NO_PERMISSION']);

47
admin/init.php

@ -1,6 +1,6 @@
<?php <?php
/** /**
* AVE.cms * AVE.cms
* *
* @package AVE.cms * @package AVE.cms
@ -11,33 +11,38 @@
* @license GPL v.2 * @license GPL v.2
*/ */
if (!defined('ACP')) if (! defined('ACP'))
{ {
header('Location:index.php'); header('Location:index.php');
exit; exit;
} }
require(BASE_DIR . '/inc/init.php'); require (BASE_DIR . '/inc/init.php');
require(BASE_DIR . '/admin/functions/func.admin.common.php');
require(BASE_DIR . '/lib/redactor/ckeditor/adapters/ckeditor.php');
$lang_system = $AVE_DB->Query(" $AVE_Template = new AVE_Template(BASE_DIR . '/admin/templates');
SELECT lang_alias_pref FROM " . PREFIX . "_settings_lang $AVE_Template->assign('tpl_dir', ABS_PATH . 'admin/templates');
WHERE lang_default = '1'
")->GetCell();
$_SESSION['admin_language'] = $lang_system; require (BASE_DIR . '/admin/functions/func.admin.common.php');
require (BASE_DIR . '/lib/redactor/ckeditor/adapters/ckeditor.php');
$AVE_Template = new AVE_Template(BASE_DIR . '/admin/templates'); $lang_system = $AVE_DB->Query("
$AVE_Template->assign('tpl_dir', ABS_PATH . 'admin/templates'); SELECT
lang_alias_pref
FROM
" . PREFIX . "_settings_lang
WHERE
lang_default = '1'
")->GetCell();
// Файлы шаблонов для CodeMirror $_SESSION['admin_language'] = $lang_system;
$AVE_Template->assign('codemirror_connect', BASE_DIR . '/lib/redactor/codemirror/codemirror_connect.tpl');
$AVE_Template->assign('codemirror_editor', BASE_DIR . '/lib/redactor/codemirror/codemirror_editor.tpl');
// Подключаем основные ланги // Файлы шаблонов для CodeMirror
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/main.txt'); $AVE_Template->assign('codemirror_connect', BASE_DIR . '/lib/redactor/codemirror/codemirror_connect.tpl');
$AVE_Template->assign('codemirror_editor', BASE_DIR . '/lib/redactor/codemirror/codemirror_editor.tpl');
define('SESSION', session_id()); // Подключаем основные ланги
$AVE_Template->assign('sess', SESSION); $AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/main.txt');
define('SESSION', session_id());
$AVE_Template->assign('sess', SESSION);
?> ?>

6
admin/lang/bg/settings.txt

@ -59,12 +59,12 @@ SETTINGS_PAGE_PREV = "Текст на линка &quot;Предходна&q
SETTINGS_MAIN_BREADCRUMBS = "Настройки за извеждането на «Breadcrumb»" SETTINGS_MAIN_BREADCRUMBS = "Настройки за извеждането на «Breadcrumb»"
SETTINGS_BREAD_BOX = "Контейнер «Breadcrumb»:<br><small>Пример: &lt;ul class="breadcrumb"&gt;%s&lt;/ul&gt;</small>" SETTINGS_BREAD_BOX = "Контейнер «Breadcrumb»:<br><small>Пример: &lt;ul class="breadcrumb"&gt;%s&lt;/ul&gt;</small>"
SETTINGS_BREAD_MAIN = "Показывать первый элемент: Главная страница:<br><small>Да/Нет</small>" SETTINGS_BREAD_MAIN = "Показвай първия елемент: Главна страница:<br><small>Да/Не</small>"
SETTINGS_BREAD_HOST = "Добавлять адрес хоста в url:<br><small>Да/Нет</small>" SETTINGS_BREAD_HOST = "Добавяй адреса на хоста в url:<br><small>Да/Не</small>"
SETTINGS_BREAD_SEPPARATOR = "Разделител между линковете:<br><small>Пример: &lt;li&gt;&nbsp;&rarr;&nbsp;&lt;/li&gt;</small>" SETTINGS_BREAD_SEPPARATOR = "Разделител между линковете:<br><small>Пример: &lt;li&gt;&nbsp;&rarr;&nbsp;&lt;/li&gt;</small>"
SETTINGS_BREAD_SEPP_USE = "Покажи:<br><small>Да/Не</small>" SETTINGS_BREAD_SEPP_USE = "Покажи:<br><small>Да/Не</small>"
SETTINGS_BREAD_BOX_LINK = "Контейнер за линка:<br><small>Пример: &lt;li&gt;%s&lt;/li&gt;</small>" SETTINGS_BREAD_BOX_LINK = "Контейнер за линка:<br><small>Пример: &lt;li&gt;%s&lt;/li&gt;</small>"
SETTINGS_BREAD_LINK_TPL = "Шаблон ссылки<br /><small>Используются теги: [name], [link], [count]</small>" SETTINGS_BREAD_LINK_TPL = "Шаблон за линка<br /><small>Използват се таговете: [name], [link], [count]</small>"
SETTINGS_BREAD_BOX_LASTLINK = "Показване на последния елемент:" SETTINGS_BREAD_BOX_LASTLINK = "Показване на последния елемент:"
SETTINGS_BREAD_SELF_BOX = "Контейнер за последния елемент:<br><small>Пример: &lt;li class="active"&gt;%s&lt;/li&gt;</small>" SETTINGS_BREAD_SELF_BOX = "Контейнер за последния елемент:<br><small>Пример: &lt;li class="active"&gt;%s&lt;/li&gt;</small>"

3
admin/lang/ru/docs.txt

@ -298,3 +298,6 @@ DOC_SAVE_LOG_DOC = " документ"
DOC_LANG = "Язык" DOC_LANG = "Язык"
DOC_LANG_ID = "Язык документа:" DOC_LANG_ID = "Язык документа:"
DOC_LANG_SELECT = "Выберите язык" DOC_LANG_SELECT = "Выберите язык"
// 3.25
DOC_CLOSE_SEARCH_RUBRIC = "Вернуться в раздел, учитывая параметры поиска"

8
admin/lang/ru/groups.txt

@ -2,14 +2,14 @@
UGROUP_TITLE = "Управление группами пользователей" UGROUP_TITLE = "Управление группами пользователей"
UGROUP_TITLE2 = "Управление группой пользователей" UGROUP_TITLE2 = "Управление группой пользователей"
UGROUP_TITLE_MENU = "Группы пользователей" UGROUP_TITLE_MENU = "Группы пользователей"
UGROUP_INFO = "В данном разделе приведен cписок всех групп пользователей в системе. Для каждой группы Вы можете назначить персональные права, которые разрешат или ограничат действия пользователей как в Панели управления, так и в Публичной части сайта." UGROUP_INFO = "В данном разделе приведен список всех групп пользователей в системе. Для каждой группы Вы можете назначить персональные права, которые разрешат или ограничат действия пользователей как в Панели управления, так и в Публичной части сайта."
UGROUP_ID = "ID" UGROUP_ID = "ID"
UGROUP_NAME = "Название группы" UGROUP_NAME = "Название группы"
UGROUP_COUNT = "Пользователей в группе" UGROUP_COUNT = "Пользователей в группе"
UGROUP_ACTIONS = "Действия" UGROUP_ACTIONS = "Действия"
UGROUP_IN_GROUP = "Просмотр списка пользователей, относящихся к данной группе" UGROUP_IN_GROUP = "Просмотр списка пользователей, относящихся к данной группе"
UGROUP_EDIT = "Редактировать наименование и права группы" UGROUP_EDIT = "Редактировать наименование и права группы"
UGROUP_NO_PERMISSION = "Извините, но у Вас недостаточно прав для редакирования" UGROUP_NO_PERMISSION = "Извините, но у Вас недостаточно прав для редактирования"
UGROUP_DELETE = "Удалить данную группу" UGROUP_DELETE = "Удалить данную группу"
UGROUP_USERS_IN_GROUP = "В настоящий момент Вы не можете удалить данную группу, т.к. есть пользователи состоящие в этой группе." UGROUP_USERS_IN_GROUP = "В настоящий момент Вы не можете удалить данную группу, т.к. есть пользователи состоящие в этой группе."
UGROUP_DELETE_CONFIRM = "Вы уверены, что хотите удалить данную группу?" UGROUP_DELETE_CONFIRM = "Вы уверены, что хотите удалить данную группу?"
@ -49,11 +49,13 @@ gen_settings = "Доступ к управлению общими на
gen_settings_more = "Доступ к управлению дополнительными настройками системы" gen_settings_more = "Доступ к управлению дополнительными настройками системы"
gen_settings_countries = "Доступ к управлению списку стран" gen_settings_countries = "Доступ к управлению списку стран"
gen_settings_languages = "Доступ к управлению языками" gen_settings_languages = "Доступ к управлению языками"
gen_settings_robots = "Доступ к редактированию файла robots.txt"
gen_settings_fcustom = "Доступ к редактированию файла func.custom.php"
logs_view = "Доступ к просмотру системных сообщ" logs_view = "Доступ к просмотру системных сообщ"
logs_clear = "Доступ к удалению системных сообщений" logs_clear = "Доступ к удалению системных сообщений"
db_actions = "Доступ к управлению базой данных (<strong>Резервное копирование, Востановление, Оптимизация</strong>)" db_actions = "Доступ к управлению базой данных (<strong>Резервное копирование, Восстановление, Оптимизация</strong>)"
modules_view = "Доступ к списку модулей" modules_view = "Доступ к списку модулей"
modules_admin = "Доступ к модулями <strong>(Настройка, Управление, Использование)</strong>" modules_admin = "Доступ к модулями <strong>(Настройка, Управление, Использование)</strong>"

54
admin/lang/ru/rubs.txt

@ -42,7 +42,7 @@ RUBRIK_LEGEND = "Значения пиктограмм"
RUBRIK_NEW = "Создание новой рубрики" RUBRIK_NEW = "Создание новой рубрики"
RUBRIK_NEW_TIP = "В данном разделе вы можете создать новую рубрику. Пожалуйста, укажите название новой рубрики и выберите шаблон для вывода." RUBRIK_NEW_TIP = "В данном разделе вы можете создать новую рубрику. Пожалуйста, укажите название новой рубрики и выберите шаблон для вывода."
RUBRIK_BUTTON_NEW = "Создать рубрику" RUBRIK_BUTTON_NEW = "Создать рубрику"
RUBRIK_EDIT_FIELDS = "Управление полями и правами доступа к рубрике"
RUBRIK_DESCRIPTION = "Описание рубрики" RUBRIK_DESCRIPTION = "Описание рубрики"
RUBRIK_NO_FIELDS = "<strong>Внимание!</strong> Вы не создали ни одного поля. Пожалуйста, добавьте хотя бы одно поле." RUBRIK_NO_FIELDS = "<strong>Внимание!</strong> Вы не создали ни одного поля. Пожалуйста, добавьте хотя бы одно поле."
RUBRIK_FIELDS_INFO = "В данном разделе вы можете создать группу полей, которые будут использованы для документов в данной рубрике." RUBRIK_FIELDS_INFO = "В данном разделе вы можете создать группу полей, которые будут использованы для документов в данной рубрике."
@ -84,6 +84,7 @@ RUBRIK_FIELD_DEFAULT = "Значение по умолчанию"
RUBRIK_TEMPLATE_TIP = "В данном разделе, используя язык разметки HTML, вы должны создать шаблон оформления для документов при полном просмотре," RUBRIK_TEMPLATE_TIP = "В данном разделе, используя язык разметки HTML, вы должны создать шаблон оформления для документов при полном просмотре,"
RUBRIK_HTML = "Шаблон оформления рубрики" RUBRIK_HTML = "Шаблон оформления рубрики"
RUBRIK_HTML_2 = "Шаблон оформления HEADER" RUBRIK_HTML_2 = "Шаблон оформления HEADER"
RUBRIK_HTML_2_1 = "Шаблон оформления FOOTER"
RUBRIK_HTML_3 = "Шаблон оформления TEASER" RUBRIK_HTML_3 = "Шаблон оформления TEASER"
RUBRIK_HTML_4 = "Шаблон оформления ADMIN TEASER" RUBRIK_HTML_4 = "Шаблон оформления ADMIN TEASER"
RUBRIK_PHP_DENIDED = "<strong>Ошибка!</strong><br />Вы не имеете прав на редактирование шаблона рубрики, так как он используется PHP код, а вы не имеете прав на использование PHP кода." RUBRIK_PHP_DENIDED = "<strong>Ошибка!</strong><br />Вы не имеете прав на редактирование шаблона рубрики, так как он используется PHP код, а вы не имеете прав на использование PHP кода."
@ -136,9 +137,9 @@ RUBRIK_MOVE = "Переместить"
RUBRIK_REQUEST_TPL = "Шаблон вывода поля в запросе" RUBRIK_REQUEST_TPL = "Шаблон вывода поля в запросе"
RUBRIK_BREADCRUMB = "Систменый тег Хлебных крошек" RUBRIK_BREADCRUMB = "Систменый тег Хлебных крошек"
RUBRIK_CODE = "Исполняемый код для рубрик" RUBRIK_CODE = "Исполняемый код для рубрик"
RUBRIK_START_CODE = "Код, выполняемый перед загрузкой документа" RUBRIK_START_CODE = "Код, выполняемый перед показом документа в публичной части"
RUBRIK_CODE_START = "Код, выполняемый перед сохранением документа" RUBRIK_CODE_START = "Код, выполняемый ПЕРЕД сохранением документа"
RUBRIK_CODE_END = "Код, выполняемый после сохранения документа" RUBRIK_CODE_END = "Код, выполняемый ПОСЛЕ сохранения документа"
RUBRIK_TAGS = "Тег" RUBRIK_TAGS = "Тег"
RUBRIK_TAGS_ID = "Тег ID" RUBRIK_TAGS_ID = "Тег ID"
RUBRIK_TAGS_ALIAS = "Тег Алиас" RUBRIK_TAGS_ALIAS = "Тег Алиас"
@ -278,3 +279,48 @@ RUBRIC_TMPLS_FROM = "Создать копию основного ша
RUBRIC_TMPLS_INNAME = "Введите наименование шаблона" RUBRIC_TMPLS_INNAME = "Введите наименование шаблона"
RUBRIC_TEMPL_REPORT = "Отредактировал дополнительный шаблон рубрики" RUBRIC_TEMPL_REPORT = "Отредактировал дополнительный шаблон рубрики"
RUBRIC_TMPLS_LOG_DEL = "Удалил дополнительный шаблон рубрики" RUBRIC_TMPLS_LOG_DEL = "Удалил дополнительный шаблон рубрики"
// 3.24
RUBRIC_WARNING_TIP = "Внимание! Пожалуйста, будьте предельно внимательны и помните, что неверные параметры могут сделать систему неработоспособной."
RUBRIK_EDIT_FIELDS = "Управление полями"
RUBRIK_EDIT_RULES = "Управление правами доступа к рубрике"
RUBRIC_TABLE_BTN_FIELDS = "Поля рубрики"
RUBRIC_TABLE_BTN_FTEMPLATES = "Шаблоны полей"
RUBRIC_TABLE_BTN_FGROUPS = "Группы полей"
RUBRIC_TABLE_BTN_TEMPLATES = "Шаблон рубрики"
RUBRIC_TABLE_BTN_CODE = "Исполняемый код"
RUBRIC_TABLE_BTN_RULES = "Права доступа"
RUBRIK_EDIT_CODE_TIP = "Внимание! Пожалуйста, будьте предельно внимательны и помните, что неверные параметры могут сделать систему неработоспособной."
RUBRIK_EDIT_CODE_LOAD_TIP = "Доступ к данным:<br /><strong>$this->curentdoc</strong> - Данные документа, перед подстановкой их в шаблон вывода"
RUBRIK_EDIT_CODE_BEF_TIP = "Доступ к данным:<br /><strong>$data</strong> - Все данные документа<br /><strong>$data['feld']</strong> - Данные полей документа<br /><strong>$rubric_id</strong> - ID рубрики"
RUBRIK_EDIT_CODE_AFT_TIP = "Доступ к данным:<br /><strong>$data</strong> - Все данные документа<br /><strong>$rubric_id</strong> - ID рубрики<br /><strong>$document_id</strong> - ID документа - Число или False"
RUBRIK_FIELDS_TEMPLATES_H1 = "Управление шаблонами полей"
RUBRIK_FIELDS_TEMPLATES_H2 = "Шаблоны полей"
RUBRIK_FIELDS_TEMPLATES_T1 = "Создавать/Редактировать/Удалять шаблоны полей (tpl)"
RUBRIK_FIELDS_TEMPLATES_T2 = "Редактировать шаблоны вывода полей"
RUBRIK_FIELDS_TEMPLATES_LIST = "Список типов полей используемых в рубрике"
RUBRIK_FIELDS_TEMPLATES_FNAME = "Наименование поля"
RUBRIK_FIELDS_TEMPLATES_FFUNC = "Функция"
RUBRIK_FIELDS_TEMPLATES_FTEMP = "Шаблон .tpl (по умолчанию)"
RUBRIK_FIELDS_TEMPLATES_FTEMPL = "Шаблон .tpl по ID поля"
RUBRIK_FIELDS_TEMPLATES_PANEL = "Панель"
RUBRIK_FIELDS_TEMPLATES_DOC = "Документ"
RUBRIK_FIELDS_TEMPLATES_REQ = "Запрос"
RUBRIK_FIELDS_TEMPLATES_DB = "База данных"
RUBRIK_FIELDS_TEMPLATES_BACK = "К списку типов полей"
RUBRIK_FIELDS_NO_TEMPLATES = "Нет шаблона"
RUBRIK_FIELDS_EDIT_RUBRIC = "Рубрика"
RUBRIK_FIELDS_EDIT_FIELD = "Поле:"
RUBRIK_FIELDS_EDIT_TYPE = "Тип:"
RUBRIK_FIELDS_EDIT_TPL_ADM = "Шаблон для панели"
RUBRIK_FIELDS_EDIT_TPL_DOC = "Шаблона вывода в документе"
RUBRIK_FIELDS_EDIT_TPL_REQ = "Шаблона вывода в запросе"
RUBRIK_FIELDS_EDIT_TPL_CREAT = "Создание шаблона из основного файла"
RUBRIK_FIELDS_EDIT_TPL_EDIT = "Редактирование шаблона"
RUBRIK_FIELDS_EDIT_NO_TPL = "Отсутсвует основной файл шаблона"
RUBRIC_TMPLS_CREAT = "Создать"
RUBRIC_TMPLS_DELETE = "Удалить"

8
admin/lang/ru/settings.txt

@ -137,3 +137,11 @@ pagination_start_label = "Текст ссылки "Первая""
pagination_end_label = "Текст ссылки "Последняя"" pagination_end_label = "Текст ссылки "Последняя""
pagination_next_label = "Текст ссылки "Следующая"" pagination_next_label = "Текст ссылки "Следующая""
pagination_prev_label = "Текст ссылки "Предыдущая"" pagination_prev_label = "Текст ссылки "Предыдущая""
// v3.24
SETTINGS_SAVED_ERR_FILE = "Ошибка при сохранении файла. Попробуйте снова."
SETTINGS_SAVED_FILE = "Файл успешно сохранен."
SETTINGS_FILE_EDIT_H = "Редактирование файла"
SETTINGS_FILE_CONTENT = "Содержимое файла:"
SETTINGS_FILE_ROBOTS = "Файл robots.txt"
SETTINGS_FILE_CUSTOM = "Файл func.custom.php"

1
admin/lang/ru/templates.txt

@ -80,6 +80,7 @@ TEMPLATES_NAVIGATION = "Меню навигации (ххх - номер ме
TEMPLATES_IF_PRINT = "Содержимое будет показано при печати." TEMPLATES_IF_PRINT = "Содержимое будет показано при печати."
TEMPLATES_DONOT_PRINT = "Содержание не будет показано при печати" TEMPLATES_DONOT_PRINT = "Содержание не будет показано при печати"
TEMPLATES_RUBHEADER = "Настраивается в шаблоне рубрики<br/>(Шаблон оформления HEADER)" TEMPLATES_RUBHEADER = "Настраивается в шаблоне рубрики<br/>(Шаблон оформления HEADER)"
TEMPLATES_RUBFOOTER = "Настраивается в шаблоне рубрики<br/>(Шаблон оформления FOOTER)"
TEMPLATES_NO_ITEMS = "В настоящий момент нет файлов" TEMPLATES_NO_ITEMS = "В настоящий момент нет файлов"
TEMPLATES_DOMAIN = "Системный тег вывода доменного имени" TEMPLATES_DOMAIN = "Системный тег вывода доменного имени"
TEMPLATES_DOCDB = "Системный тег вывода поля документа из БД" TEMPLATES_DOCDB = "Системный тег вывода поля документа из БД"

39
admin/modules.php

@ -1,6 +1,6 @@
<?php <?php
/** /**
* AVE.cms * AVE.cms
* *
* @package AVE.cms * @package AVE.cms
@ -11,31 +11,33 @@
* @license GPL v.2 * @license GPL v.2
*/ */
if (!defined('ACP')) if (! defined('ACP'))
{ {
header('Location:index.php'); header('Location:index.php');
exit; exit;
} }
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/modules.txt', 'modules'); $AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/modules.txt', 'modules');
if (!empty($_REQUEST['moduleaction'])) if (! empty($_REQUEST['moduleaction']))
{ {
if (!check_permission('mod_' . $_REQUEST['mod'])) if (! check_permission('mod_' . $_REQUEST['mod']))
{ {
echo $AVE_Template->get_config_vars('MAIN_NO_PERM_MODULES'); echo $AVE_Template->get_config_vars('MAIN_NO_PERM_MODULES');
exit; exit;
} }
} }
if (!empty($_REQUEST['module'])) if (! empty($_REQUEST['module']))
{ {
$module_path = preg_replace('/[^\w]/', '', $_REQUEST['module']); $module_path = preg_replace('/[^\w]/', '', $_REQUEST['module']);
if (!empty($module_path)) define('MODULE_PATH', $module_path);
}
switch($_REQUEST['action']) if (! empty($module_path))
{ define('MODULE_PATH', $module_path);
}
switch($_REQUEST['action'])
{
case '': case '':
if (check_permission_acp('modules_view')) if (check_permission_acp('modules_view'))
{ {
@ -84,7 +86,9 @@ switch($_REQUEST['action'])
{ {
$mod_path = preg_replace('/[^\w]/', '', $_REQUEST['mod']); $mod_path = preg_replace('/[^\w]/', '', $_REQUEST['mod']);
$mod_path = BASE_DIR . '/modules/' . $mod_path . '/module.php'; $mod_path = BASE_DIR . '/modules/' . $mod_path . '/module.php';
if (is_file($mod_path)) include($mod_path);
if (is_file($mod_path))
include($mod_path);
} }
break; break;
@ -94,6 +98,5 @@ switch($_REQUEST['action'])
$AVE_Module->moduleRemove($_REQUEST['module']); $AVE_Module->moduleRemove($_REQUEST['module']);
} }
break; break;
} }
?> ?>

108
admin/rubs.php

@ -73,21 +73,22 @@ switch($_REQUEST['action'])
$Rtemplate = $_POST['rubric_template']; $Rtemplate = $_POST['rubric_template'];
$Htemplate = $_POST['rubric_header_template']; $Htemplate = $_POST['rubric_header_template'];
$Ftemplate = $_POST['rubric_footer_template'];
$Ttemplate = $_POST['rubric_teaser_template']; $Ttemplate = $_POST['rubric_teaser_template'];
$Atemplate = $_POST['rubric_admin_teaser_template']; $Atemplate = $_POST['rubric_admin_teaser_template'];
$check_code = strtolower($Rtemplate.$Htemplate.$Ttemplate.$Atemplate); $check_code = strtolower($Rtemplate.$Htemplate.$Ttemplate.$Atemplate.$Ftemplate);
$ok = true; $ok = true;
if((is_php_code($check_code)) && !check_permission('rubric_php') ) if ((is_php_code($check_code)) && !check_permission('rubric_php') )
{ {
$AVE_Template->assign('php_forbidden', 1); $AVE_Template->assign('php_forbidden', 1);
$ok = false; $ok = false;
} }
if(! $ok) if (! $ok)
{ {
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_PHP_ERR'); $message = $AVE_Template->get_config_vars('RUBRIC_SAVED_PHP_ERR');
$header = $AVE_Template->get_config_vars('RUBRIC_ERROR'); $header = $AVE_Template->get_config_vars('RUBRIC_ERROR');
@ -102,11 +103,10 @@ switch($_REQUEST['action'])
{ {
$AVE_Rubric->rubricTemplateShow(1); $AVE_Rubric->rubricTemplateShow(1);
} }
} }
else else
{ {
$AVE_Rubric->rubricTemplateSave($Rtemplate, $Htemplate, $Ttemplate, $Atemplate); $AVE_Rubric->rubricTemplateSave($Rtemplate, $Htemplate, $Ttemplate, $Atemplate, $Ftemplate);
} }
break; break;
} }
@ -556,6 +556,104 @@ switch($_REQUEST['action'])
$AVE_Template->assign('content', $AVE_Template->fetch('error.tpl')); $AVE_Template->assign('content', $AVE_Template->fetch('error.tpl'));
} }
break; break;
case 'rules':
if (check_permission('rubric_edit'))
{
switch($_REQUEST['sub'])
{
case '':
switch($_REQUEST['submit'])
{
case 'saveperms':
if (check_permission('rubric_perms'))
$AVE_Rubric->rubricPermissionSave((int)$_REQUEST['Id']);
break;
}
}
$AVE_Rubric->rubricRulesShow((int)$_REQUEST['Id'], null);
break;
}
else
{
$AVE_Template->assign('erorr', $AVE_Template->get_config_vars('RUBRIK_NO_CHANGE1'));
$AVE_Template->assign('content', $AVE_Template->fetch('error.tpl'));
}
break;
case 'ftlist':
if (check_permission('rubric_edit'))
{
$AVE_Rubric->ShowFields();
}
else
{
$AVE_Template->assign('erorr', $AVE_Template->get_config_vars('RUBRIK_NO_PERMISSION'));
$AVE_Template->assign('content', $AVE_Template->fetch('error.tpl'));
}
break;
case 'ftshowfield':
if (check_permission('rubric_edit'))
{
$AVE_Rubric->ShowFieldsByType($_REQUEST['type']);
}
else
{
$AVE_Template->assign('erorr', $AVE_Template->get_config_vars('RUBRIK_NO_PERMISSION'));
$AVE_Template->assign('content', $AVE_Template->fetch('error.tpl'));
}
break;
case 'ftcreate':
if (check_permission('rubric_edit'))
{
$AVE_Rubric->EditFieldTpl((int)$_REQUEST['id'], $_REQUEST['fld'], $_REQUEST['type']);
}
else
{
$AVE_Template->assign('erorr', $AVE_Template->get_config_vars('RUBRIK_NO_PERMISSION'));
$AVE_Template->assign('content', $AVE_Template->fetch('error.tpl'));
}
break;
case 'ftedit':
if (check_permission('rubric_edit'))
{
$AVE_Rubric->EditFieldTpl((int)$_REQUEST['id'], $_REQUEST['fld'], $_REQUEST['type']);
}
else
{
$AVE_Template->assign('erorr', $AVE_Template->get_config_vars('RUBRIK_NO_PERMISSION'));
$AVE_Template->assign('content', $AVE_Template->fetch('error.tpl'));
}
break;
case 'ftsave':
if (check_permission('rubric_edit'))
{
$AVE_Rubric->SaveFieldTpl((int)$_REQUEST['field_id'], $_REQUEST['field_name'], $_REQUEST['field_type'], $_REQUEST['func']);
}
else
{
$AVE_Template->assign('erorr', $AVE_Template->get_config_vars('RUBRIK_NO_PERMISSION'));
$AVE_Template->assign('content', $AVE_Template->fetch('error.tpl'));
}
break;
case 'ftdelete':
if (check_permission('rubric_edit'))
{
$AVE_Rubric->DeleteFieldTpl((int)$_REQUEST['id'], $_REQUEST['fld'], $_REQUEST['type'], $_REQUEST['func']);
}
else
{
$AVE_Template->assign('erorr', $AVE_Template->get_config_vars('RUBRIK_NO_PERMISSION'));
$AVE_Template->assign('content', $AVE_Template->fetch('error.tpl'));
}
break;
} }
?> ?>

11
admin/settings.php

@ -172,6 +172,15 @@ switch($_REQUEST['action'])
$AVE_Settings->settingsPaginationsDel(); $AVE_Settings->settingsPaginationsDel();
break; break;
//-- v3.2 //-- v3.2
}
//-- v3.24
case 'robots':
$AVE_Settings->editRobots();
break;
case 'custom':
$AVE_Settings->editCustom();
break;
//-- v3.24
}
?> ?>

2
admin/start.php

@ -18,7 +18,7 @@ if (!defined('ACP'))
} }
get_ave_info(); get_ave_info();
get_editable_module(); getInstaledModules();
DisplayMainDocuments(); DisplayMainDocuments();
get_online_users(); get_online_users();
getLogRecords(); getLogRecords();

14
admin/templates/css/main.css

@ -413,6 +413,20 @@ input, textarea { box-sizing:border-box; }
a.btn{font-size: 10px;font-weight: bold;text-transform: uppercase;padding: 4px 12px;cursor: pointer;font-family: Arial, Helvetica, sans-serif;line-height: 12px;} a.btn{font-size: 10px;font-weight: bold;text-transform: uppercase;padding: 4px 12px;cursor: pointer;font-family: Arial, Helvetica, sans-serif;line-height: 12px;}
a.button, span.button { padding: 4px 10px; } a.button, span.button { padding: 4px 10px; }
.topBtn {
width: 100%;
display: block;
padding: 4px 0 !important;
text-align: center;
height: 22px;
line-height: 22px;
border: none !important;
}
.tableButtons td {
padding: 0 10px;
}
/* ========== Pagination ========== */ /* ========== Pagination ========== */
.pagination { margin: auto; width: auto; text-align: center; margin-top: 40px; } .pagination { margin: auto; width: auto; text-align: center; margin-top: 40px; }

15
admin/templates/documents/doc_search.tpl

@ -34,20 +34,19 @@
}, },
speed: 5, speed: 5,
loadOpen: function(elem, opts) { loadOpen: function(elem, opts) {
$(".mainForm select").not("[multiple*=multiple]").styler({
selectVisibleOptions: 5,
selectSearch: false
});
elem.next().show(); elem.next().show();
}, },
loadClose: function(elem, opts) { loadClose: function(elem, opts) {
$(".mainForm select").not("[multiple*=multiple]").styler({
selectVisibleOptions: 5,
selectSearch: false
});
elem.next().hide(); elem.next().hide();
} }
}); });
$('.collapsible').on('click', function() {
setTimeout(function() {
AveAdmin.sticky_panel_refresh();
AveAdmin.select_form();
}, 10);
});
{/literal} {/literal}
$('#document_expire').datepicker({ldelim} $('#document_expire').datepicker({ldelim}

6
admin/templates/documents/form.tpl

@ -625,6 +625,7 @@ $(document).ready(function(){ldelim}
<h5>{#DOC_MAIN_CONTENT#}</h5> <h5>{#DOC_MAIN_CONTENT#}</h5>
</div> </div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic"> <table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="10">
<col width="250"> <col width="250">
<col> <col>
<tbody> <tbody>
@ -633,12 +634,15 @@ $(document).ready(function(){ldelim}
{if $document->count_groups > 1} {if $document->count_groups > 1}
<tr class="group_row_{$document_field_group.group_id|default:0} group_row grey" id="group_row_{$document_field_group.group_id|default:0}"> <tr class="group_row_{$document_field_group.group_id|default:0} group_row grey" id="group_row_{$document_field_group.group_id|default:0}">
<td colspan="3" class="aligncenter"><h5>{if $document_field_group.group_title}{$document_field_group.group_title}{else}{#DOC_FIELD_G_UNKNOW#}{/if}</h5></td> <td colspan="4" class="aligncenter"><h5>{if $document_field_group.group_title}{$document_field_group.group_title}{else}{#DOC_FIELD_G_UNKNOW#}{/if}</h5></td>
</tr> </tr>
{/if} {/if}
{foreach from=$document_field_group.fields item=field} {foreach from=$document_field_group.fields item=field}
<tr class="field_row_{$field.Id} field_row" id="field_row_{$field.Id}"> <tr class="field_row_{$field.Id} field_row" id="field_row_{$field.Id}">
<td align="center">
<span class="code topDir"{if $field.rubric_field_alias}title="{$field.rubric_field_alias}"{/if}>{$field.Id}</span>
</td>
<td> <td>
<strong>{$field.rubric_field_title|escape}</strong> <strong>{$field.rubric_field_title|escape}</strong>
{if $field.rubric_field_description} {if $field.rubric_field_description}

5
admin/templates/documents/form_after.tpl

@ -8,12 +8,15 @@
<ul id="doclinks" style="padding-left:70px"> <ul id="doclinks" style="padding-left:70px">
<li><span class="icon_sprite ico_edit floatleft"></span>&nbsp;<a href="index.php?do=docs&action=edit&Id={$document_id}&cp={$sess}">{#DOC_EDIT_THIS_DOCUMENT#}</a></li> <li><span class="icon_sprite ico_edit floatleft"></span>&nbsp;<a href="index.php?do=docs&action=edit&Id={$document_id}&cp={$sess}">{#DOC_EDIT_THIS_DOCUMENT#}</a></li>
<li><span class="icon_sprite ico_look floatleft"></span>&nbsp;<a href="../{if $document_id!=1}index.php?id={$document_id}&cp={$sess}{/if}" target="_blank">{#DOC_DISPLAY_NEW_WINDOW#}</a><br /><br /></li> <li><span class="icon_sprite ico_look floatleft"></span>&nbsp;<a href="../{if $document_id != 1}index.php?id={$document_id}&cp={$sess}{/if}" target="_blank">{#DOC_DISPLAY_NEW_WINDOW#}</a><br /><br /></li>
{if $innavi} {if $innavi}
<li class="navig"><span class="icon_sprite ico_navigation floatleft"></span><a href="javascript:void(0);">{#DOC_INCLUDE_NAVIGATION#}</a><br /><br /></li> <li class="navig"><span class="icon_sprite ico_navigation floatleft"></span><a href="javascript:void(0);">{#DOC_INCLUDE_NAVIGATION#}</a><br /><br /></li>
{/if} {/if}
<li><span class="icon_sprite ico_add floatleft"></span>&nbsp;<a href="index.php?do=docs&action=copy&rubric_id={$rubric_id}&Id={$document_id}&cp={$sess}">{#DOC_ADD_COPY_DOCUMENT#}</a><br /></li> <li><span class="icon_sprite ico_add floatleft"></span>&nbsp;<a href="index.php?do=docs&action=copy&rubric_id={$rubric_id}&Id={$document_id}&cp={$sess}">{#DOC_ADD_COPY_DOCUMENT#}</a><br /></li>
<li><span class="icon_sprite ico_add floatleft"></span>&nbsp;<a href="index.php?do=docs&action=new&rubric_id={$rubric_id}&cp={$sess}">{#DOC_ADD_NEW_DOCUMENT#}</a><br /><br /></li> <li><span class="icon_sprite ico_add floatleft"></span>&nbsp;<a href="index.php?do=docs&action=new&rubric_id={$rubric_id}&cp={$sess}">{#DOC_ADD_NEW_DOCUMENT#}</a><br /><br /></li>
{if $search_query}
<li><span class="icon_sprite ico_copy floatleft"></span>&nbsp;<a href="index.php?do=docs&action=redirect&document_id={$document_id}&cp={$sess}">{#DOC_CLOSE_SEARCH_RUBRIC#}</a></li>
{/if}
<li><span class="icon_sprite ico_copy floatleft"></span>&nbsp;<a href="index.php?do=docs&rubric_id={$rubric_id}&cp={$sess}">{#DOC_CLOSE_WINDOW_RUBRIC#}</a></li> <li><span class="icon_sprite ico_copy floatleft"></span>&nbsp;<a href="index.php?do=docs&rubric_id={$rubric_id}&cp={$sess}">{#DOC_CLOSE_WINDOW_RUBRIC#}</a></li>
<li><span class="icon_sprite ico_copy floatleft"></span>&nbsp;<a href="index.php?do=docs&cp={$sess}">{#DOC_CLOSE_WINDOW#}</a></li> <li><span class="icon_sprite ico_copy floatleft"></span>&nbsp;<a href="index.php?do=docs&cp={$sess}">{#DOC_CLOSE_WINDOW#}</a></li>
</ul> </ul>

4
admin/templates/groups/perms.tpl

@ -62,8 +62,10 @@
<td></td> <td></td>
<td> <td>
{foreach from=$modules item=module} {foreach from=$modules item=module}
<input type="checkbox" name="perms[]" class="float" value="mod_{$module->ModuleSysName}"{if in_array($module->ModuleFunction, $g_group_permissions) || in_array('alles', $g_group_permissions)} checked="checked"{/if}{if $smarty.request.Id == 1 || $smarty.request.Id == $PAGE_NOT_FOUND_ID || in_array('alles', $g_group_permissions)} disabled="disabled"{/if}><label>{$module->ModuleName}</label> {if $module.status == 1 && $module.ModuleIsFunction == 1}
<input type="checkbox" name="perms[]" class="float" value="mod_{$module.ModuleSysName}"{if in_array($module.ModuleFunction, $g_group_permissions) || in_array('alles', $g_group_permissions)} checked="checked"{/if}{if $smarty.request.Id == 1 || $smarty.request.Id == $PAGE_NOT_FOUND_ID || in_array('alles', $g_group_permissions)} disabled="disabled"{/if}><label>{$module.ModuleName}</label>
<div class="clear"></div> <div class="clear"></div>
{/if}
{/foreach} {/foreach}
</td> </td>
</tr> </tr>

4
admin/templates/js/main.js

@ -508,8 +508,8 @@ var AveAdmin = {
setTimeout(function() { setTimeout(function() {
AveAdmin.sticky_panel_refresh(); AveAdmin.sticky_panel_refresh();
}, 1); AveAdmin.select_form();
}, 10);
}, },
//Окно очистки кэша + Сессий //Окно очистки кэша + Сессий

60
admin/templates/main.tpl

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
@ -171,16 +171,16 @@
{rdelim}); {rdelim});
</script> </script>
</head> </head>
<body> <body>
<div id="leftNav_show"> <div id="leftNav_show">
<a href="javascript:void(0);" id="toggle-LeftMenu"><span class="rightDir {if $smarty.cookies.LeftMenu != "hidden"}close{/if}" title="{#MAIN_SHOWHIDE#}"></span></a> <a href="javascript:void(0);" id="toggle-LeftMenu"><span class="rightDir {if $smarty.cookies.LeftMenu != "hidden"}close{/if}" title="{#MAIN_SHOWHIDE#}"></span></a>
</div> </div>
<!-- Top Menu --> <!-- Top Menu -->
<div id="topNav"> <div id="topNav">
<div class="fixed"> <div class="fixed">
<div class="wrapper"> <div class="wrapper">
<div class="welcome"> <div class="welcome">
@ -193,7 +193,7 @@
</div> </div>
<div class="userNav"> <div class="userNav">
<ul> <ul>
{if check_permission('documents_edit') || check_permission('rubric_edit') || check_permission('request_edit') || check_permission('sysblocks_edit') || check_permission('template_edit') || check_permission('navigation_edit') || check_permission('user_edit') || check_permission('group_edit')} {if $smarty.const.ADMIN_MENU_QUICK_ADD}
<li class="dropdown"><a title=""><img src="{$tpl_dir}/images/icons/add.png" alt="" /><span>{#MAIN_BUTTON_ADD#}</span></a> <li class="dropdown"><a title=""><img src="{$tpl_dir}/images/icons/add.png" alt="" /><span>{#MAIN_BUTTON_ADD#}</span></a>
<ul> <ul>
{if check_permission('documents_edit')}<li><a onclick="windowOpen('index.php?do=docs&action=add_new&pop=1&cp={$sess}','750','500','1')" href="javascript:void(0);">{#MAIN_ADD_DOC#}</a></li>{/if} {if check_permission('documents_edit')}<li><a onclick="windowOpen('index.php?do=docs&action=add_new&pop=1&cp={$sess}','750','500','1')" href="javascript:void(0);">{#MAIN_ADD_DOC#}</a></li>{/if}
@ -208,22 +208,20 @@
</li> </li>
{/if} {/if}
<li class="dropdown dd_page" {if $smarty.cookies.LeftMenu == "visible"}style="display: none;"{/if}><a title=""><img src="{$tpl_dir}/images/icons/tasks.png" alt="" /><span>{#MAIN_BRANCHES#}</span></a> <li class="dropdown dd_page" {if $smarty.cookies.LeftMenu == "visible"}style="display: none;"{/if}>
<a title=""><img src="{$tpl_dir}/images/icons/tasks.png" alt="" /><span>{#MAIN_BRANCHES#}</span></a>
<ul class="menu_page"> <ul class="menu_page">
{$navi_top} {$navi_top}
</ul> </ul>
</li> </li>
{*
<li><img src="{$tpl_dir}/images/icons/messages.png" alt="" /><span>Messages</span><span class="numberTop">8</span></li>
*}
{if check_permission('modules_view')} {if check_permission('modules_view')}
{if $modules} {if $modules}
<li class="dropdown"><a title=""><img src="{$tpl_dir}/images/icons/subInbox.png" alt="" /><span>{#MAIN_LINK_MODULES_H#}</span></a> <li class="dropdown"><a title=""><img src="{$tpl_dir}/images/icons/subInbox.png" alt="" /><span>{#MAIN_LINK_MODULES_H#}</span></a>
{if $modules && check_permission('modules_view')} {if $modules && check_permission('modules_view')}
<ul> <ul>
{foreach from=$modules item=modul} {foreach from=$modules item=module}
<li><a href="index.php?do=modules&action=modedit&mod={$modul->ModuleSysName}&moduleaction=1&cp={$sess}">{$modul->ModuleName}</a></li> <li><a href="index.php?do=modules&action=modedit&mod={$module.ModuleSysName}&moduleaction=1&cp={$sess}">{$module.ModuleName}</a></li>
{/foreach} {/foreach}
</ul> </ul>
{/if} {/if}
@ -242,9 +240,9 @@
</li> </li>
{/if} {/if}
{if check_permission('cache_clear')}<li><a href="javascript:void(0);" class="clearCache" title="{#MAIN_STAT_CLEAR_CACHE#}"><img src="{$tpl_dir}/images/icons/subTrash.png" alt="" /><span>{#MAIN_STAT_CLEAR_CACHE#}</span></a></li>{/if} {if check_permission('cache_clear')}<li><a href="javascript:void(0);" class="clearCache" title="{#MAIN_STAT_CLEAR_CACHE#}"><img src="{$tpl_dir}/images/icons/subTrash.png" alt="" /><span>{#MAIN_STAT_CLEAR_CACHE#}</span></a></li>{/if}
{* {*
<li><a href="#" title="{#MAIN_LOGIN_HELP#}"><img src="{$tpl_dir}/images/icons/help.png" alt="" /><span>{#MAIN_LOGIN_HELP#}</span></a></li> <li><a href="#" title="{#MAIN_LOGIN_HELP#}"><img src="{$tpl_dir}/images/icons/help.png" alt="" /><span>{#MAIN_LOGIN_HELP#}</span></a></li>
*} *}
<li> <li>
<a href="../" title="{#MAIN_LINK_SITE#}" target="_blank"><img src="{$tpl_dir}/images/icons/preview.png" alt="" /><span>{#MAIN_LINK_SITE#}</span></a> <a href="../" title="{#MAIN_LINK_SITE#}" target="_blank"><img src="{$tpl_dir}/images/icons/preview.png" alt="" /><span>{#MAIN_LINK_SITE#}</span></a>
</li> </li>
@ -254,21 +252,18 @@
<div class="fix"></div> <div class="fix"></div>
</div> </div>
</div> </div>
</div> </div>
<!-- Header --> <!-- Header -->
<div id="header" class="wrapper"> <div id="header" class="wrapper">
<!-- <div class="logo"><a href="index.php" class="box"></a></div> -->
<div class="fix"></div> <div class="fix"></div>
</div> </div>
<!-- Wrapper --> <!-- Wrapper -->
<div class="wrapper"> <div class="wrapper">
<!-- Left navigation --> <!-- Left navigation -->
<div class="leftNav {if $smarty.cookies.LeftMenu == "hidden"}hidden{/if}"> <div class="leftNav {if $smarty.cookies.LeftMenu == "hidden"}hidden{/if}">
{*<div class="logo"><a href="index.php" class="box"></a></div>*}
<ul id="menu"> <ul id="menu">
<li><a href="index.php" {if $smarty.request.do == ''}class="active collapse-close"{/if}><span>{#MAIN_LINK_HOME#}</span></a></li> <li><a href="index.php" {if $smarty.request.do == ''}class="active collapse-close"{/if}><span>{#MAIN_LINK_HOME#}</span></a></li>
{$navi} {$navi}
@ -281,20 +276,19 @@
</div> </div>
<div class="fix"></div> <div class="fix"></div>
</div> </div>
<!-- Footer --> <!-- Footer -->
<div id="footer"> <div id="footer">
<div class="wrapper"> <div class="wrapper">
<span class="floatleft">{#oficial_site#}: {$smarty.const.APP_INFO}</span> <span class="floatleft">{#oficial_site#}: {$smarty.const.APP_INFO}</span>
<span class="floatleft ml20">{#support#}: <a href="mailto:support@ave-cms.ru">support@ave-cms.ru</a></span> <span class="floatleft ml20">{#support#}: <a href="mailto:support@ave-cms.ru">support@ave-cms.ru</a></span>
<span class="floatright">{$smarty.const.APP_NAME} v{$smarty.const.APP_VERSION}</span> <span class="floatright">{$smarty.const.APP_NAME} v{$smarty.const.APP_VERSION}</span>
</div> </div>
</div> </div>
<script type="text/javascript" src="{$ABS_PATH}admin/lang/{$smarty.session.admin_language}/scripts.js"></script> <script type="text/javascript" src="{$ABS_PATH}admin/lang/{$smarty.session.admin_language}/scripts.js"></script>
<script src="{$tpl_dir}/js/main.js" type="text/javascript"></script> <script src="{$tpl_dir}/js/main.js" type="text/javascript"></script>
</body> </body>
</html> </html>

136
admin/templates/rubs/_field_code.tpl

@ -0,0 +1,136 @@
<div class="title">
<h5>{#RUBRIK_FIELDS_TEMPLATES_H2#}</h5>
</div>
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li class="firstB"><a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a></li>
<li><a href="index.php?do=modules&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a></li>
<li><a href="index.php?do=modules&action=modedit&mod=fieldsmanager&moduleaction=1&amp;cp={$sess}">Управление полями</a></li>
{if $params.id}
<li><strong>{#RUBRIK_FIELDS_EDIT_RUBRIC#}</strong> > {$params.field.rubric_title}</li>
<li><strong>{#RUBRIK_FIELDS_EDIT_FIELD#}</strong> > {$params.field.rubric_field_title}</li>
{/if}
<li><strong>{#RUBRIK_FIELDS_EDIT_TYPE#}</strong> > {$main.name} {if $params.id}(id: {$params.id}){/if}</li>
<li>
<strong class="code">
{if $params.type == 'adm'}
{#RUBRIK_FIELDS_EDIT_TPL_ADM#}
{elseif $params.type == 'doc'}
{#RUBRIK_FIELDS_EDIT_TPL_DOC#}{
elseif $params.type == 'req'}
{#RUBRIK_FIELDS_EDIT_TPL_REQ#}
{/if}
</strong>
</li>
</ul>
</div>
</div>
{if $code_text}
<form id="code_templ" method="post" action="index.php?do=rubs&action=ftsave&cp={$sess}" class="mainForm">
<div class="widget first">
<div class="head">
<h5 class="iFrames">{if $params.func == 'new'}{#RUBRIK_FIELDS_EDIT_TPL_CREAT#}{else}{#RUBRIK_FIELDS_EDIT_TPL_EDIT#}{/if}</h5>
</div>
<div class="rowElem" style="padding: 0">
<textarea id="code_text" name="code_text">{$code_text|escape}</textarea>
<div class="fix"></div>
</div>
<div class="rowElem">
<button class="basicBtn SaveButton">{#RUBRIK_ALIAS_BUTT#}</button>
&nbsp;
<a href="javascript:void(0);" class="button redBtn Close">{#RUBRIK_BUTTON_TPL_CLOSE#}</a>
<div class="fix"></div>
</div>
</div>
<input type="hidden" name="func" value="{$params.func}" />
{if $params.id}
<input type="hidden" name="field_id" value="{$params.id}" />
{/if}
<input type="hidden" name="field_name" value="{$params.fld}" />
<input type="hidden" name="field_type" value="{$params.type}" />
</form>
{include file="$codemirror_editor" conn_id="ftpl" textarea_id='code_text' ctrls='$("#code_templ").ajaxSubmit(sett_options);' height=400}
<script language="javascript">
$(document).ready(function(){ldelim}
$(".SaveButton").on('click', function(event){ldelim}
event.preventDefault();
$("#code_templ").ajaxSubmit({ldelim}
url: 'index.php?do=rubs&action=ftsave&cp={$sess}',
dataType: 'json',
beforeSubmit: function(){ldelim}
$.alerts._overlay('show');
{rdelim},
success: function(data){ldelim}
$.jGrowl(data['message'], {ldelim}
header: data['header'],
theme: data['theme']
{rdelim});
$.alerts._overlay('hide');
{if $params.func == 'new'}
var html =
'<a data-dialog="rft-{$params.id}" href="index.php?do=rubs&action=ftedit&rubric_id={$smarty.request.rubric_id}&id={$params.id}&fld={$params.fld}&type={$params.type}&cp={$sess}&pop=1&onlycontent=1" data-height="650" data-modal="true" class="openDialog">{#RUBRIC_TMPLS_EDIT#}</a>'
+ '<br />'
+ '<a href="index.php?do=rubs&action=ftdelete&rubric_id={$smarty.request.rubric_id}&id={$params.id}&fld={$params.fld}&type={$params.type}&cp={$sess}" class="link">{#RUBRIC_TMPLS_DELETE#}</a>'
;
$('#{$params.type}_{$params.fld}_{$params.id}').html(html);
$('a.openDialog').off();
AveAdmin.modalDialog();
{/if}
$('#ajax-dialog-rft-{if $params.id}{$params.id}{else}{$params.fld}{/if}').dialog('destroy').remove();
{rdelim}
{rdelim});
return false;
{rdelim});
$(".Close").on('click', function(event){ldelim}
event.preventDefault();
$('#ajax-dialog-rft-{if $params.id}{$params.id}{else}{$params.fld}{/if}').dialog('destroy').remove();
return false;
{rdelim});
{literal}
setTimeout(function(){editorftpl.refresh();}, 20);
{/literal}
{rdelim});
</script>
{else}
<div class="widget first">
<div class="head">
<h5 class="iFrames">
{$main.name}&nbsp;-&nbsp;
{if $params.type == 'adm'}
{#RUBRIK_FIELDS_EDIT_TPL_ADM#}
{elseif $params.type == 'doc'}
{#RUBRIK_FIELDS_EDIT_TPL_DOC#}{
elseif $params.type == 'req'}
{#RUBRIK_FIELDS_EDIT_TPL_REQ#}
{/if}
</h5>
</div>
</div>
<ul class="messages first">
<li class="highlight red">
<strong>{#RUBRIK_FIELDS_EDIT_NO_TPL#}</strong>
</li>
</ul>
{/if}

142
admin/templates/rubs/_field_list.tpl

@ -0,0 +1,142 @@
<script language="Javascript" type="text/javascript">
var sess = '{$sess}';
</script>
<div class="title">
<h5>{#RUBRIK_FIELDS_TEMPLATES_H2#}</h5>
</div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
<ul style="list-style: square; margin-left:15px;">
<li>{#RUBRIK_FIELDS_TEMPLATES_T1#}</li>
<li>{#RUBRIK_FIELDS_TEMPLATES_T2#}</li>
</ul>
</div>
</div>
<table class="first tableButtons" cellpadding="0" cellspacing="0" width="100%" id="rubricButtons">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<tr>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=edit&Id={$smarty.request.rubric_id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FIELDS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=fieldsgroups&Id={$smarty.request.rubric_id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FGROUPS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=template&Id={$smarty.request.rubric_id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_TEMPLATES#}</a>
</td>
<td>
{if check_permission('rubric_code')}
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=code&Id={$smarty.request.rubric_id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_CODE#}</a>
{/if}
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=rules&Id={$smarty.request.rubric_id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_RULES#}</a>
</td>
</tr>
</table>
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li class="firstB">
<a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a>
</li>
<li>
<a href="index.php?do=rubs&cp={$sess}">{#RUBRIK_SUB_TITLE#}</a>
</li>
<li>{#RUBRIK_FIELDS_TEMPLATES_H1#}</li>
<li><strong class="code">{$rubric->rubric_title}</strong></li>
</ul>
</div>
</div>
{foreach from=$rubrics item=rubric}
<div class="widget">
<div class="head">
<h5>{$main.name} ({$main.id})</h5>
<div class="num">
<a class="basicNum" href="index.php?do=rubs&action=ftlist&Id={$smarty.request.rubric_id}&cp={$sess}">{#RUBRIK_FIELDS_TEMPLATES_BACK#}</a>
</div>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<col width="10" />
<col />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="80" />
<thead>
<tr>
<td colspan="1" rowspan="2">Id</td>
<td colspan="1" rowspan="2">{#RUBRIK_FIELDS_TEMPLATES_FNAME#}</td>
<td colspan="3" rowspan="1">{#RUBRIK_FIELDS_TEMPLATES_FTEMPL#}</td>
<td colspan="1" rowspan="2">{#RUBRIK_FIELDS_TEMPLATES_DB#}</td>
</tr>
<tr>
<td style="border-left: solid 1px #C7D6E6 !important;">{#RUBRIK_FIELDS_TEMPLATES_PANEL#}</td>
<td>{#RUBRIK_FIELDS_TEMPLATES_DOC#}</td>
<td>{#RUBRIK_FIELDS_TEMPLATES_REQ#}</td>
</tr>
</thead>
<tbody>
{foreach from=$rubric.fields item=field}
<tr class="center">
<td align="center">{$field.id}</td>
<td><strong>{$field.title}</strong></td>
<td align="center" id="adm_{$main.id}_{$field.id}">
{if $field.adm_main}
{if $field.adm_tpl}
<a data-dialog="rft-{$field.id}" href="index.php?do=rubs&action=ftedit&rubric_id={$smarty.request.rubric_id}&id={$field.id}&fld={$main.id}&type=adm&cp={$sess}&pop=1&onlycontent=1" data-height="650" data-modal="true" class="openDialog">{#RUBRIC_TMPLS_EDIT#}</a>
<br />
<a href="index.php?do=rubs&action=ftdelete&rubric_id={$smarty.request.rubric_id}&id={$field.id}&fld={$main.id}&type=adm&cp={$sess}" class="link">{#RUBRIC_TMPLS_DELETE#}</a>
{else}
<a data-dialog="rft-{$field.id}" href="index.php?do=rubs&action=ftcreate&rubric_id={$smarty.request.rubric_id}&id={$field.id}&fld={$main.id}&amp;type=adm&cp={$sess}&pop=1&onlycontent=1" data-height="650" data-modal="true" class="openDialog">{#RUBRIC_TMPLS_CREAT#}</a>
{/if}
{else}
<small>{#RUBRIK_FIELDS_NO_TEMPLATES#}</small>
{/if}
</td>
<td align="center" id="doc_{$main.id}_{$field.id}">
{if $field.doc_main}
{if $field.doc_tpl}
<a data-dialog="rft-{$field.id}" href="index.php?do=rubs&action=ftedit&rubric_id={$smarty.request.rubric_id}&id={$field.id}&fld={$main.id}&type=doc&cp={$sess}&pop=1&onlycontent=1" data-height="650" data-modal="true" class="openDialog">{#RUBRIC_TMPLS_EDIT#}</a>
<br />
<a href="index.php?do=rubs&action=ftdelete&rubric_id={$smarty.request.rubric_id}&id={$field.id}&fld={$main.id}&type=doc&cp={$sess}" class="link">{#RUBRIC_TMPLS_DELETE#}</a>
{else}
<a data-dialog="rft-{$field.id}" href="index.php?do=rubs&action=ftcreate&rubric_id={$smarty.request.rubric_id}&id={$field.id}&fld={$main.id}&amp;type=doc&cp={$sess}&pop=1&onlycontent=1" data-height="650" data-modal="true" class="openDialog">{#RUBRIC_TMPLS_CREAT#}</a>
{/if}
{else}
<small>{#RUBRIK_FIELDS_NO_TEMPLATES#}</small>
{/if}
</td>
<td align="center" id="req_{$main.id}_{$field.id}">
{if $field.req_main}
{if $field.req_tpl}
<a data-dialog="rft-{$field.id}" href="index.php?do=rubs&action=ftedit&rubric_id={$smarty.request.rubric_id}&id={$field.id}&fld={$main.id}&type=req&cp={$sess}&pop=1&onlycontent=1" data-height="650" data-modal="true" class="openDialog">{#RUBRIC_TMPLS_EDIT#}</a>
<br />
<a href="index.php?do=rubs&action=ftdelete&rubric_id={$smarty.request.rubric_id}&id={$field.id}&fld={$main.id}&type=req&cp={$sess}" class="link">{#RUBRIC_TMPLS_DELETE#}</a>
{else}
<a data-dialog="rft-{$field.id}" href="index.php?do=rubs&action=ftcreate&rubric_id={$smarty.request.rubric_id}&id={$field.id}&fld={$main.id}&amp;type=req&cp={$sess}&pop=1&onlycontent=1" data-height="650" data-modal="true" class="openDialog">{#RUBRIC_TMPLS_CREAT#}</a>
{/if}
{else}
<small>{#RUBRIK_FIELDS_NO_TEMPLATES#}</small>
{/if}
</td>
<td align="center">
<a data-dialog="rft-{$field.id}" title="{#RUBRIK_FILED_TEMPLATE_H#}" href="index.php?do=rubs&action=field_template&field_id={$field.id}&rubric_id={$rubric.rubric_id}&cp={$sess}&pop=1&onlycontent=1" data-height="700" data-modal="true" data-title="{#RUBRIK_FILED_TEMPLATE_H#}" class="openDialog icon_sprite ico_template topleftDir"></a>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
{/foreach}
{include file="$codemirror_connect"}

136
admin/templates/rubs/_fields_list.tpl

@ -0,0 +1,136 @@
<script language="Javascript" type="text/javascript">
var sess = '{$sess}';
</script>
<div class="title">
<h5>{#RUBRIK_FIELDS_TEMPLATES_H2#}</h5>
</div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
<ul style="list-style: square; margin-left:15px;">
<li>{#RUBRIK_FIELDS_TEMPLATES_T1#}</li>
<li>{#RUBRIK_FIELDS_TEMPLATES_T2#}</li>
</ul>
</div>
</div>
<table class="first tableButtons" cellpadding="0" cellspacing="0" width="100%" id="rubricButtons">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<tr>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FIELDS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=fieldsgroups&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FGROUPS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_TEMPLATES#}</a>
</td>
<td>
{if check_permission('rubric_code')}
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_CODE#}</a>
{/if}
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=rules&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_RULES#}</a>
</td>
</tr>
</table>
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li class="firstB">
<a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a>
</li>
<li>
<a href="index.php?do=rubs&cp={$sess}">{#RUBRIK_SUB_TITLE#}</a>
</li>
<li>{#RUBRIK_FIELDS_TEMPLATES_H1#}</li>
<li><strong class="code">{$rubric->rubric_title}</strong></li>
</ul>
</div>
</div>
<div class="widget">
<div class="head">
<h5>{#RUBRIK_FIELDS_TEMPLATES_LIST#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<col />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="80" />
<col width="100" />
<col width="80" />
<thead>
<tr>
</tr>
<tr>
<td colspan="1" rowspan="2">{#RUBRIK_FIELDS_TEMPLATES_FNAME#}</td>
<td colspan="1" rowspan="2">{#RUBRIK_FIELDS_TEMPLATES_FFUNC#}</td>
<td colspan="3" rowspan="1">{#RUBRIK_FIELDS_TEMPLATES_FTEMP#}</td>
</tr>
<tr>
<td style="border-left: solid 1px #C7D6E6 !important;">{#RUBRIK_FIELDS_TEMPLATES_PANEL#}</td>
<td>{#RUBRIK_FIELDS_TEMPLATES_DOC#}</td>
<td>{#RUBRIK_FIELDS_TEMPLATES_REQ#}</td>
</tr>
</thead>
<tbody>
{foreach from=$fields item=field key=number}
{if in_array($field.id, $enable)}
<tr>
<td>
<strong><a class="link" href="index.php?do=rubs&action=ftshowfield&rubric_id={$smarty.request.Id}&type={$field.id}&cp={$sess}">{$field.name}</a></strong>
</td>
<td class="date_text dgrey" align="center">
{$field.id}
</td>
<td align="center">
{foreach from=$exists item=exist key=key}
{if $field.id == $key}
{if $exist.adm}
<a data-dialog="rft-{$field.id}" href="index.php?do=rubs&action=ftempledit&rubric_id={$smarty.request.Id}&fld={$field.id}&type=adm&cp={$sess}&pop=1&onlycontent=1" data-height="650" data-modal="true" class="openDialog">{#RUBRIC_TMPLS_EDIT#}</a>
{/if}
{/if}
{/foreach}
</td>
<td align="center">
{foreach from=$exists item=exist key=key}
{if $field.id == $key}
{if $exist.doc}
<a data-dialog="rft-{$field.id}" href="index.php?do=rubs&action=ftempledit&rubric_id={$smarty.request.Id}&fld={$field.id}&type=doc&cp={$sess}&pop=1&onlycontent=1" data-height="650" data-modal="true" class="openDialog">{#RUBRIC_TMPLS_EDIT#}</a>
{/if}
{/if}
{/foreach}
</td>
<td align="center">
{foreach from=$exists item=exist key=key}
{if $field.id == $key}
{if $exist.req}
<a data-dialog="rft-{$field.id}" href="index.php?do=rubs&action=ftempledit&rubric_id={$smarty.request.Id}&fld={$field.id}&type=req&cp={$sess}&pop=1&onlycontent=1" data-height="650" data-modal="true" class="openDialog">{#RUBRIC_TMPLS_EDIT#}</a>
{/if}
{/if}
{/foreach}
</td>
</tr>
{/if}
{/foreach}
</tbody>
</table>
</div>
{include file="$codemirror_connect"}

51
admin/templates/rubs/code.tpl

@ -1,11 +1,42 @@
<script language="Javascript" type="text/javascript"> <script language="Javascript" type="text/javascript">
var sess = '{$sess}'; var sess = '{$sess}';
</script> </script>
<div class="title"> <div class="title">
<h5>{#RUBRIK_EDIT_CODE_T#}</h5> <h5>{#RUBRIK_EDIT_CODE_T#}</h5>
</div> </div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#RUBRIK_EDIT_CODE_TIP#}
</div>
</div>
<table class="first tableButtons" cellpadding="0" cellspacing="0" width="100%" id="rubricButtons">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<tr>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FIELDS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=ftlist&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FTEMPLATES#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=fieldsgroups&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FGROUPS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_TEMPLATES#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=rules&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_RULES#}</a>
</td>
</tr>
</table>
<div class="breadCrumbHolder module"> <div class="breadCrumbHolder module">
<div class="breadCrumb module"> <div class="breadCrumb module">
<ul> <ul>
@ -43,6 +74,11 @@ var sess = '{$sess}';
</div> </div>
</td> </td>
</tr> </tr>
<tr>
<td>
{#RUBRIK_EDIT_CODE_LOAD_TIP#}
</td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@ -50,11 +86,6 @@ var sess = '{$sess}';
<div class="widget first"> <div class="widget first">
<div class="head"> <div class="head">
<h5>{#RUBRIK_CODE#}</h5> <h5>{#RUBRIK_CODE#}</h5>
<div class="num">
<a class="basicNum" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT#}</a>
&nbsp;
<a class="basicNum" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_TEMPLATE#}</a>
</div>
</div> </div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic"> <table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
@ -79,6 +110,14 @@ var sess = '{$sess}';
</div> </div>
</td> </td>
</tr> </tr>
<tr>
<td>
{#RUBRIK_EDIT_CODE_BEF_TIP#}
</td>
<td>
{#RUBRIK_EDIT_CODE_AFT_TIP#}
</td>
</tr>
</tbody> </tbody>
</table> </table>
<div class="rowElem" id="saveBtn"> <div class="rowElem" id="saveBtn">

2
admin/templates/rubs/field_template.tpl

@ -24,7 +24,7 @@
<tr> <tr>
<td> <td>
<div class="pr12"> <div class="pr12">
<input name="rubric_field_default" type="text" id="rubric_field_default" value="{$rubric_field_default|escape}" style="width:100%;" /> <input class="mousetrap" name="rubric_field_default" type="text" id="rubric_field_default" value="{$rubric_field_default|escape}" style="width:100%;" />
</div> </div>
</td> </td>
</tr> </tr>

55
admin/templates/rubs/fields_groups.tpl

@ -1,13 +1,44 @@
<script language="Javascript" type="text/javascript"> <script language="Javascript" type="text/javascript">
var sess = '{$sess}'; var sess = '{$sess}';
</script> </script>
<div class="title"> <div class="title">
<h5>{#RUBRIK_FIELDS_GROUPS#}</h5> <h5>{#RUBRIK_FIELDS_GROUPS#}</h5>
</div> </div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#RUBRIK_FIELDS_GROUPS_TIP#}
</div>
</div>
<table class="first tableButtons" cellpadding="0" cellspacing="0" width="100%" id="rubricButtons">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<tr>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FIELDS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=ftlist&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FTEMPLATES#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_TEMPLATES#}</a>
</td>
<td>
{if check_permission('rubric_code')}
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_CODE#}</a>
{/if}
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=rules&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_RULES#}</a>
</td>
</tr>
</table>
<div class="breadCrumbHolder module"> <div class="breadCrumbHolder module">
<div class="breadCrumb module"> <div class="breadCrumb module">
<ul> <ul>
@ -31,15 +62,6 @@ var sess = '{$sess}';
<div class="head"> <div class="head">
<h5 class="iFrames">{#RUBRIK_FIELDS_GROUPS#}</h5> <h5 class="iFrames">{#RUBRIK_FIELDS_GROUPS#}</h5>
<div class="num">
<a class="basicNum" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_TEMPLATE#}</a>
&nbsp;
<a class="basicNum" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT#}</a>
&nbsp;
{if check_permission('rubric_code')}
<a class="basicNum" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_CODE#}</a>
{/if}
</div>
</div> </div>
<div id="groups_list"> <div id="groups_list">
@ -91,16 +113,7 @@ var sess = '{$sess}';
<div class="widget first"> <div class="widget first">
<div class="head"> <div class="head">
<h5 class="iFrames">{#RUBRIK_FIELDS_TITLE#}</h5> <h5 class="iFrames">{#RUBRIK_FIELDS_GROUPS#}</h5>
<div class="num">
<a class="basicNum" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_TEMPLATE#}</a>
&nbsp;
<a class="basicNum" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT#}</a>
&nbsp;
{if check_permission('rubric_code')}
<a class="basicNum" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_CODE#}</a>
{/if}
</div>
</div> </div>
<div id="groups_list"> <div id="groups_list">

198
admin/templates/rubs/fields_list.tpl

@ -1,5 +1,4 @@
<script language="Javascript" type="text/javascript"> <script language="Javascript" type="text/javascript">
var sess = '{$sess}'; var sess = '{$sess}';
function openAliasWindow(fieldId, rubId, width, height, target) {ldelim} function openAliasWindow(fieldId, rubId, width, height, target) {ldelim}
@ -10,12 +9,13 @@ function openAliasWindow(fieldId, rubId, width, height, target) {ldelim}
var top = ( screen.height - height ) / 2; var top = ( screen.height - height ) / 2;
window.open('index.php?field_id='+fieldId+'&rubric_id='+rubId+'&target='+target+'&do=rubs&action=alias_add&cp={$sess}&pop=1','pop','left='+left+',top='+top+',width='+width+',height='+height+',scrollbars='+scrollbar+',resizable=1').focus(); window.open('index.php?field_id='+fieldId+'&rubric_id='+rubId+'&target='+target+'&do=rubs&action=alias_add&cp={$sess}&pop=1','pop','left='+left+',top='+top+',width='+width+',height='+height+',scrollbars='+scrollbar+',resizable=1').focus();
{rdelim} {rdelim}
</script> </script>
<div class="title"> <div class="title">
<h5>{#RUBRIK_EDIT_FIELDS#}</h5> <h5>{#RUBRIK_EDIT_FIELDS#}</h5>
</div> </div>
{if !$rub_fields}
{if !$fields_list}
<div class="widget" style="margin-top: 0px;"> <div class="widget" style="margin-top: 0px;">
<div class="body">{#RUBRIK_NO_FIELDS#}</div> <div class="body">{#RUBRIK_NO_FIELDS#}</div>
</div> </div>
@ -24,6 +24,34 @@ function openAliasWindow(fieldId, rubId, width, height, target) {ldelim}
<div class="body">{#RUBRIK_FIELDS_INFO#}</div> <div class="body">{#RUBRIK_FIELDS_INFO#}</div>
</div> </div>
{/if} {/if}
<table class="first tableButtons" cellpadding="0" cellspacing="0" width="100%" id="rubricButtons">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<tr>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_TEMPLATES#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=ftlist&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FTEMPLATES#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=fieldsgroups&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FGROUPS#}</a>
</td>
<td>
{if check_permission('rubric_code')}
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_CODE#}</a>
{/if}
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=rules&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_RULES#}</a>
</td>
</tr>
</table>
<div class="breadCrumbHolder module"> <div class="breadCrumbHolder module">
<div class="breadCrumb module"> <div class="breadCrumb module">
<ul> <ul>
@ -67,16 +95,6 @@ function openAliasWindow(fieldId, rubId, width, height, target) {ldelim}
<div class="head"> <div class="head">
<h5 class="iFrames">{#RUBRIK_FIELDS_TITLE#}</h5> <h5 class="iFrames">{#RUBRIK_FIELDS_TITLE#}</h5>
<div class="num">
<a class="basicNum" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_TEMPLATE#}</a>
&nbsp;
<a class="basicNum" href="index.php?do=rubs&action=fieldsgroups&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_FIELDS_GROUPS#}</a>
&nbsp;
{if check_permission('rubric_code')}
<a class="basicNum" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_CODE#}</a>
{/if}
</div>
</div> </div>
<div id="fields_list"> <div id="fields_list">
@ -364,124 +382,6 @@ function openAliasWindow(fieldId, rubId, width, height, target) {ldelim}
</div> </div>
</div> </div>
{if check_permission('rubric_edit') && check_permission('rubric_perms')}
<div class="widget first">
<div class="head closed active">
<h5>{#RUBRIK_SET_PERMISSION#}</h5>
</div>
<div style="display: block;">
<form id="rubperm" action="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&submit=saveperms&cp={$sess}" method="post" class="mainForm">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="16%">
<col width="12%">
<col width="12%">
<col width="12%">
<col width="12%">
<col width="12%">
<col width="12%">
<col width="12%">
<thead>
<tr>
<td>{#RUBRIK_USER_GROUP#}</td>
<td align="center">
{#RUBRIK_DOC_READ#}&nbsp;<a href="javascript:void(0);" class="topDir link" style="cursor: help;" title="{#RUBRIK_VIEW_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_ALL_PERMISSION#}&nbsp;<a href="javascript:void(0);" class="topDir link" style="cursor: help;" title="{#RUBRIK_ALL_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_CREATE_DOC#}&nbsp;<a href="javascript:void(0);" class="topDir link" style="cursor: help;" title="{#RUBRIK_DOC_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_CREATE_DOC_NOW#}&nbsp;<a href="javascript:void(0);" class="topDir link" style="cursor: help;" title="{#RUBRIK_DOC_NOW_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_EDIT_OWN#}&nbsp;<a href="javascript:void(0);" class="topDir link" style="cursor: help;" title="{#RUBRIK_OWN_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_EDIT_OTHER#}&nbsp;<a href="javascript:void(0);" class="topleftDir link" style="cursor: help;" title="{#RUBRIK_OTHER_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_EDIT_DELREV#}&nbsp;<a href="javascript:void(0);" class="topleftDir link" style="cursor: help;" title="{#RUBRIK_DELREV_TIP#}">[?]</a>
</td>
</tr>
</thead>
<tbody>
{foreach from=$groups item=group}
{assign var=doall value=$group->doall}
<tr>
<td>{$group->user_group_name|escape:html} </td>
<td align="center" {if in_array('docread', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
{if $group->doall_h==1}
<input type="hidden" name="perm[{$group->user_group}][]" value="docread" />
<input class="check_perm" name="perm[{$group->user_group}][]" type="checkbox" value="docread" checked="checked" disabled="disabled" />
{else}
<input class="check_perm" name="perm[{$group->user_group}][]" type="checkbox" value="docread"{if in_array('docread', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if} />
{/if}
</td>
<td align="center" {if in_array('alles', $group->permissions)} class="yellow"{/if}>
{if $group->doall_h==1}
<input type="hidden" name="perm[{$group->user_group}][]" value="alles" />
<input class="check_perm" name="perm[{$group->user_group}][]" type="checkbox" value="alles" checked="checked" disabled="disabled" />
{else}
<input class="check_perm" name="perm[{$group->user_group}][]" type="checkbox" value="alles"{if in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
<td align="center" {if in_array('new', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
<input type="hidden" name="user_group[{$group->user_group}]" value="{$group->user_group}" />
{if $group->doall_h==1}
<input class="check_perm" name="{$group->user_group}" type="checkbox" value="1"{$doall} />
<input type="hidden" name="perm[{$group->user_group}][]" value="new" />
{else}
<input class="check_perm new" id="new_{$group->user_group}" name="perm[{$group->user_group}][]" type="checkbox" value="new"{if in_array('new', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
<td align="center" {if in_array('newnow', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
<input type="hidden" name="user_group[{$group->user_group}]" value="{$group->user_group}" />
{if $group->doall_h==1}
<input class="check_perm" name="{$group->user_group}" type="checkbox" value="1"{$doall} />
<input type="hidden" name="perm[{$group->user_group}][]" value="newnow" />
{else}
<input class="check_perm newnow" id="newnow_{$group->user_group}" name="perm[{$group->user_group}][]" type="checkbox" value="newnow"{if in_array('newnow', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
<td align="center" {if in_array('editown', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
{if $group->doall_h==1}
<input class="check_perm" name="{$group->user_group}" type="checkbox" value="1"{$doall} />
<input type="hidden" name="perm[{$group->user_group}][]" value="editown" />
{else}
<input class="check_perm editown" id="editown_{$group->user_group}" data-id="{$group->user_group}" name="perm[{$group->user_group}][]" type="checkbox" value="editown"{if in_array('editown', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
<td align="center" {if in_array('editall', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
{if $group->doall_h==1}
<input class="check_perm" name="{$group->user_group}" type="checkbox" value="1"{$doall} />
{else}
<input class="check_perm editall" id="editall_{$group->user_group}" name="perm[{$group->user_group}][]" data-id="{$group->user_group}" type="checkbox" value="editall"{if in_array('editall', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
<td align="center" {if in_array('delrev', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
{if $group->doall_h==1}
<input class="check_perm" name="{$group->user_group}" type="checkbox" value="1"{$doall} />
<input type="hidden" name="perm[{$group->user_group}][]" value="delrev" />
{else}
<input class="check_perm" name="perm[{$group->user_group}][]" type="checkbox" value="delrev"{if in_array('delrev', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
</tr>
{/foreach}
</tbody>
</table>
<div class="rowElem">
<input type="submit" class="basicBtn" value="{#RUBRIK_BUTTON_PERM#}" />
&nbsp;
<input type="submit" class="blackBtn SaveEditPerms" value="{#RUBRIK_BUTTON_TPL_NEXT#}" />
</div>
</form>
</div>
</div>
{/if}
{include file="$codemirror_connect"} {include file="$codemirror_connect"}
<script language="javascript"> <script language="javascript">
@ -623,15 +523,6 @@ $(document).ready(function(){ldelim}
} }
}); });
$('.check_perm').on('change', function(event) {
event.preventDefault();
if ($(this).is(':checked')) {
$(this).parent().parent('td').addClass('yellow');
} else {
$(this).parent().parent('td').removeClass('yellow');
}
});
$('.collapsible').collapsible({ $('.collapsible').collapsible({
defaultOpen: 'opened', defaultOpen: 'opened',
cssOpen: 'inactive', cssOpen: 'inactive',
@ -643,6 +534,14 @@ $(document).ready(function(){ldelim}
}, },
speed: 200 speed: 200
}); });
$('.collapsible').on('click', function() {
setTimeout(function() {
AveAdmin.sticky_panel_refresh();
AveAdmin.select_form();
}, 10);
});
{/literal} {/literal}
Mousetrap.bind(['ctrl+s', 'command+s'], function(event) {ldelim} Mousetrap.bind(['ctrl+s', 'command+s'], function(event) {ldelim}
@ -714,25 +613,6 @@ $(document).ready(function(){ldelim}
return false; return false;
{rdelim}); {rdelim});
$(".SaveEditPerms").click(function(event){ldelim}
event.preventDefault();
$("#rubperm").ajaxSubmit({ldelim}
url: 'index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&submit=saveperms&cp={$sess}&ajax=1',
dataType: 'json',
beforeSubmit: function(){ldelim}
$.alerts._overlay('show');
{rdelim},
success: function(data){ldelim}
$.jGrowl(data['message'], {ldelim}
header: data['header'],
theme: data['theme']
{rdelim});
$.alerts._overlay('hide');
{rdelim}
{rdelim});
return false;
{rdelim});
function ajaxFields(){ldelim} function ajaxFields(){ldelim}
$.ajax({ldelim} $.ajax({ldelim}
url: 'index.php?do=rubs&action=fields&Id={$smarty.request.Id|escape}&cp={$sess}&ajax=1&onlycontent=1', url: 'index.php?do=rubs&action=fields&Id={$smarty.request.Id|escape}&cp={$sess}&ajax=1&onlycontent=1',

170
admin/templates/rubs/form.tpl

@ -6,11 +6,7 @@
<div class="title"> <div class="title">
<h5>{#RUBRIK_TEMPLATE_EDIT#}</h5> <h5>{#RUBRIK_TEMPLATE_EDIT#}</h5>
<div class="num"> <div class="num">
<a class="basicNum" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT#}</a> <a class="basicNum" href="index.php?do=rubs&action=tmpls&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TMPLS_BUTTON#}</a>
&nbsp;
{if check_permission('rubric_code')}
<a class="basicNum" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_CODE#}</a>
{/if}
</div> </div>
</div> </div>
{/if} {/if}
@ -19,6 +15,33 @@
<div class="body">{#RUBRIK_TEMPLATE_TIP#}</div> <div class="body">{#RUBRIK_TEMPLATE_TIP#}</div>
</div> </div>
<table class="first tableButtons" cellpadding="0" cellspacing="0" width="100%" id="rubricButtons">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<tr>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FIELDS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=ftlist&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FTEMPLATES#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=fieldsgroups&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FGROUPS#}</a>
</td>
<td>
{if check_permission('rubric_code')}
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_CODE#}</a>
{/if}
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=rules&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_RULES#}</a>
</td>
</tr>
</table>
<div class="breadCrumbHolder module"> <div class="breadCrumbHolder module">
<div class="breadCrumb module"> <div class="breadCrumb module">
<ul> <ul>
@ -61,6 +84,9 @@
<li> <li>
<a href="#tab2">{#RUBRIK_HTML_2#}</a> <a href="#tab2">{#RUBRIK_HTML_2#}</a>
</li> </li>
<li>
<a href="#tab2_1">{#RUBRIK_HTML_2_1#}</a>
</li>
<li> <li>
<a href="#tab3">{#RUBRIK_HTML_3#}</a> <a href="#tab3">{#RUBRIK_HTML_3#}</a>
</li> </li>
@ -468,6 +494,139 @@
</div> </div>
<div id="tab2_1" class="tab_content" style="display: none;">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="18%" />
<col width="82%" />
<thead>
<tr class="noborder">
<td>{#RUBRIK_TAGS#}</td>
<td>{#RUBRIK_HTML_T#}</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<strong><a class="rightDir" title="{#RUBRIK_TEMPLATES_TITLE#}" href="javascript:void(0);" onclick="textSelection2_1('[tag:title]','');">[tag:title]</a></strong>
</td>
<td rowspan="5" colspan="2"><textarea {$read_only} class="{if $php_forbidden==1}tpl_code_readonly{else}{/if}" style="width:100%; height:200px" name="rubric_footer_template" id="rubric_footer_template">{$rubric->rubric_footer_template|default:$prefab|escape:html}</textarea></td>
</tr>
<tr>
<td>
<strong><a class="rightDir" title="{#RUBRIK_TEMPLATES_CSS#}" href="javascript:void(0);" onclick="textSelection2('[tag:css:]','');">[tag:css:FFF:P]</a></strong>,&nbsp;&nbsp;
<strong><a class="rightDir" title="{#RUBRIK_TEMPLATES_JS#}" href="javascript:void(0);" onclick="textSelection2_1('[tag:js:]','');">[tag:js:FFF:P]</a></strong>
</td>
</tr>
<tr>
<td>
<strong><a class="rightDir" title="{#RUBRIK_TEMPLATES_PATH#}" href="javascript:void(0);" onclick="textSelection2_1('[tag:path]','');">[tag:path]</a></strong>
</td>
</tr>
<tr>
<td>
<strong><a class="rightDir" title="{#RUBRIK_TEMPLATES_MEDIAPATH#}" href="javascript:void(0);" onclick="textSelection2_1('[tag:mediapath]','');">[tag:mediapath]</a></strong>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td><strong>HTML Tags</strong></td>
<td>
|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<ol>', '</ol>');"><strong>OL</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<ul>', '</ul>');"><strong>UL</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<li>', '</li>');"><strong>LI</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<p class=&quot;&quot;>', '</p>');"><strong>P</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<strong>', '</strong>');"><strong>B</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<em>', '</em>');"><strong>I</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<h1>', '</h1>');"><strong>H1</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<h2>', '</h2>');"><strong>H2</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<h3>', '</h3>');"><strong>H3</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<h4>', '</h4>');"><strong>H4</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<h5>', '</h5>');"><strong>H5</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<div class=&quot;&quot; id=&quot;&quot;>', '</div>');"><strong>DIV</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<a href=&quot;&quot; title=&quot;&quot;>', '</a>');"><strong>A</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<img src=&quot;&quot; alt=&quot;&quot; &#047;>', '');"><strong>IMG</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<span>', '</span>');"><strong>SPAN</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<pre>', '</pre>');"><strong>PRE</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('<br &#047;>', '');"><strong>BR</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2_1('\t', '');"><strong>TAB</strong></a>&nbsp;|
</td>
</tr>
</tbody>
</table>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="3%" />
<col width="25%" />
<col width="15%" />
<col width="15%" />
<col width="15%" />
<col width="38%" />
<thead>
<tr>
<td align="center"><strong>{#RUBRIK_ID#}</strong></td>
<td align="center"><strong>{#RUBRIK_FIELD_NAME#}</strong></td>
<td align="center"><strong>{#RUBRIK_TAGS_ID#}</strong></td>
<td align="center"><strong>{#RUBRIK_TAGS_ALIAS#}</strong></td>
<td align="center"><strong>{#RUBRIK_FIELD_ALIAS#}</strong></td>
<td align="center"><strong>{#RUBRIK_FIELD_TYPE#}</strong></td>
</tr>
</thead>
<tbody>
{foreach from=$fields_list item=field_group}
{if $groups_count > 1}
<tr class="grey">
<td colspan="6"><h5>{if $field_group.group_title}{$field_group.group_title}{else}{#RUBRIK_FIELD_G_UNKNOW#}{/if}</h5></td>
</tr>
{/if}
{foreach from=$field_group.fields item=field}
<tr>
<td align="center">
<strong class="code">{$field.Id}</strong>
</td>
<td>
<strong>{$field.rubric_field_title}</strong>
</td>
<td>
<a class="rightDir" title="{#RUBRIK_INSERT_HELP#}" href="javascript:void(0);" onclick="textSelection2('[tag:rfld:{$field.Id}][0]', '');"><strong>[tag:rfld:{$field.Id}][150]</strong></a>
</td>
<td>
{if $field.rubric_field_alias}
<a class="rightDir" title="{#RUBRIK_INSERT_HELP#}" href="javascript:void(0);" onclick="textSelection2('[tag:rfld:{$field.rubric_field_alias}][0]', '');"><strong>[tag:rfld:{$field.rubric_field_alias}][0]</strong></a>
{/if}
</td>
<td align="center">
{if $field.rubric_field_alias}<strong class="code">{$field.rubric_field_alias}</strong>{/if}
</td>
<td>
{section name=field_name loop=$field_array}
{if $field.rubric_field_type == $field_array[field_name].id}{$field_array[field_name].name}{/if}
{/section}
</td>
</tr>
{/foreach}
{/foreach}
</tbody>
</table>
<div class="fix"></div>
</div>
<div id="tab3" class="tab_content" style="display: none;"> <div id="tab3" class="tab_content" style="display: none;">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic"> <table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
@ -785,6 +944,7 @@
{include file="$codemirror_connect"} {include file="$codemirror_connect"}
{include file="$codemirror_editor" conn_id="" textarea_id='rubric_template' ctrls='$("#RubricTpl").ajaxSubmit(sett_options);' height=500} {include file="$codemirror_editor" conn_id="" textarea_id='rubric_template' ctrls='$("#RubricTpl").ajaxSubmit(sett_options);' height=500}
{include file="$codemirror_editor" conn_id="2" textarea_id='rubric_header_template' ctrls='$("#RubricTpl").ajaxSubmit(sett_options);' height=420} {include file="$codemirror_editor" conn_id="2" textarea_id='rubric_header_template' ctrls='$("#RubricTpl").ajaxSubmit(sett_options);' height=420}
{include file="$codemirror_editor" conn_id="2_1" textarea_id='rubric_footer_template' ctrls='$("#RubricTpl").ajaxSubmit(sett_options);' height=420}
{include file="$codemirror_editor" conn_id="3" textarea_id='rubric_teaser_template' ctrls='$("#RubricTpl").ajaxSubmit(sett_options);' height=420} {include file="$codemirror_editor" conn_id="3" textarea_id='rubric_teaser_template' ctrls='$("#RubricTpl").ajaxSubmit(sett_options);' height=420}
{include file="$codemirror_editor" conn_id="4" textarea_id='rubric_admin_teaser_template' ctrls='$("#RubricTpl").ajaxSubmit(sett_options);' height=420} {include file="$codemirror_editor" conn_id="4" textarea_id='rubric_admin_teaser_template' ctrls='$("#RubricTpl").ajaxSubmit(sett_options);' height=420}

15
admin/templates/rubs/list.tpl

@ -88,7 +88,7 @@ $(function() {ldelim}
<col width="40"> <col width="40">
<col width="30"> <col width="30">
<col width="40"> <col width="40">
<col width="40"> <col width="20">
<col width="20"> <col width="20">
<col width="20"> <col width="20">
<col width="20"> <col width="20">
@ -110,8 +110,7 @@ $(function() {ldelim}
</div> </div>
</td> </td>
<td align="center"><a href="javascript:void(0);" class="topDir icon_sprite ico_lines float" style="cursor: help; display: inline-block" title="{#RUBRIK_COUNT_FIELDS#}"></a></td> <td align="center"><a href="javascript:void(0);" class="topDir icon_sprite ico_lines float" style="cursor: help; display: inline-block" title="{#RUBRIK_COUNT_FIELDS#}"></a></td>
<td align="center"><a href="javascript:void(0);" class="topDir icon_sprite ico_template float" style="cursor: help; display: inline-block" title="{#RUBRIK_EDIT_TMPLS#}"></a></td> <td align="center" colspan="6">{#RUBRIK_ACTION#}</td>
<td align="center" colspan="5">{#RUBRIK_ACTION#}</td>
</tr> </tr>
</thead> </thead>
<tbody id="rubsTbody"> <tbody id="rubsTbody">
@ -191,21 +190,21 @@ $(function() {ldelim}
<td align="center"><strong class="code">{$rubric->fld_count}</strong></td> <td align="center"><strong class="code">{$rubric->fld_count}</strong></td>
<td align="center"> <td align="center">
{if check_permission('rubric_edit')} {if check_permission('rubric_edit')}
<strong class="code"><a class="topDir" title="{#RUBRIK_EDIT_TMPLS#}" href="index.php?do=rubs&action=tmpls&Id={$rubric->Id}&cp={$sess}">{$rubric->tmpls_count}</a></strong> <a class="topleftDir icon_sprite ico_edit" title="{#RUBRIK_EDIT#}" href="index.php?do=rubs&action=edit&Id={$rubric->Id}&cp={$sess}"></a>
{else} {else}
<strong class="code">{$rubric->tmpls_count}</strong> <span title="{#RUBRIK_NO_CHANGE1#}" class="topleftDir icon_sprite ico_edit_no"></span>
{/if} {/if}
</td> </td>
<td align="center"> <td align="center">
{if check_permission('rubric_edit')} {if check_permission('rubric_edit')}
<a class="topleftDir icon_sprite ico_edit" title="{#RUBRIK_EDIT#}" href="index.php?do=rubs&action=edit&Id={$rubric->Id}&cp={$sess}"></a> <a class="topleftDir icon_sprite ico_template" title="{#RUBRIK_EDIT_TEMPLATE#}" href="index.php?do=rubs&action=template&Id={$rubric->Id}&cp={$sess}"></a>
{else} {else}
<span title="{#RUBRIK_NO_CHANGE1#}" class="topleftDir icon_sprite ico_edit_no"></span> <span title="{#RUBRIK_NO_CHANGE2#}" class="topleftDir icon_sprite ico_template_no"></span>
{/if} {/if}
</td> </td>
<td align="center"> <td align="center">
{if check_permission('rubric_edit')} {if check_permission('rubric_edit')}
<a class="topleftDir icon_sprite ico_template" title="{#RUBRIK_EDIT_TEMPLATE#}" href="index.php?do=rubs&action=template&Id={$rubric->Id}&cp={$sess}"></a> <a class="topleftDir icon_sprite ico_template" title="{#RUBRIK_EDIT_TMPLS#}" href="index.php?do=rubs&action=tmpls&Id={$rubric->Id}&cp={$sess}"></a>
{else} {else}
<span title="{#RUBRIK_NO_CHANGE2#}" class="topleftDir icon_sprite ico_template_no"></span> <span title="{#RUBRIK_NO_CHANGE2#}" class="topleftDir icon_sprite ico_template_no"></span>
{/if} {/if}

240
admin/templates/rubs/rules.tpl

@ -0,0 +1,240 @@
<script language="Javascript" type="text/javascript">
var sess = '{$sess}';
</script>
<div class="title">
<h5>{#RUBRIK_EDIT_RULES#}</h5>
</div>
<div class="widget" style="margin-top: 0px;">
<div class="body">{#RUBRIC_WARNING_TIP#}</div>
</div>
<table class="first tableButtons" cellpadding="0" cellspacing="0" width="100%" id="rubricButtons">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<tr>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FIELDS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=ftlist&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FTEMPLATES#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=fieldsgroups&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FGROUPS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_TEMPLATES#}</a>
</td>
<td>
{if check_permission('rubric_code')}
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_CODE#}</a>
{/if}
</td>
</tr>
</table>
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li class="firstB">
<a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a>
</li>
<li>
<a href="index.php?do=rubs&cp={$sess}">{#RUBRIK_SUB_TITLE#}</a>
</li>
<li>{#RUBRIK_EDIT_FIELDS#}</li>
<li><strong class="code">{$rubric->rubric_title}</strong></li>
</ul>
</div>
</div>
{if check_permission('rubric_edit') && check_permission('rubric_perms')}
<div class="widget first">
<div class="head">
<h5>{#RUBRIK_SET_PERMISSION#}</h5>
</div>
<div style="display: block;">
<form id="rubperm" action="index.php?do=rubs&action=rules&Id={$smarty.request.Id|escape}&submit=saveperms&cp={$sess}" method="post" class="mainForm">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="16%">
<col width="12%">
<col width="12%">
<col width="12%">
<col width="12%">
<col width="12%">
<col width="12%">
<col width="12%">
<thead>
<tr>
<td>{#RUBRIK_USER_GROUP#}</td>
<td align="center">
{#RUBRIK_DOC_READ#}&nbsp;<a href="javascript:void(0);" class="topDir link" style="cursor: help;" title="{#RUBRIK_VIEW_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_ALL_PERMISSION#}&nbsp;<a href="javascript:void(0);" class="topDir link" style="cursor: help;" title="{#RUBRIK_ALL_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_CREATE_DOC#}&nbsp;<a href="javascript:void(0);" class="topDir link" style="cursor: help;" title="{#RUBRIK_DOC_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_CREATE_DOC_NOW#}&nbsp;<a href="javascript:void(0);" class="topDir link" style="cursor: help;" title="{#RUBRIK_DOC_NOW_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_EDIT_OWN#}&nbsp;<a href="javascript:void(0);" class="topDir link" style="cursor: help;" title="{#RUBRIK_OWN_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_EDIT_OTHER#}&nbsp;<a href="javascript:void(0);" class="topleftDir link" style="cursor: help;" title="{#RUBRIK_OTHER_TIP#}">[?]</a>
</td>
<td align="center">
{#RUBRIK_EDIT_DELREV#}&nbsp;<a href="javascript:void(0);" class="topleftDir link" style="cursor: help;" title="{#RUBRIK_DELREV_TIP#}">[?]</a>
</td>
</tr>
</thead>
<tbody>
{foreach from=$groups item=group}
{assign var=doall value=$group->doall}
<tr>
<td>{$group->user_group_name|escape:html} </td>
<td align="center" {if in_array('docread', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
{if $group->doall_h==1}
<input type="hidden" name="perm[{$group->user_group}][]" value="docread" />
<input class="check_perm" name="perm[{$group->user_group}][]" type="checkbox" value="docread" checked="checked" disabled="disabled" />
{else}
<input class="check_perm" name="perm[{$group->user_group}][]" type="checkbox" value="docread"{if in_array('docread', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if} />
{/if}
</td>
<td align="center" {if in_array('alles', $group->permissions)} class="yellow"{/if}>
{if $group->doall_h==1}
<input type="hidden" name="perm[{$group->user_group}][]" value="alles" />
<input class="check_perm" name="perm[{$group->user_group}][]" type="checkbox" value="alles" checked="checked" disabled="disabled" />
{else}
<input class="check_perm" name="perm[{$group->user_group}][]" type="checkbox" value="alles"{if in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
<td align="center" {if in_array('new', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
<input type="hidden" name="user_group[{$group->user_group}]" value="{$group->user_group}" />
{if $group->doall_h==1}
<input class="check_perm" name="{$group->user_group}" type="checkbox" value="1"{$doall} />
<input type="hidden" name="perm[{$group->user_group}][]" value="new" />
{else}
<input class="check_perm new" id="new_{$group->user_group}" name="perm[{$group->user_group}][]" type="checkbox" value="new"{if in_array('new', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
<td align="center" {if in_array('newnow', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
<input type="hidden" name="user_group[{$group->user_group}]" value="{$group->user_group}" />
{if $group->doall_h==1}
<input class="check_perm" name="{$group->user_group}" type="checkbox" value="1"{$doall} />
<input type="hidden" name="perm[{$group->user_group}][]" value="newnow" />
{else}
<input class="check_perm newnow" id="newnow_{$group->user_group}" name="perm[{$group->user_group}][]" type="checkbox" value="newnow"{if in_array('newnow', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
<td align="center" {if in_array('editown', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
{if $group->doall_h==1}
<input class="check_perm" name="{$group->user_group}" type="checkbox" value="1"{$doall} />
<input type="hidden" name="perm[{$group->user_group}][]" value="editown" />
{else}
<input class="check_perm editown" id="editown_{$group->user_group}" data-id="{$group->user_group}" name="perm[{$group->user_group}][]" type="checkbox" value="editown"{if in_array('editown', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
<td align="center" {if in_array('editall', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
{if $group->doall_h==1}
<input class="check_perm" name="{$group->user_group}" type="checkbox" value="1"{$doall} />
{else}
<input class="check_perm editall" id="editall_{$group->user_group}" name="perm[{$group->user_group}][]" data-id="{$group->user_group}" type="checkbox" value="editall"{if in_array('editall', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
<td align="center" {if in_array('delrev', $group->permissions) || in_array('alles', $group->permissions)} class="yellow"{/if}>
{if $group->doall_h==1}
<input class="check_perm" name="{$group->user_group}" type="checkbox" value="1"{$doall} />
<input type="hidden" name="perm[{$group->user_group}][]" value="delrev" />
{else}
<input class="check_perm" name="perm[{$group->user_group}][]" type="checkbox" value="delrev"{if in_array('delrev', $group->permissions) || in_array('alles', $group->permissions)} checked="checked"{/if}{if $group->user_group==2} disabled="disabled"{/if} />
{/if}
</td>
</tr>
{/foreach}
</tbody>
</table>
<div class="rowElem">
<input type="submit" class="basicBtn" value="{#RUBRIK_BUTTON_PERM#}" />
&nbsp;
<input type="submit" class="blackBtn SaveEditPerms" value="{#RUBRIK_BUTTON_TPL_NEXT#}" />
</div>
</form>
</div>
</div>
{/if}
<script language="javascript">
$(document).ready(function(){ldelim}
{literal}
$(document).on('change', '#selall', function(event) {
event.preventDefault();
if ($('#selall').is(':checked')) {
$('#FieldsList .checkbox').attr('checked','checked');
$('#FieldsList .checkbox').addClass('jqTransformChecked');
} else {
$('#FieldsList .checkbox').removeClass('jqTransformChecked');
$('#FieldsList .checkbox').removeAttr('checked');
}
});
$('.check_perm').on('change', function(event) {
event.preventDefault();
if ($(this).is(':checked')) {
$(this).parent().parent('td').addClass('yellow');
} else {
$(this).parent().parent('td').removeClass('yellow');
}
});
{/literal}
Mousetrap.bind(['ctrl+s', 'command+s'], function(event) {ldelim}
event.preventDefault();
$("#rubperm").ajaxSubmit({ldelim}
url: 'index.php?do=rubs&action=rules&Id={$smarty.request.Id|escape}&submit=saveperms&cp={$sess}&ajax=1',
dataType: 'json',
beforeSubmit: function(){ldelim}
$.alerts._overlay('show');
{rdelim},
success: function(data){ldelim}
$.jGrowl(data['message'], {ldelim}
header: data['header'],
theme: data['theme']
{rdelim});
$.alerts._overlay('hide');
{rdelim}
{rdelim});
return false;
{rdelim});
$(".SaveEditPerms").click(function(event){ldelim}
event.preventDefault();
$("#rubperm").ajaxSubmit({ldelim}
url: 'index.php?do=rubs&action=rules&Id={$smarty.request.Id|escape}&submit=saveperms&cp={$sess}&ajax=1',
dataType: 'json',
beforeSubmit: function(){ldelim}
$.alerts._overlay('show');
{rdelim},
success: function(data){ldelim}
$.jGrowl(data['message'], {ldelim}
header: data['header'],
theme: data['theme']
{rdelim});
$.alerts._overlay('hide');
{rdelim}
{rdelim});
return false;
{rdelim});
{rdelim});
</script>

34
admin/templates/rubs/tmpls.tpl

@ -37,12 +37,6 @@ $(document).ready(function(){ldelim}
<h5>{#RUBRIC_TMPLS_HEAD#}</h5> <h5>{#RUBRIC_TMPLS_HEAD#}</h5>
<div class="num"> <div class="num">
<a class="basicNum" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_TEMPLATE#}</a> <a class="basicNum" href="index.php?do=rubs&action=template&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_TEMPLATE#}</a>
&nbsp;
<a class="basicNum" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT#}</a>
&nbsp;
{if check_permission('rubric_code')}
<a class="basicNum" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIK_EDIT_CODE#}</a>
{/if}
</div> </div>
</div> </div>
@ -52,6 +46,34 @@ $(document).ready(function(){ldelim}
</div> </div>
</div> </div>
<table class="first tableButtons" cellpadding="0" cellspacing="0" width="100%" id="rubricButtons">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<tr>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=edit&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FIELDS#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=ftlist&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FTEMPLATES#}</a>
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=fieldsgroups&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_FGROUPS#}</a>
</td>
<td>
{if check_permission('rubric_code')}
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=code&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_CODE#}</a>
{/if}
</td>
<td>
<a class="button basicBtn topBtn" href="index.php?do=rubs&action=rules&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TABLE_BTN_RULES#}</a>
</td>
</tr>
</table>
<div class="breadCrumbHolder module"> <div class="breadCrumbHolder module">
<div class="breadCrumb module"> <div class="breadCrumb module">
<ul> <ul>

78
admin/templates/settings/edit_file.tpl

@ -0,0 +1,78 @@
<div class="title">
<h5>{#SETTINGS_FILE_EDIT_H#} {$file_name}</h5>
</div>
<div class="widget">
<div class="title">
<h5>{#SETTINGS_FILE_CONTENT#} {$file_name}</h5>
</div>
<form id="code_form" method="post" action="{$formaction}" class="mainForm">
<div class="rowElem" style="padding: 0">
<textarea id="code_text" name="code_text">{$template|escape}</textarea>
<div class="fix"></div>
</div>
<div class="rowElem">
<button type="submit" class="basicBtn">{#SETTINGS_BUTTON_SAVE#}</button>
&nbsp;{#SETTINGS_OR#}&nbsp;
<button class="blackBtn SaveEditFile">{#SETTINGS_BUTTON_SAVE_AJAX#}</button>
<div class="fix"></div>
</div>
</form>
</div>
<script language="Javascript" type="text/javascript">
var sett_options = {ldelim}
url: '{$formaction}',
dataType: 'json',
data: {ldelim} ajax: '1' {rdelim},
beforeSubmit: Request,
success: Response
{rdelim}
function Request(){ldelim}
$.alerts._overlay('show');
{rdelim}
function Response(data){ldelim}
$.alerts._overlay('hide');
$.jGrowl(data['message'], {ldelim}
header: data['header'],
theme: data['theme']
{rdelim});
{rdelim}
$(document).ready(function(){ldelim}
Mousetrap.bind(['ctrl+s', 'command+s'], function(e) {ldelim}
if (e.preventDefault) {ldelim}
e.preventDefault();
{rdelim} else {ldelim}
// internet explorer
e.returnValue = false;
{rdelim}
$("#code_form").ajaxSubmit(sett_options);
return false;
{rdelim});
$(".SaveEditFile").click(function(e){ldelim}
if (e.preventDefault) {ldelim}
e.preventDefault();
{rdelim} else {ldelim}
// internet explorer
e.returnValue = false;
{rdelim}
$("#code_form").ajaxSubmit(sett_options);
return false;
{rdelim});
{literal}
setTimeout(function(){editorfile.refresh();}, 20);
{/literal}
{rdelim});
</script>
{include file="$codemirror_editor" conn_id="file" textarea_id='code_text' ctrls='$("#code_form").ajaxSubmit(sett_options);' height=450}

13
admin/templates/settings/pagination_edit.tpl

@ -24,13 +24,12 @@
<div class="widget first"> <div class="widget first">
<div class="body"> <div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if} {if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
&nbsp; {if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if} {if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if} {if check_permission('gen_settings_robots')}<a data-dialog="robots" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=robots&cp={$sess}">{#SETTINGS_FILE_ROBOTS#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings_fcustom')}<a data-dialog="custom" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=custom&cp={$sess}">{#SETTINGS_FILE_CUSTOM#}</a>{/if}
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
</div> </div>
</div> </div>

14
admin/templates/settings/settings_case.tpl

@ -18,13 +18,12 @@
<div class="widget first"> <div class="widget first">
<div class="body"> <div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if} {if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
&nbsp; {if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if} {if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if} {if check_permission('gen_settings_robots')}<a data-dialog="robots" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=robots&cp={$sess}">{#SETTINGS_FILE_ROBOTS#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings_fcustom')}<a data-dialog="custom" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=custom&cp={$sess}">{#SETTINGS_FILE_CUSTOM#}</a>{/if}
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
</div> </div>
</div> </div>
@ -146,3 +145,4 @@ function Response(data){ldelim}
{rdelim} {rdelim}
</script> </script>
{include file="$codemirror_connect"}

14
admin/templates/settings/settings_countries.tpl

@ -19,13 +19,12 @@
<div class="widget first"> <div class="widget first">
<div class="body"> <div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if} {if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
&nbsp; {if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if} {if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if} {if check_permission('gen_settings_robots')}<a data-dialog="robots" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=robots&cp={$sess}">{#SETTINGS_FILE_ROBOTS#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings_fcustom')}<a data-dialog="custom" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=custom&cp={$sess}">{#SETTINGS_FILE_CUSTOM#}</a>{/if}
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
</div> </div>
</div> </div>
@ -137,3 +136,4 @@ function Response(){ldelim}
{rdelim} {rdelim}
</script> </script>
{include file="$codemirror_connect"}

14
admin/templates/settings/settings_lang.tpl

@ -18,13 +18,12 @@
<div class="widget first"> <div class="widget first">
<div class="body"> <div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if} {if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
&nbsp; {if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if} {if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if} {if check_permission('gen_settings_robots')}<a data-dialog="robots" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=robots&cp={$sess}">{#SETTINGS_FILE_ROBOTS#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings_fcustom')}<a data-dialog="custom" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=custom&cp={$sess}">{#SETTINGS_FILE_CUSTOM#}</a>{/if}
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
</div> </div>
</div> </div>
@ -102,3 +101,4 @@
</div> </div>
</div> </div>
{include file="$codemirror_connect"}

13
admin/templates/settings/settings_main.tpl

@ -19,13 +19,12 @@
<div class="widget first"> <div class="widget first">
<div class="body"> <div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if} {if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
&nbsp; {if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if} {if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if} {if check_permission('gen_settings_robots')}<a data-dialog="robots" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=robots&cp={$sess}">{#SETTINGS_FILE_ROBOTS#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings_fcustom')}<a data-dialog="custom" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=custom&cp={$sess}">{#SETTINGS_FILE_CUSTOM#}</a>{/if}
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
</div> </div>
</div> </div>

14
admin/templates/settings/settings_pagination.tpl

@ -19,13 +19,12 @@
<div class="widget first"> <div class="widget first">
<div class="body"> <div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if} {if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
&nbsp; {if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if} {if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if} {if check_permission('gen_settings_robots')}<a data-dialog="robots" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=robots&cp={$sess}">{#SETTINGS_FILE_ROBOTS#}</a>&nbsp;{/if}
&nbsp; {if check_permission('gen_settings_fcustom')}<a data-dialog="custom" data-height="650" data-modal="true" class="button greenBtn openDialog" href="index.php?do=settings&action=custom&cp={$sess}">{#SETTINGS_FILE_CUSTOM#}</a>{/if}
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
</div> </div>
</div> </div>
@ -85,3 +84,4 @@
</tbody> </tbody>
</table> </table>
</div> </div>
{include file="$codemirror_connect"}

8
admin/templates/templates/form.tpl

@ -82,7 +82,7 @@
<td> <td>
<strong><a class="rightDir" title="{#TEMPLATES_THEME_FOLDER#}" href="javascript:void(0);" onclick="textSelection('[tag:theme:',']');">[tag:theme:folder]</a></strong> <strong><a class="rightDir" title="{#TEMPLATES_THEME_FOLDER#}" href="javascript:void(0);" onclick="textSelection('[tag:theme:',']');">[tag:theme:folder]</a></strong>
</td> </td>
<td rowspan="27"> <td rowspan="28">
<textarea {$read_only} class="{if $php_forbidden==1}tpl_code_readonly{else}{/if}" wrap="off" style="width:100%; height:100%;" name="template_text" id="template_text">{$row->template_text|default:$prefab|escape}</textarea> <textarea {$read_only} class="{if $php_forbidden==1}tpl_code_readonly{else}{/if}" wrap="off" style="width:100%; height:100%;" name="template_text" id="template_text">{$row->template_text|default:$prefab|escape}</textarea>
<ul class="messages" style="margin-top: 10px;"> <ul class="messages" style="margin-top: 10px;">
<li class="highlight grey"> <li class="highlight grey">
@ -110,6 +110,12 @@
</td> </td>
</tr> </tr>
<tr>
<td>
<strong><a class="rightDir" title="{#TEMPLATES_RUBFOOTER#}" href="javascript:void(0);" onclick="textSelection('[tag:rubfooter]','');">[tag:rubfooter]</a></strong>
</td>
</tr>
<tr> <tr>
<td> <td>
<strong><a class="rightDir" title="{#TEMPLATES_TITLE#}" href="javascript:void(0);" onclick="textSelection('[tag:title]','');">[tag:title]</a></strong> <strong><a class="rightDir" title="{#TEMPLATES_TITLE#}" href="javascript:void(0);" onclick="textSelection('[tag:title]','');">[tag:title]</a></strong>

135
class/class.core.php

@ -1,6 +1,6 @@
<?php <?php
/** /**
* AVE.cms * AVE.cms
* *
* Класс, предназначенный для сбора и формирования общей страницы перед показом в Публичной части. * Класс, предназначенный для сбора и формирования общей страницы перед показом в Публичной части.
@ -14,10 +14,10 @@
* *
*/ */
class AVE_Core class AVE_Core
{ {
/** /**
* Свойства класса * Свойства класса
*/ */
@ -70,7 +70,7 @@ class AVE_Core
*/ */
public $_module_not_found = 'Запрашиваемый модуль не найден.'; public $_module_not_found = 'Запрашиваемый модуль не найден.';
/** /**
* Внутренние методы класса * Внутренние методы класса
*/ */
@ -436,6 +436,7 @@ class AVE_Core
rubric_permission, rubric_permission,
rubric_template, rubric_template,
rubric_header_template, rubric_header_template,
rubric_footer_template,
rubric_meta_gen, rubric_meta_gen,
template_text, template_text,
other.template other.template
@ -462,7 +463,9 @@ class AVE_Core
if ($this->curentdoc->rubric_tmpl_id != 0) if ($this->curentdoc->rubric_tmpl_id != 0)
{ {
$this->curentdoc->rubric_template = (($this->curentdoc->template != '') ? $this->curentdoc->template : $this->curentdoc->rubric_template); $this->curentdoc->rubric_template = (($this->curentdoc->template != '')
? $this->curentdoc->template
: $this->curentdoc->rubric_template);
unset($this->curentdoc->template); unset($this->curentdoc->template);
} }
@ -491,6 +494,7 @@ class AVE_Core
rubric_permission, rubric_permission,
rubric_template, rubric_template,
rubric_header_template, rubric_header_template,
rubric_footer_template,
rubric_meta_gen, rubric_meta_gen,
template_text template_text
FROM FROM
@ -645,7 +649,7 @@ class AVE_Core
return $combine; return $combine;
} }
/** /**
* Внешние методы класса * Внешние методы класса
*/ */
@ -733,7 +737,7 @@ class AVE_Core
// Если в запросе пришел параметр module и для данного названия модуля существует // Если в запросе пришел параметр module и для данного названия модуля существует
// директория или данный модуль имеет функцию и его системный тег указан в каком-либо шаблоне, тогда // директория или данный модуль имеет функцию и его системный тег указан в каком-либо шаблоне, тогда
if ((isset($_REQUEST['module']) && $_REQUEST['module'] == $row->ModuleSysName) || if ((isset($_REQUEST['module']) && $_REQUEST['module'] == $row->ModuleSysName) ||
(1 == $row->ModuleIsFunction && !empty($row->ModuleAveTag) && 1 == preg_match($row->ModuleAveTag, $template))) (1 == $row->ModuleIsFunction && ! empty($row->ModuleAveTag) && 1 == preg_match($row->ModuleAveTag, $template)))
{ {
// Проверяем, существует ли для данного модуля файл module.php в его персональной директории // Проверяем, существует ли для данного модуля файл module.php в его персональной директории
$mod_file = BASE_DIR . '/modules/' . $row->ModuleSysName . '/module.php'; $mod_file = BASE_DIR . '/modules/' . $row->ModuleSysName . '/module.php';
@ -787,6 +791,7 @@ class AVE_Core
$out = $this->_coreModuleMetatagsFetch(); $out = $this->_coreModuleMetatagsFetch();
$out = $this->_coreDocumentTemplateGet('', '', $this->_coreModuleTemplateGet()); $out = $this->_coreDocumentTemplateGet('', '', $this->_coreModuleTemplateGet());
} }
// Если происходит вызов системного блока
elseif (isset($_REQUEST['sysblock']) && ! empty($_REQUEST['sysblock'])) elseif (isset($_REQUEST['sysblock']) && ! empty($_REQUEST['sysblock']))
{ {
if (! is_numeric($_REQUEST['sysblock']) && preg_match('/^[A-Za-z0-9-_]{1,20}$/i', $_REQUEST['sysblock']) !== 1) if (! is_numeric($_REQUEST['sysblock']) && preg_match('/^[A-Za-z0-9-_]{1,20}$/i', $_REQUEST['sysblock']) !== 1)
@ -806,49 +811,38 @@ class AVE_Core
if ($this->_sysBlock($_REQUEST['sysblock'], 'sysblock_ajax')) if ($this->_sysBlock($_REQUEST['sysblock'], 'sysblock_ajax'))
{ {
if (isAjax()) if (isAjax())
{
$out = parse_sysblock($_REQUEST['sysblock']); $out = parse_sysblock($_REQUEST['sysblock']);
}
else else
{
$this->_coreErrorPage404(); $this->_coreErrorPage404();
} }
}
else else
{ {
$out = parse_sysblock($_REQUEST['sysblock']); $out = parse_sysblock($_REQUEST['sysblock']);
} }
} }
// Если происходит вызов запроса
elseif (isset($_REQUEST['request']) && ! empty($_REQUEST['request'])) elseif (isset($_REQUEST['request']) && ! empty($_REQUEST['request']))
{ {
if (! is_numeric($_REQUEST['request']) && preg_match('/^[A-Za-z0-9-_]{1,20}$/i', $_REQUEST['request']) !== 1) if (! is_numeric($_REQUEST['request']) && preg_match('/^[A-Za-z0-9-_]{1,20}$/i', $_REQUEST['request']) !== 1)
{
$this->_coreErrorPage404(); $this->_coreErrorPage404();
}
// Определяем рубрику // Определяем рубрику
define('RUB_ID', ! empty ($rub_id) define('RUB_ID', ! empty ($rub_id)
? $rub_id ? $rub_id
: $this->curentdoc->rubric_id); : $this->curentdoc->rubric_id);
// проверяем разрешение на внешнее обращение // Проверяем разрешение на внешнее обращение
if (! $this->_requestGet($_REQUEST['request'], 'request_external')) if (! $this->_requestGet($_REQUEST['request'], 'request_external'))
{
$this->_coreErrorPage404(); $this->_coreErrorPage404();
}
// проверяем разрешение на обращение только по Ajax // Проверяем разрешение на обращение только по Ajax
if ($this->_requestGet($_REQUEST['request'], 'request_ajax')) if ($this->_requestGet($_REQUEST['request'], 'request_ajax'))
{ {
if (isAjax()) if (isAjax())
{
$out = request_parse($_REQUEST['request']); $out = request_parse($_REQUEST['request']);
}
else else
{
$this->_coreErrorPage404(); $this->_coreErrorPage404();
} }
}
else else
{ {
$out = request_parse($_REQUEST['request']); $out = request_parse($_REQUEST['request']);
@ -861,16 +855,12 @@ class AVE_Core
{ {
// Определяем документ с 404 ошибкой в случае, если документ не найден // Определяем документ с 404 ошибкой в случае, если документ не найден
if ($this->_corePageNotFoundFetch(PAGE_NOT_FOUND_ID, UGROUP)) if ($this->_corePageNotFoundFetch(PAGE_NOT_FOUND_ID, UGROUP))
{
$_REQUEST['id'] = $_GET['id'] = $id = PAGE_NOT_FOUND_ID; $_REQUEST['id'] = $_GET['id'] = $id = PAGE_NOT_FOUND_ID;
} }
}
// проверяем параметры публикации документа // проверяем параметры публикации документа
if (! $this->_coreDocumentIsPublished()) if (! $this->_coreDocumentIsPublished())
{
$this->_coreErrorPage404(); $this->_coreErrorPage404();
}
// Определяем права доступа к документам рубрики // Определяем права доступа к документам рубрики
define('RUB_ID', ! empty ($rub_id) define('RUB_ID', ! empty ($rub_id)
@ -879,14 +869,14 @@ class AVE_Core
$this->_coreRubricPermissionFetch(RUB_ID); $this->_coreRubricPermissionFetch(RUB_ID);
// получаем шаблон // Выполняем Код рубрики До загрузки документа
$out = $this->_coreDocumentTemplateGet(RUB_ID);
// Выполняем Код рубрики
ob_start(); ob_start();
eval('?>' . $this->curentdoc->rubric_start_code . '<?'); eval('?>' . $this->curentdoc->rubric_start_code . '<?');
ob_end_clean(); ob_end_clean();
// Получаем шаблон
$out = $this->_coreDocumentTemplateGet(RUB_ID);
if (! ((isset ($_SESSION[RUB_ID . '_docread']) && $_SESSION[RUB_ID . '_docread'] == 1) if (! ((isset ($_SESSION[RUB_ID . '_docread']) && $_SESSION[RUB_ID . '_docread'] == 1)
|| (isset ($_SESSION[RUB_ID . '_alles']) && $_SESSION[RUB_ID . '_alles'] == 1)) ) || (isset ($_SESSION[RUB_ID . '_alles']) && $_SESSION[RUB_ID . '_alles'] == 1)) )
{ // читать запрещено - извлекаем ругательство и отдаём вместо контента { // читать запрещено - извлекаем ругательство и отдаём вместо контента
@ -895,7 +885,7 @@ class AVE_Core
else else
{ {
if (isset ($_REQUEST['print']) && $_REQUEST['print'] == 1) if (isset ($_REQUEST['print']) && $_REQUEST['print'] == 1)
{ // увеличиваем счетчик версий для печати { // Увеличиваем счетчик версий для печати
$AVE_DB->Query(" $AVE_DB->Query("
UPDATE UPDATE
" . PREFIX . "_documents " . PREFIX . "_documents
@ -908,7 +898,7 @@ class AVE_Core
else else
{ {
if (! isset ($_SESSION['doc_view'][$id])) if (! isset ($_SESSION['doc_view'][$id]))
{ // увеличиваем счетчик просмотров (1 раз в пределах сессии) { // Увеличиваем счетчик просмотров (1 раз в пределах сессии)
$AVE_DB->Query(" $AVE_DB->Query("
UPDATE UPDATE
" . PREFIX . "_documents " . PREFIX . "_documents
@ -923,7 +913,7 @@ class AVE_Core
$curdate = mktime(0, 0, 0, date('m'), date('d'), date('Y')); $curdate = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
if (!isset ($_SESSION['doc_view_dayly['.$curdate.'][' . $id . ']'])) if (! isset($_SESSION['doc_view_dayly['.$curdate.'][' . $id . ']']))
{ {
// и подневный счетчик просмотров тоже увеличиваем // и подневный счетчик просмотров тоже увеличиваем
$curdate = mktime(0, 0, 0, date('m'), date('d'), date('Y')); $curdate = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
@ -958,9 +948,9 @@ class AVE_Core
if (CACHE_DOC_TPL && empty ($_POST) && !(isset ($_SESSION['user_adminmode']) && $_SESSION['user_adminmode'] == 1)) if (CACHE_DOC_TPL && empty ($_POST) && !(isset ($_SESSION['user_adminmode']) && $_SESSION['user_adminmode'] == 1))
{ {
// кэширование разрешено // Кэширование разрешено
// извлекаем скомпилированный шаблон документа из кэша // Извлекаем скомпилированный шаблон документа из кэша
// если там пусто, пробуем достать из бд // Если там пусто, пробуем достать из бд
$cache_id = (int)$this->curentdoc->Id; $cache_id = (int)$this->curentdoc->Id;
$cache_id = 'compiled/' . (floor($cache_id / 1000)) . '/' . $cache_id; $cache_id = 'compiled/' . (floor($cache_id / 1000)) . '/' . $cache_id;
@ -991,22 +981,22 @@ class AVE_Core
unset($cache_dir, $cache_file, $cache_id); unset($cache_dir, $cache_file, $cache_id);
} }
else else
{ // кэширование запрещено { // Кэширование запрещено
$main_content = false; $main_content = false;
} }
// Собираем контент // Собираем контент
// если в кеше нет контента, то // Если в кеше нет контента, то
if (empty($main_content)) if (empty($main_content))
{ {
// кэш пустой или отключен, извлекаем и компилируем шаблон // Кэш пустой или отключен, извлекаем и компилируем шаблон
if (! empty ($this->curentdoc->rubric_template)) if (! empty ($this->curentdoc->rubric_template))
{ {
$rubTmpl = $this->curentdoc->rubric_template; $rubTmpl = $this->curentdoc->rubric_template;
} }
else else
{ {
// если документу задан другой шаблон из данной рубрики, то берем его // Если документу задан другой шаблон из данной рубрики, то берем его
if ($this->curentdoc->rubric_tmpl_id != 0) if ($this->curentdoc->rubric_tmpl_id != 0)
{ {
$rubTmpl = $AVE_DB->Query(" $rubTmpl = $AVE_DB->Query("
@ -1021,7 +1011,8 @@ class AVE_Core
LIMIT 1 LIMIT 1
")->GetCell(); ")->GetCell();
} }
else // иначе берем стандартный шаблон рубрики // Иначе берем стандартный шаблон рубрики
else
{ {
$rubTmpl = $AVE_DB->Query(" $rubTmpl = $AVE_DB->Query("
SELECT SELECT
@ -1138,12 +1129,10 @@ class AVE_Core
$main_content = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $this->curentdoc->document_published)), $main_content); $main_content = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $this->curentdoc->document_published)), $main_content);
$main_content = str_replace('[tag:humandate]', human_date($this->curentdoc->document_published), $main_content); $main_content = str_replace('[tag:humandate]', human_date($this->curentdoc->document_published), $main_content);
$main_content = str_replace('[tag:docauthorid]', $this->curentdoc->document_author_id, $main_content); $main_content = str_replace('[tag:docauthorid]', $this->curentdoc->document_author_id, $main_content);
if (preg_match('[tag:docauthor]', $main_content)){
if (preg_match('[tag:docauthor]', $main_content))
$main_content = str_replace('[tag:docauthor]', get_username_by_id($this->curentdoc->document_author_id), $main_content); $main_content = str_replace('[tag:docauthor]', get_username_by_id($this->curentdoc->document_author_id), $main_content);
} }
}
$out = str_replace('[tag:maincontent]', $main_content, $out); $out = str_replace('[tag:maincontent]', $main_content, $out);
@ -1168,13 +1157,17 @@ class AVE_Core
*/ */
// Тут мы вводим в хеадер иньекцию скриптов. // Тут мы вводим в хеадер и футер иньекцию скриптов.
if (defined('RUB_ID')) if (defined('RUB_ID'))
{ {
$rubheader = $this->curentdoc->rubric_header_template; $replace = array(
$out = str_replace('[tag:rubheader]', $rubheader.'[tag:rubheader]', $out); '[tag:rubheader]' => $this->curentdoc->rubric_header_template . '[tag:rubheader]',
'[tag:rubfooter]' => $this->curentdoc->rubric_footer_template . '[tag:rubfooter]'
);
$out = str_replace(array_keys($replace), array_values($replace), $out);
unset($rubheader); unset($replace);
} }
// Парсим поля запроса // Парсим поля запроса
@ -1190,7 +1183,7 @@ class AVE_Core
// Удаляем ошибочные теги полей документа в шаблоне рубрики // Удаляем ошибочные теги полей документа в шаблоне рубрики
$out = preg_replace('/\[tag:rfld:\d*\]/', '', $out); $out = preg_replace('/\[tag:rfld:\d*\]/', '', $out);
// Если в запросе пришел параметр print, т.е. страница для печати, // Если в GET запросе пришел параметр print, т.е. страница для печати,
// парсим контент, который обрамлен тегами только для печати // парсим контент, который обрамлен тегами только для печати
if (isset ($_REQUEST['print']) && $_REQUEST['print'] == 1) if (isset ($_REQUEST['print']) && $_REQUEST['print'] == 1)
{ {
@ -1215,7 +1208,7 @@ class AVE_Core
// Если в запросе пришел параметр module, т.е. вызов модуля, // Если в запросе пришел параметр module, т.е. вызов модуля,
// проверяем установлен и активен ли модуль // проверяем установлен и активен ли модуль
if ( isset($_REQUEST['module']) if (isset($_REQUEST['module'])
&& ! (isset($this->install_modules[$_REQUEST['module']]) && ! (isset($this->install_modules[$_REQUEST['module']])
&& '1' == $this->install_modules[$_REQUEST['module']]->ModuleStatus) ) && '1' == $this->install_modules[$_REQUEST['module']]->ModuleStatus) )
{ {
@ -1297,16 +1290,17 @@ class AVE_Core
ABS_PATH . 'templates/' . ((defined('THEME_FOLDER') === false) ? DEFAULT_THEME_FOLDER : THEME_FOLDER) . '/', ABS_PATH . 'templates/' . ((defined('THEME_FOLDER') === false) ? DEFAULT_THEME_FOLDER : THEME_FOLDER) . '/',
ABS_PATH, ABS_PATH,
htmlspecialchars(get_settings('site_name'), ENT_QUOTES), htmlspecialchars(get_settings('site_name'), ENT_QUOTES),
(isset($_REQUEST['id'])) ? $this->curentdoc->document_alias : '', (isset($_REQUEST['id'])) ? isset ($this->curentdoc->document_alias) ? $this->curentdoc->document_alias : '' : '',
getSiteUrl(), getSiteUrl(),
get_home_link(), get_home_link(),
(isset($this->curentdoc->document_meta_robots) ? $this->curentdoc->document_meta_robots : ''), (isset($this->curentdoc->document_meta_robots) ? $this->curentdoc->document_meta_robots : ''),
canonical(ABS_PATH . $this->curentdoc->document_alias), canonical(isset ($this->curentdoc->document_alias) ? ABS_PATH . $this->curentdoc->document_alias : ''),
(isset($this->curentdoc->Id) ? $this->curentdoc->Id : ''), (isset($this->curentdoc->Id) ? $this->curentdoc->Id : ''),
(isset($this->curentdoc->document_parent) ? $this->curentdoc->document_parent : '') (isset($this->curentdoc->document_parent) ? $this->curentdoc->document_parent : '')
); );
} }
// Если пришел контент из модуля
if (defined('MODULE_CONTENT')) if (defined('MODULE_CONTENT'))
{ {
// парсинг тегов при выводе из модуля // парсинг тегов при выводе из модуля
@ -1319,20 +1313,24 @@ class AVE_Core
$search[] = '[tag:keywords]'; $search[] = '[tag:keywords]';
$replace[] = htmlspecialchars(defined('MODULE_KEYWORDS') ? MODULE_KEYWORDS : '', ENT_QUOTES); $replace[] = htmlspecialchars(defined('MODULE_KEYWORDS') ? MODULE_KEYWORDS : '', ENT_QUOTES);
} }
// Или из системного блока
elseif (isset($_REQUEST['sysblock'])) elseif (isset($_REQUEST['sysblock']))
{ {
// Убираем пустые теги в сис блоке // Убираем пустые теги в сис блоке
$main_content = preg_replace('/\[tag:(.+?)\]/', '', $main_content); $main_content = preg_replace('/\[tag:(.+?)\]/', '', $main_content);
$main_content = preg_replace('/\[mod_(.+?)\]/', '', $main_content); $main_content = preg_replace('/\[mod_(.+?)\]/', '', $main_content);
} }
// Или из запроса
elseif (isset($_REQUEST['request'])) elseif (isset($_REQUEST['request']))
{ {
// Убираем пустые теги в сис блоке // Убираем пустые теги в сис блоке
$main_content = preg_replace('/\[tag:(.+?)\]/', '', $main_content); $main_content = preg_replace('/\[tag:(.+?)\]/', '', $main_content);
$main_content = preg_replace('/\[mod_(.+?)\]/', '', $main_content); $main_content = preg_replace('/\[mod_(.+?)\]/', '', $main_content);
} }
// Иначе
else else
{ {
// Если стоит вкл на генерацию keywords, description
if ($this->curentdoc->rubric_meta_gen) if ($this->curentdoc->rubric_meta_gen)
{ {
// Генерируем keywords, description на основе // Генерируем keywords, description на основе
@ -1422,11 +1420,11 @@ class AVE_Core
// Парсим теги языковых условий // Парсим теги языковых условий
if (defined('RUB_ID')) if (defined('RUB_ID'))
{ {
$out = preg_replace('/\[tag:lang:([a-zA-Z0-9-_]+)\]/', '<?php if($AVE_Core->curentdoc->document_lang=="$1") { ?>', $out); $out = preg_replace('/\[tag:lang:([a-zA-Z0-9-_]+)\]/', '<?php if ($AVE_Core->curentdoc->document_lang == "$1") { ?>', $out);
} }
else else
{ {
$out = preg_replace('/\[tag:lang:([a-zA-Z0-9-_]+)\]/', '<?php if($_SESSION["user_language"]=="$1") { ?>', $out); $out = preg_replace('/\[tag:lang:([a-zA-Z0-9-_]+)\]/', '<?php if ($_SESSION["user_language"] == "$1") { ?>', $out);
} }
$out = str_replace('[tag:/lang]', '<?php } ?>', $out); $out = str_replace('[tag:/lang]', '<?php } ?>', $out);
@ -1439,6 +1437,7 @@ class AVE_Core
// Парсим остальные теги основного шаблона // Парсим остальные теги основного шаблона
$out = str_replace($search, $replace, $out); $out = str_replace($search, $replace, $out);
unset ($search, $replace); //Убираем данные unset ($search, $replace); //Убираем данные
// Парсим теги для combine.php // Парсим теги для combine.php
@ -1469,8 +1468,8 @@ class AVE_Core
? '' ? ''
: $get_url); : $get_url);
if (substr($get_url, 0, strlen(ABS_PATH.'index.php')) != ABS_PATH . 'index.php' && strpos($get_url, '?') !== false) if (substr($get_url, 0, strlen(ABS_PATH . 'index.php')) != ABS_PATH . 'index.php' AND strpos($get_url, '?') !== false)
$get_url = substr($get_url, 0, strpos($get_url,'?')); $get_url = substr($get_url, 0, strpos($get_url, '?'));
$get_url = rawurldecode($get_url); $get_url = rawurldecode($get_url);
$get_url = mb_substr($get_url, strlen(ABS_PATH)); $get_url = mb_substr($get_url, strlen(ABS_PATH));
@ -1544,7 +1543,7 @@ class AVE_Core
} }
// проверка на наличие id в запросе // проверка на наличие id в запросе
if(! empty($_REQUEST['id'])) if (! empty($_REQUEST['id']))
{ {
$get_url = $AVE_DB->Query(" $get_url = $AVE_DB->Query("
SELECT SELECT
@ -1561,6 +1560,9 @@ class AVE_Core
// Экранируем поступающий URL // Экранируем поступающий URL
$get_url = $AVE_DB->EscStr($get_url); $get_url = $AVE_DB->EscStr($get_url);
if (mb_strlen($get_url) > 255)
$get_url = '';
// Забираем нужные данные // Забираем нужные данные
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
SELECT SELECT
@ -1569,6 +1571,7 @@ class AVE_Core
rubric_template, rubric_template,
rubric_meta_gen, rubric_meta_gen,
rub.rubric_header_template, rub.rubric_header_template,
rub.rubric_footer_template,
rub.rubric_start_code, rub.rubric_start_code,
template_text, template_text,
other.template other.template
@ -1593,7 +1596,7 @@ class AVE_Core
? "document_alias = '" . str_ireplace("'", "\'", $get_url) . "'" ? "document_alias = '" . str_ireplace("'", "\'", $get_url) . "'"
: (! empty($_REQUEST['id']) : (! empty($_REQUEST['id'])
? "doc.Id =" . intval($_REQUEST['id']) ? "doc.Id =" . intval($_REQUEST['id'])
:"doc.Id = 1")) . " : "doc.Id = 1")) . "
LIMIT 1 LIMIT 1
"); ");
@ -1627,6 +1630,7 @@ class AVE_Core
) )
{ {
header('HTTP/1.1 301 Moved Permanently'); header('HTTP/1.1 301 Moved Permanently');
if ($this->curentdoc->Id == 1) if ($this->curentdoc->Id == 1)
{ {
header('Location:' . ABS_PATH); header('Location:' . ABS_PATH);
@ -1641,7 +1645,7 @@ class AVE_Core
} }
else else
{ {
$redirect_alias = $AVE_DB->Query(" $sql = "
SELECT SELECT
a.document_alias a.document_alias
FROM FROM
@ -1651,19 +1655,20 @@ class AVE_Core
h.document_id = a.Id h.document_id = a.Id
AND AND
h.document_alias = '" . $get_url . "' h.document_alias = '" . $get_url . "'
")->GetCell(); ";
if(! empty($redirect_alias)) $redirect_alias = $AVE_DB->Query($sql)->GetCell();
if (! empty($redirect_alias))
{ {
header('HTTP/1.1 301 Moved Permanently'); header('HTTP/1.1 301 Moved Permanently');
header('Location:' . ABS_PATH . $redirect_alias . URL_SUFF); header('Location:' . ABS_PATH . $redirect_alias . URL_SUFF);
exit(); exit();
} }
if(! (! empty($_REQUEST['sysblock']) || ! empty($_REQUEST['module']) || ! empty($_REQUEST['request']))) if (! (! empty($_REQUEST['sysblock']) || ! empty($_REQUEST['module']) || ! empty($_REQUEST['request'])))
$_GET['id'] = $_REQUEST['id'] = PAGE_NOT_FOUND_ID; $_GET['id'] = $_REQUEST['id'] = PAGE_NOT_FOUND_ID;
} }
} }
} }
?> ?>

95
class/class.database.php

@ -591,7 +591,8 @@ class AVE_DB
foreach ((array)$stack as $call) foreach ((array)$stack as $call)
{ {
if (@$call['class'] == __CLASS__) continue; if (@$call['class'] == __CLASS__)
continue;
$function = $call['function']; $function = $call['function'];
@ -611,7 +612,8 @@ class AVE_DB
} }
/************************* Внешние методы класса *************************/ /************************* Внешние методы класса *************************/
/** /**
* Метод, предназначенный для выполнения запроса к MySQL * Метод, предназначенный для выполнения запроса к MySQL
@ -657,31 +659,39 @@ class AVE_DB
*/ */
public function Query($query, $TTL = null, $cache_id = '', $log = true) public function Query($query, $TTL = null, $cache_id = '', $log = true)
{ {
// Если это документ, то меняем расположение
if (substr($cache_id, 0, 3) == 'doc') if (substr($cache_id, 0, 3) == 'doc')
{ {
$cache_id = (int)str_replace('doc_', '', $cache_id); $cache_id = (int)str_replace('doc_', '', $cache_id);
$cache_id = 'doc/' . (floor($cache_id / 1000)) . '/' . $cache_id; $cache_id = 'doc/' . (floor($cache_id / 1000)) . '/' . $cache_id;
} }
// Принудительная фильтрация запроса
//$query = filter_var($query, FILTER_SANITIZE_STRING); //$query = filter_var($query, FILTER_SANITIZE_STRING);
$result = array(); $result = array();
$TTL = strtoupper(substr(trim($query), 0, 6)) == 'SELECT' ? $TTL : null; // Если это SELECT - то отслеживаем кеширование
/* $TTL = strtoupper(substr(trim($query), 0, 6)) == 'SELECT'
// Не знаю кто поставил эту заглушку, но я выкл ее ? $TTL
if (defined('ACP')) $TTL = null; : null;
*/
if ($TTL && $TTL != "nocache") // Если включен DEV MODE, то отключаем кеширование запросов
if (defined('DEV_MODE') AND DEV_MODE)
$TTL = null;
if ($TTL && ($TTL != 'nocache' AND $TTL != null))
{ {
$cache_file = md5($query); $cache_file = md5($query);
$cache_dir = BASE_DIR . '/cache/sql/' . (trim($cache_id) > '' ? trim($cache_id) . '/' : substr($cache_file, 0, 2) . '/' . substr($cache_file, 2, 2) . '/' . substr($cache_file, 4, 2) . '/'); $cache_dir = BASE_DIR . '/cache/sql/' . (trim($cache_id) > ''
? trim($cache_id) . '/'
: substr($cache_file, 0, 2) . '/' . substr($cache_file, 2, 2) . '/' . substr($cache_file, 4, 2) . '/');
if(! file_exists($cache_dir)) if (! file_exists($cache_dir))
mkdir($cache_dir, 0777, true); mkdir($cache_dir, 0777, true);
if(! (file_exists($cache_dir . $cache_file) && ($TTL == -1 ? true : @time() - @filemtime($cache_dir . $cache_file) < $TTL))) if (! (file_exists($cache_dir . $cache_file) && ($TTL == -1 ? true : time() - filemtime($cache_dir . $cache_file) < $TTL)))
{ {
$res = $this->Real_Query($query, $log); $res = $this->Real_Query($query, $log);
@ -702,6 +712,7 @@ class AVE_DB
return $this->Real_Query($query, $log); return $this->Real_Query($query, $log);
} }
/** /**
* This method is needed for prepared statements. They require * This method is needed for prepared statements. They require
* the data type of the field to be bound with "i" s", etc. * the data type of the field to be bound with "i" s", etc.
@ -737,6 +748,7 @@ class AVE_DB
return ''; return '';
} }
/** /**
* Метод, предназначенный для экранирования специальных символов в строках для использования в выражениях SQL * Метод, предназначенный для экранирования специальных символов в строках для использования в выражениях SQL
* *
@ -753,6 +765,7 @@ class AVE_DB
return $value; return $value;
} }
/** /**
* Метод, предназначенный для экранирования специальных символов в строках для использования в выражениях SQL * Метод, предназначенный для экранирования специальных символов в строках для использования в выражениях SQL
* *
@ -763,13 +776,26 @@ class AVE_DB
{ {
$value = htmlspecialchars($value); $value = htmlspecialchars($value);
$value = strtr($value, array( $search = array(
'<' => '&lt;',
';' => '&#58;',
'|' => '&#124;',
'&' => '&#38;',
'>' => '&gt;',
"'" => '&apos;',
'"' => '&#x22;',
')' => '&#x29;',
'(' => '&#x28;',
'{' => '&#123;', '{' => '&#123;',
'}' => '&#125;', '}' => '&#125;',
'$' => '&#36;', '$' => '&#36;',
'&amp;gt;' => '&gt;', '&amp;gt;' => '&gt;'
"'" => "&#39;" );
));
$value = str_replace(array_keys($search), array_values($search), $value);
$value = str_ireplace('%3Cscript', '', $value);
$value = filter_var($value, FILTER_SANITIZE_STRING);
if (! is_array($value)) if (! is_array($value))
{ {
@ -808,18 +834,23 @@ class AVE_DB
*/ */
public function NumAllRows($query, $TTL = null, $cache_id = '') public function NumAllRows($query, $TTL = null, $cache_id = '')
{ {
if ($TTL) // Если включен DEV MODE, то отключаем кеширование запросов
if (defined('DEV_MODE') AND DEV_MODE)
$TTL = null;
if ($TTL AND ($TTL != "nocache" AND $TTL != null))
{ {
$cache_file = md5($query).'.count'; // Кол-во
$cache_file = md5($query) . '.count';
$cache_dir = BASE_DIR.'/cache/sql/'.(trim($cache_id) > '' $cache_dir = BASE_DIR . '/cache/sql/' . (trim($cache_id) > ''
? trim($cache_id).'/' ? trim($cache_id) . '/'
: substr($cache_file, 0, 2).'/'.substr($cache_file, 2, 2).'/'.substr($cache_file, 4, 2).'/'); : substr($cache_file, 0, 2) . '/'. substr($cache_file, 2, 2) . '/' . substr($cache_file, 4, 2) . '/');
if (! file_exists($cache_dir)) if (! file_exists($cache_dir))
mkdir($cache_dir, 0777, true); mkdir($cache_dir, 0777, true);
if (! (file_exists($cache_dir.$cache_file) && ($TTL==-1 ? true : @time()-@filemtime($cache_dir.$cache_file) < $TTL))) if (! (file_exists($cache_dir . $cache_file) && ($TTL == -1 ? true : time() - filemtime($cache_dir . $cache_file) < $TTL)))
{ {
if ($query <> $this->_last_query) if ($query <> $this->_last_query)
{ {
@ -1147,5 +1178,27 @@ class AVE_DB
return rrmdir($cache_dir); return rrmdir($cache_dir);
} }
/**
* Метод, предназначенный для очищения кеша запросов
*
* @param $cache_id
* @return bool
*/
public function clear_request($cache_id)
{
$request = request_get_settings($cache_id);
$cache_from_id = BASE_DIR . '/cache/sql/request/settings/' . (trim($request->Id) > ''
? trim($request->Id) . '/'
: '');
$cache_from_alias = BASE_DIR . '/cache/sql/request/settings/' . (trim($request->request_alias) > ''
? trim($request->request_alias) . '/'
: '');
return (rrmdir($cache_from_id) AND rrmdir($cache_from_alias));
}
} // End AVE_DB class } // End AVE_DB class
?> ?>

293
class/class.docs.php

@ -182,13 +182,82 @@ class AVE_Document
return $field; return $field;
} }
/**
* Внутренние методы
*/
/** function _get_rubric_fields ($id)
* Управление Документами {
*/ global $AVE_DB;
$sql = "
SELECT
Id,
rubric_field_type,
rubric_field_numeric
FROM
".PREFIX."_rubric_fields
WHERE
rubric_id = '" . $id . "'
";
$query = $AVE_DB->Query($sql);
$ids = array();
while ($row = $query->FetchAssocArray())
{
$ids[$row['Id']]['rubric_field_type'] = $row['rubric_field_type'];
$ids[$row['Id']]['rubric_field_numeric'] = (int)$row['rubric_field_numeric'];
}
return $ids;
}
function _get_document_text_fields ($id)
{
global $AVE_DB;
$sql = "
SELECT
rubric_field_id
FROM
".PREFIX."_document_fields_text
WHERE
document_id = '" . $id . "'
";
$query = $AVE_DB->Query($sql);
$ids = array();
while ($row = $query->GetCell())
array_push($ids, $row);
return $ids;
}
function _get_rubric ($id)
{
global $AVE_DB;
if (! $id)
return false;
$sql = "
SELECT
rubric_alias,
rubric_alias_history,
rubric_code_start,
rubric_code_end
FROM
" . PREFIX . "_rubrics
WHERE
Id = '" . $id . "'
";
return $AVE_DB->Query($sql)->FetchRow();
}
/** /**
* Метод, предназначенный для получения списка документов в Панели управления * Метод, предназначенный для получения списка документов в Панели управления
@ -209,6 +278,9 @@ class AVE_Document
$ex_docstatus = ''; $ex_docstatus = '';
$navi_docstatus = ''; $navi_docstatus = '';
// При смене страницы убираем из сессии параметры выборки документов
unset ($_SESSION['search_query']);
// Если в запросе пришел параметр на поиск документа по названию // Если в запросе пришел параметр на поиск документа по названию
if (!empty($_REQUEST['QueryTitel'])) if (!empty($_REQUEST['QueryTitel']))
{ {
@ -428,6 +500,9 @@ class AVE_Document
$db_sort = 'ORDER BY doc.Id DESC'; $db_sort = 'ORDER BY doc.Id DESC';
$navi_sort = '&sort=id_desc'; $navi_sort = '&sort=id_desc';
// Параметры вывборки документов
$search_query = base64_encode($_SERVER['QUERY_STRING']);
// Если в запросе используется параметр сортировки // Если в запросе используется параметр сортировки
if (!empty($_REQUEST['sort'])) if (!empty($_REQUEST['sort']))
{ {
@ -597,6 +672,9 @@ class AVE_Document
// Циклически обрабатываем полученные данные с целью приведения некоторых из них к удобочитаемому виду // Циклически обрабатываем полученные данные с целью приведения некоторых из них к удобочитаемому виду
while ($row = $sql->FetchRow()) while ($row = $sql->FetchRow())
{ {
// Запомниаем в сесии, параметры выборки для документа
$_SESSION['search_query'][$row->Id] = $search_query;
// Определяем количество комментариев, оставленных для данного документа // Определяем количество комментариев, оставленных для данного документа
$row->ist_remark = $AVE_DB->Query(" $row->ist_remark = $AVE_DB->Query("
SELECT SELECT
@ -1085,23 +1163,27 @@ class AVE_Document
/** /**
* Метод, предназначенный для сохранения документа в БД * Метод, предназначенный для сохранения документа в БД
* *
* @param int $rubric_id идентификатор Рубрики * @param int $rubric_id Идентификатор Рубрики
* @param int $document_id идентификатор Документа * @param int $document_id Идентификатор Документа или null, если документ новый
* @param array $data Документ в массиве структура - хитрая * @param array $data Документ в массиве структура - хитрая
* @param bool $update_non_exists_fields Изменять поля на пустые * @param bool $update_non_exists_fields Изменять поля на пустые значения у не переданных полей или не надо
* значения у не переданных полей или не надо * @param bool $rubric_code Использовать код рубрики или не надо
* @param bool $rubric_cod Использовать код рубрики или не надо * @param bool $revisions Использовать ревизии документов
* возвращает номер документа если все удачно и false если все плохо * @param bool $logs Писать системные сообщения в журнал
* @param bool $generate Генерировать Meta
*
* 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;
//-- Проверяем входящие данные -- // //-- Проверяем входящие данные -- //
$rubric_id = (int)$rubric_id; // Если отсутсвует рубрика, ничего не делаем
$document_id = (int)$document_id; if(! $rubric_id)
return false;
// Если отсутсвуют данные, ничего не делаем // Если отсутсвуют данные, ничего не делаем
if(! isset($data)) if(! isset($data))
@ -1111,30 +1193,21 @@ class AVE_Document
if(! isset($data['feld'])) if(! isset($data['feld']))
return false; return false;
$rubric_id = (int)$rubric_id;
$document_id = (int)$document_id;
// Определяем тип опреации // Определяем тип опреации
$oper = 'INSERT'; $oper = 'INSERT';
// Забираем параметры рубрики // Забираем параметры рубрики
$_rubric = $AVE_DB->Query(" $_rubric = $this->_get_rubric($rubric_id);
SELECT
rubric_alias,
rubric_alias_history,
rubric_code_start,
rubric_code_end
FROM
" . PREFIX . "_rubrics
WHERE
Id = '" . $rubric_id . "'
")->FetchRow();
// Запускаем триггер перед сохранением // Запускаем триггер перед сохранением
Hooks::trigger('DocumentBeforeSave', array('rubric_id' => $rubric_id, 'document_id' => $document_id, 'data' => $data)); Hooks::trigger('DocumentBeforeSave', array('rubric_id' => $rubric_id, 'document_id' => $document_id, 'data' => $data, 'requests' => $_REQUEST));
// Выполняем стартовый код рубрики // Выполняем стартовый код рубрики
if ($rubric_code) if ($rubric_code)
{ eval ('?'.'>' . $_rubric->rubric_code_start . '<'.'?');
eval ('?>' . $_rubric->rubric_code_start . '<?');
}
// Если нет данных для сохранения, перкращаем сохранение и переходим на страницу документов // Если нет данных для сохранения, перкращаем сохранение и переходим на страницу документов
if (empty($data)) if (empty($data))
@ -1154,6 +1227,7 @@ class AVE_Document
|| (defined('UGROUP') && UGROUP == 1) )) || (defined('UGROUP') && UGROUP == 1) ))
return false; return false;
// Title документа
$data['document_title'] = $_url = empty($data['document_title']) $data['document_title'] = $_url = empty($data['document_title'])
? $AVE_Template->get_config_vars('DOC_WITHOUT_TITLE') ? $AVE_Template->get_config_vars('DOC_WITHOUT_TITLE')
: $data['document_title']; : $data['document_title'];
@ -1332,7 +1406,7 @@ class AVE_Document
else else
{ {
// Если оператор INSERT // Если оператор INSERT
// Если новый алиас документа, сопадает с алиасом в истории, просто стираем историю // Если новый алиас документа, совпадает с алиасом в истории, просто стираем историю
$AVE_DB->Query(" $AVE_DB->Query("
DELETE FROM DELETE FROM
". PREFIX . "_document_alias_history ". PREFIX . "_document_alias_history
@ -1378,9 +1452,9 @@ class AVE_Document
$fields = array(); $fields = array();
// Получаем структуру документа // Получаем структуру документа
if($oper == 'INSERT') if ($oper == 'INSERT')
{ {
$sql = $AVE_DB->Query(" $sql = "
SELECT SELECT
* *
FROM FROM
@ -1389,28 +1463,29 @@ class AVE_Document
rubric_id = '" . $rubric_id . "' rubric_id = '" . $rubric_id . "'
ORDER BY ORDER BY
rubric_field_position ASC rubric_field_position ASC
"); ";
} }
else else
{ {
$sql = $AVE_DB->Query(" $sql = "
SELECT SELECT
doc.Id AS df_id,
rub.*, rub.*,
rubric_field_default, rubric_field_default,
doc.field_value df.field_value
FROM FROM
" . PREFIX . "_rubric_fields AS rub " . PREFIX . "_rubric_fields AS rub
LEFT JOIN LEFT JOIN
" . PREFIX . "_document_fields AS doc " . PREFIX . "_document_fields AS df
ON rubric_field_id = rub.Id ON rubric_field_id = rub.Id
WHERE WHERE
document_id = '" . $document_id . "' document_id = '" . $document_id . "'
ORDER BY ORDER BY
rubric_field_position ASC rubric_field_position ASC
"); ";
} }
$query = $AVE_DB->Query($sql);
// Если пришел вызов поля, который связан с модулем // Если пришел вызов поля, который связан с модулем
if (isset($data['field_module'])) if (isset($data['field_module']))
{ {
@ -1420,18 +1495,18 @@ class AVE_Document
$mod_function = (string)$mod_val . '_document_save'; $mod_function = (string)$mod_val . '_document_save';
$fields = $mod_function($mod_key, $mod_val, $sql, $data['feld'][$mod_key], $mod_key, $rubric_id); $fields = $mod_function($mod_key, $mod_val, $query, $data['feld'][$mod_key], $mod_key, $rubric_id);
} }
} }
else else
{ {
while ($row = $sql->FetchRow()) while ($row = $query->FetchRow())
{ {
array_push($fields, $row); $fields[$row->Id] = $row;
} }
} }
unset($sql); unset($sql, $query);
$where = ($oper == 'UPDATE' ? 'WHERE Id = ' . $document_id : ''); $where = ($oper == 'UPDATE' ? 'WHERE Id = ' . $document_id : '');
$author = ($oper != 'UPDATE' ? 'document_author_id = ' . $_SESSION['user_id'] . ',' : ''); $author = ($oper != 'UPDATE' ? 'document_author_id = ' . $_SESSION['user_id'] . ',' : '');
@ -1518,8 +1593,13 @@ class AVE_Document
if ($logs) if ($logs)
reportLog(($oper=='INSERT' reportLog(($oper=='INSERT'
? $AVE_Template->get_config_vars('DOC_SAVE_ADD') ? $AVE_Template->get_config_vars('DOC_SAVE_ADD')
: $AVE_Template->get_config_vars('DOC_SAVE_EDIT')) : $AVE_Template->get_config_vars('DOC_SAVE_EDIT')) . $AVE_Template->get_config_vars('DOC_SAVE_LOG_DOC') .' (' . $data['document_title'] . ' Id: ' . $document_id . ')');
. $AVE_Template->get_config_vars('DOC_SAVE_LOG_DOC') .' (' . $data['document_title'] . ' Id: ' . $document_id . ')');
// Получаем ID полей в данной рубрике
$rubric_fields = $this->_get_rubric_fields($rubric_id);
// Получаем ID текстовых полей в данном документе
$document_text_fields = $this->_get_document_text_fields($document_id);
// Циклически обрабатываем поля документа // Циклически обрабатываем поля документа
foreach ($fields as $k => $v) foreach ($fields as $k => $v)
@ -1535,23 +1615,10 @@ class AVE_Document
? $data['feld'][$fld_id] ? $data['feld'][$fld_id]
: $v->rubric_field_default); : $v->rubric_field_default);
if (! $AVE_DB->Query("
SELECT 1
FROM
" . PREFIX . "_rubric_fields
WHERE
Id = '" . $fld_id . "'
AND
rubric_id = '" . $rubric_id . "'
LIMIT 1
")->NumRows())
{
continue;
}
/* ------------------------------------------------------------------- */ /* ------------------------------------------------------------------- */
if(! is_array($fld_val)) // Если значение поля не является массивом
if (! is_array ($fld_val))
{ {
// Если запрещено использование php кода, тогда обнуляем данные поля // Если запрещено использование php кода, тогда обнуляем данные поля
if (! check_permission('document_php')) if (! check_permission('document_php'))
@ -1565,23 +1632,13 @@ class AVE_Document
$fld_val = pretty_chars($fld_val); $fld_val = pretty_chars($fld_val);
} }
$field_rubric = $AVE_DB->Query("
SELECT
*
FROM
" . PREFIX . "_rubric_fields
WHERE
Id = '" . $fld_id . "'
")->FetchRow();
// Отправляем полученные данные в функцию поля, в раздел "Save" // Отправляем полученные данные в функцию поля, в раздел "Save"
// для преобразования перед сохранением // для преобразования перед сохранением
$func = 'get_field_' . $field_rubric->rubric_field_type; $func = 'get_field_' . $rubric_fields[$fld_id]['rubric_field_type'];
if (is_callable($func)) // Если вызывается функция
{ if (is_callable ($func))
$fld_val = $func($fld_val, 'save', $fld_id, '', 0, $x, 0, 0, 0); $fld_val = $func($fld_val, 'save', $fld_id, '', 0, $x, 0, 0, 0);
}
//-- Собираем запрос к БД на добавление нового поля с его содержимым --// //-- Собираем запрос к БД на добавление нового поля с его содержимым --//
@ -1597,9 +1654,9 @@ class AVE_Document
? '' ? ''
: "rubric_field_id = '" . $fld_id . "', document_id = '" . $document_id . "',"); : "rubric_field_id = '" . $fld_id . "', document_id = '" . $document_id . "',");
$fval = (is_array($fld_val) $fval = is_array ($fld_val)
? serialize($fld_val) ? serialize ($fld_val)
: ($fld_val)); : $fld_val;
$substr = 500; $substr = 500;
@ -1607,22 +1664,22 @@ class AVE_Document
$substr = 499; $substr = 499;
// Сохраняем первые 500 символов // Сохраняем первые 500 символов
$f_val_500 = mb_substr($fval, 0, $substr); $f_val_500 = mb_substr ($fval, 0, $substr);
// Проверяем чтобы не было в конце слеша - \ // Проверяем чтобы не было в конце слеша - \
if (mb_substr($f_val_500, 498, 1) == '\\') if (mb_substr($f_val_500, 498, 1) == '\\')
$slash = true; $slash = true;
if ($slash) if ($slash)
$f_val_500 = rtrim($f_val_500, '\\'); $f_val_500 = rtrim ($f_val_500, '\\');
$sql = " $sql = "
$operator $operator
SET SET
$insert $insert
field_value = '" . $f_val_500 . "', field_value = '" . $f_val_500 . "',
field_number_value = '" . (($field_rubric->rubric_field_numeric) field_number_value = '" . (($rubric_fields[$fld_id]['rubric_field_numeric'])
? preg_replace('/[^\d.]/', '', $fld_val) ? preg_replace ('/[^\d.]/', '', $fld_val)
: 0) . "', : 0) . "',
document_in_search = '" . $search . "' document_in_search = '" . $search . "'
$where $where
@ -1636,27 +1693,21 @@ class AVE_Document
if (mb_strlen($fval) > $substr) if (mb_strlen($fval) > $substr)
{ {
// Проверяем есть ли запись о поле в БД // Проверяем есть ли запись о поле в БД
$check_field = $AVE_DB->Query(" $check_field = false;
SELECT
Id if (in_array ($fld_id, $document_text_fields))
FROM $check_field = true;
" .PREFIX . "_document_fields_text
WHERE
document_id = '" . $document_id . "'
AND
rubric_field_id='" . $fld_id . "'
")->GetCell();
$operator = ($check_field > 0 $operator = ($check_field
? "UPDATE " . PREFIX . "_document_fields_text" ? "UPDATE " . PREFIX . "_document_fields_text"
: "INSERT INTO " . PREFIX . "_document_fields_text" : "INSERT INTO " . PREFIX . "_document_fields_text"
); );
$where = ($check_field > 0 $where = ($check_field
? "WHERE document_id = '" . $document_id . "' AND rubric_field_id = '" . $fld_id . "'" ? "WHERE document_id = '" . $document_id . "' AND rubric_field_id = '" . $fld_id . "'"
: ''); : '');
$insert = ($check_field > 0 $insert = ($check_field
? '' ? ''
: "rubric_field_id = '" . $fld_id . "', document_id = '" . $document_id . "',"); : "rubric_field_id = '" . $fld_id . "', document_id = '" . $document_id . "',");
@ -1701,14 +1752,12 @@ class AVE_Document
doc_id = '" . $document_id . "' doc_id = '" . $document_id . "'
"); ");
// Запускаем триггер после сохранения
Hooks::trigger('DocumentAfterSave', array('rubric_id' => $rubric_id, 'document_id' => $document_id, 'data' => $data, 'field_module' => $data['field_module']));
// Выполняем код рубрики, после сохранения // Выполняем код рубрики, после сохранения
if ($rubric_code) if ($rubric_code)
{
eval ('?>' . $_rubric->rubric_code_end . '<?'); eval ('?>' . $_rubric->rubric_code_end . '<?');
}
// Запускаем триггер после сохранения
Hooks::trigger('DocumentAfterSave', array('rubric_id' => $rubric_id, 'document_id' => $document_id, 'data' => $data, 'field_module' => $data['field_module']));
// Чистим кеш // Чистим кеш
$AVE_DB->clearcache('rub_' . $rubric_id); $AVE_DB->clearcache('rub_' . $rubric_id);
@ -1716,7 +1765,7 @@ class AVE_Document
$AVE_DB->clearcompile('doc_' . $document_id); $AVE_DB->clearcompile('doc_' . $document_id);
$AVE_DB->clearcacherequest('doc_' . $document_id); $AVE_DB->clearcacherequest('doc_' . $document_id);
unset($_rubric); unset ($_rubric, $fields);
// Дополнительные обработки // Дополнительные обработки
if ($generate) if ($generate)
@ -1819,7 +1868,9 @@ class AVE_Document
$innavi = check_permission_acp('navigation_new') ? '&innavi=1' : ''; $innavi = check_permission_acp('navigation_new') ? '&innavi=1' : '';
// Определяем статус документа // Определяем статус документа
$document_status = !empty($_REQUEST['document_status']) ? (int)$_REQUEST['document_status'] : '0'; $document_status = ! empty($_REQUEST['document_status'])
? (int)$_REQUEST['document_status']
: '0';
// Если статус документа не определен // Если статус документа не определен
if (empty($document_status) && $_SESSION['user_group'] != 1) if (empty($document_status) && $_SESSION['user_group'] != 1)
@ -1832,7 +1883,7 @@ class AVE_Document
// которые пользователь ввел в поля документа // которые пользователь ввел в поля документа
foreach ($_POST['feld'] as $val) foreach ($_POST['feld'] as $val)
{ {
if (!empty($val)) if (! empty($val))
{ {
$newtext .= $val; $newtext .= $val;
$newtext .= "\n---------------------\n"; $newtext .= "\n---------------------\n";
@ -1850,6 +1901,7 @@ class AVE_Document
$body_to_admin = str_replace('%N%', "\n", $body_to_admin); $body_to_admin = str_replace('%N%', "\n", $body_to_admin);
$body_to_admin = str_replace('%TITLE%', stripslashes($_POST['document_title']), $body_to_admin); $body_to_admin = str_replace('%TITLE%', stripslashes($_POST['document_title']), $body_to_admin);
$body_to_admin = str_replace('%USER%', "'" . $_SESSION['user_name'] . "'", $body_to_admin); $body_to_admin = str_replace('%USER%', "'" . $_SESSION['user_name'] . "'", $body_to_admin);
send_mail( send_mail(
$system_mail, $system_mail,
$body_to_admin . $text, $body_to_admin . $text,
@ -2201,6 +2253,7 @@ class AVE_Document
groups.Id AS group_id, groups.Id AS group_id,
rub.*, rub.*,
rubric_field_default, rubric_field_default,
rubric_field_alias,
doc.field_value, doc.field_value,
field_more.field_value as field_value_more field_more.field_value as field_value_more
FROM FROM
@ -2263,6 +2316,7 @@ class AVE_Document
$fields_list[$group_id]['fields'][$field->Id]['Id'] = $field->Id; $fields_list[$group_id]['fields'][$field->Id]['Id'] = $field->Id;
$fields_list[$group_id]['fields'][$field->Id]['rubric_id'] = $row->rubric_id; $fields_list[$group_id]['fields'][$field->Id]['rubric_id'] = $row->rubric_id;
$fields_list[$group_id]['fields'][$field->Id]['rubric_field_title'] = $field->rubric_field_title; $fields_list[$group_id]['fields'][$field->Id]['rubric_field_title'] = $field->rubric_field_title;
$fields_list[$group_id]['fields'][$field->Id]['rubric_field_alias'] = $field->rubric_field_alias;
$fields_list[$group_id]['fields'][$field->Id]['rubric_field_description'] = $field->rubric_field_description; $fields_list[$group_id]['fields'][$field->Id]['rubric_field_description'] = $field->rubric_field_description;
$fields_list[$group_id]['fields'][$field->Id]['result'] = $field->field; $fields_list[$group_id]['fields'][$field->Id]['result'] = $field->field;
} }
@ -3693,10 +3747,47 @@ class AVE_Document
exit; exit;
} }
$search_query = $_SESSION['search_query'][$document_id] ? true : false;
$AVE_Template->assign('search_query', $search_query);
$AVE_Template->assign($document); $AVE_Template->assign($document);
$AVE_Template->assign('content', $AVE_Template->fetch('documents/form_after.tpl')); $AVE_Template->assign('content', $AVE_Template->fetch('documents/form_after.tpl'));
} }
/**
* Редирект сохраненного документа на раздел, учитывая фильтр
*
*/
function documentSaveRedirect()
{
$document_id = isset($_REQUEST['document_id'])
? (int)$_REQUEST['document_id']
: 0;
// Если не пришел $documet_id
if (! $document_id)
{
header('Location:index.php?do=docs&cp=' . SESSION);
exit;
}
// Параметры поиска
$search_query = base64_decode($_SESSION['search_query'][$document_id]);
$search_query = $search_query
? $search_query
: 'do=docs&cp=' . SESSION;
// Убираем из сессии данный документ
unset ($_SESSION['search_query'][$document_id]);
// Переходим на страницу
header('Location: index.php?' . $search_query);
exit;
}
/** /**
* Метод, предназначенный для смены автора документа * Метод, предназначенный для смены автора документа
* *

289
class/class.modules.php

@ -1,6 +1,6 @@
<?php <?php
/** /**
* AVE.cms * AVE.cms
* *
* @package AVE.cms * @package AVE.cms
@ -10,19 +10,20 @@
* *
*/ */
class AVE_Module class AVE_Module
{ {
/** public $_modules = array();
* Внутренние методы
*/ function __construct()
{
$this->_modules = $this->getModules();
}
/** /**
* Метод, который обрабатывает все module.php и записывает как свойство класса списки модулей * Метод, который обрабатывает все module.php и записывает как свойство класса списки модулей
*/ */
function getModules() function getModules()
{ {
global $AVE_DB;
$modules = array(); $modules = array();
// Получаем из БД информацию о всех установленных модулях // Получаем из БД информацию о всех установленных модулях
@ -34,50 +35,84 @@ class AVE_Module
// Циклически обрабатываем директории // Циклически обрабатываем директории
while (false !== ($entry = $d->read())) while (false !== ($entry = $d->read()))
{ {
if (substr($entry, 0, 1) == '.') continue; if (substr($entry, 0, 1) == '.')
continue;
if (! is_dir(BASE_DIR . '/modules/' . $entry))
continue;
$AVE_Template = new AVE_Template(BASE_DIR . '/admin/templates');
$_no_lang_file = false;
// Языковой файл
$lang_file = BASE_DIR . '/modules/'.$entry.'/lang/' . $_SESSION['user_language'] . '.txt';
// Отдаем смарти переменные
if (file_exists($lang_file))
$AVE_Template->config_load($lang_file, 'name');
else
$_no_lang_file = true;
$module_dir = $d->path . '/' . $entry; $module_dir = $d->path . '/' . $entry;
if (!is_dir($module_dir)) continue;
$modul = array(); if (! is_dir($module_dir))
if (!(is_file($module_dir . '/module.php') && @include($module_dir . '/module.php'))) continue;
$module = array();
if (! (is_file($module_dir . '/info.php') && @include($module_dir . '/info.php')))
{ {
// Если не удалось подключить основной файл модуля module.php - Фиксируем ошибку // Если не удалось подключить основной файл модуля module.php - Фиксируем ошибку
$modules['errors'][] = $entry; $modules['errors'][] = $entry;
continue; continue;
} }
$module['ModuleName'] = !$_no_lang_file
? $AVE_Template->get_config_vars('MODULE_NAME')
: 'No name';
$module['ModuleDescription'] = !$_no_lang_file
? $AVE_Template->get_config_vars('MODULE_DESCRIPTION')
: 'No description';
// Дополняем массив с данными модуля // Дополняем массив с данными модуля
$modul['permission'] = check_permission('mod_'. $modul['ModuleSysName']); $module['permission'] = check_permission('mod_'. $module['ModuleSysName']);
$row = isset($modules_db[$modul['ModuleName']]) ? $modules_db[$modul['ModuleName']] : false;
// Установлен/Не установлен по системному имени
$row = isset($modules_db[$module['ModuleSysName']])
? $modules_db[$module['ModuleSysName']]
: false;
// установленные модули // установленные модули
if ($row) if ($row)
{ {
$modul['status'] = $row->ModuleStatus; $module['status'] = $row->ModuleStatus;
$modul['id'] = $row->Id; $module['id'] = $row->Id;
$modul['need_update'] = ($row->ModuleVersion != $modul['ModuleVersion']); $module['need_update'] = ($row->ModuleVersion != $module['ModuleVersion']);
$modul['ModuleVersion'] = $row->ModuleVersion; $module['template'] = ($row->ModuleTemplate ? $row->ModuleTemplate : 0);
$modul['template'] = ($row->ModuleTemplate ? $row->ModuleTemplate : 0); $module['ModuleVersion'] = $row->ModuleVersion;
} }
// неустановленные модули // неустановленные модули
else else
{ {
$modul['status'] = false; $module['status'] = false;
$modul['id'] = $modul['ModuleSysName']; $module['id'] = $module['ModuleSysName'];
$modul['template'] = (!empty($modul['ModuleTemplate']) ? $modul['ModuleTemplate'] : ''); $module['template'] = (! empty($module['ModuleTemplate']) ? $module['ModuleTemplate'] : '');
} }
// записываем в массив // записываем в массив
$modules[$modul['ModuleSysName']] = $modul; $modules[$module['ModuleSysName']] = $module;
unset ($module);
} }
// Закрываем папку
$d->Close(); $d->Close();
return $modules; return $modules;
} }
/**
* Внешние методы
*/
/** /**
* Метод, преданзначеный для выода модулей * Метод, преданзначеный для выода модулей
* *
@ -91,48 +126,101 @@ class AVE_Module
// Получаем список всех шаблонов // Получаем список всех шаблонов
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
SELECT Id, template_title SELECT
FROM " . PREFIX . "_templates Id,
template_title
FROM
" . PREFIX . "_templates
"); ");
while ($row = $sql->FetchRow()) while ($row = $sql->FetchRow())
{
$assign['all_templates'][$row->Id] = htmlspecialchars($row->template_title, ENT_QUOTES); $assign['all_templates'][$row->Id] = htmlspecialchars($row->template_title, ENT_QUOTES);
}
// Заголовок: Автор модуля
$author_title = $AVE_Template->get_config_vars('MODULES_AUTHOR'); $author_title = $AVE_Template->get_config_vars('MODULES_AUTHOR');
$modules = $this->getModules();
// Получаем список всех модулей
$modules = $this->_modules;
foreach ($modules as $module) foreach ($modules as $module)
{ {
$module['info'] = $module['ModuleDescription'] . (!$module['ModuleAutor'] ? '<br /><br />' : "<br /><br /><strong>$author_title</strong><br />" . $module['ModuleAutor'] . "<br />") . '<br /><em>' . $module['ModuleCopyright'] . '</em>'; $module['info'] = $module['ModuleDescription'] . (! $module['ModuleAutor']
? '<br /><br />'
: "<br /><br /><strong>$author_title</strong><br />" . $module['ModuleAutor'] . "<br />") . '<br /><em>' . $module['ModuleCopyright'] . '</em>';
// установленные модули // установленные модули
if ($module['status'] !== false) if ($module['status'] !== false)
{ $installed_modules[$module['ModuleSysName']] = $module;
$installed_modules[$module['ModuleName']] = $module;
}
// неустановленные модули // неустановленные модули
else else
{ $not_installed_modules[$module['ModuleSysName']] = $module;
$not_installed_modules[$module['ModuleName']] = $module;
} }
}
!empty($installed_modules) ? ksort($installed_modules) : $installed_modules = ''; ! empty($installed_modules)
!empty($not_installed_modules) ? ksort($not_installed_modules) : $not_installed_modules = ''; ? ksort($installed_modules)
: $installed_modules = '';
! empty($not_installed_modules)
? ksort($not_installed_modules)
: $not_installed_modules = '';
$assign['installed_modules'] = $installed_modules; $assign['installed_modules'] = $installed_modules;
$assign['not_installed_modules'] = $not_installed_modules; $assign['not_installed_modules'] = $not_installed_modules;
// Массив с ошибками // Массив с ошибками
if(!empty($modules['errors'])){ if (! empty($modules['errors']))
{
foreach ($modules['errors'] as $error) foreach ($modules['errors'] as $error)
{ {
$assign['errors'][] = $AVE_Template->get_config_vars('MODULES_ERROR') . $error; $assign['errors'][] = $AVE_Template->get_config_vars('MODULES_ERROR') . $error;
} }
} }
// Передаем данные в шаблон и отображаем страницу со списком модулей // Передаем данные в шаблон и отображаем страницу со списком модулей
$AVE_Template->assign($assign); $AVE_Template->assign($assign);
$AVE_Template->assign('content', $AVE_Template->fetch('modules/modules.tpl')); $AVE_Template->assign('content', $AVE_Template->fetch('modules/modules.tpl'));
} }
/**
* Метод получения списка модулей
*
* @param int $status статус возвращаемых модулей
* 1 - активные модули
* 0 - неактивные модули
* если не указано возвращает модули без учета статуса
* @return array
*/
function moduleListGet($status = null)
{
global $AVE_DB;
$modules = array();
// Условие, определяющее статус документа для запроса к БД
$where_status = ($status !== null)
? "WHERE ModuleStatus = '" . (int)$status . "'"
: '';
// Выполняем запрос к БД и получаем список документов,
// согласно статусу, либо все модули, если статус не указан
$sql = $AVE_DB->Query("
SELECT
*
FROM
" . PREFIX . "_module
" . $where_status . "
ORDER BY
ModuleName ASC
");
while ($row = $sql->FetchRow())
$modules[$row->ModuleSysName] = $row;
// Возвращаем список модулей
return $modules;
}
/** /**
* Метод, предназначенный для обновления в БД информации о шаблонах модулей * Метод, предназначенный для обновления в БД информации о шаблонах модулей
* *
@ -146,9 +234,12 @@ class AVE_Module
{ {
// Обновление информации о шаблоне модуля // Обновление информации о шаблоне модуля
$AVE_DB->Query(" $AVE_DB->Query("
UPDATE " . PREFIX . "_module UPDATE
SET ModuleTemplate = '" . (int)$template_id . "' " . PREFIX . "_module
WHERE Id = '" . (int)$id . "' SET
ModuleTemplate = '" . (int)$template_id . "'
WHERE
Id = '" . (int)$id . "'
"); ");
} }
@ -166,25 +257,33 @@ class AVE_Module
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
// Получаем данные модуля // Получаем данные модуля
$modules = $this->getModules(); $modules = $this->_modules;
$modul = $modules[MODULE_PATH]; $modul = $modules[MODULE_PATH];
// Удаляем информацию о модуле в таблице module // Удаляем информацию о модуле в таблице module
$AVE_DB->Query(" $AVE_DB->Query("
DELETE DELETE
FROM " . PREFIX . "_module FROM
WHERE ModuleSysName = '" . MODULE_PATH . "' " . PREFIX . "_module
WHERE
ModuleSysName = '" . MODULE_PATH . "'
"); ");
// Определяем, имеет ли модуль возможность настройки в Панели управления // Определяем, имеет ли модуль возможность настройки в Панели управления
$modul['ModuleAdminEdit'] = (!empty($modul['ModuleAdminEdit'])) ? $modul['ModuleAdminEdit'] : 0; $modul['ModuleAdminEdit'] = (!empty($modul['ModuleAdminEdit']))
? $modul['ModuleAdminEdit']
: 0;
// Определяем, имеет ли модуль возможность смены шаблона // Определяем, имеет ли модуль возможность смены шаблона
$modul['ModuleTemplate'] = ($modul['ModuleTemplate']) ? $modul['ModuleTemplate'] : 0; $modul['ModuleTemplate'] = ($modul['ModuleTemplate'])
? $modul['ModuleTemplate']
: 0;
// Добавляем информацию о модуле в таблицу module // Добавляем информацию о модуле в таблицу module
$AVE_DB->Query(" $AVE_DB->Query("
INSERT " . PREFIX . "_module INSERT INTO
" . PREFIX . "_module
SET SET
ModuleName = '" . $modul['ModuleName'] . "', ModuleName = '" . $modul['ModuleName'] . "',
ModuleStatus = '1', ModuleStatus = '1',
@ -202,6 +301,7 @@ class AVE_Module
$module_sql_deinstall = array(); $module_sql_deinstall = array();
$module_sql_install = array(); $module_sql_install = array();
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php'; $sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
if (is_file($sql_file) && @include($sql_file)) if (is_file($sql_file) && @include($sql_file))
{ {
// Выполняем запросы удаления таблиц модуля // Выполняем запросы удаления таблиц модуля
@ -219,7 +319,9 @@ class AVE_Module
} }
} }
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
($_REQUEST['action'] == "reinstall") ? reportLog($AVE_Template->get_config_vars('MODULES_ACTION_REINSTALL') . ' (' . $modul['ModuleName'] . ')') : reportLog($AVE_Template->get_config_vars('MODULES_ACTION_INSTALL') . ' (' . $modul['ModuleName'] . ')'); ($_REQUEST['action'] == "reinstall")
? reportLog($AVE_Template->get_config_vars('MODULES_ACTION_REINSTALL') . ' (' . $modul['ModuleName'] . ')')
: reportLog($AVE_Template->get_config_vars('MODULES_ACTION_INSTALL') . ' (' . $modul['ModuleName'] . ')');
// Выполняем обновление страницы со списком модулей // Выполняем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION); header('Location:index.php?do=modules&cp=' . SESSION);
@ -236,8 +338,11 @@ class AVE_Module
// Подключаем файл с запросами к БД для данного модуля // Подключаем файл с запросами к БД для данного модуля
$module_sql_update = array(); $module_sql_update = array();
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php'; $sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
$mod_file = BASE_DIR . '/modules/' . MODULE_PATH . '/module.php'; $mod_file = BASE_DIR . '/modules/' . MODULE_PATH . '/module.php';
if (file_exists($mod_file) && file_exists($sql_file)) if (file_exists($mod_file) && file_exists($sql_file))
{ {
include($mod_file); include($mod_file);
@ -253,8 +358,10 @@ class AVE_Module
elseif (file_exists($mod_file) && file_exists($sql_file) === false) elseif (file_exists($mod_file) && file_exists($sql_file) === false)
{ {
include($mod_file); include($mod_file);
$AVE_DB->Query(" $AVE_DB->Query("
UPDATE " . PREFIX . "_module UPDATE
" . PREFIX . "_module
SET SET
ModuleName = '" . $modul['ModuleName'] . "', ModuleName = '" . $modul['ModuleName'] . "',
ModuleStatus = '1', ModuleStatus = '1',
@ -271,7 +378,7 @@ class AVE_Module
"); ");
} }
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('MODULES_ACTION_UPDATE') . ' (' . MODULE_PATH . ')'); reportLog ($AVE_Template->get_config_vars('MODULES_ACTION_UPDATE') . ' (' . MODULE_PATH . ')');
// Выполянем обновление страницы со списком модулей // Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION); header('Location:index.php?do=modules&cp=' . SESSION);
@ -288,7 +395,9 @@ class AVE_Module
// Подключаем файл с запросами к БД для данного модуля // Подключаем файл с запросами к БД для данного модуля
$module_sql_deinstall = array(); $module_sql_deinstall = array();
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php'; $sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
if (is_file($sql_file) && @include($sql_file)) if (is_file($sql_file) && @include($sql_file))
{ {
// Выполняем запросы удаления таблиц модуля // Выполняем запросы удаления таблиц модуля
@ -302,12 +411,14 @@ class AVE_Module
// Удаляем информацию о модуле в таблице module // Удаляем информацию о модуле в таблице module
$AVE_DB->Query(" $AVE_DB->Query("
DELETE DELETE
FROM " . PREFIX . "_module FROM
WHERE ModuleSysName = '" . MODULE_PATH . "' " . PREFIX . "_module
WHERE
ModuleSysName = '" . MODULE_PATH . "'
"); ");
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('MODULES_ACTION_DELETE') .' (' . MODULE_PATH . ')'); reportLog ($AVE_Template->get_config_vars('MODULES_ACTION_DELETE') .' (' . MODULE_PATH . ')');
// Выполянем обновление страницы со списком модулей // Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION); header('Location:index.php?do=modules&cp=' . SESSION);
@ -323,15 +434,23 @@ class AVE_Module
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$status = $AVE_DB->Query(" $status = $AVE_DB->Query("
SELECT ModuleName, ModuleStatus FROM " . PREFIX . "_module SELECT
WHERE ModuleSysName = '" . MODULE_PATH . "' ModuleName,
ModuleStatus
FROM
" . PREFIX . "_module
WHERE
ModuleSysName = '" . MODULE_PATH . "'
")->FetchRow(); ")->FetchRow();
$ModuleStatus = ($status->ModuleStatus == "0" || $status->ModuleStatus == NULL) ? "1" : "0"; $ModuleStatus = ($status->ModuleStatus == "0" || $status->ModuleStatus == NULL)
? "1"
: "0";
// Выполняем запрос к БД на смену статуса модуля // Выполняем запрос к БД на смену статуса модуля
$AVE_DB->Query(" $AVE_DB->Query("
UPDATE " . PREFIX . "_module UPDATE
" . PREFIX . "_module
SET SET
ModuleStatus = '".$ModuleStatus."' ModuleStatus = '".$ModuleStatus."'
WHERE WHERE
@ -339,45 +458,15 @@ class AVE_Module
"); ");
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
reportLog((($ModuleStatus == "0") ? $AVE_Template->get_config_vars('MODULES_ACTION_OFFLINE') : $AVE_Template->get_config_vars('MODULES_ACTION_ONLINE')) . ' (' . $status->ModuleName . ')'); reportLog ((($ModuleStatus == "0")
? $AVE_Template->get_config_vars('MODULES_ACTION_OFFLINE')
: $AVE_Template->get_config_vars('MODULES_ACTION_ONLINE')) . ' (' . $status->ModuleName . ')');
// Выполняем обновление страницы со списком модулей // Выполняем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION); header('Location:index.php?do=modules&cp=' . SESSION);
exit; exit;
} }
/**
* Метод получения списка модулей
*
* @param int $status статус возвращаемых модулей
* 1 - активные модули
* 0 - неактивные модули
* если не указано возвращает модули без учета статуса
* @return array
*/
function moduleListGet($status = null)
{
global $AVE_DB;
$modules = array();
// Условие, определяющее статус документа для запроса к БД
$where_status = ($status !== null) ? "WHERE ModuleStatus = '" . (int)$status . "'" : '';
// Выполняем запрос к БД и получаем список документов,
// согласно статусу, либо все модули, если статус не указан
$sql = $AVE_DB->Query("
SELECT * FROM " . PREFIX . "_module
" . $where_status . "
ORDER BY ModuleName ASC
");
while ($row = $sql->FetchRow())
{
$modules[$row->ModuleName] = $row;
}
// Возвращаем список модулей
return $modules;
}
function moduleRemove($dir) function moduleRemove($dir)
{ {
@ -386,21 +475,23 @@ class AVE_Module
$directory = BASE_DIR . '/modules/' . $dir; $directory = BASE_DIR . '/modules/' . $dir;
$files = glob($directory . '*', GLOB_MARK); $files = glob($directory . '*', GLOB_MARK);
foreach($files as $file){
foreach ($files as $file)
{
if(substr($file, -1) == '/') if(substr($file, -1) == '/')
moduleRemove($file); moduleRemove($file);
else else
unlink($file); unlink($file);
} }
rrmdir($directory);
rrmdir ($directory);
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('MODULES_ACTION_REMOVE') . ' (' . $dir . ')'); reportLog ($AVE_Template->get_config_vars('MODULES_ACTION_REMOVE') . ' (' . $dir . ')');
// Выполянем обновление страницы со списком модулей // Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION); header('Location:index.php?do=modules&cp=' . SESSION);
exit; exit;
} }
} }
?> ?>

50
class/class.navigation.php

@ -193,7 +193,8 @@
// Выполняем запрос к БД и получаем всю информацию о данном меню // Выполняем запрос к БД и получаем всю информацию о данном меню
$row = $AVE_DB->Query(" $row = $AVE_DB->Query("
SELECT * SELECT
*
FROM FROM
" . PREFIX . "_navigation " . PREFIX . "_navigation
WHERE WHERE
@ -241,7 +242,8 @@
"); ");
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($navigation_id, $_REQUEST['alias']); $this->clearCache($navigation_id, $_REQUEST['alias']);
$this->clearCacheId($navigation_id, $_REQUEST['alias']);
if ($sql === false) if ($sql === false)
{ {
@ -362,7 +364,7 @@
")->FetchRow(); ")->FetchRow();
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($navigation_id, $sql->alias); $this->clearCache($navigation_id, $sql->alias);
//-- Выполняем запрос к БД на удаление общей информации и шаблона оформления меню //-- Выполняем запрос к БД на удаление общей информации и шаблона оформления меню
$AVE_DB->Query("DELETE FROM " . PREFIX . "_navigation WHERE navigation_id = '" . $navigation_id . "'"); $AVE_DB->Query("DELETE FROM " . PREFIX . "_navigation WHERE navigation_id = '" . $navigation_id . "'");
@ -630,7 +632,7 @@
")->GetCell(); ")->GetCell();
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($_REQUEST['navigation_id'], $alias); $this->clearCache($_REQUEST['navigation_id'], $alias);
$AVE_Template->assign('select_tpl', 'navigation/select.tpl'); $AVE_Template->assign('select_tpl', 'navigation/select.tpl');
$AVE_Template->assign('items', $items); $AVE_Template->assign('items', $items);
@ -714,7 +716,7 @@
")->GetCell(); ")->GetCell();
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($_REQUEST['navigation_id'], $alias); $this->clearCache($_REQUEST['navigation_id'], $alias);
} }
else else
{ {
@ -756,7 +758,7 @@
")->GetCell(); ")->GetCell();
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($_REQUEST['navigation_id'], $alias); $this->clearCache($_REQUEST['navigation_id'], $alias);
} }
$message = 'Пункт меню успешно сохранен'; $message = 'Пункт меню успешно сохранен';
@ -939,7 +941,7 @@
")->FetchRow(); ")->FetchRow();
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($nav->navigation_id, $nav->alias); $this->clearCache($nav->navigation_id, $nav->alias);
// Выполняем обновление страницы // Выполняем обновление страницы
header('Location:' . get_referer_admin_link()); header('Location:' . get_referer_admin_link());
@ -995,7 +997,7 @@
")->FetchRow(); ")->FetchRow();
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($nav->navigation_id, $nav->alias); $this->clearCache($nav->navigation_id, $nav->alias);
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('NAVI_REPORT_ACT') . " (id: $row->navigation_item_id)"); reportLog($AVE_Template->get_config_vars('NAVI_REPORT_ACT') . " (id: $row->navigation_item_id)");
@ -1054,7 +1056,7 @@
")->FetchRow(); ")->FetchRow();
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($nav->navigation_id, $nav->alias); $this->clearCache($nav->navigation_id, $nav->alias);
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('NAVI_REPORT_DEACT') . " (id: $row->navigation_item_id)"); reportLog($AVE_Template->get_config_vars('NAVI_REPORT_DEACT') . " (id: $row->navigation_item_id)");
@ -1103,7 +1105,7 @@
")->FetchRow(); ")->FetchRow();
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($nav->navigation_id, $nav->alias); $this->clearCache($nav->navigation_id, $nav->alias);
$AVE_Template->assign('item', $item); $AVE_Template->assign('item', $item);
$AVE_Template->assign('content', $AVE_Template->fetch('navigation/item.tpl')); $AVE_Template->assign('content', $AVE_Template->fetch('navigation/item.tpl'));
@ -1152,7 +1154,7 @@
")->FetchRow(); ")->FetchRow();
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($nav->navigation_id, $nav->alias); $this->clearCache($nav->navigation_id, $nav->alias);
if (isAjax()) if (isAjax())
{ {
@ -1248,7 +1250,7 @@
")->FetchRow(); ")->FetchRow();
//-- Стираем кеш навигации //-- Стираем кеш навигации
$this->clearCahe($nav->navigation_id, $nav->alias); $this->clearCache($nav->navigation_id, $nav->alias);
echo json_encode( echo json_encode(
array( array(
@ -1260,7 +1262,7 @@
} }
function clearCahe($id, $alias = '') function clearCache($id, $alias = '')
{ {
if (file_exists(BASE_DIR . '/cache/sql/nav/template-' . $id . '.cache')) if (file_exists(BASE_DIR . '/cache/sql/nav/template-' . $id . '.cache'))
unlink(BASE_DIR . '/cache/sql/nav/template-' . $id . '.cache'); unlink(BASE_DIR . '/cache/sql/nav/template-' . $id . '.cache');
@ -1275,5 +1277,27 @@
unlink(BASE_DIR . '/cache/sql/nav/items-' . $alias . '.cache'); unlink(BASE_DIR . '/cache/sql/nav/items-' . $alias . '.cache');
} }
function clearCacheId($id, $alias = '')
{
$dir_id = BASE_DIR . '/cache/sql/nav_' . $id;
$dir_alias = BASE_DIR . '/cache/sql/nav_' . $alias;
if (file_exists($dir_id))
{
foreach (glob($dir_id . '/*') as $file)
{
unlink($file);
}
}
if (file_exists($dir_alias))
{
foreach (glob($dir_alias . '/*') as $file)
{
unlink($file);
}
}
}
} }
?> ?>

14
class/class.request.php

@ -476,9 +476,11 @@ class AVE_Request
$sql = $AVE_DB->Query("SELECT Id FROM " . PREFIX . "_documents WHERE rubric_id = ".$_REQUEST['rubric_id']); $sql = $AVE_DB->Query("SELECT Id FROM " . PREFIX . "_documents WHERE rubric_id = ".$_REQUEST['rubric_id']);
$AVE_DB->clear_request($request_id);
while ($row = $sql->FetchRow()) while ($row = $sql->FetchRow())
{ {
$AVE_DB->clearcacherequest('doc_'.$row->Id); $AVE_DB->clearcacherequest('doc_' . $row->Id);
} }
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
@ -813,11 +815,15 @@ class AVE_Request
// require(BASE_DIR . '/functions/func.parserequest.php'); // require(BASE_DIR . '/functions/func.parserequest.php');
request_get_condition_sql_string($request_id, true); request_get_condition_sql_string($request_id, true);
if (! isAjax()){ if (! isAjax())
{
header('Location:index.php?do=request&action=conditions&rubric_id=' . $_REQUEST['rubric_id'] . '&Id=' . $request_id . '&cp=' . SESSION); header('Location:index.php?do=request&action=conditions&rubric_id=' . $_REQUEST['rubric_id'] . '&Id=' . $request_id . '&cp=' . SESSION);
exit; exit;
}else{ }
if (!$message){ else
{
if (! $message)
{
$message = $AVE_Template->get_config_vars('REQUEST_COND_NEW_SUC'); $message = $AVE_Template->get_config_vars('REQUEST_COND_NEW_SUC');
$header = $AVE_Template->get_config_vars('REQUEST_SUCCESS'); $header = $AVE_Template->get_config_vars('REQUEST_SUCCESS');
$theme = 'accept'; $theme = 'accept';

465
class/class.rubs.php

@ -1,6 +1,6 @@
<?php <?php
/** /**
* AVE.cms * AVE.cms
* *
* @package AVE.cms * @package AVE.cms
@ -10,13 +10,13 @@
* *
*/ */
/** /**
* Класс работы с рубриками * Класс работы с рубриками
*/ */
class AVE_Rubric class AVE_Rubric
{ {
/** /**
* СВОЙСТВА * СВОЙСТВА
*/ */
@ -27,7 +27,7 @@ class AVE_Rubric
*/ */
public $_limit = 30; public $_limit = 30;
/** /**
* ВНУТРЕННИЕ МЕТОДЫ * ВНУТРЕННИЕ МЕТОДЫ
*/ */
@ -58,7 +58,7 @@ class AVE_Rubric
} }
/** /**
* ВНЕШНИЕ МЕТОДЫ * ВНЕШНИЕ МЕТОДЫ
*/ */
@ -380,6 +380,7 @@ class AVE_Rubric
rubric_created = '" . time() . "', rubric_created = '" . time() . "',
rubric_teaser_template = '" . addslashes($row->rubric_teaser_template) . "', rubric_teaser_template = '" . addslashes($row->rubric_teaser_template) . "',
rubric_header_template = '" . addslashes($row->rubric_header_template) . "', rubric_header_template = '" . addslashes($row->rubric_header_template) . "',
rubric_footer_template = '" . addslashes($row->rubric_footer_template) . "',
rubric_admin_teaser_template = '" . addslashes($row->rubric_admin_teaser_template) . "' rubric_admin_teaser_template = '" . addslashes($row->rubric_admin_teaser_template) . "'
"); ");
$iid = $AVE_DB->InsertId(); $iid = $AVE_DB->InsertId();
@ -617,6 +618,70 @@ class AVE_Rubric
} }
} }
/**
* Вывод списка полей рубрики
*
* @param int $rubric_id идентификатор рубрики
*/
function rubricRulesShow($rubric_id = 0)
{
global $AVE_DB, $AVE_Template;
if (check_permission_acp('rubric_edit'))
{
// Права
$groups = array();
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_user_groups");
while ($row = $sql->FetchRow())
{
$row->doall = ($row->user_group == 1) ? ' disabled="disabled" checked="checked"' : '';
$row->doall_h = ($row->user_group == 1) ? 1 : '';
$rubric_permission = $AVE_DB->Query("
SELECT rubric_permission
FROM " . PREFIX . "_rubric_permissions
WHERE user_group_id = '" . $row->user_group . "'
AND rubric_id = '" . $rubric_id . "'
")->GetCell();
$row->permissions = @explode('|', $rubric_permission);
array_push($groups,$row);
}
$sql = $AVE_DB->Query("
SELECT rubric_title, rubric_linked_rubric, rubric_description
FROM " . PREFIX . "_rubrics
WHERE id = '" . $rubric_id . "'
LIMIT 1
");
$rubric = $sql->FetchRow();
$AVE_Template->assign('rubric', $rubric);
$AVE_Template->assign('groups', $groups);
if (isAjax())
{
}
else
{
$AVE_Template->assign('content', $AVE_Template->fetch('rubs/rules.tpl'));
}
}
else
{
header('Location:index.php?do=rubs&cp=' . SESSION);
exit;
}
}
/** /**
* Вывод списка рубрик * Вывод списка рубрик
* *
@ -760,8 +825,12 @@ class AVE_Rubric
case '': case '':
$code = $AVE_DB->Query(" $code = $AVE_DB->Query("
SELECT rubric_code_start, rubric_code_end, rubric_start_code SELECT
FROM " . PREFIX . "_rubrics rubric_code_start,
rubric_code_end,
rubric_start_code
FROM
" . PREFIX . "_rubrics
WHERE WHERE
Id = '" . $rubric_id . "' Id = '" . $rubric_id . "'
")->FetchRow(); ")->FetchRow();
@ -774,7 +843,8 @@ class AVE_Rubric
case 'save': case 'save':
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
UPDATE " . PREFIX . "_rubrics UPDATE
" . PREFIX . "_rubrics
SET SET
rubric_start_code = '" . $_POST['rubric_start_code'] . "', rubric_start_code = '" . $_POST['rubric_start_code'] . "',
rubric_code_start = '" . $_POST['rubric_code_start'] . "', rubric_code_start = '" . $_POST['rubric_code_start'] . "',
@ -783,20 +853,43 @@ class AVE_Rubric
Id = '" . $rubric_id . "' Id = '" . $rubric_id . "'
"); ");
if ($sql->_result === false) { $AVE_DB->clearcache('rub_' . $rubric_id);
$sql = $AVE_DB->Query("
SELECT
Id
FROM
" . PREFIX . "_documents
WHERE
rubric_id = " . $rubric_id . "
");
while ($row = $sql->GetCell())
{
$AVE_DB->clearcache('doc_' . $row);
$AVE_DB->clearcompile('doc_' . $row);
}
if ($sql->_result === false)
{
$message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED_ERR'); $message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED_ERR');
$header = $AVE_Template->get_config_vars('RUBRIK_CODE_ERROR'); $header = $AVE_Template->get_config_vars('RUBRIK_CODE_ERROR');
$theme = 'error'; $theme = 'error';
}else{ }
else
{
$message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED'); $message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED');
$header = $AVE_Template->get_config_vars('RUBRIK_CODE_SUCCESS'); $header = $AVE_Template->get_config_vars('RUBRIK_CODE_SUCCESS');
$theme = 'accept'; $theme = 'accept';
reportLog($AVE_Template->get_config_vars('RUBRIK_CODE_UPDATE') . " (" . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title, ENT_QUOTES)) . ") (id: $rubric_id)"); reportLog($AVE_Template->get_config_vars('RUBRIK_CODE_UPDATE') . " (" . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title, ENT_QUOTES)) . ") (id: $rubric_id)");
} }
if (isAjax()) { if (isAjax())
{
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme)); echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
} else { }
else
{
header('Location:index.php?do=rubs&action=code&Id=' . $rubric_id . '&cp=' . SESSION); header('Location:index.php?do=rubs&action=code&Id=' . $rubric_id . '&cp=' . SESSION);
} }
exit; exit;
@ -813,28 +906,36 @@ class AVE_Rubric
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
UPDATE " . PREFIX . "_rubrics UPDATE
" . PREFIX . "_rubrics
SET SET
rubric_start_code = '" . $_POST['rubric_start_code'] . "',
rubric_code_start = '" . $_POST['rubric_code_start'] . "', rubric_code_start = '" . $_POST['rubric_code_start'] . "',
rubric_code_end = '" . $_POST['rubric_code_end'] . "' rubric_code_end = '" . $_POST['rubric_code_end'] . "'
WHERE WHERE
Id = '" . $rubric_id . "' Id = '" . $rubric_id . "'
"); ");
if ($sql->_result === false) { if ($sql->_result === false)
{
$message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED_ERR'); $message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED_ERR');
$header = $AVE_Template->get_config_vars('RUBRIK_CODE_ERROR'); $header = $AVE_Template->get_config_vars('RUBRIK_CODE_ERROR');
$theme = 'error'; $theme = 'error';
}else{ }
else
{
$message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED'); $message = $AVE_Template->get_config_vars('RUBRIK_CODE_SAVED');
$header = $AVE_Template->get_config_vars('RUBRIK_CODE_SUCCESS'); $header = $AVE_Template->get_config_vars('RUBRIK_CODE_SUCCESS');
$theme = 'accept'; $theme = 'accept';
reportLog($AVE_Template->get_config_vars('RUBRIK_CODE_UPDATE') . " (" . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title, ENT_QUOTES)) . ") (id: $rubric_id)"); reportLog($AVE_Template->get_config_vars('RUBRIK_CODE_UPDATE') . " (" . stripslashes(htmlspecialchars($this->rubricNameByIdGet($rubric_id)->rubric_title, ENT_QUOTES)) . ") (id: $rubric_id)");
} }
if (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] = '1') { if (isAjax())
{
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme)); echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
} else { }
else
{
header('Location:index.php?do=rubs&action=edit&Id=' . $rubric_id . '&cp=' . SESSION); header('Location:index.php?do=rubs&action=edit&Id=' . $rubric_id . '&cp=' . SESSION);
} }
exit; exit;
@ -1042,6 +1143,7 @@ class AVE_Rubric
rubric_title, rubric_title,
rubric_template, rubric_template,
rubric_header_template, rubric_header_template,
rubric_footer_template,
rubric_teaser_template, rubric_teaser_template,
rubric_admin_teaser_template, rubric_admin_teaser_template,
rubric_description rubric_description
@ -1116,34 +1218,42 @@ class AVE_Rubric
* *
* @param string $data * @param string $data
*/ */
function rubricTemplateSave($Rtemplate, $Htemplate = '', $Ttemplate = '', $Atemplate = '') function rubricTemplateSave($Rtemplate, $Htemplate = '', $Ttemplate = '', $Atemplate = '', $Ftemplate = '')
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$rubric_id = (int)$_REQUEST['Id']; $rubric_id = (int)$_REQUEST['Id'];
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
UPDATE " . PREFIX . "_rubrics UPDATE
" . PREFIX . "_rubrics
SET SET
rubric_template = '" . ($Rtemplate) . "', rubric_template = '" . ($Rtemplate) . "',
rubric_header_template = '" . $Htemplate . "', rubric_header_template = '" . $Htemplate . "',
rubric_footer_template = '" . $Ftemplate . "',
rubric_teaser_template = '" . $Ttemplate . "', rubric_teaser_template = '" . $Ttemplate . "',
rubric_admin_teaser_template = '" . $Atemplate . "' rubric_admin_teaser_template = '" . $Atemplate . "'
WHERE Id = '" . $rubric_id . "' WHERE
Id = '" . $rubric_id . "'
"); ");
// Очищаем кэш шаблона документов рубрики // Очищаем кэш шаблона документов рубрики
$AVE_DB->Query(" $AVE_DB->Query("
DELETE DELETE
FROM " . PREFIX . "_rubric_template_cache FROM
WHERE rub_id = '" . $rubric_id . "' " . PREFIX . "_rubric_template_cache
WHERE
rub_id = '" . $rubric_id . "'
"); ");
if ($sql === false) { if ($sql === false)
{
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_TPL_ERR'); $message = $AVE_Template->get_config_vars('RUBRIC_SAVED_TPL_ERR');
$header = $AVE_Template->get_config_vars('RUBRIK_ERROR'); $header = $AVE_Template->get_config_vars('RUBRIK_ERROR');
$theme = 'error'; $theme = 'error';
} else { }
else
{
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_TPL'); $message = $AVE_Template->get_config_vars('RUBRIC_SAVED_TPL');
$header = $AVE_Template->get_config_vars('RUBRIC_SUCCESS'); $header = $AVE_Template->get_config_vars('RUBRIC_SUCCESS');
$theme = 'accept'; $theme = 'accept';
@ -1158,10 +1268,13 @@ class AVE_Rubric
$AVE_DB->clearcompile('doc_'.$row->Id); $AVE_DB->clearcompile('doc_'.$row->Id);
} }
if (isAjax()) { if (isAjax())
{
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme)); echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
exit; exit;
} else { }
else
{
$AVE_Template->assign('message', $message); $AVE_Template->assign('message', $message);
header('Location:index.php?do=rubs&cp=' . SESSION); header('Location:index.php?do=rubs&cp=' . SESSION);
exit; exit;
@ -1975,6 +2088,7 @@ class AVE_Rubric
} }
} }
function tmplsDelete() function tmplsDelete()
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
@ -2022,5 +2136,298 @@ class AVE_Rubric
header('Location:index.php?do=rubs&action=tmpls&Id='.$rubric_id.'&cp=' . SESSION); header('Location:index.php?do=rubs&action=tmpls&Id='.$rubric_id.'&cp=' . SESSION);
exit; exit;
} }
}
function _get_fields_type($type = null)
{
static $fields;
if (is_array($fields))
return $fields;
$arr = get_defined_functions();
$fields = array();
$field = array();
foreach ($arr['user'] as $v)
{
if (trim(substr($v, 0, strlen('get_field_'))) == 'get_field_')
{
$d = '';
$name = @$v('', 'name', '', '', 0, $d);
$id = substr($v, strlen('get_field_'));
if ($name != false && is_string($name))
$fields[] = array('id' => $id,'name' => (isset($fields_vars[$name])
? $fields_vars[$name]
: $name));
if (! empty($type) && $id == $type)
$field = array('id' => $id,'name' => (isset($fields_vars[$name])
? $fields_vars[$name]
: $name));
}
}
$fields = msort($fields, array('name'));
return (! empty($type)) ? $field : $fields;
}
function ShowFields()
{
global $AVE_DB, $AVE_Template;
$rubric_id = (int)$_REQUEST['Id'];
$sql = $AVE_DB->Query("
SELECT
rubric_field_type
FROM
" . PREFIX . "_rubric_fields
WHERE
rubric_id = '".$rubric_id."'
GROUP BY
rubric_field_type
");
$enable = array();
while ($row = $sql->FetchArray())
$enable[] = $row['rubric_field_type'];
$fields = $this->_get_fields_type();
foreach ($fields as $field)
{
$exists[$field['id']]['adm'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field.tpl');
$exists[$field['id']]['doc'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field-doc.tpl');
$exists[$field['id']]['req'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field-req.tpl');
}
$sql = $AVE_DB->Query("
SELECT
rubric_title,
rubric_linked_rubric,
rubric_description
FROM
" . PREFIX . "_rubrics
WHERE
id = '" . $rubric_id . "'
LIMIT 1
");
$rubric = $sql->FetchRow();
$AVE_Template->assign('rubric', $rubric);
$AVE_Template->assign("enable", $enable);
$AVE_Template->assign("exists", $exists);
$AVE_Template->assign("fields", $fields);
$AVE_Template->assign("content", $AVE_Template->fetch('rubs/_fields_list.tpl'));
}
function ShowFieldsByType($fld)
{
global $AVE_DB, $AVE_Template;
$rubric_id = (int)$_REQUEST['rubric_id'];
$sql = $AVE_DB->Query("
SELECT
a.Id,
a.rubric_id,
a.rubric_field_type,
a.rubric_field_title,
b.rubric_title
FROM
" . PREFIX . "_rubric_fields AS a
LEFT JOIN
" . PREFIX . "_rubrics AS b
ON a.rubric_id = b.Id
WHERE
a.rubric_field_type = '" . $fld ."'
AND
a.rubric_id = '".$rubric_id."'
ORDER BY
a.rubric_id
");
$rubrics = array();
while ($row = $sql->FetchRow())
{
$rubrics[$row->rubric_id]['rubric_id'] = $row->rubric_id;
$rubrics[$row->rubric_id]['rubric_title'] = $row->rubric_title;
$rubrics[$row->rubric_id]['rubric_field_type'] = $row->rubric_field_type;
$rubrics[$row->rubric_id]['fields'][$row->Id]['id'] = $row->Id;
$rubrics[$row->rubric_id]['fields'][$row->Id]['title'] = $row->rubric_field_title;
$rubrics[$row->rubric_id]['fields'][$row->Id]['adm_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $row->Id . '.tpl');
$rubrics[$row->rubric_id]['fields'][$row->Id]['doc_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $row->Id . '.tpl');
$rubrics[$row->rubric_id]['fields'][$row->Id]['req_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $row->Id . '.tpl');
$rubrics[$row->rubric_id]['fields'][$row->Id]['adm_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl');
$rubrics[$row->rubric_id]['fields'][$row->Id]['doc_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl');
$rubrics[$row->rubric_id]['fields'][$row->Id]['req_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl');
}
$sql = $AVE_DB->Query("
SELECT
rubric_title,
rubric_linked_rubric,
rubric_description
FROM
" . PREFIX . "_rubrics
WHERE
id = '" . $rubric_id . "'
LIMIT 1
");
$rubric = $sql->FetchRow();
$AVE_Template->assign('rubric', $rubric);
$AVE_Template->assign('main', $this->_get_fields_type($fld));
$AVE_Template->assign("rubrics", $rubrics);
$AVE_Template->assign("content", $AVE_Template->fetch('rubs/_field_list.tpl'));
}
function EditFieldTpl($id = '', $fld, $type)
{
global $AVE_DB, $AVE_Template, $_fm_dir;
switch ($type)
{
case 'adm':
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl';
$source = BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl';
break;
case 'doc':
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl';
$source = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl';
break;
case 'req':
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl';
$source = BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl';
break;
}
if (empty($id))
$file = $source;
if (file_exists($file))
$code_text = file_get_contents($file);
else
$code_text = file_get_contents($source);
$sql = $AVE_DB->Query("
SELECT
a.rubric_field_title,
b.rubric_title
FROM
" . PREFIX . "_rubric_fields AS a
LEFT JOIN
" . PREFIX . "_rubrics AS b
ON a.rubric_id = b.Id
WHERE
a.rubric_field_type = '" . $fld ."'
AND
a.Id = '" . $id ."'
")->FetchAssocArray();
$params =
array(
'id' => $id,
'fld' => $fld,
'type' => $type,
'func' => (file_exists($file) ? 'edit' : 'new'),
'field' => $sql,
);
$AVE_Template->assign('main', $this->_get_fields_type($fld));
$AVE_Template->assign('params', $params);
$AVE_Template->assign('code_text', $code_text);
$AVE_Template->assign("content", $AVE_Template->fetch('rubs/_field_code.tpl'));
}
/**
* Сохранение шаблона
*
*/
function SaveFieldTpl($id = '', $fld, $type, $func)
{
switch ($type)
{
case 'adm':
$file = (! empty($id))
? BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl'
: BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl';
break;
case 'doc':
$file = (! empty($id))
? BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl'
: BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl';
break;
case 'req':
$file = (! empty($id))
? BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl'
: BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl';
break;
}
$data = stripcslashes($_REQUEST['code_text']);
@file_put_contents($file, $data);
chmod($file, 0644);
$message = 'Шаблон успешнно сохранен';
$header = 'Выполнено';
$theme = 'accept';
echo json_encode(
array(
'message' => $message,
'header' => $header,
'theme' => $theme)
);
exit;
}
/**
* Удаление шаблона поля
*
*/
function DeleteFieldTpl($id, $fld, $type, $func)
{
switch ($type)
{
case 'adm':
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl';
break;
case 'doc':
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl';
break;
case 'req':
$file = BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl';
break;
}
@unlink($file);
header('Location:' . get_referer_link());
exit;
}
}
?> ?>

142
class/class.settings.php

@ -218,6 +218,8 @@ class AVE_Settings
} }
else else
{ {
$this->clearSettingsCache();
$_SESSION['use_editor'] = intval($_REQUEST['use_editor']); $_SESSION['use_editor'] = intval($_REQUEST['use_editor']);
$message = $AVE_Template->get_config_vars('SETTINGS_SAVED'); $message = $AVE_Template->get_config_vars('SETTINGS_SAVED');
$header = $AVE_Template->get_config_vars('SETTINGS_SUCCESS'); $header = $AVE_Template->get_config_vars('SETTINGS_SUCCESS');
@ -317,6 +319,7 @@ class AVE_Settings
$AVE_Template->assign('content', $AVE_Template->fetch('settings/settings_lang.tpl')); $AVE_Template->assign('content', $AVE_Template->fetch('settings/settings_lang.tpl'));
} }
/** /**
* Метод Редактирования параметров языков * Метод Редактирования параметров языков
* *
@ -340,6 +343,7 @@ class AVE_Settings
$AVE_Template->assign('content', $AVE_Template->fetch('settings/settings_lang_edit.tpl')); $AVE_Template->assign('content', $AVE_Template->fetch('settings/settings_lang_edit.tpl'));
} }
function settingsLanguageEditSave() function settingsLanguageEditSave()
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
@ -589,5 +593,143 @@ class AVE_Settings
return true; return true;
} }
/**
* Функция очищает кеш системных настроек
*
*/
function clearSettingsCache()
{
$cache_dir = BASE_DIR . '/cache/sql/settings/';
return rrmdir($cache_dir);
}
/**
* Функция редактирования robots.txt
*
*/
function editRobots()
{
global $AVE_DB, $AVE_Template;
$file_name = 'robots.txt';
$_REQUEST['sub'] = (! isset($_REQUEST['sub']))
? ''
: $_REQUEST['sub'];
switch ($_REQUEST['sub'])
{
case 'save':
$file = BASE_DIR . '/' . $file_name;
$template = stripcslashes($_REQUEST['code_text']);
$result = file_put_contents($file, trim($template));
if ($result === false)
{
$message = $AVE_Template->get_config_vars('SETTINGS_SAVED_ERR_FILE');
$header = $AVE_Template->get_config_vars('SETTINGS_ERROR');
$theme = 'error';
}
else
{
$message = $AVE_Template->get_config_vars('SETTINGS_SAVED_FILE');
$header = $AVE_Template->get_config_vars('SETTINGS_SUCCESS');
$theme = 'accept';
}
if (isAjax())
{
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
}
else
{
$AVE_Template->assign('message', $message);
header('Location:index.php?do=settings&cp=' . SESSION);
}
exit;
default:
$file = BASE_DIR . '/' . $file_name;
$template = file_get_contents($file);
$formaction = "index.php?do=settings&action=robots&sub=save&cp=" . SESSION;
$AVE_Template->assign('file_name', $file_name);
$AVE_Template->assign('formaction', $formaction);
$AVE_Template->assign('template', $template);
break;
}
$AVE_Template->assign('content', $AVE_Template->fetch('settings/edit_file.tpl'));
}
/**
* Функция редактирования func.custom.php
*
*/
function editCustom()
{
global $AVE_DB, $AVE_Template;
$file_name = 'func.custom.php';
$_REQUEST['sub'] = (! isset($_REQUEST['sub']))
? ''
: $_REQUEST['sub'];
switch ($_REQUEST['sub'])
{
case 'save':
$file = BASE_DIR . '/functions/' . $file_name;
$template = stripcslashes($_REQUEST['code_text']);
$result = file_put_contents($file, trim($template));
if ($result === false)
{
$message = $AVE_Template->get_config_vars('SETTINGS_SAVED_ERR_FILE');
$header = $AVE_Template->get_config_vars('SETTINGS_ERROR');
$theme = 'error';
}
else
{
$message = $AVE_Template->get_config_vars('SETTINGS_SAVED_FILE');
$header = $AVE_Template->get_config_vars('SETTINGS_SUCCESS');
$theme = 'accept';
}
if (isAjax())
{
echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme));
}
else
{
$AVE_Template->assign('message', $message);
header('Location:index.php?do=settings&cp=' . SESSION);
}
exit;
default:
$file = BASE_DIR . '/functions/' . $file_name;
$template = file_get_contents($file);
$formaction = "index.php?do=settings&action=robots&sub=save&cp=" . SESSION;
$AVE_Template->assign('file_name', $file_name);
$AVE_Template->assign('formaction', $formaction);
$AVE_Template->assign('template', $template);
break;
}
$AVE_Template->assign('content', $AVE_Template->fetch('settings/edit_file.tpl'));
}
} }
?> ?>

3
class/class.thumbnail.php

@ -161,7 +161,8 @@ class Image_Toolbox {
* <i>integer</i> <b>$height</b> imageheight of new image to be created<br> * <i>integer</i> <b>$height</b> imageheight of new image to be created<br>
* <i>string</i> <b>$fillcolor</b> optional fill the new image with this color (hexformat, e.g. '#FF0000')<br> * <i>string</i> <b>$fillcolor</b> optional fill the new image with this color (hexformat, e.g. '#FF0000')<br>
*/ */
function Image_Toolbox() { function __construct()
{
$args = func_get_args(); $args = func_get_args();
$argc = func_num_args(); $argc = func_num_args();

11
class/class.user.php

@ -47,6 +47,7 @@ class AVE_User
'modules_view', 'modules_admin', 'modules_system', // модули 'modules_view', 'modules_admin', 'modules_system', // модули
'mediapool_int', 'mediapool_add', 'mediapool_del', 'mediapool_finder', // файловый менеджер 'mediapool_int', 'mediapool_add', 'mediapool_del', 'mediapool_finder', // файловый менеджер
'gen_settings', 'gen_settings_more', 'gen_settings_countries', 'gen_settings_languages', // общие настройки 'gen_settings', 'gen_settings_more', 'gen_settings_countries', 'gen_settings_languages', // общие настройки
'gen_settings_robots', 'gen_settings_fcustom',
'db_actions', // база данных 'db_actions', // база данных
'logs_view', 'logs_clear', // логи 'logs_view', 'logs_clear', // логи
'cache_clear', 'cache_thumb' // сессии и кеш 'cache_clear', 'cache_thumb' // сессии и кеш
@ -309,8 +310,10 @@ class AVE_User
SELECT SELECT
user_group_name, user_group_name,
user_group_permission user_group_permission
FROM " . PREFIX . "_user_groups FROM
WHERE user_group = '" . $user_group_id . "' " . PREFIX . "_user_groups
WHERE
user_group = '" . $user_group_id . "'
")->FetchRow(); ")->FetchRow();
} }
@ -321,9 +324,9 @@ class AVE_User
else else
{ {
$AVE_Template->assign('g_all_permissions', $this->_allowed_admin_permission); $AVE_Template->assign('g_all_permissions', $this->_allowed_admin_permission);
$AVE_Template->assign('g_group_permissions', explode('|', $row->user_group_permission)); $AVE_Template->assign('g_group_permissions', array_diff(explode('|', $row->user_group_permission), array('')));
$AVE_Template->assign('g_name', $row->user_group_name); $AVE_Template->assign('g_name', $row->user_group_name);
$AVE_Template->assign('modules', $AVE_Module->moduleListGet(1)); $AVE_Template->assign('modules', $AVE_Module->_modules);
} }
} }

26
fields/checkbox/field.php

@ -12,7 +12,7 @@
*/ */
// Чекбокс (Checkbox) // Чекбокс (Checkbox)
function get_field_checkbox($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength=null, $document_fields=array(), $rubric_id=0, $default=null) function get_field_checkbox($field_value, $action, $field_id = 0, $tpl = '', $tpl_empty = 0, &$maxlength = null, $document_fields = array(), $rubric_id = 0, $default = null)
{ {
global $AVE_Template; global $AVE_Template;
@ -20,7 +20,9 @@ function get_field_checkbox($field_value, $action, $field_id=0, $tpl='', $tpl_em
$fld_dir = dirname(__FILE__) . '/'; $fld_dir = dirname(__FILE__) . '/';
$tpl_dir = $fld_dir . 'tpl/'; $tpl_dir = $fld_dir . 'tpl/';
$lang_file = $fld_dir . 'lang/' . (defined('ACP') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt'; $lang_file = $fld_dir . 'lang/' . (defined('ACP')
? $_SESSION['admin_language']
: $_SESSION['user_language']) . '.txt';
$AVE_Template->config_load($lang_file, 'lang'); $AVE_Template->config_load($lang_file, 'lang');
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars()); $AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
@ -36,19 +38,22 @@ function get_field_checkbox($field_value, $action, $field_id=0, $tpl='', $tpl_em
$AVE_Template->assign('doc_id', (isset($_REQUEST['Id']) ? (int)$_REQUEST['Id'] : 0)); $AVE_Template->assign('doc_id', (isset($_REQUEST['Id']) ? (int)$_REQUEST['Id'] : 0));
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin'); $tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin');
return $AVE_Template->fetch($tpl_file);
return $AVE_Template->fetch($tpl_file);
break; break;
case 'doc': case 'doc':
$field_value = clean_php($field_value); $field_value = clean_php($field_value);
$res = ((int)$field_value === 1) ? (int)$field_value : 0; $res = ((int)$field_value === 1)
? (int)$field_value
: 0;
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc'); $tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc');
if($tpl_empty && $tpl_file) if ($tpl_empty && $tpl_file)
{ {
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('field_value', $field_value); $AVE_Template->assign('field_value', $field_value);
return $AVE_Template->fetch($tpl_file); return $AVE_Template->fetch($tpl_file);
} }
@ -59,12 +64,15 @@ function get_field_checkbox($field_value, $action, $field_id=0, $tpl='', $tpl_em
case 'req': case 'req':
$field_value = clean_php($field_value); $field_value = clean_php($field_value);
$res = ((int)$field_value === 1) ? (int)$field_value : 0; $res = ((int)$field_value === 1)
? (int)$field_value
: 0;
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req'); $tpl_file = get_field_tpl($tpl_dir, $field_id, 'req');
if($tpl_empty && $tpl_file) if ($tpl_empty && $tpl_file)
{ {
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('field_value', $field_value); $AVE_Template->assign('field_value', $field_value);
return $AVE_Template->fetch($tpl_file); return $AVE_Template->fetch($tpl_file);
} }
@ -74,7 +82,9 @@ function get_field_checkbox($field_value, $action, $field_id=0, $tpl='', $tpl_em
case 'save': case 'save':
$field_value = clean_php($field_value); $field_value = clean_php($field_value);
$res = ((int)$field_value === 1) ? $field_value : '0'; $res = ((int)$field_value === 1)
? $field_value
: '0';
break; break;
case 'name': case 'name':

2
fields/image_mega/tpl/field-doc.tpl

@ -39,7 +39,7 @@ $image.http Есть ли в ссылке http или https (true/false)
{/if} {/if}
{if isset($image.description) && $image.description != ''} {if isset($image.description) && $image.description != ''}
<p> <p>
{$image.description} {$image.description|html_entity_decode}
</p> </p>
{/if} {/if}
</div> </div>

0
fields/image_multi_new_3inputs/.gitkeep

0
fields/image_multi_new_3inputs/css/.gitkeep

96
fields/image_multi_new_3inputs/css/field.css

@ -1,96 +0,0 @@
.cascad3 {
position: relative;
}
.cascad3_item {
display: inline-block;
margin: 3px;
width: 120px;
height: 226px;
background-color: rgba(255, 255, 255, 0.5);
border: solid 1px #eaeaea;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
position: relative;
text-align: center;
}
.cascad3_item:hover {
background-color: rgba(255, 255, 255, 1.0);
border: solid 1px rgba(234, 234, 234, 0.5);
-webkit-box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.1);
-moz-box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.1);
box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.1);
}
.cascad3_item:hover > .header {
background-color: rgba(210, 210, 210, 0.3);
}
.cascad3_item .header {
background-color: rgba(210, 210, 210, 0.5);
height: 26px;
margin-bottom: 10px;
cursor: move;
border-radius: 5px 5px 0 0;
}
.cascad3_item .image {
background-color: #fcfcfc;
border: solid 1px #eaeaea;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
.cascad3_item input {
display: inline-block;
width: 100px;
margin-top: 5px;
border-radius: 0 0 2px 2px;
border: 1px solid #eaeaea !important;
resize: none !important;
box-shadow: none !important;
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
padding: 3px !important;
box-sizing: border-box !important;
-webkit-box-sizing: border-box !important;
-moz-box-sizing: border-box !important;
}
.cascad3_item .view {
position: absolute;
top: 3px;
left: 3px;
cursor: pointer !important;
}
.cascad3_item .delete {
position: absolute;
top: 3px;
right: 3px;
cursor: pointer !important;
}
.cascad3_item .info {
position: absolute;
top: 30px;
right: 3px;
cursor: pointer !important;
}
.cascad3_sortable > .ui-state-highlight {
display: inline-block;
margin: 5px;
width: 120px;
height: 200px;
background-color: rgba(255,255,255,0.5); !important;
border: solid 1px #eaeaea;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
position: relative;
text-align: center;
}

307
fields/image_multi_new_3inputs/field.php

@ -1,307 +0,0 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
// Изображение (Каскад)
function get_field_image_multi_new_3inputs($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength=null, $document_fields=array(), $rubric_id=0, $default=null)
{
global $AVE_Template, $img_pixel;
$fld_dir = dirname(__FILE__) . '/';
$tpl_dir = $fld_dir . 'tpl/';
$fld_name = basename($fld_dir);
$lang_file = $fld_dir . 'lang/' . (defined('ACP') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
$AVE_Template->config_load($lang_file, 'lang');
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
$AVE_Template->config_load($lang_file, 'admin');
$res = 0;
$iniset_count = ini_get('max_file_uploads');
switch ($action)
{
case 'edit':
$items = array();
$items = unserialize($field_value);
$image_items = array();
if($items != false){
foreach($items as $k => $v){
$image_item = explode('|', $v);
$image[$k]['url'] = $image_item[0];
$image[$k]['thumb'] = ($image_item[0] != '') ? make_thumbnail(array('size' => 'f100x100', 'link' => $image_item[0])) : $img_pixel;
$image[$k]['desc'] = (isset($image_item[1])) ? htmlspecialchars($image_item[1], ENT_QUOTES) : '';
$image[$k]['desc2'] = (isset($image_item[2])) ? htmlspecialchars($image_item[2], ENT_QUOTES) : '';
$image[$k]['desc3'] = (isset($image_item[3])) ? htmlspecialchars($image_item[3], ENT_QUOTES) : '';
}
if (!empty($image)) {
$image_items = $image;
}
}
$show_upload = true;
if(preg_match("/%id/i", $default))
{
if ($_REQUEST['action'] != 'new') {
$path_upload = trim(@str_replace('%id', $_REQUEST['Id'], $default), '/');
$show_upload = true;
} else {
$path_upload = (!empty($default)) ? trim($default, '/') : '';
$show_upload = false;
}
}
else
{
$path_upload = (!empty($default)) ? $default : '';
$show_upload = true;
}
$dir_upload = '/' . UPLOAD_DIR . '/' . ((!empty($path_upload)) ? $path_upload . '/' : '');
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin');
$AVE_Template->assign('max_files', $AVE_Template->get_config_vars('max_f_f') . $iniset_count);
$AVE_Template->assign('dir_upload', $AVE_Template->get_config_vars('upl_dir') . $dir_upload);
$AVE_Template->assign('show_upload', $show_upload);
$AVE_Template->assign('field_dir', $fld_name);
$AVE_Template->assign('images', $image_items);
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('doc_id', (int)$_REQUEST['Id']);
return $AVE_Template->fetch($tpl_file);
break;
case 'doc':
$items = (isset($field_value)) ? unserialize($field_value) : array();
$res = array();
if($items != false){
foreach($items as $image_item)
{
$image_item = clean_php($image_item);
$field_param = explode('|', $image_item);
if($image_item){
if ($tpl_empty)
{
$image_item = $field_param;
}
else
{
$image_item = preg_replace_callback(
'/\[tag:parametr:(\d+)\]/i',
function($data) use($field_param)
{
return $field_param[(int)$data[1]];
},
$tpl
);
$image_item = preg_replace_callback(
'/\[tag:watermark:(.+?):([a-zA-Z]+):([0-9]+)\]/',
create_function(
'$m',
'return watermarks(\'$m[1]\', \'$m[2]\', $m[3]);'
),
$image_item
);
$image_item = preg_replace_callback('/\[tag:([r|c|f|t|s]\d+x\d+r*):(.+?)]/', 'callback_make_thumbnail', $image_item);
}
}
$res[] = $image_item;
}
}
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc');
if($tpl_empty && $tpl_file){
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('field_value', $res);
$AVE_Template->assign('field_count', count($res));
$AVE_Template->assign('rubric_id', $rubric_id);
$AVE_Template->assign('default', $default);
return $AVE_Template->fetch($tpl_file);
}
return (!empty($res)) ? implode(PHP_EOL, $res) : $tpl;
break;
case 'req':
$items = unserialize($field_value);
$res = '';
if($items != false) {
foreach($items as $image_item)
{
$image_item = clean_php($image_item);
$field_param = explode('|', $image_item);
if($image_item){
if ($tpl_empty)
{
$image_item = $field_param;
}
else
{
$image_item = preg_replace_callback(
'/\[tag:parametr:(\d+)\]/i',
function($data) use($field_param)
{
return $field_param[(int)$data[1]];
},
$tpl
);
$image_item = preg_replace_callback(
'/\[tag:watermark:(.+?):([a-zA-Z]+):([0-9]+)\]/',
create_function(
'$m',
'return watermarks(\'$m[1]\', \'$m[2]\', $m[3]);'
),
$image_item
);
$image_item = preg_replace_callback('/\[tag:([r|c|f]\d+x\d+r*):(.+?)]/', 'callback_make_thumbnail', $image_item);
}
}
$res[] = $image_item;
}
}
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req');
if($tpl_empty && $tpl_file){
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('field_value', $res);
$AVE_Template->assign('field_count', count($res));
$AVE_Template->assign('rubric_id', $rubric_id);
$AVE_Template->assign('default', $default);
return $AVE_Template->fetch($tpl_file);
}
return (!empty($res)) ? implode(PHP_EOL, $res) : $tpl;
break;
case 'save':
foreach ($field_value as $v)
{
if(!empty($v['url'])){
$field_value_new[] = $v['url'] . '|' . $v['descr'] . '|' . $v['descr2'] . '|' . $v['descr3'];
}
}
if (isset($field_value_new)) {
return @serialize($field_value_new);
} else {
return $field_value_new = '';
}
break;
case 'name' :
return $AVE_Template->get_config_vars('name');
break;
case 'upload':
$error = false;
$files_unput = 'cascad3_files'.'_'.$_REQUEST['field_id'].'_'.$_REQUEST['doc_id'];
if(preg_match("/%id/i", $default))
{
$path = trim(@str_replace('%id', $_REQUEST['doc_id'], $default), '/');
}
else
{
$path = (!empty($default)) ? $default : '';
}
function getExtension($file)
{
$file = pathinfo($file);
return $file['extension'];
}
$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");
$dir = '/' . UPLOAD_DIR . '/' . ((!empty($path)) ? $path . '/' : '');
$dir_abs = BASE_DIR . $dir;
if (!is_dir($dir_abs)) @mkdir($dir_abs, 0777, true);
foreach ($_FILES[$files_unput]['name'] as $name => $value) {
$filename = strtolower(stripslashes(prepare_url($_FILES[$files_unput]['name'][$name])));
//$size = filesize($_FILES[$files_unput]['tmp_name'][$name]);
$ext = getExtension($filename);
$ext = strtolower($ext);
if(in_array($ext, $valid_formats))
{
if (file_exists($dir_abs . $filename))
{
$filename = rand(1000, 9999) . '_' . $filename;
}
if (@move_uploaded_file($_FILES[$files_unput]['tmp_name'][$name], $dir_abs . $filename)) {
$new_files[] = $filename;
$error = false;
} else {
$error = true;
}
}
else
{
$error = true;
@unlink($_FILES[$files_unput]['tmp_name'][$name]);
}
}
if ($error !== true) {
echo json_encode(array(
'files' => $new_files,
'dir' => $dir,
'respons' => 'succes',
'message' => $AVE_Template->get_config_vars('resp_s_m'),
'header' => $AVE_Template->get_config_vars('resp_s_h'),
'theme' => 'accept'
)
);
}
else
{
echo json_encode(array(
'respons' => 'error',
'message' => $AVE_Template->get_config_vars('resp_e_m'),
'header' => $AVE_Template->get_config_vars('resp_e_h'),
'theme' => 'error'
)
);
}
exit;
}
return ($res ? $res : $field_value);
}

0
fields/image_multi_new_3inputs/js/.gitkeep

235
fields/image_multi_new_3inputs/js/field.js

@ -1,235 +0,0 @@
var Cascad3 = {
init: false,
init: function() {
if (this.initialized) return;
this.initialized = true;
this.cascad3();
},
cascad3: function() {
this.cascad3_sortable();
this.cascad3_del_item();
this.cascad3_del_all_item();
this.cascad3_add_single();
this.cascad3_add_folder();
this.cascad3_upload_files();
this.cascad3_click_upload();
},
cascad3_update: function() {
this.cascad3_maxid();
this.cascad3_del_item();
AveAdmin.fancy_box();
AveAdmin.tooltip();
},
cascad3_maxid: function(id, doc) {
var maxid = 1;
$('#cascad3_' + doc + '_' + id).children('.cascad3_sortable').children('.cascad3_item').each(function() {
maxid = Math.max(maxid, parseInt($(this).attr("data-id")) + 1);
});
return maxid;
},
cascad3_del_item: function() {
$('.cascad3_item .delete').on('click', function(event) {
event.preventDefault();
var id = $(this).attr('data-id');
jConfirm(
del_conf,
del_head,
function(b) {
if (b) {
$('#cascad3_image_' + id).remove();
}
}
);
});
},
cascad3_del_all_item: function() {
$('.cascad3_del_all').on('click', function(event) {
event.preventDefault();
var c_id = $(this).parent().parent().parent('.cascad3').attr("data-id");
var d_id = $(this).parent().parent().parent('.cascad3').attr("data-doc");
jConfirm(
del_all_c,
del_all_h,
function(b) {
if (b) {
$('#cascad3_' + d_id + '_' + c_id).children('.cascad3_sortable').children('.cascad3_item').each(function() {
$(this).remove();
});
}
}
);
});
},
cascad3_upload_files: function() {
$('.cascad3_upload').on('change', function(event) {
var cascad3_input = $(this);
event.preventDefault();
if (cascad3_input.val() == '') {
return false;
}
var files_input = this.files.length;
var max_files = cascad3_input.attr("data-max-files");
if (files_input > max_files) {
$.jGrowl(max_f_t, {
header: max_f_h,
theme: 'error'
});
cascad3_input.replaceWith(cascad3_input.val('').clone(true));
return false;
}
var cid = $(this).parent('.cascad3').attr("data-id");
var did = $(this).parent('.cascad3').attr("data-doc");
var rid = $(this).parent('.cascad3').attr("data-rubric");
$('#formDoc').ajaxSubmit({
url: 'index.php?do=fields',
data: {
"field_id": cid,
"rubric_id": rid,
"doc_id": did,
"field": 'image_multi_new_3inputs',
"type": 'upload'
},
beforeSend: function() {
$.alerts._overlay('show');
},
dataType: "json",
success: function(data) {
if (data['respons'] == 'succes') {
for (var p = 0, max = data.files.length; p < max; p++) {
iid = Cascad3.cascad3_maxid(cid, did);
var field_value = data['dir'] + data.files[p];
var img_path = '../index.php?thumb=' + field_value + '&mode=f&width=128&height=128';
$('#cascad3_' + did + '_' + cid + ' > .cascad3_sortable:last').prepend(
'<div class="cascad3_item ui-state-default" id="cascad3_image_' + cid + '_' + did + '_' + iid + '" data-id="' + iid + '" doc=id="' + did + '">' +
'<div class="header grey_bg"></div>' +
'<a class="topDir icon_sprite ico_photo view fancy preview__' + cid + '_' + did + '_' + iid + '" href="' + field_value + '" title="' + look + '"></a>' +
'<a class="topDir icon_sprite ico_delete delete" href="javascript:void(0);" title="' + del + '" data-id="' + cid + '_' + did + '_' + iid + '"></a>' +
'<span class="topDir icon_sprite ico_info info" title="' + field_value + '"></span>' +
'<input type="hidden" value="' + field_value + '" name="feld[' + cid + '][' + iid + '][url]" id="image__' + cid + '_' + did + '_' + iid + '">' +
'<img id="preview__' + cid + '_' + did + '_' + iid + '" src="' + img_path + '" onclick="browse_uploads(\'image__' + cid + '_' + did + '_' + iid + '\');" class="image" alt="" width="100" height="100" />' +
'<input class="mousetrap" name="feld[' + cid + '][' + iid + '][descr]" placeholder="' + place + ' 1" value = ""/>' +
'<input class="mousetrap" name="feld[' + cid + '][' + iid + '][descr2]" placeholder="' + place + ' 2" value = ""/>' +
'<input class="mousetrap" name="feld[' + cid + '][' + iid + '][descr3]" placeholder="' + place + ' 3" value = ""/>' +
'</div>'
);
$.alerts._overlay('hide');
Cascad3.cascad3_update();
}
}
$.jGrowl(data['message'], {
header: data['header'],
theme: data['theme']
});
cascad3_input.replaceWith(cascad3_input = cascad3_input.clone(true));
cascad3_input.val();
}
});
return false;
});
},
cascad3_click_upload: function() {
$('.cascad3_upload_local').on('click', function(event) {
event.preventDefault();
var c_id = $(this).parent().parent().parent('.cascad3').attr("data-id");
var d_id = $(this).parent().parent().parent('.cascad3').attr("data-doc");
$('.cascad3_upload_field_' + c_id + '_' + d_id).trigger('click');
});
},
cascad3_add_single: function() {
$('.cascad3_add_single').on('click', function(event) {
event.preventDefault();
var c_id = $(this).parent().parent().parent('.cascad3').attr("data-id");
var d_id = $(this).parent().parent().parent('.cascad3').attr("data-doc");
var iid = Cascad3.cascad3_maxid(c_id, d_id);
$('#cascad3_' + d_id + '_' + c_id + ' > .cascad3_sortable:last').prepend(
'<div class="cascad3_item ui-state-default" id="cascad3_image_' + c_id + '_' + d_id + '_' + iid + '" data-id="' + iid + '" data-doc="' + d_id + '">' +
'<div class="header grey_bg"></div>' +
'<a class="topDir icon_sprite ico_photo view fancy preview__' + c_id + '_' + d_id + '_' + iid + '" href="" title="' + look + '"></a>' +
'<a class="topDir icon_sprite ico_delete delete" href="javascript:void(0);" title="' + del + '" data-id="' + c_id + '_' + d_id + '_' + iid + '"></a>' +
'<input type="hidden" value="" name="feld[' + c_id + '][' + iid + '][url]" id="image__' + c_id + '_' + d_id + '_' + iid + '">' +
'<img id="preview__' + c_id + '_' + d_id + '_' + iid + '" src="' + blank + '" onclick="browse_uploads(\'image__' + c_id + '_' + d_id + '_' + iid + '\');" class="image" alt="" width="100" height="100" />' +
'<input class="mousetrap" name="feld[' + c_id + '][' + iid + '][descr]" placeholder="' + place + ' 1" value = ""/>' +
'<input class="mousetrap" name="feld[' + c_id + '][' + iid + '][descr2]" placeholder="' + place + ' 2" value = ""/>' +
'<input class="mousetrap" name="feld[' + c_id + '][' + iid + '][descr3]" placeholder="' + place + ' 3" value = ""/>' +
'</div>'
);
browse_uploads('image__' + c_id + '_' + d_id + '_' + iid + '');
Cascad3.cascad3_update();
});
},
cascad3_sortable: function() {
$('.cascad3_sortable').sortable({
handle: ".header",
placeholder: "ui-state-highlight grey_bg"
});
//$(".cascad3").disableSelection();
},
cascad3_add_folder: function() {
$('.cascad3_add_folder').on('click', function(event) {
event.preventDefault();
var c_id = $(this).parent().parent().parent('.cascad3').attr("data-id");
var d_id = $(this).parent().parent().parent('.cascad3').attr("data-doc");
browse_dirs("cascad3__" + c_id + '_' + d_id);
});
}
};
$(document).ready(function() {
Cascad3.init();
$.fn.myPlugin = function cascad3_add_items(dir, cid, did) {
$.ajax({
url: ave_path + 'admin/index.php?do=docs&action=image_import&ajax=run',
data: {
"path": dir
},
dataType: "json",
success: function(data) {
$.alerts._overlay('hide');
for (var p = 0, max = data.respons.length; p < max; p++) {
var iid = Cascad3.cascad3_maxid(cid, did);
var field_value = dir + data.respons[p];
var img_path = '../index.php?thumb=' + field_value + '&mode=f&width=128&height=128';
$('#cascad3_' + did + '_' + cid + ' > .cascad3_sortable:last').prepend(
'<div class="cascad3_item ui-state-default" id="cascad3_image_' + cid + '_' + did + '_' + iid + '" data-id="' + iid + '" doc=id="' + did + '">' +
'<div class="header grey_bg"></div>' +
'<a class="topDir icon_sprite ico_photo view fancy preview__' + cid + '_' + did + '_' + iid + '" href="' + field_value + '" title="' + look + '"></a>' +
'<a class="topDir icon_sprite ico_delete delete" href="javascript:void(0);" title="' + del + '" data-id="' + cid + '_' + did + '_' + iid + '"></a>' +
'<span class="topDir icon_sprite ico_info info" title="' + field_value + '"></span>' +
'<input type="hidden" value="' + field_value + '" name="feld[' + cid + '][' + iid + '][url]" id="image__' + cid + '_' + did + '_' + iid + '">' +
'<img id="preview__' + cid + '_' + did + '_' + iid + '" src="' + img_path + '" onclick="browse_uploads(\'image__' + cid + '_' + did + '_' + iid + '\');" class="image" alt="" width="100" height="100" />' +
'<input class="mousetrap" name="feld[' + cid + '][' + iid + '][descr]" placeholder="' + place + ' 1" value = ""/>' +
'<input class="mousetrap" name="feld[' + cid + '][' + iid + '][descr2]" placeholder="' + place + ' 2" value = ""/>' +
'<input class="mousetrap" name="feld[' + cid + '][' + iid + '][descr3]" placeholder="' + place + ' 3" value = ""/>' +
'</div>'
);
Cascad3.cascad3_update();
}
}
});
}
});

231
fields/image_multi_new_3inputs/js/outside.js

@ -1,231 +0,0 @@
var Cascad3 = {
init: false,
init: function() {
if (this.initialized) return;
this.initialized = true;
this.cascad3();
},
cascad3: function() {
this.cascad3_sortable();
this.cascad3_del_item();
this.cascad3_del_all_item();
this.cascad3_add_single();
this.cascad3_add_folder();
this.cascad3_upload_files();
this.cascad3_click_upload();
},
cascad3_update: function() {
this.cascad3_maxid();
this.cascad3_del_item();
AveAdmin.fancy_box();
AveAdmin.tooltip();
},
cascad3_maxid: function(id, doc) {
var maxid = 1;
$('#cascad3_' + doc + '_' + id).children('.cascad3_sortable').children('.cascad3_item').each(function() {
maxid = Math.max(maxid, parseInt($(this).attr("data-id")) + 1);
});
return maxid;
},
cascad3_del_item: function() {
$('.cascad3_item .delete').on('click', function(event) {
event.preventDefault();
var id = $(this).attr('data-id');
jConfirm(
del_conf,
del_head,
function(b) {
if (b) {
$('#cascad3_image_' + id).remove();
}
}
);
});
},
cascad3_del_all_item: function() {
$('.cascad3_del_all').on('click', function(event) {
event.preventDefault();
var c_id = $(this).parent().parent().parent('.cascad3').attr("data-id");
var d_id = $(this).parent().parent().parent('.cascad3').attr("data-doc");
jConfirm(
del_all_c,
del_all_h,
function(b) {
if (b) {
$('#cascad3_' + d_id + '_' + c_id).children('.cascad3_sortable').children('.cascad3_item').each(function() {
$(this).remove();
});
}
}
);
});
},
cascad3_upload_files: function() {
$('.cascad3_upload').on('change', function(event) {
event.preventDefault();
var cascad3_input = $(this);
event.preventDefault();
if (cascad3_input.val() == '') {
return false;
}
var files_input = this.files.length;
var max_files = cascad3_input.attr("data-max-files");
if (files_input > max_files) {
$.jGrowl(max_f_t, {
header: max_f_h,
theme: 'error'
});
cascad3_input.replaceWith(cascad3_input.val('').clone(true));
return false;
}
var cid = $(this).parent('.cascad3').attr("data-id");
var did = $(this).parent('.cascad3').attr("data-doc");
var rid = $(this).parent('.cascad3').attr("data-rubric");
$('#docmanager_edit').ajaxSubmit({
url: 'index.php?do=fields',
data: {
"field_id": cid,
"rubric_id": rid,
"doc_id": did,
"field": 'image_multi_new_3inputs',
"type": 'upload'
},
beforeSend: function() {
$.alerts._overlay('show');
},
dataType: "json",
success: function(data) {
if (data['respons'] == 'succes') {
for (var p = 0, max = data.files.length; p < max; p++) {
iid = Cascad3.cascad3_maxid(cid, did);
var field_value = data['dir'] + data.files[p];
var img_path = '../index.php?thumb=' + field_value + '&mode=f&width=128&height=128';
$('#cascad3_' + did + '_' + cid + ' > .cascad3_sortable:last').prepend(
'<div class="cascad3_item ui-state-default" id="cascad3_image_' + cid + '_' + did + '_' + iid + '" data-id="' + iid + '" doc=id="' + did + '">' +
'<div class="header grey_bg"></div>' +
'<a class="topDir icon_sprite ico_photo view fancy preview__' + cid + '_' + did + '_' + iid + '" href="' + field_value + '" title="' + look + '"></a>' +
'<a class="topDir icon_sprite ico_delete delete" href="javascript:void(0);" title="' + del + '" data-id="' + cid + '_' + did + '_' + iid + '"></a>' +
'<span class="topDir icon_sprite ico_info info" title="' + field_value + '"></span>' +
'<input type="hidden" value="' + field_value + '" name="data[' + did + '][feld][' + cid + '][' + iid + '][url]" id="image__' + cid + '_' + did + '_' + iid + '">' +
'<img id="preview__' + cid + '_' + did + '_' + iid + '" src="' + img_path + '" onclick="browse_uploads(\'image__' + cid + '_' + did + '_' + iid + '\');" class="image" alt="" width="100" height="100" />' +
'<textarea class="mousetrap" name="data[' + did + '][feld][' + cid + '][' + iid + '][descr]" placeholder="' + place + '"></textarea>' +
'</div>'
);
$.alerts._overlay('hide');
Cascad3.cascad3_update();
}
}
$.jGrowl(data['message'], {
header: data['header'],
theme: data['theme']
});
cascad3_input.replaceWith(cascad3_input = cascad3_input.clone(true));
cascad3_input.val();
}
});
return false;
});
},
cascad3_click_upload: function() {
$('.cascad3_upload_local').on('click', function(event) {
event.preventDefault();
var c_id = $(this).parent().parent().parent('.cascad3').attr("data-id");
var d_id = $(this).parent().parent().parent('.cascad3').attr("data-doc");
$('.cascad3_upload_field_' + c_id + '_' + d_id).trigger('click');
});
},
cascad3_add_single: function() {
$('.cascad3_add_single').on('click', function(event) {
event.preventDefault();
var c_id = $(this).parent().parent().parent('.cascad3').attr("data-id");
var d_id = $(this).parent().parent().parent('.cascad3').attr("data-doc");
var iid = Cascad3.cascad3_maxid(c_id, d_id);
$('#cascad3_' + d_id + '_' + c_id + ' > .cascad3_sortable:last').prepend(
'<div class="cascad3_item ui-state-default" id="cascad3_image_' + c_id + '_' + d_id + '_' + iid + '" data-id="' + iid + '" data-doc="' + d_id + '">' +
'<div class="header grey_bg"></div>' +
'<a class="topDir icon_sprite ico_photo view fancy preview__' + c_id + '_' + d_id + '_' + iid + '" href="" title="' + look + '"></a>' +
'<a class="topDir icon_sprite ico_delete delete" href="javascript:void(0);" title="' + del + '" data-id="' + c_id + '_' + d_id + '_' + iid + '"></a>' +
'<input type="hidden" value="" name="data[' + d_id + '][feld][' + c_id + '][' + iid + '][url]" id="image__' + c_id + '_' + d_id + '_' + iid + '">' +
'<img id="preview__' + c_id + '_' + d_id + '_' + iid + '" src="' + blank + '" onclick="browse_uploads(\'image__' + c_id + '_' + d_id + '_' + iid + '\');" class="image" alt="" width="100" height="100" />' +
'<textarea class="mousetrap" name="data[' + d_id + '][feld][' + c_id + '][' + iid + '][descr]" placeholder="' + place + '"></textarea>' +
'</div>'
);
browse_uploads('image__' + c_id + '_' + d_id + '_' + iid + '');
Cascad3.cascad3_update();
});
},
cascad3_sortable: function() {
$('.cascad3_sortable').sortable({
handle: ".header",
placeholder: "ui-state-highlight grey_bg"
});
//$(".cascad3").disableSelection();
},
cascad3_add_folder: function() {
$('.cascad3_add_folder').on('click', function(event) {
event.preventDefault();
var c_id = $(this).parent().parent().parent('.cascad3').attr("data-id");
var d_id = $(this).parent().parent().parent('.cascad3').attr("data-doc");
browse_dirs("cascad3__" + c_id + '_' + d_id);
});
}
}
$(document).ready(function() {
Cascad3.init();
$.fn.myPlugin = function cascad3_add_items(dir, cid, did) {
$.ajax({
url: ave_path + 'admin/index.php?do=docs&action=image_import&ajax=run',
data: {
"path": dir
},
dataType: "json",
success: function(data) {
$.alerts._overlay('hide');
for (var p = 0, max = data.respons.length; p < max; p++) {
var iid = Cascad3.cascad3_maxid(cid, did);
var field_value = dir + data.respons[p];
var img_path = '../index.php?thumb=' + field_value + '&mode=f&width=128&height=128';
$('#cascad3_' + did + '_' + cid + ' > .cascad3_sortable:last').prepend(
'<div class="cascad3_item ui-state-default" id="cascad3_image_' + cid + '_' + did + '_' + iid + '" data-id="' + iid + '" doc=id="' + did + '">' +
'<div class="header grey_bg"></div>' +
'<a class="topDir icon_sprite ico_photo view fancy preview__' + cid + '_' + did + '_' + iid + '" href="' + field_value + '" title="' + look + '"></a>' +
'<a class="topDir icon_sprite ico_delete delete" href="javascript:void(0);" title="' + del + '" data-id="' + cid + '_' + did + '_' + iid + '"></a>' +
'<span class="topDir icon_sprite ico_info info" title="' + field_value + '"></span>' +
'<input type="hidden" value="' + field_value + '" name="data[' + did + '][feld][' + cid + '][' + iid + '][url]" id="image__' + cid + '_' + did + '_' + iid + '">' +
'<img id="preview__' + cid + '_' + did + '_' + iid + '" src="' + img_path + '" onclick="browse_uploads(\'image__' + cid + '_' + did + '_' + iid + '\');" class="image" alt="" width="100" height="100" />' +
'<textarea class="mousetrap" name="data[' + did + '][feld][' + cid + '][' + iid + '][descr]" placeholder="' + place + '"></textarea>' +
'</div>'
);
Cascad3.cascad3_update();
}
}
});
}
});

0
fields/image_multi_new_3inputs/lang/.gitkeep

27
fields/image_multi_new_3inputs/lang/bg.txt

@ -1,27 +0,0 @@
[admin]
name = "Изображение (Каскада, 3 полета)"
look = "Преглед"
link = "Промени пътя"
select = "Избери изображение"
delete = "Изтриване на елелемт от элемент каскадата"
place = "Описание"
del_conf = "Сигурни ли сте, че желаете да изтриете този елемент?<br>(Изображението няма да бъде изтрито от сървъра)"
del_head = "Изтриване на елемент от каскадата..."
add_n_e = "Добави нов елемент:"
add_f = "Избор на изображение"
add_d = "Избор на папка"
add_l = "Качи от компютъра"
add_upl_e = "Вие може за заредите изображения от локален компютър след създаването на документа. За това натиснете бутона по долу «Добави и продължи редактирането»"
upl_dir = "Папка: "
del_all = "Изтриване на всички елементи"
del_all_c = "Сигурни ли сте, че желаете да изтриете всички елементи?<br>(Изображенията няма да бъдат изтрити от сървъра)"
del_all_h = "Изтриване на всички елементи на каскадата..."
resp_s_h = "Изпълнено"
resp_s_m = "Файловете са успешно заредени"
resp_e_m = "Възникна грешка при зареждането на файловете. Моля, опитайте отново."
resp_e_h = "Грешка"
resp_m_m = "Броя на файловете за зареждане са повече от максималния, зададен в настройките на PHP."
resp_m_h = "Грешка"
max_f_f = "Максимален брой файлове за зареждане: "
max_f_h = "Грешка"
max_f_t = "Превишен е максималния брой файлове,<br>разрешен за едновременно зареждане"

29
fields/image_multi_new_3inputs/lang/cz.txt

@ -1,29 +0,0 @@
[admin]
name = "Zobrazení (Kaskáda, 3 inputy)"
look = "Zobrazit"
link = "Změnit cestu"
select = "Vybrat zobrazení"
delete = "Smazat prvek kaskády"
place = "Popis"
del_conf = "Opravdu chcete odstranit tento prvek?<br>(Zobrazení nebude smazáno ze serveru)"
del_head = "Smazání prvku kaskády..."
add_n_e = "Přidat nový element:"
add_f = "Vybrat zobrazení"
add_d = "Vybrat složku"
add_l = "Nahrát z počítače"
add_upl_e = "Můžete nahrávat obrázky z místního počítače po vytvoření dokumentu. Kliknutím níže na "Přidat a pokračovat v úpravách"
upl_dir = "Složka: "
del_all = "Odstranit všechny prvky"
del_all_c = "Opravdu chcete odstranit všechny prvky?<br>(Zobrazení nebude smazáno ze serveru)"
del_all_h = "Odstranit všechny prvky kaskádu..."
resp_s_h = "Hotovo"
resp_s_m = "Soubory úspěšně nahrány"
resp_s_h = "Hotovo"
resp_s_m = "Soubory úspěšně nahrány"
resp_e_m = "Při stahování souborů došlo k chybě. Zkuste znovu."
resp_e_h = "Chyba"
resp_m_m = "Počet souborů, které se mají nahrát překračují hodnotu zadanou v konfiguračním PHP."
resp_m_h = "Chyba"
max_f_f = "Maximální počet souborů ke stažení: "
max_f_h = "Chba"
max_f_t = Překročen maximální počet souborů,<br>během jednoho nahrávání"

26
fields/image_multi_new_3inputs/lang/en.txt

@ -1,26 +0,0 @@
[en]
name = "Cascad NEW, 3 inputs"
look = "Lool"
link = "Change path"
select = "Select image"
delete = "Delete item cascade"
place = "Description"
del_conf = "are you sure You want to delete this item?<br>(the Image will not be deleted from the server)"
del_head = "Delete item cascade..."
add_n_e = "Add new item:"
add_f = "Select image"
add_d = "Select folder"
add_l = "Download to computer"
add_upl_e = "You can upload pictures from your computer after you create the document. To do this, press the bottom button "Add and continue editing""
del_all = "Delete any items"
del_all_c = "are you sure You want to delete all items?<br>(Image will not be deleted from the server)"
del_all_h = "Delete all items of the cascade..."
resp_s_h = "Done"
resp_s_m = "File successfully loaded"
resp_e_m = "an error Occurred when uploading files. Try again."
resp_e_h = "Error"
resp_m_m = "number of uploaded file exceeds the value set in your PHP settings."
resp_m_h = "Error"
max_f_f = "Maximum number zagrozenia files:"
max_f_h = "Error"
max_f_t = "you have Exceeded the maximum number of files<br>to download"

27
fields/image_multi_new_3inputs/lang/pl.txt

@ -1,27 +0,0 @@
[admin]
name = "Obrazek (Kaskada, 3 input’y)"
look = "Popatrz"
link = "Zmień sposób"
select = "Wybierz obrazek"
delete = "Usuń kaskadę"
place = "Opis"
del_conf = "Czy na pewno chcesz usunąć ten element? <br> (Obrazek nie będzie usunięty z serwera)"
del_head = "Usuń element kaskady ..."
add_n_e = "Dodaj nowy element"
add_f = "Wybierz obrazek"
add_d = "Wybierz folder"
add_l = "Pobierz z komputera"
add_upl_e = "Możesz pobrać obrazki z komputera lokalnego po utworzeniu dokumentu. Aby to zrobić, kliknij poniżej na “Dodaj i kontynuować edycję”"
upl_dir = "Folder:"
del_all = "Usuń wszystkie elementy"
del_all_c = "Czy na pewno chcesz usunąć wszystkie elementy? <br /> (Obrazek nie będzie usunięty z serwera)"
del_all_h = "Usuń wszystkie pozycje kaskady..."
resp_s_h = "Gotowe"
resp_s_m = "Pliki pomyślnie pobrane"
resp_e_m = "Wystąpił błąd podczas pobierania plików. Spróbuj ponownie."
resp_e_h = "Błąd"
resp_m_m = "Liczba plików do przesłania przekracza wartości, określone w PHP konfiguracji."
resp_m_h = "Błąd"
max_f_f = "Maksymalna liczba plików do pobrania:"
max_f_h = "Błąd"
max_f_t = "Przekroczono maksymalną liczbę plików, <br /> na jednoczesne ładowanie"

27
fields/image_multi_new_3inputs/lang/ru.txt

@ -1,27 +0,0 @@
[admin]
name = "Изображение (Каскад, 3 инпута)"
look = "Посмотреть"
link = "Изменить путь"
select = "Выбрать изображение"
delete = "Удалить элемент каскада"
place = "параметр"
del_conf = "Вы уверены, что хотите удалить данный элемент?<br>(Изображение не будет удалено с сервера)"
del_head = "Удаление элемента каскада..."
add_n_e = "Добавить новый элемент:"
add_f = "Выбрать изображение"
add_d = "Выбрать папку"
add_l = "Загрузить с компьютера"
add_upl_e = "Вы сможете загрузить фотографии с локального компьютера после создания документа. Для этого нажмите внизу кнопку «Добавить и продолжить редактирование»"
upl_dir = "Папка: "
del_all = "Удалить все элементы"
del_all_c = "Вы уверены, что хотите удалить все элементы?<br>(Изображения не будет удалены с сервера)"
del_all_h = "Удаление всех элемента каскада..."
resp_s_h = "Выполнено"
resp_s_m = "Файлы успешно загрузились"
resp_e_m = "Возникла ошибка при загрузке файлов. Попробуйте еще раз."
resp_e_h = "Ошибка"
resp_m_m = "Кол-во загружаемых файлов превышает значение, заданное в настройках PHP."
resp_m_h = "Ошибка"
max_f_f = "Макимальное кол-во загружаемых файлов: "
max_f_h = "Ошибка"
max_f_t = "Превышено максимальное число файлов,<br>для одновременной загрузки"

27
fields/image_multi_new_3inputs/lang/ua.txt

@ -1,27 +0,0 @@
[admin]
name = "Зображення (Каскад, 3 інпута)"
look = "Подивитися"
link = "Змінити шлях"
select = "Обрати зображення"
delete = "Видалити елемент каскаду"
place = "Опис"
del_conf = "Ви впевнені, що бажаєте видалити цей елемент?<br>(Зображення не буде видалено зі сервера)"
del_head = "Видалення елемента каскаду..."
add_n_e = "Додати новий елемент:"
add_f = "Обрати зображення"
add_d = "Обрати папку"
add_l = "Завантажити з компьютера"
add_upl_e = "Ви зможете завантажити зображення з локального компьютера післе створення документа. Для цього натисніть внизу кнопку “Додати та продовжити редагування”"
upl_dir = "Папка: "
del_all = "Видалити всі елементи"
del_all_c = "Ви впевнені, що бажаєте видалити всі елементи?<br>(Зображення не буде видалено зі сервера)"
del_all_h = "Видалення всіх елементів каскаду..."
resp_s_h = "Виконано"
resp_s_m = "Файли успішно завантажилися"
resp_e_m = "Сталася помилка при завантаженні файлів. Спробуйте ще раз."
resp_e_h = "Помилка"
resp_m_m = "Кількість файлів для завантаження перевищує значення, яке вказане у налаштуваннях PHP."
resp_m_h = "Помилка"
max_f_f = "Максимальна кількість файлів для завантаження: "
max_f_h = "Помилка"
max_f_t = "Перевищено максимальне число файлів,<br>для одночасного завантаження"

0
fields/image_multi_new_3inputs/tpl/.gitkeep

3
fields/image_multi_new_3inputs/tpl/field-doc.tpl

@ -1,3 +0,0 @@
{foreach from=$field_value item=image}
<img src="{$image[0]}" alt="{if isset($image[1])}{$image[1]}{/if}" title="{if isset($image[1])}{$image[1]}{/if}">
{/foreach}

3
fields/image_multi_new_3inputs/tpl/field-req.tpl

@ -1,3 +0,0 @@
{foreach from=$field_value item=image}
<img src="{$image[0]}" alt="{if isset($image[1])}{$image[1]}{/if}" title="{if isset($image[1])}{$image[1]}{/if}">
{/foreach}

65
fields/image_multi_new_3inputs/tpl/field.tpl

@ -1,65 +0,0 @@
{if $cascad3_new_3inputs != load}
{assign var=cascad3_new_3inputs value='' scope="global"}
{if $smarty.request.outside}
<script src="{$ABS_PATH}fields/{$field_dir}/js/outside.js" type="text/javascript"></script>
{else}
<script src="{$ABS_PATH}fields/{$field_dir}/js/field.js" type="text/javascript"></script>
{/if}
<link href="{$ABS_PATH}fields/{$field_dir}/css/field.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript">
var blank = '{$tpl_dir}/images/blanc.gif';
var place = '{#place#}';
var look = '{#look#}';
var del = '{#delete#}';
var del_conf = '{#del_conf#}';
var del_head = '{#del_head#}';
var del_all_c = '{#del_all_c#}';
var del_all_h = '{#del_all_h#}';
var max_f_t = '{#max_f_t#}';
var max_f_h = '{#max_f_h#}';
</script>
{assign var=cascad3_new_3inputs value="load" scope="global"}
{/if}
<div class="cascad3" id="cascad3_{$doc_id}_{$field_id}" data-id="{$field_id}" data-doc="{$doc_id}" data-rubric="{$smarty.request.rubric_id}">
<input type="hidden" value="" id="cascad3__{$field_id}_{$doc_id}">
{if $show_upload}
<input type="file" class="cascad3_upload cascad3_upload_field_{$field_id}_{$doc_id}" multiple name="cascad3_files_{$field_id}_{$doc_id}[]" style="visibility: hidden; display: none;" data-max-files="{$max_files}" />
{/if}
<ul class="messages">
<li class="highlight grey">
{#add_n_e#}
<a href="javascript:void(0);" class="cascad3_add_single link">{#add_f#}</a>
&nbsp;|&nbsp;
<a href="javascript:void(0);" class="cascad3_add_folder link">{#add_d#}</a>
&nbsp;|&nbsp;
<a href="javascript:void(0);" class="cascad3_del_all link">{#del_all#}</a>
{if $show_upload}
&nbsp;|&nbsp;
<a href="javascript:void(0);" class="cascad3_upload_local link">{#add_l#}</a>&nbsp;<a href="javascript:void(0);" class="topDir" title="{$max_files}<br>{$dir_upload}">[?]</a>
{else}
&nbsp;|&nbsp;
<a href="javascript:void(0);" class="topDir" title="{#add_upl_e#}<br><br>{$max_files}<br>{$dir_upload}">[?]</a>
{/if}
</li>
</ul>
<div class="cascad3_sortable">
{foreach from=$images key=key item=image}
<div class="cascad3_item ui-state-default" id="cascad3_image_{$field_id}_{$doc_id}_{$key}" data-id="{$key}" data-doc="{$doc_id}">
<div class="header grey_bg"></div>
<a class="topDir icon_sprite ico_photo view fancy preview__{$field_id}_{$doc_id}_{$key}" href="{$image.url}" title="{#look#}"></a>
<a class="topDir icon_sprite ico_delete delete" href="javascript:void(0);" title="{#delete#}" data-id="{$field_id}_{$doc_id}_{$key}"></a>
<span class="topDir icon_sprite ico_info info" title="{$image.url}"></span>
<input type="hidden" value="{$image.url}" name="feld[{$field_id}][{$key}][url]" id="image__{$field_id}_{$doc_id}_{$key}">
<img id="preview__{$field_id}_{$doc_id}_{$key}" src="{$image.thumb}" onclick="browse_uploads('image__{$field_id}_{$doc_id}_{$key}');" class="image" alt="" width="100" height="100" />
<input class="mousetrap" name="feld[{$field_id}][{$key}][descr]" placeholder="{#place#} 1" value="{$image.desc}"/>
<input class="mousetrap" name="feld[{$field_id}][{$key}][descr2]" placeholder="{#place#} 2" value="{$image.desc2}"/>
<input class="mousetrap" name="feld[{$field_id}][{$key}][descr3]" placeholder="{#place#} 3" value="{$image.desc3}"/>
</div>
{/foreach}
</div>
</div>

24
fields/teasers/field.php

@ -1,9 +1,9 @@
<?php <?php
/** /**
* Поле Цена * Teasers
*/ */
function get_field_teasers($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength = '', $doc_fields=array(), $rubric_id=0, $default='') function get_field_teasers($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength = '', $doc_fields=array(), $rubric_id=0, $default='')
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$fld_dir = dirname(__FILE__) . '/'; $fld_dir = dirname(__FILE__) . '/';
@ -64,7 +64,9 @@ function get_field_teasers($field_value, $action, $field_id=0, $tpl='', $tpl_emp
break; break;
case 'doc': case 'doc':
$items = (isset($field_value)) ? unserialize($field_value) : array(); $items = (isset($field_value))
? unserialize($field_value)
: array();
$res = array(); $res = array();
@ -75,7 +77,7 @@ function get_field_teasers($field_value, $action, $field_id=0, $tpl='', $tpl_emp
$item = explode('|', $item); $item = explode('|', $item);
if ($item[1]) if ($item[1])
$res[] = eval2var('?>' . showteaser($item[1]) . '<?'); $res[] = showteaser($item[1]);
} }
} }
@ -105,11 +107,11 @@ function get_field_teasers($field_value, $action, $field_id=0, $tpl='', $tpl_emp
$from_1 = ($field_default[0]) ? PREFIX . '_document_fields b' : ''; $from_1 = ($field_default[0]) ? PREFIX . '_document_fields b' : '';
$from_2 = ($field_default[1]) ? PREFIX . '_document_fields c' : ''; $from_2 = ($field_default[1]) ? PREFIX . '_document_fields c' : '';
$search_1 = ($field_default[0]) ? "AND (b.document_id=a.Id AND b.rubric_field_id = " . $field_default[0] . ")" : ""; $search_1 = ($field_default[0]) ? "AND (b.document_id=a.Id AND b.rubric_field_id = " . $field_default[0] . ")" : '';
$search_2 = ($field_default[1]) ? "AND (c.document_id=a.Id AND c.rubric_field_id = " . $field_default[1] . ")" : ""; $search_2 = ($field_default[1]) ? "AND (c.document_id=a.Id AND c.rubric_field_id = " . $field_default[1] . ")" : '';
$or_1 = ($field_default[0]) ? "OR (UPPER(b.field_value) LIKE UPPER('%" . $_REQUEST['q'] . "%'))" : ""; $or_1 = ($field_default[0]) ? "OR (UPPER(b.field_value) LIKE UPPER('%" . $_REQUEST['q'] . "%'))" : '';
$or_2 = ($field_default[1]) ? "OR (UPPER(c.field_value) LIKE UPPER('%" . $_REQUEST['q'] . "%'))" : ""; $or_2 = ($field_default[1]) ? "OR (UPPER(c.field_value) LIKE UPPER('%" . $_REQUEST['q'] . "%'))" : '';
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
SELECT SELECT
@ -161,5 +163,5 @@ function get_field_teasers($field_value, $action, $field_id=0, $tpl='', $tpl_emp
} }
return ($res ? $res : $field_value); return ($res ? $res : $field_value);
} }
?> ?>

29
fields/teasers/js/field.js

@ -1,4 +1,4 @@
var Analoque = { var Teasers = {
init: false, init: false,
@ -57,7 +57,7 @@ var Analoque = {
$('.AddButton').on('click', function() { $('.AddButton').on('click', function() {
c_id = $(this).parent().parent('.analoque_lists').attr("data-id"); c_id = $(this).parent().parent('.analoque_lists').attr("data-id");
d_id = $(this).parent().parent('.analoque_lists').attr("data-docid"); d_id = $(this).parent().parent('.analoque_lists').attr("data-docid");
i_id = Analoque.Analoque_maxid(d_id + '_' + c_id); i_id = Teasers.Analoque_maxid(d_id + '_' + c_id);
$('#analoque_lists_' + d_id + '_' + c_id + ':last').append( $('#analoque_lists_' + d_id + '_' + c_id + ':last').append(
'<div class="analoque_list fix mb10" id="analoque_list_' + d_id + '_' + c_id + '_' + i_id + '" data-id="' + i_id + '">' + '<div class="analoque_list fix mb10" id="analoque_list_' + d_id + '_' + c_id + '_' + i_id + '" data-id="' + i_id + '">' +
'<input class="mousetrap search_analoque" name="feld[' + c_id + '][' + i_id + '][param]" type="text" value="" placeholder="' + analoque_param + '" data-docid="' + d_id + '" data-fieldid="' + c_id + '" data-id="' + i_id + '" style="width: 450px;"/>&nbsp;&nbsp;Id:&nbsp;<input type="text" class="mousetrap field_' + d_id + '_' + c_id + '_' + i_id + '" value="" name="feld[' + c_id + '][' + i_id + '][value]" placeholder="' + analoque_value + '" style="width: 50px;" readonly />&nbsp;&nbsp;<a href="javascript:void(0);" data-id="' + d_id + '_' + c_id + '_' + i_id + '" class="button redBtn topDir DelButton" title="' + analoque_del + '">&times;</a>' + '<input class="mousetrap search_analoque" name="feld[' + c_id + '][' + i_id + '][param]" type="text" value="" placeholder="' + analoque_param + '" data-docid="' + d_id + '" data-fieldid="' + c_id + '" data-id="' + i_id + '" style="width: 450px;"/>&nbsp;&nbsp;Id:&nbsp;<input type="text" class="mousetrap field_' + d_id + '_' + c_id + '_' + i_id + '" value="" name="feld[' + c_id + '][' + i_id + '][value]" placeholder="' + analoque_value + '" style="width: 50px;" readonly />&nbsp;&nbsp;<a href="javascript:void(0);" data-id="' + d_id + '_' + c_id + '_' + i_id + '" class="button redBtn topDir DelButton" title="' + analoque_del + '">&times;</a>' +
@ -65,7 +65,7 @@ var Analoque = {
'</div>' '</div>'
); );
Analoque.Analoque_update(); Teasers.Analoque_update();
}); });
}, },
@ -81,6 +81,8 @@ var Analoque = {
*/ */
Analoque_search: function() { Analoque_search: function() {
var res_search = false;
$('.search_analoque').on('input', function(event) $('.search_analoque').on('input', function(event)
{ {
event.preventDefault(); event.preventDefault();
@ -92,14 +94,23 @@ var Analoque = {
var kid = query.attr('data-id'); var kid = query.attr('data-id');
var field_id_input = $('.field_' + did + '_' + fid + '_' + kid); var field_id_input = $('.field_' + did + '_' + fid + '_' + kid);
query.autocomplete("index.php?do=fields&field=analoque&type=search&doc_id=" + did + "&field_id=" + fid, { if (res_search)
return false;
res_search = true;
query.autocomplete("index.php?do=fields&field=teasers&type=search&doc_id=" + did + "&field_id=" + fid, {
width: query.outerWidth(), width: query.outerWidth(),
max: 10, max: 5,
dataType: "json", dataType: "json",
matchContains: "word", matchContains: "word",
scroll: true, scroll: true,
scrollHeight: 200, scrollHeight: 200,
parse: function(data) { parse: function(data) {
res_search = false;
if (typeof data === 'object')
{
return $.map(data, function(row) { return $.map(data, function(row) {
return { return {
data: row, data: row,
@ -107,6 +118,9 @@ var Analoque = {
result: query.val() result: query.val()
} }
}); });
}
return false;
}, },
formatItem: function(item) { formatItem: function(item) {
return '<div style="padding: 3px 0;"><span style="font-weight: 700;">' + item.doc_article + '</span> ' + item.doc_name + '</div>'; return '<div style="padding: 3px 0;"><span style="font-weight: 700;">' + item.doc_article + '</span> ' + item.doc_name + '</div>';
@ -123,7 +137,6 @@ var Analoque = {
} }
} }
$(document).ready(function() $(document).ready(function() {
{ Teasers.init();
Analoque.init();
}); });

4
fields/teasers/tpl/field.tpl

@ -1,5 +1,5 @@
{if $analoque != load} {if $analoque != load}
{assign var=analoque value='' scope="global"} {assign var=teasers value='' scope="global"}
{if $smarty.request.outside} {if $smarty.request.outside}
<script src="{$ABS_PATH}fields/{$field_dir}/js/outside.js" type="text/javascript"></script> <script src="{$ABS_PATH}fields/{$field_dir}/js/outside.js" type="text/javascript"></script>
{else} {else}
@ -14,7 +14,7 @@
var analoque_del_conf = '{#del_conf#}'; var analoque_del_conf = '{#del_conf#}';
var analoque_del_head = '{#del_head#}'; var analoque_del_head = '{#del_head#}';
</script> </script>
{assign var=analoque value="load" scope="global"} {assign var=teasers value="load" scope="global"}
{/if} {/if}
<div class="analoque_lists mt10" id="analoque_lists_{$doc_id}_{$field_id}" data-docid="{$doc_id}" data-id="{$field_id}"> <div class="analoque_lists mt10" id="analoque_lists_{$doc_id}_{$field_id}" data-docid="{$doc_id}" data-id="{$field_id}">

8
fields/youtube/lang/bg.txt

@ -1,3 +1,9 @@
[admin] [admin]
name = "YouTube" name = "YouTube"
f_url = "Линк"
f_width = "Ширина"
f_height = "Височина"
f_fullscreen = "На цял екран"
f_allow = "Разреши"
f_forbidden = "Забрани"
f_metod = "Метод на вмъкване"

7
fields/youtube/lang/cz.txt

@ -1,2 +1,9 @@
[admin] [admin]
name = "YouTube" name = "YouTube"
f_url = "Ссылка"
f_width = "Ширина"
f_height = "Высота"
f_fullscreen = "Полноэкранный режим"
f_allow = "Разрешить"
f_forbidden = "Запретить"
f_metod = "Метод вставки"

7
fields/youtube/lang/en.txt

@ -1,2 +1,9 @@
[admin] [admin]
name = "YouTube" name = "YouTube"
f_url = "Url"
f_width = "Width"
f_height = "Height"
f_fullscreen = "Fullscreen"
f_allow = "Allow"
f_forbidden = "Forbidden"
f_metod = "Metod"

7
fields/youtube/lang/pl.txt

@ -1,2 +1,9 @@
[admin] [admin]
name = "YouTube" name = "YouTube"
f_url = "Url"
f_width = "Width"
f_height = "Height"
f_fullscreen = "Fullscreen"
f_allow = "Allow"
f_forbidden = "Forbidden"
f_metod = "Metod"

7
fields/youtube/lang/ru.txt

@ -1,2 +1,9 @@
[admin] [admin]
name = "YouTube" name = "YouTube"
f_url = "Ссылка"
f_width = "Ширина"
f_height = "Высота"
f_fullscreen = "Полноэкранный режим"
f_allow = "Разрешить"
f_forbidden = "Запретить"
f_metod = "Метод вставки"

7
fields/youtube/lang/ua.txt

@ -1,2 +1,9 @@
[admin] [admin]
name = "YouTube" name = "YouTube"
f_url = "Url"
f_width = "Width"
f_height = "Height"
f_fullscreen = "Fullscreen"
f_allow = "Allow"
f_forbidden = "Forbidden"
f_metod = "Metod"

14
fields/youtube/tpl/field.tpl

@ -1,22 +1,22 @@
<div class="mb10"> <div class="mb10">
Ссылка: {#f_url#}:
<input type="text" style="width: 100%;" name="feld[{$field_id}][url]" value="{$video.0}" class="mousetrap" /> <input type="text" style="width: 100%;" name="feld[{$field_id}][url]" value="{$video.0}" class="mousetrap" />
</div> </div>
<div class="mb10"> <div class="mb10">
Ширина: <input type="text" style="width: 50px;" name="feld[{$field_id}][width]" value="{$video.1}" class="mousetrap" /> px {#f_width#}: <input type="text" style="width: 50px;" name="feld[{$field_id}][width]" value="{$video.1}" class="mousetrap" /> px
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Высота: <input type="text" style="width: 50px;" name="feld[{$field_id}][height]" value="{$video.2}" class="mousetrap" /> px {#f_height#}: <input type="text" style="width: 50px;" name="feld[{$field_id}][height]" value="{$video.2}" class="mousetrap" /> px
</div> </div>
<div class="mb10"> <div class="mb10">
Полноэкранный режим: {#f_fullscreen#}:
<select name="feld[{$field_id}][fullscreen]"> <select name="feld[{$field_id}][fullscreen]">
<option value="true" {if $video.3 == 'true'}selected{/if}>Разрешить</option> <option value="true" {if $video.3 == 'true'}selected{/if}>{#f_allow#}</option>
<option value="false" {if $video.3 == 'false'}selected{/if}>Запретить</option> <option value="false" {if $video.3 == 'false'}selected{/if}>{#f_forbidden#}</option>
</select> </select>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Метод вставки: {#f_metod#}:
<select name="feld[{$field_id}][source]"> <select name="feld[{$field_id}][source]">
<option value="embed" {if $video.4 == 'embed'}selected{/if}>Embed</option> <option value="embed" {if $video.4 == 'embed'}selected{/if}>Embed</option>
<option value="iframe" {if $video.4 == 'iframe'}selected{/if}>Iframe</option> <option value="iframe" {if $video.4 == 'iframe'}selected{/if}>Iframe</option>

9
functions/func.block.php

@ -29,6 +29,10 @@ function parse_block($id)
{ {
$cache_file = BASE_DIR . '/cache/sql/block/' . $id . '.cache'; $cache_file = BASE_DIR . '/cache/sql/block/' . $id . '.cache';
// Если включен DEV MODE, то отключаем кеширование запросов
if (defined('DEV_MODE') AND DEV_MODE)
$cache_file = null;
if (! file_exists(dirname($cache_file))) if (! file_exists(dirname($cache_file)))
mkdir(dirname($cache_file), 0766, true); mkdir(dirname($cache_file), 0766, true);
@ -48,7 +52,8 @@ function parse_block($id)
LIMIT 1 LIMIT 1
")->GetCell(); ")->GetCell();
file_put_contents($cache_file,$return); if ($cache_file)
file_put_contents($cache_file, $return);
} }
//-- парсим теги //-- парсим теги
@ -84,7 +89,7 @@ function parse_block($id)
$gen_time = Debug::endTime('BLOCK_' . $id); $gen_time = Debug::endTime('BLOCK_' . $id);
$GLOBALS['block_generate'][] = array('BLOCK_'. $id => $gen_time); $GLOBALS['block_generate']['BLOCKS'][$id] = $gen_time;
return $return; return $return;
} }

19
functions/func.breadcrumbs.php

@ -62,8 +62,17 @@
$lang_home_alias = $AVE_DB->Query($sql)->FetchRow(); $lang_home_alias = $AVE_DB->Query($sql)->FetchRow();
$search = array('[name]', '[link]', '[count]'); $search = array(
$replace = array($lang_home_alias->document_breadcrum_title, $bread_show_host ? HOST . '/' . ltrim($lang_home_alias->document_alias, '/') : $lang_home_alias->document_alias, 1); '[name]',
'[link]',
'[count]'
);
$replace = array(
$lang_home_alias->document_breadcrum_title,
$bread_show_host ? HOST . '/' . ltrim($lang_home_alias->document_alias, '/') : $lang_home_alias->document_alias,
1
);
$link = str_replace($search, $replace, $bread_link_template); $link = str_replace($search, $replace, $bread_link_template);
@ -74,7 +83,7 @@
if ($bread_sepparator_use) if ($bread_sepparator_use)
$bread_crumb .= $bread_sepparator; $bread_crumb .= $bread_sepparator;
unset($search, $replace, $link, $sql, $lang_home_alias); unset ($search, $replace, $link, $sql, $lang_home_alias);
} }
if ($curent_document == 1 || $curent_document == PAGE_NOT_FOUND_ID) if ($curent_document == 1 || $curent_document == PAGE_NOT_FOUND_ID)
@ -195,7 +204,9 @@
} }
// Последний элемент // Последний элемент
if (get_settings('bread_link_box_last') == 1 || (isset($AVE_Core->curentdoc->bread_link_box_last) && $AVE_Core->curentdoc->bread_link_box_last == 1)) if ((isset($AVE_Core->curentdoc->bread_link_box_last) && $AVE_Core->curentdoc->bread_link_box_last == 0))
$bread_crumb .= '';
else if (get_settings('bread_link_box_last') == 1 || (isset($AVE_Core->curentdoc->bread_link_box_last) && $AVE_Core->curentdoc->bread_link_box_last == 1))
$bread_crumb .= sprintf($bread_self_box, $current->document_breadcrum_title); $bread_crumb .= sprintf($bread_self_box, $current->document_breadcrum_title);
if (! $noprint) if (! $noprint)

39
functions/func.common.php

@ -15,8 +15,8 @@
/** /**
* Вставляем файл с пользовательскими функциями * Вставляем файл с пользовательскими функциями
*/ */
if (file_exists(BASE_DIR."/functions/func.custom.php")) if (file_exists(BASE_DIR . '/functions/func.custom.php'))
include (BASE_DIR."/functions/func.custom.php"); include (BASE_DIR . '/functions/func.custom.php');
/** /**
@ -255,9 +255,7 @@
static $settings = null; static $settings = null;
if ($settings === null) if ($settings === null)
{ $settings = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_settings", SYSTEM_CACHE_LIFETIME, 'settings')->FetchAssocArray();
$settings = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_settings", SYSTEM_CACHE_LIFETIME)->FetchAssocArray();
}
if ($field == '') if ($field == '')
return $settings; return $settings;
@ -928,6 +926,37 @@
} }
/**
* Функция поиска ключевых слов
*
* @param string $string - запрос
* @return string
*/
function searchTags()
{
global $AVE_DB;
$sql = $AVE_DB->Query("
SELECT DISTINCT
tag
FROM
" . PREFIX . "_document_tags
");
$tags = array();
$ii = 0;
while ($row = $sql->GetCell())
{
$tags[]['value'] = $row;
}
echo json_encode($tags);
exit;
}
/** /**
* Формирование строки из случайных символов * Формирование строки из случайных символов
* *

103
functions/func.fields.php

@ -76,7 +76,7 @@
return '<input type="text" style="width: 400px" name="feld[' . $field_id . ']" value="' . $field_value . '">'; return '<input type="text" style="width: 400px" name="feld[' . $field_id . ']" value="' . $field_value . '">';
case 'doc': case 'doc':
case 'req': case 'req':
if (!$tpl_empty) if (! $tpl_empty)
{ {
$field_param = explode('|', $field_value); $field_param = explode('|', $field_value);
$field_value = preg_replace_callback( $field_value = preg_replace_callback(
@ -90,7 +90,8 @@
} }
return $field_value; return $field_value;
default: return $field_value; default:
return $field_value;
} }
} }
@ -171,14 +172,29 @@
* *
* @return string * @return string
*/ */
function get_field_num($rubric_id, $alias){ function get_field_num($rubric_id, $alias)
{
global $AVE_DB; global $AVE_DB;
static $alias_field_id=array();
if(isset($alias_field_id[$rubric_id][$alias])) return $alias_field_id[$rubric_id][$alias]; static $alias_field_id = array();
$alias_field_id[$rubric_id][$alias] = $AVE_DB->Query("SELECT Id FROM " . PREFIX . "_rubric_fields WHERE (rubric_field_alias='".addslashes($alias)."' OR Id='".intval($alias)."') AND rubric_id=".intval($rubric_id))->GetCell();
if (isset($alias_field_id[$rubric_id][$alias]))
return $alias_field_id[$rubric_id][$alias];
$sql = "
SELECT Id
FROM " . PREFIX . "_rubric_fields
WHERE (rubric_field_alias = '".addslashes($alias)."'
OR Id = '".intval($alias)."')
AND rubric_id = ".intval($rubric_id)
;
$alias_field_id[$rubric_id][$alias] = $AVE_DB->Query($sql)->GetCell();
return $alias_field_id[$rubric_id][$alias]; return $alias_field_id[$rubric_id][$alias];
} }
/** /**
* Возвращаем * Возвращаем
* *
@ -196,11 +212,18 @@
if(isset($alias_field_id[$id])) if(isset($alias_field_id[$id]))
return $alias_field_id[$id]; return $alias_field_id[$id];
$alias_field_id[$id] = $AVE_DB->Query("SELECT rubric_field_default FROM " . PREFIX . "_rubric_fields WHERE Id = ".intval($id))->GetCell(); $sql = "
SELECT rubric_field_default
FROM " . PREFIX . "_rubric_fields
WHERE Id = ".intval($id)
;
$alias_field_id[$id] = $AVE_DB->Query($sql)->GetCell();
return $alias_field_id[$id]; return $alias_field_id[$id];
} }
/** /**
* Возвращаем шаблон tpl или пусто * Возвращаем шаблон tpl или пусто
* *
@ -210,25 +233,41 @@
* *
* @return string * @return string
*/ */
function get_field_tpl($dir='', $field_id=0, $type='admin'){ function get_field_tpl($dir='', $field_id=0, $type='admin')
{
$alias_field_id = get_field_alias($field_id); $alias_field_id = get_field_alias($field_id);
switch ($type) { switch ($type)
{
case '': case '':
case 'admin': case 'admin':
default: default:
$tpl = (file_exists($dir.'field-'.$field_id.'.tpl')) ? $dir.'field-'.$field_id.'.tpl' : ((file_exists($dir.'field-'.$alias_field_id.'.tpl')) ? $dir.'field-'.$alias_field_id.'.tpl' : $dir.'field.tpl'); $tpl = (file_exists($dir.'field-'.$field_id.'.tpl'))
? $dir.'field-'.$field_id.'.tpl'
: ((file_exists($dir.'field-'.$alias_field_id.'.tpl'))
? $dir.'field-'.$alias_field_id.'.tpl'
: $dir.'field.tpl');
$tpl = (@filesize($tpl)) ? $tpl : ''; $tpl = (@filesize($tpl)) ? $tpl : '';
break; break;
case 'doc': case 'doc':
$tpl = (file_exists($dir.'field-doc-'.$field_id.'.tpl')) ? $dir.'field-doc-'.$field_id.'.tpl' : ((file_exists($dir.'field-doc-'.$alias_field_id.'.tpl')) ? $dir.'field-doc-'.$alias_field_id.'.tpl' : $dir.'field-doc.tpl'); $tpl = (file_exists($dir.'field-doc-'.$field_id.'.tpl'))
? $dir.'field-doc-'.$field_id.'.tpl'
: ((file_exists($dir.'field-doc-'.$alias_field_id.'.tpl'))
? $dir.'field-doc-'.$alias_field_id.'.tpl'
: $dir.'field-doc.tpl');
$tpl = (@filesize($tpl)) ? $tpl : ''; $tpl = (@filesize($tpl)) ? $tpl : '';
break; break;
case 'req': case 'req':
$tpl = (file_exists($dir.'field-req-'.$field_id.'.tpl')) ? $dir.'field-req-'.$field_id.'.tpl' : ((file_exists($dir.'field-req-'.$alias_field_id.'.tpl')) ? $dir.'field-req-'.$alias_field_id.'.tpl' : $dir.'field-req.tpl'); $tpl = (file_exists($dir.'field-req-'.$field_id.'.tpl'))
? $dir.'field-req-'.$field_id.'.tpl'
: ((file_exists($dir.'field-req-'.$alias_field_id.'.tpl'))
? $dir.'field-req-'.$alias_field_id.'.tpl'
: $dir.'field-req.tpl');
$tpl = (@filesize($tpl)) ? $tpl : ''; $tpl = (@filesize($tpl)) ? $tpl : '';
break; break;
} }
@ -245,7 +284,7 @@
* *
* @return string * @return string
*/ */
function document_get_field($field_id, $document_id=null) function document_get_field($field_id, $document_id = null)
{ {
global $AVE_Core; global $AVE_Core;
@ -370,7 +409,7 @@
if (! is_numeric($document_id)) if (! is_numeric($document_id))
return false; return false;
if (!isset ($document_fields[$document_id])) if (! isset($document_fields[$document_id]))
{ {
$document_fields[$document_id] = false; $document_fields[$document_id] = false;
@ -446,6 +485,7 @@
$document_fields[$row['document_id']][$row['rubric_field_alias']] = $row['rubric_field_id']; $document_fields[$row['document_id']][$row['rubric_field_alias']] = $row['rubric_field_id'];
} }
} }
return $document_fields[$document_id]; return $document_fields[$document_id];
} }
@ -650,4 +690,37 @@
return $return; return $return;
} }
/**
* Возвращает наименование поля документа по номеру
*
* @param int $field_id ([tag:fld:X]) - номер поля
* @param int $doc_id
* @param int $parametr ([tag:parametr:X]) - часть поля
*
* @return string
*/
function get_field_name($field_id, $doc_id = null)
{
global $req_item_id;
//-- Если не передан $doc_id, то проверяем реквест
if (! $doc_id && $req_item_id)
$doc_id = $req_item_id;
//-- Или берём для текущего дока
elseif (! $doc_id && $_REQUEST['id'] > 0)
$doc_id = $_REQUEST['id'];
//-- Возвращаем FALSE, если не число
elseif (! is_numeric($doc_id))
return false;
$document_fields = get_document_fields($doc_id);
if (empty($document_fields[$field_id]))
return false;
$field_name = $document_fields[$field_id]['rubric_field_title'];
return $field_name;
}
?> ?>

18
functions/func.helpers.php

@ -341,29 +341,29 @@ if (!function_exists('cleanSanitize')){
* @param bool $middle Вырезает середину, оставляет начало + разделитель + конец * @param bool $middle Вырезает середину, оставляет начало + разделитель + конец
* @return mixed|string * @return mixed|string
*/ */
if (!function_exists('trancate')) if (! function_exists('trancate'))
{ {
function truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) function truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
{ {
if ($length == 0) if ($length == 0)
return ''; return '';
if (strlen($string) > $length) if (mb_strlen($string) > $length)
{ {
$length -= min($length, strlen($etc)); $length -= min($length, mb_strlen($etc));
if (! $break_words && ! $middle) if (! $break_words && ! $middle)
{ {
$string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1)); $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length + 1));
} }
if (!$middle) if (! $middle)
{ {
return substr($string, 0, $length) . $etc; return mb_substr($string, 0, $length) . $etc;
} }
else else
{ {
return substr($string, 0, $length/2) . $etc . substr($string, -$length/2); return mb_substr($string, 0, $length / 2) . $etc . mb_substr($string, - $length / 2);
} }
} }
else else
@ -409,7 +409,9 @@ if (!function_exists('truncate_text'))
if (strlen($out) >= $n) if (strlen($out) >= $n)
{ {
$out = trim($out); $out = trim($out);
return (strlen($out) == strlen($str)) ? $out : $out . $end_char; return (strlen($out) == strlen($str))
? $out
: $out . $end_char;
} }
} }
return $str; return $str;

95
functions/func.navigation.php

@ -21,25 +21,45 @@
{ {
global $AVE_DB, $AVE_Core; global $AVE_DB, $AVE_Core;
$gen_time = microtime(true); // Извлекаем id из аргумента
// извлекаем id из аргумента
$navi_id = $navi_tag[1]; $navi_id = $navi_tag[1];
Debug::startTime('NAVIAGTION_' . $navi_id);
// Достаем для проверки тип меню
$sql = "
SELECT
expand_ext
FROM
".PREFIX."_navigation
WHERE
navigation_id = '" . $navi_id . "'
OR
alias = '" . $navi_id . "'
";
$expnad_ext = $AVE_DB->Query($sql, SYSTEM_CACHE_LIFETIME, 'nav_' . $navi_id)->GetCell();
// извлекаем level из аргумента // извлекаем level из аргумента
$navi_print_level = $navi_tag[2]; $navi_print_level = (! empty($navi_tag[2]))
? $navi_tag[2]
: '';
$navi = ''; $navi = '';
$cache_file = BASE_DIR . '/cache/sql/nav/template-' . $navi_id . '.cache'; $cache_file = BASE_DIR . '/cache/sql/nav/template-' . $navi_id . '.cache';
if(! file_exists(dirname($cache_file))) // Если включен DEV MODE, то отключаем кеширование запросов
if (defined('DEV_MODE') AND DEV_MODE || $expnad_ext != 1)
$cache_file = null;
if (! file_exists(dirname($cache_file)))
mkdir(dirname($cache_file), 0766, true); mkdir(dirname($cache_file), 0766, true);
// получаем меню навигации по id, // получаем меню навигации по id,
// и если такой не существует, выводим сообщение // и если такой не существует, выводим сообщение
if(file_exists($cache_file)) if (file_exists($cache_file))
{ {
$navi_menu = unserialize(file_get_contents($cache_file)); $navi_menu = unserialize(file_get_contents($cache_file));
} }
@ -47,6 +67,7 @@
{ {
$navi_menu = get_navigations($navi_id); $navi_menu = get_navigations($navi_id);
if ($cache_file)
file_put_contents($cache_file, serialize($navi_menu)); file_put_contents($cache_file, serialize($navi_menu));
} }
@ -75,10 +96,14 @@
// после ; id текущего пункта // после ; id текущего пункта
// id текущего документа. Если не задан, то главная страница // id текущего документа. Если не задан, то главная страница
$doc_active_id = (int)(($_REQUEST['id']) ? $_REQUEST['id'] : 1); $doc_active_id = (int)(($_REQUEST['id'])
? $_REQUEST['id']
: 1);
// алиас текущего документа // алиас текущего документа
$alias = ltrim(isset($AVE_Core->curentdoc->document_alias) ? $AVE_Core->curentdoc->document_alias : ''); $alias = ltrim(isset($AVE_Core->curentdoc->document_alias)
? $AVE_Core->curentdoc->document_alias
: '');
// запрос для выборки по текущему алиасу // запрос для выборки по текущему алиасу
$sql_doc_active_alias = ''; $sql_doc_active_alias = '';
@ -146,10 +171,10 @@
$sql_navi_level = ''; $sql_navi_level = '';
$sql_navi_active = ''; $sql_navi_active = '';
if($navi_print_level) if ($navi_print_level)
{ {
$sql_navi_level = ' AND level IN (' . $navi_print_level . ') '; $sql_navi_level = ' AND level IN (' . $navi_print_level . ') ';
$sql_navi_active = ' AND parent_id IN(' . $navi_active_way_str . ') '; $sql_navi_active = ' AND parent_id IN (' . $navi_active_way_str . ') ';
} }
// обычное использование навигации // обычное использование навигации
@ -157,14 +182,14 @@
{ {
switch ($navi_menu->expand_ext) switch ($navi_menu->expand_ext)
{ {
// все уровни // текущий и родительский уровни
case 1: case 0:
$sql_navi_active = ' AND parent_id IN (' . $navi_active_way_str . ') ';
$navi_parent = 0; $navi_parent = 0;
break; break;
// текущий и родительский уровни // все уровни
case 0: case 1:
$sql_navi_active = ' AND parent_id IN(' . $navi_active_way_str . ') ';
$navi_parent = 0; $navi_parent = 0;
break; break;
@ -176,13 +201,18 @@
} }
} }
$cache_items = BASE_DIR . '/cache/sql/nav/items-' . $navi_id . '.cache'; $cache_items = BASE_DIR . '/cache/sql/nav/items-' . $navi_id . '.cache';
$navi_items = array(); $navi_items = array();
// Если включен DEV MODE, то отключаем кеширование запросов
if (defined('DEV_MODE') AND DEV_MODE || $expnad_ext != 1)
$cache_items = null;
if (empty($navi_print_level))
{
//-- Проверяем есть файл кеша, если есть пропускам запрос к БД //-- Проверяем есть файл кеша, если есть пропускам запрос к БД
if(! file_exists($cache_items)) if (! file_exists($cache_items))
{ {
//-- Запрос пунктов меню //-- Запрос пунктов меню
$sql = " $sql = "
@ -202,19 +232,39 @@
$sql_navi_items = $AVE_DB->Query($sql); $sql_navi_items = $AVE_DB->Query($sql);
while ($row_navi_items = $sql_navi_items->FetchAssocArray()) while ($row_navi_items = $sql_navi_items->FetchAssocArray())
{
$navi_items[$row_navi_items['parent_id']][] = $row_navi_items; $navi_items[$row_navi_items['parent_id']][] = $row_navi_items;
}
if ($cache_items)
file_put_contents($cache_items, serialize($navi_items)); file_put_contents($cache_items, serialize($navi_items));
} }
else else
{ {
$navi_items = unserialize(file_get_contents($cache_items)); $navi_items = unserialize(file_get_contents($cache_items));
} }
}
else
{
//-- Запрос пунктов меню
$sql = "
SELECT *
FROM
" . PREFIX . "_navigation_items
WHERE
status = '1'
AND
navigation_id = '" . $navi_menu->navigation_id . "'" .
$sql_navi_level . "
ORDER BY
position ASC
";
$sql_navi_items = $AVE_DB->Query($sql);
if($navi_print_level) while ($row_navi_items = $sql_navi_items->FetchAssocArray())
{ {
$navi_items[$row_navi_items['parent_id']][] = $row_navi_items;
}
$keys = array_keys($navi_items); $keys = array_keys($navi_items);
$navi_parent = ! empty($keys) $navi_parent = ! empty($keys)
? $keys[0] ? $keys[0]
@ -248,8 +298,9 @@
$navi = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $navi); $navi = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $navi);
$navi = str_replace(array("\n","\r"),'',$navi); $navi = str_replace(array("\n","\r"),'',$navi);
$gen_time = microtime(true) - $gen_time; $gen_time = Debug::endTime('NAVIAGTION_' . $navi_id);
$GLOBALS['block_generate'][] = array('NAVIGATION_' . $navi_id => $gen_time);
$GLOBALS['block_generate']['NAVIAGTIONS'][$navi_id] = $gen_time;
return $navi; return $navi;
} }

254
functions/func.parserequest.php

@ -1,6 +1,6 @@
<?php <?php
/** /**
* AVE.cms * AVE.cms
* *
* @package AVE.cms * @package AVE.cms
@ -11,15 +11,37 @@
* @license GPL v.2 * @license GPL v.2
*/ */
/** function request_get_settings($id)
{
global $AVE_DB;
// Получаем информацию о запросе
$reqest_settings = $AVE_DB->Query("
SELECT
*
FROM
" . PREFIX . "_request
WHERE
" . (is_numeric($id) ? 'Id' : 'request_alias') . " = '" . $id . "'
", -1, 'request/settings/' . $id)->FetchRow();
// Выходим, если нет запроса
if (! is_object($reqest_settings))
return '';
else
return $reqest_settings;
}
/**
* Обработка условий запроса. * Обработка условий запроса.
* Возвращает строку условий в SQL-формате * Возвращает строку условий в SQL-формате
* *
* @param int $id идентификатор запроса * @param int $id идентификатор запроса
* @return string * @return string
*/ */
function request_get_condition_sql_string($id, $update_db = false) function request_get_condition_sql_string($id, $update_db = false)
{ {
global $AVE_DB, $AVE_Core; global $AVE_DB, $AVE_Core;
$id = (int)$id; $id = (int)$id;
@ -174,19 +196,21 @@ function request_get_condition_sql_string($id, $update_db = false)
WHERE WHERE
Id = '" . $id . "' Id = '" . $id . "'
"); ");
$AVE_DB->clear_request($id);
} }
return @$retval; return @$retval;
} }
/* /*
* Функция принимает строку, и возвращает * Функция принимает строку, и возвращает
* адрес первого изображения, которую найдет * адрес первого изображения, которую найдет
*/ */
function getImgSrc($data) function getImgSrc($data)
{ {
preg_match_all("/(<img )(.+?)( \/)?(>)/u", $data, $images); preg_match_all("/(<img )(.+?)( \/)?(>)/u", $data, $images);
$host = $images[2][0]; $host = $images[2][0];
@ -202,7 +226,7 @@ function getImgSrc($data)
} }
else else
{ {
preg_match('/(.+)'.THUMBNAIL_DIR.'\/(.+)-.\d+x\d+(\..+)/u', $host, $matches); preg_match('/(.+)' . THUMBNAIL_DIR . '\/(.+)-.\d+x\d+(\..+)/u', $host, $matches);
if (isset($matches[1])) if (isset($matches[1]))
{ {
@ -213,9 +237,9 @@ function getImgSrc($data)
return $host; return $host;
} }
} }
} }
/** /**
* Функция обработки тэгов полей с использованием шаблонов * Функция обработки тэгов полей с использованием шаблонов
* в соответствии с типом поля * в соответствии с типом поля
* *
@ -224,8 +248,8 @@ function getImgSrc($data)
* @param int $maxlength максимальное количество символов обрабатываемого поля * @param int $maxlength максимальное количество символов обрабатываемого поля
* @return string * @return string
*/ */
function request_get_document_field($field_id, $document_id, $maxlength = '', $rubric_id=0) function request_get_document_field($field_id, $document_id, $maxlength = '', $rubric_id = 0)
{ {
if (! is_numeric($document_id) || $document_id < 1) if (! is_numeric($document_id) || $document_id < 1)
return ''; return '';
@ -244,7 +268,7 @@ function request_get_document_field($field_id, $document_id, $maxlength = '', $r
$func = 'get_field_' . $document_fields[$field_id]['rubric_field_type']; $func = 'get_field_' . $document_fields[$field_id]['rubric_field_type'];
if(! is_callable($func)) if (! is_callable($func))
$func = 'get_field_default'; $func = 'get_field_default';
$field_value = $func($field_value, 'req', $field_id, $document_fields[$field_id]['rubric_field_template_request'], $document_fields[$field_id]['tpl_req_empty'], $maxlength, $document_fields, $rubric_id, $document_fields[$field_id]['rubric_field_default']); $field_value = $func($field_value, 'req', $field_id, $document_fields[$field_id]['rubric_field_template_request'], $document_fields[$field_id]['tpl_req_empty'], $maxlength, $document_fields, $rubric_id, $document_fields[$field_id]['rubric_field_default']);
@ -253,17 +277,17 @@ function request_get_document_field($field_id, $document_id, $maxlength = '', $r
{ {
if ($maxlength == 'more' || $maxlength == 'esc'|| $maxlength == 'img') if ($maxlength == 'more' || $maxlength == 'esc'|| $maxlength == 'img')
{ {
if($maxlength == 'more') if ($maxlength == 'more')
{ {
// ToDo - Вывести в настройки или в настройки самого запроса // ToDo - Вывести в настройки или в настройки самого запроса
$teaser = explode('<a name="more"></a>', $field_value); $teaser = explode('<a name="more"></a>', $field_value);
$field_value = $teaser[0]; $field_value = $teaser[0];
} }
elseif($maxlength == 'esc') elseif ($maxlength == 'esc')
{ {
$field_value = addslashes($field_value); $field_value = addslashes($field_value);
} }
elseif($maxlength == 'img') elseif ($maxlength == 'img')
{ {
$field_value = getImgSrc($field_value); $field_value = getImgSrc($field_value);
} }
@ -273,43 +297,45 @@ function request_get_document_field($field_id, $document_id, $maxlength = '', $r
if ($maxlength < 0) if ($maxlength < 0)
{ {
$field_value = str_replace(array("\r\n","\n","\r"), " ", $field_value); $field_value = str_replace(array("\r\n","\n","\r"), " ", $field_value);
$field_value = strip_tags($field_value, "<a>"); $field_value = strip_tags($field_value, REQUEST_STRIP_TAGS);
$field_value = preg_replace('/ +/', ' ', $field_value); $field_value = preg_replace('/ +/', ' ', $field_value);
$field_value = trim($field_value); $field_value = trim($field_value);
$maxlength = abs($maxlength); $maxlength = abs($maxlength);
} }
// ToDo - сделать настройки окончаний // ToDo - сделать настройки окончаний
if ($maxlength != 0) if ($maxlength != 0)
{ {
$field_value = mb_substr($field_value, 0, $maxlength) . ((strlen($field_value) > $maxlength) ? '... ' : ''); $field_value = truncate($field_value, $maxlength, REQUEST_ETC, REQUEST_BREAK_WORDS);
} }
} }
else else
return false; return false;
} }
return $field_value; return $field_value;
} }
function showteaser($id, $tparams = '') function showteaser($id, $tparams = '')
{ {
$item = showrequestelement($id, '', $tparams); $item = showrequestelement($id, '', $tparams);
$item = str_replace('[tag:path]', ABS_PATH, $item); $item = str_replace('[tag:path]', ABS_PATH, $item);
$item = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . ((defined('THEME_FOLDER') === false) ? DEFAULT_THEME_FOLDER : THEME_FOLDER) . '/', $item); $item = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . ((defined('THEME_FOLDER') === false) ? DEFAULT_THEME_FOLDER : THEME_FOLDER) . '/', $item);
return $item; return $item;
} }
// Функция получения уникальных параметров для каждого тизера // Функция получения уникальных параметров для каждого тизера
function f_params_of_teaser($id_param_array,$num) function f_params_of_teaser($id_param_array,$num)
{ {
global $params_of_teaser; global $params_of_teaser;
return $params_of_teaser[$id_param_array][$num]; return $params_of_teaser[$id_param_array][$num];
} }
// Функция получения элемента запроса // Функция получения элемента запроса
function showrequestelement($mixed, $template = '', $tparams = '') function showrequestelement($mixed, $template = '', $tparams = '')
{ {
global $AVE_DB, $req_item_num, $params_of_teaser, $use_cache; global $AVE_DB, $req_item_num, $params_of_teaser, $use_cache;
if (is_array($mixed)) if (is_array($mixed))
@ -327,7 +353,7 @@ function showrequestelement($mixed, $template = '', $tparams = '')
LIMIT 1 LIMIT 1
")->FetchRow()); ")->FetchRow());
if(! $row) if (! $row)
return ''; return '';
$tparams_id = ''; $tparams_id = '';
@ -346,7 +372,11 @@ function showrequestelement($mixed, $template = '', $tparams = '')
$cachefile_docid = BASE_DIR . '/cache/sql/request/' . $row->Id . '/request-' . md5($template) . '.cache'; $cachefile_docid = BASE_DIR . '/cache/sql/request/' . $row->Id . '/request-' . md5($template) . '.cache';
if(! file_exists($cachefile_docid)) // Если включен DEV MODE, то отключаем кеширование запросов
if (defined('DEV_MODE') AND DEV_MODE)
$cachefile_docid = null;
if (! file_exists($cachefile_docid))
{ {
$template = preg_replace("/\[tag:if_notempty:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|[0-9-]+)]/u", '<'.'?php if((htmlspecialchars(request_get_document_field(\'$1\', '.$row->Id.', \'$2\', '.(int)$row->rubric_id.'), ENT_QUOTES)) != \'\') { '.'?'.'>', $template); $template = preg_replace("/\[tag:if_notempty:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|[0-9-]+)]/u", '<'.'?php if((htmlspecialchars(request_get_document_field(\'$1\', '.$row->Id.', \'$2\', '.(int)$row->rubric_id.'), ENT_QUOTES)) != \'\') { '.'?'.'>', $template);
$template = preg_replace("/\[tag:if_empty:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|[0-9-]+)]/u", '<'.'?php if((htmlspecialchars(request_get_document_field(\'$1\', '.$row->Id.', \'$2\', '.(int)$row->rubric_id.'), ENT_QUOTES)) == \'\') { '.'?'.'>', $template); $template = preg_replace("/\[tag:if_empty:rfld:([a-zA-Z0-9-_]+)]\[(more|esc|img|[0-9-]+)]/u", '<'.'?php if((htmlspecialchars(request_get_document_field(\'$1\', '.$row->Id.', \'$2\', '.(int)$row->rubric_id.'), ENT_QUOTES)) == \'\') { '.'?'.'>', $template);
@ -436,9 +466,9 @@ function showrequestelement($mixed, $template = '', $tparams = '')
/* /*
if (count($params_of_teaser[$tparams_id])) if (count($params_of_teaser[$tparams_id]))
{ {
Debug::echo($params_of_teaser); Debug::_echo($params_of_teaser);
Debug::echo($row_Id_mas); Debug::_echo($row_Id_mas);
Debug::echo($item, true); Debug::_echo($item, true);
} }
*/ */
@ -498,9 +528,9 @@ function showrequestelement($mixed, $template = '', $tparams = '')
unset($row); unset($row);
return $item; return $item;
} }
/** /**
* Обработка тега запроса. * Обработка тега запроса.
* Возвращает список документов удовлетворяющих параметрам запроса * Возвращает список документов удовлетворяющих параметрам запроса
* оформленный с использованием шаблона * оформленный с использованием шаблона
@ -508,8 +538,8 @@ function showrequestelement($mixed, $template = '', $tparams = '')
* @param int $id идентификатор запроса * @param int $id идентификатор запроса
* @return string * @return string
*/ */
function request_parse($id, $params = array()) function request_parse($id, $params = array())
{ {
global $AVE_Core, $AVE_DB, $request_documents; global $AVE_Core, $AVE_DB, $request_documents;
// Если id пришёл из тега, берём нужную часть массива // Если id пришёл из тега, берём нужную часть массива
@ -521,18 +551,7 @@ function request_parse($id, $params = array())
$v = array(); $v = array();
// Получаем информацию о запросе // Получаем информацию о запросе
$request = $AVE_DB->Query(" $request = request_get_settings($id);
SELECT
*
FROM
" . PREFIX . "_request
WHERE
" . (is_numeric($id) ? 'Id' : 'request_alias') . " = '" . $id . "'
")->FetchRow();
// Выходим, если нет запроса
if (! is_object($request))
return '';
// Фиксируем время начала генерации запроса // Фиксируем время начала генерации запроса
Debug::startTime('request_' . $id); Debug::startTime('request_' . $id);
@ -555,11 +574,12 @@ function request_parse($id, $params = array())
if (empty($params['SORT']) && ! empty($_REQUEST['requestsort_' . $id]) && ! is_array($_REQUEST['requestsort_' . $id])) if (empty($params['SORT']) && ! empty($_REQUEST['requestsort_' . $id]) && ! is_array($_REQUEST['requestsort_' . $id]))
{ {
// Разрешаем перебор полей для сортировки через ";" // Разрешаем перебор полей для сортировки через ";"
$sort = explode(';', $_REQUEST['requestsort_'.$id]); $sort = explode(';', $_REQUEST['requestsort_' . $id]);
foreach($sort as $v) foreach($sort as $v)
{ {
$v1 = explode('=', $v); $v1 = explode('=', $v);
// Если хотим сортировку DESC то пишем alias = 0 // Если хотим сортировку DESC то пишем alias = 0
$params['SORT'][$v1[0]] = (isset($v1[1]) && $v1[1] == 0 $params['SORT'][$v1[0]] = (isset($v1[1]) && $v1[1] == 0
? 'DESC' ? 'DESC'
@ -568,6 +588,7 @@ function request_parse($id, $params = array())
} }
// Сортировка по полям // Сортировка по полям
// Если пришел параметр SORT
if (! empty($params['SORT']) && is_array($params['SORT'])) if (! empty($params['SORT']) && is_array($params['SORT']))
{ {
foreach($params['SORT'] as $fid => $sort) foreach($params['SORT'] as $fid => $sort)
@ -575,13 +596,18 @@ function request_parse($id, $params = array())
if (is_numeric($fid)) if (is_numeric($fid))
$fid = (int)get_field_num($request->rubric_id, $fid); $fid = (int)get_field_num($request->rubric_id, $fid);
// Если значение больше 0
if ((int)$fid > 0) if ((int)$fid > 0)
{ {
$sort = strtolower($sort); $sort = strtolower($sort);
// Добавляем условие в SQL
$request_join[$fid] = "<? if (preg_match('t[]'))?><?=(! isset(\$t[$fid])) ? \"LEFT JOIN " . PREFIX . "_document_fields AS t$fid ON (t$fid.document_id = a.Id AND t$fid.rubric_field_id='$fid')\" : ''?>"; $request_join[$fid] = "<? if (preg_match('t[]'))?><?=(! isset(\$t[$fid])) ? \"LEFT JOIN " . PREFIX . "_document_fields AS t$fid ON (t$fid.document_id = a.Id AND t$fid.rubric_field_id='$fid')\" : ''?>";
$asc_desc = strpos(strtolower($sort),'asc') !== false ? 'ASC' : 'DESC'; // Если в сортировке указано ASC иначе DESC
$asc_desc = strpos(strtolower($sort),'asc') !== false
? 'ASC'
: 'DESC';
$request_order['field-'.$fid] = "t$fid.field_value " . $asc_desc; $request_order['field-'.$fid] = "t$fid.field_value " . $asc_desc;
@ -589,7 +615,11 @@ function request_parse($id, $params = array())
} }
else else
{ {
$asc_desc = strpos(strtolower($sort),'asc') !== false ? 'ASC' : 'DESC'; // Если в сортировке указано ASC иначе DESC
$asc_desc = strpos(strtolower($sort),'asc') !== false
? 'ASC'
: 'DESC';
$request_order[$param] = "$fid " . $asc_desc; $request_order[$param] = "$fid " . $asc_desc;
} }
} }
@ -641,7 +671,7 @@ function request_parse($id, $params = array())
} }
} }
// Статус: если в параметрах, то его ставим. иначе выводим только активные доки // Статус: если в параметрах, то его ставим. Иначе выводим только активные доки
$request_where[] = "a.document_status = '" . ((isset($params['STATUS'])) $request_where[] = "a.document_status = '" . ((isset($params['STATUS']))
? (int)$params['STATUS'] ? (int)$params['STATUS']
: '1') . "'"; : '1') . "'";
@ -660,19 +690,21 @@ function request_parse($id, $params = array())
// Условия запроса // Условия запроса
// если используется выпадающий список, получаем строку без сохранения // если используется выпадающий список, получаем строку без сохранения
if (! empty($_POST['req_' . $id]) || !empty($_SESSION['doc_' . $AVE_Core->curentdoc->Id]['req_' . $id])) if (! empty($_POST['req_' . $id]) || ! empty($_SESSION['doc_' . $AVE_Core->curentdoc->Id]['req_' . $id]))
$where_cond = request_get_condition_sql_string($request->Id, false); $where_cond = request_get_condition_sql_string($request->Id, false);
// если условия пустые, получаем строку с сохранением её в бд // если условия пустые, получаем строку с сохранением её в бд
elseif (! $request->request_where_cond) elseif (! $request->request_where_cond)
$where_cond = request_get_condition_sql_string($request->Id, true); $where_cond = request_get_condition_sql_string($request->Id, true);
// иначе, берём из запроса // иначе, берём из запроса
else $where_cond = unserialize($request->request_where_cond); else
$where_cond = unserialize($request->request_where_cond);
$where_cond['from'] = (isset($where_cond['from'])) $where_cond['from'] = (isset($where_cond['from']))
? str_replace('%%PREFIX%%', PREFIX, $where_cond['from']) ? str_replace('%%PREFIX%%', PREFIX, $where_cond['from'])
: ''; : '';
if (isset($where_cond['where'])) $request_where[] = $where_cond['where']; if (isset($where_cond['where']))
$request_where[] = $where_cond['where'];
// Родительский документ // Родительский документ
if (isset($params['PARENT']) && (int)$params['PARENT'] > 0) if (isset($params['PARENT']) && (int)$params['PARENT'] > 0)
@ -709,9 +741,9 @@ function request_parse($id, $params = array())
$request_where_str = '(' . implode(') AND (',$request_where) . ')'; $request_where_str = '(' . implode(') AND (',$request_where) . ')';
// Количество выводимых доков // Количество выводимых доков
$params['LIMIT']=(! empty($params['LIMIT']) $params['LIMIT'] = (! empty($params['LIMIT'])
? $params['LIMIT'] ? $params['LIMIT']
: (!empty($_REQUEST['requestlimiter_'.$id]) : (! empty($_REQUEST['requestlimiter_'.$id])
? $_REQUEST['requestlimiter_'.$id] ? $_REQUEST['requestlimiter_'.$id]
: (int)$request->request_items_per_page)); : (int)$request->request_items_per_page));
@ -742,21 +774,7 @@ function request_parse($id, $params = array())
// Составляем запрос к БД // Составляем запрос к БД
$sql = " ?> $sql = " ?>
SELECT STRAIGHT_JOIN SQL_CALC_FOUND_ROWS SELECT STRAIGHT_JOIN SQL_CALC_FOUND_ROWS
a.Id, a.*
a.rubric_id,
a.document_title,
a.document_parent,
a.document_alias,
a.document_published,
a.document_expire,
a.document_changed,
a.document_author_id,
a.document_in_search,
a.document_status,
a.document_count_print,
a.document_count_view,
a.document_linked_navi_id,
a.document_lang
" . $request_select_str . " " . $request_select_str . "
FROM FROM
" . $where_cond['from'] . " " . $where_cond['from'] . "
@ -799,17 +817,17 @@ function request_parse($id, $params = array())
// Если просили просто вернуть запрос, возвращаем результат // Если просили просто вернуть запрос, возвращаем результат
if (isset($params['RETURN_SQL']) && $params['RETURN_SQL'] == 1) if (isset($params['RETURN_SQL']) && $params['RETURN_SQL'] == 1)
return $sql; return $AVE_DB->GetFoundRows();
// Если есть вывод пагинации, то выполняем запрос на получение кол-ва элементов // Если есть вывод пагинации, то выполняем запрос на получение кол-ва элементов
if ($request->request_show_pagination == 1 || (isset($params['SHOW']) && $params['SHOW'] == 1)) if ($request->request_show_pagination == 1 || (isset($params['SHOW']) && $params['SHOW'] == 1))
{
$num_items = $AVE_DB->NumAllRows($sql_request, (int)$request->request_cache_lifetime, 'rub_' . $request->rubric_id); $num_items = $AVE_DB->NumAllRows($sql_request, (int)$request->request_cache_lifetime, 'rub_' . $request->rubric_id);
}
else else
{
$num_items = $AVE_DB->GetFoundRows(); $num_items = $AVE_DB->GetFoundRows();
}
// Если просили просто вернуть кол-во, возвращаем результат
if (isset($params['RETURN_COUNT']) && $params['RETURN_COUNT'] == 1)
return $num_items;
unset($sql_request); unset($sql_request);
@ -924,9 +942,11 @@ function request_parse($id, $params = array())
array_push($rows, $row); array_push($rows, $row);
} }
// Обрабатываем шаблоны элементов //-- Обрабатываем шаблоны элементов
$items = ''; $items = '';
//-- Счетчик
$x = 0; $x = 0;
//-- Общее число элементов
$items_count = count($rows); $items_count = count($rows);
global $req_item_num, $use_cache; global $req_item_num, $use_cache;
@ -955,17 +975,18 @@ function request_parse($id, $params = array())
$items .= $item; $items .= $item;
} }
// Обрабатываем теги запроса //== Обрабатываем теги запроса
// Парсим теги визуальных блоков //-- Парсим теги визуальных блоков
$main_template = preg_replace_callback('/\[tag:block:([A-Za-z0-9-_]{1,20}+)\]/', 'parse_block', $main_template); $main_template = preg_replace_callback('/\[tag:block:([A-Za-z0-9-_]{1,20}+)\]/', 'parse_block', $main_template);
// Парсим теги системных блоков //-- Парсим теги системных блоков
$main_template = preg_replace_callback('/\[tag:sysblock:([A-Za-z0-9-_]{1,20}+)\]/', 'parse_sysblock', $main_template); $main_template = preg_replace_callback('/\[tag:sysblock:([A-Za-z0-9-_]{1,20}+)\]/', 'parse_sysblock', $main_template);
//-- Заменяем тег пагинации на пагинацию //-- Заменяем тег пагинации на пагинацию
$main_template = str_replace('[tag:pages]', $pagination, $main_template); $main_template = str_replace('[tag:pages]', $pagination, $main_template);
//-- Дата
$main_template = preg_replace_callback( $main_template = preg_replace_callback(
'/\[tag:date:([a-zA-Z0-9-. \/]+)\]/', '/\[tag:date:([a-zA-Z0-9-. \/]+)\]/',
create_function('$m','return translate_date(date($m[1], '.$AVE_Core->curentdoc->document_published.')); create_function('$m','return translate_date(date($m[1], '.$AVE_Core->curentdoc->document_published.'));
@ -973,17 +994,27 @@ function request_parse($id, $params = array())
$main_template $main_template
); );
//-- ID Документа
$main_template = str_replace('[tag:docid]', $AVE_Core->curentdoc->Id, $main_template);
//-- ID Автора
$main_template = str_replace('[tag:docauthorid]', $AVE_Core->curentdoc->document_author_id, $main_template);
//-- Имя автора
if (preg_match('[tag:docauthor]', $main_content))
$main_content = str_replace('[tag:docauthor]', get_username_by_id($AVE_Core->curentdoc->document_author_id), $main_content);
//-- Время - 1 день назад
$main_template = str_replace('[tag:humandate]', human_date($AVE_Core->curentdoc->document_published), $main_template); $main_template = str_replace('[tag:humandate]', human_date($AVE_Core->curentdoc->document_published), $main_template);
//-- Дата создания
$main_template = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $AVE_Core->curentdoc->document_published)), $main_template); $main_template = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $AVE_Core->curentdoc->document_published)), $main_template);
//-- Время создания
$main_template = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $AVE_Core->curentdoc->document_published)), $main_template); $main_template = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $AVE_Core->curentdoc->document_published)), $main_template);
//-- Домен
$main_template = str_replace('[tag:domain]', getSiteUrl(), $main_template); $main_template = str_replace('[tag:domain]', getSiteUrl(), $main_template);
if (preg_match('/\[tag:docauthor]/u', $item))
{
$main_template = str_replace('[tag:docauthor]', get_username_by_id($AVE_Core->curentdoc->document_author_id), $main_template);
}
//-- Общее число элементов запроса //-- Общее число элементов запроса
$main_template = str_replace('[tag:doctotal]', $num_items, $main_template); $main_template = str_replace('[tag:doctotal]', $num_items, $main_template);
//-- Показано элементов запроса на странице //-- Показано элементов запроса на странице
@ -991,13 +1022,17 @@ function request_parse($id, $params = array())
//-- Номер страницы пагинации //-- Номер страницы пагинации
$main_template = str_replace('[tag:pages:curent]', get_current_page('apage'), $main_template); $main_template = str_replace('[tag:pages:curent]', get_current_page('apage'), $main_template);
//-- Общее кол-во страниц пагинации //-- Общее кол-во страниц пагинации
$main_template = str_replace('[tag:pages:total]', $num_pages, $main_template); $main_template = str_replace('[tag:pages:total]', $num_pages, $main_template);
//-- Title
$main_template = str_replace('[tag:pagetitle]', stripslashes(htmlspecialchars_decode($AVE_Core->curentdoc->document_title)), $main_template); $main_template = str_replace('[tag:pagetitle]', stripslashes(htmlspecialchars_decode($AVE_Core->curentdoc->document_title)), $main_template);
//-- Alias
$main_template = str_replace('[tag:alias]', (isset($AVE_Core->curentdoc->document_alias) ? $AVE_Core->curentdoc->document_alias : ''), $main_template); $main_template = str_replace('[tag:alias]', (isset($AVE_Core->curentdoc->document_alias) ? $AVE_Core->curentdoc->document_alias : ''), $main_template);
// Возвращаем параметр документа из БД //-- Возвращаем параметр документа из БД
$main_template = preg_replace_callback('/\[tag:doc:([a-zA-Z0-9-_]+)\]/u', $main_template = preg_replace_callback('/\[tag:doc:([a-zA-Z0-9-_]+)\]/u',
function ($match) function ($match)
{ {
@ -1008,7 +1043,7 @@ function request_parse($id, $params = array())
$main_template $main_template
); );
// Если пришел вызов на активацию языковых файлов //-- Если пришел вызов на активацию языковых файлов
$main_template = preg_replace_callback( $main_template = preg_replace_callback(
'/\[tag:langfile:([a-zA-Z0-9-_]+)\]/u', '/\[tag:langfile:([a-zA-Z0-9-_]+)\]/u',
function ($match) function ($match)
@ -1020,29 +1055,32 @@ function request_parse($id, $params = array())
$main_template $main_template
); );
// Вставляем элементы запроса //-- Вставляем элементы запроса
$return = str_replace('[tag:content]', $items, $main_template); $return = str_replace('[tag:content]', $items, $main_template);
// Парсим тег [hide] //-- Парсим тег [hide]
$return = parse_hide($return); $return = parse_hide($return);
//-- Абсолютный путь
$return = str_replace('[tag:path]', ABS_PATH, $return); $return = str_replace('[tag:path]', ABS_PATH, $return);
//-- Путь до папки шаблона
$return = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . ((defined('THEME_FOLDER') === false) ? DEFAULT_THEME_FOLDER : THEME_FOLDER) . '/', $return); $return = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . ((defined('THEME_FOLDER') === false) ? DEFAULT_THEME_FOLDER : THEME_FOLDER) . '/', $return);
// Парсим модули //-- Парсим модули
$return = $AVE_Core->coreModuleTagParse($return); $return = $AVE_Core->coreModuleTagParse($return);
// Фиксируем время генерации запроса //-- Фиксируем время генерации запроса
$GLOBALS['block_generate'][] = array('REQUEST_' . $id => Debug::endTime('request_' . $id)); $GLOBALS['block_generate']['REQUESTS'][$id][] = Debug::endTime('request_' . $id);
// Статистика // Статистика
if ($request->request_show_statistic) if ($request->request_show_statistic)
$return .= "<div class=\"request_statistic\"><br>Найдено: $num_items<br>Показано: $items_count<br>Время генерации: " . Debug::endTime('request_' . $id) . " сек<br>Пиковое значение: ".number_format(memory_get_peak_usage()/1024, 0, ',', ' ') . ' Kb</div>'; $return .= "<div class=\"request_statistic\"><br>Найдено: $num_items<br>Показано: $items_count<br>Время генерации: " . Debug::endTime('request_' . $id) . " сек<br>Пиковое значение: ".number_format(memory_get_peak_usage()/1024, 0, ',', ' ') . ' Kb</div>';
return $return; return $return;
} }
/** /**
* Функция получения содержимого поля для обработки в шаблоне запроса * Функция получения содержимого поля для обработки в шаблоне запроса
* <pre> * <pre>
* Пример использования в шаблоне: * Пример использования в шаблоне:
@ -1061,16 +1099,18 @@ function request_parse($id, $params = array())
* содержимое поля будет очищено от HTML-тегов. * содержимое поля будет очищено от HTML-тегов.
* @return string * @return string
*/ */
function request_get_document_field_value($rubric_id, $document_id, $maxlength = 0) function request_get_document_field_value($rubric_id, $document_id, $maxlength = 0)
{ {
if (!is_numeric($rubric_id) || $rubric_id < 1 || !is_numeric($document_id) || $document_id < 1) return ''; if (! is_numeric($rubric_id) || $rubric_id < 1 || ! is_numeric($document_id) || $document_id < 1) return '';
$document_fields = get_document_fields($document_id); $document_fields = get_document_fields($document_id);
$field_value = isset($document_fields[$rubric_id]) ? $document_fields[$rubric_id]['field_value'] : ''; $field_value = isset($document_fields[$rubric_id])
? $document_fields[$rubric_id]['field_value']
: '';
if (!empty($field_value)) if (! empty($field_value))
{ {
$field_value = strip_tags($field_value, '<br /><strong><em><p><i>'); $field_value = strip_tags($field_value, '<br /><strong><em><p><i>');
$field_value = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . ((defined('THEME_FOLDER') === false) ? DEFAULT_THEME_FOLDER : THEME_FOLDER) . '/', $field_value); $field_value = str_replace('[tag:mediapath]', ABS_PATH . 'templates/' . ((defined('THEME_FOLDER') === false) ? DEFAULT_THEME_FOLDER : THEME_FOLDER) . '/', $field_value);
@ -1090,5 +1130,5 @@ function request_get_document_field_value($rubric_id, $document_id, $maxlength =
} }
return $field_value; return $field_value;
} }
?> ?>

9
functions/func.sysblock.php

@ -33,6 +33,10 @@ function parse_sysblock($id)
$cache_file = BASE_DIR . '/cache/sql/sysblock/' . $id . '.cache'; $cache_file = BASE_DIR . '/cache/sql/sysblock/' . $id . '.cache';
// Если включен DEV MODE, то отключаем кеширование запросов
if (defined('DEV_MODE') AND DEV_MODE)
$cache_file = null;
if (! file_exists(dirname($cache_file))) if (! file_exists(dirname($cache_file)))
mkdir(dirname($cache_file), 0766, true); mkdir(dirname($cache_file), 0766, true);
@ -52,7 +56,8 @@ function parse_sysblock($id)
LIMIT 1 LIMIT 1
")->GetCell(); ")->GetCell();
file_put_contents($cache_file,$return); if ($cache_file)
file_put_contents($cache_file, $return);
} }
//-- парсим теги //-- парсим теги
@ -88,7 +93,7 @@ function parse_sysblock($id)
$gen_time = Debug::endTime('SYSBLOCK_' . $id); $gen_time = Debug::endTime('SYSBLOCK_' . $id);
$GLOBALS['block_generate'][] = array('SYSBLOCK_'. $id => $gen_time); $GLOBALS['block_generate']['SYSBLOCK'][$id] = $gen_time;
return $return; return $return;
} }

21
inc/config.php

@ -11,9 +11,9 @@
* @license GPL v.2 * @license GPL v.2
*/ */
@define('APP_NAME', 'AVE.CMS'); @define('APP_NAME', 'AVE.cms');
@define('APP_VERSION', '3.22'); @define('APP_VERSION', '3.24');
@define('APP_INFO', '<a target="_blank" href="http://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'));
$GLOBALS['CMS_CONFIG']['USER_IP'] = array('DESCR' =>'Использовать IP для автологина на сайте','default'=>false,'TYPE'=>'bool','VARIANT'=>''); $GLOBALS['CMS_CONFIG']['USER_IP'] = array('DESCR' =>'Использовать IP для автологина на сайте','default'=>false,'TYPE'=>'bool','VARIANT'=>'');
$GLOBALS['CMS_CONFIG']['REWRITE_MODE'] = array('DESCR' =>'Использовать ЧПУ Адреса вида index.php будут преобразованы в /home/','default'=>true,'TYPE'=>'bool','VARIANT'=>''); $GLOBALS['CMS_CONFIG']['REWRITE_MODE'] = array('DESCR' =>'Использовать ЧПУ Адреса вида index.php будут преобразованы в /home/','default'=>true,'TYPE'=>'bool','VARIANT'=>'');
@ -24,10 +24,8 @@
$themes = array(); $themes = array();
foreach (glob(dirname(dirname(__FILE__)) . '/templates/*') as $filename) foreach (glob(dirname(dirname(__FILE__)) . '/templates/*') as $filename)
{
if (is_dir($filename)) if (is_dir($filename))
$themes[]=basename($filename); $themes[] = basename($filename);
}
$GLOBALS['CMS_CONFIG']['DEFAULT_THEME_FOLDER'] = array('DESCR' =>'Тема публичной части','default'=>$themes[0],'TYPE'=>'dropdown','VARIANT'=>$themes); $GLOBALS['CMS_CONFIG']['DEFAULT_THEME_FOLDER'] = array('DESCR' =>'Тема публичной части','default'=>$themes[0],'TYPE'=>'dropdown','VARIANT'=>$themes);
@ -35,7 +33,7 @@
$GLOBALS['CMS_CONFIG']['CODEMIRROR_THEME'] = array( $GLOBALS['CMS_CONFIG']['CODEMIRROR_THEME'] = array(
'DESCR' => 'Цветовая схема Codemirror', 'DESCR' => 'Цветовая схема Codemirror',
'default' => 'default', 'default' => 'dracula',
'TYPE' => 'dropdown', 'TYPE' => 'dropdown',
'VARIANT' => array( 'VARIANT' => array(
'default', 'default',
@ -90,6 +88,7 @@
); );
$GLOBALS['CMS_CONFIG']['ADMIN_MENU'] = array('DESCR' => 'Использовать плавующее боковое меню','default'=>true,'TYPE'=>'bool','VARIANT'=>''); $GLOBALS['CMS_CONFIG']['ADMIN_MENU'] = array('DESCR' => 'Использовать плавующее боковое меню','default'=>true,'TYPE'=>'bool','VARIANT'=>'');
$GLOBALS['CMS_CONFIG']['ADMIN_MENU_QUICK_ADD'] = array('DESCR' => 'Показывать меню в шапке с действиями','default'=>false,'TYPE'=>'bool','VARIANT'=>'');
$GLOBALS['CMS_CONFIG']['ADMIN_CAPTCHA'] = array('DESCR' => 'Использовать капчу при входе в админку','default'=>false,'TYPE'=>'bool','VARIANT'=>''); $GLOBALS['CMS_CONFIG']['ADMIN_CAPTCHA'] = array('DESCR' => 'Использовать капчу при входе в админку','default'=>false,'TYPE'=>'bool','VARIANT'=>'');
$GLOBALS['CMS_CONFIG']['ADMIN_EDITMENU'] = array('DESCR' => 'Использовать всплывающие "Действия" в системе','default'=>true,'TYPE'=>'bool','VARIANT'=>''); $GLOBALS['CMS_CONFIG']['ADMIN_EDITMENU'] = array('DESCR' => 'Использовать всплывающие "Действия" в системе','default'=>true,'TYPE'=>'bool','VARIANT'=>'');
@ -145,12 +144,16 @@
$GLOBALS['CMS_CONFIG']['OUTPUT_EXPIRE_OFFSET'] = array('DESCR' => 'Время жизни кеширования страницы (60*60 - 1 час)','default'=>60*60, 'TYPE'=>'integer', 'VARIANT'=>''); $GLOBALS['CMS_CONFIG']['OUTPUT_EXPIRE_OFFSET'] = array('DESCR' => 'Время жизни кеширования страницы (60*60 - 1 час)','default'=>60*60, 'TYPE'=>'integer', 'VARIANT'=>'');
$GLOBALS['CMS_CONFIG']['CHECK_VERSION'] = array('DESCR' => 'Проверка наличия новых версий','default'=>true,'TYPE'=>'bool','VARIANT'=>''); $GLOBALS['CMS_CONFIG']['CHECK_VERSION'] = array('DESCR' => 'Проверка наличия новых версий','default'=>true,'TYPE'=>'bool','VARIANT'=>'');
// 3.23
$GLOBALS['CMS_CONFIG']['REQUEST_ETC'] = array('DESCR' => 'Окончание в полях запроса', 'default'=>'...', 'TYPE'=>'string', 'VARIANT'=>'');
$GLOBALS['CMS_CONFIG']['REQUEST_BREAK_WORDS'] = array('DESCR' => 'Разбивать слова при выводе полей в запросе', 'default'=>false, 'TYPE'=>'bool', 'VARIANT'=>'');
$GLOBALS['CMS_CONFIG']['REQUEST_STRIP_TAGS'] = array('DESCR' => 'При - у поля, оставляем теги в результате', 'default'=>'', 'TYPE'=>'string', 'VARIANT'=>'');
$GLOBALS['CMS_CONFIG']['DEV_MODE'] = array('DESCR' => 'Режим разработчика (Отключено кеширование SQL)', 'default'=>false, 'TYPE'=>'bool', 'VARIANT'=>'');
include_once(dirname(dirname(__FILE__)) . '/inc/config.inc.php'); include_once(dirname(dirname(__FILE__)) . '/inc/config.inc.php');
foreach($GLOBALS['CMS_CONFIG'] as $k => $v) foreach($GLOBALS['CMS_CONFIG'] as $k => $v)
{
if(! defined($k)) if(! defined($k))
define($k, $v['default']); define($k, $v['default']);
}
?> ?>

18
inc/init.php

@ -359,7 +359,7 @@
lang_status = '1' lang_status = '1'
ORDER BY ORDER BY
lang_default ASC lang_default ASC
", SYSTEM_CACHE_LIFETIME); ", SYSTEM_CACHE_LIFETIME, 'langs');
while ($row = $sql->FetchRow()) while ($row = $sql->FetchRow())
{ {
@ -394,6 +394,14 @@
// Язык системы // Язык системы
set_locale(); set_locale();
// Debug
require (BASE_DIR . '/class/class.debug.php');
$Debug = new Debug;
// Hooks
require (BASE_DIR . '/class/class.hooks.php');
$Hooks = new Hooks;
// Класс Шаблонов SMARTY // Класс Шаблонов SMARTY
require (BASE_DIR . '/class/class.template.php'); require (BASE_DIR . '/class/class.template.php');
@ -403,12 +411,4 @@
// Класс Модулей // Класс Модулей
require (BASE_DIR . '/class/class.modules.php'); require (BASE_DIR . '/class/class.modules.php');
$AVE_Module = new AVE_Module; $AVE_Module = new AVE_Module;
// Debug
require (BASE_DIR . '/class/class.debug.php');
$Debug = new Debug;
// Hooks
require (BASE_DIR . '/class/class.hooks.php');
$Hooks = new Hooks;
?> ?>

2
install/data_base.sql

@ -262,7 +262,7 @@ INSERT INTO `%%PRFX%%_rubric_permissions` VALUES
(5, 1, 5, 'docread');#inst# (5, 1, 5, 'docread');#inst#
INSERT INTO `%%PRFX%%_rubrics` VALUES INSERT INTO `%%PRFX%%_rubrics` VALUES
(1, 'Основные страницы', '', '0', '<h1>[tag:fld:header]</h1>[tag:fld:text]', 1, 1, 0, 1, '', '', '', '', '', '', '0', '', '0', '');#inst# (1, 'Основные страницы', '', '0', '<h1>[tag:fld:header]</h1>[tag:fld:text]', 1, 1, 0, 1, '', '', '', '', '', '', '', '0', '', '0', '');#inst#
INSERT INTO `%%PRFX%%_settings` VALUES INSERT INTO `%%PRFX%%_settings` VALUES
( (

59
install/structure_base.sql

@ -7,7 +7,8 @@ CREATE TABLE `%%PRFX%%_blocks` (
`block_active` enum('0','1') NOT NULL DEFAULT '1', `block_active` enum('0','1') NOT NULL DEFAULT '1',
`block_author_id` int(10) unsigned NOT NULL DEFAULT '1', `block_author_id` int(10) unsigned NOT NULL DEFAULT '1',
`block_created` int(10) unsigned NOT NULL DEFAULT '0', `block_created` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`) PRIMARY KEY (`id`),
KEY `block_alias` (`block_alias`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
CREATE TABLE `%%PRFX%%_countries` ( CREATE TABLE `%%PRFX%%_countries` (
@ -20,22 +21,22 @@ CREATE TABLE `%%PRFX%%_countries` (
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
CREATE TABLE `%%PRFX%%_document_fields` ( CREATE TABLE `%%PRFX%%_document_fields` (
`Id` int(10) unsigned NOT NULL auto_increment, `Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`rubric_field_id` mediumint(5) unsigned NOT NULL default '0', `rubric_field_id` mediumint(5) unsigned NOT NULL DEFAULT '0',
`document_id` int(10) unsigned NOT NULL default '0', `document_id` int(10) unsigned NOT NULL DEFAULT '0',
`field_number_value` decimal(18,4) NOT NULL default '0.0000', `field_number_value` decimal(18,4) NOT NULL DEFAULT '0.0000',
`field_value` varchar(500) NOT NULL, `field_value` varchar(500) NOT NULL,
`document_in_search` enum('1','0') NOT NULL default '1', `document_in_search` enum('1','0') NOT NULL DEFAULT '1',
PRIMARY KEY (`Id`), PRIMARY KEY (`Id`),
KEY `document_id` (`document_id`), KEY `document_id` (`document_id`),
KEY `rubric_field_id` (`rubric_field_id`,`document_in_search`), KEY `field_value` (`field_value`),
KEY `field_value` (`field_value`(333)) KEY `rubric_field_id` (`rubric_field_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
CREATE TABLE `%%PRFX%%_document_fields_text` ( CREATE TABLE `%%PRFX%%_document_fields_text` (
`Id` int(10) unsigned NOT NULL auto_increment, `Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`rubric_field_id` mediumint(5) unsigned NOT NULL DEFAULT '0', `rubric_field_id` mediumint(5) unsigned NOT NULL DEFAULT '0',
`document_id` int(10) unsigned NOT NULL default '0', `document_id` int(10) unsigned NOT NULL DEFAULT '0',
`field_value` longtext NOT NULL, `field_value` longtext NOT NULL,
PRIMARY KEY (`Id`), PRIMARY KEY (`Id`),
KEY `document_id` (`document_id`), KEY `document_id` (`document_id`),
@ -61,7 +62,8 @@ CREATE TABLE `%%PRFX%%_document_remarks` (
`remark_published` int(10) unsigned NOT NULL default '0', `remark_published` int(10) unsigned NOT NULL default '0',
`remark_status` enum('1','0') NOT NULL default '1', `remark_status` enum('1','0') NOT NULL default '1',
`remark_author_email` varchar(255) NOT NULL, `remark_author_email` varchar(255) NOT NULL,
PRIMARY KEY (`Id`) PRIMARY KEY (`Id`),
KEY `document_id` (`document_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
CREATE TABLE `%%PRFX%%_document_rev` ( CREATE TABLE `%%PRFX%%_document_rev` (
@ -70,7 +72,8 @@ CREATE TABLE `%%PRFX%%_document_rev` (
`doc_revision` int(10) unsigned NOT NULL DEFAULT '0', `doc_revision` int(10) unsigned NOT NULL DEFAULT '0',
`doc_data` longtext NOT NULL, `doc_data` longtext NOT NULL,
`user_id` int(11) NOT NULL DEFAULT '0', `user_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`Id`) PRIMARY KEY (`Id`),
KEY `doc_id` (`doc_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
CREATE TABLE `%%PRFX%%_documents` ( CREATE TABLE `%%PRFX%%_documents` (
@ -101,7 +104,7 @@ CREATE TABLE `%%PRFX%%_documents` (
`document_tags` text NOT NULL, `document_tags` text NOT NULL,
`document_lang` varchar(5) NOT NULL, `document_lang` varchar(5) NOT NULL,
`document_lang_group` int(10) NOT NULL DEFAULT '0', `document_lang_group` int(10) NOT NULL DEFAULT '0',
`document_property` text NOT NULL, `document_property` text,
PRIMARY KEY (`Id`), PRIMARY KEY (`Id`),
UNIQUE KEY `document_alias` (`document_alias`), UNIQUE KEY `document_alias` (`document_alias`),
KEY `rubric_id` (`rubric_id`), KEY `rubric_id` (`rubric_id`),
@ -117,7 +120,8 @@ CREATE TABLE `%%PRFX%%_document_alias_history` (
`document_alias_author` mediumint(5) unsigned NOT NULL DEFAULT '1', `document_alias_author` mediumint(5) unsigned NOT NULL DEFAULT '1',
`document_alias_changed` int(10) unsigned NOT NULL DEFAULT '0', `document_alias_changed` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`Id`), PRIMARY KEY (`Id`),
UNIQUE KEY `document_alias` (`document_alias`) UNIQUE KEY `document_alias` (`document_alias`),
KEY `document_id` (`document_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
CREATE TABLE `%%PRFX%%_document_tags` ( CREATE TABLE `%%PRFX%%_document_tags` (
@ -179,7 +183,8 @@ CREATE TABLE `%%PRFX%%_navigation` (
`end` text NOT NULL, `end` text NOT NULL,
`user_group` text NOT NULL, `user_group` text NOT NULL,
`expand_ext` enum('0','1','2') DEFAULT '1', `expand_ext` enum('0','1','2') DEFAULT '1',
PRIMARY KEY (`navigation_id`) PRIMARY KEY (`navigation_id`),
KEY `alias` (`alias`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
CREATE TABLE `%%PRFX%%_navigation_items` ( CREATE TABLE `%%PRFX%%_navigation_items` (
@ -249,6 +254,7 @@ CREATE TABLE `%%PRFX%%_request` (
`request_ajax` enum('0','1') NOT NULL DEFAULT '0', `request_ajax` enum('0','1') NOT NULL DEFAULT '0',
`request_show_sql` enum('0','1') NOT NULL DEFAULT '0', `request_show_sql` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`Id`), PRIMARY KEY (`Id`),
KEY `rubric_id` (`rubric_id`),
KEY `request_alias` (`request_alias`) KEY `request_alias` (`request_alias`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
@ -261,7 +267,8 @@ CREATE TABLE `%%PRFX%%_request_conditions` (
`condition_join` enum('OR','AND') NOT NULL DEFAULT 'AND', `condition_join` enum('OR','AND') NOT NULL DEFAULT 'AND',
`condition_position` smallint(3) unsigned NOT NULL DEFAULT '1', `condition_position` smallint(3) unsigned NOT NULL DEFAULT '1',
`condition_status` enum('0','1') NOT NULL DEFAULT '1', `condition_status` enum('0','1') NOT NULL DEFAULT '1',
PRIMARY KEY (`Id`) PRIMARY KEY (`Id`),
KEY `request_id` (`request_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
CREATE TABLE `%%PRFX%%_rubric_fields` ( CREATE TABLE `%%PRFX%%_rubric_fields` (
@ -271,16 +278,17 @@ CREATE TABLE `%%PRFX%%_rubric_fields` (
`rubric_field_alias` varchar(20) NOT NULL, `rubric_field_alias` varchar(20) NOT NULL,
`rubric_field_title` varchar(255) NOT NULL, `rubric_field_title` varchar(255) NOT NULL,
`rubric_field_type` varchar(75) NOT NULL, `rubric_field_type` varchar(75) NOT NULL,
`rubric_field_numeric` enum('0','1') default '0' NOT NULL, `rubric_field_numeric` enum('0','1') NOT NULL DEFAULT '0',
`rubric_field_position` smallint(3) unsigned NOT NULL DEFAULT '1', `rubric_field_position` smallint(3) unsigned NOT NULL DEFAULT '1',
`rubric_field_default` text NOT NULL, `rubric_field_default` text NOT NULL,
`rubric_field_search` enum('0','1') default '1' NOT NULL, `rubric_field_search` enum('0','1') NOT NULL DEFAULT '1',
`rubric_field_template` text NOT NULL, `rubric_field_template` text NOT NULL,
`rubric_field_template_request` text NOT NULL, `rubric_field_template_request` text NOT NULL,
`rubric_field_description` text NOT NULL, `rubric_field_description` text NOT NULL,
PRIMARY KEY (`Id`), PRIMARY KEY (`Id`),
KEY `rubric_id` (`rubric_id`), KEY `rubric_id` (`rubric_id`),
KEY `rubric_field_type` (`rubric_field_type`) KEY `rubric_field_type` (`rubric_field_type`),
KEY `rubric_field_alias` (`rubric_field_alias`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
CREATE TABLE `%%PRFX%%_rubric_fields_group` ( CREATE TABLE `%%PRFX%%_rubric_fields_group` (
@ -332,6 +340,7 @@ CREATE TABLE `%%PRFX%%_rubrics` (
`rubric_teaser_template` text NOT NULL, `rubric_teaser_template` text NOT NULL,
`rubric_admin_teaser_template` text NOT NULL, `rubric_admin_teaser_template` text NOT NULL,
`rubric_header_template` text NOT NULL, `rubric_header_template` text NOT NULL,
`rubric_footer_template` text NOT NULL,
`rubric_linked_rubric` varchar(255) NOT NULL DEFAULT '0', `rubric_linked_rubric` varchar(255) NOT NULL DEFAULT '0',
`rubric_description` text NOT NULL, `rubric_description` text NOT NULL,
`rubric_meta_gen` enum('0','1') default '0' NOT NULL, `rubric_meta_gen` enum('0','1') default '0' NOT NULL,
@ -420,6 +429,15 @@ CREATE TABLE `%%PRFX%%_settings_lang` (
UNIQUE KEY `lang_key` (`lang_key`) UNIQUE KEY `lang_key` (`lang_key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
CREATE TABLE `%%PRFX%%_settings_menu` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`link` varchar(255) DEFAULT NULL,
`position` int(3) DEFAULT NULL,
`status` enum('0','1') DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
CREATE TABLE `%%PRFX%%_sysblocks` ( CREATE TABLE `%%PRFX%%_sysblocks` (
`id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT, `id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
`sysblock_name` varchar(255) NOT NULL, `sysblock_name` varchar(255) NOT NULL,
@ -499,7 +517,8 @@ CREATE TABLE `%%PRFX%%_users_session` (
`ip` int(32) unsigned NOT NULL, `ip` int(32) unsigned NOT NULL,
`agent` varchar(255) NOT NULL, `agent` varchar(255) NOT NULL,
`last_activ` int(11) NOT NULL DEFAULT '0', `last_activ` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`) PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst# ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
CREATE TABLE `%%PRFX%%_view_count` ( CREATE TABLE `%%PRFX%%_view_count` (

Loading…
Cancel
Save