Skip to content

Commit

Permalink
Run unload events on repeat row delete.
Browse files Browse the repository at this point in the history
We run a load event when we add a new subgroup (but not when we unhide
it), so we need to run a matching unload event when we delete a subgroup
(but not when we hide it).
  • Loading branch information
Sophist-UK committed Jan 20, 2018
1 parent c24381e commit 5a6064a
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 2 deletions.
16 changes: 16 additions & 0 deletions media/com_fabrik/js/element.js
Expand Up @@ -271,6 +271,22 @@ define(['jquery'], function (jQuery) {
this.addNewEvent(action, js);
},

/**
* Run unload events if repeat group row is being deleted
*/
runUnloadEvents: function () {
var events = this.events['unload'];
if (events) {
for (var i = 0; i < events.length; i++) {
try {
eval(js[i]);
} catch (error) {
fconsole('Error in', this.element.id , 'unload event javascript:', error.name, '-', error.message, "\r\n", js[i]);
}
}
}
},

validate: function () {
},

Expand Down
21 changes: 19 additions & 2 deletions media/com_fabrik/js/fabrik.js
Expand Up @@ -111,6 +111,23 @@ define(['jquery', 'fab/loader', 'fab/requestqueue'], function (jQuery, Loader, R
return Fabrik.blocks[foundBlockId];
};

/**
* Search for an element object
*
* @param {string} el Element id
*
* @return {boolean|object} false if not found | Fabrik element object
*/
Fabrik.getElementObject = function (el) {
for (form in Fabrik.blocks) {
var elements = Fabrik.blocks[form].elements;
if (elements.hasOwnProperty(el)) {
return elements[el];
}
}
return false;
};

doc.on('click', '.fabrik_delete a, .fabrik_action a.delete, .btn.delete', function (e) {
if (e.rightClick) {
return;
Expand Down Expand Up @@ -146,7 +163,7 @@ define(['jquery', 'fab/loader', 'fab/requestqueue'], function (jQuery, Loader, R
url = a.get('href');
url += url.contains('?') ? '&tmpl=component&ajax=1' : '?tmpl=component&ajax=1';
url += '&format=partial';

// Only one edit window open at the same time.
$H(Fabrik.Windows).each(function (win, key) {
win.close();
Expand Down Expand Up @@ -232,7 +249,7 @@ define(['jquery', 'fab/loader', 'fab/requestqueue'], function (jQuery, Loader, R

var prefix = document.location.protocol === 'https:' ? 'https:' : 'http:';
var src = prefix + '//maps.googleapis.com/maps/api/js?libraries=places&callback=Fabrik.mapCb';

if (k !== false) {
src += '&key=' + k;
}
Expand Down
9 changes: 9 additions & 0 deletions media/com_fabrik/js/form.js
Expand Up @@ -1970,6 +1970,15 @@ define(['jquery', 'fab/encoder', 'fab/fabrik', 'lib/debounce/jquery.ba-throttle-
this.setRepeatButtons(group, i);
Fabrik.fireEvent('fabrik.form.group.delete.end', [this, e, i, delIndex]);
} else {

// Run unload events on each element being deleted
subGroup.getElements('.fabrikinput').each(function (dom,i,els) {
var object = Fabrik.getElementObject(els[i].id);
if (object) {
object.runUnloadEvents();
}
});

var toel = subGroup.getPrevious();
/*
var myFx = new Fx.Tween(subGroup, {
Expand Down

0 comments on commit 5a6064a

Please sign in to comment.