Anlage 2: Programmlistings

Inhaltsverzeichnis
1. Server 1
1.1. backend.php 1
1.2. backend_soap.php 2
1.3. backend_base.php 2
1.4. include/config.inc 5
1.5. include/sql_magazin_stars.php 5
1.6. include/sql_magazin_soundcheck.php 5
2. PHP-Client 5
2.1. client.php 5
2.2. include/inc_client_http.php 6
2.3. include/inc_client_soap.php 7
3. Perl-Client 9
3.1. nightloop.pm 9
3.2. client.pl 11
4. Web-Interface 12
4.1. syndic8.php 12
4.2. syndic8.css 15
4.3. template.php 16
4.4. vorlage.perl.txt 17
4.5. vorlage.php.txt 18

1. Server
1.1. backend.php
0)
if (is_numeric($items))
$sql .= ” limit $items”;
else
createErrorDocument(“Item ist kein numerischer Wert!”);

#—
# Wenn als Parameter “RDF” uebergeben wurde, dann RDF zurueckgeben,
# ansonsten XML.
#—
$format = strtoupper($_GET[“format”]);
if ($format != “RDF” )
print createXML($sql, $db);
else
print createRDF($sql, $db);

?>

1.2. backend_soap.php
register(“backend”);

function backend($cat, $items=0, $protocol=”xml”)
{

global $base_url;

$sql_file = “include/sql_$cat.php”;
if (! file_exists($sql_file) )
return “Error!”;
include ($sql_file);

if (is_numeric($items))
$sql .= ” limit $items”;

return createXML($sql, $db);

}

$s->service($HTTP_RAW_POST_DATA);

?>

1.3. backend_base.php
read($sql);

#– Daten in einem assosiativen Feld speichern
while ($row = $db->get())
$feld[] = array(“title” => $row[“title”],
“description” => $row[“description”],
“link” => $row[“href”]);

$db->close(); #— Datenbank schliessen

return $feld; #– das assosiative Feld zurueckgeben

} //teleschau()

#———————————————————————————–
function createErrorDocument($reason)
{
print $reason;
die(); #— Programm beenden
}

#———————————————————————————–
# Hier werden die Fehler abgefangen, wenn kein Parameter “cat” angegeben oder
# eine Kategorie angegeben wurde, zu der keine entsprechende “include/sql_*”-
# Datei vorhanden ist.
#
# IN: $errno: Fehlernummer
# $errstr: Fehlerbeschreibung
# $errfile: Datei, in der der Fehler auftrat
# $errline: Zeile, in der der Fehler auftrat
# OUT: N/A
#—–

function catNotFoundError($errno, $errstr, $errfile, $errline)
{
switch ($errno)
{
case 2:
{
createErrorDocument(“Kategorie konnte nicht gefunden werden.”);
break;
} //case
case 8:
{
createErrorDoument(“Es wurde keine Kategorie angegeben.”);
break;
} //case
default:
print “
Fehler: [$errno] $errstr.
“;
} //switch

die(); #— Programmausfuehrung abbrechen

} //function()

