summaryrefslogtreecommitdiffstats
path: root/modules-available/runmode
diff options
context:
space:
mode:
authorSimon Rettberg2017-12-04 18:13:41 +0100
committerSimon Rettberg2017-12-04 18:13:41 +0100
commite079856a7dc7d5ba52f6474b3f82330f27990097 (patch)
treed6f654d96ce009e5b3a11e12c3497cfcb026018a /modules-available/runmode
parent[locationinfo] summary: min-width 90px for child nodes (diff)
downloadslx-admin-e079856a7dc7d5ba52f6474b3f82330f27990097.tar.gz
slx-admin-e079856a7dc7d5ba52f6474b3f82330f27990097.tar.xz
slx-admin-e079856a7dc7d5ba52f6474b3f82330f27990097.zip
[runmode] Properly block simple editor if requested; add customized delete URL
Diffstat (limited to 'modules-available/runmode')
-rw-r--r--modules-available/runmode/inc/runmode.inc.php5
-rw-r--r--modules-available/runmode/page.inc.php45
-rw-r--r--modules-available/runmode/templates/module-machine-list.html12
3 files changed, 46 insertions, 16 deletions
diff --git a/modules-available/runmode/inc/runmode.inc.php b/modules-available/runmode/inc/runmode.inc.php
index d333af58..ad1f52bf 100644
--- a/modules-available/runmode/inc/runmode.inc.php
+++ b/modules-available/runmode/inc/runmode.inc.php
@@ -279,6 +279,10 @@ class RunModeModuleConfig
* @var bool Allow adding and removing machines to this mode via the generic form
*/
public $allowGenericEditor = true;
+ /**
+ * @var string Snippet to construct URL for delete
+ */
+ public $deleteUrlSnippet = false;
public function __construct($file)
{
@@ -293,6 +297,7 @@ class RunModeModuleConfig
$this->loadType($data, 'isClient', 'boolean');
$this->loadType($data, 'noSysconfig', 'boolean');
$this->loadType($data, 'allowGenericEditor', 'boolean');
+ $this->loadType($data, 'deleteUrlSnippet', 'string');
}
private function loadType($data, $key, $type)
diff --git a/modules-available/runmode/page.inc.php b/modules-available/runmode/page.inc.php
index ef42e7be..e26950d0 100644
--- a/modules-available/runmode/page.inc.php
+++ b/modules-available/runmode/page.inc.php
@@ -28,16 +28,16 @@ class Page_RunMode extends Page
$modeId = Request::post('modeid', false, 'string');
$modConfig = RunMode::getModuleConfig($module);
if ($modConfig === false) {
- Message::addError('module-hasnt-runmode', $module);
+ Message::addError('runmode.module-hasnt-runmode', $module);
return;
}
if (!$modConfig->allowGenericEditor) {
- Message::addError('cannot-edit-module', $module);
+ Message::addError('runmode.cannot-edit-module', $module);
return;
}
$test = RunMode::getModeName($module, $modeId);
if ($test === false) {
- Message::addError('invalid-modeid', $module, $modeId);
+ Message::addError('runmode.invalid-modeid', $module, $modeId);
return;
}
$active = 0;
@@ -53,21 +53,31 @@ class Page_RunMode extends Page
WHERE module = :module AND modeid = :modeId AND machineuuid NOT IN (:machines)',
compact('module', 'modeId', 'machines'));
Message::addSuccess('runmode.enabled-removed-save', $active, $deleted);
- $redirect = Request::post('redirect', false, 'string');
- if ($redirect !== false) {
- Util::redirect($redirect);
- }
- Util::redirect('?do=runmode&module=' . $module . '&modeid=' . $modeId);
+ Util::redirect('?do=runmode&module=' . $module . '&modeid=' . $modeId, true);
} elseif ($action === 'delete-machine') {
$machineuuid = Request::post('machineuuid', false, 'string');
if ($machineuuid === false) {
- Message::addError('machine-not-found', $machineuuid);
+ Message::addError('main.parameter-missing', 'machineuuid');
+ return;
+ }
+ $mode = RunMode::getRunMode($machineuuid);
+ if ($mode === false) {
+ Message::addError('runmode.machine-not-found', $machineuuid);
+ return;
+ }
+ $modConfig = RunMode::getModuleConfig($mode['module']);
+ if ($modConfig === false) {
+ Message::addError('module-hasnt-runmode', $mode['moduleName']);
+ return;
+ }
+ if (!$modConfig->allowGenericEditor) {
+ Message::addError('runmode.cannot-edit-module', $mode['moduleName']);
+ return;
+ }
+ if (RunMode::setRunMode($machineuuid, null, null)) {
+ Message::addSuccess('machine-removed', $machineuuid);
} else {
- if (RunMode::setRunMode($machineuuid, null, null)) {
- Message::addSuccess('machine-removed', $machineuuid);
- } else {
- Message::addWarning('machine-not-runmode', $machineuuid);
- }
+ Message::addWarning('machine-not-runmode', $machineuuid);
}
}
}
@@ -95,6 +105,10 @@ class Page_RunMode extends Page
Message::addError('module-hasnt-runmode', $moduleId);
Util::redirect('?do=runmode');
}
+ if (!$config->allowGenericEditor) {
+ Message::addError('runmode.cannot-edit-module', $moduleId);
+ return;
+ }
// Given modeId?
$modeId = Request::get('modeid', false, 'string');
if ($modeId !== false) {
@@ -137,10 +151,13 @@ class Page_RunMode extends Page
$module = Module::get($moduleId);
if ($module === false)
continue;
+ $config = RunMode::getModuleConfig($moduleId);
Render::addTemplate('module-machine-list', array(
'list' => $rows['list'],
'modulename' => $module->getDisplayName(),
'module' => $moduleId,
+ 'canedit' => $config !== false && $config->allowGenericEditor && $config->deleteUrlSnippet === false,
+ 'deleteUrl' => $config->deleteUrlSnippet
));
}
}
diff --git a/modules-available/runmode/templates/module-machine-list.html b/modules-available/runmode/templates/module-machine-list.html
index 45f574ef..61bbbad9 100644
--- a/modules-available/runmode/templates/module-machine-list.html
+++ b/modules-available/runmode/templates/module-machine-list.html
@@ -35,8 +35,16 @@
{{/isclient}}
</td>
<td class="text-center">
- <button class="btn btn-danger btn-sm" name="machineuuid" value="{{machineuuid}}"><span
- class="glyphicon glyphicon-remove"></span></button>
+ {{#canedit}}
+ <button type="submit" class="btn btn-danger btn-sm" name="machineuuid" value="{{machineuuid}}">
+ <span class="glyphicon glyphicon-trash"></span>
+ </button>
+ {{/canedit}}
+ {{#deleteUrl}}
+ <a class="btn btn-danger btn-sm" href="?do={{module}}&amp;{{deleteUrl}}{{modeid}}">
+ <span class="glyphicon glyphicon-trash"></span>
+ </a>
+ {{/deleteUrl}}
</td>
</tr>
{{/list}}