From ef7233279bd8e88898a073efb9d8d15f29c1957a Mon Sep 17 00:00:00 2001 From: Thomas Hackl Date: Fri, 8 Apr 2022 10:58:23 +0200 Subject: first steps to more functionality --- app/views/admin/autoinsert/_institutes.php | 22 ++++++++++++ app/views/admin/autoinsert/_semesters.php | 0 app/views/admin/autoinsert/index.php | 48 ++++++++++++-------------- db/migrations/5.2.1_extended_autoinsert.php | 24 +++++++++++++ lib/classes/AutoInsert.class.php | 38 ++++++++++++-------- resources/assets/javascripts/lib/autoinsert.js | 6 ++-- 6 files changed, 95 insertions(+), 43 deletions(-) delete mode 100644 app/views/admin/autoinsert/_semesters.php create mode 100644 db/migrations/5.2.1_extended_autoinsert.php diff --git a/app/views/admin/autoinsert/_institutes.php b/app/views/admin/autoinsert/_institutes.php index e69de29..f264b25 100644 --- a/app/views/admin/autoinsert/_institutes.php +++ b/app/views/admin/autoinsert/_institutes.php @@ -0,0 +1,22 @@ +
+

+ +

+ + withButton() ?> + + + + +
diff --git a/app/views/admin/autoinsert/_semesters.php b/app/views/admin/autoinsert/_semesters.php deleted file mode 100644 index e69de29..0000000 diff --git a/app/views/admin/autoinsert/index.php b/app/views/admin/autoinsert/index.php index ce16165..49e3e0e 100644 --- a/app/views/admin/autoinsert/index.php +++ b/app/views/admin/autoinsert/index.php @@ -53,10 +53,6 @@ use Studip\Button, Studip\LinkButton; - @@ -89,28 +85,30 @@ use Studip\Button, Studip\LinkButton; - - - - - - - + $courses): ?> + $auto_sem): ?> + + + + + + - render_partial("admin/autoinsert/_status.php", ['status' => 'dozent', 'auto_sem' => $auto_sem, 'domains' => $userdomains]) ?> - render_partial("admin/autoinsert/_status.php", ['status' => 'tutor', 'auto_sem' => $auto_sem, 'domains' => $userdomains]) ?> - render_partial("admin/autoinsert/_status.php", ['status' => 'autor', 'auto_sem' => $auto_sem, 'domains' => $userdomains]) ?> - - - _('Veranstaltung entfernen'), 'class' => 'text-top'] - ) ?> - - - - + render_partial("admin/autoinsert/_status.php", ['status' => 'dozent', 'auto_sem' => $auto_sem, 'domains' => $userdomains]) ?> + render_partial("admin/autoinsert/_status.php", ['status' => 'tutor', 'auto_sem' => $auto_sem, 'domains' => $userdomains]) ?> + render_partial("admin/autoinsert/_status.php", ['status' => 'autor', 'auto_sem' => $auto_sem, 'domains' => $userdomains]) ?> + + + _('Veranstaltung entfernen'), 'class' => 'text-top'] + ) ?> + + + + + diff --git a/db/migrations/5.2.1_extended_autoinsert.php b/db/migrations/5.2.1_extended_autoinsert.php new file mode 100644 index 0000000..2d48bae --- /dev/null +++ b/db/migrations/5.2.1_extended_autoinsert.php @@ -0,0 +1,24 @@ +exec("ALTER TABLE `auto_insert_sem` + CHANGE `domain_id` `range_id` VARCHAR(45) NOT NULL DEFAULT '', + ADD `range_type` ENUM('degree','domain','institute','semester','subject') NOT NULL DEFAULT 'domain' + AFTER `range_id`"); + } + + public function down() + { + DBManager::get()->exec("ALTER TABLE `auto_insert_sem` + CHANGE `range_id` `domain_id` VARCHAR(45) NOT NULL DEFAULT '', + DROP `range_type`"); + } +} diff --git a/lib/classes/AutoInsert.class.php b/lib/classes/AutoInsert.class.php index 2ee009f..4c6069d 100644 --- a/lib/classes/AutoInsert.class.php +++ b/lib/classes/AutoInsert.class.php @@ -52,12 +52,13 @@ class AutoInsert private function loadSettings() { - $query = "SELECT a.seminar_id, GROUP_CONCAT(a.status,IF(LENGTH(a.domain_id)=0,':keine',CONCAT(':',a.domain_id))) AS domain_status, s.Name, s.Schreibzugriff, s.start_time "; + $query = "SELECT a.seminar_id, GROUP_CONCAT(a.status,IF(LENGTH(a.range_id)=0,':keine',CONCAT(':',a.domain_id))) AS range_status, a,range_type, s.Name, s.Schreibzugriff, s.start_time "; $query .= "FROM auto_insert_sem a "; $query .= "JOIN seminare AS s USING (Seminar_id) "; $query .= "GROUP BY s.seminar_id "; $query .= "ORDER BY s.Name"; $statement = DBManager::get()->query($query); + $results = $statement->fetchAll(PDO::FETCH_ASSOC); foreach ($results as $result) { if ($result['Schreibzugriff'] < 3) { @@ -277,19 +278,26 @@ class AutoInsert $statement = DBManager::get()->query($query); $results = $statement->fetchAll(PDO::FETCH_COLUMN); } else { - $query = "SELECT a.seminar_id, GROUP_CONCAT(a.status,IF(LENGTH(a.domain_id)=0,':keine',CONCAT(':',a.domain_id))) AS domain_status, s.Name, s.Schreibzugriff, s.start_time "; - $query .= "FROM auto_insert_sem a "; - $query .= "JOIN seminare AS s USING (Seminar_id) "; - - $query .= "GROUP BY s.seminar_id "; - $query .= "ORDER BY s.Name"; - $statement = DBManager::get()->query($query); - $results = $statement->fetchAll(PDO::FETCH_ASSOC); - foreach ($results as $index => $result) { - $domains = explode(',', $result['domain_status']); - foreach ($domains as $domain) { - $array = explode(':', $domain); - $results[$index]['status'][$array[1]][] = $array[0]; + $results = []; + foreach (words('degree domain institute semester subject') as $type) { + $query = "SELECT a.seminar_id, GROUP_CONCAT(a.status,IF(LENGTH(a.range_id)=0,':keine',CONCAT(':',a.range_id))) AS range_status, s.Name, s.Schreibzugriff, s.start_time "; + $query .= "FROM auto_insert_sem a "; + $query .= "JOIN seminare AS s USING (Seminar_id) WHERE a.`range_type` = :type "; + + $query .= "GROUP BY s.seminar_id "; + $query .= "ORDER BY s.Name"; + + $data = DBManager::get()->fetchAll($query, ['type' => $type]); + if (count($data) > 0) { + $results[$type] = []; + + foreach ($data as $index => $result) { + $entries = explode(',', $result['range_status']); + foreach ($entries as $entry) { + $array = explode(':', $entry); + $results[$type][$index]['status'][$array[1]][] = $array[0]; + } + } } } } @@ -304,7 +312,7 @@ class AutoInsert */ public static function getSeminar($seminar_id) { - $query = "SELECT a.seminar_id, GROUP_CONCAT(a.status) AS status, s.Name "; + $query = "SELECT a.seminar_id, GROUP_CONCAT(a.status) AS status,a.range_type, s.Name "; $query .= "FROM auto_insert_sem a "; $query .= "JOIN seminare AS s USING (Seminar_id) "; $query .= "WHERE a.seminar_id = ? "; diff --git a/resources/assets/javascripts/lib/autoinsert.js b/resources/assets/javascripts/lib/autoinsert.js index a6fcae6..66ffafa 100644 --- a/resources/assets/javascripts/lib/autoinsert.js +++ b/resources/assets/javascripts/lib/autoinsert.js @@ -1,9 +1,9 @@ const Autoinsert = { init: function() { - jQuery('input[name="autoinsert_type"][type="radio"]').on('change', function(event) { + $('input[name="autoinsert_type"][type="radio"]').on('change', function(event) { const selected = event.target.value - jQuery('.autoinsert-selection').addClass('hidden-js') - jQuery('#autoinsert-' + selected).removeClass('hidden-js') + $('.autoinsert-selection').addClass('hidden-js') + $('#autoinsert-' + selected).removeClass('hidden-js') }) } } -- cgit v1.0