From 81b80091be74b786aca7d673f869ca62b7b79c36 Mon Sep 17 00:00:00 2001 From: Serhii Korneliuk Date: Sun, 23 Oct 2022 19:21:11 +0300 Subject: [PATCH] [ADD] Template Variables functions. --- lang/en/global.php | 100 ++-- lang/ru/global.php | 100 ++-- lang/uk/global.php | 98 ++-- src/Controllers/sLangController.php | 549 ++++++++++--------- views/index.blade.php | 1 - views/partials/tvResource.blade.php | 27 + views/resourceGeneralTab.blade.php | 360 ++++++------ views/resourceSettingsTab.blade.php | 23 +- views/resourceTemplateVariablesTab.blade.php | 13 + views/tabs.blade.php | 2 +- 10 files changed, 687 insertions(+), 586 deletions(-) create mode 100644 views/partials/tvResource.blade.php create mode 100644 views/resourceTemplateVariablesTab.blade.php diff --git a/lang/en/global.php b/lang/en/global.php index f663564..91e7526 100644 --- a/lang/en/global.php +++ b/lang/en/global.php @@ -1,73 +1,75 @@ 'Multilanguage', - 'slang_icon' => 'fa fa-globe-europe', - 'slang_desc' => 'Managing site language settings', + 'add_translation' => 'Add translation', + 'auto_translate' => 'Auto-translation', + 'copyright' => 'Development', 'description' => 'sLang allows you to translate static texts (pop-up messages, button names) as well as content throughout the site.', 'dictionary' => 'Dictionary', - 'settings' => 'Settings', - 'lang_def' => 'Default language', - 'select_lang' => 'Choose language', - 'field' => 'Field', 'do_not_empty' => 'should not be empty', - 'use_url' => 'Use in URL', - 'languages' => 'List of site languages', - 'must_contain' => 'and must contain the default language', - 'must_contain_lang' => 'and must contain the Default Language as well as values from the Language List', - 'lang_front' => 'List of frontend languages', 'example_usage' => 'Use the construct @lang(\'phrase\') to embed translation phrases into a Blade template. for example @lang(\'Hallo World!\')', - 'synchronize' => 'Synchronize', - 'synchronize_help' => 'Synchronize translations of templates and site database', - 'auto_translate' => 'Auto-translation', - 'seotitle' => 'SEO title document', - 'seodescription' => 'SEO description document', - 'copyright' => 'Development', - 'add_translation' => 'Add translation', - 'menu_main' => 'Menu Main', - 'menu_main_help' => 'The resource is available for display in the main menu of the site.', - 'menu_footer' => 'Menu Footer', - 'menu_footer_help' => 'The resource is available for display in the basement menu.', - 'lang_en' => 'English', - 'lang_uk' => 'Ukrainian', - 'lang_ru' => 'Russian', + 'field' => 'Field', 'lang_ab' => 'Abkhazian', 'lang_az' => 'Azerbaijani', 'lang_be' => 'Belarusian', 'lang_bg' => 'Bulgarian', - 'lang_hu' => 'Hungarian', - 'lang_nl' => 'Dutch', - 'lang_el' => 'Greek', + 'lang_cs' => 'Czech', 'lang_da' => 'Danish', + 'lang_de' => 'German', + 'lang_def' => 'Default language', + 'lang_el' => 'Greek', + 'lang_en' => 'English', + 'lang_es' => 'Spanish', + 'lang_et' => 'Estonian', + 'lang_fi' => 'Finnish', + 'lang_fr' => 'French', + 'lang_front' => 'List of frontend languages', 'lang_ga' => 'Irish', + 'lang_hr' => 'Croatian', + 'lang_hu' => 'Hungarian', + 'lang_id' => 'Indonesian', 'lang_is' => 'Icelandic', - 'lang_es' => 'Spanish', 'lang_it' => 'Italian', - 'lang_lv' => 'Latvian', + 'lang_ja' => 'Japanese', + 'lang_km' => 'Khmer', + 'lang_ko' => 'Korean', 'lang_lt' => 'Lithuanian', - 'lang_de' => 'German', + 'lang_lv' => 'Latvian', + 'lang_ms' => 'Malay', + 'lang_nl' => 'Dutch', 'lang_no' => 'Norwegian', 'lang_pl' => 'Polish', - 'lang_pt' => 'Portuguese', 'lang_pt-br' => 'Portuguese (Brasilia)', + 'lang_pt' => 'Portuguese', 'lang_ro' => 'Romanian', - 'lang_sr' => 'Serbian', + 'lang_ru' => 'Russian', + 'lang_sg' => 'Sango', 'lang_sk' => 'Slovak', 'lang_sl' => 'Slovenian', - 'lang_fr' => 'French', - 'lang_hr' => 'Croatian', - 'lang_cs' => 'Czech', + 'lang_sr' => 'Serbian', 'lang_sv' => 'Swedish', - 'lang_et' => 'Estonian', - 'lang_uz' => 'Uzbek', - 'lang_ja' => 'Japanese', - 'lang_zh-hant' => 'Traditional Chinese', - 'lang_zh-hans' => 'Simplified Chinese', 'lang_th' => 'Thai', - 'lang_vi' => 'Vietnamese', - 'lang_sg' => 'Sango', 'lang_tr' => 'Turkish', - 'lang_fi' => 'Finnish', - 'lang_km' => 'Khmer', - 'lang_ko' => 'Korean', - 'lang_id' => 'Indonesian', - 'lang_ms' => 'Malay', + 'lang_uk' => 'Ukrainian', + 'lang_uz' => 'Uzbek', + 'lang_vi' => 'Vietnamese', + 'lang_zh-hans' => 'Simplified Chinese', + 'lang_zh-hant' => 'Traditional Chinese', + 'languages' => 'List of site languages', + 'menu_footer_help' => 'The resource is available for display in the basement menu.', + 'menu_footer' => 'Menu Footer', + 'menu_main_help' => 'The resource is available for display in the main menu of the site.', + 'menu_main' => 'Menu Main', + 'must_contain_lang' => 'and must contain the Default Language as well as values from the Language List', + 'must_contain' => 'and must contain the default language', + 'select_lang' => 'Choose language', + 'seodescription_help' => 'Enter SEO Resource Description.', + 'seodescription' => 'SEO description document', + 'seotitle_help' => 'Enter the SEO Title of the resource.', + 'seotitle' => 'SEO title document', + 'settings' => 'Settings', + 'slang_desc' => 'Managing site language settings', + 'slang_icon' => 'fa fa-globe-europe', + 'slang' => 'Multilanguage', + 'synchronize_help' => 'Synchronize translations of templates and site database', + 'synchronize' => 'Synchronize', + 'use_url' => 'Use in URL', ]; \ No newline at end of file diff --git a/lang/ru/global.php b/lang/ru/global.php index 387a496..5a8aa87 100644 --- a/lang/ru/global.php +++ b/lang/ru/global.php @@ -1,73 +1,75 @@ 'Мультиязык', - 'slang_icon' => 'fa fa-globe-europe', - 'slang_desc' => 'Управление настройками языков сайта', + 'add_translation' => 'Добавить перевод', + 'auto_translate' => 'Автоперевод', + 'copyright' => 'Разработка', 'description' => 'sLang позволяет выполнять перевод статических текстов (всплывающих сообщений, названий кнопок) а также контента по всему сайту.', 'dictionary' => 'Словарь', - 'settings' => 'Настройки', - 'lang_def' => 'Язык по умолчанию', - 'select_lang' => 'Выберите язык', - 'field' => 'Поле', 'do_not_empty' => 'не должно быть пустым', - 'use_url' => 'Использовать в URL', - 'languages' => 'Список языков сайта', - 'must_contain' => 'и должно содержать Язык по умолчанию', - 'must_contain_lang' => 'и должно содержать Язык по умолчанию а также значения из Списка языков', - 'lang_front' => 'Список языков фронтенда', 'example_usage' => 'Используйте конструкцию @lang(\'phrase\') для встраивания фраз переводов в Blade шаблоне. Например @lang(\'Привет Мир!\')', - 'synchronize' => 'Синхронизировать', - 'synchronize_help' => 'Синхронизировать переводы шаблонов и БД сайта', - 'auto_translate' => 'Автоперевод', - 'seotitle' => 'SEO title document', - 'seodescription' => 'SEO description document', - 'copyright' => 'Разработка', - 'add_translation' => 'Добавить перевод', - 'menu_main' => 'Главное меню', - 'menu_main_help' => 'Ресурс доступен для вывода в главном меню сайта.', - 'menu_footer' => 'Меню подвала', - 'menu_footer_help' => 'Ресурс доступен для вывода в меню подвала.', - 'lang_en' => 'Английский', - 'lang_uk' => 'Украинский', - 'lang_ru' => 'Русский', + 'field' => 'Поле', 'lang_ab' => 'Абхазский', 'lang_az' => 'Азербайджанский', 'lang_be' => 'Белорусский', 'lang_bg' => 'Болгарский', - 'lang_hu' => 'Венгерский', - 'lang_nl' => 'Нидерландский', - 'lang_el' => 'Греческий', + 'lang_cs' => 'Чешский', 'lang_da' => 'Датский', + 'lang_de' => 'Немецкий', + 'lang_def' => 'Язык по умолчанию', + 'lang_el' => 'Греческий', + 'lang_en' => 'Английский', + 'lang_es' => 'Испанский', + 'lang_et' => 'Эстонский', + 'lang_fi' => 'Фи́нский', + 'lang_fr' => 'Французский', + 'lang_front' => 'Список языков фронтенда', 'lang_ga' => 'Ирландский', + 'lang_hr' => 'Хорватский', + 'lang_hu' => 'Венгерский', + 'lang_id' => 'Индонезийский', 'lang_is' => 'Исландский', - 'lang_es' => 'Испанский', 'lang_it' => 'Итальянский', - 'lang_lv' => 'Латвийский', + 'lang_ja' => 'Японский', + 'lang_km' => 'Кхмерский', + 'lang_ko' => 'Корейский', 'lang_lt' => 'Литовский', - 'lang_de' => 'Немецкий', + 'lang_lv' => 'Латвийский', + 'lang_ms' => 'Малайский', + 'lang_nl' => 'Нидерландский', 'lang_no' => 'Норвежский', 'lang_pl' => 'Польский', - 'lang_pt' => 'Португальский', 'lang_pt-br' => 'Португальский (Бразилия)', + 'lang_pt' => 'Португальский', 'lang_ro' => 'Румынский', - 'lang_sr' => 'Сербский', + 'lang_ru' => 'Русский', + 'lang_sg' => 'Санго', 'lang_sk' => 'Словацкий', 'lang_sl' => 'Словенский', - 'lang_fr' => 'Французский', - 'lang_hr' => 'Хорватский', - 'lang_cs' => 'Чешский', + 'lang_sr' => 'Сербский', 'lang_sv' => 'Шведский', - 'lang_et' => 'Эстонский', - 'lang_uz' => 'Узбекский', - 'lang_ja' => 'Японский', - 'lang_zh-hant' => 'Традиционный китайский', - 'lang_zh-hans' => 'Упрощенный китайский', 'lang_th' => 'Тайский', - 'lang_vi' => 'Вьетнамский', - 'lang_sg' => 'Санго', 'lang_tr' => 'Турецкий', - 'lang_fi' => 'Фи́нский', - 'lang_km' => 'Кхмерский', - 'lang_ko' => 'Корейский', - 'lang_id' => 'Индонезийский', - 'lang_ms' => 'Малайский', + 'lang_uk' => 'Украинский', + 'lang_uz' => 'Узбекский', + 'lang_vi' => 'Вьетнамский', + 'lang_zh-hans' => 'Упрощенный китайский', + 'lang_zh-hant' => 'Традиционный китайский', + 'languages' => 'Список языков сайта', + 'menu_footer_help' => 'Ресурс доступен для вывода в меню подвала.', + 'menu_footer' => 'Меню подвала', + 'menu_main_help' => 'Ресурс доступен для вывода в главном меню сайта.', + 'menu_main' => 'Главное меню', + 'must_contain_lang' => 'и должно содержать Язык по умолчанию а также значения из Списка языков', + 'must_contain' => 'и должно содержать Язык по умолчанию', + 'select_lang' => 'Выберите язык', + 'seodescription_help' => 'Введите SEO Описание ресурса.', + 'seodescription' => 'SEO description document', + 'seotitle_help' => 'Введите SEO Заголовок ресурса.', + 'seotitle' => 'SEO title document', + 'settings' => 'Настройки', + 'slang_desc' => 'Управление настройками языков сайта', + 'slang_icon' => 'fa fa-globe-europe', + 'slang' => 'Мультиязык', + 'synchronize_help' => 'Синхронизировать переводы шаблонов и БД сайта', + 'synchronize' => 'Синхронизировать', + 'use_url' => 'Использовать в URL', ]; \ No newline at end of file diff --git a/lang/uk/global.php b/lang/uk/global.php index 69c50d7..7cd9a6e 100644 --- a/lang/uk/global.php +++ b/lang/uk/global.php @@ -1,72 +1,74 @@ 'Мультимова', - 'slang_icon' => 'fa fa-globe-europe', - 'slang_desc' => 'Управління налаштуваннями мов сайту', + 'add_translation' => 'Додати переклад', + 'auto_translate' => 'Автопереклад', + 'copyright' => 'Розробка', 'description' => 'sLang дозволяє виконувати переклад статичних текстів (спливаючих повідомлень, назв кнопок) та контенту по всьому сайту.', 'dictionary' => 'Словник', - 'settings' => 'Налаштування', - 'lang_def' => 'Мова типово', - 'select_lang' => 'Виберіть мову', - 'field' => 'Поле', 'do_not_empty' => 'не повинно бути порожнім', - 'use_url' => 'Використати в URL', - 'languages' => 'Список мов сайту', - 'must_contain' => 'і має містити Мову за замовчуванням', - 'must_contain_lang' => 'і має містити Мову за замовчуванням, а також значення зі Списку мов', - 'lang_front' => 'Список мов фронтенду', 'example_usage' => 'Використовуйте конструкцію @lang(\'phrase\') для вбудовування фраз перекладу в Blade шаблоні. Наприклад @lang(\'Привіт світ!\')', - 'synchronize' => 'Синхронізувати', - 'synchronize_help' => 'Синхронізувати переклади шаблонів та БД сайту', - 'auto_translate' => 'Автопереклад', - 'seotitle' => 'SEO заголовок документа', - 'seodescription' => 'SEO опис документа', - 'copyright' => 'Розробка', - 'add_translation' => 'Додати переклад', - 'menu_main' => 'Головне меню', - 'menu_main_help' => 'Ресурс доступний для виводу в головне меню сайту.', - 'menu_footer' => 'Меню підвала', - 'menu_footer_help' => 'Ресурс доступний для виводу в меню підвала.', - 'lang_en' => 'Англійська', - 'lang_uk' => 'Українська', - 'lang_ru' => 'Російська', + 'field' => 'Поле', 'lang_ab' => 'Абхазька', 'lang_az' => 'Азербайджанська', 'lang_be' => 'Білоруська', 'lang_bg' => 'Болгарська', - 'lang_hu' => 'Угорська', - 'lang_nl' => 'Нідерландська', - 'lang_el' => 'Грецька', + 'lang_cs' => 'Чеська', 'lang_da' => 'Данська', + 'lang_de' => 'Німецька', + 'lang_def' => 'Мова типово', + 'lang_el' => 'Грецька', + 'lang_en' => 'Англійська', + 'lang_es' => 'Іспанська', + 'lang_et' => 'Естонська', + 'lang_fi' => 'Фінська', + 'lang_fr' => 'Французька', + 'lang_front' => 'Список мов фронтенду', 'lang_ga' => 'Ірландська', + 'lang_hr' => 'Хорватська', + 'lang_hu' => 'Угорська', + 'lang_id' => 'Індонезійська', 'lang_is' => 'Ісландська', - 'lang_es' => 'Іспанська', 'lang_it' => 'Італійська', - 'lang_lv' => 'Латвійська', + 'lang_ja' => 'Японська', + 'lang_ko' => 'Корейська', 'lang_lt' => 'Литовська', - 'lang_de' => 'Німецька', + 'lang_lv' => 'Латвійська', + 'lang_ms' => 'Малайська', + 'lang_nl' => 'Нідерландська', 'lang_no' => 'Норвезька', 'lang_pl' => 'Польська', - 'lang_pt' => 'Португальська', 'lang_pt-br' => 'Португальська (Бразилія)', + 'lang_pt' => 'Португальська', 'lang_ro' => 'Румунська', - 'lang_sr' => 'Сербська', + 'lang_ru' => 'Російська', + 'lang_sg' => 'Санго', 'lang_sk' => 'Словацька', 'lang_sl' => 'Словенська', - 'lang_fr' => 'Французька', - 'lang_hr' => 'Хорватська', - 'lang_cs' => 'Чеська', + 'lang_sr' => 'Сербська', 'lang_sv' => 'Шведська', - 'lang_et' => 'Естонська', - 'lang_uz' => 'Узбецька', - 'lang_ja' => 'Японська', - 'lang_zh-hant' => 'Традиційна китайська', - 'lang_zh-hans' => 'Спрощена китайська', 'lang_th' => 'Тайська', - 'lang_vi' => 'В\'єтнамська', - 'lang_sg' => 'Санго', 'lang_tr' => 'Турецька', - 'lang_fi' => 'Фінська', - 'lang_ko' => 'Корейська', - 'lang_id' => 'Індонезійська', - 'lang_ms' => 'Малайська', + 'lang_uk' => 'Українська', + 'lang_uz' => 'Узбецька', + 'lang_vi' => 'В\'єтнамська', + 'lang_zh-hans' => 'Спрощена китайська', + 'lang_zh-hant' => 'Традиційна китайська', + 'languages' => 'Список мов сайту', + 'menu_footer_help' => 'Ресурс доступний для виводу в меню підвала.', + 'menu_footer' => 'Меню підвала', + 'menu_main_help' => 'Ресурс доступний для виводу в головне меню сайту.', + 'menu_main' => 'Головне меню', + 'must_contain_lang' => 'і має містити Мову за замовчуванням, а також значення зі Списку мов', + 'must_contain' => 'і має містити Мову за замовчуванням', + 'select_lang' => 'Виберіть мову', + 'seodescription_help' => 'Введіть SEO Опис ресурса.', + 'seodescription' => 'SEO опис документа', + 'seotitle_help' => 'Введіть SEO Заголовок ресурса.', + 'seotitle' => 'SEO заголовок документа', + 'settings' => 'Налаштування', + 'slang_desc' => 'Управління налаштуваннями мов сайту', + 'slang_icon' => 'fa fa-globe-europe', + 'slang' => 'Мультимова', + 'synchronize_help' => 'Синхронізувати переклади шаблонів та БД сайту', + 'synchronize' => 'Синхронізувати', + 'use_url' => 'Використати в URL', ]; \ No newline at end of file diff --git a/src/Controllers/sLangController.php b/src/Controllers/sLangController.php index 12acd60..540809f 100644 --- a/src/Controllers/sLangController.php +++ b/src/Controllers/sLangController.php @@ -33,7 +33,6 @@ public function index(): View public function tabs($params = []): View { global $_lang, $_style, $content; - $id = (int)$params['id']; $data['theme'] = new ManagerTheme(evo(), evo()->getConfig('manager_theme', 'default')); @@ -45,260 +44,8 @@ public function tabs($params = []): View $data['richtexteditorIds'] = [evo()->getConfig('which_editor') => []]; $data['richtexteditorOptions'] = [evo()->getConfig('which_editor') => []]; - - $group_tvs = evo()->getConfig('group_tvs'); - $templateVariablesOutput = ''; - if (($content['type'] == 'document' || EvolutionCMS()->getManagerApi()->action == '4') || ($content['type'] == 'reference' || EvolutionCMS()->getManagerApi()->action == 72)) { - $template = getDefaultTemplate(); - if (isset ($_REQUEST['newtemplate'])) { - $template = $_REQUEST['newtemplate']; - } else { - if (isset ($content['template'])) { - $template = $content['template']; - } - } - $tvs = SiteTmplvar::query()->select('site_tmplvars.*', 'site_tmplvar_contentvalues.value', 'site_tmplvar_templates.rank as tvrank', 'site_tmplvar_templates.rank', 'site_tmplvars.id', 'site_tmplvars.rank') - ->join('site_tmplvar_templates', 'site_tmplvar_templates.tmplvarid', '=', 'site_tmplvars.id') - ->leftJoin('site_tmplvar_contentvalues', function ($join) use ($id) { - $join->on('site_tmplvar_contentvalues.tmplvarid', '=', 'site_tmplvars.id'); - $join->on('site_tmplvar_contentvalues.contentid', '=', \DB::raw($id)); - })->leftJoin('site_tmplvar_access', 'site_tmplvar_access.tmplvarid', '=', 'site_tmplvars.id'); - - if ($group_tvs) { - $tvs = $tvs->select('site_tmplvars.*', - 'site_tmplvar_contentvalues.value', 'categories.id as category_id', 'categories.category as category_name', 'categories.rank as category_rank', 'site_tmplvar_templates.rank', 'site_tmplvars.id', 'site_tmplvars.rank'); - $tvs = $tvs->leftJoin('categories', 'categories.id', '=', 'site_tmplvars.category'); - //$sort = 'category_rank,category_id,' . $sort; - $tvs = $tvs->orderBy('category_rank', 'ASC'); - $tvs = $tvs->orderBy('category_id', 'ASC'); - } - $tvs = $tvs->orderBy('site_tmplvar_templates.rank', 'ASC'); - $tvs = $tvs->orderBy('site_tmplvars.rank', 'ASC'); - $tvs = $tvs->orderBy('site_tmplvars.id', 'ASC'); - $tvs = $tvs->where('site_tmplvar_templates.templateid', $template); - - if ($_SESSION['mgrRole'] != 1) { - $tvs = $tvs->leftJoin('document_groups', 'site_tmplvar_contentvalues.contentid', '=', 'document_groups.document'); - $tvs = $tvs->where(function ($query) { - $query->whereNull('site_tmplvar_access.documentgroup') - ->orWhereIn('document_groups.document_group', $_SESSION['mgrDocgroups']); - }); - } - - $tvs = $tvs->get(); - if (count($tvs)>0) { - $tvsArray = $tvs->toArray(); - - $templateVariablesOutput = ''; - $templateVariablesGeneral = ''; - - $i = $ii = 0; - $tab = ''; - foreach ($tvsArray as $row) { - $row['category'] = $row['category_name'] ?? ''; - if(!isset($row['category_id'])){ - $row['category_id'] = 0; - $row['category'] = $_lang['no_category']; - $row['category_rank'] = 0; - } - if($row['value'] == '') $row['value'] = $row['default_text']; - if ($group_tvs && $row['category_id'] != 0) { - $ii = 0; - if ($tab !== $row['category_id']) { - if ($group_tvs == 1 || $group_tvs == 3) { - if ($i === 0) { - $templateVariablesOutput .= ' -
-
' . $row['category'] . '
-
- ' . "\n"; - } else { - $templateVariablesOutput .= ' -
-
-
- -
-
' . $row['category'] . '
-
- '; - } - } else if ($group_tvs == 2 || $group_tvs == 4) { - if ($i === 0) { - $templateVariablesOutput .= ' -
-

' . $row['category'] . '

- - -
-
'; - } else { - $templateVariablesOutput .= ' -
-
-
- -
-

' . $row['category'] . '

- - -
- '; - } - } else if ($group_tvs == 5) { - if ($i === 0) { - $templateVariablesOutput .= ' -
-

' . $row['category'] . '

- -
'; - } else { - $templateVariablesOutput .= ' -
-
- -
-

' . $row['category'] . '

- - - '; - } - } - $split = 0; - } else { - $split = 1; - } - } - - // Go through and display all Template Variables - if ($row['type'] == 'richtext' || $row['type'] == 'htmlarea') { - // determine TV-options - $tvOptions = EvolutionCMS()->parseProperties($row['elements']); - if (!empty($tvOptions)) { - // Allow different Editor with TV-option {"editor":"CKEditor4"} or &editor=Editor;text;CKEditor4 - $editor = isset($tvOptions['editor']) ? $tvOptions['editor'] : EvolutionCMS()->getConfig('which_editor'); - }; - // Add richtext editor to the list - $richtexteditorIds[$editor][] = "tv" . $row['id']; - $richtexteditorOptions[$editor]["tv" . $row['id']] = $tvOptions; - } - - $templateVariablesTmp = ''; - - // splitter - if ($group_tvs) { - if ((! empty($split) && $i) || $ii) { - $templateVariablesTmp .= ' - ' . "\n"; - } - } else if ($i) { - $templateVariablesTmp .= ' - ' . "\n"; - } - - // post back value - if (array_key_exists('tv' . $row['id'], $_POST)) { - if (is_array($_POST['tv' . $row['id']])) { - $tvPBV = implode('||', $_POST['tv' . $row['id']]); - } else { - $tvPBV = $_POST['tv' . $row['id']]; - } - } else { - $tvPBV = $row['value']; - } - - $tvDescription = (!empty($row['description'])) ? '
' . $row['description'] . '' : ''; - $tvInherited = (substr($tvPBV, 0, 8) == '@INHERIT') ? '
(' . $_lang['tmplvars_inherited'] . ')' : ''; - $tvName = EvolutionCMS()->hasPermission('edit_template') ? '
[*' . $row['name'] . '*]' : ''; - - $templateVariablesTmp .= ' - - - - '; - - if ($group_tvs && $row['category_id'] == 0) { - $templateVariablesGeneral .= $templateVariablesTmp; - $ii++; - } else { - $templateVariablesOutput .= $templateVariablesTmp; - $tab = $row['category_id']; - $i++; - } - } - - if ($templateVariablesGeneral) { - echo '
' . $row['caption'] . $tvName . '' . $tvDescription . $tvInherited . '
' . - renderFormElement( - $row['type'], - $row['id'], - $row['default_text'], - $row['elements'], - $tvPBV, - '', - $row, - $tvsArray, - $content - ) . - '
' . $templateVariablesGeneral . '
'; - } - - $templateVariables .= ' - ' . "\n"; - if (!$group_tvs) { - $templateVariables .= ' -
' . $_lang['settings_templvars'] . '
-
- '; - } else if ($group_tvs == 2) { - $templateVariables .= ' -
-
' . $_lang['settings_templvars'] . '
-
- '; - } else if ($group_tvs == 3) { - $templateVariables .= ' -
-

' . $_lang['settings_templvars'] . '

- '; - } else if ($group_tvs == 4) { - $templateVariables .= ' -
-

' . $_lang['settings_templvars'] . '

- -
- '; - } - if ($templateVariablesOutput) { - $templateVariables .= $templateVariablesOutput; - $templateVariables .= ' -
-
' . "\n"; - if ($group_tvs == 1) { - $templateVariables .= ' -
' . "\n"; - } else if ($group_tvs == 2 || $group_tvs == 4) { - $templateVariables .= ' -
- - ' . "\n"; - } else if ($group_tvs == 3) { - $templateVariables .= ' - - ' . "\n"; - } - } - $templateVariables .= ' - ' . "\n"; - } - } - $data['group_tvs'] = $group_tvs; - $data['templateVariablesOutput'] = $templateVariablesOutput; $data['content'] = $content; + $data = array_merge($data, $this->getTvsHtml($params)); return $this->view('tabs', $data); } @@ -704,6 +451,300 @@ protected function getElementRow($data) return $html; } + /** + * Get html element for TV parameters for Resource in adminpanel + */ + protected function getTvsHtml($params) + { + global $_lang, $_style, $content; + $id = (int)$params['id']; + + $group_tvs = evo()->getConfig('group_tvs'); + $templateVariablesOutput = ''; + $templateVariablesGeneral = ''; + $templateVariablesTmp = ''; + $templateVariablesLng = []; + $templateVariablesTab = []; + $templateVariables = ''; + + if (($content['type'] == 'document' || evo()->getManagerApi()->action == '4') || ($content['type'] == 'reference' || evo()->getManagerApi()->action == 72)) { + $template = getDefaultTemplate(); + if (isset ($_REQUEST['newtemplate'])) { + $template = $_REQUEST['newtemplate']; + } else { + if (isset ($content['template'])) { + $template = $content['template']; + } + } + $tvs = SiteTmplvar::query()->select('site_tmplvars.*', 'site_tmplvar_contentvalues.value', 'site_tmplvar_templates.rank as tvrank', 'site_tmplvar_templates.rank', 'site_tmplvars.id', 'site_tmplvars.rank') + ->join('site_tmplvar_templates', 'site_tmplvar_templates.tmplvarid', '=', 'site_tmplvars.id') + ->leftJoin('site_tmplvar_contentvalues', function ($join) use ($id) { + $join->on('site_tmplvar_contentvalues.tmplvarid', '=', 'site_tmplvars.id'); + $join->on('site_tmplvar_contentvalues.contentid', '=', \DB::raw($id)); + })->leftJoin('site_tmplvar_access', 'site_tmplvar_access.tmplvarid', '=', 'site_tmplvars.id'); + + if ($group_tvs) { + $tvs = $tvs->select('site_tmplvars.*', + 'site_tmplvar_contentvalues.value', 'categories.id as category_id', 'categories.category as category_name', 'categories.rank as category_rank', 'site_tmplvar_templates.rank', 'site_tmplvars.id', 'site_tmplvars.rank'); + $tvs = $tvs->leftJoin('categories', 'categories.id', '=', 'site_tmplvars.category'); + //$sort = 'category_rank,category_id,' . $sort; + $tvs = $tvs->orderBy('category_rank', 'ASC'); + $tvs = $tvs->orderBy('category_id', 'ASC'); + } + $tvs = $tvs->orderBy('site_tmplvar_templates.rank', 'ASC'); + $tvs = $tvs->orderBy('site_tmplvars.rank', 'ASC'); + $tvs = $tvs->orderBy('site_tmplvars.id', 'ASC'); + $tvs = $tvs->where('site_tmplvar_templates.templateid', $template); + + if ($_SESSION['mgrRole'] != 1) { + $tvs = $tvs->leftJoin('document_groups', 'site_tmplvar_contentvalues.contentid', '=', 'document_groups.document'); + $tvs = $tvs->where(function ($query) { + $query->whereNull('site_tmplvar_access.documentgroup') + ->orWhereIn('document_groups.document_group', $_SESSION['mgrDocgroups']); + }); + } + + $tvs = $tvs->get(); + if (count($tvs) > 0) { + $tvsArray = $tvs->toArray(); + + $i = $ii = 0; + $tab = ''; + foreach ($tvsArray as $row) { + $row['category'] = $row['category_name'] ?? ''; + if (!isset($row['category_id'])) { + $row['category_id'] = 0; + $row['category'] = $_lang['no_category']; + $row['category_rank'] = 0; + } + if($row['value'] == '') { + $row['value'] = $row['default_text']; + } + if ($group_tvs && $row['category_id'] != 0) { + $ii = 0; + if ($tab !== $row['category_id']) { + if ($group_tvs == 1 || $group_tvs == 3) { + if ($i === 0) { + $templateVariablesOutput .= ' +
+
' . $row['category'] . '
+
+ ' . "\n"; + } else { + $templateVariablesOutput .= ' +
+
+
+ +
+
' . $row['category'] . '
+
+ '; + } + } else if ($group_tvs == 2 || $group_tvs == 4) { + if ($i === 0) { + $templateVariablesOutput .= ' +
+

' . $row['category'] . '

+ + +
+
'; + } else { + $templateVariablesOutput .= ' +
+
+
+ +
+

' . $row['category'] . '

+ + +
+ '; + } + } else if ($group_tvs == 5) { + if ($i === 0) { + $templateVariablesOutput .= ' +
+

' . $row['category'] . '

+ +
'; + } else { + $templateVariablesOutput .= ' +
+
+ +
+

' . $row['category'] . '

+ + + '; + } + } + $split = 0; + } else { + $split = 1; + } + } + + // Go through and display all Template Variables + if ($row['type'] == 'richtext' || $row['type'] == 'htmlarea') { + // determine TV-options + $tvOptions = EvolutionCMS()->parseProperties($row['elements']); + if (!empty($tvOptions)) { + // Allow different Editor with TV-option {"editor":"CKEditor4"} or &editor=Editor;text;CKEditor4 + $editor = isset($tvOptions['editor']) ? $tvOptions['editor'] : EvolutionCMS()->getConfig('which_editor'); + }; + // Add richtext editor to the list + $richtexteditorIds[$editor][] = "tv" . $row['id']; + $richtexteditorOptions[$editor]["tv" . $row['id']] = $tvOptions; + } + + // splitter + if ($group_tvs) { + if ((! empty($split) && $i) || $ii) { + $templateVariablesTmp .= ' + ' . "\n"; + } + } elseif ($i) { + $templateVariablesTmp .= ' + ' . "\n"; + } + + // post back value + if (array_key_exists('tv' . $row['id'], $_POST)) { + if (is_array($_POST['tv' . $row['id']])) { + $tvPBV = implode('||', $_POST['tv' . $row['id']]); + } else { + $tvPBV = $_POST['tv' . $row['id']]; + } + } else { + $tvPBV = $row['value']; + } + + $tvLng = explode('_', $row['name']); + if (in_array(end($tvLng), sLang::langConfig())) { + $templateVariablesLng[end($tvLng)][] = $this->view('partials.tvResource', [ + '_lang' => $_lang, + '_style' => $_style, + 'row' => $row, + 'tvPBV' => $tvPBV, + 'tvsArray' => $tvsArray, + 'content' => $content, + ])->render(); + } else { + $templateVariablesTab[] = $this->view('partials.tvResource', [ + '_lang' => $_lang, + '_style' => $_style, + 'row' => $row, + 'tvPBV' => $tvPBV, + 'tvsArray' => $tvsArray, + 'content' => $content, + ])->render(); + } + + if ($group_tvs && $row['category_id'] == 0) { + $templateVariablesGeneral .= $templateVariablesTmp; + $ii++; + } else { + $templateVariablesOutput .= $templateVariablesTmp; + $tab = $row['category_id']; + $i++; + } + } + + if ($templateVariablesGeneral) { + echo '
' . $templateVariablesGeneral . '
'; + } + + $templateVariables .= '' . "\n"; + + if (count($templateVariablesLng)) { + foreach ($templateVariablesLng as $lng => $item) { + array_unshift($templateVariablesLng[$lng], '' . "\n"); + } + } + + if (!$group_tvs) { + $str = '
' . $_lang['settings_templvars'] . '
'; + $templateVariables .= $str; + + if (count($templateVariablesLng)) { + foreach ($templateVariablesLng as $lng => $item) { + $templateVariablesLng[$lng][0] .= $str; + } + } + } else if ($group_tvs == 2) { + $templateVariables .= ' +
+
' . $_lang['settings_templvars'] . '
+
+ '; + } else if ($group_tvs == 3) { + $templateVariables .= ' +
+

' . $_lang['settings_templvars'] . '

+ '; + } else if ($group_tvs == 4) { + $templateVariables .= ' +
+

' . $_lang['settings_templvars'] . '

+ +
+ '; + } + + if ($templateVariablesOutput) { + $templateVariables .= $templateVariablesOutput; + $templateVariables .= '
' . "\n"; + + if (count($templateVariablesLng)) { + foreach ($templateVariablesLng as $lng => $item) { + array_push($templateVariablesLng[$lng], '
' . "\n"); + } + } + if ($group_tvs == 1) { + $templateVariables .= ' +
' . "\n"; + } else if ($group_tvs == 2 || $group_tvs == 4) { + $templateVariables .= ' +
+
+
' . "\n"; + } else if ($group_tvs == 3) { + $templateVariables .= ' +
+
' . "\n"; + } + } + $templateVariables .= '' . "\n"; + + if (count($templateVariablesTab)) { + $templateVariablesTab = implode('', $templateVariablesTab); + } + if (count($templateVariablesLng)) { + foreach ($templateVariablesLng as $lng => $item) { + $templateVariablesLng[$lng] = implode('', $item) . '' . "\n"; + } + } + } + } + + return [ + 'group_tvs' => $group_tvs, + 'templateVariablesOutput' => $templateVariablesOutput, + 'templateVariablesGeneral' => $templateVariablesGeneral, + 'templateVariablesLng' => $templateVariablesLng, + 'templateVariablesTab' => $templateVariablesTab, + 'templateVariables' => $templateVariables + ]; + } + /** * Update data in system settings table * diff --git a/views/index.blade.php b/views/index.blade.php index d3f461d..2c51947 100644 --- a/views/index.blade.php +++ b/views/index.blade.php @@ -3,7 +3,6 @@ @section('content')

@lang('sLang::global.slang_desc')

-
diff --git a/views/partials/tvResource.blade.php b/views/partials/tvResource.blade.php new file mode 100644 index 0000000..6011be7 --- /dev/null +++ b/views/partials/tvResource.blade.php @@ -0,0 +1,27 @@ +
+
+
+
+ + @if(!empty($row['description']))@endif +
+
+ {!! renderFormElement( + $row['type'], + $row['id'], + $row['default_text'], + $row['elements'], + $tvPBV, + '', + $row, + $tvsArray, + $content + ) !!} +
+
+
+
\ No newline at end of file diff --git a/views/resourceGeneralTab.blade.php b/views/resourceGeneralTab.blade.php index 835dd10..61569a2 100644 --- a/views/resourceGeneralTab.blade.php +++ b/views/resourceGeneralTab.blade.php @@ -1,130 +1,135 @@ @php global $richtexteditorIds, $richtexteditorOptions; @endphp @foreach(sLang::langConfig() as $lang) - -
-

@lang('global.settings_general') {{$lang}}

- - - - - - - - - - - - - - - @if($content['type'] == 'reference' || EvolutionCMS()->getManagerApi()->action == '72') {{-- Web Link specific --}} - - - - - @endif - - - - - - - - - @if($content['type'] == 'document' || evo()->getManagerApi()->action == '4') - - - - @endif - - - - - - - - - -
- @lang('global.resource_title') - - - @if($lang == sLang::langDefault()) - - @else -
- - + +
+

@lang('global.settings_general') {{$lang}}

+ +
+
+
+
+ +
- @endif - -
- @lang('global.long_title') - - - @if($lang == sLang::langDefault()) - - @else -
- - +
+ @if($lang == sLang::langDefault()) + + @else +
+ + +
+ @endif +
- @endif -
- @lang('global.resource_description') - - - @if($lang == sLang::langDefault()) - - @else -
- - +
+
+
+ +
- @endif -
@lang('global.weblink') - - - - - -
- @lang('global.resource_summary') - - - @if($lang == sLang::langDefault()) - - @else -
- - +
+ @if($lang == sLang::langDefault()) + + @else +
+ + +
+ @endif
- @endif -
- @lang('global.resource_opt_menu_title') - - - @if($lang == sLang::langDefault()) - - @else -
- - +
+
+
+ + +
+
+ @if($lang == sLang::langDefault()) + + @else +
+ + +
+ @endif
+
+ @if($content['type'] == 'reference' || evo()->getManagerApi()->action == '72') {{-- Web Link specific --}} +
+
+ + +
+
+ + + +
+
@endif -
-
-
- @lang('global.resource_content') - @if($lang != sLang::langDefault()) - +
+ @endif + + +
+
+ + +
+
+ @if($lang == sLang::langDefault()) + + @else +
+ + +
@endif -

- @lang('sLang::global.seotitle') - - @if($lang == sLang::langDefault()) - - @else -
- - +
+ + +
+
+
+
+ +
- @endif -
- @lang('sLang::global.seodescription') - - @if($lang == sLang::langDefault()) - - @else -
- - +
+ @if($lang == sLang::langDefault()) + + @else +
+ + +
+ @endif
- @endif -
- {{-- Template Variables --}} - @if($group_tvs < 3 && $templateVariablesOutput) - {{$templateVariables}} - @endif -
- +
+
+ +
+ {{-- Template Variables --}} + @if($group_tvs < 3 && isset($templateVariablesLng[$lang])) + {!! $templateVariablesLng[$lang] !!} + @endif + + @endforeach \ No newline at end of file diff --git a/views/resourceSettingsTab.blade.php b/views/resourceSettingsTab.blade.php index fb89700..58de6b0 100644 --- a/views/resourceSettingsTab.blade.php +++ b/views/resourceSettingsTab.blade.php @@ -2,7 +2,6 @@

@lang('global.settings_page_settings')

-
@php($mx_can_pub = evo()->hasPermission('publish_document') ? '' : 'disabled="disabled" ')
@@ -127,7 +126,7 @@
{{-- Menu --}}
-
+
@@ -137,7 +136,7 @@
-
+
@@ -147,7 +146,7 @@
-
+
@@ -157,7 +156,7 @@
-
+
@@ -167,7 +166,7 @@
-
+
@@ -208,7 +207,7 @@
-
+
@@ -217,7 +216,7 @@
-
+
@@ -230,7 +229,7 @@
-
+
@@ -240,7 +239,7 @@
-
+
@@ -254,7 +253,7 @@
-
+
@@ -296,7 +295,7 @@
-
+
diff --git a/views/resourceTemplateVariablesTab.blade.php b/views/resourceTemplateVariablesTab.blade.php new file mode 100644 index 0000000..1748f70 --- /dev/null +++ b/views/resourceTemplateVariablesTab.blade.php @@ -0,0 +1,13 @@ +@if($templateVariablesTab) + +
+

@lang('global.settings_templvars')

+ + +
+
+ {!! $templateVariablesTab !!} +
+
+
+@endif \ No newline at end of file diff --git a/views/tabs.blade.php b/views/tabs.blade.php index 21fc154..75e0cff 100644 --- a/views/tabs.blade.php +++ b/views/tabs.blade.php @@ -1,7 +1,7 @@ @php global $content, $richtexteditorIds, $richtexteditorOptions; @endphp @include('sLang::resourceGeneralTab') - +@include('sLang::resourceTemplateVariablesTab') @include('sLang::resourceSettingsTab') @foreach (sLang::siteContentFields() as $siteContentField)