Browse Source

v 3.24

master
M@d D3n 6 years ago
parent
commit
4e4a58d40a
  1. 144
      admin/admin.php
  2. 582
      admin/docs.php
  3. 985
      admin/functions/func.admin.common.php
  4. 19
      admin/index.php
  5. 85
      admin/init.php
  6. 6
      admin/lang/bg/settings.txt
  7. 5
      admin/lang/ru/docs.txt
  8. 8
      admin/lang/ru/groups.txt
  9. 56
      admin/lang/ru/rubs.txt
  10. 8
      admin/lang/ru/settings.txt
  11. 1
      admin/lang/ru/templates.txt
  12. 163
      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. 8
      admin/templates/js/main.js
  22. 530
      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. 16
      admin/templates/rubs/fields.tpl
  29. 55
      admin/templates/rubs/fields_groups.tpl
  30. 198
      admin/templates/rubs/fields_list.tpl
  31. 170
      admin/templates/rubs/form.tpl
  32. 15
      admin/templates/rubs/list.tpl
  33. 240
      admin/templates/rubs/rules.tpl
  34. 34
      admin/templates/rubs/tmpls.tpl
  35. 78
      admin/templates/settings/edit_file.tpl
  36. 13
      admin/templates/settings/pagination_edit.tpl
  37. 16
      admin/templates/settings/settings_case.tpl
  38. 70
      admin/templates/settings/settings_countries.tpl
  39. 16
      admin/templates/settings/settings_lang.tpl
  40. 13
      admin/templates/settings/settings_main.tpl
  41. 16
      admin/templates/settings/settings_pagination.tpl
  42. 8
      admin/templates/templates/form.tpl
  43. 2675
      class/class.core.php
  44. 95
      class/class.database.php
  45. 295
      class/class.docs.php
  46. 767
      class/class.modules.php
  47. 50
      class/class.navigation.php
  48. 14
      class/class.request.php
  49. 3697
      class/class.rubs.php
  50. 142
      class/class.settings.php
  51. 3
      class/class.thumbnail.php
  52. 47
      class/class.user.php
  53. 26
      fields/checkbox/field.php
  54. 2
      fields/image_mega/tpl/field-doc.tpl
  55. 0
      fields/image_multi_new_3inputs/.gitkeep
  56. 0
      fields/image_multi_new_3inputs/css/.gitkeep
  57. 96
      fields/image_multi_new_3inputs/css/field.css
  58. 307
      fields/image_multi_new_3inputs/field.php
  59. 0
      fields/image_multi_new_3inputs/js/.gitkeep
  60. 235
      fields/image_multi_new_3inputs/js/field.js
  61. 231
      fields/image_multi_new_3inputs/js/outside.js
  62. 0
      fields/image_multi_new_3inputs/lang/.gitkeep
  63. 27
      fields/image_multi_new_3inputs/lang/bg.txt
  64. 29
      fields/image_multi_new_3inputs/lang/cz.txt
  65. 26
      fields/image_multi_new_3inputs/lang/en.txt
  66. 27
      fields/image_multi_new_3inputs/lang/pl.txt
  67. 27
      fields/image_multi_new_3inputs/lang/ru.txt
  68. 27
      fields/image_multi_new_3inputs/lang/ua.txt
  69. 0
      fields/image_multi_new_3inputs/tpl/.gitkeep
  70. 3
      fields/image_multi_new_3inputs/tpl/field-doc.tpl
  71. 3
      fields/image_multi_new_3inputs/tpl/field-req.tpl
  72. 65
      fields/image_multi_new_3inputs/tpl/field.tpl
  73. 288
      fields/teasers/field.php
  74. 49
      fields/teasers/js/field.js
  75. 4
      fields/teasers/tpl/field.tpl
  76. 8
      fields/youtube/lang/bg.txt
  77. 7
      fields/youtube/lang/cz.txt
  78. 7
      fields/youtube/lang/en.txt
  79. 7
      fields/youtube/lang/pl.txt
  80. 7
      fields/youtube/lang/ru.txt
  81. 7
      fields/youtube/lang/ua.txt
  82. 16
      fields/youtube/tpl/field.tpl
  83. 11
      functions/func.block.php
  84. 21
      functions/func.breadcrumbs.php
  85. 41
      functions/func.common.php
  86. 105
      functions/func.fields.php
  87. 18
      functions/func.helpers.php
  88. 153
      functions/func.navigation.php
  89. 1870
      functions/func.parserequest.php
  90. 9
      functions/func.sysblock.php
  91. 23
      inc/config.php
  92. 20
      inc/init.php
  93. 2
      install/data_base.sql
  94. 79
      install/structure_base.sql

144
admin/admin.php

@ -1,97 +1,99 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
define('ACP', 1);
define('ACPL', 1);
define('BASE_DIR', str_replace("\\", "/", dirname(dirname(__FILE__))));
define('ACP', 1);
define('ACPL', 1);
define('BASE_DIR', str_replace("\\", "/", dirname(dirname(__FILE__))));
if (! @filesize(BASE_DIR . '/inc/db.config.php')) {
header('Location:/install/index.php');
exit;
}
if (! @filesize(BASE_DIR . '/inc/db.config.php'))
{
header('Location:/install/index.php');
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')
{
// Завершение работы в админке
reportLog($AVE_Template->get_config_vars('EXIT_ADMIN'));
user_logout();
header('Location:admin.php');
}
if (isset($_REQUEST['do']) && $_REQUEST['do'] == 'logout')
{
// Завершение работы в админке
reportLog($AVE_Template->get_config_vars('EXIT_ADMIN'));
user_logout();
header('Location:admin.php');
}
if(auth_cookie())
{
header('Location:index.php');
exit;
}
if (auth_cookie())
{
header('Location:index.php');
exit;
}
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'login')
{
// Авторизация
if (!empty($_POST['user_login']) && !empty($_POST['user_pass']))
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'login')
{
if (ADMIN_CAPTCHA)
// Авторизация
if (! empty($_POST['user_login']) && !empty($_POST['user_pass']))
{
if (isset($_SESSION['captcha_keystring']) && isset($_POST['securecode']) && $_SESSION['captcha_keystring'] == $_POST['securecode']) $captcha_ok = 1;
else
if (ADMIN_CAPTCHA)
{
unset($_SESSION['user_id'], $_SESSION['user_pass']);
unset($_SESSION['captcha_keystring']);
$error = $AVE_Template->get_config_vars('WRONG_CAPTCHA');
$AVE_Template->assign('error', $error);
if (isset($_SESSION['captcha_keystring']) && isset($_POST['securecode']) && $_SESSION['captcha_keystring'] == $_POST['securecode'])
$captcha_ok = 1;
else
{
unset($_SESSION['user_id'], $_SESSION['user_pass']);
unset($_SESSION['captcha_keystring']);
$error = $AVE_Template->get_config_vars('WRONG_CAPTCHA');
$AVE_Template->assign('error', $error);
}
}
}
else
$captcha_ok = 1;
else
$captcha_ok = 1;
if ($captcha_ok)
{
if (true === user_login($_POST['user_login'], $_POST['user_pass'], 1,(int)(isset($_POST['SaveLogin']) && $_POST['SaveLogin'] == '1')))
if ($captcha_ok)
{
//_echo($_SESSION);
if (!empty($_SESSION['redirectlink']))
if (true === user_login($_POST['user_login'], $_POST['user_pass'], 1,(int)(isset($_POST['SaveLogin']) && $_POST['SaveLogin'] == '1')))
{
header('Location:' . $_SESSION['redirectlink']);
unset($_SESSION['redirectlink']);
//_echo($_SESSION);
if (!empty($_SESSION['redirectlink']))
{
header('Location:' . $_SESSION['redirectlink']);
unset($_SESSION['redirectlink']);
exit;
}
reportLog($AVE_Template->get_config_vars('LOGIN_ADMIN'));
//Перенапрявляем пользователя
header('Location:'.get_referer_admin_link().'');
exit;
}
reportLog($AVE_Template->get_config_vars('LOGIN_ADMIN'));
//Перенапрявляем пользователя
header('Location:'.get_referer_admin_link().'');
exit;
}
else
{
reportLog($AVE_Template->get_config_vars('ERROR_ADMIN') . ' - '
. stripslashes($_POST['user_login']) . ' / '
. stripslashes($_POST['user_pass']));
}
else
{
reportLog($AVE_Template->get_config_vars('ERROR_ADMIN') . ' - '
. stripslashes($_POST['user_login']) . ' / '
. stripslashes($_POST['user_pass']));
unset($_SESSION['user_id'], $_SESSION['user_pass']);
unset($_SESSION['captcha_keystring']);
$error = $AVE_Template->get_config_vars('WRONG_PASS');
$AVE_Template->assign('error', $error);
}
unset($_SESSION['user_id'], $_SESSION['user_pass']);
unset($_SESSION['captcha_keystring']);
$error = $AVE_Template->get_config_vars('WRONG_PASS');
$AVE_Template->assign('error', $error);
}
}
}
}
$AVE_Template->assign('captcha', ADMIN_CAPTCHA);
$AVE_Template->display('login.tpl');
$AVE_Template->assign('captcha', ADMIN_CAPTCHA);
$AVE_Template->display('login.tpl');
?>

582
admin/docs.php

@ -1,298 +1,312 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (!defined('ACP'))
{
header('Location:index.php');
exit;
}
global $AVE_DB, $AVE_Template;
require(BASE_DIR . '/class/class.docs.php');
require(BASE_DIR . '/class/class.rubs.php');
require(BASE_DIR . '/class/class.navigation.php');
require(BASE_DIR . '/class/class.request.php');
$AVE_Document = new AVE_Document;
$AVE_Rubric = new AVE_Rubric;
$AVE_Navigation = new AVE_Navigation;
$AVE_Request = new AVE_Request;
$AVE_Document->documentTemplateTimeAssign();
$AVE_Rubric->rubricPermissionFetch();
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/docs.txt', 'docs');
$AVE_Template->assign("navi", $AVE_Template->fetch("navi/navi.tpl"));
switch($_REQUEST['action'])
{
case '' :
if (check_permission_acp('document_view'))
{
switch($_REQUEST['sub'])
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (! defined('ACP'))
{
header('Location:index.php');
exit;
}
global $AVE_DB, $AVE_Template;
require(BASE_DIR . '/class/class.docs.php');
require(BASE_DIR . '/class/class.rubs.php');
require(BASE_DIR . '/class/class.navigation.php');
require(BASE_DIR . '/class/class.request.php');
$AVE_Document = new AVE_Document;
$AVE_Rubric = new AVE_Rubric;
$AVE_Navigation = new AVE_Navigation;
$AVE_Request = new AVE_Request;
$AVE_Document->documentTemplateTimeAssign();
$AVE_Rubric->rubricPermissionFetch();
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/docs.txt', 'docs');
$AVE_Template->assign("navi", $AVE_Template->fetch("navi/navi.tpl"));
switch($_REQUEST['action'])
{
case '' :
if (check_permission_acp('document_view'))
{
case 'quicksave':
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Document->quickSave();
break;
switch($_REQUEST['sub'])
{
case 'quicksave':
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Document->quickSave();
break;
}
$AVE_Document->documentListGet();
}
$AVE_Document->documentListGet();
}
$AVE_Template->assign('content', $AVE_Template->fetch('documents/docs.tpl'));
break;
case 'add_new':
if (check_permission_acp('document_view'))
{
$AVE_Request->requestListFetch();
$AVE_Template->assign('content', $AVE_Template->fetch('documents/docs_add_new.tpl'));
}
break;
case 'showsimple':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentListGet();
$AVE_Template->assign('content', $AVE_Template->fetch('documents/docs_simple.tpl'));
}
break;
case 'edit':
if (check_permission_acp('document_view'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch();
$AVE_Document->documentEdit((int)$_REQUEST['Id']);
}
break;
case 'copy':
if (check_permission_acp('document_view'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch();
$AVE_Document->documentCopy((int)$_REQUEST['Id']);
}
break;
case 'new':
if (check_permission_acp('document_view'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch();
$AVE_Document->documentNew((int)$_REQUEST['rubric_id']);
}
break;
case 'innavi':
if (check_permission_acp('document_view') && check_permission_acp('navigation_new'))
{
$AVE_Document->documentInNavi();
}
break;
case 'after':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationAllItemList();
$AVE_Document->documentFormAfter();
}
break;
case 'open':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOn((int)$_REQUEST['Id']);
$AVE_Document->documentStatusSet((int)$_REQUEST['Id'], 1);
}
break;
case 'close':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOff((int)$_REQUEST['Id']);
$AVE_Document->documentStatusSet((int)$_REQUEST['Id'], 0);
}
break;
case 'delete':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOff((int)$_REQUEST['Id']);
$AVE_Document->documentMarkDelete((int)$_REQUEST['Id']);
}
break;
case 'redelete':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOn((int)$_REQUEST['Id']);
$AVE_Document->documentUnmarkDelete((int)$_REQUEST['Id']);
}
break;
case 'enddelete':
if (check_permission_acp('alles'))
{
$AVE_Navigation->navigationItemDeleteFromDoc((int)$_REQUEST['Id']);
$AVE_Document->documentDelete((int)$_REQUEST['Id']);
// Выполняем обновление страницы
header('Location:index.php?do=docs&cp=' . SESSION);
}
break;
case 'revision_recover':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentRevissionRestore((int)$_REQUEST['doc_id'], (int)$_REQUEST['revission'], (int)$_REQUEST['rubric_id']);
}
break;
case 'revision_delete':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentRevissionDelete((int)$_REQUEST['doc_id'], (int)$_REQUEST['revission'], (int)$_REQUEST['rubric_id']);
}
break;
case 'remark':
if (check_permission_acp('remark_view'))
{
$AVE_Document->documentRemarkNew((int)$_REQUEST['Id'], 0);
}
break;
case 'remark_reply':
if (check_permission_acp('remark_view'))
{
$AVE_Document->documentRemarkNew((int)$_REQUEST['Id'], 1);
}
break;
case 'remark_status':
if (check_permission_acp('remark_edit'))
{
$AVE_Document->documentRemarkStatus((int)$_REQUEST['Id'], (int)$_REQUEST['remark_status']);
}
break;
case 'remark_del':
if (check_permission_acp('remark_edit'))
{
$AVE_Document->documentRemarkDelete((int)$_REQUEST['Id'], (int)$_REQUEST['remark_first']);
}
break;
case 'change':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentRubricChange();
}
break;
case 'change_user':
if (check_permission_acp('document_view'))
{
switch($_REQUEST['sub'])
$AVE_Template->assign('content', $AVE_Template->fetch('documents/docs.tpl'));
break;
case 'add_new':
if (check_permission_acp('document_view'))
{
case 'save':
$AVE_Document->changeAutorSave();
break;
$AVE_Request->requestListFetch();
$AVE_Template->assign('content', $AVE_Template->fetch('documents/docs_add_new.tpl'));
}
$AVE_Template->assign('content', $AVE_Template->fetch('documents/user.tpl'));
}
break;
case 'find_user':
if (check_permission_acp('document_view'))
{
findautor($_REQUEST['q'], 10);
}
exit;
break;
case 'keywords':
if (check_permission_acp('document_view'))
{
searchKeywords($_REQUEST['q']);
}
exit;
case 'showsimple':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentListGet();
$AVE_Template->assign('content', $AVE_Template->fetch('documents/docs_simple.tpl'));
}
break;
case 'editstatus':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentEditStatus();
}
break;
case 'edit':
if (check_permission_acp('document_view'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] != 'save')
{
$AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch();
}
$AVE_Document->documentEdit((int)$_REQUEST['Id']);
}
break;
case 'image_import':
echo json_encode(array("respons"=>image_multi_import($_REQUEST['path']), "status"=>"error", "action"=>"return"));
exit;
case 'copy':
if (check_permission_acp('document_view'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch();
$AVE_Document->documentCopy((int)$_REQUEST['Id']);
}
break;
case 'translit':
echo($AVE_Document->documentAliasCreate());
exit;
case 'new':
if (check_permission_acp('document_view'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
case 'checkurl':
echo($AVE_Document->documentAliasCheck());
exit;
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] != 'save')
{
$AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch();
}
$AVE_Document->documentNew((int)$_REQUEST['rubric_id']);
}
break;
case 'innavi':
if (check_permission_acp('document_view') && check_permission_acp('navigation_new'))
{
$AVE_Document->documentInNavi();
}
break;
case 'after':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationAllItemList();
$AVE_Document->documentFormAfter();
}
break;
case 'open':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOn((int)$_REQUEST['Id']);
$AVE_Document->documentStatusSet((int)$_REQUEST['Id'], 1);
}
break;
case 'close':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOff((int)$_REQUEST['Id']);
$AVE_Document->documentStatusSet((int)$_REQUEST['Id'], 0);
}
break;
case 'delete':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOff((int)$_REQUEST['Id']);
$AVE_Document->documentMarkDelete((int)$_REQUEST['Id']);
}
break;
case 'redelete':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOn((int)$_REQUEST['Id']);
$AVE_Document->documentUnmarkDelete((int)$_REQUEST['Id']);
}
break;
case 'enddelete':
if (check_permission_acp('alles'))
{
$AVE_Navigation->navigationItemDeleteFromDoc((int)$_REQUEST['Id']);
$AVE_Document->documentDelete((int)$_REQUEST['Id']);
// Выполняем обновление страницы
header('Location:index.php?do=docs&cp=' . SESSION);
}
break;
case 'revision_recover':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentRevissionRestore((int)$_REQUEST['doc_id'], (int)$_REQUEST['revission'], (int)$_REQUEST['rubric_id']);
}
break;
case 'revision_delete':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentRevissionDelete((int)$_REQUEST['doc_id'], (int)$_REQUEST['revission'], (int)$_REQUEST['rubric_id']);
}
break;
case 'remark':
if (check_permission_acp('remark_view'))
{
$AVE_Document->documentRemarkNew((int)$_REQUEST['Id'], 0);
}
break;
case 'remark_reply':
if (check_permission_acp('remark_view'))
{
$AVE_Document->documentRemarkNew((int)$_REQUEST['Id'], 1);
}
break;
case 'remark_status':
if (check_permission_acp('remark_edit'))
{
$AVE_Document->documentRemarkStatus((int)$_REQUEST['Id'], (int)$_REQUEST['remark_status']);
}
break;
case 'remark_del':
if (check_permission_acp('remark_edit'))
{
$AVE_Document->documentRemarkDelete((int)$_REQUEST['Id'], (int)$_REQUEST['remark_first']);
}
break;
case 'change':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentRubricChange();
}
break;
case 'change_user':
if (check_permission_acp('document_view'))
{
switch($_REQUEST['sub'])
{
case 'save':
$AVE_Document->changeAutorSave();
break;
}
$AVE_Template->assign('content', $AVE_Template->fetch('documents/user.tpl'));
}
break;
case 'find_user':
if (check_permission_acp('document_view'))
{
findautor($_REQUEST['q'], 10);
}
exit;
case 'keywords':
if (check_permission_acp('document_view'))
{
searchKeywords($_REQUEST['q']);
}
exit;
case 'aliases':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasHistoryList();
}
break;
case 'aliases_doc':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasListDoc((int)$_REQUEST['doc_id']);
}
break;
case 'aliases_new':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasNew();
}
break;
case 'aliases_edit':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasEdit();
}
break;
case 'aliases_save':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasSave();
}
break;
case 'aliases_del':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasDel();
}
break;
}
case 'editstatus':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentEditStatus();
}
break;
case 'image_import':
echo json_encode(array("respons"=>image_multi_import($_REQUEST['path']), "status"=>"error", "action"=>"return"));
exit;
case 'translit':
echo($AVE_Document->documentAliasCreate());
exit;
case 'checkurl':
echo($AVE_Document->documentAliasCheck());
exit;
case 'aliases':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasHistoryList();
}
break;
case 'aliases_doc':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasListDoc((int)$_REQUEST['doc_id']);
}
break;
case 'aliases_new':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasNew();
}
break;
case 'aliases_edit':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasEdit();
}
break;
case 'aliases_save':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasSave();
}
break;
case 'aliases_del':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasDel();
}
break;
case 'redirect':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentSaveRedirect();
}
break;
}
?>

