diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-02-21 16:39:57 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-02-24 13:05:49 +0200 |
commit | bfaa4eceda474cb0200a3a75ac648249219904b5 (patch) | |
tree | 8b902920498b528c8a44f84f85fb7d02fc3a1f5e /web/widget | |
parent | f6c04ff1d0395210f595e16cfc8757bb8f7ee706 (diff) | |
download | aconf-bfaa4eceda474cb0200a3a75ac648249219904b5.tar.bz2 aconf-bfaa4eceda474cb0200a3a75ac648249219904b5.tar.xz |
audio data type
Diffstat (limited to 'web/widget')
-rw-r--r-- | web/widget/abstract/base.js | 35 | ||||
-rw-r--r-- | web/widget/abstract/fields.js | 1 | ||||
-rw-r--r-- | web/widget/audio.js | 23 |
3 files changed, 42 insertions, 17 deletions
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) ? $("<audio>").attr( + {src: value.data, autoplay: true, controls: true} + ) : dom.href().text("Play").click(function() { + self.refresh(); + })); + } + }); + } +); |