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 …
In neuem Issue referenzieren