summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUdo Walter2020-01-16 21:57:21 +0100
committerUdo Walter2020-01-16 21:57:21 +0100
commit32d037d949715f553d737201ab6960ea18067098 (patch)
treef8ec171d789f0337168645d9f07847013971eeeb
parent[sysconfig] Screensaver: Add tabindex (tabindex for summernote doesn't work) (diff)
downloadslx-admin-32d037d949715f553d737201ab6960ea18067098.tar.gz
slx-admin-32d037d949715f553d737201ab6960ea18067098.tar.xz
slx-admin-32d037d949715f553d737201ab6960ea18067098.zip
[sysconfig] New step after creating a module to directly assign it to system configs
-rw-r--r--modules-available/sysconfig/addconfig.inc.php2
-rw-r--r--modules-available/sysconfig/addmodule.inc.php59
-rw-r--r--modules-available/sysconfig/addmodule_adauth.inc.php6
-rw-r--r--modules-available/sysconfig/addmodule_branding.inc.php5
-rw-r--r--modules-available/sysconfig/addmodule_custommodule.inc.php5
-rw-r--r--modules-available/sysconfig/addmodule_ldapauth.inc.php5
-rw-r--r--modules-available/sysconfig/addmodule_screensaver.inc.php5
-rw-r--r--modules-available/sysconfig/addmodule_sshconfig.inc.php5
-rw-r--r--modules-available/sysconfig/lang/de/module.json1
-rw-r--r--modules-available/sysconfig/lang/en/module.json1
-rw-r--r--modules-available/sysconfig/templates/assign.html21
11 files changed, 105 insertions, 10 deletions
diff --git a/modules-available/sysconfig/addconfig.inc.php b/modules-available/sysconfig/addconfig.inc.php
index 68efc29c..58cd6a1c 100644
--- a/modules-available/sysconfig/addconfig.inc.php
+++ b/modules-available/sysconfig/addconfig.inc.php
@@ -30,7 +30,7 @@ abstract class AddConfig_Base
Util::redirect('?do=SysConfig');
}
self::$instance = new $step();
- if (($editId = Request::any('edit', false, 'int')) !== false) {
+ if ($editId = Request::any('edit')) {
self::$instance->edit = ConfigTgz::get($editId);
if (self::$instance->edit === false)
Util::traceError('Invalid config id for editing');
diff --git a/modules-available/sysconfig/addmodule.inc.php b/modules-available/sysconfig/addmodule.inc.php
index 0dd28651..b4a84537 100644
--- a/modules-available/sysconfig/addmodule.inc.php
+++ b/modules-available/sysconfig/addmodule.inc.php
@@ -22,19 +22,20 @@ abstract class AddModule_Base
/**
*
* @param string $step name of class representing the current step
+ * @param int $editId (optional) overwrite for the request parameter 'edit'
*/
- public static function setStep($step)
+ public static function setStep($step, $editId = false)
{
if (empty($step) || !class_exists($step) || get_parent_class($step) !== 'AddModule_Base') {
Message::addError('invalid-action', $step);
Util::redirect('?do=SysConfig');
}
self::$instance = new $step();
- if (Request::any('edit')) {
- self::$instance->edit = ConfigModule::get(Request::any('edit'));
+ if ($editId = $editId ? $editId : Request::any('edit')) {
+ self::$instance->edit = ConfigModule::get($editId);
if (self::$instance->edit === false)
Util::traceError('Invalid module id for editing');
- if (!preg_match('/^' . self::$instance->edit->moduleType() . '_/', $step))
+ if ($step !== 'AddModule_Assign' && !preg_match('/^' . self::$instance->edit->moduleType() . '_/', $step))
Util::traceError('Module to edit is of different type!');
Util::addRedirectParam('edit', self::$instance->edit->id());
}
@@ -99,7 +100,7 @@ abstract class AddModule_Base
if (self::$instance === false) {
Util::traceError('No step instance yet');
}
- if (self::$instance->edit !== false) {
+ if (get_class(self::$instance) !== 'AddModule_Assign' && self::$instance->edit !== false) {
Message::addInfo('replacing-module', self::$instance->edit->title());
}
self::$instance->renderInternal();
@@ -136,6 +137,54 @@ class AddModule_Start extends AddModule_Base
}
+/**
+ * End dialog for adding module. Here the user
+ * can assign the module to configs.
+ */
+class AddModule_Assign extends AddModule_Base
+{
+
+ protected function preprocessInternal()
+ {
+ $assign = Request::any('assign', false, 'boolean');
+
+ if ($assign) {
+ $configIds = Request::any('configs', [], 'array');
+ $moduleId = $this->edit->id();
+ $moduleType = $this->edit->moduleType();
+
+ if (ConfigModule::getList()[$moduleType]['unique']) {
+ $moduleIds = [];
+ foreach (ConfigModule::getAll($moduleType) as $module) {
+ $moduleIds[] = $module->id();
+ }
+
+ Database::exec("DELETE FROM configtgz_x_module WHERE configid IN (:configids) AND moduleid IN (:moduleids)",
+ array('configids' => $configIds, 'moduleids' => $moduleIds));
+ }
+
+ foreach ($configIds as $configId) {
+ Database::exec("INSERT INTO configtgz_x_module (configid, moduleid) VALUES (:configid, :moduleid)", array(
+ 'configid' => $configId,
+ 'moduleid' => $moduleId
+ ));
+ ConfigTgz::get($configId)->generate();
+ }
+
+ Util::redirect('?do=SysConfig');
+ }
+ }
+
+ protected function renderInternal()
+ {
+ $data = ['edit' => $this->edit->id(), 'configs' => SysConfig::getAll()];
+ if (count($data['configs']) === 0)
+ Util::redirect('?do=SysConfig');
+ Render::addDialog(Dictionary::translate('lang_moduleAssign'), false, 'assign', $data);
+ }
+
+}
+
/*
* Helper functions to set/get a batch of vars from/to post variables or a module
*/
diff --git a/modules-available/sysconfig/addmodule_adauth.inc.php b/modules-available/sysconfig/addmodule_adauth.inc.php
index 83f4e289..583844d0 100644
--- a/modules-available/sysconfig/addmodule_adauth.inc.php
+++ b/modules-available/sysconfig/addmodule_adauth.inc.php
@@ -524,6 +524,12 @@ class AdAuth_Finish extends AddModule_Base
$this->taskIds = array(
'tm-config' => $tgz,
);
+
+ if ($this->edit === false) {
+ AddModule_Base::setStep('AddModule_Assign', $module->id());
+ return;
+ }
+
}
protected function renderInternal()
diff --git a/modules-available/sysconfig/addmodule_branding.inc.php b/modules-available/sysconfig/addmodule_branding.inc.php
index dd98d7af..d941a7a7 100644
--- a/modules-available/sysconfig/addmodule_branding.inc.php
+++ b/modules-available/sysconfig/addmodule_branding.inc.php
@@ -231,8 +231,11 @@ class Branding_Finish extends AddModule_Base
// Yay
if ($this->edit !== false)
Message::addSuccess('module-edited');
- else
+ else {
Message::addSuccess('module-added');
+ AddModule_Base::setStep('AddModule_Assign', $module->id());
+ return;
+ }
Util::redirect('?do=SysConfig');
}
diff --git a/modules-available/sysconfig/addmodule_custommodule.inc.php b/modules-available/sysconfig/addmodule_custommodule.inc.php
index c234f765..86b98206 100644
--- a/modules-available/sysconfig/addmodule_custommodule.inc.php
+++ b/modules-available/sysconfig/addmodule_custommodule.inc.php
@@ -154,8 +154,11 @@ class CustomModule_CompressModule extends AddModule_Base
// Yay
if ($this->edit !== false)
Message::addSuccess('module-edited');
- else
+ else {
Message::addSuccess('module-added');
+ AddModule_Base::setStep('AddModule_Assign', $module->id());
+ return;
+ }
Util::redirect('?do=SysConfig');
}
diff --git a/modules-available/sysconfig/addmodule_ldapauth.inc.php b/modules-available/sysconfig/addmodule_ldapauth.inc.php
index 001353d0..98f98c6d 100644
--- a/modules-available/sysconfig/addmodule_ldapauth.inc.php
+++ b/modules-available/sysconfig/addmodule_ldapauth.inc.php
@@ -293,6 +293,11 @@ class LdapAuth_Finish extends AddModule_Base
$this->taskIds = array(
'tm-config' => $tgz,
);
+
+ if ($this->edit === false) {
+ AddModule_Base::setStep('AddModule_Assign', $module->id());
+ return;
+ }
}
protected function renderInternal()
diff --git a/modules-available/sysconfig/addmodule_screensaver.inc.php b/modules-available/sysconfig/addmodule_screensaver.inc.php
index 4fd8f17d..7417c200 100644
--- a/modules-available/sysconfig/addmodule_screensaver.inc.php
+++ b/modules-available/sysconfig/addmodule_screensaver.inc.php
@@ -167,8 +167,11 @@ class Screensaver_Finish extends AddModule_Base
// Yay
if ($task !== false && $this->edit !== false)
Message::addSuccess('module-edited');
- elseif ($task !== false)
+ elseif ($task !== false) {
Message::addSuccess('module-added');
+ AddModule_Base::setStep('AddModule_Assign', $module->id());
+ return;
+ }
Util::redirect('?do=SysConfig');
}
}
diff --git a/modules-available/sysconfig/addmodule_sshconfig.inc.php b/modules-available/sysconfig/addmodule_sshconfig.inc.php
index ec01f878..495ba2a9 100644
--- a/modules-available/sysconfig/addmodule_sshconfig.inc.php
+++ b/modules-available/sysconfig/addmodule_sshconfig.inc.php
@@ -68,8 +68,11 @@ class SshConfig_Finish extends AddModule_Base
// Yay
if ($this->edit !== false)
Message::addSuccess('module-edited');
- else
+ else {
Message::addSuccess('module-added');
+ AddModule_Base::setStep('AddModule_Assign', $module->id());
+ return;
+ }
Util::redirect('?do=SysConfig');
}
diff --git a/modules-available/sysconfig/lang/de/module.json b/modules-available/sysconfig/lang/de/module.json
index 4b401437..02d55e5b 100644
--- a/modules-available/sysconfig/lang/de/module.json
+++ b/modules-available/sysconfig/lang/de/module.json
@@ -4,6 +4,7 @@
"lang_configurationCompilation": "Konfiguration zusammenstellen",
"lang_contentOf": "Inhalt von",
"lang_moduleAdd": "Modul hinzuf\u00fcgen",
+ "lang_moduleAssign": "Modul zu Systemkonfigurationen zuweisen",
"lang_noModuleFromThisGroup": "(Kein Modul dieser Gruppe)",
"lang_unknwonTaskManager": "Unbekannter Taskmanager-Fehler",
"module_name": "Lokalisierung + Integration",
diff --git a/modules-available/sysconfig/lang/en/module.json b/modules-available/sysconfig/lang/en/module.json
index ba2d0591..278de8ed 100644
--- a/modules-available/sysconfig/lang/en/module.json
+++ b/modules-available/sysconfig/lang/en/module.json
@@ -4,6 +4,7 @@
"lang_configurationCompilation": "Compile configuration",
"lang_contentOf": "Content of",
"lang_moduleAdd": "Add Module",
+ "lang_moduleAssign": "Assign Module to System Configurations",
"lang_noModuleFromThisGroup": "(No module from this group)",
"lang_unknwonTaskManager": "Unknown Task Manager error",
"module_name": "Localization",
diff --git a/modules-available/sysconfig/templates/assign.html b/modules-available/sysconfig/templates/assign.html
new file mode 100644
index 00000000..b3e3d267
--- /dev/null
+++ b/modules-available/sysconfig/templates/assign.html
@@ -0,0 +1,21 @@
+<form role="form" enctype="multipart/form-data" method="post" action="?do=SysConfig&amp;action=addmodule&amp;step=AddModule_Assign">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="edit" value="{{edit}}">
+ <input type="hidden" name="assign" value="true">
+
+ {{#configs}}
+ <div class="input-group">
+ <span class="input-group-addon">
+ <div class="checkbox">
+ <input type="checkbox" name="configs[]" value="{{configid}}" id="config{{configid}}">
+ <label></label>
+ </div>
+ </span>
+ <label class="form-control" for="config{{configid}}">{{title}}</label>
+ </div>
+ {{/configs}}
+
+ <div class="text-right" style="margin-top: 12px">
+ <button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button>
+ </div>
+</form> \ No newline at end of file