#———————————————————————————–
# Diese Funktion erstellt einen String, der die aus der Datenbank erhaltenen
# Daten als XML-Baum darstellt.
#
# IN: $sql: SQL-String
# $db: Datenbank, aus der gelesen werden soll
# OUT: $xml: String mit der XML-Datenstruktur
#—–
function createXML($sql, $db)
{

#—
# Erzeugen eines neuen Text-Kind-Elements
#—
function new_child($doc, $parent, $name, $value)
{
$child = $parent->append_child($doc->create_element($name));
return $child = $child->append_child($doc->create_text_node($value));
} //new_child()

#—
# Das Root-ELement erzeugen, der Name ist immer “channel”.
#—
$doc = domxml_new_doc(“1.0”);
$root = $doc->create_element(“channel”);
$root = $doc->append_child($root);

#—
# neues Titel-Element erzeugen
# “Wie heisst unser Channel?”
#—

new_child($doc, $root, “title”, “nightloop.de”);
new_child($doc, $root, “link”, “http://www.nightloop.de/”);
new_child($doc, $root, “description”, “die party community des nordwest-net”);
new_child($doc, $root, “language”, “de-DE”);
new_child($doc, $root, “creator”, “Lutz Schroeer (Lutz.Schroeer@team.nwn.de)”);
new_child($doc, $root, “rights”, “Copyright ” . date(“Y”) . ” nordwest.net”);
new_child($doc, $root, “image”, “http://www.nightloop.de/pics/logo.gif”);

#—
# Die noetigen Daten aus der Datenbank holen und die Felder
# in den XML-Baum einfuegen.
#—
foreach (retrieve_db($sql, $db) as $item)
{
$new_item = $root->append_child($doc->create_element(“item”));
new_child($doc, $new_item, “title”, ($item[“title”]));
new_child($doc, $new_item, “link”, ($item[“link”]));
new_child($doc, $new_item, “description”, ($item[“description”]));
} //foreach

#—
# Eine mit UTF-8 kodierten XML-String an den Aufrufer zurueckgeben.
#—
# return utf8_encode($doc->dump_mem(1, “utf-8”));

$doc = utf8_encode($doc->dump_mem(1, “utf-8”));
return $doc;

} //create_XML()

#———————————————————————————————
function createRDF($sql, $db)
{

global $title, $description, $link, $language, $creator, $rights, $image, $publisher;

#—
# Erzeugen eines neuen Text-Kind-Elements
#—
function new_child($doc, $parent, $name, $value)
{
$child = $parent->append_child($doc->create_element($name));
return $child = $child->append_child($doc->create_text_node($value));
} //new_child()

#—
# Erzeugen eines neuen Text-Kind-Elements mit Attributen
#—
function new_attribute_child($doc, $parent, $name, $value, $key, $key_value)
{
$child = $parent->append_child($doc->create_element($name));
$child = $child->set_attribute($key, $key_value);
return $child = $child->append_child($doc->create_text_node($value));
} //new_child()

#—
# Das Root-ELement erzeugen, der Name ist immer “channel”.
#—
$doc = domxml_new_doc(“1.0”);
$root = $doc->create_element(“rdf:RDF”);
$root = $doc->append_child($root);
$root->set_attribute(“xmlns:rdf”, “http://www.w3.org/1999/02/22-rdf-syntax-ns#”);
$root->set_attribute(“xmlns:dc”, “http://purl.org/dc/elements/1.1/”);

$channel = $root->append_child($doc->create_element(“channel”));
$channel->set_attribute(“rdf:about”, “http://www.nightloop.de”);

new_child($doc, $channel, “dc:title”, $title);
new_child($doc, $channel, “dc:link”, $link);
new_child($doc, $channel, “dc:description”, $description);
new_child($doc, $channel, “dc:language”, $language);
new_child($doc, $channel, “dc:date”, date(“Y-m-d\TH:i:s+01:00”) );
new_child($doc, $channel, “dc:creator”, $creator);
new_child($doc, $channel, “dc:publisher”, $publisher);
new_child($doc, $channel, “dc:type”, “World Wide Web Home Page”);

# Nun die Resourcen-Liste
$items = $channel->append_child($doc->create_element(“items”));
$rdfseq = $items->append_child($doc->create_element(“rdf:Seq”));

$schlagzeilen = retrieve_db($sql, $db);
foreach($schlagzeilen as $schlagzeile)
new_attribute_child($doc, $rdfseq, “rdf:li”, “”, “rdf:resource”,
substr($schlagzeile[“link”], strpos(“http://”, $schlagzeile[“link”])));

$string = substr($string, 0, strpos($string,$sep2));

# foreach (retrieve_db($sql, $db) as $item)
foreach ($schlagzeilen as $item)
{
$new_item = $items->append_child($doc->create_element(“item”));
new_child($doc, $new_item, “title”, ($item[“title”]));
new_child($doc, $new_item, “link”, ($item[“link”]));
new_child($doc, $new_item, “description”, ($item[“description”]));
} //foreach

return utf8_encode($doc->dump_mem(1, “utf-8”));

}

?>

1.4. include/config.inc

1.5. include/sql_magazin_stars.php

1.6. include/sql_magazin_soundcheck.php

2. PHP-Client
2.1. client.php
, )
# Durch das Einbinden unterschiedlicher Module kann man sich hier entscheiden,
# ob die Uebrtragung der Daten wie eine uebliche Web-Seite stattfindet oder
# per SOAP.

# Fuer die Uebertragung per WWW:
#include “include/inc_client_http.php”;

#Fuer die Uebertragung per SOAP:
include “include/inc_client_soap.php”;

#——————————————————————————
# Erstellt ein Inline-Stylesheet um die Tabelle und die Datenfelder formatiert
# darstellen zu koennen.
#—–
function getInlineStyleSheet()
{

?>

“;
print “

“;

foreach ($schlagzeilen as $schlagzeile)
{
print “

“;
} //foreach

} //showPanel)

#——————————————————————————
# MAIN
#—–
list($channel_data, $schlagzeilen) = getNightloop(“magazin_stars”, 10);
showPanel($channel_data, $schlagzeilen);

?>

2.2. include/inc_client_http.php
child_nodes() as $child)
if ( ($child->node_type() == XML_ELEMENT_NODE) && ($child->tagname() == $tagname) )
foreach ($child->child_nodes() as $sub)
if ($sub->node_type() == XML_TEXT_NODE)
return trim(utf8_decode($sub->content));
} //getElement()

#——————————————————————————
# function getChannelData():
# Mit einer XPath-Abfrage wird nach dem -Element gesucht und alle
# Nachfolge-Elemente mit Ausnahme der -Elemente ausgelesen und in einem
# assoziativen Feld gespeichert. Dieses Feld wird an den Aufrufer zureuckgegeben.
# IN: $ctx: DOM-Kontext
# OUT: assoziatives Feld mit den Channel-Daten (title, link, description”
# language, creator, rights, image)
#—–
function getChannelData($ctx)
{
$result = xpath_eval($ctx, “/channel”);
$nodes = $result->nodeset;

foreach ($nodes as $node)
$channel_feld = array (“title” => getElement($node, “title”),
“link” => getElement($node, “link”),
“description” => getElement($node, “description”),
“language” => getElement($node, “language”),
“creator” => getElement($node, “creator”),
“rights” => getElement($node, “rights”),
“image” => getElement($node, “image”));

return $channel_feld;

} //getChannelData()

#——————————————————————————-
# function getNightloop():
# IN: $channel (string): Kategorie der Schlagzeilen
# $items (integer): Anzahl der zurueckzugebenden Schlagzeilen
# OUT: Feld mit zwei assoziativen Feldern, die die Channel-Daten und die Daten
# der Schlagzeilen enthalten.
#—–
function getNightloop($channel, $items)
{
$doc = getXML($channel, $items); #– Die XML-datei vom Server holen.
$dom = domxml_open_mem($doc); #– Ein DOM im Speicher zeugen.
$ctx = xpath_new_context($dom); #– Einen XPath-Kontext erzeugen.
$channel_data = getChannelData($ctx); #– Die Channel-daten holen.

#—–
# und jetzt die Items auslesen.
#—–
$result = xpath_eval($ctx,”//item”); #– Nach *allen* Items suchen.
$nodes = $result->nodeset; #– Aus dem Objekt eine Liste erstellen.

#—–
# Aus den Nodes ein assoziatives Feld erstellen.
#—–
foreach ($nodes as $node)
$feld[] = array(“title” => getElement($node, “title”),
“description” => getElement($node, “description”),
“link” => getElement($node, “link”));

return array($channel_data, $feld); #— Das Channel- und Itemsfeld zurueckgeben.

} //getNightloop

?>

2.3. include/inc_client_soap.php
$channel, “items”=>$items);

# Den SOAP-Server abfragen und den XML-String zurueckgeben.
return $soap_client->call(‘backend’, $parameters);

}

#—————————————————————————
# function getElement():
# Aus den Nachfolger-Nodes des uebergebenden Nodes wird der Wert des
# ersten Textnode gesucht und zurueckgegeben. Wurde kein Textnode gefunden
# bleibt der Rueckgabewert undefiniert.
#
# IN: $node: Node, dessen Textelement ausgelesen werden sollen
# $tagname (string): Name des auszulesenden Textelements
# OUT: Wert des Textnodes
#—–
function getElement($node, $tagname)
{
foreach ($node->child_nodes() as $child)
if ( ($child->node_type() == XML_ELEMENT_NODE) && ($child->tagname() == $tagname) )
foreach ($child->child_nodes() as $sub)
if ($sub->node_type() == XML_TEXT_NODE)
return trim(utf8_decode($sub->content));
} //getElement()

#——————————————————————————
# function getChannelData():
# Mit einer XPath-Abfrage wird nach dem -Element gesucht und alle
# Nachfolge-Elemente mit Ausnahme der -Elemente ausgelesen und in einem
# assoziativen Feld gespeichert. Dieses Feld wird an den Aufrufer zureuckgegeben.
# IN: $ctx: DOM-Kontext
# OUT: assoziatives Feld mit den Channel-Daten (title, link, description
# language, creator, rights, image)
#—–
function getChannelData($ctx)
{
$result = xpath_eval($ctx, “/channel”);
$nodes = $result->nodeset;

foreach ($nodes as $node)
$channel_feld = array (“title” => getElement($node, “title”),
“link” => getElement($node, “link”),
“description” => getElement($node, “description”),
“language” => getElement($node, “language”),
“creator” => getElement($node, “creator”),
“rights” => getElement($node, “rights”),
“image” => getElement($node, “image”));

return $channel_feld;

} //getChannelData()

#——————————————————————————-
# function getNightloop():
# IN: $channel (string): Kategorie der Schlagzeilen
# $items (integer): Anzahl der zurueckzugebenden Schlagzeilen
# OUT: Feld mit zwei assoziativen Feldern, die die Channel-Daten und die Daten
# der Schlagzeilen enthalten.
#—–
function getNightloop($channel, $items)
{
$doc = getXML($channel, $items); #– Die XML-datei vom Server holen.
$dom = domxml_open_mem($doc); #– Ein DOM im Speicher zeugen.
$ctx = xpath_new_context($dom); #– Einen XPath-Kontext erzeugen.
$channel_data = getChannelData($ctx); #– Die Channel-daten holen.

#—–
# und jetzt die Items auslesen.
#—–
$result = xpath_eval($ctx,”//item”); #– Nach *allen* Items suchen.
$nodes = $result->nodeset; #– Aus dem Objekt eine Liste erstellen.

#—–
# Aus den Nodes ein assoziatives Feld erstellen.
#—–
foreach ($nodes as $node)
$feld[] = array(“title” => getElement($node, “title”),
“description” => getElement($node, “description”),
“link” => getElement($node, “link”));

return array($channel_data, $feld); #— Das Channel- und Itemsfeld zurueckgeben.

} //getNightloop

?>

3. Perl-Client
3.1. nightloop.pm
package nightloop;

use XML::XPath; # XPAth-Ausdruecker ermoeglichen.
use XML::XPath::XMLParser; # XML-Parsing ermoeglichen.
use XML::XPath::NodeSet;
use Encode; # UTF8-Dekodierung erlauben.

use Exporter; # Tool zu Modulerstellung.
$VERSION=1.0; # Versionsnummer dieses Moduls.

@EXPORT = qw(getNightloop); # Es soll nur die Subroutine “getNightloop”
# exportiert werden.

#———————————————————————–
# sub getXML_HTTP
#
# Diese Subroutine holt sich vom Server per HTTP ein Dokument, das
# Schlagzeilen aus der Kategoprie beinhaltet.
#
# IN: CAT (string) => Kategorie, die uebertragen werden soll
# — ITEMS (int) => Anzahl der zu uebertragenden Schlagzeilen
# OUT: (string) => XML-Dokument mit den Schlagzeilen
# —-
#——

sub getXML_HTTP
{

use LWP::Simple; # Webzugriff ermoeglichen.

my %arg = ( CAT => ‘xxx’, # Kategorie
ITEMS => -1, # Anzahl
@_,); # Hier steht die Liste der Argumentenpaare

# URI des Backend-Skriptes
my $url = “http://develop.nwn.int/schroeer/tennis/soap/backend.php”;

# die URI entsprechend den Parametern aufbereiten
$url .= “?cat=$arg{CAT}”;

# Wenn angegeben wurden, URI aufbereiten
if (ITEMS>=0)
{
$url .= “&items=$arg{ITEMS}”;
} #if

# Die Daten vom Server uebertragen und an den Aufrufer zurueckgeben.
return get($url);

} #getXML_HTTP()

#———————————————————————–
# sub getXML_SOAP
#
# Diese Subroutine holt sich vom Server per SOAP ein Dokument, das
# Schlagzeilen aus der Kategoprie beinhaltet.
#
# IN: CAT (string) => Kategorie, die uebertragen werden soll
# — ITEMS (int) => Anzahl der zu uebertragenden Schlagzeilen
# OUT: (string) => XML-Dokument mit den Schlagzeilen
# —-
#——

sub getXML_SOAP
{

($cat, $items) = @_; # Parameter uebernehmen.

use SOAP::Lite; # Das notwendige SOAP-Modul einbinden.

# URI des SOAP-Backend-Skriptes
$url = “http://develop.nwn.int/schroeer/tennis/soap/backend_soap.php”;

# Das SOAP-Modul mit den entprechenden Parametern aufrufen und das
# XML Dokument als String an den Aufrufer zurueckgeben.
return SOAP::Lite
-> uri(‘http://nightloop.de/Backend/’)
-> proxy($url)
-> backend($cat, $items)
-> result;

} #getXML_SOAP()

#————————————————————————
#
#
# IN: $tag (string): XPATH-Ausdruck des zu findenden Tags.
# — $node (node): (Sub-) Node, der das Tag enthaelt.
#
# OUT: (string): Der Wert des $tag-Elements
# —-
#——

sub getElement
{

(my $tag, my $node) = @_; # Parameter uebernehmen

$child = $node->find($tag); # gefordertes Element aus dem XML-
# Dokument auslesen

$child =~ s/^\s+//; # remove leading whitespace
$child =~ s/\s+$//; # remove trailing whitespace

return decode(“utf8″, $child); # String mit UTF-8 dekodieren und
# an den Aufrufer zurueckgeben

} #getElement()

#————————————————————————
#
# IN: N/A
# —
#
# OUT: (hash array): Assoziatives Feld mit den Channel-Daten
# —-
#——

sub getChannelData
{

%feld = (); # Das Array initialisieren

$nodes = $xp->find(‘/channel’); # XPATH-Ausdruck fuer das Channel-Tag

# Alle Sub-Nodes von Channel ueberpruefen und das Feld
# entsprechend belegen.
foreach my $node ($nodes->get_nodelist)
{
$feld{title} = getElement(‘title’, $node);
$feld{description} = getElement(‘description’, $node);
$feld{link} = getElement(‘link’, $node);
$feld{language} = getElement(‘language’, $node);
$feld{creator} = getElement(‘creator’, $node);
$feld{rights} = getElement(‘rights’, $node);
$feld{image} = getElement(‘image’, $node);
} #foreach

return %feld; # Das assoziative Feld an den Aufrufer zurueckgeben.

} #getChannelData()

#————————————————————————
#
# IN: $channel (string):
# — $items (int):
# $protocol (string):
#
# OUT: ( array (hash array, hash array) ) Daten und Schlagzeilen des Channels
# —-
#——

sub getNightloop
{

my %arg = ( channel => ”,
items => 10,
protocol => “HTTP”,
@_,); # Hier steht die Liste der Argumentenpaare

# parameter an lokale Variablen uebergeben
my $channel = $arg{‘channel’};
my $items = $arg{‘items’};
my $protocol = $arg{‘protocol’};

# Welches Protokoll soll benutzt werden?
my $xml;
if ($protocol == “HTTP”)
{
$xml = getXML_HTTP(CAT => $channel, ITEMS => $items);
} #if
else
{
$xml = getXML_SOAP(CAT => $channel, ITEMS => $items);
} #else

# Ein neues globales XPath-Object erstellen
$xp = XML::XPath->new($xml);

# Die Channel-Daten in ein globales Array speichern
%channelData = getChannelData();

$nodes = $xp->find(‘//item’); #XPath auf alle -Elemente

@items= (); # globales Array initialisieren

# Alle Nodes durchsuchen und das Array entsprechend fuellen
foreach my $node ($nodes->get_nodelist)
{
push @items, { ‘title’ => getElement(‘title’, $node),
‘description’ => getElement(‘description’, $node),
‘link’ => getElement(‘link’, $node)
};
} #foreach

# Referenzen auf die beiden Felder an den Aufrufer zurueckgeben
return (\%channelData, \@items);

} #getNightloop

#–eof

3.2. client.pl
#!/usr/bin/perl

use nightloop;
use CGI;

#——————————————————————————
# Erstellt ein Inline-Stylesheet um die Tabelle und die Datenfelder formatiert
# darstellen zu koennen.
# IN: N/A
# —
# OUT: (string) Stylesheet-Informationen
# —-
#——
sub getInlineStyleSheet
{

return qq{

}; #– qq

} #– getInlineStylesheet()

#——————————————————————————
# Erzeugen der Ausgabe-Tabelle
#—–
sub showPanel
{
($channeldata, $schlagzeilen) = @_; # Parameter uebernehmen

print CGI::header(); # HTML-Header-Daten ausgeben
print CGI::start_html(‘Nightloop.de’); # HTML-Start-Tags ausgeben

print getInlineStyleSheet(); #– Stylesheet zur Formatierung erzeugen

# Neue Tabelle erzeigen und einen Tabellenkopf mit Titel, link und Logo erzeugen
print qq{

“;
print ““;
print “
<" . $schlagzeile["link"] . ">” . $schlagzeile[“title”].”” .

” . $schlagzeile[“description”] . “

};
} #– foreach

print “

  • <$schlagzeile->{“link”}>$schlagzeile->{“title”}

    $schlagzeile->{“description”}
  • “;

    print CGI::end_html();

    } #– showPanel()

    #—————————————————————————–

    ($channeldata, $items) = nightloop::getNightloop( channel => “magazin_stars”,
    protocol => “HTTP”,
    items => 2
    );
    showPanel($channeldata, $items);

    4. Web-Interface
    4.1. syndic8.php


    <br /> nightloop.de — Content Syndication<br />


    Kategorie:
    Anzahl Schlagzeilen:
    array("name" => "titelfarbe", "default" => "#ffffff"),
    "Titelhintergrund" => array("name" => "titelhintergrund", "default"=>"#000000"),
    "Hintergrund" => array("name" => "hintergrund", "default" => "#ffffff"),
    "Text" => array("name" => "textfarbe", "default" => "#000000"),
    "Neuer Link" => array("name" => "neuerlink", "default" => "#0000ff"),
    "Hover Link" => array("name" => "hoverlink", "default" => "#0000ff"),
    "Besuchter Link" => array("name" => "besuchterlink", "default" => "#ff00ff"),
    "Tabellenrand"=>array("name"=>"tabellenrand", "default" => "#000000")
    );

    while (list($key,$value) = each ($felder))
    {
    print "

    ";
    print "

    ";
    print "

    ";
    print "

    ";
    }
    ?>

    $key
    Stärke Tabellenrand
    Textausrichtung
    Sprache


    read($sql);

    #-- Daten in einem assosiativen Feld speichern
    while ($row = $db->get())
    $feld[] = array("title" => $row["title"],
    "description" => $row["description"],
    "link" => $row["href"]);

    $db->close(); #--- Datenbank schliessen

    ?>

    \n";
    ?>

    nightloop.de
    die nwn party community
  • " . $schlagzeile["title"] .
    "
    " . $schlagzeile["description"] . "


  • Hinweise:

  • Die Farben für die Links können leider nicht interaktiv dargestellt werden.

  • © 2003 nordwest.net 


    4.2. syndic8.css
    body {
    margin: 0px;
    background-color: aabbcc;
    color: black;
    }

    #header {
    border: 0px;
    background-color: #001743;
    border-collapse: collapse;
    padding: 0px;
    }

    #heading { /* Ueberschrift */
    font-weight: bolder;
    font-family: sans-serif;
    }

    #leftcontent { /* Linker Block */
    float: left;
    width: 50%;
    background-color:#fff;
    border: 2px solid #000;
    margin-right: 15px;
    margin-left: 10px;
    }

    #rightcontent {
    padding-left: 10px;
    margin-top: 10px;
    margin-right: 10px;
    }

    #whiteline {
    border-top: 2px solid #fff;
    border-bottom: 2px solid #fff;
    }

    #innertable {
    border: 1px solid #000;
    border-collapse: collapse;
    margin-left: auto;
    margin-right: auto;
    margin-top: 5px;
    }

    #unten {
    border-top: 1px solid #fff;
    position: absolute;
    bottom: 0px;
    background-color: #001743;
    width: 100%;
    color: white;
    text-align: right;
    }

    #eingabefeld {
    border: 1px solid #000;
    }

    #hinweise
    {
    margin-left: 10px;
    margin-top: 10px;
    }

    #nltitel {
    color: #ffffff;
    background-color: #000000;
    }

    .nl {
    border-color: #000;
    border-style: solid;
    border-width: 1px;
    border-collapse: collapse;
    background-color: #fff;
    }

    4.3. colorchooser.php

    Color Chooser

    ";

    $size = 14;
    for ($i=0;$i<8;$i++) { print " ";
    $farbe = $farben[$i];
    for ($j=0;$j<17;$j++) { print " " .
    "" .
    "\"#$farbe[$j]\"".
    "

    ";
    }
    print "

    ";
    }
    print "

    ";
    ?>

    4.4. template.php
    0) # Variable in Zeile gefunden
    foreach (explode($trenner, $zeile) as $part) # Zeile aufteilen
    if ($part{0} == "$") # $ bezeichnet Variable
    eval ("print $part;"); # Åusgabe der Variablen
    else
    print $part; # simpler Text

    else
    print $zeile; # simple Zeile

    } # Ausgabe

    ?>


    <br /> nightloop.de --- content syndication<br />

    Um das Nightloop-Panel auf Ihrer web-Seite nutzen zu können benötigen Sie ein Modul, das alle
    notwendigen Routinen beinhaltet
    (Download) und eine Code-Vorlage, die Sie in Ihr -Skript einfügen müssen.

    Diesen Code kopieren und an die gewünschte Stelle in Ihrem Skript einfügen:




    4.5. vorlage.perl.txt
    sub getInlineStyleSheet()
    {
    print qq{

    };

    } #getInlineStyleSheet()

    sub showPanel($channel_data, $schlagzeilen) { getInlineStyleSheet(); #-- Stylesheet zur Formatierung erzeugen

    print "

    "; print "

    ";

    foreach ($schlagzeilen as $schlagzeile) { print "

    "; } #foreach

    } #showPanel()

    list($channel_data, $schlagzeilen) = getNightloop(//$kategorie//, //$items//); showPanel($channel_data, $schlagzeilen);

    4.6. vorlage.php.txt

    "; print ""; print "
    <" . $schlagzeile["link"] . ">" . $schlagzeile["title"]."" . "
    " . $schlagzeile["description"] . "
    ";
    print "

    ";

    foreach ($schlagzeilen as $schlagzeile)
    {
    print "

    ";
    } //foreach

    } //showPanel)

    list($channel_data, $schlagzeilen) = getNightloop("//$kategorie//", //$items//);
    showPanel($channel_data, $schlagzeilen);

    ?>

    ";
    print "";
    print "
    <" . $schlagzeile["link"] . ">" . $schlagzeile["title"]."" .
    "
    " . $schlagzeile["description"] . "