anbei das überarbeitete Modul von AGON
Demo:
http://meinlschmidt.rezeptionist.de/cms ... ?idcat=125
verändert wurde:
Alle Termine werden angezeigt sprich auch die abgelaufenen.
Die im Originalthread geposteten wichtigen Änderungen sind implementiert.
Die Jahreszahl in der Überschrift wird immer mit ausgegeben
ToDo:
die Funktion abgelaufene Termine in der Konfiguration wieder zuschaltbar
Das Modul ist auf meine Kundenbedürfnisse angepasst worden sprich css Klassen etc
Termineingabe:
Input:
leer
Output:
Code: Alles auswählen
<?php
if(strstr($REQUEST_URI,"changeview=edit") || $submit=="editcontent" || strstr($REQUEST_URI,"area=con_editcontent")) // Überprüfen, ob im Editiermodus aufgerufen
{
$submit="";
echo " <script language=\"JavaScript\" src=\"".$cfg['path']['contenido_fullhtml']."scripts/calendar1.js.php?contenido=".$sess->id."\"></script>"; // Kalender einbinden
$sql = "SELECT ARTLANG.idartlang, CONTENT.idtype, CONTENT.typeid, CONTENT.value, CONTENT.idcontent
FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["content"]." AS CONTENT WHERE ARTLANG.idart = ".$idart." AND ARTLANG.idartlang = CONTENT.idartlang ORDER BY CONTENT.typeid ASC";
$db->query($sql); // Artikelangaben einlesen
if ($db->num_rows() != 0)
{
$termin = array();
$exists = array();
$db->next_record();
$idartlang = $db->f("idartlang");
for ($i=0; $i<$db->num_rows(); $i++)
{
if ( $db->f("idtype") == 3 )
{
$j = $db->f("typeid");
$termin[$j] = $db->f("value");
$exists[$j] = 1;
}
$db->next_record();
}
}
if($termin[6]=="") // falls noch kein Titel eingetragen, Seitentitel einlesen
{
$sql = "SELECT ARTLANG.title
FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG WHERE ARTLANG.idart = ".$idart."";
$db->query($sql);
$db->next_record();
$termin[6] = $db->f("title");
}
if($senden==1) // falls das Terminformular abgeschickt wurde, Daten in Datenbank schreiben
{
$senden=0;
$date = date("Y-m-d H:i:s");
$author = $auth->auth["uname"];
if (strlen($datum1)==10)
{
$termin[0] = $datum1;
}
else
{
$termin[0] = "";
}
$termin[1] = $zeit1;
if (strlen($datum2)==10 && $datum2 >= $datum1)
{
$termin[2] = $datum2;
}
else
{
$termin[2] = "";
}
$termin[3] = $zeit2;
$termin[4] = $ort1;
$termin[5] = $ort2;
$termin[6] = $titel;
for ($i=0; $i<=6; $i++)
{
if($exists[$i]==1)
{
$sql = "UPDATE ".$cfg["tab"]["content"]."
SET value='".$termin[$i]."', lastmodified='".$date."'
WHERE idartlang = ".$idartlang." AND idtype='3' AND typeid='".$i."'";
$db->query($sql);
}
else
{
$sql = "INSERT INTO ".$cfg["tab"]["content"]."
(idcontent, idartlang, idtype, typeid, value, author, created, lastmodified)
VALUES('".$db->nextid($cfg["tab"]["content"])."', '".$idartlang."', '3', '".$i."', '".$termin[$i]."', '".$author."', '".$date."', '".$date."')";
$db->query($sql);
}
}
}
// ab hier das Formular für die Editieransicht
echo "<form action=\"".$REQUEST_URI."\" method=\"post\" name=\"eintrag\">
<table border=0 cellspacing=2 cellpadding=1>
<tr>
<td>Titel</td>
<td><input type=\"text\" name=\"titel\" value=\"".urldecode(stripslashes($termin[6]))."\" size=27 class=Input></td>
</tr>
<tr>
<td nowrap>Startdatum <b class=klein>jjjj-mm-tt</b></td>
<td><input type=\"text\" name=\"datum1\" value=\"".$termin[0]."\" size=11 class=Input>
<a href=\"javascript:startcal.popup('','".$cfg['path']['contenido_fullhtml']."templates/standard/');\">
<img src=\"".$cfg['path']['contenido_fullhtml']."images/calendar.gif\" width=16 height=16 border=0 alt=\"Startzeitpunkt wählen\"></a></td>
</tr>
<tr>
<td>Start-Uhrzeit <b class=klein>hh:mm</b></td>
<td><input type=\"text\" name=\"zeit1\" value=\"".$termin[1]."\" size=6 class=Input></td>
<td class=klein>(kann auch leer bleiben)</td>
</tr>
<tr>
<td>Enddatum <b class=klein>jjjj-mm-tt</b></td>
<td><input type=\"text\" name=\"datum2\" value=\"".$termin[2]."\" size=11 class=Input>
<a href=\"javascript:endcal.popup('','".$cfg['path']['contenido_fullhtml']."templates/standard/');\">
<img src=\"".$cfg['path']['contenido_fullhtml']."images/calendar.gif\" width=16 height=16 border=0 alt=\"Startzeitpunkt wählen\"></a></td>
<td class=klein>(kann auch leer bleiben)</td>
</tr>
<tr>
<td>End-Uhrzeit <b class=klein>hh:mm</b></td>
<td><input type=\"text\" name=\"zeit2\" value=\"".$termin[3]."\" size=6 class=Input></td>
<td class=klein>(kann auch leer bleiben)</td>
</tr>
<tr>
<td>Ort</td>
<td><input type=\"text\" name=\"ort1\" value=\"".urldecode(stripslashes($termin[4]))."\" size=20 class=Input></td>
<td class=klein>(erscheint <i>auch</i> in der Übersicht)</td>
</tr>
<tr>
<td>Ort - Detail</td>
<td><input type=\"text\" name=\"ort2\" value=\"".urldecode(stripslashes($termin[5]))."\" size=27 class=Input></td>
<td class=klein>(erscheint <i>nicht</i> in der Übersicht)</td>
</tr>
<tr>
<td colspan=3 align=center>
<input type=\"submit\" value=\" Absenden \" class=InputButton> <input type=\"hidden\" name=\"senden\" value=1>
<input type=\"reset\" value=\" Abbrechen \" class=InputButton></td>
</tr>
</table>
</f"."orm>
<p>Beschreibung / Inhalte: CMS_HTML[7]</p>
<script language=\"JavaScript\">
var startcal = new calendar1(document.forms['eintrag'].elements['datum1']);
startcal.year_scroll = true;
startcal.time_comp = false;
var endcal = new calendar1(document.forms['eintrag'].elements['datum2']);
endcal.year_scroll = true;
endcal.time_comp = false;
</script>";
}
else // ab hier Terminausgabe für Frontend-Ansicht bzw. Vorschau
{
$tag1 = substr("CMS_TEXT[0]",8,2);
$monat1 = substr("CMS_TEXT[0]",5,2);
$jahr1 = substr("CMS_TEXT[0]",0,4);
$tag2 = substr("CMS_TEXT[2]",8,2);
$monat2 = substr("CMS_TEXT[2]",5,2);
$jahr2 = substr("CMS_TEXT[2]",0,4);
$datum1 = $tag1.".".$monat1.".".$jahr1;
$datum2 = $tag2.".".$monat2.".".$jahr2;
$date1 = getdate(mktime(0,0,0,$monat1,$tag1,$jahr1));
$date2 = getdate(mktime(0,0,0,$monat2,$tag2,$jahr2));
$wochentag = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
echo "<div id=\"natermin\">
<p style=\"height:14px;margin:0px;\"><strong>".mi18n("Veranstaltung:")."</strong></p>
<p style=\"height:14px;margin:0px;padding-bottom:6px;\">CMS_TEXT[6]</p>
<p style=\"height:14px;margin:0px;\"><strong>".mi18n("Zeitraum:")."</strong></p>
<p style=\"height:14px;margin:0px;padding-bottom:6px;\">".$wochentag[$date1[wday]].", ".$datum1;
if ( "CMS_TEXT[1]"!=="" )
{
echo ", CMS_TEXT[1]";
if ( "CMS_TEXT[3]"=="" )
{
echo " Uhr";
}
}
if ( strlen($datum2)==10 || "CMS_TEXT[3]"!=="" )
{
echo " ".mi18n("bis")." ";
if ( strlen($datum2)==10 )
{
echo $wochentag[$date2[wday]].", ".$datum2;
}
if ( strlen($datum2)==10 && "CMS_TEXT[3]"!=="" )
{
echo ', ';
}
if ( "CMS_TEXT[3]"!=="" )
{
echo "CMS_TEXT[3] Uhr";
}
}
echo "</p>
<p style=\"height:14px;margin:0px;\"><strong>".mi18n("Veranstaltungsort:")."</strong></p><p style=\"height:14px;margin:0px;\">CMS_TEXT[4]";
if ( "CMS_TEXT[5]" )
{
echo "<br />CMS_TEXT[5]";
}
echo "</p>
<p><br />CMS_HTML[7]</p></div>";
$navmod_link ="front_content.php?&idcat=".$idcat."";
echo '<p><br><a href="'.$sess->url("$navmod_link").'" id="font">Zurück zur Übersicht</a></p>';
}
?>
Terminübersicht:
Input:
leer
Output:
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
* Terminübersicht
* Modulname : Terminmodul mit allen Terminen
* Author : agon
* Copyright : Contenido - four for business
* Created : 22-08-2002
* Modified : Rezeptionist
* xhtml valide : apicalart
************************************************/
cInclude('classes', 'contenido/class.client.php');
$gefunden=0; // um zu überprüfen, ob überhaupt Termine vorliegen
$date = date("Y-m-d");
$sql = "SELECT ARTLANG.idart, CONTENT.value, CONTENT.typeid, ARTLANG.idartlang
FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT
WHERE ARTLANG.idart = CATART.idart AND CATART.idcat = CAT.idcat AND ARTLANG.idartlang = CONTENT.idartlang
AND ARTLANG.idlang = '".$lang."' AND CAT.idcat = '".$idcat."' AND CAT.idclient = '".$client."'
AND ARTLANG.online = '1' AND CATART.is_start='0'
ORDER BY ARTLANG.idart, CONTENT.typeid ASC"; // Alle Artikel der Kategorie einlesen, die nicht Startartikel (= Terminübersicht) sind
$db->query($sql);
$j=0; $anz=0;
if ($db->num_rows() != 0)
{
$termin = array(array()); // Array erzeugen, in dem die Termine abgelegt werden;
while ($j < $db->num_rows()) // alle Datensätze durchlaufen
{
$db->next_record();
if ($db->f("idart") > $termin["idart"][$anz])
{
$anz++;
}
switch ($db->f("typeid")) {
case 0: // Anfangstermin
$termin["datum1"][$anz] = $db->f("value");
$termin["jahr1"][$anz] = substr($db->f("value"),0,4);
$termin["monat1"][$anz] = substr($db->f("value"),5,2);
$termin["tag1"][$anz] = substr($db->f("value"),8,2);
$termin["idart"][$anz] = $db->f("idart");
break;
case 1: // Anfangsuhrzeit
$termin["zeit1"][$anz] = $db->f("value");
$termin["datum1"][$anz] = $termin["datum1"][$anz]." ".$termin["zeit1"][$anz];
break;
case 2: // Endtermin
$termin["datum2"][$anz] = $db->f("value");
$termin["jahr2"][$anz] = substr($db->f("value"),0,0);
$termin["monat2"][$anz] = substr($db->f("value"),0,0);
$termin["tag2"][$anz] = substr($db->f("value"),8,2);
break;
case 3: // Enduhrzeit
$termin["zeit2"][$anz] = $db->f("value");
$termin["datum2"][$anz] = $termin["datum2"][$anz]." ".$termin["zeit2"][$anz];
break;
case 4: // Ort
$termin["ort"][$anz] = $db->f("value");
break;
case 6: // Titel
$termin["titel"][$anz] = $db->f("value");
break;
}
$j++;
}
$array_multisort = array( $termin["datum1"], SORT_ASC, SORT_STRING, $termin["datum2"], SORT_ASC, SORT_STRING,
$termin["jahr1"], $termin["monat1"], $termin["tag1"], $termin["zeit1"],
$termin["jahr2"], $termin["monat2"], $termin["tag2"], $termin["zeit2"],
$termin["idart"], $termin["ort"], $termin["titel"] ); // nach Datum sortieren
for ($i=0; $i<=$anz; $i++)
{
if ( $termin["datum1"][$i] >= $date || $termin[$i]["datum1"] >= $date ) // nur Termine, die noch aktuell sind, aufnehmen
{
if ( $termin["monat1"][$i] !== $termin["monat1"][$i-1] || $gefunden == 0 ) // überprüfen, ob Monatsnahme einzufügen ist
{
echo ' <div class="monat"><h1>';
switch ($termin["monat1"][$i]) {
case 1: echo "Januar"; break;
case 2: echo "Februar"; break;
case 3: echo "März"; break;
case 4: echo "April"; break;
case 5: echo "Mai"; break;
case 6: echo "Juni"; break;
case 7: echo "Juli"; break;
case 8: echo "August"; break;
case 9: echo "September"; break;
case 10: echo "Oktober"; break;
case 11: echo "November"; break;
case 12: echo "Dezember"; break; }
echo ' '.$termin["jahr1"][$i];
echo '</h1><p> </p></div>';
}
$gefunden=1;
echo ' <div class="datum"><p><strong>'.substr($termin["datum1"][$i],8,2).'.'.substr($termin["datum1"][$i],5,2).'.'.substr($termin["datum1"][$i],0,4); // Anfangsdatum ausgeben
if ( strlen($termin["tag2"][$i]) < 2 && strlen($termin["zeit1"][$i]) >1 ) // falls kein Enddatum (Eintagestermin), aber Anfangszeit, diese ausgeben
{
echo ' '.$termin["zeit1"][$i].' Uhr';
} elseif ( strlen($termin["tag2"][$i]) > 1 ) // falls Enddatum (Mehrtagestermin), dieses ausgeben
{
echo ' – '.substr($termin["datum2"][$i],8,2).'.'.substr($termin["datum2"][$i],5,2).'.'.substr($termin["datum2"][$i],0,4);
if ( $termin["monat2"][$i] != $termin["monat1"][$i]) // falls Enddatum nicht im gleichem Monat
{
echo $termin["monat2"][$i].'';
if ( $termin["jahr2"][$i] != $termin["jahr1"][$i]) // falls Enddatum nicht im gleichen Jahr
{
echo substr($termin["jahr2"][$i],0,0).'';
}
}
echo '';
} else
{
echo '';
}
$navmod_link ="front_content.php?client=".$client."?=".$lang."&idcat=".$idcat."&idart=".$termin["idart"][$i]."";
echo ' in
'.urldecode($termin["ort"][$i]).'</strong></p></div>
<div class="terminart"><p>'.urldecode($termin["titel"][$i]).'<br /><img src="upload/navundhg/navpunkt.gif" alt="Öffnet die Termindetails zu '.urldecode($termin["titel"][$i]).'" title="Infos zu '.urldecode($termin["titel"][$i]).'" /> <a class="archiv" href="'.$sess->url("$navmod_link").'">weitere Informationen ...</a></p></div>';
}
}
}
if ( $gefunden == 0 ) // falls kein aktueller Termin vorliegt
{
echo ' <div class="keine"><p>Es liegen aktuell keine Termine oder Veranstaltungen vor!</p></div>';
}
?>
Danke Agon danke community
Code: Alles auswählen
/*---------------------------------------------*/
/* Termin-Definitionen */
/*---------------------------------------------*/
.monjahr{
width:490px;
margin-top:12px;
margin-bottom:6px;
font-size:12px;
color:#666666;
}
.termine{
width:486px;
padding:2px;
margin-bottom:6px;
background-color: #ffffff;
clear:both;
}
.details{
background-color: #ffffff;
float:left;
padding:2px;
width:286px;
}
.ort{
background-color: #ffffff;
width:196px;
padding:2px;
float:right;
text-align:right;
}
aktualisiert: 29.05.2006
ändernung $array_multisort = array