diff --git a/README.md b/README.md
index d74c3be..85d5eed 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,6 @@
### editcaptcha
-## Модуль Настройки captcha
-
-
+## Модуль Настройки captcha v 3.31
### Модуль позволяет настроить визуальный вывод captcha.
@@ -12,6 +10,8 @@
### Changelog:
+06.03.2026 - Адаптация для версии ave.cms 3.31 ALT, добавлены настройки фона.
+
02.09.2019 - Адаптация для версии ave.cms 3.26
12.10.2016 - начальная версия 1.0
\ No newline at end of file
diff --git a/class/editcaptcha.php b/class/editcaptcha.php
index e0935b9..6071388 100644
--- a/class/editcaptcha.php
+++ b/class/editcaptcha.php
@@ -1,19 +1,96 @@
-
+assign('captchas',$captcha);
- $AVE_Template->assign('content', $AVE_Template->fetch($this->tpl_dir . 'editcaptcha.tpl'));
- }
-}
-?>
+ public $tpl_dir;
+
+ private function checkAccess()
+ {
+ return (defined('ACP') && check_permission('modules'));
+ }
+
+ public function editCaptcha()
+ {
+ global $AVE_Template;
+ $config_file = BASE_DIR . '/lib/kcaptcha/kcaptcha_config.php';
+
+ // Дефолты
+ $allowed_symbols = "23456789abcdegikpqsvxyz";
+ $length = "4,6";
+ $fluctuation_amplitude = 8;
+ $white_noise_density = "1/30";
+ $black_noise_density = "1/30";
+ $no_spaces = true;
+ $background_color = array(255, 255, 255);
+
+ if (file_exists($config_file)) {
+ include($config_file);
+ }
+
+ // Преобразуем массив RGB в HEX для инпута в админке
+ $bg_hex = sprintf("#%02x%02x%02x", $background_color[0], $background_color[1], $background_color[2]);
+
+ $AVE_Template->assign([
+ 'allow_symbols' => $allowed_symbols,
+ 'count_symbols' => $length,
+ 'fluct_amplit' => $fluctuation_amplitude,
+ 'white_noise' => $white_noise_density,
+ 'black_noise' => $black_noise_density,
+ 'no_spaces' => ($no_spaces == true) ? 'true' : 'false',
+ 'bg_color' => $bg_hex
+ ]);
+
+ $AVE_Template->assign('content', $AVE_Template->fetch($this->tpl_dir . 'editcaptcha.tpl'));
+ }
+
+ public function saveCaptcha()
+ {
+ if (!$this->checkAccess()) exit("Access Denied");
+
+ $a = preg_replace('/[^a-z0-9]/i', '', $_POST['a'] ?? '');
+ $b = preg_replace('/[^0-9,]/', '', $_POST['b'] ?? '4,6');
+ $c = (int)($_POST['c'] ?? 8);
+ $d = strip_tags($_POST['d'] ?? '0');
+ $e = strip_tags($_POST['e'] ?? '0');
+ $f = ($_POST['f'] === 'true') ? 'true' : 'false';
+
+ // Обработка цвета фона (из #ffffff в array(255,255,255))
+ $hex = $_POST['g'] ?? '#ffffff';
+ list($r, $g, $b_rgb) = sscanf($hex, "#%02x%02x%02x");
+
+ $length_val = (strpos($b, ',') !== false) ? "mt_rand({$b})" : (int)$b;
+
+ $text = "";
+
+ $file_path = BASE_DIR . "/lib/kcaptcha/kcaptcha_config.php";
+ if (is_writable($file_path) || @chmod($file_path, 0666)) {
+ file_put_contents($file_path, $text);
+ echo "success";
+ } else {
+ echo "Ошибка прав доступа к файлу конфига!";
+ }
+ exit;
+ }
+}
\ No newline at end of file
diff --git a/info.php b/info.php
index 9c5c5e6..ea7b0fe 100644
--- a/info.php
+++ b/info.php
@@ -4,7 +4,7 @@
$module = array(
'ModuleSysName' => 'editcaptcha',
- 'ModuleVersion' => '1.26.0',
+ 'ModuleVersion' => '3.31',
'ModuleAutor' => 'Repellent',
'ModuleCopyright' => '© 2007-' . date('Y') . ' AVE.cms',
'ModuleStatus' => 1,
diff --git a/lang/ru.txt b/lang/ru.txt
index cff98a2..ffe917d 100644
--- a/lang/ru.txt
+++ b/lang/ru.txt
@@ -1,6 +1,6 @@
[name]
-MODULE_NAME = "Настройки captcha"
-MODULE_DESCRIPTION = "Модуль позволяет настроить визуальный вывод captcha"
+MODULE_NAME = "Настройки captcha"
+MODULE_DESCRIPTION = "Модуль позволяет настроить визуальный вывод captcha"
[admin]
mod_name = "Управление модулем Настройки captcha"
@@ -8,17 +8,21 @@ e_cap_title = "Настройки captcha"
e_cap_infomod = "В данном разделе Вы можете настроить визуальный вывод captcha."
e_cap_infomod1 = "Перед сохранением, обязательно заполните все поля !"
e_cap_infomod2 = "Настройки captcha успешно изменены. Вы можете продолжать ими пользоваться. Для просмотра созданных настроек - нажмите Обновить код captcha"
-e_cap_on = "captcha включена"
-e_cap_of = "captcha выключена"
-e_cap_on_info = "Функция ' Использовать captcha при входе в панель администратора включена. '"
-e_cap_of_info = "Внимание: Функция ' Использовать captcha при входе в панель администратора выключена! '
Для включения captcha перейдите в раздел ' Системные настройки '"
-e_cap_ref = "Обновить код
captcha"
-e_cap_real = "Просмотр настроек
captcha"
+e_cap_on = "captcha включена"
+e_cap_of = "captcha выключена"
+e_cap_on_info = "Функция ' Использовать captcha при входе в панель администратора включена. '"
+e_cap_of_info = "Внимание: Функция ' Использовать captcha при входе в панель администратора выключена! '
Для включения captcha перейдите в раздел ' Системные настройки '"
+e_cap_ref = "Обновить код
captcha"
+e_cap_real = "Просмотр настроек
captcha"
e_cap_allow_symbol = "Разрешенные символы (?)
23456789abcdegikpqsvxyz"
e_cap_count_symbol = "Количество (?)
символов"
e_cap_fluc_amplit = "Амплитуда (?)
изгиба ~"
e_cap_white_noise = "Белый шум (?)
выкл=0 вкл=1/30"
e_cap_black_noise = "Черный шум (?)
выкл=0 вкл=1/30"
e_cap_spaces_symb = "Пробелы (?)
да=false нет=true"
+e_cap_bg_color = "Цвет фона"
e_cap_actions = "Действия"
-e_cap_submit = "Применить"
\ No newline at end of file
+e_cap_submit = "Применить"
+e_cap_field = "Заполните все поля!"
+e_cap_err = "Ошибка:"
+e_cap_err_crit = "Критическая ошибка сервера:"
\ No newline at end of file
diff --git a/module.php b/module.php
index 8a9af47..39cf29d 100644
--- a/module.php
+++ b/module.php
@@ -2,40 +2,35 @@
/**
* AVE.cms - Модуль Настройки captcha
- * @autor Repellent
+ * @author Repellent
* @package AVE.cms
- * @subpackage editcaptcha
- * @filesource
*/
if(!defined('BASE_DIR')) exit;
-
/**
* Админка
*/
if (defined('ACP') && (isset($_REQUEST['moduleaction'])))
{
- // класс
- require_once(BASE_DIR . '/modules/editcaptcha/class/editcaptcha.php');
+ require_once(BASE_DIR . '/modules/editcaptcha/class/editcaptcha.php');
- $captcha = new ModuleEditcaptcha;
+ $captcha = new ModuleEditcaptcha;
+ $captcha->tpl_dir = BASE_DIR . '/modules/editcaptcha/templates/';
- // папка с шаблонами
- $captcha->tpl_dir = BASE_DIR . '/modules/editcaptcha/templates/';
+ // Загрузка языкового файла
+ $AVE_Template->config_load(BASE_DIR . '/modules/editcaptcha/lang/' . $_SESSION['admin_language'] . '.txt', 'admin');
+ $AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
- // ленги
- $AVE_Template->config_load(BASE_DIR . '/modules/editcaptcha/lang/' . $_SESSION['admin_language'] . '.txt', 'admin');
- $AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
+ switch($_REQUEST['moduleaction'])
+ {
+ case '1': // Основная страница настроек
+ $captcha->editCaptcha();
+ break;
-
-
- switch($_REQUEST['moduleaction'])
- {
- case '1':
- $captcha->editCaptcha();
- break;
-
- }
+ case 'save': // AJAX-сохранение настроек
+ $captcha->saveCaptcha();
+ break;
+ }
}
?>
\ No newline at end of file
diff --git a/res.php b/res.php
deleted file mode 100644
index 9d5d2bd..0000000
--- a/res.php
+++ /dev/null
@@ -1,43 +0,0 @@
-';
-chmod(BASE_DIR . "/lib/kcaptcha/kcaptcha_config.php", 0755);
-$fp = fopen(BASE_DIR . "/lib/kcaptcha/kcaptcha_config.php", "w");
-fwrite($fp, $text);
-fclose($fp);
-?>
\ No newline at end of file
diff --git a/templates/editcaptcha.tpl b/templates/editcaptcha.tpl
index b2c6402..e8a62e7 100644
--- a/templates/editcaptcha.tpl
+++ b/templates/editcaptcha.tpl
@@ -1,132 +1,171 @@
-
{#mod_name#}
+ {#mod_name#}
-