XMPP invitation landing page, without javascript
Wrap the JS in a IIFE
| -rw-r--r-- | scripts/main.js | 150 |
1 files changed, 76 insertions, 74 deletions
diff --git a/scripts/main.js b/scripts/main.js index e59c47e..c6b831f 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -1,85 +1,87 @@ -// load i18n and perform translation -var i18n = new I18nText({path: 'lang'}); -i18n.once(I18nText.EVT_LOCALE_CHANGE, function (data) { - translate_ui(); -}); -i18n.setLocale('en'); +(function() { + // load i18n and perform translation + var i18n = new I18nText({path: 'lang'}); + i18n.once(I18nText.EVT_LOCALE_CHANGE, function (data) { + translate_ui(); + }); + i18n.setLocale('en'); -// i18n key prefix for MUC ("muc.") or 1:1 chat ("chat.") -var key_prefix; -var display_data = null; + // i18n key prefix for MUC ("muc.") or 1:1 chat ("chat.") + var key_prefix; + var display_data = null; -function show_clients(client_array) { - var list = document.getElementById('client_list'); - for (var id = 0; id < client_array.length; id++) { - var item = document.createElement('li'); - item.innerHTML = client_array[id]; - list.appendChild(item); + function show_clients(client_array) { + var list = document.getElementById('client_list'); + for (var id = 0; id < client_array.length; id++) { + var item = document.createElement('li'); + item.innerHTML = client_array[id]; + list.appendChild(item); + } } -} -function load_clients() { - url = "clients.json"; - var request = new XMLHttpRequest(); - request.open('GET', url); - request.onreadystatechange = function () { - if (request.readyState === 4) { - if (request.status == 200 || (isLocalFileRequest(url) && request.responseText.length > 0)) { - show_clients(JSON.parse(request.responseText)); + function load_clients() { + var url = "clients.json"; + var request = new XMLHttpRequest(); + request.open('GET', url); + request.onreadystatechange = function () { + if (request.readyState === 4) { + if (request.status == 200 || (isLocalFileRequest(url) && request.responseText.length > 0)) { + show_clients(JSON.parse(request.responseText)); + } } - } - }; - request.send(null); -} - -function load_hash() { - var muc = false; - key_prefix = "chat."; - var jid = window.location.search || window.location.hash; - jid = decodeURIComponent(jid.substring(jid.indexOf('#') + 1, jid.length)); - try { - base_decoded = window.atob(jid); - if (base_decoded.search('@') >= 0) - jid = base_decoded; - } catch (err) { - // ignore error, JID wasn't base64 encoded - } - if (jid.search("\\?join") >= 0) { - muc = true; - key_prefix = "muc."; + }; + request.send(null); } - // TODO: proper error checking / display / Creation of invitations - if (jid.search("@") <= 0) return {jid:"", name: "Somebody"}; + function load_hash() { + var muc = false; + key_prefix = "chat."; + var jid = window.location.search || window.location.hash; + jid = decodeURIComponent(jid.substring(jid.indexOf('#') + 1, jid.length)); + try { + base_decoded = window.atob(jid); + if (base_decoded.search('@') >= 0) + jid = base_decoded; + } catch (err) { + // ignore error, JID wasn't base64 encoded + } + if (jid.search("\\?join") >= 0) { + muc = true; + key_prefix = "muc."; + } + + // TODO: proper error checking / display / Creation of invitations + if (jid.search("@") <= 0) return {jid:"", name: "Somebody"}; - var name = jid.split("@")[0]; - name = name.charAt(0).toUpperCase() + name.slice(1); - return {jid: jid, name: name}; -} + var name = jid.split("@")[0]; + name = name.charAt(0).toUpperCase() + name.slice(1); + return {jid: jid, name: name}; + } -function translate_ui() { - // translation - document.title = i18n.text(key_prefix + 'title', display_data); - // MUC/chat specific - ['heading', 'intro', 'button'].forEach(function(id) { - document.getElementById(id).innerHTML = i18n.text(key_prefix + id, display_data); - }); - // and agnostic - ['clients', 'recommend', 'checkfulllist', 'xmppis'].forEach(function(id) { - document.getElementById(id).innerHTML = i18n.text(id, display_data); - }); -} + function translate_ui() { + // translation + document.title = i18n.text(key_prefix + 'title', display_data); + // MUC/chat specific + ['heading', 'intro', 'button'].forEach(function(id) { + document.getElementById(id).innerHTML = i18n.text(key_prefix + id, display_data); + }); + // and agnostic + ['clients', 'recommend', 'checkfulllist', 'xmppis'].forEach(function(id) { + document.getElementById(id).innerHTML = i18n.text(id, display_data); + }); + } -function rehash() { - display_data = load_hash(); - document.getElementById('button').href = "xmpp:" + display_data.jid; - document.getElementById('url_in').value = "xmpp:" + display_data.jid; - translate_ui(); -} + function rehash() { + display_data = load_hash(); + document.getElementById('button').href = "xmpp:" + display_data.jid; + document.getElementById('url_in').value = "xmpp:" + display_data.jid; + translate_ui(); + } -function load_done() { - // functionality - load_clients(); - rehash(); - window.addEventListener("hashchange", rehash, false); -} + function load_done() { + // functionality + load_clients(); + rehash(); + window.addEventListener("hashchange", rehash, false); + } +})(); |