Files
ave-cms-alt/admin/templates/modules/module_aliases.tpl

276 lines
12 KiB
Smarty
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div class="title">
<h5>{#MODULES_REDIRECT#} {$alias_data.module_link_name|default:''}</h5>
</div>
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li>{#MODULES_MODULE_HIS#} <strong class="code">{$alias_data.module_name|default:''}</strong></li>
<li>{#MODULES_SYSLINK_HIS#} <strong class="code">{$alias_data.module_link|default:''}</strong></li>
<li>{#MODULES_MAIN_ALIASE_HIS#} <strong class="code">{$alias_data.module_url|default:''}</strong></li>
</ul>
</div>
</div>
<div class="widget first">
<div class="head">
<h5 class="iPlus">{#MODULES_REDIRECT_PARAM#}</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" />
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<tr>
<td width="150">{#MODULES_SYS_NAME#}</td>
<td><input type="text" name="module_name" value="{$alias_data.module_name|default:''}" style="width: 95%;" /></td>
</tr>
<tr>
<td width="150">{#MODULES_LINK_NAME#}:</td>
<td><input type="text" name="module_link_name" value="{$alias_data.module_link_name|default:''}" style="width: 95%;" /></td>
</tr>
<tr>
<td>{#MODULES_SYS_ACTIONS#}</td>
<td><input type="text" name="module_action" value="{$alias_data.module_action|default:''}" style="width: 95%;" /></td>
</tr>
<tr>
<td>
<div style="display: flex; align-items: center; gap: 8px;">{#MODULES_ORIGINAL_URL#}<a href="javascript:void(0);" id="toggle_preview_ui" class="icon_sprite ico_look topDir" title="{#MODULES_PREWIEW_URL#}" style="cursor: pointer;"></a></div>
</td>
<td>
<div style="display: flex; align-items: center; gap: 8px;">
<input type="text" name="module_link" value="{$alias_data.module_link|default:''}" style="width: 95%;" />
</div>
<div id="url_preview_box" style="margin-top: 8px; padding: 8px 10px; background: #fdfdfd; border: 1px solid #e0e0e0; font-family: 'Courier New', monospace; font-size: 11px; color: #555; word-break: break-all; border-radius: 3px; display: none; width: 93%;">
<span id="url_res_path" style="color: #999;">{if $smarty.const.ABS_PATH|substr:0:4 == 'http'}{$smarty.const.ABS_PATH}{else}{$smarty.server.REQUEST_SCHEME}://{$smarty.server.HTTP_HOST}{$smarty.const.ABS_PATH}{/if}</span><span id="url_res_link" style="font-weight: bold; color: #2c3e50;"></span>
</div>
</td>
</tr>
<tr>
<td><strong>{#MODULES_MAIN_ALIAS#}</strong></td>
<td><input type="text" name="module_url" value="{$alias_data.module_url|default:''}" style="width: 95%; font-weight: bold;" /></td>
</tr>
<tr>
<td>{#MODULES_USE_ALIAS_DOC#}</td>
<td>
<div style="display: flex; gap: 10px; align-items: center; width: 98%;">
<select id="rubric_selector" style="width: 45%;">
<option value="0">{#MODULES_SEL_CATEG#}</option>
{foreach from=$all_rubrics key=r_id item=r_title}
<option value="{$r_id}" {if $r_id == $current_rubric_id}selected="selected"{/if}>{$r_title}</option>
{/foreach}
</select>
<select name="document_id" id="document_selector" style="width: 55%;">
<option value="0">{#MODULES_USE_ALIAS_DOC_NO#}</option>
{foreach from=$all_docs key=d_id item=d_title}
<option value="{$d_id}" {if $d_id == ($alias_data.document_id|default:0)}selected="selected"{/if}>{$d_title}</option>
{/foreach}
</select>
</div>
</td>
</tr>
<tr>
<td>{#MODULES_ADMIN_ACCESS#}</td>
<td style="vertical-align: middle;">
<div style="display: flex; align-items: center; gap: 8px; min-height: 24px;">
<input type="checkbox" name="module_admin" value="1" class="checkbox" {if $alias_id != 0 && ($alias_data.module_admin|default:'0') == '1'}checked="checked"{/if} />
<label style="margin: 0; cursor: pointer; white-space: nowrap; line-height: 1;">{#MODULES_ADMIN_ACCESS_SEL#}</label>
</div>
</td>
</tr>
<tr>
<td colspan="2" style="padding: 15px 10px;">
<input type="submit" class="basicBtn SaveAlias" value="{#MODULES_BUTTON_SAVE#}" />
&nbsp;
<a href="javascript:void(0);" class="button redBtn CloseModal">{#MODULES_BTN_CLOSE_WIN_HIS#}</a>
</td>
</tr>
</table>
</form>
</div>
{literal}
<script type="text/javascript">
$(function(){
var a_id = '{/literal}{$alias_id}{literal}';
// Инициализация плагинов
$("#AliasForm").jqTransform();
setTimeout(function() {
$('#AliasForm select').styler({
selectSmartPositioning: true,
selectVisibleOptions: 5,
selectSearch: false
});
}, 100);
// --- Рубрика -> Документ ---
$('#rubric_selector').on('change', function() {
var rubricId = $(this).val();
var $docSelect = $('#document_selector');
$docSelect.html('<option value="0">{/literal}{#MODULES_TXT_LOAD#}{literal}</option>');
if ($.fn.styler) $docSelect.trigger('refresh');
if (parseInt(rubricId) === 0) {
$docSelect.html('<option value="0">{/literal}{#MODULES_USE_ALIAS_DOC_NO#}{literal}</option>');
if ($.fn.styler) $docSelect.trigger('refresh');
return;
}
$.getJSON('index.php?do=modules&action=aliases&id=' + a_id + '&get_docs_by_rubric=1&rubric_id=' + rubricId, function(data) {
var options = '<option value="0">{/literal}{#MODULES_USE_ALIAS_DOC_NO#}{literal}</option>';
$.each(data, function(i, item) {
options += '<option value="' + item.Id + '">' + item.document_title + '</option>';
});
$docSelect.html(options);
if ($.fn.styler) $docSelect.trigger('refresh');
});
});
// --- предпросмотр ссылки ---
var $linkInput = $('input[name="module_link"]');
var $adminCheck = $('input[name="module_admin"]');
var $preview = $('#url_res_link');
var $previewBox = $('#url_preview_box');
var $toggleUi = $('#toggle_preview_ui');
var storageKey = 'cms_alias_preview_visible';
var isVisible = localStorage.getItem(storageKey) === 'true';
if (isVisible) {
$previewBox.show();
$toggleUi.css('opacity', '1');
} else {
$toggleUi.css('opacity', '0.5');
}
$toggleUi.on('click', function(e) {
e.preventDefault();
$previewBox.stop().slideToggle(200, function() {
var nowVisible = $previewBox.is(':visible');
localStorage.setItem(storageKey, nowVisible);
$toggleUi.css('opacity', nowVisible ? '1' : '0.5');
});
});
function cleanUrl(val) {
if (!val) return '';
var clean = val.trim().replace(/\s/g, '');
clean = clean.replace(/^https?:\/\/[^\/]+/i, '');
clean = clean.replace(/([\?&])cp=[^&]*/gi, '');
clean = clean.replace(/^\/+/, '').replace(/[\?&]$/, '');
return clean;
}
function updateUrlPreview() {
var rawValue = $linkInput.val();
var link = cleanUrl(rawValue);
var isAdmin = $adminCheck.is(':checked');
if (link === '') {
$preview.html('<span style="color:#ccc;">{/literal}{#MODULES_JS_ADD_LINK#}{literal}</span>');
return;
}
var prefix = '';
var sessionPart = '';
if (isAdmin) {
if (!link.toLowerCase().startsWith('admin/')) {
prefix = '<span style="color: #27ae60;">admin/</span>';
}
var connector = link.indexOf('?') !== -1 ? '&' : '?';
sessionPart = '<span style="color: #27ae60;">' + connector + 'cp=SESSION_ID</span>';
} else {
if (link.toLowerCase().startsWith('admin/')) {
link = link.substring(6);
}
}
$preview.html(prefix + link + sessionPart);
var cleanedRaw = cleanUrl(rawValue);
if (rawValue !== cleanedRaw && rawValue.indexOf('://') !== -1) {
$linkInput.val(cleanedRaw);
}
}
$linkInput.on('keyup input paste', function() {
setTimeout(updateUrlPreview, 10);
});
$adminCheck.on('change', function() {
setTimeout(updateUrlPreview, 50);
});
updateUrlPreview();
function closeAndReload() {
$('#ajax-dialog-aliases-' + a_id).dialog('destroy').remove();
if (window.parent) window.parent.location.reload();
else window.location.reload();
}
$(document).off('click', '.CloseModal').on('click', '.CloseModal', function(e){
e.preventDefault();
closeAndReload();
});
var $dialog = $('#ajax-dialog-aliases-' + a_id).closest('.ui-dialog');
$dialog.find('.ui-dialog-titlebar-close').on('click', function(){
if (window.parent) window.parent.location.reload();
});
$(document).off('click', '.SaveAlias').on('click', '.SaveAlias', function(e){
e.preventDefault();
var $btn = $(this);
var $form = $("#AliasForm");
var moduleName = $form.find('input[name="module_name"]').val().trim();
var moduleLink = $form.find('input[name="module_link"]').val().trim();
var moduleUrl = $form.find('input[name="module_url"]').val().trim();
if (moduleName === '' || moduleLink === '' || moduleUrl === '') {
var errorMsg = "{/literal}{#MODULES_MES_EMPTY_FIELDS#}{literal}";
$.jGrowl(errorMsg, { theme: 'error' });
return false;
}
$form.ajaxSubmit({
dataType: 'json',
beforeSubmit: function() {
$btn.attr("disabled", true).val("{/literal}{#MODULES_TXT_SAVE#}{literal}");
},
success: function(r){
if (r && r.status == 'success') {
$.jGrowl(r.message || "{/literal}{#MODULES_JS_OK_ALERT#}{literal}", {
theme: "accept",
life: 3000
});
if (parseInt(a_id) === 0) {
setTimeout(function() {
if (window.parent) window.parent.location.reload();
}, 900);
} else {
$btn.attr("disabled", false).val("{/literal}{#MODULES_BUTTON_SAVE#}{literal}");
}
} else {
var msg = (r && r.message) ? r.message : "{/literal}{#MODULES_ERR_AL_SAVE#}{literal}";
$.jGrowl(msg, {
theme: "error",
life: 5000
});
$btn.attr("disabled", false).val("{/literal}{#MODULES_BUTTON_SAVE#}{literal}");
}
},
error: function() {
$.jGrowl("Критическая ошибка сервера", { theme: "error" });
$btn.attr("disabled", false).val("{/literal}{#MODULES_BUTTON_SAVE#}{literal}");
}
});
});
});
</script>
{/literal}