From a42a55c4108e40f208ee209d30db34cfb1e59f9c Mon Sep 17 00:00:00 2001 From: Repellent Date: Wed, 7 Jan 2026 23:35:38 +0500 Subject: [PATCH] +++ lang files --- js/comment.js | 123 +++++++++++++++++------------------- lang/ru.txt | 35 ++++++++++ templates/comments_tree.tpl | 37 +++++++++++ 3 files changed, 129 insertions(+), 66 deletions(-) diff --git a/js/comment.js b/js/comment.js index edc1abb..c0dc9a9 100644 --- a/js/comment.js +++ b/js/comment.js @@ -31,23 +31,22 @@ function initCommentTimers() { if (timeLeft <= 0) { clearInterval(countdown); - // --- ИЗМЕНЕНИЕ 1: Проверка режима редактирования --- + // --- Проверка режима редактирования --- var isEditing = $('#comment_wrapper_' + cid).find('.edit-form-container').length > 0; if (!isEditing) { // Находим кнопки управления - var $controls = $('#controls_' + cid); // Убедитесь, что у контейнера кнопок есть такой ID + var $controls = $('#controls_' + cid); if ($controls.length) { $controls.fadeOut(300, function() { $(this).remove(); }); } // Обновляем статус визуально - $('#timer_container_' + cid).html(' Время на правку истекло'); + $('#timer_container_' + cid).html('' + COMMENT_JS_TIMER_OFF + ''); } else { // Если открыта форма редактирования, просто меняем текст, не удаляя кнопки - $('#timer_container_' + cid).html(' Время вышло! Завершите правку.'); + $('#timer_container_' + cid).html('' + COMMENT_JS_TIMER_OFF_A + ''); } - // --- КОНЕЦ ИЗМЕНЕНИЯ 1 --- return; } @@ -93,8 +92,8 @@ function initCommentTimers() { function checkFileConsistency(file, $errorDisplay) { if (!file) return true; - // Получаем настройки из шаблона (те переменные, что мы добавили в тег script) - var allowedExts = (typeof ALLOWED_EXTENSIONS !== 'undefined') ? ALLOWED_EXTENSIONS.toLowerCase().split(',') : ['jpg', 'jpeg', 'png', 'gif']; + // Получаем настройки из шаблона + var allowedExts = (typeof ALLOWED_EXTENSIONS !== 'undefined') ? ALLOWED_EXTENSIONS.toLowerCase().split(',') : ['jpg', 'jpeg', 'png', 'gif, webp']; var maxSizeKb = (typeof MAX_FILE_SIZE_KB !== 'undefined') ? parseInt(MAX_FILE_SIZE_KB) : 2048; var fileName = file.name.toLowerCase(); @@ -103,13 +102,13 @@ function initCommentTimers() { // Проверка расширения if ($.inArray(fileExt, allowedExts) === -1) { - $errorDisplay.text('Тип файла .' + fileExt + ' не разрешен.').removeClass('d-none'); + $errorDisplay.text(COMMENT_JS_FILE_TYPE + ' .' + fileExt + ' ' + COMMENT_JS_FILE_TYPE_A).removeClass('d-none'); return false; } // Проверка размера if (fileSizeKb > maxSizeKb) { - $errorDisplay.text('Файл слишком большой (' + Math.round(fileSizeKb) + ' Кб). Максимум: ' + maxSizeKb + ' Кб').removeClass('d-none'); + $errorDisplay.text(COMMENT_JS_FILE_SIZE + ' (' + Math.round(fileSizeKb) + COMMENT_JS_FILE_SIZE_KB + '). ' + COMMENT_JS_FILE_SIZE_MAX + ' ' + maxSizeKb + COMMENT_JS_FILE_SIZE_KB).removeClass('d-none'); return false; } @@ -135,25 +134,25 @@ function initCommentTimers() { } // Проверка Имени - setInvalid($(form.comment_author_name), !form.comment_author_name.value.trim(), "Введите ваше имя"); + setInvalid($(form.comment_author_name), !form.comment_author_name.value.trim(), COMMENT_JS_CHECK_NAME); // Проверка Email - setInvalid($(form.comment_author_email), !form.comment_author_email.value.trim(), "Введите корректный Email"); + setInvalid($(form.comment_author_email), !form.comment_author_email.value.trim(), COMMENT_JS_CHECK_EMAIL); // Проверка Доп. поля №1 (если оно обязательное) if (typeof REQ_F1 !== 'undefined' && REQ_F1 == '1') { var f1 = $('#in_author_website'); - setInvalid(f1, !f1.val().trim(), "Заполните: " + NAME_F1); + setInvalid(f1, !f1.val().trim(), COMMENT_JS_FILL + " " + NAME_F1); } // Проверка Доп. поля №2 (если оно обязательное) if (typeof REQ_F2 !== 'undefined' && REQ_F2 == '1') { var f2 = $('#in_author_city'); - setInvalid(f2, !f2.val().trim(), "Заполните: " + NAME_F2); + setInvalid(f2, !f2.val().trim(), COMMENT_JS_FILL + " " + NAME_F2); } // Проверка Текста - setInvalid($(form.comment_text), !form.comment_text.value.trim(), "Введите текст комментария"); + setInvalid($(form.comment_text), !form.comment_text.value.trim(), COMMENT_JS_ADD_COMMENT_TEXT); // Проверка файлов в основной форме (Мультизагрузка) var $fileInput = $(form).find('#comment_image'); @@ -214,11 +213,11 @@ if (action === 'unlock' || action === 'lock') { if (action === 'lock') { // Статус 0: СКРЫТО. Ставим красный перечеркнутый глаз. $icon.attr('class', 'bi bi-eye-slash'); - $btn.removeClass('text-success text-muted').addClass('text-danger').attr('title', 'Показать'); + $btn.removeClass('text-success text-muted').addClass('text-danger').attr('title', COMMENT_ICON_SHOW); } else { // Статус 1: ВИДИМО. Ставим зеленый открытый глаз. $icon.attr('class', 'bi bi-eye'); - $btn.removeClass('text-danger text-muted').addClass('text-success').attr('title', 'Скрыть'); + $btn.removeClass('text-danger text-muted').addClass('text-success').attr('title', COMMENT_ICON_HIDE); } } }); @@ -265,7 +264,7 @@ $doc.on('change', '#comment_image', function() {
`; @@ -280,11 +279,10 @@ $doc.on('change', '#comment_image', function() { } }); -// старый обработчик, доработанный под мультизагрузку +// обработчик, доработанный под мультизагрузку $doc.on('click', '#remove_image_btn', function() { $('#comment_image').val(''); // Очищаем выбор файлов $('#image_preview_wrapper').addClass('d-none').empty(); // Скрываем и полностью очищаем блок превью - // Строка с #image_preview_img больше не нужна, так как картинок теперь много }); // удаление картинок по одной (крестиком на самой картинке) @@ -298,7 +296,7 @@ $doc.on('click', '.remove-new-img', function() { } }); - // --- ЛОГИКА ВЫБОРА РЕЙТИНГА В ФОРМЕ --- + // --- ВЫБОР РЕЙТИНГА В ФОРМЕ --- $doc.on('mouseenter', '.star-choice', function() { var val = $(this).data('value'); $(this).parent().find('.star-choice').each(function() { @@ -366,7 +364,7 @@ $doc.on('mouseleave', '.rating-edit-block, #rating_wrapper', function() { $('#user_rating_stars_' + cid + ' .star-choice').removeClass('bi-star-fill').addClass('bi-star'); }); - // --- ЛОГИКА ГОЛОСОВАНИЯ (РЕЙТИНГ УЖЕ ОПУБЛИКОВАННЫХ) --- + // --- ГОЛОСОВАНИЕ (РЕЙТИНГ УЖЕ ОПУБЛИКОВАННЫХ) --- $doc.on('mouseenter', '.star-item', function() { var $parent = $(this).parent(); if ($parent.hasClass('comment-like')) { @@ -395,19 +393,19 @@ $doc.on('mouseleave', '.rating-edit-block, #rating_wrapper', function() { success: function(response) { var res = response.toString().trim(); if (res.indexOf('success') !== -1) { - $container.html('Спасибо!'); + $container.html('' + COMMENT_JS_THX + ''); setTimeout(function(){ location.reload(); }, 1000); } else if (res.indexOf('already_voted') !== -1) { - alert('Вы уже голосовали за этот комментарий.'); + alert(COMMENT_JS_VOTE_A); } else if (res.indexOf('own_comment') !== -1) { - alert('Нельзя голосовать за свой собственный комментарий.'); + alert(COMMENT_JS_VOTE_B); } else if (res.indexOf('forbidden_anon') !== -1) { - alert('Голосование доступно только зарегистрированным пользователям.'); + alert('COMMENT_JS_VOTE_C'); } else { - alert('Ошибка при обработке голоса сервером.'); + alert(COMMENT_JS_VOTE_ERR); } }, - error: function(xhr) { alert('Ошибка связи с сервером. Статус: ' + xhr.status); } + error: function(xhr) {alert(COMMENT_JS_VOTE_ERR_A + ' ' + xhr.status);} }); }); @@ -424,12 +422,12 @@ $doc.on('mouseleave', '.rating-edit-block, #rating_wrapper', function() { // --- СКРЫТИЕ РЕЙТИНГА ДЛЯ ОТВЕТОВ --- if (typeof SHOW_USER_RATING_REPLIES !== 'undefined' && SHOW_USER_RATING_REPLIES == '0') { $('#rating_wrapper').hide(); // Скрываем весь блок рейтинга - $('#comment_user_rating').val(0); // Сбрасываем значение на всякий случай + $('#comment_user_rating').val(0); // Сбрасываем значение $('#user_rating_stars .star-choice').removeClass('bi-star-fill').addClass('bi-star'); } else { $('#rating_wrapper').show(); } - // --- КОНЕЦ ЛОГИКИ --- + // --- КОНЕЦ --- $('html, body').animate({ scrollTop: $form.offset().top - 150 }, 500); $('#in_message').focus(); }); @@ -437,7 +435,7 @@ $doc.on('mouseleave', '.rating-edit-block, #rating_wrapper', function() { // Удаление $doc.off('click', '.mod_comment_delete').on('click', '.mod_comment_delete', function(e) { e.preventDefault(); - if (confirm('Удалить этот комментарий?')) cAction(this, 'delete'); + if (confirm(COMMENT_JS_DELDEL_CONFIRM)) cAction(this, 'delete'); }); @@ -498,7 +496,7 @@ $doc.off('click', '.mod_comment_edit').on('click', '.mod_comment_edit', function var existingImagesHtml = ''; var $imageContainer = $('#image_container_' + cid); -// Ищем именно "карточки" из твоего шаблона (класс .comment-image-item) +// Ищем именно "карточки" из шаблона (класс .comment-image-item) var $foundItems = $imageContainer.find('.comment-image-item'); if ($foundItems.length > 0) { @@ -514,7 +512,7 @@ if ($foundItems.length > 0) { var fileExt = fileName.split('.').pop().toLowerCase(); var isImg = ['jpg', 'jpeg', 'png', 'gif', 'webp'].includes(fileExt); - // Используем твой же стиль превью + // Используем стиль превью var previewContent = isImg ? `` : `
0) { existingImagesHtml += '
'; } - // --- РЕЙТИНГ (ВОЗВРАЩЕНА ПОЛНАЯ ОРИГИНАЛЬНАЯ ЛОГИКА) --- + // --- РЕЙТИНГ --- var starsEditBlock = ''; var parentIdVal = parseInt($wrapper.attr('data-parent')) || 0; var isReply = parentIdVal > 0; @@ -548,11 +546,11 @@ if ($foundItems.length > 0) { } starsEditBlock = `
- + @@ -566,27 +564,27 @@ var editHtml = ` ${starsEditBlock} -

Загруженные файлы:

+

${COMMENT_JS_LOADED_FILES}

${existingImagesHtml}
- +
- - - Осталось: + + + ${COMMENT_JS_EDIT_BUT_LEFT}
`; // Прячем текст комментария $textBlock.hide(); -// Прячем ВЕСЬ контейнер с оригиналами (и картинки, и упрямый ZIP) +// Прячем ВЕСЬ контейнер с файлами $('#image_container_' + cid).attr('style', 'display: none !important;'); // Для надежности скрываем всё остальное @@ -614,11 +612,11 @@ $('#new_file_' + cid).on('change', function() { var inPending = pendingFiles.filter(f => f !== null).length; if ((alreadyInPost + inPending) >= maxLimit) { - $errorDisplay.text(' Лимит: ' + maxLimit + ' шт.').show(); + $errorDisplay.text(' ' + COMMENT_JS_LIMIT_AB + ' ' + maxLimit + ' ' + COMMENT_JS_LIMIT_ABC).show(); return false; } - // ПРОВЕРКА ЧЕРЕЗ ФУНКЦИЮ (она теперь берет ALLOWED_EXTENSIONS) + // ПРОВЕРКА ЧЕРЕЗ ФУНКЦИЮ (она берет ALLOWED_EXTENSIONS) if (!checkFileConsistency(file, $errorDisplay)) return true; pendingFiles.push(file); @@ -662,7 +660,6 @@ $doc.off('click', '.remove-new-file').on('click', '.remove-new-file', function() pendingFiles[index] = null; // Помечаем как удаленный $item.remove(); - // ЗАМЕНЯЕМ СТАРУЮ СТРОКУ НА ЭТУ: // Ищем через ближайший контейнер формы, чтобы точно попасть в нужный блок текста $(this).closest('.edit-form-container').find('.js-file-error').hide().text(''); }); @@ -684,7 +681,7 @@ $doc.on('click', '.remove-existing-img', function() { var imgPath = $(this).data('img-path'); var targetId = $(this).data('target'); - // 1. Очищаем текст ошибки, так как место освободилось + // 1. Очищаем текст ошибки $('#file_error_' + cid).addClass('d-none').text(''); var $deleteInput = $('#delete_files_' + cid); @@ -695,7 +692,7 @@ $doc.on('click', '.remove-existing-img', function() { $deleteInput.val(currentDeleteList.join(',')); } - // 2. Скрываем и УДАЛЯЕМ элемент, чтобы счетчик .length его больше не видел + // 2. Скрываем и удвляем элемент, чтобы счетчик .length его больше не видел $('#' + targetId).fadeOut(300, function() { $(this).remove(); }); @@ -706,19 +703,17 @@ $doc.on('change', 'input[id^="new_file_"]', function() { var cid = $(this).attr('id').replace('new_file_', ''); var input = this; - // 1. Сначала находим блок (БЕЗ ОШИБОК В ПЕРЕМЕННЫХ) + // 1. Сначала находим блок var $errorBox = $('#file_error_' + cid); var $previewWrapper = $('#edit_preview_wrapper_' + cid); if (input.files && input.files.length > 0) { - // 2. НЕ ОЧИЩАЕМ ТЕКСТ СРАЗУ, даем checkFileConsistency шанс вывести ошибку $previewWrapper.find('.preview-item-new').remove(); $previewWrapper.removeClass('d-none'); Array.from(input.files).forEach(function(file) { - // 3. Передаем именно найденный объект if (checkFileConsistency(file, $errorBox)) { - // Если файл прошел проверку - только тогда можно спрятать старую ошибку + // Если файл прошел проверку - только тогда можно спрятать ошибку $errorBox.addClass('d-none').text(''); var reader = new FileReader(); @@ -752,7 +747,7 @@ $doc.on('click', '.cancelButton', function() { $wrapper.find('.mod_comment_text').show(); // 2. Возвращаем оригинальный блок с картинками - // СНАЧАЛА ЧИСТИМ ИНЛАЙН СТИЛЬ (тот самый !important) + // СНАЧАЛА ЧИСТИМ ИНЛАЙН СТИЛЬ $('#image_container_' + cid).attr('style', ''); // Затем стандартный показ @@ -760,7 +755,7 @@ $doc.on('click', '.cancelButton', function() { // 3. Если мы скрывали изображения напрямую через $foundImgs.hide(), показываем их $wrapper.find('img').show(); - // И ссылки (наш ZIP) тоже на всякий случай + // И ссылки $wrapper.find('a').show(); // 4. Удаляем форму редактирования @@ -772,7 +767,7 @@ $doc.on('click', '.saveButton', function() { var cid = $btn.data('id'); var $container = $btn.closest('.edit-form-container'); - // Достаем наш накопительный массив файлов + // Достаем накопительный массив файлов var pendingFiles = $container.data('pendingFiles') || []; var fd = new FormData(); @@ -786,7 +781,7 @@ $doc.on('click', '.saveButton', function() { fd.append('delete_files', $('#delete_files_' + cid).val()); - // --- ОБНОВЛЕННЫЙ БЛОК: берем файлы из массива, а не из инпута --- + // --- берем файлы из массива --- pendingFiles.forEach(function(file) { if (file !== null) { // Проверяем, что файл не был удален крестиком fd.append('comment_image[]', file); @@ -805,7 +800,6 @@ $doc.on('click', '.saveButton', function() { xhr.upload.addEventListener("progress", function(evt) { if (evt.lengthComputable) { var pct = Math.round((evt.loaded / evt.total) * 100); - // Проверь, есть ли у тебя эти ID в HTML, если нет - прогресс-бар просто не покажется $('#edit_progress_container_' + cid).removeClass('d-none'); $('#edit_progress_bar_' + cid).css('width', pct + '%'); } @@ -823,7 +817,7 @@ $doc.on('click', '.saveButton', function() { var newCommentPendingFiles = []; // Обработка выбора файлов в основной форме -// ДОБАВИЛИ .off('change') чтобы не было дублей +// .off('change') чтобы не было дублей $doc.off('change', '#comment_image').on('change', '#comment_image', function() { var files = this.files; var $previewWrapper = $('#image_preview_wrapper'); @@ -841,11 +835,11 @@ $doc.off('change', '#comment_image').on('change', '#comment_image', function() { // 3. ПРОВЕРКА ЛИМИТА: если уже достигли максимума if (currentInQueue >= maxLimit) { - $errorDisplay.removeClass('d-none').text('Достигнут лимит (' + maxLimit + ' шт.). Лишние файлы проигнорированы.'); + $errorDisplay.removeClass('d-none').text(COMMENT_JS_LIMIT_ABCD + maxLimit + ' ' + COMMENT_JS_LIMIT_ABCDE); return false; // break - полностью выходим из цикла $.each } - // 4. Твоя существующая валидация (размер, расширение) + // 4. Валидация (размер, расширение) if (typeof checkFileConsistency === 'function') { if (!checkFileConsistency(file, $errorDisplay)) { return true; // continue - этот файл плохой, идем к следующему @@ -905,7 +899,7 @@ $doc.on('click', '.remove-new-comment-img', function() { $doc.on('click', '#buttonReset', function() { newCommentPendingFiles = []; $('#image_preview_wrapper').empty().addClass('d-none'); - // Добавляем вот эту строку, чтобы убрать текст ошибки + // убрать текст ошибки $('#file_error').addClass('d-none').text(''); }); @@ -917,8 +911,6 @@ $doc.on('submit', '#mod_comment_new form', function(e) { var $form = $(this); var $btn = $form.find('[type="submit"]'); var originalBtnText = $btn.text(); - - // --- ВОТ ЭТОТ БЛОК МЫ ЗАМЕНИЛИ --- var formData = new FormData(this); // 1. Удаляем стандартные значения, чтобы они не дублировались из инпута @@ -933,7 +925,6 @@ $doc.on('submit', '#mod_comment_new form', function(e) { } }); } - // --------------------------------- $.ajax({ url: aveabspath + 'index.php?ajax=1', @@ -948,15 +939,15 @@ $doc.on('submit', '#mod_comment_new form', function(e) { var pct = Math.round((evt.loaded / evt.total) * 100); $('#upload_progress_container').removeClass('d-none'); $('#upload_progress_bar').css('width', pct + '%'); - $('#upload_status_text').text('Загрузка: ' + pct + '%'); + $('#upload_status_text').text(COMMENT_JS_LOADS_F + ' ' + pct + '%'); } }, false); return xhr; }, - beforeSend: function() { $btn.prop('disabled', true).text('Отправка...'); }, + beforeSend: function() { $btn.prop('disabled', true).text(COMMENT_JS_LOADS_R); }, success: function(data) { if (data.includes('wrong_securecode')) { - alert("Код капчи введен неверно!"); + alert(COMMENT_JS_SEC_CODE_WRONG); getCaptha(); $btn.prop('disabled', false).text(originalBtnText); $('#upload_progress_container').addClass('d-none'); @@ -969,7 +960,7 @@ $doc.on('submit', '#mod_comment_new form', function(e) { } }, error: function() { - alert("Ошибка связи с сервером"); + alert(COMMENT_JS_ERR_SRV); $btn.prop('disabled', false).text(originalBtnText); $('#upload_progress_container').addClass('d-none'); } diff --git a/lang/ru.txt b/lang/ru.txt index 6273320..92b304c 100644 --- a/lang/ru.txt +++ b/lang/ru.txt @@ -86,6 +86,41 @@ COMMENT_ICON_HIDE = "Скрыть комментарий" COMMENT_ICON_SHOW = "Показать комментарий" COMMENT_ANSWER_AJAX_BUTTON = "Показать еще" COMMENT_ANSWER_AJAX_TEXT = "ответов" +COMMENT_JS_TIMER_OFF = " Время на правку истекло" +COMMENT_JS_TIMER_OFF_A = " Время вышло! Завершите правку." +COMMENT_JS_FILE_TYPE = " Тип файла" +COMMENT_JS_FILE_TYPE_A = " не разрешен." +COMMENT_JS_FILE_SIZE = " Файл слишком большой" +COMMENT_JS_FILE_SIZE_KB = " Кб" +COMMENT_JS_FILE_SIZE_MAX = " Максимум:" +COMMENT_JS_CHECK_NAME = " Введите ваше имя" +COMMENT_JS_CHECK_EMAIL = " Введите корректный Email" +COMMENT_JS_FILL = " Заполните:" +COMMENT_JS_ADD_COMMENT_TEXT = " Введите текст комментария" +COMMENT_JS_THX = "Спасибо!" +COMMENT_JS_VOTE_A = "Вы уже голосовали за этот комментарий." +COMMENT_JS_VOTE_B = "Нельзя голосовать за свой собственный комментарий." +COMMENT_JS_VOTE_C = "Голосование доступно только зарегистрированным пользователям." +COMMENT_JS_VOTE_ERR = "Ошибка при обработке голоса сервером." +COMMENT_JS_VOTE_ERR_A = "Ошибка связи с сервером. Статус:" +COMMENT_JS_DELDEL_CONFIRM = "Удалить этот комментарий?" +COMMENT_JS_RATING_ST_EDIT = "Ваша оценка:" +COMMENT_JS_RATING_ST_EDIT_A = "Сбросить" +COMMENT_JS_LOADED_FILES = "Загруженные файлы:" +COMMENT_JS_ADD_NEW_FILES = "Добавить новые:" +COMMENT_JS_EDIT_BUT_SAVE = "Сохранить" +COMMENT_JS_EDIT_BUT_CANCEL = "Отмена" +COMMENT_JS_EDIT_BUT_LEFT = "Осталось: " +COMMENT_JS_LIMIT_AB = "Лимит:" +COMMENT_JS_LIMIT_ABC = "шт." +COMMENT_JS_LIMIT_ABCD = "Достигнут лимит (" +COMMENT_JS_LIMIT_ABCDE = "шт.). Лишние файлы проигнорированы." +COMMENT_JS_LOADS_F = "Загрузка:" +COMMENT_JS_LOADS_R = "Отправка..." +COMMENT_JS_SEC_CODE_WRONG = "Код капчи введен неверно!" +COMMENT_JS_ERR_SRV = "Ошибка связи с сервером" + + diff --git a/templates/comments_tree.tpl b/templates/comments_tree.tpl index d91d17b..10a7fa9 100644 --- a/templates/comments_tree.tpl +++ b/templates/comments_tree.tpl @@ -263,6 +263,43 @@ var COMMENT_DATE_TIME_FORMAT = '{#COMMENT_DATE_TIME_FORMAT#}'; var COMMENT_TEXT_CHANGED = '{#COMMENT_TEXT_CHANGED#}'; var COMMENT_WRONG_CODE = '{#COMMENT_WRONG_CODE#}'; + var COMMENT_JS_TIMER_OFF = '{#COMMENT_JS_TIMER_OFF#}'; + var COMMENT_JS_TIMER_OFF_A = '{#COMMENT_JS_TIMER_OFF_A#}'; + var COMMENT_JS_FILE_TYPE = '{#COMMENT_JS_FILE_TYPE#}'; + var COMMENT_JS_FILE_TYPE_A = '{#COMMENT_JS_FILE_TYPE_A#}'; + var COMMENT_JS_FILE_SIZE = '{#COMMENT_JS_FILE_SIZE#}'; + var COMMENT_JS_FILE_SIZE_KB = '{#COMMENT_JS_FILE_SIZE_KB#}'; + var COMMENT_JS_FILE_SIZE_MAX = '{#COMMENT_JS_FILE_SIZE_MAX#}'; + var COMMENT_JS_CHECK_NAME = '{#COMMENT_JS_CHECK_NAME#}'; + var COMMENT_JS_CHECK_EMAIL = '{#COMMENT_JS_CHECK_EMAIL#}'; + var COMMENT_JS_FILL = '{#COMMENT_JS_FILL#}'; + var COMMENT_JS_ADD_COMMENT_TEXT = '{#COMMENT_JS_ADD_COMMENT_TEXT#}'; + var COMMENT_ICON_SHOW = '{#COMMENT_ICON_SHOW#}'; + var COMMENT_ICON_HIDE = '{#COMMENT_ICON_HIDE#}'; + var COMMENT_MOD_DEL_DEL = '{#COMMENT_MOD_DEL_DEL#}'; + var COMMENT_JS_THX = '{#COMMENT_JS_THX#}'; + var COMMENT_JS_VOTE_A = '{#COMMENT_JS_VOTE_A#}'; + var COMMENT_JS_VOTE_B = '{#COMMENT_JS_VOTE_B#}'; + var COMMENT_JS_VOTE_C = '{#COMMENT_JS_VOTE_C#}'; + var COMMENT_JS_VOTE_ERR = '{#COMMENT_JS_VOTE_ERR#}'; + var COMMENT_JS_VOTE_ERR_A = '{#COMMENT_JS_VOTE_ERR_A#}'; + var COMMENT_JS_DELDEL_CONFIRM = '{#COMMENT_JS_DELDEL_CONFIRM#}'; + var COMMENT_JS_RATING_ST_EDIT = '{#COMMENT_JS_RATING_ST_EDIT#}'; + var COMMENT_JS_RATING_ST_EDIT_A = '{#COMMENT_JS_RATING_ST_EDIT_A#}'; + var COMMENT_JS_LOADED_FILES = '{#COMMENT_JS_LOADED_FILES#}'; + var COMMENT_JS_ADD_NEW_FILES = '{#COMMENT_JS_ADD_NEW_FILES#}'; + var COMMENT_JS_EDIT_BUT_SAVE = '{#COMMENT_JS_EDIT_BUT_SAVE#}'; + var COMMENT_JS_EDIT_BUT_CANCEL = '{#COMMENT_JS_EDIT_BUT_CANCEL#}'; + var COMMENT_JS_EDIT_BUT_LEFT = '{#COMMENT_JS_EDIT_BUT_LEFT#}'; + var COMMENT_JS_LIMIT_AB = '{#COMMENT_JS_LIMIT_AB#}'; + var COMMENT_JS_LIMIT_ABC = '{#COMMENT_JS_LIMIT_ABC#}'; + var COMMENT_JS_LIMIT_ABCD = '{#COMMENT_JS_LIMIT_ABCD#}'; + var COMMENT_JS_LIMIT_ABCDE = '{#COMMENT_JS_LIMIT_ABCDE#}'; + var COMMENT_JS_LOADS_F = '{#COMMENT_JS_LOADS_F#}'; + var COMMENT_JS_LOADS_R = '{#COMMENT_JS_LOADS_R#}'; + var COMMENT_JS_SEC_CODE_WRONG = '{#COMMENT_JS_SEC_CODE_WRONG#}'; + var COMMENT_JS_ERR_SRV = '{#COMMENT_JS_ERR_SRV#}'; + var REQ_F1 = '{$comment_req_f1}'; var REQ_F2 = '{$comment_req_f2}';