diff options
Diffstat (limited to 'utils')
| -rw-r--r-- | utils/modules/events.php | 214 | 
1 files changed, 191 insertions, 23 deletions
| diff --git a/utils/modules/events.php b/utils/modules/events.php index bdbe43e..f14622e 100644 --- a/utils/modules/events.php +++ b/utils/modules/events.php @@ -1,4 +1,6 @@  <?php +/* -*- Mode: php; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +  include_once($UTIL_DIR . "/convert.php");  class Event { @@ -7,21 +9,36 @@ class Event {    public $description;    public $flyer; -  public function show() -  { -    $str = "<div class=\"event\">\n"; -    $str .= "  <div class=\"event_title\">" .  -      htmlspecialchars_decode($this->title, ENT_QUOTES) . "</div>\n"; -    $str .= "  <div class=\"event_time\">" . date("D M jS Y", $this->time) . "</div>\n"; -    $str .= "  <div class=\"event_description\">" .  -      htmlspecialchars_decode($this->description, ENT_QUOTES) . "</div>\n"; -    if($this->flyer) { -      $str .= "  <img class=\"event_flyer\" alt=\"flyer\" src=\"gfx/flyers/" . $this->flyer . "\"/>\n"; +	public function write($fp) +	{ +		fwrite($fp, "  <event title=\"" . +					 htmlspecialchars($this->title, ENT_QUOTES, "UTF-8") . "\"\n"); +		fwrite($fp, "         time=\"" . $this->time . "\"\n"); +		fwrite($fp, "         description=\"" . +					 htmlspecialchars($this->description, ENT_QUOTES, "UTF-8") . "\"\n"); +		fwrite($fp, "         flyer=\"" . $this->flyer . "\">\n"); +		fwrite($fp, "  </event>\n"); +	} + +	public function show() +	{ +		global $ICONS_DIR; +		$icons = new Icons($ICONS_DIR."/"); +		$icon = $icons->icons[$this->flyer]; + +		$str = "<div class=\"event\">\n"; +		$str .= "  <div class=\"event_title\">" .  +			htmlspecialchars_decode($this->title, ENT_QUOTES) . "</div>\n"; +		$str .= "  <div class=\"event_time\">" . date("D M jS Y", $this->time) . "</div>\n"; +		$str .= "  <div class=\"event_description\">" .  +			htmlspecialchars_decode($this->description, ENT_QUOTES) . "</div>\n"; +		if($this->flyer) { +      $str .= "  <img class=\"event_flyer\" alt=\"flyer\" src=\"".$icon->prefix.$icon->file."\"/>\n";      }      $str .= "</div>\n";      return $str;    } - +	    public function Event($title, $time, $description, $flyer = "")    {      $this->title = $title; @@ -38,21 +55,178 @@ class Events {    // Admin config    public $admin_title = "Events"; -  public $admin_submodules = array("New Event" => "new", +  public $admin_submodules = array("Add Event" => "add",  																	 "Edit Event" => "edit",  																	 "Delete Event" => "delete"); +  public function admin_add($action, $vars) +	{ +		global $ICONS_DIR; + +		switch($action) { +		case "add":	 +			$event = new Event($vars["title"], DateTimeEdit::toTimestamp($vars, "time"), +												 $vars["description"], $vars["icon"]); +			echo "\"" .$event->title . "\" has now been added."; +			$this->add($event); +			$this->write(); +			break; +			 +		case "preview": +			$event = new Event($vars["title"], DateTimeEdit::toTimestamp($vars, "time"), +												 $vars["description"], $vars["icon"]); +			echo "<div class=\"preview\">\n"; +			echo "<div class=\"content\">\n"; +			echo $event->show(); +			echo "</div>\n"; +			echo "</div>\n"; +			echo "<p>Looking ok?</p>"; +			$form = new Form("add"); +			$form->addWidget(new Hidden($vars)); +			$form->addWidget(new Button("yes")); +			$form->render(); + +			$form = new Form("retry"); +			$form->addWidget(new Hidden($vars)); +			$form->addWidget(new Button("no")); +			$form->render(); +			break; +			 +		case "retry": +			$title = $vars["title"]; +			$time = DateTimeEdit::toTimestamp($vars, "time"); +			$description = $vars["description"]; +			$flyer = $vars["icon"]; +		default: +			$form = new Form("preview"); +			$form->addWidget(new LineEdit("Title", "title", $title)); +			$form->addWidget(new DateTimeEdit("Time", "time", $time)); +			$form->addWidget(new TextEdit("Description", "description", $description)); +			$form->addWidget(new ImageComboBox("Icon", "icon", $icon, new Icons($ICONS_DIR."/"))); +			$form->addWidget(new Button("Add event")); +			$form->render(); +			break; +		} +	} + +	public function admin_edit($action, $vars) +	{ +		global $ICONS_DIR; + +		switch($action) { +		case "add": +			$this->events[$vars["eventid"]]->title = $vars["title"]; +			$this->events[$vars["eventid"]]->time = DateTimeEdit::toTimestamp($vars, "time"); +			$this->events[$vars["eventid"]]->description = $vars["description"]; +			$this->events[$vars["eventid"]]->flyer = $vars["icon"]; +			$this->write(); +			echo "\"" . $this->events[$vars["eventid"]]->title . "\" has now been edited."; +			break; +			 +		case "preview": +			$event = new Event($vars["title"], DatetimeEdit::toTimestamp($vars, "time"),  +												 $vars["description"], $vars["icon"]); +			echo "<div class=\"preview\">\n"; +			echo "<div class=\"content\">\n"; +			echo $event->show(); +			echo "</div>\n"; +			echo "</div>\n"; +			echo "<p>Looking ok?</p>"; +			$form = new Form("add"); +			$form->addWidget(new Hidden($vars)); +			$form->addWidget(new Button("yes")); +			$form->render(); + +			$form = new Form("retry"); +			$form->addWidget(new Hidden($vars)); +			$form->addWidget(new Button("no")); +			$form->render(); +			break; +			 +		case "edit": +		case "retry": +			if(isset($vars["title"])) $title = $vars["title"]; +			else $title = $this->events[$vars["eventid"]]->title; +			if(isset($vars["time_year"])) $time = DateTimeEdit::toTimestamp($vars, "time"); +			else $time = $this->events[$vars["eventid"]]->time; +			if(isset($vars["description"])) $description = $vars["description"]; +			else $description = $this->events[$vars["eventid"]]->description; +			if(isset($vars["icon"])) $icon = $vars["icon"]; +			else $icon = $this->events[$vars["eventid"]]->flyer; +			 +			$form = new Form("preview"); +			$form->addWidget(new Hidden($vars)); +			$form->addWidget(new LineEdit("Title", "title", $title)); +			$form->addWidget(new DateTimeEdit("Time", "time", $time)); +			$form->addWidget(new TextEdit("Description", "description", $description)); +			$form->addWidget(new ImageComboBox("Icon", "icon", $icon, new Icons($ICONS_DIR."/"))); +			$form->addWidget(new Button("Update event")); +			$form->render(); +			break; +			 +		case "select": +		default: +			$eventlist = array(); +			foreach($this->events as $event) { +				$eventlist[$event->title] = $event->time;  +			} + +			$form = new Form("edit"); +			$form->addWidget(new ComboBox("Edit this event:", "eventid", "", $eventlist)); +			$form->addWidget(new Button("Edit...")); +			$form->render(); +			break; +		} +	} + +  public function admin_delete($action, $vars) +	{ +		switch($action) { +		case "delete": +			echo "\"". $this->events[$vars["eventid"]]->title . "\" has now been deleted."; +			unset($this->events[$vars["eventid"]]); +			$this->write(); +			break; +			 +		case "confirm": +			echo "Really delete: " . $this->events[$vars["eventid"]]->title . "?"; +			$form = new Form("delete"); +			$form->addWidget(new Hidden($vars)); +			$form->addWidget(new Button("yes")); +			$form->render(); + +			$form = new Form("select"); +			$form->addWidget(new Hidden($vars)); +			$form->addWidget(new Button("no")); +			$form->render(); +			break; +			 +		case "select": +		default: +			$eventlist = array(); +			foreach($this->events as $event) { +				$eventlist[$event->title] = $event->time;  +			} + +			$form = new Form("confirm"); +			$form->addWidget(new ComboBox("Delete this event:", "eventid", "", $eventlist)); +			$form->addWidget(new Button("Delete...")); +			$form->render(); +			break; +		} +	} +    public function admin($sub, $action, $vars)    {      switch($sub) { -    case "new": -      echo "New"; +    case "add": +      $this->admin_add($action, $vars);        break;      case "edit": -      echo "Edit"; +      $this->admin_edit($action, $vars);        break;      case "delete": -      echo "Delete"; +      $this->admin_delete($action, $vars);        break;      }    } @@ -158,13 +332,7 @@ class Events {      fwrite($fp, "<events>\n");      foreach($this->events as $event) { -      fwrite($fp, "  <event title=\"" . -	     htmlspecialchars($event->title, ENT_QUOTES, "UTF-8") . "\"\n"); -      fwrite($fp, "         time=\"" . $event->time . "\"\n"); -      fwrite($fp, "         description=\"" . -	     htmlspecialchars($event->description, ENT_QUOTES, "UTF-8") . "\"\n"); -      fwrite($fp, "         flyer=\"" . $event->flyer . "\">\n"); -      fwrite($fp, "  </event>\n"); +			$event->write($fp);      }      fwrite($fp, "</events>\n"); | 
