update v3.32 (add module aliases)
This commit is contained in:
@@ -121,12 +121,10 @@
|
||||
if (check_permission_acp('modules_system')) {
|
||||
$alias_id = (int)($_REQUEST['id'] ?? 0);
|
||||
|
||||
// Если идет сохранение
|
||||
if (!empty($_POST['save_aliases'])) {
|
||||
$AVE_Module->moduleAliasRequestSave($alias_id);
|
||||
}
|
||||
|
||||
// В любом случае показываем форму (либо чистую, либо с данными)
|
||||
$AVE_Module->getAliasEdit($alias_id);
|
||||
}
|
||||
break;
|
||||
@@ -145,5 +143,18 @@
|
||||
}
|
||||
break;
|
||||
|
||||
case 'alias_history_add':
|
||||
if (check_permission_acp('modules_system') && $_REQUEST['ajax']) {
|
||||
$AVE_Module->addAliasHistory();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'alias_history_delete_batch':
|
||||
if (check_permission_acp('modules_system') && $_REQUEST['ajax']) {
|
||||
// Вызываем новый метод в классе
|
||||
$AVE_Module->deleteAliasHistoryBatch();
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -1,67 +1,225 @@
|
||||
<div class="title">
|
||||
<h5>Управление редиректами модуля: <span class="blue">{$module_link_name}</span></h5>
|
||||
</div>
|
||||
|
||||
<div class="breadCrumbHolder module">
|
||||
<div class="breadCrumb module">
|
||||
<ul>
|
||||
<li>Модуль: <strong class="code">{$module_name}</strong></li>
|
||||
<li>Системная ссылка: <strong class="code">{$module_link}</strong></li>
|
||||
<li>Основной алиас: <strong class="code">{$module_url}</strong></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="widget first">
|
||||
<div class="head">
|
||||
<h5 class="iPlus">Добавить новый редирект</h5>
|
||||
</div>
|
||||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
|
||||
<thead>
|
||||
<tr>
|
||||
<td style="padding-left: 10px;">Старый URL (Алиас)</td>
|
||||
<td width="80" align="center">HTTP Код</td>
|
||||
<td width="40" align="center">Удал.</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach from=$history_list item=h}
|
||||
<tr id="history-row-{$h.id}">
|
||||
<td style="padding-left: 10px;"><span class="dgrey">{$h.module_alias}</span></td>
|
||||
<td align="center"><span class="blue"><b>{$h.module_alias_header}</b></span></td>
|
||||
<td align="center">
|
||||
<a href="javascript:void(0);"
|
||||
class="icon_sprite ico_delete deleteHistory"
|
||||
data-id="{$h.id}"
|
||||
title="Удалить из истории"></a>
|
||||
<tr style="background: #f9f9f9;">
|
||||
<td style="padding: 15px;">
|
||||
<input type="text" id="new_alias_input" placeholder="Введите старый URL (например: old-page.html)" style="width: 96%;" />
|
||||
</td>
|
||||
<td width="100" align="center">
|
||||
<select id="new_alias_code" style="width: 80px;">
|
||||
<option value="301">301</option>
|
||||
<option value="302">302</option>
|
||||
</select>
|
||||
</td>
|
||||
<td width="50" align="center">
|
||||
<a href="javascript:void(0);" class="icon_sprite ico_add addHistoryRecord" title="Добавить"></a>
|
||||
</td>
|
||||
</tr>
|
||||
{foreachelse}
|
||||
<tr>
|
||||
<td colspan="3" align="center" style="padding: 30px;">
|
||||
<span class="lred">История редиректов пуста</span>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3" style="padding: 15px 10px;">
|
||||
<a href="javascript:void(0);" class="button redBtn CloseHistory">Закрыть окно</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="widget">
|
||||
<div class="head">
|
||||
<h5 class="iFrames">Активные редиректы</h5>
|
||||
</div>
|
||||
|
||||
<form action="index.php?do=modules&action=alias_history_save&cp={$sess}" method="post" class="mainForm" id="HistoryForm-{$alias_id}">
|
||||
<input type="hidden" name="alias_id" value="{$alias_id}">
|
||||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
|
||||
<thead id="history_thead" {if !$history_list}style="display:none;"{/if}>
|
||||
<tr>
|
||||
<td width="20"><div align="center"><input type="checkbox" class="selall_history"></div></td>
|
||||
<td style="padding-left: 10px;">Старый URL (Алиас)</td>
|
||||
<td width="80" align="center">HTTP Код</td>
|
||||
<td width="80" colspan="2" align="center">Действия</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="history_items_container">
|
||||
{foreach from=$history_list item=h}
|
||||
<tr id="history-row-{$h.id}">
|
||||
<td align="center">
|
||||
<input type="checkbox" class="checkbox history_check" name="history_del[{$h.id}]" value="1">
|
||||
</td>
|
||||
<td style="padding-left: 10px;"><span class="dgrey">{$h.module_alias}</span></td>
|
||||
<td align="center"><span class="blue"><b>{$h.module_alias_header}</b></span></td>
|
||||
<td width="30" align="center">
|
||||
<a href="/{$h.module_alias}" class="icon_sprite ico_globus" target="_blank" title="Просмотр"></a>
|
||||
</td>
|
||||
<td width="30" align="center">
|
||||
<a href="javascript:void(0);"
|
||||
class="icon_sprite ico_delete deleteHistory"
|
||||
data-id="{$h.id}"
|
||||
title="Удалить"></a>
|
||||
</td>
|
||||
</tr>
|
||||
{foreachelse}
|
||||
<tr id="no-history-row">
|
||||
<td colspan="5" align="center" style="padding: 30px;">
|
||||
<span class="lred">История редиректов пуста</span>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="5" style="padding: 10px;">
|
||||
<table cellpadding="0" cellspacing="0" width="auto">
|
||||
<tr>
|
||||
<td style="padding-right: 10px;">
|
||||
<input type="submit" id="btn_save_history" class="basicBtn SaveHistoryBatch" value="Сохранить" style="float: none; {if !$history_list}display:none;{/if}" />
|
||||
</td>
|
||||
<td>
|
||||
<a href="javascript:void(0);" class="button redBtn CloseHistory" style="float: none; ">
|
||||
Закрыть окно
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
var a_id = '{/literal}{$alias_id}{literal}';
|
||||
var sess = '{/literal}{$sess}{literal}';
|
||||
var $dialog = $('#ajax-dialog-alias-history-' + a_id);
|
||||
var $form = $('#HistoryForm-' + a_id);
|
||||
|
||||
$(document).off('click', '.CloseHistory').on('click', '.CloseHistory', function(e){
|
||||
function toggleHistoryVisibility() {
|
||||
var rowsCount = $('#history_items_container tr').not('#no-history-row, :hidden').length;
|
||||
var $thead = $('#history_thead');
|
||||
var $btnSave = $('#btn_save_history');
|
||||
var $tbody = $('#history_items_container');
|
||||
|
||||
if (rowsCount > 0) {
|
||||
$thead.show();
|
||||
$btnSave.show();
|
||||
$('#no-history-row').remove();
|
||||
} else {
|
||||
$thead.hide();
|
||||
$btnSave.hide();
|
||||
if ($('#no-history-row').length == 0) {
|
||||
$tbody.append('<tr id="no-history-row"><td colspan="5" align="center" style="padding: 30px;"><span class="lred">История редиректов пуста</span></td></tr>');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$dialog.find('.CloseHistory').off('click').on('click', function(e){
|
||||
e.preventDefault();
|
||||
$('#ajax-dialog-alias-history-' + a_id).dialog('destroy').remove();
|
||||
$dialog.dialog('destroy').remove();
|
||||
});
|
||||
|
||||
$('.deleteHistory').off('click').on('click', function(){
|
||||
$form.on('change', '.selall_history', function(){
|
||||
var checked = $(this).is(':checked');
|
||||
$form.find('.history_check').each(function(){
|
||||
$(this).prop('checked', checked);
|
||||
if(checked) $(this).addClass('jqTransformChecked');
|
||||
else $(this).removeClass('jqTransformChecked');
|
||||
});
|
||||
});
|
||||
|
||||
$form.on('click', '.SaveHistoryBatch', function(e){
|
||||
e.preventDefault();
|
||||
var $checked = $form.find('.history_check:checked');
|
||||
if($checked.length == 0) {
|
||||
$.jGrowl("Ничего не выбрано", {theme: 'error'});
|
||||
return false;
|
||||
}
|
||||
|
||||
jConfirm('Удалить выбранные редиректы?', 'Подтверждение', function(r) {
|
||||
if(r) {
|
||||
$form.ajaxSubmit({
|
||||
url: 'index.php?do=modules&action=alias_history_delete_batch&ajax=1&cp=' + sess,
|
||||
dataType: 'json',
|
||||
success: function(data){
|
||||
if(data.status == 'success') {
|
||||
$.jGrowl("Записи удалены", {theme: 'accept'});
|
||||
$checked.closest('tr').fadeOut(400, function(){
|
||||
$(this).remove();
|
||||
toggleHistoryVisibility();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$dialog.find('.addHistoryRecord').off('click').on('click', function(e){
|
||||
e.preventDefault();
|
||||
var $input = $dialog.find('#new_alias_input');
|
||||
var new_val = $input.val().trim();
|
||||
var h_code = $dialog.find('#new_alias_code').val();
|
||||
|
||||
if (new_val == '') {
|
||||
$.jGrowl("Введите адрес!", {theme: 'error'});
|
||||
return false;
|
||||
}
|
||||
|
||||
$.post('index.php?do=modules&action=alias_history_add&ajax=1', {
|
||||
alias_id: a_id,
|
||||
new_alias: new_val,
|
||||
code: h_code,
|
||||
cp: sess
|
||||
}, function(data) {
|
||||
if (data && data.status == 'success') {
|
||||
$.jGrowl("Добавлено в историю", {theme: 'accept'});
|
||||
var $tbody = $('#history_items_container');
|
||||
|
||||
var newRow = '<tr id="history-row-' + data.id + '" style="display:none;">' +
|
||||
'<td align="center"><input type="checkbox" class="checkbox history_check" name="history_del['+data.id+']" value="1"></td>' +
|
||||
'<td style="padding-left: 10px;"><span class="dgrey">' + new_val + '</span></td>' +
|
||||
'<td align="center"><span class="blue"><b>' + h_code + '</b></span></td>' +
|
||||
'<td align="center"><a href="/' + new_val + '" class="icon_sprite ico_globus" target="_blank"></a></td>' +
|
||||
'<td align="center"><a href="javascript:void(0);" class="icon_sprite ico_delete deleteHistory" data-id="' + data.id + '"></a></td>' +
|
||||
'</tr>';
|
||||
|
||||
$tbody.prepend(newRow);
|
||||
$('#history-row-' + data.id).fadeIn(400);
|
||||
$input.val('');
|
||||
toggleHistoryVisibility();
|
||||
} else {
|
||||
$.jGrowl(data.message || "Ошибка сохранения", {theme: 'error'});
|
||||
}
|
||||
}, 'json');
|
||||
});
|
||||
|
||||
$dialog.find('tbody').off('click', '.deleteHistory').on('click', '.deleteHistory', function(){
|
||||
var h_id = $(this).data('id');
|
||||
var $row = $('#history-row-' + h_id);
|
||||
|
||||
jConfirm('Удалить этот редирект из истории?', 'Подтверждение', function(r) {
|
||||
jConfirm('Удалить этот редирект?', 'Подтверждение', function(r) {
|
||||
if(r) {
|
||||
$.post('index.php?do=modules&action=alias_history_delete&ajax=1', {
|
||||
id: h_id,
|
||||
cp: '{/literal}{$sess}{literal}'
|
||||
}, function(data){
|
||||
$.post('index.php?do=modules&action=alias_history_delete&ajax=1', { id: h_id, cp: sess }, function(data){
|
||||
if(data && data.status == 'success') {
|
||||
$row.css("background-color", "#fee").fadeOut(400, function(){ $(this).remove(); });
|
||||
$row.fadeOut(400, function(){
|
||||
$(this).remove();
|
||||
toggleHistoryVisibility();
|
||||
});
|
||||
$.jGrowl("Запись удалена", {theme: "accept"});
|
||||
} else {
|
||||
$.jGrowl("Ошибка при удалении", {theme: "error"});
|
||||
}
|
||||
}, 'json');
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
<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}">Управление модулями</a></li>
|
||||
<li>Список всех ЧПУ</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li class="firstB"><a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a></li>
|
||||
<li><a href="index.php?do=modules&cp={$sess}">Управление модулями</a></li>
|
||||
<li>Список всех ЧПУ</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
<td>ЧПУ Алиас</td>
|
||||
<td>Документ (ID)</td>
|
||||
<td width="40" align="center">Меню</td>
|
||||
<td width="40" align="center">Док.</td>
|
||||
<td width="40" align="center">Сайт</td>
|
||||
<td width="40" align="center">История</td>
|
||||
<td width="40" align="center">Правка</td>
|
||||
<td width="40" align="center">Удалить</td>
|
||||
@@ -38,12 +40,16 @@
|
||||
</td>
|
||||
<td>
|
||||
{if $mod.doc_id > 0}
|
||||
<span class="green">{$all_docs[$mod.doc_id]|default:'Документ не найден'} (ID: {$mod.doc_id})</span>
|
||||
<span class="green" style="font-size: 11px;">
|
||||
{$all_docs[$mod.doc_id]|default:'Документ не найден'}
|
||||
<small class="dgrey">(ID: {$mod.doc_id})</small>
|
||||
</span>
|
||||
{else}
|
||||
<span class="dgrey">Без привязки</span>
|
||||
{/if}
|
||||
</td>
|
||||
|
||||
{* Переключатель меню *}
|
||||
<td align="center">
|
||||
{if $mod.module_admin == '1'}
|
||||
<span class="icon_sprite ico_navigation" title="В меню"></span>
|
||||
@@ -52,28 +58,51 @@
|
||||
{/if}
|
||||
</td>
|
||||
|
||||
{* Иконка редактирования документа *}
|
||||
<td align="center">
|
||||
{if $mod.doc_id > 0 && $mod.rubric_id}
|
||||
<a class="topDir icon_sprite ico_copy"
|
||||
title="Перейти к редактированию документа"
|
||||
href="index.php?do=docs&action=edit&rubric_id={$mod.rubric_id}&Id={$mod.doc_id}&cp={$sess}"
|
||||
target="_blank"></a>
|
||||
{else}
|
||||
<span class="icon_sprite ico_copy" style="opacity: 0.2;" title="Привязка отсутствует"></span>
|
||||
{/if}
|
||||
</td>
|
||||
|
||||
{* Иконка перехода на сайт *}
|
||||
<td align="center">
|
||||
<a href="../{$mod.alias_url}"
|
||||
title="Посмотреть на сайте"
|
||||
class="icon_sprite ico_globus topDir"
|
||||
target="_blank"></a>
|
||||
</td>
|
||||
|
||||
{* История *}
|
||||
<td align="center">
|
||||
<a href="index.php?do=modules&action=alias_history&id={$mod.id}&cp={$sess}&ajax=1&onlycontent=1"
|
||||
data-dialog="alias-history-{$mod.id}"
|
||||
data-height="400"
|
||||
data-width="600"
|
||||
data-height="650"
|
||||
data-width=""
|
||||
data-modal="true"
|
||||
data-title="История алиасов: {$mod.module_link_name|default:$mod.sys_name}"
|
||||
class="openDialog icon_sprite ico_list topleftDir"
|
||||
title="История"></a>
|
||||
</td>
|
||||
|
||||
{* Правка *}
|
||||
<td align="center">
|
||||
<a href="index.php?do=modules&action=aliases&id={$mod.id}&cp={$sess}&ajax=1&onlycontent=1"
|
||||
data-dialog="aliases-{$mod.id}"
|
||||
data-height="550"
|
||||
data-width="650"
|
||||
data-height="650"
|
||||
data-width=""
|
||||
data-modal="true"
|
||||
data-title="Редактировать ЧПУ: {$mod.module_link_name|default:$mod.title}"
|
||||
data-title="Редактировать алиас: {$mod.module_link_name|default:$mod.title}"
|
||||
class="openDialog icon_sprite ico_edit topleftDir"
|
||||
title="Редактировать"></a>
|
||||
</td>
|
||||
|
||||
{* Удаление *}
|
||||
<td align="center">
|
||||
<a href="javascript:void(0);"
|
||||
class="icon_sprite ico_delete topleftDir"
|
||||
@@ -91,9 +120,9 @@
|
||||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic">
|
||||
<tbody>
|
||||
<tr class="noborder">
|
||||
<td colspan="9">
|
||||
<td colspan="12">
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">Список ЧПУ алиасов пуст. Добавьте первый алиас, чтобы настроить красивые ссылки.</li>
|
||||
<li class="highlight yellow">Список ЧПУ алиасов пуст.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -107,9 +136,9 @@
|
||||
|
||||
<a href="index.php?do=modules&action=aliases&id=0&cp={$sess}&ajax=1&onlycontent=1"
|
||||
data-dialog="aliases-0"
|
||||
data-height="550"
|
||||
data-width="650"
|
||||
data-height="650"
|
||||
data-width=""
|
||||
data-modal="true"
|
||||
data-title="Добавить новый ЧПУ алиас"
|
||||
data-title="Добавить новый алиас"
|
||||
class="button basicBtn greenBtn openDialog">Добавить новый алиас</a>
|
||||
</div>
|
||||
@@ -1,4 +1,19 @@
|
||||
<div class="title">
|
||||
<h5>Управление редиректами модуля <span class="blue">{$module_link_name}</span></h5>
|
||||
</div>
|
||||
<div class="breadCrumbHolder module">
|
||||
<div class="breadCrumb module">
|
||||
<ul>
|
||||
<li>Модуль: <strong class="code">{$alias_data.module_name|default:''}</strong></li>
|
||||
<li>Системная ссылка: <strong class="code">{$alias_data.module_link|default:''}</strong></li>
|
||||
<li>Основной алиас: <strong class="code">{$alias_data.module_url|default:''}</strong></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget first">
|
||||
<div class="head">
|
||||
<h5 class="iPlus">Параметры редиректа</h5>
|
||||
</div>
|
||||
<form action="index.php?do=modules&action=aliases&id={$alias_id}&cp={$sess}&ajax=1&onlycontent=1" method="post" id="AliasForm">
|
||||
<input type="hidden" name="save_aliases" value="1" />
|
||||
|
||||
|
||||
@@ -706,21 +706,18 @@ public function moduleAliasSave($id, $data)
|
||||
return true;
|
||||
}
|
||||
|
||||
// Уникальность ЧПУ (module_url)
|
||||
$check_url = $AVE_DB->Query("SELECT id FROM " . PREFIX . "_modules_aliases
|
||||
WHERE module_url = '{$module_url}' AND id != '{$id}' LIMIT 1")->FetchAssocArray();
|
||||
if ($check_url) {
|
||||
return 'error_duplicate_url';
|
||||
}
|
||||
|
||||
// Уникальность Оригинального URL (module_link)
|
||||
$check_link = $AVE_DB->Query("SELECT id FROM " . PREFIX . "_modules_aliases
|
||||
WHERE module_link = '{$module_link}' AND id != '{$id}' LIMIT 1")->FetchAssocArray();
|
||||
if ($check_link) {
|
||||
return 'error_duplicate_link';
|
||||
}
|
||||
|
||||
// ОБРАБОТКА ИСТОРИИ (только при редактировании)
|
||||
if ($id > 0) {
|
||||
$old_data = $AVE_DB->Query("SELECT module_name, module_url FROM " . PREFIX . "_modules_aliases WHERE id = '{$id}'")->FetchAssocArray();
|
||||
if ($old_data && $old_data['module_url'] != $module_url) {
|
||||
@@ -771,14 +768,11 @@ public function moduleAliasDeleteById($id)
|
||||
global $AVE_DB;
|
||||
$id = (int)$id;
|
||||
if ($id > 0) {
|
||||
// Сначала получаем имя модуля, чтобы знать, чью историю тереть
|
||||
$m_data = $AVE_DB->Query("SELECT module_name FROM " . PREFIX . "_modules_aliases WHERE id = '{$id}' LIMIT 1")->FetchAssocArray();
|
||||
|
||||
if ($m_data) {
|
||||
$m_name = addslashes($m_data['module_name']);
|
||||
// Удаляем историю для этого конкретного модуля
|
||||
$AVE_DB->Query("DELETE FROM " . PREFIX . "_modules_aliases_history WHERE module_name = '{$m_name}'");
|
||||
// Удаляем сам алиас
|
||||
$AVE_DB->Query("DELETE FROM " . PREFIX . "_modules_aliases WHERE id = '{$id}'");
|
||||
return true;
|
||||
}
|
||||
@@ -794,10 +788,23 @@ public function getAliasHistory($id)
|
||||
global $AVE_DB, $AVE_Template;
|
||||
$id = (int)$id;
|
||||
|
||||
// Получаем инфу по модулю
|
||||
$alias_info = $AVE_DB->Query("SELECT module_link_name, module_name FROM " . PREFIX . "_modules_aliases WHERE id = '{$id}' LIMIT 1")->FetchAssocArray();
|
||||
$alias_info = $AVE_DB->Query("
|
||||
SELECT
|
||||
id,
|
||||
document_id,
|
||||
module_name,
|
||||
module_action,
|
||||
module_link,
|
||||
module_link_name,
|
||||
module_url,
|
||||
module_admin
|
||||
FROM " . PREFIX . "_modules_aliases
|
||||
WHERE id = '{$id}'
|
||||
LIMIT 1
|
||||
")->FetchAssocArray();
|
||||
|
||||
if (!$alias_info) return;
|
||||
|
||||
// Берем историю
|
||||
$sql = "SELECT id, module_alias, module_alias_header
|
||||
FROM " . PREFIX . "_modules_aliases_history
|
||||
WHERE module_name = '" . addslashes($alias_info['module_name']) . "'
|
||||
@@ -811,9 +818,17 @@ public function getAliasHistory($id)
|
||||
}
|
||||
}
|
||||
|
||||
$AVE_Template->assign('history_list', $history);
|
||||
$AVE_Template->assign('alias_id', $id);
|
||||
$AVE_Template->assign('alias_title', $alias_info['module_link_name'] ?? $alias_info['module_name']);
|
||||
$AVE_Template->assign([
|
||||
'history_list' => $history,
|
||||
'alias_id' => $id,
|
||||
'module_name' => $alias_info['module_name'], // Системное имя
|
||||
'module_action' => $alias_info['module_action'], // Действие
|
||||
'module_link' => $alias_info['module_link'], // Ссылка
|
||||
'module_link_name' => $alias_info['module_link_name'], // Имя
|
||||
'module_url' => $alias_info['module_url'], // ЧПУ
|
||||
'document_id' => $alias_info['document_id'], // ID документа
|
||||
'alias_title' => $alias_info['module_link_name'] ?: $alias_info['module_name']
|
||||
]);
|
||||
|
||||
$AVE_Template->assign('content', $AVE_Template->fetch('modules/alias_history.tpl'));
|
||||
}
|
||||
@@ -834,7 +849,7 @@ public function deleteAliasHistory($h_id)
|
||||
}
|
||||
|
||||
/**
|
||||
* Метод для отображения списка всех алиасов
|
||||
* Метод для отображения списка всех алиасов с поддержкой навигации по документам
|
||||
*/
|
||||
public function getAliasesAll()
|
||||
{
|
||||
@@ -851,9 +866,11 @@ public function getAliasesAll()
|
||||
a.module_url as alias_url,
|
||||
a.document_id as doc_id,
|
||||
a.module_admin,
|
||||
m.ModuleName as title
|
||||
m.ModuleName as title,
|
||||
d.rubric_id
|
||||
FROM " . PREFIX . "_modules_aliases a
|
||||
LEFT JOIN " . PREFIX . "_module m ON m.ModuleSysName = a.module_name
|
||||
LEFT JOIN " . PREFIX . "_documents d ON d.Id = a.document_id
|
||||
ORDER BY a.id DESC";
|
||||
|
||||
$q = $AVE_DB->Query($sql);
|
||||
@@ -970,5 +987,94 @@ public function moduleAliasRequestSave($alias_id)
|
||||
return $res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавление записи в историю ЧПУ
|
||||
*/
|
||||
public function addAliasHistory()
|
||||
{
|
||||
global $AVE_DB;
|
||||
|
||||
$alias_id = (int)($_POST['alias_id'] ?? 0);
|
||||
$new_alias = trim($_POST['new_alias'] ?? '');
|
||||
$code = (int)($_POST['code'] ?? 301);
|
||||
|
||||
if ($alias_id <= 0 || $new_alias === '') {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['status' => 'error', 'message' => 'Данные не заполнены']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$m_data = $AVE_DB->Query("SELECT module_name FROM " . PREFIX . "_modules_aliases WHERE id = '{$alias_id}' LIMIT 1")->FetchAssocArray();
|
||||
|
||||
if (!$m_data) {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['status' => 'error', 'message' => 'Основной алиас не найден']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$module_name = addslashes($m_data['module_name']);
|
||||
$new_alias_db = addslashes($new_alias);
|
||||
|
||||
$check = $AVE_DB->Query("SELECT id FROM " . PREFIX . "_modules_aliases_history
|
||||
WHERE module_alias = '{$new_alias_db}'
|
||||
AND module_name = '{$module_name}' LIMIT 1")->FetchAssocArray();
|
||||
|
||||
if ($check) {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['status' => 'error', 'message' => 'Такой адрес уже есть в истории']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$sql = "INSERT INTO " . PREFIX . "_modules_aliases_history
|
||||
SET module_name = '{$module_name}',
|
||||
module_alias = '{$new_alias_db}',
|
||||
module_alias_header = '{$code}'";
|
||||
|
||||
$res = $AVE_DB->Query($sql);
|
||||
$new_id = $AVE_DB->InsertId();
|
||||
|
||||
if (function_exists('clear_cache')) clear_cache();
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode([
|
||||
'status' => $res ? 'success' : 'error',
|
||||
'id' => $new_id
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Массовое удаление записей из истории
|
||||
*/
|
||||
public function deleteAliasHistoryBatch()
|
||||
{
|
||||
global $AVE_DB;
|
||||
|
||||
if (ob_get_length()) ob_clean();
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$history_ids = $_POST['history_del'] ?? [];
|
||||
|
||||
if (!empty($history_ids) && is_array($history_ids)) {
|
||||
|
||||
$clean_ids = array_map('intval', array_keys($history_ids));
|
||||
|
||||
$ids_string = implode(',', $clean_ids);
|
||||
|
||||
$sql = "DELETE FROM " . PREFIX . "_modules_aliases_history
|
||||
WHERE id IN ({$ids_string})";
|
||||
|
||||
$res = $AVE_DB->Query($sql);
|
||||
|
||||
if (function_exists('clear_cache')) clear_cache();
|
||||
|
||||
echo json_encode(['status' => ($res ? 'success' : 'error')]);
|
||||
} else {
|
||||
echo json_encode(['status' => 'error', 'message' => 'Нет данных для удаления']);
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user