diff options
Diffstat (limited to 'modules-available/locations')
-rw-r--r-- | modules-available/locations/inc/locationutil.inc.php | 5 | ||||
-rw-r--r-- | modules-available/locations/pages/cleanup.inc.php | 3 | ||||
-rw-r--r-- | modules-available/locations/templates/mismatch-cleanup.html | 24 |
3 files changed, 25 insertions, 7 deletions
diff --git a/modules-available/locations/inc/locationutil.inc.php b/modules-available/locations/inc/locationutil.inc.php index 960eefa8..acdaed2f 100644 --- a/modules-available/locations/inc/locationutil.inc.php +++ b/modules-available/locations/inc/locationutil.inc.php @@ -70,12 +70,9 @@ class LocationUtil * grouped by the location the client was assigned to via roomplanner. * Otherwise, just return an assoc array with the requested locationid, name * and a list of all clients that are wrongfully assigned to that room. - * @param int $locationId - * @return array */ - public static function getMachinesWithLocationMismatch($locationId = 0, $checkPerms = false) + public static function getMachinesWithLocationMismatch(int $locationId = 0, bool $checkPerms = false): array { - $locationId = (int)$locationId; if ($checkPerms) { if ($locationId !== 0) { // Query details for specific location -- use assert and fake array diff --git a/modules-available/locations/pages/cleanup.inc.php b/modules-available/locations/pages/cleanup.inc.php index d10dbac0..a7562c50 100644 --- a/modules-available/locations/pages/cleanup.inc.php +++ b/modules-available/locations/pages/cleanup.inc.php @@ -21,6 +21,9 @@ class SubPage $list = self::loadForLocation(); if ($list === false) return true; + $list['canmove'] = array_reduce($list['clients'], function (bool $carry, array $item): bool { + return $carry || ($item['canmove'] ?? false); + }, false); Permission::addGlobalTags($list['perms'], NULL, ['subnets.edit', 'location.view']); Render::addTemplate('mismatch-cleanup', $list); return true; diff --git a/modules-available/locations/templates/mismatch-cleanup.html b/modules-available/locations/templates/mismatch-cleanup.html index a6f45d27..53a956df 100644 --- a/modules-available/locations/templates/mismatch-cleanup.html +++ b/modules-available/locations/templates/mismatch-cleanup.html @@ -32,7 +32,7 @@ <tr> <td> <div class="checkbox checkbox-inline"> - <input id="machine-{{machineuuid}}" type="checkbox" name="machines[]" value="{{machineuuid}}" {{disabled}}> + <input class="mcb {{#canmove}}cmov{{/canmove}}" id="machine-{{machineuuid}}" type="checkbox" name="machines[]" value="{{machineuuid}}" {{disabled}}> <label for="machine-{{machineuuid}}">{{hostname}}{{^hostname}}{{clientip}}{{/hostname}}</label> </div> </td> @@ -60,10 +60,28 @@ <span class="glyphicon glyphicon-repeat"></span> {{lang_resetMachines}} </button> - <button type="submit" class="btn btn-success" name="action" value="movemachines"> + {{#canmove}} + <button id="btn-move" type="submit" class="btn btn-success" name="action" value="movemachines"> <span class="glyphicon glyphicon-arrow-right"></span> {{lang_moveMachines}} </button> + {{/canmove}} </div> </form> -<div class="clearfix"></div>
\ No newline at end of file +<div class="clearfix"></div> + +<script> + document.addEventListener('DOMContentLoaded', function () { + var $btn = $('#btn-move'); + if ($btn.length === 0) + return; + var ccheck = function() { + var $e = $('input.mcb:checked'); + var nope = $e.is(':not(.cmov)'); + var yep = $e.is('.cmov'); + $btn.prop('disabled', nope || !yep); + }; + ccheck(); + $('input.mcb').change(ccheck); + }); +</script>
\ No newline at end of file |