985
admin/functions/func.admin.common.php

File diff suppressed because it is too large Load Diff

19
admin/index.php

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

85
admin/init.php

@ -1,43 +1,48 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (!defined('ACP'))
{
header('Location:index.php');
exit;
}
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("
SELECT lang_alias_pref FROM " . PREFIX . "_settings_lang
WHERE lang_default = '1'
")->GetCell();
$_SESSION['admin_language'] = $lang_system;
$AVE_Template = new AVE_Template(BASE_DIR . '/admin/templates');
$AVE_Template->assign('tpl_dir', ABS_PATH . 'admin/templates');
// Файлы шаблонов для CodeMirror
$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');
// Подключаем основные ланги
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/main.txt');
define('SESSION', session_id());
$AVE_Template->assign('sess', SESSION);
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (! defined('ACP'))
{
header('Location:index.php');
exit;
}
require (BASE_DIR . '/inc/init.php');
$AVE_Template = new AVE_Template(BASE_DIR . '/admin/templates');
$AVE_Template->assign('tpl_dir', ABS_PATH . 'admin/templates');
require (BASE_DIR . '/admin/functions/func.admin.common.php');
require (BASE_DIR . '/lib/redactor/ckeditor/adapters/ckeditor.php');
$lang_system = $AVE_DB->Query("
SELECT
lang_alias_pref
FROM
" . PREFIX . "_settings_lang
WHERE
lang_default = '1'
")->GetCell();
$_SESSION['admin_language'] = $lang_system;
// Файлы шаблонов для CodeMirror
$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');
// Подключаем основные ланги
$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_BREAD_BOX = "Контейнер «Breadcrumb»:<br><small>Пример: &lt;ul class="breadcrumb"&gt;%s&lt;/ul&gt;</small>"
SETTINGS_BREAD_MAIN = "Показывать первый элемент: Главная страница:<br><small>Да/Нет</small>"
SETTINGS_BREAD_HOST = "Добавлять адрес хоста в url:<br><small>Да/Нет</small>"
SETTINGS_BREAD_MAIN = "Показвай първия елемент: Главна страница:<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_SEPP_USE = "Покажи:<br><small>Да/Не</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_SELF_BOX = "Контейнер за последния елемент:<br><small>Пример: &lt;li class="active"&gt;%s&lt;/li&gt;</small>"

5
admin/lang/ru/docs.txt

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

56
admin/lang/ru/rubs.txt

@ -42,7 +42,7 @@ RUBRIK_LEGEND = "Значения пиктограмм"
RUBRIK_NEW = "Создание новой рубрики"
RUBRIK_NEW_TIP = "В данном разделе вы можете создать новую рубрику. Пожалуйста, укажите название новой рубрики и выберите шаблон для вывода."
RUBRIK_BUTTON_NEW = "Создать рубрику"
RUBRIK_EDIT_FIELDS = "Управление полями и правами доступа к рубрике"
RUBRIK_DESCRIPTION = "Описание рубрики"
RUBRIK_NO_FIELDS = "<strong>Внимание!</strong> Вы не создали ни одного поля. Пожалуйста, добавьте хотя бы одно поле."
RUBRIK_FIELDS_INFO = "В данном разделе вы можете создать группу полей, которые будут использованы для документов в данной рубрике."
@ -84,6 +84,7 @@ RUBRIK_FIELD_DEFAULT = "Значение по умолчанию"
RUBRIK_TEMPLATE_TIP = "В данном разделе, используя язык разметки HTML, вы должны создать шаблон оформления для документов при полном просмотре,"
RUBRIK_HTML = "Шаблон оформления рубрики"
RUBRIK_HTML_2 = "Шаблон оформления HEADER"
RUBRIK_HTML_2_1 = "Шаблон оформления FOOTER"
RUBRIK_HTML_3 = "Шаблон оформления TEASER"
RUBRIK_HTML_4 = "Шаблон оформления ADMIN TEASER"
RUBRIK_PHP_DENIDED = "<strong>Ошибка!</strong><br />Вы не имеете прав на редактирование шаблона рубрики, так как он используется PHP код, а вы не имеете прав на использование PHP кода."
@ -136,9 +137,9 @@ RUBRIK_MOVE = "Переместить"
RUBRIK_REQUEST_TPL = "Шаблон вывода поля в запросе"
RUBRIK_BREADCRUMB = "Систменый тег Хлебных крошек"
RUBRIK_CODE = "Исполняемый код для рубрик"
RUBRIK_START_CODE = "Код, выполняемый перед загрузкой документа"
RUBRIK_CODE_START = "Код, выполняемый перед сохранением документа"
RUBRIK_CODE_END = "Код, выполняемый после сохранения документа"
RUBRIK_START_CODE = "Код, выполняемый перед показом документа в публичной части"
RUBRIK_CODE_START = "Код, выполняемый ПЕРЕД сохранением документа"
RUBRIK_CODE_END = "Код, выполняемый ПОСЛЕ сохранения документа"
RUBRIK_TAGS = "Тег"
RUBRIK_TAGS_ID = "Тег ID"
RUBRIK_TAGS_ALIAS = "Тег Алиас"
@ -277,4 +278,49 @@ RUBRIC_TMPLS_NO_ITEMS = "<strong>Сообщение:</strong><br />В на
RUBRIC_TMPLS_FROM = "Создать копию основного шаблона"
RUBRIC_TMPLS_INNAME = "Введите наименование шаблона"
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_next_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_DONOT_PRINT = "Содержание не будет показано при печати"
TEMPLATES_RUBHEADER = "Настраивается в шаблоне рубрики<br/>(Шаблон оформления HEADER)"
TEMPLATES_RUBFOOTER = "Настраивается в шаблоне рубрики<br/>(Шаблон оформления FOOTER)"
TEMPLATES_NO_ITEMS = "В настоящий момент нет файлов"
TEMPLATES_DOMAIN = "Системный тег вывода доменного имени"
TEMPLATES_DOCDB = "Системный тег вывода поля документа из БД"

163
admin/modules.php

@ -1,99 +1,102 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (!defined('ACP'))
{
header('Location:index.php');
exit;
}
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/modules.txt', 'modules');
if (!empty($_REQUEST['moduleaction']))
{
if (!check_permission('mod_' . $_REQUEST['mod']))
if (! defined('ACP'))
{
echo $AVE_Template->get_config_vars('MAIN_NO_PERM_MODULES');
header('Location:index.php');
exit;
}
}
if (!empty($_REQUEST['module']))
{
$module_path = preg_replace('/[^\w]/', '', $_REQUEST['module']);
if (!empty($module_path)) define('MODULE_PATH', $module_path);
}
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/modules.txt', 'modules');
switch($_REQUEST['action'])
{
case '':
if (check_permission_acp('modules_view'))
if (! empty($_REQUEST['moduleaction']))
{
if (! check_permission('mod_' . $_REQUEST['mod']))
{
$AVE_Module->moduleList();
echo $AVE_Template->get_config_vars('MAIN_NO_PERM_MODULES');
exit;
}
break;
}
case 'quicksave':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleOptionsSave();
}
break;
if (! empty($_REQUEST['module']))
{
$module_path = preg_replace('/[^\w]/', '', $_REQUEST['module']);
case 'install':
case 'reinstall':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleInstall();
}
break;
if (! empty($module_path))
define('MODULE_PATH', $module_path);
}
case 'update':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleUpdate();
}
break;
switch($_REQUEST['action'])
{
case '':
if (check_permission_acp('modules_view'))
{
$AVE_Module->moduleList();
}
break;
case 'delete':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleDelete();
}
break;
case 'quicksave':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleOptionsSave();
}
break;
case 'onoff':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleStatusChange();
}
break;
case 'install':
case 'reinstall':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleInstall();
}
break;
case 'modedit':
if (check_permission_acp('modules_admin'))
{
$mod_path = preg_replace('/[^\w]/', '', $_REQUEST['mod']);
$mod_path = BASE_DIR . '/modules/' . $mod_path . '/module.php';
if (is_file($mod_path)) include($mod_path);
}
break;
case 'update':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleUpdate();
}
break;
case 'remove':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleRemove($_REQUEST['module']);
}
break;
}
case 'delete':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleDelete();
}
break;
case 'onoff':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleStatusChange();
}
break;
case 'modedit':
if (check_permission_acp('modules_admin'))
{
$mod_path = preg_replace('/[^\w]/', '', $_REQUEST['mod']);
$mod_path = BASE_DIR . '/modules/' . $mod_path . '/module.php';
if (is_file($mod_path))
include($mod_path);
}
break;
case 'remove':
if (check_permission_acp('modules_system'))
{
$AVE_Module->moduleRemove($_REQUEST['module']);
}
break;
}
?>

108
admin/rubs.php

@ -73,21 +73,22 @@ switch($_REQUEST['action'])
$Rtemplate = $_POST['rubric_template'];
$Htemplate = $_POST['rubric_header_template'];
$Ftemplate = $_POST['rubric_footer_template'];
$Ttemplate = $_POST['rubric_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;
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);
$ok = false;
}
if(! $ok)
if (! $ok)
{
$message = $AVE_Template->get_config_vars('RUBRIC_SAVED_PHP_ERR');
$header = $AVE_Template->get_config_vars('RUBRIC_ERROR');
@ -102,11 +103,10 @@ switch($_REQUEST['action'])
{
$AVE_Rubric->rubricTemplateShow(1);
}
}
else
{
$AVE_Rubric->rubricTemplateSave($Rtemplate, $Htemplate, $Ttemplate, $Atemplate);
$AVE_Rubric->rubricTemplateSave($Rtemplate, $Htemplate, $Ttemplate, $Atemplate, $Ftemplate);
}
break;
}
@ -556,6 +556,104 @@ switch($_REQUEST['action'])
$AVE_Template->assign('content', $AVE_Template->fetch('error.tpl'));
}
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();
break;
//-- 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_editable_module();
getInstaledModules();
DisplayMainDocuments();
get_online_users();
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.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 { margin: auto; width: auto; text-align: center; margin-top: 40px; }

15
admin/templates/documents/doc_search.tpl

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

6
admin/templates/documents/form.tpl

