com.neolao.components.CalendarWeek

Composant HTML calendrier semaine

Exemples

$calendar_week_view = new CalendarWeek();
echo $calendar_week_view->html;

Propriétés

Visibilité Type Nom Status Description
public string title Le titre du composant
public array dayNames Les noms des jours de la semaine. Par défaut en anglais et commençant par “Monday”
public string html Lecture seule L'affichage HTML du composant

Méthodes

Visibilité Nom Param 1 Param 2 Param 3 Param 4 Param 5 Param 6 Param 7 Description
public addEvent int $day string $title string $dateStart string $url string $description int $titleLength string $style Ajoute un événement

Change log

  • [07/05/2005] Version 1.0

Création

Source

/**
 * Composant html calendrier semaine
 * @package		com.neolao
 * @subpackage		components
 * @author		neolao <neo@neolao.com>
 * @version		1.0 (07/05/2005)
 * @link		http://resources.neolao.com/php/classes/components/calendarweek
 */
class CalendarWeek {
	// ----------------------------- CONSTANTES --------------------------------
 
	// ----------------------------- VARIABLES ---------------------------------
	/**
	 * Le style CSS du composant (class)
	 * @var string
	 */
	private $_cssClass;
	/**
	 * Le titre du composant
	 * @var string
	 */
	private $_title;
	/**
	 * Les jours de la semaine (la semaine commence lundi)
	 * @var array
	 */
	private $_dayNames;
	/**
	 * Les événement de la semaine
	 * @var array
	 */
	private $_events;
	/**
	 * Le calendrier en html
	 * @var string
	 */
	private $_html;
 
	/*===================== CONSTRUCTEUR & DESCTRUCTEUR ======================*/
	/*========================================================================*/
	/**
	 * Initialisation de la class
	 * @param string $cssClass Le style CSS du composant (class)
	 */
	function __construct($cssClass=null){
		if(!is_null($cssClass)){
			$this->_cssClass = $cssClass;
		}
 
		// valeurs par d�aut
		$this->_title = "";
		$this->_dayNames = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
	}
	/**
	 * Destruction de la class
	 */
	function __destruct(){
 
	}
	/*=============== FIN = CONSTRUCTEUR & DESCTRUCTEUR = FIN ================*/
	/*========================================================================*/
 
	/*=========================== METHODES PRIVEES ===========================*/
	/*========================================================================*/
	private function setHtml(){
		$ok = false;
		// V�ification de la validité des variables qui vont être utilisées
		$ok = true;
 
		if($ok){
			// G��ation des variables utiles
 
			// DL
			$content = "<dl";
			if(!empty($this->_cssClass)){
				$content .= " class=\"".$this->_cssClass."\"";
			}
			$content .= ">";
 
			// DT
			$content .= "<dt>";
			$content .= $this->_title;
			$content .= "</dt>";
 
			// DD
			$content .= "<dd>";
			$content .= 	"<table>";
			$content .= 		"<thead>";
			$content .= 			"<tr>";
			for($i=0; $i<7; $i++){
				$content .= 			"<th>".$this->_dayNames[$i]."</th>";
			}
			$content .= 			"</tr>";
			$content .= 		"</thead>";
			$content .= 		"<tfoot>";
			$content .= 			"<tr>".str_repeat("<td>&nbsp;</td>", 7)."</tr>";
			$content .= 		"</tfoot>";
			$content .= 		"<tbody>";
			$content .= 			"<tr>";
			for($i=0; $i<7; $i++){
				$content .= 			"<td>";
				$totalEvents = count($this->_events[$i]);
				if($totalEvents > 0){
					$content .= 			"<ul>";
					for($j=0; $j<count($this->_events[$i]); $j++){
						$content .= 			"<li class=\"".$this->_events[$i][$j]["style"]."\"><a href=\"".$this->_events[$i][$j]["link"]."\">".$this->_events[$i][$j]["titleSort"]."</a><dl class=\"description\"><dt>".$this->_events[$i][$j]["dateStart"]." ".$this->_events[$i][$j]["title"]."</dt><dd>".$this->_events[$i][$j]["description"]."</dd></dl></li>";
					}
					$content .= 			"</ul>";
				}else{
					$content .= 			"&nbsp;";
				}
				$content .= 			"</td>";
			}
			$content .= 			"</tr>";
			$content .= 		"</tbody>";
			$content .= 	"</table>";
			$content .= "</dd>";
 
			// DL fin
			$content .= "</dl>";
		}else{
			$content = "[CALENDAR WEEK - ERROR]";
		}
 
		$this->_html = $content;
	}
	/*===================== FIN = METHODES PRIVEES = FIN =====================*/
	/*========================================================================*/
 
	/*============================ GETTER  SETTER ============================*/
	/*========================================================================*/
	public function __get($var){
		switch($var){
			case "html":
				$this->setHtml();
				return $this->_html;
			case "title":
				return $this->_title;
			case "dayNames":
				return $this->_dayNames;
			default:
				return null;
		}
	}
	public function __set($var, $value){
		switch($var){
			case "title":
				$this->_title = (string) $value;
				break;
			case "dayNames":
				$this->_dayNames = (array) $value;
				break;
			default:
 
		}
	}
	/*====================== FIN = GETTER  SETTER = FIN ======================*/
	/*========================================================================*/
 
	/*========================== METHODES PUBLIQUES ==========================*/
	/*========================================================================*/
	/**
	 * Ajoute un événement
	 * @param int $day Le jour de l'événement
	 * @param string $title Le titre de l'événement
	 * @param string $dateStart L'heure de début
	 * @param string $url Le lien de l'événement
	 * @param string $description La description de l'événement
	 * @param int $titleLength La taille maximale du titre
	 * @param string $style Le style css de l'événement
	 */
	public function addEvent($day, $title, $dateStart, $url, $description, $titleLength=10, $style="event"){
		if(!isset($this->_events)){
			$this->_events = array();
		}
		if(!isset($this->_events[$day])){
			$this->_events[$day] = array();
		}
		$currentTitleLength = strlen($title);
		if($currentTitleLength > $titleLength){
			$titleSort = preg_replace("/(&[^;]*)$/", "", substr($title, 0, $titleLength - 1))."&hellip;";
		}else{
			$titleSort = $title;
		}
		$this->_events[$day][] = array("titleSort"=>$titleSort, 
								"title"=>$title, 
								"dateStart"=>$dateStart, 
								"link"=>$url, 
								"description"=>$description, 
								"style"=>$style);
	}
	/*==================== FIN = METHODES PUBLIQUES = FIN ====================*/
	/*========================================================================*/
}