/** * Get all available languages of a certain record. * * @param mixed $mixID The ID of the record to retrieve. * * @return InterfaceGeneralCollection */ public function getLanguages($mixID) { $objCollection = $this->getEmptyCollection(); if ($this->objMetaModel->isTranslated()) { foreach ($this->objMetaModel->getAvailableLanguages() as $strLangCode) { $objModel = new GeneralModelDefault(); $objModel->setID($strLangCode); $objModel->setProperty("name", $GLOBALS['TL_LANG']['LNG'][$strLangCode]); $objModel->setProperty("active", $this->getCurrentLanguage() == $strLangCode); $objCollection->add($objModel); } if ($objCollection->length() > 0) { return $objCollection; } } return null; }
protected function prepareJumpToMcw(IMetaModel $objMetaModel) { $arrwidget = array(); if ($objMetaModel->isTranslated()) { $this->loadLanguageFile('languages'); $arrLanguages = array(); foreach ((array) $objMetaModel->getAvailableLanguages() as $strLangCode) { $arrLanguages[$strLangCode] = $GLOBALS['TL_LANG']['LNG'][$strLangCode]; } asort($arrLanguages); $GLOBALS['TL_DCA']['tl_metamodel_rendersettings']['fields']['jumpTo']['minCount'] = count($arrLanguages); $GLOBALS['TL_DCA']['tl_metamodel_rendersettings']['fields']['jumpTo']['maxCount'] = count($arrLanguages); $GLOBALS['TL_DCA']['tl_metamodel_rendersettings']['fields']['jumpTo']['eval']['columnFields']['langcode']['options'] = $arrLanguages; } else { $GLOBALS['TL_DCA']['tl_metamodel_rendersettings']['fields']['jumpTo']['minCount'] = 1; $GLOBALS['TL_DCA']['tl_metamodel_rendersettings']['fields']['jumpTo']['maxCount'] = 1; $GLOBALS['TL_DCA']['tl_metamodel_rendersettings']['fields']['jumpTo']['eval']['columnFields']['langcode']['options'] = array('xx' => $GLOBALS['TL_LANG']['tl_metamodel_rendersettings']['jumpTo_allLanguages']); } }
/** * Create a widget for naming contexts. Use the language and translation information from the MetaModel. * * @param IMetaModel $objMetaModel The metamodel * * @param string $strLabelLang The label to use for the language indicator * * @param string $strLabelValue The label to use for the input field. * * @param bool $blnIsTextarea If true, the widget will become a textarea, false otherwise. * * @param array $arrValues The values for the widget, needed to highlight the fallback language. * * @return array */ public function makeMultiColumnName(IMetaModel $objMetaModel, &$strLabelLang, &$strLabelValue, $blnIsTextarea, $arrValues) { $arrwidget = array(); if (!$objMetaModel->isTranslated()) { $arrwidget = array('inputType' => 'text', 'eval' => array('tl_class' => 'w50')); } else { $this->loadLanguageFile('languages'); $arrLanguages = array(); foreach ((array) $objMetaModel->getAvailableLanguages() as $strLangCode) { $arrLanguages[$strLangCode] = $GLOBALS['TL_LANG']['LNG'][$strLangCode]; } asort($arrLanguages); // Ensure we have the values present. if (empty($arrValues)) { foreach ((array) $objMetaModel->getAvailableLanguages() as $strLangCode) { $arrValues[$strLangCode] = ''; } } $arrRowClasses = array(); foreach (array_keys(deserialize($arrValues)) as $strLangcode) { $arrRowClasses[] = $strLangcode == $objMetaModel->getFallbackLanguage() ? 'fallback_language' : 'normal_language'; } $arrwidget = array('inputType' => 'multiColumnWizard', 'eval' => array('minCount' => count($arrLanguages), 'maxCount' => count($arrLanguages), 'disableSorting' => true, 'tl_class' => 'clr', 'columnFields' => array('langcode' => array('label' => &$strLabelLang, 'exclude' => true, 'inputType' => 'justtextoption', 'options' => $arrLanguages, 'eval' => array('rowClasses' => $arrRowClasses, 'valign' => 'center', 'style' => 'min-width:75px;display:block;')), 'value' => array('label' => &$strLabelValue, 'exclude' => true, 'inputType' => $blnIsTextarea ? 'textarea' : 'text', 'eval' => array('rowClasses' => $arrRowClasses, 'style' => 'width:400px;', 'rows' => 3))))); } return $arrwidget; }