summaryrefslogtreecommitdiffstats
path: root/web/widget/abstract/node.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/widget/abstract/node.js')
-rw-r--r--web/widget/abstract/node.js55
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");
+ });
+ }
+ });
+ }
+);