From 61b08c208054faefd38b47a96a9a83f7751edacb Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+github@gmail.com> Date: Mon, 11 May 2015 17:02:14 +0200 Subject: [PATCH] make rules editable --- assets/schwarzesbrett.less | 4 ++-- controllers/admin/settings.php | 5 +++++ migrations/14_add_rules.php | 40 ++++++++++++++++++++++++++++++++++ plugin.manifest | 2 +- views/admin/settings/index.php | 25 ++++++++++++++++----- views/category/list.php | 22 +------------------ 6 files changed, 68 insertions(+), 30 deletions(-) create mode 100644 migrations/14_add_rules.php diff --git a/assets/schwarzesbrett.less b/assets/schwarzesbrett.less index 2656ca5..c1f0cdd 100644 --- a/assets/schwarzesbrett.less +++ b/assets/schwarzesbrett.less @@ -113,8 +113,8 @@ color: red; } -.studip_form { - input[type=text], textarea, select { +.studip_form, #bb-config { + input[type=text], input[type=number], textarea, select { .box-sizing(border-box); width: 100%; } diff --git a/controllers/admin/settings.php b/controllers/admin/settings.php index 2c49c32..4ca8f22 100644 --- a/controllers/admin/settings.php +++ b/controllers/admin/settings.php @@ -98,6 +98,11 @@ class Admin_SettingsController extends SchwarzesBrettController 'key' => 'cacheMediaProxy', 'type' => 'checkbox', ); + + $options['BULLETIN_BOARD_RULES'] = array( + 'key' => 'rules', + 'type' => 'textarea', + ); foreach ($options as $key => $data) { $options[$key]['description'] = $this->getConfig($key, 'description'); diff --git a/migrations/14_add_rules.php b/migrations/14_add_rules.php new file mode 100644 index 0000000..92958ce --- /dev/null +++ b/migrations/14_add_rules.php @@ -0,0 +1,40 @@ +<?php +class AddRules extends Migration +{ + public function description() + { + return 'Adds the config entry for the now editable rules of the bulletin board.'; + } + + public function up() + { + $query = "INSERT IGNORE INTO `config` (`config_id`, `parent_id`, `field`, `value`, `is_default`, `type`, + `range`, `section`, `position`, `mkdate`, `chdate`, `description`, `comment`, `message_template`) + VALUES (MD5(:id), '', :id, :value, '1', 'string', + 'global', 'SchwarzesBrettPlugin', '0', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), :description, '', '')"; + $statement = DBManager::get()->prepare($query); + + $statement->bindValue(':id', 'BULLETIN_BOARD_RULES'); + $statement->bindValue(':value', $this->getRules()); + $statement->bindValue('description', 'Die angezeigten Regeln des Schwarzen Bretts'); + $statement->execute(); + } + + public function down() + { + DBManager::get()->exec("DELETE FROM `config` WHERE `config_id` = MD5('BULLETIN_BOARD_RULES')"); + } + + private function getRules() + { + $rules = '!!!Allgemeine Hinweise:' . "\n"; + $rules .= '- Sie k�nnen nur in Themen eine Anzeige erstellen, in denen Sie die n�tigen Rechte haben.' . "\n"; + $rules .= '- Mit der Suche werden sowohl Titel als auch Beschreibung aller Anzeigen durchsucht.' . "\n"; + $rules .= '- Sie k�nnen Ihre eigenen Anzeigen jederzeit nachtr�glich %%bearbeiten%% oder %%l�schen%%.' . "\n"; + $rules .= '- Bitte stellen Sie Ihre Anzeigen in die richtige Kategorie ein. Damit das Schwarze Brett �bersichtlich bleibt, %%l�schen%% Sie bitte Ihre Anzeigen umgehend nach Abschluss/Verkauf.' . "\n"; + $rules .= '- **Bitte Artikel nur in %%eine%% Kategorie einstellen!**' . "\n"; + $rules .= '- **Kommerzielle Angebote sind __nicht__ erlaubt (dazu geh�ren auch solche Anzeigen die einen Link enthalten, der dem Einstellenden eine Provision verspricht). Sie werden gel�scht!**' . "\n"; + + return $rules; + } +} diff --git a/plugin.manifest b/plugin.manifest index 926155e..ecad72c 100644 --- a/plugin.manifest +++ b/plugin.manifest @@ -2,6 +2,6 @@ pluginname=SchwarzesBrettPlugin pluginclassname=SchwarzesBrettPlugin pluginclassname=SchwarzesBrettWidget origin=IBIT -version=3.6.2 +version=3.6.3 studipMinVersion=3.1 description=Globales Schwarzes Brett f�r Kleinanzeigen mit Kategorien (Gesuche/Angebote) diff --git a/views/admin/settings/index.php b/views/admin/settings/index.php index 2c363d8..74951e4 100644 --- a/views/admin/settings/index.php +++ b/views/admin/settings/index.php @@ -10,7 +10,7 @@ <?= CSRFProtection::tokenTag() ?> <input type="hidden" name="studip_ticket" value="<?= get_ticket() ?>"> - <table class="default"> + <table class="default" id="bb-config"> <thead> <tr> <th><?= _('Einstellung') ?></th> @@ -18,16 +18,28 @@ </tr> </thead> <tbody> - <? foreach ($options as $key => $option): ?> + <? foreach ($options as $key => $option): ?> + <? if ($option['type'] === 'textarea'): ?> + <tr> + <td colspan="2"> + <label for="option-<?= md5($key) ?>"> + <?= htmlReady($option['description']) ?> + </label><br> + + <textarea name="<?= htmlReady($option['key']) ?>" class="add_toolbar"><?= htmlReady($option['value']) ?></textarea> + </td> + </tr> + <? else: ?> <tr> <td> <label for="option-<?= md5($key) ?>"> - <?= htmlReady($option['description']) ?> + <?= htmlReady($option['description']) ?> + </label> </td> <td> <? if ($option['type'] === 'checkbox'): ?> - <input type="hidden" name="<?= $option['key'] ?>" value="0"> - <input type="checkbox" name="<?= $option['key'] ?>" + <input type="hidden" name="<?= htmlReady($option['key']) ?>" value="0"> + <input type="checkbox" name="<?= htmlReady($option['key']) ?>" id="option-<?= md5($key) ?>" value="1" <? if ((bool)$option['value']) echo 'checked'; ?> <? if ($option['activates']) printf('data-activates="#option-%s"', md5($option['activates'])); ?>> @@ -38,7 +50,8 @@ <? endif; ?> </td> </tr> - <? endforeach; ?> + <? endif; ?> + <? endforeach; ?> </tbody> <tfoot> <tr> diff --git a/views/category/list.php b/views/category/list.php index e5d159d..8ce7e78 100644 --- a/views/category/list.php +++ b/views/category/list.php @@ -15,24 +15,4 @@ </ul> <? endif; ?> -<h3>Allgemeine Hinweise:</h3> -<ul> - <li> - Eine Anzeige hat zur Zeit eine Laufzeit von <b><?= $expire_days ?> Tagen</b>. - Nach Ablauf dieser Frist wird die Anzeige automatisch nicht mehr angezeigt. - </li> - <li>Sie k�nnen nur in Themen eine Anzeige erstellen, in denen Sie die n�tigen Rechte haben.</li> - <li>Mit der Suche werden sowohl Titel als auch Beschreibung aller Anzeigen durchsucht.</li> - <li> - Sie k�nnen Ihre eigenen Anzeigen jederzeit nachtr�glich <em>bearbeiten</em> - oder <em>l�schen</em>. Die Buttons befinden sich unter dem Text. - </li> - <li> - Bitte stellen Sie Ihre Anzeigen in die richtigen Kategorien ein. - Damit das Schwarze Brett �bersichtlich bleibt, <em>l�schen</em> Sie - bitte Ihre Anzeigen umgehend nach Abschluss/Verkauf. - </li> - <li><b>Bitte Artikel nur in <em>eine</em> Kategorie einstellen!</b></li> - <li><b>Bitte keine kommerziellen Angebote einstellen (dazu geh�ren auch solche Anzeigen die einen Link enthalten, der dem Einstellenden eine Provision verspricht). Sie werden gel�scht!</b></li> -</ul> -<br/> +<?= formatReady(Config::get()->BULLETIN_BOARD_RULES) ?> -- GitLab