Anker linkt auf Wurzelverzeichniss

erikawiese
Beiträge: 118
Registriert: Fr 23. Feb 2007, 22:06
Kontaktdaten:

Beitrag von erikawiese » Mo 9. Apr 2007, 13:48

knb hat geschrieben:Erika, ich habe mal Deine tinymce.tpl.html mit meiner verglichen.
Danke für deine Arbeit. Leider bliebt das Problem bestehen. Auch mit modifizierter "tinymce.tpl.html". Entweder meine Anker funktionieren (mit Systemeinstellungen, generator, baseref) oder meine Vorschau funktioniert (ohne Systemeinstellungen, generator, baseref).
Welche js Dateien wären denn noch zu prüfen? Ich verwende tinyMCE 2.1.0

laurin

Beitrag von laurin » Mo 9. Apr 2007, 14:06

Ich habe trotz meherer Versuche das Problem immer noch. Auch wenn ich das basehref ausstellen, oder tinyMCE verbiete in den Code einzugreifen - es linkt bei mir immer auf das Wurzelverzeichnis.

Gibts denn keine endgültige Lösung?

erikawiese
Beiträge: 118
Registriert: Fr 23. Feb 2007, 22:06
Kontaktdaten:

Beitrag von erikawiese » Mo 9. Apr 2007, 15:34

laurin hat geschrieben:Ich habe trotz meherer Versuche das Problem immer noch. Auch wenn ich das basehref ausstellen, oder tinyMCE verbiete in den Code einzugreifen - es linkt bei mir immer auf das Wurzelverzeichnis.

Gibts denn keine endgültige Lösung?
Ich hab jetzt folgende Lösung anzubieten. Ob das die endgültige ist, will ich aber bezweifeln.
1.) Die Systemeinstellungen "generator, basehref" wieder rausgenommen.
2.) font.content.php bearbeitet, wie steht in verschiedenen Stellen im Forum. Um es vielleicht auch für laurin leichter zu machen paste ich mal die gesamte "font_conten.php" hier rein (für Version 4.6.15):

Code: Alles auswählen

<?php
/****************************************************************
 * $RCSfile: front_content.php,v $
 * 
 * Project: Contenido Content Management System 
 * 
 * Description: 
 * 
 * This file handles the view of an article.
 * 
 * To handle the page we use the Database Abstraction Layer, the Session, Authentication and Permissions Handler of the
 * PHPLIB application development toolkit.
 * 
 * The Client Id and the Language Id of an article will be determined depending on file __FRONTEND_PATH__/config.php where
 * $load_lang and $load_client are defined.
 * Depending on http globals via e.g. front_content.php?idcat=41&idart=34
 * the most important Contenido globals $idcat (Category Id), $idart (Article Id), $idcatart, $idartlang will be determined.
 * 
 * The article can be displayed and edited in the Backend or the Frontend.
 * The attributes of an article will be considered (an article can be online, offline or protected ...).
 * 
 * It is possible to customize the behavior by including the file __FRONTEND_PATH__/config.local.php or
 * the file __FRONTEND_PATH__/config.after.php
 * 
 * If you use 'Frontend User' for protected areas, the category access permission will by handled via the 
 * Contenido Extension Chainer.
 * 
 * Finally the 'code' of an article will by evaluated and displayed. 
 * 
 * @author Olaf Niemann, Jan Lengowski, Timo A. Hummel et al.
 * @version 4.6.0
 * @see http://www.contenido.org 
 * @see ./docs/techref/
 * @see ./docs/techref/plugins/Contenido Extension Chainer.pdf
 * 
 * TODO:
 * The startup process and the way to handle the view of an article has to be redesigned.
 * A coding convention has to be implemented. Obviously the code below is old programming style.
 * The Contenido Architecture has to be redesigned.
 * 
 * NOTE:
 * If you edit this file you must synchronise the files
 * ./contenido/external/frontend/front_content.php
 * and
 * ./contenido/external/backendedit/front_content.php
 * 
 * created 2003/01/21
 * modified $Date: 2006/08/04 16:33:51 $
 *
 * © four for business AG, www.4fb.de
 *
 * This file is part of the Contenido Content Management System. 
 *
 * $Id: front_content.php,v 1.79 2006/08/04 16:33:51 willi.man Exp $
 ****************************************************************/

