From 05b361f1288fa93e272e11eb2e3cc3e6ec5e830a Mon Sep 17 00:00:00 2001 From: Jannik Schönartz Date: Fri, 23 Nov 2018 00:08:07 +0100 Subject: [dozmod] Add LDAP filter submodule --- modules-available/dozmod/lang/de/messages.json | 7 ++ modules-available/dozmod/lang/de/module.json | 1 + modules-available/dozmod/lang/de/permissions.json | 2 + .../dozmod/lang/de/template-tags.json | 8 ++ modules-available/dozmod/lang/en/messages.json | 6 ++ modules-available/dozmod/lang/en/module.json | 1 + modules-available/dozmod/lang/en/permissions.json | 2 + .../dozmod/lang/en/template-tags.json | 8 ++ modules-available/dozmod/page.inc.php | 3 +- modules-available/dozmod/pages/ldapfilters.inc.php | 119 +++++++++++++++++++++ .../dozmod/permissions/permissions.json | 6 ++ .../dozmod/templates/ldapfilter-add.html | 39 +++++++ .../dozmod/templates/ldapfilters.html | 72 +++++++++++++ 13 files changed, 273 insertions(+), 1 deletion(-) create mode 100644 modules-available/dozmod/pages/ldapfilters.inc.php create mode 100644 modules-available/dozmod/templates/ldapfilter-add.html create mode 100644 modules-available/dozmod/templates/ldapfilters.html (limited to 'modules-available/dozmod') diff --git a/modules-available/dozmod/lang/de/messages.json b/modules-available/dozmod/lang/de/messages.json index 60c37927..47912ae1 100644 --- a/modules-available/dozmod/lang/de/messages.json +++ b/modules-available/dozmod/lang/de/messages.json @@ -3,6 +3,13 @@ "delete-images": "L\u00f6schung: {{0}}", "dozmod-error": "Fehler bei der Kommunikation mit dem bwLehrpool-Suite server: {{0}}", "images-pending-delete-exist": "Zur L\u00f6schung markierte VM-Versionen: {{0}}", + "ldap-filter-created": "LDAP Filter wurde erfolgreich erstellt", + "ldap-filter-deleted": "LDAP Filter wurde erfolgreich gel\u00f6scht", + "ldap-invalid-filter-id": "Ung\u00fcltige LDAP Filter ID", + "ldap-filter-id-missing": "Fehlende LDAP Filter ID", + "ldap-filter-insert-failed": "LDAP filter konnte der Datenbank nicht hinzugef\u00fcgt werden", + "ldap-filter-save-missing-information": "Es fehlen LDAP Filter Informationen", + "ldap-filter-saved": "LDAP Filter wurde erfolgreich gespeichert", "mail-config-saved": "Mail-Konfiguration gespeichert", "no-expired-images": "Keine Abgelaufenen VM-Versionen", "nothing-submitted": "Es wurde nichts \u00fcbermittelt", diff --git a/modules-available/dozmod/lang/de/module.json b/modules-available/dozmod/lang/de/module.json index c9acd4ee..4a5e0249 100644 --- a/modules-available/dozmod/lang/de/module.json +++ b/modules-available/dozmod/lang/de/module.json @@ -3,6 +3,7 @@ "page_title": "Verwalten der bwLehrpool-Suite", "submenu_actionlog": "Aktions-Log", "submenu_expiredimages": "Abgelaufene VM-Versionen", + "submenu_ldapfilters": "LDAP Filter", "submenu_mailconfig": "Email-Konfiguration", "submenu_runtimeconfig": "Limits und Standardwerte", "submenu_templates": "Textbausteine f\u00fcr E-Mails", diff --git a/modules-available/dozmod/lang/de/permissions.json b/modules-available/dozmod/lang/de/permissions.json index df913265..ad099d37 100644 --- a/modules-available/dozmod/lang/de/permissions.json +++ b/modules-available/dozmod/lang/de/permissions.json @@ -1,6 +1,8 @@ { "actionlog.view": "Aktions-Log einsehen.", "expiredimages.delete": "Zur L\u00f6schung vorgemerkete Abbilder l\u00f6schen.", + "ldapfilters.save": "LDAP Filter speichern.", + "ldapfilters.view": "LDAP Filter einsehen.", "mailconfig.save": "\u00c4nderungen an der SMTP-Konfiguration zum Versenden von Mails speichern.", "runtimeconfig.save": "\u00c4nderungen an der Laufzeit-Konfiguration speichern.", "templates.reset": "E-Mail Templates zur\u00fccksetzen.", diff --git a/modules-available/dozmod/lang/de/template-tags.json b/modules-available/dozmod/lang/de/template-tags.json index 84f6e0de..7fbeda37 100644 --- a/modules-available/dozmod/lang/de/template-tags.json +++ b/modules-available/dozmod/lang/de/template-tags.json @@ -35,6 +35,14 @@ "lang_lastEditor": "Zuletzt bearbeitet von", "lang_lastLogin": "Letzte Anmeldung", "lang_latestVersion": "Neuste Version", + "lang_ldapFilterAdd": "LDAP Filter Hinzuf\u00fcgen", + "lang_ldapFilterAttribute": "Attribut", + "lang_ldapFilterDeleteConfirmation": "Willst du diesen LDAP Filter wirklich L\u00f6schen.", + "lang_ldapFilterDescription": "Dies sind die Filter, die ein Benutzer in der bwLehrpool-Suite Veranstaltungen hinzuf\u00fcgen kann.", + "lang_ldapFilterEdit": "LDAP Filter bearbeiten", + "lang_ldapFilterName": "Filtername", + "lang_ldapfilters": "LDAP Filter", + "lang_ldapFilterValue": "Wert", "lang_lecture": "Veranstaltung", "lang_lecturePermissionAdmin": "Administration", "lang_lecturePermissionEdit": "Bearbeiten", diff --git a/modules-available/dozmod/lang/en/messages.json b/modules-available/dozmod/lang/en/messages.json index 6d7ea0ac..4d914406 100644 --- a/modules-available/dozmod/lang/en/messages.json +++ b/modules-available/dozmod/lang/en/messages.json @@ -3,6 +3,12 @@ "delete-images": "Delete: {{0}}", "dozmod-error": "Error communicating with the bwLehrpool-Suite server: {{0}}", "images-pending-delete-exist": "VMs marked for deletion: {{0}}", + "ldap-filter-created": "LDAP filter was successfully created", + "ldap-filter-deleted": "LDAP filter successfully deleted", + "ldap-invalid-filter-id": "Invalid LDAP filter id", + "ldap-filter-id-missing": "LDAP filter id was missing", + "ldap-filter-insert-failed": "LDAP filter could not be inserted into the database", + "ldap-filter-save-missing-information": "LDAP filter informations were missing", "mail-config-saved": "Mail config saved", "no-expired-images": "No expired VMs", "nothing-submitted": "There was nothing submitted", diff --git a/modules-available/dozmod/lang/en/module.json b/modules-available/dozmod/lang/en/module.json index b7a04762..c2b4439d 100644 --- a/modules-available/dozmod/lang/en/module.json +++ b/modules-available/dozmod/lang/en/module.json @@ -3,6 +3,7 @@ "page_title": "Manage the bwLehrpool-Suite", "submenu_actionlog": "action log", "submenu_expiredimages": "Expired VM versions", + "submenu_ldapfilters": "LDAP filters", "submenu_mailconfig": "email configuration", "submenu_runtimeconfig": "limits and defaults", "submenu_templates": "templates", diff --git a/modules-available/dozmod/lang/en/permissions.json b/modules-available/dozmod/lang/en/permissions.json index 0827c8d2..797f7c2f 100644 --- a/modules-available/dozmod/lang/en/permissions.json +++ b/modules-available/dozmod/lang/en/permissions.json @@ -1,6 +1,8 @@ { "actionlog.view": "View action log.", "expiredimages.delete": "Delete images marked for deletion.", + "ldapfilters.save": "Save LDAP filter.", + "ldapfilters.view": "View LDAP filters. ", "mailconfig.save": "Save SMTP configuration for sending mails.", "runtimeconfig.save": "Save limits and defaults of a runtime configuration.", "templates.reset": "Reset email templates.", diff --git a/modules-available/dozmod/lang/en/template-tags.json b/modules-available/dozmod/lang/en/template-tags.json index 3ee95e8c..4f9ab877 100644 --- a/modules-available/dozmod/lang/en/template-tags.json +++ b/modules-available/dozmod/lang/en/template-tags.json @@ -35,6 +35,14 @@ "lang_lastEditor": "Edited by", "lang_lastLogin": "Last login", "lang_latestVersion": "latest version", + "lang_ldapFilterAdd": "Add LDAP filter", + "lang_ldapFilterAttribute": "Attribute", + "lang_ldapFilterDeleteConfirmation": "Do you really want to delete this LDAP filter.", + "lang_ldapFilterDescription": "These are the LDAP filters that can be applied to lectures in the bwLehrpool-Suite.", + "lang_ldapFilterEdit": "Edit LDAP filter", + "lang_ldapFilterName": "Filter name", + "lang_ldapfilters": "LDAP filters", + "lang_ldapFilterValue": "Value", "lang_lecture": "Lecture", "lang_lecturePermissionAdmin": "Administrate", "lang_lecturePermissionEdit": "Edit", diff --git a/modules-available/dozmod/page.inc.php b/modules-available/dozmod/page.inc.php index a8e0da0e..47110dd0 100644 --- a/modules-available/dozmod/page.inc.php +++ b/modules-available/dozmod/page.inc.php @@ -5,7 +5,7 @@ class Page_DozMod extends Page /** @var bool true if we have a proper subpage */ private $haveSubPage = false; - private $validSections = ['expiredimages', 'mailconfig', 'templates', 'runtimeconfig', 'users', 'actionlog']; + private $validSections = ['expiredimages', 'mailconfig', 'templates', 'runtimeconfig', 'users', 'actionlog', 'ldapfilters']; private $section; @@ -60,6 +60,7 @@ class Page_DozMod extends Page Dictionary::translate('submenu_runtimeconfig', true); Dictionary::translate('submenu_users', true); Dictionary::translate('submenu_actionlog', true); + Dictionary::translate('submenu_ldapfilters', true); */ /* add sub-menus */ diff --git a/modules-available/dozmod/pages/ldapfilters.inc.php b/modules-available/dozmod/pages/ldapfilters.inc.php new file mode 100644 index 00000000..6b5ce2dc --- /dev/null +++ b/modules-available/dozmod/pages/ldapfilters.inc.php @@ -0,0 +1,119 @@ + $ldapfilters, + 'hasEditPermission' => User::hasPermission('ldapfilters.save') + ); + + Render::addTemplate('ldapfilters', $data); + } else if (self::$show === 'edit') { + $filterid = Request::get('filterid', false, 'int'); + + if ($filterid === false) { + Render::addTemplate('ldapfilter-add', array( + 'filterid' => 0 + )); + } else { + $ldapfilter = Database::queryFirst("SELECT * FROM sat.ldapfilter WHERE filterid=:id", array( 'id' => $filterid)); + + $data = array( + 'filterid' => $filterid, + 'filtername' => $ldapfilter['filtername'], + 'attribute' => $ldapfilter['attribute'], + 'value' => $ldapfilter['value'] + ); + Render::addTemplate('ldapfilter-add', $data); + } + } + } + + private function deleteLdapFilter() { + User::assertPermission('ldapfilters.save'); + $filterid = Request::post('filterid', false, 'int'); + if ($filterid === false) { + Message::addError('ldap-filter-id-missing'); + return; + } + $res = Database::exec("DELETE FROM sat.ldapfilter WHERE filterid=:id", array('id' => $filterid)); + if ($res !== 1) { + Message::addWarning('ldap-invalid-filter-id', $filterid); + } else { + Message::addSuccess('ldap-filter-deleted'); + } + } + + private function saveLdapFilter() { + $filterid = Request::post('filterid', '', 'int'); + $filtername = Request::post('filtername', false, 'string'); + $filterattribute = Request::post('attribute', false, 'string'); + $filtervalue = Request::post('value', false, 'string'); + + if ($filtername === false || $filterattribute === false || $filtervalue === false) { + Message::addError('ldap-filter-save-missing-information'); + return; + } + + if ($filterid === 0) { + // Insert filter in the db. + $res = Database::exec("INSERT INTO sat.ldapfilter (filtername, attribute, value) VALUES (:filtername, :attribute, :value)", array( + 'filtername' => $filtername, + 'attribute' => $filterattribute, + 'value' => $filtervalue + )); + + if ($res !== 1) { + Message::addError('ldap-filter-insert-failed'); + } else { + Message::addSuccess('ldap-filter-created'); + } + + } else { + // Update filter in the db. + $res = Database::exec("UPDATE sat.ldapfilter SET filtername=:filtername, attribute=:attribute, value=:value WHERE filterid=:filterid", array( + 'filterid' => $filterid, + 'filtername' => $filtername, + 'attribute' => $filterattribute, + 'value' => $filtervalue + )); + + if ($res !== 1) { + Message::addError('ldap-filter-insert-failed'); + } else { + Message::addSuccess('ldap-filter-created'); + } + + } + Util::redirect("?do=dozmod§ion=ldapfilters"); + } + + public static function doAjax() + { + + } + +} \ No newline at end of file diff --git a/modules-available/dozmod/permissions/permissions.json b/modules-available/dozmod/permissions/permissions.json index b9c82107..dc5a46ed 100644 --- a/modules-available/dozmod/permissions/permissions.json +++ b/modules-available/dozmod/permissions/permissions.json @@ -5,6 +5,12 @@ "actionlog.view": { "location-aware": false }, + "ldapfilters.view": { + "location-aware": false + }, + "ldapfilters.save": { + "location-aware": false + }, "mailconfig.save": { "location-aware": false }, diff --git a/modules-available/dozmod/templates/ldapfilter-add.html b/modules-available/dozmod/templates/ldapfilter-add.html new file mode 100644 index 00000000..c74fbcda --- /dev/null +++ b/modules-available/dozmod/templates/ldapfilter-add.html @@ -0,0 +1,39 @@ +
{{lang_ldapFilterDescription}}
+ +{{lang_ldapFilterName}} | +{{lang_ldapFilterAttribute}} | +{{lang_ldapFilterValue}} | + {{#hasEditPermission}} +{{lang_edit}} | +{{lang_delete}} | + {{/hasEditPermission}} +
---|---|---|---|---|
{{filtername}} | +{{attribute}} | +{{value}} | + {{#hasEditPermission}} ++ + + + | ++ + | + {{/hasEditPermission}} +
{{lang_name}} | +{{lang_path}} | +{{lang_target}} | +{{lang_authMethod}} | +{{lang_username}} | + {{#hasEditPermissions}} +{{lang_active}} | +{{lang_edit}} | +{{lang_delete}} | + {{/hasEditPermissions}} +
---|---|---|---|---|---|---|---|
{{sharename}} | +{{path}} | +{{#target}}{{.}}:{{/target}} | +{{#specificUser}}{{lang_specificUser}}{{/specificUser}}{{^specificUser}}{{lang_loggedInUser}}{{/specificUser}} | +{{#specificUser}}{{username}}{{/specificUser}} | + {{#hasEditPermissions}} ++ + | ++ + + + | ++ + | + {{/hasEditPermissions}} +
+ {{lang_ldapfiltersIntro}} +
+{{sharename}} | {{path}} | -{{#target}}{{.}}:{{/target}} | -{{#specificUser}}{{lang_specificUser}}{{/specificUser}}{{^specificUser}}{{lang_loggedInUser}}{{/specificUser}} | -{{#specificUser}}{{username}}{{/specificUser}} | +{{mountpoint}} | ++ {{#loginAsUser}}{{lang_loggedInUser}}{{/loginAsUser}} + {{^loginAsUser}}{{lang_specificUser}}{{/loginAsUser}} + | ++ {{^loginAsUser}}{{username}}{{/loginAsUser}} + | {{#hasEditPermissions}} -+ |
--
cgit v1.2.3-55-g7522
From ed899338534f68dd6ba62fd2f1c207858d20aa3b Mon Sep 17 00:00:00 2001
From: Simon Rettberg
Date: Mon, 3 Dec 2018 15:00:53 +0100
Subject: [dozmod] Update translations
---
modules-available/dozmod/lang/de/messages.json | 5 ++++-
modules-available/dozmod/lang/de/template-tags.json | 10 +++++++---
modules-available/dozmod/lang/en/messages.json | 8 ++++++--
modules-available/dozmod/lang/en/template-tags.json | 6 +++++-
4 files changed, 22 insertions(+), 7 deletions(-)
(limited to 'modules-available/dozmod')
diff --git a/modules-available/dozmod/lang/de/messages.json b/modules-available/dozmod/lang/de/messages.json
index 29d40619..f74c3eab 100644
--- a/modules-available/dozmod/lang/de/messages.json
+++ b/modules-available/dozmod/lang/de/messages.json
@@ -5,13 +5,16 @@
"images-pending-delete-exist": "Zur L\u00f6schung markierte VM-Versionen: {{0}}",
"ldap-filter-created": "LDAP Filter wurde erfolgreich erstellt",
"ldap-filter-deleted": "LDAP Filter wurde erfolgreich gel\u00f6scht",
- "ldap-invalid-filter-id": "Ung\u00fcltige LDAP Filter ID",
"ldap-filter-id-missing": "Fehlende LDAP Filter ID",
"ldap-filter-insert-failed": "LDAP filter konnte der Datenbank nicht hinzugef\u00fcgt werden",
"ldap-filter-save-missing-information": "Es fehlen LDAP Filter Informationen",
"ldap-filter-saved": "LDAP Filter wurde erfolgreich gespeichert",
+ "ldap-invalid-filter-id": "Ung\u00fcltige LDAP Filter ID",
"mail-config-saved": "Mail-Konfiguration gespeichert",
"networkshare-deleted": "Netzlaufwerk gel\u00f6scht",
+ "networkshare-invalid-auth-type": "Ung\u00fcltiger Authentifizierungs-Typ: {{0}}",
+ "networkshare-invalid-shareid": "Nicht-existierender Share: {{0}}",
+ "networkshare-missing-path": "Fehlende Pfadangabe",
"networkshare-saved": "Netzlaufwerk gespeichert",
"no-expired-images": "Keine Abgelaufenen VM-Versionen",
"nothing-submitted": "Es wurde nichts \u00fcbermittelt",
diff --git a/modules-available/dozmod/lang/de/template-tags.json b/modules-available/dozmod/lang/de/template-tags.json
index a7ee9833..99756995 100644
--- a/modules-available/dozmod/lang/de/template-tags.json
+++ b/modules-available/dozmod/lang/de/template-tags.json
@@ -1,7 +1,7 @@
{
"lang_actionTarget": "Aktionsziel",
"lang_active": "Aktiv",
- "lang_addShare": "Netzlaufwerk hinzufügen",
+ "lang_addShare": "Netzlaufwerk hinzuf\u00fcgen",
"lang_allowLoginByDefault": "Login standardm\u00e4\u00dfig erlauben",
"lang_allowLoginDescription": "Wenn diese Option aktiviert ist, k\u00f6nnen sich alle Mitarbeiter der Einrichtung \u00fcber die bwLehrpool-Suite anmelden und VMs\/Veranstaltungen verwalten. Wenn Sie diese Option deaktivieren, m\u00fcssen Sie in der Untersektion \"Benutzer und Berechtigungen\" jeden Benutzer nach dem ersten Loginversuch manuell freischalten.",
"lang_asteriskRequired": "Felder mit (*) sind erforderlich",
@@ -45,8 +45,9 @@
"lang_ldapFilterDescription": "Dies sind die Filter, die ein Benutzer in der bwLehrpool-Suite Veranstaltungen hinzuf\u00fcgen kann.",
"lang_ldapFilterEdit": "LDAP Filter bearbeiten",
"lang_ldapFilterName": "Filtername",
- "lang_ldapfilters": "LDAP Filter",
"lang_ldapFilterValue": "Wert",
+ "lang_ldapfilters": "LDAP Filter",
+ "lang_ldapfiltersIntro": "Hier k\u00f6nnen Sie Vorgaben f\u00fcr die Veranstaltungsspezifischen LDAP-Filter machen. LDAP-Filter sind einfache Attributsfilter, die clientseitig Anwendung finden. Die hier definierten Filter werden in der bwLehrpool-Suite als Vorschl\u00e4ge aufgelistet und k\u00f6nnen mittels Checkbox aktiviert werden. Alternativ k\u00f6nnen in der bwLehrpool-Suite auch eigene Filter angelegt werden.",
"lang_lecture": "Veranstaltung",
"lang_lecturePermissionAdmin": "Administration",
"lang_lecturePermissionEdit": "Bearbeiten",
@@ -63,6 +64,8 @@
"lang_modified": "Modifiziert",
"lang_name": "Name",
"lang_networkshares": "Netzlaufwerke",
+ "lang_networksharesIntro": "Hier k\u00f6nnen Sie vordefinierte Netzlaufwerke anlegen, die den Nutzern der bwLehrpool-Suite zur Auswahl gestellt werden. Es ist den Nutzern der bwLehrpool-Suite weiterhin m\u00f6glich, komplett eigene Netzwerkfreigaben zu definieren. Die Angaben hier sollen lediglich das Hinzuf\u00fcgen h\u00e4ufig genutzter Laufwerke vereinfachen, bzw. das \u00c4ndern eines Netzwerkpfades vereinfachen, da in diesem Fall nur der Zentrale Eintrag hier angepasst werden muss, und nicht mehr wie zuvor jede Veranstaltung einzeln.",
+ "lang_none": "(Keiner)",
"lang_organization": "Einrichtung",
"lang_organizationListHeader": "Nutzungsrechte f\u00fcr den Satelliten festlegen",
"lang_os": "Betriebssystem",
@@ -71,14 +74,15 @@
"lang_path": "Pfad",
"lang_placeholders": "Platzhalter",
"lang_port": "Port",
+ "lang_printer": "Drucker",
"lang_reallyResetTemplates": "Sind Sie sicher, dass Sie alle Texte l\u00f6schen und auf die Standardwerte zur\u00fccksetzen wollen?",
"lang_replaceWithOriginal": "Originaltext in Textbox laden",
"lang_replyTo": "Reply-To Adresse",
"lang_runtimeConfig": "Laufzeit-Konfiguration",
"lang_runtimeConfigLimits": "Beschr\u00e4nkungen",
"lang_senderAddress": "Absenderadresse",
- "lang_shareDeleteConfirm": "Willst du dieses Netzlaufwerk wirklich l\u00f6schen?",
"lang_senderName": "Absender Anzeigename",
+ "lang_shareDeleteConfirm": "Willst du dieses Netzlaufwerk wirklich l\u00f6schen?",
"lang_size": "Gr\u00f6\u00dfe",
"lang_spaceWastedDuplication": "Potentiell durch mehrfach vorkommende Bl\u00f6cke belegter Speicherplatz",
"lang_specificUser": "Spezifischer Nutzer",
diff --git a/modules-available/dozmod/lang/en/messages.json b/modules-available/dozmod/lang/en/messages.json
index a76fc67c..d09ff279 100644
--- a/modules-available/dozmod/lang/en/messages.json
+++ b/modules-available/dozmod/lang/en/messages.json
@@ -5,12 +5,16 @@
"images-pending-delete-exist": "VMs marked for deletion: {{0}}",
"ldap-filter-created": "LDAP filter was successfully created",
"ldap-filter-deleted": "LDAP filter successfully deleted",
- "ldap-invalid-filter-id": "Invalid LDAP filter id",
"ldap-filter-id-missing": "LDAP filter id was missing",
"ldap-filter-insert-failed": "LDAP filter could not be inserted into the database",
- "ldap-filter-save-missing-information": "LDAP filter informations were missing",
+ "ldap-filter-save-missing-information": "LDAP filter information is missing",
+ "ldap-filter-saved": "Successfully modified LDAP filter",
+ "ldap-invalid-filter-id": "Invalid LDAP filter id",
"mail-config-saved": "Mail config saved",
"networkshare-deleted": "Network share deleted",
+ "networkshare-invalid-auth-type": "Invalid auth type: {{0}}",
+ "networkshare-invalid-shareid": "Invalid share id: {{0}}",
+ "networkshare-missing-path": "Missing network path",
"networkshare-saved": "Network share saved",
"no-expired-images": "No expired VMs",
"nothing-submitted": "There was nothing submitted",
diff --git a/modules-available/dozmod/lang/en/template-tags.json b/modules-available/dozmod/lang/en/template-tags.json
index 2fd3e91b..ddc89284 100644
--- a/modules-available/dozmod/lang/en/template-tags.json
+++ b/modules-available/dozmod/lang/en/template-tags.json
@@ -45,8 +45,9 @@
"lang_ldapFilterDescription": "These are the LDAP filters that can be applied to lectures in the bwLehrpool-Suite.",
"lang_ldapFilterEdit": "Edit LDAP filter",
"lang_ldapFilterName": "Filter name",
- "lang_ldapfilters": "LDAP filters",
"lang_ldapFilterValue": "Value",
+ "lang_ldapfilters": "LDAP filters",
+ "lang_ldapfiltersIntro": "This is the list of predefined lecture filters, based on LDAP attributes. These filters can be applied client side to only show lectures to specific user groups. These predefined filters are shown in the bwLehrpool-Suite when editing a lecture, and can be activated by a simple check box. Users of the bwLehrpool-Suite can either make use of these predefined filters, or add custom ones if desired.",
"lang_lecture": "Lecture",
"lang_lecturePermissionAdmin": "Administrate",
"lang_lecturePermissionEdit": "Edit",
@@ -63,6 +64,8 @@
"lang_modified": "modified",
"lang_name": "Name",
"lang_networkshares": "Network Shares",
+ "lang_networksharesIntro": "This is the list of predefined network shares. bwLehrpool-Suite users can still add custom network shares to their lectures, however having commonly used network shares as predefined entries should be much more convenient. Another advantage is that changing the path of a network share centrally avoids having to edit a dozen lectures' configuration manually.",
+ "lang_none": "(none)",
"lang_organization": "Organization",
"lang_organizationListHeader": "Set access permissions for organizations",
"lang_os": "Operating System",
@@ -71,6 +74,7 @@
"lang_path": "Path",
"lang_placeholders": "Placeholders",
"lang_port": "Port",
+ "lang_printer": "Printer",
"lang_reallyResetTemplates": "Are you sure you want to reset all texts to their default values?",
"lang_replaceWithOriginal": "load original text into text box",
"lang_replyTo": "Reply-To address",
--
cgit v1.2.3-55-g7522
From 62cd429deec4f8c3ba5a673a6fbf0b77e754520c Mon Sep 17 00:00:00 2001
From: Simon Rettberg
Date: Mon, 3 Dec 2018 15:04:10 +0100
Subject: [dozmod] networkshares: Use {{password_type}} for password field
---
modules-available/dozmod/templates/networkshares-edit.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'modules-available/dozmod')
diff --git a/modules-available/dozmod/templates/networkshares-edit.html b/modules-available/dozmod/templates/networkshares-edit.html
index cc89dbcc..f0b43837 100644
--- a/modules-available/dozmod/templates/networkshares-edit.html
+++ b/modules-available/dozmod/templates/networkshares-edit.html
@@ -42,11 +42,11 @@
-
+
-
+
--
cgit v1.2.3-55-g7522
From b98119be9411ad73b989fdf29284ad59b8340e4e Mon Sep 17 00:00:00 2001
From: Simon Rettberg
Date: Mon, 10 Dec 2018 15:43:07 +0100
Subject: [dozmod] Add editor for predefined run scripts
Assigning scripts to certain locations only is currently not possible.
Whether this is required is to be discussed, since predefined scripts
selectable by bwLehrpool-Suite users would almost cover this use case.
Refs #3145
---
modules-available/dozmod/lang/de/messages.json | 2 +
modules-available/dozmod/lang/de/module.json | 1 +
modules-available/dozmod/lang/de/permissions.json | 2 +
.../dozmod/lang/de/template-tags.json | 18 +++
modules-available/dozmod/page.inc.php | 3 +-
modules-available/dozmod/pages/runscripts.inc.php | 133 +++++++++++++++++++++
.../dozmod/permissions/permissions.json | 6 +
modules-available/dozmod/style.css | 20 ++++
.../dozmod/templates/runscripts-edit.html | 89 ++++++++++++++
.../dozmod/templates/runscripts-list.html | 89 ++++++++++++++
10 files changed, 362 insertions(+), 1 deletion(-)
create mode 100644 modules-available/dozmod/pages/runscripts.inc.php
create mode 100644 modules-available/dozmod/templates/runscripts-edit.html
create mode 100644 modules-available/dozmod/templates/runscripts-list.html
(limited to 'modules-available/dozmod')
diff --git a/modules-available/dozmod/lang/de/messages.json b/modules-available/dozmod/lang/de/messages.json
index f74c3eab..4a4be923 100644
--- a/modules-available/dozmod/lang/de/messages.json
+++ b/modules-available/dozmod/lang/de/messages.json
@@ -18,6 +18,8 @@
"networkshare-saved": "Netzlaufwerk gespeichert",
"no-expired-images": "Keine Abgelaufenen VM-Versionen",
"nothing-submitted": "Es wurde nichts \u00fcbermittelt",
+ "runscript-invalid-id": "Ung\u00fcltige Script-ID: {{0}}",
+ "runscript-saved": "Script gespeichert",
"runtimelimits-config-saved": "Einstellungen gespeichert",
"templates-saved": "Templates wurden gespeichert",
"timeout": "Zeit\u00fcberschreitung",
diff --git a/modules-available/dozmod/lang/de/module.json b/modules-available/dozmod/lang/de/module.json
index b2746b81..de8b10f7 100644
--- a/modules-available/dozmod/lang/de/module.json
+++ b/modules-available/dozmod/lang/de/module.json
@@ -6,6 +6,7 @@
"submenu_ldapfilters": "LDAP Filter",
"submenu_mailconfig": "Email-Konfiguration",
"submenu_networkshares": "Netzlaufwerke",
+ "submenu_runscripts": "Startscripte",
"submenu_runtimeconfig": "Limits und Standardwerte",
"submenu_templates": "Textbausteine f\u00fcr E-Mails",
"submenu_users": "Benutzer und Berechtigungen"
diff --git a/modules-available/dozmod/lang/de/permissions.json b/modules-available/dozmod/lang/de/permissions.json
index 845be3b9..a1675148 100644
--- a/modules-available/dozmod/lang/de/permissions.json
+++ b/modules-available/dozmod/lang/de/permissions.json
@@ -6,6 +6,8 @@
"mailconfig.save": "\u00c4nderungen an der SMTP-Konfiguration zum Versenden von Mails speichern.",
"networkshares.save": "Netzlaufwerke einsehen.",
"networkshares.view": "\u00c4nderungen an den Netzlaufwerken speichern.",
+ "runscripts.save": "Startkripte erstellen\/bearbeiten",
+ "runscripts.view": "Startscripte auflisten",
"runtimeconfig.save": "\u00c4nderungen an der Laufzeit-Konfiguration speichern.",
"templates.reset": "E-Mail Templates zur\u00fccksetzen.",
"templates.save": "E-Mail Templates speichern.",
diff --git a/modules-available/dozmod/lang/de/template-tags.json b/modules-available/dozmod/lang/de/template-tags.json
index 99756995..ef775a16 100644
--- a/modules-available/dozmod/lang/de/template-tags.json
+++ b/modules-available/dozmod/lang/de/template-tags.json
@@ -25,6 +25,7 @@
"lang_description_delete_images": "Diese Liste zeigt VMs, die entweder abgelaufen sind, oder deren Datei besch\u00e4digt, verschoben oder gel\u00f6scht wurde. Diese Images sind zur Zeit im Lehrpool nicht verf\u00fcgbar, ihre endg\u00fcltige L\u00f6schung muss aber manuell best\u00e4tigt werden, um gr\u00f6\u00dfere Katastrophen durch Softwarefehler, verstellte Systemuhren etc. zu vermeiden.",
"lang_dozmodLogHeading": "bwLehrpool-Suite Aktionslog",
"lang_editNetworkshare": "Netzlaufwerk bearbeiten",
+ "lang_editScript": "Startscript bearbeiten",
"lang_email": "EMail",
"lang_emailNotifications": "EMail-Benachrichtigungen aktiviert",
"lang_error": "Fehler",
@@ -34,6 +35,7 @@
"lang_hasNewer": "Neuere Version existiert",
"lang_hash": "Hash",
"lang_heading": "Zu l\u00f6schende VM-Versionen",
+ "lang_hidden": "Versteckt",
"lang_host": "Host",
"lang_image": "VM",
"lang_lastEditor": "Zuletzt bearbeitet von",
@@ -60,12 +62,14 @@
"lang_maxLectureVisibility": "Sp\u00e4testes Enddatum einer Veranstaltung (Tage in der Zukunft)",
"lang_maxLocationsPerLecture": "Max. explizite Orte pro Veranstaltung",
"lang_maxTransfers": "Maximale Zahl gleichzeitiger Up-\/Downloads pro Benutzer",
+ "lang_minimized": "Minimiert",
"lang_miscOptions": "Verschiedene Einstellungen",
"lang_modified": "Modifiziert",
"lang_name": "Name",
"lang_networkshares": "Netzlaufwerke",
"lang_networksharesIntro": "Hier k\u00f6nnen Sie vordefinierte Netzlaufwerke anlegen, die den Nutzern der bwLehrpool-Suite zur Auswahl gestellt werden. Es ist den Nutzern der bwLehrpool-Suite weiterhin m\u00f6glich, komplett eigene Netzwerkfreigaben zu definieren. Die Angaben hier sollen lediglich das Hinzuf\u00fcgen h\u00e4ufig genutzter Laufwerke vereinfachen, bzw. das \u00c4ndern eines Netzwerkpfades vereinfachen, da in diesem Fall nur der Zentrale Eintrag hier angepasst werden muss, und nicht mehr wie zuvor jede Veranstaltung einzeln.",
"lang_none": "(Keiner)",
+ "lang_normal": "Normal",
"lang_organization": "Einrichtung",
"lang_organizationListHeader": "Nutzungsrechte f\u00fcr den Satelliten festlegen",
"lang_os": "Betriebssystem",
@@ -78,8 +82,22 @@
"lang_reallyResetTemplates": "Sind Sie sicher, dass Sie alle Texte l\u00f6schen und auf die Standardwerte zur\u00fccksetzen wollen?",
"lang_replaceWithOriginal": "Originaltext in Textbox laden",
"lang_replyTo": "Reply-To Adresse",
+ "lang_runScriptAdd": "Script hinzuf\u00fcgen",
+ "lang_runScriptDeleteConfirmation": "Script wirklich l\u00f6schen?",
"lang_runtimeConfig": "Laufzeit-Konfiguration",
"lang_runtimeConfigLimits": "Beschr\u00e4nkungen",
+ "lang_scriptContent": "Scriptinhalt",
+ "lang_scriptExtension": "Dateinamenerweiterung",
+ "lang_scriptExtensionHead": "Erweiterung",
+ "lang_scriptIsGlobal": "Script ist global, wird in jeder Veranstaltung ausgef\u00fchrt",
+ "lang_scriptIsGlobalHead": "Global",
+ "lang_scriptIsPredefined": "Script ist ein vordefiniertes Script, das in der bwLehrpool-Suite zur Auswahl steht",
+ "lang_scriptPassCredentials": "Benutzername\/Passwort an dieses Script \u00fcbergeben",
+ "lang_scriptPassCredentialsHead": "User\/Pass",
+ "lang_scriptVisibility": "Anzeigemodus",
+ "lang_scriptVisibilityHead": "Anzeige",
+ "lang_scriptsHead": "Startscripte f\u00fcr Virtuelle Umgebungen",
+ "lang_scriptsIntro": "Hier k\u00f6nnen Sie Startskripte definieren, die entweder global bei jedem Start einer Veranstaltung ausgef\u00fchrt werden, oder den Nutzerinnen der bwLehrpool-Suite zur Vorauswahl zur Verf\u00fcgung gestellt werden.",
"lang_senderAddress": "Absenderadresse",
"lang_senderName": "Absender Anzeigename",
"lang_shareDeleteConfirm": "Willst du dieses Netzlaufwerk wirklich l\u00f6schen?",
diff --git a/modules-available/dozmod/page.inc.php b/modules-available/dozmod/page.inc.php
index cdb347ab..776109cf 100644
--- a/modules-available/dozmod/page.inc.php
+++ b/modules-available/dozmod/page.inc.php
@@ -5,7 +5,7 @@ class Page_DozMod extends Page
/** @var bool true if we have a proper subpage */
private $haveSubPage = false;
- private $validSections = ['expiredimages', 'mailconfig', 'templates', 'runtimeconfig', 'users', 'actionlog', 'networkshares', 'ldapfilters'];
+ private $validSections = ['expiredimages', 'mailconfig', 'templates', 'runtimeconfig', 'users', 'actionlog', 'networkshares', 'ldapfilters', 'runscripts'];
private $section;
@@ -62,6 +62,7 @@ class Page_DozMod extends Page
Dictionary::translate('submenu_actionlog', true);
Dictionary::translate('submenu_networkshares', true);
Dictionary::translate('submenu_ldapfilters', true);
+ Dictionary::translate('submenu_runscripts', true);
*/
/* add sub-menus */
diff --git a/modules-available/dozmod/pages/runscripts.inc.php b/modules-available/dozmod/pages/runscripts.inc.php
new file mode 100644
index 00000000..c6566c13
--- /dev/null
+++ b/modules-available/dozmod/pages/runscripts.inc.php
@@ -0,0 +1,133 @@
+ $scriptname,
+ 'content' => Request::post('content', '', 'string'),
+ 'visibility' => Request::post('visibility', 1, 'int'),
+ 'extension' => preg_replace('/[^a-z0-9_\-~\!\$\=]/i', '', Request::post('extension', '', 'string')),
+ 'passcreds' => Request::post('passcreds', 0, 'int') !== 0,
+ 'isglobal' => Request::post('isglobal', 0, 'int') !== 0,
+ ];
+ if ($id === 0) {
+ // New entry
+ $ret = Database::exec('INSERT INTO sat.presetrunscript
+ (scriptname, content, extension, visibility, passcreds, isglobal) VALUES
+ (:scriptname, :content, :extension, :visibility, :passcreds, :isglobal)', $data);
+ $id = Database::lastInsertId();
+ } else {
+ // Edit entry
+ $data['id'] = $id;
+ Database::exec('UPDATE sat.presetrunscript SET
+ scriptname = :scriptname, content = :content, extension = :extension, visibility = :visibility,
+ passcreds = :passcreds, isglobal = :isglobal
+ WHERE runscriptid = :id', $data);
+ }
+ $oslist = Request::post('osid', false, 'array');
+ if (is_array($oslist)) {
+ $oslist = array_filter($oslist, 'is_numeric');
+ $query = Database::prepare('INSERT INTO sat.presetrunscript_x_operatingsystem
+ (runscriptid, osid) VALUES (:id, :osid)');
+ foreach ($oslist as $osid) {
+ $query->execute(['id' => $id, 'osid' => $osid]);
+ }
+ $query->closeCursor();
+ Database::exec('DELETE FROM sat.presetrunscript_x_operatingsystem
+ WHERE runscriptid = :id AND osid NOT IN (:oslist)', ['id' => $id, 'oslist' => $oslist]);
+ }
+ Message::addSuccess('runscript-saved');
+ }
+
+ public static function doRender()
+ {
+ $show = Request::get('show', 'list', 'string');
+ if ($show === 'list') {
+ $res = Database::simpleQuery('SELECT runscriptid, scriptname, extension, visibility, passcreds, isglobal
+ FROM sat.presetrunscript
+ ORDER BY scriptname ASC');
+ $rows = [];
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ if ($row['visibility'] == 0) {
+ $row['visibility'] = 'eye-close';
+ } elseif ($row['visibility'] == 1) {
+ $row['visibility'] = 'eye-open';
+ } else {
+ $row['visibility'] = 'arrow-down';
+ }
+ $rows[] = $row;
+ }
+ Render::addTemplate('runscripts-list', ['list' => $rows, 'hasEditPermission' => User::hasPermission('runscripts.save')]);
+ } elseif ($show === 'edit') {
+ // Edit
+ $id = Request::get('runscriptid', false, 'int');
+ if ($id === false) {
+ Message::addError('main.parameter-missing', 'runscriptid');
+ Util::redirect('?do=dozmod§ion=runscripts');
+ }
+ if ($id === 0) {
+ $row = [
+ 'runscriptid' => 0,
+ 'visibility_1_checked' => 'checked',
+ 'isglobal_1_checked' => 'checked',
+ ];
+ } else {
+ $row = Database::queryFirst('SELECT runscriptid, scriptname, content, extension, visibility, passcreds, isglobal
+ FROM sat.presetrunscript
+ WHERE runscriptid = :runscriptid', ['runscriptid' => $id]);
+ $row['visibility_' . $row['visibility'] . '_selected'] = 'selected';
+ $row['passcreds_checked'] = $row['passcreds'] ? 'checked' : '';
+ $row['isglobal_' . $row['isglobal'] . '_checked'] = 'checked';
+ if ($row === false) {
+ Message::addError('runscript-invalid-id', $id);
+ Util::redirect('?do=dozmod§ion=runscripts');
+ }
+ }
+ // Get OS
+ $row['oslist'] = [];
+ $res = Database::simpleQuery('SELECT o.osid, o.displayname, pxo.osid AS isvalid FROM sat.operatingsystem o
+ LEFT JOIN sat.presetrunscript_x_operatingsystem pxo ON (o.osid = pxo.osid AND pxo.runscriptid = :runscriptid)
+ ORDER BY o.displayname ASC', ['runscriptid' => $id]);
+ while ($osrow = $res->fetch(PDO::FETCH_ASSOC)) {
+ $row['oslist'][] = [
+ 'osid' => $osrow['osid'],
+ 'displayname' => $osrow['displayname'],
+ 'checked' => $osrow['isvalid'] ? 'checked' : '',
+ ];
+ }
+ // Output
+ Render::addTemplate('runscripts-edit', $row);
+ }
+ }
+
+ public static function doAjax()
+ {
+
+ }
+
+}
diff --git a/modules-available/dozmod/permissions/permissions.json b/modules-available/dozmod/permissions/permissions.json
index 4496b771..3f9cd604 100644
--- a/modules-available/dozmod/permissions/permissions.json
+++ b/modules-available/dozmod/permissions/permissions.json
@@ -23,6 +23,12 @@
"runtimeconfig.save": {
"location-aware": false
},
+ "runscripts.view": {
+ "location-aware": false
+ },
+ "runscripts.save": {
+ "location-aware": false
+ },
"templates.reset": {
"location-aware": false
},
diff --git a/modules-available/dozmod/style.css b/modules-available/dozmod/style.css
index 23dd121e..4cec715a 100644
--- a/modules-available/dozmod/style.css
+++ b/modules-available/dozmod/style.css
@@ -48,4 +48,24 @@
.table > tbody > tr > td > div {
display: inline-block;
+}
+
+/* number of columns in tree view depending on screen size */
+.column-list {
+ column-gap: 20px;
+ column-count: 2;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+
+@media (min-width: 768px) {
+ .column-list {
+ column-count: 3;
+ }
+}
+
+@media (min-width: 992px) {
+ .column-list {
+ column-count: 4;
+ }
}
\ No newline at end of file
diff --git a/modules-available/dozmod/templates/runscripts-edit.html b/modules-available/dozmod/templates/runscripts-edit.html
new file mode 100644
index 00000000..8d81b33c
--- /dev/null
+++ b/modules-available/dozmod/templates/runscripts-edit.html
@@ -0,0 +1,89 @@
+ {{lang_scriptsHead}}+ + + + diff --git a/modules-available/dozmod/templates/runscripts-list.html b/modules-available/dozmod/templates/runscripts-list.html new file mode 100644 index 00000000..4d519afb --- /dev/null +++ b/modules-available/dozmod/templates/runscripts-list.html @@ -0,0 +1,89 @@ +{{lang_scriptsHead}}+ ++ {{lang_scriptsIntro}} + + +
{{filtername}} |
- {{attribute}} |
- {{value}} |
+ {{filterkey}} |
+ {{filtervalue}} |
{{#hasEditPermission}}
--
cgit v1.2.3-55-g7522
| |