mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
64 lines
1.4 KiB
JavaScript
64 lines
1.4 KiB
JavaScript
|
(function($) {
|
||
|
|
||
|
$.entwine.Namespace.addMethods({
|
||
|
build_addrem_proxy: function(name) {
|
||
|
var one = this.one(name, 'func');
|
||
|
|
||
|
return function() {
|
||
|
if (this.length === 0){
|
||
|
return;
|
||
|
}
|
||
|
else if (this.length) {
|
||
|
var rv, i = this.length;
|
||
|
while (i--) rv = one(this[i], arguments);
|
||
|
return rv;
|
||
|
}
|
||
|
else {
|
||
|
return one(this, arguments);
|
||
|
}
|
||
|
};
|
||
|
},
|
||
|
|
||
|
bind_addrem_proxy: function(selector, name, func) {
|
||
|
var rulelist = this.store[name] || (this.store[name] = $.entwine.RuleList());
|
||
|
|
||
|
var rule = rulelist.addRule(selector, name); rule.func = func;
|
||
|
|
||
|
if (!this.injectee.hasOwnProperty(name)) {
|
||
|
this.injectee[name] = this.build_addrem_proxy(name);
|
||
|
this.injectee[name].isentwinemethod = true;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$.entwine.Namespace.addHandler({
|
||
|
order: 30,
|
||
|
|
||
|
bind: function(selector, k, v) {
|
||
|
if ($.isFunction(v) && (k == 'onadd' || k == 'onremove')) {
|
||
|
this.bind_addrem_proxy(selector, k, v);
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$(document).bind('EntwineElementsAdded', function(e){
|
||
|
// For every namespace
|
||
|
for (var k in $.entwine.namespaces) {
|
||
|
var namespace = $.entwine.namespaces[k];
|
||
|
if (namespace.injectee.onadd) namespace.injectee.onadd.call(e.targets);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$(document).bind('EntwineElementsRemoved', function(e){
|
||
|
for (var k in $.entwine.namespaces) {
|
||
|
var namespace = $.entwine.namespaces[k];
|
||
|
if (namespace.injectee.onremove) namespace.injectee.onremove.call(e.targets);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
})(jQuery);
|