/** * This methid is used to generate an infostructur array, which will be * renderd as a Form * * @param tx_languagevisibility_element $changeableElement * @param array $languageList * @param string $itemFormElName * @param boolean $isOverlay * @return unknown */ function _getLanguageInfoStructurListForElementAndLanguageList($changeableElement, $languageList, $itemFormElName, $isOverlay) { $visibility = t3lib_div::makeInstance('tx_languagevisibility_visibilityService'); $infosStruct = array(); foreach ($languageList as $language) { $infoitem = array('visible' => $visibility->isVisible($language, $changeableElement), 'languageTitle' => $language->getTitle($this->pageId), 'languageFlag' => $language->getFlagImg($this->pageId), 'hasTranslation' => $changeableElement->hasTranslation($language->getUid()), 'isTranslation' => $isOverlay, 'isVisible' => $visibility->isVisible($language, $changeableElement), 'visibilityDescription' => $visibility->getVisibilityDescription($language, $changeableElement)); //if there is no access to language - and localsettings exist, then do not show select box //this is to not be able as an translator to override languagesetting $currentSetting = $changeableElement->getLocalVisibilitySetting($language->getUid()); $currentOptionsForUserAndLanguage = tx_languagevisibility_beservices::getAvailableOptionsForLanguage($language, $isOverlay, $changeableElement); if ($currentSetting == '' || isset($currentOptionsForUserAndLanguage[$currentSetting])) { if ($isOverlay) { $defaultSelect = $changeableElement->getVisibilitySettingStoredInOverlayRecord($language->getUid()); $visibilityValue = $changeableElement->getVisibilitySettingStoredInDefaultRecord($language->getUid()); $visibilityString = $currentOptionsForUserAndLanguage[$visibilityValue]; } else { $defaultSelect = $changeableElement->getVisibilitySettingStoredInDefaultRecord($language->getUid()); $visibilityValue = $changeableElement->getVisibilitySettingStoredInOverlayRecord($language->getUid()); $visibilityString = $currentOptionsForUserAndLanguage[$visibilityValue]; } if ($this->isNewElement && $defaultSelect == '') { if ($this->modTSconfig['language.'][$language->getUid() . '.']['defaultVisibilityOnCreate'] != '') { $defaultSelect = $this->modTSconfig['language.'][$language->getUid() . '.']['defaultVisibilityOnCreate']; } } $selectBox = $this->_getSelectBox($language->getUid(), $currentOptionsForUserAndLanguage, $defaultSelect, $itemFormElName); } else { $selectBox = '<input type="hidden" name="' . $itemFormElName . '[' . $language->getUid() . ']" value="' . $currentSetting . '" ></input>(' . $currentSetting . ')'; } if ($isOverlay) { $infoitem['overlayVisibility'] = $selectBox; $infoitem['originalVisibility'] = $visibilityString; } else { $infoitem['overlayVisibility'] = $visibilityString; $infoitem['originalVisibility'] = $selectBox; } $infosStruct[] = $infoitem; } return $infosStruct; }
/** * This method is used to create an visibility array with the default settings * for all languages. * * @return array */ public static function getDefaultVisibilityArray() { /* @var $languageRep tx_languagevisibility_languagerepository */ $languageRep = t3lib_div::makeInstance('tx_languagevisibility_languagerepository'); $languageList = $languageRep->getLanguages(); $default = array(); foreach ($languageList as $language) { $options = tx_languagevisibility_beservices::getAvailableOptionsForLanguage($language); $default[$language->getUid()] = array_shift(array_keys($options)); } return $default; }