From bfaa4eceda474cb0200a3a75ac648249219904b5 Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Fri, 21 Feb 2014 16:39:57 +0200 Subject: audio data type --- web/widget/abstract/base.js | 35 ++++++++++++++++++----------------- web/widget/abstract/fields.js | 1 + web/widget/audio.js | 23 +++++++++++++++++++++++ 3 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 web/widget/audio.js (limited to 'web') diff --git a/web/widget/abstract/base.js b/web/widget/abstract/base.js index df02ee3..d4ed661 100644 --- a/web/widget/abstract/base.js +++ b/web/widget/abstract/base.js @@ -24,12 +24,11 @@ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { this.level = level; var value = data.get(name); - var status = data.status(name); if (!editable || !meta.editable) { var el = this.staticRender(value, meta); if (el) { - dom.setStatus(el, status); + dom.setStatus(el, data.status(name)); return el; } } @@ -37,18 +36,6 @@ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { this.makeEl(); this.dynamic = meta.dynamic; - var self = this; - - var request; - function handleRequest(req) { - request = req; - req.done(function(value, meta) { - if (req != request) return; - self.render(value, meta); - self.setStatus(status); - }); - } - this.wrapped = this.wrap(); this.visible = true; @@ -63,10 +50,12 @@ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { this.wrapped.append(link); } - handleRequest(this.requestData(value, meta)); + this.handleResponse(this.requestData(value, meta)); + + var self = this; function validate() { - request.done(function(value) { + self.request.done(function(value) { self.validate(value); }); } @@ -78,7 +67,7 @@ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { }); this.wrapped.on("updated", function(event, field) { - if (self.dynamic) handleRequest(self.refreshData()); + if (self.dynamic) self.refresh(); if (!field || self.dynamic || (meta.condition && field in meta.condition)) @@ -104,6 +93,18 @@ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { return def; }, + handleResponse: function(request) { + this.request = request; + var self = this; + request.done(function(value, meta) { + if (request != self.request) return; + self.render(value, meta); + self.setStatus(self.data.status(self.name)); + }); + }, + + refresh: function() { this.handleResponse(this.refreshData()); }, + wrap: function() { return this.el; }, showStatus: true, diff --git a/web/widget/abstract/fields.js b/web/widget/abstract/fields.js index a2ec5e0..89b2506 100644 --- a/web/widget/abstract/fields.js +++ b/web/widget/abstract/fields.js @@ -8,6 +8,7 @@ define( "acf2/widget/abstract/node", "jquery", "underscore", + "acf2/widget/audio", "acf2/widget/checkbox", "acf2/widget/checkboxes", "acf2/widget/combobox", diff --git a/web/widget/audio.js b/web/widget/audio.js new file mode 100644 index 0000000..184fd5e --- /dev/null +++ b/web/widget/audio.js @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2012-2014 Kaarle Ritvanen + * See LICENSE file for license details + */ + +define( + ["acf2/dom", "acf2/widget/abstract/inline", "jquery", "underscore"], + function(dom, Base, $, _) { + return Base.extend({ + render: function(value, meta) { + if (!value) return; + + var self = this; + + this.el.html(_.isObject(value) ? $("