первая часть вывода ком в админке
This commit is contained in:
@@ -1331,102 +1331,129 @@ function commentPostDelete($comment_id)
|
||||
*
|
||||
* @param string $tpl_dir - путь к шаблонам модуля
|
||||
*/
|
||||
function commentAdminListShow($tpl_dir)
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
|
||||
// Используем оператор объединения с null для PHP 8.4
|
||||
$request_sort = $_REQUEST['sort'] ?? '';
|
||||
$session_id = SESSION ?? '';
|
||||
function commentAdminListShow($tpl_dir)
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
|
||||
$session_id = SESSION ?? '';
|
||||
|
||||
// Получаем общее количество комментариев
|
||||
$num = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_module_comment_info")->GetCell();
|
||||
// --- ОБРАБОТКА (Иконки и Кнопка "Применить") ---
|
||||
$action = $_REQUEST['admin_action'] ?? '';
|
||||
$items = [];
|
||||
|
||||
// Определяем количество страниц, учитывая параметр _limit, который опроеделяет количество
|
||||
// комментариев отображаемых на одной странице
|
||||
@$seiten = @ceil($num / $this->_limit);
|
||||
$start = get_current_page() * $this->_limit - $this->_limit;
|
||||
// Собираем ID из разных источников для универсальности
|
||||
if (!empty($_REQUEST['ids'])) {
|
||||
// Если пришли ID через запятую (массово)
|
||||
$items = explode(',', $_REQUEST['ids']);
|
||||
} elseif (!empty($_REQUEST['id'])) {
|
||||
// Если пришел один ID (иконка)
|
||||
$items = (is_array($_REQUEST['id'])) ? $_REQUEST['id'] : [$_REQUEST['id']];
|
||||
}
|
||||
|
||||
$docs = array();
|
||||
if (!empty($action) && !empty($items)) {
|
||||
$ids = array_map('intval', $items);
|
||||
$id_list = implode(',', $ids);
|
||||
|
||||
$def_sort = 'ORDER BY doc.Id DESC';
|
||||
$def_nav = '';
|
||||
switch ($action) {
|
||||
case 'approve':
|
||||
case 'set_status_1':
|
||||
$AVE_DB->Query("UPDATE " . PREFIX . "_module_comment_info SET comment_status = '1' WHERE Id IN ($id_list)");
|
||||
break;
|
||||
case 'unapprove':
|
||||
case 'set_status_0':
|
||||
$AVE_DB->Query("UPDATE " . PREFIX . "_module_comment_info SET comment_status = '0' WHERE Id IN ($id_list)");
|
||||
break;
|
||||
case 'delete':
|
||||
$AVE_DB->Query("DELETE FROM " . PREFIX . "_module_comment_info WHERE Id IN ($id_list)");
|
||||
break;
|
||||
}
|
||||
header("Location: index.php?do=modules&action=modedit&mod=comment&moduleaction=1&cp=" . $session_id);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Определяем условия сортировки комментариев
|
||||
if (!empty($request_sort))
|
||||
{
|
||||
switch ($request_sort)
|
||||
{
|
||||
case 'document_desc':
|
||||
$def_sort = 'ORDER BY doc.Id ASC';
|
||||
$def_nav = '&sort=document_desc';
|
||||
break;
|
||||
// --- ОРИГИНАЛЬНАЯ ЛОГИКА ВЫВОДА ---
|
||||
$num = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_module_comment_info")->GetCell();
|
||||
$limit = $this->_limit;
|
||||
$seiten = ceil($num / $limit);
|
||||
$start = get_current_page() * $limit - $limit;
|
||||
|
||||
case 'document':
|
||||
$def_sort = 'ORDER BY doc.Id DESC';
|
||||
$def_nav = '&sort=document';
|
||||
break;
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT cmnt.*, doc.document_title
|
||||
FROM " . PREFIX . "_module_comment_info AS cmnt
|
||||
LEFT JOIN " . PREFIX . "_documents AS doc ON doc.Id = cmnt.document_id
|
||||
ORDER BY cmnt.comment_published DESC
|
||||
LIMIT " . (int)$start . "," . (int)$limit
|
||||
);
|
||||
|
||||
case 'comment_desc':
|
||||
$def_sort = 'ORDER BY cmnt.comment_text ASC';
|
||||
$def_nav = '&sort=comment_desc';
|
||||
break;
|
||||
$docs = array();
|
||||
$format = "%d %B %Y, %H:%M";
|
||||
|
||||
case 'comment':
|
||||
$def_sort = 'ORDER BY cmnt.comment_text DESC';
|
||||
$def_nav = '&sort=comment';
|
||||
break;
|
||||
while ($row = $sql->FetchAssocArray()) {
|
||||
$name = !empty($row['comment_author_name']) ? stripslashes($row['comment_author_name']) : 'Guest';
|
||||
if (isset($row['comment_author_id']) && $row['comment_author_id'] > 0) {
|
||||
$row['avatar'] = getAvatar($row['comment_author_id'], 48);
|
||||
} else { $row['avatar'] = ''; }
|
||||
|
||||
case 'created_desc':
|
||||
$def_sort = 'ORDER BY cmnt.comment_published ASC';
|
||||
$def_nav = '&sort=created_desc';
|
||||
break;
|
||||
if (empty($row['avatar']) || strpos($row['avatar'], 'user.png') !== false) {
|
||||
$row['avatar'] = '';
|
||||
$row['first_letter'] = mb_strtoupper(mb_substr(trim($name), 0, 1, 'UTF-8'));
|
||||
$row['avatar_color_index'] = (abs(crc32($name)) % 12) + 1;
|
||||
}
|
||||
|
||||
case 'created':
|
||||
$def_sort = 'ORDER BY cmnt.comment_published DESC';
|
||||
$def_nav = '&sort=created';
|
||||
break;
|
||||
}
|
||||
}
|
||||
// --- ОБРАБОТКА ФАЙЛОВ ДЛЯ АДМИНКИ ---
|
||||
$row['images'] = [];
|
||||
$row['files'] = [];
|
||||
if (!empty($row['comment_file'])) {
|
||||
$img_exts = ['jpg', 'jpeg', 'png', 'gif', 'webp'];
|
||||
$all_files = explode(',', $row['comment_file']);
|
||||
|
||||
foreach ($all_files as $f_name) {
|
||||
$f_name = trim($f_name);
|
||||
if (!$f_name) continue;
|
||||
|
||||
// Выполняем запрос к БД на получение комметариев с учетом параметров сортировки и лимита.
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT
|
||||
doc.Id,
|
||||
doc.document_title,
|
||||
cmnt.Id AS CId,
|
||||
cmnt.document_id,
|
||||
cmnt.comment_text,
|
||||
cmnt.comment_published,
|
||||
cmnt.comment_status
|
||||
FROM
|
||||
" . PREFIX . "_module_comment_info AS cmnt
|
||||
JOIN
|
||||
" . PREFIX . "_documents AS doc
|
||||
ON doc.Id = cmnt.document_id
|
||||
" . $def_sort . "
|
||||
LIMIT " . $start . "," . $this->_limit
|
||||
);
|
||||
$ext = strtolower(pathinfo($f_name, PATHINFO_EXTENSION));
|
||||
|
||||
// Чистим имя (убираем временную метку _12345678)
|
||||
$clean_name = preg_replace('/_[0-9]+(?=\.[a-z0-9]+$)/i', '', $f_name);
|
||||
|
||||
while ($row = $sql->FetchAssocArray())
|
||||
{
|
||||
$row['Comments'] = $this->_commentPostCountGet($row['Id']);
|
||||
array_push($docs, $row);
|
||||
}
|
||||
$file_data = [
|
||||
'orig_name' => $f_name,
|
||||
'clean_name' => $clean_name,
|
||||
'ext' => $ext
|
||||
];
|
||||
|
||||
// Если количество комментариев полученных из БД превышает допустимое на странице, тогда формируем
|
||||
// меню постраницной навигации
|
||||
if ($num > $this->_limit)
|
||||
{
|
||||
$page_nav = ' <a class="pnav" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&cp=' . $session_id . '&page={s}' . $def_nav . '">{t}</a> ';
|
||||
$page_nav = get_pagination($seiten, 'page', $page_nav);
|
||||
$AVE_Template->assign('page_nav', $page_nav);
|
||||
}
|
||||
if (in_array($ext, $img_exts)) {
|
||||
$row['images'][] = $file_data;
|
||||
} else {
|
||||
$row['files'][] = $file_data;
|
||||
}
|
||||
}
|
||||
}
|
||||
// ------------------------------------
|
||||
|
||||
// Передаем данные в шаблон для вывода и отображаем шаблон
|
||||
$AVE_Template->assign('docs', $docs);
|
||||
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . $this->_admin_comments_tpl));
|
||||
}
|
||||
$row['CId'] = $row['Id'];
|
||||
$row['comment_text'] = stripslashes($row['comment_text']);
|
||||
$ts_pub = (int)$row['comment_published'];
|
||||
$row['date_pub'] = ($ts_pub > 0) ? pretty_date(ave_date_format($format, $ts_pub)) : '—';
|
||||
$ts_changed = (int)$row['comment_changed'];
|
||||
$row['date_edit'] = ($ts_changed > 0 && $ts_changed > $ts_pub) ? pretty_date(ave_date_format($format, $ts_changed)) : '';
|
||||
|
||||
$row['user_rating'] = (int)($row['user_rating'] ?? 0);
|
||||
$row['rating_sum'] = (int)($row['rating_sum'] ?? 0);
|
||||
$row['r_count'] = (int)($row['rating_count'] ?? 0);
|
||||
$row['star_public'] = ($row['r_count'] > 0) ? round($row['rating_sum'] / $row['r_count']) : 0;
|
||||
|
||||
$docs[] = $row;
|
||||
}
|
||||
|
||||
$AVE_Template->assign([
|
||||
'docs' => $docs,
|
||||
'page_nav' => ($num > $limit) ? get_pagination($seiten, 'page', ' <a class="pnav" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&cp=' . $session_id . '&page={s}">{t}</a> ') : '',
|
||||
'sess' => $session_id
|
||||
]);
|
||||
|
||||
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . $this->_admin_comments_tpl));
|
||||
}
|
||||
|
||||
/**
|
||||
* Метод, предназначенный для редактирования комментариев в Административной части.
|
||||
|
||||
@@ -1,89 +1,229 @@
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
$(document).ready(function(){ldelim}
|
||||
<style>
|
||||
.tableStatic tbody td { vertical-align: middle !important; padding: 10px 8px !important; font-size: 12px; }
|
||||
.author-data-container { display: flex; flex-direction: column; gap: 2px; }
|
||||
.author-info-row { display: flex; align-items: center; margin-bottom: 2px; }
|
||||
.admin-avatar-box { width: 28px; height: 28px; flex-shrink: 0; margin-right: 8px; }
|
||||
.admin-avatar-box img { width: 28px; height: 28px; border-radius: 50%; object-fit: cover; border: 1px solid #ddd; }
|
||||
.mod_comment_avatar_letter { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: bold; color: #fff; font-size: 12px; text-transform: uppercase; }
|
||||
.av-c1 { background-color: #6c5ce7; } .av-c2 { background-color: #2ecc71; }
|
||||
.av-c3 { background-color: #e67e22; } .av-c4 { background-color: #e91e63; }
|
||||
.av-c5 { background-color: #00cec9; } .av-c6 { background-color: #0984e3; }
|
||||
.av-c7 { background-color: #d63031; } .av-c8 { background-color: #636e72; }
|
||||
.av-c9 { background-color: #fdcb6e; } .av-c10 { background-color: #fd79a8; }
|
||||
.av-c11 { background-color: #a29bfe; } .av-c12 { background-color: #273c75; }
|
||||
.meta-sub-text { font-size: 10px; color: #888; line-height: 1.4; }
|
||||
.meta-ip { color: #aaa; font-style: normal; }
|
||||
.meta-edit { color: #d35400; font-weight: bold; }
|
||||
.comment-scroll-box { max-height: 90px; overflow-y: auto; font-size: 13px; line-height: 1.5; color: #333; padding-right: 10px; scrollbar-width: thin; margin-bottom: 8px; }
|
||||
.comment-scroll-box::-webkit-scrollbar { width: 4px; }
|
||||
.comment-scroll-box::-webkit-scrollbar-thumb { background: #ddd; border-radius: 4px; }
|
||||
.star-yellow { color: #FFB400; font-size: 13px; }
|
||||
.star-grey { color: #eee; }
|
||||
.star-public-filled { color: #FFD700; }
|
||||
.cell-layout { display: flex; flex-direction: column; gap: 5px; min-height: 100px; justify-content: space-between; }
|
||||
.cell-top-bar { display: flex; align-items: center; gap: 10px; flex-wrap: nowrap; border-bottom: 1px dashed #eee; padding-bottom: 4px; }
|
||||
.cell-bottom-bar { display: flex; align-items: center; gap: 8px; margin-top: 5px; border-top: 1px solid #f9f9f9; padding-top: 4px; }
|
||||
|
||||
/* ПРЕВЬЮ В ТАБЛИЦЕ */
|
||||
.comment-assets-inline { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 10px; padding: 5px 0; }
|
||||
.asset-item { width: 80px; flex: 0 0 80px; display: flex; flex-direction: column; align-items: center; gap: 4px; }
|
||||
.asset-thumb { width: 80px; height: 60px; border: 1px solid #ccc; border-radius: 4px; overflow: hidden; background: #fafafa; display: flex; align-items: center; justify-content: center; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
|
||||
.asset-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
|
||||
.asset-name { font-size: 11px; color: #444; font-weight: 500; width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: center; display: block; }
|
||||
|
||||
/* ФИКС ДЛЯ ОГРОМНЫХ ФОТО В FANCYBOX */
|
||||
.fancybox-can-zoom_in .fancybox-content { cursor: pointer; }
|
||||
.fancybox-image, .fancybox-spaceball { max-width: 90vw !important; max-height: 85vh !important; margin: auto; }
|
||||
/* 1. Ограничиваем контентную область */
|
||||
#fancybox-content {
|
||||
max-width: 950px !important;
|
||||
max-height: 750px !important;
|
||||
width: auto !important;
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
/* 2. Картинка внутри должна слушаться контейнера */
|
||||
#fancybox-img {
|
||||
max-width: 100% !important;
|
||||
max-height: 100% !important;
|
||||
width: auto !important;
|
||||
height: auto !important;
|
||||
object-fit: contain; /* Сохраняет пропорции без искажений */
|
||||
}
|
||||
|
||||
/* 3. Ограничиваем внешнюю рамку, чтобы она не улетала за экран */
|
||||
#fancybox-wrap {
|
||||
max-width: 970px !important;
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
{rdelim});
|
||||
</script>
|
||||
</style>
|
||||
|
||||
<div class="title"><h5>{#COMMENT_MODULE_NAME#}</h5></div>
|
||||
<div class="title"><h5>{#COMMENT_MODULE_NAME#} (Всего: {$docs|count})</h5></div>
|
||||
|
||||
<div class="widget" style="margin-top: 0px;">
|
||||
<div class="body">
|
||||
{#COMMENT_MODULE_COMENTS#}
|
||||
<div class="widget first">
|
||||
<div class="head">
|
||||
<h5 class="iFrames">{#COMMENT_MODULE_COMENTS#}</h5>
|
||||
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=settings&cp={$sess}">{#COMMENT_MODULE_SETTINGS#}</a></div>
|
||||
</div>
|
||||
|
||||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
|
||||
<thead>
|
||||
<tr>
|
||||
<td width="30"><input type="checkbox" id="selectAll" onclick="checkAll(this)" /></td>
|
||||
<td width="40">ID</td>
|
||||
<td width="175">Данные Автора</td>
|
||||
<td>Текст комментария и файлы</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{if $docs}
|
||||
{foreach from=$docs item=row}
|
||||
<tr {if $row.comment_status == "0"}style="background-color: #fff4f4;"{/if}>
|
||||
<td align="center"><input class="row-checkbox" type="checkbox" value="{$row.CId}" /></td>
|
||||
<td align="center"><strong>{$row.CId}</strong></td>
|
||||
<td>
|
||||
<div class="author-data-container">
|
||||
<div class="author-info-row">
|
||||
<div class="admin-avatar-box">
|
||||
{if $row.avatar}<img src="{$row.avatar}">{else}
|
||||
<div class="mod_comment_avatar_letter av-c{$row.avatar_color_index}">{$row.first_letter}</div>{/if}
|
||||
</div>
|
||||
<span style="font-weight:bold; font-size:12px; color:#2c3e50;">{$row.comment_author_name|escape}</span>
|
||||
</div>
|
||||
<div class="meta-sub-text">
|
||||
<div class="star-yellow">
|
||||
{section name=s start=1 loop=6}{if $smarty.section.s.index <= $row.user_rating}★{else}<span class="star-grey">☆</span>{/if}{/section}
|
||||
</div>
|
||||
<div>📅 {$row.date_pub}</div>
|
||||
{if $row.date_edit}<div class="meta-edit">📝 ред. {$row.date_edit}</div>{/if}
|
||||
<div class="meta-ip">🌐 {$row.comment_author_ip}</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="cell-layout">
|
||||
<div class="cell-top-bar">
|
||||
<a href="{$ABS_PATH}index.php?id={$row.document_id}" target="_blank" style="color:#2980b9; font-weight:bold; text-decoration:underline; font-size: 11px;">
|
||||
{$row.document_title|default:"Документ"|truncate:25}
|
||||
</a>
|
||||
<a href="{$ABS_PATH}index.php?id={$row.document_id}#comment-{$row.CId}" target="_blank" style="color:#27ae60; font-weight:bold; font-size:11px;">[#] к отзыву</a>
|
||||
<div style="display: flex; gap: 6px; align-items: center; border-left: 1px solid #ddd; padding-left: 8px; margin-left: 5px;">
|
||||
<span style="font-size:10px; font-weight:bold; color:{if $row.comment_status=='1'}#27ae60{else}#e74c3c{/if};">
|
||||
{if $row.comment_status=='1'}Одобрен{else}Скрыт{/if}
|
||||
</span>
|
||||
{if $row.comment_status == '1'}
|
||||
<a class="icon_sprite ico_unlock_no" title="Скрыть" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&admin_action=set_status_0&id={$row.CId}&cp={$sess}"></a>
|
||||
{else}
|
||||
<a class="icon_sprite ico_unlock" title="Одобрить" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&admin_action=set_status_1&id={$row.CId}&cp={$sess}"></a>
|
||||
{/if}
|
||||
<a class="icon_sprite ico_edit" title="Редактировать" href="javascript:void(0);" onClick="windowOpen('index.php?do=modules&action=modedit&mod=comment&moduleaction=admin_edit&pop=1&docid={$row.document_id}&Id={$row.CId}','700','700','1');"></a>
|
||||
<a class="icon_sprite ico_delete ConfirmDelete" title="Удалить" name="Вы уверены что хотите удалить комментарий?" dir="Подтверждение удаления" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&admin_action=delete&id={$row.CId}&cp={$sess}"></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comment-scroll-box">{$row.comment_text|nl2br}</div>
|
||||
|
||||
{if $row.images || $row.files}
|
||||
<div class="comment-assets-inline">
|
||||
{foreach from=$row.images item=img}
|
||||
<div class="asset-item">
|
||||
<div class="asset-thumb">
|
||||
<a href="{$ABS_PATH}uploads/comments/{$img.orig_name}" class="view fancy" rel="gallery-{$row.CId}" title="{$img.clean_name}">
|
||||
<img src="{$ABS_PATH}uploads/comments/{$img.orig_name}" />
|
||||
</a>
|
||||
</div>
|
||||
<span class="asset-name" title="{$img.clean_name}">{$img.clean_name}</span>
|
||||
</div>
|
||||
{/foreach}
|
||||
{foreach from=$row.files item=f}
|
||||
<div class="asset-item">
|
||||
<a href="{$ABS_PATH}uploads/comments/{$f.orig_name}" target="_blank" class="asset-thumb" style="text-decoration: none; color: #333; flex-direction: column; background: #fcfcfc;">
|
||||
<span style="font-size: 11px; font-weight: bold; color: #2980b9; margin-bottom: 2px;">{$f.ext|upper}</span>
|
||||
<i class="icon_sprite ico_download"></i>
|
||||
</a>
|
||||
<span class="asset-name" title="{$f.clean_name}">{$f.clean_name}</span>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="cell-bottom-bar">
|
||||
<div class="star-yellow">
|
||||
{section name=s start=1 loop=6}{if $smarty.section.s.index <= $row.star_public}<span class="star-public-filled">★</span>{else}<span class="star-grey">☆</span>{/if}{/section}
|
||||
</div>
|
||||
<span style="font-size:11px; color:#999;">(Голосов: {$row.r_count|default:0})</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{else}
|
||||
<tr><td colspan="4" align="center" style="padding:50px; color:#999;">Список пуст</td></tr>
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="tfoot">
|
||||
<div class="left" style="padding:15px;">
|
||||
<select id="mass_action_select" style="padding:5px; border:1px solid #ccc; border-radius:3px;">
|
||||
<option value="">Выберите действие...</option>
|
||||
<option value="set_status_1">Опубликовать</option>
|
||||
<option value="set_status_0">Скрыть</option>
|
||||
<option value="delete">Удалить выбранные</option>
|
||||
</select>
|
||||
<input type="button" value="ПРИМЕНИТЬ" class="blueBtn" onclick="runMassAction()" style="margin-left:10px;" />
|
||||
</div>
|
||||
<div class="pagination">{$page_nav}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
// Функция выделения всех чекбоксов (то, что пропало)
|
||||
function checkAll(master) {
|
||||
var checkboxes = document.getElementsByClassName('row-checkbox');
|
||||
for (var i = 0; i < checkboxes.length; i++) {
|
||||
checkboxes[i].checked = master.checked;
|
||||
}
|
||||
}
|
||||
|
||||
<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>{#COMMENT_MODULE_NAME#}</li>
|
||||
<li><strong class="code">{#COMMENT_MODULE_COMENTS#}</strong></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
// Функция массовых действий с красивыми окнами
|
||||
function runMassAction() {
|
||||
var action = document.getElementById('mass_action_select').value;
|
||||
|
||||
// Если действие не выбрано
|
||||
if (!action) {
|
||||
jAlert('Выберите действие из списка!', 'Внимание');
|
||||
return;
|
||||
}
|
||||
|
||||
var checkboxes = document.getElementsByClassName('row-checkbox');
|
||||
var ids = [];
|
||||
|
||||
// Собираем ID отмеченных строк
|
||||
for (var i = 0; i < checkboxes.length; i++) {
|
||||
if (checkboxes[i].checked) {
|
||||
ids.push(checkboxes[i].value);
|
||||
}
|
||||
}
|
||||
|
||||
// Если ничего не выбрано
|
||||
if (ids.length === 0) {
|
||||
jAlert('Вы не выбрали ни одного комментария для обработки!', 'Ошибка');
|
||||
return;
|
||||
}
|
||||
|
||||
var url = 'index.php?do=modules&action=modedit&mod=comment&moduleaction=1&admin_action=' + action + '&ids=' + ids.join(',') + '&cp={$sess}';
|
||||
|
||||
<div class="widget first">
|
||||
<div class="head">
|
||||
<h5 class="iFrames">{#COMMENT_MODULE_COMENTS#}</h5>
|
||||
<div class="num"><a class="basicNum" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=settings&cp={$sess}">{#COMMENT_MODULE_SETTINGS#}</a></div>
|
||||
</div>
|
||||
|
||||
{if isset($smarty.request.page)}
|
||||
{assign var="current_page" value=$smarty.request.page|escape}
|
||||
{else}
|
||||
{assign var="current_page" value=1}
|
||||
{/if}
|
||||
|
||||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
|
||||
<col width="20">
|
||||
<col>
|
||||
<col width="120">
|
||||
<col width="120">
|
||||
<col width="20">
|
||||
<col width="20">
|
||||
<thead>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><a href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&cp={$sess}&page={$current_page}&sort=comment{if $smarty.request.sort|default:'' == 'comment'}_desc{/if}">{#COMMENT_TEXT_COMMENT#}</a> </td>
|
||||
<td><a href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&cp={$sess}&page={$current_page}&sort=created{if $smarty.request.sort|default:'' == 'created'}_desc{/if}">{#COMMENT_DATE_CREATE#}</a> </td>
|
||||
<td><a href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&cp={$sess}&page={$current_page}&sort=document{if $smarty.request.sort|default:'' == 'document'}_desc{/if}">{#COMMENT_DOC_TITLE#}</a> </td>
|
||||
<td colspan="2">Действия</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{if $docs}
|
||||
{foreach from=$docs item=doc}
|
||||
<tr>
|
||||
<td>{if $doc.comment_status != "0"}<span class="icon_sprite ico_ok"></span>{else}<span class="icon_sprite ico_blanc"></span>{/if}</td>
|
||||
<td><a class="topDir" title="{$doc.comment_text|escape|truncate:'1000'}" target="_blank" href="../index.php?id={$doc.document_id}&doc=impressum&subaction=showonly&comment_id={$doc.CId}#{$doc.CId}">{$doc.comment_text|escape|truncate:'100'}</a></td>
|
||||
<td class="date_text dgrey">{$doc.comment_published|date_format:$TIME_FORMAT|pretty_date}</td>
|
||||
<td><a target="_blank" href="../index.php?id={$doc.document_id}">{$doc.document_title|escape}</a> <span class="date_text dgrey">({$doc.Comments})</span></td>
|
||||
<td width="20"><a class="topleftDir icon_sprite ico_edit" title="{#COMMENT_EDIT#}" href="javascript:void(0);" onClick="windowOpen('index.php?do=modules&action=modedit&mod=comment&moduleaction=admin_edit&pop=1&docid={$doc.document_id}&Id={$doc.CId}','700','700','1');"></a></td>
|
||||
<td width="20"><a class="topleftDir icon_sprite ico_delete ConfirmDelete" title="{#COMMENT_DELETE_LINK#}" dir="{#COMMENT_DELETE_LINK#}" name="{#COMMENT_DELETE_LINK#}" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=admin_del&Id={$doc.CId}"></a></td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{else}
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow"><strong>Сообщение:</strong><br />Нет комментариев.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{if $page_nav}
|
||||
<div class="pagination">
|
||||
<ul class="pages">
|
||||
{$page_nav}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
// Подтверждение для удаления, остальное — сразу
|
||||
if (action === 'delete') {
|
||||
jConfirm('Вы уверены, что хотите удалить выбранные элементы (' + ids.length + ' шт.)?', 'Подтверждение удаления', function(r) {
|
||||
if(r) window.location.href = url;
|
||||
});
|
||||
} else {
|
||||
window.location.href = url;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user