summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/news.inc.php61
-rw-r--r--templates/main-menu.html1
-rw-r--r--templates/page-news.html20
3 files changed, 82 insertions, 0 deletions
diff --git a/modules/news.inc.php b/modules/news.inc.php
new file mode 100644
index 00000000..03850527
--- /dev/null
+++ b/modules/news.inc.php
@@ -0,0 +1,61 @@
+<?php
+
+class Page_News extends Page
+{
+
+ private $latestNews = array();
+
+ protected function doPreprocess()
+ {
+ // load user, we will need it later
+ User::load();
+
+ // check if news content were set by the user
+ $newsTitle = Request::post('news-title');
+ $newsContent = Request::post('news-content');
+ if ($newsContent !== false && $newsTitle !== false) {
+
+ // we got title and content, save it to DB
+ Database::exec("INSERT INTO news (dateline, title, content) VALUES (:dateline, :title, :content)", array(
+ 'dateline' => time(),
+ 'title' => $newsTitle,
+ 'content' => $newsContent
+ ));
+ // all done, redirect to main news page
+ Util::redirect('?do=News');
+ }
+
+ }
+
+ protected function doRender()
+ {
+ // user must be logged in
+ if (!User::isLoggedIn()) {
+ Render::addTemplate('page-main-guest');
+ return;
+ }
+
+ // only admins should be able to edit news
+ if (!User::hasPermission('superadmin')) {
+ Message::addError('no-permission');
+ return;
+ }
+
+ // fetch the latest news
+ $res = Database::simpleQuery('SELECT * FROM news ORDER BY dateline DESC LIMIT 1');
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ $latestTitle = $row['title'];
+ $latestContent = $row['content'];
+ $latestDate = $row['dateline'];
+ }
+ // show it to the user
+ Render::addDialog('News Verwaltung', false, 'page-news', array(
+ 'token' => Session::get('token'),
+ 'latestDate' => DateTime::createFromFormat('U', $latestDate)->format('Y-m-d H:i:s'),
+ 'latestContent' => $latestContent,
+ 'latestTitle' => $latestTitle
+ ));
+
+ }
+
+}
diff --git a/templates/main-menu.html b/templates/main-menu.html
index a419857c..50fdd211 100644
--- a/templates/main-menu.html
+++ b/templates/main-menu.html
@@ -26,6 +26,7 @@
<li><a href="?do=VmStore">VM Speicherort</a></li>
</ul>
</li>
+ <li><a href="?do=News">News</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
{{{loginPanel}}}
diff --git a/templates/page-news.html b/templates/page-news.html
new file mode 100644
index 00000000..37a23b66
--- /dev/null
+++ b/templates/page-news.html
@@ -0,0 +1,20 @@
+<p>Hier haben Sie die Möglichkeit, die von bwLehrpool-Clients angezeigten News zu editieren.
+</p>
+<form action="?do=News" method="post">
+ <div class="panel panel-default">
+ <div class="panel-heading">bwLehrpool News
+ </div>
+ <div class="panel-body">
+ <div class="form-group">
+ <span class="input-group-addon slx-ga"><strong>Titel</strong></span>
+ <input type="text" name="news-title" class="form-control" placeholder="Willkommen!" value="{{latestTitle}}">
+ <br></br>
+ <span class="input-group-addon slx-ga"><b>Inhalt</b></span>
+ <textarea name="news-content" class="form-control" rows="5" cols="30" placeholder="Willkommen beim bwLehrpool-System!">{{latestContent}}</textarea>
+ </div>
+ </div>
+ <div class="panel-footer">Letzte Aktualisierung: {{latestDate}}</div>
+ </div>
+ <input type="hidden" name="token" value="{{token}}">
+ <button class="btn btn-sm btn-primary" type="submit">Speichern</button>
+</form>