@ -625,6 +625,7 @@ $(document).ready(function(){ldelim}
<h5>{#DOC_MAIN_CONTENT#}</h5>
</div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<col width="10">
<col width="250">
<col>
<tbody>
@ -633,12 +634,15 @@ $(document).ready(function(){ldelim}
{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}">
<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>
{/if}
{foreach from=$document_field_group.fields item=field}
<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>
<strong>{$field.rubric_field_title|escape}</strong>
{if $field.rubric_field_description}

5
admin/templates/documents/form_after.tpl

@ -8,12 +8,15 @@
<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_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}
<li class="navig"><span class="icon_sprite ico_navigation floatleft"></span><a href="javascript:void(0);">{#DOC_INCLUDE_NAVIGATION#}</a><br /><br /></li>
{/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=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&cp={$sess}">{#DOC_CLOSE_WINDOW#}</a></li>
</ul>

4
admin/templates/groups/perms.tpl

@ -62,8 +62,10 @@
<td></td>
<td>
{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>
{/if}
{/foreach}
</td>
</tr>

8
admin/templates/js/main.js

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

530
admin/templates/main.tpl

@ -1,300 +1,294 @@
<!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">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>{#MAIN_PAGE_TITLE#} - {*#SUB_TITLE#*} ({$smarty.session.user_name|escape})</title>
<meta name="robots" content="noindex, nofollow">
<meta http-equiv="pragma" content="no-cache">
<meta name="generator" content="Notepad" >
<meta name="Expires" content="Mon, 06 Jan 1990 00:00:01 GMT">
<!-- Favicon -->
<link rel="icon" type="image/vnd.microsoft.icon" href="{$ABS_PATH}admin/admin.favicon.ico">
<link rel="SHORTCUT ICON" href="{$ABS_PATH}admin/admin.favicon.ico">
<!-- CSS Files -->
<link href="{$tpl_dir}/css/reset.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/main.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/data_table.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/nestable.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/jquery-ui_custom.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/jquery.fancybox.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/color_{$smarty.const.DEFAULT_THEME_FOLDER_COLOR}.css" rel="stylesheet" type="text/css" media="screen" />
<!-- JS files -->
{include file='scripts.tpl'}
<!-- JS Scripts -->
<script>
var ave_path = "{$ABS_PATH}";
var ave_theme = "{$smarty.const.DEFAULT_THEME_FOLDER}";
var ave_admintpl = "{$tpl_dir}";
</script>
<script type="text/javascript" language="JavaScript">
$(document).ready(function(){ldelim}
{if $smarty.const.ADMIN_MENU}
$("#menu").sticky({ldelim}topSpacing:56{rdelim});
{/if}
{if check_permission('group_edit')}
$(".ulAddGroup").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_GROUP#}';
var text = '{#MAIN_ADD_NEW_GROUP_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=groups&action=new&cp={$sess}'+ '&user_group_name=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_GROUP#}", {ldelim}theme: 'error'{rdelim});
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>{#MAIN_PAGE_TITLE#} - {*#SUB_TITLE#*} ({$smarty.session.user_name|escape})</title>
<meta name="robots" content="noindex, nofollow">
<meta http-equiv="pragma" content="no-cache">
<meta name="generator" content="Notepad" >
<meta name="Expires" content="Mon, 06 Jan 1990 00:00:01 GMT">
<!-- Favicon -->
<link rel="icon" type="image/vnd.microsoft.icon" href="{$ABS_PATH}admin/admin.favicon.ico">
<link rel="SHORTCUT ICON" href="{$ABS_PATH}admin/admin.favicon.ico">
<!-- CSS Files -->
<link href="{$tpl_dir}/css/reset.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/main.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/data_table.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/nestable.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/jquery-ui_custom.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/jquery.fancybox.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$tpl_dir}/css/color_{$smarty.const.DEFAULT_THEME_FOLDER_COLOR}.css" rel="stylesheet" type="text/css" media="screen" />
<!-- JS files -->
{include file='scripts.tpl'}
<!-- JS Scripts -->
<script>
var ave_path = "{$ABS_PATH}";
var ave_theme = "{$smarty.const.DEFAULT_THEME_FOLDER}";
var ave_admintpl = "{$tpl_dir}";
</script>
<script type="text/javascript" language="JavaScript">
$(document).ready(function(){ldelim}
{if $smarty.const.ADMIN_MENU}
$("#menu").sticky({ldelim}topSpacing:56{rdelim});
{/if}
{if check_permission('group_edit')}
$(".ulAddGroup").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_GROUP#}';
var text = '{#MAIN_ADD_NEW_GROUP_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=groups&action=new&cp={$sess}'+ '&user_group_name=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_GROUP#}", {ldelim}theme: 'error'{rdelim});
{rdelim}
{rdelim}
{rdelim}
);
{rdelim});
{/if}
{if check_permission('user_edit')}
$(".ulAddUser").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_USER#}';
var text = '{#MAIN_ADD_NEW_USER_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=user&action=new&cp={$sess}'+ '&user_name=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_USER#}", {ldelim}theme: 'error'{rdelim});
);
{rdelim});
{/if}
{if check_permission('user_edit')}
$(".ulAddUser").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_USER#}';
var text = '{#MAIN_ADD_NEW_USER_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=user&action=new&cp={$sess}'+ '&user_name=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_USER#}", {ldelim}theme: 'error'{rdelim});
{rdelim}
{rdelim}
{rdelim}
);
{rdelim});
{/if}
{if check_permission('navigation_edit')}
$(".ulAddNav").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_NAV#}';
var text = '{#MAIN_ADD_NEW_NAV_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=navigation&action=new&cp={$sess}'+ '&NaviName=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_NAV#}", {ldelim}theme: 'error'{rdelim});
);
{rdelim});
{/if}
{if check_permission('navigation_edit')}
$(".ulAddNav").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_NAV#}';
var text = '{#MAIN_ADD_NEW_NAV_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=navigation&action=new&cp={$sess}'+ '&NaviName=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_NAV#}", {ldelim}theme: 'error'{rdelim});
{rdelim}
{rdelim}
{rdelim}
);
{rdelim});
{/if}
{if check_permission('template_edit')}
$(".ulAddTempl").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_TEMPL#}';
var text = '{#MAIN_ADD_NEW_TEMPL_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=templates&action=new&cp={$sess}'+ '&TempName=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_TEMPL#}", {ldelim}theme: 'error'{rdelim});
);
{rdelim});
{/if}
{if check_permission('template_edit')}
$(".ulAddTempl").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_TEMPL#}';
var text = '{#MAIN_ADD_NEW_TEMPL_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=templates&action=new&cp={$sess}'+ '&TempName=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_TEMPL#}", {ldelim}theme: 'error'{rdelim});
{rdelim}
{rdelim}
{rdelim}
);
{rdelim});
{/if}
{if check_permission('request_edit')}
$(".ulAddRequest").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_REQUEST#}';
var text = '{#MAIN_ADD_NEW_REQUEST_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=request&action=new&cp={$sess}'+ '&request_title_new=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_QUERY#}", {ldelim}theme: 'error'{rdelim});
);
{rdelim});
{/if}
{if check_permission('request_edit')}
$(".ulAddRequest").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_REQUEST#}';
var text = '{#MAIN_ADD_NEW_REQUEST_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=request&action=new&cp={$sess}'+ '&request_title_new=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_QUERY#}", {ldelim}theme: 'error'{rdelim});
{rdelim}
{rdelim}
{rdelim}
);
{rdelim});
{/if}
{if check_permission('rubric_edit')}
$(".ulAddRub").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_RUB#}';
var text = '{#MAIN_ADD_NEW_RUB_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=rubs&action=new&cp={$sess}'+ '&rubric_title=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_RUB#}", {ldelim}theme: 'error'{rdelim});
);
{rdelim});
{/if}
{if check_permission('rubric_edit')}
$(".ulAddRub").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_RUB#}';
var text = '{#MAIN_ADD_NEW_RUB_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=rubs&action=new&cp={$sess}'+ '&rubric_title=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_RUB#}", {ldelim}theme: 'error'{rdelim});
{rdelim}
{rdelim}
{rdelim}
);
{rdelim});
{/if}
{if check_permission('sysblocks_edit')}
$(".ulAddBlock").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_BLOCK#}';
var text = '{#MAIN_ADD_NEW_BLOCK_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=sysblocks&action=new&cp={$sess}'+ '&sysblock_name=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_BLOCK#}", {ldelim}theme: 'error'{rdelim});
);
{rdelim});
{/if}
{if check_permission('sysblocks_edit')}
$(".ulAddBlock").click( function(e) {ldelim}
e.preventDefault();
var title = '{#MAIN_ADD_NEW_BLOCK#}';
var text = '{#MAIN_ADD_NEW_BLOCK_NAME#}';
jPrompt(text, '', title, function(b){ldelim}
if (b){ldelim}
$.alerts._overlay('hide');
$.alerts._overlay('show');
window.location = ave_path+'admin/index.php?do=sysblocks&action=new&cp={$sess}'+ '&sysblock_name=' + b;
{rdelim}else{ldelim}
$.jGrowl("{#MAIN_NO_ADD_BLOCK#}", {ldelim}theme: 'error'{rdelim});
{rdelim}
{rdelim}
{rdelim}
);
{rdelim});
{/if}
);
{rdelim});
{/if}
{rdelim});
</script>
{rdelim});
</script>
</head>
</head>
<body>
<body>
<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>
</div>
<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>
</div>
<!-- Top Menu -->
<div id="topNav">
<div class="fixed">
<div class="wrapper">
<div class="welcome">
{if $user_avatar}
<img src="{$user_avatar}" class="avatar" alt="{$smarty.session.user_name|escape}" />
{else}
<img src="{$tpl_dir}/images/userPic.png" class="avatar" alt="" />
{/if}
<span>{#MAIN_USER_ONLINE#} <strong>{$smarty.session.user_name|escape}</strong></span>
</div>
<div class="userNav">
<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')}
<li class="dropdown"><a title=""><img src="{$tpl_dir}/images/icons/add.png" alt="" /><span>{#MAIN_BUTTON_ADD#}</span></a>
<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('rubric_edit')}<li><a class="ulAddRub" href="index.php?do=rubs&action=new&cp={$sess}">{#MAIN_ADD_RUB#}</a></li>{/if}
{if check_permission('request_edit')}<li><a class="ulAddRequest" href="index.php?do=request&action=new&cp={$sess}">{#MAIN_ADD_REQ#}</a></li>{/if}
{if check_permission('sysblocks_edit')}<li><a class="ulAddBlock" href="index.php?do=sysblocks&action=new&cp={$sess}">{#MAIN_ADD_SYS#}</a></li>{/if}
{if check_permission('template_edit')}<li><a class="ulAddTempl" href="index.php?do=templates&action=new&cp={$sess}">{#MAIN_ADD_TEM#}</a></li>{/if}
{if check_permission('navigation_edit')}<li><a class="ulAddNav" href="index.php?do=navigation&action=new&cp={$sess}">{#MAIN_ADD_NAV#}</a></li>{/if}
{if check_permission('user_edit')}<li><a class="ulAddUser" href="index.php?do=user&action=new&cp={$sess}">{#MAIN_ADD_USR#}</a></li>{/if}
{if check_permission('group_edit')}<li><a class="ulAddGroup" href="index.php?do=groups&action=new&cp={$sess}">{#MAIN_ADD_GRP#}</a></li>{/if}
</ul>
</li>
<!-- Top Menu -->
<div id="topNav">
<div class="fixed">
<div class="wrapper">
<div class="welcome">
{if $user_avatar}
<img src="{$user_avatar}" class="avatar" alt="{$smarty.session.user_name|escape}" />
{else}
<img src="{$tpl_dir}/images/userPic.png" class="avatar" alt="" />
{/if}
<span>{#MAIN_USER_ONLINE#} <strong>{$smarty.session.user_name|escape}</strong></span>
</div>
<div class="userNav">
<ul>
{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>
<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('rubric_edit')}<li><a class="ulAddRub" href="index.php?do=rubs&action=new&cp={$sess}">{#MAIN_ADD_RUB#}</a></li>{/if}
{if check_permission('request_edit')}<li><a class="ulAddRequest" href="index.php?do=request&action=new&cp={$sess}">{#MAIN_ADD_REQ#}</a></li>{/if}
{if check_permission('sysblocks_edit')}<li><a class="ulAddBlock" href="index.php?do=sysblocks&action=new&cp={$sess}">{#MAIN_ADD_SYS#}</a></li>{/if}
{if check_permission('template_edit')}<li><a class="ulAddTempl" href="index.php?do=templates&action=new&cp={$sess}">{#MAIN_ADD_TEM#}</a></li>{/if}
{if check_permission('navigation_edit')}<li><a class="ulAddNav" href="index.php?do=navigation&action=new&cp={$sess}">{#MAIN_ADD_NAV#}</a></li>{/if}
{if check_permission('user_edit')}<li><a class="ulAddUser" href="index.php?do=user&action=new&cp={$sess}">{#MAIN_ADD_USR#}</a></li>{/if}
{if check_permission('group_edit')}<li><a class="ulAddGroup" href="index.php?do=groups&action=new&cp={$sess}">{#MAIN_ADD_GRP#}</a></li>{/if}
</ul>
</li>
{/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>
<ul class="menu_page">
{$navi_top}
</ul>
</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 $modules}
<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')}
<ul>
{foreach from=$modules item=modul}
<li><a href="index.php?do=modules&action=modedit&mod={$modul->ModuleSysName}&moduleaction=1&cp={$sess}">{$modul->ModuleName}</a></li>
{/foreach}
</ul>
<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">
{$navi_top}
</ul>
</li>
{if check_permission('modules_view')}
{if $modules}
<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')}
<ul>
{foreach from=$modules item=module}
<li><a href="index.php?do=modules&action=modedit&mod={$module.ModuleSysName}&moduleaction=1&cp={$sess}">{$module.ModuleName}</a></li>
{/foreach}
</ul>
{/if}
</li>
{/if}
</li>
{/if}
{/if}
{if check_permission('gen_settings') || check_permission('gen_settings_more') || check_permission('dbactions') || check_permission('gen_settings_countries') || check_permission('gen_settings_languages') }
<li class="dropdown"><a title=""><img src="{$tpl_dir}/images/icons/settings.png" alt="" /><span>{#MAIN_LINK_SETTINGS_H#}</span></a>
<ul>
{if check_permission('gen_settings')}<li><a href="index.php?do=settings&cp={$sess}">{#MAIN_SETTINGS_EDIT_1#}</a></li>{/if}
{if check_permission('gen_settings_more')}<li><a href="index.php?do=settings&sub=case&cp={$sess}">{#MAIN_SETTINGS_EDIT_2#}</a></li>{/if}
{if check_permission('gen_settings_countries')}<li><a href="index.php?do=settings&sub=countries&cp={$sess}">{#MAIN_SETTINGS_EDIT_3#}</a></li>{/if}
{if check_permission('gen_settings_languages')}<li><a href="index.php?do=settings&sub=language&cp={$sess}">{#MAIN_LINK_LANG#}</a></li>{/if}
{if check_permission('db_actions')}<li><a href="index.php?do=dbsettings&action=dump_top&cp={$sess}">{#MAIN_SETTINGS_EDIT_4#}</a></li>{/if}
</ul>
</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_LINK_SITE#}" target="_blank"><img src="{$tpl_dir}/images/icons/preview.png" alt="" /><span>{#MAIN_LINK_SITE#}</span></a>
</li>
<li><a href="admin.php?do=logout" class="ConfirmLogOut" title="{#MAIN_BUTTON_LOGOUT#}"><img src="{$tpl_dir}/images/icons/logout.png" alt="" /><span>{#MAIN_BUTTON_LOGOUT#}</span></a></li>
</ul>
{/if}
{if check_permission('gen_settings') || check_permission('gen_settings_more') || check_permission('dbactions') || check_permission('gen_settings_countries') || check_permission('gen_settings_languages') }
<li class="dropdown"><a title=""><img src="{$tpl_dir}/images/icons/settings.png" alt="" /><span>{#MAIN_LINK_SETTINGS_H#}</span></a>
<ul>
{if check_permission('gen_settings')}<li><a href="index.php?do=settings&cp={$sess}">{#MAIN_SETTINGS_EDIT_1#}</a></li>{/if}
{if check_permission('gen_settings_more')}<li><a href="index.php?do=settings&sub=case&cp={$sess}">{#MAIN_SETTINGS_EDIT_2#}</a></li>{/if}
{if check_permission('gen_settings_countries')}<li><a href="index.php?do=settings&sub=countries&cp={$sess}">{#MAIN_SETTINGS_EDIT_3#}</a></li>{/if}
{if check_permission('gen_settings_languages')}<li><a href="index.php?do=settings&sub=language&cp={$sess}">{#MAIN_LINK_LANG#}</a></li>{/if}
{if check_permission('db_actions')}<li><a href="index.php?do=dbsettings&action=dump_top&cp={$sess}">{#MAIN_SETTINGS_EDIT_4#}</a></li>{/if}
</ul>
</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_LINK_SITE#}" target="_blank"><img src="{$tpl_dir}/images/icons/preview.png" alt="" /><span>{#MAIN_LINK_SITE#}</span></a>
</li>
<li><a href="admin.php?do=logout" class="ConfirmLogOut" title="{#MAIN_BUTTON_LOGOUT#}"><img src="{$tpl_dir}/images/icons/logout.png" alt="" /><span>{#MAIN_BUTTON_LOGOUT#}</span></a></li>
</ul>
</div>
<div class="fix"></div>
</div>
<div class="fix"></div>
</div>
</div>
</div>
<!-- Header -->
<div id="header" class="wrapper">
<!-- <div class="logo"><a href="index.php" class="box"></a></div> -->
<div class="fix"></div>
</div>
<!-- Header -->
<div id="header" class="wrapper">
<div class="fix"></div>
</div>
<!-- Wrapper -->
<div class="wrapper">
<!-- Wrapper -->
<div class="wrapper">
<!-- Left navigation -->
<div class="leftNav {if $smarty.cookies.LeftMenu == "hidden"}hidden{/if}">
{*<div class="logo"><a href="index.php" class="box"></a></div>*}
<!-- Left navigation -->
<div class="leftNav {if $smarty.cookies.LeftMenu == "hidden"}hidden{/if}">
<ul id="menu">
<li><a href="index.php" {if $smarty.request.do == ''}class="active collapse-close"{/if}><span>{#MAIN_LINK_HOME#}</span></a></li>
{$navi}
</ul>
</div>
<ul id="menu">
<li><a href="index.php" {if $smarty.request.do == ''}class="active collapse-close"{/if}><span>{#MAIN_LINK_HOME#}</span></a></li>
{$navi}
</ul>
</div>
<!-- Content -->
<div class="content" id="contentPage">
{$content}
</div>
<!-- Content -->
<div class="content" id="contentPage">
{$content}
<div class="fix"></div>
</div>
<div class="fix"></div>
</div>
<!-- Footer -->
<div id="footer">
<div class="wrapper">
<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="floatright">{$smarty.const.APP_NAME} v{$smarty.const.APP_VERSION}</span>
<!-- Footer -->
<div id="footer">
<div class="wrapper">
<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="floatright">{$smarty.const.APP_NAME} v{$smarty.const.APP_VERSION}</span>
</div>
</div>
</div>
<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 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>
</body>
</body>
</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">
var sess = '{$sess}';
var sess = '{$sess}';
</script>
<div class="title">
<h5>{#RUBRIK_EDIT_CODE_T#}</h5>
</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="breadCrumb module">
<ul>
@ -43,6 +74,11 @@ var sess = '{$sess}';
</div>
</td>
</tr>
<tr>
<td>
{#RUBRIK_EDIT_CODE_LOAD_TIP#}
</td>
</tr>
</tbody>
</table>
</div>
@ -50,11 +86,6 @@ var sess = '{$sess}';
<div class="widget first">
<div class="head">
<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>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
@ -79,6 +110,14 @@ var sess = '{$sess}';
</div>
</td>
</tr>
<tr>
<td>
{#RUBRIK_EDIT_CODE_BEF_TIP#}
</td>
<td>
{#RUBRIK_EDIT_CODE_AFT_TIP#}
</td>
</tr>
</tbody>
</table>
<div class="rowElem" id="saveBtn">

2
admin/templates/rubs/field_template.tpl

@ -24,7 +24,7 @@
<tr>
<td>
<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>
</td>
</tr>

16
admin/templates/rubs/fields.tpl

@ -124,14 +124,14 @@
<script language="javascript">
$(document).ready(function(){ldelim}
AveAdmin.ajax();
AveAdmin.modalDialog();
$('#FieldsList tbody').tableSortable({ldelim}
items: '.field_tbody',
url: 'index.php?do=rubs&action=fieldssort&cp={$sess}',
success: true
{rdelim});
AveAdmin.ajax();
AveAdmin.modalDialog();
$('#FieldsList tbody').tableSortable({ldelim}
items: '.field_tbody',
url: 'index.php?do=rubs&action=fieldssort&cp={$sess}',
success: true
{rdelim});
{rdelim});
</script>

55
admin/templates/rubs/fields_groups.tpl

@ -1,13 +1,44 @@
<script language="Javascript" type="text/javascript">
var sess = '{$sess}';
</script>
<div class="title">
<h5>{#RUBRIK_FIELDS_GROUPS#}</h5>
</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="breadCrumb module">
<ul>
@ -31,15 +62,6 @@ var sess = '{$sess}';
<div class="head">
<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 id="groups_list">
@ -91,16 +113,7 @@ var sess = '{$sess}';
<div class="widget first">
<div class="head">
<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=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>
<h5 class="iFrames">{#RUBRIK_FIELDS_GROUPS#}</h5>
</div>
<div id="groups_list">

198
admin/templates/rubs/fields_list.tpl

@ -1,5 +1,4 @@
<script language="Javascript" type="text/javascript">
var sess = '{$sess}';
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;
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}
</script>
<div class="title">
<h5>{#RUBRIK_EDIT_FIELDS#}</h5>
</div>
{if !$rub_fields}
{if !$fields_list}
<div class="widget" style="margin-top: 0px;">
<div class="body">{#RUBRIK_NO_FIELDS#}</div>
</div>
@ -24,6 +24,34 @@ function openAliasWindow(fieldId, rubId, width, height, target) {ldelim}
<div class="body">{#RUBRIK_FIELDS_INFO#}</div>
</div>
{/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="breadCrumb module">
<ul>
@ -67,16 +95,6 @@ function openAliasWindow(fieldId, rubId, width, height, target) {ldelim}
<div class="head">
<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 id="fields_list">
@ -364,124 +382,6 @@ function openAliasWindow(fieldId, rubId, width, height, target) {ldelim}
</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"}
<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({
defaultOpen: 'opened',
cssOpen: 'inactive',
@ -643,6 +534,14 @@ $(document).ready(function(){ldelim}
},
speed: 200
});
$('.collapsible').on('click', function() {
setTimeout(function() {
AveAdmin.sticky_panel_refresh();
AveAdmin.select_form();
}, 10);
});
{/literal}
Mousetrap.bind(['ctrl+s', 'command+s'], function(event) {ldelim}
@ -714,25 +613,6 @@ $(document).ready(function(){ldelim}
return false;
{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}
$.ajax({ldelim}
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">
<h5>{#RUBRIK_TEMPLATE_EDIT#}</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;
{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}
<a class="basicNum" href="index.php?do=rubs&action=tmpls&Id={$smarty.request.Id|escape}&cp={$sess}">{#RUBRIC_TMPLS_BUTTON#}</a>
</div>
</div>
{/if}
@ -19,6 +15,33 @@
<div class="body">{#RUBRIK_TEMPLATE_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>
{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>
@ -61,6 +84,9 @@
<li>
<a href="#tab2">{#RUBRIK_HTML_2#}</a>
</li>
<li>
<a href="#tab2_1">{#RUBRIK_HTML_2_1#}</a>
</li>
<li>
<a href="#tab3">{#RUBRIK_HTML_3#}</a>
</li>
@ -468,6 +494,139 @@
</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;">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
@ -785,6 +944,7 @@
{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="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="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="30">
<col width="40">
<col width="40">
<col width="20">
<col width="20">
<col width="20">
<col width="20">
@ -110,8 +110,7 @@ $(function() {ldelim}
</div>
</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="5">{#RUBRIK_ACTION#}</td>
<td align="center" colspan="6">{#RUBRIK_ACTION#}</td>
</tr>
</thead>
<tbody id="rubsTbody">
@ -191,21 +190,21 @@ $(function() {ldelim}
<td align="center"><strong class="code">{$rubric->fld_count}</strong></td>
<td align="center">
{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}
<strong class="code">{$rubric->tmpls_count}</strong>
<span title="{#RUBRIK_NO_CHANGE1#}" class="topleftDir icon_sprite ico_edit_no"></span>
{/if}
</td>
<td align="center">
{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}
<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}
</td>
<td align="center">
{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}
<span title="{#RUBRIK_NO_CHANGE2#}" class="topleftDir icon_sprite ico_template_no"></span>
{/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>
<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>
@ -52,6 +46,34 @@ $(document).ready(function(){ldelim}
</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="breadCrumb module">
<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="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if}
&nbsp;
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if}
&nbsp;
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if}
&nbsp;
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
{if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
{if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/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}
{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}
</div>
</div>

16
admin/templates/settings/settings_case.tpl

@ -18,13 +18,12 @@
<div class="widget first">
<div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if}
&nbsp;
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if}
&nbsp;
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if}
&nbsp;
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
{if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
{if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/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}
{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}
</div>
</div>
@ -145,4 +144,5 @@ function Response(data){ldelim}
{rdelim});
{rdelim}
</script>
</script>
{include file="$codemirror_connect"}

70
admin/templates/settings/settings_countries.tpl

@ -1,31 +1,30 @@
<div class="title"><h5>{#SETTINGS_COUNTRIES#}</h5></div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
<div class="body">
{#SETTINGS_COUNTRY_TIP#}
</div>
</div>
</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=settings&cp={$sess}">{#SETTINGS_MAIN_TITLE#}</a></li>
<ul>
<li class="firstB"><a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a></li>
<li><a href="index.php?do=settings&cp={$sess}">{#SETTINGS_MAIN_TITLE#}</a></li>
<li>{#SETTINGS_COUNTRIES#}</li>
</ul>
</ul>
</div>
</div>
<div class="widget first">
<div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if}
&nbsp;
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if}
&nbsp;
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if}
&nbsp;
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
{if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
{if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/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}
{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}
</div>
</div>
@ -40,14 +39,14 @@
<li><a href="index.php?do=settings&action=paginations&cp={$sess}">{#SETTINGS_PAGINATION#}</a></li>
</ul>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
<thead>
<tr>
<td width="20%">{#SETTINGS_COUNTRY_NAME#}</td>
<td width="20%">{#SETTINGS_ACTIVE#}</td>
<td width="20%">{#SETTINGS_IN_EC#}</td>
</tr>
</thead>
<tbody>
<thead>
<tr>
<td width="20%">{#SETTINGS_COUNTRY_NAME#}</td>
<td width="20%">{#SETTINGS_ACTIVE#}</td>
<td width="20%">{#SETTINGS_IN_EC#}</td>
</tr>
</thead>
<tbody>
{foreach from=$countries item=land name=l}
<tr {if $land.country_status==1}class="green"{/if}>
<td>
@ -65,8 +64,8 @@
</td>
</tr>
{/foreach}
</tbody>
</table>
</tbody>
</table>
<div class="rowElem" id="saveBtn">
<div class="saveBtn">
@ -92,13 +91,13 @@
$(document).ready(function(){ldelim}
var sett_options = {ldelim}
var sett_options = {ldelim}
url: 'index.php?do=settings&sub=countries&cp={$sess}&save=1',
beforeSubmit: Request,
success: Response
success: Response
{rdelim}
$(".SaveSettings").click(function(e){ldelim}
$(".SaveSettings").click(function(e){ldelim}
e.preventDefault();
var title = '{#SETTINGS_BUTTON_SAVE#}';
var confirm = '{#SETTINGS_SAVE_CONFIRM#}';
@ -107,20 +106,20 @@ $(document).ready(function(){ldelim}
title,
function(b){ldelim}
if (b){ldelim}
$("#settings").ajaxSubmit(sett_options);
$("#settings").ajaxSubmit(sett_options);
{rdelim}
{rdelim}
);
{rdelim});
Mousetrap.bind(['ctrl+s', 'command+s'], function(e) {ldelim}
if (e.preventDefault) {ldelim}
e.preventDefault();
{rdelim} else {ldelim}
// internet explorer
e.returnValue = false;
{rdelim}
$("#settings").ajaxSubmit(sett_options);
if (e.preventDefault) {ldelim}
e.preventDefault();
{rdelim} else {ldelim}
// internet explorer
e.returnValue = false;
{rdelim}
$("#settings").ajaxSubmit(sett_options);
return false;
{rdelim});
@ -136,4 +135,5 @@ function Response(){ldelim}
$.jGrowl('{#SETTINGS_SAVED#}',{ldelim}theme: 'accept'{rdelim});
{rdelim}
</script>
</script>
{include file="$codemirror_connect"}

16
admin/templates/settings/settings_lang.tpl

@ -18,13 +18,12 @@
<div class="widget first">
<div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if}
&nbsp;
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if}
&nbsp;
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if}
&nbsp;
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
{if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
{if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/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}
{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}
</div>
</div>
@ -101,4 +100,5 @@
<input type="submit" class="basicBtn" value="{#SETTINGS_LANG_ADD#}" onclick="windowOpen('index.php?do=settings&sub=editlang&pop=1&cp={$sess}','800','400','1','settings');" />
</div>
</div>
</div>
{include file="$codemirror_connect"}

13
admin/templates/settings/settings_main.tpl

@ -19,13 +19,12 @@
<div class="widget first">
<div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if}
&nbsp;
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if}
&nbsp;
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if}
&nbsp;
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
{if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
{if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/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}
{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}
</div>
</div>

16
admin/templates/settings/settings_pagination.tpl

@ -19,13 +19,12 @@
<div class="widget first">
<div class="body">
{if check_permission('cache_clear')}<a class="button basicBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>{/if}
&nbsp;
{if check_permission('cache_thumb')}<a class="button basicBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>{/if}
&nbsp;
{if check_permission('document_revisions')}<a class="button basicBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>{/if}
&nbsp;
{if check_permission('gen_settings')}<a class="button basicBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>{/if}
{if check_permission('cache_clear')}<a class="button redBtn clearCacheSess" href="javascript:void(0);">{#MAIN_STAT_CLEAR_CACHE_FULL#}</a>&nbsp;{/if}
{if check_permission('cache_thumb')}<a class="button redBtn clearThumb" href="javascript:void(0);">{#MAIN_STAT_CLEAR_THUMB#}</a>&nbsp;{/if}
{if check_permission('document_revisions')}<a class="button redBtn clearRev" href="javascript:void(0);">{#MAIN_STAT_CLEAR_REV#}</a>&nbsp;{/if}
{if check_permission('gen_settings')}<a class="button redBtn clearCount" href="javascript:void(0);">{#MAIN_STAT_CLEAR_COUNT#}</a>&nbsp;{/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}
{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}
</div>
</div>
@ -84,4 +83,5 @@
{/if}
</tbody>
</table>
</div>
</div>
{include file="$codemirror_connect"}

8
admin/templates/templates/form.tpl

@ -82,7 +82,7 @@
<td>
<strong><a class="rightDir" title="{#TEMPLATES_THEME_FOLDER#}" href="javascript:void(0);" onclick="textSelection('[tag:theme:',']');">[tag:theme:folder]</a></strong>
</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>
<ul class="messages" style="margin-top: 10px;">
<li class="highlight grey">
@ -110,6 +110,12 @@
</td>
</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>
<td>
<strong><a class="rightDir" title="{#TEMPLATES_TITLE#}" href="javascript:void(0);" onclick="textSelection('[tag:title]','');">[tag:title]</a></strong>

2675
class/class.core.php

File diff suppressed because it is too large Load Diff

95
class/class.database.php

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

295
class/class.docs.php

@ -182,13 +182,82 @@ class AVE_Document
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 = '';
$navi_docstatus = '';
// При смене страницы убираем из сессии параметры выборки документов
unset ($_SESSION['search_query']);
// Если в запросе пришел параметр на поиск документа по названию
if (!empty($_REQUEST['QueryTitel']))
{
@ -428,6 +500,9 @@ class AVE_Document
$db_sort = 'ORDER BY doc.Id DESC';
$navi_sort = '&sort=id_desc';
// Параметры вывборки документов
$search_query = base64_encode($_SERVER['QUERY_STRING']);
// Если в запросе используется параметр сортировки
if (!empty($_REQUEST['sort']))
{
@ -597,6 +672,9 @@ class AVE_Document
// Циклически обрабатываем полученные данные с целью приведения некоторых из них к удобочитаемому виду
while ($row = $sql->FetchRow())
{
// Запомниаем в сесии, параметры выборки для документа
$_SESSION['search_query'][$row->Id] = $search_query;
// Определяем количество комментариев, оставленных для данного документа
$row->ist_remark = $AVE_DB->Query("
SELECT
@ -1085,23 +1163,27 @@ class AVE_Document
/**
* Метод, предназначенный для сохранения документа в БД
*
* @param int $rubric_id идентификатор Рубрики
* @param int $document_id идентификатор Документа
* @param array $data Документ в массиве структура - хитрая
* @param bool $update_non_exists_fields Изменять поля на пустые
* значения у не переданных полей или не надо
* @param bool $rubric_cod Использовать код рубрики или не надо
* возвращает номер документа если все удачно и false если все плохо
* @param int $rubric_id Идентификатор Рубрики
* @param int $document_id Идентификатор Документа или null, если документ новый
* @param array $data Документ в массиве структура - хитрая
* @param bool $update_non_exists_fields Изменять поля на пустые значения у не переданных полей или не надо
* @param bool $rubric_code Использовать код рубрики или не надо
* @param bool $revisions Использовать ревизии документов
* @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;
//-- Проверяем входящие данные -- //
$rubric_id = (int)$rubric_id;
$document_id = (int)$document_id;
// Если отсутсвует рубрика, ничего не делаем
if(! $rubric_id)
return false;
// Если отсутсвуют данные, ничего не делаем
if(! isset($data))
@ -1111,30 +1193,21 @@ class AVE_Document
if(! isset($data['feld']))
return false;
$rubric_id = (int)$rubric_id;
$document_id = (int)$document_id;
// Определяем тип опреации
$oper = 'INSERT';
// Забираем параметры рубрики
$_rubric = $AVE_DB->Query("
SELECT
rubric_alias,
rubric_alias_history,
rubric_code_start,
rubric_code_end
FROM
" . PREFIX . "_rubrics
WHERE
Id = '" . $rubric_id . "'
")->FetchRow();
$_rubric = $this->_get_rubric($rubric_id);
// Запускаем триггер перед сохранением
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)
{
eval ('?>' . $_rubric->rubric_code_start . '<?');
}
eval ('?'.'>' . $_rubric->rubric_code_start . '<'.'?');
// Если нет данных для сохранения, перкращаем сохранение и переходим на страницу документов
if (empty($data))
@ -1154,6 +1227,7 @@ class AVE_Document
|| (defined('UGROUP') && UGROUP == 1) ))
return false;
// Title документа
$data['document_title'] = $_url = empty($data['document_title'])
? $AVE_Template->get_config_vars('DOC_WITHOUT_TITLE')
: $data['document_title'];
@ -1332,7 +1406,7 @@ class AVE_Document
else
{
// Если оператор INSERT
// Если новый алиас документа, сопадает с алиасом в истории, просто стираем историю
// Если новый алиас документа, совпадает с алиасом в истории, просто стираем историю
$AVE_DB->Query("
DELETE FROM
". PREFIX . "_document_alias_history
@ -1378,9 +1452,9 @@ class AVE_Document
$fields = array();
// Получаем структуру документа
if($oper == 'INSERT')
if ($oper == 'INSERT')
{
$sql = $AVE_DB->Query("
$sql = "
SELECT
*
FROM
@ -1389,28 +1463,29 @@ class AVE_Document
rubric_id = '" . $rubric_id . "'
ORDER BY
rubric_field_position ASC
");
";
}
else
{
$sql = $AVE_DB->Query("
$sql = "
SELECT
doc.Id AS df_id,
rub.*,
rubric_field_default,
doc.field_value
df.field_value
FROM
" . PREFIX . "_rubric_fields AS rub
LEFT JOIN
" . PREFIX . "_document_fields AS doc
" . PREFIX . "_document_fields AS df
ON rubric_field_id = rub.Id
WHERE
document_id = '" . $document_id . "'
ORDER BY
rubric_field_position ASC
");
";
}
$query = $AVE_DB->Query($sql);
// Если пришел вызов поля, который связан с модулем
if (isset($data['field_module']))
{
@ -1420,18 +1495,18 @@ class AVE_Document
$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
{
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 : '');
$author = ($oper != 'UPDATE' ? 'document_author_id = ' . $_SESSION['user_id'] . ',' : '');
@ -1518,8 +1593,13 @@ class AVE_Document
if ($logs)
reportLog(($oper=='INSERT'
? $AVE_Template->get_config_vars('DOC_SAVE_ADD')
: $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_EDIT')) . $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)
@ -1535,23 +1615,10 @@ class AVE_Document
? $data['feld'][$fld_id]
: $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 кода, тогда обнуляем данные поля
if (! check_permission('document_php'))
@ -1565,23 +1632,13 @@ class AVE_Document
$fld_val = pretty_chars($fld_val);
}
$field_rubric = $AVE_DB->Query("
SELECT
*
FROM
" . PREFIX . "_rubric_fields
WHERE
Id = '" . $fld_id . "'
")->FetchRow();
// Отправляем полученные данные в функцию поля, в раздел "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);
}
//-- Собираем запрос к БД на добавление нового поля с его содержимым --//
@ -1597,9 +1654,9 @@ class AVE_Document
? ''
: "rubric_field_id = '" . $fld_id . "', document_id = '" . $document_id . "',");
$fval = (is_array($fld_val)
? serialize($fld_val)
: ($fld_val));
$fval = is_array ($fld_val)
? serialize ($fld_val)
: $fld_val;
$substr = 500;
@ -1607,22 +1664,22 @@ class AVE_Document
$substr = 499;
// Сохраняем первые 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) == '\\')
$slash = true;
if ($slash)
$f_val_500 = rtrim($f_val_500, '\\');
$f_val_500 = rtrim ($f_val_500, '\\');
$sql = "
$operator
SET
$insert
field_value = '" . $f_val_500 . "',
field_number_value = '" . (($field_rubric->rubric_field_numeric)
? preg_replace('/[^\d.]/', '', $fld_val)
field_number_value = '" . (($rubric_fields[$fld_id]['rubric_field_numeric'])
? preg_replace ('/[^\d.]/', '', $fld_val)
: 0) . "',
document_in_search = '" . $search . "'
$where
@ -1636,27 +1693,21 @@ class AVE_Document
if (mb_strlen($fval) > $substr)
{
// Проверяем есть ли запись о поле в БД
$check_field = $AVE_DB->Query("
SELECT
Id
FROM
" .PREFIX . "_document_fields_text
WHERE
document_id = '" . $document_id . "'
AND
rubric_field_id='" . $fld_id . "'
")->GetCell();
$check_field = false;
$operator = ($check_field > 0
if (in_array ($fld_id, $document_text_fields))
$check_field = true;
$operator = ($check_field
? "UPDATE " . 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 . "'"
: '');
$insert = ($check_field > 0
$insert = ($check_field
? ''
: "rubric_field_id = '" . $fld_id . "', document_id = '" . $document_id . "',");
@ -1701,14 +1752,12 @@ class AVE_Document
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)
{
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);
@ -1716,7 +1765,7 @@ class AVE_Document
$AVE_DB->clearcompile('doc_' . $document_id);
$AVE_DB->clearcacherequest('doc_' . $document_id);
unset($_rubric);
unset ($_rubric, $fields);
// Дополнительные обработки
if ($generate)
@ -1819,7 +1868,9 @@ class AVE_Document
$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)
@ -1832,7 +1883,7 @@ class AVE_Document
// которые пользователь ввел в поля документа
foreach ($_POST['feld'] as $val)
{
if (!empty($val))
if (! empty($val))
{
$newtext .= $val;
$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('%TITLE%', stripslashes($_POST['document_title']), $body_to_admin);
$body_to_admin = str_replace('%USER%', "'" . $_SESSION['user_name'] . "'", $body_to_admin);
send_mail(
$system_mail,
$body_to_admin . $text,
@ -2201,6 +2253,7 @@ class AVE_Document
groups.Id AS group_id,
rub.*,
rubric_field_default,
rubric_field_alias,
doc.field_value,
field_more.field_value as field_value_more
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]['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_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]['result'] = $field->field;
}
@ -3693,10 +3747,47 @@ class AVE_Document
exit;
}
$search_query = $_SESSION['search_query'][$document_id] ? true : false;
$AVE_Template->assign('search_query', $search_query);
$AVE_Template->assign($document);
$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;
}
/**
* Метод, предназначенный для смены автора документа
*

767
class/class.modules.php

@ -1,406 +1,497 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
*/
class AVE_Module
{
/**
* Внутренние методы
*/
/**
* Метод, который обрабатывает все module.php и записывает как свойство класса списки модулей
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
*/
function getModules()
{
global $AVE_DB;
$modules = array();
// Получаем из БД информацию о всех установленных модулях
$modules_db = $this->moduleListGet();
class AVE_Module
{
public $_modules = array();
// Определяем директорию, где хранятся модули
$d = dir(BASE_DIR . '/modules');
function __construct()
{
$this->_modules = $this->getModules();
}
// Циклически обрабатываем директории
while (false !== ($entry = $d->read()))
/**
* Метод, который обрабатывает все module.php и записывает как свойство класса списки модулей
*/
function getModules()
{
if (substr($entry, 0, 1) == '.') continue;
$modules = array();
// Получаем из БД информацию о всех установленных модулях
$modules_db = $this->moduleListGet();
$module_dir = $d->path . '/' . $entry;
if (!is_dir($module_dir)) continue;
// Определяем директорию, где хранятся модули
$d = dir(BASE_DIR . '/modules');
$modul = array();
if (!(is_file($module_dir . '/module.php') && @include($module_dir . '/module.php')))
// Циклически обрабатываем директории
while (false !== ($entry = $d->read()))
{
// Если не удалось подключить основной файл модуля module.php - Фиксируем ошибку
$modules['errors'][] = $entry;
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;
if (! is_dir($module_dir))
continue;
$module = array();
if (! (is_file($module_dir . '/info.php') && @include($module_dir . '/info.php')))
{
// Если не удалось подключить основной файл модуля module.php - Фиксируем ошибку
$modules['errors'][] = $entry;
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';
// Дополняем массив с данными модуля
$module['permission'] = check_permission('mod_'. $module['ModuleSysName']);
// Установлен/Не установлен по системному имени
$row = isset($modules_db[$module['ModuleSysName']])
? $modules_db[$module['ModuleSysName']]
: false;
// установленные модули
if ($row)
{
$module['status'] = $row->ModuleStatus;
$module['id'] = $row->Id;
$module['need_update'] = ($row->ModuleVersion != $module['ModuleVersion']);
$module['template'] = ($row->ModuleTemplate ? $row->ModuleTemplate : 0);
$module['ModuleVersion'] = $row->ModuleVersion;
}
// неустановленные модули
else
{
$module['status'] = false;
$module['id'] = $module['ModuleSysName'];
$module['template'] = (! empty($module['ModuleTemplate']) ? $module['ModuleTemplate'] : '');
}
// записываем в массив
$modules[$module['ModuleSysName']] = $module;
unset ($module);
}
// Дополняем массив с данными модуля
$modul['permission'] = check_permission('mod_'. $modul['ModuleSysName']);
$row = isset($modules_db[$modul['ModuleName']]) ? $modules_db[$modul['ModuleName']] : false;
// Закрываем папку
$d->Close();
// установленные модули
if ($row)
{
$modul['status'] = $row->ModuleStatus;
$modul['id'] = $row->Id;
$modul['need_update'] = ($row->ModuleVersion != $modul['ModuleVersion']);
$modul['ModuleVersion'] = $row->ModuleVersion;
$modul['template'] = ($row->ModuleTemplate ? $row->ModuleTemplate : 0);
}
// неустановленные модули
else
{
$modul['status'] = false;
$modul['id'] = $modul['ModuleSysName'];
$modul['template'] = (!empty($modul['ModuleTemplate']) ? $modul['ModuleTemplate'] : '');
}
// записываем в массив
$modules[$modul['ModuleSysName']] = $modul;
return $modules;
}
$d->Close();
return $modules;
}
/**
* Внешние методы
*/
/**
* Метод, преданзначеный для выода модулей
*
*/
function moduleList()
{
global $AVE_DB, $AVE_Template;
$assign = array(); // Массив для передачи в Smarty
$errors = array(); // Массив с ошибками
// Получаем список всех шаблонов
$sql = $AVE_DB->Query("
SELECT
Id,
template_title
FROM
" . PREFIX . "_templates
");
/**
* Метод, преданзначеный для выода модулей
*
*/
function moduleList()
{
global $AVE_DB, $AVE_Template;
while ($row = $sql->FetchRow())
$assign['all_templates'][$row->Id] = htmlspecialchars($row->template_title, ENT_QUOTES);
$assign = array(); // Массив для передачи в Smarty
$errors = array(); // Массив с ошибками
// Заголовок: Автор модуля
$author_title = $AVE_Template->get_config_vars('MODULES_AUTHOR');
// Получаем список всех шаблонов
$sql = $AVE_DB->Query("
SELECT Id, template_title
FROM " . PREFIX . "_templates
");
while ($row = $sql->FetchRow())
{
$assign['all_templates'][$row->Id] = htmlspecialchars($row->template_title, ENT_QUOTES);
}
// Получаем список всех модулей
$modules = $this->_modules;
$author_title = $AVE_Template->get_config_vars('MODULES_AUTHOR');
$modules = $this->getModules();
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>';
// установленные модули
if ($module['status'] !== false)
{
$installed_modules[$module['ModuleName']] = $module;
}
// неустановленные модули
else
foreach ($modules as $module)
{
$not_installed_modules[$module['ModuleName']] = $module;
$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)
$installed_modules[$module['ModuleSysName']] = $module;
// неустановленные модули
else
$not_installed_modules[$module['ModuleSysName']] = $module;
}
}
!empty($installed_modules) ? ksort($installed_modules) : $installed_modules = '';
!empty($not_installed_modules) ? ksort($not_installed_modules) : $not_installed_modules = '';
$assign['installed_modules'] = $installed_modules;
$assign['not_installed_modules'] = $not_installed_modules;
! empty($installed_modules)
? ksort($installed_modules)
: $installed_modules = '';
! empty($not_installed_modules)
? ksort($not_installed_modules)
: $not_installed_modules = '';
// Массив с ошибками
if(!empty($modules['errors'])){
foreach ($modules['errors'] as $error)
$assign['installed_modules'] = $installed_modules;
$assign['not_installed_modules'] = $not_installed_modules;
// Массив с ошибками
if (! empty($modules['errors']))
{
$assign['errors'][] = $AVE_Template->get_config_vars('MODULES_ERROR') . $error;
foreach ($modules['errors'] as $error)
{
$assign['errors'][] = $AVE_Template->get_config_vars('MODULES_ERROR') . $error;
}
}
// Передаем данные в шаблон и отображаем страницу со списком модулей
$AVE_Template->assign($assign);
$AVE_Template->assign('content', $AVE_Template->fetch('modules/modules.tpl'));
}
// Передаем данные в шаблон и отображаем страницу со списком модулей
$AVE_Template->assign($assign);
$AVE_Template->assign('content', $AVE_Template->fetch('modules/modules.tpl'));
}
/**
* Метод, предназначенный для обновления в БД информации о шаблонах модулей
*
*/
function moduleOptionsSave()
{
global $AVE_DB;
// Циклически обрабатываем массив с информацией о шаблонах модулей
foreach ($_POST['Template'] as $id => $template_id)
/**
* Метод получения списка модулей
*
* @param int $status статус возвращаемых модулей
* 1 - активные модули
* 0 - неактивные модули
* если не указано возвращает модули без учета статуса
* @return array
*/
function moduleListGet($status = null)
{
// Обновление информации о шаблоне модуля
$AVE_DB->Query("
UPDATE " . PREFIX . "_module
SET ModuleTemplate = '" . (int)$template_id . "'
WHERE Id = '" . (int)$id . "'
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;
}
// Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION);
exit;
}
/**
* Метод, предназанченный для установки или переустановки модуля
*
*/
function moduleInstall()
{
global $AVE_DB, $AVE_Template;
// Получаем данные модуля
$modules = $this->getModules();
$modul = $modules[MODULE_PATH];
// Удаляем информацию о модуле в таблице module
$AVE_DB->Query("
DELETE
FROM " . PREFIX . "_module
WHERE ModuleSysName = '" . MODULE_PATH . "'
");
// Определяем, имеет ли модуль возможность настройки в Панели управления
$modul['ModuleAdminEdit'] = (!empty($modul['ModuleAdminEdit'])) ? $modul['ModuleAdminEdit'] : 0;
// Определяем, имеет ли модуль возможность смены шаблона
$modul['ModuleTemplate'] = ($modul['ModuleTemplate']) ? $modul['ModuleTemplate'] : 0;
// Добавляем информацию о модуле в таблицу module
$AVE_DB->Query("
INSERT " . PREFIX . "_module
SET
ModuleName = '" . $modul['ModuleName'] . "',
ModuleStatus = '1',
ModuleAveTag = '" . $modul['ModuleAveTag'] . "',
ModulePHPTag = '" . $modul['ModulePHPTag'] . "',
ModuleFunction = '" . $modul['ModuleFunction'] . "',
ModuleIsFunction = '" . $modul['ModuleIsFunction'] . "',
ModuleSysName = '" . MODULE_PATH . "',
ModuleVersion = '" . $modul['ModuleVersion'] . "',
ModuleTemplate = '" . $modul['ModuleTemplate'] . "',
ModuleAdminEdit = '" . $modul['ModuleAdminEdit'] . "'
");
// Подключаем файл с запросами к БД для данного модуля
$module_sql_deinstall = array();
$module_sql_install = array();
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
if (is_file($sql_file) && @include($sql_file))
/**
* Метод, предназначенный для обновления в БД информации о шаблонах модулей
*
*/
function moduleOptionsSave()
{
// Выполняем запросы удаления таблиц модуля
// из массива $module_sql_deinstall файла sql.php
foreach ($module_sql_deinstall as $sql)
{
$AVE_DB->Query(str_replace('CPPREFIX', PREFIX, $sql));
}
global $AVE_DB;
// Выполняем запросы создания таблиц и данных модуля
// из массива $module_sql_install файла sql.php
foreach ($module_sql_install as $sql)
// Циклически обрабатываем массив с информацией о шаблонах модулей
foreach ($_POST['Template'] as $id => $template_id)
{
$AVE_DB->Query(str_replace('CPPREFIX', PREFIX, $sql));
// Обновление информации о шаблоне модуля
$AVE_DB->Query("
UPDATE
" . PREFIX . "_module
SET
ModuleTemplate = '" . (int)$template_id . "'
WHERE
Id = '" . (int)$id . "'
");
}
// Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION);
exit;
}
// Сохраняем системное сообщение в журнал
($_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);
exit;
}
/**
* Метод, предназанченный для установки или переустановки модуля
*
*/
function moduleInstall()
{
global $AVE_DB, $AVE_Template;
/**
* Метод, предназначенный для обновления модуля при увеличении номера версии модуля
*
*/
function moduleUpdate()
{
global $AVE_DB, $AVE_Template;
// Получаем данные модуля
$modules = $this->_modules;
// Подключаем файл с запросами к БД для данного модуля
$module_sql_update = array();
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
$mod_file = BASE_DIR . '/modules/' . MODULE_PATH . '/module.php';
if (file_exists($mod_file) && file_exists($sql_file))
{
include($mod_file);
include($sql_file);
// Выполняем запросы обновления модуля
// из массива $module_sql_update файла sql.php
foreach ($module_sql_update as $sql)
$modul = $modules[MODULE_PATH];
// Удаляем информацию о модуле в таблице module
$AVE_DB->Query("
DELETE
FROM
" . PREFIX . "_module
WHERE
ModuleSysName = '" . MODULE_PATH . "'
");
// Определяем, имеет ли модуль возможность настройки в Панели управления
$modul['ModuleAdminEdit'] = (!empty($modul['ModuleAdminEdit']))
? $modul['ModuleAdminEdit']
: 0;
// Определяем, имеет ли модуль возможность смены шаблона
$modul['ModuleTemplate'] = ($modul['ModuleTemplate'])
? $modul['ModuleTemplate']
: 0;
// Добавляем информацию о модуле в таблицу module
$AVE_DB->Query("
INSERT INTO
" . PREFIX . "_module
SET
ModuleName = '" . $modul['ModuleName'] . "',
ModuleStatus = '1',
ModuleAveTag = '" . $modul['ModuleAveTag'] . "',
ModulePHPTag = '" . $modul['ModulePHPTag'] . "',
ModuleFunction = '" . $modul['ModuleFunction'] . "',
ModuleIsFunction = '" . $modul['ModuleIsFunction'] . "',
ModuleSysName = '" . MODULE_PATH . "',
ModuleVersion = '" . $modul['ModuleVersion'] . "',
ModuleTemplate = '" . $modul['ModuleTemplate'] . "',
ModuleAdminEdit = '" . $modul['ModuleAdminEdit'] . "'
");
// Подключаем файл с запросами к БД для данного модуля
$module_sql_deinstall = array();
$module_sql_install = array();
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
if (is_file($sql_file) && @include($sql_file))
{
$AVE_DB->Query(str_replace('CPPREFIX', PREFIX, $sql));
// Выполняем запросы удаления таблиц модуля
// из массива $module_sql_deinstall файла sql.php
foreach ($module_sql_deinstall as $sql)
{
$AVE_DB->Query(str_replace('CPPREFIX', PREFIX, $sql));
}
// Выполняем запросы создания таблиц и данных модуля
// из массива $module_sql_install файла sql.php
foreach ($module_sql_install as $sql)
{
$AVE_DB->Query(str_replace('CPPREFIX', PREFIX, $sql));
}
}
// Сохраняем системное сообщение в журнал
($_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);
exit;
}
// Обновляем модуль, если в нем не применяется (отсутствует) файл sql.php
elseif (file_exists($mod_file) && file_exists($sql_file) === false)
/**
* Метод, предназначенный для обновления модуля при увеличении номера версии модуля
*
*/
function moduleUpdate()
{
include($mod_file);
$AVE_DB->Query("
UPDATE " . PREFIX . "_module
SET
ModuleName = '" . $modul['ModuleName'] . "',
ModuleStatus = '1',
ModuleAveTag = '" . $modul['ModuleAveTag'] . "',
ModulePHPTag = '" . $modul['ModulePHPTag'] . "',
ModuleFunction = '" . $modul['ModuleFunction'] . "',
ModuleIsFunction = '" . $modul['ModuleIsFunction'] . "',
ModuleSysName = '" . MODULE_PATH . "',
ModuleVersion = '" . $modul['ModuleVersion'] . "',
ModuleTemplate = '" . $modul['ModuleTemplate'] . "',
ModuleAdminEdit = '" . $modul['ModuleAdminEdit'] . "'
WHERE
ModuleSysName = '" . MODULE_PATH . "'
");
}
// Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('MODULES_ACTION_UPDATE') . ' (' . MODULE_PATH . ')');
// Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION);
exit;
}
global $AVE_DB, $AVE_Template;
/**
* Метод, предназанченный для удаление модуля
*
*/
function moduleDelete()
{
global $AVE_DB, $AVE_Template;
// Подключаем файл с запросами к БД для данного модуля
$module_sql_update = array();
// Подключаем файл с запросами к БД для данного модуля
$module_sql_deinstall = array();
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
if (is_file($sql_file) && @include($sql_file))
{
// Выполняем запросы удаления таблиц модуля
// из массива $module_sql_deinstall файла sql.php
foreach ($module_sql_deinstall as $sql)
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
$mod_file = BASE_DIR . '/modules/' . MODULE_PATH . '/module.php';
if (file_exists($mod_file) && file_exists($sql_file))
{
include($mod_file);
include($sql_file);
// Выполняем запросы обновления модуля
// из массива $module_sql_update файла sql.php
foreach ($module_sql_update as $sql)
{
$AVE_DB->Query(str_replace('CPPREFIX', PREFIX, $sql));
}
}
// Обновляем модуль, если в нем не применяется (отсутствует) файл sql.php
elseif (file_exists($mod_file) && file_exists($sql_file) === false)
{
$AVE_DB->Query(str_replace('CPPREFIX', PREFIX, $sql));
include($mod_file);
$AVE_DB->Query("
UPDATE
" . PREFIX . "_module
SET
ModuleName = '" . $modul['ModuleName'] . "',
ModuleStatus = '1',
ModuleAveTag = '" . $modul['ModuleAveTag'] . "',
ModulePHPTag = '" . $modul['ModulePHPTag'] . "',
ModuleFunction = '" . $modul['ModuleFunction'] . "',
ModuleIsFunction = '" . $modul['ModuleIsFunction'] . "',
ModuleSysName = '" . MODULE_PATH . "',
ModuleVersion = '" . $modul['ModuleVersion'] . "',
ModuleTemplate = '" . $modul['ModuleTemplate'] . "',
ModuleAdminEdit = '" . $modul['ModuleAdminEdit'] . "'
WHERE
ModuleSysName = '" . MODULE_PATH . "'
");
}
// Сохраняем системное сообщение в журнал
reportLog ($AVE_Template->get_config_vars('MODULES_ACTION_UPDATE') . ' (' . MODULE_PATH . ')');
// Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION);
exit;
}
// Удаляем информацию о модуле в таблице module
$AVE_DB->Query("
DELETE
FROM " . PREFIX . "_module
WHERE ModuleSysName = '" . MODULE_PATH . "'
");
/**
* Метод, предназанченный для удаление модуля
*
*/
function moduleDelete()
{
global $AVE_DB, $AVE_Template;
// Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('MODULES_ACTION_DELETE') .' (' . MODULE_PATH . ')');
// Подключаем файл с запросами к БД для данного модуля
$module_sql_deinstall = array();
// Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION);
exit;
}
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
/**
* Метод, предназначенный для отключения/включение модуля в Панели управления
*
*/
function moduleStatusChange()
{
global $AVE_DB, $AVE_Template;
$status = $AVE_DB->Query("
SELECT ModuleName, ModuleStatus FROM " . PREFIX . "_module
WHERE ModuleSysName = '" . MODULE_PATH . "'
")->FetchRow();
$ModuleStatus = ($status->ModuleStatus == "0" || $status->ModuleStatus == NULL) ? "1" : "0";
// Выполняем запрос к БД на смену статуса модуля
$AVE_DB->Query("
UPDATE " . PREFIX . "_module
SET
ModuleStatus = '".$ModuleStatus."'
WHERE
ModuleSysName = '" . MODULE_PATH . "'
");
// Сохраняем системное сообщение в журнал
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);
exit;
}
if (is_file($sql_file) && @include($sql_file))
{
// Выполняем запросы удаления таблиц модуля
// из массива $module_sql_deinstall файла sql.php
foreach ($module_sql_deinstall as $sql)
{
$AVE_DB->Query(str_replace('CPPREFIX', PREFIX, $sql));
}
}
/**
* Метод получения списка модулей
*
* @param int $status статус возвращаемых модулей
* 1 - активные модули
* 0 - неактивные модули
* если не указано возвращает модули без учета статуса
* @return array
*/
function moduleListGet($status = null)
{
global $AVE_DB;
// Удаляем информацию о модуле в таблице module
$AVE_DB->Query("
DELETE
FROM
" . PREFIX . "_module
WHERE
ModuleSysName = '" . MODULE_PATH . "'
");
$modules = array();
// Сохраняем системное сообщение в журнал
reportLog ($AVE_Template->get_config_vars('MODULES_ACTION_DELETE') .' (' . MODULE_PATH . ')');
// Условие, определяющее статус документа для запроса к БД
$where_status = ($status !== null) ? "WHERE ModuleStatus = '" . (int)$status . "'" : '';
// Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION);
exit;
}
// Выполняем запрос к БД и получаем список документов,
// согласно статусу, либо все модули, если статус не указан
$sql = $AVE_DB->Query("
SELECT * FROM " . PREFIX . "_module
" . $where_status . "
ORDER BY ModuleName ASC
");
while ($row = $sql->FetchRow())
/**
* Метод, предназначенный для отключения/включение модуля в Панели управления
*
*/
function moduleStatusChange()
{
$modules[$row->ModuleName] = $row;
global $AVE_DB, $AVE_Template;
$status = $AVE_DB->Query("
SELECT
ModuleName,
ModuleStatus
FROM
" . PREFIX . "_module
WHERE
ModuleSysName = '" . MODULE_PATH . "'
")->FetchRow();
$ModuleStatus = ($status->ModuleStatus == "0" || $status->ModuleStatus == NULL)
? "1"
: "0";
// Выполняем запрос к БД на смену статуса модуля
$AVE_DB->Query("
UPDATE
" . PREFIX . "_module
SET
ModuleStatus = '".$ModuleStatus."'
WHERE
ModuleSysName = '" . MODULE_PATH . "'
");
// Сохраняем системное сообщение в журнал
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);
exit;
}
// Возвращаем список модулей
return $modules;
}
function moduleRemove($dir)
{
global $AVE_DB, $AVE_Template;
$directory = BASE_DIR . '/modules/' . $dir;
function moduleRemove($dir)
{
global $AVE_DB, $AVE_Template;
$files = glob($directory . '*', GLOB_MARK);
foreach($files as $file){
if(substr($file, -1) == '/')
moduleRemove($file);
else
unlink($file);
}
rrmdir($directory);
$directory = BASE_DIR . '/modules/' . $dir;
// Сохраняем системное сообщение в журнал
reportLog($AVE_Template->get_config_vars('MODULES_ACTION_REMOVE') . ' (' . $dir . ')');
$files = glob($directory . '*', GLOB_MARK);
// Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION);
exit;
}
}
foreach ($files as $file)
{
if(substr($file, -1) == '/')
moduleRemove($file);
else
unlink($file);
}
rrmdir ($directory);
// Сохраняем системное сообщение в журнал
reportLog ($AVE_Template->get_config_vars('MODULES_ACTION_REMOVE') . ' (' . $dir . ')');
// Выполянем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION);
exit;
}
}
?>

50
class/class.navigation.php

@ -193,7 +193,8 @@
// Выполняем запрос к БД и получаем всю информацию о данном меню
$row = $AVE_DB->Query("
SELECT *
SELECT
*
FROM
" . PREFIX . "_navigation
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)
{
@ -362,7 +364,7 @@
")->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 . "'");
@ -630,7 +632,7 @@
")->GetCell();
//-- Стираем кеш навигации
$this->clearCahe($_REQUEST['navigation_id'], $alias);
$this->clearCache($_REQUEST['navigation_id'], $alias);
$AVE_Template->assign('select_tpl', 'navigation/select.tpl');
$AVE_Template->assign('items', $items);
@ -714,7 +716,7 @@
")->GetCell();
//-- Стираем кеш навигации
$this->clearCahe($_REQUEST['navigation_id'], $alias);
$this->clearCache($_REQUEST['navigation_id'], $alias);
}
else
{
@ -756,7 +758,7 @@
")->GetCell();
//-- Стираем кеш навигации
$this->clearCahe($_REQUEST['navigation_id'], $alias);
$this->clearCache($_REQUEST['navigation_id'], $alias);
}
$message = 'Пункт меню успешно сохранен';
@ -939,7 +941,7 @@
")->FetchRow();
//-- Стираем кеш навигации
$this->clearCahe($nav->navigation_id, $nav->alias);
$this->clearCache($nav->navigation_id, $nav->alias);
// Выполняем обновление страницы
header('Location:' . get_referer_admin_link());
@ -995,7 +997,7 @@
")->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)");
@ -1054,7 +1056,7 @@
")->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)");
@ -1103,7 +1105,7 @@
")->FetchRow();
//-- Стираем кеш навигации
$this->clearCahe($nav->navigation_id, $nav->alias);
$this->clearCache($nav->navigation_id, $nav->alias);
$AVE_Template->assign('item', $item);
$AVE_Template->assign('content', $AVE_Template->fetch('navigation/item.tpl'));
@ -1152,7 +1154,7 @@
")->FetchRow();
//-- Стираем кеш навигации
$this->clearCahe($nav->navigation_id, $nav->alias);
$this->clearCache($nav->navigation_id, $nav->alias);
if (isAjax())
{
@ -1248,7 +1250,7 @@
")->FetchRow();
//-- Стираем кеш навигации
$this->clearCahe($nav->navigation_id, $nav->alias);
$this->clearCache($nav->navigation_id, $nav->alias);
echo json_encode(
array(
@ -1260,7 +1262,7 @@
}
function clearCahe($id, $alias = '')
function clearCache($id, $alias = '')
{
if (file_exists(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');
}
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']);
$AVE_DB->clear_request($request_id);
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');
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);
exit;
}else{
if (!$message){
}
else
{
if (! $message)
{
$message = $AVE_Template->get_config_vars('REQUEST_COND_NEW_SUC');
$header = $AVE_Template->get_config_vars('REQUEST_SUCCESS');
$theme = 'accept';

3697
class/class.rubs.php

File diff suppressed because it is too large Load Diff

142
class/class.settings.php

@ -218,6 +218,8 @@ class AVE_Settings
}
else
{
$this->clearSettingsCache();
$_SESSION['use_editor'] = intval($_REQUEST['use_editor']);
$message = $AVE_Template->get_config_vars('SETTINGS_SAVED');
$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'));
}
/**
* Метод Редактирования параметров языков
*
@ -340,6 +343,7 @@ class AVE_Settings
$AVE_Template->assign('content', $AVE_Template->fetch('settings/settings_lang_edit.tpl'));
}
function settingsLanguageEditSave()
{
global $AVE_DB, $AVE_Template;
@ -589,5 +593,143 @@ class AVE_Settings
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>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();
$argc = func_num_args();

47
class/class.user.php

@ -32,24 +32,25 @@ class AVE_User
* @public array
*/
public $_allowed_admin_permission = array(
'alles', // все права
'adminpanel', // доступ в админку
'group_view', 'group_edit', // группы пользователей
'user_view', 'user_edit', 'user_perms', // пользователи
'template_view', 'template_edit', 'template_php', // шаблоны
'rubric_view', 'rubric_edit', 'rubric_php', 'rubric_perms', 'rubric_code', // рубрики
'document_view', 'document_php', 'document_revisions', // документы
'remark_view', 'remark_edit', // заметки
'request_view', 'request_edit', 'request_php', // запросы
'navigation_view', 'navigation_edit', // навигация
'blocks_view', 'blocks_edit', // визуальные блоки
'sysblocks_view', 'sysblocks_edit', // системные блоки
'modules_view', 'modules_admin', 'modules_system', // модули
'mediapool_int', 'mediapool_add', 'mediapool_del', 'mediapool_finder', // файловый менеджер
'gen_settings', 'gen_settings_more', 'gen_settings_countries', 'gen_settings_languages', // общие настройки
'db_actions', // база данных
'logs_view', 'logs_clear', // логи
'cache_clear', 'cache_thumb' // сессии и кеш
'alles', // все права
'adminpanel', // доступ в админку
'group_view', 'group_edit', // группы пользователей
'user_view', 'user_edit', 'user_perms', // пользователи
'template_view', 'template_edit', 'template_php', // шаблоны
'rubric_view', 'rubric_edit', 'rubric_php', 'rubric_perms', 'rubric_code', // рубрики
'document_view', 'document_php', 'document_revisions', // документы
'remark_view', 'remark_edit', // заметки
'request_view', 'request_edit', 'request_php', // запросы
'navigation_view', 'navigation_edit', // навигация
'blocks_view', 'blocks_edit', // визуальные блоки
'sysblocks_view', 'sysblocks_edit', // системные блоки
'modules_view', 'modules_admin', 'modules_system', // модули
'mediapool_int', 'mediapool_add', 'mediapool_del', 'mediapool_finder', // файловый менеджер
'gen_settings', 'gen_settings_more', 'gen_settings_countries', 'gen_settings_languages', // общие настройки
'gen_settings_robots', 'gen_settings_fcustom',
'db_actions', // база данных
'logs_view', 'logs_clear', // логи
'cache_clear', 'cache_thumb' // сессии и кеш
);
/**
@ -309,8 +310,10 @@ class AVE_User
SELECT
user_group_name,
user_group_permission
FROM " . PREFIX . "_user_groups
WHERE user_group = '" . $user_group_id . "'
FROM
" . PREFIX . "_user_groups
WHERE
user_group = '" . $user_group_id . "'
")->FetchRow();
}
@ -321,9 +324,9 @@ class AVE_User
else
{
$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('modules', $AVE_Module->moduleListGet(1));
$AVE_Template->assign('modules', $AVE_Module->_modules);
}
}

26
fields/checkbox/field.php

@ -12,7 +12,7 @@
*/
// Чекбокс (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;
@ -20,7 +20,9 @@ function get_field_checkbox($field_value, $action, $field_id=0, $tpl='', $tpl_em
$fld_dir = dirname(__FILE__) . '/';
$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->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));
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin');
return $AVE_Template->fetch($tpl_file);
return $AVE_Template->fetch($tpl_file);
break;
case 'doc':
$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');
if($tpl_empty && $tpl_file)
if ($tpl_empty && $tpl_file)
{
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('field_value', $field_value);
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':
$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');
if($tpl_empty && $tpl_file)
if ($tpl_empty && $tpl_file)
{
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('field_value', $field_value);
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':
$field_value = clean_php($field_value);
$res = ((int)$field_value === 1) ? $field_value : '0';
$res = ((int)$field_value === 1)
? $field_value
: '0';
break;
case 'name':

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

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

288
fields/teasers/field.php

@ -1,165 +1,167 @@
<?php
/**
* Поле Цена
*/
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;
/**
* Teasers
*/
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;
$fld_dir = dirname(__FILE__) . '/';
$tpl_dir = $fld_dir . 'tpl/';
$fld_name = basename($fld_dir);
$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';
$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');
$AVE_Template->config_load($lang_file, 'lang');
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
$AVE_Template->config_load($lang_file, 'admin');
switch ($action)
{
case 'edit':
switch ($action)
{
case 'edit':
$items = array();
$items = array();
$items = unserialize($field_value);
$items = unserialize($field_value);
if($items != false){
if($items != false){
foreach($items as $k => $v){
$list_item = explode('|', $v);
foreach($items as $k => $v){
$list_item = explode('|', $v);
$list[$k]['param'] = (isset($list_item[0])) ? htmlspecialchars($list_item[0], ENT_QUOTES) : '';
$list[$k]['value'] = (isset($list_item[1])) ? htmlspecialchars($list_item[1], ENT_QUOTES) : '';
}
$list[$k]['param'] = (isset($list_item[0])) ? htmlspecialchars($list_item[0], ENT_QUOTES) : '';
$list[$k]['value'] = (isset($list_item[1])) ? htmlspecialchars($list_item[1], ENT_QUOTES) : '';
}
$items = $list;
}
$items = $list;
}
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin');
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin');
$AVE_Template->assign('doc_id', $_REQUEST['Id']);
$AVE_Template->assign('items', $items);
$AVE_Template->assign('field_dir', $fld_name);
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('doc_id', $_REQUEST['Id']);
$AVE_Template->assign('items', $items);
$AVE_Template->assign('field_dir', $fld_name);
$AVE_Template->assign('field_id', $field_id);
return $AVE_Template->fetch($tpl_file);
return $AVE_Template->fetch($tpl_file);
case 'save':
foreach ($field_value as $v)
{
if(! empty($v['value']) && ! empty($v['param']))
case 'save':
foreach ($field_value as $v)
{
$field_value_new[] = $v['param'] . ($v['value'] ? '|' . $v['value'] : '');
if(! empty($v['value']) && ! empty($v['param']))
{
$field_value_new[] = $v['param'] . ($v['value'] ? '|' . $v['value'] : '');
}
}
}
if (isset($field_value_new))
{
return @serialize($field_value_new);
}
else
{
return $field_value_new = '';
}
break;
case 'doc':
$items = (isset($field_value)) ? unserialize($field_value) : array();
$res = array();
if ($items != false)
{
foreach($items as $item)
if (isset($field_value_new))
{
return @serialize($field_value_new);
}
else
{
return $field_value_new = '';
}
break;
case 'doc':
$items = (isset($field_value))
? unserialize($field_value)
: array();
$res = array();
if ($items != false)
{
$item = explode('|', $item);
foreach($items as $item)
{
$item = explode('|', $item);
if ($item[1])
$res[] = eval2var('?>' . showteaser($item[1]) . '<?');
if ($item[1])
$res[] = showteaser($item[1]);
}
}
}
return (! empty($res))
? implode(PHP_EOL, $res)
: $tpl;
break;
case 'req':
return get_field_default($field_value, $action, $field_id, $tpl, $tpl_empty);
case 'name' :
return $AVE_Template->get_config_vars('name');
break;
case 'search':
$field_default = explode(',', $default);
$zap_1 = ($field_default[0]) ? ',' : '';
$zap_2 = ($field_default[0] && $field_default[1]) ? ',' : '';
$sel_1 = ($field_default[0]) ? 'b.field_value as b1' : '';
$sel_2 = ($field_default[1]) ? 'c.field_value as c1' : '';
$from_1 = ($field_default[0]) ? PREFIX . '_document_fields b' : '';
$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_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_2 = ($field_default[1]) ? "OR (UPPER(c.field_value) LIKE UPPER('%" . $_REQUEST['q'] . "%'))" : "";
$sql = $AVE_DB->Query("
SELECT
a.Id,
a.document_title
$zap_1
$sel_1
$zap_2
$sel_2
FROM
" . PREFIX . "_documents a
$zap_1
" . $from_1 . "
$zap_2
" . $from_2 . "
WHERE
a.rubric_id = '" . $_REQUEST['rubric_id'] . "'
AND
a.document_status = 1
" . $search_1 . "
" . $search_2 . "
AND
(
(UPPER(document_title) LIKE UPPER('%" . $_REQUEST['q'] . "%'))
$or_1
$or_2
)
GROUP BY a.Id
LIMIT 0,5
");
$doc_finded = array();
while ($row = $sql->FetchRow())
{
$doc_finded[] = array(
'doc_id' => $row->Id,
'doc_title' => $row->document_title,
'doc_name' => (($field_default[0]) ? $row->b1 : $row->document_title),
'doc_article' => (($field_default[1]) ? $row->c1 : '')
);
}
echo json_encode($doc_finded);
exit;
default:
return $field_value;
}
return ($res ? $res : $field_value);
}
return (! empty($res))
? implode(PHP_EOL, $res)
: $tpl;
break;
case 'req':
return get_field_default($field_value, $action, $field_id, $tpl, $tpl_empty);
case 'name' :
return $AVE_Template->get_config_vars('name');
break;
case 'search':
$field_default = explode(',', $default);
$zap_1 = ($field_default[0]) ? ',' : '';
$zap_2 = ($field_default[0] && $field_default[1]) ? ',' : '';
$sel_1 = ($field_default[0]) ? 'b.field_value as b1' : '';
$sel_2 = ($field_default[1]) ? 'c.field_value as c1' : '';
$from_1 = ($field_default[0]) ? PREFIX . '_document_fields b' : '';
$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_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_2 = ($field_default[1]) ? "OR (UPPER(c.field_value) LIKE UPPER('%" . $_REQUEST['q'] . "%'))" : '';
$sql = $AVE_DB->Query("
SELECT
a.Id,
a.document_title
$zap_1
$sel_1
$zap_2
$sel_2
FROM
" . PREFIX . "_documents a
$zap_1
" . $from_1 . "
$zap_2
" . $from_2 . "
WHERE
a.rubric_id = '" . $_REQUEST['rubric_id'] . "'
AND
a.document_status = 1
" . $search_1 . "
" . $search_2 . "
AND
(
(UPPER(document_title) LIKE UPPER('%" . $_REQUEST['q'] . "%'))
$or_1
$or_2
)
GROUP BY a.Id
LIMIT 0,5
");
$doc_finded = array();
while ($row = $sql->FetchRow())
{
$doc_finded[] = array(
'doc_id' => $row->Id,
'doc_title' => $row->document_title,
'doc_name' => (($field_default[0]) ? $row->b1 : $row->document_title),
'doc_article' => (($field_default[1]) ? $row->c1 : '')
);
}
echo json_encode($doc_finded);
exit;
default:
return $field_value;
}
return ($res ? $res : $field_value);
}
?>

49
fields/teasers/js/field.js

@ -1,4 +1,4 @@
var Analoque = {
var Teasers = {
init: false,
@ -57,7 +57,7 @@ var Analoque = {
$('.AddButton').on('click', function() {
c_id = $(this).parent().parent('.analoque_lists').attr("data-id");
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(
'<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>' +
@ -65,7 +65,7 @@ var Analoque = {
'</div>'
);
Analoque.Analoque_update();
Teasers.Analoque_update();
});
},
@ -81,6 +81,8 @@ var Analoque = {
*/
Analoque_search: function() {
var res_search = false;
$('.search_analoque').on('input', function(event)
{
event.preventDefault();
@ -92,28 +94,40 @@ var Analoque = {
var kid = query.attr('data-id');
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(),
max: 10,
max: 5,
dataType: "json",
matchContains: "word",
scroll: true,
scrollHeight: 200,
parse: function(data) {
return $.map(data, function(row) {
return {
data: row,
value: row.doc_title,
result: query.val()
}
});
res_search = false;
if (typeof data === 'object')
{
return $.map(data, function(row) {
return {
data: row,
value: row.doc_title,
result: query.val()
}
});
}
return false;
},
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>';
}
}).result(function(e, item) {
query.val(item.doc_name);
field_id_input.val(item.doc_id);
query.val(item.doc_name);
field_id_input.val(item.doc_id);
});
return false;
@ -123,7 +137,6 @@ var Analoque = {
}
}
$(document).ready(function()
{
Analoque.init();
$(document).ready(function() {
Teasers.init();
});

4
fields/teasers/tpl/field.tpl

@ -1,5 +1,5 @@
{if $analoque != load}
{assign var=analoque value='' scope="global"}
{assign var=teasers value='' scope="global"}
{if $smarty.request.outside}
<script src="{$ABS_PATH}fields/{$field_dir}/js/outside.js" type="text/javascript"></script>
{else}
@ -14,7 +14,7 @@
var analoque_del_conf = '{#del_conf#}';
var analoque_del_head = '{#del_head#}';
</script>
{assign var=analoque value="load" scope="global"}
{assign var=teasers value="load" scope="global"}
{/if}
<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]
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]
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]
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]
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]
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]
name = "YouTube"
f_url = "Url"
f_width = "Width"
f_height = "Height"
f_fullscreen = "Fullscreen"
f_allow = "Allow"
f_forbidden = "Forbidden"
f_metod = "Metod"

16
fields/youtube/tpl/field.tpl

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

11
functions/func.block.php

@ -29,6 +29,10 @@ function parse_block($id)
{
$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)))
mkdir(dirname($cache_file), 0766, true);
@ -48,7 +52,8 @@ function parse_block($id)
LIMIT 1
")->GetCell();
file_put_contents($cache_file,$return);
if ($cache_file)
file_put_contents($cache_file, $return);
}
//-- парсим теги
@ -84,9 +89,9 @@ function parse_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;
}
}
?>
?>

21
functions/func.breadcrumbs.php

@ -62,8 +62,17 @@
$lang_home_alias = $AVE_DB->Query($sql)->FetchRow();
$search = array('[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);
$search = array(
'[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);
@ -74,7 +83,7 @@
if ($bread_sepparator_use)
$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)
@ -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);
if (! $noprint)
@ -211,4 +222,4 @@
return $crumbs[$curent_document];
}
?>
?>

41
functions/func.common.php

@ -15,8 +15,8 @@
/**
* Вставляем файл с пользовательскими функциями
*/
if (file_exists(BASE_DIR."/functions/func.custom.php"))
include (BASE_DIR."/functions/func.custom.php");
if (file_exists(BASE_DIR . '/functions/func.custom.php'))
include (BASE_DIR . '/functions/func.custom.php');
/**
@ -255,9 +255,7 @@
static $settings = null;
if ($settings === null)
{
$settings = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_settings", SYSTEM_CACHE_LIFETIME)->FetchAssocArray();
}
$settings = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_settings", SYSTEM_CACHE_LIFETIME, 'settings')->FetchAssocArray();
if ($field == '')
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;
}
/**
* Формирование строки из случайных символов
*
@ -1084,4 +1113,4 @@
?>
?>

105
functions/func.fields.php

@ -76,7 +76,7 @@
return '<input type="text" style="width: 400px" name="feld[' . $field_id . ']" value="' . $field_value . '">';
case 'doc':
case 'req':
if (!$tpl_empty)
if (! $tpl_empty)
{
$field_param = explode('|', $field_value);
$field_value = preg_replace_callback(
@ -90,7 +90,8 @@
}
return $field_value;
default: return $field_value;
default:
return $field_value;
}
}
@ -171,14 +172,29 @@
*
* @return string
*/
function get_field_num($rubric_id, $alias){
function get_field_num($rubric_id, $alias)
{
global $AVE_DB;
static $alias_field_id=array();
if(isset($alias_field_id[$rubric_id][$alias])) return $alias_field_id[$rubric_id][$alias];
$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();
static $alias_field_id = array();
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];
}
/**
* Возвращаем
*
@ -196,11 +212,18 @@
if(isset($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];
}
/**
* Возвращаем шаблон tpl или пусто
*
@ -210,25 +233,41 @@
*
* @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);
switch ($type) {
switch ($type)
{
case '':
case 'admin':
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 : '';
break;
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 : '';
break;
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 : '';
break;
}
@ -245,7 +284,7 @@
*
* @return string
*/
function document_get_field($field_id, $document_id=null)
function document_get_field($field_id, $document_id = null)
{
global $AVE_Core;
@ -370,7 +409,7 @@
if (! is_numeric($document_id))
return false;
if (!isset ($document_fields[$document_id]))
if (! isset($document_fields[$document_id]))
{
$document_fields[$document_id] = false;
@ -446,6 +485,7 @@
$document_fields[$row['document_id']][$row['rubric_field_alias']] = $row['rubric_field_id'];
}
}
return $document_fields[$document_id];
}
@ -650,4 +690,37 @@
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 Вырезает середину, оставляет начало + разделитель + конец
* @return mixed|string
*/
if (!function_exists('trancate'))
if (! function_exists('trancate'))
{
function truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
{
if ($length == 0)
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)
{
$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
{
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
@ -409,7 +409,9 @@ if (!function_exists('truncate_text'))
if (strlen($out) >= $n)
{
$out = trim($out);
return (strlen($out) == strlen($str)) ? $out : $out . $end_char;
return (strlen($out) == strlen($str))
? $out
: $out . $end_char;
}
}
return $str;

153
functions/func.navigation.php

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

1870
functions/func.parserequest.php

File diff suppressed because it is too large Load Diff

9
functions/func.sysblock.php

@ -33,6 +33,10 @@ function parse_sysblock($id)
$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)))
mkdir(dirname($cache_file), 0766, true);
@ -52,7 +56,8 @@ function parse_sysblock($id)
LIMIT 1
")->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);
$GLOBALS['block_generate'][] = array('SYSBLOCK_'. $id => $gen_time);
$GLOBALS['block_generate']['SYSBLOCK'][$id] = $gen_time;
return $return;
}

23
inc/config.php

@ -11,9 +11,9 @@
* @license GPL v.2
*/
@define('APP_NAME', 'AVE.CMS');
@define('APP_VERSION', '3.22');
@define('APP_INFO', '<a target="_blank" href="http://www.ave-cms.ru/">Ave-Cms.Ru</a> '.'&copy; 2007-' . date('Y'));
@define('APP_NAME', 'AVE.cms');
@define('APP_VERSION', '3.24');
@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']['REWRITE_MODE'] = array('DESCR' =>'Использовать ЧПУ Адреса вида index.php будут преобразованы в /home/','default'=>true,'TYPE'=>'bool','VARIANT'=>'');
@ -24,10 +24,8 @@
$themes = array();
foreach (glob(dirname(dirname(__FILE__)) . '/templates/*') as $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);
@ -35,7 +33,7 @@
$GLOBALS['CMS_CONFIG']['CODEMIRROR_THEME'] = array(
'DESCR' => 'Цветовая схема Codemirror',
'default' => 'default',
'default' => 'dracula',
'TYPE' => 'dropdown',
'VARIANT' => array(
'default',
@ -90,6 +88,7 @@
);
$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_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']['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');
foreach($GLOBALS['CMS_CONFIG'] as $k => $v)
{
if(! defined($k))
define($k, $v['default']);
}
?>
?>

20
inc/init.php

@ -359,7 +359,7 @@
lang_status = '1'
ORDER BY
lang_default ASC
", SYSTEM_CACHE_LIFETIME);
", SYSTEM_CACHE_LIFETIME, 'langs');
while ($row = $sql->FetchRow())
{
@ -394,6 +394,14 @@
// Язык системы
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
require (BASE_DIR . '/class/class.template.php');
@ -403,12 +411,4 @@
// Класс Модулей
require (BASE_DIR . '/class/class.modules.php');
$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#
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
(

79
install/structure_base.sql

@ -1,13 +1,14 @@
CREATE TABLE `%%PRFX%%_blocks` (
`id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
`block_name` varchar(255) NOT NULL,
`block_description` tinytext NOT NULL,
`block_alias` varchar(20) NOT NULL,
`block_text` longtext NOT NULL,
`block_active` enum('0','1') NOT NULL DEFAULT '1',
`block_author_id` int(10) unsigned NOT NULL DEFAULT '1',
`block_created` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
`id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
`block_name` varchar(255) NOT NULL,
`block_description` tinytext NOT NULL,
`block_alias` varchar(20) NOT NULL,
`block_text` longtext NOT NULL,
`block_active` enum('0','1') NOT NULL DEFAULT '1',
`block_author_id` int(10) unsigned NOT NULL DEFAULT '1',
`block_created` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `block_alias` (`block_alias`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
CREATE TABLE `%%PRFX%%_countries` (
@ -20,22 +21,22 @@ CREATE TABLE `%%PRFX%%_countries` (
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#inst#
CREATE TABLE `%%PRFX%%_document_fields` (
`Id` int(10) unsigned NOT NULL auto_increment,
`rubric_field_id` mediumint(5) 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',
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`rubric_field_id` mediumint(5) 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_value` varchar(500) NOT NULL,
`document_in_search` enum('1','0') NOT NULL default '1',
PRIMARY KEY (`Id`),
`document_in_search` enum('1','0') NOT NULL DEFAULT '1',
PRIMARY KEY (`Id`),
KEY `document_id` (`document_id`),
KEY `rubric_field_id` (`rubric_field_id`,`document_in_search`),
KEY `field_value` (`field_value`(333))
KEY `field_value` (`field_value`),
KEY `rubric_field_id` (`rubric_field_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
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',
`document_id` int(10) unsigned NOT NULL default '0',
`document_id` int(10) unsigned NOT NULL DEFAULT '0',
`field_value` longtext NOT NULL,
PRIMARY KEY (`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_status` enum('1','0') NOT NULL default '1',
`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#
CREATE TABLE `%%PRFX%%_document_rev` (
@ -70,7 +72,8 @@ CREATE TABLE `%%PRFX%%_document_rev` (
`doc_revision` int(10) unsigned NOT NULL DEFAULT '0',
`doc_data` longtext NOT NULL,
`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#
CREATE TABLE `%%PRFX%%_documents` (
@ -101,7 +104,7 @@ CREATE TABLE `%%PRFX%%_documents` (
`document_tags` text NOT NULL,
`document_lang` varchar(5) NOT NULL,
`document_lang_group` int(10) NOT NULL DEFAULT '0',
`document_property` text NOT NULL,
`document_property` text,
PRIMARY KEY (`Id`),
UNIQUE KEY `document_alias` (`document_alias`),
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_changed` int(10) unsigned NOT NULL DEFAULT '0',
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#
CREATE TABLE `%%PRFX%%_document_tags` (
@ -179,7 +183,8 @@ CREATE TABLE `%%PRFX%%_navigation` (
`end` text NOT NULL,
`user_group` text NOT NULL,
`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#
CREATE TABLE `%%PRFX%%_navigation_items` (
@ -249,6 +254,7 @@ CREATE TABLE `%%PRFX%%_request` (
`request_ajax` enum('0','1') NOT NULL DEFAULT '0',
`request_show_sql` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`Id`),
KEY `rubric_id` (`rubric_id`),
KEY `request_alias` (`request_alias`)
) 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_position` smallint(3) unsigned 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#
CREATE TABLE `%%PRFX%%_rubric_fields` (
@ -271,16 +278,17 @@ CREATE TABLE `%%PRFX%%_rubric_fields` (
`rubric_field_alias` varchar(20) NOT NULL,
`rubric_field_title` varchar(255) 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_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_request` text NOT NULL,
`rubric_field_description` text NOT NULL,
PRIMARY KEY (`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#
CREATE TABLE `%%PRFX%%_rubric_fields_group` (
@ -332,6 +340,7 @@ CREATE TABLE `%%PRFX%%_rubrics` (
`rubric_teaser_template` text NOT NULL,
`rubric_admin_teaser_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_description` text 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`)
) 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` (
`id` mediumint(5) unsigned NOT NULL AUTO_INCREMENT,
`sysblock_name` varchar(255) NOT NULL,
@ -499,7 +517,8 @@ CREATE TABLE `%%PRFX%%_users_session` (
`ip` int(32) unsigned NOT NULL,
`agent` varchar(255) NOT NULL,
`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#
CREATE TABLE `%%PRFX%%_view_count` (
@ -508,4 +527,4 @@ CREATE TABLE `%%PRFX%%_view_count` (
`day_id` int(11) NOT NULL,
`count` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;#inst#
Loading…
Cancel
Save