hier ein neues Modul, mit dem ein einfacher Wochenplan dargestellt werden kann. Die einzelnen Termine werden jeweils mit CSS plaziert.
Eine Beispiel-Anwendung findet man hier:
http://www.dance-in-ffm.de/cms/front_co ... hp?idcat=5
vgl. auch http://www.contenido.de/forum/viewtopic.php?t=3574
Schöne Grüße
Robert
INPUT
Code: Alles auswählen
/*
* Modul W O C H E N P L A N
* INPUT
*
* Robert Strouhal www.clearcreative.de
* Version: 1.1
* 24.01.2004
*
*
*
*/
echo "<table>";
echo "<tr><td>Tage</td><td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=50></td>\n";
echo "<tr><td>Anfangszeit</td>";
echo "<td>";
echo "<select name=\"CMS_VAR[2]\">\n";
for ($i=0; $i<=23; $i++){
echo "<option value=\"".$i.":00\" ";
if ("CMS_VALUE[2]" == ($i.":00")){
echo " selected ";
}
echo ">".sprintf('%02d',$i).":00</option>";
}
echo "</select></td>";
echo "</tr>\n";
echo "<tr><td>Endzeit</td>";
echo "<td>";
echo "<select name=\"CMS_VAR[3]\">\n";
for ($i=0; $i<=23; $i++){
echo "<option value=\"".$i.":00\" ";
if ("CMS_VALUE[3]" == ($i.":00")){
echo " selected ";
}
echo ">".sprintf('%02d',$i).":00</option>";
}
echo "</select></td>";
echo "</tr>\n";
echo "<tr><td>Breite</td><td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\" size=5></td></tr>\n";
echo "<tr><td>Höhe</td><td><input type=\"text\" name=\"CMS_VAR[6]\" value=\"CMS_VALUE[6]\" size=5></td></tr>\n";
echo "<tr>";
echo "<td>Termine (siehe Erläuterung)</td>";
echo "<td><text"?><? echo "area name=\"CMS_VAR[4]\" cols=60 rows=10 style=\"font-size: 8pt;\">CMS_VALUE[4]</text";
echo "area></td></tr>\n";
echo "<tr><td> </td><td style=\"background-color: #D7F0AF;\" ><b>Erläuterung</b>: Termine werden nach folgendem Schema eingetragen:<br>";
echo "<pre style=\"font-size: 8pt;\">Tag;Anfangszeit;Endzeit;Text;Style</pre>\n";
echo "<ul>";
echo "<li><b>Tag</b> wie oben in der Liste eingetragen (ausgeschrieben!)</li>\n";
echo "<li><b>Anfangszeit</b> z.B. 10:00</li>\n";
echo "<li><b>Endzeit</b> z.B. 11:00</li>\n";
echo "<li><b>Text</b> der als Beschriftung erscheint</li>\n";
echo "<li><i><b>Style</b> Verweis auf CSS-Angabe (optional)</i></li>\n";
echo "</ul>";
echo "</td></tr>\n";
echo "</table>\n";
OUTPUT
Code: Alles auswählen
<?
/*
* Modul W O C H E N P L A N
* OUTPUT
*
* Robert Strouhal www.clearcreative.de
* Version: 1.1
* 24.01.2004
*
*
*
*/
define ("RANDBREITE", "50");
define ("RANDHOEHE", "30");
function hours2decimal($hour){
$hour = str_replace(".",":",$hour);
$hour = explode(":",$hour);
return $hour[0]+($hour[1]/60);
}
function decimal2hours($hour){
$minutes = $hour-floor($hour);
$hour = floor($hour);
$minutes = 60*$minutes;
return sprintf('%02d',$hour).":".sprintf('%02d',$minutes);
}
class Wochenplan{
var $tage;
var $anfangsZeit;
var $endZeit;
var $hoehe;
var $breite;
var $stundenHoehe;
var $tagesBreite;
var $termine;
function Wochenplan($breite, $hoehe, $tage, $anfangsZeit, $endZeit){
$this->breite = $breite;
$this->hoehe = $hoehe;
$this->tage = $tage;
$this->anfangsZeit = hours2decimal($anfangsZeit);
$this->endZeit = hours2decimal($endZeit);
$this->stundenHoehe = ($this->hoehe-RANDHOEHE)/($this->endZeit-$this->anfangsZeit);
$this->tagesBreite = ($this->breite-RANDBREITE)/count($this->tage);
$this->termine = array();
}
function display(){
echo "<img src=\"i/spacer.gif\" height=\"CMS_VALUE[6]\" width=\"1\" border=\"0\"><br>\n";
echo "<img src=\"i/spacer.gif\" height=\"75\" width=\"1\" border=\"0\"><br>\n";
echo "<div style=\"position:absolute; top: 285px; left: 42px;\">\n";
echo "<table cellpadding=0 cellspacing=0 border=0 class=\"WochenplanTable\">\n";
echo "<tr>\n";
echo "<th width=\"".RANDBREITE."\" height=\"".RANDHOEHE."\"> </th>";
foreach ($this->tage as $t){
echo "<th width=\"".$this->tagesBreite."\" class=\"WochenplanHead\">".$t."</th>\n";
}
echo "</tr>\n";
for ($i=$this->anfangsZeit; $i<=$this->endZeit; $i++){
echo "<tr><th class=\"WochenplanHead\"height=\"".$this->stundenHoehe."\">".decimal2hours($i)."</th>";
for ($j=0; $j<count($this->tage); $j++){
echo "<td class=\"WochenplanCell\"> </td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
foreach ($this->termine as $t){
echo $this->printTermin($t);
}
echo "</div>\n";
}
function addTermin($termin){
$this->termine[] = $termin;
}
function printTermin($termin){
// die x-Position
// 5 Pixel Rand nach links
$xpos = array_search($termin->tag,$this->tage)*($this->tagesBreite+0)+RANDBREITE+5;
// die y-Position
$ypos = (($termin->anfangsZeit)-($this->anfangsZeit))*($this->stundenHoehe+0)+RANDHOEHE;
//$ypos = $termin->anfangsZeit*($this->stundenHoehe+0)+RANDHOEHE;
$width = $this->tagesBreite-5; // 5 px Rand nach rechts
$height = $this->stundenHoehe*$termin->dauer;
return "<div style=\"position: absolute; height:".$height."; width:".$width."; top:".$ypos."; left:".$xpos."; z-index: 1;\" class=\"".$termin->style."\"><b>".$termin->text."</b><br>".decimal2hours($termin->anfangsZeit)." - ".decimal2hours($termin->endZeit)."</div>\n";
}
}
class WochenTermin{
var $tag;
var $anfangsZeit;
var $endZeit;
var $dauer;
var $text;
var $style;
function WochenTermin($tag,$anfangsZeit,$endZeit,$text="",$style="WochenplanItem"){
$this->anfangsZeit = hours2decimal($anfangsZeit);
$this->endZeit = hours2decimal($endZeit);
$this->dauer = $this->endZeit-$this->anfangsZeit;
$this->tag = $tag;
$this->text = $text;
$this->style = $style;
}
}
$tage = explode(";",trim("CMS_VALUE[1]"));
$w = &new Wochenplan("CMS_VALUE[5]","CMS_VALUE[6]",$tage,"CMS_VALUE[2]","CMS_VALUE[3]");
$termine = explode("\n","$CMS_VALUE[4]");
$i = 0;
$terminItem = array();
foreach ($termine as $t){
$tdetails = explode(";",$t);
if (is_array($tdetails)){
if (strlen(trim($tdetails[4])) == 0){
$tdetails[4] = "WochenplanItem";
}
$terminItem[$i] = &new WochenTermin($tdetails[0],$tdetails[1],$tdetails[2],$tdetails[3],$tdetails[4]);
$w->addTermin($terminItem[$i]);
unset($tdetails);
}
$i++;
}
$w->display();
?>