# include the config file of the frontend to init the Client and Language Id
include_once ("config.php"); 
# Contenido startup process
include_once ($contenido_path."includes/startup.php");

cInclude("includes", "functions.con.php");
cInclude("includes", "functions.con2.php");
cInclude("includes", "functions.api.php");
cInclude("includes", "functions.pathresolver.php");

if ($cfg["use_pseudocron"] == true)
{
	/* Include cronjob-Emulator */
	$oldpwd = getcwd();
	chdir($cfg["path"]["contenido"].$cfg["path"]["cronjobs"]);
	cInclude("includes", "pseudo-cron.inc.php");
	chdir($oldpwd);
}

/*
 * Initialize the Database Abstraction Layer, the Session, Authentication and Permissions Handler of the
 * PHPLIB application development toolkit
 * @see http://sourceforge.net/projects/phplib
 */
if ($contenido)
{
	//Backend
	page_open(array ('sess' => 'Contenido_Session', 'auth' => 'Contenido_Challenge_Crypt_Auth', 'perm' => 'Contenido_Perm'));
	i18nInit($cfg["path"]["contenido"].$cfg["path"]["locale"], $belang);
}
else
{
	//Frontend
	page_open(array ('sess' => 'Contenido_Frontend_Session', 'auth' => 'Contenido_Frontend_Challenge_Crypt_Auth', 'perm' => 'Contenido_Perm'));
}

$db = new DB_Contenido;

$sess->register("cfgClient");
$sess->register("errsite_idcat");
$sess->register("errsite_idart");
$sess->register("encoding");

if ($cfgClient["set"] != "set")
{
	rereadClients();
}

$sql = "SELECT idlang, encoding FROM ".$cfg["tab"]["lang"];
$db->query($sql);
// get encodings of all languages
while ($db->next_record())
{
	$encoding[$db->f("idlang")] = $db->f("encoding");
}

if (is_numeric($tmpchangelang) && $tmpchangelang > 0)
{
	$savedlang = $lang;
	$lang = $tmpchangelang;
}

// Checking basic data input
if (isset($changeclient) && !is_numeric($changeclient)) {
	unset ($changeclient);
}
if (isset($client) && !is_numeric($client)) {
	unset ($client);
}
if (isset($changelang) && !is_numeric($changelang)) {
	unset ($changelang);
}
if (isset($lang) && !is_numeric($lang)) {
	unset ($lang);
}

// Change client
if (isset($changeclient)){
    $client = $changeclient;
    unset($lang);
    unset($load_lang);
}

// Change language
if (isset($changelang)) $lang = $changelang;

// Initialize client
if (!isset($client)) {
    //load_client defined in frontend/config.php
    $client = $load_client;
}

// Initialize language
if (!isset($lang)) {

    // if there is an entry load_lang in frontend/config.php use it, else use the first language of this client
    if(isset($load_lang)){
        // load_client is set in frontend/config.php
        $lang = $load_lang;
    }else{

        $sql = "SELECT
                    B.idlang
                FROM
                    ".$cfg["tab"]["clients_lang"]." AS A,
                    ".$cfg["tab"]["lang"]." AS B
                WHERE
                    A.idclient='$client' AND
                    A.idlang = B.idlang
                LIMIT
                    0,1";

        $db->query($sql);
        $db->next_record();
       
        $lang = $db->f("idlang");
    }
}

if (!$sess->is_registered("lang") ) $sess->register("lang");
if (!$sess->is_registered("client") ) $sess->register("client");

if (isset ($username))
{
	$auth->login_if(true);
}

/*
 * Send HTTP header with encoding
 */
header("Content-Type: text/html; charset={$encoding[$lang]}");

/*
 * if http global logout is set e.g. front_content.php?logout=true
 * log out the current user. 
 */
if (isset ($logout))
{
	$auth->logout(true);
	$auth->unauth(true);
	$auth->auth["uname"] = "nobody";
}

/*
 * local configuration
 */
if (file_exists("config.local.php"))
{
	@ include ("config.local.php");
}

/*
 * If the path variable was passed, try to resolve it to a Category Id 
 * e.g. front_content.php?path=/company/products/
 */
if (isset ($path))
{
	/* Which resolve method is configured? */
	if ($cfg["urlpathresolve"] == true)
	{
		$idcat = prResolvePathViaURLNames($path);
	}
	else
	{
		$idcat = prResolvePathViaCategoryNames($path);
	}
}

