/* ==================================================================== ОБЕРТКА ДЛЯ ОЖИДАНИЯ JQUERY ==================================================================== */ (function waitForJQuery() { if (typeof jQuery === 'undefined') { // jQuery еще не загружен. Ждем 10 мс и проверяем снова. setTimeout(waitForJQuery, 10); } else { // JQuery загружен, можно запускать основной код. (function($){ // ==================================================================== // КОРРЕКЦИЯ: ПРИНУДИТЕЛЬНАЯ ФИКСАЦИЯ HTTPS (если требуется) // ==================================================================== if (typeof aveabspath !== 'undefined') { // ПРЕДУПРЕЖДЕНИЕ: Если aveabspath должен быть динамическим, // удалите эту строку. // aveabspath = 'https://bag.local/'; } // ==================================================================== /* Limit symbols */ (function($){ $.fn.extend({ limit: function(limit, element){ var interval, f; var self = $(this); function substring(){ var val = $(self).val(); var length = val.length; if(length > limit){ $(self).val($(self).val().substring(0,limit)); length = limit; } if(typeof element !== 'undefined'){ if($(element).html() != limit - length){ $(element).html((limit - length <= 0) ? '0' : limit - length); } } } $(this).focus(function(){ interval = window.setInterval(substring, 100); }); $(this).blur(function(){ clearInterval(interval); substring(); }); substring(); } }) })(jQuery); function getCaptha(){ var now = new Date(); $('#captcha img').attr('src', aveabspath + 'inc/captcha.php?cd=' + now.getTime()); } function cAction(obj, action){ var cid; // --- Логика для действий с документом (open/close) --- if (action === 'open' || action === 'close') { cid = DOC_ID; } else { // 1. Пытаемся найти ссылку и взять ID из атрибута rel var $link = $(obj).closest('a.mod_comment_answer'); cid = $link.attr('rel'); // 2. Если rel не найден, берем ID из родительского блока if (typeof cid === 'undefined' || cid === false || cid === '') { cid = $(obj).parents('.mod_comment_box').attr('id'); } } if (typeof cid === 'undefined' || cid === false || cid === '') { console.error("Comment ID not found for action: " + action); return; } if (action === 'answer'){ $('#parent_id').val(cid); // Перемещаем форму и показываем ее $('#mod_comment_new').insertBefore('#end' + cid).show(); return; } // Действия администратора if (UGROUP == 1){ $.get(aveabspath + 'index.php', { module: 'comment', action: action, docid: DOC_ID, Id: cid }, function(){ if (action === 'delete'){ // Удаляем блок комментария $(obj).parents('.mod_comment_comment').eq(0).remove(); } if (action === 'open'){ // 1. Меняем ID и текст var $openButton = $('#mod_comment_open'); $openButton.attr('id', 'mod_comment_close').html(' ' + COMMENT_SITE_CLOSE); // 2. МЕНЯЕМ КЛАССЫ СТИЛЕЙ $openButton.removeClass('btn-outline-success').addClass('btn-outline-danger'); } if (action === 'close'){ // 1. Меняем ID и текст var $closeButton = $('#mod_comment_close'); $closeButton.attr('id', 'mod_comment_open').html(' ' + COMMENT_SITE_OPEN); // 2. МЕНЯЕМ КЛАССЫ СТИЛЕЙ $closeButton.removeClass('btn-outline-danger').addClass('btn-outline-success'); } // Динамическая смена иконки замка для отдельного комментария if (action === 'unlock'){ $(obj).removeClass('mod_comment_unlock text-success') .addClass('mod_comment_lock text-dark') .attr('title', COMMENT_LOCK_LINK) .find('i') .removeClass('bi-unlock-fill').addClass('bi-lock-fill'); } if (action === 'lock'){ $(obj).removeClass('mod_comment_lock text-dark') .addClass('mod_comment_unlock text-success') .attr('title', COMMENT_UNLOCK_LINK) .find('i') .removeClass('bi-lock-fill').addClass('bi-unlock-fill'); } }); } } function validate(formData, jqForm, options){ $('.alert').remove(); var form = jqForm ? jqForm[0] : $('#mod_comment_new form')[0]; // Проверка имени if (form.comment_author_name && !form.comment_author_name.value){ alert(COMMENT_ERROR_AUTHOR); $(form.comment_author_name).focus(); return false; } // Проверка email if (form.comment_author_email && !form.comment_author_email.value){ alert(COMMENT_ERROR_EMAIL); $(form.comment_author_email).focus(); return false; } // --- НОВОЕ: Проверка динамических полей --- // Проверка Поля №1 (website) if (typeof REQ_F1 !== 'undefined' && REQ_F1 == '1') { if (form.comment_author_website && !form.comment_author_website.value) { alert("Пожалуйста, заполните поле: " + NAME_F1); $(form.comment_author_website).focus(); return false; } } // Проверка Поля №2 (city) if (typeof REQ_F2 !== 'undefined' && REQ_F2 == '1') { if (form.comment_author_city && !form.comment_author_city.value) { alert("Пожалуйста, заполните поле: " + NAME_F2); $(form.comment_author_city).focus(); return false; } } // ------------------------------------------ // Проверка текста if (!form.comment_text || !form.comment_text.value){ alert(COMMENT_ERROR_TEXT); if (form.comment_text) $(form.comment_text).focus(); return false; } // Проверка капчи (если требуется) if (IS_IM && form.securecode && !form.securecode.value){ alert(COMMENT_ERROR_CAPTCHA); $(form.securecode).focus(); return false; } return true; } function setClickable(){ // Отвязываем предыдущие обработчики, чтобы избежать множественных вызовов $('.editable_text').off('click'); $('.editable_text').click(function(){ var $this = $(this); var cid = $this.parents('.mod_comment_box').attr('id'); var revert = $this.html(); var textarea = '
'; var charsLeft = '' + COMMENT_CHARS_LEFT + '
'; var buttonSave = ' '; var buttonReset = ''; $this.after( '' + COMMENT_CHARS_LEFT + '
'; var buttonSave = ' '; var buttonReset = ''; commentTextBlock.after( '