modul für 4.5.2 alpha :: w3concepts.alist.thumbs.v1
Verfasst: Do 11. Nov 2004, 15:45
noch ne artikelliste. diesmal für die 4.5.2 alpha... es hat da ja ein paar änderungen gegeben, weshalb nicht alle artikellistenmodule der 4.4.4 funktionieren.
dieses modul hat nur die rumpffunktionen der übrigen artikellisten und dürfte primär als ausgangspunkt dienen.
es hat folgende features:
* automatische thumbnailgenerierung, wenn ein bild im bildmodul 1 vorliegt
* teaser wird aus der seitenzusammenfassung ungekürzt übernommen
* titel wird dem seitentitel entnommen
* startartikel sind ausgeblendet
* geht bis zu 2 kategorieebenen in die tiefe
input-bereich:
gruss,
andreas
dieses modul hat nur die rumpffunktionen der übrigen artikellisten und dürfte primär als ausgangspunkt dienen.
es hat folgende features:
* automatische thumbnailgenerierung, wenn ein bild im bildmodul 1 vorliegt
* teaser wird aus der seitenzusammenfassung ungekürzt übernommen
* titel wird dem seitentitel entnommen
* startartikel sind ausgeblendet
* geht bis zu 2 kategorieebenen in die tiefe
input-bereich:
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.alist.thumb.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 07-11-2004
* Modified : 07-11-2004
************************************************/
class pfadAlistThumb {
function pfadAlistThumb($pfad) {
$this->pfad = $pfad;
$this->pathlen = strlen($this->pfad);
}
function getPath($root,$level = 0) {
$content = $this->readDir($root);
foreach ($content as $file) {
if (is_dir($root.$file)) {
$verzeichnis = substr($root,$this->pathlen);
$returnvalue["{$verzeichnis}{$file}/"] = str_repeat(" ",$level * 5).$file;
$returnvalue = array_merge($returnvalue,$this->getPath($root.$file."/",$level+1));
}
}
return $returnvalue;
}
function readDir($path) {
$handle = opendir($path);
while ($file = readdir ($handle)) {
if ($file != "." && $file != "..") $returnvalue[] = $file;
}
closedir($handle);
return $returnvalue;
}
function makeSelect($preselection) {
$pfad = $this->getPath($this->pfad);
foreach ($pfad as $key => $value) {
echo "$key :: $value<br/>\n";
if ($preselection == $key) {
echo "<option value=\"$key\" selected=\"selected\">$value</option>";
} else {
echo "<option value=\"$key\">$value</option>";
}
}
}
}
$pfad = new pfadAlistThumb($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload']);
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">";
echo "<tr><td>Thumbnailpfad:</td>";
echo "<td><select size=\"1\" name=\"CMS_VAR[0]\" />";
$pfad->makeSelect("CMS_VALUE[0]");
echo "</td>";
echo "<tr valign=\"top\"><td>Kategorie wählen:</td><td><select name=\"CMS_VAR[1]\">";
$selected = "CMS_VALUE[1]";
if($selected!="0" && $selected!=""){
echo"<option value=\"0\">--- kein ---</option>";
} else {
echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}
$sql = "
SELECT a.idcat, a.level, c.name
FROM {$cfg['tab']['cat_tree']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat_lang']} AS c
WHERE
a.idcat = b.idcat
AND b.idcat = c.idcat
AND c.idlang='$lang'
AND b.idclient='$client'
AND c.visible = 1
ORDER BY a.idtree
";
$db->query($sql);
while ($db->next_record()) {
$spaces = "|";
$levels = $db->f("level");
for ($i = 0; $i < $levels; $i ++) {
$spaces = $spaces . "--";
}
$spaces .= ">";
if ($selected == $db->f("idcat")) {
echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} else {
echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
}
}
echo "</select></td></tr>";
echo "<tr><td>Anzahl Artikel je Seite:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\" size=\"3\" /></td>";
echo "<tr><td>Text für Previous-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"15\" /></td>";
echo "<tr><td>Text für Next-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"15\" /></td>";
echo "<tr><td>Thumbnail-Breite:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\" size=\"5\" /></td>";
echo "<tr><td>Artikel anzeigen bis:</td>";
echo "<td><select name=\"CMS_VAR[6]\">";
$ebene = "CMS_VALUE[6]";
for ($i=0;$i>-3;$i--) {
if ($i == $ebene) {
echo"<option value=\"$i\" selected=\"selected\">Ebene $i</option>";
} else {
echo"<option value=\"$i\">Ebene $i</option>";
}
}
echo "</table>";
Code: Alles auswählen
output-bereich:
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts.alist.mod4.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 06-21-2004
* Modified : 06-21-2004
************************************************/
class alistThumbs {
function alistThumbs() {
// Initialwerte festlegen
$this->setIniValues();
// Datenbankverbindung herstellen
$this->db = new DB_Contenido;
$this->db2 = new DB_Contenido;
// Anzahl Artikel ermitteln
$this->anzahl_artikel = $this->getNumberOfArticles();
// Artikel auslesen
$this->getArticles();
// Artikel ausgeben
$this->showArticles();
// Navigation ausgeben
$this->showNavigation();
}
function setIniValues() {
$bildzielpfad = "CMS_VALUE[0]";
$this->bildzielpfad['frontend'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['htmlpath'].$GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload'].$bildzielpfad;
$this->bildzielpfad['backend'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['frontend'].$GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload'].$bildzielpfad;
$this->categorie = "CMS_VALUE[1]";
$this->angezeigte_anzahl = "CMS_VALUE[2]";
if ($this->angezeigte_anzahl == '') $this->angezeigte_anzahl = 10;
$this->navigationslink['previous'] = "CMS_VALUE[3]";
if ($this->navigationslink['previous'] == '') $this->navigationslink['previous'] = '[:: rückwärts ]';
$this->navigationslink['next'] = "CMS_VALUE[4]";
if ($this->navigationslink['next'] == '') $this->navigationslink['next'] = '[ vorwärts ::]';
$this->ebene = "CMS_VALUE[6]";
$this->bildbreite = "CMS_VALUE[5]";
$this->limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0);
}
function createImage($dirname, $filename) {
global $cfg, $cfgClient, $client;
$bilddateiname = "{$this->bildbreite}_$filename.jpg";
if (!file_exists("{$this->bildzielpfad['backend']}$bilddateiname")) {
$src_image_size = getimagesize($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'].$dirname.$filename);
$bildhoehe = round($src_image_size[1] * $this->bildbreite / $src_image_size[0]);
if ($bildhoehe > $this->bildbreite) {
$bildhoehe = $this->bildbreite;
$bildbreite = round($src_image_size[0] * $bildhoehe / $src_image_size[1]);
} else {
$bildbreite = $this->bildbreite;
}
$dst_im = imagecreatetruecolor($bildbreite,$bildhoehe);
if ($src_image_size[2] == 1) {
$src_im = imagecreatefromGIF($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'].$dirname.$filename);
} elseif ($src_image_size[2] == 2) {
$src_im = ImageCreateFromJPEG($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'].$dirname.$filename);
} else {
$src_im = imagecreatefromgd($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'].$dirname.$filename);
}
imagecopyresampled ($dst_im,$src_im,0,0,0,0,$bildbreite,$bildhoehe,$src_image_size[0],$src_image_size[1]);
imagejpeg ($dst_im,$this->bildzielpfad['backend'].$bilddateiname,100);
}
return $this->bildzielpfad['frontend'].$bilddateiname;
}
function showNavigation() {
global $sess, $client, $lang, $idcat, $idart, $cfgClient;
if ($this->limit > 0 || $this->anzahl_artikel > $this->limit + $this->angezeigte_anzahl) {
echo '<table cellpadding="0" cellspacing="0" style="width:100%"><tr>';
if ($this->limit > 0) {
$displaylimit = ($this->limit - $this->angezeigte_anzahl >= 0)?($this->limit - $this->angezeigte_anzahl):(0);
echo "<td style=\"text-align:left\"><a href=\"".$sess->url($cfgClient[$client]['path']['htmlpath']."front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$this->navigationslink['previous']}</a></td>";
} else {
echo '<td> </td>';
}
if ($this->anzahl_artikel > $this->limit + $this->angezeigte_anzahl) {
$displaylimit = $this->limit + $this->angezeigte_anzahl;
echo "<td style=\"text-align:right\"><a href=\"".$sess->url($cfgClient[$client]['path']['htmlpath']."front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$this->navigationslink['next']}</a></td>";
} else {
echo '<td> </td>';
}
echo '</tr></table></p>';
}
}
function getNumberOfArticles() {
global $cfg, $lang;
switch ($this->ebene) {
case -2:
$this->db->query("
SELECT count(*) AS anzahl
FROM
{$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
WHERE
(
(
c.parentid = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
");
break;
case -1:
$this->db->query("
SELECT count(*) AS anzahl
FROM
{$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
WHERE
(
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
");
break;
case 0:
$this->db->query("
SELECT count(*) AS anzahl
FROM
{$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
WHERE
(
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
");
break;
}
$this->db->next_record();
return $this->db->f('anzahl');
}
function getArticles() {
global $cfg, $lang;
switch ($this->ebene) {
case -2:
$this->db->query("
SELECT f.name, e.pagetitle, c.idcat, d.idart, e.idartlang, e.summary, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
FROM
{$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
WHERE
(
(
c.parentid = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
ORDER BY e.created DESC
LIMIT {$this->limit}, {$this->angezeigte_anzahl}
");
break;
case -1:
$this->db->query("
SELECT f.name, e.pagetitle, c.idcat, d.idart, e.idartlang, e.summary, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
FROM
{$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
WHERE
(
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
ORDER BY e.created DESC
LIMIT {$this->limit}, {$this->angezeigte_anzahl}
");
break;
case 0:
$this->db->query("
SELECT f.name, e.pagetitle, c.idcat, d.idart, e.idartlang, e.summary, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
FROM
{$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON (f.idcat = d.idcat AND f.idlang = $lang)
WHERE
(
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = {$this->categorie}
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
AND f.startidartlang != e.idartlang
ORDER BY e.created DESC
LIMIT {$this->limit}, {$this->angezeigte_anzahl}
");
break;
}
$counter = 0;
while ($this->db->next_record()) {
$this->articles[$counter]['name'] = $this->db->f('name');
$this->articles[$counter]['pagetitle'] = $this->db->f('pagetitle');
$this->articles[$counter]['idcat'] = $this->db->f('idcat');
$this->articles[$counter]['idart'] = $this->db->f('idart');
$this->articles[$counter]['idartlang'] = $this->db->f('idartlang');
$this->articles[$counter]['created'] = $this->db->f('erstellungsdatum');
$this->articles[$counter]['summary'] = $this->db->f('summary');
$counter++;
}
for ($i=0;$i<count($this->articles);$i++) {
$this->db->query("
SELECT a.value, a.typeid, b.type, c.filename, c.dirname
FROM {$cfg['tab']['content']} AS a
LEFT JOIN {$cfg['tab']['type']} AS b ON a.idtype = b.idtype
LEFT JOIN {$cfg['tab']['upl']} AS c ON a.value = c.idupl
WHERE
a.idartlang = {$this->articles[$i]['idartlang']}
AND b.type = 'CMS_IMG'
");
if ($this->db->next_record()) {
$this->articles[$i]['picture'] = $this->createImage($this->db->f('dirname'),$this->db->f('filename'));
}
}
}
function showArticles() {
global $sess, $cfgClient, $client, $lang, $edit;
if (count($this->articles) == 0 || $edit) {
echo "<div class=\"text\">CMS_HTML[10]</div>";
} else {
echo '<table class="alist" width="100%" cellspacing="0" cellpadding="0">';
for ($i=0;$i<count($this->articles);$i++) {
list($key,$artikel) = each($this->articles);
$link = $sess->url($cfgClient[$client]['path']['htmlpath']."front_content.php?idcat={$artikel['idcat']}&idart={$artikel['idart']}");
// Titelzeile ausgeben
echo "<tr><td class=\"alistHeader\"><a href=\"$link\" class=\"alistHeader\">{$artikel['pagetitle']}</a></td><td class=\"alistCreated\">{$artikel['created']}</td></tr>";
if (!empty($artikel['picture'])) {
// Zusammenfassung und Bild ausgeben
echo "<tr><td class=\"alistSummary\">{$artikel['summary']}</td><td class=\"alistPicture\"><a href=\"$link\"><img src=\"{$artikel['picture']}\" border=\"0\"/></a></td></tr>";
} else {
// Zusammenfassung ausgeben
echo "<tr><td colspan=\"2\" class=\"alistSummary\">{$artikel['summary']}</td></tr>";
}
if ($i < count($this->articles) -1) {
echo '<tr><td colspan="2" class="alistSeparator"><img src="/cms/images/green_pixel.gif" width="522" height="1" border="0"></td></tr>';
}
}
echo '</table>';
}
}
}
$alistThumbs = new alistThumbs();
?>
andreas