diff --git a/code/CMSMain.php b/code/CMSMain.php index 803f560f..8946e535 100755 --- a/code/CMSMain.php +++ b/code/CMSMain.php @@ -1353,23 +1353,51 @@ JS; } /** - * Returns all languages with languages already used appearing first. - * Called by the SSViewer when rendering the template. - */ - function LangSelector() { - $member = Member::currentUser(); - $dropdown = new LanguageDropdownField( - 'LangSelector', - 'Language', - array(), - 'SiteTree', - 'Locale-English', - singleton('SiteTree') + * Returns a form with all languages with languages already used appearing first. + * + * @return Form + */ + function LangForm() { + $member = Member::currentUser(); //check to see if the current user can switch langs or not + if(Permission::checkMember($member, 'VIEW_LANGS')) { + $field = new LanguageDropdownField( + 'Locale', + // TODO i18n + 'Language', + array(), + 'SiteTree', + 'Locale-English', + singleton('SiteTree') + ); + $field->setValue(Translatable::get_current_locale()); + } else { + // user doesn't have permission to switch langs + // so just show a string displaying current language + $field = new LiteralField( + 'Locale', + i18n::get_locale_name( Translatable::get_current_locale()) + ); + } + + $form = new Form( + $this, + 'LangForm', + new FieldSet( + $field + ), + new FieldSet( + new FormAction('selectlang', _t('CMSMain_left.ss.GO','Go')) + ) ); - $dropdown->setValue(Translatable::get_current_locale()); - return $dropdown; - } - + $form->unsetValidator(); + + return $form; + } + + function selectlang($data, $form) { + return $this; + } + /** * Determine if there are more than one languages in our site tree. * diff --git a/code/LeftAndMain.php b/code/LeftAndMain.php index de7c06bf..a2870de8 100644 --- a/code/LeftAndMain.php +++ b/code/LeftAndMain.php @@ -290,9 +290,6 @@ class LeftAndMain extends Controller { 'cms/javascript/CMSMain_left.js', 'cms/javascript/CMSMain_right.js', 'cms/javascript/SideTabs.js', - 'cms/javascript/SideReports.js', - 'cms/javascript/LangSelector.js', - 'cms/javascript/TranslationTab.js', ) ); diff --git a/css/cms_left.css b/css/cms_left.css index 392fe734..fe8ab2bd 100644 --- a/css/cms_left.css +++ b/css/cms_left.css @@ -490,3 +490,10 @@ form#SideReportForm label.left { border-top: 1px solid #CCCCCC; padding: 3px 0 3px 7px; } + #LangSelector_holder .Actions { + display: none; + } + #LangSelector_holder label.left { + margin-left: 0; + width: auto; + } \ No newline at end of file diff --git a/javascript/CMSMain.Translatable.js b/javascript/CMSMain.Translatable.js index 72d60c68..541498cd 100755 --- a/javascript/CMSMain.Translatable.js +++ b/javascript/CMSMain.Translatable.js @@ -4,7 +4,7 @@ * @class Dropdown with languages above CMS tree, causing a redirect upon translation * @name ss.CMSMain.LangSelector */ - $('.CMSMain #LangSelector').concrete('ss', function($){ + $('.CMSMain #Form_LangForm').concrete('ss', function($){ return/** @lends ss.CMSMain.LangSelector */{ onmatch: function() { var self = this; @@ -16,7 +16,7 @@ }); // whenever a new value is selected, reload the whole CMS in the new locale - this.bind('change', function(e) { + this.find(':input[name=Locale]').bind('change', function(e) { document.location = 'admin/?locale=' + $(e.target).val(); return false; }); diff --git a/templates/Includes/CMSMain_TreeTools.ss b/templates/Includes/CMSMain_TreeTools.ss index cdb6bc08..7c8fb207 100644 --- a/templates/Includes/CMSMain_TreeTools.ss +++ b/templates/Includes/CMSMain_TreeTools.ss @@ -42,6 +42,6 @@ <% if IsTranslatableEnabled %>
- Language: $LangSelector + $LangForm
<% end_if %> \ No newline at end of file