Files
server/usr/share/psa-horde/imp/js/ckeditor/imagepoll.js
2026-01-07 20:52:11 +01:00

73 lines
1.9 KiB
JavaScript

/**
* Utility object used to poll for deletion of image (attachment) data.
*
* CKEditor 3 doesn't support onchange event for content body.
* Instead, poll the attached images to detect deletions, since this may
* influence attachment limits.
*
* @author Michael Slusarz <slusarz@horde.org>
* @copyright 2014-2015 Horde LLC
* @license GPL-2 (http://www.horde.org/licenses/gpl)
*/
var IMP_Ckeditor_Imagepoll = {};
// 'related_attr' property set in IMP_Script_Package_ComposeBase
(function (ob) {
var active = [];
ob.add = function(elt)
{
if (!active.size()) {
new PeriodicalExecuter(function(pe) {
var del = [];
active.each(function(a) {
if (!a.parentNode) {
del.push(a);
}
});
if (del.size()) {
ob.remove(del);
// Array.without() doesn't support array input.
active = active.findAll(function(v) {
return !del.include(v);
});
if (!active.size()) {
pe.stop();
}
}
}, 2);
}
active.push(elt);
};
ob.remove = function(elts)
{
var ids = [];
elts.invoke('getAttribute', ob.related_attr).compact().each(function(r) {
var s = r.split(';', 2);
ids.push(s[1]);
});
if (ids.size()) {
DimpCore.doAction(
'deleteAttach',
DimpCompose.actionParams({
atc_indices: Object.toJSON(ids),
quiet: 1
}, {
callback: DimpCompose.removeAttachCallback.bind(DimpCompose)
})
);
}
};
}(IMP_Ckeditor_Imagepoll));