Verfasst: Do 26. Jan 2006, 10:19
ich habe hier mal (m)eine version ohne startartikel - ohne garantie
di geschichte mit der teilung ist doch ne gröbere sache input immernoch herzlich willkommen
di geschichte mit der teilung ist doch ne gröbere sache input immernoch herzlich willkommen
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.lastmodified '.$order;
}
/*
* Absetzen des Queries.
*/
$this->db->query("" .
"SELECT " .
" b.idart " .
"FROM {$this->cfg['tab']['cat_art']} as a, " .
"{$this->cfg['tab']['cat_lang']} as c " .
"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 " .
" AND a.idcat = c.idcat " .
" AND b.idartlang != c.startidartlang " .
"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);
$startPosition = ($this->first != '') ? (1) : (0);
$endPosition = ($this->last != '') ? (count($this->articles) - 1) : (count($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> ';
} 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>';
}
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 ' <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:underline;');
// Styleangabe für den aktuellen Artikel
$pageTurning->aStyleSelected('font-weight:bold; color:red;');
// Anzeige für vorige Seite
$pageTurning->previousPage('<<< ');
// Anzeige nächste Seite
$pageTurning->nextPage(' >>>');
// Alternativausgabe für die erste Seite (anstatt 1)
$pageTurning->first(' FirstPage ');
// Alternativausgabe für die letzte Seite
$pageTurning->last(' LastPage ');
// Ausgabe vor der Blätterleiste
$pageTurning->before('<div width="559px" align="center" style="padding:20px;">');
// Ausgabe zwischen zwei Seitenzahlen
$pageTurning->between(' ');
// Ausgabe nach der Blätterleiste
$pageTurning->after('</div>');
// Ausgabe an den Browser
$pageTurning->show();
?>