Index: branches/RC/themes/default2009/platform/inc/script.js =================================================================== diff -u -r11427 -r11872 --- branches/RC/themes/default2009/platform/inc/script.js (.../script.js) (revision 11427) +++ branches/RC/themes/default2009/platform/inc/script.js (.../script.js) (revision 11872) @@ -129,6 +129,95 @@ this.MoreCategoriesField.value = this.MoreCategories.length ? '|' + this.MoreCategories.join('|') + '|' : ''; } -function jq(myid) { - return '#'+myid.replace(/:/g,"\\:").replace(/\./g,"\\."); +function jq($selector) { + return $selector.replace(/(\[|\]|\.|:)/g, '\\$1'); } + +function MultiLanguageSelector($language_info, $current_language) { + this._languageInfo = $language_info; + this._currentLanguage = $current_language; + this._controls = new Array (); + + var $me = this; + + $(document).ready( + function() { + $me.init(); + } + ); +} + +MultiLanguageSelector.prototype.init = function () { + var $i = 0; + var $me = this; + + while ($i < this._controls.length) { + // set current language + $( jq('#' + this._controls[$i]) ).data('PrevLanguage', this._currentLanguage); + + for (var $language_id in this._languageInfo) { + var $id = this.inputForLanguage(this._controls[$i], $language_id); + + $( jq('#' + $id + '_flag') ).each( + function() { + $(this) + .data('MainControl', $me._controls[$i]) + .data('ThisLanguage', $language_id) + .click( + function ($event) { + var $this_flag = $(this); + var $this_language = $this_flag.data('ThisLanguage'); + + var $main_control = $('#' + jq($this_flag.data('MainControl')) ); + + var $prev_language = $main_control.data('PrevLanguage'); + var $prev_flag = $( jq('#' + $me.inputForLanguage($main_control.attr('id'), $prev_language) + '_flag') ); + + var $language_info; + + if ($this_language != $prev_language) { + // hide prev language input + enable it's flag + var $prev_image = $prev_flag.children('img:first'); + if ($prev_image.length) { + // found image for given language + $language_info = $me._languageInfo[$prev_language]; + $prev_image.attr('src', $prev_image.attr('src').replace($language_info.off, $language_info.on)); + } + $( jq('#' + $prev_flag.attr('id').replace(/_flag$/, '_input') ) ).hide(); + + // show this language input + disable it's flag + var $this_image = $this_flag.children('img:first'); + if ($this_image.length) { + // found image for given language + $language_info = $me._languageInfo[$this_language]; + $this_image.attr('src', $this_image.attr('src').replace($language_info.on, $language_info.off)); + } + var $this_container = $( jq('#' + $this_flag.attr('id').replace(/_flag$/, '_input') ) ); + $this_container.show(); + + // focus on shown control + $('input:first, textarea:first', $this_container).focus(); + + // remember last used language + $main_control.data('PrevLanguage', $this_language); + } + + $event.preventDefault(); + } + ); + } + ); + } + + $i++; + } +} + +MultiLanguageSelector.prototype.inputForLanguage = function ($control_id, $language_id) { + return $control_id.replace('l' + this._currentLanguage + '_', 'l' + $language_id + '_'); +} + +MultiLanguageSelector.prototype.registerControl = function ($id) { + this._controls.push($id); +} + Index: branches/RC/themes/default2009/platform/elements/forms.elm.tpl =================================================================== diff -u -r11858 -r11872 --- branches/RC/themes/default2009/platform/elements/forms.elm.tpl (.../forms.elm.tpl) (revision 11858) +++ branches/RC/themes/default2009/platform/elements/forms.elm.tpl (.../forms.elm.tpl) (revision 11872) @@ -49,14 +49,17 @@ - + - > *: + + +   @@ -98,21 +101,68 @@ - + - - - - - - - - " value="1"/> + +
_input" style="display: none;"> + +
+
+ +
+ +
+ +
+ + <inp2:Field name='LocalName' html_escape='1'/> + + +
+
+
+
+ + + + _flag"> + + + <inp2:Field name='LocalName' html_escape='1'/> + + <inp2:Field name='LocalName' html_escape='1'/> + + + - + + + + +
+ +
+
+ + + "> + + + + + + + + + + + "> @@ -275,21 +325,45 @@ - + - - - - - - - - " value="1"/> - + +
_input" style="display: none;"> + +
- + +
+ +
+ +
+ + <inp2:Field name='LocalName' html_escape='1'/> + + + +
+
+
+ + "> + + + + + + + + + + + Index: branches/RC/themes/default2009/platform/elements/html_head.elm.tpl =================================================================== diff -u -r11834 -r11872 --- branches/RC/themes/default2009/platform/elements/html_head.elm.tpl (.../html_head.elm.tpl) (revision 11834) +++ branches/RC/themes/default2009/platform/elements/html_head.elm.tpl (.../html_head.elm.tpl) (revision 11872) @@ -21,4 +21,11 @@ \ No newline at end of file + + + : {'on': '', 'off': ''} + , + + + var aMultiLanguageSelector = new MultiLanguageSelector({}, ); +