Files
animal_management/views/animals/inline-edit-result.php

86 lines
2.2 KiB
PHP

<?php
use yii\helpers\Html;
/* @var string $collapseId */
/* @var array $refreshSelectors */
$payload = [
'source' => 'animal-inline-editor',
'type' => 'saved',
'collapseId' => (string)$collapseId,
'refreshSelectors' => array_values(array_map('strval', $refreshSelectors ?? [])),
];
$jsonPayload = json_encode($payload, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
?>
<div class="panel panel-success" data-animal-inline-result="saved" data-animal-inline-collapse-id="<?= Html::encode((string)$collapseId) ?>" style="margin:10px;">
<div class="panel-body" style="padding:12px;">
<?= Html::encode(Yii::t('AnimalManagementModule.base', 'Saved. Updating section...')) ?>
</div>
</div>
<?php
$this->registerJs(<<<JS
(function() {
var payload = {$jsonPayload};
function triggerChange(element) {
if (!element) {
return;
}
var event;
if (typeof Event === 'function') {
event = new Event('change', { bubbles: true });
} else {
event = document.createEvent('Event');
event.initEvent('change', true, true);
}
element.dispatchEvent(event);
}
function closeByFrameContext() {
if (!window.parent || window.parent === window) {
return;
}
var frameElement = window.frameElement;
if (!frameElement || !frameElement.parentElement) {
return;
}
var closeControl = frameElement.parentElement.querySelector('.animal-tile-inline-iframe-close[for]');
if (!closeControl) {
return;
}
var targetId = String(closeControl.getAttribute('for') || '');
if (!targetId) {
return;
}
var targetElement = window.parent.document.getElementById(targetId);
if (!targetElement) {
return;
}
if ((targetElement.type || '').toLowerCase() === 'radio') {
targetElement.checked = true;
} else {
targetElement.checked = false;
}
triggerChange(targetElement);
}
if (window.parent && window.parent !== window) {
window.parent.postMessage(payload, '*');
closeByFrameContext();
}
})();
JS
, \yii\web\View::POS_END);
?>