Code: Alles auswählen
<?php
/**
* $Revision: 1.12 $
* $Source: D:/cvs/cvsrepo/test/PPI_Nade/module/pageTurning/output.php,v $
* $Date: 2005/11/29 18:36:15 $
*/
/**
* pageTurning
* @author Andreas Kummer
* @copyright Copyright © 2005 w3concepts AG
*/
if (!class_exists('pageTurning')) {
class pageTurning {
/**
* Konstruktor der Klasse.
* @param String Ordnungsprinzip (sorted, alphabetical, created,
* modified).
* @param Boolean True = ASC, False = DESC
*/
function pageTurning($sortCriteria, $asc = true) {
global $client, $lang, $idcat, $cfg, $idart;
$this->client = $client;
$this->lang = $lang;
$this->idcat = $idcat;
$this->cfg = $cfg;
$this->idart = $idart;
$this->before('<div>');
$this->after('</div>');
$this->between(' | ');
$this->first('');
$this->last('');
$this->aClass('');
$this->aStyle('text-decoration:none;');
$this->aStyleSelected('font-weight:bold;');
$this->previousPage('<<<');
$this->nextPage('>>>');
$this->db = new DB_Contenido();
$this->readArticles($sortCriteria, $asc);
}
/**
* Setzt den Text für den ersten Eintrag.
* @param String Text für den ersten Eintrag.
*/
function first($text) {
$this->first = $text;
}
/**
* Setzt den Text für den letzten Eintrag.
* @param String Text für den letzten Eintrag.
*/
function last($text) {
$this->last = $text;
}
/**
* Setzt den HTML-Code, der vor der Blätteranzeige ausgegeben wird.
* @param String HTML-Code, der vor der Blätteranzeige ausgegen werden
* wird.
*/
function before($text) {
$this->before = $text;
}
/**
* Setzt den HTML-Code, der nach der Blätteranzeige ausgegeben werden
* wird.
* @param String HTML-Code, der nach der Blätteranzeige ausgegeben
* werden wird.
*/
function after($text) {
$this->after = $text;
}
/**
* Setzt den Text, der zwischen zwei Seitenzahlen ausgegeben werden
* wird.
* @param String Text, der zwischen zwei Seitenzahlen ausgegeben werden
* wird.
*/
function between($text) {
$this->between = $text;
}
/**
* Setzt den Klassennamen, der für die Links zu verwenden ist.
* @param String Klassenname, der den Links zuzuordnen ist.
*/
function aClass($name) {
$this->aClass = $name;
}
function aStyle($style) {
$this->aStyle = $style;
}
function aStyleSelected($style) {
$this->aStyleSelected = $style;
}
function previousPage($text) {
$this->previousPage = $text;
}
function nextPage($text) {
$this->nextPage = $text;
}
/**
* Liest die Artikel der aktuellen Kategorie ein.
* @param String Ordnungsprinzip.
* @param Boolean True = aufsteigend, False = absteigend
*/
function readArticles($sortCriteria, $asc) {
/*
* Ordnungsprinzip fest legen
*/
$order = ($asc) ? ('ASC') : ('DESC');
/*
* Sortierkriterium fest legen
*/
switch ($sortCriteria) {
case 'created':
$sortOrder = 'b.created '.$order;
break;
case 'modified':
$sortOrder = 'b.lastmodified '.$order;
break;
case 'sorted':
$sortOrder = 'b.artsort '.$order.', b.title '.$order;
break;
case 'alphabetical':
$sortOrder = 'b.title '.$order;
break;
default:
$sortOrder = 'b.created '.$order;
}
/*
* Absetzen des Queries.
*/
$this->db->query("" .
"SELECT " .
" b.idart " .
"FROM {$this->cfg['tab']['cat_art']} as a " .
"LEFT JOIN {$this->cfg['tab']['art_lang']} as b ON a.idart = b.idart " .
"WHERE " .
" a.idcat = {$this->idcat} " .
" AND b.idlang = {$this->lang} " .
" AND b.online = 1 " .
"ORDER BY " .
" $sortOrder " .
"");
while ($this->db->next_record()) {
$this->articles[] = $this->db->f('idart');
}
}
/**
* Gibt die Blätterleiste an die Standardausgabe aus.
*/
function show() {
if (empty($this->articles) || count($this->articles) == 1) {
return false;
}
/*
* Ermittlung der aktuellen Position
*/
$position = array_search ($this->idart,$this->articles);
/*
* Ausgabe Previous
*/
if ($position > 0) {
$previous = $position - 1;
echo $this->before.'<a href="front_content.php?idcat='.$this->idcat.'&idart='.$this->articles[$previous].'&lang='.$this->lang.'&client='.$this->client.'" class="'.$this->aClass.'">'.$this->previousPage.'</a>'.$this->between;
} else {
echo $this->before;
}
if ($this->first != '') {
/*
* Ausgabe Link auf die erste Seite
*/
echo '<a href="front_content.php?idcat='.$this->idcat.'&idart='.$this->articles[0].'&lang='.$this->lang.'&client='.$this->client.'" class="'.$this->aClass.'">'.$this->first.'</a>';
}
$startPosition = ($this->first != '') ? (1) : (0);
$endPosition = ($this->last != '') ? (count($this->articles) - 1) : (count($this->articles));
for ($i = $startPosition; $i < $endPosition; $i++) {
$seite = $i + 1;
if ($i > 0) {
echo $this->between;
}
$style = ' style="'.$this->aStyle;
if ($i == $position) {
$style .= $this->aStyleSelected;
}
$style .= '"';
echo '<a href="front_content.php?idcat='.$this->idcat.'&idart='.$this->articles[$i].'&lang='.$this->lang.'&client='.$this->client.'" class="'.$this->aClass.'"'.$style.'>'.$seite.'</a>';
}
if ($this->last != '') {
/*
* Ausgabe Link auf die letzte Seite
*/
echo $this->between.'<a href="front_content.php?idcat='.$this->idcat.'&idart='.$this->articles[count($this->articles)-1].'&lang='.$this->lang.'&client='.$this->client.'" class="'.$this->aClass.'">'.$this->last.'</a>';
}
/*
* Ausgabe Next
*/
if ($position < count($this->articles) - 1) {
$next = $position + 1;
echo $this->between.'<a href="front_content.php?idcat='.$this->idcat.'&idart='.$this->articles[$next].'&lang='.$this->lang.'&client='.$this->client.'" class="'.$this->aClass.'">'.$this->nextPage.'</a>'.$this->after;
} else {
echo $this->after;
}
}
}
}
// Klasseninstantiierung
$pageTurning = new pageTurning('created');
// Angabe der zu verwendenden A-Klasse (für die Links)
$pageTurning->aClass('');
// Styleangabe für alle Links
$pageTurning->aStyle('text-decoration:none;');
// Styleangabe für den aktuellen Artikel
$pageTurning->aStyleSelected('font-weight:bold;');
// Anzeige für vorige Seite
$pageTurning->previousPage('<<<');
// Anzeige nächste Seite
$pageTurning->nextPage('>>>');
// Alternativausgabe für die erste Seite (anstatt 1)
// $pageTurning->first('Erste Seite');
// Alternativausgabe für die letzte Seite
// $pageTurning->last('');
// Ausgabe vor der Blätterleiste
$pageTurning->before('<div>');
// Ausgabe zwischen zwei Seitenzahlen
$pageTurning->between(' | ');
// Ausgabe nach der Blätterleiste
$pageTurning->after('</div>');
// Ausgabe an den Browser
$pageTurning->show();
?>
gruss,
andreas