summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUdo Walter2018-11-23 00:10:20 +0100
committerUdo Walter2018-11-23 00:10:20 +0100
commit541b9aae3a8f96b0a800dbccf348e360c92a292c (patch)
tree99a89420220523515963f2f0675e2c01cbe11e1d
parent[sysconfig] Sanitize field type (diff)
downloadslx-admin-541b9aae3a8f96b0a800dbccf348e360c92a292c.tar.gz
slx-admin-541b9aae3a8f96b0a800dbccf348e360c92a292c.tar.xz
slx-admin-541b9aae3a8f96b0a800dbccf348e360c92a292c.zip
[dozmod] add network share submodule
-rw-r--r--modules-available/dozmod/lang/de/messages.json2
-rw-r--r--modules-available/dozmod/lang/de/module.json1
-rw-r--r--modules-available/dozmod/lang/de/permissions.json2
-rw-r--r--modules-available/dozmod/lang/de/template-tags.json11
-rw-r--r--modules-available/dozmod/lang/en/messages.json2
-rw-r--r--modules-available/dozmod/lang/en/module.json1
-rw-r--r--modules-available/dozmod/lang/en/permissions.json2
-rw-r--r--modules-available/dozmod/lang/en/template-tags.json11
-rw-r--r--modules-available/dozmod/page.inc.php3
-rw-r--r--modules-available/dozmod/pages/networkshares.inc.php63
-rw-r--r--modules-available/dozmod/permissions/permissions.json6
-rw-r--r--modules-available/dozmod/templates/networkshares-edit.html85
-rw-r--r--modules-available/dozmod/templates/networkshares.html95
13 files changed, 283 insertions, 1 deletions
diff --git a/modules-available/dozmod/lang/de/messages.json b/modules-available/dozmod/lang/de/messages.json
index 60c37927..85b8ca70 100644
--- a/modules-available/dozmod/lang/de/messages.json
+++ b/modules-available/dozmod/lang/de/messages.json
@@ -4,6 +4,8 @@
"dozmod-error": "Fehler bei der Kommunikation mit dem bwLehrpool-Suite server: {{0}}",
"images-pending-delete-exist": "Zur L\u00f6schung markierte VM-Versionen: {{0}}",
"mail-config-saved": "Mail-Konfiguration gespeichert",
+ "networkshare-deleted": "Netzlaufwerk gel\u00f6scht",
+ "networkshare-saved": "Netzlaufwerk gespeichert",
"no-expired-images": "Keine Abgelaufenen VM-Versionen",
"nothing-submitted": "Es wurde nichts \u00fcbermittelt",
"runtimelimits-config-saved": "Einstellungen gespeichert",
diff --git a/modules-available/dozmod/lang/de/module.json b/modules-available/dozmod/lang/de/module.json
index c9acd4ee..7bd3e0c0 100644
--- a/modules-available/dozmod/lang/de/module.json
+++ b/modules-available/dozmod/lang/de/module.json
@@ -4,6 +4,7 @@
"submenu_actionlog": "Aktions-Log",
"submenu_expiredimages": "Abgelaufene VM-Versionen",
"submenu_mailconfig": "Email-Konfiguration",
+ "submenu_networkshares": "Netzlaufwerke",
"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 df913265..53cbf1d8 100644
--- a/modules-available/dozmod/lang/de/permissions.json
+++ b/modules-available/dozmod/lang/de/permissions.json
@@ -2,6 +2,8 @@
"actionlog.view": "Aktions-Log einsehen.",
"expiredimages.delete": "Zur L\u00f6schung vorgemerkete Abbilder l\u00f6schen.",
"mailconfig.save": "\u00c4nderungen an der SMTP-Konfiguration zum Versenden von Mails speichern.",
+ "networkshares.save": "Netzlaufwerke einsehen.",
+ "networkshares.view": "\u00c4nderungen an den Netzlaufwerken speichern.",
"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 84f6e0de..fa4b49f5 100644
--- a/modules-available/dozmod/lang/de/template-tags.json
+++ b/modules-available/dozmod/lang/de/template-tags.json
@@ -1,8 +1,11 @@
{
"lang_actionTarget": "Aktionsziel",
+ "lang_active": "Aktiv",
+ "lang_addShare": "Netzlaufwerk hinzufügen",
"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",
+ "lang_authMethod": "Authentifizierung",
"lang_blockCount": "Anzahl Bl\u00f6cke",
"lang_bwlehrpoolsuite": "bwLehrpool-Suite",
"lang_canLoginOrganization": "Nutzer dieser Einrichtung k\u00f6nnen sich am Satelliten anmelden",
@@ -21,6 +24,7 @@
"lang_descriptionRuntimeLimits": "Hier k\u00f6nnen Sie verschiedene Limits festlegen, z.B. wie lange eine VM nach dem Hochladen g\u00fcltig ist. Nach Ablauf dieses Zeitraums ist der Verantwortliche gezwungen, eine neue Version der VM hochzuladen. Damit k\u00f6nnen Sie das Ansammeln nicht mehr ben\u00f6tigter VMs eind\u00e4mmen. Weiterhin k\u00f6nnen Sie die maximale Anzahl gleichzeitiger Transfers pro Benutzer einschr\u00e4nken.\r\n\r\nVer\u00e4nderte Einstellungen wirken sich nicht auf bereits bestehende VMs aus.",
"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_email": "EMail",
"lang_emailNotifications": "EMail-Benachrichtigungen aktiviert",
"lang_error": "Fehler",
@@ -39,6 +43,7 @@
"lang_lecturePermissionAdmin": "Administration",
"lang_lecturePermissionEdit": "Bearbeiten",
"lang_loadDefaults": "Alle Texte auf Auslieferungszustand zur\u00fccksetzen",
+ "lang_loggedInUser": "Angemeldeter Nutzer",
"lang_mailConfig": "SMTP-Konfiguration zum Versenden von Mails",
"lang_mailDescription": "F\u00fcllen Sie die folgenden Felder aus, wenn sie m\u00f6chten, dass Dozierende per Mail benachrichtigt werden, falls eine von ihnen genutzte oder erstellte VM oder Veranstaltung abl\u00e4uft. Um diese Funktion zu deaktivieren, lassen Sie eines der mit (*) gekennzeichneten Felder leer. Wenn das hier angegebene E-Mail-Konto nur zum Versenden von Mails genutzt wird, sollten Sie einen Auto-Responder einrichten f\u00fcr den Fall, dass ein Dozierender auf eine der automatisch generierten Mails antwortet (bzw. eine explizit angegebene Reply-To Adresse ignoriert).",
"lang_mailTemplates": "E-Mail Templates",
@@ -48,11 +53,14 @@
"lang_maxTransfers": "Maximale Zahl gleichzeitiger Up-\/Downloads pro Benutzer",
"lang_miscOptions": "Verschiedene Einstellungen",
"lang_modified": "Modifiziert",
+ "lang_name": "Name",
+ "lang_networkshares": "Netzlaufwerke",
"lang_organization": "Einrichtung",
"lang_organizationListHeader": "Nutzungsrechte f\u00fcr den Satelliten festlegen",
"lang_os": "Betriebssystem",
"lang_owner": "Besitzer",
"lang_passwordplaceholder": "SMTP Passwort",
+ "lang_path": "Pfad",
"lang_placeholders": "Platzhalter",
"lang_port": "Port",
"lang_reallyResetTemplates": "Sind Sie sicher, dass Sie alle Texte l\u00f6schen und auf die Standardwerte zur\u00fccksetzen wollen?",
@@ -61,15 +69,18 @@
"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_size": "Gr\u00f6\u00dfe",
"lang_spaceWastedDuplication": "Potentiell durch mehrfach vorkommende Bl\u00f6cke belegter Speicherplatz",
+ "lang_specificUser": "Spezifischer Nutzer",
"lang_ssl": "SSL-Modus",
"lang_sslExplicit": "Explizites SSL (\"STARTTLS\")",
"lang_sslImplicit": "Implizites SSL",
"lang_sslNone": "Kein SSL",
"lang_superUser": "Ist SuperUser (darf alle Veranstaltungen und VMs bearbeiten\/l\u00f6schen)",
"lang_system": "System",
+ "lang_target": "Ziel",
"lang_template": "Template",
"lang_templatePageDescription": "Hier k\u00f6nnen Sie die Textbausteine bearbeiten, aus denen die Mails generiert werden, die der bwLehrpool-Server bez\u00fcglich Virtueller Maschinen und Veranstaltungen versendet. Diese Funktionalit\u00e4t unterst\u00fctzt zur Zeit keine Internationalisierung.",
"lang_test": "Test-Mail senden",
diff --git a/modules-available/dozmod/lang/en/messages.json b/modules-available/dozmod/lang/en/messages.json
index 6d7ea0ac..8d309d1d 100644
--- a/modules-available/dozmod/lang/en/messages.json
+++ b/modules-available/dozmod/lang/en/messages.json
@@ -4,6 +4,8 @@
"dozmod-error": "Error communicating with the bwLehrpool-Suite server: {{0}}",
"images-pending-delete-exist": "VMs marked for deletion: {{0}}",
"mail-config-saved": "Mail config saved",
+ "networkshare-deleted": "Network share deleted",
+ "networkshare-saved": "Network share saved",
"no-expired-images": "No expired VMs",
"nothing-submitted": "There was nothing submitted",
"runtimelimits-config-saved": "Configuration saved successfully",
diff --git a/modules-available/dozmod/lang/en/module.json b/modules-available/dozmod/lang/en/module.json
index b7a04762..91ebf304 100644
--- a/modules-available/dozmod/lang/en/module.json
+++ b/modules-available/dozmod/lang/en/module.json
@@ -4,6 +4,7 @@
"submenu_actionlog": "action log",
"submenu_expiredimages": "Expired VM versions",
"submenu_mailconfig": "email configuration",
+ "submenu_networkshares": "Network Shares",
"submenu_runtimeconfig": "limits and defaults",
"submenu_templates": "templates",
"submenu_users": "users and permissions"
diff --git a/modules-available/dozmod/lang/en/permissions.json b/modules-available/dozmod/lang/en/permissions.json
index 0827c8d2..c1e44504 100644
--- a/modules-available/dozmod/lang/en/permissions.json
+++ b/modules-available/dozmod/lang/en/permissions.json
@@ -2,6 +2,8 @@
"actionlog.view": "View action log.",
"expiredimages.delete": "Delete images marked for deletion.",
"mailconfig.save": "Save SMTP configuration for sending mails.",
+ "networkshares.save": "View network drives.",
+ "networkshares.view": "Save network drives.",
"runtimeconfig.save": "Save limits and defaults of a runtime configuration.",
"templates.reset": "Reset email templates.",
"templates.save": "Save email templates.",
diff --git a/modules-available/dozmod/lang/en/template-tags.json b/modules-available/dozmod/lang/en/template-tags.json
index 3ee95e8c..9cbc7378 100644
--- a/modules-available/dozmod/lang/en/template-tags.json
+++ b/modules-available/dozmod/lang/en/template-tags.json
@@ -1,8 +1,11 @@
{
"lang_actionTarget": "Action target",
+ "lang_active": "Active",
+ "lang_addShare": "Add Network Share",
"lang_allowLoginByDefault": "Allow all staff members to login and use the bwLehrpool-Suite",
"lang_allowLoginDescription": "If this option is enabled, all members of the organization marked as staff or employee are allowed to login to this server and manage VMs\/courses. Otherwise, new users need to be individually allowed access after their first login attempt by visiting the sub page \"users and permissions\" in this web interface.",
"lang_asteriskRequired": "Fields marked with (*) are required",
+ "lang_authMethod": "Authentication",
"lang_blockCount": "Block count",
"lang_bwlehrpoolsuite": "bwLehrpool-Suite",
"lang_canLoginOrganization": "Users from this organization can login",
@@ -21,6 +24,7 @@
"lang_descriptionRuntimeLimits": "Here you can define some limits, e.g. how long a newly uploaded VM will be valid. This should make sure that you don't end up with a lot of old, unused VMs over time.\r\n\r\nModified settings won't apply for already existing VMs.",
"lang_description_delete_images": "This is a list of VMs that either expired, or where the disk image is damaged or missing. These VMs are not available in bwLehrpool currently, but you have to manually confirm the deletion of the disk images for safety reasons (clock skew etc.)",
"lang_dozmodLogHeading": "bwLehrpool-Suite action log",
+ "lang_editNetworkshare": "Edit Network Share",
"lang_email": "E-Mail",
"lang_emailNotifications": "E-Mail notifications enabled",
"lang_error": "Error",
@@ -39,6 +43,7 @@
"lang_lecturePermissionAdmin": "Administrate",
"lang_lecturePermissionEdit": "Edit",
"lang_loadDefaults": "Reset all templates to their defaults",
+ "lang_loggedInUser": "Logged in User",
"lang_mailConfig": "SMTP configuration for sending mails",
"lang_mailDescription": "Fill in the following fields if you want to notify tutors\/professors\/lecturers about expiring VMs and lectures. If you leave one of the required fields blank, the feature will be disabled.",
"lang_mailTemplates": "E-Mail Templates",
@@ -48,11 +53,14 @@
"lang_maxTransfers": "Max concurrent transfers per user",
"lang_miscOptions": "Misc options",
"lang_modified": "modified",
+ "lang_name": "Name",
+ "lang_networkshares": "Network Shares",
"lang_organization": "Organization",
"lang_organizationListHeader": "Set access permissions for organizations",
"lang_os": "Operating System",
"lang_owner": "Owner",
"lang_passwordplaceholder": "SMTP Password",
+ "lang_path": "Path",
"lang_placeholders": "Placeholders",
"lang_port": "Port",
"lang_reallyResetTemplates": "Are you sure you want to reset all texts to their default values?",
@@ -62,14 +70,17 @@
"lang_runtimeConfigLimits": "Limitations",
"lang_senderAddress": "Sender address",
"lang_senderName": "Sender's display name",
+ "lang_shareDeleteConfirm": "Do you really want to delete this network share?",
"lang_size": "Size",
"lang_spaceWastedDuplication": "Potentially wasted space by duplicate blocks",
+ "lang_specificUser": "Specific User",
"lang_ssl": "SSL mode",
"lang_sslExplicit": "Explicit SSL (\"STARTTLS\")",
"lang_sslImplicit": "Implicit SSL",
"lang_sslNone": "No SSL",
"lang_superUser": "Is super user (can edit\/delete all lectures and VMs)",
"lang_system": "System",
+ "lang_target": "Target",
"lang_template": "Template",
"lang_templatePageDescription": "Here you can edit text fragments that are used to compose the information and reminder mails sent by the bwLehrpool server, e.g. when a lecture or VM is about to expire.",
"lang_test": "Send test mail",
diff --git a/modules-available/dozmod/page.inc.php b/modules-available/dozmod/page.inc.php
index a8e0da0e..9fc65f5f 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', 'networkshares'];
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_networkshares', true);
*/
/* add sub-menus */
diff --git a/modules-available/dozmod/pages/networkshares.inc.php b/modules-available/dozmod/pages/networkshares.inc.php
new file mode 100644
index 00000000..d0bbe03a
--- /dev/null
+++ b/modules-available/dozmod/pages/networkshares.inc.php
@@ -0,0 +1,63 @@
+<?php
+
+class SubPage
+{
+
+ public static function doPreprocess()
+ {
+ $action = Request::post('action', '', 'string');
+
+ if ($action === 'delete') {
+ User::assertPermission('networkshares.save');
+ $shareid = Request::post('shareid', false, 'int');
+ if ($shareid) {
+ $res = Database::exec('DELETE FROM sat.presetnetworkshare WHERE shareid = :shareid', ['shareid' => $shareid]);
+ if ($res) Message::addSuccess('networkshare-deleted');
+ }
+ } else if ($action === 'save') {
+ User::assertPermission('networkshares.save');
+ $shareid = Request::post('shareid', false, 'int');
+ $sharename = Request::post('sharename', false, 'string');
+ $path = Request::post('path', false, 'string');
+ $target = Request::post('target', null, 'string');
+ $username = Request::post('username', null, 'string');
+ $password = Request::post('password', null, 'string');
+ if ($sharename && $path) {
+ if ($shareid) {
+ Database::exec('UPDATE sat.presetnetworkshare SET sharename = :sharename, path = :path, target = :target, username = :username, password = :password'
+ .' WHERE shareid = :shareid', compact('shareid', 'sharename', 'path', 'target', 'username', 'password'));
+ } else {
+ Database::exec('INSERT INTO sat.presetnetworkshare (sharename, path, target, username, password, active)'
+ .' VALUES (:sharename, :path, :target, :username, :password, 0)', compact('sharename', 'path', 'target', 'username', 'password'));
+ }
+ Message::addSuccess('networkshare-saved');
+ }
+ } else if ($action === 'toggleActive') {
+ User::assertPermission('networkshares.save');
+ $shareid = Request::post('shareid', false, 'int');
+ Database::exec('UPDATE sat.presetnetworkshare SET active = !active WHERE shareid = :shareid', compact('shareid'));
+ }
+ User::assertPermission('networkshares.view');
+ }
+
+ public static function doRender()
+ {
+ $show = Request::get('show', 'list', 'string');
+ if ($show === 'list') {
+ $res = Database::simpleQuery('SELECT * FROM sat.presetnetworkshare;');
+ $rows = array();
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ $row['specificUser'] = $row['username'] && $row['password'];
+ $rows[] = $row;
+ }
+ Render::addTemplate('networkshares', ['networkshares' => $rows, 'hasEditPermissions' => User::hasPermission('networkshares.save')]);
+ } else if ($show === 'edit') {
+ $shareid = Request::get('shareid', 0, 'int');
+ $data = Database::queryFirst('SELECT * FROM sat.presetnetworkshare WHERE shareid = :shareid', ['shareid' => $shareid]);
+ if ($data['username'] && $data['password']) $data['specificUser'] = 'selected';
+ else $data['loggedInUser'] = 'selected';
+ Render::addTemplate('networkshares-edit', $data);
+ }
+ }
+
+}
diff --git a/modules-available/dozmod/permissions/permissions.json b/modules-available/dozmod/permissions/permissions.json
index b9c82107..db20a3c0 100644
--- a/modules-available/dozmod/permissions/permissions.json
+++ b/modules-available/dozmod/permissions/permissions.json
@@ -8,6 +8,12 @@
"mailconfig.save": {
"location-aware": false
},
+ "networkshares.view": {
+ "location-aware": false
+ },
+ "networkshares.save": {
+ "location-aware": false
+ },
"runtimeconfig.save": {
"location-aware": false
},
diff --git a/modules-available/dozmod/templates/networkshares-edit.html b/modules-available/dozmod/templates/networkshares-edit.html
new file mode 100644
index 00000000..32aa902f
--- /dev/null
+++ b/modules-available/dozmod/templates/networkshares-edit.html
@@ -0,0 +1,85 @@
+<h1>{{lang_networkshares}}</h1>
+
+<div class="panel panel-default">
+ <div class="panel-heading">
+ {{lang_editNetworkshare}}
+ </div>
+ <div class="panel-body">
+ <form method="post" action="?do=dozmod">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="section" value="networkshares">
+ <input type="hidden" name="shareid" value="{{shareid}}">
+
+ <div class="input-group">
+ <label class="input-group-addon" for="name">{{lang_name}}</label>
+ <input required type="text" name="sharename" id="name" class="form-control" value="{{sharename}}">
+ </div>
+ <div class="input-group">
+ <label class="input-group-addon" for="path">{{lang_path}}</label>
+ <input required type="text" name="path" id="path" class="form-control" value="{{path}}">
+ </div>
+ <div class="input-group">
+ <label class="input-group-addon" for="target">{{lang_target}}</label>
+ <select class="form-control" name="target" id="target">
+ <option value="" ></option>
+ <option value="D">D:</option><option value="E">E:</option><option value="F">F:</option>
+ <option value="G">G:</option><option value="H">H:</option><option value="I">I:</option>
+ <option value="J">J:</option><option value="K">K:</option><option value="L">L:</option>
+ <option value="M">M:</option><option value="N">N:</option><option value="O">O:</option>
+ <option value="P">P:</option><option value="Q">Q:</option><option value="R">R:</option>
+ <option value="S">S:</option><option value="T">T:</option><option value="U">U:</option>
+ <option value="V">V:</option><option value="W">W:</option><option value="X">X:</option>
+ <option value="Y">Y:</option><option value="Z">Z:</option>
+ </select>
+ </div>
+ <div class="input-group">
+ <label class="input-group-addon" for="auth">{{lang_authMethod}}</label>
+ <select class="form-control" id="auth">
+ <option value="loggedInUser" {{loggedInUser}}>{{lang_loggedInUser}}</option>
+ <option value="specificUser" {{specificUser}}>{{lang_specificUser}}</option>
+ </select>
+ </div>
+ <div class="input-group">
+ <label class="input-group-addon" for="username">{{lang_username}}</label>
+ <input required type="text" name="username" id ="username" class="form-control" value="{{username}}" {{#loggedInUser}}disabled{{/loggedInUser}}>
+ </div>
+ <div class="input-group">
+ <label class="input-group-addon" for="password">{{lang_password}}</label>
+ <input required type="password" name="password" id ="password" class="form-control" value="{{password}}" {{#loggedInUser}}disabled{{/loggedInUser}}>
+ </div>
+ <div class="text-right" style="margin-top: 20px">
+ <a href="?do=dozmod&amp;section=networkshares" class="btn btn-default">
+ {{lang_cancel}}
+ </a>
+ <button type="submit" class="btn btn-primary" name="action" value="save">
+ <span class="glyphicon glyphicon-floppy-disk"></span>
+ {{lang_save}}
+ </button>
+ </div>
+ </form>
+ </div>
+</div>
+
+<script type="text/javascript">
+
+ document.addEventListener("DOMContentLoaded", function () {
+
+ $('#target').val('{{target}}');
+
+ $('#auth').change(function () {
+ var username = $('#username');
+ var password = $('#password');
+ if ($(this).val() === 'specificUser') {
+ username.prop('disabled', false);
+ password.prop('disabled', false);
+ } else {
+ username.prop('disabled', true);
+ password.prop('disabled', true);
+ username.val('');
+ password.val('');
+ }
+ });
+
+ })
+
+</script> \ No newline at end of file
diff --git a/modules-available/dozmod/templates/networkshares.html b/modules-available/dozmod/templates/networkshares.html
new file mode 100644
index 00000000..48506b4e
--- /dev/null
+++ b/modules-available/dozmod/templates/networkshares.html
@@ -0,0 +1,95 @@
+<h1>{{lang_networkshares}}</h1>
+
+<table class="table">
+ <thead>
+ <tr>
+ <th>{{lang_name}}</th>
+ <th>{{lang_path}}</th>
+ <th>{{lang_target}}</th>
+ <th>{{lang_authMethod}}</th>
+ <th>{{lang_username}}</th>
+ {{#hasEditPermissions}}
+ <th class="slx-smallcol">{{lang_active}}</th>
+ <th class="slx-smallcol">{{lang_edit}}</th>
+ <th class="slx-smallcol">{{lang_delete}}</th>
+ {{/hasEditPermissions}}
+ </tr>
+ </thead>
+ <tbody>
+ {{#networkshares}}
+ <tr>
+ <td>{{sharename}}</td>
+ <td>{{path}}</td>
+ <td>{{#target}}{{.}}:{{/target}}</td>
+ <td>{{#specificUser}}{{lang_specificUser}}{{/specificUser}}{{^specificUser}}{{lang_loggedInUser}}{{/specificUser}}</td>
+ <td>{{#specificUser}}{{username}}{{/specificUser}}</td>
+ {{#hasEditPermissions}}
+ <td align="center">
+ <form method="post" action="?do=dozmod">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="section" value="networkshares">
+ <input type="hidden" name="shareid" value="{{shareid}}">
+ <button type="submit" name="action" value="toggleActive" class="btn btn-xs {{^active}}btn-default{{/active}}{{#active}}btn-info{{/active}}">
+ <span class="glyphicon {{^active}}glyphicon-flag{{/active}}{{#active}}glyphicon-ok{{/active}}"></span>
+ </button>
+ </form>
+ </td>
+ <td align="center">
+ <a href="?do=dozmod&amp;section=networkshares&amp;show=edit&amp;shareid={{shareid}}" class="btn btn-xs btn-primary">
+ <span class="glyphicon glyphicon-edit"></span>
+ </a>
+ </td>
+ <td align="center">
+ <button type="button" class="btn btn-xs btn-danger" data-toggle="modal" data-target="#deleteModal" onclick="deleteShare('{{shareid}}')">
+ <span class="glyphicon glyphicon-trash"></span>
+ </button>
+ </td>
+ {{/hasEditPermissions}}
+ </tr>
+ {{/networkshares}}
+ </tbody>
+</table>
+{{#hasEditPermissions}}
+<div class="text-right">
+ <a href="?do=dozmod&amp;section=networkshares&amp;show=edit" class="btn btn-success {{allowAddShare}}">
+ <span class="glyphicon glyphicon-plus"></span>
+ {{lang_addShare}}
+ </a>
+</div>
+{{/hasEditPermissions}}
+
+<!-- Modals -->
+<form method="post" action="?do=dozmod">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="section" value="networkshares">
+ <div class ="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
+ <div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+ <h4 class="modal-title" id="myModalLabel">{{lang_delete}}</h4>
+ </div>
+ <div class="modal-body">
+ <p>{{lang_shareDeleteConfirm}}</p>
+ </div>
+ <div class="modal-footer">
+ <input type="hidden" id="delete-share-id" name="shareid" value="">
+ <button type="button" class="btn btn-default" data-dismiss="modal">{{lang_cancel}}</button>
+ <button type="submit" name="action" value="delete" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span> {{lang_delete}}</button>
+ </div>
+ </div>
+ </div>
+ </div>
+</form>
+
+<script type="text/javascript">
+
+ function deleteShare(shareid) {
+ $("#delete-share-id").val(shareid);
+ }
+
+ document.addEventListener("DOMContentLoaded", function () {
+
+ })
+
+</script> \ No newline at end of file