// error page
$errsite = "Location: front_content.php?client=$client&idcat=".$errsite_idcat[$client]."&idart=".$errsite_idart[$client]."&lang=$lang&error=1";

/*
 * Try to initialize variables $idcat, $idart, $idcatart, $idartlang
 * Note: These variables can be set via http globals e.g. front_content.php?idcat=41&idart=34&idcatart=35&idartlang=42 
 * If not the values will be computed.
 */
if ($idart && !$idcat && !$idcatart)
{
	/* Try to fetch the first idcat */
	$sql = "SELECT idcat FROM ".$cfg["tab"]["cat_art"]." WHERE idart = '$idart'";
	$db->query($sql);

	if ($db->next_record())
	{
		$idcat = $db->f("idcat");
	}
}

unset ($code);
unset ($markscript);

if (!$idcatart)
{
	if (!$idart)
	{
		if (!$idcat)
		{
			# Note: In earlier Contenido versions the information if an article is startarticle of a category has been stored
			# in relation con_cat_art.
			if ($cfg["is_start_compatible"] == true)
			{
				$sql = "SELECT
                            idart,
                            B.idcat
                        FROM
                            ".$cfg["tab"]["cat_art"]." AS A,
                            ".$cfg["tab"]["cat_tree"]." AS B,
                            ".$cfg["tab"]["cat"]." AS C
                        WHERE
                            A.idcat=B.idcat AND
                            B.idcat=C.idcat AND
                            is_start='1' AND
                            idclient='$client'
                        ORDER BY
                            idtree ASC";
			}
			else
			{
				# Note: Now the information if an article is startarticle of a category is stored in relation con_cat_lang.
				$sql = "SELECT
                            A.idart,
                            B.idcat
                        FROM
                            ".$cfg["tab"]["cat_art"]." AS A,
                            ".$cfg["tab"]["cat_tree"]." AS B,
                            ".$cfg["tab"]["cat"]." AS C,
							".$cfg["tab"]["cat_lang"]." AS D,
							".$cfg["tab"]["art_lang"]." AS E
                        WHERE
                            A.idcat=B.idcat AND
                            B.idcat=C.idcat AND
							D.startidartlang = E.idartlang AND
							D.idlang='$lang' AND
							E.idart=A.idart AND
							E.idlang='$lang' AND
                            idclient='$client'
                        ORDER BY
                            idtree ASC";
			}

			$db->query($sql);

			if ($db->next_record())
			{
				$idart = $db->f("idart");
				$idcat = $db->f("idcat");
			}
			else
			{
				if ($contenido)
				{
					cInclude("includes", "functions.i18n.php");
					die(i18n("No start article for this category"));
				}
				else
				{
					if ($error == 1)
					{
						echo "Fatal error: Could not display error page. Error to display was: 'No start article in this category'";
					}
					else
					{
						header($errsite);
					}
				}
			}
		}
		else
		{
			$idart = -1;
			if ($cfg["is_start_compatible"] == true)
			{
				$sql = "SELECT idart FROM ".$cfg["tab"]["cat_art"]." WHERE idcat='".$idcat."' AND is_start='1'";
				$db->query($sql);

				if ($db->next_record())
				{
					$idart = $db->f("idart");
				}
			}
			else
			{
				$sql = "SELECT startidartlang FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".$idcat."' AND idlang='$lang'";
				$db->query($sql);

				if ($db->next_record())
				{
					if ($db->f("startidartlang") != 0)
					{
						$sql = "SELECT idart FROM ".$cfg["tab"]["art_lang"]." WHERE idartlang='".$db->f("startidartlang")."'";
						$db->query($sql);
						$db->next_record();
						$idart = $db->f("idart");
					}
				}
			}

			if ($idart != -1)
			{
			}
			else
			{
				// error message in backend
				if ($contenido)
				{
					cInclude("includes", "functions.i18n.php");
					die(i18n("No start article for this category"));
				}
				else
				{
					if ($error == 1)
					{
						echo "Fatal error: Could not display error page. Error to display was: 'No start article in this category'";
					}
					else
					{
						header($errsite);
					}
				}
			}
		}
	}
}
else
{
	$sql = "SELECT idcat, idart FROM ".$cfg["tab"]["cat_art"]." WHERE idcatart='".$idcatart."'";

	$db->query($sql);
	$db->next_record();

	$idcat = $db->f("idcat");
	$idart = $db->f("idart");
}

