AJAX – Request erstellen und testen

Mit folgendem Code kann man einen XMLHTTP-Request erstellen, der auch im alten Internet Explorer greift:

//XMLHTTPREQUEST
function getRequest()
{
	if (window.XMLHttpRequest)
	{
		//Code für Firefox – XMLHttpRequest ist nicht als ActiveX eingebunden
		return new XMLHttpRequest();
	}
	else
	{
		if(window.ActiveXObject)
		{
			//XMLHTTP als ActiveX im Internet Explorer ab 6
			return new ActiveXObject("Msxml2.XMLHTTP");
		}
		else
		{
			return null;
		}
	}
}

Contenido Navigation als XML exportieren

Um die Contenido-Navigation als XML auszugeben, wird zuerst eine Klasse xmlnav angelegt und mit einer Datenbankverbindungsfunktion versehen, weils für das Beispiel einfach praktisch ist:

class xmlnav
{
	function connect()
	{
		include "config.inc.php"; //enthält nur Datenbanklogin
		$this->dbuser = $DBUSER;
		$this->dbpass = $DBPASS;
		$this->dbhost = $DBHOST;
		$this->dbname = $DBNAME;

		$dbh = mysql_pconnect($this->dbhost,$this->dbuser,$this->dbpass);

		if(!is_resource($dbh))
		{
			echo "Es gab einen schwerwiegenden Fehler. Bitte versuchen Sie es später wieder";
		}
		else
		{
			mysql_select_db($this->dbname,$dbh);
			return $dbh;
		}
	}
}

Danach braucht es Funktionen die die Tabelle mit der Navi auslesen und daraus XML erstellen:

/*
Funktion zur Rückgabe der
URL-Namen aus der Tabelle con_art_lang
Feld = urlname;
*/


function get_urlname()
{
	$arrUrlname = array(); //Array zum Auffangen der urlnamen

	$query = "SELECT * FROM con_art_lang";
	$result = mysql_query($query,$this->connect());

	while($row = mysql_fetch_assoc($result))
	{
		array_push($arrUrlname,$row["urlname"]);
	}

	return $arrUrlname; //Rückgabe des Arrays mit den urlnamen
}


/*
Funktion zur Erstellung des xml-Files mit der
URL-Namen-Navigation.
*/


function create_xml_from_urlname()
{
	$arrUrlnameFromFunction = $this->get_urlname(); //Array zum Speichern der urlnamen aus der Rückgabe der o.s. Funktion

	echo "<xmlnav>";

	foreach($arrUrlnameFromFunction as $value)
	{
		//Kleinschreibung
		$value = strtolower($value);

		//Startseite erkennen
		if(eregi("artseite",$value))
		{
			$value = "/";
		}
		
		echo "<nav name='$value' />";
	}

	echo "</xmlnav>";

}

Die ganze Klasse sieht dann so aus:


/*
* Created on 29.01.2007
*
* To change the template for this generated file go to
* Window – Preferences – PHPeclipse – PHP – Code Templates
*/


class xmlnav
{
	function connect()
	{
		include "config.inc.php";
		$this->dbuser = $DBUSER;
		$this->dbpass = $DBPASS;
		$this->dbhost = $DBHOST;
		$this->dbname = $DBNAME;

		$dbh = mysql_pconnect($this->dbhost,$this->dbuser,$this->dbpass);

		if(!is_resource($dbh))
		{
			echo "Es gab einen schwerwiegenden Fehler. Bitte versuchen Sie es später wieder";
		}
		else
		{
			mysql_select_db($this->dbname,$dbh);
			return $dbh;
		}
	}

	
	/*
	Funktion zur Rückgabe der
	URL-Namen aus der Tabelle con_art_lang
	Feld = urlname;
	*/
	

	function get_urlname()
	{
		$arrUrlname = array(); //Array zum Auffangen der urlnamen

		$query = "SELECT * FROM con_art_lang";
		$result = mysql_query($query,$this->connect());

		while($row = mysql_fetch_assoc($result))
		{
			array_push($arrUrlname,$row["urlname"]);
		}

		return $arrUrlname; //Rückgabe des Arrays mit den urlnamen
	}

	
	/*
	Funktion zur Erstellung des xml-Files mit der
	URL-Namen-Navigation.
	*/
	

	function create_xml_from_urlname()
	{
		$arrUrlnameFromFunction = $this->get_urlname(); //Array zum Speichern der urlnamen aus der Rückgabe der o.s. Funktion
		
		echo "<xmlnav>";

		foreach($arrUrlnameFromFunction as $value)
		{
			//Kleinschreibung
			$value = strtolower($value);

			//Startseite erkennen
			if(eregi(‚artseite‘,$value))
			{
				$value = "/";
			}
			
			echo "<nav name='$value' />";
		}

	echo "</xmlnav>";

	}
}

