Browse Source

Load templates in the respective plugins

JC Brand 8 years ago
parent
commit
90d1071df0

+ 0 - 4
config.js

@@ -60,7 +60,6 @@ require.config({
         "converse-ping":            "src/converse-ping",
         "converse-register":        "src/converse-register",
         "converse-rosterview":      "src/converse-rosterview",
-        "converse-templates":       "src/converse-templates",
         "converse-vcard":           "src/converse-vcard",
 
         // Off-the-record-encryption
@@ -155,13 +154,11 @@ require.config({
         "new_day":                  "src/templates/new_day",
         "occupant":                 "src/templates/occupant",
         "pending_contact":          "src/templates/pending_contact",
-        "pending_contacts":         "src/templates/pending_contacts",
         "register_panel":           "src/templates/register_panel",
         "register_tab":             "src/templates/register_tab",
         "registration_form":        "src/templates/registration_form",
         "registration_request":     "src/templates/registration_request",
         "requesting_contact":       "src/templates/requesting_contact",
-        "requesting_contacts":      "src/templates/requesting_contacts",
         "room_description":         "src/templates/room_description",
         "room_item":                "src/templates/room_item",
         "room_panel":               "src/templates/room_panel",
@@ -174,7 +171,6 @@ require.config({
         "toolbar":                  "src/templates/toolbar",
         "toolbar_otr":              "src/templates/toolbar_otr",
         "trimmed_chat":             "src/templates/trimmed_chat",
-        "vcard":                    "src/templates/vcard",
         "chatbox_minimize":         "src/templates/chatbox_minimize"
     },
 

+ 0 - 1282
dist/templates.js

@@ -1,1282 +0,0 @@
-this["templates"] = this["templates"] || {};
-
-this["templates"]["action"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<div class="chat-message ' +
-((__t = (extra_classes)) == null ? '' : __t) +
-'" data-isodate="' +
-((__t = (isodate)) == null ? '' : __t) +
-'">\n    <span class="chat-msg-author chat-msg-' +
-((__t = (sender)) == null ? '' : __t) +
-'">' +
-((__t = (time)) == null ? '' : __t) +
-' **' +
-((__t = (username)) == null ? '' : __t) +
-' </span>\n    <span class="chat-msg-content">' +
-((__t = (message)) == null ? '' : __t) +
-'</span>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["add_contact_dropdown"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<dl class="add-converse-contact dropdown">\n    <dt id="xmpp-contact-search" class="fancy-dropdown">\n        <a class="toggle-xmpp-contact-form icon-plus" href="#" title="' +
-((__t = (label_click_to_chat)) == null ? '' : __t) +
-'"> ' +
-((__t = (label_add_contact)) == null ? '' : __t) +
-'</a>\n    </dt>\n    <dd class="search-xmpp" style="display:none"><ul></ul></dd>\n</dl>\n';
-
-}
-return __p
-};
-
-this["templates"]["add_contact_form"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<li>\n    <form class="pure-form add-xmpp-contact">\n        <input type="text"\n            name="identifier"\n            class="username"\n            placeholder="' +
-((__t = (label_contact_username)) == null ? '' : __t) +
-'"/>\n        <button class="pure-button button-primary" type="submit">' +
-((__t = (label_add)) == null ? '' : __t) +
-'</button>\n    </form>\n</li>\n';
-
-}
-return __p
-};
-
-this["templates"]["change_status_message"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<form id="set-custom-xmpp-status" class="pure-form">\n<fieldset>\n    <span class="input-button-group">\n        <input type="text" class="custom-xmpp-status" ' +
-((__t = (status_message)) == null ? '' : __t) +
-' placeholder="' +
-((__t = (label_custom_status)) == null ? '' : __t) +
-'"/>\n        <input type="submit" class="pure-button button-primary" value="' +
-((__t = (label_save)) == null ? '' : __t) +
-'"/>\n    </span>\n</fieldset>\n</form>\n';
-
-}
-return __p
-};
-
-this["templates"]["chat_status"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<div class="xmpp-status">\n    <a class="choose-xmpp-status ' +
-((__t = (chat_status)) == null ? '' : __t) +
-' icon-' +
-((__t = (chat_status)) == null ? '' : __t) +
-'" data-value="' +
-((__t = (status_message)) == null ? '' : __t) +
-'" href="#" title="' +
-((__t = (desc_change_status)) == null ? '' : __t) +
-'">\n        ' +
-((__t = (status_message)) == null ? '' : __t) +
-'\n    </a>\n    <a class="change-xmpp-status-message icon-pencil" href="#" title="' +
-((__t = (desc_custom_status)) == null ? '' : __t) +
-'"></a>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["chatarea"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<div class="chat-area">\n    <div class="chat-content"></div>\n    <div class="new-msgs-indicator hidden">▼ ' +
-((__t = ( unread_msgs )) == null ? '' : __t) +
-' ▼</div>\n    <form class="sendXMPPMessage" action="" method="post">\n        ';
- if (show_toolbar) { ;
-__p += '\n            <ul class="chat-toolbar no-text-select"></ul>\n        ';
- } ;
-__p += '\n        <textarea type="text" class="chat-textarea" \n            placeholder="' +
-((__t = (label_message)) == null ? '' : __t) +
-'"/>\n    </form>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["chatbox"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<div class="flyout box-flyout">\n    <div class="dragresize dragresize-top"></div>\n    <div class="dragresize dragresize-topleft"></div>\n    <div class="dragresize dragresize-left"></div>\n    <div class="chat-head chat-head-chatbox">\n        <a class="chatbox-btn close-chatbox-button icon-close" title="' +
-((__t = (info_close)) == null ? '' : __t) +
-'"></a>\n        <div class="chat-title">\n            ';
- if (url) { ;
-__p += '\n                <a href="' +
-((__t = (url)) == null ? '' : __t) +
-'" target="_blank" rel="noopener" class="user">\n            ';
- } ;
-__p += '\n                    ' +
-((__t = ( title )) == null ? '' : __t) +
-'\n            ';
- if (url) { ;
-__p += '\n                </a>\n            ';
- } ;
-__p += '\n        </div>\n        <p class="user-custom-message"><p/>\n    </div>\n    <div class="chat-body">\n        <div class="chat-content"></div>\n        <div class="new-msgs-indicator hidden">▼ ' +
-((__t = ( unread_msgs )) == null ? '' : __t) +
-' ▼</div>\n        ';
- if (show_textarea) { ;
-__p += '\n        <form class="sendXMPPMessage" action="" method="post">\n            ';
- if (show_toolbar) { ;
-__p += '\n                <ul class="chat-toolbar no-text-select"></ul>\n            ';
- } ;
-__p += '\n        <textarea\n            type="text"\n            class="chat-textarea"\n            placeholder="' +
-((__t = (label_personal_message)) == null ? '' : __t) +
-'"/>\n        </form>\n        ';
- } ;
-__p += '\n    </div>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["chatbox_minimize"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<a class="chatbox-btn toggle-chatbox-button icon-minus" title="' +
-((__t = (info_minimize)) == null ? '' : __t) +
-'"></a>\n';
-
-}
-return __p
-};
-
-this["templates"]["chatroom"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<div class="flyout box-flyout">\n    <div class="dragresize dragresize-top"></div>\n    <div class="dragresize dragresize-topleft"></div>\n    <div class="dragresize dragresize-left"></div>\n    <div class="chat-head chat-head-chatroom">\n        <a class="chatbox-btn close-chatbox-button icon-close"></a>\n        <a class="chatbox-btn configure-chatroom-button icon-wrench" style="display:none"></a>\n        <div class="chat-title"> ' +
-((__t = ( _.escape(name) )) == null ? '' : __t) +
-' </div>\n        <p class="chatroom-topic"><p/>\n    </div>\n    <div class="chat-body chatroom-body"><span class="spinner centered"/></div>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["chatroom_form"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<div class="chatroom-form-container">\n    <form class="pure-form pure-form-stacked converse-form chatroom-form">\n        <fieldset>\n            <span class="spinner centered"/>\n        </fieldset>\n    </form>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["chatroom_nickname_form"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<div class="chatroom-form-container">\n    <form class="pure-form converse-form chatroom-form">\n        <fieldset>\n            <label>' +
-((__t = (heading)) == null ? '' : __t) +
-'</label>\n            <p class="validation-message">' +
-((__t = (validation_message)) == null ? '' : __t) +
-'</p>\n            <input type="text" required="required" name="nick" class="new-chatroom-nick" placeholder="' +
-((__t = (label_nickname)) == null ? '' : __t) +
-'"/>\n        </fieldset>\n        <fieldset>\n            <input type="submit" class="pure-button button-primary" name="join" value="' +
-((__t = (label_join)) == null ? '' : __t) +
-'"/>\n        </fieldset>\n    </form>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["chatroom_password_form"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<div class="chatroom-form-container">\n    <form class="pure-form converse-form chatroom-form">\n        <fieldset>\n            <legend>' +
-((__t = (heading)) == null ? '' : __t) +
-'</legend>\n            <label>' +
-((__t = (label_password)) == null ? '' : __t) +
-'</label>\n            <input type="password" name="password"/>\n        </fieldset>\n        <fieldset>\n            <input class="pure-button button-primary" type="submit" value="' +
-((__t = (label_submit)) == null ? '' : __t) +
-'"/>\n        </fieldset>\n    </form>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["chatroom_sidebar"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<!-- <div class="occupants"> -->\n';
- if (allow_muc_invitations) { ;
-__p += '\n<form class="pure-form room-invite">\n    <input class="invited-contact" placeholder="' +
-((__t = (label_invitation)) == null ? '' : __t) +
-'" type="text"/>\n</form>\n';
- } ;
-__p += '\n<p class="occupants-heading">' +
-((__t = (label_occupants)) == null ? '' : __t) +
-':</p>\n<ul class="occupant-list"></ul>\n<!-- </div> -->\n';
-
-}
-return __p
-};
-
-this["templates"]["chatrooms_tab"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<li><a class="s" href="#chatrooms">' +
-((__t = (label_rooms)) == null ? '' : __t) +
-'</a></li>\n';
-
-}
-return __p
-};
-
-this["templates"]["chats_panel"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<div id="minimized-chats">\n    <a id="toggle-minimized-chats" href="#"></a>\n    <div class="flyout minimized-chats-flyout"></div>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["choose_status"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<dl id="target" class="dropdown">\n    <dt id="fancy-xmpp-status-select" class="fancy-dropdown"></dt>\n    <dd><ul class="xmpp-status-menu"></ul></dd>\n</dl>\n';
-
-}
-return __p
-};
-
-this["templates"]["contacts_panel"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<form class="pure-form set-xmpp-status" action="" method="post">\n    <span id="xmpp-status-holder">\n        <select id="select-xmpp-status" style="display:none">\n            <option value="online">' +
-((__t = (label_online)) == null ? '' : __t) +
-'</option>\n            <option value="dnd">' +
-((__t = (label_busy)) == null ? '' : __t) +
-'</option>\n            <option value="away">' +
-((__t = (label_away)) == null ? '' : __t) +
-'</option>\n            ';
- if (include_offline_state)  { ;
-__p += '\n            <option value="offline">' +
-((__t = (label_offline)) == null ? '' : __t) +
-'</option>\n            ';
- } ;
-__p += '\n            ';
- if (allow_logout)  { ;
-__p += '\n            <option value="logout">' +
-((__t = (label_logout)) == null ? '' : __t) +
-'</option>\n            ';
- } ;
-__p += '\n        </select>\n    </span>\n</form>\n';
-
-}
-return __p
-};
-
-this["templates"]["contacts_tab"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<li><a class="s current" href="#users">' +
-((__t = (label_contacts)) == null ? '' : __t) +
-'</a></li>\n';
-
-}
-return __p
-};
-
-this["templates"]["controlbox"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<div class="flyout box-flyout">\n    <div class="dragresize dragresize-top"></div>\n    <div class="dragresize dragresize-topleft"></div>\n    <div class="dragresize dragresize-left"></div>\n    <div class="chat-head controlbox-head">\n        <ul id="controlbox-tabs"></ul>\n        ';
- if (!sticky_controlbox) { ;
-__p += '\n            <a class="chatbox-btn close-chatbox-button icon-close"></a>\n        ';
- } ;
-__p += '\n    </div>\n    <div class="controlbox-panes"></div>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["controlbox_toggle"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<span class="conn-feedback">' +
-((__t = (label_toggle)) == null ? '' : __t) +
-'</span>\n<span style="display: none" id="online-count">(0)</span>\n';
-
-}
-return __p
-};
-
-this["templates"]["field"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<field var="' +
-((__t = (name)) == null ? '' : __t) +
-'">';
- if (_.isArray(value)) { ;
-__p += '\n    ';
- _.each(value,function(arrayValue) { ;
-__p += '<value>' +
-((__t = (arrayValue)) == null ? '' : __t) +
-'</value>';
- }); ;
-__p += '\n';
- } else { ;
-__p += '\n    <value>' +
-((__t = (value)) == null ? '' : __t) +
-'</value>\n';
- } ;
-__p += '</field>\n';
-
-}
-return __p
-};
-
-this["templates"]["form_captcha"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (label) { ;
-__p += '\n<label>\n    ' +
-((__t = (label)) == null ? '' : __t) +
-'\n</label>\n';
- } ;
-__p += '\n<img src="data:' +
-((__t = (type)) == null ? '' : __t) +
-';base64,' +
-((__t = (data)) == null ? '' : __t) +
-'">\n<input name="' +
-((__t = (name)) == null ? '' : __t) +
-'" type="text" ';
- if (required) { ;
-__p += ' class="required" ';
- } ;
-__p += ' >\n\n\n';
-
-}
-return __p
-};
-
-this["templates"]["form_checkbox"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<label>' +
-((__t = (label)) == null ? '' : __t) +
-'</label>\n<input name="' +
-((__t = (name)) == null ? '' : __t) +
-'" type="' +
-((__t = (type)) == null ? '' : __t) +
-'" ' +
-((__t = (checked)) == null ? '' : __t) +
-'>\n';
-
-}
-return __p
-};
-
-this["templates"]["form_input"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (label) { ;
-__p += '\n<label>\n    ' +
-((__t = (label)) == null ? '' : __t) +
-'\n</label>\n';
- } ;
-__p += '\n<input name="' +
-((__t = (name)) == null ? '' : __t) +
-'" type="' +
-((__t = (type)) == null ? '' : __t) +
-'" \n    ';
- if (value) { ;
-__p += ' value="' +
-((__t = (value)) == null ? '' : __t) +
-'" ';
- } ;
-__p += '\n    ';
- if (required) { ;
-__p += ' class="required" ';
- } ;
-__p += ' >\n';
-
-}
-return __p
-};
-
-this["templates"]["form_select"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<label>' +
-((__t = (label)) == null ? '' : __t) +
-'</label>\n<select name="' +
-((__t = (name)) == null ? '' : __t) +
-'"  ';
- if (multiple) { ;
-__p += ' multiple="multiple" ';
- } ;
-__p += '>' +
-((__t = (options)) == null ? '' : __t) +
-'</select>\n';
-
-}
-return __p
-};
-
-this["templates"]["form_textarea"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<label class="label-ta">' +
-((__t = (label)) == null ? '' : __t) +
-'</label>\n<textarea name="' +
-((__t = (name)) == null ? '' : __t) +
-'">' +
-((__t = (value)) == null ? '' : __t) +
-'</textarea>\n';
-
-}
-return __p
-};
-
-this["templates"]["form_username"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (label) { ;
-__p += '\n<label>\n    ' +
-((__t = (label)) == null ? '' : __t) +
-'\n</label>\n';
- } ;
-__p += '\n<div class="input-group">\n    <input name="' +
-((__t = (name)) == null ? '' : __t) +
-'" type="' +
-((__t = (type)) == null ? '' : __t) +
-'"\n        ';
- if (value) { ;
-__p += ' value="' +
-((__t = (value)) == null ? '' : __t) +
-'" ';
- } ;
-__p += '\n        ';
- if (required) { ;
-__p += ' class="required" ';
- } ;
-__p += ' />\n    <span title="' +
-((__t = (domain)) == null ? '' : __t) +
-'">' +
-((__t = (domain)) == null ? '' : __t) +
-'</span>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["group_header"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<a href="#" class="group-toggle icon-' +
-((__t = (toggle_state)) == null ? '' : __t) +
-'" title="' +
-((__t = (desc_group_toggle)) == null ? '' : __t) +
-'">' +
-((__t = (label_group)) == null ? '' : __t) +
-'</a>\n';
-
-}
-return __p
-};
-
-this["templates"]["info"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<div class="chat-info">' +
-((__t = (message)) == null ? '' : __t) +
-'</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["login_panel"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<form class="pure-form pure-form-stacked converse-form" id="converse-login" method="post">\n    ';
- if (auto_login) { ;
-__p += '\n        <span class="spinner login-submit"/>\n    ';
- } ;
-__p += '\n    ';
- if (!auto_login) { ;
-__p += '\n        ';
- if (authentication == LOGIN || authentication == EXTERNAL) { ;
-__p += '\n            <label>' +
-((__t = (label_username)) == null ? '' : __t) +
-'</label>\n            <input type="text" name="jid" placeholder="' +
-((__t = (placeholder_username)) == null ? '' : __t) +
-'">\n            ';
- if (authentication !== EXTERNAL) { ;
-__p += '\n                <label>' +
-((__t = (label_password)) == null ? '' : __t) +
-'</label>\n                <input type="password" name="password" placeholder="' +
-((__t = (placeholder_password)) == null ? '' : __t) +
-'">\n            ';
- } ;
-__p += '\n            <input class="pure-button button-primary" type="submit" value="' +
-((__t = (label_login)) == null ? '' : __t) +
-'">\n            <span class="conn-feedback"></span>\n        ';
- } ;
-__p += '\n        ';
- if (authentication == ANONYMOUS) { ;
-__p += '\n            <input type="pure-button button-primary" class="submit login-anon" value="' +
-((__t = (label_anon_login)) == null ? '' : __t) +
-'"/>\n        ';
- } ;
-__p += '\n        ';
- if (authentication == PREBIND) { ;
-__p += '\n            <p>Disconnected.</p>\n        ';
- } ;
-__p += '\n    ';
- } ;
-__p += '\n</form>\n';
-
-}
-return __p
-};
-
-this["templates"]["login_tab"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<li><a class="current" href="#login-dialog">' +
-((__t = (label_sign_in)) == null ? '' : __t) +
-'</a></li>\n';
-
-}
-return __p
-};
-
-this["templates"]["message"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<div class="chat-message ' +
-((__t = (extra_classes)) == null ? '' : __t) +
-'" data-isodate="' +
-((__t = (isodate)) == null ? '' : __t) +
-'" data-msgid="' +
-((__t = (msgid)) == null ? '' : __t) +
-'">\n    <span class="chat-msg-author chat-msg-' +
-((__t = (sender)) == null ? '' : __t) +
-'">' +
-((__t = (time)) == null ? '' : __t) +
-' ' +
-((__t = (username)) == null ? '' : __t) +
-':&nbsp;</span>\n    <span class="chat-msg-content">' +
-((__t = (message)) == null ? '' : __t) +
-'</span>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["new_day"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<time class="chat-info chat-date" data-isodate="' +
-((__t = (isodate)) == null ? '' : __t) +
-'">' +
-((__t = (datestring)) == null ? '' : __t) +
-'</time>\n';
-
-}
-return __p
-};
-
-this["templates"]["occupant"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<li class="' +
-((__t = (role)) == null ? '' : __t) +
-' occupant" id="' +
-((__t = (id)) == null ? '' : __t) +
-'"\n    ';
- if (role === "moderator") { ;
-__p += '\n       title="' +
-((__t = (desc_moderator)) == null ? '' : __t) +
-' ' +
-((__t = (hint_occupant)) == null ? '' : __t) +
-'"\n    ';
- } ;
-__p += '\n    ';
- if (role === "occupant") { ;
-__p += '\n       title="' +
-((__t = (desc_occupant)) == null ? '' : __t) +
-' ' +
-((__t = (hint_occupant)) == null ? '' : __t) +
-'"\n    ';
- } ;
-__p += '\n    ';
- if (role === "visitor") { ;
-__p += '\n       title="' +
-((__t = (desc_visitor)) == null ? '' : __t) +
-' ' +
-((__t = (hint_occupant)) == null ? '' : __t) +
-'"\n    ';
- } ;
-__p += '>' +
-((__t = (nick)) == null ? '' : __t) +
-'</li>\n';
-
-}
-return __p
-};
-
-this["templates"]["pending_contact"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (allow_chat_pending_contacts)  { ;
-__p += '\n<a class="open-chat"href="#">\n';
- } ;
-__p += '\n<span class="pending-contact-name" title="Name: ' +
-((__t = (fullname)) == null ? '' : __t) +
-'\nJID: ' +
-((__t = (jid)) == null ? '' : __t) +
-'">' +
-((__t = (fullname)) == null ? '' : __t) +
-'</span> \n';
- if (allow_chat_pending_contacts)  { ;
-__p += '\n</a>\n';
- } ;
-__p += '\n<a class="remove-xmpp-contact icon-remove" title="' +
-((__t = (desc_remove)) == null ? '' : __t) +
-'" href="#"></a>\n';
-
-}
-return __p
-};
-
-this["templates"]["pending_contacts"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<dt class="roster-group" id="pending-xmpp-contacts"><a href="#" class="group-toggle icon-' +
-((__t = (toggle_state)) == null ? '' : __t) +
-'" title="' +
-((__t = (desc_group_toggle)) == null ? '' : __t) +
-'">' +
-((__t = (label_pending_contacts)) == null ? '' : __t) +
-'</a></dt>\n';
-
-}
-return __p
-};
-
-this["templates"]["register_panel"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<form id="converse-register" class="pure-form converse-form">\n    <span class="reg-feedback"></span>\n    <label>' +
-((__t = (label_domain)) == null ? '' : __t) +
-'</label>\n    <input type="text" name="domain" placeholder="' +
-((__t = (domain_placeholder)) == null ? '' : __t) +
-'">\n    <p class="form-help">' +
-((__t = (help_providers)) == null ? '' : __t) +
-' <a href="' +
-((__t = (href_providers)) == null ? '' : __t) +
-'" class="url" target="_blank" rel="noopener">' +
-((__t = (help_providers_link)) == null ? '' : __t) +
-'</a>.</p>\n    <input class="pure-button button-primary" type="submit" value="' +
-((__t = (label_register)) == null ? '' : __t) +
-'">\n</form>\n';
-
-}
-return __p
-};
-
-this["templates"]["register_tab"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<li><a class="s" href="#register">' +
-((__t = (label_register)) == null ? '' : __t) +
-'</a></li>\n';
-
-}
-return __p
-};
-
-this["templates"]["registration_form"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<p class="provider-title">' +
-((__t = (domain)) == null ? '' : __t) +
-'</p>\n<a href=\'https://xmpp.net/result.php?domain=' +
-((__t = (domain)) == null ? '' : __t) +
-'&amp;type=client\'>\n    <img class="provider-score" src=\'https://xmpp.net/badge.php?domain=' +
-((__t = (domain)) == null ? '' : __t) +
-'\' alt=\'xmpp.net score\' />\n</a>\n<p class="title">' +
-((__t = (title)) == null ? '' : __t) +
-'</p>\n<p class="instructions">' +
-((__t = (instructions)) == null ? '' : __t) +
-'</p>\n';
-
-}
-return __p
-};
-
-this["templates"]["registration_request"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<span class="spinner login-submit"/>\n<p class="info">' +
-((__t = (info_message)) == null ? '' : __t) +
-'</p>\n<button class="pure-button button-cancel hor_centered">' +
-((__t = (cancel)) == null ? '' : __t) +
-'</button>\n';
-
-}
-return __p
-};
-
-this["templates"]["requesting_contact"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (allow_chat_pending_contacts)  { ;
-__p += '\n<a class="open-chat"href="#">\n';
- } ;
-__p += '\n<span class="req-contact-name" title="Name: ' +
-((__t = (fullname)) == null ? '' : __t) +
-'\nJID: ' +
-((__t = (jid)) == null ? '' : __t) +
-'">' +
-((__t = (fullname)) == null ? '' : __t) +
-'</span>\n';
- if (allow_chat_pending_contacts)  { ;
-__p += '\n</a>\n';
- } ;
-__p += '\n<span class="request-actions">\n    <a class="accept-xmpp-request icon-checkmark" title="' +
-((__t = (desc_accept)) == null ? '' : __t) +
-'" href="#"></a>\n    <a class="decline-xmpp-request icon-close" title="' +
-((__t = (desc_decline)) == null ? '' : __t) +
-'" href="#"></a>\n</span>\n';
-
-}
-return __p
-};
-
-this["templates"]["requesting_contacts"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<dt class="roster-group" id="xmpp-contact-requests"><a href="#" class="group-toggle icon-' +
-((__t = (toggle_state)) == null ? '' : __t) +
-'" title="' +
-((__t = (desc_group_toggle)) == null ? '' : __t) +
-'">' +
-((__t = (label_contact_requests)) == null ? '' : __t) +
-'</a></dt>\n';
-
-}
-return __p
-};
-
-this["templates"]["room_description"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<!-- FIXME: check markup in mockup -->\n<div class="room-info">\n<p class="room-info"><strong>' +
-((__t = (label_desc)) == null ? '' : __t) +
-'</strong> ' +
-((__t = (desc)) == null ? '' : __t) +
-'</p>\n<p class="room-info"><strong>' +
-((__t = (label_occ)) == null ? '' : __t) +
-'</strong> ' +
-((__t = (occ)) == null ? '' : __t) +
-'</p>\n<p class="room-info"><strong>' +
-((__t = (label_features)) == null ? '' : __t) +
-'</strong>\n    <ul>\n        ';
- if (passwordprotected) { ;
-__p += '\n        <li class="room-info locked">' +
-((__t = (label_requires_auth)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n        ';
- if (hidden) { ;
-__p += '\n        <li class="room-info">' +
-((__t = (label_hidden)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n        ';
- if (membersonly) { ;
-__p += '\n        <li class="room-info">' +
-((__t = (label_requires_invite)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n        ';
- if (moderated) { ;
-__p += '\n        <li class="room-info">' +
-((__t = (label_moderated)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n        ';
- if (nonanonymous) { ;
-__p += '\n        <li class="room-info">' +
-((__t = (label_non_anon)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n        ';
- if (open) { ;
-__p += '\n        <li class="room-info">' +
-((__t = (label_open_room)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n        ';
- if (persistent) { ;
-__p += '\n        <li class="room-info">' +
-((__t = (label_permanent_room)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n        ';
- if (publicroom) { ;
-__p += '\n        <li class="room-info">' +
-((__t = (label_public)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n        ';
- if (semianonymous) { ;
-__p += '\n        <li class="room-info">' +
-((__t = (label_semi_anon)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n        ';
- if (temporary) { ;
-__p += '\n        <li class="room-info">' +
-((__t = (label_temp_room)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n        ';
- if (unmoderated) { ;
-__p += '\n        <li class="room-info">' +
-((__t = (label_unmoderated)) == null ? '' : __t) +
-'</li>\n        ';
- } ;
-__p += '\n    </ul>\n</p>\n</div>\n';
-
-}
-return __p
-};
-
-this["templates"]["room_item"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<dd class="available-chatroom">\n<a class="open-room" data-room-jid="' +
-((__t = (jid)) == null ? '' : __t) +
-'"\n   title="' +
-((__t = (open_title)) == null ? '' : __t) +
-'" href="#">' +
-((__t = (_.escape(name))) == null ? '' : __t) +
-'</a>\n<a class="room-info icon-room-info" data-room-jid="' +
-((__t = (jid)) == null ? '' : __t) +
-'"\n   title="' +
-((__t = (info_title)) == null ? '' : __t) +
-'" href="#">&nbsp;</a>\n</dd>\n';
-
-}
-return __p
-};
-
-this["templates"]["room_panel"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<form class="pure-form pure-form-stacked converse-form add-chatroom" action="" method="post">\n    <fieldset>\n        <label>' +
-((__t = (label_room_name)) == null ? '' : __t) +
-'</label>\n        <input type="text" name="chatroom" class="new-chatroom-name" placeholder="' +
-((__t = (label_room_name)) == null ? '' : __t) +
-'"/>\n        ';
- if (server_input_type != 'hidden') { ;
-__p += '\n            <label' +
-((__t = (server_label_global_attr)) == null ? '' : __t) +
-'>' +
-((__t = (label_server)) == null ? '' : __t) +
-'</label>\n        ';
- } ;
-__p += '\n        <input type="' +
-((__t = (server_input_type)) == null ? '' : __t) +
-'" name="server" class="new-chatroom-server" placeholder="' +
-((__t = (label_server)) == null ? '' : __t) +
-'"/>\n        <input type="submit" class="pure-button button-primary" name="join" value="' +
-((__t = (label_join)) == null ? '' : __t) +
-'"/>\n        <input type="button" class="pure-button button-secondary" name="show" id="show-rooms" value="' +
-((__t = (label_show_rooms)) == null ? '' : __t) +
-'"/>\n    </fieldset>\n</form>\n<dl id="available-chatrooms"></dl>\n';
-
-}
-return __p
-};
-
-this["templates"]["roster"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<form class="pure-form roster-filter-group input-button-group">\n    <input value="' +
-((__t = (filter_text)) == null ? '' : __t) +
-'" class="roster-filter"\n           placeholder="' +
-((__t = (placeholder)) == null ? '' : __t) +
-'"\n           ';
- if (filter_type === 'state') { ;
-__p += '  style="display: none" ';
- } ;
-__p += ' >\n    <select class="state-type" ';
- if (filter_type !== 'state') { ;
-__p += '  style="display: none" ';
- } ;
-__p += ' >\n        <option value="">' +
-((__t = (label_any)) == null ? '' : __t) +
-'</option>\n        <option ';
- if (chat_state === 'online') { ;
-__p += ' selected="selected" ';
- } ;
-__p += '\n            value="online">' +
-((__t = (label_online)) == null ? '' : __t) +
-'</option>\n        <option ';
- if (chat_state === 'chat') { ;
-__p += ' selected="selected" ';
- } ;
-__p += '\n            value="chat">' +
-((__t = (label_chatty)) == null ? '' : __t) +
-'</option>\n        <option ';
- if (chat_state === 'dnd') { ;
-__p += ' selected="selected" ';
- } ;
-__p += '\n            value="dnd">' +
-((__t = (label_busy)) == null ? '' : __t) +
-'</option>\n        <option ';
- if (chat_state === 'away') { ;
-__p += ' selected="selected" ';
- } ;
-__p += '\n            value="away">' +
-((__t = (label_away)) == null ? '' : __t) +
-'</option>\n        <option ';
- if (chat_state === 'xa') { ;
-__p += ' selected="selected" ';
- } ;
-__p += '\n            value="xa">' +
-((__t = (label_xa)) == null ? '' : __t) +
-'</option>\n        <option ';
- if (chat_state === 'offline') { ;
-__p += ' selected="selected" ';
- } ;
-__p += '\n            value="offline">' +
-((__t = (label_offline)) == null ? '' : __t) +
-'</option>\n    </select>\n    <select class="filter-type">\n        <option ';
- if (filter_type === 'contacts') { ;
-__p += ' selected="selected" ';
- } ;
-__p += '\n                value="contacts">' +
-((__t = (label_contacts)) == null ? '' : __t) +
-'</option>\n        <option ';
- if (filter_type === 'groups') { ;
-__p += ' selected="selected" ';
- } ;
-__p += '\n                value="groups">' +
-((__t = (label_groups)) == null ? '' : __t) +
-'</option>\n        <option ';
- if (filter_type === 'state') { ;
-__p += ' selected="selected" ';
- } ;
-__p += '\n                value="state">' +
-((__t = (label_state)) == null ? '' : __t) +
-'</option>\n    </select>\n</form>\n';
-
-}
-return __p
-};
-
-this["templates"]["roster_item"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<a class="open-chat" title="' +
-((__t = (title_fullname)) == null ? '' : __t) +
-': ' +
-((__t = (fullname)) == null ? '' : __t) +
-'\nJID: ' +
-((__t = (jid)) == null ? '' : __t) +
-'\n' +
-((__t = (desc_chat)) == null ? '' : __t) +
-'" href="#"><span class="icon-' +
-((__t = (chat_status)) == null ? '' : __t) +
-'" title="' +
-((__t = (desc_status)) == null ? '' : __t) +
-'"></span>' +
-((__t = (fullname)) == null ? '' : __t) +
-'</a>\n';
- if (allow_contact_removal) { ;
-__p += '\n<a class="remove-xmpp-contact icon-remove" title="' +
-((__t = (desc_remove)) == null ? '' : __t) +
-'" href="#"></a>\n';
- } ;
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["search_contact"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<li>\n    <form class="search-xmpp-contact">\n        <input type="text"\n            name="identifier"\n            class="username"\n            placeholder="' +
-((__t = (label_contact_name)) == null ? '' : __t) +
-'"/>\n        <button type="submit">' +
-((__t = (label_search)) == null ? '' : __t) +
-'</button>\n    </form>\n</li>\n';
-
-}
-return __p
-};
-
-this["templates"]["select_option"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<option value="' +
-((__t = (value)) == null ? '' : __t) +
-'" ';
- if (selected) { ;
-__p += ' selected="selected" ';
- } ;
-__p += ' >' +
-((__t = (label)) == null ? '' : __t) +
-'</option>\n';
-
-}
-return __p
-};
-
-this["templates"]["status_option"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<li>\n    <a href="#" class="' +
-((__t = ( value )) == null ? '' : __t) +
-'" data-value="' +
-((__t = ( value )) == null ? '' : __t) +
-'">\n        <span class="icon-' +
-((__t = ( value )) == null ? '' : __t) +
-'"></span>\n        ' +
-((__t = ( text )) == null ? '' : __t) +
-'\n    </a>\n</li>\n';
-
-}
-return __p
-};
-
-this["templates"]["toggle_chats"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p +=
-((__t = (Minimized)) == null ? '' : __t) +
-' <span id="minimized-count">(' +
-((__t = (num_minimized)) == null ? '' : __t) +
-')</span>\n<span class="unread-message-count"\n    ';
- if (!num_unread) { ;
-__p += ' style="display: none" ';
- } ;
-__p += '\n    href="#">' +
-((__t = (num_unread)) == null ? '' : __t) +
-'</span>\n';
-
-}
-return __p
-};
-
-this["templates"]["toolbar"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (show_emoticons)  { ;
-__p += '\n    <li class="toggle-smiley icon-happy" title="' +
-((__t = (label_insert_smiley)) == null ? '' : __t) +
-'">\n        <ul>\n            <li><a class="icon-smiley" href="#" data-emoticon=":)"></a></li>\n            <li><a class="icon-wink" href="#" data-emoticon=";)"></a></li>\n            <li><a class="icon-grin" href="#" data-emoticon=":D"></a></li>\n            <li><a class="icon-tongue" href="#" data-emoticon=":P"></a></li>\n            <li><a class="icon-cool" href="#" data-emoticon="8)"></a></li>\n            <li><a class="icon-evil" href="#" data-emoticon=">:)"></a></li>\n            <li><a class="icon-confused" href="#" data-emoticon=":S"></a></li>\n            <li><a class="icon-wondering" href="#" data-emoticon=":\\"></a></li>\n            <li><a class="icon-angry" href="#" data-emoticon=">:("></a></li>\n            <li><a class="icon-sad" href="#" data-emoticon=":("></a></li>\n            <li><a class="icon-shocked" href="#" data-emoticon=":O"></a></li>\n            <li><a class="icon-thumbs-up" href="#" data-emoticon="(^.^)b"></a></li>\n            <li><a class="icon-heart" href="#" data-emoticon="<3"></a></li>\n        </ul>\n    </li>\n';
- } ;
-__p += '\n';
- if (show_call_button)  { ;
-__p += '\n<li class="toggle-call"><a class="icon-phone" title="' +
-((__t = (label_start_call)) == null ? '' : __t) +
-'"></a></li>\n';
- } ;
-__p += '\n';
- if (show_occupants_toggle)  { ;
-__p += '\n<li class="toggle-occupants"><a class="icon-hide-users" title="' +
-((__t = (label_hide_occupants)) == null ? '' : __t) +
-'"></a></li>\n';
- } ;
-__p += '\n';
- if (show_clear_button)  { ;
-__p += '\n<li class="toggle-clear"><a class="icon-remove" title="' +
-((__t = (label_clear)) == null ? '' : __t) +
-'"></a></li>\n';
- } ;
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["toolbar_otr"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (allow_otr)  { ;
-__p += '\n    <li class="toggle-otr ' +
-((__t = (otr_status_class)) == null ? '' : __t) +
-'" title="' +
-((__t = (otr_tooltip)) == null ? '' : __t) +
-'">\n        <span class="chat-toolbar-text">' +
-((__t = (otr_translated_status)) == null ? '' : __t) +
-'</span>\n        ';
- if (otr_status == UNENCRYPTED) { ;
-__p += '\n            <span class="icon-unlocked"></span>\n        ';
- } ;
-__p += '\n        ';
- if (otr_status == UNVERIFIED) { ;
-__p += '\n            <span class="icon-lock"></span>\n        ';
- } ;
-__p += '\n        ';
- if (otr_status == VERIFIED) { ;
-__p += '\n            <span class="icon-lock"></span>\n        ';
- } ;
-__p += '\n        ';
- if (otr_status == FINISHED) { ;
-__p += '\n            <span class="icon-unlocked"></span>\n        ';
- } ;
-__p += '\n        <ul>\n            ';
- if (otr_status == UNENCRYPTED) { ;
-__p += '\n               <li><a class="start-otr" href="#">' +
-((__t = (label_start_encrypted_conversation)) == null ? '' : __t) +
-'</a></li>\n            ';
- } ;
-__p += '\n            ';
- if (otr_status != UNENCRYPTED) { ;
-__p += '\n               <li><a class="start-otr" href="#">' +
-((__t = (label_refresh_encrypted_conversation)) == null ? '' : __t) +
-'</a></li>\n               <li><a class="end-otr" href="#">' +
-((__t = (label_end_encrypted_conversation)) == null ? '' : __t) +
-'</a></li>\n               <li><a class="auth-otr" data-scheme="smp" href="#">' +
-((__t = (label_verify_with_smp)) == null ? '' : __t) +
-'</a></li>\n            ';
- } ;
-__p += '\n            ';
- if (otr_status == UNVERIFIED) { ;
-__p += '\n               <li><a class="auth-otr" data-scheme="fingerprint" href="#">' +
-((__t = (label_verify_with_fingerprints)) == null ? '' : __t) +
-'</a></li>\n            ';
- } ;
-__p += '\n            <li><a href="http://www.cypherpunks.ca/otr/help/3.2.0/levels.php" target="_blank" rel="noopener">' +
-((__t = (label_whats_this)) == null ? '' : __t) +
-'</a></li>\n        </ul>\n    </li>\n';
- } ;
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["trimmed_chat"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '<a class="chatbox-btn close-chatbox-button icon-close"></a>\n<a class="chat-head-message-count" \n    ';
- if (!num_unread) { ;
-__p += ' style="display: none" ';
- } ;
-__p += '\n    href="#">' +
-((__t = (num_unread)) == null ? '' : __t) +
-'</a>\n<a href="#" class="restore-chat" title="' +
-((__t = (tooltip)) == null ? '' : __t) +
-'">\n    ' +
-((__t = ( title )) == null ? '' : __t) +
-'\n</a>\n';
-
-}
-return __p
-};
-
-this["templates"]["vcard"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '<form class="pure-form converse-form vcard-info">\n    <fieldset>\n        <legend>The VCard info gets rendered here</legend>\n        <label>Full name:</label>\n        ' +
-((__t = (fullname)) == null ? '' : __t) +
-'\n        <label>URL:</label>\n        ' +
-((__t = (url)) == null ? '' : __t) +
-'\n    </fieldset>\n    <fieldset>\n        <input type="button" class="pure-button button-cancel" value="' +
-((__t = (label_return)) == null ? '' : __t) +
-'"/>\n    </fieldset>\n</form>\n';
-
-}
-return __p
-};

+ 1 - 0
docs/CHANGES.md

@@ -5,6 +5,7 @@
   listeners with `converse.listen.on` and `converse.listen.once`. [jcbrand]
 - New event ['rosterContactsFetched'](https://conversejs.org/docs/html/development.html#rosterContactsFetched) [jcbrand]
 - New event ['rosterGroupsFetched'](https://conversejs.org/docs/html/development.html#rosterGroupsFetched) [jcbrand]
+- HTML templates are now loaded in the respective modules/plugins. [jcbrand]
 
 ## 2.0.0 (2016-09-16)
 - #656 Online users count not shown initially [amanzur]

+ 19 - 16
docs/source/builds.rst

@@ -23,38 +23,41 @@ Creating builds
 Creating builds and distribution files
 ======================================
 
-We  use `require.js <http://requirejs.org>`_ to keep track of *Converse.js* and
-its dependencies and to to bundle them together in a single file fit for
-deployment to a production site.
+Converse.js uses `AMD (Asynchronous Modules Definition) <http://requirejs.org/docs/whyamd.html#amd>`_
+to define modules and their dependencies.
 
-To create the distributable bundles, simply run::
+Dependencies can then be loaded on-the-fly with `require.js <http://requirejs.org>`_.
+This is very useful during development, but when it comes to
+deployement, it's usually desired to create a single, minified distribution build.
+
+For this, the `r.js optimizer <http://requirejs.org/docs/optimization.html>`_
+is used together with `almond.js <https://github.com/requirejs/almond>`_, which
+is a minimal AMD API implementation that replaces require.js in builds (in
+order to keep the build smaller).
+
+To create the distribution build, simply run::
 
     make dist
 
 This command does the following:
 
-* It creates different Javascript bundles of Converse.js.
-  The individual javascript files will be bundled and minified with `require.js`_'s
-  optimization tool, using `almond <https://github.com/jrburke/almond>`_.
-  You can `read more about require.js's optimizer here <http://requirejs.org/docs/optimization.html>`_.
-
-* It bundles the HTML templates in ``./src/templates/`` into a single file called ``templates.js``.
-  This file can then be included via the ``<script>`` tag. See for example the ``non_amd.html`` example page.
+* It creates different builds of Converse.js in the ``./dist/`` directory.
 
 * It bundles all the translation files in ``./locale/`` into a single file ``locales.js``.
   This file can then be included via the ``<script>`` tag. See for example the ``non_amd.html`` example page.
 
 * Also, the CSS files in the ``./css`` directory will be minified.
 
-The built Javasript bundles are contained in the ``./dist`` directory:
+The Javascript build files are contained in the ``./dist`` directory:
 
 .. code-block:: bash
 
     jc@conversejs:~/converse.js (master)$ ls dist/
-    converse.js               converse-no-dependencies.js      
-    converse.min.js           converse-no-dependencies.min.js  
-    converse.nojquery.js      locales.js
-    converse.nojquery.min.js  templates.js
+    converse-mobile.js               converse.min.js
+    converse-mobile.min.js           converse.nojquery.js
+    converse-no-dependencies.js      converse.nojquery.min.js
+    converse-no-dependencies.min.js  locales.js
+    converse.js
 
 .. _`minification`:
 

+ 20 - 20
non_amd.html

@@ -14,31 +14,31 @@
     <link type="text/css" rel="stylesheet" media="screen" href="css/converse.css" />
 
     <!-- BEGIN JQUERY -->
-    <script type="text/javascript" src="components/jquery/dist/jquery.js"></script>
-    <script type="text/javascript" src="components/jquery.browser/dist/jquery.browser.js"></script>
+    <script type="text/javascript" src="node_modules/jquery/dist/jquery.js"></script>
+    <script type="text/javascript" src="node_modules/jquery.browser/dist/jquery.browser.js"></script>
     <script type="text/javascript" src="components/typeahead.js/index.js"></script>
     <!-- END JQUERY -->
 
     <!-- BEGIN OTR: Off-the-record encryption stuff. Can be omitted if OTR is not used. -->
-    <script type="text/javascript" src="components/otr/build/dep/salsa20.js"></script>
+    <script type="text/javascript" src="node_modules/otr/build/dep/salsa20.js"></script>
     <script type="text/javascript" src="src/bigint.js"></script>
-    <script type="text/javascript" src="components/otr/vendor/cryptojs/core.js"></script>
-    <script type="text/javascript" src="components/otr/vendor/cryptojs/enc-base64.js"></script>
+    <script type="text/javascript" src="node_modules/otr/vendor/cryptojs/core.js"></script>
+    <script type="text/javascript" src="node_modules/otr/vendor/cryptojs/enc-base64.js"></script>
     <script type="text/javascript" src="components/crypto-js-evanvosberg/src/md5.js"></script>
     <script type="text/javascript" src="components/crypto-js-evanvosberg/src/evpkdf.js"></script>
-    <script type="text/javascript" src="components/otr/vendor/cryptojs/cipher-core.js"></script>
-    <script type="text/javascript" src="components/otr/vendor/cryptojs/aes.js"></script>
-    <script type="text/javascript" src="components/otr/vendor/cryptojs/sha1.js"></script>
-    <script type="text/javascript" src="components/otr/vendor/cryptojs/sha256.js"></script>
-    <script type="text/javascript" src="components/otr/vendor/cryptojs/hmac.js"></script>
-    <script type="text/javascript" src="components/otr/vendor/cryptojs/pad-nopadding.js"></script>
-    <script type="text/javascript" src="components/otr/vendor/cryptojs/mode-ctr.js"></script>
-    <script type="text/javascript" src="components/otr/build/dep/eventemitter.js"></script>
+    <script type="text/javascript" src="node_modules/otr/vendor/cryptojs/cipher-core.js"></script>
+    <script type="text/javascript" src="node_modules/otr/vendor/cryptojs/aes.js"></script>
+    <script type="text/javascript" src="node_modules/otr/vendor/cryptojs/sha1.js"></script>
+    <script type="text/javascript" src="node_modules/otr/vendor/cryptojs/sha256.js"></script>
+    <script type="text/javascript" src="node_modules/otr/vendor/cryptojs/hmac.js"></script>
+    <script type="text/javascript" src="node_modules/otr/vendor/cryptojs/pad-nopadding.js"></script>
+    <script type="text/javascript" src="node_modules/otr/vendor/cryptojs/mode-ctr.js"></script>
+    <script type="text/javascript" src="node_modules/otr/build/dep/eventemitter.js"></script>
     <script type="text/javascript" src="src/otr.js"></script>
     <!-- END OTR -->
 
     <!-- BEGIN STROPHE -->
-    <script type="text/javascript" src="components/strophejs/strophe.js"></script>
+    <script type="text/javascript" src="node_modules/strophe.js/strophe.js"></script>
     <script type="text/javascript" src="components/strophejs-plugins/vcard/strophe.vcard.js"></script>
     <script type="text/javascript" src="components/strophejs-plugins/disco/strophe.disco.js"></script>
     <script type="text/javascript" src="components/strophejs-plugins/rsm/strophe.rsm.js"></script>
@@ -46,10 +46,10 @@
     <!-- END STROPHE -->
 
     <!-- BEGIN BACKBONE -->
-    <script type="text/javascript" src="components/underscore/underscore.js"></script>
-    <script type="text/javascript" src="components/backbone//backbone.js"></script>
-    <script type="text/javascript" src="components/backbone.browserStorage/backbone.browserStorage.js"></script>
-    <script type="text/javascript" src="components/backbone.overview/backbone.overview.js"></script>
+    <script type="text/javascript" src="node_modules/underscore/underscore.js"></script>
+    <script type="text/javascript" src="node_modules/backbone//backbone.js"></script>
+    <script type="text/javascript" src="node_modules/backbone.browserStorage/backbone.browserStorage.js"></script>
+    <script type="text/javascript" src="node_modules/backbone.overview/backbone.overview.js"></script>
     <!-- END BACKBONE -->
 
     <!-- BEGIN I18N -->
@@ -59,11 +59,11 @@
         src/locales.js to remove those you don't need, and then run `make
         build` to generates a new dist/locales.js file.
     -->
-    <script type="text/javascript" src="components/jed/jed.js"></script>
+    <script type="text/javascript" src="node_modules/jed/jed.js"></script>
     <script type="text/javascript" src="dist/locales.js"></script>
     <!-- END I18N -->
 
-    <script type="text/javascript" src="components/momentjs/min/moment-with-locales.js"></script>
+    <script type="text/javascript" src="node_modules/moment/min/moment-with-locales.js"></script>
     <script type="text/javascript" src="dist/converse-no-dependencies.js"></script>
 </head>
 <body id="page-top" data-spy="scroll" data-target=".navbar-custom">

+ 24 - 2
src/converse-chatview.js

@@ -7,9 +7,31 @@
 /*global Backbone, define */
 
 (function (root, factory) {
-    define("converse-chatview", ["converse-core", "converse-api"], factory);
-}(this, function (converse, converse_api) {
+    define("converse-chatview", [
+            "converse-core",
+            "converse-api",
+            "tpl!chatbox",
+            "tpl!new_day",
+            "tpl!action",
+            "tpl!message",
+            "tpl!toolbar"
+    ], factory);
+}(this, function (
+            converse,
+            converse_api,
+            tpl_chatbox,
+            tpl_new_day,
+            tpl_action,
+            tpl_message,
+            tpl_toolbar
+    ) {
     "use strict";
+    converse.templates.chatbox = tpl_chatbox;
+    converse.templates.new_day = tpl_new_day;
+    converse.templates.action = tpl_action;
+    converse.templates.message = tpl_message;
+    converse.templates.toolbar = tpl_toolbar;
+
     var $ = converse_api.env.jQuery,
         utils = converse_api.env.utils,
         Strophe = converse_api.env.Strophe,

+ 46 - 4
src/converse-controlbox.js

@@ -10,12 +10,54 @@
     define("converse-controlbox", [
             "converse-core",
             "converse-api",
-            // TODO: The next two dependencies can be made optional
-            "converse-rosterview",
-            "converse-chatview"
+            "tpl!add_contact_dropdown",
+            "tpl!add_contact_form",
+            "tpl!change_status_message",
+            "tpl!chat_status",
+            "tpl!choose_status",
+            "tpl!contacts_panel",
+            "tpl!contacts_tab",
+            "tpl!controlbox",
+            "tpl!controlbox_toggle",
+            "tpl!login_panel",
+            "tpl!login_tab",
+            "tpl!search_contact",
+            "tpl!status_option",
+            "converse-chatview",
+            "converse-rosterview"
     ], factory);
-}(this, function (converse, converse_api) {
+}(this, function (
+            converse,
+            converse_api,
+            tpl_add_contact_dropdown,
+            tpl_add_contact_form,
+            tpl_change_status_message,
+            tpl_chat_status,
+            tpl_choose_status,
+            tpl_contacts_panel,
+            tpl_contacts_tab,
+            tpl_controlbox,
+            tpl_controlbox_toggle,
+            tpl_login_panel,
+            tpl_login_tab,
+            tpl_search_contact,
+            tpl_status_option
+        ) {
     "use strict";
+    converse.templates.add_contact_dropdown = tpl_add_contact_dropdown;
+    converse.templates.add_contact_form = tpl_add_contact_form;
+    converse.templates.change_status_message = tpl_change_status_message;
+    converse.templates.chat_status = tpl_chat_status;
+    converse.templates.choose_status = tpl_choose_status;
+    converse.templates.contacts_panel = tpl_contacts_panel;
+    converse.templates.contacts_tab = tpl_contacts_tab;
+    converse.templates.controlbox = tpl_controlbox;
+    converse.templates.controlbox_toggle = tpl_controlbox_toggle;
+    converse.templates.login_panel = tpl_login_panel;
+    converse.templates.login_tab = tpl_login_tab;
+    converse.templates.search_contact = tpl_search_contact;
+    converse.templates.status_option = tpl_status_option;
+
     // Strophe methods for building stanzas
     var Strophe = converse_api.env.Strophe,
         utils = converse_api.env.utils;

+ 6 - 3
src/converse-core.js

@@ -22,13 +22,16 @@
         "utils",
         "moment_with_locales",
         "strophe",
-        "converse-templates",
         "pluggable",
+        "tpl!chats_panel",
         "strophe.disco",
         "backbone.browserStorage",
         "backbone.overview",
     ], factory);
-}(this, function ($, _, dummy, utils, moment, Strophe, templates, pluggable) {
+}(this, function (
+        $, _, dummy, utils, moment,
+        Strophe, pluggable, tpl_chats_panel
+    ) {
     /*
      * Cannot use this due to Safari bug.
      * See https://github.com/jcbrand/converse.js/issues/196
@@ -59,7 +62,7 @@
     var event_context = {};
 
     var converse = {
-        templates: templates,
+        templates: {'chats_panel': tpl_chats_panel},
 
         emit: function (evt, data) {
             $(event_context).trigger(evt, data);

+ 14 - 1
src/converse-minimize.js

@@ -10,12 +10,25 @@
     define("converse-minimize", [
             "converse-core",
             "converse-api",
+            "tpl!chatbox_minimize",
+            "tpl!toggle_chats",
+            "tpl!trimmed_chat",
             "converse-controlbox",
             "converse-chatview",
             "converse-muc"
     ], factory);
-}(this, function (converse, converse_api) {
+}(this, function (
+        converse,
+        converse_api,
+        tpl_chatbox_minimize,
+        tpl_toggle_chats,
+        tpl_trimmed_chat
+    ) {
     "use strict";
+    converse.templates.chatbox_minimize = tpl_chatbox_minimize;
+    converse.templates.toggle_chats = tpl_toggle_chats;
+    converse.templates.trimmed_chat = tpl_trimmed_chat;
+
     var $ = converse_api.env.jQuery,
         _ = converse_api.env._,
         b64_sha1 = converse_api.env.b64_sha1,

+ 41 - 1
src/converse-muc.js

@@ -13,11 +13,51 @@
     define("converse-muc", [
             "converse-core",
             "converse-api",
+            "tpl!chatarea",
+            "tpl!chatroom",
+            "tpl!chatroom_form",
+            "tpl!chatroom_nickname_form",
+            "tpl!chatroom_password_form",
+            "tpl!chatroom_sidebar",
+            "tpl!chatrooms_tab",
+            "tpl!info",
+            "tpl!occupant",
+            "tpl!room_description",
+            "tpl!room_item",
+            "tpl!room_panel",
             "typeahead",
             "converse-chatview"
     ], factory);
-}(this, function (converse, converse_api) {
+}(this, function (
+            converse,
+            converse_api,
+            tpl_chatarea,
+            tpl_chatroom,
+            tpl_chatroom_form,
+            tpl_chatroom_nickname_form,
+            tpl_chatroom_password_form,
+            tpl_chatroom_sidebar,
+            tpl_chatrooms_tab,
+            tpl_info,
+            tpl_occupant,
+            tpl_room_description,
+            tpl_room_item,
+            tpl_room_panel
+    ) {
     "use strict";
+    converse.templates.chatarea = tpl_chatarea;
+    converse.templates.chatroom = tpl_chatroom;
+    converse.templates.chatroom_form = tpl_chatroom_form;
+    converse.templates.chatroom_nickname_form = tpl_chatroom_nickname_form;
+    converse.templates.chatroom_password_form = tpl_chatroom_password_form;
+    converse.templates.chatroom_sidebar = tpl_chatroom_sidebar;
+    converse.templates.chatrooms_tab = tpl_chatrooms_tab;
+    converse.templates.info = tpl_info;
+    converse.templates.occupant = tpl_occupant;
+    converse.templates.room_description = tpl_room_description;
+    converse.templates.room_item = tpl_room_item;
+    converse.templates.room_panel = tpl_room_panel;
+
     // Strophe methods for building stanzas
     var Strophe = converse_api.env.Strophe,
         $iq = converse_api.env.$iq,

+ 4 - 2
src/converse-otr.js

@@ -13,10 +13,12 @@
     define("converse-otr", [
             "otr",
             "converse-core",
-            "converse-api"
+            "converse-api",
+            "tpl!toolbar_otr"
     ], factory);
-}(this, function (otr, converse, converse_api) {
+}(this, function (otr, converse, converse_api, tpl_toolbar_otr) {
     "use strict";
+    converse.templates.toolbar_otr = tpl_toolbar_otr;
     // Strophe methods for building stanzas
     var Strophe = converse_api.env.Strophe,
         utils = converse_api.env.utils,

+ 20 - 1
src/converse-register.js

@@ -13,10 +13,29 @@
     define("converse-register", [
             "converse-core",
             "converse-api",
+            "tpl!form_username",
+            "tpl!register_panel",
+            "tpl!register_tab",
+            "tpl!registration_form",
+            "tpl!registration_request",
             "converse-controlbox"
     ], factory);
-}(this, function (converse, converse_api) {
+}(this, function (
+            converse,
+            converse_api,
+            tpl_form_username,
+            tpl_register_panel,
+            tpl_register_tab,
+            tpl_registration_form,
+            tpl_registration_request) {
+
     "use strict";
+    converse.templates.form_username = tpl_form_username;
+    converse.templates.register_panel = tpl_register_panel;
+    converse.templates.register_tab = tpl_register_tab;
+    converse.templates.registration_form = tpl_registration_form;
+    converse.templates.registration_request = tpl_registration_request;
+
     // Strophe methods for building stanzas
     var Strophe = converse_api.env.Strophe,
         utils = converse_api.env.utils,

+ 23 - 2
src/converse-rosterview.js

@@ -7,9 +7,30 @@
 /*global Backbone, define */
 
 (function (root, factory) {
-    define("converse-rosterview", ["converse-core", "converse-api"], factory);
-}(this, function (converse, converse_api) {
+    define("converse-rosterview", [
+            "converse-core",
+            "converse-api",
+            "tpl!group_header",
+            "tpl!pending_contact",
+            "tpl!requesting_contact",
+            "tpl!roster",
+            "tpl!roster_item"
+    ], factory);
+}(this, function (
+            converse,
+            converse_api, 
+            tpl_group_header,
+            tpl_pending_contact,
+            tpl_requesting_contact,
+            tpl_roster,
+            tpl_roster_item) {
     "use strict";
+    converse.templates.group_header = tpl_group_header;
+    converse.templates.pending_contact = tpl_pending_contact;
+    converse.templates.requesting_contact = tpl_requesting_contact;
+    converse.templates.roster = tpl_roster;
+    converse.templates.roster_item = tpl_roster_item;
+
     var $ = converse_api.env.jQuery,
         utils = converse_api.env.utils,
         Strophe = converse_api.env.Strophe,

+ 0 - 119
src/converse-templates.js

@@ -1,119 +0,0 @@
-define("converse-templates", [
-    "tpl!action",
-    "tpl!add_contact_dropdown",
-    "tpl!add_contact_form",
-    "tpl!change_status_message",
-    "tpl!chat_status",
-    "tpl!chatarea",
-    "tpl!chatbox",
-    "tpl!chatroom",
-    "tpl!chatroom_form",
-    "tpl!chatroom_password_form",
-    "tpl!chatroom_nickname_form",
-    "tpl!chatroom_sidebar",
-    "tpl!chatrooms_tab",
-    "tpl!chats_panel",
-    "tpl!choose_status",
-    "tpl!contacts_panel",
-    "tpl!contacts_tab",
-    "tpl!controlbox",
-    "tpl!controlbox_toggle",
-    "tpl!field",
-    "tpl!form_captcha",
-    "tpl!form_checkbox",
-    "tpl!form_input",
-    "tpl!form_select",
-    "tpl!form_textarea",
-    "tpl!form_username",
-    "tpl!group_header",
-    "tpl!info",
-    "tpl!login_panel",
-    "tpl!login_tab",
-    "tpl!message",
-    "tpl!new_day",
-    "tpl!occupant",
-    "tpl!pending_contact",
-    "tpl!pending_contacts",
-    "tpl!register_panel",
-    "tpl!register_tab",
-    "tpl!registration_form",
-    "tpl!registration_request",
-    "tpl!requesting_contact",
-    "tpl!requesting_contacts",
-    "tpl!room_description",
-    "tpl!room_item",
-    "tpl!room_panel",
-    "tpl!roster",
-    "tpl!roster_item",
-    "tpl!search_contact",
-    "tpl!select_option",
-    "tpl!status_option",
-    "tpl!toggle_chats",
-    "tpl!toolbar",
-    "tpl!toolbar_otr",
-    "tpl!trimmed_chat",
-    "tpl!vcard",
-
-    // Can be removed together with converse-minimize.js
-    // if minimization/trimming features not needed (for example for mobile
-    // apps).
-    "tpl!chatbox_minimize",
-], function () {
-    return {
-        action:                 arguments[0],
-        add_contact_dropdown:   arguments[1],
-        add_contact_form:       arguments[2],
-        change_status_message:  arguments[3],
-        chat_status:            arguments[4],
-        chatarea:               arguments[5],
-        chatbox:                arguments[6],
-        chatroom:               arguments[7],
-        chatroom_form:          arguments[8],
-        chatroom_password_form: arguments[9],
-        chatroom_nickname_form: arguments[10],
-        chatroom_sidebar:       arguments[11],
-        chatrooms_tab:          arguments[12],
-        chats_panel:            arguments[13],
-        choose_status:          arguments[14],
-        contacts_panel:         arguments[15],
-        contacts_tab:           arguments[16],
-        controlbox:             arguments[17],
-        controlbox_toggle:      arguments[18],
-        field:                  arguments[19],
-        form_captcha:           arguments[20],
-        form_checkbox:          arguments[21],
-        form_input:             arguments[22],
-        form_select:            arguments[23],
-        form_textarea:          arguments[24],
-        form_username:          arguments[25],
-        group_header:           arguments[26],
-        info:                   arguments[27],
-        login_panel:            arguments[28],
-        login_tab:              arguments[29],
-        message:                arguments[30],
-        new_day:                arguments[31],
-        occupant:               arguments[32],
-        pending_contact:        arguments[33],
-        pending_contacts:       arguments[34],
-        register_panel:         arguments[35],
-        register_tab:           arguments[36],
-        registration_form:      arguments[37],
-        registration_request:   arguments[38],
-        requesting_contact:     arguments[39],
-        requesting_contacts:    arguments[40],
-        room_description:       arguments[41],
-        room_item:              arguments[42],
-        room_panel:             arguments[43],
-        roster:                 arguments[44],
-        roster_item:            arguments[45],
-        search_contact:         arguments[46],
-        select_option:          arguments[47],
-        status_option:          arguments[48],
-        toggle_chats:           arguments[49],
-        toolbar:                arguments[50],
-        toolbar_otr:            arguments[51],
-        trimmed_chat:           arguments[52],
-        vcard:                  arguments[53],
-        chatbox_minimize:       arguments[54]
-    };
-});

+ 0 - 1
src/converse-vcard.js

@@ -19,7 +19,6 @@
         _ = converse_api.env._,
         moment = converse_api.env.moment;
 
-
     converse_api.plugins.add('converse-vcard', {
 
         overrides: {

+ 0 - 1
src/templates/pending_contacts.html

@@ -1 +0,0 @@
-<dt class="roster-group" id="pending-xmpp-contacts"><a href="#" class="group-toggle icon-{{toggle_state}}" title="{{desc_group_toggle}}">{{label_pending_contacts}}</a></dt>

+ 0 - 1
src/templates/requesting_contacts.html

@@ -1 +0,0 @@
-<dt class="roster-group" id="xmpp-contact-requests"><a href="#" class="group-toggle icon-{{toggle_state}}" title="{{desc_group_toggle}}">{{label_contact_requests}}</a></dt>

+ 0 - 12
src/templates/vcard.html

@@ -1,12 +0,0 @@
-<form class="pure-form converse-form vcard-info">
-    <fieldset>
-        <legend>The VCard info gets rendered here</legend>
-        <label>Full name:</label>
-        {{fullname}}
-        <label>URL:</label>
-        {{url}}
-    </fieldset>
-    <fieldset>
-        <input type="button" class="pure-button button-cancel" value="{{label_return}}"/>
-    </fieldset>
-</form>

+ 27 - 10
src/utils.js

@@ -4,9 +4,26 @@
         "jquery",
         "jquery.browser",
         "underscore",
-        "converse-templates"
+        "tpl!field",
+        "tpl!select_option",
+        "tpl!form_select",
+        "tpl!form_textarea",
+        "tpl!form_checkbox",
+        "tpl!form_username",
+        "tpl!form_input",
+        "tpl!form_captcha"
     ], factory);
-}(this, function ($, dummy, _, templates) {
+}(this, function (
+        $, dummy, _,
+        tpl_field,
+        tpl_select_option,
+        tpl_form_select,
+        tpl_form_textarea,
+        tpl_form_checkbox,
+        tpl_form_username,
+        tpl_form_input,
+        tpl_form_captcha
+    ) {
     "use strict";
 
     var XFORM_TYPE_MAP = {
@@ -249,7 +266,7 @@
             } else {
                 value = $input.val();
             }
-            return $(templates.field({
+            return $(tpl_field({
                 name: $input.attr('name'),
                 value: value
             }))[0];
@@ -291,14 +308,14 @@
                 $options = $field.children('option');
                 for (j=0; j<$options.length; j++) {
                     value = $($options[j]).find('value').text();
-                    options.push(templates.select_option({
+                    options.push(tpl_select_option({
                         value: value,
                         label: $($options[j]).attr('label'),
                         selected: (values.indexOf(value) >= 0),
                         required: $field.find('required').length
                     }));
                 }
-                return templates.form_select({
+                return tpl_form_select({
                     name: $field.attr('var'),
                     label: $field.attr('label'),
                     options: options.join(''),
@@ -308,14 +325,14 @@
             } else if ($field.attr('type') === 'fixed') {
                 return $('<p class="form-help">').text($field.find('value').text());
             } else if ($field.attr('type') === 'jid-multi') {
-                return templates.form_textarea({
+                return tpl_form_textarea({
                     name: $field.attr('var'),
                     label: $field.attr('label') || '',
                     value: $field.find('value').text(),
                     required: $field.find('required').length
                 });
             } else if ($field.attr('type') === 'boolean') {
-                return templates.form_checkbox({
+                return tpl_form_checkbox({
                     name: $field.attr('var'),
                     type: XFORM_TYPE_MAP[$field.attr('type')],
                     label: $field.attr('label') || '',
@@ -323,7 +340,7 @@
                     required: $field.find('required').length
                 });
             } else if ($field.attr('type') && $field.attr('var') === 'username') {
-                return templates.form_username({
+                return tpl_form_username({
                     domain: ' @'+this.domain,
                     name: $field.attr('var'),
                     type: XFORM_TYPE_MAP[$field.attr('type')],
@@ -332,7 +349,7 @@
                     required: $field.find('required').length
                 });
             } else if ($field.attr('type')) {
-                return templates.form_input({
+                return tpl_form_input({
                     name: $field.attr('var'),
                     type: XFORM_TYPE_MAP[$field.attr('type')],
                     label: $field.attr('label') || '',
@@ -343,7 +360,7 @@
                 if ($field.attr('var') === 'ocr') { // Captcha
                     return _.reduce(_.map($field.find('uri'),
                             $.proxy(function (uri) {
-                                return templates.form_captcha({
+                                return tpl_form_captcha({
                                     label: this.$field.attr('label'),
                                     name: this.$field.attr('var'),
                                     data: this.$stanza.find('data[cid="'+uri.textContent.replace(/^cid:/, '')+'"]').text(),