diff --git a/Aladdin.php b/Aladdin.php index 15a6d26d5fd7c90bc2ad19c894c4f472d8f27f00..5fe04f14c56a2386d529df111344622cd5410e56 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 7af5981755b610d091ba7f78fd69cd8082fb9940..12aeca31f367bc44b9629c5a08898175e501759a 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 4ab34616197ac821271ac5da46460934dd3da377..2c84d227757ea9df8bad181a2c9eeb90f6f2e69d 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 f1be0c6b855402eacbb8f17d9a70c8c43068b233..2afba19189b358e8caf66eadb2a7886afdbc5d0a 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 0000000000000000000000000000000000000000..1c516e0c20332877bdb945eb9eee5ab05ba0f588 --- /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 625f905176e3aed1c846e801115c951f94ffd25e..2156eefca7aba67640b380bff65a9b5d0a3414e8 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 974845a77956c525ca7ab19f8a55ff0a33553b69..13323675a7e99e6b69593f21f81c0254a42a8093 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 50c6a37df963b88d75da68d7571d806c4c33505d..9fff647ebb534634c492a429319642a944206eec 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>