Jetzt beötigen wir lediglich noch eine PHP-Datei, welche die Klasse includiert und PHP zurückgibt:

header("Content-Type: text/xml");
echo "<?xml version='1.0' ?>". "\n";
include "class.xmlnav.php";
$xmlnav = new xmlnav();

$xmlnav -> create_xml_from_urlname();

Diese Datei kann nun als XML-Quelle verwendet werden.

Datenbankverbindung aufbauen

Folgende Funktion liefert ein Handle auf eine Datenbankverbindung zurück:

function connect()
{
	$DB_HOST = "hostname";
	$DB_NAME = "datenbankname";
	$DB_USER = "dbuser";
	$DB_PASS = "pass";

	//Datenbank -> Verbindung aufbauen
	$link_id = mysql_connect($DB_HOST,$DB_USER,$DB_PASS);
	if(!mysql_select_db($DB_NAME,$link_id))
	{
		echo "Connection Error";
	}
	else
	{
		return $link_id;
	}
}

Für Drehung den Registrierungspunkt ändern / Actionscript 3

Um den Registrierungspunkt für eine Drehung eines Rechteckes zu verändern, benötigen wir die Matrix-Klasse. Da sich das Rechteck permanent drehen soll, muss man auf das ENTER_FRAME Event lauschen.

Für dieses Beispiel wird davon ausgegangen, dass bereits ein MovieClip mit dem Namen rect auf der Bühne liegt bzw. bereits zur Anzeigeliste hinzugefügt wurde. Dieser soll nun sozusagen mittig rotieren und nicht über seinen Standard-Registrierungspunkt beim 0,0.

//Zuerst einen EventListener anlegen
rect.addEventListener(Event.ENTER_FRAME,enter_frame);

//Die Geschwindigkeit der Drehung / Änderung
rect.aenderung = 1;

//Jeweils halbe Breite und Höhe des Rechteckes speichern
var rectWH:Number = rect.width/2; //halbe breite des zu transformierenden Objektes
var rectHH:Number = rect.height/2; //halbe höhe des zu transformierenden Objektes

//Die EventListener-Funktion
function enter_frame(evt:Event)
{
var rotationMatrix:Matrix = new Matrix(); //Instanz erzeugen
rotationMatrix.translate(-rectWH, -rectHH); //verschiebt Objekt auf x/y-Achse
rotationMatrix.rotate(rect.aenderung ); //Rotation durchführen
rotationMatrix.translate(rectWH, rectHH); //nochmals verschieben

rect.transform.matrix = rotationMatrix; //Transformation anwenden
rect.aenderung += 1; //Geschwindigkeit hochzählen
}

Standarddomain ohne www in .htaccess definieren

Um sämtliche Aufrufe einer Domain auf die Standarddomain ohne vorangestelltes www zu leiten, muss man folgende .htaccess-Datei anlegen:

#Rewrite Engine
RewriteEngine On
RewriteCond "%{HTTP_HOST} %{THE_REQUEST}" "^www.([^ ]+) [^ ]+ ([^ ]+)" [nocase]
RewriteRule . http://%1%2 [R,L]

Eventuell sind noch options anzugeben, dies hängt vom Provider ab. So können Sie testen, ob mod_rewrite funkioniert.

Favicon in Contenido einbinden

Zuerst muss man die Datei front_content.php öffnen, welche im Verzeichnis /cms liegt.
Dort sucht man in etwa nach Zeile 982, nach folgendem Ausdruck:

$code = str_ireplace_once("<head>", "<head>\n".$baseCode, $code);

Genau davor setzt man folgende Zeile:

$baseCode = $baseCode.'<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">';

Nun muss man noch das favicon.ico in das /cms-Verzeichnis laden und das wars schon.
Wie man ein Favicon erstellt steht hier.

Browser bestimmen / browserspezifisches Stylesheet

Um ein Stylesheet je nach verwendetem Browser einzubinden, kann folgende Javascriptfunktion eingesetzt werden:

function switchCSS()
{
	//Browser bestimmen
	if(navigator.userAgent.indexOf('Mozilla') != -1)
	{
		//Weiter mit den Mozillas
		document.writeln("");
	}

	else if(navigator.userAgent.indexOf('Internet Explorer') != -1)
	{
		//Weiter mit IE
		document.writeln("");
	}

	else
	{
		//default
		document.writeln("");
	}
}