summaryrefslogtreecommitdiffstats
path: root/modules-available/dozmod
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/dozmod')
-rw-r--r--modules-available/dozmod/inc/pagedozmodusers.inc.php15
-rw-r--r--modules-available/dozmod/inc/pagemailtemplates.inc.php16
-rw-r--r--modules-available/dozmod/lang/de/template-tags.json7
-rw-r--r--modules-available/dozmod/lang/en/template-tags.json17
-rw-r--r--modules-available/dozmod/page.inc.php45
-rw-r--r--modules-available/dozmod/permissions/permissions.json12
-rw-r--r--modules-available/dozmod/style.css13
-rw-r--r--modules-available/dozmod/templates/actionlog-log.html84
-rw-r--r--modules-available/dozmod/templates/images-delete.html34
-rw-r--r--modules-available/dozmod/templates/mailconfig.html41
-rw-r--r--modules-available/dozmod/templates/orglist.html18
-rw-r--r--modules-available/dozmod/templates/runtimeconfig.html18
-rw-r--r--modules-available/dozmod/templates/templates.html170
-rw-r--r--modules-available/dozmod/templates/userlist.html48
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&section=templates');
+ }
} elseif ($action === 'reset') {
- $this->handleReset();
+ if(User::hasPermission("templates.reset")) {
+ $this->handleReset();
+ } else {
+ Message::addError('main.no-permission');
+ Util::redirect('?do=dozmod&section=templates');
+ }
} else {
Message::addError('main.invalid-action', $action);
Util::redirect('?do=dozmod&section=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&section=mailconfig');
+ }
} elseif ($action === 'runtime') {
- $this->runtimeHandler();
+ if (User::hasPermission("runtimeconfig.save")) {
+ $this->runtimeHandler();
+ } else {
+ Message::addError('main.no-permission');
+ Util::redirect('?do=dozmod&section=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&amp;section=actionlog&amp;action=showuser&amp;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&amp;section=actionlog&amp;action=showuser&amp;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&amp;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&amp;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&amp;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">&times;</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&amp;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', '');