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();
?>