/* Get idcatart */
if (0 != $idart && 0 != $idcat)
{
	$sql = "SELECT idcatart FROM ".$cfg["tab"]["cat_art"]." WHERE idart = '".$idart."' AND idcat = '".$idcat."'";

	$db->query($sql);
	$db->next_record();

	$idcatart = $db->f("idcatart");
}

$idartlang = getArtLang($idart, $lang);

if ($idartlang === false)
{
	header($errsite);	
}

##############################################
# BACKEND / FRONTEND EDITING
##############################################

/**
 * If user has contenido-backend rights. 
 * $contenido <==> the cotenido backend session as http global
 * In Backend: e.g. contenido/index.php?contenido=dac651142d6a6076247d3afe58c8f8f2
 * Can also be set via front_content.php?contenido=dac651142d6a6076247d3afe58c8f8f2
 * 
 * Note: In backend the file contenido/external/backendedit/front_content.php is included!
 * The reason is to avoid cross-site scripting errors in the backend, if the backend domain differs from
 * the frontend domain.
 */
if ($contenido)
{
	cInclude("classes", 'class.inuse.php');
	cInclude("classes", 'class.user.php');
	cInclude("classes", 'class.table.php');
	cInclude("classes", 'class.notification.php');

	$perm->load_permissions();

	/* Change mode edit / view */
	if (isset ($changeview))
	{
		$sess->register("view");
		$view = $changeview;
	}

	$col = new InUseCollection;

	if ($overrideid != "" && $overridetype != "")
	{
		$col->removeItemMarks($overridetype, $overrideid);
	}
	/* Remove all own marks */
	$col->removeSessionMarks($sess->id);
	/* If the override flag is set, override a specific InUseItem */

	list ($inUse, $message) = $col->checkAndMark("article", $idartlang, true, i18n("Article is in use by %s (%s)"), true, "front_content.php?changeview=edit&action=con_editart&idartlang=$idartlang&type=$type&typenr=$typenr&idart=$idart&idcat=$idcat&idcatart=$idcatart&client=$client&lang=$lang");

	if ($inUse == true)
	{
		$disabled = 'disabled="disabled"';
		echo $message;
	}

	$sql = "SELECT locked FROM ".$cfg["tab"]["art_lang"]." WHERE idart='".$idart."' AND idlang = '".$lang."'";
	$db->query($sql);
	$db->next_record();
	$locked = $db->f("locked");
	if ($locked == 1)
	{
		$inUse = true;
		$disabled = 'disabled="disabled"';
	}
	/* Check if the user
	   has permission to edit
	   articles in this category */
	   
	$allow = true;
	
	$iterator = $_cecRegistry->getIterator("Contenido.Frontend.AllowEdit");

	while ($chainEntry = $iterator->next())
	{
		$value = $chainEntry->execute($lang, $idcat, $idart, $auth->auth["uid"]);

		if ($value === false)
		{
			$allow = false;
			break;
		}
	}

	if ($perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat) && $inUse == false && $allow == true)
	{
		/* Create buttons for editing */
		$edit_preview = '<table cellspacing="0" cellpadding="4" border="0">';

		if ($view == "edit")
		{
			$edit_preview = '<tr>
                                <td width="18">
                                    <a title="Preview" style="font-family: Verdana; font-size: 10px; color: #000000; text-decoration: none" href="'.$sess->url("front_content.php?changeview=prev&idcat=$idcat&idart=$idart").'"><img src="'.$cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"].'but_preview.gif" alt="Preview" title="Preview" border="0"></a>
                                </td>
                                <td width="18">
                                    <a title="Preview" style="font-family: Verdana; font-size: 10px; color: #000000; text-decoration: none" href="'.$sess->url("front_content.php?changeview=prev&idcat=$idcat&idart=$idart").'">Preview</a>
                                </td>
                            </tr>';
		}
		else
		{
			$edit_preview = '<tr>
                                <td width="18">
                                    <a title="Preview" style="font-family: Verdana; font-size: 10px; color: #000000; text-decoration: none" href="'.$sess->url("front_content.php?changeview=edit&idcat=$idcat&idart=$idart").'"><img src="'.$cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"].'but_edit.gif" alt="Preview" title="Preview" border="0"></a>
                                </td>
                                <td width="18">
                                    <a title="Preview" style="font-family: Verdana; font-size: 10px; color: #000000; text-decoration: none" href="'.$sess->url("front_content.php?changeview=edit&idcat=$idcat&idart=$idart").'">Edit</a>
                                </td>
                            </tr>';
		}

		/* Display articles */
		if ($cfg["is_start_compatible"] == true)
		{
			$sql = "SELECT idart,is_start FROM ".$cfg["tab"]["cat_art"]." WHERE idcat='".$idcat."' ORDER BY idart";

			$db->query($sql);
		}
		else
		{
			$sql = "SELECT idart FROM ".$cfg["tab"]["cat_art"]." WHERE idcat='".$idcat."' ORDER BY idart";

			$db->query($sql);
		}

		$a = 1;

		$edit_preview .= '<tr><td colspan="2"><table cellspacing="0" cellpadding="2" border="0"></tr><td style="font-family: verdana; font-size:10; color:#000000; text-decoration:none">Articles in category:<br>';

		while ($db->next_record() && ($db->affected_rows() != 1))
		{

			$class = "font-family:'Verdana'; font-size:10; color:#000000; text-decoration: underline; font-weight:normal";
			if (!isset ($idart))
			{
				if (isStartArticle(getArtLang($idart, $lang), $idcat, $lang))
				{
					$class = "font-family: verdana; font-size:10; color:#000000; text-decoration: underline ;font-weight:bold";
				}
			}
			else
			{
				if ($idart == $db->f("idart"))
				{
					$class = "font-family: verdana; font-size:10; color:#000000; text-decoration: underline; font-weight:bold";
				}
			}

			$edit_preview .= "<a style="$class" href="".$sess->url("front_content.php?idart=".$db->f("idart")."&idcat=$idcat")."">$a</a>&nbsp;";
			$a ++;
		}

		$edit_preview .= '</td></tr></table></td></tr></table>';

	}

} // end if $contenido


