From c06c11aeca22d8303e0744213dad1090aa7b027c Mon Sep 17 00:00:00 2001 From: Martin Zimmermann Date: Wed, 6 Nov 2013 17:39:14 +0100 Subject: [PATCH] api.js parses custom data attributes for client configuration, part of #29 All data-attributes beginning with `data-isso-` are stored in `api.config` (without leading data-isso-). Isso tries to parse the values with JSON (e.g. `-isso-foo="false"` returns false) and falls back for a simple string value. --- isso/js/app/api.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/isso/js/app/api.js b/isso/js/app/api.js index 157d36f..2328929 100644 --- a/isso/js/app/api.js +++ b/isso/js/app/api.js @@ -6,6 +6,7 @@ define(["q"], function(Q) { Q.longStackSupport = true; var salt = "Eech7co8Ohloopo9Ol6baimi", + config = {}, location = window.location.pathname; var rules = { @@ -45,6 +46,16 @@ define(["q"], function(Q) { } else if (js[i].src.match("require\\.js$")) { endpoint = js[i].dataset.main.replace(/\/js\/(embed|count)$/, ""); } + + [].forEach.call(js[i].attributes, function(attr) { + if (/^data-isso-/.test(attr.name)) { + try { + config[attr.name.substring(10)] = JSON.parse(attr.value); + } catch (ex) { + config[attr.name.substring(10)] = attr.value; + } + } + }); } if (! endpoint) { @@ -181,6 +192,7 @@ define(["q"], function(Q) { return { endpoint: endpoint, salt: salt, + config: config, remote_addr: remote_addr,