From fd6c46872dba3c91b8179de8892a8e5074032737 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Tue, 11 Oct 2016 16:10:23 +1300 Subject: [PATCH] Add visual UI indicator for whether you are editing in the default locale or not Uses a success message state for the current locale, or a notice state for a non-default locale. Is translatable. Resolves #221 --- code/extensions/FluentExtension.php | 36 ++++++++++++++++++++++++++--- lang/en.yml | 3 +++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/code/extensions/FluentExtension.php b/code/extensions/FluentExtension.php index dfa451f6..60b7f564 100644 --- a/code/extensions/FluentExtension.php +++ b/code/extensions/FluentExtension.php @@ -553,9 +553,9 @@ protected function localiseFilterCondition($condition, $includedTables, $locale) protected function localiseSelect($class, $select, $fallback) { return "CASE COALESCE(CAST(\"{$class}\".\"{$select}\" AS CHAR), '') - WHEN '' THEN \"{$class}\".\"{$fallback}\" - WHEN '0' THEN \"{$class}\".\"{$fallback}\" - ELSE \"{$class}\".\"{$select}\" END"; + WHEN '' THEN \"{$class}\".\"{$fallback}\" + WHEN '0' THEN \"{$class}\".\"{$fallback}\" + ELSE \"{$class}\".\"{$select}\" END"; } public function augmentSQL(SQLQuery &$query, DataQuery &$dataQuery = null) @@ -813,6 +813,36 @@ public function updateCMSFields(FieldList $fields) } } } + + $this->addLocaleIndicatorMessage($fields); + } + + /** + * Adds a UI message to indicate whether you're editing in the default locale or not + * + * @param FieldList $fields + * @return self + */ + protected function addLocaleIndicatorMessage(FieldList $fields) + { + $localeNames = Fluent::locale_names(); + $isDefaultLocale = (Fluent::default_locale() === Fluent::current_locale()); + $messageClass = ($isDefaultLocale) ? 'good' : 'notice'; + $message = ($isDefaultLocale) + ? _t('Fluent.DefaultLocale', 'This is the default locale') + : _t('Fluent.DefaultLocaleIs', 'The default locale is') . ' ' . $localeNames[Fluent::default_locale()]; + + $fields->unshift( + LiteralField::create( + 'CurrentLocaleMessage', + sprintf( + '

' . _t('Fluent.EditingIn', 'Please note: You are editing in') . ' %s. %s.

', + $messageClass, + $localeNames[Fluent::current_locale()], + $message + ) + ) + ); } // diff --git a/lang/en.yml b/lang/en.yml index 5183636d..659dc0d6 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -7,3 +7,6 @@ en: LocaleFilterDescription: 'Check a locale to show this item on that locale' LocaleMenuFilterDescription: 'Select the locales where this item is visible in the menu' TABLOCALES: Locales + DefaultLocale: 'This is the default locale' + DefaultLocaleIs: 'The default locale is' + EditingIn: 'Please note: You are editing in'