/** * Setzt eventuelle Sprachparameter, * damit nur valide Daten für die aktuelle Sprache ausgelesen werden. * * @param array &$fields * @param array &$options * @return void */ protected function handleLanguageOptions(&$fields, &$options) { if (!isset($options['i18n']) && !isset($options['ignorei18n']) && !isset($options['enablefieldsoff'])) { $tableName = $this->getEmptyModel()->getTableName(); $languageField = tx_rnbase_util_TCA::getLanguageFieldForTable($tableName); // Die Sprache prüfen wir nur, wenn ein Sprachfeld gesetzt ist. if (!empty($languageField)) { $tsfe = tx_rnbase_util_TYPO3::getTSFE(); $languages = array(); if (isset($options['additionali18n'])) { $languages = tx_rnbase_util_Strings::trimExplode(',', $options['additionali18n'], TRUE); } // for all languages $languages[] = '-1'; // Wenn eine bestimmte Sprache gesetzt ist, // laden wir diese ebenfalls. if (is_object($tsfe) && $tsfe->sys_language_content) { $languages[] = $tsfe->sys_language_content; } else { // default language $languages[] = '0'; } $options['i18n'] = implode(',', array_unique($languages, SORT_NUMERIC)); } } }
/** * Returns the Language id of the record. * * @return int */ public function getSysLanguageUid() { $uid = 0; $tableName = $this->getTableName(); if (!empty($tableName)) { $sysLanguageUidField = tx_rnbase_util_TCA::getLanguageFieldForTable($tableName); if (!$this->isPropertyEmpty($sysLanguageUidField)) { $uid = (int) $this->getProperty($sysLanguageUidField); } } return $uid; }
/** * Adds the column 'sys_language_uid' to the be list. * * @param array $columns * @param tx_rnbase_mod_IDecorator $oDecorator * @return tx_mklib_mod1_searcher_abstractBase */ protected function addDecoratorColumnLanguage(array &$columns, tx_rnbase_mod_IDecorator &$oDecorator = NULL) { if (!empty($this->options['baseTableName'])) { tx_rnbase::load('tx_rnbase_util_TCA'); $sysLanguageUidField = tx_rnbase_util_TCA::getLanguageFieldForTable($this->options['baseTableName']); if (!empty($sysLanguageUidField)) { $columns['sys_language_uid'] = array('title' => 'label_tableheader_language', 'decorator' => &$oDecorator); } } return $this; }
public static function getAddLocalizationLinks(tx_rnbase_model_base $item, tx_rnbase_mod_BaseModule $mod = NULL) { if ($item->getUid() != $item->getProperty('uid') || $item->getSysLanguageUid() !== 0) { return ''; } $out = ''; foreach (self::getLangRecords($item->getPid()) as $lang) { // skip, if the be user hase no access to for the language! if (!$GLOBALS['BE_USER']->checkLanguageAccess($lang['uid'])) { continue; } // skip, if a overlay for this language allready exists tx_rnbase::load('tx_rnbase_util_TCA'); $parentField = tx_rnbase_util_TCA::getTransOrigPointerFieldForTable($item->getTableName()); $sysLanguageUidField = tx_rnbase_util_TCA::getLanguageFieldForTable($item->getTableName()); $overlays = tx_rnbase_util_DB::doSelect('uid', $item->getTableName(), array('where' => implode(' AND ', array($parentField . '=' . $item->getUid(), $sysLanguageUidField . '=' . (int) $lang['uid'])), 'limit' => 1)); if (!empty($overlays)) { continue; } /* @var $mod tx_rnbase_mod_BaseModule */ if (!$mod instanceof tx_rnbase_mod_BaseModule) { $mod = $GLOBALS['SOBE']; } $onclick = $mod->getDoc()->issueCommand('&cmd[' . $item->getTableName() . '][' . $item->getUid() . '][localize]=' . $lang['uid']); $onclick = 'window.location.href=\'' . $onclick . '\'; return false;'; $out .= sprintf('<a href="#" onclick="%1$s">%2$s</a>', htmlspecialchars($onclick), self::getLangSpriteIcon($lang, array('show_title' => FALSE))); } return $out; }
/** * * @return void * * @group unit * @test */ public function testGetLanguageFieldForTableWithTtContentTable() { $this->assertEquals('sys_language_uid', tx_rnbase_util_TCA::getLanguageFieldForTable('tt_content'), 'wrong languageField returned'); }