Improve code + Redirect when extra field translation is add - refs BT#11015

ofaj
Angel Fernando Quiroz Campos 9 years ago
parent aee5e99740
commit fecb916128
  1. 38
      main/admin/sub_language.php
  2. 22
      main/admin/sub_language_ajax.inc.php
  3. 43
      main/extrafield/translate.php
  4. 35
      main/inc/lib/extra_field.lib.php
  5. 34
      main/inc/lib/extra_field_option.lib.php
  6. 9
      src/Chamilo/CoreBundle/Entity/ExtraField.php
  7. 9
      src/Chamilo/CoreBundle/Entity/ExtraFieldOptions.php

@ -312,44 +312,6 @@ if (isset($_REQUEST['txt_search_word'])) {
}
}
if (
(isset($_GET['extra_field']) && !empty($_GET['extra_field'])) ||
(isset($_GET['extra_field_option']) && !empty($_GET['extra_field_option']))
) {
if (isset($_GET['extra_field'])) {
$extraFieldInfo = ExtraField::getInfoById($_GET['extra_field'], false);
$variable_language = '$' . api_underscore_to_camel_case($extraFieldInfo['variable']);
$original_name = $extraFieldInfo['display_text'];
} elseif (isset($_GET['extra_field_option'])) {
$extraFieldOptionInfo = ExtraFieldOption::getInfoById($_GET['extra_field_option'], false);
$variable_language = '$' . api_underscore_to_camel_case($extraFieldOptionInfo['display_text']);
$original_name = $extraFieldOptionInfo['display_text'];
}
$platformLanguage = api_get_setting('platformLanguage');
$languageId = api_get_language_id($platformLanguage);
$languageInfo = api_get_language_info($languageId);
$translateUrl = api_get_path(WEB_CODE_PATH) . 'admin/sub_language_ajax.inc.php';
$form = new FormValidator('new_lang_variable', 'POST', $translateUrl);
$form->addHeader(get_lang('AddWordForTheSubLanguage'));
$form->addText('variable_language', get_lang('LanguageVariable'), false);
$form->addText('original_name', get_lang('OriginalName'), false);
$form->addText('new_language', get_lang('SubLanguage'));
$form->addHidden('file_id', 0);
$form->addHidden('id', $languageInfo['parent_id']);
$form->addHidden('sub', $languageInfo['id']);
$form->addHidden('sub_language_id', $languageInfo['id']);
$form->addHidden('redirect', true);
$form->addButtonSave(get_lang('Save'));
$form->setDefaults([
'variable_language' => $variable_language,
'original_name' => $original_name
]);
$form->freeze(['variable_language', 'original_name']);
$form->display();
}
$parameters = array(
'id' => intval($_GET['id']),
'sub_language_id' => intval($_GET['sub_language_id']),

@ -45,16 +45,26 @@ if (isset($new_language) && isset($language_variable) && isset($file_id)) {
}
}
if (isset($_REQUEST['redirect'])) {
if (isset($_REQUEST['redirect'], $_REQUEST['extra_field_type'])) {
Display::addFlash(
Display::return_message(get_lang('TheNewWordHasBeenAdded'), 'success')
);
header('Location: ' . api_get_path(WEB_CODE_PATH) . 'admin/sub_language.php?' . http_build_query([
'id' => $id_language,
'sub_language_id' => $sub_language_id,
'txt_search_word' => ltrim($language_variable, '$')
]));
$redirectUrl = api_get_path(WEB_CODE_PATH) . 'admin/extra_fields.php?type=';
switch ($_REQUEST['extra_field_type']) {
case \Chamilo\CoreBundle\Entity\ExtraField::USER_FIELD_TYPE:
$redirectUrl .= 'user';
break;
case \Chamilo\CoreBundle\Entity\ExtraField::COURSE_FIELD_TYPE:
$redirectUrl .= 'course';
break;
case \Chamilo\CoreBundle\Entity\ExtraField::SESSION_FIELD_TYPE:
$redirectUrl .= 'session';
break;
}
header("Location: $redirectUrl");
exit;
}

@ -9,22 +9,23 @@ api_protect_admin_script();
$em = Database::getManager();
$extraFieldInfo = null;
$extraFieldOptionInfo = null;
$extraField = null;
$extraFieldOption = null;
$variableLanguage = null;
$originalName = null;
if (isset($_GET['extra_field'])) {
$extraFieldInfo = ExtraField::getInfoById($_GET['extra_field'], false);
$variableLanguage = '$' . api_underscore_to_camel_case($extraFieldInfo['variable']);
$originalName = $extraFieldInfo['display_text'];
$extraField = $em->find('ChamiloCoreBundle:ExtraField', intval($_GET['extra_field']));
$variableLanguage = '$' . api_underscore_to_camel_case($extraField->getVariable());
$originalName = $extraField->getDisplayText(false);
} elseif (isset($_GET['extra_field_option'])) {
$extraFieldOptionInfo = ExtraFieldOption::getInfoById($_GET['extra_field_option'], false);
$variableLanguage = '$' . ExtraFieldOption::getLanguageVariable($extraFieldOptionInfo['display_text']);
$originalName = $extraFieldOptionInfo['display_text'];
$extraFieldOption = $em->find('ChamiloCoreBundle:ExtraFieldOptions', intval($_GET['extra_field_option']));
$extraField = $extraFieldOption->getField();
$variableLanguage = '$' . ExtraFieldOption::getLanguageVariable($extraFieldOption->getDisplayText());
$originalName = $extraFieldOption->getDisplayText(false);
}
if ((empty($extraFieldInfo) && empty($extraFieldOptionInfo)) || empty($variableLanguage) || empty($originalName)) {
if (!$extraField || empty($variableLanguage) || empty($originalName)) {
api_not_allowed(true);
}
@ -57,6 +58,7 @@ if ($languageId) {
$form->addHidden('sub', $languageInfo['id']);
$form->addHidden('sub_language_id', $languageInfo['id']);
$form->addHidden('redirect', true);
$form->addHidden('extra_field_type', $extraField->getExtraFieldType());
$form->addButtonSave(get_lang('Save'));
}
@ -68,6 +70,29 @@ $form->setDefaults([
$form->addRule('sub_language', get_lang('Required'), 'required');
$form->freeze(['variable_language', 'original_name']);
$interbreadcrumb[] = ['url' => api_get_path(WEB_CODE_PATH) . 'admin', 'name' => get_lang('Administration')];
switch ($extraField->getExtraFieldType()) {
case \Chamilo\CoreBundle\Entity\ExtraField::USER_FIELD_TYPE:
$interbreadcrumb[] = [
'url' => api_get_path(WEB_CODE_PATH) . 'admin/extra_fields.php?type=user',
'name' => get_lang('UserFields')
];
break;
case \Chamilo\CoreBundle\Entity\ExtraField::COURSE_FIELD_TYPE:
$interbreadcrumb[] = [
'url' => api_get_path(WEB_CODE_PATH) . 'admin/extra_fields.php?type=course',
'name' => get_lang('CourseFields')
];
break;
case \Chamilo\CoreBundle\Entity\ExtraField::SESSION_FIELD_TYPE:
$interbreadcrumb[] = [
'url' => api_get_path(WEB_CODE_PATH) . 'admin/extra_fields.php?type=session',
'name' => get_lang('SessionFields')
];
break;
}
$view = new Template(get_lang('AddWordForTheSubLanguage'));
$view->assign('form', $form->returnForm());
$template = $view->get_template('extrafield/translate.tpl');

@ -2417,39 +2417,4 @@ JAVASCRIPT;
return isset($GLOBALS[$camelCase]) ? $GLOBALS[$camelCase] : $defaultDisplayText;
}
/**
* Get the info from an extra field by its id
* @param int $id
* @param bool $translateDisplayText
* @return array
* @throws \Doctrine\ORM\ORMException
* @throws \Doctrine\ORM\OptimisticLockException
* @throws \Doctrine\ORM\TransactionRequiredException
*/
public static function getInfoById($id, $translateDisplayText = true)
{
$extraField = Database::getManager()
->find('ChamiloCoreBundle:ExtraField', $id);
$objExtraField = null;
switch ($extraField->getExtraFieldType()) {
case \Chamilo\CoreBundle\Entity\ExtraField::USER_FIELD_TYPE:
$objExtraField = new self('user');
break;
case \Chamilo\CoreBundle\Entity\ExtraField::COURSE_FIELD_TYPE:
$objExtraField = new self('course');
break;
case \Chamilo\CoreBundle\Entity\ExtraField::SESSION_FIELD_TYPE:
$objExtraField = new self('session');
break;
}
if (!$objExtraField) {
return [];
}
return $objExtraField->get($extraField->getId(), $translateDisplayText);
}
}

@ -794,40 +794,6 @@ class ExtraFieldOption extends Model
return $variableLanguage;
}
/**
* Get the info from an extra field option by its id
* @param int $id
* @param bool $translateDisplayText
* @return array
* @throws \Doctrine\ORM\ORMException
* @throws \Doctrine\ORM\OptimisticLockException
* @throws \Doctrine\ORM\TransactionRequiredException
*/
public static function getInfoById($id, $translateDisplayText = true)
{
$extraField = Database::getManager()->find('ChamiloCoreBundle:ExtraFieldOptions', $id);
$objExtraField = null;
switch ($extraField->getField()->getExtraFieldType()) {
case \Chamilo\CoreBundle\Entity\ExtraField::USER_FIELD_TYPE:
$objExtraField = new self('user');
break;
case \Chamilo\CoreBundle\Entity\ExtraField::COURSE_FIELD_TYPE:
$objExtraField = new self('course');
break;
case \Chamilo\CoreBundle\Entity\ExtraField::SESSION_FIELD_TYPE:
$objExtraField = new self('session');
break;
}
if (!$objExtraField) {
return [];
}
return $objExtraField->get($extraField->getId(), $translateDisplayText);
}
/**
* @param null $options
* @return array

@ -181,11 +181,16 @@ class ExtraField extends BaseAttribute
}
/**
* @param bool $translated Optional. Whether translate the display text
* @return string
*/
public function getDisplayText()
public function getDisplayText($translated = true)
{
return \ExtraField::translateDisplayName($this->variable, $this->displayText);
if ($translated) {
return \ExtraField::translateDisplayName($this->variable, $this->displayText);
}
return $this->displayText;
}
/**

@ -135,11 +135,16 @@ class ExtraFieldOptions
}
/**
* @param bool $translated Optional. Whether translate the display text
* @return string
*/
public function getDisplayText()
public function getDisplayText($translated = true)
{
return \ExtraFieldOption::translateDisplayName($this->displayText);
if ($translated) {
return \ExtraFieldOption::translateDisplayName($this->displayText);
}
return $this->displayText;
}
/**

Loading…
Cancel
Save