diff --git a/admin/lang/ru/settings.txt b/admin/lang/ru/settings.txt index 861bb66..597d910 100644 --- a/admin/lang/ru/settings.txt +++ b/admin/lang/ru/settings.txt @@ -197,3 +197,14 @@ SETTINGS_LANG_FLAG = "Флаг" SETTINGS_SET_LANG_DEF_ERR_A = "Ошибка: Не найдены языковые файлы!
Папка admin/lang/" SETTINGS_SET_LANG_DEF_ERR_B = "/ отсутствует или пуста." SETTINGS_SET_LANG_DEF_ERR_C = "Отмена действия" + + +SETTINGS_LANG_DELETE_HINT = "Удалить язык" +SETTINGS_LANG_DELETE_CONFIRM = "Вы уверены, что хотите полностью и безвозвратно удалить язык" +SETTINGS_LANG_DELETE_SUCCESS = "Язык успешно удален из системы" +SETTINGS_LANG_DELETE_ERROR = "Не удалось удалить язык. Возможно, он защищен или произошел сбой БД." +SETTINGS_JS_FILL_ERR = "Заполните все поля и выберите файл флага" +SETTINGS_JS_FILL_HEAD = "Ошибка заполнения" +SETTINGS_JS_NOTIFY = "Уведомление" +SETTINGS_JS_SERVER_ERR = "Ошибка сервера при сохранении" +SETTINGS_JS_WIN_CLOSE = "Закрыть окно" \ No newline at end of file diff --git a/admin/settings.php b/admin/settings.php index f2c374d..2d201d9 100644 --- a/admin/settings.php +++ b/admin/settings.php @@ -68,7 +68,7 @@ } break; -case 'language': + case 'language': if(check_permission_acp('gen_settings_languages')) { if (isset($_REQUEST['func'])) @@ -106,8 +106,11 @@ case 'language': case 'save': $AVE_Settings->settingsLanguageEditSave(); exit; + + case 'deletelang': + $AVE_Settings->settingsLanguageDelete(); + exit; - // !!! ДОБАВЛЕНО !!! case 'editlang': $AVE_Settings->settingsLanguageEdit(); break; diff --git a/admin/templates/settings/settings_lang.tpl b/admin/templates/settings/settings_lang.tpl index 8cb3c1b..34d45c4 100644 --- a/admin/templates/settings/settings_lang.tpl +++ b/admin/templates/settings/settings_lang.tpl @@ -2,41 +2,41 @@
- {#SETTINGS_LANG_TITLE#} + {#SETTINGS_LANG_TITLE#}
-
- {if check_permission('cache_clear')}{#MAIN_STAT_CLEAR_CACHE_FULL#} {/if} - {if check_permission('cache_thumb')}{#MAIN_STAT_CLEAR_THUMB#} {/if} - {if check_permission('document_revisions')}{#MAIN_STAT_CLEAR_REV#} {/if} - {if check_permission('gen_settings')}{#MAIN_STAT_CLEAR_COUNT#} {/if} - {if check_permission('gen_settings_robots')}{#SETTINGS_FILE_ROBOTS#} {/if} - {if check_permission('gen_settings_fcustom')}{#SETTINGS_FILE_CUSTOM#}{/if} -
+
+ {if check_permission('cache_clear')}{#MAIN_STAT_CLEAR_CACHE_FULL#} {/if} + {if check_permission('cache_thumb')}{#MAIN_STAT_CLEAR_THUMB#} {/if} + {if check_permission('document_revisions')}{#MAIN_STAT_CLEAR_REV#} {/if} + {if check_permission('gen_settings')}{#MAIN_STAT_CLEAR_COUNT#} {/if} + {if check_permission('gen_settings_robots')}{#SETTINGS_FILE_ROBOTS#} {/if} + {if check_permission('gen_settings_fcustom')}{#SETTINGS_FILE_CUSTOM#}{/if} +
- + @@ -49,75 +49,165 @@ + - - - - - - - - + + + + + + + + - {foreach from=$language item=lang name=l} - - - - - - - - - - + {foreach from=$language item=lang name=l} + + + + + + + + + - - {/foreach} + + + + + + + + {/foreach}
{#SETTINGS_LANG_ID#}{#SETTINGS_LANG_FLAG#}{#SETTINGS_LANG_SYSTEM#}{#SETTINGS_LANG_PREFIX#}{#SETTINGS_LANG_NAME#}{#SETTINGS_LANG_DEFAULT#} {#SETTINGS_LANG_ACTION#}{#SETTINGS_LANG_ID#}{#SETTINGS_LANG_FLAG#}{#SETTINGS_LANG_SYSTEM#}{#SETTINGS_LANG_PREFIX#}{#SETTINGS_LANG_NAME#}{#SETTINGS_LANG_DEFAULT#} {#SETTINGS_LANG_ACTION#}
{$lang.Id}{$lang.lang_key}{$lang.lang_alias_pref}{$lang.lang_name}{if $lang.lang_default==1}{/if} - - - {if $lang.lang_default!=1} - {if $lang.lang_status==1} - - {else} - - {/if} - {else} - - {/if} -
{$lang.Id}{$lang.lang_key}{$lang.lang_alias_pref}{$lang.lang_name}{if $lang.lang_default==1}{/if} - {if isset($lang.lang_default) && $lang.lang_default != 1 && $lang.lang_status == 1} - - {else} - - {/if} + +
+ {if $lang.lang_default!=1} + {if $lang.lang_status==1} + + {else} + + {/if} + {else} + + {/if} + + {if isset($lang.lang_default) && $lang.lang_default != 1 && $lang.lang_status == 1} + + {else} + + {/if} + + {if $lang.lang_default != 1} + + {else} + + {/if} +
- + + {#SETTINGS_LANG_ADD#} +
{include file="$codemirror_connect"} \ No newline at end of file diff --git a/admin/templates/settings/settings_lang_edit.tpl b/admin/templates/settings/settings_lang_edit.tpl index 389906b..792aebb 100644 --- a/admin/templates/settings/settings_lang_edit.tpl +++ b/admin/templates/settings/settings_lang_edit.tpl @@ -3,72 +3,140 @@
{#SETTINGS_LANG_EDIT#}
-
- {#SETTINGS_LANG_TITLE#} -
+
+ {#SETTINGS_LANG_TITLE#} +
-
+ -
- - - - - - - - - - - - - - - - - +
+
{#SETTINGS_LANG_SYSTEM#}{#SETTINGS_LANG_PREFIX#}{#SETTINGS_LANG_NAME#}
+ + + + - + + + + + + + + + + + - - - - - - - -
- {#SETTINGS_LANG_FLAG#}: - - {* Если это режим редактирования, показываем текущий флаг *} - {if !empty($items->lang_key)} - - {$items->lang_name|default:''} - - {/if} - {#SETTINGS_LANG_SYSTEM#}{#SETTINGS_LANG_PREFIX#}{#SETTINGS_LANG_NAME#}
-
- -
-
-
- - {if ($smarty.request.Id|default:'')==''} - - {else} - - {/if} -
-
-
-
\ No newline at end of file + + + {#SETTINGS_LANG_FLAG#}: + {if !empty($items->lang_key)} + + {$items->lang_name|default:''} + + {/if} +
+ +
+ + + + + + + + + {if ($smarty.request.Id|default:'')==''}{#SETTINGS_LANG_ADD#}{else}{#SETTINGS_LANG_SAVE#}{/if} + + + + {#SETTINGS_JS_WIN_CLOSE#} + + + + + +
+ + + + \ No newline at end of file diff --git a/class/class.settings.php b/class/class.settings.php index e7d078a..71f2b00 100644 --- a/class/class.settings.php +++ b/class/class.settings.php @@ -680,10 +680,56 @@ function settingsLanguageEditSave() // 3. Очистка кэша и закрытие окна $AVE_DB->clearCache('langs'); - echo ""; + header('Content-Type: application/json'); + echo json_encode(['status' => 'success']); + exit; } +/** + * Метод удаления языка + */ +function settingsLanguageDelete() +{ + global $AVE_DB; + + while (ob_get_level()) { + ob_end_clean(); + } + + $lang_id = (int)($_REQUEST['id'] ?? $_REQUEST['Id'] ?? 0); + + header('Content-Type: application/json; charset=utf-8'); + + if ($lang_id <= 0) { + die(json_encode(['status' => 'error', 'message' => 'ID не передан'])); + } + + $result = $AVE_DB->Query(" + SELECT lang_default, lang_key + FROM " . PREFIX . "_settings_lang + WHERE Id = '" . $lang_id . "' + "); + + if ($result && $row = $result->FetchRow()) { + if ($row->lang_default == 1) { + die(json_encode(['status' => 'error', 'message' => 'Нельзя удалить основной язык'])); + } + + $AVE_DB->Query("DELETE FROM " . PREFIX . "_settings_lang WHERE Id = '" . $lang_id . "'"); + + $flag = BASE_DIR . '/lib/flags/' . $row->lang_key . '.png'; + if (file_exists($flag)) @unlink($flag); + + $AVE_DB->clearCache('langs'); + + die(json_encode(['status' => 'success'])); + } else { + die(json_encode(['status' => 'error', 'message' => 'Язык не найден'])); + } +} + + function settingsPaginationsList() { global $AVE_DB, $AVE_Template;