skill_translate.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. use Chamilo\CoreBundle\Component\Utils\ChamiloApi;
  4. use Chamilo\CoreBundle\Entity\ExtraField;
  5. use Chamilo\CoreBundle\Entity\Language;
  6. use Chamilo\CoreBundle\Entity\Skill;
  7. $cidReset = true;
  8. require_once __DIR__.'/../inc/global.inc.php';
  9. api_protect_admin_script();
  10. $em = Database::getManager();
  11. $skill = null;
  12. $extraFieldOption = null;
  13. $variableLanguage = null;
  14. $originalName = null;
  15. $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'name';
  16. if (isset($_GET['skill'])) {
  17. /** @var Skill $skill */
  18. $skill = $em->find('ChamiloCoreBundle:Skill', intval($_GET['skill']));
  19. if ($action === 'name') {
  20. $variableLanguage = ChamiloApi::getLanguageVar(
  21. $skill->getName(false),
  22. 'Skill'
  23. );
  24. $originalName = $skill->getName(false);
  25. } elseif ($action === 'code') {
  26. $variableLanguage = ChamiloApi::getLanguageVar(
  27. $skill->getShortCode(false),
  28. 'SkillCode'
  29. );
  30. $originalName = $skill->getShortCode(false);
  31. }
  32. }
  33. if (!$skill || empty($variableLanguage)) {
  34. api_not_allowed(true);
  35. }
  36. if (empty($originalName)) {
  37. Display::addFlash(
  38. Display::return_message(get_lang('CanNotTranslate'), 'error')
  39. );
  40. header('Location: '.api_get_path(WEB_CODE_PATH).'admin/skill_edit.php?id='.$skill->getId());
  41. exit;
  42. }
  43. $languageId = isset($_GET['sub_language']) ? intval($_GET['sub_language']) : 0;
  44. $languages = $em
  45. ->getRepository('ChamiloCoreBundle:Language')
  46. ->findAllPlatformSubLanguages();
  47. $languagesOptions = [0 => get_lang('None')];
  48. /** @var Language $language */
  49. foreach ($languages as $language) {
  50. $languagesOptions[$language->getId()] = $language->getOriginalName();
  51. }
  52. $translateUrl = api_get_path(WEB_CODE_PATH).'admin/sub_language_ajax.inc.php?skill='.$skill->getId();
  53. $form = new FormValidator('new_lang_variable', 'POST', $translateUrl);
  54. $form->addHeader(get_lang('AddWordForTheSubLanguage'));
  55. $form->addText('variable_language', get_lang('LanguageVariable'), false);
  56. $form->addText('original_name', get_lang('OriginalName'), false);
  57. $form->addSelect(
  58. 'sub_language',
  59. [get_lang('SubLanguage'), get_lang('OnlyActiveSubLanguagesAreListed')],
  60. $languagesOptions
  61. );
  62. if ($languageId) {
  63. $languageInfo = api_get_language_info($languageId);
  64. $form->addText(
  65. 'new_language',
  66. [get_lang('Translation'), get_lang('IfThisTranslationExistsThisWillReplaceTheTerm')]
  67. );
  68. $form->addHidden('file_id', 0);
  69. $form->addHidden('id', $languageInfo['parent_id']);
  70. $form->addHidden('sub', $languageInfo['id']);
  71. $form->addHidden('sub_language_id', $languageInfo['id']);
  72. $form->addHidden('redirect', true);
  73. $form->addButtonSave(get_lang('Save'));
  74. }
  75. $form->setDefaults([
  76. 'variable_language' => '$'.$variableLanguage,
  77. 'original_name' => $originalName,
  78. 'sub_language' => $languageId,
  79. 'new_language' => $action === 'code' ? $skill->getShortCode() : $skill->getName(),
  80. ]);
  81. $form->addRule('sub_language', get_lang('Required'), 'required');
  82. $form->freeze(['variable_language', 'original_name']);
  83. $interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('PlatformAdmin')];
  84. $interbreadcrumb[] = ['url' => 'skill_list.php', 'name' => get_lang('ManageSkills')];
  85. $view = new Template(get_lang('AddWordForTheSubLanguage'));
  86. $view->assign('form', $form->returnForm());
  87. $template = $view->get_template('extrafield/translate.tpl');
  88. $content = $view->fetch($template);
  89. $view->assign('content', $content);
  90. $view->display_one_col_template();