diff --git a/class/comment.php b/class/comment.php index 29f49c1..6588bf0 100644 --- a/class/comment.php +++ b/class/comment.php @@ -1245,6 +1245,9 @@ function commentAdminSettingsEdit($tpl_dir) // НОВОЕ: Настройка разрешения загрузки файлов $post_allow_files = $_POST['comment_allow_files'] ?? 0; + + // ДОБАВЛЕНО: Разрешение анонимам загружать изображения + $post_allow_files_anon = $_POST['comment_allow_files_anon'] ?? 0; // НОВОЕ: Тип рейтинга (0 - звезды, 1 - лайки) $post_rating_type = $_POST['comment_rating_type'] ?? 0; @@ -1286,6 +1289,7 @@ function commentAdminSettingsEdit($tpl_dir) comment_use_page_nav = '" . (int)$post_use_page_nav . "', comment_page_nav_count = '" . (int)$post_page_nav_count . "', comment_allow_files = '" . (int)$post_allow_files . "', + comment_allow_files_anon = '" . (int)$post_allow_files_anon . "', comment_rating_type = '" . (int)$post_rating_type . "', comment_show_user_rating = '" . (int)$post_show_user_rating . "', comment_rating_anon_vote = '" . (int)$post_rating_anon_vote . "', diff --git a/js/comment.js b/js/comment.js index 302b397..22157db 100644 --- a/js/comment.js +++ b/js/comment.js @@ -317,6 +317,12 @@ } } + // ВНЕДРЕНИЕ: Проверка прав на загрузку изображения при редактировании + var fileInputHtml = ''; + if (typeof UGROUP !== 'undefined' && (UGROUP != '2' || (typeof ALLOW_FILES_ANON !== 'undefined' && ALLOW_FILES_ANON == '1'))) { + fileInputHtml = ``; + } + var editHtml = `
@@ -324,7 +330,7 @@ ${starsEditBlock} ${currentImg ? `
` : ''} - + ${fileInputHtml}
@@ -355,8 +361,13 @@ } fd.append('delete_image', $('#del_img_' + cid).is(':checked') ? 1 : 0); - var file = $('#new_file_' + cid)[0].files[0]; - if (file) fd.append('comment_image', file); + + // Проверяем наличие инпута перед попыткой чтения файла + var fileInput = $('#new_file_' + cid); + if (fileInput.length) { + var file = fileInput[0].files[0]; + if (file) fd.append('comment_image', file); + } $.ajax({ url: aveabspath + 'index.php?ajax=1', diff --git a/sql.php b/sql.php index c4c6e68..4dbb745 100644 --- a/sql.php +++ b/sql.php @@ -6,7 +6,8 @@ * Обновленная структура с поддержкой выбора типа рейтинга (звезды/лайки), * идентификации анонимных пользователей, загрузки файлов и защиты по IP. * Добавлена поддержка "Авторских звезд" (user_rating) и настройки их отображения. - * ДОБАВЛЕНО: Настройка разрешения голосования для анонимов и выставления ими звезд. + * ДОБАВЛЕНО: Настройка разрешения голосования для анонимов, выставления ими звезд + * и ПРАВА НА ЗАГРУЗКУ ИЗОБРАЖЕНИЙ ДЛЯ АНОНИМОВ. */ $module_sql_install = array(); @@ -40,8 +41,9 @@ $module_sql_install[] = "CREATE TABLE `%%PRFX%%_module_comments` ( `comment_file_max_size` int(10) NOT NULL default '2048', `comment_rating_type` tinyint(1) NOT NULL default '0', /* 0 - звезды, 1 - лайки, 2 - выключен */ `comment_show_user_rating` tinyint(1) NOT NULL default '0', /* ВКЛ/ВЫКЛ авторских звезд */ - `comment_rating_anon_vote` tinyint(1) NOT NULL default '0', /* РАЗРЕШИТЬ АНОНИМАМ ГОЛОСОВАТЬ (лайк/дизлайк) */ - `comment_rating_anon_set` tinyint(1) NOT NULL default '0', /* РАЗРЕШИТЬ АНОНИМАМ СТАВИТЬ ЗВЕЗДЫ ПРИ СОЗДАНИИ */ + `comment_rating_anon_vote` tinyint(1) NOT NULL default '0', /* РАЗРЕШИТЬ АНОНИМАМ ГОЛОСОВАТЬ */ + `comment_rating_anon_set` tinyint(1) NOT NULL default '0', /* РАЗРЕШИТЬ АНОНИМАМ СТАВИТЬ ЗВЕЗДЫ */ + `comment_allow_files_anon` tinyint(1) NOT NULL default '0', /* РАЗРЕШИТЬ АНОНИМАМ ЗАГРУЖАТЬ ФАЙЛЫ */ PRIMARY KEY (`Id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; @@ -88,8 +90,8 @@ $module_sql_install[] = "CREATE TABLE `%%PRFX%%_module_comment_votes` ( KEY `remote_addr` (`remote_addr`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; -/* Настройки по умолчанию (добавлен еще один 0 в конце для comment_rating_anon_set) */ -$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_comments` VALUES (1, 1000, '1,3', '1,2,3,4', '0', '1', '1' , '0', '', 1, 0, '', 1, 0, '', 0, 2048, 0, 1, 0, 0);"; +/* Настройки по умолчанию (добавлен 0 для comment_allow_files_anon в конце) */ +$module_sql_install[] = "INSERT INTO `%%PRFX%%_module_comments` VALUES (1, 1000, '1,3', '1,2,3,4', '0', '1', '1' , '0', '', 1, 0, '', 1, 0, '', 0, 2048, 0, 1, 0, 0, 0);"; // ================================================================================= // 2. ОБНОВЛЕНИЕ МОДУЛЯ (ALTER TABLE) @@ -105,11 +107,12 @@ $module_sql_update[] = " LIMIT 1; "; -/* Добавляем настройки рейтинга в таблицу конфигурации */ +/* Добавляем настройки рейтинга и файлов в таблицу конфигурации */ $module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_rating_type` TINYINT(1) NOT NULL DEFAULT '0';"; $module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_show_user_rating` TINYINT(1) NOT NULL DEFAULT '0';"; $module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_rating_anon_vote` TINYINT(1) NOT NULL DEFAULT '0';"; $module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_rating_anon_set` TINYINT(1) NOT NULL DEFAULT '0';"; +$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comments` ADD COLUMN IF NOT EXISTS `comment_allow_files_anon` TINYINT(1) NOT NULL DEFAULT '0';"; /* Добавляем поля для оценки и голосования в таблицу инфо */ $module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_comment_info` ADD COLUMN IF NOT EXISTS `user_rating` TINYINT(1) NOT NULL DEFAULT '0' AFTER `comment_file`;"; diff --git a/templates/admin_settings.tpl b/templates/admin_settings.tpl index db489d0..ce60eda 100644 --- a/templates/admin_settings.tpl +++ b/templates/admin_settings.tpl @@ -166,13 +166,18 @@ Разрешить загрузку фото: - - - (позволяет прикреплять изображения к комментариям) + + - Папка для хранения: + Права на загрузку изображений: - /uploads/comments/ + diff --git a/templates/comments_tree.tpl b/templates/comments_tree.tpl index 828263e..e7d2d8a 100644 --- a/templates/comments_tree.tpl +++ b/templates/comments_tree.tpl @@ -155,23 +155,26 @@ {* Блок загрузки изображения *} {if $comment_allow_files == 1} -
- - - - - {* Контейнер для превью *} -
- Предпросмотр - + {* ПРОВЕРКА: Разрешено ли текущему пользователю загружать файлы *} + {if $smarty.session.user_group != '2' || $comment_allow_files_anon == 1} +
+ + + + + {* Контейнер для превью *} +
+ Предпросмотр + +
+
-
-
+ {/if} {/if} {* CAPTCHA *} @@ -278,6 +281,8 @@ // Глобальная переменная для JS var SHOW_USER_RATING = '{$comment_show_user_rating|default:0}'; var RATING_ANON_SET = '{$comment_rating_anon_set|default:0}'; + // ДОБАВЛЕНО: Настройка прав на загрузку для JS + var ALLOW_FILES_ANON = '{$comment_allow_files_anon|default:0}';