168 lines
8.0 KiB
Smarty
168 lines
8.0 KiB
Smarty
<style>
|
||
{literal}
|
||
.log-table { font-size: 12px !important; font-family: Tahoma, Arial, sans-serif !important; table-layout: fixed; }
|
||
.log-table thead td { background: #f5f5f5; font-weight: bold; border-bottom: 1px solid #ccc; padding: 12px 5px !important; color: #333; text-align: center; }
|
||
.log-table tbody td { padding: 10px 5px !important; border-bottom: 1px solid #eee; vertical-align: middle; color: #444; text-align: center; word-wrap: break-word; }
|
||
.log-table tbody td.details-col { text-align: left; padding-left: 15px !important; }
|
||
|
||
.status-badge { background: #666; color: #fff; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: bold; display: inline-block; }
|
||
.status-create { background: #458045; }
|
||
.status-edit { background: #4d7298; }
|
||
|
||
.reason-text { color: #d9534f; font-weight: bold; font-size: 11px; display: block; margin-bottom: 4px; line-height: 1.3; }
|
||
.file-box { font-size: 11px; color: #005580; background: #f0f4f7; padding: 4px 8px; border-radius: 2px; border: 1px solid #d0dbe4; display: inline-block; }
|
||
.no-data { color: #ccc; font-style: italic; }
|
||
{/literal}
|
||
</style>
|
||
|
||
<div class="widget first" style="margin:0; border:none;">
|
||
<div class="whead">
|
||
<h6><i class="icon-shield"></i> {#COMMENT_FILES_LOG_TITEL_B#}</h6>
|
||
<div class="clear"></div>
|
||
</div>
|
||
|
||
<div id="logs_container" style="max-height:550px; overflow-y:auto;">
|
||
{if $logs}
|
||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic log-table">
|
||
<thead>
|
||
<tr>
|
||
<td width="130">{#COMMENT_FILES_LOG_MODAL_A#}</td>
|
||
<td width="95">{#COMMENT_FILES_LOG_MODAL_B#}</td>
|
||
<td width="60">{#COMMENT_FILES_LOG_MODAL_C#}</td>
|
||
<td width="60">{#COMMENT_FILES_LOG_MODAL_D#}</td>
|
||
<td width="120">{#COMMENT_FILES_LOG_MODAL_E#}</td>
|
||
<td width="150">{#COMMENT_FILES_LOG_MODAL_F#}</td>
|
||
<td width="100">{#COMMENT_FILES_LOG_MODAL_G#}</td>
|
||
<td>{#COMMENT_FILES_LOG_MODAL_H#}</td>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{foreach from=$logs item=log}
|
||
<tr>
|
||
<td>{$log.date}</td>
|
||
<td><strong>{$log.ip}</strong></td>
|
||
<td>{$log.user_id|default:"0"}</td>
|
||
<td>{$log.comm_id|default:"—"}</td>
|
||
<td><b style="color:#c00;">{$log.author|default:"—"}</b></td>
|
||
<td>{$log.email|default:"<span class='no-data'>{#COMMENT_FILES_LOG_MODAL_I#}</span>"}</td>
|
||
<td>
|
||
<span class="status-badge {if $log.status == 'Создание'}status-create{else}status-edit{/if}">
|
||
{$log.status}
|
||
</span>
|
||
</td>
|
||
<td class="details-col">
|
||
<span class="reason-text">{$log.reason}</span>
|
||
<div class="file-box">
|
||
<b>{#COMMENT_FILES_LOG_MODAL_J#}</b> {$log.file} <span style="color:#777; font-weight:normal;">({$log.mime})</span>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
{/foreach}
|
||
</tbody>
|
||
</table>
|
||
{else}
|
||
<div style="padding:60px; text-align:center; color:#999;">
|
||
<h4>{#COMMENT_FILES_LOG_MODAL_K#}</h4>
|
||
</div>
|
||
{/if}
|
||
</div>
|
||
|
||
<div class="formBar" style="padding:15px; border-top:1px solid #ddd; background:#f9f9f9;">
|
||
<div style="float:left;">
|
||
{if $logs}
|
||
<a href="javascript:void(0);" class="button redBtn" id="clear_log_btn"><span>{#COMMENT_FILES_LOG_MODAL_L#}</span></a>
|
||
{/if}
|
||
</div>
|
||
<div style="float:right;">
|
||
<a href="javascript:void(0);" class="button blueBtn CloseLogDialog"><span>Закрыть окно</span></a>
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<script type="text/javascript">
|
||
{literal}
|
||
$(document).ready(function(){
|
||
// Флаг для предотвращения повторных перезагрузок
|
||
window.is_reloading = false;
|
||
|
||
// Очистка лога через системный jConfirm
|
||
$('#clear_log_btn').off('click').on('click', function(e){
|
||
e.preventDefault();
|
||
|
||
jConfirm('Вы уверены, что хотите полностью очистить файл лога безопасности?', 'Подтверждение очистки', function(r) {
|
||
if(r) {
|
||
$.ajax({
|
||
url: 'index.php?do=modules&action=modedit&mod=comment&moduleaction=clear_logs&cp={/literal}{$sess}{literal}',
|
||
type: 'POST',
|
||
success: function(){
|
||
$('#logs_container').html('<div style="padding:60px; text-align:center;"><h4 style="color:#999;">Журнал успешно очищен.</h4></div>');
|
||
$('#clear_log_btn').fadeOut();
|
||
|
||
if(window.parent) {
|
||
$('.log-dot', window.parent.document).removeClass('log-dot-new').addClass('log-dot-gray');
|
||
$('.log-link strong', window.parent.document).text('Просмотреть логи безопасности');
|
||
}
|
||
},
|
||
error: function() {
|
||
jAlert('Произошла ошибка при очистке лога', 'Ошибка');
|
||
}
|
||
});
|
||
}
|
||
});
|
||
});
|
||
|
||
// --- ОБРАБОТКА ЗАКРЫТИЯ ЧЕРЕЗ КРЕСТИК ИЛИ ESC ---
|
||
var $dialogContainer = $(".CloseLogDialog").closest('.ui-dialog-content');
|
||
if ($dialogContainer.length) {
|
||
$dialogContainer.on("dialogclose", function(event, ui) {
|
||
// Если мы еще не в процессе перезагрузки, запускаем её
|
||
if (!window.is_reloading) {
|
||
window.is_reloading = true;
|
||
$.ajax({
|
||
url: 'index.php?do=modules&action=modedit&mod=comment&moduleaction=mark_log_read&cp={/literal}{$sess}{literal}',
|
||
type: 'GET',
|
||
complete: function() {
|
||
if (window.parent && window.parent.location !== window.location) {
|
||
window.parent.location.reload();
|
||
} else {
|
||
window.location.reload();
|
||
}
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
// Универсальное закрытие по кнопке "Закрыть окно"
|
||
$(".CloseLogDialog").on('click', function(e){
|
||
e.preventDefault();
|
||
|
||
// Устанавливаем флаг, чтобы dialogclose не сработал дублем
|
||
window.is_reloading = true;
|
||
|
||
// Сначала помечаем логи как прочитанные в сессии
|
||
$.ajax({
|
||
url: 'index.php?do=modules&action=modedit&mod=comment&moduleaction=mark_log_read&cp={/literal}{$sess}{literal}',
|
||
type: 'GET',
|
||
complete: function() {
|
||
// Когда сессия обновилась, закрываем окно
|
||
if($.isFunction($.colorbox)) {
|
||
$.colorbox.close();
|
||
} else {
|
||
var $dialog = $(".CloseLogDialog").closest('.ui-dialog-content');
|
||
if ($dialog.length) $dialog.dialog('close');
|
||
}
|
||
|
||
// Перезагружаем страницу
|
||
if (window.parent && window.parent.location !== window.location) {
|
||
window.parent.location.reload();
|
||
} else {
|
||
window.location.reload();
|
||
}
|
||
}
|
||
});
|
||
});
|
||
});
|
||
{/literal}
|
||
</script> |