/* If mode is 'edit' and user has permission to edit articles in the current category  */
if ($inUse == false && $allow == true && $view == "edit" && ($perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat)))
{
	cInclude("includes", "functions.tpl.php");
	cInclude("includes", "functions.con.php");
	include ($cfg["path"]["contenido"].$cfg["path"]["includes"]."include.con_editcontent.php");
}
else
{
	
##############################################
# FRONTEND VIEW
##############################################
	
	/* Mark submenuitem 'Preview' in the Contenido Backend (Area: Contenido --> Articles --> Preview) */
	if ($contenido)
	{
		$markscript = markSubMenuItem(4, true);
	}

	unset($edit); // disable editmode
	
	/* 'mode' is preview (Area: Contenido --> Articles --> Preview) or article displayed in the front-end */
	$sql = "SELECT
                createcode
            FROM
                ".$cfg["tab"]["cat_art"]."
            WHERE
                idcat = '".$idcat."' AND
                idart = '".$idart."'";

	$db->query($sql);
	$db->next_record();

	##############################################
	# code generation
	##############################################
	
	/* Check if code is expired, create new code if needed */
	if ($db->f("createcode") == 0 && $force == 0)
	{
		$sql = "SELECT code FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".$idcatart."' AND idlang = '".$lang."'";
		$db->query($sql);

		if ($db->num_rows() == 0)
		{
			/* Include here for performance reasons */
			cInclude("includes", "functions.tpl.php");

			conGenerateCode($idcat, $idart, $lang, $client);

			$sql = "SELECT code FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".$idcatart."' AND idlang = '".$lang."'";
			$db->query($sql);
		}

		if ($db->next_record())
		{
			$code = stripslashes($db->f("code"));
		}
		else
		{
			if ($contenido)
				$code = "echo "No code available.";";
			else
			{
				if ($error == 1)
				{
					echo "Fatal error: Could not display error page. Error to display was: 'No code available'";
				}
				else
				{
					header($errsite);
				}
			}
		}
	}
	else
	{
		$sql = "DELETE FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".$idcatart."'";
		$db->query($sql);

		cInclude("includes", "functions.con.php");
		cInclude("includes", "functions.tpl.php");
		cInclude("includes", "functions.mod.php");

		conGenerateCode($idcat, $idart, $lang, $client);

		$sql = "SELECT code FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".$idcatart."' AND idlang = '".$lang."'";

		$db->query($sql);
		$db->next_record();

		$code = stripslashes($db->f("code"));
	}

	/*  Add mark Script to code if user is in the backend */
	$code = preg_replace("/<\/head>/i", "$markscript\n</head>", $code);

	/* Check if category is public */
	$sql = "SELECT public FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".$idcat."' AND idlang='".$lang."'";

	$db->query($sql);
	$db->next_record();

	$public = $db->f("public");

	##############################################
	# protected categories
	##############################################
	if ($public == 0)
	{
		if ($auth->auth["uid"] == "nobody")
		{
			$sql = "SELECT user_id, value FROM ".$cfg["tab"]["user_prop"]." WHERE type='frontend' and name='allowed_ip'";
			$db->query($sql);

			while ($db->next_record())
			{
				$user_id = $db->f("user_id");

				$range = urldecode($db->f("value"));
				$slash = strpos($range, "/");

				if ($slash == false)
				{
					$netmask = "255.255.255.255";
					$network = $range;
				}
				else
				{
					$network = substr($range, 0, $slash);
					$netmask = substr($range, $slash +1, strlen($range) - $slash -1);
				}

				if (IP_match($network, $netmask, $_SERVER["REMOTE_ADDR"]))
				{
					$sql = "SELECT idright 
							FROM ".$cfg["tab"]["rights"]." AS A,
								 ".$cfg["tab"]["actions"]." AS B,
								 ".$cfg["tab"]["area"]." AS C
							 WHERE B.name = 'front_allow' AND C.name = 'str' AND A.user_id = '".$user_id."' AND A.idcat = '$idcat'
									AND A.idarea = C.idarea AND B.idaction = A.idaction";

					$db2 = new DB_Contenido;
					$db2->query($sql);

					if ($db2->num_rows() > 0)
					{
						$auth->auth["uid"] = $user_id;
						$validated = 1;
					}
				}
			}
			if ($validated != 1)
			{
				$allow = false;

				$iterator = $_cecRegistry->getIterator("Contenido.Frontend.CategoryAccess");

				while ($chainEntry = $iterator->next())
				{
					$value = $chainEntry->execute($lang, $idcat, $auth->auth["uid"]);

					if ($value === true)
					{
						$allow = true;
						break;
					}
				}
				$auth->login_if(!$allow);
			}
		}
		else
		{
			$allow = false;

			$iterator = $_cecRegistry->getIterator("Contenido.Frontend.CategoryAccess");

			while ($chainEntry = $iterator->next())
			{
				$value = $chainEntry->execute($lang, $idcat, $auth->auth["uid"]);

				if ($value === true)
				{
					$allow = true;
					break;
				}
			}

			if (!$allow)
			{
				header($errsite);
			}
		}
	}

	##############################################
	# statistic
	##############################################
	/* Sanity: If the statistic table doesn't contain an entry, create one */
	$sql = "SELECT idcatart FROM ".$cfg["tab"]["stat"]." WHERE idcatart = '$idcatart' AND idlang='$lang'";
	$db->query($sql);

	if ($db->next_record())
	{
		/* Update the statistics. */
		$sql = "UPDATE ".$cfg["tab"]["stat"]." SET visited = visited + 1 WHERE idcatart = '".$idcatart."' AND idclient = '$client' AND idlang = '".$lang."'";
		$db->query($sql);
	}
	else
	{
		/* Insert new record */
		$next = $db->nextid($cfg["tab"]["stat"]);
		$sql = "INSERT INTO ".$cfg["tab"]["stat"]." (visited, idcatart, idlang, idstat, idclient) VALUES ('1', '$idcatart', '$lang', '$next', '$client')";
		$db->query($sql);
	}

	/*
	 * Check if an article is start article of the category
	 */
	if ($cfg["is_start_compatible"] == true)
	{
		$sql = "SELECT is_start FROM ".$cfg["tab"]["cat_art"]." WHERE idcatart='".$idcatart."'";
		$db->query($sql);
		$db->next_record();
		$isstart = $db->f("is_start");
	}
	else
	{
		$sql = "SELECT startidartlang FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='$idcat' AND idlang = '$lang'";
		$db->query($sql);
		$db->next_record();
		if ($db->f("idartlang") == $idartlang)
		{
			$isstart = 1;
		}
		else
		{
			$isstart = 0;
		}
	}

	##############################################
	# time management
	##############################################
	$sql = "SELECT timemgmt FROM ".$cfg["tab"]["art_lang"]." WHERE idart='".$idart."' AND idlang = '".$lang."'";
	$db->query($sql);
	$db->next_record();

	if (($db->f("timemgmt") == "1") && ($isstart != 1))
	{
		$sql = "SELECT online, redirect, redirect_url FROM ".$cfg["tab"]["art_lang"]." WHERE idart='".$idart."' AND idlang = '".$lang."' AND NOW() > datestart AND NOW() < dateend";
	}
	else
	{
		$sql = "SELECT online, redirect, redirect_url FROM ".$cfg["tab"]["art_lang"]." WHERE idart='".$idart."' AND idlang = '".$lang."'";
	}

	$db->query($sql);
	$db->next_record();

	$online = $db->f("online");
	$redirect = $db->f("redirect");
	$redirect_url = $db->f("redirect_url");

	@ eval ("\$"."redirect_url = "$redirect_url";"); // transform variables
	
	$insert_base = getEffectiveSetting('generator', 'basehref', "true");
	
	/*
	 * generate base url
	 */
	if ($insert_base == "true")
	{
		$is_XHTML = getEffectiveSetting('generator', 'xhtml', "false");

		$str_base_uri = $cfgClient[$client]["path"]["htmlpath"]; 
		
		$_cecIterator = $_cecRegistry->getIterator("Contenido.Frontend.BaseHrefGeneration");
		
		if ($_cecIterator->count() > 0)
		{
			while ($chainEntry = $_cecIterator->next())
			{
			    $str_base_uri = $chainEntry->execute($str_base_uri);
			}
		}

		if( !empty($edit) ) {
  if( $is_XHTML == true ) {
   $baseCode = '<base href="'.$cfgClient[$client]["path"]["htmlpath"].'"/>';
  } else {
   $baseCode = '<base href="'.$cfgClient[$client]["path"]["htmlpath"].'">';
  }
 } 
		

		$code = str_ireplace_once("<head>", "<head>\n".$baseCode, $code);
	}
	
	/*
	 * Handle online (offline) articles
	 */
	if ($online)
	{
		if ($redirect == '1' && $redirect_url != '')
		{
			page_close();
			/*
			 * Redirect to the URL defined in article properties
			 */
			header("Location: $redirect_url");
			exit;
		}
		else
		{
			if ($cfg["debug"]["codeoutput"])
			{
				echo "<textarea>".htmlspecialchars($code)."</textarea>";
			}

			/*
			 * That's it! The code of an article will be evaluated.
			 * The code of an article is basically a PHP script which is cached in the database.
			 * Layout and Modules are merged depending on the Container definitions of the Template.
			 */
			eval ("?>\n".$code."\n<?php\n");
		}
	}
	else
	{
		# if user is in the backend display offline articles
		if ($contenido)
		{
			eval ("?>\n".$code."\n<?php\n");
		}
		else
		{
			if ($error == 1)
			{
				echo "Fatal error: Could not display error page. Error to display was: 'No contenido session variable set. Probable error cause: Start article in this category is not set on-line.'";
			}
			else
			{
				header($errsite);
			}
		}
	}
}

