summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-02-21 16:39:57 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-02-24 13:05:49 +0200
commitbfaa4eceda474cb0200a3a75ac648249219904b5 (patch)
tree8b902920498b528c8a44f84f85fb7d02fc3a1f5e /web
parentf6c04ff1d0395210f595e16cfc8757bb8f7ee706 (diff)
downloadaconf-bfaa4eceda474cb0200a3a75ac648249219904b5.tar.bz2
aconf-bfaa4eceda474cb0200a3a75ac648249219904b5.tar.xz
audio data type
Diffstat (limited to 'web')
-rw-r--r--web/widget/abstract/base.js35
-rw-r--r--web/widget/abstract/fields.js1
-rw-r--r--web/widget/audio.js23
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();
+ }));
+ }
+ });
+ }
+);