init files
Dieser Commit ist enthalten in:
		
							Ursprung
							
								
									d41e3b5158
								
							
						
					
					
						Commit
						16ad56ae48
					
				
					 41 geänderte Dateien mit 8754 neuen und 0 gelöschten Zeilen
				
			
		
							
								
								
									
										1071
									
								
								classes/class.modrewrite.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										1071
									
								
								classes/class.modrewrite.php
									
										
									
									
									
										Normale Datei
									
								
							
										
											
												Datei-Diff unterdrückt, da er zu groß ist
												Diff laden
											
										
									
								
							
							
								
								
									
										87
									
								
								classes/class.modrewritebase.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										87
									
								
								classes/class.modrewritebase.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,87 @@ | |||
| <?php | ||||
| /** | ||||
|  * AMR base Mod Rewrite class | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: class.modrewritebase.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Abstract base mod rewrite class. | ||||
|  * | ||||
|  * Provides some common features such as common debugging, globals/configuration | ||||
|  * access for childs. | ||||
|  * | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  */ | ||||
| abstract class ModRewriteBase { | ||||
| 
 | ||||
|     /** | ||||
|      * Initialization, is to call at least once by an child. | ||||
|      * @deprecated | ||||
|      */ | ||||
|     protected static function initialize($clientId) { | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns enabled state of mod rewrite plugin | ||||
|      * | ||||
|      * @return  bool | ||||
|      */ | ||||
|     public static function isEnabled() { | ||||
|         return (self::getConfig('use', 0) == 1) ? true : false; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Sets the enabled state of mod rewrite plugin | ||||
|      * | ||||
|      * @param  bool  $bEnabled | ||||
|      */ | ||||
|     public static function setEnabled($bEnabled) { | ||||
|         self::setConfig('use', (bool) $bEnabled); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns configuration of mod rewrite, content of gobal $cfg['mod_rewrite'] | ||||
|      * | ||||
|      * @param   string  $key  Name of configuration key | ||||
|      * @param   mixed   $default  Default value to return as a fallback | ||||
|      * @return  mixed   Desired value mr configuration, either the full configuration | ||||
|      *                  or one of the desired subpart | ||||
|      */ | ||||
|     public static function getConfig($key = null, $default = null) { | ||||
|         global $cfg; | ||||
|         if ($key == null) { | ||||
|             return $cfg['mod_rewrite']; | ||||
|         } elseif ((string) $key !== '') { | ||||
|             return (isset($cfg['mod_rewrite'][$key])) ? $cfg['mod_rewrite'][$key] : $default; | ||||
|         } else { | ||||
|             return $default; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Sets the configuration of mod rewrite, content of gobal $cfg['mod_rewrite'] | ||||
|      * | ||||
|      * @param   string  $key    Name of configuration key | ||||
|      * @param   mixed   $value  The value to set | ||||
|      */ | ||||
|     public static function setConfig($key, $value) { | ||||
|         global $cfg; | ||||
|         $cfg['mod_rewrite'][$key] = $value; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										678
									
								
								classes/class.modrewritecontroller.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										678
									
								
								classes/class.modrewritecontroller.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,678 @@ | |||
| <?php | ||||
| /** | ||||
|  * AMR controller class | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: class.modrewritecontroller.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Mod Rewrite controller class. Extracts url parts and sets some necessary globals like: | ||||
|  * - $idart | ||||
|  * - $idcat | ||||
|  * - $client | ||||
|  * - $changeclient | ||||
|  * - $lang | ||||
|  * - $changelang | ||||
|  * | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  */ | ||||
| class ModRewriteController extends ModRewriteBase { | ||||
|     // Error constants
 | ||||
| 
 | ||||
|     const ERROR_CLIENT = 1; | ||||
|     const ERROR_LANGUAGE = 2; | ||||
|     const ERROR_CATEGORY = 3; | ||||
|     const ERROR_ARTICLE = 4; | ||||
|     const ERROR_POST_VALIDATION = 5; | ||||
|     const FRONT_CONTENT = 'front_content.php'; | ||||
| 
 | ||||
|     /** | ||||
|      * Extracted request uri path parts by path separator '/' | ||||
|      * | ||||
|      * @var array | ||||
|      */ | ||||
|     private $_aParts; | ||||
| 
 | ||||
|     /** | ||||
|      * Extracted article name from request uri | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     private $_sArtName; | ||||
| 
 | ||||
|     /** | ||||
|      * Remaining path for path resolver (see $GLOBALS['path']) | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     private $_sPath; | ||||
| 
 | ||||
|     /** | ||||
|      * Incomming URL | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     private $_sIncommingUrl; | ||||
| 
 | ||||
|     /** | ||||
|      * Resolved URL | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     private $_sResolvedUrl; | ||||
| 
 | ||||
|     /** | ||||
|      * Client id used by this class | ||||
|      * | ||||
|      * @var int | ||||
|      */ | ||||
|     private $_iClientMR; | ||||
| 
 | ||||
|     /** | ||||
|      * Language id used by this class | ||||
|      * | ||||
|      * @var int | ||||
|      */ | ||||
|     private $_iLangMR; | ||||
| 
 | ||||
|     /** | ||||
|      * Flag about occured errors | ||||
|      * | ||||
|      * @var bool | ||||
|      */ | ||||
|     private $_bError = false; | ||||
| 
 | ||||
|     /** | ||||
|      * One of ERROR_* constants or 0 | ||||
|      * | ||||
|      * @var int | ||||
|      */ | ||||
|     private $_iError = 0; | ||||
| 
 | ||||
|     /** | ||||
|      * Flag about found routing definition | ||||
|      * | ||||
|      * @var bool | ||||
|      */ | ||||
|     private $_bRoutingFound = false; | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor, sets several properties. | ||||
|      * | ||||
|      * @param  string  $incommingUrl  Incomming URL | ||||
|      */ | ||||
|     public function __construct($incommingUrl) { | ||||
| 
 | ||||
|         // CON-1266 make incomming URL lowercase if option "URLS to
 | ||||
|         // lowercase" is set
 | ||||
|         if (1 == $this->getConfig('use_lowercase_uri')) { | ||||
|             $incommingUrl = strtolower($incommingUrl); | ||||
|         } | ||||
| 
 | ||||
|         $this->_sIncommingUrl = $incommingUrl; | ||||
|         $this->_aParts = array(); | ||||
|         $this->_sArtName = ''; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Getter for overwritten client id (see $GLOBALS['client']) | ||||
|      * | ||||
|      * @return  int  Client id | ||||
|      */ | ||||
|     public function getClient() { | ||||
|         return $GLOBALS['client']; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Getter for overwritten change client id (see $GLOBALS['changeclient']) | ||||
|      * | ||||
|      * @return  int  Change client id | ||||
|      */ | ||||
|     public function getChangeClient() { | ||||
|         return $GLOBALS['changeclient']; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Getter for article id (see $GLOBALS['idart']) | ||||
|      * | ||||
|      * @return  int  Article id | ||||
|      */ | ||||
|     public function getIdArt() { | ||||
|         return $GLOBALS['idart']; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Getter for category id (see $GLOBALS['idcat']) | ||||
|      * | ||||
|      * @return  int  Category id | ||||
|      */ | ||||
|     public function getIdCat() { | ||||
|         return $GLOBALS['idcat']; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Getter for language id (see $GLOBALS['lang']) | ||||
|      * | ||||
|      * @return  int  Language id | ||||
|      */ | ||||
|     public function getLang() { | ||||
|         return $GLOBALS['lang']; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Getter for change language id (see $GLOBALS['changelang']) | ||||
|      * | ||||
|      * @return  int  Change language id | ||||
|      */ | ||||
|     public function getChangeLang() { | ||||
|         return $GLOBALS['changelang']; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Getter for path (see $GLOBALS['path']) | ||||
|      * | ||||
|      * @return  string  Path, used by path resolver | ||||
|      */ | ||||
|     public function getPath() { | ||||
|         return $this->_sPath; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Getter for resolved url | ||||
|      * | ||||
|      * @return  string  Resolved url | ||||
|      */ | ||||
|     public function getResolvedUrl() { | ||||
|         return $this->_sResolvedUrl; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns a flag about found routing definition | ||||
|      * | ||||
|      * return  bool  Flag about found routing | ||||
|      */ | ||||
|     public function getRoutingFoundState() { | ||||
|         return $this->_bRoutingFound; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Getter for occured error state | ||||
|      * | ||||
|      * @return  bool  Flag for occured error | ||||
|      */ | ||||
|     public function errorOccured() { | ||||
|         return $this->_bError; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Getter for occured error state | ||||
|      * | ||||
|      * @return  int  Numeric error code | ||||
|      */ | ||||
|     public function getError() { | ||||
|         return $this->_iError; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Main function to call for mod rewrite related preprocessing jobs. | ||||
|      * | ||||
|      * Executes some private functions to extract request URI and to set needed membervariables | ||||
|      * (client, language, article id, category id, etc.) | ||||
|      */ | ||||
|     public function execute() { | ||||
|         if (parent::isEnabled() == false) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         $this->_extractRequestUri(); | ||||
| 
 | ||||
|         $this->_initializeClientId(); | ||||
| 
 | ||||
|         $this->_setClientId(); | ||||
| 
 | ||||
|         mr_loadConfiguration($this->_iClientMR); | ||||
| 
 | ||||
|         $this->_setLanguageId(); | ||||
| 
 | ||||
|         // second call after setting client and language
 | ||||
|         $this->_extractRequestUri(true); | ||||
| 
 | ||||
|         $this->_setPathresolverSetting(); | ||||
| 
 | ||||
|         $this->_setIdart(); | ||||
| 
 | ||||
|         ModRewriteDebugger::add($this->_aParts, 'ModRewriteController::execute() _setIdart'); | ||||
| 
 | ||||
|         $this->_postValidation(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Extracts request URI and sets member variables $this->_sArtName and $this->_aParts | ||||
|      * | ||||
|      * @param  bool $secondCall  Flag about second call of this function, is needed | ||||
|      *                           to re extract url if a routing definition was found | ||||
|      */ | ||||
|     private function _extractRequestUri($secondCall = false) { | ||||
|         global $client; | ||||
| 
 | ||||
|         // get REQUEST_URI
 | ||||
|         $requestUri = $_SERVER['REQUEST_URI']; | ||||
|         // CON-1266 make request URL lowercase if option "URLS to
 | ||||
|         // lowercase" is set
 | ||||
|         if (1 == $this->getConfig('use_lowercase_uri')) { | ||||
|             $requestUri = strtolower($requestUri); | ||||
|         } | ||||
| 
 | ||||
|         // check for defined rootdir
 | ||||
|         if (parent::getConfig('rootdir') !== '/' && strpos($requestUri, $this->_sIncommingUrl) === 0) { | ||||
|             $this->_sIncommingUrl = str_replace(parent::getConfig('rootdir'), '/', $this->_sIncommingUrl); | ||||
|         } | ||||
| 
 | ||||
|         $aUrlComponents = $this->_parseUrl($this->_sIncommingUrl); | ||||
|         if (isset($aUrlComponents['path'])) { | ||||
|             if (parent::getConfig('rootdir') !== '/' && strpos($aUrlComponents['path'], parent::getConfig('rootdir')) === 0) { | ||||
|                 $aUrlComponents['path'] = str_replace(parent::getConfig('rootdir'), '/', $aUrlComponents['path']); | ||||
|             } | ||||
| 
 | ||||
|             if ($secondCall == true) { | ||||
| 
 | ||||
|                 // @todo: implement real redirect of old front_content.php style urls
 | ||||
|                 // check for routing definition
 | ||||
|                 $routings = parent::getConfig('routing'); | ||||
|                 if (is_array($routings) && isset($routings[$aUrlComponents['path']])) { | ||||
|                     $aUrlComponents['path'] = $routings[$aUrlComponents['path']]; | ||||
|                     if (strpos($aUrlComponents['path'], self::FRONT_CONTENT) !== false) { | ||||
|                         // routing destination contains front_content.php
 | ||||
| 
 | ||||
|                         $this->_bRoutingFound = true; | ||||
| 
 | ||||
|                         // set client language, if not set before
 | ||||
|                         mr_setClientLanguageId($client); | ||||
| 
 | ||||
|                         //rebuild URL
 | ||||
|                         $url = mr_buildNewUrl($aUrlComponents['path']); | ||||
| 
 | ||||
|                         $aUrlComponents = $this->_parseUrl($url); | ||||
| 
 | ||||
|                         // add query parameter to superglobal _GET
 | ||||
|                         if (isset($aUrlComponents['query'])) { | ||||
|                             $vars = null; | ||||
|                             parse_str($aUrlComponents['query'], $vars); | ||||
|                             $_GET = array_merge($_GET, $vars); | ||||
|                         } | ||||
| 
 | ||||
|                         $this->_aParts = array(); | ||||
|                     } | ||||
|                 } else { | ||||
|                     return; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             $aPaths = explode('/', $aUrlComponents['path']); | ||||
|             foreach ($aPaths as $p => $item) { | ||||
|                 if (!empty($item)) { | ||||
|                     // pathinfo would also work
 | ||||
|                     $arr = explode('.', $item); | ||||
|                     $count = count($arr); | ||||
|                     if ($count > 0 && '.' . strtolower($arr[$count - 1]) == parent::getConfig('file_extension')) { | ||||
|                         array_pop($arr); | ||||
|                         $this->_sArtName = trim(implode('.', $arr)); | ||||
|                     } else { | ||||
|                         $this->_aParts[] = $item; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             if ($secondCall == true) { | ||||
|                 // reprocess extracting client and language
 | ||||
|                 $this->_setClientId(); | ||||
|                 mr_loadConfiguration($this->_iClientMR); | ||||
|                 $this->_setLanguageId(); | ||||
|             } | ||||
|         } | ||||
|         ModRewriteDebugger::add($this->_aParts, 'ModRewriteController::_extractRequestUri() $this->_aParts'); | ||||
| 
 | ||||
|         // loop parts array and remove existing 'front_content.php'
 | ||||
|         if ($this->_hasPartArrayItems()) { | ||||
|             foreach ($this->_aParts as $p => $item) { | ||||
|                 if ($item == self::FRONT_CONTENT) { | ||||
|                     unset($this->_aParts[$p]); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Tries to initialize the client id. | ||||
|      * This is required to load the proper plugin configuration for current client. | ||||
|      */ | ||||
|     private function _initializeClientId() { | ||||
|         global $client, $changeclient, $load_client; | ||||
| 
 | ||||
|         $iClient = (isset($client) && (int) $client > 0) ? $client : 0; | ||||
|         $iChangeClient = (isset($changeclient) && (int) $changeclient > 0) ? $changeclient : 0; | ||||
|         $iLoadClient = (isset($load_client) && (int) $load_client > 0) ? $load_client : 0; | ||||
| 
 | ||||
|         $this->_iClientMR = 0; | ||||
|         if ($iClient > 0 && $iChangeClient == 0) { | ||||
|             $this->_iClientMR = $iClient; | ||||
|         } elseif ($iChangeClient > 0) { | ||||
|             $this->_iClientMR = $iChangeClient; | ||||
|         } else { | ||||
|             $this->_iClientMR = $iLoadClient; | ||||
|         } | ||||
| 
 | ||||
|         if ((int) $this->_iClientMR > 0) { | ||||
|             // set global client variable
 | ||||
|             $client = (int) $this->_iClientMR; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Tries to initialize the language id. | ||||
|      */ | ||||
|     private function _initializeLanguageId() { | ||||
|         global $lang, $changelang, $load_lang; | ||||
| 
 | ||||
|         $iLang = (isset($lang) && (int) $lang > 0) ? $lang : 0; | ||||
|         $iChangeLang = (isset($changelang) && (int) $changelang > 0) ? $changelang : 0; | ||||
|         $iLoadLang = (isset($load_lang) && (int) $load_lang > 0) ? $load_lang : 0; | ||||
| 
 | ||||
|         $this->_iLangMR = 0; | ||||
|         if ($iLang > 0 && $iChangeLang == 0) { | ||||
|             $this->_iLangMR = $iLang; | ||||
|         } elseif ($iChangeLang > 0) { | ||||
|             $this->_iLangMR = $iChangeLang; | ||||
|         } else { | ||||
|             $this->_iLangMR = $iLoadLang; | ||||
|         } | ||||
| 
 | ||||
|         if ((int) $this->_iLangMR > 0) { | ||||
|             // set global lang variable
 | ||||
|             $lang = (int) $this->_iLangMR; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Detects client id from given url | ||||
|      */ | ||||
|     private function _setClientId() { | ||||
|         global $client; | ||||
| 
 | ||||
|         if ($this->_bError) { | ||||
|             return; | ||||
|         } elseif ($this->_isRootRequest()) { | ||||
|             // request to root
 | ||||
|             return; | ||||
|         } elseif (parent::getConfig('use_client') !== 1) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if (parent::getConfig('use_client_name') == 1) { | ||||
|             $detectedClientId = (int) ModRewrite::getClientId(array_shift($this->_aParts)); | ||||
|         } else { | ||||
|             $detectedClientId = (int) array_shift($this->_aParts); | ||||
|             if ($detectedClientId > 0 && !ModRewrite::languageIdExists($detectedClientId)) { | ||||
|                 $detectedClientId = 0; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if ($detectedClientId > 0) { | ||||
|             // overwrite existing client variables
 | ||||
|             $this->_iClientMR = $detectedClientId; | ||||
|             $client = $detectedClientId; | ||||
|         } else { | ||||
|             $this->_setError(self::ERROR_CLIENT); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Sets language id | ||||
|      */ | ||||
|     private function _setLanguageId() { | ||||
|         global $lang; | ||||
| 
 | ||||
|         if ($this->_bError) { | ||||
|             return; | ||||
|         } elseif ($this->_isRootRequest()) { | ||||
|             // request to root
 | ||||
|             return; | ||||
|         } elseif (parent::getConfig('use_language') !== 1) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if (parent::getConfig('use_language_name') == 1) { | ||||
|             // thanks to Nicolas Dickinson for multi Client/Language BugFix
 | ||||
|             $languageName = array_shift($this->_aParts); | ||||
|             $detectedLanguageId = (int) ModRewrite::getLanguageId($languageName, $this->_iClientMR); | ||||
|         } else { | ||||
|             $detectedLanguageId = (int) array_shift($this->_aParts); | ||||
|             if ($detectedLanguageId > 0 && !ModRewrite::clientIdExists($detectedLanguageId)) { | ||||
|                 $detectedLanguageId = 0; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if ($detectedLanguageId > 0) { | ||||
|             // overwrite existing language variables
 | ||||
|             $this->_iLangMR = $detectedLanguageId; | ||||
|             $lang = $detectedLanguageId; | ||||
|         } else { | ||||
|             $this->_setError(self::ERROR_LANGUAGE); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Sets path resolver and category id | ||||
|      */ | ||||
|     private function _setPathresolverSetting() { | ||||
|         global $client, $lang, $load_lang, $idcat; | ||||
| 
 | ||||
|         if ($this->_bError) { | ||||
|             return; | ||||
|         } elseif (!$this->_hasPartArrayItems()) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         $this->_sPath = '/' . implode('/', $this->_aParts) . '/'; | ||||
| 
 | ||||
|         if (!isset($lang) || (int) $lang <= 0) { | ||||
|             if ((int) $load_lang > 0) { | ||||
|                 // load_client is set in frontend/config.php
 | ||||
|                 $lang = (int) $load_lang; | ||||
|             } else { | ||||
|                 // get client id from table
 | ||||
|                 cInclude('classes', 'contenido/class.clientslang.php'); | ||||
|                 $clCol = new cApiClientLanguageCollection(); | ||||
|                 $clCol->setWhere('idclient', $client); | ||||
|                 $clCol->query(); | ||||
|                 if ($clItem = $clCol->next()) { | ||||
|                     $lang = $clItem->get('idlang'); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         $idcat = (int) ModRewrite::getCatIdByUrlPath($this->_sPath); | ||||
| 
 | ||||
|         if ($idcat == 0) { | ||||
|             // category couldn't resolved
 | ||||
|             $this->_setError(self::ERROR_CATEGORY); | ||||
|             $idcat = null; | ||||
|         } else { | ||||
|             // unset $this->_sPath if $idcat could set, otherwhise it would be resolved again.
 | ||||
|             unset($this->_sPath); | ||||
|         } | ||||
| 
 | ||||
|         ModRewriteDebugger::add($idcat, 'ModRewriteController->_setPathresolverSetting $idcat'); | ||||
|         ModRewriteDebugger::add($this->_sPath, 'ModRewriteController->_setPathresolverSetting $this->_sPath'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Sets article id | ||||
|      */ | ||||
|     private function _setIdart() { | ||||
|         global $idcat, $idart, $lang; | ||||
| 
 | ||||
|         if ($this->_bError) { | ||||
|             return; | ||||
|         } else if ($this->_isRootRequest()) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         $iIdCat = (isset($idcat) && (int) $idcat > 0) ? $idcat : 0; | ||||
|         $iIdArt = (isset($idart) && (int) $idart > 0) ? $idart : 0; | ||||
|         $detectedIdart = 0; | ||||
|         $defaultStartArtName = parent::getConfig('default_startart_name'); | ||||
|         $currArtName = $this->_sArtName; | ||||
| 
 | ||||
|         // startarticle name in url
 | ||||
|         if (parent::getConfig('add_startart_name_to_url') && !empty($currArtName)) { | ||||
|             if ($currArtName == $defaultStartArtName) { | ||||
|                 // stored articlename is the default one, remove it ModRewrite::getArtIdByWebsafeName()
 | ||||
|                 // will find the real article name
 | ||||
|                 $currArtName = ''; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // Last check, before detecting article id
 | ||||
|         if ($iIdCat == 0 && $iIdArt == 0 && empty($currArtName)) { | ||||
|             // no idcat, idart and article name
 | ||||
|             // must be a request to root or with language name and/or client name part!
 | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if ($iIdCat > 0 && $iIdArt == 0 && !empty($currArtName)) { | ||||
|             // existing idcat with no idart and with article name
 | ||||
|             $detectedIdart = (int) ModRewrite::getArtIdByWebsafeName($currArtName, $iIdCat, $lang); | ||||
|         } elseif ($iIdCat > 0 && $iIdArt == 0 && empty($currArtName)) { | ||||
|             if (parent::getConfig('add_startart_name_to_url') && ($currArtName == '' || $defaultStartArtName == '' || $defaultStartArtName == $this->_sArtName)) { | ||||
|                 // existing idcat without idart and without article name or with default start article name
 | ||||
|                 cInclude('classes', 'class.article.php'); | ||||
|                 $artColl = new ArticleCollection(array('idcat' => $idcat, 'start' => 1)); | ||||
|                 if ($artItem = $artColl->startArticle()) { | ||||
|                     $detectedIdart = (int) $artItem->get('idart'); | ||||
|                 } | ||||
|             } | ||||
|         } elseif ($iIdCat == 0 && $iIdArt == 0 && !empty($currArtName)) { | ||||
|             // no idcat and idart but article name
 | ||||
|             $detectedIdart = (int) ModRewrite::getArtIdByWebsafeName($currArtName, $iIdCat, $lang); | ||||
|         } | ||||
| 
 | ||||
|         if ($detectedIdart > 0) { | ||||
|             $idart = $detectedIdart; | ||||
|         } elseif (!empty($currArtName)) { | ||||
|             $this->_setError(self::ERROR_ARTICLE); | ||||
|         } | ||||
| 
 | ||||
|         ModRewriteDebugger::add($detectedIdart, 'ModRewriteController->_setIdart $detectedIdart'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Does post validation of the extracted data. | ||||
|      * | ||||
|      * One main goal of this function is to prevent duplicated content, which could happen, if | ||||
|      * the configuration 'startfromroot' is activated. | ||||
|      */ | ||||
|     private function _postValidation() { | ||||
|         global $idcat, $idart, $client; | ||||
| 
 | ||||
|         if ($this->_bError || $this->_bRoutingFound || !$this->_hasPartArrayItems()) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if (parent::getConfig('startfromroot') == 1 && parent::getConfig('prevent_duplicated_content') == 1) { | ||||
| 
 | ||||
|             // prevention of duplicated content if '/firstcat/' is directly requested!
 | ||||
| 
 | ||||
|             $idcat = (isset($idcat) && (int) $idcat > 0) ? $idcat : null; | ||||
|             $idart = (isset($idart) && (int) $idart > 0) ? $idart : null; | ||||
| 
 | ||||
|             // compose new parameter
 | ||||
|             $param = ''; | ||||
|             if ($idcat) { | ||||
|                 $param .= 'idcat=' . (int) $idcat; | ||||
|             } | ||||
|             if ($idart) { | ||||
|                 $param .= ($param !== '') ? '&idart=' . (int) $idart : 'idart=' . (int) $idart; | ||||
|             } | ||||
| 
 | ||||
|             if ($param == '') { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             // set client language, if not set before
 | ||||
|             mr_setClientLanguageId($client); | ||||
| 
 | ||||
|             //rebuild url
 | ||||
|             $url = mr_buildNewUrl(self::FRONT_CONTENT . '?' . $param); | ||||
| 
 | ||||
|             $aUrlComponents = @parse_url($this->_sIncommingUrl); | ||||
|             $incommingUrl = (isset($aUrlComponents['path'])) ? $aUrlComponents['path'] : ''; | ||||
| 
 | ||||
|             ModRewriteDebugger::add($url, 'ModRewriteController->_postValidation validate url'); | ||||
|             ModRewriteDebugger::add($incommingUrl, 'ModRewriteController->_postValidation incommingUrl'); | ||||
| 
 | ||||
|             // now the new generated uri should be identical with the request uri
 | ||||
|             if ($incommingUrl !== $url) { | ||||
|                 $this->_setError(self::ERROR_POST_VALIDATION); | ||||
|                 $idcat = null; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Parses the url using defined separators | ||||
|      * | ||||
|      * @param   string  $url  Incoming url | ||||
|      * @return  string  Parsed url | ||||
|      */ | ||||
|     private function _parseUrl($url) { | ||||
|         $this->_sResolvedUrl = $url; | ||||
| 
 | ||||
|         $oMrUrlUtil = ModRewriteUrlUtil::getInstance(); | ||||
|         $url = $oMrUrlUtil->toContenidoUrl($url); | ||||
| 
 | ||||
|         return @parse_url($url); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns state of parts property. | ||||
|      * | ||||
|      * @return  bool  True if $this->_aParts propery contains items | ||||
|      */ | ||||
|     private function _hasPartArrayItems() { | ||||
|         return (!empty($this->_aParts)); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Checks if current request was a root request. | ||||
|      * | ||||
|      * @return  bool | ||||
|      */ | ||||
|     private function _isRootRequest() { | ||||
|         return ($this->_sIncommingUrl == '/' || $this->_sIncommingUrl == ''); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Sets error code and error flag (everything greater than 0 is an error) | ||||
|      * @param  int  $errCode | ||||
|      */ | ||||
|     private function _setError($errCode) { | ||||
|         $this->_iError = (int) $errCode; | ||||
|         $this->_bError = ((int) $errCode > 0); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										88
									
								
								classes/class.modrewritedebugger.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										88
									
								
								classes/class.modrewritedebugger.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,88 @@ | |||
| <?php | ||||
| /** | ||||
|  * AMR debugger class | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: class.modrewritedebugger.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Mod rewrite debugger class. | ||||
|  * | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  */ | ||||
| class ModRewriteDebugger { | ||||
| 
 | ||||
|     /** | ||||
|      * Flag to enable debugger | ||||
|      * @var  bool | ||||
|      */ | ||||
|     protected static $_bEnabled = false; | ||||
| 
 | ||||
|     /** | ||||
|      * Enable debugger setter. | ||||
|      * @param  bool  $bEnabled | ||||
|      */ | ||||
|     public static function setEnabled($bEnabled) { | ||||
|         self::$_bEnabled = (bool) $bEnabled; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Adds variable to debugger. | ||||
|      * Wrapper for <code>DebuggerFactory::getDebugger('visible_adv')</code>. | ||||
|      * | ||||
|      * @param  mixed   $mVar  The variable to dump | ||||
|      * @param  string  $sLabel  Describtion for passed $mVar | ||||
|      */ | ||||
|     public static function add($mVar, $sLabel = '') { | ||||
|         if (!self::$_bEnabled) { | ||||
|             return; | ||||
|         } | ||||
|         DebuggerFactory::getDebugger('visible_adv')->add($mVar, $sLabel); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns output of all added variables to debug. | ||||
|      * @return  string | ||||
|      */ | ||||
|     public static function getAll() { | ||||
|         if (!self::$_bEnabled) { | ||||
|             return ''; | ||||
|         } | ||||
| 
 | ||||
|         ob_start(); | ||||
|         DebuggerFactory::getDebugger('visible_adv')->showAll(); | ||||
|         $output = ob_get_contents(); | ||||
|         ob_end_clean(); | ||||
|         return $output; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Logs variable to debugger. | ||||
|      * Wrapper for <code>cDebug::getDebugger(cDebug::DEBUGGER_FILE)</code>. | ||||
|      * | ||||
|      * @param  mixed   $mVar  The variable to log the contents | ||||
|      * @param  string  $sLabel  Describtion for passed $mVar | ||||
|      */ | ||||
|     public static function log($mVar, $sLabel = '') { | ||||
|         if (!self::$_bEnabled) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         DebuggerFactory::getDebugger('file')->show($mVar, $sLabel); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										300
									
								
								classes/class.modrewritetest.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										300
									
								
								classes/class.modrewritetest.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,300 @@ | |||
| <?php | ||||
| /** | ||||
|  * AMR test class | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: class.modrewritetest.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Mod rewrite test class. | ||||
|  * | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  */ | ||||
| class ModRewriteTest { | ||||
| 
 | ||||
|     /** | ||||
|      * Global $cfg array | ||||
|      * @var  array | ||||
|      */ | ||||
|     protected $_aCfg; | ||||
| 
 | ||||
|     /** | ||||
|      * Global $cfg['tab'] array | ||||
|      * @var  array | ||||
|      */ | ||||
|     protected $_aCfgTab; | ||||
| 
 | ||||
|     /** | ||||
|      * Max items to process | ||||
|      * @var  int | ||||
|      */ | ||||
|     protected $_iMaxItems; | ||||
| 
 | ||||
|     /** | ||||
|      * Actual resolved url | ||||
|      * @var  string | ||||
|      */ | ||||
|     protected $_sResolvedUrl; | ||||
| 
 | ||||
|     /** | ||||
|      * Routing found flag | ||||
|      * @var  bool | ||||
|      */ | ||||
|     protected $_bRoutingFound = false; | ||||
| 
 | ||||
|     /** | ||||
|      * Constuctor | ||||
|      * @param  int  $maxItems  Max items (urls to articles/categories) to process | ||||
|      */ | ||||
|     public function __construct($maxItems) { | ||||
|         global $cfg; | ||||
|         $this->_aCfg = & $cfg; | ||||
|         $this->_aCfgTab = & $cfg['tab']; | ||||
|         $this->_iMaxItems = $maxItems; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns resolved URL | ||||
|      * | ||||
|      * @return  bool  Resolved URL | ||||
|      */ | ||||
|     public function getResolvedUrl() { | ||||
|         return $this->_sResolvedUrl; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns flagz about found routing | ||||
|      * | ||||
|      * @return  bool | ||||
|      */ | ||||
|     public function getRoutingFoundState() { | ||||
|         return $this->_bRoutingFound; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Fetchs full structure of the installation (categories and articles) and returns it back. | ||||
|      * | ||||
|      * @param   int    $idclient  Client id | ||||
|      * @param   int    $idlang    Language id | ||||
|      * @return  array  Full structure as follows | ||||
|      * <code> | ||||
|      *   $arr[idcat] = Category dataset | ||||
|      *   $arr[idcat]['articles'][idart] = Article dataset | ||||
|      * </code> | ||||
|      */ | ||||
|     public function fetchFullStructure($idclient = null, $idlang = null) { | ||||
|         global $client, $lang; | ||||
| 
 | ||||
|         $db = new DB_Contenido(); | ||||
|         $db2 = new DB_Contenido(); | ||||
| 
 | ||||
|         if (!$idclient || (int) $idclient == 0) { | ||||
|             $idclient = $client; | ||||
|         } | ||||
|         if (!$idlang || (int) $idlang == 0) { | ||||
|             $idlang = $lang; | ||||
|         } | ||||
| 
 | ||||
|         $aTab = $this->_aCfgTab; | ||||
| 
 | ||||
|         $aStruct = array(); | ||||
| 
 | ||||
|         $sql = "SELECT
 | ||||
|                     * | ||||
|                 FROM | ||||
|                     " . $aTab['cat_tree'] . " AS a, | ||||
|                     " . $aTab['cat_lang'] . " AS b, | ||||
|                     " . $aTab['cat'] . " AS c | ||||
|                 WHERE | ||||
|                     a.idcat = b.idcat AND | ||||
|                     c.idcat = a.idcat AND | ||||
|                     c.idclient = '" . $idclient . "' AND | ||||
|                     b.idlang = '" . $idlang . "' | ||||
|                 ORDER BY | ||||
|                     a.idtree";
 | ||||
| 
 | ||||
|         $db->query($sql); | ||||
| 
 | ||||
|         $counter = 0; | ||||
| 
 | ||||
|         while ($db->next_record()) { | ||||
| 
 | ||||
|             if (++$counter == $this->_iMaxItems) { | ||||
|                 break; // break this loop
 | ||||
|             } | ||||
| 
 | ||||
|             $idcat = $db->f('idcat'); | ||||
|             $aStruct[$idcat] = $db->Record; | ||||
|             $aStruct[$idcat]['articles'] = array(); | ||||
| 
 | ||||
|             $sql2 = "SELECT
 | ||||
|                          * | ||||
|                      FROM | ||||
|                          " . $aTab['cat_art'] . "  AS a, | ||||
|                          " . $aTab['art'] . "      AS b, | ||||
|                          " . $aTab['art_lang'] . " AS c | ||||
|                      WHERE | ||||
|                          a.idcat = '" . $idcat . "' AND | ||||
|                          b.idart = a.idart AND | ||||
|                          c.idart = a.idart AND | ||||
|                          c.idlang = '" . $idlang . "' AND | ||||
|                          b.idclient = '" . $idclient . "' | ||||
|                      ORDER BY | ||||
|                          c.title ASC";
 | ||||
| 
 | ||||
|             $db2->query($sql2); | ||||
| 
 | ||||
|             while ($db2->next_record()) { | ||||
|                 $idart = $db2->f('idart'); | ||||
|                 $aStruct[$idcat]['articles'][$idart] = $db2->Record; | ||||
|                 if (++$counter == $this->_iMaxItems) { | ||||
|                     break 2; // break this and also superior loop
 | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return $aStruct; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Creates an URL using passed data. | ||||
|      * | ||||
|      * The result is used to generate seo urls... | ||||
|      * | ||||
|      * @param  array  $arr  Assoziative array with some data as follows: | ||||
|      * <code> | ||||
|      * $arr['idcat'] | ||||
|      * $arr['idart'] | ||||
|      * $arr['idcatart'] | ||||
|      * $arr['idartlang'] | ||||
|      * </code> | ||||
|      * @param  string  $type  Either 'c' or 'a' (category or article). If set to | ||||
|      *                        'c' only the parameter idcat will be added to the URL | ||||
|      */ | ||||
|     public function composeURL($arr, $type) { | ||||
|         $type = ($type == 'a') ? 'a' : 'c'; | ||||
| 
 | ||||
|         $param = array(); | ||||
| 
 | ||||
|         if ($type == 'c') { | ||||
|             $param[] = 'idcat=' . $arr['idcat']; | ||||
|         } else { | ||||
|             if (mr_getRequest('idart')) { | ||||
|                 $param[] = 'idart=' . $arr['idart']; | ||||
|             } | ||||
|             if (mr_getRequest('idcat')) { | ||||
|                 $param[] = 'idcat=' . $arr['idcat']; | ||||
|             } | ||||
|             if (mr_getRequest('idcatart')) { | ||||
|                 $param[] = 'idcatart=' . $arr['idcatart']; | ||||
|             } | ||||
|             if (mr_getRequest('idartlang')) { | ||||
|                 $param[] = 'idartlang=' . $arr['idartlang']; | ||||
|             } | ||||
|         } | ||||
|         $param[] = 'foo=bar'; | ||||
|         return 'front_content.php?' . implode('&', $param); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Resolves variables of an page (idcat, idart, idclient, idlang, etc.) by | ||||
|      * processing passed url using ModRewriteController | ||||
|      * | ||||
|      * @param   string  $url  Url to resolve | ||||
|      * @return  array   Assoziative array with resolved data | ||||
|      */ | ||||
|     public function resolveUrl($url) { | ||||
|         // some globals to reset
 | ||||
|         $aGlobs = array( | ||||
|             'mr_preprocessedPageError', 'idart', 'idcat' | ||||
|         ); | ||||
|         foreach ($aGlobs as $p => $k) { | ||||
|             if (isset($GLOBALS[$k])) { | ||||
|                 unset($GLOBALS[$k]); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         $aReturn = array(); | ||||
| 
 | ||||
|         // create an mod rewrite controller instance and execute processing
 | ||||
|         $oMRController = new ModRewriteController($url); | ||||
|         $oMRController->execute(); | ||||
| 
 | ||||
|         if ($oMRController->errorOccured()) { | ||||
| 
 | ||||
|             // an error occured (idcat and or idart couldn't catched by controller)
 | ||||
|             $aReturn['mr_preprocessedPageError'] = 1; | ||||
|             $aReturn['error'] = $oMRController->getError(); | ||||
| 
 | ||||
|             $this->_sResolvedUrl = ''; | ||||
|             $this->_bRoutingFound = false; | ||||
|         } else { | ||||
| 
 | ||||
|             // set some global variables
 | ||||
| 
 | ||||
|             $this->_sResolvedUrl = $oMRController->getResolvedUrl(); | ||||
|             $this->_bRoutingFound = $oMRController->getRoutingFoundState(); | ||||
| 
 | ||||
|             if ($oMRController->getClient()) { | ||||
|                 $aReturn['client'] = $oMRController->getClient(); | ||||
|             } | ||||
| 
 | ||||
|             if ($oMRController->getChangeClient()) { | ||||
|                 $aReturn['changeclient'] = $oMRController->getChangeClient(); | ||||
|             } | ||||
| 
 | ||||
|             if ($oMRController->getLang()) { | ||||
|                 $aReturn['lang'] = $oMRController->getLang(); | ||||
|             } | ||||
| 
 | ||||
|             if ($oMRController->getChangeLang()) { | ||||
|                 $aReturn['changelang'] = $oMRController->getChangeLang(); | ||||
|             } | ||||
| 
 | ||||
|             if ($oMRController->getIdArt()) { | ||||
|                 $aReturn['idart'] = $oMRController->getIdArt(); | ||||
|             } | ||||
| 
 | ||||
|             if ($oMRController->getIdCat()) { | ||||
|                 $aReturn['idcat'] = $oMRController->getIdCat(); | ||||
|             } | ||||
| 
 | ||||
|             if ($oMRController->getPath()) { | ||||
|                 $aReturn['path'] = $oMRController->getPath(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return $aReturn; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Creates a readable string from passed resolved data array. | ||||
|      * | ||||
|      * @param   array   Assoziative array with resolved data | ||||
|      * @return  string  Readable resolved data | ||||
|      */ | ||||
|     public function getReadableResolvedData(array $data) { | ||||
|         // compose resolved string
 | ||||
|         $ret = ''; | ||||
|         foreach ($data as $k => $v) { | ||||
|             $ret .= $k . '=' . $v . '; '; | ||||
|         } | ||||
|         $ret = substr($ret, 0, strlen($ret) - 2); | ||||
|         return $ret; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										314
									
								
								classes/class.modrewriteurlstack.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										314
									
								
								classes/class.modrewriteurlstack.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,314 @@ | |||
| <?php | ||||
| /** | ||||
|  * AMR url stack class | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: class.modrewriteurlstack.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Mod rewrite url stack class. Provides features to collect urls and to get the | ||||
|  * pretty path and names of categories/articles at one go. | ||||
|  * | ||||
|  * Main goal of this class is to collect urls and to get the urlpath and urlname | ||||
|  * of the related categories/articles at one go. This will reduce the queries | ||||
|  * against the database. | ||||
|  * Therefore the full advantage will be taken by rewriting the urls at codeoutput | ||||
|  * in front_content.php, where you will be able to collect all urls at once... | ||||
|  * | ||||
|  * Usage: | ||||
|  * <code> | ||||
|  * // get the instance
 | ||||
|  * $oMRUrlStack = ModRewriteUrlStack::getInstance(); | ||||
|  * | ||||
|  * // add several urls to fill the stack
 | ||||
|  * $oMRUrlStack->add('front_content.php?idcat=123'); | ||||
|  * $oMRUrlStack->add('front_content.php?idart=321'); | ||||
|  * $oMRUrlStack->add('front_content.php?idcatart=213'); | ||||
|  * $oMRUrlStack->add('front_content.php?idcatlang=213'); | ||||
|  * $oMRUrlStack->add('front_content.php?idartlang=312'); | ||||
|  * | ||||
|  * // now the first call will get the pretty path and names from database at one go
 | ||||
|  * $aPrettyParts = $oMRUrlStack->getPrettyUrlParts('front_content.php?idcat=123'); | ||||
|  * echo $aPrettyParts['urlpath']; // something like 'Main-category-name/Category-name/Another-category-name/'
 | ||||
|  * echo $aPrettyParts['urlname']; // something like 'Name-of-an-article'
 | ||||
|  * </code> | ||||
|  * | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  */ | ||||
| class ModRewriteUrlStack { | ||||
| 
 | ||||
|     /** | ||||
|      * Self instance | ||||
|      * | ||||
|      * @var  ModRewriteUrlStack | ||||
|      */ | ||||
|     private static $_instance; | ||||
| 
 | ||||
|     /** | ||||
|      * Database object | ||||
|      * | ||||
|      * @var  DB_Contenido | ||||
|      */ | ||||
|     private $_oDb; | ||||
| 
 | ||||
|     /** | ||||
|      * Array for urls | ||||
|      * | ||||
|      * @var  array | ||||
|      */ | ||||
|     private $_aUrls = array(); | ||||
| 
 | ||||
|     /** | ||||
|      * Url stack array | ||||
|      * | ||||
|      * @var  array | ||||
|      */ | ||||
|     private $_aStack = array(); | ||||
| 
 | ||||
|     /** | ||||
|      * CONTENIDO related parameter array | ||||
|      * | ||||
|      * @var  array | ||||
|      */ | ||||
|     private $_aConParams = array( | ||||
|         'idcat' => 1, 'idart' => 1, 'lang' => 1, 'idcatlang' => 1, 'idcatart' => 1, 'idartlang' => 1 | ||||
|     ); | ||||
| 
 | ||||
|     /** | ||||
|      * Database tables array | ||||
|      * | ||||
|      * @var  array | ||||
|      */ | ||||
|     private $_aTab; | ||||
| 
 | ||||
|     /** | ||||
|      * Language id | ||||
|      * | ||||
|      * @var  int | ||||
|      */ | ||||
|     private $_idLang; | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor, sets some properties. | ||||
|      */ | ||||
|     private function __construct() { | ||||
|         global $cfg, $lang; | ||||
|         $this->_oDb = new DB_Contenido(); | ||||
|         $this->_aTab = $cfg['tab']; | ||||
|         $this->_idLang = $lang; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns a instance of ModRewriteUrlStack (singleton implementation) | ||||
|      * | ||||
|      * @return  ModRewriteUrlStack | ||||
|      */ | ||||
|     public static function getInstance() { | ||||
|         if (self::$_instance == null) { | ||||
|             self::$_instance = new ModRewriteUrlStack(); | ||||
|         } | ||||
|         return self::$_instance; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Adds an url to the stack | ||||
|      * | ||||
|      * @param  string  Url, like front_content.php?idcat=123... | ||||
|      */ | ||||
|     public function add($url) { | ||||
|         $url = ModRewrite::urlPreClean($url); | ||||
|         if (isset($this->_aUrls[$url])) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         $aUrl = $this->_extractUrl($url); | ||||
| 
 | ||||
|         // cleanup parameter
 | ||||
|         foreach ($aUrl['params'] as $p => $v) { | ||||
|             if (!isset($this->_aConParams[$p])) { | ||||
|                 unset($aUrl['params'][$p]); | ||||
|             } else { | ||||
|                 $aUrl['params'][$p] = (int) $v; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // add language id, if not available
 | ||||
|         if ((int) mr_arrayValue($aUrl['params'], 'lang') == 0) { | ||||
|             $aUrl['params']['lang'] = $this->_idLang; | ||||
|         } | ||||
| 
 | ||||
|         $sStackId = $this->_makeStackId($aUrl['params']); | ||||
|         $this->_aUrls[$url] = $sStackId; | ||||
|         $this->_aStack[$sStackId] = array('params' => $aUrl['params']); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns the pretty urlparts (only category path an article name) of the | ||||
|      * desired url. | ||||
|      * | ||||
|      * @param   string  Url, like front_content.php?idcat=123... | ||||
|      * @return  array   Assoziative array like | ||||
|      * <code> | ||||
|      * $arr['urlpath'] | ||||
|      * $arr['urlname'] | ||||
|      * </code> | ||||
|      */ | ||||
|     public function getPrettyUrlParts($url) { | ||||
|         $url = ModRewrite::urlPreClean($url); | ||||
|         if (!isset($this->_aUrls[$url])) { | ||||
|             $this->add($url); | ||||
|         } | ||||
| 
 | ||||
|         $sStackId = $this->_aUrls[$url]; | ||||
|         if (!isset($this->_aStack[$sStackId]['urlpath'])) { | ||||
|             $this->_chunkSetPrettyUrlParts(); | ||||
|         } | ||||
|         $aPretty = array( | ||||
|             'urlpath' => $this->_aStack[$sStackId]['urlpath'], | ||||
|             'urlname' => $this->_aStack[$sStackId]['urlname'] | ||||
|         ); | ||||
|         return $aPretty; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Extracts passed url using parse_urla and adds also the 'params' array to it | ||||
|      * | ||||
|      * @param   string  Url, like front_content.php?idcat=123... | ||||
|      * @return  array  Components containing result of parse_url with additional | ||||
|      *                 'params' array | ||||
|      */ | ||||
|     private function _extractUrl($url) { | ||||
|         $aUrl = @parse_url($url); | ||||
|         if (isset($aUrl['query'])) { | ||||
|             $aUrl['query'] = str_replace('&', '&', $aUrl['query']); | ||||
|             parse_str($aUrl['query'], $aUrl['params']); | ||||
|         } | ||||
|         if (!isset($aUrl['params']) && !is_array($aUrl['params'])) { | ||||
|             $aUrl['params'] = array(); | ||||
|         } | ||||
|         return $aUrl; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Extracts article or category related parameter from passed params array | ||||
|      * and generates an identifier. | ||||
|      * | ||||
|      * @param   array   $aParams  Parameter array | ||||
|      * @return  string  Composed stack id | ||||
|      */ | ||||
|     private function _makeStackId(array $aParams) { | ||||
|         # idcatart
 | ||||
|         if ((int) mr_arrayValue($aParams, 'idart') > 0) { | ||||
|             $sStackId = 'idart_' . $aParams['idart'] . '_lang_' . $aParams['lang']; | ||||
|         } elseif ((int) mr_arrayValue($aParams, 'idartlang') > 0) { | ||||
|             $sStackId = 'idartlang_' . $aParams['idartlang']; | ||||
|         } elseif ((int) mr_arrayValue($aParams, 'idcatart') > 0) { | ||||
|             $sStackId = 'idcatart_' . $aParams['idcatart'] . '_lang_' . $aParams['lang']; | ||||
|         } elseif ((int) mr_arrayValue($aParams, 'idcat') > 0) { | ||||
|             $sStackId = 'idcat_' . $aParams['idcat'] . '_lang_' . $aParams['lang']; | ||||
|         } elseif ((int) mr_arrayValue($aParams, 'idcatlang') > 0) { | ||||
|             $sStackId = 'idcatlang_' . $aParams['idcatlang']; | ||||
|         } else { | ||||
|             $sStackId = 'lang_' . $aParams['lang']; | ||||
|         } | ||||
|         return $sStackId; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Main function to get the urlparts of urls. | ||||
|      * | ||||
|      * Composes the query by looping thru stored but non processed urls, executes | ||||
|      * the query and adds the (urlpath and urlname) result to the stack. | ||||
|      */ | ||||
|     private function _chunkSetPrettyUrlParts() { | ||||
|         // collect stack parameter to get urlpath and urlname
 | ||||
|         $aStack = array(); | ||||
|         foreach ($this->_aStack as $stackId => $item) { | ||||
|             if (!isset($item['urlpath'])) { | ||||
|                 // pretty url is to create
 | ||||
|                 $aStack[$stackId] = $item; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // now, it's time to compose the where clause of the query
 | ||||
|         $sWhere = ''; | ||||
|         foreach ($aStack as $stackId => $item) { | ||||
|             $aP = $item['params']; | ||||
|             if ((int) mr_arrayValue($aP, 'idart') > 0) { | ||||
|                 $sWhere .= '(al.idart = ' . $aP['idart'] . ' AND al.idlang = ' . $aP['lang'] . ') OR '; | ||||
|             } elseif ((int) mr_arrayValue($aP, 'idartlang') > 0) { | ||||
|                 $sWhere .= '(al.idartlang = ' . $aP['idartlang'] . ') OR '; | ||||
|             } elseif ((int) mr_arrayValue($aP, 'idcat') > 0) { | ||||
|                 $sWhere .= '(cl.idcat = ' . $aP['idcat'] . ' AND cl.idlang = ' . $aP['lang'] . ' AND cl.startidartlang = al.idartlang) OR '; | ||||
|             } elseif ((int) mr_arrayValue($aP, 'idcatart') > 0) { | ||||
|                 $sWhere .= '(ca.idcatart = ' . $aP['idcatart'] . ' AND ca.idart = al.idart AND al.idlang = ' . $aP['lang'] . ') OR '; | ||||
|             } elseif ((int) mr_arrayValue($aP, 'idcatlang') > 0) { | ||||
|                 $sWhere .= '(cl.idcatlang = ' . $aP['idcatlang'] . ' AND cl.startidartlang = al.idartlang) OR '; | ||||
|             } | ||||
|         } | ||||
|         if ($sWhere == '') { | ||||
|             return; | ||||
|         } | ||||
|         $sWhere = substr($sWhere, 0, -4); | ||||
|         $sWhere = str_replace(' OR ', " OR \n", $sWhere); | ||||
| 
 | ||||
|         // compose query and execute it
 | ||||
|         $sql = <<<SQL | ||||
| SELECT | ||||
|         al.idartlang, al.idart, al.idlang as lang, al.urlname, cl.idcatlang, cl.idcat, | ||||
|         cl.urlpath, ca.idcatart | ||||
| FROM | ||||
|         {$this->_aTab['art_lang']} AS al, {$this->_aTab['cat_lang']} AS cl, {$this->_aTab['cat_art']} AS ca | ||||
| WHERE | ||||
|         al.idart = ca.idart AND | ||||
|         ca.idcat = cl.idcat AND | ||||
|         al.idlang = cl.idlang AND | ||||
|         ( $sWhere ) | ||||
| SQL; | ||||
|         ModRewriteDebugger::add($sql, 'ModRewriteUrlStack->_chunkSetPrettyUrlParts() $sql'); | ||||
| 
 | ||||
|         $aNewStack = array(); | ||||
| 
 | ||||
|         // create array of fields, which are to reduce step by step from record set below
 | ||||
|         $aFields = array('', 'idart', 'idartlang', 'idcatart', 'idcat'); | ||||
| 
 | ||||
|         $this->_oDb->query($sql); | ||||
|         while ($this->_oDb->next_record()) { | ||||
|             $aRS = $this->_oDb->Record; | ||||
| 
 | ||||
|             // loop thru fields array
 | ||||
|             foreach ($aFields as $field) { | ||||
|                 if (isset($aRS[$field])) { | ||||
|                     // reduce existing field
 | ||||
|                     unset($aRS[$field]); | ||||
|                 } | ||||
|                 $rsStackID = $this->_makeStackId($aRS); | ||||
|                 if (isset($aStack[$rsStackID])) { | ||||
|                     // matching stack entry found, add urlpath and urlname to the new stack
 | ||||
|                     $aNewStack[$rsStackID]['urlpath'] = $aRS['urlpath']; | ||||
|                     $aNewStack[$rsStackID]['urlname'] = $aRS['urlname']; | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         ModRewriteDebugger::add($aNewStack, 'ModRewriteUrlStack->_chunkSetPrettyUrlParts() $aNewStack'); | ||||
| 
 | ||||
|         // merge stack data
 | ||||
|         $this->_aStack = array_merge($this->_aStack, $aNewStack); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										306
									
								
								classes/class.modrewriteurlutil.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										306
									
								
								classes/class.modrewriteurlutil.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,306 @@ | |||
| <?php | ||||
| /** | ||||
|  * AMR url utility class | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: class.modrewriteurlutil.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Mod Rewrite url utility class. Handles convertion of Urls from CONTENIDO core | ||||
|  * based url composition pattern to AMR (Advanced Mod Rewrite) url composition | ||||
|  * pattern and vice versa. | ||||
|  * | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  */ | ||||
| class ModRewriteUrlUtil extends ModRewriteBase { | ||||
| 
 | ||||
|     /** | ||||
|      * Self instance (singleton implementation) | ||||
|      * @var  ModRewriteUrlUtil | ||||
|      */ | ||||
|     private static $_instance; | ||||
| 
 | ||||
|     /** | ||||
|      * CONTENIDO category word separator | ||||
|      * @var  string | ||||
|      */ | ||||
|     private $_catWordSep = '-'; | ||||
| 
 | ||||
|     /** | ||||
|      * AMR category word separator | ||||
|      * @var  string | ||||
|      */ | ||||
|     private $_mrCatWordSep; | ||||
| 
 | ||||
|     /** | ||||
|      * CONTENIDO category separator | ||||
|      * @var  string | ||||
|      */ | ||||
|     private $_catSep = '/'; | ||||
| 
 | ||||
|     /** | ||||
|      * AMR category separator | ||||
|      * @var  string | ||||
|      */ | ||||
|     private $_mrCatSep; | ||||
| 
 | ||||
|     /** | ||||
|      * CONTENIDO article separator | ||||
|      * @var  string | ||||
|      */ | ||||
|     private $_artSep = '/'; | ||||
| 
 | ||||
|     /** | ||||
|      * AMR article separator | ||||
|      * @var  string | ||||
|      */ | ||||
|     private $_mrArtSep; | ||||
| 
 | ||||
|     /** | ||||
|      * CONTENIDO article word separator | ||||
|      * @var  string | ||||
|      */ | ||||
|     private $_artWordSep = '-'; | ||||
| 
 | ||||
|     /** | ||||
|      * AMR article word separator | ||||
|      * @var  string | ||||
|      */ | ||||
|     private $_mrArtWordSep; | ||||
| 
 | ||||
|     /** | ||||
|      * AMR extension used for articlenames (e. g. .html) | ||||
|      * @var  string | ||||
|      */ | ||||
|     private $_mrExt; | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor, sets some AMR configuration related properties | ||||
|      */ | ||||
|     private function __construct() { | ||||
|         $aCfg = parent::getConfig(); | ||||
|         $this->_mrCatWordSep = $aCfg['category_word_seperator']; | ||||
|         $this->_mrCatSep = $aCfg['category_seperator']; | ||||
|         $this->_mrArtSep = $aCfg['article_seperator']; | ||||
|         $this->_mrArtWordSep = $aCfg['article_word_seperator']; | ||||
|         $this->_mrExt = $aCfg['file_extension']; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Prevent cloning | ||||
|      */ | ||||
|     private function __clone() { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns self instance (singleton pattern) | ||||
|      * @return  ModRewriteUrlUtil | ||||
|      */ | ||||
|     public static function getInstance() { | ||||
|         if (self::$_instance == null) { | ||||
|             self::$_instance = new ModRewriteUrlUtil(); | ||||
|         } | ||||
|         return self::$_instance; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Converts passed AMR url path to CONTENIDO url path. | ||||
|      * | ||||
|      * @param   string  $urlPath  AMR url path | ||||
|      * @return  string  CONTENIDO url path | ||||
|      */ | ||||
|     public function toContenidoUrlPath($urlPath) { | ||||
|         $newUrlPath = $this->_toUrlPath( | ||||
|                 $urlPath, $this->_mrCatSep, $this->_catSep, $this->_mrCatWordSep, $this->_catWordSep, $this->_mrArtSep, $this->_artSep | ||||
|         ); | ||||
|         return $newUrlPath; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Converts passed CONTENIDO url path to AMR url path. | ||||
|      * | ||||
|      * @param   string  $urlPath  CONTENIDO url path | ||||
|      * @return  string  AMR url path | ||||
|      */ | ||||
|     public function toModRewriteUrlPath($urlPath) { | ||||
|         $newUrlPath = $this->_toUrlPath( | ||||
|                 $urlPath, $this->_catSep, $this->_mrCatSep, $this->_catWordSep, $this->_mrCatWordSep, $this->_artSep, $this->_mrArtSep | ||||
|         ); | ||||
|         return $newUrlPath; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Converts passed url path to a another url path (CONTENIDO to AMR and vice versa). | ||||
|      * | ||||
|      * @param   string  $urlPath         Source url path | ||||
|      * @param   string  $fromCatSep      Source category seperator | ||||
|      * @param   string  $toCatSep        Destination category seperator | ||||
|      * @param   string  $fromCatWordSep  Source category word seperator | ||||
|      * @param   string  $toCatWordSep    Destination category word seperator | ||||
|      * @param   string  $fromArtSep      Source article seperator | ||||
|      * @param   string  $toArtSep        Destination article seperator | ||||
|      * @return  string  Destination url path | ||||
|      */ | ||||
|     private function _toUrlPath($urlPath, $fromCatSep, $toCatSep, $fromCatWordSep, $toCatWordSep, $fromArtSep, $toArtSep) { | ||||
|         if ((string) $urlPath == '') { | ||||
|             return $urlPath; | ||||
|         } | ||||
| 
 | ||||
|         if (substr($urlPath, -1) == $fromArtSep) { | ||||
|             $urlPath = substr($urlPath, 0, -1) . '{TAS}'; | ||||
|         } | ||||
| 
 | ||||
|         // pre replace category word seperator and category seperator
 | ||||
|         $urlPath = str_replace($fromCatWordSep, '{CWS}', $urlPath); | ||||
|         $urlPath = str_replace($fromCatSep, '{CS}', $urlPath); | ||||
| 
 | ||||
|         // replace category word seperator
 | ||||
|         $urlPath = str_replace('{CWS}', $toCatWordSep, $urlPath); | ||||
|         $urlPath = str_replace('{CS}', $toCatSep, $urlPath); | ||||
| 
 | ||||
|         $urlPath = str_replace('{TAS}', $toArtSep, $urlPath); | ||||
| 
 | ||||
|         return $urlPath; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Converts passed AMR url name to CONTENIDO url name. | ||||
|      * | ||||
|      * @param   string  $urlName  AMR url name | ||||
|      * @return  string  CONTENIDO url name | ||||
|      */ | ||||
|     public function toContenidoUrlName($urlName) { | ||||
|         $newUrlName = $this->_toUrlName($urlName, $this->_mrArtWordSep, $this->_artWordSep); | ||||
|         return $newUrlName; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Converts passed CONTENIDO url name to AMR url name. | ||||
|      * | ||||
|      * @param   string  $urlName  CONTENIDO url name | ||||
|      * @return  string  AMR url name | ||||
|      */ | ||||
|     public function toModRewriteUrlName($urlName) { | ||||
|         $newUrlName = $this->_toUrlName($urlName, $this->_artWordSep, $this->_mrArtWordSep); | ||||
|         return $newUrlName; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Converts passed url name to a another url name (CONTENIDO to AMR and vice versa). | ||||
|      * | ||||
|      * @param   string  $urlName         Source url name | ||||
|      * @param   string  $fromArtWordSep  Source article word seperator | ||||
|      * @param   string  $toArtWordSep    Destination article word seperator | ||||
|      * @return  string  Destination url name | ||||
|      */ | ||||
|     private function _toUrlName($urlName, $fromArtWordSep, $toArtWordSep) { | ||||
|         if ((string) $urlName == '') { | ||||
|             return $urlName; | ||||
|         } | ||||
| 
 | ||||
|         $urlName = str_replace($this->_mrExt, '{EXT}', $urlName); | ||||
| 
 | ||||
|         // replace article word seperator
 | ||||
|         $urlName = str_replace($fromArtWordSep, $toArtWordSep, $urlName); | ||||
| 
 | ||||
|         $urlName = str_replace('{EXT}', $this->_mrExt, $urlName); | ||||
| 
 | ||||
|         return $urlName; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Converts passed AMR url to CONTENIDO url. | ||||
|      * | ||||
|      * @param   string  $url  AMR url | ||||
|      * @return  string  CONTENIDO url | ||||
|      */ | ||||
|     public function toContenidoUrl($url) { | ||||
|         if (strpos($url, $this->_mrExt) === false) { | ||||
|             $newUrl = $this->toContenidoUrlPath($url); | ||||
|         } else { | ||||
|             // replace category word and article word seperator
 | ||||
|             $path = substr($url, 0, strrpos($url, $this->_mrArtSep) + 1); | ||||
|             $name = substr($url, strrpos($url, $this->_mrArtSep) + 1); | ||||
|             $newUrl = $this->toContenidoUrlPath($path) . $this->toContenidoUrlName($name); | ||||
|         } | ||||
|         return $newUrl; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Converts passed AMR url to CONTENIDO url. | ||||
|      * | ||||
|      * @param   string  $url  AMR url | ||||
|      * @return  string  CONTENIDO url | ||||
|      */ | ||||
|     public function toModRewriteUrl($url) { | ||||
|         if (strpos($url, $this->_mrExt) === false) { | ||||
|             $newUrl = $this->toModRewriteUrlPath($url); | ||||
|         } else { | ||||
|             // replace category word and article word seperator
 | ||||
|             $path = substr($url, 0, strrpos($url, $this->_artSep) + 1); | ||||
|             $name = substr($url, strrpos($url, $this->_artSep) + 1); | ||||
|             $newUrl = $this->toModRewriteUrlPath($path) . $this->toModRewriteUrlName($name); | ||||
|         } | ||||
|         return $newUrl; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Converts passed url to a another url (CONTENIDO to AMR and vice versa). | ||||
|      * | ||||
|      * @param   string  $url             Source url | ||||
|      * @param   string  $fromCatSep      Source category seperator | ||||
|      * @param   string  $toCatSep        Destination category seperator | ||||
|      * @param   string  $fromCatWordSep  Source category word seperator | ||||
|      * @param   string  $toCatWordSep    Destination category word seperator | ||||
|      * @param   string  $fromArtSep      Source article seperator | ||||
|      * @param   string  $toArtSep        Destination article seperator | ||||
|      * @param   string  $fromArtWordSep  Source article word seperator | ||||
|      * @param   string  $toArtWordSep    Destination article word seperator | ||||
|      * @return  string  Destination url | ||||
|      * | ||||
|      * @deprecated  No more used, is to delete | ||||
|      */ | ||||
|     private function _toUrl($url, $fromCatSep, $toCatSep, $fromCatWordSep, $toCatWordSep, $fromArtSep, $toArtSep, $fromArtWordSep, $toArtWordSep) { | ||||
|         if ((string) $url == '') { | ||||
|             return $url; | ||||
|         } | ||||
| 
 | ||||
|         $url = str_replace($this->_mrExt, '{EXT}', $url); | ||||
| 
 | ||||
|         // replace category seperator
 | ||||
|         $url = str_replace($fromCatSep, $toCatSep, $url); | ||||
| 
 | ||||
|         // replace article seperator
 | ||||
|         $url = str_replace($fromArtSep, $toArtSep, $url); | ||||
| 
 | ||||
|         $url = str_replace('{EXT}', $this->_mrExt, $url); | ||||
| 
 | ||||
|         if (strpos($url, $this->_mrExt) === false) { | ||||
|             // no articlename, replace category word seperator
 | ||||
|             $url = str_replace($fromCatWordSep, $toCatWordSep, $url); | ||||
|         } else { | ||||
|             // replace category word and article word seperator
 | ||||
|             $path = str_replace($fromCatWordSep, $toCatWordSep, substr($url, 0, strrpos($url, $toArtSep) + 1)); | ||||
|             $file = str_replace($fromArtWordSep, $toArtWordSep, substr($url, strrpos($url, $toArtSep) + 1)); | ||||
|             $url = $path . $file; | ||||
|         } | ||||
| 
 | ||||
|         return $url; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										426
									
								
								classes/controller/class.modrewrite_content_controller.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										426
									
								
								classes/controller/class.modrewrite_content_controller.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,426 @@ | |||
| <?php | ||||
| /** | ||||
|  * AMR Content controller class | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: class.modrewrite_content_controller.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Content controller for general settings. | ||||
|  * | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  */ | ||||
| class ModRewrite_ContentController extends ModRewrite_ControllerAbstract { | ||||
| 
 | ||||
|     /** | ||||
|      * Index action | ||||
|      */ | ||||
|     public function indexAction() { | ||||
|         // donut
 | ||||
|         $this->_doChecks(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Save settings action | ||||
|      */ | ||||
|     public function saveAction() { | ||||
|         $bDebug = $this->getProperty('bDebug'); | ||||
|         $aSeparator = $this->getProperty('aSeparator'); | ||||
|         $aWordSeparator = $this->getProperty('aWordSeparator'); | ||||
|         $routingSeparator = $this->getProperty('routingSeparator'); | ||||
| 
 | ||||
|         $bError = false; | ||||
|         $aMR = array(); | ||||
| 
 | ||||
|         $request = (count($_POST) > 0) ? $_POST : $_GET; | ||||
|         mr_requestCleanup($request); | ||||
| 
 | ||||
|         // use mod_rewrite
 | ||||
|         if (mr_arrayValue($request, 'use') == 1) { | ||||
|             $this->_oView->use_chk = ' checked="checked"'; | ||||
|             $aMR['mod_rewrite']['use'] = 1; | ||||
|         } else { | ||||
|             $this->_oView->use_chk = ''; | ||||
|             $aMR['mod_rewrite']['use'] = 0; | ||||
|         } | ||||
| 
 | ||||
|         // root dir
 | ||||
|         if (mr_arrayValue($request, 'rootdir', '') !== '') { | ||||
|             if (!preg_match('/^[a-zA-Z0-9\-_\/\.]*$/', $request['rootdir'])) { | ||||
|                 $sMsg = i18n("The root directory has a invalid format, alowed are the chars [a-zA-Z0-9\-_\/\.]", "mod_rewrite"); | ||||
|                 $this->_oView->rootdir_error = $this->_notifyBox('error', $sMsg); | ||||
|                 $bError = true; | ||||
|             } elseif (!is_dir($_SERVER['DOCUMENT_ROOT'] . $request['rootdir'])) { | ||||
| 
 | ||||
|                 if (mr_arrayValue($request, 'checkrootdir') == 1) { | ||||
|                     // root dir check is enabled, this results in error
 | ||||
|                     $sMsg = i18n("The specified directory '%s' does not exists", "mod_rewrite"); | ||||
|                     $sMsg = sprintf($sMsg, $_SERVER['DOCUMENT_ROOT'] . $request['rootdir']); | ||||
|                     $this->_oView->rootdir_error = $this->_notifyBox('error', $sMsg); | ||||
|                     $bError = true; | ||||
|                 } else { | ||||
|                     // root dir check ist disabled, take over the setting and
 | ||||
|                     // output a warning.
 | ||||
|                     $sMsg = i18n("The specified directory '%s' does not exists in DOCUMENT_ROOT '%s'. This could happen, if clients DOCUMENT_ROOT differs from CONTENIDO backends DOCUMENT_ROOT. However, the setting will be taken over because of disabled check.", "mod_rewrite"); | ||||
|                     $sMsg = sprintf($sMsg, $request['rootdir'], $_SERVER['DOCUMENT_ROOT']); | ||||
|                     $this->_oView->rootdir_error = $this->_notifyBox('warning', $sMsg); | ||||
|                 } | ||||
|             } | ||||
|             $this->_oView->rootdir = conHtmlentities($request['rootdir']); | ||||
|             $aMR['mod_rewrite']['rootdir'] = $request['rootdir']; | ||||
|         } | ||||
| 
 | ||||
|         // root dir check
 | ||||
|         if (mr_arrayValue($request, 'checkrootdir') == 1) { | ||||
|             $this->_oView->checkrootdir_chk = ' checked="checked"'; | ||||
|             $aMR['mod_rewrite']['checkrootdir'] = 1; | ||||
|         } else { | ||||
|             $this->_oView->checkrootdir_chk = ''; | ||||
|             $aMR['mod_rewrite']['checkrootdir'] = 0; | ||||
|         } | ||||
| 
 | ||||
|         // start from root
 | ||||
|         if (mr_arrayValue($request, 'startfromroot') == 1) { | ||||
|             $this->_oView->startfromroot_chk = ' checked="checked"'; | ||||
|             $aMR['mod_rewrite']['startfromroot'] = 1; | ||||
|         } else { | ||||
|             $this->_oView->startfromroot_chk = ''; | ||||
|             $aMR['mod_rewrite']['startfromroot'] = 0; | ||||
|         } | ||||
| 
 | ||||
|         // prevent duplicated content
 | ||||
|         if (mr_arrayValue($request, 'prevent_duplicated_content') == 1) { | ||||
|             $this->_oView->prevent_duplicated_content_chk = ' checked="checked"'; | ||||
|             $aMR['mod_rewrite']['prevent_duplicated_content'] = 1; | ||||
|         } else { | ||||
|             $this->_oView->prevent_duplicated_content_chk = ''; | ||||
|             $aMR['mod_rewrite']['prevent_duplicated_content'] = 0; | ||||
|         } | ||||
| 
 | ||||
|         // language settings
 | ||||
|         if (mr_arrayValue($request, 'use_language') == 1) { | ||||
|             $this->_oView->use_language_chk = ' checked="checked"'; | ||||
|             $this->_oView->use_language_name_disabled = ''; | ||||
|             $aMR['mod_rewrite']['use_language'] = 1; | ||||
|             if (mr_arrayValue($request, 'use_language_name') == 1) { | ||||
|                 $this->_oView->use_language_name_chk = ' checked="checked"'; | ||||
|                 $aMR['mod_rewrite']['use_language_name'] = 1; | ||||
|             } else { | ||||
|                 $this->_oView->use_language_name_chk = ''; | ||||
|                 $aMR['mod_rewrite']['use_language_name'] = 0; | ||||
|             } | ||||
|         } else { | ||||
|             $this->_oView->use_language_chk = ''; | ||||
|             $this->_oView->use_language_name_chk = ''; | ||||
|             $this->_oView->use_language_name_disabled = ' disabled="disabled"'; | ||||
|             $aMR['mod_rewrite']['use_language'] = 0; | ||||
|             $aMR['mod_rewrite']['use_language_name'] = 0; | ||||
|         } | ||||
| 
 | ||||
|         // client settings
 | ||||
|         if (mr_arrayValue($request, 'use_client') == 1) { | ||||
|             $this->_oView->use_client_chk = ' checked="checked"'; | ||||
|             $this->_oView->use_client_name_disabled = ''; | ||||
|             $aMR['mod_rewrite']['use_client'] = 1; | ||||
|             if (mr_arrayValue($request, 'use_client_name') == 1) { | ||||
|                 $this->_oView->use_client_name_chk = ' checked="checked"'; | ||||
|                 $aMR['mod_rewrite']['use_client_name'] = 1; | ||||
|             } else { | ||||
|                 $this->_oView->use_client_name_chk = ''; | ||||
|                 $aMR['mod_rewrite']['use_client_name'] = 0; | ||||
|             } | ||||
|         } else { | ||||
|             $this->_oView->use_client_chk = ''; | ||||
|             $this->_oView->use_client_name_chk = ''; | ||||
|             $this->_oView->use_client_name_disabled = ' disabled="disabled"'; | ||||
|             $aMR['mod_rewrite']['use_client'] = 0; | ||||
|             $aMR['mod_rewrite']['use_client_name'] = 0; | ||||
|         } | ||||
| 
 | ||||
|         // use lowercase uri
 | ||||
|         if (mr_arrayValue($request, 'use_lowercase_uri') == 1) { | ||||
|             $this->_oView->use_lowercase_uri_chk = ' checked="checked"'; | ||||
|             $aMR['mod_rewrite']['use_lowercase_uri'] = 1; | ||||
|         } else { | ||||
|             $this->_oView->use_lowercase_uri_chk = ''; | ||||
|             $aMR['mod_rewrite']['use_lowercase_uri'] = 0; | ||||
|         } | ||||
| 
 | ||||
|         $this->_oView->category_separator_attrib = ''; | ||||
|         $this->_oView->category_word_separator_attrib = ''; | ||||
|         $this->_oView->article_separator_attrib = ''; | ||||
|         $this->_oView->article_word_separator_attrib = ''; | ||||
| 
 | ||||
|         $separatorPattern = $aSeparator['pattern']; | ||||
|         $separatorInfo = $aSeparator['info']; | ||||
| 
 | ||||
|         $wordSeparatorPattern = $aSeparator['pattern']; | ||||
|         $wordSeparatorInfo = $aSeparator['info']; | ||||
| 
 | ||||
|         $categorySeperator = mr_arrayValue($request, 'category_seperator', ''); | ||||
|         $categoryWordSeperator = mr_arrayValue($request, 'category_word_seperator', ''); | ||||
|         $articleSeperator = mr_arrayValue($request, 'article_seperator', ''); | ||||
|         $articleWordSeperator = mr_arrayValue($request, 'article_word_seperator', ''); | ||||
| 
 | ||||
|         // category seperator
 | ||||
|         if ($categorySeperator == '') { | ||||
|             $sMsg = i18n("Please specify separator (%s) for category", "mod_rewrite"); | ||||
|             $sMsg = sprintf($sMsg, $separatorInfo); | ||||
|             $this->_oView->category_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
|         } elseif (!preg_match($separatorPattern, $categorySeperator)) { | ||||
|             $sMsg = i18n("Invalid separator for category, allowed one of following characters: %s", "mod_rewrite"); | ||||
|             $sMsg = sprintf($sMsg, $separatorInfo); | ||||
|             $this->_oView->category_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
| 
 | ||||
|             // category word seperator
 | ||||
|         } elseif ($categoryWordSeperator == '') { | ||||
|             $sMsg = i18n("Please specify separator (%s) for category words", "mod_rewrite"); | ||||
|             $sMsg = sprintf($sMsg, $wordSeparatorInfo); | ||||
|             $this->_oView->category_word_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
|         } elseif (!preg_match($wordSeparatorPattern, $categoryWordSeperator)) { | ||||
|             $sMsg = i18n("Invalid separator for category words, allowed one of following characters: %s", "mod_rewrite"); | ||||
|             $sMsg = sprintf($sMsg, $wordSeparatorInfo); | ||||
|             $this->_oView->category_word_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
| 
 | ||||
|             // article seperator
 | ||||
|         } elseif ($articleSeperator == '') { | ||||
|             $sMsg = i18n("Please specify separator (%s) for article", "mod_rewrite"); | ||||
|             $sMsg = sprintf($sMsg, $separatorInfo); | ||||
|             $this->_oView->article_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
|         } elseif (!preg_match($separatorPattern, $articleSeperator)) { | ||||
|             $sMsg = i18n("Invalid separator for article, allowed is one of following characters: %s", "mod_rewrite"); | ||||
|             $sMsg = sprintf($sMsg, $separatorInfo); | ||||
|             $this->_oView->article_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
| 
 | ||||
|             // article word seperator
 | ||||
|         } elseif ($articleWordSeperator == '') { | ||||
|             $sMsg = i18n("Please specify separator (%s) for article words", "mod_rewrite"); | ||||
|             $sMsg = sprintf($sMsg, $wordSeparatorInfo); | ||||
|             $this->_oView->article_word_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
|         } elseif (!preg_match($wordSeparatorPattern, $articleWordSeperator)) { | ||||
|             $sMsg = i18n("Invalid separator for article words, allowed is one of following characters: %s", "mod_rewrite"); | ||||
|             $sMsg = sprintf($sMsg, $wordSeparatorInfo); | ||||
|             $this->_oView->article_word_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
| 
 | ||||
|             // category_seperator - category_word_seperator
 | ||||
|         } elseif ($categorySeperator == $categoryWordSeperator) { | ||||
|             $sMsg = i18n("Separator for category and category words must not be identical", "mod_rewrite"); | ||||
|             $this->_oView->category_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
|             // category_seperator - article_word_seperator
 | ||||
|         } elseif ($categorySeperator == $articleWordSeperator) { | ||||
|             $sMsg = i18n("Separator for category and article words must not be identical", "mod_rewrite"); | ||||
|             $this->_oView->category_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
|             // article_seperator - article_word_seperator
 | ||||
|         } elseif ($articleSeperator == $articleWordSeperator) { | ||||
|             $sMsg = i18n("Separator for category-article and article words must not be identical", "mod_rewrite"); | ||||
|             $this->_oView->article_separator_error = $this->_notifyBox('error', $sMsg); | ||||
|             $bError = true; | ||||
|         } | ||||
| 
 | ||||
|         $this->_oView->category_separator = conHtmlentities($categorySeperator); | ||||
|         $aMR['mod_rewrite']['category_seperator'] = $categorySeperator; | ||||
|         $this->_oView->category_word_separator = conHtmlentities($categoryWordSeperator); | ||||
|         $aMR['mod_rewrite']['category_word_seperator'] = $categoryWordSeperator; | ||||
|         $this->_oView->article_separator = conHtmlentities($articleSeperator); | ||||
|         $aMR['mod_rewrite']['article_seperator'] = $articleSeperator; | ||||
|         $this->_oView->article_word_separator = conHtmlentities($articleWordSeperator); | ||||
|         $aMR['mod_rewrite']['article_word_seperator'] = $articleWordSeperator; | ||||
| 
 | ||||
|         // file extension
 | ||||
|         if (mr_arrayValue($request, 'file_extension', '') !== '') { | ||||
|             if (!preg_match('/^\.([a-zA-Z0-9\-_\/])*$/', $request['file_extension'])) { | ||||
|                 $sMsg = i18n("The file extension has a invalid format, allowed are the chars \.([a-zA-Z0-9\-_\/])", "mod_rewrite"); | ||||
|                 $this->_oView->file_extension_error = $this->_notifyBox('error', $sMsg); | ||||
|                 $bError = true; | ||||
|             } | ||||
|             $this->_oView->file_extension = conHtmlentities($request['file_extension']); | ||||
|             $aMR['mod_rewrite']['file_extension'] = $request['file_extension']; | ||||
|         } else { | ||||
|             $this->_oView->file_extension = '.html'; | ||||
|             $aMR['mod_rewrite']['file_extension'] = '.html'; | ||||
|         } | ||||
| 
 | ||||
|         // category resolve min percentage
 | ||||
|         if (isset($request['category_resolve_min_percentage'])) { | ||||
|             if (!is_numeric($request['category_resolve_min_percentage'])) { | ||||
|                 $sMsg = i18n("Value has to be numeric.", "mod_rewrite"); | ||||
|                 $this->_oView->category_resolve_min_percentage_error = $this->_notifyBox('error', $sMsg); | ||||
|                 $bError = true; | ||||
|             } elseif ($request['category_resolve_min_percentage'] < 0 || $request['category_resolve_min_percentage'] > 100) { | ||||
|                 $sMsg = i18n("Value has to be between 0 an 100.", "mod_rewrite"); | ||||
|                 $this->_oView->category_resolve_min_percentage_error = $this->_notifyBox('error', $sMsg); | ||||
|                 $bError = true; | ||||
|             } | ||||
|             $this->_oView->category_resolve_min_percentage = $request['category_resolve_min_percentage']; | ||||
|             $aMR['mod_rewrite']['category_resolve_min_percentage'] = $request['category_resolve_min_percentage']; | ||||
|         } else { | ||||
|             $this->_oView->category_resolve_min_percentage = '75'; | ||||
|             $aMR['mod_rewrite']['category_resolve_min_percentage'] = '75'; | ||||
|         } | ||||
| 
 | ||||
|         // add start article name to url
 | ||||
|         if (mr_arrayValue($request, 'add_startart_name_to_url') == 1) { | ||||
|             $this->_oView->add_startart_name_to_url_chk = ' checked="checked"'; | ||||
|             $aMR['mod_rewrite']['add_startart_name_to_url'] = 1; | ||||
|             if (mr_arrayValue($request, 'add_startart_name_to_url', '') !== '') { | ||||
|                 if (!preg_match('/^[a-zA-Z0-9\-_\/\.]*$/', $request['default_startart_name'])) { | ||||
|                     $sMsg = i18n("The article name has a invalid format, allowed are the chars /^[a-zA-Z0-9\-_\/\.]*$/", "mod_rewrite"); | ||||
|                     $this->_oView->add_startart_name_to_url_error = $this->_notifyBox('error', $sMsg); | ||||
|                     $bError = true; | ||||
|                 } | ||||
|                 $this->_oView->default_startart_name = conHtmlentities($request['default_startart_name']); | ||||
|                 $aMR['mod_rewrite']['default_startart_name'] = $request['default_startart_name']; | ||||
|             } else { | ||||
|                 $this->_oView->default_startart_name = ''; | ||||
|                 $aMR['mod_rewrite']['default_startart_name'] = ''; | ||||
|             } | ||||
|         } else { | ||||
|             $this->_oView->add_startart_name_to_url_chk = ''; | ||||
|             $aMR['mod_rewrite']['add_startart_name_to_url'] = 0; | ||||
|             $this->_oView->default_startart_name = ''; | ||||
|             $aMR['mod_rewrite']['default_startart_name'] = ''; | ||||
|         } | ||||
| 
 | ||||
|         // rewrite urls at
 | ||||
|         if (mr_arrayValue($request, 'rewrite_urls_at') == 'congeneratecode') { | ||||
|             $this->_oView->rewrite_urls_at_congeneratecode_chk = ' checked="checked"'; | ||||
|             $this->_oView->rewrite_urls_at_front_content_output_chk = ''; | ||||
|             $aMR['mod_rewrite']['rewrite_urls_at_congeneratecode'] = 1; | ||||
|             $aMR['mod_rewrite']['rewrite_urls_at_front_content_output'] = 0; | ||||
|         } else { | ||||
|             $this->_oView->rewrite_urls_at_congeneratecode_chk = ''; | ||||
|             $this->_oView->rewrite_urls_at_front_content_output_chk = ' checked="checked"'; | ||||
|             $aMR['mod_rewrite']['rewrite_urls_at_congeneratecode'] = 0; | ||||
|             $aMR['mod_rewrite']['rewrite_urls_at_front_content_output'] = 1; | ||||
|         } | ||||
| 
 | ||||
|         // routing
 | ||||
|         if (isset($request['rewrite_routing'])) { | ||||
|             $aRouting = array(); | ||||
|             $items = explode("\n", $request['rewrite_routing']); | ||||
|             foreach ($items as $p => $v) { | ||||
|                 $routingDef = explode($routingSeparator, $v); | ||||
|                 if (count($routingDef) !== 2) { | ||||
|                     continue; | ||||
|                 } | ||||
|                 $routingDef[0] = trim($routingDef[0]); | ||||
|                 $routingDef[1] = trim($routingDef[1]); | ||||
|                 if ($routingDef[0] == '') { | ||||
|                     continue; | ||||
|                 } | ||||
|                 $aRouting[$routingDef[0]] = $routingDef[1]; | ||||
|             } | ||||
|             $this->_oView->rewrite_routing = conHtmlentities($request['rewrite_routing']); | ||||
|             $aMR['mod_rewrite']['routing'] = $aRouting; | ||||
|         } else { | ||||
|             $this->_oView->rewrite_routing = ''; | ||||
|             $aMR['mod_rewrite']['routing'] = array(); | ||||
|         } | ||||
| 
 | ||||
|         // redirect invalid article to errorsite
 | ||||
|         if (isset($request['redirect_invalid_article_to_errorsite'])) { | ||||
|             $this->_oView->redirect_invalid_article_to_errorsite_chk = ' checked="checked"'; | ||||
|             $aMR['mod_rewrite']['redirect_invalid_article_to_errorsite'] = 1; | ||||
|         } else { | ||||
|             $this->_oView->redirect_invalid_article_to_errorsite_chk = ''; | ||||
|             $aMR['mod_rewrite']['redirect_invalid_article_to_errorsite'] = 0; | ||||
|         } | ||||
| 
 | ||||
|         if ($bError) { | ||||
|             $sMsg = i18n("Please check your input", "mod_rewrite"); | ||||
|             $this->_oView->content_before .= $this->_notifyBox('error', $sMsg); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if ($bDebug == true) { | ||||
|             echo $this->_notifyBox('info', 'Debug'); | ||||
|             echo '<pre class="example">'; | ||||
|             print_r($aMR['mod_rewrite']); | ||||
|             echo '</pre>'; | ||||
|             $sMsg = i18n("Configuration has <b>not</b> been saved, because of enabled debugging", "mod_rewrite"); | ||||
|             echo $this->_notifyBox('info', $sMsg); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         $bSeparatorModified = $this->_separatorModified($aMR['mod_rewrite']); | ||||
| 
 | ||||
|         if (mr_setConfiguration($this->_client, $aMR)) { | ||||
|             $sMsg = i18n("Configuration has been saved", "mod_rewrite"); | ||||
|             if ($bSeparatorModified) { | ||||
|                 mr_loadConfiguration($this->_client, true); | ||||
|             } | ||||
|             $this->_oView->content_before .= $this->_notifyBox('info', $sMsg); | ||||
|         } else { | ||||
|             $sMsg = i18n("Configuration could not saved. Please check write permissions for %s ", "mod_rewrite"); | ||||
|             $sMsg = sprintf($sMsg, $options['key']); | ||||
|             $this->_oView->content_before .= $this->_notifyBox('error', $sMsg); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Checks, if any sseparators setting is modified or not | ||||
|      * @param   array  $aNewCfg  New configuration send by requests. | ||||
|      * @return  bool | ||||
|      */ | ||||
|     protected function _separatorModified($aNewCfg) { | ||||
|         $aCfg = ModRewrite::getConfig(); | ||||
| 
 | ||||
|         if ($aCfg['category_seperator'] != $aNewCfg['category_seperator']) { | ||||
|             return true; | ||||
|         } elseif ($aCfg['category_word_seperator'] != $aNewCfg['category_word_seperator']) { | ||||
|             return true; | ||||
|         } elseif ($aCfg['article_seperator'] != $aNewCfg['article_seperator']) { | ||||
|             return true; | ||||
|         } elseif ($aCfg['article_word_seperator'] != $aNewCfg['article_word_seperator']) { | ||||
|             return true; | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Does some checks like 'is_start_compatible' check. | ||||
|      * Adds notifications, if something will went wrong... | ||||
|      */ | ||||
|     protected function _doChecks() { | ||||
|         // Check for not supported '$cfg["is_start_compatible"] = true;' mode
 | ||||
|         if (!empty($this->_cfg['is_start_compatible']) && true === $this->_cfg['is_start_compatible']) { | ||||
|             $sMsg = i18n("Your Contenido installation runs with the setting 'is_start_compatible'. This plugin will not work properly in this mode.<br />Please check following topic in Contenido forum to change this:<br /><br /><a href='http://forum.contenido.org/viewtopic.php?t=32530' class='blue' target='_blank'>is_start_compatible auf neue Version umstellen</a>", "mod_rewrite"); | ||||
|             $this->_oView->content_before .= $this->_notifyBox('warning', $sMsg); | ||||
|         } | ||||
| 
 | ||||
|         // Check for empty urlpath entries in cat_lang table
 | ||||
|         $db = new DB_Contenido(); | ||||
|         $sql = "SELECT idcatlang FROM " . $this->_cfg['tab']['cat_lang'] . " WHERE urlpath = ''"; | ||||
|         if ($db->query($sql) && $db->next_record()) { | ||||
|             $sMsg = i18n("It seems as if some categories don't have a set 'urlpath' entry in the database. Please reset empty aliases in %sFunctions%s area.", "mod_rewrite"); | ||||
|             $sMsg = sprintf($sMsg, '<a href="main.php?area=mod_rewrite_expert&frame=4&contenido=' . $this->_oView->sessid . '&idclient=' . $this->_client . '" onclick="parent.right_top.sub.clicked(parent.right_top.document.getElementById(\'c_1\').firstChild);">', '</a>'); | ||||
|             $this->_oView->content_before .= $this->_notifyBox('warning', $sMsg); | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
							
								
								
									
										143
									
								
								classes/controller/class.modrewrite_contentexpert_controller.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										143
									
								
								classes/controller/class.modrewrite_contentexpert_controller.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,143 @@ | |||
| <?php | ||||
| /** | ||||
|  * AMR Content expert controller class | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: class.modrewrite_contentexpert_controller.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Content expert controller for expert settings/actions. | ||||
|  * | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  */ | ||||
| class ModRewrite_ContentExpertController extends ModRewrite_ControllerAbstract { | ||||
| 
 | ||||
|     /** | ||||
|      * Path to restrictive htaccess file | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $_htaccessRestrictive = ''; | ||||
| 
 | ||||
|     /** | ||||
|      * Path to simple htaccess file | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $_htaccessSimple = ''; | ||||
| 
 | ||||
|     /** | ||||
|      * Initializer method, sets the paths to htaccess files | ||||
|      */ | ||||
|     public function init() { | ||||
|         $this->_oView->content_before = ''; | ||||
| 
 | ||||
|         $pluginPath = $this->_cfg['path']['contenido'] . $this->_cfg['path']['plugins'] . 'mod_rewrite/'; | ||||
|         $this->_htaccessRestrictive = $pluginPath . 'files/htaccess_restrictive.txt'; | ||||
|         $this->_htaccessSimple = $pluginPath . 'files/htaccess_simple.txt'; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Index action | ||||
|      */ | ||||
|     public function indexAction() { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Copy htaccess action | ||||
|      */ | ||||
|     public function copyHtaccessAction() { | ||||
|         $type = $this->_getParam('htaccesstype'); | ||||
|         $copy = $this->_getParam('copy'); | ||||
| 
 | ||||
|         if ($type != 'restrictive' && $type != 'simple') { | ||||
|             return; | ||||
|         } elseif ($copy != 'contenido' && $copy != 'cms') { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         $aInfo = $this->getProperty('htaccessInfo'); | ||||
| 
 | ||||
|         if ($aInfo['has_htaccess']) { | ||||
|             $this->_oView->content_before = $this->_notifyBox('info', 'Die .htaccess existiert bereits im Contenido-/ oder Mandantenverzeichnis, daher wird es nicht kopiert'); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if ($type == 'restrictive') { | ||||
|             $source = $this->_htaccessRestrictive; | ||||
|         } else { | ||||
|             $source = $this->_htaccessSimple; | ||||
|         } | ||||
| 
 | ||||
|         if ($copy == 'contenido') { | ||||
|             $dest = $aInfo['contenido_full_path'] . '.htaccess'; | ||||
|         } else { | ||||
|             $dest = $aInfo['client_full_path'] . '.htaccess'; | ||||
|         } | ||||
| 
 | ||||
|         if (!$result = @copy($source, $dest)) { | ||||
|             $this->_oView->content_before = $this->_notifyBox('info', 'Die .htaccess konnte nicht von ' . $source . ' nach ' . $dest . ' kopiert werden!'); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         $msg = 'Die .htaccess wurde erfolgreich nach ' . str_replace('.htaccess', '', $dest) . ' kopiert'; | ||||
|         $this->_oView->content_before = $this->_notifyBox('info', $msg); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Download htaccess action | ||||
|      */ | ||||
|     public function downloadHtaccessAction() { | ||||
|         $type = $this->_getParam('htaccesstype'); | ||||
| 
 | ||||
|         if ($type != 'restrictive' && $type != 'simple') { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if ($type == 'restrictive') { | ||||
|             $source = $this->_htaccessRestrictive; | ||||
|         } else { | ||||
|             $source = $this->_htaccessSimple; | ||||
|         } | ||||
| 
 | ||||
|         $this->_oView->content = file_get_contents($source); | ||||
| 
 | ||||
|         header('Content-Type: text/plain'); | ||||
|         header('Etag: ' . md5(mt_rand())); | ||||
|         header('Content-Disposition: attachment; filename="' . $type . '.htaccess"'); | ||||
|         $this->render('{CONTENT}'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Reset aliases action | ||||
|      */ | ||||
|     public function resetAction() { | ||||
|         // recreate all aliases
 | ||||
|         ModRewrite::recreateAliases(false); | ||||
|         $this->_oView->content_before = $this->_notifyBox('info', 'Alle Aliase wurden zurückgesetzt'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Reset only empty aliases action | ||||
|      */ | ||||
|     public function resetEmptyAction() { | ||||
|         // recreate only empty aliases
 | ||||
|         ModRewrite::recreateAliases(true); | ||||
|         $this->_oView->content_before = $this->_notifyBox('info', 'Nur leere Aliase wurden zurückgesetzt'); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										176
									
								
								classes/controller/class.modrewrite_contenttest_controller.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										176
									
								
								classes/controller/class.modrewrite_contenttest_controller.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,176 @@ | |||
| <?php | ||||
| /** | ||||
|  * AMR test controller | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: class.modrewrite_contenttest_controller.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Content controller to run tests. | ||||
|  * | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  */ | ||||
| class ModRewrite_ContentTestController extends ModRewrite_ControllerAbstract { | ||||
| 
 | ||||
|     /** | ||||
|      * Number of max items to process | ||||
|      * @var  int | ||||
|      */ | ||||
|     protected $_iMaxItems = 0; | ||||
| 
 | ||||
|     /** | ||||
|      * Initializer method, sets some view variables | ||||
|      */ | ||||
|     public function init() { | ||||
|         $this->_oView->content = ''; | ||||
|         $this->_oView->form_idart_chk = ($this->_getParam('idart')) ? ' checked="checked"' : ''; | ||||
|         $this->_oView->form_idcat_chk = ($this->_getParam('idcat')) ? ' checked="checked"' : ''; | ||||
|         $this->_oView->form_idcatart_chk = ($this->_getParam('idcatart')) ? ' checked="checked"' : ''; | ||||
|         $this->_oView->form_idartlang_chk = ($this->_getParam('idartlang')) ? ' checked="checked"' : ''; | ||||
|         $this->_oView->form_maxitems = (int) $this->_getParam('maxitems', 200); | ||||
|         $this->_iMaxItems = $this->_oView->form_maxitems; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Index action | ||||
|      */ | ||||
|     public function indexAction() { | ||||
|         $this->_oView->content = ''; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Test action | ||||
|      */ | ||||
|     public function testAction() { | ||||
|         $this->_oView->content = ''; | ||||
| 
 | ||||
|         // Array for testcases
 | ||||
|         $aTests = array(); | ||||
| 
 | ||||
|         // Instance of mr test
 | ||||
|         $oMRTest = new ModRewriteTest($this->_iMaxItems); | ||||
| 
 | ||||
|         $startTime = getmicrotime(); | ||||
| 
 | ||||
|         // Fetch complete CONTENIDO page structure
 | ||||
|         $aStruct = $oMRTest->fetchFullStructure(); | ||||
|         ModRewriteDebugger::add($aStruct, 'mr_test.php $aStruct'); | ||||
| 
 | ||||
|         // Loop through the structure and compose testcases
 | ||||
|         foreach ($aStruct as $idcat => $aCat) { | ||||
|             // category
 | ||||
|             $aTests[] = array( | ||||
|                 'url' => $oMRTest->composeURL($aCat, 'c'), | ||||
|                 'level' => $aCat['level'], | ||||
|                 'name' => $aCat['name'] | ||||
|             ); | ||||
| 
 | ||||
|             foreach ($aCat['articles'] as $idart => $aArt) { | ||||
|                 // articles
 | ||||
|                 $aTests[] = array( | ||||
|                     'url' => $oMRTest->composeURL($aArt, 'a'), | ||||
|                     'level' => $aCat['level'], | ||||
|                     'name' => $aCat['name'] . ' :: ' . $aArt['title'] | ||||
|                 ); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // compose content
 | ||||
|         $this->_oView->content = '<pre>'; | ||||
| 
 | ||||
|         $oMRUrlStack = ModRewriteUrlStack::getInstance(); | ||||
| 
 | ||||
|         // first loop to add urls to mr url stack
 | ||||
|         foreach ($aTests as $p => $v) { | ||||
|             $oMRUrlStack->add($v['url']); | ||||
|         } | ||||
| 
 | ||||
|         $successCounter = 0; | ||||
|         $failCounter = 0; | ||||
| 
 | ||||
|         // second loop to do the rest
 | ||||
|         foreach ($aTests as $p => $v) { | ||||
|             $url = mr_buildNewUrl($v['url']); | ||||
|             $arr = $oMRTest->resolveUrl($url); | ||||
|             $error = ''; | ||||
|             $resUrl = $oMRTest->getResolvedUrl(); | ||||
|             $color = 'green'; | ||||
| 
 | ||||
|             if ($url !== $resUrl) { | ||||
|                 if ($oMRTest->getRoutingFoundState()) { | ||||
|                     $successCounter++; | ||||
|                     $resUrl = 'route to -> ' . $resUrl; | ||||
|                 } else { | ||||
|                     $color = 'red'; | ||||
|                     $failCounter++; | ||||
|                 } | ||||
|             } else { | ||||
|                 $successCounter++; | ||||
|             } | ||||
| 
 | ||||
|             // @todo: translate
 | ||||
|             if (isset($arr['error'])) { | ||||
|                 switch ($arr['error']) { | ||||
|                     case ModRewriteController::ERROR_CLIENT: | ||||
|                         $error = 'client'; | ||||
|                         break; | ||||
|                     case ModRewriteController::ERROR_LANGUAGE: | ||||
|                         $error = 'language'; | ||||
|                         break; | ||||
|                     case ModRewriteController::ERROR_CATEGORY: | ||||
|                         $error = 'category'; | ||||
|                         break; | ||||
|                     case ModRewriteController::ERROR_ARTICLE: | ||||
|                         $error = 'article'; | ||||
|                         break; | ||||
|                     case ModRewriteController::ERROR_POST_VALIDATION: | ||||
|                         $error = 'validation'; | ||||
|                         break; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             $pref = str_repeat('    ', $v['level']); | ||||
| 
 | ||||
|             // render resolve information for current item
 | ||||
|             $itemTpl = $this->_oView->lng_result_item_tpl; | ||||
|             $itemTpl = str_replace('{pref}', $pref, $itemTpl); | ||||
|             $itemTpl = str_replace('{name}', $v['name'], $itemTpl); | ||||
|             $itemTpl = str_replace('{url_in}', $v['url'], $itemTpl); | ||||
|             $itemTpl = str_replace('{url_out}', $url, $itemTpl); | ||||
|             $itemTpl = str_replace('{color}', $color, $itemTpl); | ||||
|             $itemTpl = str_replace('{url_res}', $resUrl, $itemTpl); | ||||
|             $itemTpl = str_replace('{err}', $error, $itemTpl); | ||||
|             $itemTpl = str_replace('{data}', $oMRTest->getReadableResolvedData($arr), $itemTpl); | ||||
| 
 | ||||
|             $this->_oView->content .= "\n" . $itemTpl . "\n"; | ||||
|         } | ||||
|         $this->_oView->content .= '</pre>'; | ||||
| 
 | ||||
|         $totalTime = sprintf('%.4f', (getmicrotime() - $startTime)); | ||||
| 
 | ||||
|         // render information about current test
 | ||||
|         $msg = $this->_oView->lng_result_message_tpl; | ||||
|         $msg = str_replace('{time}', $totalTime, $msg); | ||||
|         $msg = str_replace('{num_urls}', ($successCounter + $failCounter), $msg); | ||||
|         $msg = str_replace('{num_success}', $successCounter, $msg); | ||||
|         $msg = str_replace('{num_fail}', $failCounter, $msg); | ||||
| 
 | ||||
|         $this->_oView->content = $msg . $this->_oView->content; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										226
									
								
								classes/controller/class.modrewrite_controller_abstract.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										226
									
								
								classes/controller/class.modrewrite_controller_abstract.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,226 @@ | |||
| <?php | ||||
| /** | ||||
|  * AMR abstract controller class | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: class.modrewrite_controller_abstract.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Abstract controller for all concrete mod_rewrite controller implementations. | ||||
|  * | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  */ | ||||
| abstract class ModRewrite_ControllerAbstract { | ||||
| 
 | ||||
|     /** | ||||
|      * View object, holds all view variables | ||||
|      * @var  stdClass | ||||
|      */ | ||||
|     protected $_oView; | ||||
| 
 | ||||
|     /** | ||||
|      * Global CONTENIDO $cfg variable | ||||
|      * @var  array | ||||
|      */ | ||||
|     protected $_cfg; | ||||
| 
 | ||||
|     /** | ||||
|      * Global CONTENIDO $client variable (client id) | ||||
|      * @var  int | ||||
|      */ | ||||
|     protected $_client; | ||||
| 
 | ||||
|     /** | ||||
|      * Global CONTENIDO $area variable (area name/id) | ||||
|      * @var  int|string | ||||
|      */ | ||||
|     protected $_area; | ||||
| 
 | ||||
|     /** | ||||
|      * Global CONTENIDO $action variable (send by request) | ||||
|      * @var  string | ||||
|      */ | ||||
|     protected $_action; | ||||
| 
 | ||||
|     /** | ||||
|      * Global CONTENIDO $frame variable (current frame in backend) | ||||
|      * @var  int | ||||
|      */ | ||||
|     protected $_frame; | ||||
| 
 | ||||
|     /** | ||||
|      * Global CONTENIDO $contenido variable (session id) | ||||
|      * @var  string | ||||
|      */ | ||||
|     protected $_contenido; | ||||
| 
 | ||||
|     /** | ||||
|      * Template file or template string to render | ||||
|      * @var  string | ||||
|      */ | ||||
|     protected $_template = null; | ||||
| 
 | ||||
|     /** | ||||
|      * Additional properties list | ||||
|      * @var  array | ||||
|      */ | ||||
|     protected $_properties = array(); | ||||
| 
 | ||||
|     /** | ||||
|      * Debug flag | ||||
|      * @var  bool | ||||
|      */ | ||||
|     protected $_debug = false; | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor, sets some properties by assigning global variables to them. | ||||
|      */ | ||||
|     public function __construct() { | ||||
|         global $cfg, $client, $area, $action, $frame, $contenido, $sess; | ||||
| 
 | ||||
|         $this->_oView = new stdClass(); | ||||
|         $this->_cfg = $cfg; | ||||
|         $this->_area = $area; | ||||
|         $this->_action = $action; | ||||
|         $this->_frame = $frame; | ||||
|         $this->_client = $client; | ||||
|         $this->_contenido = $contenido; | ||||
| 
 | ||||
|         $this->_oView->area = $this->_area; | ||||
|         $this->_oView->frame = $this->_frame; | ||||
|         $this->_oView->contenido = $this->_contenido; | ||||
|         $this->_oView->sessid = $sess->id; | ||||
|         $this->_oView->lng_more_informations = i18n("More informations", "mod_rewrite"); | ||||
| 
 | ||||
|         $this->init(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Initializer method, could be overwritten by childs. | ||||
|      * This method will be invoked in constructor of ModRewrite_ControllerAbstract. | ||||
|      */ | ||||
|     public function init() { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * View property setter. | ||||
|      * @param  object  $oView | ||||
|      */ | ||||
|     public function setView($oView) { | ||||
|         if (is_object($oView)) { | ||||
|             $this->_oView = $oView; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * View property getter. | ||||
|      * @return  object | ||||
|      */ | ||||
|     public function getView() { | ||||
|         return $this->_oView; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Property setter. | ||||
|      * @param  string  $key | ||||
|      * @param  mixed   $value | ||||
|      */ | ||||
|     public function setProperty($key, $value) { | ||||
|         $this->_properties[$key] = $value; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Property getter. | ||||
|      * @param   string  $key | ||||
|      * @param   mixed   $default | ||||
|      * @return  mixed | ||||
|      */ | ||||
|     public function getProperty($key, $default = null) { | ||||
|         return (isset($this->_properties[$key])) ? $this->_properties[$key] : $default; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Template setter. | ||||
|      * @param  string  $sTemplate  Either full path and name of template file or a template string. | ||||
|      */ | ||||
|     public function setTemplate($sTemplate) { | ||||
|         $this->_template = $sTemplate; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Template getter. | ||||
|      * @return  string | ||||
|      */ | ||||
|     public function getTemplate() { | ||||
|         return $this->_template; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Renders template by replacing all view variables in template. | ||||
|      * @param   string  Either full path and name of template file or a template string. | ||||
|      *                  If not passed, previous set template will be used. | ||||
|      * @throws Exception if no template is set | ||||
|      * @return  string | ||||
|      */ | ||||
|     public function render($template = null) { | ||||
|         if ($template == null) { | ||||
|             $template = $this->_template; | ||||
|         } | ||||
| 
 | ||||
|         if ($template == null) { | ||||
|             throw new Exception('Missing template to render.'); | ||||
|         } | ||||
| 
 | ||||
|         $oTpl = new Template(); | ||||
|         foreach ($this->_oView as $k => $v) { | ||||
|             $oTpl->set('s', strtoupper($k), $v); | ||||
|         } | ||||
|         $oTpl->generate($template, 0, 0); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns  parameter from request, the order is: | ||||
|      * - Return from $_GET, if found | ||||
|      * - Return from $_POST, if found | ||||
|      * | ||||
|      * @param   string  $key | ||||
|      * @param   mixed   $default  The default value | ||||
|      * @return  mixed | ||||
|      */ | ||||
|     protected function _getParam($key, $default = null) { | ||||
|         if (isset($_GET[$key])) { | ||||
|             return $_GET[$key]; | ||||
|         } elseif (isset($_POST[$key])) { | ||||
|             return $_POST[$key]; | ||||
|         } else { | ||||
|             return $default; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns rendered notification markup by using global $notification variable. | ||||
|      * @param   string  $type  One of cGuiNotification::LEVEL_* constants | ||||
|      * @param   string  $msg   The message to display | ||||
|      * @return  string | ||||
|      */ | ||||
|     protected function _notifyBox($type, $msg) { | ||||
|         global $notification; | ||||
|         return $notification->returnNotification($type, $msg) . '<br>'; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										43
									
								
								external/aToolTip/css/atooltip.css
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
							
						
						
									
										43
									
								
								external/aToolTip/css/atooltip.css
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,43 @@ | |||
| /* | ||||
| Node structure | ||||
| -------------- | ||||
| .aToolTip | ||||
|     .aToolTipInner | ||||
|         .aToolTipContent | ||||
|         .aToolTipCloseBtn | ||||
| 
 | ||||
| */ | ||||
| 
 | ||||
| .aToolTip { margin:2px 0 0 2px; } | ||||
| 
 | ||||
| .aToolTipInner { | ||||
|     border-left:1px solid #b3b3b3; | ||||
|     border-top:1px solid #666; | ||||
|     border-right:2px solid #b3b3b3; | ||||
|     border-bottom:2px solid #b3b3b3; | ||||
|     background:#f1f1f1; | ||||
|     color:#000; | ||||
|     margin:0; | ||||
|     padding:4px 12px 6px 24px; | ||||
|     margin:-2px 0 0 -2px; | ||||
| } | ||||
| 
 | ||||
| .aToolTipInner .aToolTipContent { | ||||
|     position:relative; | ||||
|     margin:0; | ||||
|     padding:0; | ||||
| } | ||||
| 
 | ||||
| a.aToolTipCloseBtn { | ||||
|     display:block; | ||||
|     height:16px; | ||||
|     width:16px; | ||||
|     background:url(../images/infoBtn.gif) no-repeat; | ||||
|     text-indent:-9999px; | ||||
|     outline:none; | ||||
|     position:absolute; | ||||
|     top:1px; | ||||
|     left:1px; | ||||
|     margin:1px 2px 2px 1px; | ||||
|     padding:0px; | ||||
| } | ||||
							
								
								
									
										174
									
								
								external/aToolTip/css/style.css
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
							
						
						
									
										174
									
								
								external/aToolTip/css/style.css
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,174 @@ | |||
| /* Eric Meyer's Reset Reloaded */ | ||||
| /* http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/ */ | ||||
| html, body, div, span, applet, object, iframe, | ||||
| h1, h2, h3, h4, h5, h6, p, blockquote, a, abbr, acronym, address, big, cite, code,del, dfn, em, | ||||
| font, img, ins, kbd, q, s, samp,small, strike, strong, sub, | ||||
| sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li, | ||||
| fieldset, form, label, legend,table, caption, tbody, tfoot, | ||||
| thead, tr, th, td { | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|     border: 0; | ||||
|     outline: 0; | ||||
|     font-size: 100%; | ||||
|     vertical-align: baseline; | ||||
|     background: transparent; | ||||
| } | ||||
| ol, ul {list-style: none;} | ||||
| blockquote, q {quotes: none;} | ||||
| table {border-collapse: collapse;border-spacing: 0;} | ||||
| 
 | ||||
| .clearfix:after {content: ".";display: block;height: 0;clear: both;visibility: hidden;} | ||||
| /* IE6 */ | ||||
| * html .clearfix {height: 1%;} | ||||
| /* IE7 */ | ||||
| *:first-child+html .clearfix {min-height: 1px;} | ||||
| 
 | ||||
| 
 | ||||
| body { | ||||
|     background: #282828 url(../images/bg.png) repeat-x; | ||||
|     color: #999999; | ||||
|     font-size: 12px; | ||||
|     line-height: 20px; | ||||
|     font-family: Arial, helvetica; | ||||
| } | ||||
| 
 | ||||
| a, | ||||
| a:link, | ||||
| a:visited { | ||||
|     color: #FEC92C; | ||||
|     text-decoration: none; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| a:hover, | ||||
| a:active, | ||||
| a:focus { | ||||
|     text-decoration: underline; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| a.exampleTip { | ||||
|     color: #FEC92C; | ||||
| } | ||||
| 
 | ||||
| a.exampleTip:hover{ | ||||
|     text-decoration: underline; | ||||
| } | ||||
| 
 | ||||
| .section { | ||||
|     text-align: left; | ||||
|     padding-bottom: 18px; | ||||
|     border-bottom: 1px solid #333; | ||||
|     margin-bottom: 18px; | ||||
| } | ||||
| 
 | ||||
| p { | ||||
|     margin: 0 0 18px; | ||||
| } | ||||
| 
 | ||||
| h2 { | ||||
|     color: #fff; | ||||
|     font-size: 22px; | ||||
|     line-height: 24px; | ||||
|     margin: 0 0 24px; | ||||
|     padding: 0; | ||||
|     font-weight: normal; | ||||
| } | ||||
| 
 | ||||
| h3{ | ||||
|     color: #ddd; | ||||
|     font-size: 14px; | ||||
|     line-height: 18px; | ||||
|     margin: 0 0 18px; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| h1.logo { | ||||
|     display: block; | ||||
|     height: 80px; | ||||
|     width: 260px; | ||||
|     margin: 40px auto 0; | ||||
| } | ||||
| 
 | ||||
|     h1.logo a{ | ||||
|         display: block; | ||||
|         height: 80px; | ||||
|         width: 260px; | ||||
|         text-indent: -9999px; | ||||
|         background: url(../images/logo.png) no-repeat; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| ul.demos { | ||||
|     list-style-type: none; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| ul.demos li{ | ||||
|     margin: 0 0 10px 0; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| .primaryWrapper { | ||||
|     margin: 0 auto; | ||||
|     width: 960px; | ||||
|     text-align: center; | ||||
| } | ||||
| 
 | ||||
| .branding{ | ||||
|     text-align: center; | ||||
|     display: block; | ||||
|     height: 120px; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| .ctaBtns {border: none; text-align: center;} | ||||
| 
 | ||||
| .ctaBtns p { | ||||
|     width: 263px; | ||||
|     margin: 0 auto; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| .ctaBtns a{ | ||||
|     display: block; | ||||
|     height: 37px; | ||||
|     width: 122px; | ||||
|     text-indent: -9999px; | ||||
| } | ||||
| 
 | ||||
| a.dloadBtn { | ||||
|     background: url(../images/dload-btn.png) no-repeat top left; | ||||
|     float: left; | ||||
|     margin-right: 18px; | ||||
| } | ||||
| 
 | ||||
| a.demoBtn { | ||||
|     background: url(../images/demo-btn.png) no-repeat top left; | ||||
|     float: left; | ||||
| } | ||||
| 
 | ||||
| a.dloadBtn:hover, | ||||
| a.demoBtn:hover { | ||||
|     background-position: bottom left; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| .usage p { | ||||
|     margin-bottom: 2px; | ||||
| } | ||||
| 
 | ||||
| ul.quickFacts { | ||||
|     list-style-position: inside; | ||||
|     list-style-type: disc; | ||||
| } | ||||
| 
 | ||||
| p.license, | ||||
| p.copyright { | ||||
|     font-size: 11px; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										81
									
								
								external/aToolTip/demos.html
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
							
						
						
									
										81
									
								
								external/aToolTip/demos.html
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,81 @@ | |||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||||
|                       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
|     <head> | ||||
|         <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> | ||||
|         <title>aToolTip Demos</title> | ||||
| 
 | ||||
|         <!-- CSS --> | ||||
|         <link type="text/css" href="css/style.css" rel="stylesheet"  media="screen"> | ||||
| 
 | ||||
|         <!-- aToolTip css --> | ||||
|         <link type="text/css" href="css/atooltip.css" rel="stylesheet"  media="screen"> | ||||
| 
 | ||||
| 
 | ||||
|         <!-- Scripts --> | ||||
|         <script type="text/javascript" src="js/jquery.min.js"></script> | ||||
| 
 | ||||
|         <!-- aToolTip js --> | ||||
|         <script type="text/javascript" src="js/atooltip.min.jquery.js"></script> | ||||
|         <script type="text/javascript"> | ||||
|             $(function(){ | ||||
|                 $('a.normalTip').aToolTip(); | ||||
| 
 | ||||
| 
 | ||||
|                 $('a.fixedTip').aToolTip({ | ||||
|                     fixed: true | ||||
|                 }); | ||||
| 
 | ||||
|                 $('a.clickTip').aToolTip({ | ||||
|                     clickIt: true, | ||||
|                     tipContent: 'Hello I am aToolTip with content from the "tipContent" param' | ||||
|                 }); | ||||
| 
 | ||||
| 
 | ||||
|             }); | ||||
|         </script> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     </head> | ||||
|     <body> | ||||
| 
 | ||||
|          <div class="primaryWrapper"> | ||||
| 
 | ||||
|              <div class="branding"> | ||||
|                  <h1 class="logo"><a href="#">aToolTip</a></h1> | ||||
|              </div> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|             <!-- DEMOS --> | ||||
| 
 | ||||
|             <div class="section" id="demos"> | ||||
|                  <h2>Demos</h2> | ||||
| 
 | ||||
|                  <ul class="demos"> | ||||
|                      <li><a href="#" class="normalTip exampleTip" title="Hello, I am aToolTip">Normal Tooltip</a> - This is a normal tooltip with default settings.</li> | ||||
|                      <li><a href="#" class="fixedTip exampleTip" title="Hello, I am aToolTip">Fixed Tooltip</a> - This is a fixed tooltip that doesnt follow the mouse.</li> | ||||
|                      <li><a href="#" class="clickTip exampleTip" >On Click Tooltip</a> - This is a click activated tooltip with content passed in from 'tipContent' param</li> | ||||
|                  </ul> | ||||
| 
 | ||||
|              </div> | ||||
| 
 | ||||
|             <!-- END DEMOS --> | ||||
| 
 | ||||
| 
 | ||||
|             <p class="copyright"> | ||||
|                 Copyright © 2009 Ara Abcarians. aToolTip was built for use with <a href="http://jquery.com">jQuery</a> by <a href="http://ara-abcarians.com/"> Ara Abcarians.</a> | ||||
|             </p> | ||||
| 
 | ||||
|             <p class="license"> | ||||
| <a rel="license" href="http://creativecommons.org/licenses/by/3.0/"><img alt="Creative Commons License" style="border-width:0" src="http://creativecommons.org/images/public/somerights20.png"></a><br>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a>. | ||||
|             </p> | ||||
| 
 | ||||
| 
 | ||||
|          </div> <!-- /primaryWrapper --> | ||||
| 
 | ||||
| 
 | ||||
|     </body> | ||||
| </html> | ||||
							
								
								
									
										
											BIN
										
									
								
								external/aToolTip/images/bg.png
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
							
						
						
									
										
											BIN
										
									
								
								external/aToolTip/images/bg.png
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
										
											Binäre Datei nicht angezeigt.
										
									
								
							| Nachher Breite: | Höhe: | Größe: 1,2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								external/aToolTip/images/infoBtn.gif
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
							
						
						
									
										
											BIN
										
									
								
								external/aToolTip/images/infoBtn.gif
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
										
											Binäre Datei nicht angezeigt.
										
									
								
							| Nachher Breite: | Höhe: | Größe: 90 B | 
							
								
								
									
										118
									
								
								external/aToolTip/js/atooltip.jquery.js
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
							
						
						
									
										118
									
								
								external/aToolTip/js/atooltip.jquery.js
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,118 @@ | |||
| /* | ||||
|     jQuery Version:                jQuery 1.3.2 | ||||
|     Plugin Name:                aToolTip V 1.0 | ||||
|     Plugin by:                     Ara Abcarians: http://ara-abcarians.com
 | ||||
|     License:                    aToolTip is licensed under a Creative Commons Attribution 3.0 Unported License | ||||
|                                 Read more about this license at --> http://creativecommons.org/licenses/by/3.0/
 | ||||
|     Modified:                   Murat Purc <murat@purc>, 2010-01-28: Position clickable tooltip on right side, | ||||
|                                                                      remove previous opened tooltip | ||||
| 
 | ||||
| Creates following node: | ||||
| ----------------------- | ||||
| <div class="aToolTip"> | ||||
|     <div class="aToolTipInner"> | ||||
|         <p class="aToolTipContent"></p> | ||||
|         Content | ||||
|         <a alt="close" href="#" class="aToolTipCloseBtn">close</a> | ||||
|     </div> | ||||
| </div> | ||||
| 
 | ||||
| */ | ||||
| (function($) { | ||||
|     $.fn.aToolTip = function(options) { | ||||
| 
 | ||||
|         // setup default settings
 | ||||
|         var defaults = { | ||||
|             clickIt: false, | ||||
|             closeTipBtn: 'aToolTipCloseBtn', | ||||
|             fixed: false, | ||||
|             inSpeed: 400, | ||||
|             outSpeed: 100, | ||||
|             tipContent: '', | ||||
|             toolTipClass: 'aToolTip', | ||||
|             xOffset: 0, | ||||
|             yOffset: 0 | ||||
|         }, | ||||
| 
 | ||||
|         // This makes it so the users custom options overrides the default ones
 | ||||
|         settings = $.extend({}, defaults, options); | ||||
| 
 | ||||
|         return this.each(function() { | ||||
|             var obj = $(this); | ||||
|             // Decide weather to use a title attr as the tooltip content
 | ||||
|             if (obj.attr('title') && !settings.tipContent) { | ||||
|                 // set the tooltip content/text to be the obj title attribute
 | ||||
|                 var tipContent = obj.attr('title'); | ||||
|             } else { | ||||
|                 // if no title attribute set it to the tipContent option in settings
 | ||||
|                 var tipContent = settings.tipContent; | ||||
|             } | ||||
| 
 | ||||
|             // check if obj has a title attribute and if click feature is off
 | ||||
|             if(tipContent && !settings.clickIt){ | ||||
|                 // Activate on hover
 | ||||
|                 obj.hover(function(el){ | ||||
|                     obj.attr({title: ''}); | ||||
|                     $('body').append("<div class='"+ settings.toolTipClass +"'><div class='"+ settings.toolTipClass +"Inner'><p class='aToolTipContent'>"+ tipContent +"</p></div></div>"); | ||||
|                     $('.' + settings.toolTipClass).css({ | ||||
|                         position: 'absolute', | ||||
|                         display: 'none', | ||||
|                         zIndex: '50000', | ||||
|                         top: (obj.offset().top - $('.' + settings.toolTipClass).outerHeight() - settings.yOffset) + 'px', | ||||
|                         left: (obj.offset().left + obj.outerWidth() + settings.xOffset) + 'px' | ||||
|                     }) | ||||
|                     .stop().fadeIn(settings.inSpeed); | ||||
|                 }, | ||||
|                 function(){ | ||||
|                     // Fade out
 | ||||
|                     $('.' + settings.toolTipClass).stop().fadeOut(settings.outSpeed, function(){$(this).remove();}); | ||||
|                 }); | ||||
|             } | ||||
| 
 | ||||
|             // Follow mouse if fixed is false and click is false
 | ||||
|             if(!settings.fixed && !settings.clickIt){ | ||||
|                 obj.mousemove(function(el){ | ||||
|                     $('.' + settings.toolTipClass).css({ | ||||
|                         top: (el.pageY - $('.' + settings.toolTipClass).outerHeight() - settings.yOffset), | ||||
|                         left: (el.pageX + settings.xOffset) | ||||
|                     }) | ||||
|                 }); | ||||
|             } | ||||
| 
 | ||||
|             // check if click feature is enabled
 | ||||
|             if(tipContent && settings.clickIt){ | ||||
|                 // Activate on click
 | ||||
|                 obj.click(function(el){ | ||||
|                     if (!settings.tipContent) { | ||||
|                         obj.attr({title: ''}); | ||||
|                     } | ||||
| 
 | ||||
| //                    $('.' + settings.toolTipClass).remove();
 | ||||
|                     $('.' + settings.toolTipClass).stop().fadeOut(settings.outSpeed, function(){$(this).remove();}); | ||||
| 
 | ||||
|                     $('body').append("<div class='"+ settings.toolTipClass +"'><div class='"+ settings.toolTipClass +"Inner'><p class='aToolTipContent'>"+ tipContent +"</p><a class='"+ settings.closeTipBtn +"' href='#' alt='close'>close</a></div></div>"); | ||||
|                     $('.' + settings.toolTipClass).css({ | ||||
|                         position: 'absolute', | ||||
|                         display: 'none', | ||||
|                         zIndex: '50000', | ||||
| //                        top: (obj.offset().top - $('.' + settings.toolTipClass).outerHeight() - settings.yOffset) + 'px',
 | ||||
| //                        left: (obj.offset().left + obj.outerWidth() + settings.xOffset) + 'px'
 | ||||
|                         top: (obj.offset().top - settings.yOffset) + 'px', | ||||
|                         left: (obj.offset().left + obj.outerWidth() + settings.xOffset) + 'px' | ||||
|                     }) | ||||
|                     .fadeIn(settings.inSpeed); | ||||
|                     // Click to close tooltip
 | ||||
|                     $('.' + settings.closeTipBtn).click(function(){ | ||||
|                         $('.' + settings.toolTipClass).fadeOut(settings.outSpeed, function(){$(this).remove();}); | ||||
|                         return false; | ||||
|                     }); | ||||
|                     return false; | ||||
|                 }); | ||||
|             } | ||||
| 
 | ||||
|         }); // END: return this
 | ||||
| 
 | ||||
|         // returns the jQuery object to allow for chainability.
 | ||||
|         return this; | ||||
|     }; | ||||
| })(jQuery); | ||||
							
								
								
									
										2
									
								
								external/aToolTip/js/atooltip.min.jquery.js
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
							
						
						
									
										2
									
								
								external/aToolTip/js/atooltip.min.jquery.js
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,2 @@ | |||
| /*Plugin by: Ara Abcarians: http://ara-abcarians.com License: http://creativecommons.org/licenses/by/3.0/ */ | ||||
| eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(2($){$.O.w=2(d){8 e={9:f,q:\'P\',x:f,r:Q,s:R,y:\'\',1:\'w\',g:5,h:5},0=$.S({},e,d);i 3.T(2(){8 b=$(3);j(b.k(\'l\')){8 c=b.k(\'l\')}U{8 c=0.y}j(c&&!0.9){b.V(2(a){b.k({l:\'\'});$(\'z\').t("<m 4=\'"+0.1+"\'><p 4=\'A\'>"+c+"</p></m>");$(\'.\'+0.1).u({B:\'C\',D:\'E\',F:\'G\',6:(b.n().6-$(\'.\'+0.1).v()-0.h)+\'o\',7:(b.n().7+b.H()+0.g)+\'o\'}).I().J(0.r)},2(){$(\'.\'+0.1).I().K(0.s,2(){$(3).L()})})}j(!0.x&&!0.9){b.W(2(a){$(\'.\'+0.1).u({6:(a.X-$(\'.\'+0.1).v()-0.h),7:(a.Y+0.g)})})}j(c&&0.9){b.M(2(a){b.k({l:\'\'});$(\'z\').t("<m 4=\'"+0.1+"\'><p 4=\'A\'>"+c+"</p></m>");$(\'.\'+0.1).t("<a 4=\'"+0.q+"\' Z=\'#\' 10=\'N\'>N</a>");$(\'.\'+0.1).u({B:\'C\',D:\'E\',F:\'G\',6:(b.n().6-$(\'.\'+0.1).v()-0.h)+\'o\',7:(b.n().7+b.H()+0.g)+\'o\'}).J(0.r);$(\'.\'+0.q).M(2(){$(\'.\'+0.1).K(0.s,2(){$(3).L()});i f});i f})}});i 3}})(11);',62,64,'settings|toolTipClass|function|this|class||top|left|var|clickIt||||||false|xOffset|yOffset|return|if|attr|title|div|offset|px||closeTipBtn|inSpeed|outSpeed|append|css|outerHeight|aToolTip|fixed|tipContent|body|aToolTipContent|position|absolute|display|none|zIndex|50000|outerWidth|stop|fadeIn|fadeOut|remove|click|close|fn|aToolTipCloseBtn|400|100|extend|each|else|hover|mousemove|pageY|pageX|href|alt|jQuery'.split('|'),0,{})) | ||||
							
								
								
									
										19
									
								
								external/aToolTip/js/jquery.min.js
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
							
						
						
									
										19
									
								
								external/aToolTip/js/jquery.min.js
									
										
									
									
										gevendort
									
									
										Normale Datei
									
								
							
										
											
												Dateidiff unterdrückt, weil mindestens eine Zeile zu lang ist
											
										
									
								
							
							
								
								
									
										61
									
								
								files/htaccess_restrictive.txt
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										61
									
								
								files/htaccess_restrictive.txt
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,61 @@ | |||
| ################################################################################ | ||||
| # ConLite AMR plugin restrictive rewrite rules set. | ||||
| # | ||||
| # Contains strict rules, each rewrite exclusion must be set manually. | ||||
| # - Exclude requests to directories usage/, conlite/, setup/, cms/upload/ | ||||
| # - Exclude requests to cms/front_content.php, cms/dbfs.php | ||||
| # - Pass thru requests to common ressources (pictures, movies, js, css, pdf) | ||||
| # | ||||
| # @version    1.0.0 | ||||
| # @author     Ortwin Pinke <ortwin.pinke@php-backoffice.de> | ||||
| # @author     Murat Purc <murat@purc.de> | ||||
| # @copyright  2019 ConLite Team | ||||
| # @link       http://www.conlite.org | ||||
| # | ||||
| # Versions before 1.0 copyright 4fb, author Murat Purc | ||||
| # | ||||
| # $Id: htaccess_restrictive.txt 145 2019-10-25 16:00:47Z oldperl $ | ||||
| ################################################################################ | ||||
| 
 | ||||
| <IfModule mod_rewrite.c> | ||||
| 
 | ||||
|     # Enable rewrite engine | ||||
|     RewriteEngine on | ||||
| 
 | ||||
|     # Specify a base URL-path for the rules | ||||
|     RewriteBase /cms | ||||
| 
 | ||||
|     # Catch some common exploits in query string to get rid of them. | ||||
|     # NOTE: Conditions to prevent protocols (ftp, http[s]) in query string could | ||||
|     #       be a disadvantage in some cases. | ||||
|     RewriteCond %{QUERY_STRING} contenido_path=.*$  [NC,OR] | ||||
|     RewriteCond %{QUERY_STRING} cfg\[path\]=.*$  [NC,OR] | ||||
|     RewriteCond %{QUERY_STRING} _PHPLIB\[libdir\]=.*$  [NC,OR] | ||||
|     RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] | ||||
|     RewriteCond %{QUERY_STRING} ftp://.*$  [NC,OR] | ||||
|     RewriteCond %{QUERY_STRING} http[s]*://.*$ [NC] | ||||
|     RewriteRule ^.* - [F,L]  # all matching conditions from above will end in nirvana | ||||
| 
 | ||||
|     # Exclude some files and directories from rewriting | ||||
|     RewriteRule ^usage/.*$ - [L] | ||||
|     RewriteRule ^conlite/.*$ - [L] | ||||
|     RewriteRule ^setup/.*$ - [L] | ||||
|     RewriteRule ^cms/upload/.*$ - [L] | ||||
|     RewriteRule ^cms/test/.*$ - [L] | ||||
|     RewriteRule ^cms/front_content.php.*$ - [L] | ||||
|     RewriteRule ^cms/dbfs.php.*$ - [L] | ||||
| 
 | ||||
|     # Exclude common extensions from rewriting and pass remaining requests to | ||||
|     # front_content.php. | ||||
|     RewriteRule !\.(avi|css|doc|flv|gif|gzip|ico|jpeg|jpg|js|mov|mp3|pdf|png|ppt|rar|svg|swf|txt|wav|wmv|xml|zip)$ front_content.php [NC,QSA,L] | ||||
| 
 | ||||
| </IfModule> | ||||
| 
 | ||||
| # Some rules to compress files. | ||||
| # NOTE: Following settings are not mod rewrite specific, but enabling mod_deflate | ||||
| #       for some file types can help to reduce bandwith. | ||||
| <IfModule mod_deflate.c> | ||||
|     <FilesMatch "\.(js|css|html|htm|php|xml)$"> | ||||
|         SetOutputFilter DEFLATE | ||||
|     </FilesMatch> | ||||
| </IfModule> | ||||
							
								
								
									
										59
									
								
								files/htaccess_simple.txt
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										59
									
								
								files/htaccess_simple.txt
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,59 @@ | |||
| ################################################################################ | ||||
| # ConLite AMR plugin simple rewrite rules set. | ||||
| # | ||||
| # Contains few easy to handle rewrite rules. | ||||
| # | ||||
| # @version    1.0.0 | ||||
| # @author     Ortwin Pinke <ortwin.pinke@php-backoffice.de> | ||||
| # @author     Murat Purc <murat@purc.de> | ||||
| # @copyright  2019 ConLite Team | ||||
| # @link       http://www.conlite.org | ||||
| # | ||||
| # Versions before 1.0 copyright 4fb, author Murat Purc | ||||
| # | ||||
| # $Id: htaccess_simple.txt 145 2019-10-25 16:00:47Z oldperl $ | ||||
| ################################################################################ | ||||
| 
 | ||||
| <IfModule mod_rewrite.c> | ||||
| 
 | ||||
|     # Enable rewrite engine | ||||
|     RewriteEngine on | ||||
| 
 | ||||
|     # Specify a base URL-path for the rules | ||||
|     RewriteBase /cms | ||||
| 
 | ||||
|     # Catch some common exploits in query string to get rid of them | ||||
|     # NOTE: Conditions to prevent protocols (ftp, http[s]) in query string could | ||||
|     #       be a disadvantage in some cases | ||||
|     RewriteCond %{QUERY_STRING} contenido_path=.*$  [NC,OR] | ||||
|     RewriteCond %{QUERY_STRING} cfg\[path\]=.*$  [NC,OR] | ||||
|     RewriteCond %{QUERY_STRING} _PHPLIB\[libdir\]=.*$  [NC,OR] | ||||
|     RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] | ||||
|     RewriteCond %{QUERY_STRING} ftp://.*$  [NC,OR] | ||||
|     RewriteCond %{QUERY_STRING} http[s]*://.*$ [NC] | ||||
|     RewriteRule ^.* - [F,L]  # all matching conditions from above will end in nirvana | ||||
| 
 | ||||
|     # Rewrite request to root to front_content.php | ||||
|     RewriteRule ^$ front_content.php [QSA,L] | ||||
| 
 | ||||
|     # Exclude following request from rewriting | ||||
|     # tests for favicon.ico, valid symlinks (-s), not empty files (-l) and folders (-d) | ||||
|     RewriteCond %{REQUEST_URI} ^/favicon.ico$ [OR] | ||||
|     RewriteCond %{REQUEST_FILENAME} -s [OR] | ||||
|     RewriteCond %{REQUEST_FILENAME} -l [OR] | ||||
|     RewriteCond %{REQUEST_FILENAME} -d | ||||
|     RewriteRule ^.*$ - [NC,L] | ||||
| 
 | ||||
|     # Pass other requests to front_content.php | ||||
|     RewriteRule ^.*$ front_content.php [QSA,NC,L] | ||||
| 
 | ||||
| </IfModule> | ||||
| 
 | ||||
| # Some rules to compress files. | ||||
| # NOTE: Following settings are not mod rewrite specific, but enabling mod_deflate | ||||
| #       for some file types can help to reduce bandwith. | ||||
| <IfModule mod_deflate.c> | ||||
|     <FilesMatch "\.(js|css|html|htm|php|xml)$"> | ||||
|         SetOutputFilter DEFLATE | ||||
|     </FilesMatch> | ||||
| </IfModule> | ||||
							
								
								
									
										114
									
								
								includes/config.mod_rewrite_default.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										114
									
								
								includes/config.mod_rewrite_default.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,114 @@ | |||
| <?php | ||||
| /** | ||||
|  * Plugin Advanced Mod Rewrite default settings. This file will be included if | ||||
|  * mod rewrite settings of an client couldn't loaded. | ||||
|  * | ||||
|  * Containing settings are taken over from CONTENIDO-4.6.15mr setup installer | ||||
|  * template beeing made originally by stese. | ||||
|  * | ||||
|  * NOTE: | ||||
|  * Changes in these Advanced Mod Rewrite settings will affect all clients, as long | ||||
|  * as they don't have their own configuration. | ||||
|  * PHP needs write permissions to the folder, where this file resides. Mod Rewrite | ||||
|  * configuration files will be created in this folder. | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: config.mod_rewrite_default.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| global $cfg; | ||||
| 
 | ||||
| // Use advanced mod_rewrites  ( 1 = yes, 0 = none )
 | ||||
| $cfg['mod_rewrite']['use'] = 0; | ||||
| 
 | ||||
| // Path to the htaccess file with trailling slash from domain-root!
 | ||||
| $cfg['mod_rewrite']['rootdir'] = '/'; | ||||
| 
 | ||||
| // Check path to the htaccess file ( 1 = yes, 0 = none )
 | ||||
| $cfg['mod_rewrite']['checkrootdir'] = 1; | ||||
| 
 | ||||
| // Start TreeLocation from Root Tree (set to 1) or get location from first category (set to 0)
 | ||||
| $cfg['mod_rewrite']['startfromroot'] = 0; | ||||
| 
 | ||||
| // Prevent Duplicated Content, if startfromroot is enabled ( 1 = yes, 0 = none )
 | ||||
| $cfg['mod_rewrite']['prevent_duplicated_content'] = 0; | ||||
| 
 | ||||
| // is multilanguage? ( 1 = yes, 0 = none )
 | ||||
| $cfg['mod_rewrite']['use_language'] = 0; | ||||
| 
 | ||||
| // use language name in url? ( 1 = yes, 0 = none )
 | ||||
| $cfg['mod_rewrite']['use_language_name'] = 0; | ||||
| 
 | ||||
| // is multiclient in only one directory? ( 1 = yes, 0 = none )
 | ||||
| $cfg['mod_rewrite']['use_client'] = 0; | ||||
| 
 | ||||
| // use client name in url? ( 1 = yes, 0 = none )
 | ||||
| $cfg['mod_rewrite']['use_client_name'] = 0; | ||||
| 
 | ||||
| // use lowercase url? ( 1 = yes, 0 = none )
 | ||||
| $cfg['mod_rewrite']['use_lowercase_uri'] = 1; | ||||
| 
 | ||||
| // file extension for article links
 | ||||
| $cfg['mod_rewrite']['file_extension'] = '.html'; | ||||
| 
 | ||||
| // The percentage if the category name have to match with database names.
 | ||||
| $cfg['mod_rewrite']['category_resolve_min_percentage'] = '75'; | ||||
| 
 | ||||
| // Add start article name to url (1 = yes, 0 = none)
 | ||||
| $cfg['mod_rewrite']['add_startart_name_to_url'] = 1; | ||||
| 
 | ||||
| // Default start article name to use, depends on active add_startart_name_to_url
 | ||||
| $cfg['mod_rewrite']['default_startart_name'] = 'index'; | ||||
| 
 | ||||
| // Rewrite urls on generating the code for the page. If active, the responsibility will be
 | ||||
| // outsourced to moduleoutputs and you have to adapt the moduleoutputs manually. Each output of
 | ||||
| // internal article/category links must be processed by using $sess->url. (1 = yes, 0 = none)
 | ||||
| $cfg['mod_rewrite']['rewrite_urls_at_congeneratecode'] = 0; | ||||
| 
 | ||||
| // Rewrite urls on output of htmlcode at front_content.php. Is the old way, and doesn't require
 | ||||
| // adapting of moduleoutputs. On the other hand usage of this way will be slower than rewriting
 | ||||
| // option above. (1 = yes, 0 = none)
 | ||||
| $cfg['mod_rewrite']['rewrite_urls_at_front_content_output'] = 1; | ||||
| 
 | ||||
| 
 | ||||
| // Following five settings write urls like this one:
 | ||||
| //     www.domain.de/category1-category2.articlename.html
 | ||||
| // Changes of these settings causes a reset of all aliases, see Advanced Mod Rewrite settings in
 | ||||
| // backend.
 | ||||
| // NOTE: category_seperator and article_seperator must contain different character.
 | ||||
| // Separator for categories
 | ||||
| $cfg['mod_rewrite']['category_seperator'] = '/'; | ||||
| 
 | ||||
| // Separator between category and article
 | ||||
| $cfg['mod_rewrite']['article_seperator'] = '/'; | ||||
| 
 | ||||
| // Word seperator in category names
 | ||||
| $cfg['mod_rewrite']['category_word_seperator'] = '-'; | ||||
| 
 | ||||
| // Word seperator in article names
 | ||||
| $cfg['mod_rewrite']['article_word_seperator'] = '-'; | ||||
| 
 | ||||
| 
 | ||||
| // Routing settings for incomming urls. Here you can define routing rules as follows:
 | ||||
| // $cfg['mod_rewrite']['routing'] = array(
 | ||||
| //    '/a_incomming/url/foobar.html' => '/new_url/foobar.html',  # route /a_incomming/url/foobar.html to /new_url/foobar.html
 | ||||
| //    '/cms/' => '/' # route /cms/ to / (doc root of client)
 | ||||
| // );
 | ||||
| $cfg['mod_rewrite']['routing'] = array(); | ||||
| 
 | ||||
| 
 | ||||
| // Redirect invalid articles to errorpage (1 = yes, 0 = none)
 | ||||
| $cfg['mod_rewrite']['redirect_invalid_article_to_errorsite'] = 0; | ||||
| 
 | ||||
							
								
								
									
										167
									
								
								includes/config.plugin.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										167
									
								
								includes/config.plugin.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,167 @@ | |||
| <?php | ||||
| /** | ||||
|  * Plugin Advanced Mod Rewrite initialization file. | ||||
|  * | ||||
|  * This file will be included by CONTENIDO plugin loader routine, and the content | ||||
|  * of this file ensures that the AMR Plugin will be initialized correctly. | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: config.plugin.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| global $_cecRegistry, $cfg, $contenido, $area, $client, $load_client; | ||||
| 
 | ||||
| ####################################################################################################
 | ||||
| /** | ||||
|  * Chain Contenido.Frontend.CreateURL | ||||
|  * This chain is called inside some scripts (front_content.php) to create urls. | ||||
|  * | ||||
|  * @todo: Is added to provide downwards compatibility for the amr plugin. | ||||
|  *        There is no need for this chain since CONTENIDO 4.8.9 contains its own Url building feature. | ||||
|  * @deprecated | ||||
|  * | ||||
|  * Parameters & order: | ||||
|  * string   URL including parameter value pairs | ||||
|  * | ||||
|  * Returns: | ||||
|  * string     Returns modified URL | ||||
|  */ | ||||
| $_cecRegistry->registerChain("Contenido.Frontend.CreateURL", "string"); | ||||
| ####################################################################################################
 | ||||
| // initialize client id
 | ||||
| if (isset($client) && (int) $client > 0) { | ||||
|     $clientId = (int) $client; | ||||
| } elseif (isset($load_client) && (int) $load_client > 0) { | ||||
|     $clientId = (int) $load_client; | ||||
| } else { | ||||
|     $clientId = ''; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // include necessary sources
 | ||||
| cInclude('classes', 'Debug/DebuggerFactory.class.php'); | ||||
| 
 | ||||
| plugin_include('mod_rewrite', 'classes/controller/class.modrewrite_controller_abstract.php'); | ||||
| plugin_include('mod_rewrite', 'classes/controller/class.modrewrite_content_controller.php'); | ||||
| plugin_include('mod_rewrite', 'classes/controller/class.modrewrite_contentexpert_controller.php'); | ||||
| plugin_include('mod_rewrite', 'classes/controller/class.modrewrite_contenttest_controller.php'); | ||||
| plugin_include('mod_rewrite', 'classes/class.modrewritebase.php'); | ||||
| plugin_include('mod_rewrite', 'classes/class.modrewrite.php'); | ||||
| plugin_include('mod_rewrite', 'classes/class.modrewritecontroller.php'); | ||||
| plugin_include('mod_rewrite', 'classes/class.modrewritedebugger.php'); | ||||
| plugin_include('mod_rewrite', 'classes/class.modrewritetest.php'); | ||||
| plugin_include('mod_rewrite', 'classes/class.modrewriteurlstack.php'); | ||||
| plugin_include('mod_rewrite', 'classes/class.modrewriteurlutil.php'); | ||||
| plugin_include('mod_rewrite', 'includes/functions.mod_rewrite.php'); | ||||
| 
 | ||||
| 
 | ||||
| global $lngAct; | ||||
| 
 | ||||
| $lngAct['mod_rewrite']['mod_rewrite'] = i18n("Advanced Mod Rewrite", "mod_rewrite"); | ||||
| $lngAct['mod_rewrite']['mod_rewrite_expert'] = i18n("Advanced Mod Rewrite functions", "mod_rewrite"); | ||||
| $lngAct['mod_rewrite']['mod_rewrite_test'] = i18n("Advanced Mod Rewrite test", "mod_rewrite"); | ||||
| 
 | ||||
| 
 | ||||
| // set debug configuration
 | ||||
| if (isset($contenido)) { | ||||
|     ModRewriteDebugger::setEnabled(true); | ||||
| } else { | ||||
|     ModRewriteDebugger::setEnabled(false); | ||||
| } | ||||
| 
 | ||||
| // initialize mr plugin
 | ||||
| ModRewrite::initialize($clientId); | ||||
| 
 | ||||
| if (ModRewrite::isEnabled()) { | ||||
| 
 | ||||
|     $aMrCfg = ModRewrite::getConfig(); | ||||
| 
 | ||||
|     $_cecRegistry = cApiCecRegistry::getInstance(); | ||||
| 
 | ||||
|     // Add new tree function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Action.str_newtree.AfterCall', 'mr_strNewTree'); | ||||
| 
 | ||||
|     // Add move subtree function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Action.str_movesubtree.AfterCall', 'mr_strMoveSubtree'); | ||||
| 
 | ||||
|     // Add new category function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Action.str_newcat.AfterCall', 'mr_strNewCategory'); | ||||
| 
 | ||||
|     // Add rename category function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Action.str_renamecat.AfterCall', 'mr_strRenameCategory'); | ||||
| 
 | ||||
|     // Add move up category function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Action.str_moveupcat.AfterCall', 'mr_strMoveUpCategory'); | ||||
| 
 | ||||
|     // Add move down category function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Action.str_movedowncat.AfterCall', 'mr_strMovedownCategory'); | ||||
| 
 | ||||
|     // Add copy category function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Category.strCopyCategory', 'mr_strCopyCategory'); | ||||
| 
 | ||||
|     // Add category sync function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Category.strSyncCategory_Loop', 'mr_strSyncCategory'); | ||||
| 
 | ||||
|     // Add save article (new and existing category) function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Action.con_saveart.AfterCall', 'mr_conSaveArticle'); | ||||
| 
 | ||||
|     // Add move article function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Article.conMoveArticles_Loop', 'mr_conMoveArticles'); | ||||
| 
 | ||||
|     // Add duplicate article function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Article.conCopyArtLang_AfterInsert', 'mr_conCopyArtLang'); | ||||
| 
 | ||||
|     // Add sync article function to CONTENIDO Extension Chainer
 | ||||
|     $_cecRegistry->addChainFunction('Contenido.Article.conSyncArticle_AfterInsert', 'mr_conSyncArticle'); | ||||
| 
 | ||||
|     if (!isset($contenido)) { | ||||
|         // we are not in backend, add cec functions for rewriting
 | ||||
|         // Add mr related function for hook "after plugins loaded" to CONTENIDO Extension Chainer
 | ||||
|         $_cecRegistry->addChainFunction('Contenido.Frontend.AfterLoadPlugins', 'mr_runFrontendController'); | ||||
| 
 | ||||
|         // Add url rewriting function to CONTENIDO Extension Chainer
 | ||||
|         // @todo: no more need since CONTENIDO 4.8.9 provides central Url building,
 | ||||
|         //        but it is still available  because of downwards compatibility
 | ||||
|         // @deprecated
 | ||||
|         $_cecRegistry->addChainFunction('Contenido.Frontend.CreateURL', 'mr_buildNewUrl'); | ||||
| 
 | ||||
|         // overwrite url builder configuration with own url builder
 | ||||
|         $cfg['url_builder']['name'] = 'MR'; | ||||
|         $cfg['config'] = array(); | ||||
|         cInclude('classes', 'Url/Contenido_Url.class.php'); | ||||
|         cInclude('classes', 'UrlBuilder/Contenido_UrlBuilderConfig.class.php'); | ||||
|         Contenido_UrlBuilderConfig::setConfig($cfg['url_builder']); | ||||
| 
 | ||||
|         if ($aMrCfg['rewrite_urls_at_congeneratecode'] == 1) { | ||||
|             // Add url rewriting at code generation to CONTENIDO Extension Chainer
 | ||||
|             $_cecRegistry->addChainFunction('Contenido.Content.conGenerateCode', 'mr_buildGeneratedCode'); | ||||
|         } elseif ($aMrCfg['rewrite_urls_at_front_content_output'] == 1) { | ||||
|             // Add url rewriting at html output to CONTENIDO Extension Chainer
 | ||||
|             $_cecRegistry->addChainFunction('Contenido.Frontend.HTMLCodeOutput', 'mr_buildGeneratedCode'); | ||||
|         } else { | ||||
|             // Fallback solution: Add url rewriting at code generation to CONTENIDO Extension Chainer
 | ||||
|             $_cecRegistry->addChainFunction('Contenido.Content.conGenerateCode', 'mr_buildGeneratedCode'); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| if (isset($contenido) && isset($area) && $area == 'mod_rewrite_test') { | ||||
|     // configure url builder to enable it on test page
 | ||||
|     $cfg['url_builder']['name'] = 'MR'; | ||||
|     $cfg['config'] = array(); | ||||
|     Contenido_UrlBuilderConfig::setConfig($cfg['url_builder']); | ||||
|     ModRewrite::setEnabled(true); | ||||
| } | ||||
| 
 | ||||
| unset($clientId, $options); | ||||
							
								
								
									
										102
									
								
								includes/front_content_controller.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										102
									
								
								includes/front_content_controller.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,102 @@ | |||
| <?php | ||||
| /** | ||||
|  * Mod Rewrite front_content.php controller. Does some preprocessing jobs, tries | ||||
|  * to set following variables, depending on mod rewrite configuration and if | ||||
|  * request part exists: | ||||
|  * - $client | ||||
|  * - $changeclient | ||||
|  * - $lang | ||||
|  * - $changelang | ||||
|  * - $idart | ||||
|  * - $idcat | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: front_content_controller.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| global $client, $changeclient, $cfgClient, $lang, $changelang, $idart, $idcat, $path, $mr_preprocessedPageError; | ||||
| 
 | ||||
| ModRewriteDebugger::add(ModRewrite::getConfig(), 'front_content_controller.php mod rewrite config'); | ||||
| 
 | ||||
| 
 | ||||
| // create an mod rewrite controller instance and execute processing
 | ||||
| $oMRController = new ModRewriteController($_SERVER['REQUEST_URI']); | ||||
| $oMRController->execute(); | ||||
| 
 | ||||
| if ($oMRController->errorOccured()) { | ||||
| 
 | ||||
|     // an error occured (idcat and or idart couldn't catched by controller)
 | ||||
| 
 | ||||
|     $iRedirToErrPage = ModRewrite::getConfig('redirect_invalid_article_to_errorsite', 0); | ||||
|     // try to redirect to errorpage if desired
 | ||||
|     if ($iRedirToErrPage == 1 && (int) $client > 0 && (int) $lang > 0) { | ||||
|         global $errsite_idcat, $errsite_idart; | ||||
| 
 | ||||
|         if ($cfgClient['set'] != 'set')	{ | ||||
|             rereadClients(); | ||||
|         } | ||||
| 
 | ||||
|         // errorpage
 | ||||
|         $aParams = array( | ||||
|             'client' => $client, 'idcat' => $errsite_idcat[$client], 'idart' => $errsite_idart[$client], | ||||
|             'lang' => $lang, 'error' => '1' | ||||
|         ); | ||||
|         $errsite = 'Location: ' . Contenido_Url::getInstance()->buildRedirect($aParams); | ||||
|         mr_header($errsite); | ||||
|         exit(); | ||||
|     } | ||||
| } else { | ||||
| 
 | ||||
|     // set some global variables
 | ||||
| 
 | ||||
|     if ($oMRController->getClient()) { | ||||
|         $client = $oMRController->getClient(); | ||||
|     } | ||||
| 
 | ||||
|     if ($oMRController->getChangeClient()) { | ||||
|         $changeclient = $oMRController->getChangeClient(); | ||||
|     } | ||||
| 
 | ||||
|     if ($oMRController->getLang()) { | ||||
|         $lang = $oMRController->getLang(); | ||||
|     } | ||||
| 
 | ||||
|     if ($oMRController->getChangeLang()) { | ||||
|         $changelang = $oMRController->getChangeLang(); | ||||
|     } | ||||
| 
 | ||||
|     if ($oMRController->getIdArt()) { | ||||
|         $idart = $oMRController->getIdArt(); | ||||
|     } | ||||
| 
 | ||||
|     if ($oMRController->getIdCat()) { | ||||
|         $idcat = $oMRController->getIdCat(); | ||||
|     } | ||||
| 
 | ||||
|     if ($oMRController->getPath()) { | ||||
|         $path = $oMRController->getPath(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // some debugs
 | ||||
| ModRewriteDebugger::add($mr_preprocessedPageError, 'mr $mr_preprocessedPageError', __FILE__); | ||||
| if ($oMRController->getError()) { | ||||
|     ModRewriteDebugger::add($oMRController->getError(), 'mr error', __FILE__); | ||||
| } | ||||
| ModRewriteDebugger::add($idart, 'mr $idart', __FILE__); | ||||
| ModRewriteDebugger::add($idcat, 'mr $idcat', __FILE__); | ||||
| ModRewriteDebugger::add($lang, 'mr $lang', __FILE__); | ||||
| ModRewriteDebugger::add($client, 'mr $client', __FILE__); | ||||
| 
 | ||||
							
								
								
									
										912
									
								
								includes/functions.mod_rewrite.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										912
									
								
								includes/functions.mod_rewrite.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,912 @@ | |||
| <?php | ||||
| /** | ||||
|  * Mod Rewrite front_content.php controller. Does some preprocessing jobs, tries | ||||
|  * to set following variables, depending on mod rewrite configuration and if | ||||
|  * request part exists: | ||||
|  * - $client | ||||
|  * - $changeclient | ||||
|  * - $lang | ||||
|  * - $changelang | ||||
|  * - $idart | ||||
|  * - $idcat | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: functions.mod_rewrite.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Stefan Seifarth / stese | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   www.polycoder.de | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| cInclude('classes', 'contenido/class.articlelanguage.php'); | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job for created new tree. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Action.str_newtree.AfterCall'. | ||||
|  * | ||||
|  * @param   array  $data  Assoziative array with some values | ||||
|  * @return  array  Passed parameter | ||||
|  */ | ||||
| function mr_strNewTree(array $data) { | ||||
|     global $lang; | ||||
| 
 | ||||
|     ModRewriteDebugger::log($data, 'mr_strNewTree $data'); | ||||
| 
 | ||||
|     if ((int) $data['newcategoryid'] > 0) { | ||||
|         $mrCatAlias = (trim($data['categoryalias']) !== '') ? trim($data['categoryalias']) : trim($data['categoryname']); | ||||
|         // set new urlname - because original set urlname isn''t validated for double entries in same parent category
 | ||||
|         ModRewrite::setCatWebsafeName($mrCatAlias, $data['newcategoryid'], $lang); | ||||
|         ModRewrite::setCatUrlPath($data['newcategoryid'], $lang); | ||||
|     } | ||||
| 
 | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job for created new category. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Action.str_newcat.AfterCall'. | ||||
|  * | ||||
|  * @param   array  $data  Assoziative array with some values | ||||
|  * @return  array  Passed parameter | ||||
|  */ | ||||
| function mr_strNewCategory(array $data) { | ||||
|     global $lang; | ||||
| 
 | ||||
|     ModRewriteDebugger::log($data, 'mr_strNewCategory $data'); | ||||
| 
 | ||||
|     if ((int) $data['newcategoryid'] > 0) { | ||||
|         $mrCatAlias = (trim($data['categoryalias']) !== '') ? trim($data['categoryalias']) : trim($data['categoryname']); | ||||
|         // set new urlname - because original set urlname isn''t validated for double entries in same parent category
 | ||||
|         ModRewrite::setCatWebsafeName($mrCatAlias, $data['newcategoryid'], $lang); | ||||
|         ModRewrite::setCatUrlPath($data['newcategoryid'], $lang); | ||||
|     } | ||||
| 
 | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job for renamed category | ||||
|  * 2010-02-01: and now all existing subcategories and modify their paths too... | ||||
|  * 2010-02-01: max 50 recursion level | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Action.str_renamecat.AfterCall'. | ||||
|  * | ||||
|  * @param   array  $data  Assoziative array with some values | ||||
|  * @return  array  Passed parameter | ||||
|  */ | ||||
| function mr_strRenameCategory(array $data) { | ||||
|     ModRewriteDebugger::log($data, 'mr_strRenameCategory $data'); | ||||
| 
 | ||||
|     // hes 20100102
 | ||||
|     // maximal 50 recursion level
 | ||||
|     $recursion = (is_int($data['recursion'])) ? $data['recursion'] : 1; | ||||
|     if ($recursion > 50) { | ||||
|         exit("#20100201-1503: sorry - maximum function nesting level of " . $recursion . " reached"); | ||||
|     } | ||||
| 
 | ||||
|     $mrCatAlias = (trim($data['newcategoryalias']) !== '') ? trim($data['newcategoryalias']) : trim($data['newcategoryname']); | ||||
|     if ($mrCatAlias != '') { | ||||
|         // set new urlname - because original set urlname isn''t validated for double entries in same parent category
 | ||||
|         ModRewrite::setCatWebsafeName($mrCatAlias, $data['idcat'], $data['lang']); | ||||
|         ModRewrite::setCatUrlPath($data['idcat'], $data['lang']); | ||||
|     } | ||||
| 
 | ||||
|     // hes 20100102
 | ||||
|     // now dive into all existing subcategories and modify their paths too...
 | ||||
|     $str = 'parentid=' . $data['idcat']; | ||||
|     $oCatColl = new cApiCategoryCollection($str); | ||||
| 
 | ||||
|     while ($oCat = $oCatColl->next()) { | ||||
|         // hes 20100102
 | ||||
|         $str = 'idcat=' . $oCat->get('idcat') . ' AND idlang=' . (int) $data['lang']; | ||||
|         $oCatLanColl = new cApiCategoryLanguageCollection($str); | ||||
|         if ($oCatLan = $oCatLanColl->next()) { | ||||
|             // hes 20100102
 | ||||
|             $childData = array( | ||||
|                 'idcat' => $oCat->get('idcat'), | ||||
|                 'lang' => (int) $data['lang'], | ||||
|                 'newcategoryname' => $oCatLan->get('name'), | ||||
|                 'newcategoryalias' => $oCatLan->get('urlname'), | ||||
|                 'recursion' => $recursion + 1 | ||||
|             ); | ||||
| 
 | ||||
|             $resData = mr_strRenameCategory($childData); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job after moving a category up. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Action.str_moveupcat.AfterCall'. | ||||
|  * | ||||
|  * @todo  do we really need processing of the category? there is no mr relevant data | ||||
|  *        changes while moving the category on same level, level and name won't change | ||||
|  * | ||||
|  * @param   int  $idcat  Category id | ||||
|  * @return  int  Category id | ||||
|  */ | ||||
| function mr_strMoveUpCategory($idcat) { | ||||
|     ModRewriteDebugger::log($idcat, 'mr_strMoveUpCategory $idcat'); | ||||
| 
 | ||||
|     // category check
 | ||||
|     $cat = new cApiCategory((int) $idcat); | ||||
|     if (!$cat->get('preid')) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     // get all cat languages
 | ||||
|     $aIdLang = ModRewrite::getCatLanguages($idcat); | ||||
| 
 | ||||
|     // update ...
 | ||||
|     foreach ($aIdLang as $iIdLang) { | ||||
|         // get urlname
 | ||||
|         $sCatname = ModRewrite::getCatName($idcat, $iIdLang); | ||||
|         // set new urlname - because original set urlname isn't validated for double entries in same parent category
 | ||||
|         ModRewrite::setCatWebsafeName($sCatname, $idcat, $iIdLang); | ||||
|     } | ||||
| 
 | ||||
|     return $idcat; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job after moving a category down. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Action.str_movedowncat.AfterCall'. | ||||
|  * | ||||
|  * @todo  do we really need processing of the category? there is no mr relevant data | ||||
|  *        changes while moving the category on same level, level and name won't change | ||||
|  * | ||||
|  * @param   int  $idcat  Id of category beeing moved down | ||||
|  * @return  int  Category id | ||||
|  */ | ||||
| function mr_strMovedownCategory($idcat) { | ||||
|     ModRewriteDebugger::log($idcat, 'mr_strMovedownCategory $idcat'); | ||||
| 
 | ||||
|     // category check
 | ||||
|     $cat = new cApiCategory((int) $idcat); | ||||
|     if (!$cat->get('id')) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     // get all cat languages
 | ||||
|     $aIdLang = ModRewrite::getCatLanguages($idcat); | ||||
|     // update ...
 | ||||
|     foreach ($aIdLang as $iIdLang) { | ||||
|         // get urlname
 | ||||
|         $sCatname = ModRewrite::getCatName($idcat, $iIdLang); | ||||
|         // set new urlname - because original set urlname isn't validated for double entries in same parent category
 | ||||
|         ModRewrite::setCatWebsafeName($sCatname, $idcat, $iIdLang); | ||||
|     } | ||||
| 
 | ||||
|     return $idcat; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job after moving a category subtree. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Action.str_movesubtree.AfterCall'. | ||||
|  * | ||||
|  * @param   array  $data  Assoziative array with some values | ||||
|  * @return  array  Passed parameter | ||||
|  */ | ||||
| function mr_strMoveSubtree(array $data) { | ||||
|     ModRewriteDebugger::log($data, 'mr_strMoveSubtree $data'); | ||||
| 
 | ||||
|     // category check
 | ||||
|     if ((int) $data['idcat'] <= 0) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     // next category check
 | ||||
|     $cat = new cApiCategory($data['idcat']); | ||||
|     if (!$cat->get('idcat')) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     // get all cat languages
 | ||||
|     $aIdLang = ModRewrite::getCatLanguages($data['idcat']); | ||||
|     // update all languages
 | ||||
|     foreach ($aIdLang as $iIdLang) { | ||||
|         // get urlname
 | ||||
|         $sCatname = ModRewrite::getCatName($data['idcat'], $iIdLang); | ||||
|         // set new urlname - because original set urlname isn't validated for double entries in same parent category
 | ||||
|         ModRewrite::setCatWebsafeName($sCatname, $data['idcat'], $iIdLang); | ||||
|         ModRewrite::setCatUrlPath($data['idcat'], $iIdLang); | ||||
|     } | ||||
| 
 | ||||
|     // now dive into all existing subcategories and modify their paths too...
 | ||||
|     $oCatColl = new cApiCategoryCollection('parentid=' . $data['idcat']); | ||||
|     while ($oCat = $oCatColl->next()) { | ||||
|         mr_strMoveSubtree(array('idcat' => $oCat->get('idcat'))); | ||||
|     } | ||||
| 
 | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job after copying a category subtree. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Category.strCopyCategory'. | ||||
|  * | ||||
|  * @param   array  $data  Assoziative array with some values | ||||
|  * @return  array  Passed parameter | ||||
|  */ | ||||
| function mr_strCopyCategory(array $data) { | ||||
|     ModRewriteDebugger::log($data, 'mr_strCopyCategory $data'); | ||||
| 
 | ||||
|     $idcat = (int) $data['newcat']->get('idcat'); | ||||
|     if ($idcat <= 0) { | ||||
|         return $data; | ||||
|     } | ||||
| 
 | ||||
|     // get all cat languages
 | ||||
|     $aIdLang = ModRewrite::getCatLanguages($idcat); | ||||
|     // update ...
 | ||||
|     foreach ($aIdLang as $iIdLang) { | ||||
|         // get urlname
 | ||||
|         $sCatname = ModRewrite::getCatName($idcat, $iIdLang); | ||||
|         // set new urlname - because original set urlname isn't validated for double entries in same parent category
 | ||||
|         ModRewrite::setCatWebsafeName($sCatname, $idcat, $iIdLang); | ||||
|         ModRewrite::setCatUrlPath($idcat, $iIdLang); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job during structure synchronisation process, | ||||
|  * sets the urlpath of current category. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Category.strSyncCategory_Loop'. | ||||
|  * | ||||
|  * @param   array  $data  Assoziative array with some values | ||||
|  * @return  array  Passed parameter | ||||
|  */ | ||||
| function mr_strSyncCategory(array $data) { | ||||
|     ModRewriteDebugger::log($data, 'mr_strSyncCategory $data'); | ||||
|     ModRewrite::setCatUrlPath($data['idcat'], $data['idlang']); | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job for saved articles (new or modified article). | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Action.con_saveart.AfterCall'. | ||||
|  * | ||||
|  * @param   array  $data  Assoziative array with some article properties | ||||
|  * @return  array  Passed parameter | ||||
|  */ | ||||
| function mr_conSaveArticle(array $data) { | ||||
|     global $tmp_firstedit, $client; | ||||
| 
 | ||||
|     ModRewriteDebugger::log($data, 'mr_conSaveArticle $data'); | ||||
| 
 | ||||
|     if ((int) $data['idart'] == 0) { | ||||
|         return $data; | ||||
|     } | ||||
| 
 | ||||
|     if (strlen(trim($data['urlname'])) == 0) { | ||||
|         $data['urlname'] = $data['title']; | ||||
|     } | ||||
| 
 | ||||
|     if (1 == $tmp_firstedit) { | ||||
|         // new article
 | ||||
|         $aLanguages = getLanguagesByClient($client); | ||||
| 
 | ||||
|         foreach ($aLanguages as $iLang) { | ||||
|             ModRewrite::setArtWebsafeName($data['urlname'], $data['idart'], $iLang, $data['idcat']); | ||||
|         } | ||||
|     } else { | ||||
|         // modified article
 | ||||
|         $aArticle = ModRewrite::getArtIdByArtlangId($data['idartlang']); | ||||
| 
 | ||||
|         if (isset($aArticle['idart']) && isset($aArticle['idlang'])) { | ||||
|             ModRewrite::setArtWebsafeName($data['urlname'], $aArticle['idart'], $aArticle['idlang'], $data['idcat']); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job for articles beeing moved. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Article.conMoveArticles_Loop'. | ||||
|  * | ||||
|  * @param   array  $data  Assoziative array with record entries | ||||
|  * @return  array  Loop through of arguments | ||||
|  */ | ||||
| function mr_conMoveArticles($data) { | ||||
|     ModRewriteDebugger::log($data, 'mr_conMoveArticles $data'); | ||||
| 
 | ||||
|     // too defensive but secure way
 | ||||
|     if (!is_array($data)) { | ||||
|         return $data; | ||||
|     } elseif (!isset($data['idartlang'])) { | ||||
|         return $data; | ||||
|     } elseif (!isset($data['idart'])) { | ||||
|         return $data; | ||||
|     } | ||||
| 
 | ||||
|     $arr_art = ModRewrite::getArtIds($data['idartlang']); | ||||
|     if (count($arr_art) == 2) { | ||||
|         ModRewrite::setArtWebsafeName($arr_art["urlname"], $data['idart'], $arr_art["idlang"]); | ||||
|     } | ||||
| 
 | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job for duplicated articles. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Article.conCopyArtLang_AfterInsert'. | ||||
|  * | ||||
|  * @param   array  $data  Assoziative array with record entries | ||||
|  * @return  array  Loop through of arguments | ||||
|  */ | ||||
| function mr_conCopyArtLang($data) { | ||||
|     ModRewriteDebugger::log($data, 'mr_conCopyArtLang $data'); | ||||
| 
 | ||||
|     // too defensive but secure way
 | ||||
|     if (!is_array($data)) { | ||||
|         return $data; | ||||
|     } elseif (!isset($data['title'])) { | ||||
|         return $data; | ||||
|     } elseif (!isset($data['idart'])) { | ||||
|         return $data; | ||||
|     } elseif (!isset($data['idlang'])) { | ||||
|         return $data; | ||||
|     } | ||||
| 
 | ||||
|     ModRewrite::setArtWebsafeName($data['title'], $data['idart'], $data['idlang']); | ||||
| 
 | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Processes mod_rewrite related job for synchronized articles. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Article.conSyncArticle_AfterInsert'. | ||||
|  * | ||||
|  * @param   array  $data  Assoziative array with record entries as follows: | ||||
|  * <code> | ||||
|  * array( | ||||
|  *     'src_art_lang'  => Recordset (assoziative array) of source item from con_art_lang table | ||||
|  *     'dest_art_lang' => Recordset (assoziative array) of inserted destination item from con_art_lang table | ||||
|  * ); | ||||
|  * </code> | ||||
|  * | ||||
|  * @return  array  Loop through of argument | ||||
|  */ | ||||
| function mr_conSyncArticle($data) { | ||||
|     ModRewriteDebugger::log($data, 'mr_conSyncArticle $data'); | ||||
| 
 | ||||
|     // too defensive but secure way
 | ||||
|     if (!is_array($data)) { | ||||
|         return $data; | ||||
|     } elseif (!isset($data['src_art_lang']) || !is_array($data['src_art_lang'])) { | ||||
|         return $data; | ||||
|     } elseif (!isset($data['dest_art_lang']) || !is_array($data['dest_art_lang'])) { | ||||
|         return $data; | ||||
|     } elseif (!isset($data['dest_art_lang']['idart'])) { | ||||
|         return $data; | ||||
|     } elseif (!isset($data['dest_art_lang']['idlang'])) { | ||||
|         return $data; | ||||
|     } | ||||
| 
 | ||||
|     if (!isset($data['src_art_lang']['urlname'])) { | ||||
|         $artLang = new cApiArticleLanguage($data['src_art_lang']['idartlang']); | ||||
|         $urlname = $artLang->get('urlname'); | ||||
|     } else { | ||||
|         $urlname = $data['src_art_lang']['urlname']; | ||||
|     } | ||||
| 
 | ||||
|     if ($urlname) { | ||||
|         ModRewrite::setArtWebsafeName($urlname, $data['dest_art_lang']['idart'], $data['dest_art_lang']['idlang']); | ||||
|     } | ||||
| 
 | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Works as a wrapper for Contenido_Url. | ||||
|  * | ||||
|  * Will also be called by chain 'Contenido.Frontend.CreateURL'. | ||||
|  * | ||||
|  * @todo: Still exists bcause of downwards compatibility (some other modules/plugins are using it) | ||||
|  * | ||||
|  * @param   string  $url  URL to rebuild | ||||
|  * @return  string        New URL | ||||
|  */ | ||||
| function mr_buildNewUrl($url) { | ||||
|     global $lang; | ||||
| 
 | ||||
|     ModRewriteDebugger::add($url, 'mr_buildNewUrl() in -> $url'); | ||||
| 
 | ||||
|     $oUrl = Contenido_Url::getInstance(); | ||||
|     $aUrl = $oUrl->parse($url); | ||||
| 
 | ||||
|     // add language, if not exists
 | ||||
|     if (!isset($aUrl['params']['lang'])) { | ||||
|         $aUrl['params']['lang'] = $lang; | ||||
|     } | ||||
| 
 | ||||
|     // build url
 | ||||
|     $newUrl = $oUrl->build($aUrl['params']); | ||||
| 
 | ||||
|     // add existing fragment
 | ||||
|     if (isset($aUrl['fragment'])) { | ||||
|         $newUrl .= '#' . $aUrl['fragment']; | ||||
|     } | ||||
| 
 | ||||
|     $arr = array( | ||||
|         'in' => $url, | ||||
|         'out' => $newUrl, | ||||
|     ); | ||||
|     ModRewriteDebugger::add($arr, 'mr_buildNewUrl() in -> out'); | ||||
| 
 | ||||
|     return $newUrl; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Replaces existing ancors inside passed code, while rebuilding the urls. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Content.conGenerateCode' or | ||||
|  * 'Contenido.Frontend.HTMLCodeOutput' depening on mod_rewrite settings. | ||||
|  * | ||||
|  * @param   string  $code   Code to prepare | ||||
|  * @return  string          New code | ||||
|  */ | ||||
| function mr_buildGeneratedCode($code) { | ||||
|     global $client, $cfgClient; | ||||
| 
 | ||||
|     ModRewriteDebugger::add($code, 'mr_buildGeneratedCode() in'); | ||||
| 
 | ||||
|     // mod rewrite is activated
 | ||||
|     if (ModRewrite::isEnabled()) { | ||||
|         $sseStarttime = getmicrotime(); | ||||
| 
 | ||||
|         // anchor hack
 | ||||
|         $code = preg_replace_callback( | ||||
|             "/<a([^>]*)href\s*=\s*[\"|\'][\/]#(.?|.+?)[\"|\']([^>]*)>/i", | ||||
|             create_function('$matches', 'return ModRewrite::rewriteHtmlAnchor($matches);'), | ||||
|             $code | ||||
|         ); | ||||
| 
 | ||||
|         // remove tinymce single quote entities:
 | ||||
|         $code = str_replace("'", "'", $code); | ||||
| 
 | ||||
|         // get base uri
 | ||||
|         $sBaseUri = $cfgClient[$client]['path']['htmlpath']; | ||||
|         $sBaseUri = CEC_Hook::execute("Contenido.Frontend.BaseHrefGeneration", $sBaseUri); | ||||
| 
 | ||||
|         // IE hack with wrong base href interpretation
 | ||||
|         $code = preg_replace_callback( | ||||
|             "/([\"|\'|=])upload\/(.?|.+?)([\"|\'|>])/i", | ||||
|             create_function('$matches', 'return stripslashes($matches[1]' . $sBaseUri . ' . "upload/" . $matches[2] . $matches[3]);'), | ||||
|             $code | ||||
|         ); | ||||
| 
 | ||||
|         // define some preparations to replace /front_content.php & ./front_content.php
 | ||||
|         // against front_content.php, because urls should start with front_content.php
 | ||||
|         $aPattern = array( | ||||
|             '/([\"|\'|=])\/front_content\.php(.?|.+?)([\"|\'|>])/i', | ||||
|             '/([\"|\'|=])\.\/front_content\.php(.?|.+?)([\"|\'|>])/i' | ||||
|         ); | ||||
| 
 | ||||
|         $aReplace = array( | ||||
|             '\1front_content.php\2\3', | ||||
|             '\1front_content.php\2\3' | ||||
|         ); | ||||
| 
 | ||||
|         // perform the pre replacements
 | ||||
|         $code = preg_replace($aPattern, $aReplace, $code); | ||||
| 
 | ||||
|         // create url stack object and fill it with found urls...
 | ||||
|         $oMRUrlStack = ModRewriteUrlStack::getInstance(); | ||||
|         $oMRUrlStack->add('front_content.php'); | ||||
| 
 | ||||
|         $matches = null; | ||||
|         preg_match_all("/([\"|\'|=])front_content\.php(.?|.+?)([\"|\'|>])/i", $code, $matches, PREG_SET_ORDER); | ||||
|         foreach ($matches as $val) { | ||||
|             $oMRUrlStack->add('front_content.php' . $val[2]); | ||||
|         } | ||||
| 
 | ||||
|         // ok let it beginn, build the clean urls
 | ||||
|         $code = str_replace('"front_content.php"', '"' . mr_buildNewUrl('front_content.php') . '"', $code); | ||||
|         $code = str_replace("'front_content.php'", "'" . mr_buildNewUrl('front_content.php') . "'", $code); | ||||
|         $code = preg_replace_callback( | ||||
|             "/([\"|\'|=])front_content\.php(.?|.+?)([\"|\'|>])/i", | ||||
|             create_function('$aMatches', 'return $aMatches[1] . mr_buildNewUrl("front_content.php" . $aMatches[2]) . $aMatches[3];'), | ||||
|             $code | ||||
|         ); | ||||
| 
 | ||||
|         ModRewriteDebugger::add($code, 'mr_buildGeneratedCode() out'); | ||||
| 
 | ||||
|         $sseEndtime = getmicrotime(); | ||||
|     } else { | ||||
|         // anchor hack for non modrewrite websites
 | ||||
|         $code = preg_replace_callback( | ||||
|             "/<a([^>]*)href\s*=\s*[\"|\'][\/]#(.?|.+?)[\"|\']([^>]*)>/i", | ||||
|             create_function('$matches', 'return ModRewrite::contenidoHtmlAnchor($matches, $GLOBALS["is_XHTML"]);'), | ||||
|             $code | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     ModRewriteDebugger::add(($sseEndtime - $sseStarttime), 'mr_buildGeneratedCode() total spend time'); | ||||
| 
 | ||||
|     if ($debug = mr_debugOutput(false)) { | ||||
|         $code = cString::iReplaceOnce("</body>", $debug . "\n</body>", $code); | ||||
|     } | ||||
| 
 | ||||
|     return $code; | ||||
|     // print "\n\n<!-- modrewrite generation time: " . ($sseEndtime - $sseStarttime) . " seconds -->";
 | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Sets language of client, like done in front_content.php | ||||
|  * | ||||
|  * @param  int  $client  Client id | ||||
|  */ | ||||
| function mr_setClientLanguageId($client) { | ||||
|     global $lang, $load_lang, $cfg; | ||||
| 
 | ||||
|     if ((int) $lang > 0) { | ||||
|         // there is nothing to do
 | ||||
|         return; | ||||
|     } elseif ($load_lang) { | ||||
|         // load_client is set in frontend/config.php
 | ||||
|         $lang = $load_lang; | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     // try to get clients language from table
 | ||||
|     $sql = "SELECT B.idlang FROM " | ||||
|             . $cfg['tab']['clients_lang'] . " AS A, " | ||||
|             . $cfg['tab']['lang'] . " AS B " | ||||
|             . "WHERE " | ||||
|             . "A.idclient='" . ((int) $client) . "' AND A.idlang=B.idlang" | ||||
|             . "LIMIT 0,1"; | ||||
| 
 | ||||
|     if ($aData = mr_queryAndNextRecord($sql)) { | ||||
|         $lang = $aData['idlang']; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Loads Advanced Mod Rewrite configuration for passed client using serialized | ||||
|  * file containing the settings. | ||||
|  * | ||||
|  * File is placed in /contenido/mod_rewrite/includes/and is named like | ||||
|  * config.mod_rewrite_{client_id}.php. | ||||
|  * | ||||
|  * @param  int   $clientId     Id of client | ||||
|  * @param  bool  $forceReload  Flag to force to reload configuration, e. g. after | ||||
|  *                             done changes on it | ||||
|  */ | ||||
| function mr_loadConfiguration($clientId, $forceReload = false) { | ||||
|     global $cfg; | ||||
|     static $aLoaded; | ||||
| 
 | ||||
|     $clientId = (int) $clientId; | ||||
|     if (!isset($aLoaded)) { | ||||
|         $aLoaded = array(); | ||||
|     } elseif (isset($aLoaded[$clientId]) && $forceReload == false) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     $mrConfig = mr_getConfiguration($clientId); | ||||
| 
 | ||||
|     if (is_array($mrConfig)) { | ||||
|         // merge mod rewrite configuration with global cfg array
 | ||||
|         $cfg = array_merge($cfg, $mrConfig); | ||||
|     } else { | ||||
|         // couldn't load configuration, set defaults
 | ||||
|         include_once($cfg['path']['contenido'] . $cfg['path']['plugins'] . 'mod_rewrite/includes/config.mod_rewrite_default.php'); | ||||
|     } | ||||
| 
 | ||||
|     $aLoaded[$clientId] = true; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Returns the mod rewrite configuration array of an client. | ||||
|  * | ||||
|  * File is placed in /contenido/mod_rewrite/includes/and is named like | ||||
|  * config.mod_rewrite_{client_id}.php. | ||||
|  * | ||||
|  * @param   int   $clientId     Id of client | ||||
|  * @return  array|null | ||||
|  */ | ||||
| function mr_getConfiguration($clientId) { | ||||
|     global $cfg; | ||||
| 
 | ||||
|     $file = $cfg['path']['contenido'] . $cfg['path']['plugins'] . 'mod_rewrite/includes/config.mod_rewrite_' . $clientId . '.php'; | ||||
|     if (!is_file($file) || !is_readable($file)) { | ||||
|         return null; | ||||
|     } | ||||
|     if ($content = file_get_contents($file)) { | ||||
|         return unserialize($content); | ||||
|     } else { | ||||
|         return null; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Saves the mod rewrite configuration array of an client. | ||||
|  * | ||||
|  * File is placed in /contenido/mod_rewrite/includes/and is named like | ||||
|  * config.mod_rewrite_{client_id}.php. | ||||
|  * | ||||
|  * @param   int    $clientId     Id of client | ||||
|  * @param   array  $config       Configuration to save | ||||
|  * @return  bool | ||||
|  */ | ||||
| function mr_setConfiguration($clientId, array $config) { | ||||
|     global $cfg; | ||||
| 
 | ||||
|     $file = $cfg['path']['contenido'] . $cfg['path']['plugins'] . 'mod_rewrite/includes/config.mod_rewrite_' . $clientId . '.php'; | ||||
|     $result = file_put_contents($file, serialize($config)); | ||||
|     return ($result) ? true : false; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Includes the frontend controller script which parses the url and extacts | ||||
|  * needed data like idcat, idart, lang and client from it. | ||||
|  * | ||||
|  * Will be called by chain 'Contenido.Frontend.AfterLoadPlugins' at front_content.php. | ||||
|  * | ||||
|  * @return  bool  Just a return value | ||||
|  */ | ||||
| function mr_runFrontendController() { | ||||
|     $iStartTime = getmicrotime(); | ||||
| 
 | ||||
|     plugin_include('mod_rewrite', 'includes/config.plugin.php'); | ||||
| 
 | ||||
|     if (ModRewrite::isEnabled() == true) { | ||||
|         plugin_include('mod_rewrite', 'includes/front_content_controller.php'); | ||||
| 
 | ||||
|         $totalTime = sprintf('%.4f', (getmicrotime() - $iStartTime)); | ||||
|         ModRewriteDebugger::add($totalTime, 'mr_runFrontendController() total time'); | ||||
|     } | ||||
| 
 | ||||
|     return true; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Cleanups passed string from characters beeing repeated two or more times | ||||
|  * | ||||
|  * @param   string  $char    Character to remove | ||||
|  * @param   string  $string  String to clean from character | ||||
|  * @return  string  Cleaned string | ||||
|  */ | ||||
| function mr_removeMultipleChars($char, $string) { | ||||
|     while (strpos($string, $char . $char) !== false) { | ||||
|         $string = str_replace($char . $char, $char, $string); | ||||
|     } | ||||
|     return $string; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Returns amr related translation text | ||||
|  * | ||||
|  * @param   string  $key    The message id as string | ||||
|  * @return  string  Related message | ||||
|  */ | ||||
| function mr_i18n($key) { | ||||
|     global $lngAMR; | ||||
|     return (is_array($lngAMR) && isset($lngAMR[$key])) ? $lngAMR[$key] : 'n. a.'; | ||||
| } | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ### Some helper functions, which are not plugin specific
 | ||||
| 
 | ||||
| /** | ||||
|  * Database query helper. Used to execute a select statement and to return the | ||||
|  * result of first recordset. | ||||
|  * | ||||
|  * Minimizes following code: | ||||
|  * <code> | ||||
|  * // default way
 | ||||
|  * $db  = new DB_Contenido(); | ||||
|  * $sql = "SELECT * FROM foo WHERE bar='foobar'"; | ||||
|  * $db->query($sql); | ||||
|  * $db->next_record(); | ||||
|  * $data = $db->Record; | ||||
|  * | ||||
|  * // new way
 | ||||
|  * $sql  = "SELECT * FROM foo WHERE bar='foobar'"; | ||||
|  * $data = mr_queryAndNextRecord($sql); | ||||
|  * </code> | ||||
|  * | ||||
|  * @param   string  $query  Query to execute | ||||
|  * @return  mixed   Assoziative array including recordset or null | ||||
|  */ | ||||
| function mr_queryAndNextRecord($query) { | ||||
|     static $db; | ||||
|     if (!isset($db)) { | ||||
|         $db = new DB_Contenido(); | ||||
|     } | ||||
|     if (!$db->query($query)) { | ||||
|         return null; | ||||
|     } | ||||
|     return ($db->next_record()) ? $db->Record : null; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Returns value of an array key (assoziative or indexed). | ||||
|  * | ||||
|  * Shortcut function for some ways to access to arrays: | ||||
|  * <code> | ||||
|  * // old way
 | ||||
|  * if (is_array($foo) && isset($foo['bar']) && $foo['bar'] == 'yieeha') { | ||||
|  *     // do something
 | ||||
|  * } | ||||
|  * | ||||
|  * // new, more readable way:
 | ||||
|  * if (mr_arrayValue($foo, 'bar') == 'yieeha') { | ||||
|  *     // do something
 | ||||
|  * } | ||||
|  * | ||||
|  * // old way
 | ||||
|  * if (is_array($foo) && isset($foo['bar'])) { | ||||
|  *     $jep = $foo['bar']; | ||||
|  * } else { | ||||
|  *     $jep = 'yummy'; | ||||
|  * } | ||||
|  * | ||||
|  * // new way
 | ||||
|  * $jep = mr_arrayValue($foo, 'bar', 'yummy'); | ||||
|  * </code> | ||||
|  * | ||||
|  * @param   array  $array    The array | ||||
|  * @param   mixed  $key      Position of an indexed array or key of an assoziative array | ||||
|  * @param   mixed  $default  Default value to return | ||||
|  * @return  mixed  Either the found value or the default value | ||||
|  */ | ||||
| function mr_arrayValue($array, $key, $default = null) { | ||||
|     if (!is_array($array)) { | ||||
|         return $default; | ||||
|     } elseif (!isset($array[$key])) { | ||||
|         return $default; | ||||
|     } else { | ||||
|         return $array[$key]; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Request cleanup function. Request data is allways tainted and must be filtered. | ||||
|  * Pass the array to cleanup using several options. | ||||
|  * Emulates array_walk_recursive(). | ||||
|  * | ||||
|  * @param   mixed  $data     Data to cleanup | ||||
|  * @param   array  $options  Default options array, provides only 'filter' key with several | ||||
|  *                           filter functions which are to execute as follows: | ||||
|  * <code> | ||||
|  * $options['filter'] = array('trim', 'myFilterFunc'); | ||||
|  * </code> | ||||
|  *                           If no filter functions are set, 'trim', 'strip_tags' and 'stripslashes' | ||||
|  *                           will be used by default. | ||||
|  *                           A userdefined function must accept the value as a parameter and must return | ||||
|  *                           the filtered parameter, e. g. | ||||
|  * <code> | ||||
|  * function myFilter($data) { | ||||
|  *    // do what you want with the data, e. g. cleanup of xss content
 | ||||
|  *    return $data; | ||||
|  * } | ||||
|  * </code> | ||||
|  * | ||||
|  * @return  mixed  Cleaned data | ||||
|  */ | ||||
| function mr_requestCleanup(&$data, $options = null) { | ||||
|     if (!mr_arrayValue($options, 'filter')) { | ||||
|         $options['filter'] = array('trim', 'strip_tags', 'stripslashes'); | ||||
|     } | ||||
| 
 | ||||
|     if (is_array($data)) { | ||||
|         foreach ($data as $p => $v) { | ||||
|             $data[$p] = mr_requestCleanup($v, $options); | ||||
|         } | ||||
|     } else { | ||||
|         foreach ($options['filter'] as $filter) { | ||||
|             if ($filter == 'trim') { | ||||
|                 $data = trim($data); | ||||
|             } elseif ($filter == 'strip_tags') { | ||||
|                 $data = strip_tags($data); | ||||
|             } elseif ($filter == 'stripslashes') { | ||||
|                 $data = stripslashes($data); | ||||
|             } elseif (function_exists($filter)) { | ||||
|                 $data = call_user_func($filter, $data); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Minimalistic'n simple way to get request variables. | ||||
|  * | ||||
|  * Checks occurance in $_GET, then in $_POST. Uses trim() and strip_tags() to preclean data. | ||||
|  * | ||||
|  * @param   string  $key      Name of var to get | ||||
|  * @param   mixed   $default  Default value to return | ||||
|  * @return  mixed   The value | ||||
|  */ | ||||
| function mr_getRequest($key, $default = null) { | ||||
|     static $cache; | ||||
|     if (!isset($cache)) { | ||||
|         $cache = array(); | ||||
|     } | ||||
|     if (isset($cache[$key])) { | ||||
|         return $cache[$key]; | ||||
|     } | ||||
|     if (isset($_GET[$key])) { | ||||
|         $val = $_GET[$key]; | ||||
|     } elseif (isset($_POST[$key])) { | ||||
|         $val = $_POST[$key]; | ||||
|     } else { | ||||
|         $val = $default; | ||||
|     } | ||||
|     $cache[$key] = strip_tags(trim($val)); | ||||
|     return $cache[$key]; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Replaces calling of header method for redirects in front_content.php, | ||||
|  * used during development. | ||||
|  * | ||||
|  * @param  $header  Header value for redirect | ||||
|  */ | ||||
| function mr_header($header) { | ||||
|     header($header); | ||||
|     return; | ||||
| 
 | ||||
|     $header = str_replace('Location: ', '', $header); | ||||
|     echo '<html> | ||||
|         <head></head> | ||||
|         <body> | ||||
|         <p><a href="' . $header . '">' . $header . '</a></p>'; | ||||
|     mr_debugOutput(); | ||||
|     echo '</body></html>'; | ||||
|     exit(); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Debug output only during development | ||||
|  * | ||||
|  * @param   bool  $print  Flag to echo the debug data | ||||
|  * @return  mixed  Either the debug data, if parameter $print is set to true, or nothing | ||||
|  */ | ||||
| function mr_debugOutput($print = true) { | ||||
|     global $DB_Contenido_QueryCache; | ||||
|     if (isset($DB_Contenido_QueryCache) && is_array($DB_Contenido_QueryCache) && | ||||
|             count($DB_Contenido_QueryCache) > 0) { | ||||
|         ModRewriteDebugger::add($DB_Contenido_QueryCache, 'sql statements'); | ||||
| 
 | ||||
|         // calculate total time consumption of queries
 | ||||
|         $timeTotal = 0; | ||||
|         foreach ($DB_Contenido_QueryCache as $pos => $item) { | ||||
|             $timeTotal += $item['time']; | ||||
|         } | ||||
|         ModRewriteDebugger::add($timeTotal, 'sql total time'); | ||||
|     } | ||||
| 
 | ||||
|     $sOutput = ModRewriteDebugger::getAll(); | ||||
|     if ($print == true) { | ||||
|         echo $sOutput; | ||||
|     } else { | ||||
|         return $sOutput; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										312
									
								
								includes/include.mod_rewrite_content.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										312
									
								
								includes/include.mod_rewrite_content.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,312 @@ | |||
| <?php | ||||
| /** | ||||
|  * Plugin mod_rewrite backend include file to administer settings (in content frame) | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: include.mod_rewrite_content.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| global $client, $cfg; | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Initialization
 | ||||
| 
 | ||||
| if ((int) $client <= 0) { | ||||
|     // if there is no client selected, display empty page
 | ||||
|     $oPage = new cPage; | ||||
|     $oPage->render(); | ||||
|     return; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| $action = (isset($_REQUEST['mr_action'])) ? $_REQUEST['mr_action'] : 'index'; | ||||
| $bDebug = false; | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Some variables
 | ||||
| 
 | ||||
| 
 | ||||
| $oMrController = new ModRewrite_ContentController(); | ||||
| 
 | ||||
| $aMrCfg = ModRewrite::getConfig(); | ||||
| 
 | ||||
| // downwards compatibility to previous plugin versions
 | ||||
| if (mr_arrayValue($aMrCfg, 'category_seperator', '') == '') { | ||||
|     $aMrCfg['category_seperator'] = '/'; | ||||
| } | ||||
| if (mr_arrayValue($aMrCfg, 'category_word_seperator', '') == '') { | ||||
|     $aMrCfg['category_word_seperator'] = '-'; | ||||
| } | ||||
| if (mr_arrayValue($aMrCfg, 'article_seperator', '') == '') { | ||||
|     $aMrCfg['article_seperator'] = '/'; | ||||
| } | ||||
| if (mr_arrayValue($aMrCfg, 'article_word_seperator', '') == '') { | ||||
|     $aMrCfg['article_word_seperator'] = '-'; | ||||
| } | ||||
| 
 | ||||
| // some settings
 | ||||
| $aSeparator = array( | ||||
|     'pattern' => '/^[\/\-_\.\$~]{1}$/', | ||||
|     'info' => '<span style="font-family:courier;font-weight:bold;">/ - . _ ~</span>' | ||||
| ); | ||||
| $aWordSeparator = array( | ||||
|     'pattern' => '/^[\-_\.\$~]{1}$/', | ||||
|     'info' => '<span style="font-family:courier;font-weight:bold;">- . _ ~</span>' | ||||
| ); | ||||
| 
 | ||||
| $routingSeparator = '>>>'; | ||||
| 
 | ||||
| 
 | ||||
| $oMrController->setProperty('bDebug', $bDebug); | ||||
| $oMrController->setProperty('aSeparator', $aSeparator); | ||||
| $oMrController->setProperty('aWordSeparator', $aWordSeparator); | ||||
| $oMrController->setProperty('routingSeparator', $routingSeparator); | ||||
| 
 | ||||
| // define basic data contents (used for template)
 | ||||
| $oView = $oMrController->getView(); | ||||
| $oView->content_before = ''; | ||||
| $oView->idclient = $client; | ||||
| $oView->use_chk = (ModRewrite::isEnabled()) ? ' checked="checked"' : ''; | ||||
| $oView->header_notes_css = 'display:none;'; | ||||
| 
 | ||||
| // mr copy .htaccess
 | ||||
| // @todo copy htacccess check into ModRewrite_ContentController->_doChecks()
 | ||||
| $aHtaccessInfo = ModRewrite::getHtaccessInfo(); | ||||
| if ($aHtaccessInfo['has_htaccess']) { | ||||
|     $oView->htaccess_info_css = 'display:none;'; | ||||
| } else { | ||||
|     $oView->header_notes_css = 'display:table-row;'; | ||||
|     $oView->htaccess_info_css = 'display:block;'; | ||||
| } | ||||
| 
 | ||||
| // empty aliases
 | ||||
| $iEmptyArticleAliases = ModRewrite::getEmptyArticlesAliases(); | ||||
| $iEmptyCategoryAliases = ModRewrite::getEmptyCategoriesAliases(); | ||||
| if ($iEmptyArticleAliases > 0 || $iEmptyCategoryAliases > 0) { | ||||
|     $oView->header_notes_css = 'display:table-row;'; | ||||
|     $oView->emptyaliases_info_css = 'display:block;'; | ||||
| } else { | ||||
|     $oView->emptyaliases_info_css = 'display:none;'; | ||||
| } | ||||
| 
 | ||||
| // mr root dir
 | ||||
| $oView->rootdir = $aMrCfg['rootdir']; | ||||
| $oView->rootdir_error = ''; | ||||
| 
 | ||||
| // mr check root dir
 | ||||
| $oView->checkrootdir_chk = ($aMrCfg['checkrootdir'] == 1) ? ' checked="checked"' : ''; | ||||
| 
 | ||||
| // mr start from root
 | ||||
| $oView->startfromroot_chk = ($aMrCfg['startfromroot'] == 1) ? ' checked="checked"' : ''; | ||||
| 
 | ||||
| // mr prevent duplicated content
 | ||||
| $oView->prevent_duplicated_content_chk = ($aMrCfg['prevent_duplicated_content'] == 1) ? ' checked="checked"' : ''; | ||||
| 
 | ||||
| // mr language usage
 | ||||
| $oView->use_language_chk = ($aMrCfg['use_language'] == 1) ? ' checked="checked"' : ''; | ||||
| $oView->use_language_name_chk = ($aMrCfg['use_language_name'] == 1) ? ' checked="checked"' : ''; | ||||
| $oView->use_language_name_disabled = ($aMrCfg['use_language'] == 1) ? '' : ' disabled="disabled"'; | ||||
| 
 | ||||
| // mr client usage
 | ||||
| $oView->use_client_chk = ($aMrCfg['use_client'] == 1) ? ' checked="checked"' : ''; | ||||
| $oView->use_client_name_chk = ($aMrCfg['use_client_name'] == 1) ? ' checked="checked"' : ''; | ||||
| $oView->use_client_name_disabled = ($aMrCfg['use_client'] == 1) ? '' : ' disabled="disabled"'; | ||||
| 
 | ||||
| // mr lowecase uri
 | ||||
| $oView->use_lowercase_uri_chk = ($aMrCfg['use_lowercase_uri'] == 1) ? ' checked="checked"' : ''; | ||||
| 
 | ||||
| // mr category/category word separator
 | ||||
| $oView->category_separator = $aMrCfg['category_seperator']; | ||||
| $oView->category_separator_attrib = ''; | ||||
| $oView->category_word_separator = $aMrCfg['category_word_seperator']; | ||||
| $oView->category_word_separator_attrib = ''; | ||||
| $oView->category_separator_error = ''; | ||||
| $oView->category_word_separator_error = ''; | ||||
| 
 | ||||
| // mr article/article word separator
 | ||||
| $oView->article_separator = $aMrCfg['article_seperator']; | ||||
| $oView->article_separator_attrib = ''; | ||||
| $oView->article_word_separator = $aMrCfg['article_word_seperator']; | ||||
| $oView->article_word_separator_attrib = ''; | ||||
| $oView->article_separator_error = ''; | ||||
| $oView->article_word_separator_error = ''; | ||||
| 
 | ||||
| // mr file extension
 | ||||
| $oView->file_extension = $aMrCfg['file_extension']; | ||||
| $oView->file_extension_error = ''; | ||||
| 
 | ||||
| // mr category name resolve percentage
 | ||||
| $oView->category_resolve_min_percentage = $aMrCfg['category_resolve_min_percentage']; | ||||
| $oView->category_resolve_min_percentage_error = ''; | ||||
| 
 | ||||
| // mr add start article name to url
 | ||||
| $oView->add_startart_name_to_url_chk = ($aMrCfg['add_startart_name_to_url'] == 1) ? ' checked="checked"' : ''; | ||||
| $oView->add_startart_name_to_url_error = ''; | ||||
| $oView->default_startart_name = $aMrCfg['default_startart_name']; | ||||
| 
 | ||||
| // mr rewrite urls at
 | ||||
| $oView->rewrite_urls_at_congeneratecode_chk = ($aMrCfg['rewrite_urls_at_congeneratecode'] == 1) ? ' checked="checked"' : ''; | ||||
| $oView->rewrite_urls_at_front_content_output_chk = ($aMrCfg['rewrite_urls_at_front_content_output'] == 1) ? ' checked="checked"' : ''; | ||||
| $oView->content_after = ''; | ||||
| 
 | ||||
| // mr rewrite routing
 | ||||
| $data = ''; | ||||
| if (is_array($aMrCfg['routing'])) { | ||||
|     foreach ($aMrCfg['routing'] as $uri => $route) { | ||||
|         $data .= $uri . $routingSeparator . $route . "\n"; | ||||
|     } | ||||
| } | ||||
| $oView->rewrite_routing = $data; | ||||
| 
 | ||||
| // mr redirect invalid article
 | ||||
| $oView->redirect_invalid_article_to_errorsite_chk = ($aMrCfg['redirect_invalid_article_to_errorsite'] == 1) ? ' checked="checked"' : ''; | ||||
| 
 | ||||
| 
 | ||||
| $oView->lng_version = i18n("Version", "mod_rewrite"); | ||||
| $oView->lng_author = i18n("Author", "mod_rewrite"); | ||||
| $oView->lng_mail_to_author = i18n("E-Mail to author", "mod_rewrite"); | ||||
| $oView->lng_pluginpage = i18n("Plugin page", "mod_rewrite"); | ||||
| $oView->lng_visit_pluginpage = i18n("Visit plugin page", "mod_rewrite"); | ||||
| $oView->lng_opens_in_new_window = i18n("opens page in new window", "mod_rewrite"); | ||||
| $oView->lng_contenido_forum = i18n("CONTENIDO forum", "mod_rewrite"); | ||||
| $oView->lng_pluginthread_in_contenido_forum = i18n("Plugin thread in CONTENIDO forum", "mod_rewrite"); | ||||
| $oView->lng_plugin_settings = i18n("Plugin settings", "mod_rewrite"); | ||||
| $oView->lng_note = i18n("Note", "mod_rewrite"); | ||||
| 
 | ||||
| // @todo copy htacccess check into ModRewrite_ContentController->_doChecks()
 | ||||
| $sMsg = i18n("The .htaccess file could not found either in CONTENIDO installation directory nor in client directory.<br>It should set up in %sFunctions%s area, if needed.", "mod_rewrite"); | ||||
| $oView->lng_msg_no_htaccess_found = sprintf($sMsg, '<a href="main.php?area=mod_rewrite_expert&frame=4&contenido=' . $oView->sessid . '&idclient=' . $client . '" onclick="parent.right_top.sub.clicked(parent.right_top.document.getElementById(\'c_1\').firstChild);">', '</a>'); | ||||
| 
 | ||||
| $sMsg = i18n("Found", "mod_rewrite"); | ||||
| $oView->lng_msg_no_emptyaliases_found = sprintf($sMsg, '<a href="main.php?area=mod_rewrite_expert&frame=4&contenido=' . $oView->sessid . '&idclient=' . $client . '" onclick="parent.right_top.sub.clicked(parent.right_top.document.getElementById(\'c_1\').firstChild);">', '</a>'); | ||||
| 
 | ||||
| $oView->lng_enable_amr = i18n("Enable Advanced Mod Rewrite", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_msg_enable_amr_info = i18n("Disabling of plugin does not result in disabling mod rewrite module of the web server - This means,<br> all defined rules in the .htaccess are still active and could create unwanted side effects.<br><br>Apache mod rewrite could be enabled/disabled by setting the RewriteEngine directive.<br>Any defined rewrite rules could remain in the .htaccess and they will not processed,<br>if the mod rewrite module is disabled", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_example = i18n("Example", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_msg_enable_amr_info_example = i18n("# enable apache mod rewrite module\nRewriteEngine on\n\n# disable apache mod rewrite module\nRewriteEngine off", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_rootdir = i18n("Path to .htaccess from DocumentRoot", "mod_rewrite"); | ||||
| $oView->lng_rootdir_info = i18n("Type '/' if the .htaccess file lies inside the wwwroot (DocumentRoot) folder.<br>Type the path to the subfolder fromm wwwroot, if CONTENIDO is installed in a subfolder within the wwwroot<br>(e. g. http://domain/mycontenido -> path = '/mycontenido/')", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_checkrootdir = i18n("Check path to .htaccess", "mod_rewrite"); | ||||
| $oView->lng_checkrootdir_info = i18n("The path will be checked, if this option is enabled.<br>But this could result in an error in some cases, even if the specified path is valid and<br>clients DocumentRoot differs from CONTENIDO backend DocumentRoot.", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_startfromroot = i18n("Should the name of root category be displayed in the URL?", "mod_rewrite"); | ||||
| $oView->lng_startfromroot_lbl = i18n("Start from root category", "mod_rewrite"); | ||||
| $oView->lng_startfromroot_info = i18n("If enabled, the name of the root category (e. g. 'Mainnavigation' in a CONTENIDO default installation), will be preceded to the URL.", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_use_client = i18n("Are several clients maintained in one directory?", "mod_rewrite"); | ||||
| $oView->lng_use_client_lbl = i18n("Prepend client to the URL", "mod_rewrite"); | ||||
| $oView->lng_use_client_name_lbl = i18n("Use client name instead of the id", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_use_language = i18n("Should the language appear in the URL (required for multi language websites)?", "mod_rewrite"); | ||||
| $oView->lng_use_language_lbl = i18n("Prepend language to the URL", "mod_rewrite"); | ||||
| $oView->lng_use_language_name_lbl = i18n("Use language name instead of the id", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_userdefined_separators_header = i18n("Configure your own separators with following 4 settings<br>to control generated URLs to your own taste", "mod_rewrite"); | ||||
| $oView->lng_userdefined_separators_example = i18n("www.domain.com/category1-category2.articlename.html\nwww.domain.com/category1/category2-articlename.html\nwww.domain.com/category.name1~category2~articlename.html\nwww.domain.com/category_name1-category2-articlename.foo", "mod_rewrite"); | ||||
| $oView->lng_userdefined_separators_example_a = i18n("Category separator has to be different from category-word separator", "mod_rewrite"); | ||||
| $oView->lng_userdefined_separators_example_a_example = i18n("# Example: Category separator (/) and category-word separator (_)\ncategory_one/category_two/articlename.html", "mod_rewrite"); | ||||
| $oView->lng_userdefined_separators_example_b = i18n("Category separator has to be different from article-word separator", "mod_rewrite"); | ||||
| $oView->lng_userdefined_separators_example_b_example = i18n("# Example: Category separator (/) and article-word separator (-)\ncategory_one/category_two/article-description.html", "mod_rewrite"); | ||||
| $oView->lng_userdefined_separators_example_c = i18n("Category-article separator has to be different from article-word separator", "mod_rewrite"); | ||||
| $oView->lng_userdefined_separators_example_c_example = i18n("# Example: Category-article separator (/) and article-word separator (-)\ncategory_one/category_two/article-description.html", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_category_separator = i18n("Category separator (delemiter between single categories)", "mod_rewrite"); | ||||
| $oView->lng_catart_separator_info = sprintf(i18n("(possible values: %s)", "mod_rewrite"), $aSeparator['info']); | ||||
| $oView->lng_word_separator_info = sprintf(i18n("(possible values: %s)", "mod_rewrite"), $aWordSeparator['info']); | ||||
| $oView->lng_category_word_separator = i18n("Category-word separator (delemiter between category words)", "mod_rewrite"); | ||||
| $oView->lng_article_separator = i18n("Category-article separator (delemiter between category-block and article)", "mod_rewrite"); | ||||
| $oView->lng_article_word_separator = i18n("Article-word separator (delemiter between article words)", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_add_startart_name_to_url = i18n("Append article name to URLs", "mod_rewrite"); | ||||
| $oView->lng_add_startart_name_to_url_lbl = i18n("Append article name always to URLs (even at URLs to categories)", "mod_rewrite"); | ||||
| $oView->lng_default_startart_name = i18n("Default article name without extension", "mod_rewrite"); | ||||
| $oView->lng_default_startart_name_info = i18n("e. g. 'index' for index.ext<br>In case of selected 'Append article name always to URLs' option and a empty field,<br>the name of the start article will be used", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_file_extension = i18n("File extension at the end of the URL", "mod_rewrite"); | ||||
| $oView->lng_file_extension_info = i18n("Specification of file extension with a preceded dot<br>e.g. '.html' for http://host/foo/bar.html", "mod_rewrite"); | ||||
| $oView->lng_file_extension_info2 = i18n("It's strongly recommended to specify a extension here,<br>if the option 'Append article name always to URLs' was not selected.<br><br>Otherwise URLs to categories and articles would have the same format<br>which may result in unresolvable categories/articles in some cases.", "mod_rewrite"); | ||||
| $oView->lng_file_extension_info3 = i18n("It's necessary to specify a file extension at the moment, due do existing issues, which are not solved until yet. An not defined extension may result in invalid article detection in some cases.", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_use_lowercase_uri = i18n("Should the URLs be written in lower case?", "mod_rewrite"); | ||||
| $oView->lng_use_lowercase_uri_lbl = i18n("URLs in lower case", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_prevent_duplicated_content = i18n("Duplicated content", "mod_rewrite"); | ||||
| $oView->lng_prevent_duplicated_content_lbl = i18n("Prevent duplicated content", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_prevent_duplicated_content_info = i18n("Depending on configuration, pages could be found thru different URLs.<br>Enabling of this option prevents this. Examples for duplicated content", "mod_rewrite"); | ||||
| $oView->lng_prevent_duplicated_content_info2 = i18n("Name of the root category in the URL: Feasible is /maincategory/subcategory/ and /subcategory/\nLanguage in the URL: Feasible is /german/category/ and /1/category/\nClient in the URL: Feasible is /client/category/ und /1/category/", "mod_rewrite"); | ||||
| $oView->lng_prevent_duplicated_content_info2 = '<li>' . str_replace("\n", '</li><li>', $oView->lng_prevent_duplicated_content_info2) . '</li>'; | ||||
| 
 | ||||
| $oView->lng_category_resolve_min_percentage = i18n("Percentage for similar category paths in URLs", "mod_rewrite"); | ||||
| $oView->lng_category_resolve_min_percentage_info = i18n("This setting refers only to the category path of a URL. If AMR is configured<br>to prepend e. g. the root category, language and/or client to the URL,<br>the specified percentage will not applied to those parts of the URL.<br>An incoming URL will be cleaned from those values and the remaining path (urlpath of the category)<br>will be checked against similarities.", "mod_rewrite"); | ||||
| $oView->lng_category_resolve_min_percentage_example = i18n("100 = exact match with no tolerance\n85  = paths with little errors will match to similar ones\n0   = matching will work even for total wrong paths", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_redirect_invalid_article_to_errorsite = i18n("Redirect in case of invalid articles", "mod_rewrite"); | ||||
| $oView->lng_redirect_invalid_article_to_errorsite_lbl = i18n("Redirect to error page in case of invaid articles", "mod_rewrite"); | ||||
| $oView->lng_redirect_invalid_article_to_errorsite_info = i18n("The start page will be displayed if this option is not enabled", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_rewrite_urls_at = i18n("Moment of URL generation", "mod_rewrite"); | ||||
| $oView->lng_rewrite_urls_at_front_content_output_lbl = i18n("a.) During the output of HTML code of the page", "mod_rewrite"); | ||||
| $oView->lng_rewrite_urls_at_front_content_output_info = i18n("Clean-URLs will be generated during page output. Modules/Plugins are able to generate URLs to frontend<br>as usual as in previous CONTENIDO versions using a format like 'front_content.php?idcat=1&idart=2'.<br>The URLs will be replaced by the plugin to Clean-URLs before sending the HTML output.", "mod_rewrite"); | ||||
| $oView->lng_rewrite_urls_at_front_content_output_info2 = i18n("Differences to variant b.)", "mod_rewrite"); | ||||
| $oView->lng_rewrite_urls_at_front_content_output_info3 = i18n("Still compatible to old modules/plugins, since no changes in codes are required\nAll occurring URLs in HTML code, even those set by wysiwyg, will be switched to Clean-URLs\nAll URLs will usually be collected and converted to Clean-URLs at once.<br>Doing it this way reduces the amount of executed database significantly.", "mod_rewrite"); | ||||
| $oView->lng_rewrite_urls_at_front_content_output_info3 = '<li>' . str_replace("\n", '</li><li>', $oView->rewrite_urls_at_front_content_output_info3) . '</li>'; | ||||
| 
 | ||||
| $oView->lng_rewrite_urls_at_congeneratecode_lbl = i18n("b.) In modules or plugins", "mod_rewrite"); | ||||
| $oView->lng_rewrite_urls_at_congeneratecode_info = i18n("By using this option, all Clean-URLs will be generated directly in module or plugins.<br>This means, all areas in modules/plugins, who generate internal URLs to categories/articles, have to be adapted manually.<br>All Clean-URLs have to be generated by using following function:", "mod_rewrite"); | ||||
| $oView->lng_rewrite_urls_at_congeneratecode_example = i18n("# structure of a normal url\n\$url = 'front_content.php?idart=123&lang=2&client=1';\n\n# creation of a url by using the CONTENIDOs Url-Builder (since 4.8.9),\n# wich expects the parameter as a assoziative array\n\$params = array('idart'=>123, 'lang'=>2, 'client'=>1);\n\$newUrl = Contenido_Url::getInstance()->build(\$params);", "mod_rewrite"); | ||||
| $oView->lng_rewrite_urls_at_congeneratecode_info2 = i18n("Differences to variant a.)", "mod_rewrite"); | ||||
| $oView->lng_rewrite_urls_at_congeneratecode_info3 = i18n("The default way to generate URLs to fronend pages\nEach URL in modules/plugins has to be generated by UriBuilder\nEach generated Clean-Url requires a database query", "mod_rewrite"); | ||||
| $oView->lng_rewrite_urls_at_congeneratecode_info3 = '<li>' . str_replace("\n", '</li><li>', $oView->lng_rewrite_urls_at_congeneratecode_info3) . '</li>'; | ||||
| 
 | ||||
| $oView->lng_rewrite_routing = i18n("Routing", "mod_rewrite"); | ||||
| $oView->lng_rewrite_routing_info = i18n("Routing definitions for incoming URLs", "mod_rewrite"); | ||||
| $oView->lng_rewrite_routing_info2 = i18n("Type one routing definition per line as follows:", "mod_rewrite"); | ||||
| $oView->lng_rewrite_routing_example = i18n("# {incoming_url}>>>{new_url}\n/incoming_url/name.html>>>new_url/new_name.html\n\n# route a specific incoming url to a new page\n/campaign/20_percent_on_everything_except_animal_food.html>>>front_content.php?idcat=23\n\n# route request to wwwroot to a specific page\n/>>>front_content.php?idart=16", "mod_rewrite"); | ||||
| $oView->lng_rewrite_routing_info3 = i18n("The routing does not sends a HTTP header redirection to the destination URL, the redirection will happen internally by<br>replacing the detected incoming URL against the new destination URL (overwriting of article- categoryid)\nIncoming URLs can point to non existing resources (category/article), but the desttination URLs should point<br>to valid CONTENIDO articles/categories\nDestination URLs should point to real URLs to categories/articles,<br>e. g.front_content.php?idcat=23 or front_content.php?idart=34\nThe language id should attached to the URL in multi language sites<br>e. g. front_content.php?idcat=23&lang=1\nThe client id should attached to the URL in multi client sites sharing the same folder<br>e. g. front_content.php?idcat=23&client=2\nThe destination URL should not start with '/' or './' (wrong: /front_content.php, correct: front_content.php)", "mod_rewrite"); | ||||
| $oView->lng_rewrite_routing_info3 = '<li>' . str_replace("\n", '</li><li>', $oView->lng_rewrite_routing_info3) . '</li>'; | ||||
| 
 | ||||
| $oView->lng_discard_changes = i18n("Discard changes", "mod_rewrite"); | ||||
| $oView->lng_save_changes = i18n("Save changes", "mod_rewrite"); | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Action processing
 | ||||
| 
 | ||||
| if ($action == 'index') { | ||||
|     $oMrController->indexAction(); | ||||
| } elseif ($action == 'save') { | ||||
|     $oMrController->saveAction(); | ||||
| } elseif ($action == 'reset') { | ||||
|     $oMrController->resetAction(); | ||||
| } elseif ($action == 'resetempty') { | ||||
|     $oMrController->resetEmptyAction(); | ||||
| } else { | ||||
|     $oMrController->indexAction(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Output
 | ||||
| 
 | ||||
| $oMrController->render( | ||||
|     $cfg['path']['contenido'] . $cfg['path']['plugins'] . 'mod_rewrite/templates/content.html' | ||||
| ); | ||||
| 
 | ||||
							
								
								
									
										18
									
								
								includes/include.mod_rewrite_content_top.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										18
									
								
								includes/include.mod_rewrite_content_top.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,18 @@ | |||
| <?php | ||||
| /** | ||||
|  * Plugin mod_rewrite backend include file (in content-top frame) | ||||
|  * | ||||
|  * @date        22.04.2008 | ||||
|  * @author      Murat Purc | ||||
|  * @copyright   © Murat Purc 2008 | ||||
|  * @package     Contenido | ||||
|  * @subpackage  ModRewrite | ||||
|  */ | ||||
| 
 | ||||
| defined('CON_FRAMEWORK') or die('Illegal call'); | ||||
| 
 | ||||
| 
 | ||||
| $tpl = new Template(); | ||||
| $tpl->generate( | ||||
|     $cfg['path']['contenido'] . $cfg['path']['plugins'] . 'mod_rewrite/templates/content_top.html', 0, 0 | ||||
| ); | ||||
							
								
								
									
										119
									
								
								includes/include.mod_rewrite_contentexpert.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										119
									
								
								includes/include.mod_rewrite_contentexpert.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,119 @@ | |||
| <?php | ||||
| /** | ||||
|  * Plugin mod_rewrite backend include file to administer expert (in content frame) | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: include.mod_rewrite_contentexpert.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| global $client, $cfg; | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Initialization
 | ||||
| 
 | ||||
| if ((int) $client <= 0) { | ||||
|     // if there is no client selected, display empty page
 | ||||
|     $oPage = new cPage; | ||||
|     $oPage->render(); | ||||
|     return; | ||||
| } | ||||
| 
 | ||||
| $action = (isset($_REQUEST['mr_action'])) ? $_REQUEST['mr_action'] : 'index'; | ||||
| $debug = false; | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Some variables
 | ||||
| 
 | ||||
| 
 | ||||
| $oMrController = new ModRewrite_ContentExpertController(); | ||||
| 
 | ||||
| $aMrCfg = ModRewrite::getConfig(); | ||||
| 
 | ||||
| $aHtaccessInfo = ModRewrite::getHtaccessInfo(); | ||||
| 
 | ||||
| // define basic data contents (used for template)
 | ||||
| $oView = $oMrController->getView(); | ||||
| 
 | ||||
| // view variables
 | ||||
| $oView->copy_htaccess_css = 'display:table-row;'; | ||||
| $oView->copy_htaccess_error = ''; | ||||
| $oView->copy_htaccess_contenido_chk = ' checked="checked"'; | ||||
| $oView->copy_htaccess_cms_chk = ''; | ||||
| $oView->contenido_full_path = $aHtaccessInfo['contenido_full_path']; | ||||
| $oView->client_full_path = $aHtaccessInfo['client_full_path']; | ||||
| $oView->content_after = ''; | ||||
| 
 | ||||
| $oMrController->setProperty('htaccessInfo', $aHtaccessInfo); | ||||
| 
 | ||||
| // view language variables
 | ||||
| $oView->lng_plugin_functions = i18n("Plugin functions", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_copy_htaccess_type = i18n("Copy/Download .htaccess template", "mod_rewrite"); | ||||
| $oView->lng_copy_htaccess_type_lbl = i18n("Select .htaccess template", "mod_rewrite"); | ||||
| $oView->lng_copy_htaccess_type1 = i18n("Restrictive .htaccess", "mod_rewrite"); | ||||
| $oView->lng_copy_htaccess_type2 = i18n("Simple .htaccess", "mod_rewrite"); | ||||
| $oView->lng_copy_htaccess_type_info1 = i18n("Contains rules with restrictive settings.<br>All requests pointing to extension avi, css, doc, flv, gif, gzip, ico, jpeg, jpg, js, mov, <br>mp3, pdf, png, ppt, rar, txt, wav, wmv, xml, zip, will be excluded vom rewriting.<br>Remaining requests will be rewritten to front_content.php,<br>except requests to 'contenido/', 'setup/', 'cms/upload', 'cms/front_content.php', etc.<br>Each resource, which has to be excluded from rewriting must be specified explicitly.", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_copy_htaccess_type_info2 = i18n("Contains a simple collection of rules. Each requests pointing to valid symlinks, folders or<br>files, will be excluded from rewriting. Remaining requests will be rewritten to front_content.php", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_copy_htaccess_to = i18n("and copy to", "mod_rewrite"); | ||||
| $oView->lng_copy_htaccess_to_contenido = i18n("CONTENIDO installation directory", "mod_rewrite"); | ||||
| $oView->lng_copy_htaccess_to_contenido_info = i18n("Copy the selected .htaccess template into CONTENIDO installation directory<br><br>    {CONTENIDO_FULL_PATH}.<br><br>This is the recommended option for a CONTENIDO installation with one or more clients<br>who are running on the same domain.", "mod_rewrite"); | ||||
| $oView->lng_copy_htaccess_to_contenido_info = str_replace('{CONTENIDO_FULL_PATH}', $oView->contenido_full_path, $oView->lng_copy_htaccess_to_contenido_info); | ||||
| $oView->lng_copy_htaccess_to_client = i18n("client directory", "mod_rewrite"); | ||||
| $oView->lng_copy_htaccess_to_client_info = i18n("Copy the selected .htaccess template into client's directory<br><br>    {CLIENT_FULL_PATH}.<br><br>This is the recommended option for a multiple client system<br>where each client has it's own domain/subdomain", "mod_rewrite"); | ||||
| $oView->lng_copy_htaccess_to_client_info = str_replace('{CLIENT_FULL_PATH}', $oView->client_full_path, $oView->lng_copy_htaccess_to_client_info); | ||||
| $oView->lng_or = i18n("or", "mod_rewrite"); | ||||
| $oView->lng_download = i18n("Download", "mod_rewrite"); | ||||
| $oView->lng_download_info = i18n("Download selected .htaccess template to copy it to the destination folder<br>or to take over the settings manually.", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_resetaliases = i18n("Reset category-/ and article aliases", "mod_rewrite"); | ||||
| $oView->lng_resetempty_link = i18n("Reset only empty aliases", "mod_rewrite"); | ||||
| $oView->lng_resetempty_info = i18n("Only empty aliases will be reset, existing aliases, e. g. manually set aliases, will not be changed.", "mod_rewrite"); | ||||
| $oView->lng_resetall_link = i18n("Reset all aliases", "mod_rewrite"); | ||||
| $oView->lng_resetall_info = i18n("Reset all category-/article aliases. Existing aliases will be overwritten.", "mod_rewrite"); | ||||
| $oView->lng_note = i18n("Note", "mod_rewrite"); | ||||
| $oView->lng_resetaliases_note = i18n("This process could require some time depending on amount of categories/articles.<br>The aliases will not contain the configured plugin separators, but the CONTENIDO default separators '/' und '-', e. g. '/category-word/article-word'.<br>Execution of this function ma be helpful to prepare all or empty aliases for the usage by the plugin.", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_discard_changes = i18n("Discard changes", "mod_rewrite"); | ||||
| $oView->lng_save_changes = i18n("Save changes", "mod_rewrite"); | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Action processing
 | ||||
| 
 | ||||
| if ($action == 'index') { | ||||
|     $oMrController->indexAction(); | ||||
| } elseif ($action == 'copyhtaccess') { | ||||
|     $oMrController->copyHtaccessAction(); | ||||
| } elseif ($action == 'downloadhtaccess') { | ||||
|     $oMrController->downloadHtaccessAction(); | ||||
|     exit(); | ||||
| } elseif ($action == 'reset') { | ||||
|     $oMrController->resetAction(); | ||||
| } elseif ($action == 'resetempty') { | ||||
|     $oMrController->resetEmptyAction(); | ||||
| } else { | ||||
|     $oMrController->indexAction(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Output
 | ||||
| 
 | ||||
| $oMrController->render( | ||||
|     $cfg['path']['contenido'] . $cfg['path']['plugins'] . 'mod_rewrite/templates/contentexpert.html' | ||||
| ); | ||||
| 
 | ||||
							
								
								
									
										83
									
								
								includes/include.mod_rewrite_contenttest.php
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										83
									
								
								includes/include.mod_rewrite_contenttest.php
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,83 @@ | |||
| <?php | ||||
| /** | ||||
|  * Testscript for Advanced Mod Rewrite Plugin. | ||||
|  * | ||||
|  * The goal of this testscript is to provide an easy way for a variance comparison | ||||
|  * of created SEO URLs against their resolved parts. | ||||
|  * | ||||
|  * This testscript fetches the full category and article structure of actual | ||||
|  * CONTENIDO installation, creates the SEO URLs for each existing category/article | ||||
|  * and resolves the generated URLs. | ||||
|  * | ||||
|  * @package     plugin | ||||
|  * @subpackage  Mod Rewrite | ||||
|  * @version     SVN Revision $Rev: 128 $ | ||||
|  * @id          $Id: include.mod_rewrite_contenttest.php 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * @author      Murat Purc <murat@purc.de> | ||||
|  * @copyright   four for business AG <www.4fb.de> | ||||
|  * @license     http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link        http://www.4fb.de | ||||
|  * @link        http://www.contenido.org | ||||
|  */ | ||||
| 
 | ||||
| if (!defined('CON_FRAMEWORK')) { | ||||
|     die('Illegal call'); | ||||
| } | ||||
| 
 | ||||
| global $client, $cfg; | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Initialization
 | ||||
| 
 | ||||
| if ((int) $client <= 0) { | ||||
|     // if there is no client selected, display empty page
 | ||||
|     $oPage = new cPage; | ||||
|     $oPage->render(); | ||||
|     return; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Processing
 | ||||
| 
 | ||||
| $mrTestNoOptionSelected = false; | ||||
| if (!mr_getRequest('idart') && !mr_getRequest('idcat') && !mr_getRequest('idcatart') && !mr_getRequest('idartlang')) { | ||||
|     $mrTestNoOptionSelected = true; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| $oMrTestController = new ModRewrite_ContentTestController(); | ||||
| 
 | ||||
| 
 | ||||
| // view language variables
 | ||||
| $oView = $oMrTestController->getView(); | ||||
| $oView->lng_form_info = i18n("Define options to genereate the URLs by using the form below and run the test.", "mod_rewrite"); | ||||
| $oView->lng_form_label = i18n("Parameter to use", "mod_rewrite"); | ||||
| $oView->lng_maxitems_lbl = i18n("Number of URLs to generate", "mod_rewrite"); | ||||
| $oView->lng_run_test = i18n("Run test", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_result_item_tpl = i18n("{pref}<strong>{name}</strong><br>{pref}Builder in:    {url_in}<br>{pref}Builder out:   {url_out}<br>{pref}<span style='color:{color}'>Resolved URL:  {url_res}</span><br>{pref}Resolver err:  {err}<br>{pref}Resolved data: {data}", "mod_rewrite"); | ||||
| 
 | ||||
| $oView->lng_result_message_tpl = i18n("Duration of test run: {time} seconds.<br>Number of processed URLs: {num_urls}<br><span style='color:green'>Successful resolved: {num_success}</span><br><span style='color:red'>Errors during resolving: {num_fail}</span></strong>", "mod_rewrite"); | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Action processing
 | ||||
| 
 | ||||
| if ($mrTestNoOptionSelected) { | ||||
|     $oMrTestController->indexAction(); | ||||
| } else { | ||||
|     $oMrTestController->testAction(); | ||||
| } | ||||
| 
 | ||||
| $oView = $oMrTestController->getView(); | ||||
| $oView->content .= mr_debugOutput(false); | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################
 | ||||
| ##### Output
 | ||||
| 
 | ||||
| $oMrTestController->render( | ||||
|     $cfg['path']['contenido'] . $cfg['path']['plugins'] . 'mod_rewrite/templates/contenttest.html' | ||||
| ); | ||||
							
								
								
									
										
											BIN
										
									
								
								locale/de_DE/LC_MESSAGES/mod_rewrite.mo
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										
											BIN
										
									
								
								locale/de_DE/LC_MESSAGES/mod_rewrite.mo
									
										
									
									
									
										Normale Datei
									
								
							
										
											Binäre Datei nicht angezeigt.
										
									
								
							
							
								
								
									
										944
									
								
								locale/de_DE/LC_MESSAGES/mod_rewrite.po
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										944
									
								
								locale/de_DE/LC_MESSAGES/mod_rewrite.po
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,944 @@ | |||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: ConLite AMR\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2017-07-15 18:37+0200\n" | ||||
| "PO-Revision-Date: 2017-07-16 13:36+0100\n" | ||||
| "Last-Translator: Ortwin Pinke <o.pinke@php-backoffice.de>\n" | ||||
| "Language-Team: Ortwin Pinke <translate@conlite.org>\n" | ||||
| "Language: de_DE\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "X-Poedit-Basepath: .\n" | ||||
| "X-Poedit-KeywordsList: i18n\n" | ||||
| "X-Generator: Poedit 1.5.4\n" | ||||
| "X-Poedit-SearchPath-0: mod_rewrite\n" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:177 | ||||
| msgid "Version" | ||||
| msgstr "Version" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:178 | ||||
| msgid "Author" | ||||
| msgstr "Autor" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:179 | ||||
| msgid "E-Mail to author" | ||||
| msgstr "E-Mail an Autor" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:180 | ||||
| msgid "Plugin page" | ||||
| msgstr "Pluginseite" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:181 | ||||
| msgid "Visit plugin page" | ||||
| msgstr "Pluginseite besuchen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:182 | ||||
| msgid "opens page in new window" | ||||
| msgstr "öffnet Seite in einem neuen Fenster" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:183 | ||||
| msgid "CONTENIDO forum" | ||||
| msgstr "CONTENIDO Forum" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:184 | ||||
| msgid "Plugin thread in CONTENIDO forum" | ||||
| msgstr "Pluginbeitrag im CONTENIDO Forum" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:185 | ||||
| msgid "Plugin settings" | ||||
| msgstr "Plugineinstellungen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:186 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:87 | ||||
| msgid "Note" | ||||
| msgstr "Hinweis" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:189 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "The .htaccess file could not found either in CONTENIDO installation " | ||||
| "directory nor in client directory.<br>It should set up in %sFunctions%s " | ||||
| "area, if needed." | ||||
| msgstr "" | ||||
| "Es wurde weder im CONTENIDO Installationsverzeichnis noch im " | ||||
| "Mandantenverzeichnis eine .htaccess Datei gefunden.<br>Die .htaccess Datei " | ||||
| "sollte gegebenenfalls im Bereich %sFunktionen%s eingerichtet werden." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:192 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "Found some category and/or article aliases. It is recommended to run the " | ||||
| "reset function in %sFunctions%s area, if needed." | ||||
| msgstr "" | ||||
| "Einige leere Kategorie- und/oder Artikelaliase wurden gefunden. Es wird " | ||||
| "empfohlen, diese über den Bereich %sFunktionen%s zurückzusetzen." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:195 | ||||
| msgid "Enable Advanced Mod Rewrite" | ||||
| msgstr "Advanced Mod Rewrite aktivieren" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:197 | ||||
| msgid "" | ||||
| "Disabling of plugin does not result in disabling mod rewrite module of the " | ||||
| "web server - This means,<br> all defined rules in the .htaccess are still " | ||||
| "active and could create unwanted side effects.<br><br>Apache mod rewrite " | ||||
| "could be enabled/disabled by setting the RewriteEngine directive.<br>Any " | ||||
| "defined rewrite rules could remain in the .htaccess and they will not " | ||||
| "processed,<br>if the mod rewrite module is disabled" | ||||
| msgstr "" | ||||
| "Beim Deaktivieren des Plugins wird das mod rewrite Modul des Webservers " | ||||
| "nicht mit deaktiviert - Das bedeutet, <br>dass alle in der .htaccess " | ||||
| "definerten Regeln weiterhin aktiv sind und einen unerwünschten Nebeneffekt " | ||||
| "haben können.<br><br>Apache mod rewrite lässt sich in der .htaccess durch " | ||||
| "das Setzen der RewriteEngine-Direktive aktivieren/deaktivieren.<br>Wird das " | ||||
| "mod rewrite Modul deaktiviert, können die in der .htaccess definierten " | ||||
| "Regeln weiterhin bleiben, sie werden <br>dann nicht verarbeitet." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:199 | ||||
| msgid "Example" | ||||
| msgstr "Beispiel" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:201 | ||||
| msgid "" | ||||
| "# enable apache mod rewrite module\n" | ||||
| "RewriteEngine on\n" | ||||
| "\n" | ||||
| "# disable apache mod rewrite module\n" | ||||
| "RewriteEngine off" | ||||
| msgstr "" | ||||
| "# aktivieren des apache mod rewrite moduls\n" | ||||
| "RewriteEngine on\n" | ||||
| "\n" | ||||
| "# deaktivieren des apache mod rewrite moduls\n" | ||||
| "RewriteEngine off" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:203 | ||||
| msgid "Path to .htaccess from DocumentRoot" | ||||
| msgstr "Pfad zur .htaccess Datei vom DocumentRoot ausgehend" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:204 | ||||
| msgid "" | ||||
| "Type '/' if the .htaccess file lies inside the wwwroot (DocumentRoot) folder." | ||||
| "<br>Type the path to the subfolder fromm wwwroot, if CONTENIDO is installed " | ||||
| "in a subfolder within the wwwroot<br>(e. g. http://domain/mycontenido -> " | ||||
| "path = '/mycontenido/')" | ||||
| msgstr "" | ||||
| "Liegt die .htaccess im wwwroot (DocumentRoot), ist '/' anzugeben, ist " | ||||
| "CONTENIDO in einem <br>Unterverzeichnis von wwwroot installiert, ist der " | ||||
| "Pfad vom wwwroot aus anzugeben <br>(z. B. http://domain/mycontenido -> " | ||||
| "Pfad = '/mycontenido/')." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:206 | ||||
| msgid "Check path to .htaccess" | ||||
| msgstr "Pfad zur .htaccess Datei überprüfen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:207 | ||||
| msgid "" | ||||
| "The path will be checked, if this option is enabled.<br>But this could " | ||||
| "result in an error in some cases, even if the specified path is valid " | ||||
| "and<br>clients DocumentRoot differs from CONTENIDO backend DocumentRoot." | ||||
| msgstr "" | ||||
| "Ist diese Option aktiv, wird der eingegebene Pfad überprüft. Das kann unter " | ||||
| "<br>Umständen einen Fehler verursachen, obwohl der Pfad zwar richtig ist, " | ||||
| "aber der Mandant <br>einen anderen DocumentRoot als das CONTENIDO Backend " | ||||
| "hat." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:209 | ||||
| msgid "Should the name of root category be displayed in the URL?" | ||||
| msgstr "Soll der Name des Hauptbaumes mit in der URL erscheinen?" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:210 | ||||
| msgid "Start from root category" | ||||
| msgstr "Start vom Hauptbaum aus" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:211 | ||||
| msgid "" | ||||
| "If enabled, the name of the root category (e. g. 'Mainnavigation' in a " | ||||
| "CONTENIDO default installation), will be preceded to the URL." | ||||
| msgstr "" | ||||
| "Ist diese Option gewählt, wird der Name des Hauptbaumes (Kategoriebaum, " | ||||
| "<br>z. B. 'Hauptnavigation' bei CONTENIDO Standardinstallation) der URL " | ||||
| "vorangestellt." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:213 | ||||
| msgid "Are several clients maintained in one directory?" | ||||
| msgstr "Werden mehrere Mandanten in einem Verzeichnis gepflegt?" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:214 | ||||
| msgid "Prepend client to the URL" | ||||
| msgstr "Mandant an die URL voranstellen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:215 | ||||
| msgid "Use client name instead of the id" | ||||
| msgstr "Name des Mandanten anstatt die Id verwenden" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:217 | ||||
| msgid "" | ||||
| "Should the language appear in the URL (required for multi language websites)?" | ||||
| msgstr "" | ||||
| "Soll die Sprache mit in der URL erscheinen (für Mehrsprachsysteme " | ||||
| "unabdingbar)?" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:218 | ||||
| msgid "Prepend language to the URL" | ||||
| msgstr "Sprache an die URL voranstellen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:219 | ||||
| msgid "Use language name instead of the id" | ||||
| msgstr "Name der Sprache anstatt die Id verwenden" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:221 | ||||
| msgid "" | ||||
| "Configure your own separators with following 4 settings<br>to control " | ||||
| "generated URLs to your own taste" | ||||
| msgstr "" | ||||
| "Mit den nächsten 4 Einstellungen können die Trennzeichen in " | ||||
| "den<br>generierten URLs nach den eigenen Wünschen gesetzt werden." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:222 | ||||
| msgid "" | ||||
| "www.domain.com/category1-category2.articlename.html\n" | ||||
| "www.domain.com/category1/category2-articlename.html\n" | ||||
| "www.domain.com/category.name1~category2~articlename.html\n" | ||||
| "www.domain.com/category_name1-category2-articlename.foo" | ||||
| msgstr "" | ||||
| "www.domain.de/kategorie1-kategorie2.artikelname.html\n" | ||||
| "www.domain.de/kategorie1/kategorie2-artikelname.html\n" | ||||
| "www.domain.de/kategorie.name1~kategorie2~artikelname.html\n" | ||||
| "www.domain.de/kategorie_name1-kategorie2-artikelname.foo" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:223 | ||||
| msgid "Category separator has to be different from category-word separator" | ||||
| msgstr "" | ||||
| "Kategorie-Separator und Kategoriewort-Separator müssen unterschiedlich sein" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:224 | ||||
| msgid "" | ||||
| "# Example: Category separator (/) and category-word separator (_)\n" | ||||
| "category_one/category_two/articlename.html" | ||||
| msgstr "" | ||||
| "# Beispiel: Kategorie-Separator (/) und Kategoriewort-Separator (_)\n" | ||||
| "kategorie_eins/kategorie_zwei/artikelname.html" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:225 | ||||
| msgid "Category separator has to be different from article-word separator" | ||||
| msgstr "" | ||||
| "Kategorie-Separator und Artikelwort-Separator müssen unterschiedlich sein" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:226 | ||||
| msgid "" | ||||
| "# Example: Category separator (/) and article-word separator (-)\n" | ||||
| "category_one/category_two/article-description.html" | ||||
| msgstr "" | ||||
| "# Beispiel: Kategorie-Separator (/) und Artikelwort-Separator (-)\n" | ||||
| "kategorie_eins/kategorie_zwei/artikel-bezeichnung.html" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:227 | ||||
| msgid "" | ||||
| "Category-article separator has to be different from article-word separator" | ||||
| msgstr "" | ||||
| "Kategorie-Artikel-Separator und Artikelwort-Separator müssen unterschiedlich " | ||||
| "sein" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:228 | ||||
| msgid "" | ||||
| "# Example: Category-article separator (/) and article-word separator (-)\n" | ||||
| "category_one/category_two/article-description.html" | ||||
| msgstr "" | ||||
| "# Beispiel: Kategorie-Artikel-Separator (/) und Artikelwort-Separator (-)\n" | ||||
| "kategorie_eins/kategorie_zwei/artikel-bezeichnung.html" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:230 | ||||
| msgid "Category separator (delemiter between single categories)" | ||||
| msgstr "Kategorie-Separator (Trenner zwischen einzelnen Kategorien)" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:231 | ||||
| #: includes/include.mod_rewrite_content.php:232 | ||||
| #, php-format | ||||
| msgid "(possible values: %s)" | ||||
| msgstr "(mögliche Werte: %s)" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:233 | ||||
| msgid "Category-word separator (delemiter between category words)" | ||||
| msgstr "Kategoriewort-Separator (Trenner zwischen einzelnen Kategoriewörtern)" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:234 | ||||
| msgid "" | ||||
| "Category-article separator (delemiter between category-block and article)" | ||||
| msgstr "" | ||||
| "Kategorie-Artikel-Separator (Trenner zwischen Kategorieabschnitt und " | ||||
| "Artikelname)" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:235 | ||||
| msgid "Article-word separator (delemiter between article words)" | ||||
| msgstr "Artikelwort-Separator (Trenner zwischen einzelnen Artikelwörtern)" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:237 | ||||
| msgid "Append article name to URLs" | ||||
| msgstr "Artikelname an URLs anhängen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:238 | ||||
| msgid "Append article name always to URLs (even at URLs to categories)" | ||||
| msgstr "Artikelname immer an die URLs anhängen (auch bei URLs zu Kategorien)" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:239 | ||||
| msgid "Default article name without extension" | ||||
| msgstr "Standard-Artikelname ohne Dateiendung" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:240 | ||||
| msgid "" | ||||
| "e. g. 'index' for index.ext<br>In case of selected 'Append article name " | ||||
| "always to URLs' option and a empty field,<br>the name of the start article " | ||||
| "will be used" | ||||
| msgstr "" | ||||
| "z. B. 'index' für index.ext.<br>Wenn die Option 'Artikelname immer an die " | ||||
| "URLs anhängen' aktiviert und das Feld leer ist,<br>wird der Name des " | ||||
| "Startartikels verwendet." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:242 | ||||
| msgid "File extension at the end of the URL" | ||||
| msgstr "Dateiendung am Ende der URL" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:243 | ||||
| msgid "" | ||||
| "Specification of file extension with a preceded dot<br>e.g. '.html' for " | ||||
| "http://host/foo/bar.html" | ||||
| msgstr "" | ||||
| "Angabe der Dateiendung mit einem vorangestellten Punkt,<br>z. B. '.html' für " | ||||
| "http://host/foo/bar.html" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:244 | ||||
| msgid "" | ||||
| "It's strongly recommended to specify a extension here,<br>if the option " | ||||
| "'Append article name always to URLs' was not selected.<br><br>Otherwise URLs " | ||||
| "to categories and articles would have the same format<br>which may result in " | ||||
| "unresolvable categories/articles in some cases." | ||||
| msgstr "" | ||||
| "Falls die Option 'Artikelname immer an die URLs anhängen' nicht gewählt " | ||||
| "wurde, <br>ist es zwingend notwending, dass hier eine Dateiendung angegeben " | ||||
| "wird.<br><br>Sonst haben URLs zu Kategorien und zu Seiten das gleiche " | ||||
| "Format, und die korrekte<br>Auflösung der Kategorie und/oder des Artikels " | ||||
| "kann nicht gewährleistet werden." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:245 | ||||
| msgid "" | ||||
| "It's necessary to specify a file extension at the moment, due do existing " | ||||
| "issues, which are not solved until yet. An not defined extension may result " | ||||
| "in invalid article detection in some cases." | ||||
| msgstr "" | ||||
| "Aufgrund diverser Probleme, die noch nicht in dieser Version gelöst " | ||||
| "wurden konnten, sollte unbedingt eine Endung angegeben werden. Ohne eine " | ||||
| "angegebene Endung kann es zur fehlerhaften Erkennung der Artikel kommen." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:247 | ||||
| msgid "Should the URLs be written in lower case?" | ||||
| msgstr "Sollen die URLs klein geschrieben werden?" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:248 | ||||
| msgid "URLs in lower case" | ||||
| msgstr "URLs in Kleinbuchstaben" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:250 | ||||
| msgid "Duplicated content" | ||||
| msgstr "Duplicated Content" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:251 | ||||
| msgid "Prevent duplicated content" | ||||
| msgstr "Duplicated Content verhindern" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:253 | ||||
| msgid "" | ||||
| "Depending on configuration, pages could be found thru different URLs." | ||||
| "<br>Enabling of this option prevents this. Examples for duplicated content" | ||||
| msgstr "" | ||||
| "Seiten werden je nach Konfiguration unter verschiedenen URLs gefunden." | ||||
| "<br>Das Aktivieren dieser Option unterbindet dies. Beispiele für duplicated " | ||||
| "Content" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:254 | ||||
| msgid "" | ||||
| "Name of the root category in the URL: Feasible is /maincategory/subcategory/ " | ||||
| "and /subcategory/\n" | ||||
| "Language in the URL: Feasible is /german/category/ and /1/category/\n" | ||||
| "Client in the URL: Feasible is /client/category/ und /1/category/" | ||||
| msgstr "" | ||||
| "Name des Hauptbaumes in der URL: Möglich /hauptkategorie/unterkategorie/ " | ||||
| "und /unterkategorie/\n" | ||||
| "Sprache in der URL: Möglich /deutsch/kategorie/ und /1/kategorie/\n" | ||||
| "Mandant in der URL: Möglich /mandant/kategorie/ und /1/kategorie/" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:257 | ||||
| msgid "Percentage for similar category paths in URLs" | ||||
| msgstr "Prozentsatz für ähnliche Kategorie-Pfade in URLs" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:258 | ||||
| msgid "" | ||||
| "This setting refers only to the category path of a URL. If AMR is " | ||||
| "configured<br>to prepend e. g. the root category, language and/or client to " | ||||
| "the URL,<br>the specified percentage will not applied to those parts of the " | ||||
| "URL.<br>An incoming URL will be cleaned from those values and the remaining " | ||||
| "path (urlpath of the category)<br>will be checked against similarities." | ||||
| msgstr "" | ||||
| "Diese Einstellung bezieht sich nur auf den Kategorieteil einer URL. Ist AMR " | ||||
| "so konfiguriert, dass z. B. die<br>Hauptnavigation und/oder Sprache sowie " | ||||
| "der Name des Mandanten an die URL vorangestellt wird, so wird der hier " | ||||
| "<br>definierte Prozentsatz nicht auf diese Werte der URL angewendet.<br>Eine " | ||||
| "ankommende URL wird von solchen Präfixen entfernt, der übrig gebliebene Pfad " | ||||
| "(Urlpfad der Kategorie)<br>wird auf die Ähnlichkleit hin geprüft." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:259 | ||||
| msgid "" | ||||
| "100 = exact match with no tolerance\n" | ||||
| "85  = paths with little errors will match to similar ones\n" | ||||
| "0   = matching will work even for total wrong paths" | ||||
| msgstr "" | ||||
| "100 = exakte überinstimmung, keine fehlertoleranz\n" | ||||
| "85  = pfade mit kleineren fehlern ergeben auch treffern\n" | ||||
| "0   = vollständig fehlerhafte pfade ergeben dennoch einen treffer" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:261 | ||||
| msgid "Redirect in case of invalid articles" | ||||
| msgstr "Weiterleitung bei ungültigen Artikeln" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:262 | ||||
| msgid "Redirect to error page in case of invaid articles" | ||||
| msgstr "Bei ungültigen Artikeln zur Fehlerseite weiterleiten" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:263 | ||||
| msgid "The start page will be displayed if this option is not enabled" | ||||
| msgstr "Ist die Option nicht aktiv, wird die Startseite angezeigt" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:265 | ||||
| msgid "Moment of URL generation" | ||||
| msgstr "Zeitpunkt zum Generieren der URLs" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:266 | ||||
| msgid "a.) During the output of HTML code of the page" | ||||
| msgstr "a.) Bei der Ausgabe des HTML Codes der Seite" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:267 | ||||
| msgid "" | ||||
| "Clean-URLs will be generated during page output. Modules/Plugins are able to " | ||||
| "generate URLs to frontend<br>as usual as in previous CONTENIDO versions " | ||||
| "using a format like 'front_content.php?idcat=1&idart=2'.<br>The URLs " | ||||
| "will be replaced by the plugin to Clean-URLs before sending the HTML output." | ||||
| msgstr "" | ||||
| "Clean-URLs werden bei der Ausgabe der Seite generiert. Module/Plugins können " | ||||
| "URLs zum Frontend, <br>wie in früheren Versionen von CONTENIDO üblich, nach " | ||||
| "dem Muster 'front_content.php?idcat=1&idart=2' <br>ausgeben. Die URLs " | ||||
| "werden vom Plugin vor der Ausgabe des HTML-Outputs Clean-URLs ersetzt." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:268 | ||||
| msgid "Differences to variant b.)" | ||||
| msgstr "Unterschiede zur Variante b.)" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:269 | ||||
| msgid "" | ||||
| "Still compatible to old modules/plugins, since no changes in codes are " | ||||
| "required\n" | ||||
| "All occurring URLs in HTML code, even those set by wysiwyg, will be switched " | ||||
| "to Clean-URLs\n" | ||||
| "All URLs will usually be collected and converted to Clean-URLs at once." | ||||
| "<br>Doing it this way reduces the amount of executed database significantly." | ||||
| msgstr "" | ||||
| "Weiterhin Kompatibel zu älteren Modulen/Plugins, da keine Änderungen am Code " | ||||
| "nötig sind\n" | ||||
| "Sämtliche im HTML-Code vorkommende URLs, auch über wysiwyg gesetzte URLs, " | ||||
| "<br>werden auf Clean-URLs umgestellt\n" | ||||
| "Alle umzuschreibenden URLs werden in der Regel \"gesammelt\" und auf eimmal " | ||||
| "umgeschreiben, <br>dadurch wird die Anzahl der DB-Abfragen sehr stark " | ||||
| "minimiert" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:272 | ||||
| msgid "b.) In modules or plugins" | ||||
| msgstr "b.) In Modulen oder Plugins" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:273 | ||||
| msgid "" | ||||
| "By using this option, all Clean-URLs will be generated directly in module or " | ||||
| "plugins.<br>This means, all areas in modules/plugins, who generate internal " | ||||
| "URLs to categories/articles, have to be adapted manually.<br>All Clean-URLs " | ||||
| "have to be generated by using following function:" | ||||
| msgstr "" | ||||
| "Bei dieser Option werden die Clean-URLs direkt in Modulen/Plugins generiert. " | ||||
| "Das bedeutet,<br>dass alle internen URLs auf Kategorien/Artikel in den " | ||||
| "Modulausgaben ggf. manuell angepasst werden müssen. <br>Clean-URLs müssen " | ||||
| "dann stets mit folgender Funktion erstellt werden:" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:274 | ||||
| msgid "" | ||||
| "# structure of a normal url\n" | ||||
| "$url = 'front_content.php?idart=123&lang=2&client=1';\n" | ||||
| "\n" | ||||
| "# creation of a url by using the CONTENIDOs Url-Builder (since 4.8.9),\n" | ||||
| "# wich expects the parameter as a assoziative array\n" | ||||
| "$params = array('idart'=>123, 'lang'=>2, 'client'=>1);\n" | ||||
| "$newUrl = Contenido_Url::getInstance()->build($params);" | ||||
| msgstr "" | ||||
| "# aufbau einer normalen url\n" | ||||
| "$url = 'front_content.php?idart=123&lang=2&client=1';\n" | ||||
| "\n" | ||||
| "# erstellen der neuen Url über CONTENIDOs Url-Builder (seit 4.8.9),\n" | ||||
| "# der die Parameter als assoziatives array erwartet\n" | ||||
| "$params = array('idart'=>123, 'lang'=>2, 'client'=>1);\n" | ||||
| "$newUrl = Contenido_Url::getInstance()->build($params);" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:275 | ||||
| msgid "Differences to variant a.)" | ||||
| msgstr "Unterschiede zur Variante a.)" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:276 | ||||
| msgid "" | ||||
| "The default way to generate URLs to fronend pages\n" | ||||
| "Each URL in modules/plugins has to be generated by UriBuilder\n" | ||||
| "Each generated Clean-Url requires a database query" | ||||
| msgstr "" | ||||
| "Der Standardweg um URLs zu Frontendseiten zu generieren\n" | ||||
| "Jede URL in Modulen/Plugins ist vom UrlBuilder zu erstellen\n" | ||||
| "Für jede umzuschreibende URL ist eine Datenbankabfrage nötig" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:279 | ||||
| msgid "Routing" | ||||
| msgstr "Routing" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:280 | ||||
| msgid "Routing definitions for incoming URLs" | ||||
| msgstr "Routing Definitionen für eingehende URLs" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:281 | ||||
| msgid "Type one routing definition per line as follows:" | ||||
| msgstr "Pro Zeile eine Routing Definition wie folgt eingeben:" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:282 | ||||
| msgid "" | ||||
| "# {incoming_url}>>>{new_url}\n" | ||||
| "/incoming_url/name.html>>>new_url/new_name.html\n" | ||||
| "\n" | ||||
| "# route a specific incoming url to a new page\n" | ||||
| "/campaign/20_percent_on_everything_except_animal_food.html>>>front_content." | ||||
| "php?idcat=23\n" | ||||
| "\n" | ||||
| "# route request to wwwroot to a specific page\n" | ||||
| "/>>>front_content.php?idart=16" | ||||
| msgstr "" | ||||
| "# {eingehende_url}>>>{neue_url}\n" | ||||
| "/eingehende_url/name.html>>>neue_url/neuer_name.html\n" | ||||
| "\n" | ||||
| "# bestimmte eingehende url zur einer seite weiterleiten\n" | ||||
| "/aktionen/20_prozent_auf_alles_ausser_tiernahrung.html>>>front_content.php?" | ||||
| "idcat=23\n" | ||||
| "\n" | ||||
| "# request zum wwwroot auf eine bestimmte seite routen\n" | ||||
| "/>>>front_content.php?idart=16" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:283 | ||||
| msgid "" | ||||
| "The routing does not sends a HTTP header redirection to the destination URL, " | ||||
| "the redirection will happen internally by<br>replacing the detected incoming " | ||||
| "URL against the new destination URL (overwriting of article- categoryid)\n" | ||||
| "Incoming URLs can point to non existing resources (category/article), but " | ||||
| "the desttination URLs should point<br>to valid CONTENIDO articles/" | ||||
| "categories\n" | ||||
| "Destination URLs should point to real URLs to categories/articles,<br>e. g." | ||||
| "front_content.php?idcat=23 or front_content.php?idart=34\n" | ||||
| "The language id should attached to the URL in multi language sites<br>e. g. " | ||||
| "front_content.php?idcat=23&lang=1\n" | ||||
| "The client id should attached to the URL in multi client sites sharing the " | ||||
| "same folder<br>e. g. front_content.php?idcat=23&client=2\n" | ||||
| "The destination URL should not start with '/' or './' (wrong: /front_content." | ||||
| "php, correct: front_content.php)" | ||||
| msgstr "" | ||||
| "Das Routing schickt keinen HTTP Header mit einer Weiterleitung zur Ziel-URL, " | ||||
| "die Umleitung findet intern<br>durch das Ersetzen der erkannten " | ||||
| "Eingangsseite gegen die neue Zielseite statt (Überschreiben der Artikel-/" | ||||
| "Kategorieid)\n" | ||||
| "Eingehende URLs können auch nicht vorhandene Ressourcen (Kategorie, Artikel) " | ||||
| "sein, hinter der Ziel URL muss eine <br>gültige CONTENIDO-Seite (Kategorie/" | ||||
| "Artikel) liegen\n" | ||||
| "Als Ziel URL sollte eine reale URL zur Kategorie/Seite angegeben werden, " | ||||
| "<br>z. B. front_content.php?idcat=23 oder front_content.php?idart=34.\n" | ||||
| "Bei mehrsprachigen Auftritten sollte die Id der Sprache angehängt werden, " | ||||
| "<br>z. B. front_content.php?idcat=23&lang=1\n" | ||||
| "Bei mehreren Mandanten im gleichen Verzeichnis sollte die Id des Mandanten " | ||||
| "angehängt werden,<br>z. B. front_content.php?idcat=23&client=2\n" | ||||
| "Die Zielurl sollte nicht mit '/' oder './' beginnen (falsch: /front_content." | ||||
| "php, richtig: front_content.php)" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:286 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:90 | ||||
| msgid "Discard changes" | ||||
| msgstr "Änderungen verwerfen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:287 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:91 | ||||
| msgid "Save changes" | ||||
| msgstr "Änderungen speichern" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:55 | ||||
| msgid "" | ||||
| "Define options to genereate the URLs by using the form below and run the " | ||||
| "test." | ||||
| msgstr "" | ||||
| "Optionen zum Generieren der URLs im folgenden Formular setzen und den Test " | ||||
| "starten." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:56 | ||||
| msgid "Parameter to use" | ||||
| msgstr "Zu verwendende Parameter" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:57 | ||||
| msgid "Number of URLs to generate" | ||||
| msgstr "Anzahl der zu generierenden URLs" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:58 | ||||
| msgid "Run test" | ||||
| msgstr "Test starten" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:60 | ||||
| msgid "" | ||||
| "{pref}<strong>{name}</strong><br>{pref}Builder in:    {url_in}<br>{pref}" | ||||
| "Builder out:   {url_out}<br>{pref}<span style='color:{color}'>Resolved URL:  " | ||||
| "{url_res}</span><br>{pref}Resolver err:  {err}<br>{pref}Resolved data: {data}" | ||||
| msgstr "" | ||||
| "{pref}<strong>{name}</strong><br>{pref}Builder Eingang:   {url_in}<br>{pref}" | ||||
| "Builder Ausgang:   {url_out}<br>{pref}<span style='color:{color}'>Aufgelöste " | ||||
| "URL:    {url_res}</span><br>{pref}Aufgelöse-Fehler:  {err}<br>{pref}" | ||||
| "Aufgelöste Daten:  {data}" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:62 | ||||
| msgid "" | ||||
| "Duration of test run: {time} seconds.<br>Number of processed URLs: {num_urls}" | ||||
| "<br><span style='color:green'>Successful resolved: {num_success}</" | ||||
| "span><br><span style='color:red'>Errors during resolving: {num_fail}</span></" | ||||
| "strong>" | ||||
| msgstr "" | ||||
| "Dauer des Testdurchlaufs: {time} Sekunden.<br>Anzahl verarbeiteter URLs: " | ||||
| "{num_urls}<br><span style='color:green'>Erfolgreich aufgelöst: {num_success}" | ||||
| "</span><br><span style='color:red'>Fehler beim Auflösen: {num_fail}</span></" | ||||
| "strong>" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:61 | ||||
| msgid "Plugin functions" | ||||
| msgstr "Plugin Funktionen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:63 | ||||
| msgid "Copy/Download .htaccess template" | ||||
| msgstr ".htaccess Vorlage kopieren/downloaden" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:64 | ||||
| msgid "Select .htaccess template" | ||||
| msgstr ".htaccess Vorlage auswählen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:65 | ||||
| msgid "Restrictive .htaccess" | ||||
| msgstr "Restriktive .htaccess" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:66 | ||||
| msgid "Simple .htaccess" | ||||
| msgstr "Einfache .htaccess" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:67 | ||||
| msgid "" | ||||
| "Contains rules with restrictive settings.<br>All requests pointing to " | ||||
| "extension avi, css, doc, flv, gif, gzip, ico, jpeg, jpg, js, mov, <br>mp3, " | ||||
| "pdf, png, ppt, rar, txt, wav, wmv, xml, zip, will be excluded vom rewriting." | ||||
| "<br>Remaining requests will be rewritten to front_content.php,<br>except " | ||||
| "requests to 'contenido/', 'setup/', 'cms/upload', 'cms/front_content.php', " | ||||
| "etc.<br>Each resource, which has to be excluded from rewriting must be " | ||||
| "specified explicitly." | ||||
| msgstr "" | ||||
| "Enthält Regeln mit restriktiveren Einstellungen.<br>Alle Anfragen, die auf " | ||||
| "die Dateienendung avi, css, doc, flv, gif, gzip, ico, jpeg, jpg, js, mov, " | ||||
| "<br>mp3, pdf, png, ppt, rar, txt, wav, wmv, xml, zip gehen, werden vom " | ||||
| "Umschreiben ausgeschlossen.<br>Alle anderen Anfragen, werden an " | ||||
| "front_content.php umschrieben.<br>Ausgeschlossen davon sind 'contenido/', " | ||||
| "'setup/', 'cms/upload', 'cms/front_content.php', usw.<br>Jede neue " | ||||
| "Ressource, die vom Umschreiben ausgeschlossen werden soll, muss explizit " | ||||
| "definiert werden." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:69 | ||||
| msgid "" | ||||
| "Contains a simple collection of rules. Each requests pointing to valid " | ||||
| "symlinks, folders or<br>files, will be excluded from rewriting. Remaining " | ||||
| "requests will be rewritten to front_content.php" | ||||
| msgstr "" | ||||
| "Enthält eine einfachere Sammlung an Regeln. Alle Anfragen, die auf gültige " | ||||
| "Symlinks, Verzeichnisse oder<br>Dateien gehen, werden vom Umschreiben " | ||||
| "ausgeschlossen. Restliche Anfragen werden an front_content." | ||||
| "php<br>umschrieben." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:71 | ||||
| msgid "and copy to" | ||||
| msgstr "und kopieren in" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:72 | ||||
| msgid "CONTENIDO installation directory" | ||||
| msgstr "das CONTENIDO Installationsverzeichnis" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:73 | ||||
| msgid "" | ||||
| "Copy the selected .htaccess template into CONTENIDO installation " | ||||
| "directory<br><br>    {CONTENIDO_FULL_PATH}.<br><br>This " | ||||
| "is the recommended option for a CONTENIDO installation with one or more " | ||||
| "clients<br>who are running on the same domain." | ||||
| msgstr "" | ||||
| "Die gewählte .htaccess Vorlage in das CONTENIDO " | ||||
| "Installationsverzeichnis<br>\n" | ||||
| "<br>\n" | ||||
| "    {CONTENIDO_FULL_PATH}<br>\n" | ||||
| "<br>\n" | ||||
| "kopieren.<br>\n" | ||||
| "Das ist die empfohlene Option für eine CONTENIDO-Installation mit einem " | ||||
| "Mandanten oder<br>\n" | ||||
| "mehreren Mandanten, die alle unter der gleichen Domain laufen." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:75 | ||||
| msgid "client directory" | ||||
| msgstr "das Mandantenverzeichnis" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:76 | ||||
| msgid "" | ||||
| "Copy the selected .htaccess template into client's directory<br><br> " | ||||
| "   {CLIENT_FULL_PATH}.<br><br>This is the recommended option " | ||||
| "for a multiple client system<br>where each client has it's own domain/" | ||||
| "subdomain" | ||||
| msgstr "" | ||||
| "Die gewählte .htaccess Vorlage in das Mandantenerzeichnis<br>\n" | ||||
| "<br>\n" | ||||
| "    {CLIENT_FULL_PATH}<br>\n" | ||||
| "<br>\n" | ||||
| "kopieren.<br>\n" | ||||
| "Diese Option ist z. B. bei einem Mehrmandantensystem empfohlen,<br>\n" | ||||
| "wenn jeder Mandant unter einer eigenen Domain/Subdomain läuft." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:78 | ||||
| msgid "or" | ||||
| msgstr "oder" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:79 | ||||
| msgid "Download" | ||||
| msgstr "Downloaden" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:80 | ||||
| msgid "" | ||||
| "Download selected .htaccess template to copy it to the destination " | ||||
| "folder<br>or to take over the settings manually." | ||||
| msgstr "" | ||||
| "Die gewählte .htaccess Vorlage downloaden um z. B. die Datei manuell<br>\n" | ||||
| "in das Verzeichnis zu kopieren oder Einstellungen zu übernehmen." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:82 | ||||
| msgid "Reset category-/ and article aliases" | ||||
| msgstr "Kategorie-/ und Artikel-Aliase zurücksetzen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:83 | ||||
| msgid "Reset only empty aliases" | ||||
| msgstr "Nur leere Aliase zurücksetzen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:84 | ||||
| msgid "" | ||||
| "Only empty aliases will be reset, existing aliases, e. g. manually set " | ||||
| "aliases, will not be changed." | ||||
| msgstr "" | ||||
| "Nur leere Kategorie-/Artikelaliase initial setzen<br>Vorhandene Aliase, z.B. " | ||||
| "vorher manuell gesetze Aliase werden nicht geändert." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:85 | ||||
| msgid "Reset all aliases" | ||||
| msgstr "Alle Aliase zurücksetzen" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:86 | ||||
| msgid "" | ||||
| "Reset all category-/article aliases. Existing aliases will be overwritten." | ||||
| msgstr "" | ||||
| "Alle Kategorie-/Artikelaliase neu setzen.<br>Vorhandene Aliase werden " | ||||
| "überschrieben." | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:88 | ||||
| msgid "" | ||||
| "This process could require some time depending on amount of categories/" | ||||
| "articles.<br>The aliases will not contain the configured plugin separators, " | ||||
| "but the CONTENIDO default separators '/' und '-', e. g. '/category-word/" | ||||
| "article-word'.<br>Execution of this function ma be helpful to prepare all or " | ||||
| "empty aliases for the usage by the plugin." | ||||
| msgstr "" | ||||
| "Dieser Prozess kann je nach Anzahl der Kategorien/Artikel etwas Zeit in " | ||||
| "Anspruch nehmen.<br>\n" | ||||
| "Die Aliase erhalten nicht die oben konfigurierten Separatoren, sondern die " | ||||
| "CONTENIDO-Standardseparatoren '/' und '-', z. B. '/category-word/article-" | ||||
| "word'.<br>\n" | ||||
| "Das Ausführen dieser Funktion kann Hilfreich sein, um sämtliche oder nur " | ||||
| "leere Aliase nachträglich auf die Verwendung mit dem Plugin anzupassen." | ||||
| 
 | ||||
| #: includes/config.plugin.php:71 | ||||
| msgid "Advanced Mod Rewrite" | ||||
| msgstr "Advanced Mod Rewrite" | ||||
| 
 | ||||
| #: includes/config.plugin.php:72 | ||||
| msgid "Advanced Mod Rewrite functions" | ||||
| msgstr "Advanced Mod Rewrite Funktionen" | ||||
| 
 | ||||
| #: includes/config.plugin.php:73 | ||||
| msgid "Advanced Mod Rewrite test" | ||||
| msgstr "Advanced Mod Rewrite Test" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_controller_abstract.php:107 | ||||
| msgid "More informations" | ||||
| msgstr "Weitere Informationen" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:65 | ||||
| msgid "" | ||||
| "The root directory has a invalid format, alowed are the chars [a-zA-Z0-9\\-_" | ||||
| "\\/\\.]" | ||||
| msgstr "" | ||||
| "Das Rootverzeichnis hat ein ungültiges Format, erlaubt sind die Zeichen [a-" | ||||
| "zA-Z0-9\\-_\\/\\.]" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:72 | ||||
| #, php-format | ||||
| msgid "The specified directory '%s' does not exists" | ||||
| msgstr "Das angegebene Verzeichnis '%s' existiert nicht" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:79 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "The specified directory '%s' does not exists in DOCUMENT_ROOT '%s'. This " | ||||
| "could happen, if clients DOCUMENT_ROOT differs from CONTENIDO backends " | ||||
| "DOCUMENT_ROOT. However, the setting will be taken over because of disabled " | ||||
| "check." | ||||
| msgstr "" | ||||
| "Das angegebene Verzeichnis '%s' existiert nicht im DOCUMENT_ROOT '%s'. Das " | ||||
| "kann vorkommen, wenn das DOCUMENT_ROOT des Mandanten vom CONTENIDO Backend " | ||||
| "DOCUMENT_ROOT abweicht. Die Einstellung wird dennoch übernommen, da die " | ||||
| "Überprüfung abgeschaltet wurde." | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:182 | ||||
| #, php-format | ||||
| msgid "Please specify separator (%s) for category" | ||||
| msgstr "Bitte Trenner (%s) für Kategoriewörter angeben" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:187 | ||||
| #, php-format | ||||
| msgid "Invalid separator for category, allowed one of following characters: %s" | ||||
| msgstr "Trenner für Kategorie ist ungültig, erlaubt ist eines der Zeichen: %s" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:194 | ||||
| #, php-format | ||||
| msgid "Please specify separator (%s) for category words" | ||||
| msgstr "Bitte Trenner (%s) für Kategorie angeben" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:199 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "Invalid separator for category words, allowed one of following characters: %s" | ||||
| msgstr "Trenner für Kategorie ist ungültig, erlaubt ist eines der Zeichen: %s" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:206 | ||||
| #, php-format | ||||
| msgid "Please specify separator (%s) for article" | ||||
| msgstr "Bitte Trenner (%s) für Kategoriewörter angeben" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:211 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "Invalid separator for article, allowed is one of following characters: %s" | ||||
| msgstr "Trenner für Kategorie ist ungültig, erlaubt ist eines der Zeichen: %s" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:218 | ||||
| #, php-format | ||||
| msgid "Please specify separator (%s) for article words" | ||||
| msgstr "Bitte Trenner (%s) für Kategorie angeben" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:223 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "Invalid separator for article words, allowed is one of following characters: " | ||||
| "%s" | ||||
| msgstr "Trenner für Kategorie ist ungültig, erlaubt ist eines der Zeichen: %s" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:230 | ||||
| msgid "Separator for category and category words must not be identical" | ||||
| msgstr "Trenner für Kategorie und Kategoriewörter dürfen nicht identisch sein" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:235 | ||||
| msgid "Separator for category and article words must not be identical" | ||||
| msgstr "Separator for category and article words must not be identical" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:240 | ||||
| msgid "Separator for category-article and article words must not be identical" | ||||
| msgstr "" | ||||
| "Trenner für Kategorie-Artikel und Artikelwörter dürfen nicht identisch sein" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:257 | ||||
| msgid "" | ||||
| "The file extension has a invalid format, allowed are the chars \\.([a-zA-" | ||||
| "Z0-9\\-_\\/])" | ||||
| msgstr "" | ||||
| "Das Rootverzeichnis hat ein ungültiges Format, erlaubt sind die Zeichen [a-" | ||||
| "zA-Z0-9\\-_\\/\\.]" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:271 | ||||
| msgid "Value has to be numeric." | ||||
| msgstr "Wert muss numerisch sein." | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:275 | ||||
| msgid "Value has to be between 0 an 100." | ||||
| msgstr "Wert muss zwischen 0 und 100 sein." | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:292 | ||||
| msgid "" | ||||
| "The article name has a invalid format, allowed are the chars /^[a-zA-Z0-9\\-_" | ||||
| "\\/\\.]*$/" | ||||
| msgstr "" | ||||
| "Das Rootverzeichnis hat ein ungültiges Format, erlaubt sind die Zeichen [a-" | ||||
| "zA-Z0-9\\-_\\/\\.]" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:355 | ||||
| msgid "Please check your input" | ||||
| msgstr "Bitte überprüfen Sie ihre Eingaben" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:365 | ||||
| msgid "Configuration has <b>not</b> been saved, because of enabled debugging" | ||||
| msgstr "Konfiguration wurde <b>nicht</b> gespeichert, weil debugging aktiv ist" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:373 | ||||
| msgid "Configuration has been saved" | ||||
| msgstr "Die Konfiguration wurde gespeichert" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:379 | ||||
| #, php-format | ||||
| msgid "Configuration could not saved. Please check write permissions for %s " | ||||
| msgstr "" | ||||
| "Konfiguration konnte nicht gespeichert werden. Überprüfen Sie bitte die " | ||||
| "Schreibrechte für %s" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:412 | ||||
| msgid "" | ||||
| "Your Contenido installation runs with the setting 'is_start_compatible'. " | ||||
| "This plugin will not work properly in this mode.<br />Please check following " | ||||
| "topic in Contenido forum to change this:<br /><br /><a href='http://forum." | ||||
| "contenido.org/viewtopic.php?t=32530' class='blue' " | ||||
| "target='_blank'>is_start_compatible auf neue Version umstellen</a>" | ||||
| msgstr "" | ||||
| "Ihre Contenido-Installation läuft mit der Einstellung 'is_start_compatible'. " | ||||
| "Dieses Plugin wird mit dieser Einstellung nicht wie gewünscht funktionieren." | ||||
| "<br />Bitte überprüfen Sie folngenden Beitrag im Contenido Forum, um dies zu " | ||||
| "ändern:<br /><br /><a href='http://forum.contenido.org/viewtopic.php?" | ||||
| "t=32530' class='blue' target='_blank'>is_start_compatible auf neue Version " | ||||
| "umstellen</a>" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:420 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "It seems as if some categories don't have a set 'urlpath' entry in the " | ||||
| "database. Please reset empty aliases in %sFunctions%s area." | ||||
| msgstr "" | ||||
| "Es scheint so zu sein, als ob zu einigen Kategorien die Datenbank-Einträge " | ||||
| "für 'urlpath' fehlen. Bitte setzen Sie leere Aliase unter %sFunktionen%s " | ||||
| "zurück." | ||||
| 
 | ||||
| #~ msgid "No Client selected" | ||||
| #~ msgstr "Kein Mandant ausgewählt" | ||||
							
								
								
									
										744
									
								
								locale/mod_rewrite.pot
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										744
									
								
								locale/mod_rewrite.pot
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,744 @@ | |||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||||
| # | ||||
| #, fuzzy | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: PACKAGE VERSION\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2017-07-15 18:37+0200\n" | ||||
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | ||||
| "Language: \n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=CHARSET\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:177 | ||||
| msgid "Version" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:178 | ||||
| msgid "Author" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:179 | ||||
| msgid "E-Mail to author" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:180 | ||||
| msgid "Plugin page" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:181 | ||||
| msgid "Visit plugin page" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:182 | ||||
| msgid "opens page in new window" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:183 | ||||
| msgid "CONTENIDO forum" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:184 | ||||
| msgid "Plugin thread in CONTENIDO forum" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:185 | ||||
| msgid "Plugin settings" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:186 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:87 | ||||
| msgid "Note" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:189 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "The .htaccess file could not found either in CONTENIDO installation " | ||||
| "directory nor in client directory.<br>It should set up in %sFunctions%s " | ||||
| "area, if needed." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:192 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "Found some category and/or article aliases. It is recommended to run the " | ||||
| "reset function in %sFunctions%s area, if needed." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:195 | ||||
| msgid "Enable Advanced Mod Rewrite" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:197 | ||||
| msgid "" | ||||
| "Disabling of plugin does not result in disabling mod rewrite module of the " | ||||
| "web server - This means,<br> all defined rules in the .htaccess are still " | ||||
| "active and could create unwanted side effects.<br><br>Apache mod rewrite " | ||||
| "could be enabled/disabled by setting the RewriteEngine directive.<br>Any " | ||||
| "defined rewrite rules could remain in the .htaccess and they will not " | ||||
| "processed,<br>if the mod rewrite module is disabled" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:199 | ||||
| msgid "Example" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:201 | ||||
| msgid "" | ||||
| "# enable apache mod rewrite module\n" | ||||
| "RewriteEngine on\n" | ||||
| "\n" | ||||
| "# disable apache mod rewrite module\n" | ||||
| "RewriteEngine off" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:203 | ||||
| msgid "Path to .htaccess from DocumentRoot" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:204 | ||||
| msgid "" | ||||
| "Type '/' if the .htaccess file lies inside the wwwroot (DocumentRoot) folder." | ||||
| "<br>Type the path to the subfolder fromm wwwroot, if CONTENIDO is installed " | ||||
| "in a subfolder within the wwwroot<br>(e. g. http://domain/mycontenido -> " | ||||
| "path = '/mycontenido/')" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:206 | ||||
| msgid "Check path to .htaccess" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:207 | ||||
| msgid "" | ||||
| "The path will be checked, if this option is enabled.<br>But this could " | ||||
| "result in an error in some cases, even if the specified path is valid " | ||||
| "and<br>clients DocumentRoot differs from CONTENIDO backend DocumentRoot." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:209 | ||||
| msgid "Should the name of root category be displayed in the URL?" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:210 | ||||
| msgid "Start from root category" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:211 | ||||
| msgid "" | ||||
| "If enabled, the name of the root category (e. g. 'Mainnavigation' in a " | ||||
| "CONTENIDO default installation), will be preceded to the URL." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:213 | ||||
| msgid "Are several clients maintained in one directory?" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:214 | ||||
| msgid "Prepend client to the URL" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:215 | ||||
| msgid "Use client name instead of the id" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:217 | ||||
| msgid "" | ||||
| "Should the language appear in the URL (required for multi language websites)?" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:218 | ||||
| msgid "Prepend language to the URL" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:219 | ||||
| msgid "Use language name instead of the id" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:221 | ||||
| msgid "" | ||||
| "Configure your own separators with following 4 settings<br>to control " | ||||
| "generated URLs to your own taste" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:222 | ||||
| msgid "" | ||||
| "www.domain.com/category1-category2.articlename.html\n" | ||||
| "www.domain.com/category1/category2-articlename.html\n" | ||||
| "www.domain.com/category.name1~category2~articlename.html\n" | ||||
| "www.domain.com/category_name1-category2-articlename.foo" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:223 | ||||
| msgid "Category separator has to be different from category-word separator" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:224 | ||||
| msgid "" | ||||
| "# Example: Category separator (/) and category-word separator (_)\n" | ||||
| "category_one/category_two/articlename.html" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:225 | ||||
| msgid "Category separator has to be different from article-word separator" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:226 | ||||
| msgid "" | ||||
| "# Example: Category separator (/) and article-word separator (-)\n" | ||||
| "category_one/category_two/article-description.html" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:227 | ||||
| msgid "" | ||||
| "Category-article separator has to be different from article-word separator" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:228 | ||||
| msgid "" | ||||
| "# Example: Category-article separator (/) and article-word separator (-)\n" | ||||
| "category_one/category_two/article-description.html" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:230 | ||||
| msgid "Category separator (delemiter between single categories)" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:231 | ||||
| #: includes/include.mod_rewrite_content.php:232 | ||||
| #, php-format | ||||
| msgid "(possible values: %s)" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:233 | ||||
| msgid "Category-word separator (delemiter between category words)" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:234 | ||||
| msgid "" | ||||
| "Category-article separator (delemiter between category-block and article)" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:235 | ||||
| msgid "Article-word separator (delemiter between article words)" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:237 | ||||
| msgid "Append article name to URLs" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:238 | ||||
| msgid "Append article name always to URLs (even at URLs to categories)" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:239 | ||||
| msgid "Default article name without extension" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:240 | ||||
| msgid "" | ||||
| "e. g. 'index' for index.ext<br>In case of selected 'Append article name " | ||||
| "always to URLs' option and a empty field,<br>the name of the start article " | ||||
| "will be used" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:242 | ||||
| msgid "File extension at the end of the URL" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:243 | ||||
| msgid "" | ||||
| "Specification of file extension with a preceded dot<br>e.g. '.html' for " | ||||
| "http://host/foo/bar.html" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:244 | ||||
| msgid "" | ||||
| "It's strongly recommended to specify a extension here,<br>if the option " | ||||
| "'Append article name always to URLs' was not selected.<br><br>Otherwise URLs " | ||||
| "to categories and articles would have the same format<br>which may result in " | ||||
| "unresolvable categories/articles in some cases." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:245 | ||||
| msgid "" | ||||
| "It's necessary to specify a file extension at the moment, due do existing " | ||||
| "issues, which are not solved until yet. An not defined extension may result " | ||||
| "in invalid article detection in some cases." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:247 | ||||
| msgid "Should the URLs be written in lower case?" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:248 | ||||
| msgid "URLs in lower case" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:250 | ||||
| msgid "Duplicated content" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:251 | ||||
| msgid "Prevent duplicated content" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:253 | ||||
| msgid "" | ||||
| "Depending on configuration, pages could be found thru different URLs." | ||||
| "<br>Enabling of this option prevents this. Examples for duplicated content" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:254 | ||||
| msgid "" | ||||
| "Name of the root category in the URL: Feasible is /maincategory/subcategory/ " | ||||
| "and /subcategory/\n" | ||||
| "Language in the URL: Feasible is /german/category/ and /1/category/\n" | ||||
| "Client in the URL: Feasible is /client/category/ und /1/category/" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:257 | ||||
| msgid "Percentage for similar category paths in URLs" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:258 | ||||
| msgid "" | ||||
| "This setting refers only to the category path of a URL. If AMR is " | ||||
| "configured<br>to prepend e. g. the root category, language and/or client to " | ||||
| "the URL,<br>the specified percentage will not applied to those parts of the " | ||||
| "URL.<br>An incoming URL will be cleaned from those values and the remaining " | ||||
| "path (urlpath of the category)<br>will be checked against similarities." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:259 | ||||
| msgid "" | ||||
| "100 = exact match with no tolerance\n" | ||||
| "85  = paths with little errors will match to similar ones\n" | ||||
| "0   = matching will work even for total wrong paths" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:261 | ||||
| msgid "Redirect in case of invalid articles" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:262 | ||||
| msgid "Redirect to error page in case of invaid articles" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:263 | ||||
| msgid "The start page will be displayed if this option is not enabled" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:265 | ||||
| msgid "Moment of URL generation" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:266 | ||||
| msgid "a.) During the output of HTML code of the page" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:267 | ||||
| msgid "" | ||||
| "Clean-URLs will be generated during page output. Modules/Plugins are able to " | ||||
| "generate URLs to frontend<br>as usual as in previous CONTENIDO versions " | ||||
| "using a format like 'front_content.php?idcat=1&idart=2'.<br>The URLs " | ||||
| "will be replaced by the plugin to Clean-URLs before sending the HTML output." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:268 | ||||
| msgid "Differences to variant b.)" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:269 | ||||
| msgid "" | ||||
| "Still compatible to old modules/plugins, since no changes in codes are " | ||||
| "required\n" | ||||
| "All occurring URLs in HTML code, even those set by wysiwyg, will be switched " | ||||
| "to Clean-URLs\n" | ||||
| "All URLs will usually be collected and converted to Clean-URLs at once." | ||||
| "<br>Doing it this way reduces the amount of executed database significantly." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:272 | ||||
| msgid "b.) In modules or plugins" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:273 | ||||
| msgid "" | ||||
| "By using this option, all Clean-URLs will be generated directly in module or " | ||||
| "plugins.<br>This means, all areas in modules/plugins, who generate internal " | ||||
| "URLs to categories/articles, have to be adapted manually.<br>All Clean-URLs " | ||||
| "have to be generated by using following function:" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:274 | ||||
| msgid "" | ||||
| "# structure of a normal url\n" | ||||
| "$url = 'front_content.php?idart=123&lang=2&client=1';\n" | ||||
| "\n" | ||||
| "# creation of a url by using the CONTENIDOs Url-Builder (since 4.8.9),\n" | ||||
| "# wich expects the parameter as a assoziative array\n" | ||||
| "$params = array('idart'=>123, 'lang'=>2, 'client'=>1);\n" | ||||
| "$newUrl = Contenido_Url::getInstance()->build($params);" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:275 | ||||
| msgid "Differences to variant a.)" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:276 | ||||
| msgid "" | ||||
| "The default way to generate URLs to fronend pages\n" | ||||
| "Each URL in modules/plugins has to be generated by UriBuilder\n" | ||||
| "Each generated Clean-Url requires a database query" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:279 | ||||
| msgid "Routing" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:280 | ||||
| msgid "Routing definitions for incoming URLs" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:281 | ||||
| msgid "Type one routing definition per line as follows:" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:282 | ||||
| msgid "" | ||||
| "# {incoming_url}>>>{new_url}\n" | ||||
| "/incoming_url/name.html>>>new_url/new_name.html\n" | ||||
| "\n" | ||||
| "# route a specific incoming url to a new page\n" | ||||
| "/campaign/20_percent_on_everything_except_animal_food.html>>>front_content." | ||||
| "php?idcat=23\n" | ||||
| "\n" | ||||
| "# route request to wwwroot to a specific page\n" | ||||
| "/>>>front_content.php?idart=16" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:283 | ||||
| msgid "" | ||||
| "The routing does not sends a HTTP header redirection to the destination URL, " | ||||
| "the redirection will happen internally by<br>replacing the detected incoming " | ||||
| "URL against the new destination URL (overwriting of article- categoryid)\n" | ||||
| "Incoming URLs can point to non existing resources (category/article), but " | ||||
| "the desttination URLs should point<br>to valid CONTENIDO articles/" | ||||
| "categories\n" | ||||
| "Destination URLs should point to real URLs to categories/articles,<br>e. g." | ||||
| "front_content.php?idcat=23 or front_content.php?idart=34\n" | ||||
| "The language id should attached to the URL in multi language sites<br>e. g. " | ||||
| "front_content.php?idcat=23&lang=1\n" | ||||
| "The client id should attached to the URL in multi client sites sharing the " | ||||
| "same folder<br>e. g. front_content.php?idcat=23&client=2\n" | ||||
| "The destination URL should not start with '/' or './' (wrong: /front_content." | ||||
| "php, correct: front_content.php)" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:286 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:90 | ||||
| msgid "Discard changes" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_content.php:287 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:91 | ||||
| msgid "Save changes" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:55 | ||||
| msgid "" | ||||
| "Define options to genereate the URLs by using the form below and run the " | ||||
| "test." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:56 | ||||
| msgid "Parameter to use" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:57 | ||||
| msgid "Number of URLs to generate" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:58 | ||||
| msgid "Run test" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:60 | ||||
| msgid "" | ||||
| "{pref}<strong>{name}</strong><br>{pref}Builder in:    {url_in}<br>{pref}" | ||||
| "Builder out:   {url_out}<br>{pref}<span style='color:{color}'>Resolved URL:  " | ||||
| "{url_res}</span><br>{pref}Resolver err:  {err}<br>{pref}Resolved data: {data}" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contenttest.php:62 | ||||
| msgid "" | ||||
| "Duration of test run: {time} seconds.<br>Number of processed URLs: {num_urls}" | ||||
| "<br><span style='color:green'>Successful resolved: {num_success}</" | ||||
| "span><br><span style='color:red'>Errors during resolving: {num_fail}</span></" | ||||
| "strong>" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:61 | ||||
| msgid "Plugin functions" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:63 | ||||
| msgid "Copy/Download .htaccess template" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:64 | ||||
| msgid "Select .htaccess template" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:65 | ||||
| msgid "Restrictive .htaccess" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:66 | ||||
| msgid "Simple .htaccess" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:67 | ||||
| msgid "" | ||||
| "Contains rules with restrictive settings.<br>All requests pointing to " | ||||
| "extension avi, css, doc, flv, gif, gzip, ico, jpeg, jpg, js, mov, <br>mp3, " | ||||
| "pdf, png, ppt, rar, txt, wav, wmv, xml, zip, will be excluded vom rewriting." | ||||
| "<br>Remaining requests will be rewritten to front_content.php,<br>except " | ||||
| "requests to 'contenido/', 'setup/', 'cms/upload', 'cms/front_content.php', " | ||||
| "etc.<br>Each resource, which has to be excluded from rewriting must be " | ||||
| "specified explicitly." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:69 | ||||
| msgid "" | ||||
| "Contains a simple collection of rules. Each requests pointing to valid " | ||||
| "symlinks, folders or<br>files, will be excluded from rewriting. Remaining " | ||||
| "requests will be rewritten to front_content.php" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:71 | ||||
| msgid "and copy to" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:72 | ||||
| msgid "CONTENIDO installation directory" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:73 | ||||
| msgid "" | ||||
| "Copy the selected .htaccess template into CONTENIDO installation " | ||||
| "directory<br><br>    {CONTENIDO_FULL_PATH}.<br><br>This " | ||||
| "is the recommended option for a CONTENIDO installation with one or more " | ||||
| "clients<br>who are running on the same domain." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:75 | ||||
| msgid "client directory" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:76 | ||||
| msgid "" | ||||
| "Copy the selected .htaccess template into client's directory<br><br> " | ||||
| "   {CLIENT_FULL_PATH}.<br><br>This is the recommended option " | ||||
| "for a multiple client system<br>where each client has it's own domain/" | ||||
| "subdomain" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:78 | ||||
| msgid "or" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:79 | ||||
| msgid "Download" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:80 | ||||
| msgid "" | ||||
| "Download selected .htaccess template to copy it to the destination " | ||||
| "folder<br>or to take over the settings manually." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:82 | ||||
| msgid "Reset category-/ and article aliases" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:83 | ||||
| msgid "Reset only empty aliases" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:84 | ||||
| msgid "" | ||||
| "Only empty aliases will be reset, existing aliases, e. g. manually set " | ||||
| "aliases, will not be changed." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:85 | ||||
| msgid "Reset all aliases" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:86 | ||||
| msgid "" | ||||
| "Reset all category-/article aliases. Existing aliases will be overwritten." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/include.mod_rewrite_contentexpert.php:88 | ||||
| msgid "" | ||||
| "This process could require some time depending on amount of categories/" | ||||
| "articles.<br>The aliases will not contain the configured plugin separators, " | ||||
| "but the CONTENIDO default separators '/' und '-', e. g. '/category-word/" | ||||
| "article-word'.<br>Execution of this function ma be helpful to prepare all or " | ||||
| "empty aliases for the usage by the plugin." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/config.plugin.php:71 | ||||
| msgid "Advanced Mod Rewrite" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/config.plugin.php:72 | ||||
| msgid "Advanced Mod Rewrite functions" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: includes/config.plugin.php:73 | ||||
| msgid "Advanced Mod Rewrite test" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_controller_abstract.php:107 | ||||
| msgid "More informations" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:65 | ||||
| msgid "" | ||||
| "The root directory has a invalid format, alowed are the chars [a-zA-Z0-9\\-_" | ||||
| "\\/\\.]" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:72 | ||||
| #, php-format | ||||
| msgid "The specified directory '%s' does not exists" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:79 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "The specified directory '%s' does not exists in DOCUMENT_ROOT '%s'. This " | ||||
| "could happen, if clients DOCUMENT_ROOT differs from CONTENIDO backends " | ||||
| "DOCUMENT_ROOT. However, the setting will be taken over because of disabled " | ||||
| "check." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:182 | ||||
| #, php-format | ||||
| msgid "Please specify separator (%s) for category" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:187 | ||||
| #, php-format | ||||
| msgid "Invalid separator for category, allowed one of following characters: %s" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:194 | ||||
| #, php-format | ||||
| msgid "Please specify separator (%s) for category words" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:199 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "Invalid separator for category words, allowed one of following characters: %s" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:206 | ||||
| #, php-format | ||||
| msgid "Please specify separator (%s) for article" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:211 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "Invalid separator for article, allowed is one of following characters: %s" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:218 | ||||
| #, php-format | ||||
| msgid "Please specify separator (%s) for article words" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:223 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "Invalid separator for article words, allowed is one of following characters: " | ||||
| "%s" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:230 | ||||
| msgid "Separator for category and category words must not be identical" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:235 | ||||
| msgid "Separator for category and article words must not be identical" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:240 | ||||
| msgid "Separator for category-article and article words must not be identical" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:257 | ||||
| msgid "" | ||||
| "The file extension has a invalid format, allowed are the chars \\.([a-zA-" | ||||
| "Z0-9\\-_\\/])" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:271 | ||||
| msgid "Value has to be numeric." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:275 | ||||
| msgid "Value has to be between 0 an 100." | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:292 | ||||
| msgid "" | ||||
| "The article name has a invalid format, allowed are the chars /^[a-zA-Z0-9\\-_" | ||||
| "\\/\\.]*$/" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:355 | ||||
| msgid "Please check your input" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:365 | ||||
| msgid "Configuration has <b>not</b> been saved, because of enabled debugging" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:373 | ||||
| msgid "Configuration has been saved" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:379 | ||||
| #, php-format | ||||
| msgid "Configuration could not saved. Please check write permissions for %s " | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:412 | ||||
| msgid "" | ||||
| "Your Contenido installation runs with the setting 'is_start_compatible'. " | ||||
| "This plugin will not work properly in this mode.<br />Please check following " | ||||
| "topic in Contenido forum to change this:<br /><br /><a href='http://forum." | ||||
| "contenido.org/viewtopic.php?t=32530' class='blue' " | ||||
| "target='_blank'>is_start_compatible auf neue Version umstellen</a>" | ||||
| msgstr "" | ||||
| 
 | ||||
| #: classes/controller/class.modrewrite_content_controller.php:420 | ||||
| #, php-format | ||||
| msgid "" | ||||
| "It seems as if some categories don't have a set 'urlpath' entry in the " | ||||
| "database. Please reset empty aliases in %sFunctions%s area." | ||||
| msgstr "" | ||||
							
								
								
									
										24
									
								
								locale/potfiles.txt
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										24
									
								
								locale/potfiles.txt
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,24 @@ | |||
| ./includes/include.mod_rewrite_content.php | ||||
| ./includes/include.mod_rewrite_contenttest.php | ||||
| ./includes/functions.mod_rewrite.php | ||||
| ./includes/include.mod_rewrite_contentexpert.php | ||||
| ./includes/front_content_controller.php | ||||
| ./includes/config.mod_rewrite_default.php | ||||
| ./includes/include.mod_rewrite_content_top.php | ||||
| ./includes/config.plugin.php | ||||
| ./external/aToolTip/demos.html | ||||
| ./templates/content.html | ||||
| ./templates/contenttest.html | ||||
| ./templates/content_top.html | ||||
| ./templates/contentexpert.html | ||||
| ./classes/controller/class.modrewrite_contenttest_controller.php | ||||
| ./classes/controller/class.modrewrite_contentexpert_controller.php | ||||
| ./classes/controller/class.modrewrite_controller_abstract.php | ||||
| ./classes/controller/class.modrewrite_content_controller.php | ||||
| ./classes/class.modrewritedebugger.php | ||||
| ./classes/class.modrewritetest.php | ||||
| ./classes/class.modrewrite.php | ||||
| ./classes/class.modrewriteurlstack.php | ||||
| ./classes/class.modrewritebase.php | ||||
| ./classes/class.modrewritecontroller.php | ||||
| ./classes/class.modrewriteurlutil.php | ||||
							
								
								
									
										96
									
								
								scripts/mod_rewrite.js
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										96
									
								
								scripts/mod_rewrite.js
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,96 @@ | |||
| /** | ||||
|  * Project: | ||||
|  * CONTENIDO Content Management System | ||||
|  * | ||||
|  * Description: | ||||
|  * Plugin Advanced Mod Rewrite JavaScript functions. | ||||
|  * | ||||
|  * Requirements: | ||||
|  * @con_php_req 5.0 | ||||
|  * | ||||
|  * | ||||
|  * @package    CONTENIDO Plugins | ||||
|  * @version    0.1 | ||||
|  * @author     Murat Purc <murat@purc.de> | ||||
|  * @copyright  four for business AG <www.4fb.de> | ||||
|  * @license    http://www.contenido.org/license/LIZENZ.txt
 | ||||
|  * @link       http://www.4fb.de
 | ||||
|  * @link       http://www.contenido.org
 | ||||
|  * @since      file available since CONTENIDO release 4.9.0 | ||||
|  * | ||||
|  * {@internal | ||||
|  *   created  2011-04-11 | ||||
|  * | ||||
|  *   $Id: mod_rewrite.js 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * }} | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| var mrPlugin = { | ||||
|     lng: { | ||||
|         more_informations: "More informations" | ||||
|     }, | ||||
| 
 | ||||
|     toggle: function(id) { | ||||
|         // do some animation ;-)
 | ||||
|         $('#' + id).slideToggle("slow"); | ||||
|     }, | ||||
| 
 | ||||
|     showReadme: function() { | ||||
|     }, | ||||
| 
 | ||||
|     initializeSettingsPage: function() { | ||||
|         $(document).ready(function() { | ||||
|             $("#mr_use_language").change(function() { | ||||
|                 if (true == $(this).attr("checked")) { | ||||
|                     $("#mr_use_language_name").removeAttr("disabled"); | ||||
|                 } else { | ||||
|                     $("#mr_use_language_name").attr("disabled", "disabled"); | ||||
|                 } | ||||
|             }); | ||||
| 
 | ||||
|             $("#mr_use_client").change(function() { | ||||
|                 if (true == $(this).attr("checked")) { | ||||
|                     $("#mr_use_client_name").removeAttr("disabled"); | ||||
|                 } else { | ||||
|                     $("#mr_use_client_name").attr("disabled", "disabled"); | ||||
|                 } | ||||
|             }); | ||||
| 
 | ||||
|             $("#mr_add_startart_name_to_url").change(function() { | ||||
|                 if (true == $(this).attr("checked")) { | ||||
|                     $("#mr_default_startart_name").removeAttr("disabled") | ||||
|                                                   .removeClass("disabled"); | ||||
|                 } else { | ||||
|                     $("#mr_default_startart_name").attr("disabled", "disabled") | ||||
|                                                   .addClass("disabled"); | ||||
|                 } | ||||
|             }); | ||||
| 
 | ||||
|             mrPlugin._initializeTooltip(); | ||||
|         }); | ||||
|     }, | ||||
| 
 | ||||
|     initializeExterpPage: function() { | ||||
|         $(document).ready(function() { | ||||
|             mrPlugin._initializeTooltip(); | ||||
|         }); | ||||
|     }, | ||||
| 
 | ||||
|     _initializeTooltip: function() { | ||||
|         $(".mrPlugin a.i-link").each(function () { | ||||
|             $(this).attr("href", "javascript:void(0);"); | ||||
|             $(this).attr("title", mrPlugin.lng.more_informations); | ||||
|             var id = $(this).attr("id").substring(0, $(this).attr("id").indexOf("-link")); | ||||
|             $(this).aToolTip({ | ||||
|                 clickIt:    true, | ||||
|                 xOffset:    -20, | ||||
|                 yOffset:    4, | ||||
|                 outSpeed:   250, | ||||
|                 tipContent: $("#" + id).html() | ||||
|             }); | ||||
|         }); | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
							
								
								
									
										101
									
								
								styles/styles.css
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										101
									
								
								styles/styles.css
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,101 @@ | |||
| /** | ||||
|  * Project:  | ||||
|  * CONTENIDO Content Management System | ||||
|  *  | ||||
|  * Description:  | ||||
|  * Plugin Advanced Mod Rewrite JavaScript functions. | ||||
|  *  | ||||
|  * Requirements:  | ||||
|  * @con_php_req 5.0 | ||||
|  *  | ||||
|  * | ||||
|  * @package    CONTENIDO Plugins | ||||
|  * @version    0.1 | ||||
|  * @author     Murat Purc <murat@purc.de> | ||||
|  * @copyright  four for business AG <www.4fb.de> | ||||
|  * @license    http://www.contenido.org/license/LIZENZ.txt | ||||
|  * @link       http://www.4fb.de | ||||
|  * @link       http://www.contenido.org | ||||
|  * @since      file available since CONTENIDO release 4.9.0 | ||||
|  *  | ||||
|  * {@internal  | ||||
|  *   created  2011-04-11 | ||||
|  * | ||||
|  *   $Id: styles.css 128 2019-07-03 11:58:28Z oldperl $: | ||||
|  * }} | ||||
|  *  | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * mrPlugin main page | ||||
|  * @section mrPlugin | ||||
|  */ | ||||
| 
 | ||||
| body.mrPlugin {margin:10px;} | ||||
| 
 | ||||
| .mrPlugin a {color:#0060b1;} | ||||
| .mrPlugin strong {font-weight:bold;} | ||||
| .mrPlugin img {border:none;} | ||||
| 
 | ||||
| .mrPlugin pre.example {padding:3px 5px; border:1px #000 dashed; width:60%; min-width:650px;} | ||||
| 
 | ||||
| .mrPlugin li {padding-bottom:0.4em;} | ||||
| 
 | ||||
| .mrPlugin span.note {color:red;} | ||||
| .mrPlugin input.disabled {background-color:#dadada;} | ||||
| 
 | ||||
| .mrPlugin .altBg {background-color:#f1f1f1;} | ||||
| .mrPlugin .aToolTip ul {padding-left:1em;} | ||||
| .mrPlugin .clear {clear:both; font-size:0pt !important; height:0pt !important; line-height:0pt !important;} | ||||
| .mrPlugin .blockLeft {display:block; float:left;} | ||||
| .mrPlugin .blockRight {display:block; float:right;} | ||||
| .mrPlugin .nodisplay {display:none;} | ||||
| 
 | ||||
| 
 | ||||
| /* Header box */ | ||||
| .mrPlugin .headerBox {background-color:#e2e2e2; border:1px solid #b5b5b5; padding:6px; margin-bottom:10px;} | ||||
| .mrPlugin .headerBox p {margin:0; padding:0;} | ||||
| .mrPlugin .headerBox ul {margin-bottom:0;} | ||||
| 
 | ||||
| 
 | ||||
| /* Content table */ | ||||
| .mrPlugin table#contenttable {border:0; border-top:1px; border-left:1px; border-bottom:1px; border-color:#b3b3b3; border-style:solid;} | ||||
| .mrPlugin table#contenttable th {font-weight:bold; text-align:left;} | ||||
| .mrPlugin table#contenttable tr {background-color:#fff;} | ||||
| .mrPlugin th, .mrPlugin td {vertical-align:top;} | ||||
| .mrPlugin td.col-I  {border:0; border-bottom:1px; border-right:1px; border-color:#b3b3b3; border-style:solid;} | ||||
| .mrPlugin td.col-II {border:0; border-bottom:1px; border-right:1px; border-color:#b3b3b3; border-style:solid;} | ||||
| 
 | ||||
| .mrPlugin tr.marked td {background-color:#f2b7a1;} | ||||
| 
 | ||||
| 
 | ||||
| /* Info button */ | ||||
| .mrPlugin a.infoButton, | ||||
| .mrPlugin a.infoButton:hover {display:block; float:left; width:16px; height:16px; background:transparent url(../../../images/info.gif) no-repeat; margin:0 0 0 5px;} | ||||
| .mrPlugin a.infoButton.v2, | ||||
| .mrPlugin a.infoButton:hover.v2 {margin-top:2px;} | ||||
| 
 | ||||
| 
 | ||||
| /* Plugininfo layer */ | ||||
| .mrPlugin .pluginInfo {} | ||||
| .mrPlugin .pluginInfo p {font-weight:bold; margin:0; padding:0;} | ||||
| .mrPlugin .pluginInfo ul {margin:0; padding:0; list-style-type:none;} | ||||
| .mrPlugin .pluginInfo li {margin:0; padding:0;} | ||||
| .mrPlugin .pluginInfo li.first {margin-top:0.6em;} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * mrPlugin test page | ||||
|  * @section mrPluginTest | ||||
|  */ | ||||
| 
 | ||||
| /** @extends body.mrPlugin */ | ||||
| body.mrPluginTest {} | ||||
| 
 | ||||
| .mrPluginTest .headerBox form {float:left; width:35%; background:#e2e2e2; margin:0; padding-top:10px;} | ||||
| .mrPluginTest .headerBox fieldset {margin-bottom:10px;} | ||||
| .mrPluginTest .headerBox fieldset p {margin:0;} | ||||
| .mrPluginTest .headerBox form .chk {width:24%; float:left;} | ||||
| .mrPluginTest a {font-family:monospace;} | ||||
							
								
								
									
										368
									
								
								templates/content.html
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										368
									
								
								templates/content.html
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,368 @@ | |||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | ||||
| <html> | ||||
| <head> | ||||
|     <title>mod_rewrite_content</title> | ||||
|     <meta http-equiv="expires" content="0"> | ||||
|     <meta http-equiv="cache-control" content="no-cache"> | ||||
|     <meta http-equiv="pragma" content="no-cache"> | ||||
|     <script type="text/javascript" src="scripts/jquery/jquery.js"></script> | ||||
|     <script type="text/javascript" src="plugins/mod_rewrite/external/aToolTip/js/atooltip.jquery.js"></script> | ||||
|     <script type="text/javascript" src="plugins/mod_rewrite/scripts/mod_rewrite.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="styles/contenido.css"> | ||||
|     <link rel="stylesheet" type="text/css" href="plugins/mod_rewrite/external/aToolTip/css/atooltip.css"> | ||||
|     <link rel="stylesheet" type="text/css" href="plugins/mod_rewrite/styles/styles.css"> | ||||
|     <script type="text/javascript"><!-- | ||||
|     // session-id | ||||
|     var sid = "{SESSID}"; | ||||
| 
 | ||||
|     // setup translation | ||||
|     mrPlugin.lng.more_informations = "{LNG_MORE_INFORMATIONS}"; | ||||
| 
 | ||||
|     // initialize page | ||||
|     mrPlugin.initializeSettingsPage(); | ||||
|     // --></script> | ||||
| </head> | ||||
| 
 | ||||
| <body class="mrPlugin"> | ||||
| 
 | ||||
| <div class="headerBox"> | ||||
|     <div class="pluginInfo"> | ||||
|         <div><span class="blockLeft">Plugin Advanced Mod Rewrite</span> | ||||
|             <a href="#" id="pluginInfoDetails-link" class="main i-link infoButton" title=""></a><div class="clear"></div></div> | ||||
|         <div id="pluginInfoDetails" style="display:none;"> | ||||
|             <ul class="list"> | ||||
|                 <li class="first"><strong>{LNG_AUTHOR}:</strong> Murat Purc, <a href="mailto:murat@purc.de" title="{LNG_MAIL_TO_AUTHOR}">murat@purc.de</a></li> | ||||
|                 <li><strong>{LNG_PLUGINPAGE}:</strong> <a href="http://www.purc.de/playground-coding-contenido_plugin_-_advanced_mod_rewrite-a.109.html" onclick="window.open(this.href); return false;" title="{LNG_VISIT_PLUGINPAGE} ({LNG_OPENS_IN_NEW_WINDOW})">{LNG_VISIT_PLUGINPAGE}</a></li> | ||||
|                 <li><strong>{LNG_CONTENIDO_FORUM}:</strong> <a href="http://forum.contenido.org/viewtopic.php?t=21578" onclick="window.open(this.href); return false;" title="{LNG_PLUGINTHREAD_IN_CONTENIDO_FORUM} ({LNG_OPENS_IN_NEW_WINDOW})">{LNG_PLUGINTHREAD_IN_CONTENIDO_FORUM}</a></li> | ||||
|             </ul> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
| 
 | ||||
| {CONTENT_BEFORE} | ||||
| 
 | ||||
| <form name="mr_configuration" id="mr_configuration" method="post" action="main.php"> | ||||
| 
 | ||||
|     <input type="hidden" name="contenido" value="{SESSID}"> | ||||
|     <input type="hidden" name="area" value="{AREA}"> | ||||
|     <input type="hidden" name="mr_action" value="save"> | ||||
|     <input type="hidden" name="frame" value="4"> | ||||
|     <input type="hidden" name="idclient" value="{IDCLIENT}"> | ||||
| 
 | ||||
| <table id="contenttable" cellspacing="0" cellpadding="3" border="0"> | ||||
| <colgroup> | ||||
|     <col width="30%"> | ||||
|     <col width="70%"> | ||||
| </colgroup> | ||||
| <tr style="background-color:#e2e2e2;"> | ||||
|     <th colspan="2" class="text_medium col-I" style="border-top:1px;">{LNG_PLUGIN_SETTINGS}</th> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- htaccess info / empty aliases --> | ||||
| <tr style="{HEADER_NOTES_CSS}" class="marked"> | ||||
|     <td colspan="2" class="text_medium col-I" style="padding:13px 3px;"> | ||||
|         <strong>{LNG_NOTE}</strong><br> | ||||
|         <p style="{HTACCESS_INFO_CSS}"> | ||||
|             {LNG_MSG_NO_HTACCESS_FOUND}<br> | ||||
|         </p> | ||||
|         <p style="{EMPTYALIASES_INFO_CSS}"> | ||||
|             {LNG_MSG_NO_EMPTYALIASES_FOUND}<br> | ||||
|         </p> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- enable/disable mod rewrite --> | ||||
| <tr> | ||||
|     <td colspan="2" class="text_medium col-I"> | ||||
|         <div class="blockLeft"> | ||||
|             <input type="checkbox" id="mr_use" name="use" value="1"{USE_CHK}> | ||||
|             <label for="mr_use">{LNG_ENABLE_AMR}</label> | ||||
|         </div> | ||||
|         <a href="#" id="enableInfo1-link" title="" class="main i-link infoButton v2"></a><div class="clear"></div> | ||||
|         <div id="enableInfo1" style="display:none;"> | ||||
|             <strong>{LNG_NOTE}</strong><br> | ||||
|             {LNG_MSG_ENABLE_AMR_INFO}<br> | ||||
|             <br> | ||||
|             <strong>{LNG_EXAMPLE}:</strong> | ||||
|             <pre class="example">{LNG_MSG_ENABLE_AMR_INFO_EXAMPLE}</pre> | ||||
|         </div> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- root dir --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_ROOTDIR}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         {ROOTDIR_ERROR} | ||||
|         <input class="text_medium blockLeft" type="text" name="rootdir" size="50" maxlength="64" value="{ROOTDIR}"> | ||||
|         <a href="#" id="rootdirInfo1-link" title="" class="main i-link infoButton"></a><div class="clear"></div> | ||||
|         <div id="rootdirInfo1" style="display:none;">{LNG_ROOTDIR_INFO}</div> | ||||
|         <br> | ||||
|         <div class="blockLeft"> | ||||
|             <input type="checkbox" id="mr_checkrootdir" name="checkrootdir" value="1"{CHECKROOTDIR_CHK}> | ||||
|             <label for="mr_checkrootdir">{LNG_CHECKROOTDIR}</label> | ||||
|         </div> | ||||
|         <a href="#" id="rootdirInfo2-link" title="" class="main i-link infoButton v2"></a><div class="clear"></div> | ||||
|         <div id="rootdirInfo2" style="display:none;">{LNG_CHECKROOTDIR_INFO}</div> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- use client/use client name --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_USE_CLIENT}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         <input type="checkbox" id="mr_use_client" name="use_client" value="1"{USE_CLIENT_CHK}> | ||||
|         <label for="mr_use_client">{LNG_USE_CLIENT_LBL}</label><br> | ||||
|         <br> | ||||
|         <input type="checkbox" id="mr_use_client_name" name="use_client_name" value="1"{USE_CLIENT_NAME_CHK}{USE_CLIENT_NAME_DISABLED}> | ||||
|         <label for="mr_use_client_name">{LNG_USE_CLIENT_NAME_LBL}</label><br> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- use language/use language name --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_USE_LANGUAGE}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         <input type="checkbox" id="mr_use_language" name="use_language" value="1"{USE_LANGUAGE_CHK}> | ||||
|         <label for="mr_use_language">{LNG_USE_LANGUAGE_LBL}</label><br> | ||||
|         <br> | ||||
|         <input type="checkbox" id="mr_use_language_name" name="use_language_name" value="1"{USE_LANGUAGE_NAME_CHK}{USE_LANGUAGE_NAME_DISABLED}> | ||||
|         <label for="mr_use_language_name">{LNG_USE_LANGUAGE_NAME_LBL}</label><br> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- start from root --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_STARTFROMROOT}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         <div class="blockLeft"> | ||||
|             <input type="checkbox" id="mr_startfromroot" name="startfromroot" value="1"{STARTFROMROOT_CHK}> | ||||
|             <label for="mr_startfromroot">{LNG_STARTFROMROOT_LBL}</label> | ||||
|         </div> | ||||
|         <a href="#" id="startFromRootInfo1-link" title="" class="main i-link infoButton v2"></a><div class="clear"></div> | ||||
|         <div id="startFromRootInfo1" style="display:none;">{LNG_STARTFROMROOT_INFO}</div> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- activate userdefined separator settings --> | ||||
| <tr> | ||||
|     <td colspan="2" class="text_medium col-I altBg"> | ||||
|         <strong class="blockLeft">{LNG_USERDEFINED_SEPARATORS_HEADER}</strong> | ||||
|         <a href="#" id="userdefSeparatorInfo1-link2" title="" class="main i-link infoButton"></a><div class="clear"></div> | ||||
|         <div id="userdefSeparatorInfo1" style="display:none;"> | ||||
|             <strong>{LNG_EXAMPLE}:</strong> | ||||
|             <pre class="example">{LNG_USERDEFINED_SEPARATORS_EXAMPLE}</pre> | ||||
| 
 | ||||
|             <strong>{LNG_NOTE}:</strong> | ||||
|             <ul> | ||||
|                 <li>{LNG_USERDEFINED_SEPARATORS_EXAMPLE_A} | ||||
|                     <pre class="example">{LNG_USERDEFINED_SEPARATORS_EXAMPLE_A_EXAMPLE}</pre> | ||||
|                 </li> | ||||
|                 <li>{LNG_USERDEFINED_SEPARATORS_EXAMPLE_B} | ||||
|                     <pre class="example">{LNG_USERDEFINED_SEPARATORS_EXAMPLE_B_EXAMPLE}</pre> | ||||
|                 </li> | ||||
|                 <li>{LNG_USERDEFINED_SEPARATORS_EXAMPLE_C} | ||||
|                     <pre class="example">{LNG_USERDEFINED_SEPARATORS_EXAMPLE_C_EXAMPLE}</pre> | ||||
|                 </li> | ||||
|             </ul> | ||||
|         </div> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <tr> | ||||
|     <td class="text_medium col-I altBg">{LNG_CATEGORY_SEPARATOR}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         {CATEGORY_SEPARATOR_ERROR} | ||||
|         <input class="text_medium" type="text" id="mr_category_seperator" name="category_seperator" size="5" maxlength="1" value="{CATEGORY_SEPARATOR}"{CATEGORY_SEPARATOR_ATTRIB}> | ||||
|         <small>{LNG_CATART_SEPARATOR_INFO}</small> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <tr> | ||||
|     <td class="text_medium col-I altBg">{LNG_CATEGORY_WORD_SEPARATOR}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         {CATEGORY_WORD_SEPARATOR_ERROR} | ||||
|         <input class="text_medium" type="text" id="mr_category_word_seperator" name="category_word_seperator" size="5" maxlength="1" value="{CATEGORY_WORD_SEPARATOR}"{CATEGORY_WORD_SEPARATOR_ATTRIB}> | ||||
|         <small>{LNG_WORD_SEPARATOR_INFO}</small> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <tr> | ||||
|     <td class="text_medium col-I altBg">{LNG_ARTICLE_SEPARATOR}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         {ARTICLE_SEPARATOR_ERROR} | ||||
|         <input class="text_medium" type="text" id="mr_article_seperator" name="article_seperator" size="5" maxlength="1" value="{ARTICLE_SEPARATOR}"{ARTICLE_SEPARATOR_ATTRIB}> | ||||
|         <small>{LNG_CATART_SEPARATOR_INFO}</small> | ||||
|     </td> | ||||
| </tr> | ||||
| <tr> | ||||
|     <td class="text_medium col-I altBg">{LNG_ARTICLE_WORD_SEPARATOR}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         {ARTICLE_WORD_SEPARATOR_ERROR} | ||||
|         <input class="text_medium" type="text" id="mr_article_word_seperator" name="article_word_seperator" size="5" maxlength="1" value="{ARTICLE_WORD_SEPARATOR}"{ARTICLE_WORD_SEPARATOR_ATTRIB}> | ||||
|         <small>{LNG_WORD_SEPARATOR_INFO}</small> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- add start article name to url --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_ADD_STARTART_NAME_TO_URL}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         {ADD_STARTART_NAME_TO_URL_ERROR} | ||||
|         <input type="checkbox" id="mr_add_startart_name_to_url" name="add_startart_name_to_url" value="1"{ADD_STARTART_NAME_TO_URL_CHK}> | ||||
|         <label for="mr_add_startart_name_to_url">{LNG_ADD_STARTART_NAME_TO_URL_LBL}</label><br> | ||||
|         <br> | ||||
|         <div class="blockLeft"> | ||||
|             <label for="mr_default_startart_name">{LNG_DEFAULT_STARTART_NAME}</label><br> | ||||
|             <input class="text_medium" type="text" id="mr_default_startart_name" name="default_startart_name" size="50" maxlength="64" value="{DEFAULT_STARTART_NAME}"> | ||||
|         </div> | ||||
|         <a href="#" id="defaultStartArtNameInfo1-link" title="" class="main i-link infoButton v2" style="margin-top:1.2em;"></a><div class="clear"></div> | ||||
|         <div id="defaultStartArtNameInfo1" style="display:none">{LNG_DEFAULT_STARTART_NAME_INFO}</div> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- file extension --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_FILE_EXTENSION}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         {FILE_EXTENSION_ERROR} | ||||
|         <div class="blockLeft"> | ||||
|             <input class="text_medium" type="text" name="file_extension" size="10" maxlength="10" value="{FILE_EXTENSION}"><br> | ||||
|         </div> | ||||
|         <a href="#" id="fileExtensionInfo1-link" title="" class="main i-link infoButton v2"></a><div class="clear"></div> | ||||
|         <div id="fileExtensionInfo1" style="display:none;"> | ||||
|             {LNG_FILE_EXTENSION_INFO}<br><br> | ||||
|             <strong>{LNG_NOTE}:</strong><br> | ||||
|             {LNG_FILE_EXTENSION_INFO2} | ||||
|         </div> | ||||
|         <p style="color:red">{LNG_FILE_EXTENSION_INFO3}</p> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- use lowercase url --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_USE_LOWERCASE_URI}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         <input type="checkbox" id="mr_use_lowercase_uri" name="use_lowercase_uri" value="1"{USE_LOWERCASE_URI_CHK}> | ||||
|         <label for="mr_use_lowercase_uri">{LNG_USE_LOWERCASE_URI_LBL}</label> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- prevent duplicated content --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_PREVENT_DUPLICATED_CONTENT}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         <div class="blockLeft"> | ||||
|             <input type="checkbox" id="mr_prevent_duplicated_content" name="prevent_duplicated_content" value="1"{PREVENT_DUPLICATED_CONTENT_CHK}> <label for="mr_prevent_duplicated_content">{LNG_PREVENT_DUPLICATED_CONTENT_LBL}</label><br> | ||||
|         </div> | ||||
|         <a href="#" id="preventDuplicatedContentInfo1-link" title="" class="main i-link infoButton v2"></a><div class="clear"></div> | ||||
|         <div id="preventDuplicatedContentInfo1" style="display:none;"> | ||||
|             {LNG_PREVENT_DUPLICATED_CONTENT_INFO}:<br> | ||||
|             <ul> | ||||
|             {LNG_PREVENT_DUPLICATED_CONTENT_INFO2} | ||||
|             </ul> | ||||
|         </div> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- category resolve min percentage --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_CATEGORY_RESOLVE_MIN_PERCENTAGE}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         {CATEGORY_RESOLVE_MIN_PERCENTAGE_ERROR} | ||||
|         <div class="blockLeft"> | ||||
|             <input class="text_medium" type="text" name="category_resolve_min_percentage" size="5" maxlength="3" value="{CATEGORY_RESOLVE_MIN_PERCENTAGE}"> (0 - 100) | ||||
|         </div> | ||||
|         <a href="#" id="categoryResolveMinPercentageInfo1-link" title="" class="main i-link infoButton v2"></a><div class="clear"></div> | ||||
|         <div id="categoryResolveMinPercentageInfo1" style="display:none;"> | ||||
|             <p>{LNG_CATEGORY_RESOLVE_MIN_PERCENTAGE_INFO}</p> | ||||
|             <strong>{LNG_EXAMPLE}:</strong> | ||||
|             <pre class="example">{LNG_CATEGORY_RESOLVE_MIN_PERCENTAGE_EXAMPLE}</pre> | ||||
|       </div> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- redirect invalid article to errorsite --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_REDIRECT_INVALID_ARTICLE_TO_ERRORSITE}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         <div class="blockLeft"> | ||||
|             <input type="checkbox" id="mr_redirect_invalid_article_to_errorsite" name="redirect_invalid_article_to_errorsite" value="1"{REDIRECT_INVALID_ARTICLE_TO_ERRORSITE_CHK}> | ||||
|             <label for="mr_redirect_invalid_article_to_errorsite">{LNG_REDIRECT_INVALID_ARTICLE_TO_ERRORSITE_LBL}</label><br> | ||||
|         </div> | ||||
|         <a href="#" id="redirectInvalidArticleToErrorsiteInfo1-link" title="" class="main i-link infoButton v2"></a><div class="clear"></div> | ||||
|         <div id="redirectInvalidArticleToErrorsiteInfo1" style="display:none;"> | ||||
|             {LNG_REDIRECT_INVALID_ARTICLE_TO_ERRORSITE_INFO} | ||||
|         </div> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- rewrite urls at --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_REWRITE_URLS_AT}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         <div class="blockLeft"> | ||||
|             <input type="radio" id="rewrite_urls_at_front_content_output" name="rewrite_urls_at" value="front_content_output"{REWRITE_URLS_AT_FRONT_CONTENT_OUTPUT_CHK}> | ||||
|             <label for="rewrite_urls_at_front_content_output">{LNG_REWRITE_URLS_AT_FRONT_CONTENT_OUTPUT_LBL}</label> | ||||
|         </div> | ||||
|         <a href="#" id="rewriteUrlsAtInfo1-link" title="" class="main i-link infoButton v2"></a><div class="clear"></div> | ||||
|         <div id="rewriteUrlsAtInfo1" style="display:none;"> | ||||
|             {LNG_REWRITE_URLS_AT_FRONT_CONTENT_OUTPUT_INFO}<br> | ||||
|             <br> | ||||
|             <strong>{LNG_REWRITE_URLS_AT_FRONT_CONTENT_OUTPUT_INFO2}:</strong> | ||||
|             <ul> | ||||
|             {LNG_REWRITE_URLS_AT_FRONT_CONTENT_OUTPUT_INFO3} | ||||
|             </ul> | ||||
|         </div> | ||||
|         <br> | ||||
| 
 | ||||
|         <div class="blockLeft"> | ||||
|             <input type="radio" id="rewrite_urls_at_congeneratecode" name="rewrite_urls_at" value="congeneratecode"{REWRITE_URLS_AT_CONGENERATECODE_CHK}> | ||||
|             <label for="rewrite_urls_at_congeneratecode">{LNG_REWRITE_URLS_AT_CONGENERATECODE_LBL}</label><br> | ||||
|         </div> | ||||
|         <a href="#" id="rewriteUrlsAtInfo2-link" title="" class="main i-link infoButton v2"></a><div class="clear"></div> | ||||
|         <div id="rewriteUrlsAtInfo2" style="display:none;"> | ||||
|         {LNG_REWRITE_URLS_AT_CONGENERATECODE_INFO}<br> | ||||
| <pre class="example">{LNG_REWRITE_URLS_AT_CONGENERATECODE_EXAMPLE}</pre> | ||||
| 
 | ||||
|             <strong>{LNG_REWRITE_URLS_AT_CONGENERATECODE_INFO2}:</strong> | ||||
|             <ul> | ||||
|             {LNG_REWRITE_URLS_AT_CONGENERATECODE_INFO3} | ||||
|             </ul> | ||||
|         </div> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- routing --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I">{LNG_REWRITE_ROUTING}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         <div class="blockLeft">{LNG_REWRITE_ROUTING_INFO}</div> | ||||
|         <a href="#" id="routingInfo1-link" title="" class="main i-link infoButton"></a><div class="clear"></div> | ||||
|         <div id="routingInfo1" style="display:none;"> | ||||
| {LNG_REWRITE_ROUTING_INFO2} | ||||
| <pre class="example">{LNG_REWRITE_ROUTING_EXAMPLE}</pre> | ||||
| <br> | ||||
|             <ul> | ||||
|             {LNG_REWRITE_ROUTING_INFO3} | ||||
|             </ul> | ||||
|         </div> | ||||
|         <textarea class="txt" id="rewrite_routing" name="rewrite_routing" rows="5" cols="80" style="width:100%;height:100px;">{REWRITE_ROUTING}</textarea> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <tr> | ||||
|     <td colspan="2" class="text_medium col-I" style="text-align:right"> | ||||
|         <a accesskey="c" href="main.php?area={AREA}&frame=4&idclient={IDCLIENT}&contenido={SESSID}"> | ||||
|             <img src="images/but_cancel.gif" alt="" title="{LNG_DISCARD_CHANGES}" /></a> | ||||
|         <input style="margin-left:20px;" accesskey="s" type="image" src="images/but_ok.gif" alt="" title="{LNG_SAVE_CHANGES}" /> | ||||
|     </td> | ||||
| </tr> | ||||
| </table> | ||||
| 
 | ||||
| </form> | ||||
| 
 | ||||
| {CONTENT_AFTER} | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										36
									
								
								templates/content_top.html
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										36
									
								
								templates/content_top.html
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,36 @@ | |||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | ||||
|     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
| <head> | ||||
|     <title>mod_rewrite_content_menu_top</title> | ||||
|     <meta http-equiv="expires" content="0" /> | ||||
|     <meta http-equiv="cache-control" content="no-cache" /> | ||||
|     <meta http-equiv="pragma" content="no-cache" /> | ||||
|     <link rel="stylesheet" type="text/css" href="styles/contenido.css" /> | ||||
|     <script type="text/javascript"><!-- | ||||
|     // session-id | ||||
|     var sid = "{SESSID}"; | ||||
|     // --></script>     | ||||
|     <style type="text/css"><!-- | ||||
|     img {border:none;} | ||||
|     // --></style> | ||||
| </head> | ||||
| 
 | ||||
| <body> | ||||
| 
 | ||||
| <div id="navcontainer"> | ||||
|     <div style="float:left;"> | ||||
|         <img src="images/frame_handle_re.gif" style="border:0px;float:left;" alt="" /> | ||||
|         <img style="margin:7px 0 0 7px;" id="toggleimage" onclick="parent.parent.frameResize.toggle()" src="images/spacer.gif" alt="" /> | ||||
|     </div> | ||||
| </div> | ||||
| 
 | ||||
| <script type="text/javascript"><!-- | ||||
| if (parent.parent.frames[0].name != "header") { | ||||
|     parent.parent.frameResize.init(); | ||||
|     parent.parent.frameResize.toggle(); | ||||
| } | ||||
| // --></script> | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										151
									
								
								templates/contentexpert.html
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										151
									
								
								templates/contentexpert.html
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,151 @@ | |||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | ||||
| <html> | ||||
| <head> | ||||
|     <title>mod_rewrite_content_expert</title> | ||||
|     <meta http-equiv="expires" content="0"> | ||||
|     <meta http-equiv="cache-control" content="no-cache"> | ||||
|     <meta http-equiv="pragma" content="no-cache"> | ||||
|     <script type="text/javascript" src="scripts/jquery/jquery.js"></script> | ||||
|     <script type="text/javascript" src="plugins/mod_rewrite/scripts/mod_rewrite.js"></script> | ||||
|     <script type="text/javascript" src="plugins/mod_rewrite/external/aToolTip/js/atooltip.jquery.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="styles/contenido.css"> | ||||
|     <link rel="stylesheet" type="text/css" href="plugins/mod_rewrite/external/aToolTip/css/atooltip.css"> | ||||
|     <link rel="stylesheet" type="text/css" href="plugins/mod_rewrite/styles/styles.css"> | ||||
|     <script type="text/javascript"><!-- | ||||
|     // session-id | ||||
|     var sid = "{SESSID}"; | ||||
| 
 | ||||
|     // setup translation | ||||
|     mrPlugin.lng.more_informations = "{LNG_MORE_INFORMATIONS}"; | ||||
| 
 | ||||
|     // initialize page | ||||
|     mrPlugin.initializeSettingsPage(); | ||||
| 
 | ||||
|     function mrPlugin_sendForm(action, params) { | ||||
|         $('#mr_expert_action').val(action); | ||||
|         var frm = $('#mr_expert'); | ||||
|         frm.attr('action', frm.attr('action') + '?' + params).submit(); | ||||
|     } | ||||
|     // --></script> | ||||
| </head> | ||||
| 
 | ||||
| <body class="mrPlugin"> | ||||
| 
 | ||||
| <div class="headerBox"> | ||||
| {LNG_PLUGIN_FUNCTIONS} | ||||
| </div> | ||||
| 
 | ||||
| {CONTENT_BEFORE} | ||||
| 
 | ||||
| <form name="mr_expert" id="mr_expert" method="post" action="main.php"> | ||||
| 
 | ||||
|     <input type="hidden" name="contenido" value="{SESSID}"> | ||||
|     <input type="hidden" name="area" value="{AREA}"> | ||||
|     <input type="hidden" name="mr_action" id="mr_expert_action" value=""> | ||||
|     <input type="hidden" name="frame" value="4"> | ||||
|     <input type="hidden" name="idclient" value="{IDCLIENT}"> | ||||
| 
 | ||||
| <table id="contenttable" cellspacing="0" cellpadding="3" border="0"> | ||||
| <colgroup> | ||||
|     <col width="30%"> | ||||
|     <col width="70%"> | ||||
| </colgroup> | ||||
| 
 | ||||
| 
 | ||||
| <!-- copy .htaccess --> | ||||
| <tr style="{COPY_HTACCESS_CSS}"> | ||||
|     <td class="text_medium col-I">{LNG_COPY_HTACCESS_TYPE}</td> | ||||
|     <td class="text_medium col-II" align="left"> | ||||
|         {COPY_HTACCESS_ERROR} | ||||
| 
 | ||||
|         <label for="mr_copy_htaccess_type">{LNG_COPY_HTACCESS_TYPE_LBL}</label><br> | ||||
|         <select class="blockLeft" name="htaccesstype" id="mr_copy_htaccess_type"> | ||||
|             <option value="restrictive">{LNG_COPY_HTACCESS_TYPE1}</option> | ||||
|             <option value="simple">{LNG_COPY_HTACCESS_TYPE2}</option> | ||||
|         </select> | ||||
|         <a href="#" id="copyHtaccessInfo1-link2" title="" class="main i-link infoButton"></a><div class="clear"></div> | ||||
|         <div id="copyHtaccessInfo1" style="display:none;"> | ||||
| <strong>{LNG_COPY_HTACCESS_TYPE1}:</strong><br> | ||||
| {LNG_COPY_HTACCESS_TYPE_INFO1}<br> | ||||
| <br> | ||||
| <strong>{LNG_COPY_HTACCESS_TYPE2}:</strong><br> | ||||
| {LNG_COPY_HTACCESS_TYPE_INFO2}<br> | ||||
|         </div> | ||||
| 
 | ||||
|         <div class="clear"></div> | ||||
|         <br> | ||||
| 
 | ||||
|         {LNG_COPY_HTACCESS_TO}<br> | ||||
|         <br> | ||||
|         <a class="blockLeft" style="margin-right:15px;" href="javascript:mrPlugin_sendForm('copyhtaccess', 'copy=contenido');"> | ||||
|             <img src="images/collapsed.gif" width="10" height="9" alt=""> {LNG_COPY_HTACCESS_TO_CONTENIDO}</a> | ||||
|         <a href="#" id="copyHtaccessInfo2-link2" title="" class="main i-link infoButton"></a><div class="clear"></div> | ||||
|         <div id="copyHtaccessInfo2" style="display:none;"> | ||||
|         {LNG_COPY_HTACCESS_TO_CONTENIDO_INFO} | ||||
|         </div> | ||||
|         <br> | ||||
| 
 | ||||
|         <a class="blockLeft" style="margin-right:15px;" href="javascript:mrPlugin_sendForm('copyhtaccess', 'copy=cms');"> | ||||
|             <img src="images/collapsed.gif" width="10" height="9" alt=""> {LNG_COPY_HTACCESS_TO_CLIENT}</a> | ||||
|         <a href="#" id="copyHtaccessInfo3-link2" title="" class="main i-link infoButton"></a><div class="clear"></div> | ||||
|         <div id="copyHtaccessInfo3" style="display:none;"> | ||||
|         {LNG_COPY_HTACCESS_TO_CLIENT_INFO} | ||||
|         </div> | ||||
|         <br> | ||||
| 
 | ||||
|         {LNG_OR}<br> | ||||
|         <br> | ||||
|         <a class="blockLeft" style="margin-right:15px;" href="javascript:mrPlugin_sendForm('downloadhtaccess', '');"> | ||||
|             <img src="images/collapsed.gif" width="10" height="9" alt=""> {LNG_DOWNLOAD}</a> | ||||
|         <a href="#" id="showHtaccessInfo-link1" title="" class="main i-link infoButton"></a><div class="clear"></div> | ||||
|         <div id="showHtaccessInfo" style="display:none;"> | ||||
|         {LNG_DOWNLOAD_INFO} | ||||
|         </div> | ||||
|         <br> | ||||
| 
 | ||||
|         <div class="clear"></div> | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| <!-- reset --> | ||||
| <tr> | ||||
|     <td class="text_medium col-I"> | ||||
|     {LNG_RESETALIASES} | ||||
|     </td> | ||||
|     <td class="text_medium col-II"> | ||||
|         <a class="blockLeft" style="margin-right:15px;" href="javascript:mrPlugin_sendForm('resetempty', '');"> | ||||
|             <img src="images/collapsed.gif" width="10" height="9" alt=""> {LNG_RESETEMPTY_LINK}</a> | ||||
|         <a href="#" id="resetAliasesInfo1-link2" title="" class="main i-link infoButton"></a><div class="clear"></div> | ||||
|         <div id="resetAliasesInfo1" style="display:none;"> | ||||
|         {LNG_RESETEMPTY_INFO} | ||||
|         </div> | ||||
|         <br> | ||||
| 
 | ||||
|         <a class="blockLeft" style="margin-right:15px;" href="javascript:mrPlugin_sendForm('reset', '');"> | ||||
|             <img src="images/collapsed.gif" width="10" height="9" alt=""> {LNG_RESETALL_LINK}</a> | ||||
|         <a href="#" id="resetAliasesInfo2-link2" title="" class="main i-link infoButton"></a><div class="clear"></div> | ||||
|         <div id="resetAliasesInfo2" style="display:none;"> | ||||
|         {LNG_RESETALL_INFO} | ||||
|         </div> | ||||
|         <br> | ||||
|         <strong>{LNG_NOTE}:</strong><br> | ||||
|         {LNG_RESETALIASES_NOTE} | ||||
|     </td> | ||||
| </tr> | ||||
| 
 | ||||
| 
 | ||||
| <tr> | ||||
|     <td colspan="2" class="text_medium col-I" style="text-align:right"> | ||||
|         <a accesskey="c" href="main.php?area={AREA}&frame=4&idclient={IDCLIENT}&contenido={SESSID}"> | ||||
|             <img src="images/but_cancel.gif" alt="" title="{LNG_DISCARD_CHANGES}"></a> | ||||
|         <input style="margin-left:20px;" accesskey="s" type="image" src="images/but_ok.gif" alt="" title="{LNG_SAVE_CHANGES}"> | ||||
|     </td> | ||||
| </tr> | ||||
| </table> | ||||
| 
 | ||||
| </form> | ||||
| 
 | ||||
| {CONTENT_AFTER} | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										63
									
								
								templates/contenttest.html
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										63
									
								
								templates/contenttest.html
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,63 @@ | |||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | ||||
| <html> | ||||
| <head> | ||||
|     <title>mod_rewrite_content_test</title> | ||||
|     <meta http-equiv="expires" content="0"> | ||||
|     <meta http-equiv="cache-control" content="no-cache"> | ||||
|     <meta http-equiv="pragma" content="no-cache"> | ||||
|     <script type="text/javascript" src="scripts/jquery/jquery.js"></script> | ||||
|     <script type="text/javascript" src="plugins/mod_rewrite/scripts/mod_rewrite.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="styles/contenido.css"> | ||||
|     <link rel="stylesheet" type="text/css" href="plugins/mod_rewrite/styles/styles.css"> | ||||
|     <script type="text/javascript"><!-- | ||||
|     // session-id | ||||
|     var sid = "{SESSID}"; | ||||
| 
 | ||||
|     // setup translation | ||||
|     mrPlugin.lng.more_informations = "{LNG_MORE_INFORMATIONS}"; | ||||
| 
 | ||||
|     // --></script> | ||||
| </head> | ||||
| 
 | ||||
| <body class="mrPlugin mrPluginTest"> | ||||
| 
 | ||||
| <div class="headerBox"> | ||||
|     <p>{LNG_FORM_INFO}<p> | ||||
|     <form name="mr_test" id="mr_test" action="main.php"> | ||||
|         <input type="hidden" name="area" value="{AREA}"> | ||||
|         <input type="hidden" name="frame" value="{FRAME}"> | ||||
|         <input type="hidden" name="contenido" value="{CONTENIDO}"> | ||||
|         <fieldset> | ||||
|             <legend>{LNG_FORM_LABEL}</legend> | ||||
|             <p></p> | ||||
|             <div class="chk"> | ||||
|                 <input type="checkbox" id="idart" name="idart" value="1"{FORM_IDART_CHK}><label for="idart">idart</label> | ||||
|             </div> | ||||
|             <div class="chk"> | ||||
|                 <input type="checkbox" id="idcat" name="idcat" value="1"{FORM_IDCAT_CHK}><label for="idcat">idcat</label> | ||||
|             </div> | ||||
|             <div class="chk"> | ||||
|                 <input type="checkbox" id="idcatart" name="idcatart" value="1"{FORM_IDCATART_CHK}><label for="idcatart">idcatart</label> | ||||
|             </div> | ||||
|             <div class="chk"> | ||||
|                 <input type="checkbox" id="idartlang" name="idartlang" value="1"{FORM_IDARTLANG_CHK}><label for="idartlang">idartlang</label> | ||||
|             </div> | ||||
|             <br class="clear"> | ||||
|         </fieldset> | ||||
|         <div class="contenttest"> | ||||
|             <div class="blockLeft"> | ||||
|                 <label for="maxitems">{LNG_MAXITEMS_LBL}: </label><input type="text" id="maxitems" maxlength="4" name="maxitems" value="{FORM_MAXITEMS}"> | ||||
|             </div> | ||||
|             <div class="blockRight pdr5"> | ||||
|                 <input type="submit" name="test" value="{LNG_RUN_TEST}"> | ||||
|             </div> | ||||
|             <br class="clear"> | ||||
|         </div> | ||||
|     </form> | ||||
|     <br class="clear"> | ||||
| </div> | ||||
| 
 | ||||
| {CONTENT} | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										14
									
								
								xml/lang_de_DE.xml
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										14
									
								
								xml/lang_de_DE.xml
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,14 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!-- CONTENIDO XML language file --> | ||||
| <language> | ||||
|     <navigation> | ||||
|         <extras> | ||||
|             <mod_rewrite> | ||||
|                 <main>AMR</main> | ||||
|                 <settings>Einstellungen</settings> | ||||
|                 <expert>Funktionen</expert> | ||||
|                 <test>Test</test> | ||||
|             </mod_rewrite> | ||||
|         </extras> | ||||
|     </navigation> | ||||
| </language> | ||||
							
								
								
									
										14
									
								
								xml/lang_en_US.xml
									
										
									
									
									
										Normale Datei
									
								
							
							
						
						
									
										14
									
								
								xml/lang_en_US.xml
									
										
									
									
									
										Normale Datei
									
								
							|  | @ -0,0 +1,14 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!-- CONTENIDO XML language file --> | ||||
| <language> | ||||
|     <navigation> | ||||
|         <extras> | ||||
|             <mod_rewrite> | ||||
|                 <main>AMR</main> | ||||
|                 <settings>Settings</settings> | ||||
|                 <expert>Functions</expert> | ||||
|                 <test>Test</test> | ||||
|             </mod_rewrite> | ||||
|         </extras> | ||||
|     </navigation> | ||||
| </language> | ||||
		Laden …
	
	Tabelle hinzufügen
		
		In neuem Issue referenzieren