/** * @inheritDoc */ public function generateFieldsFromObject() { parent::generateFieldsFromObject(); $objNews = $this->getObjSourceobject(); if ($objNews->getSystemid() != class_module_system_module::getModuleByName("news")->getSystemid()) { //search the languages maintained $objLanguageManager = class_module_languages_languageset::getLanguagesetForSystemid($objNews->getSystemid()); if ($objLanguageManager != null) { $arrMaintained = $objLanguageManager->getArrLanguageSet(); $arrDD = array(); foreach ($arrMaintained as $strLanguageId => $strSystemid) { $objLanguage = new class_module_languages_language($strLanguageId); $arrDD[$strSystemid] = $this->getLang("lang_" . $objLanguage->getStrName(), "languages"); } class_module_languages_admin::enableLanguageSwitch(); class_module_languages_admin::setArrLanguageSwitchEntries($arrDD); class_module_languages_admin::setStrOnChangeHandler("window.location='" . class_link::getLinkAdminHref("news", "editNews") . (class_module_system_setting::getConfigValue("_system_mod_rewrite_") == "true" ? "?" : "&") . "systemid='+this.value+'&pe=" . class_carrier::getInstance()->getParam("pe") . "';"); class_module_languages_admin::setStrActiveKey($objNews->getSystemid()); } } $arrCats = class_module_news_category::getObjectList(); if (count($arrCats) > 0) { $arrKeyValues = array(); /** @var class_module_news_category $objOneCat */ foreach ($arrCats as $objOneCat) { $arrKeyValues[$objOneCat->getSystemid()] = $objOneCat->getStrDisplayName(); } $this->getField("cats")->setStrLabel($this->getLang("commons_categories"))->setArrKeyValues($arrKeyValues); } if (class_module_system_setting::getConfigValue("_news_news_datetime_") == "true") { $this->addField(new class_formentry_datetime($this->getStrFormname(), "objDateStart", $objNews), "datestart")->setBitMandatory(true)->setStrLabel($this->getLang("form_news_datestart")); $this->addField(new class_formentry_datetime($this->getStrFormname(), "objDateEnd", $objNews), "dateend")->setStrLabel($this->getLang("form_news_dateend")); $this->addField(new class_formentry_datetime($this->getStrFormname(), "objDateSpecial", $objNews), "datespecial")->setStrLabel($this->getLang("form_news_datespecial")); } }
/** * Returns the ready switch-htmlcode * * @return string */ public function loadData() { //fallback for old elements not yet using the template if (!isset($this->arrElementData["char1"]) || $this->arrElementData["char1"] == "") { $this->arrElementData["char1"] = "languageswitch.tpl"; } $arrObjLanguages = class_module_languages_language::getObjectList(true); //load the languageset in order to generate more specific switches $objLanguageset = class_module_languages_languageset::getLanguagesetForSystemid($this->getParam("systemid")); //Iterate over all languages $strRows = ""; foreach ($arrObjLanguages as $objOneLanguage) { //Check, if the current page has elements $objPage = class_module_pages_page::getPageByName($this->getPagename()); $objPage->setStrLanguage($objOneLanguage->getStrName()); if ($objPage === null) { continue; } if ((int) $objPage->getNumberOfElementsOnPage(true) == 0) { continue; } $strTargetSystemid = null; if ($objLanguageset != null) { $strTargetSystemid = $objLanguageset->getSystemidForLanguageid($objOneLanguage->getSystemid()); } //the languageswitch is content aware. check if the target id is a news-entry $strSeoAddon = ""; if (validateSystemid($strTargetSystemid)) { $objRecord = class_objectfactory::getInstance()->getObject($strTargetSystemid); $strSeoAddon = $objRecord->getStrDisplayName(); } //and the link $arrTemplate = array(); if ($strTargetSystemid === null) { $arrTemplate["href"] = getLinkPortalHref($objPage->getStrName(), "", "", "", "", $objOneLanguage->getStrName(), $strSeoAddon); } else { $arrTemplate["href"] = getLinkPortalHref($objPage->getStrName(), "", $this->getAction(), "", $strTargetSystemid, $objOneLanguage->getStrName(), $strSeoAddon); } $arrTemplate["langname_short"] = $objOneLanguage->getStrName(); $arrTemplate["langname_long"] = $this->getLang("lang_" . $objOneLanguage->getStrName()); $strTemplateRowID = $this->objTemplate->readTemplate("/element_languageswitch/" . $this->arrElementData["char1"], "languageswitch_entry"); $strTemplateActiveRowID = $this->objTemplate->readTemplate("/element_languageswitch/" . $this->arrElementData["char1"], "languageswitch_entry_active"); if ($objOneLanguage->getStrName() == $this->getStrPortalLanguage()) { $strRows .= $this->fillTemplate($arrTemplate, $strTemplateActiveRowID); } else { $strRows .= $this->fillTemplate($arrTemplate, $strTemplateRowID); } } $strTemplateWrapperID = $this->objTemplate->readTemplate("/element_languageswitch/" . $this->arrElementData["char1"], "languageswitch_wrapper"); return $this->fillTemplate(array("languageswitch_entries" => $strRows), $strTemplateWrapperID); }
/** * Since the portal may be split in different languages, * return the content lang of the current record using the common * abbreviation such as "de" or "en". * If the content is not assigned to any language, return "" instead (e.g. a single image). * * @return mixed */ public function getContentLang() { //see if the entry is assigned to a language $objSet = class_module_languages_languageset::getLanguagesetForSystemid($this->getSystemid()); if ($objSet != null && $objSet->getLanguageidForSystemid($this->getSystemid()) !== null) { $objLang = new class_module_languages_language($objSet->getLanguageidForSystemid($this->getSystemid())); return $objLang->getStrName(); } return ""; }
/** * @return void */ protected function actionRemoveFromLanguageset() { $objNews = class_objectfactory::getInstance()->getObject($this->getSystemid()); if ($objNews->rightEdit()) { $objLanguageset = class_module_languages_languageset::getLanguagesetForSystemid($this->getSystemid()); if ($objLanguageset != null) { $objLanguageset->removeSystemidFromLanguageeset($this->getSystemid()); } $this->adminReload(class_link::getLinkAdminHref($this->getArrModule("modul"), "editLanguageset", "&systemid=" . $this->getSystemid())); } }
/** * Creates a new languageset for the passed systemid and returns the new * instance. * If there's a languageset already existing, the languageset is loaded * instead of creating a new one. * * @param string $strSystemid * @param class_module_languages_language $objTargetLanguage * * @return class_module_languages_languageset */ public static function createLanguagesetForSystemid($strSystemid, $objTargetLanguage) { //already existing? $objLanguageset = class_module_languages_languageset::getLanguagesetForSystemid($strSystemid); if ($objLanguageset == null) { //create a new one $objLanguageset = new class_module_languages_languageset(""); $objLanguageset->setSystemidForLanguageid($strSystemid, $objTargetLanguage->getSystemid()); } else { if ($objLanguageset->getSystemidForLanguageid($objTargetLanguage->getSystemid()) == null) { //update the languageset $objLanguageset->setSystemidForLanguageid($strSystemid, $objTargetLanguage->getSystemid()); } } return new $objLanguageset(); }