diff --git a/src/wikipedia.js b/src/wikipedia.js index 5b248889..292662f7 100644 --- a/src/wikipedia.js +++ b/src/wikipedia.js @@ -71,11 +71,51 @@ function get (value, callback) { register_hook('show-details', function (data, category, dom, callback) { var ob = data.object + var found = 0 + var finished = 0 + var errs = [] + var h + var div = document.createElement('div') + + if ('wikipedia' in ob.tags) { + found++ + showWikipedia(ob.tags.wikipedia, div, done) + } + + for (var k in ob.tags) { + var m + if (m = k.match(/^(.*):wikipedia$/)) { + h = document.createElement('h4') + h.appendChild(document.createTextNode(lang('tag:' + m[1]))) + div.appendChild(h) + + found++ + showWikipedia(ob.tags[k], div, done) + } + } + + if (found) { + h = document.createElement('h3') + h.appendChild(document.createTextNode(lang('tag:wikipedia'))) + dom.appendChild(h) + + dom.appendChild(div) + } + + function done (err) { + finished++ - if (!('wikipedia' in ob.tags)) { - return + if (err) { + errs.push(err) + } + + if (found === finished) { + callback(errs.length ? errs : null) + } } +}) +function showWikipedia (tagValue, dom, callback) { var block = document.createElement('div') block.className = 'loading' dom.appendChild(block) @@ -85,11 +125,7 @@ register_hook('show-details', function (data, category, dom, callback) { l.className = 'loadingIndicator' block.appendChild(l) - var h = document.createElement('h3') - h.appendChild(document.createTextNode(lang('tag:wikipedia'))) - block.appendChild(h) - - get(ob.tags.wikipedia, function (err, text) { + get(tagValue, function (err, text) { if (!text) { block.appendChild(document.createTextNode(lang('wikipedia:no-url-parse'))) } @@ -102,4 +138,4 @@ register_hook('show-details', function (data, category, dom, callback) { callback(err) }) -}) +}