/** * @internal Entry point for translation admin. * @attribute[RequestParam('lang','string',false)] * @attribute[RequestParam('offset','int',0)] * @attribute[RequestParam('search','text','')] * @attribute[RequestParam('untranslated','bool',false)] */ function Translate($lang, $offset, $search, $untranslated) { global $CONFIG; if ($untranslated) { $search = ''; } $lang = $lang ? $lang : $CONFIG['localization']['default_language']; $_SESSION['trans_admin_lang'] = $lang; $_SESSION['trans_admin_offset'] = $offset; $_SESSION['trans_admin_search'] = $search; $form = $this->content(new Form()); $form->css('margin-bottom', '20px')->action = buildQuery('TranslationAdmin', 'Translate'); $form->content("Select language: "); $form->content($this->_languageSelect($lang))->script("\$('#{self}').change(function(){ \$('#{$form->id}').submit(); });")->name = 'lang'; $form->content(" And/Or search: "); $form->AddText('search', $search); $form->AddHidden('offset', 0); $form->AddSubmit('Search'); $form->content("<span style='color:gray'>(?:=single char, *:=any/no char)</span>"); if ($lang != $CONFIG['localization']['default_language']) { $form->content(" Or "); $form->AddHidden('untranslated', 0)->id = 'untranslated'; Button::Make("Show untranslated", "\$('#untranslated').val('1').closest('form').submit();")->appendTo($form); } $tab = Table::Make()->addClass('translations')->SetHeader('Term', 'Default', 'Content', '', '')->setData('lang', $lang)->appendTo($this); $rs = $this->_searchQuery($offset, $lang, $search, $untranslated); foreach ($rs as $term) { $def = nl2br(htmlspecialchars($term['def'])); $ta = new TextArea($untranslated ? '' : $term['trans']); $ta->class = $term['id']; $ta->rows = count(explode('<br />', $def)) + 1; $btn = new Button('Save'); $btn->addClass('save')->setData('term', $term['id']); $tab->AddNewRow($term['id'], $def, $ta, $btn, ''); $c = $tab->GetCurrentRow()->GetCell(4); $c->css('white-space', 'nowrap'); $c->content(Control::Make("span"))->addClass('term_action rename')->setData('term', $term['id'])->content('rename'); $c->content(" "); $c->content(Control::Make("span"))->addClass('term_action remove')->setData('term', $term['id'])->content('remove'); } if ($tab->GetCurrentRow()) { $tab->GetCurrentRow()->GetCell(1)->style = 'width: 40%'; } $pi = $rs->GetPagingInfo(); for ($page = 1; $page <= $pi['total_pages']; $page++) { $offset = ($page - 1) * $pi['rows_per_page']; $label = $offset + 1 . "-" . $page * $pi['rows_per_page']; $label = "{$page}"; if ($page == $pi['current_page']) { $this->content("<b>{$label}</b>"); } else { $this->content(new Anchor(buildQuery('TranslationAdmin', 'Translate', "lang={$lang}&offset={$offset}&search={$search}&untranslated=" . ($untranslated ? 1 : 0)), "{$label}")); } $this->content(" "); } }
function CreateOption($value, $label = "", $selected = false, $opt_group = false) { $label = $label == "" ? $value : $label; $this->_options[$value] = $label; if (!$this->_first_option_value) { $this->_first_option_value = $value; } if (!$selected && $this->_current !== false) { $selected = $value == $this->_current; } $opt = Control::Make('option')->append($label !== "" ? $label : $value); if ($selected) { $opt->attr("selected", "selected"); } if ($value !== '') { $opt->attr("value", $value); } if ($opt_group) { return $opt_group->content($opt); } return $this->content($opt); }