Merge remote-tracking branch 'origin/master'

This commit is contained in:
Weblate 2017-11-05 21:19:10 +01:00
commit 8e73e820e5
66 changed files with 366 additions and 359 deletions

View File

@ -61,7 +61,7 @@
"moment": "~2.18.1", "moment": "~2.18.1",
"npm": "^4.1.1", "npm": "^4.1.1",
"otr": "0.2.16", "otr": "0.2.16",
"pluggable.js": "https://github.com/jcbrand/pluggable.js.git#4677f759c270edda4ce987a8565b817a1d15973b", "pluggable.js": "1.0.1",
"po2json": "^0.4.4", "po2json": "^0.4.4",
"requirejs": "2.3.3", "requirejs": "2.3.3",
"run-headless-chromium": "^0.1.1", "run-headless-chromium": "^0.1.1",

View File

@ -808,7 +808,7 @@
expect($sent_stanza.find('field[var="muc#roomconfig_allowpm"] value').text()).toBe('moderators'); expect($sent_stanza.find('field[var="muc#roomconfig_allowpm"] value').text()).toBe('moderators');
expect($sent_stanza.find('field[var="muc#roomconfig_presencebroadcast"] value').text()).toBe('moderator'); expect($sent_stanza.find('field[var="muc#roomconfig_presencebroadcast"] value').text()).toBe('moderator');
done(); done();
}); }).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL));
})); }));
it("shows users currently present in the room", it("shows users currently present in the room",

View File

@ -114,7 +114,13 @@ require.config({
templateSettings: { templateSettings: {
"escape": /\{\{\{([\s\S]+?)\}\}\}/g, "escape": /\{\{\{([\s\S]+?)\}\}\}/g,
"evaluate": /\{\[([\s\S]+?)\]\}/g, "evaluate": /\{\[([\s\S]+?)\]\}/g,
"interpolate": /\{\{([\s\S]+?)\}\}/g "interpolate": /\{\{([\s\S]+?)\}\}/g,
// By default, template places the values from your data in the
// local scope via the with statement. However, you can specify
// a single variable name with the variable setting. This can
// significantly improve the speed at which a template is able
// to render.
"variable": 'o'
} }
}, },

View File

@ -78,15 +78,15 @@
const ROOM_FEATURES = [ const ROOM_FEATURES = [
'passwordprotected', 'unsecured', 'hidden', 'passwordprotected', 'unsecured', 'hidden',
'public', 'membersonly', 'open', 'persistent', 'publicroom', 'membersonly', 'open', 'persistent',
'temporary', 'nonanonymous', 'semianonymous', 'temporary', 'nonanonymous', 'semianonymous',
'moderated', 'unmoderated', 'mam_enabled' 'moderated', 'unmoderated', 'mam_enabled'
]; ];
const ROOM_FEATURES_MAP = { const ROOM_FEATURES_MAP = {
'passwordprotected': 'unsecured', 'passwordprotected': 'unsecured',
'unsecured': 'passwordprotected', 'unsecured': 'passwordprotected',
'hidden': 'public', 'hidden': 'publicroom',
'public': 'hidden', 'publicroom': 'hidden',
'membersonly': 'open', 'membersonly': 'open',
'open': 'membersonly', 'open': 'membersonly',
'persistent': 'temporary', 'persistent': 'temporary',
@ -1526,8 +1526,9 @@
* the settings. * the settings.
*/ */
this.showSpinner(); this.showSpinner();
this.fetchRoomConfiguration().then( this.fetchRoomConfiguration()
this.renderConfigurationForm.bind(this)); .then(this.renderConfigurationForm.bind(this))
.catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
}, },
submitNickname (ev) { submitNickname (ev) {
@ -2147,7 +2148,7 @@
this.chatroomview.model.on('change:open', this.onFeatureChanged, this); this.chatroomview.model.on('change:open', this.onFeatureChanged, this);
this.chatroomview.model.on('change:passwordprotected', this.onFeatureChanged, this); this.chatroomview.model.on('change:passwordprotected', this.onFeatureChanged, this);
this.chatroomview.model.on('change:persistent', this.onFeatureChanged, this); this.chatroomview.model.on('change:persistent', this.onFeatureChanged, this);
this.chatroomview.model.on('change:public', this.onFeatureChanged, this); this.chatroomview.model.on('change:publicroom', this.onFeatureChanged, this);
this.chatroomview.model.on('change:semianonymous', this.onFeatureChanged, this); this.chatroomview.model.on('change:semianonymous', this.onFeatureChanged, this);
this.chatroomview.model.on('change:temporary', this.onFeatureChanged, this); this.chatroomview.model.on('change:temporary', this.onFeatureChanged, this);
this.chatroomview.model.on('change:unmoderated', this.onFeatureChanged, this); this.chatroomview.model.on('change:unmoderated', this.onFeatureChanged, this);

View File

@ -1,4 +1,4 @@
<div class="chat-message {{{extra_classes}}}" data-isodate="{{{isodate}}}"> <div class="chat-message {{{o.extra_classes}}}" data-isodate="{{{o.isodate}}}">
<span class="chat-msg-author chat-msg-{{{sender}}}">{{{time}}} **{{{username}}}&nbsp;</span> <span class="chat-msg-author chat-msg-{{{o.sender}}}">{{{o.time}}} **{{{o.username}}}&nbsp;</span>
<span class="chat-msg-content chat-action"><!-- message gets added here via renderMessage --></span> <span class="chat-msg-content chat-action"><!-- message gets added here via renderMessage --></span>
</div> </div>

View File

@ -1,6 +1,6 @@
<dl class="add-converse-contact dropdown"> <dl class="add-converse-contact dropdown">
<dt id="xmpp-contact-search" class="fancy-dropdown"> <dt id="xmpp-contact-search" class="fancy-dropdown">
<a class="toggle-xmpp-contact-form icon-plus" href="#" title="{{{label_click_to_chat}}}"> {{{label_add_contact}}}</a> <a class="toggle-xmpp-contact-form icon-plus" href="#" title="{{{o.label_click_to_chat}}}"> {{{o.label_add_contact}}}</a>
</dt> </dt>
<dd class="search-xmpp"> <dd class="search-xmpp">
<div class="contact-form-container collapsed"></div> <div class="contact-form-container collapsed"></div>

View File

@ -1,11 +1,11 @@
<form class="pure-form add-xmpp-contact"> <form class="pure-form add-xmpp-contact">
{[ if (error_message) { ]} {[ if (o.error_message) { ]}
<span class="pure-form-message error">{{{error_message}}}</span> <span class="pure-form-message error">{{{o.error_message}}}</span>
{[ } ]} {[ } ]}
<input type="text" <input type="text"
name="identifier" name="identifier"
value="{{{value}}}" value="{{{o.value}}}"
class="username {[ if (error_message) { ]} error {[ } ]}" class="username {[ if (o.error_message) { ]} error {[ } ]}"
placeholder="{{{label_contact_username}}}"/> placeholder="{{{o.label_contact_username}}}"/>
<button class="pure-button button-primary" type="submit">{{{label_add}}}</button> <button class="pure-button button-primary" type="submit">{{{o.label_add}}}</button>
</form> </form>

View File

@ -1 +1 @@
<canvas height="{{height}}px" width="{{width}}px" class="avatar"></canvas> <canvas height="{{o.height}}px" width="{{o.width}}px" class="avatar"></canvas>

View File

@ -1,8 +1,8 @@
<dd class="available-chatroom" data-room-jid="{{{jid}}}"> <dd class="available-chatroom" data-room-jid="{{{o.jid}}}">
<a class="open-room" data-room-jid="{{{jid}}}" title="{{{open_title}}}" href="#">{{{name}}}</a> <a class="open-room" data-room-jid="{{{o.jid}}}" title="{{{o.open_title}}}" href="#">{{{o.name}}}</a>
<a class="right remove-bookmark icon-pushpin {[ if (bookmarked) { ]} button-on {[ } ]}" <a class="right remove-bookmark icon-pushpin {[ if (o.bookmarked) { ]} button-on {[ } ]}"
data-room-jid="{{{jid}}}" data-bookmark-name="{{{name}}}" data-room-jid="{{{o.jid}}}" data-bookmark-name="{{{o.name}}}"
title="{{{info_remove_bookmark}}}" href="#">&nbsp;</a> title="{{{o.jinfo_remove_bookmark}}}" href="#">&nbsp;</a>
<a class="right room-info icon-room-info" data-room-jid="{{{jid}}}" <a class="right room-info icon-room-info" data-room-jid="{{{o.jid}}}"
title="{{{info_title}}}" href="#">&nbsp;</a> title="{{{o.info_title}}}" href="#">&nbsp;</a>
</dd> </dd>

View File

@ -1,2 +1,2 @@
<a href="#" class="rooms-toggle bookmarks-toggle icon-{{{toggle_state}}}" title="{{{desc_bookmarks}}}">{{{label_bookmarks}}}</a> <a href="#" class="rooms-toggle bookmarks-toggle icon-{{{o.toggle_state}}}" title="{{{o.desc_bookmarks}}}">{{{o.label_bookmarks}}}</a>
<dl class="bookmarks rooms-list"></dl> <dl class="bookmarks rooms-list"></dl>

View File

@ -1,6 +1,6 @@
<fieldset> <fieldset>
<span class="input-button-group"> <span class="input-button-group">
<input type="text" class="custom-xmpp-status" value="{{{status_message}}}" placeholder="{{{label_custom_status}}}"/> <input type="text" class="custom-xmpp-status" value="{{{o.status_message}}}" placeholder="{{{o.label_custom_status}}}"/>
<input type="submit" class="pure-button button-primary" value="{{{label_save}}}"/> <input type="submit" class="pure-button button-primary" value="{{{o.label_save}}}"/>
</span> </span>
</fieldset> </fieldset>

View File

@ -1,6 +1,6 @@
<div class="xmpp-status"> <div class="xmpp-status">
<a class="choose-xmpp-status {{{chat_status}}} icon-{{{chat_status}}}" data-value="{{{status_message}}}" href="#" title="{{{desc_change_status}}}"> <a class="choose-xmpp-status {{{o.chat_status}}} icon-{{{o.chat_status}}}" data-value="{{{o.status_message}}}" href="#" title="{{{o.desc_change_status}}}">
{{{status_message}}} {{{o.status_message}}}
</a> </a>
<a class="change-xmpp-status-message icon-pencil" href="#" title="{{{desc_custom_status}}}"></a> <a class="change-xmpp-status-message icon-pencil" href="#" title="{{{o.desc_custom_status}}}"></a>
</div> </div>

View File

@ -1,14 +1,14 @@
<div class="chat-area"> <div class="chat-area">
<div class="chat-content {[ if (show_send_button) { ]}chat-content-sendbutton{[ } ]}"></div> <div class="chat-content {[ if (o.show_send_button) { ]}chat-content-sendbutton{[ } ]}"></div>
<div class="new-msgs-indicator hidden">▼ {{{ unread_msgs }}} ▼</div> <div class="new-msgs-indicator hidden">▼ {{{ o.unread_msgs }}} ▼</div>
<form class="sendXMPPMessage"> <form class="sendXMPPMessage">
{[ if (show_toolbar) { ]} {[ if (o.show_toolbar) { ]}
<ul class="chat-toolbar no-text-select"></ul> <ul class="chat-toolbar no-text-select"></ul>
{[ } ]} {[ } ]}
<textarea type="text" class="chat-textarea {[ if (show_send_button) { ]}chat-textarea-send-button{[ } ]}" <textarea type="text" class="chat-textarea {[ if (o.show_send_button) { ]}chat-textarea-send-button{[ } ]}"
placeholder="{{{label_message}}}"/> placeholder="{{{o.label_message}}}"/>
{[ if (show_send_button) { ]} {[ if (o.show_send_button) { ]}
<button type="submit" class="pure-button send-button">{{{ label_send }}}</button> <button type="submit" class="pure-button send-button">{{{ o.label_send }}}</button>
{[ } ]} {[ } ]}
</form> </form>
</div> </div>

View File

@ -1,32 +1,32 @@
<div class="flyout box-flyout"> <div class="flyout box-flyout">
<div class="chat-head chat-head-chatbox"> <div class="chat-head chat-head-chatbox">
<a class="chatbox-btn close-chatbox-button icon-close" title="{{{info_close}}}"></a> <a class="chatbox-btn close-chatbox-button icon-close" title="{{{o.info_close}}}"></a>
<div class="chat-title"> <div class="chat-title">
{[ if (url) { ]} {[ if (o.url) { ]}
<a href="{{{url}}}" target="_blank" rel="noopener" class="user"> <a href="{{{o.url}}}" target="_blank" rel="noopener" class="user">
{[ } ]} {[ } ]}
{{{ title }}} {{{ o.title }}}
{[ if (url) { ]} {[ if (o.url) { ]}
</a> </a>
{[ } ]} {[ } ]}
<p class="user-custom-message"><p/> <p class="user-custom-message"><p/>
</div> </div>
</div> </div>
<div class="chat-body"> <div class="chat-body">
<div class="chat-content {[ if (show_send_button) { ]}chat-content-sendbutton{[ } ]}"></div> <div class="chat-content {[ if (o.show_send_button) { ]}chat-content-sendbutton{[ } ]}"></div>
<div class="new-msgs-indicator hidden">▼ {{{ unread_msgs }}} ▼</div> <div class="new-msgs-indicator hidden">▼ {{{ o.unread_msgs }}} ▼</div>
{[ if (show_textarea) { ]} {[ if (o.show_textarea) { ]}
<form class="sendXMPPMessage"> <form class="sendXMPPMessage">
{[ if (show_toolbar) { ]} {[ if (o.show_toolbar) { ]}
<ul class="chat-toolbar no-text-select"></ul> <ul class="chat-toolbar no-text-select"></ul>
{[ } ]} {[ } ]}
<textarea <textarea
type="text" type="text"
class="chat-textarea {[ if (show_send_button) { ]}chat-textarea-send-button{[ } ]}" class="chat-textarea {[ if (o.show_send_button) { ]}chat-textarea-send-button{[ } ]}"
placeholder="{{{label_personal_message}}}"/> placeholder="{{{o.label_personal_message}}}"/>
{[ if (show_send_button) { ]} {[ if (o.show_send_button) { ]}
<button type="submit" class="pure-button send-button">{{{ label_send }}}</button> <button type="submit" class="pure-button send-button">{{{ o.label_send }}}</button>
{[ } ]} {[ } ]}
</form> </form>
{[ } ]} {[ } ]}

View File

@ -1 +1 @@
<a class="chatbox-btn toggle-chatbox-button icon-minus" title="{{{info_minimize}}}"></a> <a class="chatbox-btn toggle-chatbox-button icon-minus" title="{{{o.info_minimize}}}"></a>

View File

@ -1,17 +1,17 @@
<div class="chatroom-form-container"> <div class="chatroom-form-container">
<form class="pure-form converse-form chatroom-form"> <form class="pure-form converse-form chatroom-form">
<fieldset> <fieldset>
<legend>{{{heading}}}</legend> <legend>{{{o.heading}}}</legend>
<label>{{{label_name}}}</label> <label>{{{o.label_name}}}</label>
<input type="text" name="name" required="required"/> <input type="text" name="name" required="required"/>
<label>{{{label_autojoin}}}</label> <label>{{{o.label_autojoin}}}</label>
<input type="checkbox" name="autojoin"/> <input type="checkbox" name="autojoin"/>
<label>{{{label_nick}}}</label> <label>{{{o.label_nick}}}</label>
<input type="text" name="nick" value="{{{default_nick}}}"/> <input type="text" name="nick" value="{{{o.default_nick}}}"/>
</fieldset> </fieldset>
<fieldset> <fieldset>
<input class="pure-button button-primary" type="submit" value="{{{label_submit}}}"/> <input class="pure-button button-primary" type="submit" value="{{{o.label_submit}}}"/>
<input class="pure-button button-cancel" type="button" value="{{{label_cancel}}}"/> <input class="pure-button button-cancel" type="button" value="{{{o.label_cancel}}}"/>
</fieldset> </fieldset>
</form> </form>
</div> </div>

View File

@ -1,4 +1,4 @@
<a class="chatbox-btn toggle-bookmark icon-pushpin <a class="chatbox-btn toggle-bookmark icon-pushpin
{[ if (bookmarked) {]} {[ if (o.bookmarked) {]}
button-on button-on
{[ } ]}" title="{{{info_toggle_bookmark}}}"></a> {[ } ]}" title="{{{o.info_toggle_bookmark}}}"></a>

View File

@ -1 +1 @@
<p class="disconnect-msg">{{{disconnect_message}}}</p> <p class="disconnect-msg">{{{o.disconnect_message}}}</p>

View File

@ -1,44 +1,44 @@
{[ if (has_features) { ]} {[ if (o.has_features) { ]}
<p class="occupants-heading">{{{label_features}}}</p> <p class="occupants-heading">{{{o.label_features}}}</p>
{[ } ]} {[ } ]}
<ul class="features-list"> <ul class="features-list">
{[ if (passwordprotected) { ]} {[ if (o.passwordprotected) { ]}
<li class="feature" title="{{{ tt_passwordprotected }}}"><span class="icon-lock-2"></span>{{{ label_passwordprotected }}}</li> <li class="feature" title="{{{ o.tt_passwordprotected }}}"><span class="icon-lock-2"></span>{{{ o.label_passwordprotected }}}</li>
{[ } ]} {[ } ]}
{[ if (unsecured) { ]} {[ if (o.unsecured) { ]}
<li class="feature" title="{{{ tt_unsecured }}}"><span class="icon-unlocked"></span>{{{ label_unsecured }}}</li> <li class="feature" title="{{{ o.tt_unsecured }}}"><span class="icon-unlocked"></span>{{{ o.label_unsecured }}}</li>
{[ } ]} {[ } ]}
{[ if (hidden) { ]} {[ if (o.hidden) { ]}
<li class="feature" title="{{{ tt_hidden }}}"><span class="icon-eye-blocked"></span>{{{ label_hidden }}}</li> <li class="feature" title="{{{ o.tt_hidden }}}"><span class="icon-eye-blocked"></span>{{{ o.label_hidden }}}</li>
{[ } ]} {[ } ]}
{[ if (public) { ]} {[ if (o.public_room) { ]}
<li class="feature" title="{{{ tt_public }}}"><span class="icon-eye"></span>{{{ label_public }}}</li> <li class="feature" title="{{{ o.tt_public }}}"><span class="icon-eye"></span>{{{ o.label_public }}}</li>
{[ } ]} {[ } ]}
{[ if (membersonly) { ]} {[ if (o.membersonly) { ]}
<li class="feature" title="{{{ tt_membersonly }}}"><span class="icon-address-book"></span>{{{ label_membersonly }}}</li> <li class="feature" title="{{{ o.tt_membersonly }}}"><span class="icon-address-book"></span>{{{ o.label_membersonly }}}</li>
{[ } ]} {[ } ]}
{[ if (open) { ]} {[ if (o.open) { ]}
<li class="feature" title="{{{ tt_open }}}"><span class="icon-globe"></span>{{{ label_open }}}</li> <li class="feature" title="{{{ o.tt_open }}}"><span class="icon-globe"></span>{{{ o.label_open }}}</li>
{[ } ]} {[ } ]}
{[ if (persistent) { ]} {[ if (o.persistent) { ]}
<li class="feature" title="{{{ tt_persistent }}}"><span class="icon-save"></span>{{{ label_persistent }}}</li> <li class="feature" title="{{{ o.tt_persistent }}}"><span class="icon-save"></span>{{{ o.label_persistent }}}</li>
{[ } ]} {[ } ]}
{[ if (temporary) { ]} {[ if (o.temporary) { ]}
<li class="feature" title="{{{ tt_temporary }}}"><span class="icon-snowflake"></span>{{{ label_temporary }}}</li> <li class="feature" title="{{{ o.tt_temporary }}}"><span class="icon-snowflake"></span>{{{ o.label_temporary }}}</li>
{[ } ]} {[ } ]}
{[ if (nonanonymous) { ]} {[ if (o.nonanonymous) { ]}
<li class="feature" title="{{{ tt_nonanonymous }}}"><span class="icon-idcard-dark"></span>{{{ label_nonanonymous }}}</li> <li class="feature" title="{{{ o.tt_nonanonymous }}}"><span class="icon-idcard-dark"></span>{{{ o.label_nonanonymous }}}</li>
{[ } ]} {[ } ]}
{[ if (semianonymous) { ]} {[ if (o.semianonymous) { ]}
<li class="feature" title="{{{ tt_semianonymous }}}"><span class="icon-info"></span>{{{ label_semianonymous }}}</li> <li class="feature" title="{{{ o.tt_semianonymous }}}"><span class="icon-info"></span>{{{ o.label_semianonymous }}}</li>
{[ } ]} {[ } ]}
{[ if (moderated) { ]} {[ if (o.moderated) { ]}
<li class="feature" title="{{{ tt_moderated }}}"><span class="icon-legal"></span>{{{ label_moderated }}}</li> <li class="feature" title="{{{ o.tt_moderated }}}"><span class="icon-legal"></span>{{{ o.label_moderated }}}</li>
{[ } ]} {[ } ]}
{[ if (unmoderated) { ]} {[ if (o.unmoderated) { ]}
<li class="feature" title="{{{ tt_unmoderated }}}"><span class="icon-info"></span>{{{ label_unmoderated }}}</li> <li class="feature" title="{{{ o.tt_unmoderated }}}"><span class="icon-info"></span>{{{ o.label_unmoderated }}}</li>
{[ } ]} {[ } ]}
{[ if (mam_enabled) { ]} {[ if (o.mam_enabled) { ]}
<li class="feature" title="{{{ tt_mam_enabled }}}"><span class="icon-database"></span>{{{ label_mam_enabled }}}</li> <li class="feature" title="{{{ o.tt_mam_enabled }}}"><span class="icon-database"></span>{{{ o.label_mam_enabled }}}</li>
{[ } ]} {[ } ]}
</ul> </ul>

View File

@ -1,12 +1,12 @@
<a class="chatbox-btn close-chatbox-button icon-close" title="{{{info_close}}}"></a> <a class="chatbox-btn close-chatbox-button icon-close" title="{{{o.info_close}}}"></a>
{[ if (affiliation == 'owner') { ]} {[ if (o.affiliation == 'owner') { ]}
<a class="chatbox-btn configure-chatroom-button icon-wrench" title="{{{info_configure}}} "></a> <a class="chatbox-btn configure-chatroom-button icon-wrench" title="{{{o.info_configure}}} "></a>
{[ } ]} {[ } ]}
<div class="chat-title" title="{{{jid}}}"> <div class="chat-title" title="{{{o.jid}}}">
{[ if (name && name !== Strophe.getNodeFromJid(jid)) { ]} {[ if (o.name && o.name !== o.Strophe.getNodeFromJid(o.jid)) { ]}
<span class="chatroom-name">{{{ name }}}</span> <span class="chatroom-name">{{{ o.name }}}</span>
{[ } else { ]} {[ } else { ]}
<span class="chatroom-name">{{{ Strophe.getNodeFromJid(jid) }}}</span>@{{{ Strophe.getDomainFromJid(jid) }}} <span class="chatroom-name">{{{ o.Strophe.getNodeFromJid(o.jid) }}}</span>@{{{ o.Strophe.getDomainFromJid(o.jid) }}}
{[ } ]} {[ } ]}
<p class="chatroom-description">{{{ description }}}<p/> <p class="chatroom-description">{{{ o.description }}}<p/>
</div> </div>

View File

@ -1,6 +1,6 @@
<form class="pure-form room-invite"> <form class="pure-form room-invite">
{[ if (error_message) { ]} {[ if (o.error_message) { ]}
<span class="pure-form-message error">{{{error_message}}}</span> <span class="pure-form-message error">{{{o.error_message}}}</span>
{[ } ]} {[ } ]}
<input class="invited-contact" placeholder="{{{label_invitation}}}" type="text"/> <input class="invited-contact" placeholder="{{{o.label_invitation}}}" type="text"/>
</form> </form>

View File

@ -1,12 +1,12 @@
<div class="chatroom-form-container"> <div class="chatroom-form-container">
<form class="pure-form converse-form chatroom-form converse-centered-form"> <form class="pure-form converse-form chatroom-form converse-centered-form">
<fieldset> <fieldset>
<label>{{{heading}}}</label> <label>{{{o.heading}}}</label>
<p class="validation-message">{{{validation_message}}}</p> <p class="validation-message">{{{o.validation_message}}}</p>
<input type="text" required="required" name="nick" class="new-chatroom-nick" placeholder="{{{label_nickname}}}"/> <input type="text" required="required" name="nick" class="new-chatroom-nick" placeholder="{{{o.label_nickname}}}"/>
</fieldset> </fieldset>
<fieldset> <fieldset>
<input type="submit" class="pure-button button-primary" name="join" value="{{{label_join}}}"/> <input type="submit" class="pure-button button-primary" name="join" value="{{{o.label_join}}}"/>
</fieldset> </fieldset>
</form> </form>
</div> </div>

View File

@ -1,12 +1,12 @@
<div class="chatroom-form-container"> <div class="chatroom-form-container">
<form class="pure-form converse-form chatroom-form"> <form class="pure-form converse-form chatroom-form">
<fieldset> <fieldset>
<legend>{{{heading}}}</legend> <legend>{{{o.heading}}}</legend>
<label>{{{label_password}}}</label> <label>{{{o.label_password}}}</label>
<input type="password" name="password"/> <input type="password" name="password"/>
</fieldset> </fieldset>
<fieldset> <fieldset>
<input class="pure-button button-primary" type="submit" value="{{{label_submit}}}"/> <input class="pure-button button-primary" type="submit" value="{{{o.label_submit}}}"/>
</fieldset> </fieldset>
</form> </form>
</div> </div>

View File

@ -1,5 +1,5 @@
<!-- <div class="occupants"> --> <!-- <div class="occupants"> -->
<p class="occupants-heading">{{{label_occupants}}}</p> <p class="occupants-heading">{{{o.label_occupants}}}</p>
<ul class="occupant-list"></ul> <ul class="occupant-list"></ul>
<div class="chatroom-features"></div> <div class="chatroom-features"></div>
<!-- </div> --> <!-- </div> -->

View File

@ -1,15 +1,15 @@
{[ if (use_emoji) { ]} {[ if (o.use_emoji) { ]}
<li class="toggle-smiley icon-happy" title="{{{label_insert_smiley}}}"> <li class="toggle-smiley icon-happy" title="{{{o.label_insert_smiley}}}">
<ul class="emoji-picker"></ul> <ul class="emoji-picker"></ul>
</li> </li>
{[ } ]} {[ } ]}
{[ if (show_call_button) { ]} {[ if (o.show_call_button) { ]}
<li class="toggle-call"><a class="icon-phone" title="{{{label_start_call}}}"></a></li> <li class="toggle-call"><a class="icon-phone" title="{{{o.label_start_call}}}"></a></li>
{[ } ]} {[ } ]}
{[ if (show_occupants_toggle) { ]} {[ if (o.show_occupants_toggle) { ]}
<li class="toggle-occupants"><a class="icon-hide-users" title="{{{label_hide_occupants}}}"></a></li> <li class="toggle-occupants"><a class="icon-hide-users" title="{{{o.label_hide_occupants}}}"></a></li>
{[ } ]} {[ } ]}
{[ if (show_clear_button) { ]} {[ if (o.show_clear_button) { ]}
<li class="toggle-clear"><a class="icon-trash" title="{{{label_clear}}}"></a></li> <li class="toggle-clear"><a class="icon-trash" title="{{{o.label_clear}}}"></a></li>
{[ } ]} {[ } ]}

View File

@ -1,9 +1,9 @@
<a class="s rooms-tab <a class="s rooms-tab
{[ if (is_current) { ]} current {[ } ]} {[ if (o.is_current) { ]} current {[ } ]}
{[ if (num_unread) { ]} unread-msgs {[ } ]}" {[ if (o.num_unread) { ]} unread-msgs {[ } ]}"
data-id="chatrooms" href="#chatrooms"> data-id="chatrooms" href="#chatrooms">
{{label_rooms}} {{{o.label_rooms}}}
{[ if (num_unread) { ]} {[ if (o.num_unread) { ]}
<span class="msgs-indicator">{{{ num_unread }}}</span> <span class="msgs-indicator">{{{o. num_unread }}}</span>
{[ } ]} {[ } ]}
</a> </a>

View File

@ -1,13 +1,13 @@
<form class="pure-form set-xmpp-status" id="set-xmpp-status" action="" method="post"> <form class="pure-form set-xmpp-status" id="set-xmpp-status" action="" method="post">
<select id="select-xmpp-status"> <select id="select-xmpp-status">
<option value="online">{{{label_online}}}</option> <option value="online">{{{o.label_online}}}</option>
<option value="dnd">{{{label_busy}}}</option> <option value="dnd">{{{o.label_busy}}}</option>
<option value="away">{{{label_away}}}</option> <option value="away">{{{o.label_away}}}</option>
{[ if (include_offline_state) { ]} {[ if (o.include_offline_state) { ]}
<option value="offline">{{{label_offline}}}</option> <option value="offline">{{{o.label_offline}}}</option>
{[ } ]} {[ } ]}
{[ if (allow_logout) { ]} {[ if (o.allow_logout) { ]}
<option value="logout">{{{label_logout}}}</option> <option value="logout">{{{o.label_logout}}}</option>
{[ } ]} {[ } ]}
</select> </select>
</form> </form>

View File

@ -1,9 +1,9 @@
<a class="s contacts-tab <a class="s contacts-tab
{[ if (is_current) { ]} current {[ } ]} {[ if (o.is_current) { ]} current {[ } ]}
{[ if (num_unread) { ]} unread-msgs {[ } ]}" {[ if (o.num_unread) { ]} unread-msgs {[ } ]}"
data-id="users" href="#users"> data-id="users" href="#users">
{{{label_contacts}}} {{{o.label_contacts}}}
{[ if (num_unread) { ]} {[ if (o.num_unread) { ]}
<span class="msgs-indicator">{{{ num_unread }}}</span> <span class="msgs-indicator">{{{ o.num_unread }}}</span>
{[ } ]} {[ } ]}
</a> </a>

View File

@ -1,7 +1,7 @@
<div class="flyout box-flyout"> <div class="flyout box-flyout">
<div class="chat-head controlbox-head"> <div class="chat-head controlbox-head">
<ul id="controlbox-tabs"></ul> <ul id="controlbox-tabs"></ul>
{[ if (!sticky_controlbox) { ]} {[ if (!o.sticky_controlbox) { ]}
<a class="chatbox-btn close-chatbox-button icon-close"></a> <a class="chatbox-btn close-chatbox-button icon-close"></a>
{[ } ]} {[ } ]}
</div> </div>

View File

@ -1 +1 @@
<span class="toggle-feedback">{{{label_toggle}}}</span> <span class="toggle-feedback">{{{o.label_toggle}}}</span>

View File

@ -1,9 +1,9 @@
{[ _.forEach(emojis_by_category, function (obj, category) { ]} {[ _.forEach(o.emojis_by_category, function (obj, category) { ]}
<ul class="emoji-picker emoji-picker-{{{category}}} {[ if (current_category !== category) { ]} hidden {[ } ]}"> <ul class="emoji-picker emoji-picker-{{{category}}} {[ if (o.current_category !== category) { ]} hidden {[ } ]}">
{[ _.forEach(emojis_by_category[category], function (emoji) { ]} {[ _.forEach(o.emojis_by_category[category], function (emoji) { ]}
<li class="emoji insert-emoji {[ if (shouldBeHidden(emoji._shortname, current_skintone, toned_emojis)) { ]} hidden {[ }; ]}" <li class="emoji insert-emoji {[ if (o.shouldBeHidden(emoji._shortname, o.current_skintone, o.toned_emojis)) { ]} hidden {[ }; ]}"
data-emoji="{{{emoji._shortname}}}"> data-emoji="{{{emoji._shortname}}}">
<a href="#" data-emoji="{{{emoji._shortname}}}"> {{ transform(emoji._shortname) }} </a> <a href="#" data-emoji="{{{emoji._shortname}}}"> {{ o.transform(emoji._shortname) }} </a>
</li> </li>
{[ }); ]} {[ }); ]}
</ul> </ul>
@ -11,18 +11,18 @@
<ul class="emoji-toolbar"> <ul class="emoji-toolbar">
<li class="emoji-category-picker"> <li class="emoji-category-picker">
<ul> <ul>
{[ _.forEach(emojis_by_category, function (obj, category) { ]} {[ _.forEach(o.emojis_by_category, function (obj, category) { ]}
<li data-category="{{{category}}}" class="emoji-category {[ if (current_category === category) { ]} picked {[ } ]}"> <li data-category="{{{category}}}" class="emoji-category {[ if (o.current_category === category) { ]} picked {[ } ]}">
<a class="pick-category" href="#" data-category="{{{category}}}"> {{ transform(emojis_by_category[category][0]._shortname) }} </a> <a class="pick-category" href="#" data-category="{{{category}}}"> {{ o.transform(o.emojis_by_category[category][0]._shortname) }} </a>
</li> </li>
{[ }); ]} {[ }); ]}
</ul> </ul>
</li> </li>
<li class="emoji-skintone-picker"> <li class="emoji-skintone-picker">
<ul> <ul>
{[ _.forEach(skintones, function (skintone) { ]} {[ _.forEach(o.skintones, function (skintone) { ]}
<li data-skintone="{{{skintone}}}" class="emoji-skintone {[ if (current_skintone === skintone) { ]} picked {[ } ]}"> <li data-skintone="{{{skintone}}}" class="emoji-skintone {[ if (o.current_skintone === skintone) { ]} picked {[ } ]}">
<a class="pick-skintone" href="#" data-skintone="{{{skintone}}}"> {{ transform(':'+skintone+':') }} </a> <a class="pick-skintone" href="#" data-skintone="{{{skintone}}}"> {{ o.transform(':'+skintone+':') }} </a>
</li> </li>
{[ }); ]} {[ }); ]}
</ul> </ul>

View File

@ -1,6 +1,6 @@
<field var="{{{name}}}"> <field var="{{{o.name}}}">
{[ if (_.isArray(value)) { ]} {[ if (_.isArray(o.value)) { ]}
{[ _.each(value,function(arrayValue) { ]}<value>{{{arrayValue}}}</value>{[ }); ]} {[ _.each(o.value,function(arrayValue) { ]}<value>{{{arrayValue}}}</value>{[ }); ]}
{[ } else { ]} {[ } else { ]}
<value>{{{value}}}</value> <value>{{{o.value}}}</value>
{[ } ]}</field> {[ } ]}</field>

View File

@ -1,9 +1,9 @@
{[ if (label) { ]} {[ if (o.label) { ]}
<label> <label>
{{{label}}} {{{o.label}}}
</label> </label>
{[ } ]} {[ } ]}
<img src="data:{{{type}}};base64,{{{data}}}"> <img src="data:{{{o.type}}};base64,{{{o.data}}}">
<input name="{{{name}}}" type="text" {[ if (required) { ]} class="required" {[ } ]} > <input name="{{{o.name}}}" type="text" {[ if (o.required) { ]} class="required" {[ } ]} >

View File

@ -1,2 +1,2 @@
<label class="checkbox" for="{{{name}}}">{{{label}}}<input name="{{{name}}}" type="{{{type}}}" {{{checked}}}></label> <label class="checkbox" for="{{{o.name}}}">{{{o.label}}}<input name="{{{o.name}}}" type="{{{o.type}}}" {{{o.checked}}}></label>

View File

@ -1,7 +1,7 @@
<label> <label>
{{{label}}} {{{o.label}}}
<input name="{{{name}}}" type="{{{type}}}" <input name="{{{o.name}}}" type="{{{o.type}}}"
{[ if (placeholder) { ]} placeholder="{{{placeholder}}}" {[ } ]} {[ if (o.placeholder) { ]} placeholder="{{{o.placeholder}}}" {[ } ]}
{[ if (value) { ]} value="{{{value}}}" {[ } ]} {[ if (o.value) { ]} value="{{{o.value}}}" {[ } ]}
{[ if (required) { ]} class="required" {[ } ]} > {[ if (o.required) { ]} class="required" {[ } ]} >
</label> </label>

View File

@ -1,4 +1,4 @@
<label> <label>
{{{label}}} {{{o.label}}}
<select name="{{{name}}}" {[ if (multiple) { ]} multiple="multiple" {[ } ]}>{{options}}</select> <select name="{{{o.name}}}" {[ if (o.multiple) { ]} multiple="multiple" {[ } ]}>{{o.options}}</select>
</label> </label>

View File

@ -1,2 +1,2 @@
<label class="label-ta">{{{label}}}</label> <label class="label-ta">{{{o.label}}}</label>
<textarea name="{{{name}}}">{{{value}}}</textarea> <textarea name="{{{o.name}}}">{{{o.value}}}</textarea>

View File

@ -1,4 +1,4 @@
<label> <label>
{{{label}}} {{{o.label}}}
<a class="form-url" target="_blank" rel="noopener" href="{{{value}}}">{{{value}}}</a> <a class="form-url" target="_blank" rel="noopener" href="{{{o.value}}}">{{{o.value}}}</a>
</label> </label>

View File

@ -1,11 +1,11 @@
{[ if (label) { ]} {[ if (o.label) { ]}
<label> <label>
{{{label}}} {{{o.label}}}
</label> </label>
{[ } ]} {[ } ]}
<div class="input-group"> <div class="input-group">
<input name="{{{name}}}" type="{{{type}}}" <input name="{{{o.name}}}" type="{{{o.type}}}"
{[ if (value) { ]} value="{{{value}}}" {[ } ]} {[ if (o.value) { ]} value="{{{o.value}}}" {[ } ]}
{[ if (required) { ]} class="required" {[ } ]} /> {[ if (o.required) { ]} class="required" {[ } ]} />
<span title="{{{domain}}}">{{{domain}}}</span> <span title="{{{o.domain}}}">{{{o.domain}}}</span>
</div> </div>

View File

@ -1 +1 @@
<a href="#" class="group-toggle icon-{{{toggle_state}}}" title="{{{desc_group_toggle}}}">{{{label_group}}}</a> <a href="#" class="group-toggle icon-{{{o.toggle_state}}}" title="{{{o.desc_group_toggle}}}">{{{o.label_group}}}</a>

View File

@ -1 +1 @@
<div class="chat-{{{type}}}">{{{message}}}</div> <div class="chat-{{{o.type}}}">{{{o.message}}}</div>

View File

@ -1 +1 @@
<div class="chat-info">{{{message}}}</div> <div class="chat-info">{{{o.message}}}</div>

View File

@ -1,30 +1,30 @@
<form class="pure-form pure-form-stacked converse-form" id="converse-login" method="post"> <form class="pure-form pure-form-stacked converse-form" id="converse-login" method="post">
<legend>{{{__("Login")}}}</legend> <legend>{{{o.__("Login")}}}</legend>
<div class="conn-feedback fade-in {[ if (!conn_feedback_subject) { ]} hidden {[ } ]} {{{conn_feedback_class}}}"> <div class="conn-feedback fade-in {[ if (!o.conn_feedback_subject) { ]} hidden {[ } ]} {{{o.conn_feedback_class}}}">
<p class="feedback-subject">{{{ conn_feedback_subject }}}</p> <p class="feedback-subject">{{{ o.conn_feedback_subject }}}</p>
<p class="feedback-message {[ if (!conn_feedback_message) { ]} hidden {[ } ]}">{{{conn_feedback_message}}}</p> <p class="feedback-message {[ if (!o.conn_feedback_message) { ]} hidden {[ } ]}">{{{o.conn_feedback_message}}}</p>
</div> </div>
{[ if (auto_login || _converse.CONNECTION_STATUS[connection_status] === 'CONNECTING') { ]} {[ if (o.auto_login || o._converse.CONNECTION_STATUS[o.connection_status] === 'CONNECTING') { ]}
<span class="spinner centered"/> <span class="spinner centered"/>
{[ } else { ]} {[ } else { ]}
{[ if (authentication == LOGIN || authentication == EXTERNAL) { ]} {[ if (o.authentication == o.LOGIN || o.authentication == o.EXTERNAL) { ]}
<label>{{{__("Jabber ID:")}}}</label> <label>{{{o.__("Jabber ID:")}}}</label>
<input autofocus required <input autofocus required
type="text" type="text"
name="jid" name="jid"
placeholder="{{{placeholder_username}}}"> placeholder="{{{o.placeholder_username}}}">
{[ if (authentication !== EXTERNAL) { ]} {[ if (o.authentication !== o.EXTERNAL) { ]}
<label>{{{__("Password:")}}}</label> <label>{{{o.__("Password:")}}}</label>
<input required <input required
type="password" name="password" type="password" name="password"
placeholder="{{{__('password')}}}"> placeholder="{{{o.__('password')}}}">
{[ } ]} {[ } ]}
<input class="pure-button button-primary" type="submit" value="{{{__('Submit')}}}"> <input class="pure-button button-primary" type="submit" value="{{{o.__('Submit')}}}">
{[ } ]} {[ } ]}
{[ if (authentication == ANONYMOUS) { ]} {[ if (o.authentication == o.ANONYMOUS) { ]}
<input class="pure-button button-primary login-anon" type="submit" value="{{{__('Click here to log in anonymously')}}}"/> <input class="pure-button button-primary login-anon" type="submit" value="{{{o.__('Click here to log in anonymously')}}}"/>
{[ } ]} {[ } ]}
{[ if (authentication == PREBIND) { ]} {[ if (o.authentication == o.PREBIND) { ]}
<p>Disconnected.</p> <p>Disconnected.</p>
{[ } ]} {[ } ]}
{[ } ]} {[ } ]}

View File

@ -1,4 +1,4 @@
<div class="chat-message {{{extra_classes}}}" data-isodate="{{{isodate}}}" data-msgid="{{{msgid}}}"> <div class="chat-message {{{o.extra_classes}}}" data-isodate="{{{o.isodate}}}" data-msgid="{{{o.msgid}}}">
<span class="chat-msg-author chat-msg-{{{sender}}}">{{{time}}} {{{username}}}:&nbsp;</span> <span class="chat-msg-author chat-msg-{{{o.sender}}}">{{{o.time}}} {{{o.username}}}:&nbsp;</span>
<span class="chat-msg-content"><!-- message gets added here via renderMessage --></span> <span class="chat-msg-content"><!-- message gets added here via renderMessage --></span>
</div> </div>

View File

@ -1 +1 @@
<time class="chat-info chat-date" data-isodate="{{{isodate}}}">{{{datestring}}}</time> <time class="chat-info chat-date" data-isodate="{{{o.isodate}}}">{{{o.datestring}}}</time>

View File

@ -1,13 +1,13 @@
<li class="{{{ role }}} occupant" id="{{{ id }}}" <li class="{{{ o.role }}} occupant" id="{{{ o.id }}}"
{[ if (role === "moderator") { ]} {[ if (o.role === "moderator") { ]}
title="{{{ jid }}} {{{ desc_moderator }}} {{{ hint_occupant }}}" title="{{{ o.jid }}} {{{ o.desc_moderator }}} {{{ o.hint_occupant }}}"
{[ } ]} {[ } ]}
{[ if (role === "occupant") { ]} {[ if (o.role === "occupant") { ]}
title="{{{ jid }}} {{{ desc_occupant }}} {{{ hint_occupant }}}" title="{{{ o.jid }}} {{{ o.desc_occupant }}} {{{ o.hint_occupant }}}"
{[ } ]} {[ } ]}
{[ if (role === "visitor") { ]} {[ if (o.role === "visitor") { ]}
title="{{{ jid }}} {{{ desc_visitor }}} {{{ hint_occupant }}}" title="{{{ o.jid }}} {{{ o.desc_visitor }}} {{{ o.hint_occupant }}}"
{[ } ]} {[ } ]}
{[ if (!_.includes(["visitor", "occupant", "moderator"], role)) { ]} {[ if (!_.includes(["visitor", "occupant", "moderator"], o.role)) { ]}
title="{{{ jid }}} {{{ hint_occupant }}}" title="{{{ o.jid }}} {{{ o.hint_occupant }}}"
{[ } ]}><div class="occupant-status occupant-{{{show}}} circle" title="{{{hint_show}}}"></div>{{{nick}}}</li> {[ } ]}><div class="occupant-status occupant-{{{o.show}}} circle" title="{{{o.hint_show}}}"></div>{{{o.nick}}}</li>

View File

@ -1,9 +1,9 @@
{[ if (allow_chat_pending_contacts) { ]} {[ if (o.allow_chat_pending_contacts) { ]}
<a class="open-chat"href="#"> <a class="open-chat"href="#">
{[ } ]} {[ } ]}
<span class="pending-contact-name" title="Name: {{{fullname}}} <span class="pending-contact-name" title="Name: {{{o.fullname}}}
JID: {{{jid}}}">{{{fullname}}}</span> JID: {{{o.jid}}}">{{{o.fullname}}}</span>
{[ if (allow_chat_pending_contacts) { ]} {[ if (o.allow_chat_pending_contacts) { ]}
</a> </a>
{[ } ]} {[ } ]}
<a class="remove-xmpp-contact icon-remove" title="{{{desc_remove}}}" href="#"></a> <a class="remove-xmpp-contact icon-remove" title="{{{o.desc_remove}}}" href="#"></a>

View File

@ -1,4 +1,4 @@
<div class="switch-form"> <div class="switch-form">
<p>{{{ __("Don't have a chat account?") }}}</p> <p>{{{ o.__("Don't have a chat account?") }}}</p>
<p><a class="register-account toggle-register-login" href="#converse/register">{{{__("Create an account")}}}</a></p> <p><a class="register-account toggle-register-login" href="#converse/register">{{{o.__("Create an account")}}}</a></p>
</div> </div>

View File

@ -1,22 +1,22 @@
<form id="converse-register" class="pure-form converse-form"> <form id="converse-register" class="pure-form converse-form">
<legend>{{{__("Create your account")}}}</legend> <legend>{{{o.__("Create your account")}}}</legend>
<label>{{{__("Please enter the XMPP provider to register with:")}}}</label> <label>{{{o.__("Please enter the XMPP provider to register with:")}}}</label>
<p class="form-help">{{{help_providers}}} <a href="{{{href_providers}}}" class="url" target="_blank" rel="noopener">{{{help_providers_link}}}</a>.</p> <p class="form-help">{{{o.help_providers}}} <a href="{{{o.href_providers}}}" class="url" target="_blank" rel="noopener">{{{o.help_providers_link}}}</a>.</p>
<div class="form-errors hidden"></div> <div class="form-errors hidden"></div>
{[ if (default_domain) { ]} {[ if (o.default_domain) { ]}
{{{default_domain}}} {{{o.default_domain}}}
{[ } ]} {[ } ]}
{[ if (!default_domain) { ]} {[ if (!o.default_domain) { ]}
<input autofocus required type="text" name="domain" placeholder="{{{domain_placeholder}}}"> <input autofocus required type="text" name="domain" placeholder="{{{o.domain_placeholder}}}">
<input class="pure-button button-primary" type="submit" value="{{{label_register}}}"> <input class="pure-button button-primary" type="submit" value="{{{o.label_register}}}">
{[ } ]} {[ } ]}
</form> </form>
<div class="switch-form"> <div class="switch-form">
<p>{{{ __("Already have a chat account?") }}}</p> <p>{{{ o.__("Already have a chat account?") }}}</p>
<p> <p>
<a class="login-here toggle-register-login" href="#converse/login">{{{__("Log in here")}}}</a> <a class="login-here toggle-register-login" href="#converse/login">{{{o.__("Log in here")}}}</a>
</p> </p>
</div> </div>

View File

@ -1,11 +1,11 @@
<legend>{{{__("Account Registration:")}}} {{{domain}}}</legend> <legend>{{{o.__("Account Registration:")}}} {{{o.domain}}}</legend>
<p class="title">{{{title}}}</p> <p class="title">{{{o.title}}}</p>
<p class="instructions">{{{instructions}}}</p> <p class="instructions">{{{o.instructions}}}</p>
<div class="form-errors hidden"></div> <div class="form-errors hidden"></div>
<fieldset class="buttons"> <fieldset class="buttons">
<input type="submit" class="pure-button button-primary" value="{{{__('Register')}}}"/> <input type="submit" class="pure-button button-primary" value="{{{o.__('Register')}}}"/>
{[ if (!registration_domain) { ]} {[ if (!o.registration_domain) { ]}
<input type="button" class="pure-button button-cancel" value="{{{__('Choose a different provider')}}}"/> <input type="button" class="pure-button button-cancel" value="{{{o.__('Choose a different provider')}}}"/>
{[ } ]} {[ } ]}
</fieldset> </fieldset>

View File

@ -1,5 +1,5 @@
<span class="spinner login-submit"></span> <span class="spinner login-submit"></span>
<p class="info">{{{__("Hold tight, we're fetching the registration form…")}}}</p> <p class="info">{{{o.__("Hold tight, we're fetching the registration form…")}}}</p>
{[ if (cancel) { ]} {[ if (o.cancel) { ]}
<button class="pure-button button-cancel hor_centered">{{{__('Cancel')}}}</button> <button class="pure-button button-cancel hor_centered">{{{o.__('Cancel')}}}</button>
{[ } ]} {[ } ]}

View File

@ -1,12 +1,12 @@
{[ if (allow_chat_pending_contacts) { ]} {[ if (o.allow_chat_pending_contacts) { ]}
<a class="open-chat"href="#"> <a class="open-chat"href="#">
{[ } ]} {[ } ]}
<span class="req-contact-name" title="Name: {{{fullname}}} <span class="req-contact-name" title="Name: {{{o.fullname}}}
JID: {{{jid}}}">{{{fullname}}}</span> JID: {{{o.jid}}}">{{{o.fullname}}}</span>
{[ if (allow_chat_pending_contacts) { ]} {[ if (o.allow_chat_pending_contacts) { ]}
</a> </a>
{[ } ]} {[ } ]}
<span class="request-actions"> <span class="request-actions">
<a class="accept-xmpp-request icon-checkmark" aria-label="{{{desc_accept}}}" title="{{{desc_accept}}}" href="#"></a> <a class="accept-xmpp-request icon-checkmark" aria-label="{{{o.desc_accept}}}" title="{{{o.desc_accept}}}" href="#"></a>
<a class="decline-xmpp-request icon-close" aria-label="{{{desc_decline}}}" title="{{{desc_decline}}}" href="#"></a> <a class="decline-xmpp-request icon-close" aria-label="{{{o.desc_decline}}}" title="{{{o.desc_decline}}}" href="#"></a>
</span> </span>

View File

@ -1,42 +1,42 @@
<!-- FIXME: check markup in mockup --> <!-- FIXME: check markup in mockup -->
<div class="room-info"> <div class="room-info">
<p class="room-info"><strong>{{{label_jid}}}</strong> {{{jid}}}</p> <p class="room-info"><strong>{{{o.label_jid}}}</strong> {{{o.jid}}}</p>
<p class="room-info"><strong>{{{label_desc}}}</strong> {{{desc}}}</p> <p class="room-info"><strong>{{{o.label_desc}}}</strong> {{{o.desc}}}</p>
<p class="room-info"><strong>{{{label_occ}}}</strong> {{{occ}}}</p> <p class="room-info"><strong>{{{o.label_occ}}}</strong> {{{o.occ}}}</p>
<p class="room-info"><strong>{{{label_features}}}</strong> <p class="room-info"><strong>{{{o.label_features}}}</strong>
<ul> <ul>
{[ if (passwordprotected) { ]} {[ if (o.passwordprotected) { ]}
<li class="room-info locked">{{{label_requires_auth}}}</li> <li class="room-info locked">{{{o.label_requires_auth}}}</li>
{[ } ]} {[ } ]}
{[ if (hidden) { ]} {[ if (o.hidden) { ]}
<li class="room-info">{{{label_hidden}}}</li> <li class="room-info">{{{o.label_hidden}}}</li>
{[ } ]} {[ } ]}
{[ if (membersonly) { ]} {[ if (o.membersonly) { ]}
<li class="room-info">{{{label_requires_invite}}}</li> <li class="room-info">{{{o.label_requires_invite}}}</li>
{[ } ]} {[ } ]}
{[ if (moderated) { ]} {[ if (o.moderated) { ]}
<li class="room-info">{{{label_moderated}}}</li> <li class="room-info">{{{o.label_moderated}}}</li>
{[ } ]} {[ } ]}
{[ if (nonanonymous) { ]} {[ if (o.nonanonymous) { ]}
<li class="room-info">{{{label_non_anon}}}</li> <li class="room-info">{{{o.label_non_anon}}}</li>
{[ } ]} {[ } ]}
{[ if (open) { ]} {[ if (o.open) { ]}
<li class="room-info">{{{label_open_room}}}</li> <li class="room-info">{{{o.label_open_room}}}</li>
{[ } ]} {[ } ]}
{[ if (persistent) { ]} {[ if (o.persistent) { ]}
<li class="room-info">{{{label_permanent_room}}}</li> <li class="room-info">{{{o.label_permanent_room}}}</li>
{[ } ]} {[ } ]}
{[ if (publicroom) { ]} {[ if (o.publicroom) { ]}
<li class="room-info">{{{label_public}}}</li> <li class="room-info">{{{o.label_public}}}</li>
{[ } ]} {[ } ]}
{[ if (semianonymous) { ]} {[ if (o.semianonymous) { ]}
<li class="room-info">{{{label_semi_anon}}}</li> <li class="room-info">{{{o.label_semi_anon}}}</li>
{[ } ]} {[ } ]}
{[ if (temporary) { ]} {[ if (o.temporary) { ]}
<li class="room-info">{{{label_temp_room}}}</li> <li class="room-info">{{{o.label_temp_room}}}</li>
{[ } ]} {[ } ]}
{[ if (unmoderated) { ]} {[ if (o.unmoderated) { ]}
<li class="room-info">{{{label_unmoderated}}}</li> <li class="room-info">{{{o.label_unmoderated}}}</li>
{[ } ]} {[ } ]}
</ul> </ul>
</p> </p>

View File

@ -1,9 +1,9 @@
<dd class="available-chatroom"> <dd class="available-chatroom">
<a class="open-room available-room" <a class="open-room available-room"
data-room-jid="{{{jid}}}" data-room-jid="{{{o.jid}}}"
title="{{{open_title}}}" title="{{{o.open_title}}}"
href="#">{{{name}}}</a> href="#">{{{o.name}}}</a>
<a class="right room-info icon-room-info" <a class="right room-info icon-room-info"
data-room-jid="{{{jid}}}" data-room-jid="{{{o.jid}}}"
title="{{{info_title}}}" href="#">&nbsp;</a> title="{{{o.info_title}}}" href="#">&nbsp;</a>
</dd> </dd>

View File

@ -1,13 +1,13 @@
<form class="pure-form pure-form-stacked converse-form add-chatroom" action="" method="post"> <form class="pure-form pure-form-stacked converse-form add-chatroom" action="" method="post">
<fieldset> <fieldset>
<label>{{label_room_name}}</label> <label>{{{o.label_room_name}}}</label>
<input type="text" name="chatroom" class="new-chatroom-name" placeholder="{{label_room_name}}"/> <input type="text" name="chatroom" class="new-chatroom-name" placeholder="{{{o.label_room_name}}}"/>
{[ if (server_input_type != 'hidden') { ]} {[ if (o.server_input_type != 'hidden') { ]}
<label{{server_label_global_attr}}>{{label_server}}</label> <label{{{o.server_label_global_attr}}}>{{{o.label_server}}}</label>
{[ } ]} {[ } ]}
<input type="{{server_input_type}}" name="server" class="new-chatroom-server" placeholder="{{label_server}}"/> <input type="{{{o.server_input_type}}}" name="server" class="new-chatroom-server" placeholder="{{{o.label_server}}}"/>
<input type="submit" class="pure-button button-primary" name="join" value="{{label_join}}"/> <input type="submit" class="pure-button button-primary" name="join" value="{{{o.label_join}}}"/>
<input type="button" class="pure-button button-secondary" name="show" id="show-rooms" value="{{label_show_rooms}}"/> <input type="button" class="pure-button button-secondary" name="show" id="show-rooms" value="{{{o.label_show_rooms}}}"/>
</fieldset> </fieldset>
</form> </form>
<div class="rooms-list-container"> <div class="rooms-list-container">

View File

@ -1,2 +1,2 @@
<a href="#" class="rooms-toggle open-rooms-toggle icon-{{{toggle_state}}}" title="{{{desc_rooms}}}">{{{label_rooms}}}</a> <a href="#" class="rooms-toggle open-rooms-toggle icon-{{{o.toggle_state}}}" title="{{{o.desc_rooms}}}">{{{o.label_rooms}}}</a>
<dl class="rooms-list open-rooms-list"></dl> <dl class="rooms-list open-rooms-list"></dl>

View File

@ -1,21 +1,21 @@
<dd class="available-chatroom {[ if (num_unread_general) { ]} unread-msgs {[ } ]}" data-room-jid="{{{jid}}}"> <dd class="available-chatroom {[ if (o.num_unread_general) { ]} unread-msgs {[ } ]}" data-room-jid="{{{o.jid}}}">
{[ if (num_unread) { ]} {[ if (o.num_unread) { ]}
<span class="msgs-indicator">{{{ num_unread }}}</span> <span class="msgs-indicator">{{{ o.num_unread }}}</span>
{[ } ]} {[ } ]}
<a class="open-room" <a class="open-room"
data-room-jid="{{{jid}}}" data-room-jid="{{{o.jid}}}"
title="{{{open_title}}}" href="#">{{{name}}}</a> title="{{{o.open_title}}}" href="#">{{{o.name}}}</a>
<a class="right close-room icon-leave" <a class="right close-room icon-leave"
data-room-jid="{{{jid}}}" data-room-jid="{{{o.jid}}}"
data-room-name="{{{name}}}" data-room-name="{{{o.name}}}"
title="{{{info_leave_room}}}" href="#">&nbsp;</a> title="{{{o.info_leave_room}}}" href="#">&nbsp;</a>
{[ if (allow_bookmarks) { ]} {[ if (o.allow_bookmarks) { ]}
<a class="right icon-pushpin {[ if (bookmarked) { ]} remove-bookmark button-on {[ } else { ]} add-bookmark {[ } ]}" <a class="right icon-pushpin {[ if (o.bookmarked) { ]} remove-bookmark button-on {[ } else { ]} add-bookmark {[ } ]}"
data-room-jid="{{{jid}}}" data-bookmark-name="{{{name}}}" data-room-jid="{{{o.jid}}}" data-bookmark-name="{{{o.name}}}"
title="{[ if (bookmarked) { ]} {{{info_remove_bookmark}}} {[ } else { ]} {{{info_add_bookmark}}} {[ } ]}" title="{[ if (o.bookmarked) { ]} {{{o.info_remove_bookmark}}} {[ } else { ]} {{{o.info_add_bookmark}}} {[ } ]}"
href="#">&nbsp;</a> href="#">&nbsp;</a>
{[ } ]} {[ } ]}
<a class="right room-info icon-room-info" data-room-jid="{{{jid}}}" <a class="right room-info icon-room-info" data-room-jid="{{{o.jid}}}"
title="{{{info_title}}}" href="#">&nbsp;</a> title="{{{o.info_title}}}" href="#">&nbsp;</a>
</dd> </dd>

View File

@ -1,29 +1,30 @@
<form class="pure-form roster-filter-form input-button-group"> <form class="pure-form roster-filter-form input-button-group">
<input value="{{filter_text}}" class="roster-filter roster-filter-{{filter_type}}" <input value="{{{o.filter_text}}}"
placeholder="{{placeholder}}"> class="roster-filter roster-filter-{{{o.filter_type}}}"
<select class="state-type state-type-{{filter_type}}"> placeholder="{{{o.placeholder}}}">
<option value="">{{label_any}}</option> <select class="state-type state-type-{{{o.filter_type}}}">
<option {[ if (chat_state === 'unread_messages') { ]} selected="selected" {[ } ]} <option value="">{{{o.label_any}}}</option>
value="unread_messages">{{label_unread_messages}}</option> <option {[ if (o.chat_state === 'unread_messages') { ]} selected="selected" {[ } ]}
<option {[ if (chat_state === 'online') { ]} selected="selected" {[ } ]} value="unread_messages">{{{o.label_unread_messages}}}</option>
value="online">{{label_online}}</option> <option {[ if (o.chat_state === 'online') { ]} selected="selected" {[ } ]}
<option {[ if (chat_state === 'chat') { ]} selected="selected" {[ } ]} value="online">{{{o.label_online}}}</option>
value="chat">{{label_chatty}}</option> <option {[ if (o.chat_state === 'chat') { ]} selected="selected" {[ } ]}
<option {[ if (chat_state === 'dnd') { ]} selected="selected" {[ } ]} value="chat">{{{o.label_chatty}}}</option>
value="dnd">{{label_busy}}</option> <option {[ if (o.chat_state === 'dnd') { ]} selected="selected" {[ } ]}
<option {[ if (chat_state === 'away') { ]} selected="selected" {[ } ]} value="dnd">{{{o.label_busy}}}</option>
value="away">{{label_away}}</option> <option {[ if (o.chat_state === 'away') { ]} selected="selected" {[ } ]}
<option {[ if (chat_state === 'xa') { ]} selected="selected" {[ } ]} value="away">{{{o.label_away}}}</option>
value="xa">{{label_xa}}</option> <option {[ if (o.chat_state === 'xa') { ]} selected="selected" {[ } ]}
<option {[ if (chat_state === 'offline') { ]} selected="selected" {[ } ]} value="xa">{{{o.label_xa}}}</option>
value="offline">{{label_offline}}</option> <option {[ if (o.chat_state === 'offline') { ]} selected="selected" {[ } ]}
value="offline">{{{o.label_offline}}}</option>
</select> </select>
<select class="filter-type"> <select class="filter-type">
<option {[ if (filter_type === 'contacts') { ]} selected="selected" {[ } ]} <option {[ if (o.filter_type === 'contacts') { ]} selected="selected" {[ } ]}
value="contacts">{{label_contacts}}</option> value="contacts">{{{o.label_contacts}}}</option>
<option {[ if (filter_type === 'groups') { ]} selected="selected" {[ } ]} <option {[ if (o.filter_type === 'groups') { ]} selected="selected" {[ } ]}
value="groups">{{label_groups}}</option> value="groups">{{{o.label_groups}}}</option>
<option {[ if (filter_type === 'state') { ]} selected="selected" {[ } ]} <option {[ if (o.filter_type === 'state') { ]} selected="selected" {[ } ]}
value="state">{{label_state}}</option> value="state">{{{o.label_state}}}</option>
</select> </select>
</form> </form>

View File

@ -1,16 +1,16 @@
<a class="open-chat {[ if (num_unread) { ]} unread-msgs {[ } ]}" <a class="open-chat {[ if (o.num_unread) { ]} unread-msgs {[ } ]}"
title="{{{title_fullname}}}: {{{fullname}}} JID: {{{jid}}} {{{desc_chat}}}" title="{{{o.title_fullname}}}: {{{o.fullname}}} JID: {{{o.jid}}} {{{o.desc_chat}}}"
href="#"> href="#">
<div class="avatar avatar-{{{chat_status}}}"> <div class="avatar avatar-{{{o.chat_status}}}">
<span class="status-icon icon-{{{chat_status}}}" title="{{{desc_status}}}"></span> <span class="status-icon icon-{{{o.chat_status}}}" title="{{{o.desc_status}}}"></span>
</div> </div>
{[ if (num_unread) { ]} {[ if (o.num_unread) { ]}
<span class="msgs-indicator">{{{ num_unread }}}</span> <span class="msgs-indicator">{{{ o.num_unread }}}</span>
{[ } ]} {[ } ]}
<span class="contact-name {[ if (num_unread) { ]} unread-msgs {[ } ]}">{{{fullname}}}</span> <span class="contact-name {[ if (o.num_unread) { ]} unread-msgs {[ } ]}">{{{o.fullname}}}</span>
</a> </a>
{[ if (allow_contact_removal) { ]} {[ if (o.allow_contact_removal) { ]}
<a class="remove-xmpp-contact icon-remove" title="{{{desc_remove}}}" href="#"></a> <a class="remove-xmpp-contact icon-remove" title="{{{o.desc_remove}}}" href="#"></a>
{[ } ]} {[ } ]}

View File

@ -3,7 +3,7 @@
<input type="text" <input type="text"
name="identifier" name="identifier"
class="username" class="username"
placeholder="{{{label_contact_name}}}"/> placeholder="{{{o.label_contact_name}}}"/>
<button type="submit">{{{label_search}}}</button> <button type="submit">{{{o.label_search}}}</button>
</form> </form>
</li> </li>

View File

@ -1 +1 @@
<option value="{{{value}}}" {[ if (selected) { ]} selected="selected" {[ } ]} >{{{label}}}</option> <option value="{{{o.value}}}" {[ if (o.selected) { ]} selected="selected" {[ } ]} >{{{o.label}}}</option>

View File

@ -1,6 +1,6 @@
<li> <li>
<a href="#" class="{{{ value }}}" data-value="{{{ value }}}"> <a href="#" class="{{{ o.value }}}" data-value="{{{ o.value }}}">
<span class="icon-{{{ value }}}"></span> <span class="icon-{{{ o.value }}}"></span>
{{{ text }}} {{{ o.text }}}
</a> </a>
</li> </li>

View File

@ -1,4 +1,4 @@
{{{Minimized}}} <span id="minimized-count">({{{num_minimized}}})</span> {{{o.Minimized}}} <span id="minimized-count">({{{o.num_minimized}}})</span>
<span class="unread-message-count <span class="unread-message-count
{[ if (!num_unread) { ]} unread-message-count-hidden {[ } ]} {[ if (!o.num_unread) { ]} unread-message-count-hidden {[ } ]}
href="#">{{{num_unread}}}</span> href="#">{{{o.num_unread}}}</span>

View File

@ -1,11 +1,11 @@
{[ if (use_emoji) { ]} {[ if (o.use_emoji) { ]}
<li class="toggle-toolbar-menu toggle-smiley icon-happy" title="{{{label_insert_smiley}}}"> <li class="toggle-toolbar-menu toggle-smiley icon-happy" title="{{{o.label_insert_smiley}}}">
<ul class="emoji-picker"></ul> <ul class="emoji-picker"></ul>
</li> </li>
{[ } ]} {[ } ]}
{[ if (show_call_button) { ]} {[ if (o.show_call_button) { ]}
<li class="toggle-call"><a class="icon-phone" title="{{{label_start_call}}}"></a></li> <li class="toggle-call"><a class="icon-phone" title="{{{o.label_start_call}}}"></a></li>
{[ } ]} {[ } ]}
{[ if (show_clear_button) { ]} {[ if (o.show_clear_button) { ]}
<li class="toggle-clear"><a class="icon-trash" title="{{{label_clear}}}"></a></li> <li class="toggle-clear"><a class="icon-trash" title="{{{o.label_clear}}}"></a></li>
{[ } ]} {[ } ]}

View File

@ -1,31 +1,30 @@
{[ if (allow_otr) { ]} {[ if (o.allow_otr) { ]}
<li class="toggle-toolbar-menu toggle-otr {{{otr_status_class}}}" title="{{{otr_tooltip}}}"> <li class="toggle-toolbar-menu toggle-otr {{{o.otr_status_class}}}" title="{{{o.otr_tooltip}}}">
<span class="chat-toolbar-text">{{{otr_translated_status}}}</span> <span class="chat-toolbar-text">{{{o.otr_translated_status}}}</span>
{[ if (otr_status == UNENCRYPTED) { ]} {[ if (o.otr_status == o.UNENCRYPTED) { ]}
<span class="icon-unlocked"></span> <span class="icon-unlocked"></span>
{[ } ]} {[ } ]}
{[ if (otr_status == UNVERIFIED) { ]} {[ if (o.otr_status == o.UNVERIFIED) { ]}
<span class="icon-lock"></span> <span class="icon-lock"></span>
{[ } ]} {[ } ]}
{[ if (otr_status == VERIFIED) { ]} {[ if (o.otr_status == o.VERIFIED) { ]}
<span class="icon-lock"></span> <span class="icon-lock"></span>
{[ } ]} {[ } ]} {[ if (o.otr_status == o.FINISHED) { ]}
{[ if (otr_status == FINISHED) { ]}
<span class="icon-unlocked"></span> <span class="icon-unlocked"></span>
{[ } ]} {[ } ]}
<ul class="toolbar-menu collapsed"> <ul class="toolbar-menu collapsed">
{[ if (otr_status == UNENCRYPTED) { ]} {[ if (o.otr_status == o.UNENCRYPTED) { ]}
<li><a class="start-otr" href="#">{{{label_start_encrypted_conversation}}}</a></li> <li><a class="start-otr" href="#">{{{o.label_start_encrypted_conversation}}}</a></li>
{[ } ]} {[ } ]}
{[ if (otr_status != UNENCRYPTED) { ]} {[ if (o.otr_status != o.UNENCRYPTED) { ]}
<li><a class="start-otr" href="#">{{{label_refresh_encrypted_conversation}}}</a></li> <li><a class="start-otr" href="#">{{{o.label_refresh_encrypted_conversation}}}</a></li>
<li><a class="end-otr" href="#">{{{label_end_encrypted_conversation}}}</a></li> <li><a class="end-otr" href="#">{{{o.label_end_encrypted_conversation}}}</a></li>
<li><a class="auth-otr" data-scheme="smp" href="#">{{{label_verify_with_smp}}}</a></li> <li><a class="auth-otr" data-scheme="smp" href="#">{{{o.label_verify_with_smp}}}</a></li>
{[ } ]} {[ } ]}
{[ if (otr_status == UNVERIFIED) { ]} {[ if (o.otr_status == o.UNVERIFIED) { ]}
<li><a class="auth-otr" data-scheme="fingerprint" href="#">{{{label_verify_with_fingerprints}}}</a></li> <li><a class="auth-otr" data-scheme="fingerprint" href="#">{{{o.label_verify_with_fingerprints}}}</a></li>
{[ } ]} {[ } ]}
<li><a href="http://www.cypherpunks.ca/otr/help/3.2.0/levels.php" target="_blank" rel="noopener">{{{label_whats_this}}}</a></li> <li><a href="http://www.cypherpunks.ca/otr/help/3.2.0/levels.php" target="_blank" rel="noopener">{{{o.label_whats_this}}}</a></li>
</ul> </ul>
</li> </li>
{[ } ]} {[ } ]}

View File

@ -1,7 +1,7 @@
<a class="chatbox-btn close-chatbox-button icon-close"></a> <a class="chatbox-btn close-chatbox-button icon-close"></a>
<a class="chat-head-message-count <a class="chat-head-message-count
{[ if (!num_unread) { ]} chat-head-message-count-hidden {[ } ]}" {[ if (!o.num_unread) { ]} chat-head-message-count-hidden {[ } ]}"
href="#">{{{num_unread}}}</a> href="#">{{{o.num_unread}}}</a>
<a href="#" class="restore-chat" title="{{{tooltip}}}"> <a href="#" class="restore-chat" title="{{{o.tooltip}}}">
{{{ title }}} {{{o. title }}}
</a> </a>