// refactoring AdminTranslations

This commit is contained in:
tDidierjean
2011-11-23 15:00:48 +00:00
parent 0ee626f3ed
commit c68e9fafec
3 changed files with 39 additions and 69 deletions
@@ -35,7 +35,7 @@
{if !$suoshin_exceeded} {if !$suoshin_exceeded}
<form method="post" action="{$url_submit}" class="form"> <form method="post" action="{$url_submit}" class="form">
{$toggle_button} {$toggle_button}
{$auto_translate} {include file="translations/auto_translate.tpl"}
<input type="hidden" name="lang" value="{$lang}" /> <input type="hidden" name="lang" value="{$lang}" />
<input type="submit" name="submitTranslations{$type|ucfirst}" value="{l s='Update translations'}" class="button" /> <input type="submit" name="submitTranslations{$type|ucfirst}" value="{l s='Update translations'}" class="button" />
<br /><br /> <br /><br />
@@ -34,7 +34,7 @@
{if !$suoshin_exceeded} {if !$suoshin_exceeded}
<form method="post" action="{$url_submit}" class="form"> <form method="post" action="{$url_submit}" class="form">
{$toggle_button} {$toggle_button}
{$auto_translate} {include file="translations/auto_translate.tpl"}
<input type="hidden" name="lang" value="{$lang}" /> <input type="hidden" name="lang" value="{$lang}" />
<input type="submit" name="submitTranslations{$type|ucfirst}" value="{l s='Update translations'}" class="button" /> <input type="submit" name="submitTranslations{$type|ucfirst}" value="{l s='Update translations'}" class="button" />
<br /><br /> <br /><br />
@@ -66,11 +66,14 @@ class AdminTranslationsControllerCore extends AdminController
public function initToolbar() public function initToolbar()
{ {
$this->toolbar_btn['save'] = array(
'href' => self::$currentIndex.'&token='.$this->token,
'desc' => $this->l('Update translations')
);
$this->toolbar_btn['cancel'] = array( $this->toolbar_btn['cancel'] = array(
'href' => self::$currentIndex.'&token='.$this->token, 'href' => self::$currentIndex.'&token='.$this->token,
'desc' => $this->l('Cancel') 'desc' => $this->l('Cancel')
); );
} }
public function initMain() public function initMain()
@@ -786,59 +789,22 @@ class AdminTranslationsControllerCore extends AdminController
<input type="submit" name="submitTranslations'.ucfirst($name).'AndStay" value="'.$this->l('Update and stay').'" class="button" />'; <input type="submit" name="submitTranslations'.ucfirst($name).'AndStay" value="'.$this->l('Update and stay').'" class="button" />';
} }
public function displayAutoTranslate() /**
* Init js variables for translation with google
*
* @return array of variables to assign to the smarty template
*/
public function initAutoTranslate()
{ {
$this->addJS('http://www.google.com/jsapi');
$this->addJS(_PS_JS_DIR_.'gg-translate.js');
$this->addJS(_PS_JS_DIR_.'admin-translations.js');
$language_code = Tools::htmlentitiesUTF8(Language::getLanguageCodeByIso(Tools::getValue('lang'))); $language_code = Tools::htmlentitiesUTF8(Language::getLanguageCodeByIso(Tools::getValue('lang')));
return ' return array('language_code' => $language_code,
<input type="button" class="button" onclick="translateAll();" value="'.$this->l('Translate with Google (experimental)').'" /> 'not_available' => addslashes(html_entity_decode($this->l('this language is not available on Google Translate API'), ENT_QUOTES, 'utf-8')),
<script type="text/javascript" src="http://www.google.com/jsapi"></script> 'tooltip_title' => addslashes(html_entity_decode($this->l('Google translate suggests :'), ENT_QUOTES, 'utf-8'))
<script type="text/javascript"> );
var gg_translate = {
language_code : \''.$language_code.'\',
not_available : \''.addslashes(html_entity_decode($this->l('this language is not available on Google Translate API'), ENT_QUOTES, 'utf-8')).'\',
tooltip_title : \''.addslashes(html_entity_decode($this->l('Google translate suggests :'), ENT_QUOTES, 'utf-8')).'\'
};
</script>
<script type="text/javascript" src="../js/gg-translate.js"></script>
<script type="text/javascript">
var displayOnce = 0;
google.load("language", "1");
function translateAll() {
if (!ggIsTranslatable(gg_translate[\'language_code\']))
alert(\'"\'+gg_translate[\'language_code\']+\'" : \'+gg_translate[\'not_available\']);
else
{
$.each($(\'input[type="text"]\'), function() {
var tdinput = $(this);
if (tdinput.attr("value") == "" && tdinput.parent("td").prev().html()) {
google.language.translate(tdinput.parent("td").prev().html(), "en", gg_translate[\'language_code\'], function(result) {
if (!result.error)
tdinput.val(result.translation);
else if (displayOnce == 0)
{
displayOnce = 1;
alert(result.error.message);
}
});
}
});
$.each($("textarea"), function() {
var tdtextarea = $(this);
if (tdtextarea.html() == "" && tdtextarea.parent("td").prev().html()) {
google.language.translate(tdtextarea.parent("td").prev().html(), "en", gg_translate[\'language_code\'], function(result) {
if (!result.error)
tdtextarea.html(result.translation);
else if (displayOnce == 0)
{
displayOnce = 1;
alert(result.error.message);
}
});
}
});
}
}
</script>';
} }
public function displayLimitPostWarning($count) public function displayLimitPostWarning($count)
@@ -919,12 +885,14 @@ class AdminTranslationsControllerCore extends AdminController
'suoshin_exceeded' => $this->suhosin_limit_exceed, 'suoshin_exceeded' => $this->suhosin_limit_exceed,
'url_submit' => self::$currentIndex.'&submitTranslationsBack=1&token='.$this->token, 'url_submit' => self::$currentIndex.'&submitTranslationsBack=1&token='.$this->token,
'toggle_button' => $this->displayToggleButton(), 'toggle_button' => $this->displayToggleButton(),
'auto_translate' => $this->displayAutoTranslate(),
'tabsArray' => $tabs_array, 'tabsArray' => $tabs_array,
'textarea_sized' => TEXTAREA_SIZED, 'textarea_sized' => TEXTAREA_SIZED,
'type' => 'front' 'type' => 'front'
); );
// Add js variables needed for autotranslate
$this->tpl_view_vars = array_merge($this->tpl_view_vars, $this->initAutoTranslate());
$this->initToolbar(); $this->initToolbar();
$this->base_tpl_view = 'translation_form.tpl'; $this->base_tpl_view = 'translation_form.tpl';
return parent::initView(); return parent::initView();
@@ -1068,13 +1036,15 @@ class AdminTranslationsControllerCore extends AdminController
'suoshin_exceeded' => $this->suhosin_limit_exceed, 'suoshin_exceeded' => $this->suhosin_limit_exceed,
'url_submit' => self::$currentIndex.'&submitTranslationsBack=1&token='.$this->token, 'url_submit' => self::$currentIndex.'&submitTranslationsBack=1&token='.$this->token,
'toggle_button' => $this->displayToggleButton(), 'toggle_button' => $this->displayToggleButton(),
'auto_translate' => $this->displayAutoTranslate(),
'tabsArray' => $tabs_array, 'tabsArray' => $tabs_array,
'missing_translations' => $missing_translations, 'missing_translations' => $missing_translations,
'textarea_sized' => TEXTAREA_SIZED, 'textarea_sized' => TEXTAREA_SIZED,
'type' => 'back' 'type' => 'back'
); );
// Add js variables needed for autotranslate
$this->tpl_view_vars = array_merge($this->tpl_view_vars, $this->initAutoTranslate());
$this->initToolbar(); $this->initToolbar();
$this->base_tpl_view = 'translation_form.tpl'; $this->base_tpl_view = 'translation_form.tpl';
return parent::initView(); return parent::initView();