Files
server/opt/psa/admin/application/default/views/scripts/partials/cgroups-limit-element-handler.phtml
cutemeli 0bfc6c8425 Initial
2025-12-22 10:32:59 +00:00

71 lines
1.9 KiB
PHTML

<?php
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
$elementsIds = array_map(function ($element) {
return $this->element->getElement($element)->getId();
}, $this->children);
$parents = array_map(function ($e) {
/** @var Zend_Form_Element $parent */
$parent = $this->element->getElement($e);
$resourceElement = $parent->getDecorator('ResourceElement');
$checkbox = $resourceElement->getOption('checkboxField') ?: 'unlimited';
return [
'id' => $parent->getId() . '-' . $checkbox,
'reverse' => !is_null($rc = $resourceElement->getOption('reverseCheckbox')) && $rc,
];
}, $this->parents);
if (!count($parents)) {
return;
}
?>
<script type="text/javascript">
//<![CDATA[
(function () {
var parents = <?=Zend_Json::encode($parents)?>,
elementIds = <?=Zend_Json::encode($elementsIds)?>;
function parentStatus () {
return this.el.checked? this.reverse : !this.reverse;
}
function parentsStatusIsOn() {
var result = false;
parents.forEach(function (parent) {
if (parent.status()) {
result = true;
}
});
return result;
}
function updateElementValues () {
var status = parentsStatusIsOn();
elementIds.forEach(function (id) {
var el = document.getElementById(id);
if (el.hasOwnProperty('updateElementValueFunction')) {
el.updateElementValueFunction(null, status);
} else if (status) {
el.disabled = false;
} else {
el.disabled = true;
}
});
}
parents.forEach(function (parent) {
parent.el = document.getElementById(parent.id);
parent.status = parentStatus;
parent.el.addEventListener('click', updateElementValues);
});
updateElementValues();
})();
//]]>
</script>