diff options
Diffstat (limited to 'modules-available/dozmod')
-rw-r--r-- | modules-available/dozmod/inc/pagedozmodusers.inc.php | 15 | ||||
-rw-r--r-- | modules-available/dozmod/inc/pagemailtemplates.inc.php | 16 | ||||
-rw-r--r-- | modules-available/dozmod/lang/de/template-tags.json | 7 | ||||
-rw-r--r-- | modules-available/dozmod/lang/en/template-tags.json | 17 | ||||
-rw-r--r-- | modules-available/dozmod/page.inc.php | 45 | ||||
-rw-r--r-- | modules-available/dozmod/permissions/permissions.json | 12 | ||||
-rw-r--r-- | modules-available/dozmod/style.css | 13 | ||||
-rw-r--r-- | modules-available/dozmod/templates/actionlog-log.html | 84 | ||||
-rw-r--r-- | modules-available/dozmod/templates/images-delete.html | 34 | ||||
-rw-r--r-- | modules-available/dozmod/templates/mailconfig.html | 41 | ||||
-rw-r--r-- | modules-available/dozmod/templates/orglist.html | 18 | ||||
-rw-r--r-- | modules-available/dozmod/templates/runtimeconfig.html | 18 | ||||
-rw-r--r-- | modules-available/dozmod/templates/templates.html | 170 | ||||
-rw-r--r-- | modules-available/dozmod/templates/userlist.html | 48 |
14 files changed, 345 insertions, 193 deletions
diff --git a/modules-available/dozmod/inc/pagedozmodusers.inc.php b/modules-available/dozmod/inc/pagedozmodusers.inc.php index 8da07923..621f7d34 100644 --- a/modules-available/dozmod/inc/pagedozmodusers.inc.php +++ b/modules-available/dozmod/inc/pagedozmodusers.inc.php @@ -16,11 +16,22 @@ class Page_dozmod_users extends Page protected function doAjax() { + User::load(); + $action = Request::post('action', '', 'string'); if ($action === 'setmail' || $action === 'setsu' || $action == 'setlogin') { - $this->setUserOption($action); + if (User::hasPermission("users.".$action)) { + $this->setUserOption($action); + } else { + die("No permission."); + } + } elseif ($action === 'setorglogin') { - $this->setOrgOption($action); + if (User::hasPermission("users.orglogin")) { + $this->setOrgOption($action); + } else { + die("No permission."); + } } else { die('No such action'); } diff --git a/modules-available/dozmod/inc/pagemailtemplates.inc.php b/modules-available/dozmod/inc/pagemailtemplates.inc.php index dc41d8c6..90734a50 100644 --- a/modules-available/dozmod/inc/pagemailtemplates.inc.php +++ b/modules-available/dozmod/inc/pagemailtemplates.inc.php @@ -7,13 +7,25 @@ class Page_mail_templates extends Page protected function doPreprocess() { + User::load(); + $action = Request::post('action', 'show', 'string'); if ($action === 'show') { $this->fetchTemplates(); } elseif ($action === 'save') { - $this->handleSave(); + if (User::hasPermission("templates.save")) { + $this->handleSave(); + } else { + Message::addError('main.no-permission'); + Util::redirect('?do=dozmod§ion=templates'); + } } elseif ($action === 'reset') { - $this->handleReset(); + if(User::hasPermission("templates.reset")) { + $this->handleReset(); + } else { + Message::addError('main.no-permission'); + Util::redirect('?do=dozmod§ion=templates'); + } } else { Message::addError('main.invalid-action', $action); Util::redirect('?do=dozmod§ion=templates'); diff --git a/modules-available/dozmod/lang/de/template-tags.json b/modules-available/dozmod/lang/de/template-tags.json index ad4f1142..4b49579a 100644 --- a/modules-available/dozmod/lang/de/template-tags.json +++ b/modules-available/dozmod/lang/de/template-tags.json @@ -4,6 +4,7 @@ "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_blockCount": "Anzahl Bl\u00f6cke", + "lang_bwlehrpoolsuite": "bwLehrpool-Suite", "lang_canLoginOrganization": "Nutzer dieser Einrichtung k\u00f6nnen sich am Satelliten anmelden", "lang_canLoginUser": "Nutzer kann sich am Satelliten anmelden", "lang_createTime": "Erstellt", @@ -54,11 +55,12 @@ "lang_os": "Betriebssystem", "lang_owner": "Besitzer", "lang_password": "Passwort", + "lang_passwordplaceholder": "SMTP Passwort", "lang_placeholders": "Platzhalter", "lang_port": "Port", "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 (z.B. Helpdesk)", + "lang_replyTo": "Reply-To Adresse", "lang_runtimeConfig": "Laufzeit-Konfiguration", "lang_runtimeConfigHeadline": "Laufzeit-Konfiguration", "lang_runtimeConfigLimits": "Beschr\u00e4nkungen", @@ -85,7 +87,8 @@ "lang_userList": "Benutzerliste", "lang_userListDescription": "Hier k\u00f6nnen Sie individuelle Nutzer zu \"Super-Usern\" machen. Diese haben in der bwLehrpool-Suite auf alle Veranstaltungen und VMs Vollzugriff, unabh\u00e4ngig von den gesetzten Berechtigungen. Au\u00dferdem k\u00f6nnen Sie hier Benutzer vom Zugriff mittels der bwLehrpool-Suite ausschlie\u00dfen.", "lang_userListHeader": "Dem Satelliten bekannte Benutzer", - "lang_username": "Benutzername (SMTP-Auth)", + "lang_username": "Benutzername", + "lang_usernameplaceholder": "SMTP Benutzername", "lang_version": "Version vom", "lang_when": "Wann" }
\ No newline at end of file diff --git a/modules-available/dozmod/lang/en/template-tags.json b/modules-available/dozmod/lang/en/template-tags.json index 875ca374..ed8f3465 100644 --- a/modules-available/dozmod/lang/en/template-tags.json +++ b/modules-available/dozmod/lang/en/template-tags.json @@ -4,6 +4,7 @@ "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_blockCount": "Block count", + "lang_bwlehrpoolsuite": "bwLehrpool-Suite", "lang_canLoginOrganization": "Users from this organization can login", "lang_canLoginUser": "This user can login", "lang_createTime": "Created", @@ -28,7 +29,7 @@ "lang_followingPlaceholdersUnused": "The following placeholders are not being used", "lang_hasNewer": "Newer version exists", "lang_hash": "Hash", - "lang_heading": "Images marked for deletion", + "lang_heading": "Images Marked for Deletion", "lang_host": "Host", "lang_image": "VM", "lang_lastEditor": "Edited by", @@ -39,9 +40,9 @@ "lang_lecturePermissionEdit": "Edit", "lang_loadDefaults": "Reset all templates to their defaults", "lang_mailConfig": "SMTP configuration for sending mails", - "lang_mailConfigHeadline": "email configuration", + "lang_mailConfigHeadline": "Email Configuration", "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", + "lang_mailTemplates": "E-Mail Templates", "lang_maxImageValidity": "New VM validity (days)", "lang_maxLectureVisibility": "Max time lecture end date may lie in the future (days)", "lang_maxLocationsPerLecture": "Max. explicit locations per lecture", @@ -49,18 +50,19 @@ "lang_miscOptions": "Misc options", "lang_modified": "modified", "lang_organization": "Organization", - "lang_organizationList": "List of organizations", + "lang_organizationList": "List of Organizations", "lang_organizationListHeader": "Set access permissions for organizations", "lang_os": "Operating System", "lang_owner": "Owner", "lang_password": "Password", + "lang_passwordplaceholder": "SMTP Password", "lang_placeholders": "Placeholders", "lang_port": "Port", "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", "lang_runtimeConfig": "Limits and Defaults", - "lang_runtimeConfigHeadline": "Configure limits and defaults for bwLehrpool-Suite", + "lang_runtimeConfigHeadline": "Configure Limits and Defaults for bwLehrpool-Suite", "lang_runtimeConfigLimits": "Limitations", "lang_senderAddress": "Sender address", "lang_senderName": "Sender's display name", @@ -82,10 +84,11 @@ "lang_updateTime": "Last update", "lang_user": "User name", "lang_userId": "User id", - "lang_userList": "User list", + "lang_userList": "User List", "lang_userListDescription": "Here you can promote \"super users\", which will have all permissions in the bwLehrpool-Suite. You can also ban users from accessing this server via the bwLehrpool-Suite.", "lang_userListHeader": "Users known to this satellite", - "lang_username": "User name (SMTP auth)", + "lang_username": "Username", + "lang_usernameplaceholder": "SMTP Username", "lang_version": "Version timestamp", "lang_when": "When" }
\ No newline at end of file diff --git a/modules-available/dozmod/page.inc.php b/modules-available/dozmod/page.inc.php index 548084a2..ffb38663 100644 --- a/modules-available/dozmod/page.inc.php +++ b/modules-available/dozmod/page.inc.php @@ -27,7 +27,7 @@ class Page_DozMod extends Page { User::load(); - if (!User::hasPermission('superadmin')) { + if (!User::isLoggedIn()) { Message::addError('main.no-permission'); Util::redirect('?do=Main'); } @@ -50,15 +50,30 @@ class Page_DozMod extends Page $action = Request::post('action', false, 'string'); if ($action === 'mail') { - $this->mailHandler(); + if (User::hasPermission("mail.save")) { + $this->mailHandler(); + } else { + Message::addError('main.no-permission'); + Util::redirect('?do=dozmod§ion=mailconfig'); + } } elseif ($action === 'runtime') { - $this->runtimeHandler(); + if (User::hasPermission("runtimeconfig.save")) { + $this->runtimeHandler(); + } else { + Message::addError('main.no-permission'); + Util::redirect('?do=dozmod§ion=runtimeconfig'); + } } elseif ($action === 'delimages') { - $result = $this->handleDeleteImages(); - if (!empty($result)) { - Message::addInfo('delete-images', $result); + if (User::hasPermission("images.delete")) { + $result = $this->handleDeleteImages(); + if (!empty($result)) { + Message::addInfo('delete-images', $result); + } + Util::redirect('?do=DozMod'); + } else { + Message::addError('main.no-permission'); + Util::redirect('?do=dozmod'); } - Util::redirect('?do=DozMod'); } elseif ($action !== false) { Util::traceError('Invalid action: ' . $action); } @@ -180,6 +195,7 @@ class Page_DozMod extends Page $row['name_extra_class'] = 'slx-strike'; } $row['version'] = date('d.m.Y H:i:s', $row['createtime']); + $row['rawfilesize'] = $row['filesize']; $row['filesize'] = Util::readableFileSize($row['filesize']); $rows[] = $row; } @@ -203,8 +219,6 @@ class Page_DozMod extends Page protected function doAjax() { User::load(); - if (!User::hasPermission('superadmin')) - return; $this->setupSubPage(); if ($this->subPage !== false) { @@ -213,10 +227,19 @@ class Page_DozMod extends Page } $action = Request::post('action'); + if ($action === 'mail') { - $this->handleTestMail(); + if (User::hasPermission("mail.testmail")) { + $this->handleTestMail(); + } else { + die('No permission'); + } } elseif ($action === 'delimages') { - die($this->handleDeleteImages()); + if (User::hasPermission("images.delete")) { + die($this->handleDeleteImages()); + } else { + die('No permission'); + } } elseif ($action === 'getblockinfo') { $this->ajaxGetBlockInfo(); } diff --git a/modules-available/dozmod/permissions/permissions.json b/modules-available/dozmod/permissions/permissions.json new file mode 100644 index 00000000..8295d0f0 --- /dev/null +++ b/modules-available/dozmod/permissions/permissions.json @@ -0,0 +1,12 @@ +{ + "images.delete": "Delete images marked for deletion.", + "mail.save": "Save SMTP configuration for sending mails.", + "mail.testmail": "Send a testmail.", + "runtimeconfig.save": "Save limits and defaults of a runtime configuration.", + "templates.save": "Save email templates", + "templates.reset": "Reset email templates", + "users.setmail": "Enable/Disable Email Notification", + "users.setlogin": "Enable/Disable Login", + "users.setsu": "Set User to superuser", + "users.orglogin": "Enalbe/Disable Login for Users from certain organisations." +}
\ No newline at end of file diff --git a/modules-available/dozmod/style.css b/modules-available/dozmod/style.css index 8612b426..23dd121e 100644 --- a/modules-available/dozmod/style.css +++ b/modules-available/dozmod/style.css @@ -36,3 +36,16 @@ .table-input-group tr.input-group td:last-child input { border-radius: 0px 4px 4px 0px; } + +.input-group-addon { + min-width:200px; + text-align: left; +} + +.table > tbody > tr > td { + vertical-align: middle; +} + +.table > tbody > tr > td > div { + display: inline-block; +}
\ No newline at end of file diff --git a/modules-available/dozmod/templates/actionlog-log.html b/modules-available/dozmod/templates/actionlog-log.html index 151d2545..09f3a183 100644 --- a/modules-available/dozmod/templates/actionlog-log.html +++ b/modules-available/dozmod/templates/actionlog-log.html @@ -1,41 +1,45 @@ -<table class="table table-striped table-bordered"> - <tr> - <th class="text-nowrap">{{lang_when}}</th> - {{#showActor}} - <th class="text-nowrap">{{lang_user}}</th> - {{/showActor}} - {{#showTarget}} - <th class="text-nowrap">{{lang_actionTarget}}</th> - {{/showTarget}} - <th class="text-nowrap">{{lang_event}}</th> - </tr> - {{#events}} - <tr> - <td class="text-nowrap">{{dateline_s}}</td> - {{#showActor}} - <td style="min-width:140px"> - {{#uuserid}} - <a href="?do=dozmod&section=actionlog&action=showuser&uuid={{uuserid}}">{{ulastname}}, {{ufirstname}}</a> - {{/uuserid}} - {{^uuserid}} - {{lang_system}} - {{/uuserid}} - </td> - {{/showActor}} - {{#showTarget}} - <td> - {{#targeturl}} - <a href="{{targeturl}}">{{targetname}}</a> - {{/targeturl}} - {{^targeturl}} - {{targetname}} - {{^targetname}} - <span class="small">{{targetid}}</span> - {{/targetname}} - {{/targeturl}} - </td> - {{/showTarget}} - <td>{{description}}</td> - </tr> - {{/events}} +<table style="table-layout: fixed; width: 100%" class="table table-striped table-bordered stupidtable"> + <thead> + <tr> + <th class="text-nowrap" data-sort="int">{{lang_when}}</th> + {{#showActor}} + <th class="text-nowrap" data-sort="string">{{lang_user}}</th> + {{/showActor}} + {{#showTarget}} + <th class="text-nowrap" data-sort="string">{{lang_actionTarget}}</th> + {{/showTarget}} + <th class="text-nowrap" data-sort="string">{{lang_event}}</th> + </tr> + </thead> + <tbody> + {{#events}} + <tr> + <td class="text-nowrap" data-sort-value="{{dateline}}">{{dateline_s}}</td> + {{#showActor}} + <td style="min-width:140px"> + {{#uuserid}} + <a href="?do=dozmod&section=actionlog&action=showuser&uuid={{uuserid}}">{{ulastname}}, {{ufirstname}}</a> + {{/uuserid}} + {{^uuserid}} + {{lang_system}} + {{/uuserid}} + </td> + {{/showActor}} + {{#showTarget}} + <td style="word-wrap: break-word"> + {{#targeturl}} + <a href="{{targeturl}}">{{targetname}}</a> + {{/targeturl}} + {{^targeturl}} + {{targetname}} + {{^targetname}} + <span class="small">{{targetid}}</span> + {{/targetname}} + {{/targeturl}} + </td> + {{/showTarget}} + <td style="word-wrap: break-word">{{description}}</td> + </tr> + {{/events}} + </tbody> </table>
\ No newline at end of file diff --git a/modules-available/dozmod/templates/images-delete.html b/modules-available/dozmod/templates/images-delete.html index 0ee90835..dd4c61bc 100644 --- a/modules-available/dozmod/templates/images-delete.html +++ b/modules-available/dozmod/templates/images-delete.html @@ -1,8 +1,8 @@ -<h2>{{lang_heading}}</h2> +<h1>{{lang_bwlehrpoolsuite}}</h1> <div class="panel panel-default"> <div class="panel-heading"> - {{lang_subHeading}} + {{lang_heading}} </div> <div class="panel-body"> <p>{{lang_description_delete_images}}</p> @@ -10,17 +10,20 @@ <form id="delform" method="post" action="?do=DozMod" onsubmit="return slxPostdel()"> <input type="hidden" name="token" value="{{token}}"> <input type="hidden" name="action" value="delimages"> - <table class="table table-stripped table-condensed"> + <table class="table table-stripped table-condensed stupidtable"> <thead> <tr> - <th>{{lang_image}}</th> - <th>{{lang_version}}</th> - <th>{{lang_owner}}</th> + <th data-sort="string">{{lang_image}}</th> + <th data-sort="int">{{lang_version}}</th> + <th data-sort="string">{{lang_owner}}</th> <th><span class="glyphicon glyphicon-upload" title="{{lang_hasNewer}}"></span></th> - <th>{{lang_size}}</th> + <th data-sort="int">{{lang_size}}</th> <th> - <input id="del-all" type="checkbox" onclick="slxChangeAll()"> - <span class="glyphicon glyphicon-trash" title="{{lang_delete}}"></span> + <div class="checkbox"> + <input id="del-all" type="checkbox" onclick="slxChangeAll()"> + <label for="del-all"></label> + <span class="glyphicon glyphicon-trash" title="{{lang_delete}}"></span> + </div> </th> </tr> </thead> @@ -28,16 +31,21 @@ {{#images}} <tr> <td class="text-left text-nowrap {{name_extra_class}}">{{displayname}}<br><span class="small">{{imageversionid}}</span></td> - <td class="text-left text-nowrap">{{version}}</td> + <td class="text-left text-nowrap" data-sort-value="{{createtime}}" >{{version}}</td> <td class="text-left text-nowrap"><a href="mailto:{{email}}">{{lastname}}, {{firstname}}</a></td> <td class="text-left text-nowrap"><span class="glyphicon {{hasNewerClass}}"></span></td> - <td class="text-right text-nowrap">{{filesize}}</td> - <td><input class="del-check" name="images[{{imageversionid}}]" type="checkbox" {{checked}}></td> + <td class="text-left text-nowrap" data-sort-value="{{rawfilesize}}">{{filesize}}</td> + <td> + <div class="checkbox"> + <input type="checkbox" id="images[{{imageversionid}}]" class="del-check" name="images[{{imageversionid}}]" {{checked}}> + <label for="images[{{imageversionid}}]"></label> + </div> + </td> </tr> {{/images}} </tbody> </table> - <button id="delbtn" class="btn btn-danger" type="submit" name="button" value="save">{{lang_delButton}}</button> + <button style="margin-left: 20px" id="delbtn" class="btn btn-danger pull-right" type="submit" name="button" value="save"><span class="glyphicon glyphicon-trash"></span> {{lang_delButton}}</button> </form> <pre style="display:none" id="deloutput"></pre> </div> diff --git a/modules-available/dozmod/templates/mailconfig.html b/modules-available/dozmod/templates/mailconfig.html index 4f8b81fa..6edc65ae 100644 --- a/modules-available/dozmod/templates/mailconfig.html +++ b/modules-available/dozmod/templates/mailconfig.html @@ -1,24 +1,25 @@ -<h2>{{lang_mailConfigHeadline}}</h2> +<h1>{{lang_bwlehrpoolsuite}}</h1> <div class="panel panel-default"> <div class="panel-heading"> {{lang_mailConfig}} </div> <div class="panel-body"> + <p>{{lang_mailDescription}}</p> <form action="?do=DozMod" method="post" id="mailconf"> <input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="position:absolute;top:-2000px" tabindex="-1"> <input type="password" name="password_fake" id="password_fake" value="" style="position:absolute;top:-2000px" tabindex="-1"> <div class="input-group"> - <label class="input-group-addon slx-ga2" for="host-id">{{lang_host}} *</label> + <label class="input-group-addon" for="host-id">{{lang_host}} *</label> <input type="text" name="host" id ="host-id" class="form-control" placeholder="smtp.example.com" value="{{host}}"> </div> <div class="input-group"> - <label class="input-group-addon slx-ga2" for="port-id">{{lang_port}} *</label> + <label class="input-group-addon" for="port-id">{{lang_port}} *</label> <input type="text" name="port" id ="port-id" class="form-control" placeholder="465" value="{{port}}"> </div> <div class="input-group"> - <label class="input-group-addon slx-ga2" for="ssl-id">{{lang_ssl}} *</label> + <label class="input-group-addon" for="ssl-id">{{lang_ssl}} *</label> <select class="form-control" name="ssl" id="ssl-id"> <option value="NONE" {{set_NONE}}>{{lang_sslNone}}</option> <option value="IMPLICIT" {{set_IMPLICIT}}>{{lang_sslImplicit}}</option> @@ -26,40 +27,42 @@ </select> </div> <div class="input-group"> - <label class="input-group-addon slx-ga2" for="senderAddress-id">{{lang_senderAddress}} *</label> + <label class="input-group-addon" for="senderAddress-id">{{lang_senderAddress}} *</label> <input type="text" name="senderAddress" id ="senderAddress-id" class="form-control" placeholder="smtp-username@hs-example.com" value="{{senderAddress}}"> </div> <div class="input-group"> - <label class="input-group-addon slx-ga2" for="serverName-id">{{lang_senderName}}</label> + <label class="input-group-addon" for="serverName-id">{{lang_senderName}}</label> <input type="text" name="serverName" id ="serverName-id" class="form-control" placeholder="bwLehrpool HS Example" value="{{serverName}}"> </div> <div class="input-group"> - <label class="input-group-addon slx-ga2" for="replyTo-id">{{lang_replyTo}}</label> + <label class="input-group-addon" for="replyTo-id">{{lang_replyTo}}</label> <input type="text" name="replyTo" id ="replyTo-id" class="form-control" placeholder="helpdesk@hs-example.com" value="{{replyTo}}"> </div> <div class="input-group"> - <label class="input-group-addon slx-ga2" for="username-id">{{lang_username}}</label> - <input type="text" name="username" id ="username-id" class="form-control" placeholder="smtp-username" value="{{username}}"> + <label class="input-group-addon" for="username-id">{{lang_username}}</label> + <input type="text" name="username" id ="username-id" class="form-control" placeholder="{{lang_usernameplaceholder}}" value="{{username}}"> </div> <div class="input-group"> - <label class="input-group-addon slx-ga2" for="password-id">{{lang_password}}</label> - <input type="{{password_type}}" name="password" id ="password-id" class="form-control" placeholder="geheim" value="{{password}}"> + <label class="input-group-addon" for="password-id">{{lang_password}}</label> + <input type="{{password_type}}" name="password" id ="password-id" class="form-control" placeholder="{{lang_passwordplaceholder}}" value="{{password}}"> </div> <p>{{lang_asteriskRequired}}</p> <br> <p>{{lang_testConfiguration}}</p> <div class="input-group"> - <label class="input-group-addon slx-ga2" for="test-id">{{lang_testRecipient}}</label> + <label class="input-group-addon" for="test-id">{{lang_testRecipient}}</label> <input type="text" name="recipient" id ="test-id" class="form-control" placeholder="test@example.com" value=""> </div> <br> - <button class="btn btn-primary btn-sm" type="button" id="test-button" name="button" value="test" onclick="slxTestConfig()">{{lang_test}}</button> - <span id="test-spin" style="display:none"><span class="glyphicon glyphicon-refresh slx-rotation"></span></span> - <pre id="test-output" style="display:none"></pre> - <button class="btn btn-primary btn-sm" type="submit" name="button" value="save">{{lang_save}}</button> - <br> - <input type="hidden" name="token" value="{{token}}"> - <input type="hidden" name="action" value="mail"> + <div class="text-right"> + <button class="btn btn-warning" type="button" id="test-button" name="button" value="test" onclick="slxTestConfig()"><span class="glyphicon glyphicon-envelope"></span> {{lang_test}}</button> + <span id="test-spin" style="display:none"><span class="glyphicon glyphicon-refresh slx-rotation"></span></span> + <pre id="test-output" style="display:none"></pre> + <button class="btn btn-primary" type="submit" name="button" value="save"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button> + <br> + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="action" value="mail"> + </div> </form> </div> </div> diff --git a/modules-available/dozmod/templates/orglist.html b/modules-available/dozmod/templates/orglist.html index 21495bba..361421c5 100644 --- a/modules-available/dozmod/templates/orglist.html +++ b/modules-available/dozmod/templates/orglist.html @@ -1,24 +1,25 @@ -<h2>{{lang_organizationList}}</h2> - <div class="panel panel-default"> <div class="panel-heading"> {{lang_organizationListHeader}} </div> <div class="panel-body"> <div class="table-responsive"> - <table class="table table-stripped table-condensed"> + <table class="table table-stripped table-condensed table-hover stupidtable"> <thead> <tr> - <th>{{lang_organization}}</th> - <th><span class="glyphicon glyphicon-ok" title="{{lang_canLoginOrganization}}"></span></th> + <th width="95%" data-sort="string">{{lang_organization}}</th> + <th width="5%"><span class="glyphicon glyphicon-ok" title="{{lang_canLoginOrganization}}"></span></th> </tr> </thead> <tbody> {{#organizations}} <tr> - <td class="text-left text-nowrap">{{displayname}}</td> - <td class="text-nowrap"> - <input onclick="seto('setorglogin', this, '{{organizationid}}')" type="checkbox" {{{canlogin}}}> + <td width="95%" class="text-left text-nowrap">{{displayname}}</td> + <td width="5%"> + <div class="checkbox"> + <input onclick="seto('setorglogin', this, '{{organizationid}}')" type="checkbox" {{{canlogin}}}> + <label></label> + </div> </td> </tr> {{/organizations}} @@ -32,6 +33,7 @@ function seto(action, el, orgid) { var box = $(el); + box = box.parent(); var v = el.checked ? '1' : '0'; var old = el.checked == true; box.css('display', 'none'); diff --git a/modules-available/dozmod/templates/runtimeconfig.html b/modules-available/dozmod/templates/runtimeconfig.html index 8d7300ae..cff61441 100644 --- a/modules-available/dozmod/templates/runtimeconfig.html +++ b/modules-available/dozmod/templates/runtimeconfig.html @@ -1,11 +1,11 @@ -<h2 id="runtime-configuration">{{lang_runtimeConfigHeadline}}</h2> +<h1>{{lang_bwlehrpoolsuite}}</h1> <div class="panel panel-default"> <div class="panel-heading"> {{lang_runtimeConfig}} </div> <div class="panel-body"> - <h3>{{lang_defaultPermissions}}</h3> + <legend>{{lang_defaultPermissions}}</legend> <p><i>{{lang_descriptionPermissionConfig}}</i></p> <form action="?do=DozMod" method="post" id="runtimeconf" role="form"> <input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="position:absolute;top:-2000px" tabindex="-1"> @@ -13,7 +13,7 @@ <fieldset class="form-group"> - <legend>{{lang_defaultLecturePermissions}}</legend> + <h4>{{lang_defaultLecturePermissions}}</h4> <input type="hidden" name="defaultLecturePermissions[edit]" value="0"/> <input type="hidden" name="defaultLecturePermissions[admin]" value="0"/> @@ -34,7 +34,7 @@ </fieldset> <fieldset class="form-group"> - <legend>{{lang_defaultImagePermissions}}</legend> + <h4>{{lang_defaultImagePermissions}}</h4> <input type="hidden" name="defaultImagePermissions[edit]" value="0"/> <input type="hidden" name="defaultImagePermissions[admin]" value="0"/> <input type="hidden" name="defaultImagePermissions[download]" value="0"/> @@ -67,7 +67,7 @@ </fieldset> <fieldset> - <h3>{{lang_runtimeConfigLimits}}</h3> + <legend>{{lang_runtimeConfigLimits}}</legend> <p><i>{{lang_descriptionRuntimeLimits}}</i></p> <table class="table-input-group"> <tr class="input-group"> @@ -96,9 +96,9 @@ </tr> </table> </fieldset> - + <br/> <fieldset> - <h3>{{lang_miscOptions}}</h3> + <legend>{{lang_miscOptions}}</legend> <div class="checkbox"> <input type="hidden" name="allowLoginByDefault" value="0"> <input type="checkbox" name="allowLoginByDefault" value="1" {{allowLoginByDefault}} id="allowLoginByDefault" class="form-control"> @@ -112,7 +112,9 @@ <br> <input type="hidden" name="token" value="{{token}}"> <input type="hidden" name="action" value="runtime"> - <button class="btn btn-primary" type="submit" name="button" value="save">{{lang_save}}</button> + <div class="text-right"> + <button class="btn btn-primary" type="submit" name="button" value="save"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button> + </div> </form> </div> </div> diff --git a/modules-available/dozmod/templates/templates.html b/modules-available/dozmod/templates/templates.html index 8a3caf26..4764c0e9 100644 --- a/modules-available/dozmod/templates/templates.html +++ b/modules-available/dozmod/templates/templates.html @@ -1,91 +1,119 @@ -<h1>{{lang_mailTemplates}}</h1> +<h1>{{lang_bwlehrpoolsuite}}</h1> -<p><i>{{lang_templatePageDescription}}</i></p> +<div class="panel panel-default"> + <div class="panel-heading"> + {{lang_mailTemplates}} + </div> + <div class="panel-body"> -<form id="templateForm" role="form" method="POST" action="?do=dozmod&section=templates"> - <input type="hidden" name="token" value="{{token}}"> - <input type="hidden" name="action" value="save"> + <p><i>{{lang_templatePageDescription}}</i></p> + <form id="templateForm" role="form" method="POST" action="?do=dozmod&section=templates"> + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="action" value="save"> - <div class="panel-group" id="accordion"> - {{#templates}} + <div class="panel-group" id="accordion"> - <div id="frame_{{name}}" class="panel panel-default"> - <div class="panel-heading"> - <div class="panel-title"> - {{#conflict}} - <span class="glyphicon glyphicon-exclamation-sign pull-left text-danger"></span> - {{/conflict}} - {{#modified}} - <span class="glyphicon glyphicon-pencil pull-left"></span> - {{/modified}} - <h4> - <a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#panel_{{name}}"> - {{name}} - </a> - </h4> - <small>{{description}}</small> + {{#templates}} - </div> - </div> - <div id="panel_{{name}}" class="panel-collapse collapse"> - <div class="panel-body"> - <div id="msgbox_{{name}}"> - </div> + <div id="frame_{{name}}" class="panel panel-default"> + <div class="panel-heading"> + <div class="panel-title"> + {{#conflict}} + <span class="glyphicon glyphicon-exclamation-sign pull-left text-danger"></span> + {{/conflict}} + {{#modified}} + <span class="glyphicon glyphicon-pencil pull-left"></span> + {{/modified}} + <h4> + <a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#panel_{{name}}"> + {{name}} + </a> + </h4> + <small>{{description}}</small> - <label for="ta_{{name}}">{{lang_template}}</label> - <div class="form-group"> - <textarea data-mandatory="{{list_mandatoryVariables}}" name="templates[{{name}}][template]" - data-setting="{{name}}" id="ta_{{name}}" - class="form-control templateEditor" style="min-height:200px">{{template}}</textarea> + </div> </div> + <div id="panel_{{name}}" class="panel-collapse collapse"> + <div class="panel-body"> + <div id="msgbox_{{name}}"> + </div> + + <label for="ta_{{name}}">{{lang_template}}</label> + <div class="form-group"> + <textarea data-mandatory="{{list_mandatoryVariables}}" name="templates[{{name}}][template]" + data-setting="{{name}}" id="ta_{{name}}" + class="form-control templateEditor" style="min-height:200px">{{template}}</textarea> + </div> + + <h4>{{lang_placeholders}}</h4> + <select name="templates[{{name}}][mandatory_variables]" multiple="multiple" class="hidden"> + {{{html_mandatoryVariables}}} + </select> + <select name="templates[{{name}}][optional_variables]" multiple="multiple" class="hidden"> + {{{html_optionalVariables}}} + </select> + <ul> + {{{html_availableVariables}}} + </ul> + {{#original_template}} + <textarea class="hidden" id="orig_{{name}}">{{original_template}}</textarea> + <div class="pull-right"> + <a href="#" class="btn btn-default" onclick="$('#ta_{{name}}').val($('#orig_{{name}}').val());return false"> + <span class="glyphicon glyphicon-refresh"></span> + {{lang_replaceWithOriginal}} + </a> + </div> + {{/original_template}} + <div class="small"> + {{lang_modified}}: {{#modified}}<b>{{lang_yes}}</b>{{/modified}}{{^modified}}{{lang_no}}{{/modified}}, + {{lang_hasNewer}}: {{#conflict}}<b>{{lang_yes}}</b>{{/conflict}}{{^conflict}}{{lang_no}}{{/conflict}}, + {{lang_thisVersion}}: {{edit_version}}, + {{lang_latestVersion}}: {{version}} + </div> + </div> + </div> + </div> - <h4>{{lang_placeholders}}</h4> - <select name="templates[{{name}}][mandatory_variables]" multiple="multiple" class="hidden"> - {{{html_mandatoryVariables}}} - </select> - <select name="templates[{{name}}][optional_variables]" multiple="multiple" class="hidden"> - {{{html_optionalVariables}}} - </select> - <ul> - {{{html_availableVariables}}} - </ul> - {{#original_template}} - <textarea class="hidden" id="orig_{{name}}">{{original_template}}</textarea> - <div class="pull-right"> - <a href="#" class="btn btn-default" onclick="$('#ta_{{name}}').val($('#orig_{{name}}').val());return false"> - <span class="glyphicon glyphicon-refresh"></span> - {{lang_replaceWithOriginal}} - </a> + + {{/templates}} + </div> + + <button type="submit" onclick="return validateForm()" class="btn btn-primary pull-right"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button> + </form> + <form method="POST" action="?do=dozmod&section=templates"> + <input type="hidden" name="token" value="{{token}}"> + <div> + <button type="button" data-toggle="modal" data-target="#resetTemplatesModal" class="btn btn-danger">{{lang_loadDefaults}}</button> + </div> + + <div id="resetTemplatesModal" class="modal fade" role="dialog"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal">×</button> + <h4 class="modal-title"></h4> + </div> + <div class="modal-body"> + <p>{{lang_reallyResetTemplates}}</p> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">{{lang_cancel}}</button> + <button type="submit" name="action" value ="reset" class="btn btn-primary">{{lang_reset}}</button> + </div> </div> - {{/original_template}} - <div class="small"> - {{lang_modified}}: {{#modified}}<b>{{lang_yes}}</b>{{/modified}}{{^modified}}{{lang_no}}{{/modified}}, - {{lang_hasNewer}}: {{#conflict}}<b>{{lang_yes}}</b>{{/conflict}}{{^conflict}}{{lang_no}}{{/conflict}}, - {{lang_thisVersion}}: {{edit_version}}, - {{lang_latestVersion}}: {{version}} + </div> </div> - </div> + + </form> + <div class="clearfix"></div> </div> +</div> - {{/templates}} - </div> - <div class="pull-left"> - <button type="submit" onclick="return validateForm()" class="btn btn-primary">{{lang_save}}</button> - </div> -</form> -<form method="POST" action="?do=dozmod&section=templates"> - <input type="hidden" name="token" value="{{token}}"> - <input type="hidden" name="action" value="reset"> - <div> - <button type="submit" onclick="return confirm('{{lang_reallyResetTemplates}}')" class="btn btn-danger">{{lang_loadDefaults}}</button> - </div> -</form> -<div class="clearfix"></div> <script type="application/javascript"><!-- diff --git a/modules-available/dozmod/templates/userlist.html b/modules-available/dozmod/templates/userlist.html index a4f415e1..378a2be1 100644 --- a/modules-available/dozmod/templates/userlist.html +++ b/modules-available/dozmod/templates/userlist.html @@ -1,4 +1,4 @@ -<h2 id="users">{{lang_userList}}</h2> +<h1>{{lang_bwlehrpoolsuite}}</h1> <div class="panel panel-default"> <div class="panel-heading"> @@ -7,13 +7,13 @@ <div class="panel-body"> <p>{{lang_userListDescription}}</p> <div class="table-responsive"> - <table class="table table-stripped table-condensed"> + <table class="table table-stripped table-condensed table-hover stupidtable"> <thead> <tr> - <th>{{lang_user}}</th> - <th>{{lang_organization}}</th> - <th>{{lang_lastLogin}}</th> - <th>{{lang_email}}</th> + <th data-sort="string">{{lang_user}}</th> + <th data-sort="string">{{lang_organization}}</th> + <th data-sort="int">{{lang_lastLogin}}</th> + <th data-sort="string">{{lang_email}}</th> <th><span class="glyphicon glyphicon-envelope" title="{{lang_emailNotifications}}"></span></th> <th><span class="glyphicon glyphicon-king" title="{{lang_superUser}}"></span></th> <th><span class="glyphicon glyphicon-ok" title="{{lang_canLoginUser}}"></span></th> @@ -26,9 +26,24 @@ <td class="text-left text-nowrap">{{orgname}}</td> <td class="text-left text-nowrap">{{lastlogin}}</td> <td class="text-left text-nowrap"><a href="mailto:{{email}}">{{email}}</a></td> - <td><input onclick="setu('setmail', this, '{{userid}}')" type="checkbox" {{{emailnotifications}}}></td> - <td><input onclick="setu('setsu', this, '{{userid}}')" type="checkbox" {{{issuperuser}}}></td> - <td><input onclick="setu('setlogin', this, '{{userid}}')" type="checkbox" {{{canlogin}}}></td> + <td> + <div class="checkbox"> + <input onclick="setu('setmail', this, '{{userid}}')" type="checkbox" {{{emailnotifications}}}> + <label></label> + </div> + </td> + <td> + <div class="checkbox"> + <input onclick="setu('setsu', this, '{{userid}}')" type="checkbox" {{{issuperuser}}}> + <label></label> + </div> + </td> + <td> + <div class="checkbox"> + <input onclick="setu('setlogin', this, '{{userid}}')" type="checkbox" {{{canlogin}}}> + <label></label> + </div> + </td> </tr> {{/users}} </tbody> @@ -41,6 +56,7 @@ function setu(action, el, uid) { var box = $(el); + box = box.parent(); var v = el.checked ? '1' : '0'; var old = el.checked == true; box.css('display', 'none'); @@ -48,7 +64,19 @@ function setu(action, el, uid) { if (data !== '1' && data !== '0') { el.checked = !old; - box.parent().css('background-color', 'red !important'); + box.parent().css('background-color', ''); + /* show success notification */ + $notification = $('<span></span>') + .addClass('glyphicon glyphicon-remove') + .css('color', 'red') + .css('width', '0px') + .css('position', 'relative') + .css('right', '20px') + .hide(); + box.before($notification); + $notification.fadeIn('fast', function () { + $notification.fadeOut('slow', function () { $notification.remove() }); + }); } else { el.checked = (data == 1); box.parent().css('background-color', ''); |