Added News-module
[AOOS.git] / modules / News / News.php
blob184196842cdeed7d86da6906e466f113bf735481
1 <?php
3 /**
4 * News-module
5 * @author Sebastian Skejø
6 */
8 class News extends AOOSModule
10 private $_view = null;
12 static public function dependencies() {
13 return array("Paginator", "Form");
16 public function dataModelDefinition() {
17 $m = new AOOSModel($this->core());
18 $m->setColumnIndex(array("author", "title", "date", "content", "id"));
19 $m->setProperty("id", AOOSMODEL_TYPE_INTEGER,
20 AOOSMODEL_PROP_FROM_DATABASE|
21 AOOSMODEL_PROP_DATA_INCREASING|
22 AOOSMODEL_PROP_UNIQUE|
23 AOOSMODEL_PROP_GUI_PRIVATE
25 $m->setProperty("author", AOOSMODEL_TYPE_STRING,
26 AOOSMODEL_PROP_DATA_ESCAPE|
27 AOOSMODEL_PROP_DATA_NOHTML|
28 AOOSMODEL_PROP_DATA_STRIP|
29 AOOSMODEL_PROP_FROM_DATABASE);
30 $m->setProperty("title", AOOSMODEL_TYPE_STRING,
31 AOOSMODEL_PROP_DATA_ESCAPE|
32 AOOSMODEL_PROP_DATA_NOHTML|
33 AOOSMODEL_PROP_DATA_STRIP|
34 AOOSMODEL_PROP_FROM_DATABASE);
35 $m->setProperty("date", AOOSMODEL_TYPE_DATETIME,
36 AOOSMODEL_PROP_FROM_DATABASE|
37 AOOSMODEL_PROP_GUI_PRIVATE);
38 $m->setProperty("content", AOOSMODEL_TYPE_STRING,
39 AOOSMODEL_PROP_DATA_ESCAPE|
40 AOOSMODEL_PROP_DATA_NOHTML|
41 AOOSMODEL_PROP_FROM_DATABASE);
42 return $m;
45 public function postInitialization() {
46 $this->dataModel()->populate();
47 $view = new NewsView($this);
48 $view->connect("addNews", $this, "addNews", 1);
49 $this->_view = $view;
52 public function show() {
53 $p = $this->core()->getModule("Paginator");
54 $f = $this->core()->getModule("Form");
55 switch($p->getOption(0)) {
56 case("add"):
57 return $this->_view->add();
58 break;
59 case("show"):
60 return $this->dataModel()->getRow($p->getOption(1));
61 break;
62 default:
63 $url = $p->currentURL()."/show/";
64 return $f->createListRows($this->dataModel(), "<td><a href=\"".$url."#{id}\">#{title}</a></td><td>#{author}</td>");
65 break;
69 public function addNews($news) {
70 $this->dataModel()->insert($news);
71 $this->dataModel()->save();
72 $this->emit("newsAdded", $news->title);
73 print "'".$news->title."' added!";
74 return true;
77 /**
78 * @param $newsid The news id
80 public function deleteNews($newsid) {
81 $this->dataModel()->remove($newsid);
82 $this->dataModel()->save();
83 $this->emit("newsDeleted", $newsid);
84 return true;
88 class NewsView extends AOOSModule {
89 static public function dependencies() {
90 return array("Form", "Reciever", "Paginator");
93 public function add() {
94 $f = $this->core()->getModule("Form");
95 $r = $this->core()->getModule("Reciever");
96 $p = $this->core()->getModule("Paginator");
98 if ($row = $r->getRow("POST")) {
99 $this->emit("addNews", array($row));
102 $ignorecols = array("id");
103 $f->setAction($p->currentURL());
104 $f->setMethod("POST");
105 $form = $f->createFormColumn($this->parent()->dataModel(), $ignorecols);
106 return $form;
109 // vim: number