From bfe6c82aca746375d47acc9d8613f2cd27df57b3 Mon Sep 17 00:00:00 2001 From: Rasmus Fuhse <fuhse@data-quest.de> Date: Tue, 20 Aug 2019 10:16:44 +0200 Subject: [PATCH] add week_offset and end_offset --- controllers/copy.php | 16 ++++++++++++- views/copy/info.php | 33 ++++++++++++++++++-------- views/copy/semester_start_und_ende.php | 28 ++++++++++++++++++++++ 3 files changed, 66 insertions(+), 11 deletions(-) create mode 100644 views/copy/semester_start_und_ende.php diff --git a/controllers/copy.php b/controllers/copy.php index c40e0f4..713d9b9 100755 --- a/controllers/copy.php +++ b/controllers/copy.php @@ -15,12 +15,22 @@ class CopyController extends PluginController "AND " . get_vis_query() . " " . "AND auth_user_md5.perms = 'dozent' " . "ORDER BY Vorname, Nachname", _("Lehrendennamen eingeben"), "user_id"); + $this->semesters = array_reverse(Semester::getAll()); + $this->semester = UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_SEMESTER_ID + ? Semester::find(UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_SEMESTER_ID) + : $this->semesters[0]; + } + + public function semester_start_und_ende_action($semester_id) + { + $this->semesters = array_reverse(Semester::getAll()); + $this->semester = Semester::find($semester_id); } public function process_action() { if (Request::isPost()) { - foreach (array("semester_id", "dozent_id", "lock_copied_courses", "cycles", "resource_assignments") as $param) { + foreach (array("semester_id", "dozent_id", "lock_copied_courses", "cycles", "resource_assignments", "week_offset", "end_offset") as $param) { $config_name = "COURSECOPY_SETTINGS_".strtoupper($param); UserConfig::get($GLOBALS['user']->id)->store($config_name, Request::get($param)); } @@ -128,6 +138,10 @@ class CopyController extends PluginController $newcycle->setData($cycledate->toArray()); $newcycle->setId($newcycle->getNewId()); $newcycle['seminar_id'] = $newcourse->getId(); + $newcycle['week_offset'] = Request::get("week_offset"); + $newcycle['end_offset'] = Request::get("end_offset") !== 10000 + ? Request::get("end_offset") + : floor(($semester['vorles_ende'] - $semester['vorles_beginn']) / (86400 * 7)); $newcycle['mkdate'] = time(); $newcycle['chdate'] = time(); $newcycle->store(); diff --git a/views/copy/info.php b/views/copy/info.php index b6df41f..13a3c12 100755 --- a/views/copy/info.php +++ b/views/copy/info.php @@ -6,16 +6,16 @@ <fieldset> <legend> - <?= _("Kopieroptionen") ?> + <?= _("Allgemein") ?> </legend> <label> <?= _("In Semester") ?> - <select name="semester_id" required> + <select name="semester_id" required onChange="var week_offset = jQuery('select[name=week_offset]').val(); var end_offset = jQuery('select[name=end_offset]').val(); jQuery('#semester_start_und_ende').load(STUDIP.URLHelper.getURL('plugins.php/coursecopy/copy/semester_start_und_ende/' + this.value), function () { jQuery('select[name=week_offset]').val(week_offset); jQuery('select[name=end_offset]').val(end_offset); }); "> <option value=""></option> - <? foreach (array_reverse(Semester::getAll()) as $semester) : ?> - <option value="<?= htmlReady($semester->getId()) ?>"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_SEMESTER_ID == $semester->getId() ? " selected" : "" ?>> - <?= htmlReady($semester['name']) ?> + <? foreach ($semesters as $sem) : ?> + <option value="<?= htmlReady($sem->getId()) ?>"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_SEMESTER_ID == $sem->getId() ? " selected" : "" ?>> + <?= htmlReady($sem['name']) ?> </option> <? endforeach ?> </select> @@ -33,26 +33,39 @@ } echo $qs->render() ?> + + <label> + <input type="checkbox" name="lock_copied_courses" value="1"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_LOCK_COPIED_COURSES ? " checked" : "" ?>> + <?= _('Kopierte Veranstaltungen sperren') ?> + </label> </label> + </fieldset> + + <fieldset> + <legend> + <?= _("Termine") ?> + </legend> + <label> <input type="checkbox" name="cycles" - onChange="jQuery('#resource_assignments').toggle();" + onChange="jQuery('#resource_assignments, #semester_start_und_ende').toggle();" value="1"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_CYCLES ? " checked" : "" ?>> <?= _("Regelmäßige Termine mit kopieren") ?> </label> + <div id="semester_start_und_ende" style="<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_CYCLES ? "" : "display: none;" ?>"> + <?= $this->render_partial("copy/semester_start_und_ende.php") ?> + </div> + <label id="resource_assignments" style="<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_CYCLES ? "" : "display: none;" ?>"> <input type="checkbox" name="resource_assignments" value="1"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_RESOURCE_ASSIGNMENTS ? " checked" : "" ?>> <?= _("Raumbuchungen mit übernehmen") ?> </label> - <label> - <input type="checkbox" name="lock_copied_courses" value="1"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_LOCK_COPIED_COURSES ? " checked" : "" ?>> - <?= _('Kopierte Veranstaltungen sperren') ?> - </label> </fieldset> + <div data-dialog-button> <?= \Studip\Button::create(_("Kopieren"), "copy", array('onclick' => "return window.confirm('"._("Wirklich kopieren?")."');")) ?> </div> diff --git a/views/copy/semester_start_und_ende.php b/views/copy/semester_start_und_ende.php new file mode 100644 index 0000000..97ffbca --- /dev/null +++ b/views/copy/semester_start_und_ende.php @@ -0,0 +1,28 @@ +<label> + <?= _("Startwoche") ?> + <select name="week_offset"> + <? $i = 0 ?> + <? while ($semester['vorles_beginn'] + 86400 * 7 * $i < $semester['vorles_ende']) : ?> + <option value="<?= $i ?>"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_WEEK_OFFSET == $i ? " checked" : "" ?>> + <?= sprintf(_("%s. Semesterwoche (ab %s)"), $i + 1, date("d.m.Y", $semester['vorles_beginn'] + 86400 * 7 * $i)) ?> + </option> + <? $i++ ?> + <? endwhile ?> + </select> +</label> + +<label> + <?= _("Endwoche") ?> + <select name="end_offset"> + <option value="10000"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_END_OFFSET == 10000 ? " checked" : "" ?>> + <?= _("Letzte Semesterwoche") ?> + </option> + <? $i = floor(($semester['vorles_ende'] - $semester['vorles_beginn']) / (86400 * 7)) - 1 ?> + <? while ($i >= 0) : ?> + <option value="<?= $i ?>"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_END_OFFSET == $i ? " checked" : "" ?>> + <?= sprintf(_("%s. Semesterwoche (ab %s)"), $i + 1, date("d.m.Y", $semester['vorles_beginn'] + 86400 * 7 * $i)) ?> + </option> + <? $i-- ?> + <? endwhile ?> + </select> +</label> \ No newline at end of file -- GitLab