/*
 * configuration settings after the site is displayed. 
 */
if (file_exists("config.after.php"))
{
	@ include ("config.after.php");
}

if (isset ($savedlang))
{
	$lang = $savedlang;
}

page_close();

/**
 * IP_match
 * 
 * @param string $network
 * @param string $mask
 * @param string $ip
 * @return boolean
 */
function IP_match($network, $mask, $ip)
{

	bcscale(3);
	$ip_long = ip2long($ip);
	$mask_long = ip2long($network);

	#
	# Convert mask to divider
	#
	if (ereg("^[0-9]+$", $mask))
	{
		/// 212.50.13.0/27 style mask (Cisco style)
		$divider = bcpow(2, (32 - $mask));
	}
	else
	{
		/// 212.50.13.0/255.255.255.0 style mask
		$xmask = ip2long($mask);
		if ($xmask < 0)
			$xmask = bcadd(bcpow(2, 32), $xmask);
		$divider = bcsub(bcpow(2, 32), $xmask);
	}
	#
	# Test is IP within specified mask
	#
	if (floor(bcdiv($ip_long, $divider)) == floor(bcdiv($mask_long, $divider)))
	{
		# match - this IP is within specified mask
		return true;
	}
	else
	{
		# fail - this IP is NOT within specified mask
		return false;
	}
}

