Allow select the sub language to translate extra fields - refs BT#11015

ofaj
Angel Fernando Quiroz Campos 9 years ago
parent e31f89a720
commit e89c2f3f39
  1. 75
      main/extrafield/translate.php
  2. 27
      main/inc/lib/extra_field.lib.php
  3. 8
      main/template/default/extrafield/translate.tpl
  4. 2
      src/Chamilo/CoreBundle/Entity/Language.php
  5. 28
      src/Chamilo/CoreBundle/Entity/Repository/LanguageRepository.php

@ -0,0 +1,75 @@
<?php
/* For licensing terms, see /license.txt */
$cidReset = true;
require_once '../inc/global.inc.php';
api_protect_admin_script();
$em = Database::getManager();
$extraFieldInfo = 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'];
} elseif (isset($_GET['extra_field_option'])) {
$extraFieldOptionInfo = ExtraFieldOption::getInfoById($_GET['extra_field_option'], false);
$variableLanguage = '$' . api_underscore_to_camel_case($extraFieldOptionInfo['display_text']);
$originalName = $extraFieldOptionInfo['display_text'];
}
if (empty($extraFieldInfo) || empty($variableLanguage) || empty($originalName)) {
api_not_allowed(true);
}
$languageId = isset($_GET['language']) ? intval($_GET['language']) : 0;
$languages = $em
->getRepository('ChamiloCoreBundle:Language')
->findAllPlatformSubLanguages();
$languagesOptions = [0 => get_lang('None')];
foreach ($languages as $language) {
$languagesOptions[$language->getId()] = $language->getOriginalName();
}
$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->addSelect('language', get_lang('Language'), $languagesOptions);
if ($languageId) {
$languageInfo = api_get_language_info($languageId);
$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' => $variableLanguage,
'original_name' => $originalName,
'language' => $languageId
]);
$form->addRule('language', get_lang('Required'), 'required');
$form->freeze(['variable_language', 'original_name']);
$view = new Template(get_lang('AddWordForTheSubLanguage'));
$view->assign('form', $form->returnForm());
$template = $view->get_template('extrafield/translate.tpl');
$content = $view->fetch($template);
$view->assign('content', $content);
$view->display_one_col_template();

@ -1763,25 +1763,14 @@ EOF;
$form->addElement('header', $header);
$platformLanguage = api_get_setting('platformLanguage');
$languageId = api_get_language_id($platformLanguage);
$languageInfo = api_get_language_info($languageId);
if ($action === 'edit' && $languageInfo['parent_id']) {
$translateUrl = api_get_path(WEB_CODE_PATH) . 'admin/sub_language.php?' . http_build_query([
'id' => $languageInfo['parent_id'],
'action' => 'registersublanguage',
'sub_language_id' => $languageInfo['id'],
'extra_field' => $id
]);
$translateButton = Display::toolbarButton(get_lang('TranslateThisTerm'), $translateUrl, 'language', 'link');
$form->addText(
'display_text',
[get_lang('Name'), $translateButton]
);
} else {
$form->addText('display_text', get_lang('Name'));
}
$translateUrl = api_get_path(WEB_CODE_PATH) . 'extrafield/translate.php?' . http_build_query([
'extra_field' => $id
]);
$translateButton = Display::toolbarButton(get_lang('TranslateThisTerm'), $translateUrl, 'language', 'link');
$form->addText(
'display_text',
[get_lang('Name'), $translateButton]
);
// Field type
$types = self::get_field_types();

@ -0,0 +1,8 @@
{{ form }}
<script>
$(document).on('ready', function () {
$('select[name="language"]').on('change', function () {
location.href += '&language=' + this.value;
});
});
</script>

@ -10,7 +10,7 @@ use Doctrine\Common\Collections\ArrayCollection;
* Language
*
* @ORM\Table(name="language", indexes={@ORM\Index(name="idx_language_dokeos_folder", columns={"dokeos_folder"})})
* @ORM\Entity
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Entity\Repository\LanguageRepository")
*/
class Language
{

@ -0,0 +1,28 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Entity\Repository;
use Doctrine\ORM\EntityRepository;
class LanguageRepository extends EntityRepository
{
/**
* Get all the sub languages that are made available by the admin.
* @return array
*/
public function findAllPlatformSubLanguages()
{
$qb = $this->createQueryBuilder('l');
$qb->select('l')
->where(
$qb->expr()->eq('l.available', true)
)
->andWhere(
$qb->expr()->isNotNull('l.parent')
);
return $qb->getQuery()->getResult();
}
}
Loading…
Cancel
Save