SVarlamov
9 years ago
commit
c116d722c1
13 changed files with 850 additions and 0 deletions
@ -0,0 +1,15 @@ |
|||||||
|
## newsarchive |
||||||
|
|
||||||
|
# Модуль Архив новостей v1.3 |
||||||
|
|
||||||
|
|
||||||
|
## Данный модуль предзназначен для организации архива документов по выбранным рубрикам в системе. |
||||||
|
|
||||||
|
* Параметры модуля позволяют определить возможность показа пустых месяцев и ежедневное меню навигации. |
||||||
|
|
||||||
|
|
||||||
|
## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку newsarchive со всем ее содержимым внутри! |
||||||
|
|
||||||
|
## Changelog: |
||||||
|
|
||||||
|
02.05.2014 - версия 1.3 |
@ -0,0 +1,93 @@ |
|||||||
|
<script type="text/javascript" language="JavaScript"> |
||||||
|
$(document).ready(function(){ldelim} |
||||||
|
$(".EditArchive").click( function(e) {ldelim} |
||||||
|
e.preventDefault(); |
||||||
|
var user_group = $('#edit_archive #newsarchive_name').fieldValue(); |
||||||
|
var title = '{#ARCHIVE_NAME#}'; |
||||||
|
var text = '{#ARCHIVE_ENTER_NAME#}'; |
||||||
|
if (user_group == ""){ldelim} |
||||||
|
jAlert(text,title); |
||||||
|
{rdelim}else{ldelim} |
||||||
|
$.alerts._overlay('show'); |
||||||
|
$("#edit_archive").submit(); |
||||||
|
{rdelim} |
||||||
|
{rdelim}); |
||||||
|
{rdelim}); |
||||||
|
</script> |
||||||
|
|
||||||
|
|
||||||
|
<div class="title"><h5>{#ARCHIVE_EDIT#}</h5></div> |
||||||
|
|
||||||
|
<div class="widget" style="margin-top: 0px;"> |
||||||
|
<div class="body"> |
||||||
|
{#ARCHIVE_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=newsarchive&moduleaction=1&cp={$sess}">{#ARCHIVE_LIST#}</a></li> |
||||||
|
<li><strong class="code">{$archives->newsarchive_name|escape:html|stripslashes}</strong></li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="widget first"> |
||||||
|
<div class="head"> |
||||||
|
<h5 class="iFrames">{#ARCHIVE_EDIT#}</h5> |
||||||
|
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=1&cp={$sess}">{#ARCHIVE_RETURN#}</a></div> |
||||||
|
</div> |
||||||
|
<form method="post" action="index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=saveedit&cp={$sess}" id="edit_archive" class="mainForm"> |
||||||
|
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic"> |
||||||
|
<col width="250" /> |
||||||
|
<col /> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<td>{#ARCHIVE_PARAMS#}</td> |
||||||
|
<td>{#ARCHIVE_DATAS#}</td> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tr> |
||||||
|
<td>{#ARCHIVE_ITEM_NAME#}</td> |
||||||
|
<td><div class="pr12"><input name="newsarchive_name" type="text" id="newsarchive_name" value="{$archives->newsarchive_name|escape:html|stripslashes}" size="40"></div></td> |
||||||
|
</tr> |
||||||
|
|
||||||
|
<tr> |
||||||
|
<td>{#ARCHIVE_RUBS_SELECT#}</td> |
||||||
|
<td> |
||||||
|
<select name="newsarchive_rubrics[]" size="8" multiple="multiple" class="select" style="width:200px"> |
||||||
|
{foreach from=$newsarchive_rubrics item=rubric} |
||||||
|
<option value="{$rubric->Id}" {if $rubric->sel}selected="selected"{else}{/if}>{$rubric->rubric_title|escape:html}</option> |
||||||
|
{/foreach} |
||||||
|
</select> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
|
||||||
|
<tr> |
||||||
|
<td>{#ARCHIVE_SHOW_DAYS#}</td> |
||||||
|
<td> |
||||||
|
<input name="newsarchive_show_days" type="radio" value="1" {if $archives->newsarchive_show_days == 1}checked="checked"{/if}> <label>{#ARCHIVE_YES#}</label> |
||||||
|
<input name="newsarchive_show_days" type="radio" value="0" {if $archives->newsarchive_show_days == 0}checked="checked"{/if}> <label>{#ARCHIVE_NO#}</label> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
|
||||||
|
<tr> |
||||||
|
<td>{#ARCHIVE_SHOW_EMPTY#}</td> |
||||||
|
<td> |
||||||
|
<input name="newsarchive_show_empty" type="radio" value="1" {if $archives->newsarchive_show_empty == 1}checked="checked"{/if}> <label>{#ARCHIVE_YES#}</label> |
||||||
|
<input name="newsarchive_show_empty" type="radio" value="0" {if $archives->newsarchive_show_empty == 0}checked="checked"{/if}> <label>{#ARCHIVE_NO#}</label> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
|
||||||
|
<tr> |
||||||
|
<td colspan="2"><input type="submit" class="basicBtn EditArchive" value="{#ARCHIVE_BUTTON_SAVE#}" /></td> |
||||||
|
</tr> |
||||||
|
|
||||||
|
<input type="hidden" name="id" value="{$archives->id}" /> |
||||||
|
</table> |
||||||
|
</form> |
||||||
|
</div> |
@ -0,0 +1,106 @@ |
|||||||
|
<script type="text/javascript" language="JavaScript"> |
||||||
|
$(document).ready(function(){ldelim} |
||||||
|
$(".AddArchive").click( function(e) {ldelim} |
||||||
|
e.preventDefault(); |
||||||
|
var user_group = $('#add_archive #newsarchive_name_new').fieldValue(); |
||||||
|
var title = '{#ARCHIVE_NAME#}'; |
||||||
|
var text = '{#ARCHIVE_ENTER_NAME#}'; |
||||||
|
if (user_group == ""){ldelim} |
||||||
|
jAlert(text,title); |
||||||
|
{rdelim}else{ldelim} |
||||||
|
$.alerts._overlay('show'); |
||||||
|
$("#add_archive").submit(); |
||||||
|
{rdelim} |
||||||
|
{rdelim}); |
||||||
|
{rdelim}); |
||||||
|
</script> |
||||||
|
|
||||||
|
|
||||||
|
<div class="title"><h5>{#ARCHIVE_LIST#}</h5></div> |
||||||
|
|
||||||
|
<div class="widget" style="margin-top: 0px;"> |
||||||
|
<div class="body"> |
||||||
|
{#ARCHIVE_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>{#ARCHIVE_LIST#}</li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="widget first"> |
||||||
|
<ul class="tabs"> |
||||||
|
<li class="activeTab"><a href="#tab1">{#ARCHIVE_LISTS#}</a></li> |
||||||
|
<li><a href="#tab2">{#ARCHIVE_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 width="250" /> |
||||||
|
<col /> |
||||||
|
<col width="150" /> |
||||||
|
<col width="20" /> |
||||||
|
<col width="20" /> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<td>Id</td> |
||||||
|
<td>{#ARCHIVE_NAME#}</td> |
||||||
|
<td>{#ARCHIVE_USE_RUBRIKS#}</td> |
||||||
|
<td>{#ARCHIVE_TAG#}</td> |
||||||
|
<td colspan="2">{#ARCHIVE_ACTIONS#}</td> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
{if $archives} |
||||||
|
{foreach from=$archives item=archive} |
||||||
|
<tr> |
||||||
|
<td>{$archive->id}</td> |
||||||
|
<td><strong><a class="topleftDir link" title="{#ARCHIVE_EDIT_HINT#}" href="index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=edit&cp={$sess}&id={$archive->id}">{$archive->newsarchive_name|escape:html|stripslashes}</a></strong></td> |
||||||
|
<td align="center"><strong>{if !$archive->rubric_title}{#ARCHIVE_NO_RUBRIKS#}{else}{$archive->rubric_title}{/if}</strong></td> |
||||||
|
<td><div class="pr12"><input name="textfield" type="text" value="[mod_newsarchive:{$archive->id}]" readonly /></div></td> |
||||||
|
<td align="center"> |
||||||
|
<a class="topleftDir icon_sprite ico_setting" title="{#ARCHIVE_EDIT_HINT#}" href="index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=edit&cp={$sess}&id={$archive->id}"></a> |
||||||
|
</td> |
||||||
|
<td align="center"> |
||||||
|
<a class="topleftDir ConfirmDelete icon_sprite ico_delete" title="{#ARCHIVE_DELETE_HINT#}" href="index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=del&cp={$sess}&id={$archive->id}"></a> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
{/foreach} |
||||||
|
{else} |
||||||
|
<tr> |
||||||
|
<td colspan="6"> |
||||||
|
<ul class="messages"> |
||||||
|
<li class="highlight yellow">{#ARCHIVE_NO_ITEMS#}</li> |
||||||
|
</ul> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
{/if} |
||||||
|
</table> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div id="tab2" class="tab_content" style="display: none;"> |
||||||
|
<form action="index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=add&cp={$sess}" method="post" class="mainForm" id="add_archive"> |
||||||
|
<div class="rowElem"> |
||||||
|
<label>{#ARCHIVE_NAME#}</label> |
||||||
|
<div class="formRight"> |
||||||
|
<input name="newsarchive_name_new" type="text" id="newsarchive_name_new" value="" placeholder="{#ARCHIVE_NAME#}" style="width: 400px" /> |
||||||
|
|
||||||
|
<input type="button" class="basicBtn AddArchive" value="{#ARCHIVE_BUTTON_ADD#}" /> |
||||||
|
</div> |
||||||
|
<div class="fix"></div> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="fix"></div> |
||||||
|
</div> |
@ -0,0 +1,8 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* Файл-заглушка, предназначенный для запрета показа списка файлов в текущей директории, |
||||||
|
* если через адресную строку браузера было прямое общращение к данной директории. |
||||||
|
*/ |
||||||
|
header('Location:/'); |
||||||
|
exit; |
||||||
|
?> |
@ -0,0 +1,253 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/** |
||||||
|
* AVE.cms - Модуль Архив новостей |
||||||
|
* |
||||||
|
* @filesource |
||||||
|
*/ |
||||||
|
/** |
||||||
|
* Класс работы с архивом новостей |
||||||
|
* |
||||||
|
* @package AVE.cms |
||||||
|
* @subpackage module_Newsarchive |
||||||
|
* @author Arcanum |
||||||
|
* @since 2.0 |
||||||
|
*/ |
||||||
|
class Newsarchive |
||||||
|
{ |
||||||
|
/** |
||||||
|
* Метод, отвечающий за вывод списка всех архивов в Панели управления |
||||||
|
* |
||||||
|
* @param string $tpl_dir - путь к папке с шаблонами |
||||||
|
*/ |
||||||
|
function newsarchiveList($tpl_dir, $adm_tpl_dir) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
$archives = array(); |
||||||
|
$ids = array(); |
||||||
|
|
||||||
|
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_newsarchive"); |
||||||
|
while ($row = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
array_push($archives, $row); |
||||||
|
} |
||||||
|
|
||||||
|
$cnt = count($archives); |
||||||
|
for ($i=0; $i< $cnt; $i++) |
||||||
|
{ |
||||||
|
$ids[] = explode(',', $archives[$i]->newsarchive_rubrics); |
||||||
|
} |
||||||
|
|
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
Id, |
||||||
|
rubric_title |
||||||
|
FROM " . PREFIX . "_rubrics |
||||||
|
"); |
||||||
|
while ($row = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
for ($i=0; $i< $cnt; $i++) |
||||||
|
{ |
||||||
|
if (in_array($row->Id, $ids[$i])) |
||||||
|
{ |
||||||
|
@$archives[$i]->rubric_title = strstr($archives[$i]->rubric_title . ', ' . $row->rubric_title, ' '); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$AVE_Template->assign('archives', $archives); |
||||||
|
$AVE_Template->assign('content', $AVE_Template->fetch($adm_tpl_dir . 'admin_archive_list.tpl')); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод, отвечающий за схранение изменений в списке всех архивов в Панели управления |
||||||
|
* |
||||||
|
*/ |
||||||
|
function newsarchiveListSave() |
||||||
|
{ |
||||||
|
global $AVE_DB; |
||||||
|
|
||||||
|
foreach ((array)$_POST['newsarchive_name'] as $id => $newsarchive_name) |
||||||
|
{ |
||||||
|
$AVE_DB->Query(" |
||||||
|
UPDATE " . PREFIX . "_module_newsarchive |
||||||
|
SET newsarchive_name = '" . $newsarchive_name . "' |
||||||
|
WHERE id = '" . (int)$id . "' |
||||||
|
"); |
||||||
|
} |
||||||
|
|
||||||
|
header('Location:index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=1&cp=' . SESSION); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод, отвечающий за вывод списка месяцев в публичной части сайта (Основная функция вывода) |
||||||
|
* |
||||||
|
* @param string $tpl_dir - путь к папке с шаблонами |
||||||
|
* @param int $id - идентификатор архива новостей |
||||||
|
*/ |
||||||
|
function newsarchiveShow($tpl_dir, $id) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
$months = array('','Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'); |
||||||
|
$mid = array('','01','02','03','04','05','06','07','08','09','10','11','12'); |
||||||
|
$dd = array(); |
||||||
|
$doctime = get_settings('use_doctime') |
||||||
|
? ("AND document_published <= " . time() . " AND (document_expire = 0 OR document_expire >= " . time() . ")") : ''; |
||||||
|
|
||||||
|
$row = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
newsarchive_rubrics, |
||||||
|
newsarchive_show_empty |
||||||
|
FROM " . PREFIX . "_module_newsarchive |
||||||
|
WHERE id = '" . $id . "' |
||||||
|
")->FetchRow(); |
||||||
|
|
||||||
|
$query = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
MONTH(FROM_UNIXTIME(document_published)) AS `month`, |
||||||
|
YEAR(FROM_UNIXTIME(document_published)) AS `year`, |
||||||
|
COUNT(*) AS nums |
||||||
|
FROM " . PREFIX . "_documents |
||||||
|
WHERE rubric_id IN (" . $row->newsarchive_rubrics . ") |
||||||
|
AND Id != '1' |
||||||
|
AND Id != '" . PAGE_NOT_FOUND_ID . "' |
||||||
|
AND document_deleted = '0' |
||||||
|
AND document_status = '1' |
||||||
|
AND document_published > UNIX_TIMESTAMP(DATE_FORMAT((CURDATE() - INTERVAL 15 YEAR),'%Y-%m-01')) |
||||||
|
" . $doctime . " |
||||||
|
GROUP BY `year`,`month` |
||||||
|
ORDER BY `year` DESC,`month` DESC |
||||||
|
"); |
||||||
|
|
||||||
|
while ($res = $query->FetchRow()) |
||||||
|
{ |
||||||
|
$res->mid = $mid[$res->month]; |
||||||
|
$res->month = $months[$res->month]; |
||||||
|
array_push($dd, $res); |
||||||
|
} |
||||||
|
|
||||||
|
$AVE_Template->assign('archiveid', $id); |
||||||
|
$AVE_Template->assign('newsarchive_show_empty', $row->newsarchive_show_empty); |
||||||
|
$AVE_Template->assign('months', $dd); |
||||||
|
|
||||||
|
if (file_exists($tpl_dir . 'public_archive-'. $id .'.tpl')) { |
||||||
|
$AVE_Template->display($tpl_dir . 'public_archive-'. $id .'.tpl'); |
||||||
|
} else { |
||||||
|
$AVE_Template->display($tpl_dir . 'public_archive.tpl'); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод, отвечающий за добавление нового архива в Панели управления |
||||||
|
* |
||||||
|
*/ |
||||||
|
function newsarchiveNew() |
||||||
|
{ |
||||||
|
global $AVE_DB; |
||||||
|
|
||||||
|
$AVE_DB->Query(" |
||||||
|
INSERT |
||||||
|
INTO " . PREFIX . "_module_newsarchive |
||||||
|
SET |
||||||
|
id = '', |
||||||
|
newsarchive_name = '" . $_POST['newsarchive_name_new'] . "', |
||||||
|
newsarchive_rubrics = '', |
||||||
|
newsarchive_show_days = '1', |
||||||
|
newsarchive_show_empty = '' |
||||||
|
"); |
||||||
|
|
||||||
|
header('Location:index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=edit&cp=' . SESSION . '&id=' . $AVE_DB->InsertId()); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод, отвечающий за вывод данных для редактирования выбранного архива |
||||||
|
* |
||||||
|
* @param string $tpl_dir - путь к папке с шаблонами |
||||||
|
*/ |
||||||
|
function newsarchiveEdit($tpl_dir, $adm_tpl_dir) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
$id = intval($_GET['id']); |
||||||
|
$archives = $AVE_DB->Query(" |
||||||
|
SELECT * |
||||||
|
FROM " . PREFIX . "_module_newsarchive |
||||||
|
WHERE id = '" . $id . "' |
||||||
|
")->FetchRow(); |
||||||
|
|
||||||
|
$ids = @explode(',', $archives->newsarchive_rubrics); |
||||||
|
|
||||||
|
$sql = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
Id, |
||||||
|
rubric_title |
||||||
|
FROM " . PREFIX . "_rubrics |
||||||
|
"); |
||||||
|
$newsarchive_rubrics = array(); |
||||||
|
while ($row = $sql->FetchRow()) |
||||||
|
{ |
||||||
|
if (in_array($row->Id, $ids)) |
||||||
|
{ |
||||||
|
$row->sel = 1; |
||||||
|
array_push($newsarchive_rubrics, $row); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
$row->sel = 0; |
||||||
|
array_push($newsarchive_rubrics, $row); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$AVE_Template->assign('archives', $archives); |
||||||
|
$AVE_Template->assign('newsarchive_rubrics', $newsarchive_rubrics); |
||||||
|
$AVE_Template->assign('content', $AVE_Template->fetch($adm_tpl_dir . 'admin_archive_edit.tpl')); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод, отвечающий за сохранение изменений для редактируемого архива |
||||||
|
* |
||||||
|
*/ |
||||||
|
function newsarchiveSave() |
||||||
|
{ |
||||||
|
global $AVE_DB; |
||||||
|
|
||||||
|
$AVE_DB->Query(" |
||||||
|
UPDATE " . PREFIX . "_module_newsarchive |
||||||
|
SET |
||||||
|
newsarchive_name = '" . $_POST['newsarchive_name'] . "', |
||||||
|
newsarchive_rubrics = '" . implode(',', (array)$_POST['newsarchive_rubrics']) . "', |
||||||
|
newsarchive_show_days = '" . $_POST['newsarchive_show_days'] . "', |
||||||
|
newsarchive_show_empty = '" . $_POST['newsarchive_show_empty'] . "' |
||||||
|
WHERE |
||||||
|
id = '" . intval($_POST['id']) . "' |
||||||
|
"); |
||||||
|
|
||||||
|
header('Location:index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=1&cp=' . SESSION); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Метод, отвечающий за удаление выбранного архива из Панели управления |
||||||
|
* |
||||||
|
*/ |
||||||
|
function newsarchiveDelete() |
||||||
|
{ |
||||||
|
global $AVE_DB; |
||||||
|
|
||||||
|
$AVE_DB->Query(" |
||||||
|
DELETE |
||||||
|
FROM " . PREFIX . "_module_newsarchive |
||||||
|
WHERE id = '" . intval($_GET['id']) . "' |
||||||
|
"); |
||||||
|
|
||||||
|
header('Location:index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=1&cp=' . SESSION); |
||||||
|
exit; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
?> |
@ -0,0 +1,8 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* Файл-заглушка, предназначенный для запрета показа списка файлов в текущей директории, |
||||||
|
* если через адресную строку браузера было прямое общращение к данной директории. |
||||||
|
*/ |
||||||
|
header('Location:/'); |
||||||
|
exit; |
||||||
|
?> |
@ -0,0 +1,8 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* Файл-заглушка, предназначенный для запрета показа списка файлов в текущей директории, |
||||||
|
* если через адресную строку браузера было прямое общращение к данной директории. |
||||||
|
*/ |
||||||
|
header('Location:/'); |
||||||
|
exit; |
||||||
|
?> |
@ -0,0 +1,35 @@ |
|||||||
|
ARCHIVE_EDIT = "Редактирование архива" |
||||||
|
ARCHIVE_EDIT_TIP = "В данном разделе вы можете установить необходимые параметры для архива. Параметр "Показывать пустые месяцы" определяет будут ли показаны в Публичной части сайта те месяцы, в которых отсутствуют документы. Параметр "Показывать дни" определяет будет ли показан список дней для выбранного месяца. Параметр "Рубрики для сбора данных" определяет те рубрики, из которых будет формироваться данный архив документов. Для выбора нескольких рубрик зажмите клавишу CTRL." |
||||||
|
ARCHIVE_ENTER_NAME = "Пожалуйста, укажите название архива" |
||||||
|
ARCHIVE_ITEM_NAME = "Название архива:" |
||||||
|
ARCHIVE_RUBS_SELECT = "Рубрики для сбора данных:" |
||||||
|
ARCHIVE_SHOW_DAYS = "Показывать дни?" |
||||||
|
ARCHIVE_SHOW_EMPTY = "Показывать пустые месяцы?" |
||||||
|
ARCHIVE_BUTTON_SAVE = "Сохранить изменения" |
||||||
|
ARCHIVE_BUTTON_ADD = "Добавить архив" |
||||||
|
ARCHIVE_YES = "Да" |
||||||
|
ARCHIVE_NO = "Нет" |
||||||
|
ARCHIVE_LIST = "Архив документов" |
||||||
|
ARCHIVE_LIST_TIP = "В данном разделе приведен список всех архивов в системе." |
||||||
|
ARCHIVE_NAME = "Название архива" |
||||||
|
ARCHIVE_TAG = "Системный тег" |
||||||
|
ARCHIVE_USE_RUBRIKS = "Включает рубрики" |
||||||
|
ARCHIVE_ACTIONS = "Действия" |
||||||
|
ARCHIVE_NO_RUBRIKS = "Рубрики не выбраны" |
||||||
|
ARCHIVE_EDIT_HINT = "Редактировать данный архив" |
||||||
|
ARCHIVE_DELETE_HINT = "Удалить данный архив" |
||||||
|
ARCHIVE_NO_ITEMS = "В настоящий момент архивов нет" |
||||||
|
ARCHIVE_ADD = "Добавить новый архив" |
||||||
|
ARCHIVE_FROM = "Архив за" |
||||||
|
ARCHIVE_YEAR = "года" |
||||||
|
ARCHIVE_DAYS = "Календарные дни:" |
||||||
|
ARCHIVE_NOT_FOUND = "Документов не найдено" |
||||||
|
ARCHIVE_TITLE = "Архив документов" |
||||||
|
ARCHIVE_DOC_NAME = "Название документа" |
||||||
|
ARCHIVE_PUBLIC_DATE = "Дата публикации" |
||||||
|
ARCHIVE_IN_RUBRIC = "В рубрике" |
||||||
|
ARCHIVE_ALL_DAY = "Все" |
||||||
|
ARCHIVE_RETURN = "Вернуться к списку всех архивов" |
||||||
|
ARCHIVE_LISTS = "Список всех архивов" |
||||||
|
ARCHIVE_PARAMS = "Параметр" |
||||||
|
ARCHIVE_DATAS = "Значение" |
@ -0,0 +1,208 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/** |
||||||
|
* AVE.cms - Модуль Архив новостей |
||||||
|
* |
||||||
|
* @package AVE.cms |
||||||
|
* @subpackage module_Newsarchive |
||||||
|
* @author Arcanum |
||||||
|
* @since 2.0 |
||||||
|
* @filesource |
||||||
|
*/ |
||||||
|
|
||||||
|
if (!defined('BASE_DIR')) exit; |
||||||
|
|
||||||
|
if (defined('ACP')) |
||||||
|
{ |
||||||
|
$modul['ModuleName'] = 'Архив документов'; |
||||||
|
$modul['ModuleSysName'] = 'newsarchive'; |
||||||
|
$modul['ModuleVersion'] = '1.3'; |
||||||
|
$modul['ModuleDescription'] = 'Данный модуль предзназначен для организации архива документов по выбранным рубрикам в системе. Параметры модуля позволяют определить возможность пока пустых месяцев и ежедневное меню навигации.'; |
||||||
|
$modul['ModuleAutor'] = 'AVE.CMS Team'; |
||||||
|
$modul['ModuleCopyright'] = '© 2007-2014 AVE.cms'; |
||||||
|
$modul['ModuleIsFunction'] = 1; |
||||||
|
$modul['ModuleTemplate'] = 1; |
||||||
|
$modul['ModuleAdminEdit'] = 1; |
||||||
|
$modul['ModuleFunction'] = 'mod_newsarchive'; |
||||||
|
$modul['ModuleTag'] = '[mod_newsarchive:XXX]'; |
||||||
|
$modul['ModuleTagLink'] = null; |
||||||
|
$modul['ModuleAveTag'] = '#\\\[mod_newsarchive:(\\\d+)]#'; |
||||||
|
$modul['ModulePHPTag'] = "<?php mod_newsarchive(''$1''); ?>";
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Обработка тега модуля |
||||||
|
* |
||||||
|
* @param int $newsarchive_id - идентификатор архива |
||||||
|
*/ |
||||||
|
function mod_newsarchive($newsarchive_id) |
||||||
|
{ |
||||||
|
global $AVE_Template; |
||||||
|
|
||||||
|
$newsarchive_id = preg_replace('/\D/', '', $newsarchive_id); |
||||||
|
|
||||||
|
if (is_numeric($newsarchive_id) && $newsarchive_id > 0) |
||||||
|
{ |
||||||
|
require_once(BASE_DIR . '/modules/newsarchive/class.newsarchive.php'); |
||||||
|
$Newsarchive = new Newsarchive; |
||||||
|
|
||||||
|
$tpl_dir = BASE_DIR . '/modules/newsarchive/templates/'; |
||||||
|
$lang_file = BASE_DIR . '/modules/newsarchive/lang/' . $_SESSION['user_language'] . '.txt'; |
||||||
|
|
||||||
|
$AVE_Template->config_load($lang_file, 'admin'); |
||||||
|
|
||||||
|
$Newsarchive->newsarchiveShow($tpl_dir, $newsarchive_id); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Выборка докуметов из БД на основании Месяца, Года и Дня |
||||||
|
* День необязательный параметр |
||||||
|
* |
||||||
|
* @param int $newsarchive_id идентификатор архива |
||||||
|
* @param int $month месяц |
||||||
|
* @param int $year год |
||||||
|
* @param int $day день |
||||||
|
*/ |
||||||
|
function show_by($newsarchive_id, $month, $year, $day = 0) |
||||||
|
{ |
||||||
|
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
|
if(defined('MODULE_CONTENT')) return; |
||||||
|
|
||||||
|
$assign = array(); |
||||||
|
|
||||||
|
$tpl_dir = BASE_DIR . '/modules/newsarchive/templates/'; |
||||||
|
$adm_tpl_dir = BASE_DIR . '/modules/newsarchive/admin/'; |
||||||
|
$lang_file = BASE_DIR . '/modules/newsarchive/lang/' . $_SESSION['user_language'] . '.txt'; |
||||||
|
$AVE_Template->config_load($lang_file, 'admin'); |
||||||
|
|
||||||
|
// Определяем, пришел ли в запросе номер дня |
||||||
|
$db_day = (is_numeric($day) && $day != 0) ? "AND DAYOFMONTH(FROM_UNIXTIME(a.document_published)) = '" . $day . "'" : ''; |
||||||
|
|
||||||
|
// Выбираем все параметры для запроса с текущим ID |
||||||
|
$newsarchive = $AVE_DB->Query(" |
||||||
|
SELECT * |
||||||
|
FROM ".PREFIX."_module_newsarchive |
||||||
|
WHERE id = '" . (int)$newsarchive_id . "' |
||||||
|
")->FetchRow(); |
||||||
|
|
||||||
|
// Формирование условий сортировки выводимых документов |
||||||
|
$db_sort = 'ORDER BY a.document_published ASC'; |
||||||
|
if(isset($_REQUEST['sort'])) |
||||||
|
{ |
||||||
|
switch($_REQUEST['sort']) |
||||||
|
{ |
||||||
|
case 'title': $db_sort = 'ORDER BY a.document_title ASC'; break; |
||||||
|
case 'title_desc': $db_sort = 'ORDER BY a.document_title DESC'; break; |
||||||
|
case 'date': $db_sort = 'ORDER BY a.document_published ASC'; break; |
||||||
|
case 'date_desc': $db_sort = 'ORDER BY a.document_published DESC'; break; |
||||||
|
case 'rubric': $db_sort = 'ORDER BY b.rubric_title ASC'; break; |
||||||
|
case 'rubric_desc': $db_sort = 'ORDER BY b.rubric_title DESC'; break; |
||||||
|
default: $db_sort = 'ORDER BY a.document_published ASC'; break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$doctime = get_settings('use_doctime') |
||||||
|
? ("AND document_published <= " . time() . " AND (document_expire = 0 OR document_expire >= " . time() . ")") : ''; |
||||||
|
|
||||||
|
// Выбираем из БД документы. которые соответствуют условиям для запроса и модуля |
||||||
|
$query = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
a.Id, |
||||||
|
a.rubric_id, |
||||||
|
a.document_title, |
||||||
|
a.document_alias, |
||||||
|
a.document_published, |
||||||
|
b.rubric_title |
||||||
|
FROM |
||||||
|
" . PREFIX . "_documents as a, |
||||||
|
" . PREFIX . "_rubrics as b |
||||||
|
WHERE rubric_id IN (" . $newsarchive->newsarchive_rubrics . ") |
||||||
|
AND MONTH(FROM_UNIXTIME(a.document_published)) = '" . (int)$month . "' |
||||||
|
AND YEAR(FROM_UNIXTIME(a.document_published))= '" . (int)$year . "' |
||||||
|
" . $db_day . " |
||||||
|
AND a.rubric_id = b.Id |
||||||
|
AND a.Id != '". PAGE_NOT_FOUND_ID . "' |
||||||
|
AND document_deleted != '1' |
||||||
|
AND document_status != '0' |
||||||
|
" . $doctime . " |
||||||
|
" . $db_sort . " |
||||||
|
"); |
||||||
|
|
||||||
|
// Заполняем массив докуметов результатами из БД |
||||||
|
$documents = array(); |
||||||
|
while($doc = $query->FetchRow()) |
||||||
|
{ |
||||||
|
$doc->document_alias = rewrite_link('index.php?id=' . $doc->Id . '&doc=' . (empty($doc->document_alias) ? prepare_url($doc->document_title) : $doc->document_alias)); |
||||||
|
array_push($documents, $doc); |
||||||
|
} |
||||||
|
|
||||||
|
// Формируем меню навигации по дням |
||||||
|
$day_in_month = date('t', mktime(0, 0, 0, (int)$month, 1, (int)$year)); |
||||||
|
$m_arr = array(null, 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'); |
||||||
|
|
||||||
|
$assign['newsarchive'] = $newsarchive; |
||||||
|
$assign['documents'] = $documents; |
||||||
|
$assign['days'] = range(1, $day_in_month); |
||||||
|
$assign['month_name'] = $m_arr[(int)$month]; |
||||||
|
$assign['year'] = (int)$year; |
||||||
|
$assign['month'] = (int)$month; |
||||||
|
$assign['day'] = (int)$day; |
||||||
|
|
||||||
|
$AVE_Template->assign($assign); |
||||||
|
|
||||||
|
define('MODULE_TITLE', $AVE_Template->get_config_vars('ARCHIVE_FROM') . ' ' . $m_arr[(int)$month] . ', ' . (int)$year . ' ' . $AVE_Template->get_config_vars('ARCHIVE_YEAR')); |
||||||
|
if (file_exists($tpl_dir . 'archive_result-'. (int)$newsarchive_id .'.tpl')) { |
||||||
|
define('MODULE_CONTENT', $AVE_Template->fetch($tpl_dir . 'archive_result-'. (int)$newsarchive_id .'.tpl')); |
||||||
|
}else{ |
||||||
|
define('MODULE_CONTENT', $AVE_Template->fetch($tpl_dir . 'archive_result.tpl')); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Включаем проверку входных данных и показываем результаты в зависимости от запроса |
||||||
|
if (isset($_GET['module']) && $_GET['module'] == 'newsarchive' && !empty($_GET['month']) && !empty($_GET['year'])) |
||||||
|
{ |
||||||
|
show_by($_GET['id'], $_GET['month'], $_GET['year'], isset($_GET['day']) ? $_GET['day'] : 0); |
||||||
|
} |
||||||
|
|
||||||
|
// Кусок кода, отвечающий за управление модулем в админке |
||||||
|
if (defined('ACP') && !empty($_REQUEST['moduleaction'])) |
||||||
|
{ |
||||||
|
require_once(BASE_DIR . '/modules/newsarchive/class.newsarchive.php'); |
||||||
|
$Newsarchive = new Newsarchive; |
||||||
|
|
||||||
|
$tpl_dir = BASE_DIR . '/modules/newsarchive/templates/'; |
||||||
|
$adm_tpl_dir = BASE_DIR . '/modules/newsarchive/admin/'; |
||||||
|
$lang_file = BASE_DIR . '/modules/newsarchive/lang/' . $_SESSION['admin_language'] . '.txt'; |
||||||
|
$AVE_Template->config_load($lang_file); |
||||||
|
|
||||||
|
switch($_REQUEST['moduleaction']) |
||||||
|
{ |
||||||
|
case '1': |
||||||
|
$Newsarchive->newsarchiveList($tpl_dir, $adm_tpl_dir); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'add': |
||||||
|
$Newsarchive->newsarchiveNew(); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'del': |
||||||
|
$Newsarchive->newsarchiveDelete(); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'savelist': |
||||||
|
$Newsarchive->newsarchiveListSave(); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'edit': |
||||||
|
$Newsarchive->newsarchiveEdit($tpl_dir, $adm_tpl_dir); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'saveedit': |
||||||
|
$Newsarchive->newsarchiveSave(); |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
?> |
@ -0,0 +1,42 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/** |
||||||
|
* AVE.cms - Модуль Архив новостей |
||||||
|
* |
||||||
|
* @package AVE.cms |
||||||
|
* @subpackage module_Newsarchive |
||||||
|
* @filesource |
||||||
|
*/ |
||||||
|
|
||||||
|
/** |
||||||
|
* mySQL-запросы для установки, обновления и удаления модуля |
||||||
|
*/ |
||||||
|
|
||||||
|
$module_sql_install = array(); |
||||||
|
$module_sql_deinstall = array(); |
||||||
|
$module_sql_update = array(); |
||||||
|
|
||||||
|
$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_newsarchive;"; |
||||||
|
|
||||||
|
$module_sql_install[] = "CREATE TABLE CPPREFIX_module_newsarchive ( |
||||||
|
`id` mediumint(5) unsigned NOT NULL auto_increment, |
||||||
|
`newsarchive_name` char(255) NOT NULL default '', |
||||||
|
`newsarchive_rubrics` char(255) NOT NULL default '', |
||||||
|
`newsarchive_show_days` enum('1','0') NOT NULL default '1', |
||||||
|
`newsarchive_show_empty` enum('1','0') NOT NULL default '1', |
||||||
|
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; |
||||||
|
"; |
||||||
|
?> |
@ -0,0 +1,48 @@ |
|||||||
|
<h2>{#ARCHIVE_FROM#} {$month_name}, {$year} {#ARCHIVE_YEAR#}</h2><br /> <br /> |
||||||
|
|
||||||
|
{if $newsarchive->newsarchive_show_days == 1} |
||||||
|
<div>{#ARCHIVE_DAYS#}</div> |
||||||
|
|
||||||
|
<table width="100%" cellpadding="2" cellspacing="2"> |
||||||
|
<tr> |
||||||
|
{if $day == 0} |
||||||
|
<td>{#ARCHIVE_ALL_DAY#}</td> |
||||||
|
{else} |
||||||
|
<td><a href="index.php?module=newsarchive&id={$newsarchive->id}&month={$month}&year={$year}">{#ARCHIVE_ALL_DAY#}</a></td> |
||||||
|
{/if} |
||||||
|
{foreach from=$days item=month_day} |
||||||
|
{if $day == $month_day} |
||||||
|
<td>{$month_day|string_format:"%02d"}</td> |
||||||
|
{else} |
||||||
|
<td><a href="index.php?module=newsarchive&id={$newsarchive->id}&day={$month_day}&month={$month}&year={$year}">{$month_day|string_format:"%02d"}</a></td> |
||||||
|
{/if} |
||||||
|
{/foreach} |
||||||
|
</tr> |
||||||
|
</table> |
||||||
|
{/if} |
||||||
|
|
||||||
|
{if !$documents} |
||||||
|
<strong>{#ARCHIVE_NOT_FOUND#}</strong> |
||||||
|
{else} |
||||||
|
<table width="100%" cellpadding="0" cellspacing="2"> |
||||||
|
<tr class="arc_header"> |
||||||
|
{if $day == 0} |
||||||
|
<td><a href="index.php?module=newsarchive&id={$newsarchive->id}&month={$month}&year={$year}&sort=title{if $smarty.request.sort=='title'}_desc{/if}">{#ARCHIVE_DOC_NAME#}</a></td> |
||||||
|
<td><a href="index.php?module=newsarchive&id={$newsarchive->id}&month={$month}&year={$year}&sort=date{if $smarty.request.sort=='date'}_desc{/if}">{#ARCHIVE_PUBLIC_DATE#}</a></td> |
||||||
|
<td><a href="index.php?module=newsarchive&id={$newsarchive->id}&month={$month}&year={$year}&sort=rubric{if $smarty.request.sort=='rubric'}_desc{/if}">{#ARCHIVE_IN_RUBRIC#}</a></td> |
||||||
|
{else} |
||||||
|
<td><a href="index.php?module=newsarchive&id={$newsarchive->id}&day={$day}&month={$month}&year={$year}&sort=title{if $smarty.request.sort=='title'}_desc{/if}">{#ARCHIVE_DOC_NAME#}</a></td> |
||||||
|
<td><a href="index.php?module=newsarchive&id={$newsarchive->id}&day={$day}&month={$month}&year={$year}&sort=date{if $smarty.request.sort=='date'}_desc{/if}">{#ARCHIVE_PUBLIC_DATE#}</a></td> |
||||||
|
<td><a href="index.php?module=newsarchive&id={$newsarchive->id}&day={$day}&month={$month}&year={$year}&sort=rubric{if $smarty.request.sort=='rubric'}_desc{/if}">{#ARCHIVE_IN_RUBRIC#}</a></td> |
||||||
|
{/if} |
||||||
|
</tr> |
||||||
|
|
||||||
|
{foreach from=$documents item=document} |
||||||
|
<tr> |
||||||
|
<td><a href="{$document->document_alias}">{$document->document_title}</a></td> |
||||||
|
<td>{$document->document_published|date_format:$DATE_FORMAT|pretty_date}</td> |
||||||
|
<td>{$document->rubric_title}</td> |
||||||
|
</tr> |
||||||
|
{/foreach} |
||||||
|
</table> |
||||||
|
{/if} |
@ -0,0 +1,8 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* Файл-заглушка, предназначенный для запрета показа списка файлов в текущей директории, |
||||||
|
* если через адресную строку браузера было прямое общращение к данной директории. |
||||||
|
*/ |
||||||
|
header('Location:/'); |
||||||
|
exit; |
||||||
|
?> |
@ -0,0 +1,18 @@ |
|||||||
|
<div class="mod_searchbox"> |
||||||
|
<strong>{#ARCHIVE_TITLE#}</strong><br /> |
||||||
|
<br /> |
||||||
|
{assign var="cur_year" value=""} |
||||||
|
{foreach from=$months item=items} |
||||||
|
{if $items->year!=$cur_year}{assign var="cur_year" value=$items->year} |
||||||
|
<h3>{$items->year}</h3> |
||||||
|
{/if} |
||||||
|
{if $items->nums != 0} |
||||||
|
<span style="line-height:25px;"><a href="index.php?module=newsarchive&id={$archiveid}&month={$items->mid}&year={$items->year}">{$items->month}, {$items->year}</a> <small>({$items->nums})</small></span><br /> |
||||||
|
{else} |
||||||
|
{if $newsarchive_show_empty == 1} |
||||||
|
<span style="line-height:25px;"><a href="index.php?module=newsarchive&id={$archiveid}&month={$items->mid}&year={$items->year}">{$items->month}, {$items->year}</a> <small>(0)</small></span><br /> |
||||||
|
{/if} |
||||||
|
{/if} |
||||||
|
{/foreach} |
||||||
|
|
||||||
|
</div> |
Loading…
Reference in new issue