?>
Zuletzt geändert von erikawiese am Di 10. Apr 2007, 07:30, insgesamt 1-mal geändert.

laurin

Beitrag von laurin » Mo 9. Apr 2007, 16:22

@erikawiese: Zunächst mal danke für deine Antwort. Habe es versucht einzubauen, doch es hat leider nichts gebracht (Ich habe deinen Code in die front_content.php eingefügt). Das Problem besteht wie vorher. Selbst wenn ich in der HTML-Ansicht im tinyMCE den Quellcode per Hand richte, also z.b <a href=#anker> mache, ändert er das (obwohl ich eingestellt habe, er soll nicht in den Code eingreifen) in <a href=\#anker>

:cry:

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Mo 9. Apr 2007, 17:59

@erika:

der code der front_content ist NICHT der der 4.6.15! erkenntlich ist der code, dass imens lange kommentare am anfang stehen!

ich schätz du hast bei deinem update vergessen die front_content.php im cms verzeichnis zu überschrieben

erikawiese
Beiträge: 118
Registriert: Fr 23. Feb 2007, 22:06
Kontaktdaten:

Beitrag von erikawiese » Mo 9. Apr 2007, 19:10

stese hat geschrieben:@erika:

der code der front_content ist NICHT der der 4.6.15! erkenntlich ist der code, dass imens lange kommentare am anfang stehen!
Da der Code sowieso schon so lang ist, hab ich mir erlaubt die immens langen Kommentare wegzulassen. Kann das aber auch gerne nochmal ändern, falls sich da jmd. auf die Füße getreten fühlt.

