From 65e79596d64700f2c4819fc1153fca6306d6aaf0 Mon Sep 17 00:00:00 2001 From: Rasmus Fuhse <fuhse@data-quest.de> Date: Tue, 14 Sep 2021 16:32:33 +0200 Subject: [PATCH] add migration --- Aladdin.php | 5 +-- assets/application.js | 14 ++++++++ assets/style.less | 6 +++- controllers/lamp.php | 7 +++- migrations/01_init_plugin.php | 19 +++++++++++ plugin.manifest | 4 +-- views/lamp/_linked_brainstorm.php | 55 +++++++++++++++++++++---------- views/lamp/edit.php | 3 ++ 8 files changed, 90 insertions(+), 23 deletions(-) create mode 100755 migrations/01_init_plugin.php diff --git a/Aladdin.php b/Aladdin.php index 15a6d26..5fe04f1 100644 --- a/Aladdin.php +++ b/Aladdin.php @@ -9,7 +9,7 @@ require_once __DIR__ . "/models/BrainstormVote.php"; * @author Florian Bieringer <florian.bieringer@uni-passau.de> * @version 1.0 */ -class Aladdin extends StudIPPlugin implements StandardPlugin { +class Aladdin extends StudIPPlugin implements StandardPlugin, SystemPlugin { public function __construct() { @@ -20,6 +20,7 @@ class Aladdin extends StudIPPlugin implements StandardPlugin { if (stripos(Request::get("page"), "plugins.php/aladdin") !== false && isset($data['Aladdin'])) { $brainstorm = new Brainstorm($data['Aladdin']['brainstorm_id']); if ($GLOBALS['perm']->have_studip_perm("autor", $brainstorm['seminar_id'])) { + $newtime = $brainstorm['chdate']; foreach ($brainstorm->children as $child) { if ($child['chdate'] > $newtime) { @@ -40,7 +41,7 @@ class Aladdin extends StudIPPlugin implements StandardPlugin { $template->set_attribute("brainstorm", $brainstorm); $output['html'] = $template->render(); $output['lasttime'] = $newtime; - UpdateInformation::setInformation("Aladdin.updateSubbrainstorms", $output); + UpdateInformation::setInformation("Aladdin", $output); } } } diff --git a/assets/application.js b/assets/application.js index 7af5981..12aeca3 100644 --- a/assets/application.js +++ b/assets/application.js @@ -69,7 +69,21 @@ STUDIP.Aladdin = { } }; $(document).ready(function() { + if (jQuery(".subbrainstorms").length > 0) { + STUDIP.JSUpdater.register( + 'Aladdin', + STUDIP.Aladdin.updateSubbrainstorms, + function () { + return { + "brainstorm_id": jQuery(".subbrainstorms").data("brainstorm_id") + } + } + ); + } $('div.brainstorm textarea').autoResize(); + STUDIP.dialogReady(function () { + $('.aladdin-datetimepicker').datetimepicker(); + }); }); jQuery(document).on("click", ".brainstorm form.voting input[type=image]", STUDIP.Aladdin.vote_brainstorm); diff --git a/assets/style.less b/assets/style.less index 4ab3461..2c84d22 100644 --- a/assets/style.less +++ b/assets/style.less @@ -98,9 +98,13 @@ color: #000; } } + &.inactive { + header, .question { + opacity: 0.5; + } + } } .brainstorm_body { - background: url("@{icon-path}/black/arr_1right.png") no-repeat 10px 13px; border: thin solid @content-color-80; padding: 10px; padding-left: 30px; diff --git a/controllers/lamp.php b/controllers/lamp.php index f1be0c6..2afba19 100644 --- a/controllers/lamp.php +++ b/controllers/lamp.php @@ -11,7 +11,11 @@ class LampController extends PluginController { public function index_action() { Navigation::activateItem("/course/brainstorm"); - $this->brainstorms = Brainstorm::findBySQL("seminar_id = ? AND range_id IS NULL ORDER BY title ASC ", array(Context::get()->id)); + if ($GLOBALS['perm']->have_studip_perm('tutor', Context::get()->id)) { + $this->brainstorms = Brainstorm::findBySQL("seminar_id = ? AND range_id IS NULL ORDER BY title ASC ", array(Context::get()->id)); + } else { + $this->brainstorms = Brainstorm::findBySQL("seminar_id = ? AND range_id IS NULL AND (`start` IS NULL OR `start` < UNIX_TIMESTAMP()) ORDER BY title ASC ", array(Context::get()->id)); + } } public function edit_action($brainstorm_id = null) { @@ -47,6 +51,7 @@ class LampController extends PluginController { $data['user_id'] = User::findCurrent()->id; $data['range_id'] = $this->parent ? $this->parent->getId() : null; $data['seminar_id'] = $this->parent ? $this->parent['seminar_id'] : Context::get()->id; + $data['start'] = strtotime($data['start']) ?: null; $this->brainstorm->setData($data); $this->brainstorm->store(); diff --git a/migrations/01_init_plugin.php b/migrations/01_init_plugin.php new file mode 100755 index 0000000..1c516e0 --- /dev/null +++ b/migrations/01_init_plugin.php @@ -0,0 +1,19 @@ +<?php + +class InitPlugin extends Migration { + + public function up() { + DBManager::get()->exec(" + ALTER TABLE `brainstorms` + ADD COLUMN `start` int(11) DEFAULT NULL AFTER `text` + "); + } + + public function down() { + DBManager::get()->exec(" + ALTER TABLE `brainstorms` + DROP COLUMN `start` + "); + } + +} diff --git a/plugin.manifest b/plugin.manifest index 625f905..2156eef 100644 --- a/plugin.manifest +++ b/plugin.manifest @@ -1,8 +1,8 @@ pluginname=Aladdin pluginclassname=Aladdin origin=intelec -version=2.3 -studipMinVersion=4.0 +version=2.4 +studipMinVersion=4.6 studipMaxVersion=5.1.99 dbscheme=install.sql uninstalldbscheme=uninstall.sql diff --git a/views/lamp/_linked_brainstorm.php b/views/lamp/_linked_brainstorm.php index 974845a..1332367 100644 --- a/views/lamp/_linked_brainstorm.php +++ b/views/lamp/_linked_brainstorm.php @@ -1,24 +1,45 @@ -<article class='linked_brainstorm' id="brainstorm_<?= $brainstorm->id ?>"> - <div style="float: right;"> - <?= date("G:i d.m.Y", $brainstorm['mkdate']) ?> - </div> - <a href="<?= $controller->url_for('lamp/brainstorm/' . $brainstorm->id) ?>"> - <h1><?= htmlReady($brainstorm->title) ?></h1> +<article class='linked_brainstorm studip<?= $brainstorm->start > time() ? ' inactive' : '' ?>' + id="brainstorm_<?= $brainstorm->id ?>"> + <header> + <h1> + <a href="<?= $controller->url_for('lamp/brainstorm/' . $brainstorm->id) ?>"> + <?= htmlReady($brainstorm->title) ?> + </a> + </h1> + <nav> + <? if ($brainstorm->start > 0 && $GLOBALS['perm']->have_studip_perm('tutor', $brainstorm['seminar_id'])) : ?> + <?= sprintf(dgettext("aladdin","(startet am %s Uhr)"), date("d.m.Y G:i", $brainstorm['start'])) ?> + <? endif ?> + </nav> + </header> + <a href="<?= $controller->url_for('lamp/brainstorm/' . $brainstorm->id) ?>" class="question"> + <div class="body"> <?= formatReady($brainstorm->text) ?> </div> </a> <? if ($GLOBALS['perm']->have_studip_perm("tutor", Context::get()->id) || $GLOBALS['user']->id === $brainstorm['user_id']) : ?> - <a class="edit" - href="<?= PluginEngine::getLink( - $plugin, - [], - "lamp/edit/" . $brainstorm->getId() - ) ?>" data-dialog="size=auto;reload-on-close"> - <?= Icon::create("edit", "clickable")->asImg(20) ?> - </a> - <a class="delete" href="<?= PluginEngine::getLink($plugin, array(), "lamp/delete/".$brainstorm->getId()) ?>" onClick="return window.confirm('<?= dgettext("aladdin","Wirklich löschen?") ?>');"> - <?= Icon::create("trash", "clickable")->asImg(20) ?> - </a> + <div class="center"> + <?= \Studip\LinkButton::create( + dgettext("aladdin","Bearbeiten"), + PluginEngine::getURL( + $plugin, + [], + "lamp/edit/" . $brainstorm->getId() + ), + ['data-dialog' => "size=auto;reload-on-close"] + ) ?> + <?= \Studip\LinkButton::create( + dgettext("aladdin","Löschen"), + PluginEngine::getURL( + $plugin, + [], + "lamp/delete/" . $brainstorm->getId() + ), + [ + 'data-confirm' => dgettext("aladdin","Wirklich löschen?") + ] + ) ?> + </div> <? endif ?> </article> diff --git a/views/lamp/edit.php b/views/lamp/edit.php index 50c6a37..9fff647 100644 --- a/views/lamp/edit.php +++ b/views/lamp/edit.php @@ -15,6 +15,7 @@ <?= dgettext("aladdin",'Titel') ?> <input type="text" name="brainstorm[title]" + required value="<?= htmlReady($brainstorm['title']) ?>" placeholder="<?= dgettext("aladdin","Frage oder Thema") ?>"> </label> @@ -23,6 +24,7 @@ <label> <?= dgettext("aladdin",'Text') ?> <textarea name="brainstorm[text]" + required placeholder="<?= dgettext("aladdin","Um was soll's gehen?") ?>"><?= htmlReady($brainstorm['text']) ?></textarea> </label> </fieldset> @@ -36,6 +38,7 @@ <?= _("Startet am") ?> <input type="text" name="brainstorm[start]" + class="aladdin-datetimepicker" value="<?= $brainstorm['start'] ? date("d.m.Y H:i", $brainstorm['start']) : "" ?>"> </label> </div> -- GitLab