summaryrefslogtreecommitdiffstats
path: root/modules-available/sysconfig/templates
diff options
context:
space:
mode:
authorSimon Rettberg2016-05-03 19:03:09 +0200
committerSimon Rettberg2016-05-03 19:03:09 +0200
commit50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66 (patch)
tree05e99fdffa696434960d7c77966c0bc36d6339e8 /modules-available/sysconfig/templates
parentSecond half of merge.... (diff)
downloadslx-admin-50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66.tar.gz
slx-admin-50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66.tar.xz
slx-admin-50404f3b23b7fd6aeae4c9d2f6df0ea25e984e66.zip
WIP
Diffstat (limited to 'modules-available/sysconfig/templates')
-rw-r--r--modules-available/sysconfig/templates/_page.html227
-rw-r--r--modules-available/sysconfig/templates/ad-finish.html29
-rw-r--r--modules-available/sysconfig/templates/ad-selfsearch.html112
-rw-r--r--modules-available/sysconfig/templates/ad-start.html121
-rw-r--r--modules-available/sysconfig/templates/ad_ldap-checkconnection.html91
-rw-r--r--modules-available/sysconfig/templates/ad_ldap-checkcredentials.html67
-rw-r--r--modules-available/sysconfig/templates/branding-check.html26
-rw-r--r--modules-available/sysconfig/templates/branding-start.html25
-rw-r--r--modules-available/sysconfig/templates/cfg-finish.html12
-rw-r--r--modules-available/sysconfig/templates/cfg-start.html39
-rw-r--r--modules-available/sysconfig/templates/config-module-list.html17
-rw-r--r--modules-available/sysconfig/templates/custom-filelist.html16
-rw-r--r--modules-available/sysconfig/templates/custom-fileselect.html31
-rw-r--r--modules-available/sysconfig/templates/custom-upload.html18
-rw-r--r--modules-available/sysconfig/templates/ldap-finish.html29
-rw-r--r--modules-available/sysconfig/templates/ldap-start.html101
-rw-r--r--modules-available/sysconfig/templates/sshconfig-start.html27
-rw-r--r--modules-available/sysconfig/templates/start.html12
18 files changed, 1000 insertions, 0 deletions
diff --git a/modules-available/sysconfig/templates/_page.html b/modules-available/sysconfig/templates/_page.html
new file mode 100644
index 00000000..1a2f64d6
--- /dev/null
+++ b/modules-available/sysconfig/templates/_page.html
@@ -0,0 +1,227 @@
+<div class="row">
+ <div class="col-md-6">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ {{lang_availableSystem}}
+ <a class="btn btn-default" data-toggle="modal" data-target="#help-config"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </div>
+ <div class="panel-body">
+ <form method="post" action="?do=SysConfig">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="action" value="config">
+ <table id="conftable" class="slx-table" style="max-width:100px !important">
+ {{#configs}}
+ <tr>
+ <td data-modlist="{{modlist}}" class="slx-pointer slx-width-ignore slx-nowrap"onclick="showmod(this, 'bold')" onmouseover="showmod(this, 'fade')" onmouseout="showmod(this, 'reset')">
+ <div class="slx-dyn-ellipsis">{{config}}</div>
+ </td>
+ <td>
+ {{^current}}
+ <button class="btn btn-primary btn-xs" name="activate" value="{{configid}}">
+ <span class="glyphicon glyphicon-flag"></span>
+ {{lang_activate}}
+ </button>
+ {{/current}}
+ {{#current}}
+ <span class="btn btn-success btn-xs slx-nopointer">
+ <span class="glyphicon glyphicon-ok"></span>
+ {{lang_active}}
+ </span>
+ {{/current}}
+ </td>
+ <td class="slx-nowrap">
+ <button
+ {{#needrebuild}}
+ class="refconf btn btn-primary btn-xs"
+ {{/needrebuild}}
+ {{^needrebuild}}
+ class="refconf btn btn-default btn-xs"
+ {{/needrebuild}}
+ name="rebuild" value="{{configid}}" title="{{lang_rebuild}}"><span class="glyphicon glyphicon-refresh"></span></button>
+ </td>
+ <td class="slx-nowrap">
+ <a class="btn btn-success btn-xs" href="?do=SysConfig&amp;action=addconfig&amp;edit={{configid}}" title="{{lang_edit}}"><span class="glyphicon glyphicon-edit"></span></a>
+ <button class="btn btn-danger btn-xs" name="del" value="{{configid}}" title="{{lang_delete}}"><span class="glyphicon glyphicon-trash"></span></button>
+ </td>
+ </tr>
+ {{/configs}}
+ </table>
+ {{^configs}}
+ <div class="alert alert-warning">
+ {{lang_systemConfigurationNotFound}}
+ </div>
+ {{^modules}}
+ <div class="alert alert-danger">
+ {{lang_systemConfigurationAlert}}
+ </div>
+ {{/modules}}
+ {{/configs}}
+ </form>
+ </div>
+ {{#havemodules}}
+ <div class="panel-footer">
+ <a class="btn btn-primary" href="?do=SysConfig&amp;action=addconfig">{{lang_newConfiguration}}</a>
+ </div>
+ {{/havemodules}}
+ </div>
+ </div>
+
+ <div class="col-md-6">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ {{lang_availableModules}}
+ <a class="btn btn-default" data-toggle="modal" data-target="#help-module"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </div>
+ <div class="panel-body">
+ <form method="post" action="?do=SysConfig">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="action" value="module">
+ <table id="modtable" class="slx-table" style="max-width:100px !important">
+ {{#modules}}
+ <tr>
+ <td class="badge slx-nowrap">{{moduletype}}</td>
+ <td data-id="{{moduleid}}" class="modrow slx-width-ignore slx-nowrap"><div class="slx-dyn-ellipsis">{{module}}</div></td>
+ <td class="slx-nowrap">
+ {{#iscustom}}
+ <button class="btn btn-default btn-xs" name="list" value="{{moduleid}}" title="{{lang_show}}"><span class="glyphicon glyphicon-eye-open"></span></button>
+ <!-- a class="btn btn-default btn-xs"><span class="glyphicon glyphicon-edit"></span> Bearbeiten</a -->
+ <button class="btn btn-default btn-xs" name="download" value="{{moduleid}}" title="{{lang_download}}"><span class="glyphicon glyphicon-download-alt"></span></button>
+ {{/iscustom}}
+ </td>
+ <td class="slx-nowrap">
+ <button
+ {{#needrebuild}}
+ class="refmod btn btn-primary btn-xs"
+ {{/needrebuild}}
+ {{^needrebuild}}
+ class="refmod btn btn-default btn-xs"
+ {{/needrebuild}}
+ name="rebuild" value="{{moduleid}}" title="{{lang_rebuild}}"><span class="glyphicon glyphicon-refresh"></span></button>
+ <a class="btn btn-success btn-xs" href="?do=SysConfig&amp;action=addmodule&amp;step={{moduletype}}_Start&amp;edit={{moduleid}}" title="{{lang_edit}}"><span class="glyphicon glyphicon-edit"></span></a>
+ <button class="btn btn-danger btn-xs" name="del" value="{{moduleid}}" title="{{lang_delete}}"><span class="glyphicon glyphicon-trash"></span></button>
+ </td>
+ </tr>
+ {{/modules}}
+ </table>
+ {{^modules}}
+ <div class="alert alert-warning">{{lang_configurationModuleNotFound}}</div>
+ {{/modules}}
+ </form>
+ </div>
+ <div class="panel-footer">
+ <a class="btn btn-primary" href="?do=SysConfig&amp;action=addmodule">{{lang_newModule}}</a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<div class="panel panel-default">
+ <div class="panel-heading">{{lang_legend}}</div>
+ <div class="panel-body">
+ <p>
+ <span class="btn btn-default btn-xs" title="{{lang_show}}"><span class="glyphicon glyphicon-eye-open"></span></span>
+ {{lang_showLong}}
+ </p>
+ <p>
+ <span class="btn btn-default btn-xs" title="{{lang_download}}"><span class="glyphicon glyphicon-download-alt"></span></span>
+ {{lang_downloadLong}}
+ </p>
+ <p>
+ <span class="btn btn-default btn-xs" title="{{lang_rebuild}}"><span class="glyphicon glyphicon-refresh"></span></span>
+ {{lang_rebuildLong}}
+ </p>
+ <p>
+ <span class="btn btn-primary btn-xs" title="{{lang_rebuild}}"><span class="glyphicon glyphicon-refresh"></span></span>
+ {{lang_rebuildOutdatedLong}}
+ </p>
+ <p>
+ <span class="btn btn-success btn-xs" title="{{lang_edit}}"><span class="glyphicon glyphicon-edit"></span></span>
+ {{lang_editLong}}
+ </p>
+ <div>
+ <span class="btn btn-danger btn-xs" title="{{lang_delete}}"><span class="glyphicon glyphicon-trash"></span></span>
+ {{lang_deleteLong}}
+ </div>
+ </div>
+</div>
+
+<div class="modal fade" id="help-config" tabindex="-1" role="dialog">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">{{lang_systemConfiguration}}</div>
+ <div class="modal-body">
+ {{lang_helpSystemConfiguration}}
+ </div>
+ <div class="modal-footer"><a class="btn btn-primary" data-dismiss="modal">{{lang_close}}</a></div>
+ </div>
+ </div>
+</div>
+
+<div class="modal fade" id="help-module" tabindex="-1" role="dialog">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">{{lang_moduleConfiguration}}</div>
+ <div class="modal-body">
+ {{lang_helpModuleConfiguration}}
+ </div>
+ <div class="modal-footer"><a class="btn btn-primary" data-dismiss="modal">{{lang_close}}</a></div>
+ </div>
+ </div>
+</div>
+
+<script type="text/javascript"><!--
+ var boldItem = false;
+ function showmod(e, action) {
+ var list = $(e).attr('data-modlist');
+ list = list.split(',');
+ if (action === 'bold') {
+ $(boldItem).removeClass("slx-bold");
+ if (boldItem === e) {
+ action = 'fade';
+ boldItem = false;
+ }
+ } else if (boldItem !== false) {
+ return;
+ }
+ $('.modrow').each(function () {
+ var elem = $(this);
+ elem.removeClass("slx-fade slx-bold");
+ if (action === 'reset')
+ return;
+ if (action === 'bold' && list.indexOf(elem.attr('data-id')) !== -1)
+ elem.addClass("slx-bold");
+ if (list.indexOf(elem.attr('data-id')) === -1)
+ elem.addClass("slx-fade");
+ });
+ if (action === 'bold') {
+ boldItem = e;
+ $(e).addClass("slx-bold");
+ }
+ }
+
+ var statusChecks = 0;
+ function checkBuildStatus() {
+ var mods = [];
+ var confs = [];
+ $(".refmod.btn-primary").each(function (index) {
+ mods.push($(this).val());
+ });
+ $(".refconf.btn-primary").each(function (index) {
+ confs.push($(this).val());
+ });
+ if (mods.length === 0 && confs.length === 0) return;
+ if (++statusChecks < 10) setTimeout(checkBuildStatus, 200 + 50 * statusChecks);
+ console.log("POSTING");
+ $.post('?do=SysConfig', { mods: mods.join(), confs: confs.join(), token: TOKEN, action: 'status' }, function (data) {
+ if (typeof data === 'undefined') return;
+ if (typeof data.mods === 'object') updateButtonColor($(".refmod.btn-primary"), data.mods);
+ if (typeof data.confs === 'object') updateButtonColor($(".refconf.btn-primary"), data.confs);
+ }, 'json');
+ }
+ function updateButtonColor(list,ids) {
+ list.each(function() {
+ if (ids.indexOf($(this).val()) >= 0) $(this).removeClass('btn-primary').addClass('btn-default');
+ });
+ }
+ document.addEventListener("DOMContentLoaded", checkBuildStatus, false);
+// --></script> \ No newline at end of file
diff --git a/modules-available/sysconfig/templates/ad-finish.html b/modules-available/sysconfig/templates/ad-finish.html
new file mode 100644
index 00000000..f73cad9d
--- /dev/null
+++ b/modules-available/sysconfig/templates/ad-finish.html
@@ -0,0 +1,29 @@
+<p>
+ {{lang_adStarted}}
+</p>
+
+<div id="zeug">
+ <div data-tm-id="{{tm-config}}" data-tm-log="error" data-tm-callback="ldapCb">{{lang_generateModule}}</div>
+</div>
+<br>
+<div id="back" class="pull-left" style="display:none">
+ <a href="?do=SysConfig&amp;action=addmodule&amp;step=AdAuth_Start" class="btn btn-primary">{{lang_restartWizard}}</a>
+</div>
+<div id="finish" class="pull-right" style="display:none">
+ <a href="?do=SysConfig" class="btn btn-primary">{{lang_to}} {{lang_systemConfiguration}}</a>
+</div>
+<script type="text/javascript">
+function ldapCb(task)
+{
+ if (!task || !task.statusCode)
+ return;
+ if (task.statusCode === 'TASK_FINISHED') {
+ $('#finish').attr('style', '');
+ }
+ if (task.statusCode === 'TASK_ERROR' || task.statusCode === 'PARENT_FAILED') {
+ $('#back').attr('style', '');
+ }
+}
+if ('{{tm-config}}' == '')
+ $('#finish').attr('style', '');
+</script>
diff --git a/modules-available/sysconfig/templates/ad-selfsearch.html b/modules-available/sysconfig/templates/ad-selfsearch.html
new file mode 100644
index 00000000..76952dc3
--- /dev/null
+++ b/modules-available/sysconfig/templates/ad-selfsearch.html
@@ -0,0 +1,112 @@
+<p>
+ {{lang_dnLookup}}
+</p>
+
+<div id="zeug">
+ <div data-tm-id="{{self-search}}" data-tm-log="messages" data-tm-callback="selfCb">LDAP Self-Query</div>
+ <pre style="display:none" id="result"></pre>
+ <div style="display:none" id="haselect">
+ <div class="slx-bold">{{lang_selectHomeAttribute}}</div>
+ {{lang_homeAttributeExplanation}}
+ </div>
+</div>
+<i>{{lang_onProblemSearchBase}}</i>
+<br><br>
+<div class="pull-left">
+ <form role="form" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{prev}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <input name="title" value="{{title}}" type="hidden">
+ <input name="server" value="{{server}}" type="hidden">
+ <input name="searchbase" value="{{searchbase}}" type="hidden">
+ <input name="binddn" value="{{binddn}}" type="hidden">
+ <input name="bindpw" value="{{bindpw}}" type="hidden">
+ <input name="home" value="{{home}}" type="hidden">
+ <input name="homeattr" value="{{homeattr}}" type="hidden">
+ {{#ssl}}
+ <input name="ssl" value="on" type="hidden">
+ <input type="hidden" name="certificate" value="{{certificate}}">
+ {{/ssl}}
+ <button type="submit" class="btn btn-primary">&laquo; {{lang_back}}</button>
+ </form>
+</div>
+<div class="pull-right">
+ <form id="nextform" role="form" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{next}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <input name="title" value="{{title}}" type="hidden">
+ <input name="server" value="{{server}}" type="hidden">
+ <input name="port" value="{{port}}" type="hidden">
+ <input id="searchbase" name="searchbase" value="{{searchbase}}" type="hidden">
+ <input id="fulldn" name="binddn" value="" type="hidden">
+ <input id="givendn" name="originalbinddn" value="{{binddn}}" type="hidden">
+ <input name="bindpw" value="{{bindpw}}" type="hidden">
+ <input id="home" name="home" value="{{home}}" type="hidden">
+ <input id="homeattr" name="homeattr" value="{{homeattr}}" type="hidden">
+ {{#ssl}}
+ <input name="ssl" value="on" type="hidden">
+ <input type="hidden" name="certificate" value="{{certificate}}">
+ {{/ssl}}
+ <input name="fingerprint" value="{{fingerprint}}" type="hidden">
+ <button id="nextbutton" type="submit" class="btn btn-primary" style="display:none">{{lang_skip}} &raquo;</button>
+ </form>
+</div>
+<script type="text/javascript">
+ function selfCb(task)
+ {
+ if (!task || !task.statusCode || task.statusCode === 'TASK_WAITING' || task.statusCode === 'TASK_PROCESSING')
+ return;
+ if (task.statusCode === 'TASK_FINISHED' && task.data && task.data.dn) {
+ var fulldn = task.data.dn;
+ var domain = "-";
+ var search = $('#searchbase').val();
+ if ($('#searchbase').val().length < 2) {
+ domain = $('#givendn').val().replace(/[\/\\]\S+$/i, '');
+ var idx = fulldn.search(new RegExp('\\w+=' + domain + ',', "i"));
+ console.log(idx);
+ if (idx !== -1) {
+ search = fulldn.substring(idx);
+ }
+ $('#searchbase').val(search);
+ }
+ $('#fulldn').val(fulldn);
+ $('#result').text("BindDN: " + fulldn + "\nWinDomain: " + domain + "\nSearchBase: " + search).show();
+ var attrlist = [];
+ var tryHomeAttr = false;
+ {{#tryHomeAttr}}
+ tryHomeAttr = true;
+ if (task.data.home && task.data.home.length) attrlist = task.data.home;
+ {{/tryHomeAttr}}
+ if (typeof search !== 'string' || search.length === 0 || search.length + 2 >= fulldn.length
+ || (tryHomeAttr && $('#home').val().length === 0 && $('#homeattr').val().length === 0 && attrlist.length === 0)) {
+ $('#nextbutton').html('{{lang_continueAnyway}}');
+ } else if (attrlist.length > 1 && $('#homeattr').val().length === 0) {
+ var sel = $('<select>').attr('onchange', 'slxSetHomeAttr(this)').addClass('form-control');
+ var best = 0;
+ for (var i = 1; i < attrlist.length; ++i) {
+ if (attrlist[i].score > attrlist[best].score) best = i;
+ }
+ for (var i = 0; i < attrlist.length; ++i) {
+ var opt = $('<option>').attr('value', attrlist[i].attr).text(attrlist[i].attr + ' (' + attrlist[i].value + ')');
+ if (i === best) opt.attr('selected', 'selected');
+ sel.append(opt);
+ }
+ $('#haselect').append(sel).append('<br>').show();
+ slxSetHomeAttr(sel[0]);
+ $('#nextbutton').html('{{lang_next}}');
+ } else {
+ if (attrlist.length === 1 && $('#homeattr').val().length === 0) {
+ $('#homeattr').val(attrlist[0].attr);
+ }
+ $('#nextform').submit();
+ }
+ } else {
+ $('#nextbutton').html('{{lang_continueAnyway}}');
+ }
+ $('#nextbutton').show();
+ }
+
+ function slxSetHomeAttr(sel) {
+ $('#homeattr').val(sel.options[sel.selectedIndex].value);
+ }
+</script>
diff --git a/modules-available/sysconfig/templates/ad-start.html b/modules-available/sysconfig/templates/ad-start.html
new file mode 100644
index 00000000..98546140
--- /dev/null
+++ b/modules-available/sysconfig/templates/ad-start.html
@@ -0,0 +1,121 @@
+<p>
+ {{lang_adText1}}
+ <br>
+ {{lang_adText2}}
+ <br>
+ {{lang_adText3}}
+</p>
+<pre>dsquery user -name &quot;Username&quot;</pre>
+<p>
+ {{lang_adText4}}
+</p>
+
+<i>{{lang_asteriskMandatory}}</i>
+
+<form role="form" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{step}}">
+ <input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="display:none;">
+ <input type="password" name="password_fake" id="password_fake" value="" style="display:none;">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">{{lang_moduleTitle}}</span>
+ <input tabindex="1" name="title" value="{{title}}" type="text" class="form-control">
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">Server *</span>
+ <input tabindex="2" name="server" value="{{server}}" type="text" class="form-control" placeholder="dc0.institution.example.com">
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">{{lang_bindDN}} *</span>
+ <input tabindex="3" name="binddn" value="{{binddn}}" type="text" class="form-control" placeholder="domain\bwlp *ODER* CN=bwlp,OU=Benutzer,DC=domain,DC=hs-beispiel,DC=de">
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">{{lang_password}} *</span>
+ <input tabindex="4" name="bindpw" value="{{bindpw}}" type="{{password_type}}" class="form-control" placeholder="{{lang_password}}">
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">{{lang_searchBase}}</span>
+ <input tabindex="5" name="searchbase" value="{{searchbase}}" type="text" class="form-control" placeholder="dc=windows,dc=hs-beispiel,dc=de">
+ </div>
+ <br>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">Home</span>
+ <input tabindex="6" name="home" value="{{home}}" type="text" class="form-control" placeholder="\\server.example.com\%s">
+ <span class="input-group-btn">
+ <a class="btn btn-default" data-toggle="modal" data-target="#help-home"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </span>
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">{{lang_homeAttr}}</span>
+ <input tabindex="6" name="homeattr" value="{{homeattr}}" type="text" class="form-control" placeholder="homeDirectory">
+ <span class="input-group-btn">
+ <a class="btn btn-default" data-toggle="modal" data-target="#help-homeattr"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </span>
+ </div>
+ <br>
+ <div>
+ <label>
+ <input type="checkbox" name="ssl" onchange="$('#cert-box').css('display', this.checked ? '' : 'none')" {{#ssl}}checked{{/ssl}}> {{lang_ssl}}
+ </label>
+ </div>
+ <i>{{lang_sslDescription}}</i>
+ <br>
+ <div class="pull-right">
+ <button type="submit" class="btn btn-primary">{{lang_next}} &raquo;</button>
+ </div>
+ <div class="clearfix"></div>
+ <hr>
+ <div {{^ssl}}style="display:none"{{/ssl}} id="cert-box">
+ <div class="well well-sm" id="wcustom">
+ {{lang_customCertificate}}
+ <pre class="small">
+-----BEGIN CERTIFICATE-----
+MIIFfTCCA...
+.....
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+.....
+-----END CERTIFICATE-----</pre>
+ <textarea name="certificate" class="form-control small" cols="101" rows="10">{{certificate}}</textarea>
+ </div>
+ <div class="pull-right">
+ <button type="submit" class="btn btn-primary">{{lang_next}} &raquo;</button>
+ </div>
+ <div class="clearfix"></div>
+ </div>
+</form>
+
+<div class="modal fade" id="help-home" tabindex="-1" role="dialog">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">{{lang_userDirectory}}</div>
+ <div class="modal-body">
+ <p>
+ {{lang_userDirectoryInfo1}}
+ </p>
+ <pre>\\fileserv.uni.example.com\users\%s</pre>
+ <p>
+ {{lang_userDirectoryInfo2}}
+ </p>
+ <p>
+ {{lang_userDirectoryInfo3}}
+ </p>
+ </div>
+ <div class="modal-footer"><a class="btn btn-primary" data-dismiss="modal">{{lang_close}}</a></div>
+ </div>
+ </div>
+</div>
+
+<div class="modal fade" id="help-homeattr" tabindex="-1" role="dialog">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">{{lang_helpHomeAttrHead}}</div>
+ <div class="modal-body">
+ <p>
+ {{lang_helpHomeAttrText}}
+ </p>
+ </div>
+ <div class="modal-footer"><a class="btn btn-primary" data-dismiss="modal">{{lang_close}}</a></div>
+ </div>
+ </div>
+</div>
diff --git a/modules-available/sysconfig/templates/ad_ldap-checkconnection.html b/modules-available/sysconfig/templates/ad_ldap-checkconnection.html
new file mode 100644
index 00000000..5925829a
--- /dev/null
+++ b/modules-available/sysconfig/templates/ad_ldap-checkconnection.html
@@ -0,0 +1,91 @@
+<p>
+ {{lang_connectionWait}}
+</p>
+
+<div id="zeug">
+ <div data-tm-id="{{taskid}}" data-tm-log="messages" data-tm-callback="portScan">Port Check</div>
+</div>
+<div id="self-signed" style="display:none" class="alert alert-info">{{lang_selfSignedNote}}</div>
+<div id="no-valid-cert" style="display:none" class="alert alert-danger">{{lang_noValidCert}}</div>
+<div id="no-open-port" style="display:none" class="alert alert-danger">{{lang_noOpenPort}}</div>
+<br>
+<div class="pull-left">
+ <form role="form" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{prev}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <input name="title" value="{{title}}" type="hidden">
+ <input name="server" value="{{server}}" type="hidden">
+ <input name="searchbase" value="{{searchbase}}" type="hidden">
+ <input name="binddn" value="{{binddn}}" type="hidden">
+ <input name="bindpw" value="{{bindpw}}" type="hidden">
+ <input name="home" value="{{home}}" type="hidden">
+ <input name="homeattr" value="{{homeattr}}" type="hidden">
+ {{#ssl}}
+ <input name="ssl" value="on" type="hidden">
+ <input type="hidden" name="certificate" value="{{certificate}}">
+ {{/ssl}}
+ <button type="submit" class="btn btn-primary">&laquo; {{lang_back}}</button>
+ </form>
+</div>
+<div class="pull-right">
+ <form id="nextform" role="form" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{next}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <input name="title" value="{{title}}" type="hidden">
+ <input name="server" value="{{server}}" type="hidden">
+ <input id="port" name="port" value="" type="hidden">
+ <input name="searchbase" value="{{searchbase}}" type="hidden">
+ <input name="binddn" value="{{binddn}}" type="hidden">
+ <input name="bindpw" value="{{bindpw}}" type="hidden">
+ <input name="home" value="{{home}}" type="hidden">
+ <input name="homeattr" value="{{homeattr}}" type="hidden">
+ {{#ssl}}
+ <input id="ssl" name="ssl" value="on" type="hidden">
+ <input id="fingerprint" name="fingerprint" value="" type="hidden">
+ <input id="certificate" type="hidden" name="certificate" value="{{certificate}}">
+ {{/ssl}}
+ <input name="originalbinddn" value="{{binddn}}" type="hidden">
+ <button id="nextbutton" type="submit" class="btn btn-primary" style="display:none">{{lang_next}} &raquo;</button>
+ </form>
+</div>
+<div id="bla"></div>
+<script type="text/javascript">
+ function isSelfSigned(code)
+ {
+ return code == 18 || code == 19 || code == 20 || code == 21;
+ }
+ function portScan(task)
+ {
+ if (!task || !task.statusCode)
+ return;
+ if (task.statusCode === 'TASK_FINISHED' && task.data && task.data.ports) {
+ var ssl = $('#ssl').length > 0;
+ var ports = task.data.ports;
+ var verRes = -1;
+ var cert = ssl && $('#certificate').val().length > 10;
+ for (var i = 0; i < ports.length; ++i) {
+ if (!ports[i].open || !ports[i].port) continue;
+ if ($.isNumeric($('#port').val()) && $('#port').val() < ports[i].port) continue; // Prefer the global LDAP ports over the specific AD ports
+ if (ssl) {
+ if (verRes === -1) verRes = ports[i].verifyResult;
+ if (ports[i].certFingerprint.length < 10 || ports[i].certificateChain.length < 10) continue;
+ if (ports[i].verifyResult != 0 && (cert || !isSelfSigned(ports[i].verifyResult))) continue;
+ verRes = ports[i].verifyResult;
+ $('#fingerprint').val(ports[i].certFingerprint);
+ if (!cert && verRes != 0) $('#certificate').val(ports[i].certificateChain);
+ else if (!cert && verRes == 0) $('#certificate').val('default');
+ }
+ $('#port').val(ports[i].port);
+ }
+ if (ssl && verRes != 0 && (cert || !isSelfSigned(verRes))) {
+ $('#no-valid-cert').css('display', '');
+ } else if ($('#port').val() > 0) {
+ $('#nextbutton').show();
+ if (ssl && isSelfSigned(verRes)) $('#self-signed').css('display', '');
+ else $('#nextform').submit();
+ } else {
+ $('#no-open-port').css('display', '');
+ }
+ }
+ }
+</script>
diff --git a/modules-available/sysconfig/templates/ad_ldap-checkcredentials.html b/modules-available/sysconfig/templates/ad_ldap-checkcredentials.html
new file mode 100644
index 00000000..0586209b
--- /dev/null
+++ b/modules-available/sysconfig/templates/ad_ldap-checkcredentials.html
@@ -0,0 +1,67 @@
+<p>
+ {{lang_connectionWait}}
+</p>
+
+<div id="zeug">
+ <div data-tm-id="{{tm-search}}" data-tm-log="messages" data-tm-callback="ldapCb">LDAP Test-Query</div>
+</div>
+<i>{{lang_onProblemSearchBase}}</i>
+<br><br>
+<div class="pull-left">
+ <form role="form" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{prev}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <input name="title" value="{{title}}" type="hidden">
+ <input name="server" value="{{server}}" type="hidden">
+ <input name="searchbase" value="{{searchbase}}" type="hidden">
+ <input name="binddn" value="{{binddn}}" type="hidden">
+ <input name="bindpw" value="{{bindpw}}" type="hidden">
+ <input name="home" value="{{home}}" type="hidden">
+ <input name="homeattr" value="{{homeattr}}" type="hidden">
+ {{#ssl}}
+ <input name="ssl" value="on" type="hidden">
+ <input type="hidden" name="certificate" value="{{certificate}}">
+ {{/ssl}}
+ <button type="submit" class="btn btn-primary">&laquo; {{lang_back}}</button>
+ </form>
+</div>
+<div class="pull-right">
+ <form role="form" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{next}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <input name="title" value="{{title}}" type="hidden">
+ <input name="server" value="{{server}}" type="hidden">
+ <input name="searchbase" value="{{searchbase}}" type="hidden">
+ <input id="setbase" name="somedn" value="" type="hidden">
+ <input name="binddn" value="{{binddn}}" type="hidden">
+ <input name="bindpw" value="{{bindpw}}" type="hidden">
+ <input name="home" value="{{home}}" type="hidden">
+ <input name="homeattr" value="{{homeattr}}" type="hidden">
+ {{#ssl}}
+ <input name="ssl" value="on" type="hidden">
+ <input type="hidden" name="certificate" value="{{certificate}}">
+ {{/ssl}}
+ <input name="fingerprint" value="{{fingerprint}}" type="hidden">
+ <input name="originalbinddn" value="{{binddn}}" type="hidden">
+ <button id="nextbutton" type="submit" class="btn btn-primary" style="display:none">{{lang_skip}} &raquo;</button>
+ </form>
+</div>
+<script type="text/javascript">
+ function ldapCb(task)
+ {
+ if (!task || !task.statusCode)
+ return;
+ if (task.statusCode === 'TASK_FINISHED') {
+ if (task.data && task.data.dn) {
+ $('#setbase').val(task.data.dn);
+ }
+ $('#nextbutton').html('Weiter &raquo;').show();
+ }
+ if (task.statusCode === 'TASK_ERROR' || task.statusCode === 'PARENT_FAILED') {
+ $('#nextbutton').html('Trotzdem weiter &raquo;');
+ }
+ if (task.statusCode === 'TASK_ERROR') {
+ $('#nextbutton').show();
+ }
+ }
+</script>
diff --git a/modules-available/sysconfig/templates/branding-check.html b/modules-available/sysconfig/templates/branding-check.html
new file mode 100644
index 00000000..8f6ef055
--- /dev/null
+++ b/modules-available/sysconfig/templates/branding-check.html
@@ -0,0 +1,26 @@
+<p>
+ {{lang_brandingInfo}}
+</p>
+<div class="pull-left">
+ {{#svg}}
+ <img src="data:image/svg+xml;base64,{{svg}}" width="192" height="192">
+ {{/svg}}
+</div>
+<div class="pull-right">
+ {{#png}}
+ <img src="data:image/png;base64,{{png}}">
+ {{/png}}
+</div>
+<div class="clearfix"></div>
+<div>{{error}}</div>
+<div>
+ <form role="form" enctype="multipart/form-data" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{step}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <div class="form-group">
+ <label for="title-id">{{lang_title}}</label>
+ <input type="text" name="title" value="{{title}}" id ="title-id" class="form-control" placeholder="Name des Moduls">
+ </div>
+ <button type="submit" class="btn btn-primary">{{lang_save}}</button>
+ </form>
+</div>
diff --git a/modules-available/sysconfig/templates/branding-start.html b/modules-available/sysconfig/templates/branding-start.html
new file mode 100644
index 00000000..09b9ca27
--- /dev/null
+++ b/modules-available/sysconfig/templates/branding-start.html
@@ -0,0 +1,25 @@
+<p>
+ {{lang_branding}}
+</p>
+<form role="form" enctype="multipart/form-data" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{step}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <div class="form-group">
+ <label for="input-url">{{lang_urlLoad}}</label>
+ <input class="form-control" type="text" name="url" id="input-url">
+ </div>
+ {{lang_or}}
+ <div class="form-group">
+ <label for="input-file">{{lang_computerLoad}}</label>
+ <div class="input-group upload-ex">
+ <input type="text" class="form-control" readonly placeholder="{{lang_selectFile}}">
+ <span class="input-group-btn">
+ <span class="btn btn-default btn-file">
+ {{lang_browseForFile}}&hellip; <input type="file" name="file" id="input-file">
+ </span>
+ </span>
+ </div>
+ </div>
+ <button type="submit" class="btn btn-primary">{{lang_upload}}</button>
+</form>
+
diff --git a/modules-available/sysconfig/templates/cfg-finish.html b/modules-available/sysconfig/templates/cfg-finish.html
new file mode 100644
index 00000000..a6e51996
--- /dev/null
+++ b/modules-available/sysconfig/templates/cfg-finish.html
@@ -0,0 +1,12 @@
+<p>
+ {{lang_configurationSuccess}}
+</p>
+
+<form role="form" method="post" action="?do=SysConfig">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="action" value="config">
+ <input type="hidden" name="activate" value="{{configid}}">
+ <div class="pull-left">
+ <button type="submit" class="btn btn-primary">{{lang_configurationActive}}</button>
+ </div>
+</form>
diff --git a/modules-available/sysconfig/templates/cfg-start.html b/modules-available/sysconfig/templates/cfg-start.html
new file mode 100644
index 00000000..50f366ea
--- /dev/null
+++ b/modules-available/sysconfig/templates/cfg-start.html
@@ -0,0 +1,39 @@
+<form role="form" method="post" action="?do=SysConfig&amp;action=addconfig&amp;step={{step}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <div class="input-group">
+ <span class="input-group-addon">{{lang_name}} *</span>
+ <input type="text" name="title" value="{{title}}" class="form-control" placeholder="{{lang_configuration}}" autofocus="autofocus">
+ </div>
+ <hr>
+ <p>{{lang_configurationChoose}}</p>
+ {{#groups}}
+ <div class="panel panel-default">
+ <div class="slx-litehead">{{group}}</div>
+ <div class="panel-body">
+ {{#modules}}
+ <div class="input-group">
+ <span class="input-group-addon">
+ {{#unique}}
+ <input type="radio" name="module[{{groupid}}]" value="{{moduleid}}" id="module{{moduleid}}" {{#active}}checked{{/active}}>
+ {{/unique}}
+ {{^unique}}
+ <input type="checkbox" name="module[{{moduleid}}]" value="{{moduleid}}" id="module{{moduleid}}" {{#active}}checked{{/active}}>
+ {{/unique}}
+ </span>
+ <label class="form-control" for="module{{moduleid}}">{{title}}</label>
+ {{#missing}}
+ <span class="input-group-addon" title="Modul beschÃĪdigt! Bitte neu generieren."><span class="red glyphicon glyphicon-exclamation-sign"></span></span>
+ {{/missing}}
+ </div>
+ {{/modules}}
+ {{^modules}}
+ <div class="alert alert-info">{{lang_noModuleOfType}}</div>
+ {{/modules}}
+ </div>
+ </div>
+ {{/groups}}
+ <div class="pull-right">
+ <button type="submit" class="btn btn-primary">{{lang_next}} &raquo;</button>
+ </div>
+</form>
diff --git a/modules-available/sysconfig/templates/config-module-list.html b/modules-available/sysconfig/templates/config-module-list.html
new file mode 100644
index 00000000..6cd77f9e
--- /dev/null
+++ b/modules-available/sysconfig/templates/config-module-list.html
@@ -0,0 +1,17 @@
+<form method="post" action="?do=SysConfig">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="action" value="module">
+ <table class="slx-table">
+ {{#modules}}
+ <tr>
+ <td>{{module}}</td>
+ <td>
+ <button class="btn btn-default btn-xs" name="list" value="{{moduleid}}"><span class="glyphicon glyphicon-eye-open"></span> {{lang_show}}</button>
+ </td>
+ </tr>
+ {{/modules}}
+ </table>
+ {{^modules}}
+ <div class="alert alert-warning">{{lang_noContent}}</div>
+ {{/modules}}
+</form> \ No newline at end of file
diff --git a/modules-available/sysconfig/templates/custom-filelist.html b/modules-available/sysconfig/templates/custom-filelist.html
new file mode 100644
index 00000000..3ad241dd
--- /dev/null
+++ b/modules-available/sysconfig/templates/custom-filelist.html
@@ -0,0 +1,16 @@
+<input type="hidden" name="modid" value="{{modid}}">
+<input type="hidden" name="token" value="{{token}}">
+<table class="table table-bordered table-condensed">
+{{#files}}
+ <tr>
+ {{#isdir}}
+ <td class="fileEntry isdir" colspan="2">{{name}}</td>
+ {{/isdir}}
+ {{^isdir}}
+ <td class="fileEntry">{{name}}</td>
+ <td>{{size}}</td>
+ {{/isdir}}
+ </tr>
+ {{/files}}
+</table>
+<a class="btn btn-primary btn-sm" href="?do=SysConfig">{{lang_back}} &laquo;</a>
diff --git a/modules-available/sysconfig/templates/custom-fileselect.html b/modules-available/sysconfig/templates/custom-fileselect.html
new file mode 100644
index 00000000..000c8d10
--- /dev/null
+++ b/modules-available/sysconfig/templates/custom-fileselect.html
@@ -0,0 +1,31 @@
+<form role="form" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{step}}">
+ <input type="hidden" name="modid" value="{{modid}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <div class="input-group">
+ <span class="input-group-addon">{{lang_moduleName}}</span>
+ <input type="text" name="title" value="{{title}}" class="form-control" placeholder="Mein Konfigurationsmodul" autofocus="autofocus">
+ </div>
+ <div class="pull-right">
+ <button type="submit" class="btn btn-primary">{{lang_next}} &raquo;</button>
+ </div>
+ <div class="clearfix"></div>
+ <hr>
+ <p>{{lang_checkFileContent}}</p>
+ <table class="table table-bordered table-condensed">
+ {{#files}}
+ <tr>
+ {{#isdir}}
+ <td class="fileEntry isdir" colspan="2">{{name}}</td>
+ {{/isdir}}
+ {{^isdir}}
+ <td class="fileEntry">{{name}}</td>
+ <td>{{size}}</td>
+ {{/isdir}}
+ </tr>
+ {{/files}}
+ </table>
+ <div class="pull-right">
+ <button type="submit" class="btn btn-primary">{{lang_next}} &raquo;</button>
+ </div>
+</form>
diff --git a/modules-available/sysconfig/templates/custom-upload.html b/modules-available/sysconfig/templates/custom-upload.html
new file mode 100644
index 00000000..c453a97d
--- /dev/null
+++ b/modules-available/sysconfig/templates/custom-upload.html
@@ -0,0 +1,18 @@
+<p>{{lang_customModuleInfo1}}</p>
+
+<p>{{lang_customModuleInfo2}}</p>
+
+<form role="form" enctype="multipart/form-data" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{step}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <div class="input-group upload-ex">
+ <input type="text" class="form-control" readonly placeholder="{{lang_selectFile}}">
+ <span class="input-group-btn">
+ <span class="btn btn-default btn-file">
+ {{lang_browseForFile}}&hellip; <input type="file" name="modulefile">
+ </span>
+ </span>
+ </div>
+ <p class="help-block">{{lang_supportedFiles}}: .tar.gz, .tar.bz2, .zip</p>
+ <button type="submit" class="btn btn-primary">{{lang_upload}}</button>
+</form>
diff --git a/modules-available/sysconfig/templates/ldap-finish.html b/modules-available/sysconfig/templates/ldap-finish.html
new file mode 100644
index 00000000..a735e792
--- /dev/null
+++ b/modules-available/sysconfig/templates/ldap-finish.html
@@ -0,0 +1,29 @@
+<p>
+ {{lang_ldapStarted}}
+</p>
+
+<div id="zeug">
+ <div data-tm-id="{{tm-config}}" data-tm-log="error" data-tm-callback="ldapCb">{{lang_generateModule}}</div>
+</div>
+<br>
+<div id="back" class="pull-left" style="display:none">
+ <a href="?do=SysConfig&amp;action=addmodule&amp;step=LdapAuth_Start" class="btn btn-primary">{{lang_restartWizard}}</a>
+</div>
+<div id="finish" class="pull-right" style="display:none">
+ <a href="?do=SysConfig" class="btn btn-primary">{{lang_toSystemConfiguration}}</a>
+</div>
+<script type="text/javascript">
+function ldapCb(task)
+{
+ if (!task || !task.statusCode)
+ return;
+ if (task.statusCode === 'TASK_FINISHED') {
+ $('#finish').attr('style', '');
+ }
+ if (task.statusCode === 'TASK_ERROR' || task.statusCode === 'PARENT_FAILED') {
+ $('#back').attr('style', '');
+ }
+}
+if ('{{tm-config}}' == '')
+ $('#finish').attr('style', '');
+</script>
diff --git a/modules-available/sysconfig/templates/ldap-start.html b/modules-available/sysconfig/templates/ldap-start.html
new file mode 100644
index 00000000..7892b63f
--- /dev/null
+++ b/modules-available/sysconfig/templates/ldap-start.html
@@ -0,0 +1,101 @@
+<p>
+ {{lang_ldapText1}}
+ <br>
+ {{lang_ldapText2}}
+</p>
+
+<form role="form" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{step}}">
+ <input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="display:none;">
+ <input type="password" name="password_fake" id="password_fake" value="" style="display:none;">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">{{lang_moduleTitle}}</span>
+ <input tabindex="1" name="title" value="{{title}}" type="text" class="form-control">
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">Server *</span>
+ <input tabindex="2" name="server" value="{{server}}" type="text" class="form-control" placeholder="dc0.institution.example.com">
+ <!--span class="input-group-btn">
+ <a class="btn btn-default"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </span-->
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">{{lang_bindDN}}</span>
+ <input tabindex="3" name="binddn" value="{{binddn}}" type="text" class="form-control" placeholder="CN=bwlp,OU=Benutzer,DC=domain,DC=hs-beispiel,DC=de">
+ <!--span class="input-group-btn">
+ <a class="btn btn-default"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </span-->
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">{{lang_password}}</span>
+ <input tabindex="4" name="bindpw" value="{{bindpw}}" type="{{password_type}}" class="form-control" placeholder="{{lang_password}}">
+ <!--span class="input-group-btn">
+ <a class="btn btn-default"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </span-->
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">{{lang_searchBase}} *</span>
+ <input tabindex="5" name="searchbase" value="{{searchbase}}" type="text" class="form-control" placeholder="ou=users,dc=hochschule,dc=de">
+ <!--span class="input-group-btn">
+ <a class="btn btn-default"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </span-->
+ </div>
+ <br>
+ <div class="input-group">
+ <span class="input-group-addon slx-ga">Home</span>
+ <input tabindex="6" name="home" value="{{home}}" type="text" class="form-control" placeholder="\\server.example.com\%s">
+ <span class="input-group-btn">
+ <a class="btn btn-default" data-toggle="modal" data-target="#help-home"><span class="glyphicon glyphicon-question-sign"></span></a>
+ </span>
+ </div>
+ <br>
+ <div>
+ <label>
+ <input type="checkbox" name="ssl" onchange="$('#cert-box').css('display', this.checked ? '' : 'none')" {{#ssl}}checked{{/ssl}}> {{lang_ssl}}
+ </label>
+ </div>
+ <i>{{lang_sslDescription}}</i>
+ <br>
+ <div class="pull-right">
+ <button type="submit" class="btn btn-primary">{{lang_next}} &raquo;</button>
+ </div>
+ <div class="clearfix"></div>
+ <hr>
+ <div {{^ssl}}style="display:none"{{/ssl}} id="cert-box">
+ <div class="well well-sm" id="wcustom">
+ {{lang_customCertificate}}
+ <pre class="small">
+-----BEGIN CERTIFICATE-----
+MIIFfTCCA...
+.....
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+.....
+-----END CERTIFICATE-----</pre>
+ <textarea name="certificate" class="form-control small" cols="101" rows="10">{{certificate}}</textarea>
+ </div>
+ <div class="pull-right">
+ <button type="submit" class="btn btn-primary">{{lang_next}} &raquo;</button>
+ </div>
+ <div class="clearfix"></div>
+ </div>
+</form>
+
+<div class="modal fade" id="help-home" tabindex="-1" role="dialog">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">{{lang_userDirectory}}</div>
+ <div class="modal-body">
+ <p>
+ {{lang_userDirectoryInfo1}}
+ </p>
+ <pre>\\fileserv.uni.example.com\users\%s</pre>
+ <p>
+ {{lang_userDirectoryInfo2}}
+ </p>
+ </div>
+ <div class="modal-footer"><a class="btn btn-primary" data-dismiss="modal">{{lang_close}}</a></div>
+ </div>
+ </div>
+</div>
diff --git a/modules-available/sysconfig/templates/sshconfig-start.html b/modules-available/sysconfig/templates/sshconfig-start.html
new file mode 100644
index 00000000..2aa409d3
--- /dev/null
+++ b/modules-available/sysconfig/templates/sshconfig-start.html
@@ -0,0 +1,27 @@
+<form role="form" enctype="multipart/form-data" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step={{step}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <div class="input-group">
+ <span class="input-group-addon">{{lang_moduleName}}</span>
+ <input type="text" name="title" value="{{title}}" class="form-control" autofocus="autofocus">
+ </div>
+ <div class="form-group">
+ <label>
+ <input type="checkbox" name="allowPasswordLogin" value="yes" {{#apl}}checked{{/apl}}>
+ {{lang_allowPass}}
+ </label>
+ <p><i>{{lang_allowPassInfo}}</i></p>
+ </div>
+ <div class="form-group">
+ <label for="root-key">{{lang_rootKey}}</label>
+ <input class="form-control" type="text" name="publicKey" value="{{publicKey}}" id="root-key" pattern="[a-z0-9\-]+ +[a-zA-Z0-9=/\+]+ +.*">
+ <i>{{lang_rootKeyInfo}}</i>
+ </div>
+ <div class="form-group">
+ <label for="port">{{lang_listenPort}}</label>
+ <input class="form-control" type="text" name="listenPort" value="{{listenPort}}" id="port" pattern="\d+">
+ <i>{{lang_listenPortInfo}}</i>
+ </div>
+ <button type="submit" class="btn btn-primary">{{lang_save}}</button>
+</form>
+
diff --git a/modules-available/sysconfig/templates/start.html b/modules-available/sysconfig/templates/start.html
new file mode 100644
index 00000000..f55a5501
--- /dev/null
+++ b/modules-available/sysconfig/templates/start.html
@@ -0,0 +1,12 @@
+<p>{{lang_moduleChoose}}</p>
+
+{{#modules}}
+<div class="panel panel-default">
+ <div class="panel-heading">
+ {{title}} <a href="?do=SysConfig&amp;action=addmodule&amp;step={{wizardClass}}" class="pull-right btn btn-primary btn-xs"><span class="glyphicon glyphicon-plus"></span> {{lang_add}}</a>
+ </div>
+ <div class="panel-body">
+ {{description}}
+ </div>
+</div>
+{{/modules}}