Browse Source

Добавлен Модуль Публикатор документов

master
SVarlamov 8 years ago
commit
ff8b78bee8
  1. 13
      README.md
  2. 380
      class.editdoc.php
  3. 4
      index.php
  4. 4
      lang/index.php
  5. 39
      lang/ru.txt
  6. 77
      module.php
  7. 52
      sql.php
  8. 370
      templates/admin_edit.tpl
  9. 120
      templates/admin_list.tpl
  10. 4
      templates/index.php

13
README.md

@ -0,0 +1,13 @@
## editdoc
# Модуль Публикатор документов v1.0.1
## Данный модуль предназначен для создания форм ввода и редактирования документов на сайте
## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку editdoc со всем ее содержимым внутри!
## Changelog:
16.01.2013 - версия 1.0.1

380
class.editdoc.php

@ -0,0 +1,380 @@
<?php
class editdoc
{
/**
* Метод, предназначенный для получения структуры документа из БД
*
* @param int $document_id идентификатор Документа
* return - возвращает документ положенный в структуру ....
**/
public static function documentGet($document_id,$rubric_id=0){
global $AVE_DB;
//var_dump($document_id);
$document_id=(int)$document_id;
$rubric_id=(int)$rubric_id;
if($document_id==0&&$rubric_id==0)return false;
$sql="SELECT * FROM " . PREFIX . "_documents WHERE Id='$document_id' and document_author_id=".$_SESSION['user_id']." LIMIT 1";
$rows=$AVE_DB->Query($sql);
if($rows->NumRows()>0)$rubric_id=0;
if($rubric_id>0)$rows=$AVE_DB->Query("SELECT * FROM " . PREFIX . "_documents LIMIT 1");
while ($row = $rows->FetchAssocArray()) {
$header=$row;
}
if($rubric_id>0)foreach($header as $k=>&$v)$v="";
$felds=array();
$feldsType=array();
if(!$rubric_id>0){
$rows=$AVE_DB->Query("
SELECT
doc.Id AS df_id,
rub.*,
rubric_field_default,
doc.field_value
FROM " . PREFIX . "_rubric_fields AS rub
LEFT JOIN " . PREFIX . "_document_fields AS doc ON rubric_field_id = rub.Id
WHERE document_id = '" . $document_id . "' AND rubric_id
ORDER BY rubric_field_position ASC
");
}else{
$rows=$AVE_DB->Query("
SELECT
0 as df_id,
rub.*,
rubric_field_default,
rubric_field_default as field_value
FROM " . PREFIX . "_rubric_fields AS rub
WHERE rub.rubric_id = '" . $rubric_id . "'
ORDER BY rubric_field_position ASC
");
}
while ($row = $rows->FetchAssocArray()) {
$felds[$row['Id']]=$row['df_id'] ? $row['field_value'] : $row['rubric_field_default'];
$feldsType[$row['Id']]['type']=$row['rubric_field_type'];
$feldsType[$row['Id']]['title']=$row['rubric_field_title'];
}
$result['header']=$header;
$result['body']=$felds;
$result['feld_type']=$feldsType;
//echo "<pre>";
//var_dump($result);
//echo "</pre>";
return $result;
}
public static function EditDocList($tpl_dir)
{
global $AVE_DB, $AVE_Template;
$imports = array();
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_editdoc");
while ($result = $sql->FetchRow())
{
array_push($imports, $result);
}
$rubs = array();
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_rubrics");
while ($result = $sql->FetchRow())
{
array_push($rubs, $result);
}
$AVE_Template->assign('editdocs', $imports);
$AVE_Template->assign('rubs', $rubs);
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_list.tpl'));
}
/**
* Добавление нового
*
* @param int $import_id идентификатор
* @param string $tpl_dir - путь к папке с шаблонами модуля
*
*/
public static function EditDocNew($tpl_dir)
{
global $AVE_DB, $AVE_Template;
$rubs = array();
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_rubrics");
while ($result = $sql->FetchRow())
{
array_push($rubs, $result);
}
$AVE_Template->assign('rubs',$rubs);
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_edit.tpl'));
}
/**
* Редактирование
*
* @param int $import_id идентификатор
* @param string $tpl_dir - путь к папке с шаблонами модуля
*
*/
public static function EditDocEdit($import_id, $tpl_dir)
{
global $AVE_DB, $AVE_Template,$AVE_Document;
if (is_numeric($import_id))
{
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_editdoc
WHERE id = '" . $import_id . "'
");
$row = $sql->FetchAssocArray();
}
else
{
$row['editdoc_name'] = '';
$row['editdoc_fill_filters']='';
}
$row['editdoc_fill_filters']=unserialize(base64_decode($row['editdoc_fill_filters']));
$rubs = array();
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_rubrics");
while ($result = $sql->FetchRow())
{
array_push($rubs, $result);
}
$AVE_Template->assign('rubs',$rubs);
$data=editdoc::getRubricFields($row['editdoc_rub'],$row['editdoc_fill_filters']);
//$data=editdoc::documentGet(null,$import_id);
if(!$row['editdoc_template']){
$tmpl="<form method=\"post\">\r\n
<input type=\"hidden\" name=\"editdoc_action\" value=\"$import_id\">\r\n
<input type=\"hidden\" name=\"editdoc_doc_id\" value=\"<?php echo @\$_REQUEST['editdoc_doc_id']?>\">\r\n
";
foreach($data['header'] as $k => $v)
$tmpl.=" <div id=\"edit_doc_header_$k\">[header:$k]</div>\r\n";
foreach($data['body'] as $k => $v)
$tmpl.=" <div id=\"edit_doc_body_$k\"><label>".$v[0]."</label>[body:$k]</div>\r\n";
$tmpl.='<input type="submit" value="Сохранить"></form>';
$row['editdoc_template']=$tmpl;
}
$AVE_Template->assign('data',$data);
unset($row['editdoc_fill_filters']);
$AVE_Template->assign($row);
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_edit.tpl'));
}
/**
* Удаление
*
* @param int $import_id идентификатор
*/
public static function EditDocDelete($import_id)
{
global $AVE_DB;
if (is_numeric($import_id))
{
$AVE_DB->Query("
DELETE
FROM " . PREFIX . "_module_editdoc
WHERE id = '" . $import_id . "'
");
}
header('Location:index.php?do=modules&action=modedit&mod=editdoc&moduleaction=1&cp=' . SESSION);
}
/**
* Получение полей Документа
*
* @param inc $id - идентификатор рубрики
* @param array $array - массив со значениями
*/
public static function getRubricFields($id,$array)
{
global $AVE_DB;
$res=array();
if(!is_array($array))$array=Array();
$res=Array();
$res['header']=array();
$res['header']['document_parent'][0]=($array['header']['document_parent'] ? $array['header']['document_parent'] : "<?\r\n return '0';\r\n?>");
$res['header']['document_title'][0]=($array['header']['document_title'] ? $array['header']['document_title'] : "<?\r\n return \$_REQUEST['document_title'] ? \$_REQUEST['document_title'] : \$data['header']['document_title'] ;\r\n?>");
$res['header']['document_alias'][0]=($array['header']['document_alias'] ? $array['header']['document_alias'] : "<?\r\n return '';\r\n?>");
$res['header']['document_published'][0]=($array['header']['document_published'] ? $array['header']['document_published'] : "<?\r\n \$res= \$_REQUEST['document_published'] ? \$_REQUEST['document_published'] : \$data['header']['document_published'];\r\n return (\$res ? \$res : date('d.m.Y H:i'));\r\n?>");
$res['header']['document_expire'][0]=($array['header']['document_expire'] ? $array['header']['document_expire'] : "<?\r\n \$res= \$_REQUEST['document_expire'] ? \$_REQUEST['document_expire'] : \$data['header']['document_expire'];\r\n return (\$res ? \$res : date('d.m.Y H:i',strtotime('+20 years')));\r\n?>");
$res['header']['document_meta_keywords'][0]=($array['header']['document_meta_keywords'] ? $array['header']['document_meta_keywords'] : "<?\r\n return '';\r\n?>");
$res['header']['document_meta_description'][0]=($array['header']['document_meta_description'] ? $array['header']['document_meta_description'] : "<?\r\n return '';\r\n?>");
$res['header']['document_in_search'][0]=($array['header']['document_in_search'] ? $array['header']['document_in_search'] : "<?\r\n return '0';\r\n?>");
$res['header']['document_meta_robots'][0]=($array['header']['document_meta_robots'] ? $array['header']['document_meta_robots'] : "<?\r\n return 'index,follow';\r\n?>");
$res['header']['document_status'][0]=($array['header']['document_status'] ? $array['header']['document_status'] : "<?\r\n return '0';\r\n?>");
$res['header']['document_deleted'][0]=($array['header']['document_deleted'] ? $array['header']['document_deleted']: "<?\r\n return '0';\r\n?>");
$res['header']['document_count_print'][0]=($array['header']['document_count_print'] ? $array['header']['document_count_print'] : "<?\r\n return '0';\r\n?>");
$res['header']['document_count_view'][0]=($array['header']['document_count_view'] ? $array['header']['document_count_view'] : "<?\r\n return '0';\r\n?>");
$res['header']['document_linked_navi_id'][0]=($array['header']['document_linked_navi_id'] ? $array['header']['document_linked_navi_id'] : "<?\r\n return '0';\r \n?>");
foreach($res['header'] as $k=>$v)$res['header'][$k][1]=(isset($array['template'][$k]) ? $array['template'][$k] :'');
$sql = $AVE_DB->Query("select * from ".PREFIX."_rubric_fields where rubric_id=".$id);
while ($result = $sql->FetchAssocArray())
{
$func='get_field_'.$result['rubric_field_type'];
if(!is_callable($func)) $func='get_field_default';
$val='<?php echo htmlspecialchars(stripslashes($_REQUEST["feld"]['.$result['Id'].'] ? ($_REQUEST["feld"]['.$result['Id'].']) : $data["body"]['.$result['Id'].']));?>';
$field=$func("{{ХХХХ}}",'edit',$result['Id'],'',0,$x,0,0,$result['rubric_field_default']);
$field=str_ireplace('{{ХХХХ}}',$val,$field);
$a=array(
'0'=>$result['rubric_field_title'],
'1'=>(
$array['body'][$result['Id']] ?
$array['body'][$result['Id']]:
"<?\r\n return (isset(\$_REQUEST['feld'][".$result['Id']."]) ? \$_REQUEST['feld'][".$result['Id']."] : \$data['body'][".$result['Id']."]);\r\n?>"
),
'2'=>(isset($array['template'][$result['Id']]) ? $array['template'][$result['Id']] : $field)
);
$res['body'][$result['Id']]=$a;
}
return $res;
}
/**
* Сохранение импорта
*
* @param int $import_id идентификатор импорта
*/
public static function EditDocSave($import_id = null)
{
global $AVE_DB;
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}
$v=base64_encode(serialize(stripslashes_deep($_REQUEST['document'])));
if (is_numeric($import_id))
{
$sql="
UPDATE " . PREFIX . "_module_editdoc
SET
`editdoc_name` = '" . ($_REQUEST['editdoc_name']) . "',
".($_REQUEST['editdoc_rub']> '' ? "`editdoc_rub` = '" . ($_REQUEST['editdoc_rub']) . "'," : "")."
`editdoc_lastchange` = '" . ($_REQUEST['editdoc_lastchange']) . "',
`editdoc_fill_filters` = '" . $v . "',
`editdoc_template` = '" . $_REQUEST['editdoc_template'] . "',
`editdoc_afteredit` = '" . (($_REQUEST['editdoc_afteredit'] ? $_REQUEST['editdoc_afteredit'] : addslashes("<?php
//header('Location: /'.rewrite_link('index.php?id='.\$GLOBALS['mod_editdoc'][".$import_id."]));
//exit();
?>"))) . "'
WHERE
id = '" . $import_id . "'
";
}
else
{
$sql="
INSERT
INTO " . PREFIX . "_module_editdoc
SET
id = '',
`editdoc_name` = '" . ($_REQUEST['editdoc_name']) . "',
".($_REQUEST['editdoc_rub']> '' ? "`editdoc_rub` = '" . ($_REQUEST['editdoc_rub']) . "'," : "")."
`editdoc_lastchange` = '" . ($_REQUEST['editdoc_lastchange']) . "',
`editdoc_fill_filters` = '" . $v . "',
`editdoc_template` = '" . ($_REQUEST['editdoc_template']) . "',
`editdoc_afteredit` = '" . ($_REQUEST['editdoc_afteredit']) . "'
";
}
$AVE_DB->Query($sql);
header('Location:index.php?do=modules&action=modedit&mod=editdoc&moduleaction=1&cp=' . SESSION);
}
static function EditDocDo($import_id)
{
global $AVE_DB, $AVE_Document;
if (is_numeric($import_id))
{
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_editdoc
WHERE id = '" . $import_id . "'
");
$row = $sql->FetchAssocArray();
$row['editdoc_fill_filters']=unserialize(base64_decode($row['editdoc_fill_filters']));
$document_id=(isset($_REQUEST['editdoc_doc_id']) ? (int)$_REQUEST['editdoc_doc_id'] : null);
$data=editdoc::documentGet($document_id,(int)$row['editdoc_rub']);
//Пришла форма
if(isset($_REQUEST['editdoc_action']) && $_REQUEST['editdoc_action']==$import_id){
//вот тут сохранение будет
$save=true;
foreach($row['editdoc_fill_filters']['header'] as $k=>$v)
{
$exp='
function editdoc_reth_'.$import_id.'_'.$k.'($data){
?>'.trim($v).'<?
};';
eval($exp);
$ret='editdoc_reth_'.$import_id.'_'.$k;
$data['header'][$k]=$ret($data);
if($data['header'][$k]===NULL){
$save=false;
}
}
$data['header']['rubric_id']=$row['editdoc_rub'];
foreach($row['editdoc_fill_filters']['body'] as $k=>$v)
{
$exp='
function editdoc_retb_'.$import_id.'_'.$k.'($data){
?>'.trim($v).'<?
};';
eval($exp);
$ret='editdoc_retb_'.$import_id.'_'.$k;
$data['body'][$k]=$ret($data);
if($data['body'][$k]===NULL){
$save=false;
}
}
$d=$data['header'];
$d['doc_title']=$d['document_title'];
$d['feld']=$data['body'];
require(BASE_DIR . '/admin/editor/fckeditor.php');
require_once(BASE_DIR.'/class/class.docs.php');
$AVE_Document=new AVE_Document();
@$AVE_Document->documentPermissionFetch($row['editdoc_rub']);
require_once(BASE_DIR.'/admin/functions/func.admin.common.php');
if($save){
//надо перед сохранением уточнить являюсь ли я хозяином документа .....не забыть!!!!!!!!!! а то админы тут делов наделают
$GLOBALS['mod_editdoc'][$import_id]=@$AVE_Document->documentSave((int)$row['editdoc_rub'],$document_id,$d,true);
eval(' ?>'.$row['editdoc_afteredit'].'<? ');
}
}
$template=$row['editdoc_template'];
foreach($row['editdoc_fill_filters']["body"] as $k=>$v)$template=str_ireplace("[body:$k]",$row['editdoc_fill_filters']["template"][$k],$template);
foreach($row['editdoc_fill_filters']["header"] as $k=>$v)$template=str_ireplace("[header:$k]",$row['editdoc_fill_filters']["template"][$k],$template);
eval(' ?>'.$template.'<? ');
}
}
}
?>

4
index.php

@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

4
lang/index.php

@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

39
lang/ru.txt

@ -0,0 +1,39 @@
EDITDOC_EDIT = "Публикатор"
EDITDOC_EDIT_TIP = "В данном разделе предоставлены все публикаторы документов."
EDITDOC_ID = "Id"
EDITDOC_NAME = "Наименование публикатора"
EDITDOC_ACTIONS = "Действия"
EDITDOC_NO_ITEMS = "В настоящий момент нет данных"
EDITDOC_BUTTON_SAVE = "Сохранить изменения"
EDITDOC_BUTTON_ADD = "Добавить публикатор"
EDITDOC_INSERT_H = "Добавление/Редактирование публикаторов"
EDITDOC_INNAME = "Введите название публикатора"
EDITDOC_ENTER_NAME = "Пожалуйста, укажите название публикатора"
EDITDOC_INSERT = "Здесь вы можите добавить или изменить выбранный вами публикатор"
EDITDOC_SAVE = "Сохранить"
EDITDOC_SAVEDIT = "Сохранить изменения"
EDITDOC_INTEXT = "Системный блок"
EDITDOC_ADD = "Добавить новый публикатор"
EDITDOC_EDIT_HINT = "Редактировать публикатор"
EDITDOC_DELETE_HINT = "Удалить публикатор"
EDITDOC_DEL_HINT = "Вы уверены, что хотите удалить публикатор ?"
EDITDOC_LIST_LINK = "Список публикаторов документов"
EDITDOC_FILE = "Файл импорта по умолчанию"
EDITDOC_CHECK_FILE = "Импортировать если файл изменился автоматически"
EDITDOC_SUCCESLOCATION = "Редирект после успешного редактирования"
EDITDOC_RUBRICS = "Рубрика"
EDITDOC_TAG = "Системный тег"
EDITDOC_INNAME = "Введите наименование нового публикатора"
EDITDOC_INSERT_H = "Добавление нового публикатора"
EDITDOC_EDIT_H = "Редактирование публикатора"
EDITDOC_TABLE_HEADER = "?"
EDITDOC_SAVEDIT_NEXT = "Сохранить и продолжить редактирование"
EDITDOC_SAVED = "Шаблон публикатора успешно сохранен"
EDITDOC_HEADER_AFTER = "Код после успешного добавления документа"
EDITDOC_HEADER_BODY = "Основное содержимое документа"
EDITDOC_HEADER_HEAD = "Параметры документа"
EDITDOC_HEADER_FORM = "Шаблон вывода формы в публичной части сайта"
EDITDOC_HEADER_FORM = "Параметры документа"
EDITDOC_HEADER_PHP = "Шаблон PHP"
EDITDOC_HEADER_INSTR = "Инструмент ввода"
EDITDOC_HEADER_CORE = "Обработчик"

77
module.php

@ -0,0 +1,77 @@
<?php
/**
* AVE.cms - Модуль Публикатор документов
*
* @package AVE.cms
* @subpackage module_EditDoc
* @filesource
*/
if(!defined('BASE_DIR')) exit;
if (defined('ACP'))
{
$modul['ModuleName'] = "Публикатор документов";
$modul['ModuleSysName'] = "editdoc";
$modul['ModuleVersion'] = "1.0.1";
$modul['ModuleDescription'] = "Данный модуль предназначен для создания форм ввода и редактирования документов на сайте";
$modul['ModuleAutor'] = "Ave.cms Team";
$modul['ModuleCopyright'] = "&copy; 2012 Ave-cms.ru";
$modul['ModuleIsFunction'] = 1;
$modul['ModuleTemplate'] = 0;
$modul['ModuleAdminEdit'] = 1;
$modul['ModuleFunction'] = "mod_editdoc";
$modul['ModuleTag'] = '[mod_editdoc:XXX]';
$modul['ModuleTagLink'] = null;
$modul['ModuleAveTag'] = '#\\\[mod_editdoc:(\\\d+)]#';
$modul['ModulePHPTag'] = "<?php mod_editdoc(''$1''); ?>";
}
function mod_editdoc($id)
{
global $AVE_DB, $AVE_Core, $AVE_Template;
if (! (is_file(BASE_DIR . '/modules/editdoc/class.editdoc.php') &&
@require_once(BASE_DIR . '/modules/editdoc/class.editdoc.php'))) module_error();
echo editdoc::EditDocDo($id);
}
/**
* Администрирование
*/
if (defined('ACP') && !empty($_REQUEST['moduleaction']))
{
if (! (is_file(BASE_DIR . '/modules/editdoc/class.editdoc.php') &&
@require_once(BASE_DIR . '/modules/editdoc/class.editdoc.php'))) module_error();
$tpl_dir = BASE_DIR . '/modules/editdoc/templates/';
$lang_file = BASE_DIR . '/modules/editdoc/lang/' . $_SESSION['user_language'] . '.txt';
$AVE_Template->config_load($lang_file);
switch ($_REQUEST['moduleaction'])
{
case '1':
editdoc::EditDocList($tpl_dir);
break;
case 'del':
editdoc::EditDocDelete($_REQUEST['id']);
break;
case 'new':
editdoc::EditDocNew($tpl_dir);
break;
case 'edit':
editdoc::EditDocEdit(isset($_REQUEST['id']) ? $_REQUEST['id'] : null, $tpl_dir);
break;
case 'saveedit':
editdoc::EditDocSave(isset($_REQUEST['id']) ? $_REQUEST['id'] : null);
break;
}
}
?>

52
sql.php

@ -0,0 +1,52 @@
<?php
/**
* AVE.cms - Модуль Публикатор документов
*
* @package AVE.cms
* @subpackage module_EditDoc
* @filesource
*/
/**
* mySQL-запросы для установки, обновления и удаления модуля
*/
$module_sql_install = array();
$module_sql_deinstall = array();
$module_sql_update = array();
//$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_editdoc;";
$module_sql_install[] = "CREATE TABLE IF NOT EXISTS CPPREFIX_module_editdoc (
`id` mediumint(5) unsigned NOT NULL auto_increment,
`editdoc_lastchange` int(10) unsigned default NULL,
`editdoc_name` varchar(255) NOT NULL,
`editdoc_rub` int(10) unsigned default NULL,
`editdoc_template` longtext NOT NULL,
`editdoc_fill_filters` longtext NOT NULL,
`editdoc_afteredit` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
// Обновление модуля
$module_sql_update[] = "
UPDATE
`CPPREFIX_module`
SET
ModuleAveTag = '" . $modul['ModuleAveTag'] . "',
ModulePHPTag = '" . $modul['ModulePHPTag'] . "',
ModuleVersion = '" . $modul['ModuleVersion'] . "'
WHERE
ModuleSysName = '" . $modul['ModuleSysName'] . "'
LIMIT 1;
";
$module_sql_update[] = "
RENAME TABLE
`CPPREFIX_modul_editdoc`
TO
`CPPREFIX_module_editdoc`
";
?>

370
templates/admin_edit.tpl

@ -0,0 +1,370 @@
<link rel="stylesheet" href="{$ABS_PATH}admin/codemirror/lib/codemirror.css">
<script src="{$ABS_PATH}admin/codemirror/lib/codemirror.js" type="text/javascript"></script>
<script src="{$ABS_PATH}admin/codemirror/mode/xml/xml.js"></script>
<script src="{$ABS_PATH}admin/codemirror/mode/javascript/javascript.js"></script>
<script src="{$ABS_PATH}admin/codemirror/mode/css/css.js"></script>
<script src="{$ABS_PATH}admin/codemirror/mode/clike/clike.js"></script>
<script src="{$ABS_PATH}admin/codemirror/mode/php/php.js"></script>
{literal}
<style type="text/css">
.activeline {background: #e8f2ff !important;}
</style>
{/literal}
<div class="title"><h5>{#EDITDOC_INSERT_H#}</h5></div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#EDITDOC_INSERT#}
</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=modules&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a></li>
<li><a href="index.php?do=modules&action=modedit&mod=editdoc&moduleaction=1&cp={$sess}">{#EDITDOC_LIST_LINK#}</a></li>
<li><strong class="code">{if $smarty.request.id != ''}{$editdoc_name|escape}{else}{$smarty.request.editdoc_name}{/if}</strong></li>
</ul>
</div>
</div>
<form id="save_editdoc" action="index.php?do=modules&action=modedit&mod=editdoc&moduleaction=saveedit&cp={$sess}" method="post" class="mainForm">
{if $smarty.request.id != ''}
<div class="widget first">
<div class="head"><h5 class="iFrames">{if $smarty.request.id != ''}{#EDITDOC_EDIT_H#}{else}{#EDITDOC_INSERT_H#}{/if}</h5></div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<tr>
<td>{#EDITDOC_NAME#}</td>
<td><div class="pr12"><input name="editdoc_name" class="mousetrap" type="text" value="{if $smarty.request.id != ''}{$editdoc_name|escape}{else}{$smarty.request.editdoc_name}{/if}" size="80" /></div></td>
</tr>
<tr>
<td>{#EDITDOC_RUBRICS#}</td>
<td>
<select name="editdoc_rub" {if $smarty.request.id != ''}disabled="disabled"{/if} size="4">
{foreach from=$rubs item=rub}
{if $rub->Id==$editdoc_rub}
<option value="{$rub->Id}" selected>{$rub->rubric_title}</option>
{else}
<option value="{$rub->Id}">{$rub->rubric_title}</option>
{/if}
{/foreach}
</select>
</td>
</tr>
</table>
</div>
<div class="widget first">
<div class="head"><h5 class="iFrames">{#EDITDOC_HEADER_FORM#}</h5></div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<thead>
<tr>
<td>{#EDITDOC_HEADER_PHP#}</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<textarea class="mousetrap" {$read_only} name="editdoc_template" id="editdoc_template" wrap="off" style="width:100%; height:340px">{$editdoc_template|default:$prefab|escape:html}</textarea>
</td>
</tr>
<tr>
<td>
|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<ol>', '</ol>');"><strong>OL</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<ul>', '</ul>');"><strong>UL</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<li>', '</li>');"><strong>LI</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<p class=&quot;&quot;>', '</p>');"><strong>P</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<strong>', '</strong>');"><strong>B</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<em>', '</em>');"><strong>I</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<h1>', '</h1>');"><strong>H1</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<h2>', '</h2>');"><strong>H2</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<h3>', '</h3>');"><strong>H3</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<h4>', '</h4>');"><strong>H4</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<h5>', '</h5>');"><strong>H5</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<div class=&quot;&quot; id=&quot;&quot;>', '</div>');"><strong>DIV</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<a href=&quot;&quot; title=&quot;&quot;>', '</a>');"><strong>A</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<img src=&quot;&quot; alt=&quot;&quot; />', '');"><strong>IMG</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<span>', '</span>');"><strong>SPAN</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<pre>', '</pre>');"><strong>PRE</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('<br />', '');"><strong>BR</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection('\t', '');"><strong>TAB</strong></a>&nbsp;|
</td>
</tr>
</tbody>
</table>
</div>
<div class="widget first">
<div class="head"><h5 class="iFrames">{#EDITDOC_HEADER_HEAD#}</h5></div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<col width="20%" />
<col width="40%" />
<col width="40%" />
<thead>
<tr>
<td>&nbsp;</td>
<td>{#EDITDOC_HEADER_CORE#}</td>
<td>{#EDITDOC_HEADER_INSTR#}</td>
</tr>
</thead>
<tbody>
{foreach from=$data.header key=k item=v}
<tr>
<td>
<strong>$data['header']['{$k}']</strong>
</td>
<td>
<div class="pr12"><textarea class="mousetrap" name="document[header][{$k}]" id="document_header_{$k}" cols="60" rows="7">{$v[0]|default:$prefab|escape:html}</textarea></div>
</td>
<td>
<div class="pr12"><textarea class="mousetrap" name="document[template][{$k}]" id="document_template_{$k}" cols="60" rows="7">{$v[1]|default:$prefab|escape:html}</textarea></div>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
<div class="widget first">
<div class="head"><h5 class="iFrames">{#EDITDOC_HEADER_BODY#}</h5></div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<col width="20%" />
<col width="40%" />
<col width="40%" />
<thead>
<tr>
<td>&nbsp;</td>
<td>{#EDITDOC_HEADER_CORE#}</td>
<td>{#EDITDOC_HEADER_INSTR#}</td>
</tr>
</thead>
<tbody>
{foreach from=$data.body key=k item=v}
<tr>
<td>
<strong>{$v[0]}</strong><br>
$data['body']['{$k}']
</td>
<td>
<div class="pr12"><textarea class="mousetrap" name="document[body][{$k}]" id="document_body_{$k}" cols="70" rows="7">{$v[1]|default:$prefab|escape:html}</textarea></div>
</td>
<td>
<div class="pr12"><textarea class="mousetrap" name="document[template][{$k}]" id="document_template_{$k}" cols="70" rows="7">{$v[2]|default:$prefab|escape:html}</textarea></div>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
<div class="widget first">
<div class="head"><h5 class="iFrames">{#EDITDOC_HEADER_AFTER#}</h5></div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<thead>
<tr>
<td>{#EDITDOC_HEADER_PHP#}</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<textarea {$read_only} name="editdoc_afteredit" id="editdoc_afteredit" wrap="off" style="width:100%; height:340px">{$editdoc_afteredit|default:$prefab|escape:html}</textarea>
</td>
</tr>
<tr>
<td>
|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<ol>', '</ol>');"><strong>OL</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<ul>', '</ul>');"><strong>UL</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<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('<strong>', '</strong>');"><strong>B</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<em>', '</em>');"><strong>I</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<h1>', '</h1>');"><strong>H1</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<h2>', '</h2>');"><strong>H2</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<h3>', '</h3>');"><strong>H3</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<h4>', '</h4>');"><strong>H4</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<h5>', '</h5>');"><strong>H5</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<div class=&quot;&quot; id=&quot;&quot;>', '</div>');"><strong>DIV</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<a href=&quot;&quot; title=&quot;&quot;>', '</a>');"><strong>A</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<img src=&quot;&quot; alt=&quot;&quot; />', '');"><strong>IMG</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<span>', '</span>');"><strong>SPAN</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<pre>', '</pre>');"><strong>PRE</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('<br />', '');"><strong>BR</strong></a>&nbsp;|&nbsp;
<a href="javascript:void(0);" onclick="textSelection2('\t', '');"><strong>TAB</strong></a>&nbsp;|
</td>
</tr>
<tr>
<td colspan="3">
<input type="hidden" name="id" value="{$id}">
<input name="submit" type="submit" class="basicBtn" value="{#EDITDOC_SAVEDIT#}" />
&nbsp;или&nbsp;
<input type="submit" class="blackBtn SaveEdit" name="next_edit" value="{#EDITDOC_SAVEDIT_NEXT#}" />
</td>
</tr>
</tbody>
</table>
</div>
<script language="javascript">
var sett_options = {ldelim}
url: 'index.php?do=modules&action=modedit&mod=editdoc&moduleaction=saveedit&cp={$sess}',
beforeSubmit: Request,
success: Response
{rdelim}
function Request(){ldelim}
$.alerts._overlay('show');
{rdelim}
function Response(){ldelim}
$.alerts._overlay('hide');
$.jGrowl('{#EDITDOC_SAVED#}', {ldelim}theme: 'accept'{rdelim});
{rdelim}
$(document).ready(function(){ldelim}
Mousetrap.bind(['ctrl+s', 'meta+s'], function(e) {ldelim}
if (e.preventDefault) {ldelim}
e.preventDefault();
{rdelim} else {ldelim}
// internet explorer
e.returnValue = false;
{rdelim}
$("#save_editdoc").ajaxSubmit(sett_options);
return false;
{rdelim});
$(".SaveEdit").click(function(e){ldelim}
if (e.preventDefault) {ldelim}
e.preventDefault();
{rdelim} else {ldelim}
// internet explorer
e.returnValue = false;
{rdelim}
$("#save_editdoc").ajaxSubmit(sett_options);
return false;
{rdelim});
{rdelim});
{literal}
var editor = CodeMirror.fromTextArea(document.getElementById("editdoc_template"), {
extraKeys: {"Ctrl-S": function(cm){$("#save_editdoc").ajaxSubmit(sett_options);}},
lineNumbers: true,
lineWrapping: true,
matchBrackets: true,
mode: "application/x-httpd-php",
indentUnit: 4,
indentWithTabs: true,
enterMode: "keep",
tabMode: "shift",
onChange: function(){editor.save();},
onCursorActivity: function() {
editor.setLineClass(hlLine, null, null);
hlLine = editor.setLineClass(editor.getCursor().line, null, "activeline");
}
});
function getSelectedRange() {
return { from: editor.getCursor(true), to: editor.getCursor(false) };
}
function textSelection(startTag,endTag) {
var range = getSelectedRange();
editor.replaceRange(startTag + editor.getRange(range.from, range.to) + endTag, range.from, range.to)
editor.setCursor(range.from.line, range.from.ch + startTag.length);
}
var hlLine = editor.setLineClass(0, "activeline");
var editor2 = CodeMirror.fromTextArea(document.getElementById("editdoc_afteredit"), {
extraKeys: {"Ctrl-S": function(cm){$("#save_editdoc").ajaxSubmit(sett_options);}},
lineNumbers: true,
lineWrapping: true,
matchBrackets: true,
mode: "application/x-httpd-php",
indentUnit: 4,
indentWithTabs: true,
enterMode: "keep",
tabMode: "shift",
onChange: function(){editor2.save();},
onCursorActivity: function() {
editor2.setLineClass(hlLine, null, null);
hlLine = editor2.setLineClass(editor2.getCursor().line, null, "activeline");
}
});
function getSelectedRange2() {
return { from: editor2.getCursor(true), to: editor2.getCursor(false) };
}
function textSelection2(startTag,endTag) {
var range = getSelectedRange2();
editor2.replaceRange(startTag + editor2.getRange(range.from, range.to) + endTag, range.from, range.to)
editor2.setCursor(range.from.line, range.from.ch + startTag.length);
}
var hlLine = editor2.setLineClass(0, "activeline");
{/literal}
</script>
{else}
<div class="widget first">
<div class="head"><h5 class="iFrames">{if $smarty.request.id != ''}{#EDITDOC_EDIT_H#}{else}{#EDITDOC_INSERT_H#}{/if}</h5></div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<tr>
<td>{#EDITDOC_NAME#}</td>
<td><div class="pr12"><input name="editdoc_name" class="mousetrap" type="text" value="{if $smarty.request.id != ''}{$editdoc_name|escape}{else}{$smarty.request.editdoc_name}{/if}" size="80" /></div></td>
</tr>
<tr>
<td>{#EDITDOC_RUBRICS#}</td>
<td>
<select name="editdoc_rub" {if $smarty.request.id != ''}disabled="disabled"{/if}>
{foreach from=$rubs item=rub}
{if $rub->Id==$editdoc_rub}
<option value="{$rub->Id}" selected>{$rub->rubric_title}</option>
{else}
<option value="{$rub->Id}">{$rub->rubric_title}</option>
{/if}
{/foreach}
</select>
</td>
</tr>
<tr>
<td colspan="2">
<input name="submit" type="submit" class="basicBtn" value="{#EDITDOC_SAVE#}" />
</td>
</tr>
</table>
</div>
{/if}
</form>
<br /><br /><br /><br /><br />

120
templates/admin_list.tpl

@ -0,0 +1,120 @@
<script type="text/javascript" language="JavaScript">
$(document).ready(function(){ldelim}
$(".AddEditDoc").click( function(e) {ldelim}
e.preventDefault();
var user_group = $('#add_editdoc #editdoc_name').fieldValue();
var title = '{#EDITDOC_ADD#}';
var text = '{#EDITDOC_INNAME#}';
if (user_group == ""){ldelim}
jAlert(text,title);
{rdelim}else{ldelim}
$.alerts._overlay('show');
$("#add_editdoc").submit();
{rdelim}
{rdelim});
{rdelim});
</script>
<div class="title"><h5>{#EDITDOC_EDIT#}</h5></div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
{#EDITDOC_EDIT_TIP#}
</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=modules&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a></li>
<li>{#EDITDOC_EDIT#}</li>
</ul>
</div>
</div>
<div class="widget first">
<ul class="tabs">
<li class="activeTab"><a href="#tab1">{#EDITDOC_EDIT#}</a></li>
<li class=""><a href="#tab2">{#EDITDOC_ADD#}</a></li>
</ul>
<div class="tab_container">
<div id="tab1" class="tab_content" style="display: block;">
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<col width="20">
<col>
<col width="150">
<col width="20">
<col width="20">
<thead>
<tr>
<td>{#EDITDOC_ID#}</td>
<td>{#EDITDOC_NAME#}</td>
<td>{#EDITDOC_TAG#}</td>
<td colspan="2">{#EDITDOC_ACTIONS#}</td>
</tr>
</thead>
<tbody>
{if $editdocs}
{foreach from=$editdocs item=editdoc}
<tr>
<td>{$editdoc->id}</td>
<td>
<a class="topDir" title="{#EDITDOC_EDIT_HINT#}" href="index.php?do=modules&action=modedit&mod=editdoc&moduleaction=edit&cp={$sess}&id={$editdoc->id}"><strong>{$editdoc->editdoc_name|escape}</a></strong>
<br />
<span class="date_text dgrey">
{foreach from=$rubs item=rub}
{if $rub->Id==$editdoc->editdoc_rub}
({$rub->rubric_title})
{/if}
{/foreach}
</span>
</td>
<td>
<div class="pr12"><input name="textfield" type="text" readonly style="width: 150px;" value="[mod_editdoc:{$editdoc->id}]" /></div>
</td>
<td align="center">
<a class="topleftDir icon_sprite ico_edit" title="{#EDITDOC_EDIT_HINT#}" href="index.php?do=modules&action=modedit&mod=editdoc&moduleaction=edit&cp={$sess}&id={$editdoc->id}"></a>
</td>
<td align="center">
<a class="topleftDir ConfirmDelete icon_sprite ico_delete" title="{#EDITDOC_DELETE_HINT#}" dir="{#EDITDOC_DELETE_HINT#}" name="{#EDITDOC_DEL_HINT#}" href="index.php?do=modules&action=modedit&mod=editdoc&moduleaction=del&cp={$sess}&id={$editdoc->id}"></a>
</td>
</tr>
{/foreach}
{else}
<tr>
<td colspan="9">
<ul class="messages">
<li class="highlight yellow">{#EDITDOC_NO_ITEMS#}</li>
</ul>
</td>
</tr>
{/if}
</tbody>
</table>
</div>
<div id="tab2" class="tab_content" style="display: none;">
<form id="add_editdoc" method="post" action="index.php?do=modules&action=modedit&mod=editdoc&moduleaction=new&cp={$sess}" class="mainForm">
<div class="rowElem">
<label>{#EDITDOC_NAME#}</label>
<div class="formRight"><input name="editdoc_name" type="text" id="editdoc_name" value="" placeholder="{#EDITDOC_NAME#}" style="width: 400px">
&nbsp;<input type="button" class="basicBtn AddEditDoc" value="{#EDITDOC_BUTTON_ADD#}" />
</div>
<div class="fix"></div>
</div>
</form>
</div>
</div>
<div class="fix"></div>
</div>

4
templates/index.php

@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>
Loading…
Cancel
Save