diff options
Diffstat (limited to 'web/widget/abstract/node.js')
-rw-r--r-- | web/widget/abstract/node.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/web/widget/abstract/node.js b/web/widget/abstract/node.js new file mode 100644 index 0000000..6d42345 --- /dev/null +++ b/web/widget/abstract/node.js @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2012-2014 Kaarle Ritvanen + * See LICENSE file for license details + */ + +define( + ["acf2/statusbar", "acf2/widget/abstract/inline", "jquery", "underscore"], + function(statusBar, Base, $, _) { + return Base.extend({ + init: function( + data, name, meta, level, editable, removable + ) { + return Base.init.call( + this, + data, + name, + meta, + Math.min(6, level + 1), + editable, + removable + ); + }, + + showStatus: false, + + _requestData: function(value, meta) { return this.refreshData(); }, + + showHeading: true, + + render: function(data, meta) { + if (this.showHeading) + this.el.html( + $("<h" + this.level + ">").text(meta["ui-name"]) + ); + }, + + wrap: function() { return this.el; }, + + validate: function(data) { + Base.validate.call(this, data); + + if (this.data.match(this.meta.condition)) { + var valid = data.validate(); + this.setStatus(data.status()); + statusBar.validationReady(valid); + } + + if (this.fields) + _.each(this.fields, function(field) { + field.trigger("updated"); + }); + } + }); + } +); |