@ -2,10 +2,10 @@ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					/* For licensing terms, see /license.txt */  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					exit;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Chamilo\CoreBundle\Entity\ExtraField;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Chamilo\CoreBundle\Entity\Language;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Chamilo\CoreBundle\Framework\Container;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Gedmo\Translatable\Entity\Translation;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$cidReset = true;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -16,73 +16,45 @@ api_protect_admin_script(); 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$em = Database::getManager();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$extraField = null;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$extraFieldOption = null;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$variableLanguage = null;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$originalName = null;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					if (isset($_GET['extra_field'])) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $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'])) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $extraFieldOption = $em->find('ChamiloCoreBundle:ExtraFieldOptions', intval($_GET['extra_field_option']));  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $extraField = $extraFieldOption->getField();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    //$variableLanguage = '$'.ExtraFieldOption::getLanguageVariable($extraFieldOption->getDisplayText());  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $originalName = $extraFieldOption->getDisplayText();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$extraFieldRepo = Container::getExtraFieldRepository();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$languageRepo = Container::getLanguageRepository();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$fieldId = (int) ($_REQUEST['id'] ?? 0);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					if (!$extraField || empty($variableLanguage) || empty($originalName)) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					/** @var ExtraField|null $extraField */  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$extraField = $extraFieldRepo->find($fieldId);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					if (null === $extraField) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    api_not_allowed(true);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$languageId = isset($_GET['sub_language']) ? (int) $_GET['sub_language'] : 0;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$currentUrl = api_get_self().'?id='.$fieldId;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$qb = $languageRepo->getAllAvailable();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$languages = $qb->getQuery()->getResult();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$languages = $em->getRepository(Language::class)->findAllSubLanguages();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$languagesOptions = [0 => get_lang('none')];  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form = new FormValidator('translate', 'POST', $currentUrl);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form->addHidden('id', $fieldId);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form->addHeader($extraField->getDisplayText());  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					foreach ($languages as $language) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $languagesOptions[$language->getId()] = $language->getOriginalName();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$repository = $em->getRepository(Translation::class);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$translations = $repository->findTranslations($extraField);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$defaults = [];  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$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('Add terms to the sub-language'));  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form->addText('variable_language', get_lang('Language variable'), false);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form->addText('original_name', get_lang('Original name'), false);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form->addSelect(  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    'sub_language',  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    [get_lang('Sub-language'), get_lang('OnlyActiveSub-languagesAreListed')],  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $languagesOptions  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					if ($languageId) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $languageInfo = api_get_language_info($languageId);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $form->addText(  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        'new_language',  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        [  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            get_lang('Translation'),  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            get_lang(  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                'If this term has already been translated, this operation will replace its translation for this sub-language.'  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ),  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ]  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    );  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $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->addHidden('extra_field_type', $extraField->getExtraFieldType());  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $form->addButtonSave(get_lang('Save'));  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					/** @var Language $language */  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					foreach ($languages as $language) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $iso = $language->getIsocode();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $variable = 'variable['.$iso.']';  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $form->addText($variable, $language->getOriginalName().' ('.$iso.')', false);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if (isset($translations[$iso]) & &  $translations[$iso]['displayText']) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $defaults['variable['.$iso.']'] = $translations[$iso]['displayText'];  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form->setDefaults([  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    'variable_language' => $variableLanguage,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    'original_name' => $originalName,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    'sub_language' => $languageId,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					]);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form->addRule('sub_language', get_lang('Required'), 'required');  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form->freeze(['variable_language', 'original_name']);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form->setDefaults($defaults);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$form->addButtonSave(get_lang('Save'));  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$interbreadcrumb[] = ['url' => api_get_path(WEB_CODE_PATH).'admin', 'name' => get_lang('Administration')];  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -107,9 +79,33 @@ switch ($extraField->getExtraFieldType()) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        break;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$view = new Template(get_lang('Add terms to the sub-language'));  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$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();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					if ($form->validate()) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    $values = $form->getSubmitValues();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    foreach ($languages as $language) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if (!isset($values['variable'][$language->getIsocode()])) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            continue;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $translation = $values['variable'][$language->getIsocode()];  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if (empty($translation)) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            continue;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $extraField = $extraFieldRepo->find($fieldId);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $extraField  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ->setTranslatableLocale($language->getIsocode())  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ->setDisplayText($translation)  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $em->persist($extraField);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $em->flush();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    Display::addFlash(Display::return_message(get_lang('Updated')));  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    api_location($currentUrl);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$tpl = new Template(get_lang('Translations'));  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$tpl->assign('form', $form->returnForm());  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$template = $tpl->get_template('extrafield/translate.html.twig');  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$content = $tpl->fetch($template);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$tpl->assign('content', $content);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					$tpl->display_one_col_template();