laurin

Beitrag von laurin » Mo 9. Apr 2007, 19:18

Kommentar hin oder her ;) - es hat mich bisher leider noch nicht zum Ziel gebracht :oops:

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Mo 9. Apr 2007, 20:00

erikawiese hat geschrieben:Kann das aber auch gerne nochmal ändern, falls sich da jmd. auf die Füße getreten fühlt.
Damit hat das nichts zu tun. Es geht halt darum, dass es so aussieht, als wäre es nicht der aktuelle Code. Und das macht den Support nicht gerade leichter.
Wenn man Code postet, sollte man den nicht ändern. Das führt sonst zu Missverständnissen. Ich habe den Post heute Nachmittag gesehen und habe auch erst gedacht, dass der evtl. nicht der aktuelle ist.

erikawiese
Beiträge: 118
Registriert: Fr 23. Feb 2007, 22:06
Kontaktdaten:

Beitrag von erikawiese » Di 10. Apr 2007, 07:33

... sorry, wollte hier niemanden verwirren. Ich habe das jetzt abgeändert. In meinem Beitrag weiter oben steht nun der gesamte Code der font_content.php

gummibaerle
Beiträge: 52
Registriert: Do 23. Feb 2006, 00:16
Wohnort: Kleinaitingen
Kontaktdaten:

Anker-Problem mit 4.6.15 modrewrite

Beitrag von gummibaerle » Do 12. Apr 2007, 02:06

Ich glaube ich habe eine einfache Lösung:

Anker:

Code: Alles auswählen

<a id="top"></a>
Hyperlink:

Code: Alles auswählen

<a href="/#top">top of the page</a>
Eigentlich habe ich unzählige contenido-Installation mit der Version 4.6.15 inkl. mod_rewrite. Das Anker-Problem sollte bei dieser Version eigentlich gar nicht mehr auftauchen. Bei allen hatte ich noch nie Probleme mit dem Anker. Doch bei einer Installation habe ich es einfach nicht hingebracht. Es kam immer "http://www.domain.de/cms/#top" anstatt "http://www.domain.de/verzeichnis/#top". Der Spass hat mich locker 6 Stunden Arbeit gekostet (Updates versucht, Backup, Dump, ...) bis ich mal ein paar Tests mit verschiedenen Ankern gemacht hatte. Und siehe da, die Lösung war "/#top" anstatt "#top".

Für mich zwar etwas unlogisch, aber Hauptsache es geht nun.

Gruss aus Bayern
"Im Wald zwei Wege boten sich mir dar, und ich nahm den der weniger betreten war. Und das veränderte mein Leben."

Gesperrt