/**
  * 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;
 }