. * * PHP version 5 * @copyright cgo IT, 2012-2013 * @author Carsten Götzinger (info@cgo-it.de) * @package aeo * @license GNU/LGPL * @filesource */ /** * palettes */ $GLOBALS['TL_DCA']['tl_settings']['palettes']['__selector__'][] = 'aeo_replace_standard_obfuscation'; $GLOBALS['TL_DCA']['tl_settings']['palettes']['default'] .= ';{aeo_legend:hide},aeo_replace_standard_obfuscation'; /** * Add subpalettes to tl_settings */ $GLOBALS['TL_DCA']['tl_settings']['subpalettes']['aeo_replace_standard_obfuscation'] = 'aeo_use_rot_13,aeo_obfuscation_method,aeo_virtual_path,aeo_jump_to_no_js'; /** * fields */ $GLOBALS['TL_DCA']['tl_settings']['fields']['aeo_replace_standard_obfuscation'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_settings']['aeo_replace_standard_obfuscation'], 'default' => '', 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('tl_class'=>'w50', 'submitOnChange'=>true) ); $GLOBALS['TL_DCA']['tl_settings']['fields']['aeo_use_rot_13'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_settings']['aeo_use_rot_13'], 'default' => '', 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('tl_class'=>'w50') ); $GLOBALS['TL_DCA']['tl_settings']['fields']['aeo_virtual_path'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_settings']['aeo_virtual_path'], 'default' => '', 'exclude' => true, 'inputType' => 'text', 'eval' => array('decodeEntities'=>true, 'mandatory'=>true, 'tl_class'=>'w50', 'trailingSlash'=>false) ); $GLOBALS['TL_DCA']['tl_settings']['fields']['aeo_obfuscation_method'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_settings']['aeo_obfuscation_method'], 'default' => 'shorten', 'exclude' => true, 'inputType' => 'select', 'options' => array('shorten', 'rtl', 'nullspan'), 'reference' => &$GLOBALS['TL_LANG']['tl_settings'], 'eval' => array('helpwizard'=>true, 'mandatory'=>true, 'tl_class'=>'w50') ); $GLOBALS['TL_DCA']['tl_settings']['fields']['aeo_jump_to_no_js'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_settings']['aeo_jump_to_no_js'], 'exclude' => true, 'inputType' => 'multiColumnWizard', 'save_callback' => array( array("tl_settings_aeo", "checkForDuplicateOrNoLanguageFallback"), array("tl_settings_aeo", "checkForDuplicateLanguage"), array("tl_settings_aeo", "checkForModuleOrCE") ), 'eval' => array( 'style' => 'width:100%;', 'tl_class' => 'clr', 'columnFields' => array( 'aeo_language_fallback' => array( 'label' => &$GLOBALS['TL_LANG']['tl_settings']['aeo_language_fallback'], 'default' => '', 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array(doNotCopy => true, multiple => false, 'tl_class' => 'm12', 'style' => 'width:50px; padding-bottom: 3px;', 'includeBlankOption' => true), ), 'aeo_language' => array( 'label' => &$GLOBALS['TL_LANG']['tl_settings']['aeo_language'], 'exclude' => true, 'inputType' => 'select', 'options_callback' => array("tl_settings_aeo", "getAvailableLanguages"), 'eval' => array(doNotCopy => true, 'mandatory' => true, 'tl_class' => 'm12', 'style' => 'width:210px; padding-bottom: 3px; margin-top: 3px;', 'includeBlankOption' => true), ), 'aeo_redirecturl' => array( 'label' => &$GLOBALS['TL_LANG']['tl_settings']['aeo_redirecturl'], 'exclude' => true, 'inputType' => 'pageTree', 'eval' => array('mandatory' => true, 'fieldType' => 'radio', 'tl_class' => 'clr'), 'foreignKey' => 'tl_page.title', 'sql' => "int(10) unsigned NOT NULL default '0'", 'relation' => array('type'=>'hasOne', 'load'=>'lazy') ) ) ) ); class tl_settings_aeo extends \Backend { /** * Alle unterschiedlichen Seitensprachen suchen und zurückgeben * * @return array */ public function getAvailableLanguages() { $this->loadLanguageFile('languages'); include(TL_ROOT . '/system/config/languages.php'); $arrReturn = array(); $arrLanguages = array(); $objResult = $this->Database->prepare("SELECT DISTINCT language FROM tl_page WHERE type = 'root'")->execute()->fetchAllAssoc(); foreach (array_values($objResult) as $value) { array_push($arrLanguages, strtolower($value['language'])); } if (in_array('i18nl10n', $this->Config->getActiveModules())) { $languages = \I18nl10n\Classes\I18nl10n::getInstance()->getAvailableLanguages(true, true); foreach ($languages as $language) { array_push($arrLanguages, strtolower($language)); } $arrLanguages = array_unique($arrLanguages); } foreach ($arrLanguages as $language) { $arrReturn[$language] = strlen($GLOBALS['TL_LANG']['LNG'][$language]) ? utf8_romanize($GLOBALS['TL_LANG']['LNG'][$language]).' ('.strtoupper($language).')' : strtoupper($language); } return $arrReturn; } public function checkForDuplicateOrNoLanguageFallback($varVal, \DataContainer $dc) { $arrValue = deserialize($varVal); $count = 0; foreach ($arrValue as $key => $value) { if ($value['aeo_language_fallback']) { $count++; } if ($count > 1) { $_SESSION["TL_ERROR"][] = sprintf($GLOBALS['TL_LANG']['aeo']['aeo_error_duplicate'], $GLOBALS['TL_LANG']['tl_settings']['aeo_language_fallback'][0]); } } if ($count == 0) { $_SESSION["TL_ERROR"][] = sprintf($GLOBALS['TL_LANG']['ERR']['mandatory'], $GLOBALS['TL_LANG']['tl_settings']['aeo_language_fallback'][0]); } return serialize($arrValue); } /** * Prüfen, ob eine Sprache zwei mal gewählt wurde * * @param string $varVal * @param DataContainer $dc * @return string */ public function checkForDuplicateLanguage($varVal, \DataContainer $dc) { $arrValue = deserialize($varVal); $arrValueFound = array(); foreach ($arrValue as $key => $value) { if (in_array($value["aeo_language"], $arrValueFound)) { $_SESSION["TL_ERROR"][] = sprintf($GLOBALS['TL_LANG']['aeo']['aeo_error_duplicate'], $GLOBALS['TL_LANG']['tl_settings']['aeo_language'][0]); } else { $arrValueFound[] = $value["aeo_language"]; } } return serialize($arrValue); } /** * Prüfen, ob die Weiterleitungsseiten alle das Modul oder CE * "AEO" beinhalten. * * @param string $varVal * @param DataContainer $dc * @return string */ public function checkForModuleOrCE($varVal, \DataContainer $dc) { $this->import('\\Database', 'Database'); $this->import('aeo\\AeoUtil', 'AeoUtil'); $arrValue = deserialize($varVal); foreach ($arrValue as $key => $value) { $objResult = $this->Database->prepare("SELECT count(*) as anzahl FROM tl_page p, tl_article a, tl_content c LEFT JOIN tl_module m ON c.module = m.id WHERE p.id = a.pid AND a.id = c.pid AND c.invisible <> 1 AND ( m.type = 'aeo' OR c.type = 'aeo' ) AND p.id = ?")->limit(1)->execute($value["aeo_redirecturl"]); if (($objResult->anzahl) == 0) { $_SESSION["TL_ERROR"][] = &$GLOBALS['TL_LANG']['aeo']['aeo_error_redirect']; } } return serialize($arrValue); } public function getUserFullName() { $this->import('jicw\\JICWHelper', 'JICWHelper'); return $this->JICWHelper->getUserFullName(); } public function getUserEmail() { $this->import('jicw\\JICWHelper', 'JICWHelper'); return $this->JICWHelper->getUserEmail(); } public function getInstalledModules() { $this->import('jicw\\JICWHelper', 'JICWHelper'); return $this->JICWHelper->getInstalledModules(); } } ?>