Сергей Варламов
9 years ago
commit
013ad7401c
12 changed files with 812 additions and 0 deletions
@ -0,0 +1,13 @@
|
||||
## faq |
||||
|
||||
# Вопрос/ответ v1.0.1 |
||||
|
||||
|
||||
## Модуль создания раширенной справочной системы на основе тегов. |
||||
|
||||
|
||||
## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку faq со всем ее содержимым внутри! |
||||
|
||||
## Changelog: |
||||
|
||||
26.11.2015 - версия 1.0.1 |
@ -0,0 +1,267 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* Класс работы с модулем Вопрос-Ответ |
||||
* |
||||
* @package AVE.cms |
||||
* @subpackage module_FAQ |
||||
* @filesource |
||||
*/ |
||||
|
||||
class Faq |
||||
{ |
||||
/** |
||||
* Вывод списка рубрик |
||||
* |
||||
* @param string $tpl_dir путь к директории с шаблонами модуля |
||||
*/ |
||||
public static function faqList($tpl_dir) |
||||
{ |
||||
global $AVE_DB, $AVE_Template; |
||||
|
||||
$faq = array(); |
||||
$sql = $AVE_DB->Query("SELECT * FROM ". PREFIX ."_module_faq"); |
||||
while ($row = $sql->FetchRow()) array_push($faq, $row); |
||||
|
||||
$AVE_Template->assign("faq_arr", $faq); |
||||
$AVE_Template->assign("content", $AVE_Template->fetch($tpl_dir . "admin_faq_list.tpl")); |
||||
} |
||||
|
||||
/** |
||||
* Создание новой рубрики |
||||
* |
||||
*/ |
||||
public static function faqNew() |
||||
{ |
||||
global $AVE_DB; |
||||
|
||||
if (isset($_POST['new_faq_title']) && trim($_POST['new_faq_title'])) |
||||
{ |
||||
$AVE_DB->Query("INSERT INTO " . PREFIX . "_module_faq SET id = '', faq_title = '" . mb_substr($_POST['new_faq_title'], 0, 100) . "', faq_description = '" . mb_substr($_POST['new_faq_desc'], 0, 255) . "'"); |
||||
} |
||||
|
||||
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION); |
||||
exit; |
||||
} |
||||
|
||||
/** |
||||
* Удаление рубрики вместе с вопросами и ответами |
||||
* |
||||
* @param string $tpl_dir путь к директории с шаблонами модуля |
||||
*/ |
||||
public static function faqDelete($tpl_dir) |
||||
{ |
||||
global $AVE_DB, $AVE_Template; |
||||
|
||||
if (isset($_GET['fid']) && is_numeric($_GET['fid']) && $_GET['fid'] > 0) |
||||
{ |
||||
$AVE_DB->Query("DELETE FROM " . PREFIX . "_module_faq WHERE id = '" . $_GET['fid'] . "'"); |
||||
$AVE_DB->Query("DELETE FROM " . PREFIX . "_module_faq_quest WHERE faq_id = '" . $_GET['fid'] . "'"); |
||||
|
||||
$AVE_Template->clear_cache($tpl_dir . 'show_faq.tpl', $_GET['fid']); |
||||
} |
||||
|
||||
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION); |
||||
exit; |
||||
} |
||||
|
||||
/** |
||||
* Запись изменений в наименованиях и описаниях рубрик |
||||
* |
||||
* @param string $tpl_dir путь к директории с шаблонами модуля |
||||
*/ |
||||
public static function faqListSave($tpl_dir) |
||||
{ |
||||
global $AVE_DB, $AVE_Template; |
||||
|
||||
foreach($_POST['faq_title'] as $id => $faq_title) |
||||
{ |
||||
if (is_numeric($id) && $id > 0 && trim($faq_title)) |
||||
{ |
||||
$AVE_DB->Query("UPDATE " . PREFIX . "_module_faq SET faq_title = '" . mb_substr($faq_title, 0, 100) . "', faq_description = '" . mb_substr($_POST['faq_description'][$id], 0, 255) . "' WHERE id = '" . $id . "'"); |
||||
|
||||
$AVE_Template->clear_cache($tpl_dir . 'show_faq.tpl', $id); |
||||
} |
||||
} |
||||
|
||||
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION); |
||||
exit; |
||||
} |
||||
|
||||
/** |
||||
* Вывод списка вопросов и ответов определённой рубрики |
||||
* |
||||
* @param string $tpl_dir путь к директории с шаблонами модуля |
||||
*/ |
||||
public static function faqQuestionList($tpl_dir) |
||||
{ |
||||
global $AVE_DB, $AVE_Template; |
||||
|
||||
if (!(isset($_GET['fid']) && is_numeric($_GET['fid']) && $_GET['fid'] > 0)) |
||||
{ |
||||
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION); |
||||
exit; |
||||
} |
||||
|
||||
$questions = array(); |
||||
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_faq_quest WHERE faq_id = '" . $_GET['fid'] . "'"); |
||||
while ($row = $sql->FetchRow()) array_push($questions, $row); |
||||
|
||||
$r_name = $AVE_DB->Query("SELECT * FROM ". PREFIX ."_module_faq WHERE id = '" . $_GET['fid'] . "'")->FetchRow(); |
||||
|
||||
$AVE_Template->assign("questions", $questions); |
||||
$AVE_Template->assign("RubricName", $r_name->faq_title); |
||||
$AVE_Template->assign("content", $AVE_Template->fetch($tpl_dir . "admin_faq_edit.tpl")); |
||||
} |
||||
|
||||
/** |
||||
* Вывод формы редактирования вопроса и ответа на него |
||||
* |
||||
* @param string $tpl_dir путь к директории с шаблонами модуля |
||||
*/ |
||||
public static function faqQuestionEdit($tpl_dir) |
||||
{ |
||||
global $AVE_DB, $AVE_Template; |
||||
|
||||
if (! (isset($_GET['fid']) && is_numeric($_GET['fid']) && $_GET['fid'] > 0)) |
||||
{ |
||||
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION); |
||||
exit; |
||||
} |
||||
|
||||
if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0) |
||||
{ |
||||
$faq = $AVE_DB->Query(" |
||||
SELECT * |
||||
FROM |
||||
" . PREFIX . "_module_faq_quest |
||||
WHERE |
||||
faq_id = '" . (int)$_GET['fid'] . "' |
||||
AND |
||||
id = '" . (int)$_GET['id'] . "' |
||||
")->FetchAssocArray(); |
||||
|
||||
if ($faq === false) |
||||
{ |
||||
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION); |
||||
exit; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
$faq = array( |
||||
'id' => '', |
||||
'faq_quest' => '', |
||||
'faq_answer' => '', |
||||
'faq_id' => $_GET['fid'] |
||||
); |
||||
} |
||||
|
||||
switch ($_SESSION['use_editor']) |
||||
{ |
||||
case '0': // CKEditor |
||||
$oCKeditor = new CKeditor(); |
||||
$oCKeditor->returnOutput = true; |
||||
$oCKeditor->config['toolbar'] = 'Verysmall'; |
||||
$oCKeditor->config['height'] = 100; |
||||
$config = array(); |
||||
$faq['faq_quest'] = $oCKeditor->editor('faq_quest', $faq['faq_quest'], $config); |
||||
|
||||
$oCKeditor2 = new CKeditor(); |
||||
$oCKeditor2->returnOutput = true; |
||||
$oCKeditor2->config['toolbar'] = 'Small'; |
||||
$oCKeditor2->config['height'] = 400; |
||||
$config2 = array(); |
||||
$faq['faq_answer'] = $oCKeditor2->editor('faq_answer', $faq['faq_answer'], $config2); |
||||
break; |
||||
|
||||
case '1': |
||||
// Elrte и Elfinder |
||||
break; |
||||
} |
||||
|
||||
|
||||
$AVE_Template->assign($faq); |
||||
|
||||
$AVE_Template->assign("content", $AVE_Template->fetch($tpl_dir . "admin_quest_edit.tpl")); |
||||
} |
||||
|
||||
/** |
||||
* Запись нового или изменённого вопроса и ответа на него |
||||
* |
||||
* @param string $tpl_dir путь к директории с шаблонами модуля |
||||
*/ |
||||
public static function faqQuestionSave($tpl_dir) |
||||
{ |
||||
global $AVE_DB, $AVE_Template; |
||||
|
||||
if (!(isset($_POST['fid']) && is_numeric($_POST['fid']) && $_POST['fid'] > 0)) |
||||
{ |
||||
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION); |
||||
exit; |
||||
} |
||||
|
||||
if (isset($_POST['id']) && is_numeric($_POST['id']) && $_POST['id'] > 0) |
||||
{ |
||||
$AVE_DB->Query("UPDATE " . PREFIX . "_module_faq_quest SET faq_quest = '" . $_POST['faq_quest'] . "', faq_answer = '" . $_POST['faq_answer'] . "' WHERE id = '" . $_POST['id'] . "'"); |
||||
} |
||||
else |
||||
{ |
||||
if ($AVE_DB->Query("SELECT 1 FROM " . PREFIX . "_module_faq WHERE id = '" . $_POST['fid'] . "'")->GetCell()) |
||||
{ |
||||
$AVE_DB->Query("INSERT INTO " . PREFIX . "_module_faq_quest SET id = '', faq_id = '" . $_POST['fid'] . "', faq_quest = '" . $_POST['faq_quest'] . "', faq_answer = '" . $_POST['faq_answer'] . "'"); |
||||
} |
||||
} |
||||
|
||||
$AVE_Template->clear_cache($tpl_dir . 'show_faq.tpl', $_POST['fid']); |
||||
|
||||
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=questlist&fid=" . $_POST['fid'] . "&cp=" . SESSION); |
||||
exit; |
||||
} |
||||
|
||||
/** |
||||
* Удаление вопроса и ответа на него |
||||
* |
||||
* @param string $tpl_dir путь к директории с шаблонами модуля |
||||
*/ |
||||
public static function faqQuestionDelete($tpl_dir) |
||||
{ |
||||
global $AVE_DB, $AVE_Template; |
||||
|
||||
if (!(isset($_GET['fid']) && isset($_GET['id']) |
||||
&& is_numeric($_GET['fid']) && is_numeric($_GET['id']) |
||||
&& $_GET['fid'] > 0 && $_GET['id'] > 0)) |
||||
{ |
||||
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION); |
||||
exit; |
||||
} |
||||
|
||||
$AVE_DB->Query("DELETE FROM " . PREFIX . "_module_faq_quest WHERE faq_id = '" . $_GET['fid'] . "' AND id = '" . $_GET['id'] . "'"); |
||||
|
||||
$AVE_Template->clear_cache($tpl_dir . 'show_faq.tpl', $_GET['fid']); |
||||
|
||||
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=questlist&fid=" . $_GET['fid'] . "&cp=" . SESSION); |
||||
exit; |
||||
} |
||||
|
||||
/** |
||||
* Вывод модуля вопросов и ответов в публичной части |
||||
* |
||||
* @param int $id идентификатор рубрики вопросов и ответов |
||||
*/ |
||||
public static function faqShow($id) |
||||
{ |
||||
global $AVE_DB, $AVE_Template; |
||||
|
||||
$faq = $AVE_DB->Query("SELECT faq_title, faq_description FROM " . PREFIX . "_module_faq WHERE id = '" . (int)$id . "'")->fetchArray(); |
||||
|
||||
$questions = array(); |
||||
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_faq_quest WHERE faq_id = '" . (int)$id . "'"); |
||||
while ($row = $sql->FetchRow()) array_push($questions, $row); |
||||
|
||||
$AVE_Template->assign($faq); |
||||
$AVE_Template->assign('questions', $questions); |
||||
} |
||||
} |
||||
|
||||
?> |
@ -0,0 +1,28 @@
|
||||
FAQ_EDIT = "Редактирование рубрики" |
||||
FAQ_EDIT_RUB = "Редактирование рубрики" |
||||
FAQ_EDIT_TIP = "В данном разделе представлен список вопросов и ответов выбранной рубрики. Вы можете добавить новый вопрос и ответ на него, перейти к редактированию существующих вопросов и ответов или удалить вопросы и ответы на них." |
||||
FAQ_QUEST = "Вопрос" |
||||
FAQ_ANSWER = "Ответ" |
||||
FAQ_INSERT = "Здесь вы можете редактировать выбранный вопрос и ответ на него." |
||||
FAQ_SAVE = "Сохранить" |
||||
FAQ_ENTER_NAME = "Пожалуйста, укажите название рубрики" |
||||
FAQ_ITEM_NAME = "Название рубрики вопросов и ответов:" |
||||
FAQ_BUTTON_SAVE = "Сохранить изменения" |
||||
FAQ_BUTTON_ADD = "Добавить рубрику" |
||||
FAQ_LIST = "Вопрос-Ответ" |
||||
FAQ_LIST_TIP = "В разделе представлен список рубрик модуля Вопрос-Ответ. Вы можете изменить наименование и описание рубрики, перейти к управлению вопросами и ответами определённой рубрики или удалить рубрику вместе с её вопросами и ответами." |
||||
FAQ_NAME = "Название рубрики" |
||||
FAQ_DESC = "Описание рубрики" |
||||
FAQ_TAG = "Системный тег" |
||||
FAQ_ACTIONS = "Действия" |
||||
FAQ_EDIT_HINT = "Редактировать рубрику" |
||||
FAQ_QEDIT_HINT = "Редактировать вопрос и ответ" |
||||
FAQ_DELETE_HINT = "Удалить рубрику вместе с вопросами и ответами" |
||||
FAQ_QDELETE_HINT = "Удалить вопрос и ответ на него" |
||||
FAQ_NO_ITEMS = "В настоящий момент нет данных" |
||||
FAQ_ADD = "Добавить рубрику" |
||||
FAQ_ADD_QUEST = "Добавить вопрос" |
||||
FAQ_BACK = "Управление рубриками" |
||||
FAQ_INSERT_H = "Добавление или Редактирование вопросов и ответов" |
||||
FAQ_INNAME = "Введите вопрос" |
||||
FAQ_INDESC = "Введите ответ на вопрос" |
@ -0,0 +1,115 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* AVE.cms - Модуль Вопрос-Ответ |
||||
* |
||||
* @package AVE.cms |
||||
* @subpackage module_FAQ |
||||
* @since 2.0 |
||||
* @filesource |
||||
*/ |
||||
if (!defined('BASE_DIR')) exit; |
||||
|
||||
if (defined('ACP')) |
||||
{ |
||||
$modul['ModuleName'] = 'Вопрос/ответ'; |
||||
$modul['ModuleSysName'] = 'faq'; |
||||
$modul['ModuleVersion'] = '1.0.1'; |
||||
$modul['ModuleDescription'] = 'Модуль создания раширенной справочной системы на основе тегов.'; |
||||
$modul['ModuleAutor'] = 'Freeon'; |
||||
$modul['ModuleCopyright'] = '© 2007-2008 Overdoze Team'; |
||||
$modul['ModuleStatus'] = 1; |
||||
$modul['ModuleIsFunction'] = 1; |
||||
$modul['ModuleAdminEdit'] = 1; |
||||
$modul['ModuleFunction'] = 'mod_faq'; |
||||
$modul['ModuleTag'] = '[mod_faq:XXX]'; |
||||
$modul['ModuleTagLink'] = null; |
||||
$modul['ModuleAveTag'] = '#\\\[mod_faq:(\\\d+)]#'; |
||||
$modul['ModulePHPTag'] = "<?php mod_faq(''$1''); ?>";
|
||||
} |
||||
|
||||
/** |
||||
* Обработка тега модуля |
||||
* |
||||
* @param int $id идентификатор рубрики вопросов и ответов |
||||
*/ |
||||
function mod_faq($id) |
||||
{ |
||||
global $AVE_Template; |
||||
|
||||
$AVE_Template->caching = 1; // Включаем кеширование |
||||
$AVE_Template->cache_lifetime = -1; // Неограниченное время жизни кэша |
||||
// $AVE_Template->cache_dir .= '/faq'; // Папка для кеша модуля |
||||
|
||||
$tpl_dir = BASE_DIR . '/modules/faq/templates/'; // Путь к шаблону модуля |
||||
|
||||
// Если нету в кеше, то начинаем обрабатывать |
||||
if (!$AVE_Template->is_cached($tpl_dir . 'show_faq.tpl', $id)) |
||||
{ |
||||
// Проверяем, есть ли папка для кеша, если нет (первый раз) — создаем |
||||
if (!is_dir($AVE_Template->cache_dir)) |
||||
{ |
||||
$oldumask = umask(0); |
||||
@mkdir($AVE_Template->cache_dir, 0777); |
||||
umask($oldumask); |
||||
} |
||||
|
||||
require_once(BASE_DIR . '/modules/faq/class.faq.php'); |
||||
|
||||
Faq::faqShow($id); |
||||
} |
||||
|
||||
echo rewrite_link($AVE_Template->fetch($tpl_dir . 'show_faq.tpl', $id)); |
||||
|
||||
$AVE_Template->caching = false; // Отключаем кеширование |
||||
} |
||||
|
||||
/** |
||||
* Администрирование |
||||
*/ |
||||
if (defined('ACP') && !empty($_REQUEST['moduleaction'])) |
||||
{ |
||||
require_once(BASE_DIR . '/modules/faq/class.faq.php'); |
||||
|
||||
$tpl_dir = BASE_DIR . '/modules/faq/templates/'; |
||||
$lang_file = BASE_DIR . '/modules/faq/lang/' . $_SESSION['user_language'] . '.txt'; |
||||
|
||||
$AVE_Template->config_load($lang_file); |
||||
|
||||
switch ($_REQUEST['moduleaction']) |
||||
{ |
||||
case '1': |
||||
Faq::faqList($tpl_dir); |
||||
break; |
||||
|
||||
case 'new': |
||||
Faq::faqNew(); |
||||
break; |
||||
|
||||
case 'del': |
||||
Faq::faqDelete($tpl_dir); |
||||
break; |
||||
|
||||
case 'save': |
||||
Faq::faqListSave($tpl_dir); |
||||
break; |
||||
|
||||
case 'questlist': |
||||
Faq::faqQuestionList($tpl_dir); |
||||
break; |
||||
|
||||
case 'questedit': |
||||
Faq::faqQuestionEdit($tpl_dir); |
||||
break; |
||||
|
||||
case 'questsave': |
||||
Faq::faqQuestionSave($tpl_dir); |
||||
break; |
||||
|
||||
case 'questdel': |
||||
Faq::faqQuestionDelete($tpl_dir); |
||||
break; |
||||
} |
||||
} |
||||
|
||||
?> |
@ -0,0 +1,62 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* AVE.cms - Модуль Вопрос-Ответ |
||||
* |
||||
* @package AVE.cms |
||||
* @subpackage module_FAQ |
||||
* @filesource |
||||
*/ |
||||
|
||||
/** |
||||
* mySQL-запросы для установки, обновления и удаления модуля |
||||
*/ |
||||
|
||||
$module_sql_install = array(); |
||||
$module_sql_deinstall = array(); |
||||
$module_sql_update = array(); |
||||
|
||||
$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_faq;"; |
||||
$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_faq_quest;"; |
||||
|
||||
$module_sql_install[] = "CREATE TABLE CPPREFIX_module_faq ( |
||||
`id` mediumint(5) unsigned NOT NULL auto_increment, |
||||
`faq_title` char(100) NOT NULL default '', |
||||
`faq_description` char(255) NOT NULL default '', |
||||
PRIMARY KEY (`id`) |
||||
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;"; |
||||
|
||||
$module_sql_install[] = "CREATE TABLE CPPREFIX_module_faq_quest ( |
||||
`id` mediumint(5) unsigned NOT NULL auto_increment, |
||||
`faq_id` mediumint(5) unsigned NOT NULL default '1', |
||||
`faq_quest` text NOT NULL, |
||||
`faq_answer` text NOT NULL, |
||||
PRIMARY KEY (`id`) |
||||
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;"; |
||||
|
||||
$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_faq` |
||||
TO |
||||
`CPPREFIX_module_faq` |
||||
"; |
||||
|
||||
$module_sql_update[] = " |
||||
RENAME TABLE |
||||
`CPPREFIX_modul_faq_quest` |
||||
TO |
||||
`CPPREFIX_module_faq_quest` |
||||
"; |
||||
?> |
@ -0,0 +1,71 @@
|
||||
<div class="title"><h5>{#FAQ_EDIT_RUB#}</h5></div> |
||||
|
||||
<div class="widget" style="margin-top: 0px;"> |
||||
<div class="body"> |
||||
{#FAQ_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&cp={$sess}">{#MODULES_SUB_TITLE#}</a></li> |
||||
<li><a href="index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp={$sess}">{#FAQ_LIST#}</a></li> |
||||
<li>{$RubricName|escape}</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="widget first"> |
||||
<div class="head"> |
||||
<h5 class="iFrames">{if $smarty.request.id != ''}{#FAQ_EDIT_RUB#}{else}{#FAQ_EDIT_RUB#}{/if}</h5> |
||||
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=faq&moduleaction=questedit&fid={$smarty.get.fid}&cp={$sess}">{#FAQ_ADD_QUEST#}</a></div> |
||||
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp={$sess}">{#FAQ_BACK#}</a></div> |
||||
</div> |
||||
|
||||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"> |
||||
<col width="40%" /> |
||||
<col width="50%" /> |
||||
<col width="1%" /> |
||||
<col width="1%" /> |
||||
<thead> |
||||
<tr> |
||||
<td>{#FAQ_QUEST#}</td> |
||||
<td>{#FAQ_ANSWER#}</td> |
||||
<td colspan="2">{#FAQ_ACTIONS#}</td> |
||||
</tr> |
||||
</thead> |
||||
{if $questions} |
||||
{foreach from=$questions item=question} |
||||
<tr> |
||||
<td> |
||||
<strong><a href="index.php?do=modules&action=modedit&mod=faq&moduleaction=questedit&fid={$smarty.get.fid}&id={$question->id}&cp={$sess}">{$question->faq_quest|strip_tags|escape|truncate:100}</a></strong> |
||||
</td> |
||||
|
||||
<td> |
||||
{$question->faq_answer|strip_tags|escape|truncate:80} |
||||
</td> |
||||
|
||||
<td align="center"> |
||||
<a class="topleftDir icon_sprite ico_edit" title="{#FAQ_QEDIT_HINT#}" href="index.php?do=modules&action=modedit&mod=faq&moduleaction=questedit&fid={$smarty.get.fid}&id={$question->id}&cp={$sess}"></a> |
||||
</td> |
||||
|
||||
<td align="center"> |
||||
<a class="topleftDir ConfirmDelete icon_sprite ico_delete" title="{#FAQ_QDELETE_HINT#}" href="index.php?do=modules&action=modedit&mod=faq&moduleaction=questdel&fid={$smarty.get.fid}&id={$question->id}&cp={$sess}"></a> |
||||
</td> |
||||
</tr> |
||||
{/foreach} |
||||
{else} |
||||
<tr> |
||||
<td colspan="4"> |
||||
<ul class="messages"> |
||||
<li class="highlight yellow">{#FAQ_NO_ITEMS#}</li> |
||||
</ul> |
||||
</td> |
||||
</tr> |
||||
|
||||
{/if} |
||||
</table> |
||||
</div> |
@ -0,0 +1,124 @@
|
||||
<script type="text/javascript" language="JavaScript"> |
||||
function check_title() {ldelim} |
||||
if (document.getElementById('new_faq_title').value == '') {ldelim} |
||||
alert('{#FAQ_ENTER_NAME#}'); |
||||
document.getElementById('new_faq_title').focus(); |
||||
return false; |
||||
{rdelim} |
||||
return true; |
||||
{rdelim} |
||||
</script> |
||||
|
||||
|
||||
<div class="title"><h5>{#FAQ_LIST#}</h5></div> |
||||
|
||||
<div class="widget" style="margin-top: 0px;"> |
||||
<div class="body"> |
||||
{#FAQ_LIST_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&cp={$sess}">{#MODULES_SUB_TITLE#}</a></li> |
||||
<li>{#FAQ_LIST#}</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="widget first"> |
||||
|
||||
<ul class="tabs"> |
||||
<li class="activeTab"><a href="#tab1">Список рубрик</a></li> |
||||
<li class=""><a href="#tab2">{#FAQ_ADD#}</a></li> |
||||
</ul> |
||||
|
||||
<div class="tab_container"> |
||||
|
||||
<div id="tab1" class="tab_content" style="display: block;"> |
||||
<form method="post" action="index.php?do=modules&action=modedit&mod=faq&moduleaction=save&cp={$sess}"> |
||||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"> |
||||
<col /> |
||||
<col /> |
||||
<col width="100" /> |
||||
<col width="10" /> |
||||
<col width="10" /> |
||||
<thead> |
||||
<tr> |
||||
<td>{#FAQ_NAME#}</td> |
||||
<td>{#FAQ_DESC#}</td> |
||||
<td>{#FAQ_TAG#}</td> |
||||
<td colspan="2">{#FAQ_ACTIONS#}</td> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{if $faq_arr} |
||||
{foreach from=$faq_arr item=faq} |
||||
<tr> |
||||
<td> |
||||
<div class="pr12"><input style="width:100%" name="faq_title[{$faq->id}]" type="text" id="faq_title[{$faq->id}]" value="{$faq->faq_title|escape}" size="40" /></div> |
||||
</td> |
||||
|
||||
<td> |
||||
<div class="pr12"><input style="width:100%" name="faq_description[{$faq->id}]" type="text" id="faq_description[{$faq->id}]" value="{$faq->faq_description|escape}" size="40" /></div> |
||||
</td> |
||||
|
||||
<td> |
||||
<div class="pr12"><input style="width:100%" name="textfield" type="text" value="[mod_faq:{$faq->id}]" readonly /></div> |
||||
</td> |
||||
|
||||
<td align="center"> |
||||
<a class="topleftDir icon_sprite ico_edit" title="{#FAQ_EDIT_HINT#}" href="index.php?do=modules&action=modedit&mod=faq&moduleaction=questlist&fid={$faq->id}&cp={$sess}"></a> |
||||
</td> |
||||
|
||||
<td align="center"> |
||||
<a class="topleftDir ConfirmDelete icon_sprite ico_delete" title="{#FAQ_DELETE_HINT#}" href="index.php?do=modules&action=modedit&mod=faq&moduleaction=del&fid={$faq->id}&cp={$sess}"></a> |
||||
</td> |
||||
</tr> |
||||
{/foreach} |
||||
</tbody> |
||||
<tr> |
||||
<td colspan="5"> |
||||
<input type="submit" class="basicBtn" value="{#FAQ_BUTTON_SAVE#}" /> |
||||
</td> |
||||
</tr> |
||||
{else} |
||||
<tr> |
||||
<td colspan="5"> |
||||
<ul class="messages"> |
||||
<li class="highlight yellow">{#FAQ_NO_ITEMS#}</li> |
||||
</ul> |
||||
</td> |
||||
</tr> |
||||
{/if} |
||||
|
||||
</table> |
||||
</form> |
||||
</div> |
||||
|
||||
<div id="tab2" class="tab_content" style="display: none;"> |
||||
<form action="index.php?do=modules&action=modedit&mod=faq&moduleaction=new&cp={$sess}" method="post" onSubmit="return check_title();"> |
||||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"> |
||||
<thead> |
||||
<tr> |
||||
<td class="tableheader">{#FAQ_NAME#}</td> |
||||
<td class="tableheader">{#FAQ_DESC#}</td> |
||||
</tr> |
||||
</thead> |
||||
|
||||
<tr> |
||||
<td class="second"><div class="pr12"><input placeholder="{#FAQ_NAME#}" name="new_faq_title" type="text" id="new_faq_title" size="60" maxlength="100" style="width:100%" /></div></td> |
||||
<td class="second"><div class="pr12"><input placeholder="{#FAQ_DESC#}" name="new_faq_desc" type="text" id="new_faq_desc" size="60" maxlength="255" style="width:100%" /></div></td> |
||||
</tr> |
||||
<tr> |
||||
<td colspan="2"><input name="submit" type="submit" class="basicBtn" value="{#FAQ_BUTTON_ADD#}" /></td> |
||||
</tr> |
||||
</table> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
<div class="fix"></div> |
||||
</div> |
@ -0,0 +1,96 @@
|
||||
{if $smarty.session.use_editor == 0} |
||||
<script type="text/javascript" src="{$ABS_PATH}lib/redactor/ckeditor/ckeditor.js"></script> |
||||
<script type="text/javascript" src="{$ABS_PATH}lib/redactor/ckeditor/vendor/jquery.spellchecker.js"></script> |
||||
<link rel="stylesheet" href="{$ABS_PATH}lib/redactor/ckeditor/vendor/jquery.spellchecker.css" type="text/css" media="all" /> |
||||
{/if} |
||||
|
||||
{if $smarty.session.use_editor == 1} |
||||
<!-- elrte --> |
||||
<link rel="stylesheet" href="{$ABS_PATH}lib/redactor/redactor/elrte/css/elrte.full.css" type="text/css" media="screen" /> |
||||
<script src="{$ABS_PATH}lib/redactor/redactor/elrte/js/elrte.full.js" type="text/javascript"></script> |
||||
<script src="{$ABS_PATH}lib/redactor/redactor/elrte/js/i18n/elrte.ru.js" type="text/javascript"></script> |
||||
|
||||
<!-- elfinder --> |
||||
<link rel="stylesheet" href="{$ABS_PATH}lib/redactor/redactor/elfinder/css/elfinder.full.css" type="text/css" media="screen" /> |
||||
<link rel="stylesheet" href="{$ABS_PATH}lib/redactor/redactor/elfinder/css/theme.css" type="text/css" media="screen" /> |
||||
|
||||
<script src="{$ABS_PATH}lib/redactor/redactor/elfinder/js/elfinder.full.js" type="text/javascript"></script> |
||||
<script src="{$ABS_PATH}lib/redactor/redactor/elfinder/js/i18n/elfinder.ru.js" type="text/javascript"></script> |
||||
<script src="{$ABS_PATH}lib/redactor/redactor/elfinder/js/jquery.dialogelfinder.js" type="text/javascript"></script> |
||||
|
||||
<script type="text/javascript" src="{$tpl_dir}/js/rle.js"></script> |
||||
{/if} |
||||
|
||||
<div class="title"> |
||||
<h5>{#FAQ_INSERT_H#}</h5> |
||||
</div> |
||||
|
||||
<div class="widget" style="margin-top: 0px;"> |
||||
<div class="body"> |
||||
{#FAQ_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&cp={$sess}">{#MODULES_SUB_TITLE#}</a></li> |
||||
<li><a href="index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp={$sess}">{#FAQ_LIST#}</a></li> |
||||
<li>{#FAQ_INSERT_H#}</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="widget first"> |
||||
<div class="head"> |
||||
<h5 class="iFrames">{if $smarty.request.id != ''}{#FAQ_EDIT_RUB#}{else}{#FAQ_EDIT_RUB#}{/if}</h5> |
||||
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=faq&moduleaction=questedit&fid={$smarty.get.fid}&cp={$sess}">{#FAQ_ADD_QUEST#}</a></div> |
||||
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp={$sess}">{#FAQ_BACK#}</a></div> |
||||
</div> |
||||
|
||||
<form action="index.php?do=modules&action=modedit&mod=faq&moduleaction=questsave&cp={$sess}" method="post"> |
||||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"> |
||||
<tr class="tableheader"> |
||||
<td>{#FAQ_INNAME#}</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="second"> |
||||
<div> |
||||
{if $smarty.session.use_editor == 0} |
||||
{$faq_quest} |
||||
{elseif $smarty.session.use_editor == 1} |
||||
<textarea class="mousetrap editor" id="faq_quest" name="faq_quest">{$faq_quest|escape}</textarea> |
||||
{/if} |
||||
</div> |
||||
</td> |
||||
</tr> |
||||
|
||||
<tr class="tableheader"> |
||||
<td>{#FAQ_INDESC#}</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="second"> |
||||
<div> |
||||
{if $smarty.session.use_editor == 0} |
||||
{$faq_answer} |
||||
{elseif $smarty.session.use_editor == 1} |
||||
<textarea class="mousetrap editor" id="faq_answer" name="faq_answer">{$sfaq_answer|escape}</textarea> |
||||
{/if} |
||||
</div> |
||||
</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="first"> |
||||
<input type="hidden" name="id" value="{$id}"> |
||||
<input type="hidden" name="fid" value="{$faq_id}"> |
||||
<input name="submit" type="submit" class="basicBtn" value="{#FAQ_SAVE#}" /> |
||||
</td> |
||||
</tr> |
||||
</table> |
||||
</form> |
||||
</div> |
@ -0,0 +1,24 @@
|
||||
<h3>{$faq_title}</h3> |
||||
|
||||
{if $questions} |
||||
<dl> |
||||
{foreach from=$questions item=question} |
||||
<dt><p><a href="javascript:void(0);">{$question->faq_quest}</a></p></dt> |
||||
<dd> |
||||
<h2>{$question->faq_quest}</h2> |
||||
{$question->faq_answer} |
||||
</dd> |
||||
{/foreach} |
||||
</dl> |
||||
{literal} |
||||
<script> |
||||
$(document).ready(function() { |
||||
$("dd").hide(); |
||||
$("dt").unbind('click'); |
||||
$("dt").click(function() { |
||||
$(this).toggleClass("highligh").next("dd").slideToggle(); |
||||
}); |
||||
}); |
||||
</script> |
||||
{/literal} |
||||
{/if} |
Loading…
Reference in new issue