Commit 339d8a8f authored by Emmanuel Gil Peyrot's avatar Emmanuel Gil Peyrot Committed by JC Brand

Add XHTML compatibility

This is mainly a testing tool, which makes a mode where all HTML bugs
which could slightly mess up the rendering will trigger proper errors in
the browser.

Fixes #1131.
parent 88e74975
This diff is collapsed.
...@@ -289,9 +289,11 @@ converse.plugins.add('converse-muc', { ...@@ -289,9 +289,11 @@ converse.plugins.add('converse-muc', {
*/ */
this.occupants.browserStorage._clear(); this.occupants.browserStorage._clear();
this.occupants.reset(); this.occupants.reset();
const disco_entity = _converse.disco_entities.get(this.get('jid')); if (_converse.disco_entities) {
if (disco_entity) { const disco_entity = _converse.disco_entities.get(this.get('jid'));
disco_entity.destroy(); if (disco_entity) {
disco_entity.destroy();
}
} }
if (_converse.connection.connected) { if (_converse.connection.connected) {
this.sendUnavailablePresence(exit_msg); this.sendUnavailablePresence(exit_msg);
......
...@@ -5,20 +5,20 @@ ...@@ -5,20 +5,20 @@
<h5 class="modal-title" <h5 class="modal-title"
id="add-chatroom-modal-label">{{{o.heading_new_chatroom}}}</h5> id="add-chatroom-modal-label">{{{o.heading_new_chatroom}}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">×</span>
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form class="converse-form add-chatroom"> <form class="converse-form add-chatroom">
<div class="form-group"> <div class="form-group">
<label for="chatroom">{{{o.label_room_address}}}:</label> <label for="chatroom">{{{o.label_room_address}}}:</label>
<input type="text" required="required" name="chatroom" class="form-control" placeholder="{{{o.chatroom_placeholder}}}"> <input type="text" required="required" name="chatroom" class="form-control" placeholder="{{{o.chatroom_placeholder}}}"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="nickname">{{{o.label_nickname}}}:</label> <label for="nickname">{{{o.label_nickname}}}:</label>
<input type="text" name="nickname" value="{{{o.nick}}}" class="form-control"> <input type="text" name="nickname" value="{{{o.nick}}}" class="form-control"/>
</div> </div>
<input type="submit" class="btn btn-primary" name="join" value="{{{o.label_join}}}"> <input type="submit" class="btn btn-primary" name="join" value="{{{o.label_join}}}"/>
</form> </form>
</div> </div>
</div> </div>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="addContactModalLabel">{{{o.heading_new_contact}}}</h5> <h5 class="modal-title" id="addContactModalLabel">{{{o.heading_new_contact}}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
</div> </div>
<form class="converse-form add-xmpp-contact"> <form class="converse-form add-xmpp-contact">
<div class="modal-body"> <div class="modal-body">
......
...@@ -4,13 +4,13 @@ ...@@ -4,13 +4,13 @@
<div class="modal-header {{{o.type}}}"> <div class="modal-header {{{o.type}}}">
<h5 class="modal-title">{{{o.title}}}</h5> <h5 class="modal-title">{{{o.title}}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">×</span>
</button> </button>
</div> </div>
<div class="modal-body">{[o.messages.forEach(function (message) { ]} <div class="modal-body">{[o.messages.forEach(function (message) { ]}
<p>{{{message}}}</p> <p>{{{message}}}</p>
{[ }) ]} {[ }) ]}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
<a class="list-item-link open-room w-100" data-room-jid="{{{o.jid}}}" title="{{{o.open_title}}}" href="#">{{{o.name}}}</a> <a class="list-item-link open-room w-100" data-room-jid="{{{o.jid}}}" title="{{{o.open_title}}}" href="#">{{{o.name}}}</a>
<a class="list-item-action remove-bookmark fa fa-bookmark align-self-center {[ if (o.bookmarked) { ]} button-on {[ } ]}" <a class="list-item-action remove-bookmark fa fa-bookmark align-self-center {[ if (o.bookmarked) { ]} button-on {[ } ]}"
data-room-jid="{{{o.jid}}}" data-bookmark-name="{{{o.name}}}" data-room-jid="{{{o.jid}}}" data-bookmark-name="{{{o.name}}}"
title="{{{o.info_remove_bookmark}}}" href="#">&nbsp;</a> title="{{{o.info_remove_bookmark}}}" href="#"></a>
</div> </div>
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="changeStatusModalLabel">{{{o.modal_title}}}</h5> <h5 class="modal-title" id="changeStatusModalLabel">{{{o.modal_title}}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}"> <button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">×</span>
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
...@@ -13,33 +13,33 @@ ...@@ -13,33 +13,33 @@
<div class="form-group"> <div class="form-group">
<div class="custom-control custom-radio"> <div class="custom-control custom-radio">
<input {[ if (o.status === 'online') { ]} checked="checked" {[ } ]} <input {[ if (o.status === 'online') { ]} checked="checked" {[ } ]}
type="radio" id="radio-online" value="online" name="chat_status" class="custom-control-input"> type="radio" id="radio-online" value="online" name="chat_status" class="custom-control-input"/>
<label class="custom-control-label" for="radio-online"> <label class="custom-control-label" for="radio-online">
<span class="fa fa-circle chat-status chat-status--online"></span>&nbsp;{{{o.label_online}}}</label> <span class="fa fa-circle chat-status chat-status--online"></span>{{{o.label_online}}}</label>
</div> </div>
<div class="custom-control custom-radio"> <div class="custom-control custom-radio">
<input {[ if (o.status === 'busy') { ]} checked="checked" {[ } ]} <input {[ if (o.status === 'busy') { ]} checked="checked" {[ } ]}
type="radio" id="radio-busy" value="dnd" name="chat_status" class="custom-control-input"> type="radio" id="radio-busy" value="dnd" name="chat_status" class="custom-control-input"/>
<label class="custom-control-label" for="radio-busy"> <label class="custom-control-label" for="radio-busy">
<span class="fa fa-minus-circle chat-status chat-status--busy"></span>&nbsp;{{{o.label_busy}}}</label> <span class="fa fa-minus-circle chat-status chat-status--busy"></span>{{{o.label_busy}}}</label>
</div> </div>
<div class="custom-control custom-radio"> <div class="custom-control custom-radio">
<input {[ if (o.status === 'away') { ]} checked="checked" {[ } ]} <input {[ if (o.status === 'away') { ]} checked="checked" {[ } ]}
type="radio" id="radio-away" value="away" name="chat_status" class="custom-control-input"> type="radio" id="radio-away" value="away" name="chat_status" class="custom-control-input"/>
<label class="custom-control-label" for="radio-away"> <label class="custom-control-label" for="radio-away">
<span class="fa fa-circle chat-status chat-status--away"></span>&nbsp;{{{o.label_away}}}</label> <span class="fa fa-circle chat-status chat-status--away"></span>{{{o.label_away}}}</label>
</div> </div>
<div class="custom-control custom-radio"> <div class="custom-control custom-radio">
<input {[ if (o.status === 'xa') { ]} checked="checked" {[ } ]} <input {[ if (o.status === 'xa') { ]} checked="checked" {[ } ]}
type="radio" id="radio-xa" value="xa" name="chat_status" class="custom-control-input"> type="radio" id="radio-xa" value="xa" name="chat_status" class="custom-control-input"/>
<label class="custom-control-label" for="radio-xa"> <label class="custom-control-label" for="radio-xa">
<span class="far fa-circle chat-status chat-status--xa"></span>&nbsp;{{{o.label_xa}}}</label> <span class="far fa-circle chat-status chat-status--xa"></span>{{{o.label_xa}}}</label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="btn-group w-100"> <div class="btn-group w-100">
<input name="status_message" type="text" class="form-control" <input name="status_message" type="text" class="form-control"
value="{{{o.status_message}}}" placeholder="{{{o.placeholder_status_message}}}"> value="{{{o.status_message}}}" placeholder="{{{o.placeholder_status_message}}}"/>
<span class="clear-input fa fa-times {[ if (!o.status_message) { ]} hidden {[ } ]}"></span> <span class="clear-input fa fa-times {[ if (!o.status_message) { ]} hidden {[ } ]}"></span>
</div> </div>
</div> </div>
......
<div class="flyout box-flyout"> <div class="flyout box-flyout">
<div class="chat-body"> <div class="chat-body">
<div class="chat-content {[ if (o.show_send_button) { ]}chat-content-sendbutton{[ } ]}"></div> <div class="chat-content {[ if (o.show_send_button) { ]}chat-content-sendbutton{[ } ]}"></div>
<div class="message-form-container"/> <div class="message-form-container"></div>
</div> </div>
</div> </div>
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</div> </div>
</div> </div>
<div class="chatbox-buttons row no-gutters"> <div class="chatbox-buttons row no-gutters">
<a class="chatbox-btn close-chatbox-button fa fa-times" title={{{o.info_close}}}></a> <a class="chatbox-btn close-chatbox-button fa fa-times" title="{{{o.info_close}}}"></a>
<a class="chatbox-btn show-user-details-modal fa fa-id-card" title="{{{o.info_details}}}"></a> <a class="chatbox-btn show-user-details-modal fa fa-id-card" title="{{{o.info_details}}}"></a>
</div> </div>
</div> </div>
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
class="{[ if (!o.composing_spoiler) { ]} hidden {[ } ]} spoiler-hint"/> class="{[ if (!o.composing_spoiler) { ]} hidden {[ } ]} spoiler-hint"/>
<div class="suggestion-box"> <div class="suggestion-box">
<ul class="suggestion-box__results suggestion-box__results--above" hidden></ul> <ul class="suggestion-box__results suggestion-box__results--above" hidden=""></ul>
<textarea <textarea
type="text" type="text"
class="chat-textarea suggestion-box__input class="chat-textarea suggestion-box__input
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="room-details-modal-label">{{{o.display_name}}}</h5> <h5 class="modal-title" id="room-details-modal-label">{{{o.display_name}}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}"><span aria-hidden="true">&times;</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}"><span aria-hidden="true">×</span></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="room-info"> <div class="room-info">
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="room-registration-modal-label">{{{o.display_name}}}</h5> <h5 class="modal-title" id="room-registration-modal-label">{{{o.display_name}}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}"><span aria-hidden="true">&times;</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}"><span aria-hidden="true">×</span></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form class="converse-form"> <form class="converse-form">
......
...@@ -5,16 +5,15 @@ ...@@ -5,16 +5,15 @@
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="changeStatusModalLabel">{{{o.modal_title}}}</h5> <h5 class="modal-title" id="changeStatusModalLabel">{{{o.modal_title}}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}"> <button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">×</span>
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="container brand-heading-container"> <div class="container brand-heading-container">
<h6 class="brand-heading"><i class="icon-conversejs"></i>Converse</h6> <h6 class="brand-heading"><i class="icon-conversejs"></i>Converse</h6>
<p class="brand-subtitle">{{{o.version_name}}}</p> <p class="brand-subtitle">{{{o.version_name}}}</p>
<p class="brand-subtitle">{{o.first_subtitle}}</a> </p> <p class="brand-subtitle">{{o.first_subtitle}}</p>
<p class="brand-subtitle">{{o.second_subtitle}}</p> <p class="brand-subtitle">{{o.second_subtitle}}</p>
<div>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -4,6 +4,6 @@ ...@@ -4,6 +4,6 @@
</label> </label>
{[ } ]} {[ } ]}
<img src="data:{{{o.type}}};base64,{{{o.data}}}"> <img src="data:{{{o.type}}};base64,{{{o.data}}}">
<input name="{{{o.name}}}" type="text" {[ if (o.required) { ]} class="required" {[ } ]} > <input name="{{{o.name}}}" type="text" {[ if (o.required) { ]} class="required" {[ } ]} />
<div class="form-group"> <div class="form-group">
<input id="{{{o.id}}}" name="{{{o.name}}}" type="checkbox" {{{o.checked}}} {[ if (o.required) { ]} required {[ } ]} > <input id="{{{o.id}}}" name="{{{o.name}}}" type="checkbox" {{{o.checked}}} {[ if (o.required) { ]} required {[ } ]} />
<label class="form-check-label" for="{{{o.id}}}">{{{o.label}}}</label> <label class="form-check-label" for="{{{o.id}}}">{{{o.label}}}</label>
</div> </div>
...@@ -5,5 +5,5 @@ ...@@ -5,5 +5,5 @@
<input class="form-control" name="{{{o.name}}}" type="{{{o.type}}}" id="{{{o.id}}}" <input class="form-control" name="{{{o.name}}}" type="{{{o.type}}}" id="{{{o.id}}}"
{[ if (o.placeholder) { ]} placeholder="{{{o.placeholder}}}" {[ } ]} {[ if (o.placeholder) { ]} placeholder="{{{o.placeholder}}}" {[ } ]}
{[ if (o.value) { ]} value="{{{o.value}}}" {[ } ]} {[ if (o.value) { ]} value="{{{o.value}}}" {[ } ]}
{[ if (o.required) { ]} required {[ } ]} > {[ if (o.required) { ]} required {[ } ]} />
</div> </div>
<a href="{{{o.url}}}" target="_blank" rel="noopener"><img class="chat-image img-thumbnail" src="{{{o.url}}}"></a> <a href="{{{o.url}}}" target="_blank" rel="noopener"><img class="chat-image img-thumbnail" src="{{{o.url}}}"/></a>
...@@ -4,5 +4,5 @@ ...@@ -4,5 +4,5 @@
<p class="brand-subtitle">{{{o.version_name}}}</p> <p class="brand-subtitle">{{{o.version_name}}}</p>
<p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://conversejs.org">Open Source</a> XMPP chat client brought to you by <a target="_blank" rel="nofollow" href="https://opkode.com">Opkode</a> </p> <p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://conversejs.org">Open Source</a> XMPP chat client brought to you by <a target="_blank" rel="nofollow" href="https://opkode.com">Opkode</a> </p>
<p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://hosted.weblate.org/projects/conversejs/#languages">Translate</a> it into your own language</p> <p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://hosted.weblate.org/projects/conversejs/#languages">Translate</a> it into your own language</p>
<div> </div>
</div> </div>
...@@ -5,16 +5,16 @@ ...@@ -5,16 +5,16 @@
<h5 class="modal-title" <h5 class="modal-title"
id="list-chatrooms-modal-label">{{{o.heading_list_chatrooms}}}</h5> id="list-chatrooms-modal-label">{{{o.heading_list_chatrooms}}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">×</span>
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form class="converse-form list-chatrooms"> <form class="converse-form list-chatrooms">
<div class="form-group"> <div class="form-group">
<label for="chatroom">{{{o.label_server_address}}}:</label> <label for="chatroom">{{{o.label_server_address}}}:</label>
<input type="text" value="{{{o.muc_domain}}}" required="required" name="server" class="form-control" placeholder="{{{o.server_placeholder}}}"> <input type="text" value="{{{o.muc_domain}}}" required="required" name="server" class="form-control" placeholder="{{{o.server_placeholder}}}"/>
</div> </div>
<input type="submit" class="btn btn-primary" name="join" value="{{{o.label_query}}}"> <input type="submit" class="btn btn-primary" name="join" value="{{{o.label_query}}}"/>
</form> </form>
<ul class="available-chatrooms list-group"></ul> <ul class="available-chatrooms list-group"></ul>
</div> </div>
......
...@@ -10,17 +10,17 @@ ...@@ -10,17 +10,17 @@
{[ if (o.authentication == o.LOGIN || o.authentication == o.EXTERNAL) { ]} {[ if (o.authentication == o.LOGIN || o.authentication == o.EXTERNAL) { ]}
<div class="form-group"> <div class="form-group">
<label for="converse-login-jid">{{{o.__("XMPP Username:")}}}</label> <label for="converse-login-jid">{{{o.__("XMPP Username:")}}}</label>
<input id="converse-login-jid" class="form-control" autofocus required="required" type="text" name="jid" placeholder="{{{o.placeholder_username}}}"> <input id="converse-login-jid" class="form-control" autofocus required="required" type="text" name="jid" placeholder="{{{o.placeholder_username}}}"/>
</div> </div>
{[ if (o.authentication !== o.EXTERNAL) { ]} {[ if (o.authentication !== o.EXTERNAL) { ]}
<div class="form-group"> <div class="form-group">
<label for="converse-login-password">{{{o.__("Password:")}}}</label> <label for="converse-login-password">{{{o.__("Password:")}}}</label>
<input id="converse-login-password" class="form-control" required="required" type="password" name="password" placeholder="{{{o.__('password')}}}"> <input id="converse-login-password" class="form-control" required="required" type="password" name="password" placeholder="{{{o.__('password')}}}"/>
</div> </div>
{[ } ]} {[ } ]}
{[ if (o.show_trust_checkbox) { ]} {[ if (o.show_trust_checkbox) { ]}
<div class="form-group form-check login-trusted"> <div class="form-group form-check login-trusted">
<input id="converse-login-trusted" type="checkbox" class="form-check-input" name="trusted" {[ if (o._converse.config.get('trusted')) { ]} checked="checked" {[ } ]}> <input id="converse-login-trusted" type="checkbox" class="form-check-input" name="trusted" {[ if (o._converse.config.get('trusted')) { ]} checked="checked" {[ } ]}/>
<label for="converse-login-trusted" class="form-check-label login-trusted__desc">{{{o.__('This is a trusted device')}}}</label> <label for="converse-login-trusted" class="form-check-label login-trusted__desc">{{{o.__('This is a trusted device')}}}</label>
<i class="fa fa-info-circle" data-toggle="popover" <i class="fa fa-info-circle" data-toggle="popover"
data-title="Trusted device?" data-title="Trusted device?"
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
{[ } ]} {[ } ]}
<fieldset class="buttons"> <fieldset class="buttons">
<input class="btn btn-primary" type="submit" value="{{{o.__('Log in')}}}"> <input class="btn btn-primary" type="submit" value="{{{o.__('Log in')}}}"/>
</fieldset> </fieldset>
{[ } ]} {[ } ]}
{[ if (o.authentication == o.ANONYMOUS) { ]} {[ if (o.authentication == o.ANONYMOUS) { ]}
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
{[ if (o.is_encrypted) { ]}<span class="fa fa-lock"></span>{[ } ]} {[ if (o.is_encrypted) { ]}<span class="fa fa-lock"></span>{[ } ]}
</span> </span>
{[ if (!o.is_me_message) { ]}<div class="chat-msg__body">{[ } ]} {[ if (!o.is_me_message) { ]}<div class="chat-msg__body">{[ } ]}
{[ if (o.received) { ]} <span class="fa fa-check chat-msg__receipt">&nbsp;</span> {[ } ]} {[ if (o.received) { ]} <span class="fa fa-check chat-msg__receipt"></span> {[ } ]}
{[ if (o.edited) { ]} <i title="{{{o.__('This message has been edited')}}}" class="fa fa-edit chat-msg__edit-modal"></i> {[ } ]} {[ if (o.edited) { ]} <i title="{{{o.__('This message has been edited')}}}" class="fa fa-edit chat-msg__edit-modal"></i> {[ } ]}
{[ if (!o.is_me_message) { ]}<div class="chat-msg__message">{[ } ]} {[ if (!o.is_me_message) { ]}<div class="chat-msg__message">{[ } ]}
{[ if (o.is_spoiler) { ]} {[ if (o.is_spoiler) { ]}
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
{[ if (!o.is_me_message) { ]}</div>{[ } ]} {[ if (!o.is_me_message) { ]}</div>{[ } ]}
{[ if (o.type !== 'headline' && !o.is_me_message && o.sender === 'me') { ]} {[ if (o.type !== 'headline' && !o.is_me_message && o.sender === 'me') { ]}
<div class="chat-msg__actions"> <div class="chat-msg__actions">
<button class="chat-msg__action chat-msg__action-edit fa fa-pencil-alt" title="{{{o.__('Edit this message')}}}">&nbsp;</button> <button class="chat-msg__action chat-msg__action-edit fa fa-pencil-alt" title="{{{o.__('Edit this message')}}}"></button>
</div> </div>
{[ } ]} {[ } ]}
......
...@@ -3,12 +3,12 @@ ...@@ -3,12 +3,12 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h4 class="modal-title" id="message-versions-modal-label">{{{o.__('Message versions')}}}</h4> <h4 class="modal-title" id="message-versions-modal-label">{{{o.__('Message versions')}}}</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}"><span aria-hidden="true">&times;</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}"><span aria-hidden="true">×</span></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<h4>Older versions</h4> <h4>Older versions</h4>
{[o.older_versions.forEach(function (text) { ]} <p class="older-msg">{{{text}}}</p> {[ }); ]} {[o.older_versions.forEach(function (text) { ]} <p class="older-msg">{{{text}}}</p> {[ }); ]}
<hr> <hr/>
<h4>Current version</h4> <h4>Current version</h4>
<p>{{{o.message}}}</p> <p>{{{o.message}}}</p>
</div> </div>
......
<div class="message date-separator" data-isodate="{{{o.isodate}}}"> <div class="message date-separator" data-isodate="{{{o.isodate}}}">
<hr class="separator"> <hr class="separator"/>
<time class="separator-text" datetime="{{{o.isodate}}}"><span>{{{o.datestring}}}</span></time> <time class="separator-text" datetime="{{{o.isodate}}}"><span>{{{o.datestring}}}</span></time>
</div> </div>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
{[ o._.forEach(o.providers, function (provider) { ]} {[ o._.forEach(o.providers, function (provider) { ]}
<p class="oauth-provider"> <p class="oauth-provider">
<a class="oauth-login" href="#" data-id="{{provider.id}}"> <a class="oauth-login" href="#" data-id="{{provider.id}}">
<i class="fa {{ provider.class}}"></i>{{provider.login_text}}</span> <i class="fa {{ provider.class}}"></i>{{provider.login_text}}
</a> </a>
</p> </p>
{[ }); ]} {[ }); ]}
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="user-profile-modal-label">{{{o.heading_profile}}}</h5> <h5 class="modal-title" id="user-profile-modal-label">{{{o.heading_profile}}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}"><span aria-hidden="true">&times;</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="{{{o.label_close}}}"><span aria-hidden="true">×</span></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
{[ if (o._converse.pluggable.plugins['converse-omemo'].enabled(o._converse)) { ]} {[ if (o._converse.pluggable.plugins['converse-omemo'].enabled(o._converse)) { ]}
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<canvas class="avatar" height="100px" width="100px"></canvas> <canvas class="avatar" height="100px" width="100px"></canvas>
{[ } ]} {[ } ]}
</a> </a>
<input class="hidden" name="image" type="file"> <input class="hidden" name="image" type="file"/>
</div> </div>
<div class="col"> <div class="col">
<div class="form-group"> <div class="form-group">
...@@ -40,23 +40,23 @@ ...@@ -40,23 +40,23 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="vcard-fullname" class="col-form-label">{{{o.label_fullname}}}:</label> <label for="vcard-fullname" class="col-form-label">{{{o.label_fullname}}}:</label>
<input id="vcard-fullname" type="text" class="form-control" name="fn" value="{{{o.fullname}}}"> <input id="vcard-fullname" type="text" class="form-control" name="fn" value="{{{o.fullname}}}"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="vcard-nickname" class="col-form-label">{{{o.label_nickname}}}:</label> <label for="vcard-nickname" class="col-form-label">{{{o.label_nickname}}}:</label>
<input id="vcard-nickname" type="text" class="form-control" name="nickname" value="{{{o.nickname}}}"> <input id="vcard-nickname" type="text" class="form-control" name="nickname" value="{{{o.nickname}}}"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="vcard-url" class="col-form-label">{{{o.label_url}}}:</label> <label for="vcard-url" class="col-form-label">{{{o.label_url}}}:</label>
<input id="vcard-url" type="url" class="form-control" name="url" value="{{{o.url}}}"> <input id="vcard-url" type="url" class="form-control" name="url" value="{{{o.url}}}"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="vcard-email" class="col-form-label">{{{o.label_email}}}:</label> <label for="vcard-email" class="col-form-label">{{{o.label_email}}}:</label>
<input id="vcard-email" type="email" class="form-control" name="email" value="{{{o.email}}}"> <input id="vcard-email" type="email" class="form-control" name="email" value="{{{o.email}}}"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="vcard-role" class="col-form-label">{{{o.label_role}}}:</label> <label for="vcard-role" class="col-form-label">{{{o.label_role}}}:</label>
<input id="vcard-role" type="text" class="form-control" name="role" value="{{{o.role}}}" aria-describedby="vcard-role-help"> <input id="vcard-role" type="text" class="form-control" name="role" value="{{{o.role}}}" aria-describedby="vcard-role-help"/>
<small id="vcard-role-help" class="form-text text-muted">{{{o.label_role_help}}}</small> <small id="vcard-role-help" class="form-text text-muted">{{{o.label_role_help}}}</small>
</div> </div>
<hr/> <hr/>
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
<li class="list-group-item nopadding active"> <li class="list-group-item nopadding active">
<label> <label>
<input type="checkbox" class="select-all" title="{{{o.__('Select all')}}}" <input type="checkbox" class="select-all" title="{{{o.__('Select all')}}}"
aria-label="{{{o.__('Checkbox to select fingerprints of all other OMEMO devices')}}}"> aria-label="{{{o.__('Checkbox to select fingerprints of all other OMEMO devices')}}}"/>
{{{o.__('Other OMEMO-enabled devices')}}} {{{o.__('Other OMEMO-enabled devices')}}}
</label> </label>
</li> </li>
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
<li class="fingerprint-removal-item list-group-item nopadding"> <li class="fingerprint-removal-item list-group-item nopadding">
<label> <label>
<input type="checkbox" value="{{{device.get('id')}}}" <input type="checkbox" value="{{{device.get('id')}}}"
aria-label="{{{o.__('Checkbox for selecting the following fingerprint')}}}"> aria-label="{{{o.__('Checkbox for selecting the following fingerprint')}}}"/>
<span class="fingerprint">{{{o.utils.formatFingerprint(device.get('bundle').fingerprint)}}}</span> <span class="fingerprint">{{{o.utils.formatFingerprint(device.get('bundle').fingerprint)}}}</span>
</label> </label>
</li> </li>
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
<li class="fingerprint-removal-item list-group-item nopadding"> <li class="fingerprint-removal-item list-group-item nopadding">
<label> <label>
<input type="checkbox" value="{{{device.get('id')}}}" <input type="checkbox" value="{{{device.get('id')}}}"
aria-label="{{{o.__('Checkbox for selecting the following fingerprint')}}}"> aria-label="{{{o.__('Checkbox for selecting the following fingerprint')}}}"/>
<span>{{{o.__('Device without a fingerprint')}}}</span> <span>{{{o.__('Device without a fingerprint')}}}</span>
</label> </label>
</li> </li>
......
...@@ -9,19 +9,18 @@ ...@@ -9,19 +9,18 @@
{[ if (o.default_domain) { ]} {[ if (o.default_domain) { ]}
{{{o.default_domain}}} {{{o.default_domain}}}
</div> </div>
{[ } ]} {[ } else { ]}
{[ if (!o.default_domain) { ]} <input class="form-control" autofocus="autofocus" required="required" type="text" name="domain" placeholder="{{{o.domain_placeholder}}}"/>
<input class="form-control" autofocus="autofocus" required="required" type="text" name="domain" placeholder="{{{o.domain_placeholder}}}">
<p class="form-text text-muted">{{{o.help_providers}}} <a href="{{{o.href_providers}}}" class="url" target="_blank" rel="noopener">{{{o.help_providers_link}}}</a>.</p> <p class="form-text text-muted">{{{o.help_providers}}} <a href="{{{o.href_providers}}}" class="url" target="_blank" rel="noopener">{{{o.help_providers_link}}}</a>.</p>
</div> </div>
<fieldset class="buttons"> <fieldset class="buttons">
<input class="btn btn-primary" type="submit" value="{{{o.label_register}}}"> <input class="btn btn-primary" type="submit" value="{{{o.label_register}}}"/>
<div class="switch-form"> <div class="switch-form">
<p>{{{ o.__("Already have a chat account?") }}}</p> <p>{{{ o.__("Already have a chat account?") }}}</p>
<p><a class="login-here toggle-register-login" href="#converse/login">{{{o.__("Log in here")}}}</a></p> <p><a class="login-here toggle-register-login" href="#converse/login">{{{o.__("Log in here")}}}</a></p>
</div> </div>
</fieldset> </fieldset>
{[ } ]} {[ } ]}
</div> <!--</div>-->
</form> </form>
</div> </div>
...@@ -7,6 +7,6 @@ ...@@ -7,6 +7,6 @@
href="#">{{{o.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="{{{o.jid}}}" data-room-jid="{{{o.jid}}}"
title="{{{o.info_title}}}" href="#">&nbsp;</a> title="{{{o.info_title}}}" href="#"></a>
</div> </div>
</li> </li>
...@@ -13,15 +13,15 @@ ...@@ -13,15 +13,15 @@
<a class="list-item-action fa {[ if (o.bookmarked) { ]} fa-bookmark remove-bookmark button-on {[ } else { ]} add-bookmark fa-bookmark-o {[ } ]}" <a class="list-item-action fa {[ if (o.bookmarked) { ]} fa-bookmark remove-bookmark button-on {[ } else { ]} add-bookmark fa-bookmark-o {[ } ]}"
data-room-jid="{{{o.jid}}}" data-bookmark-name="{{{o.name}}}" data-room-jid="{{{o.jid}}}" data-bookmark-name="{{{o.name}}}"
title="{[ if (o.bookmarked) { ]} {{{o.info_remove_bookmark}}} {[ } else { ]} {{{o.info_add_bookmark}}} {[ } ]}" title="{[ if (o.bookmarked) { ]} {{{o.info_remove_bookmark}}} {[ } else { ]} {{{o.info_add_bookmark}}} {[ } ]}"
href="#">&nbsp;</a> href="#"></a>
{[ } ]} {[ } ]}
<a class="list-item-action room-info fa fa-info-circle" data-room-jid="{{{o.jid}}}" <a class="list-item-action room-info fa fa-info-circle" data-room-jid="{{{o.jid}}}"
title="{{{o.info_title}}}" href="#">&nbsp;</a> title="{{{o.info_title}}}" href="#"></a>
<a class="list-item-action fa fa-times close-room" <a class="list-item-action fa fa-times close-room"
data-room-jid="{{{o.jid}}}" data-room-jid="{{{o.jid}}}"
data-room-name="{{{o.name || o.jid}}}" data-room-name="{{{o.name || o.jid}}}"
title="{{{o.info_leave_room}}}" href="#">&nbsp;</a> title="{{{o.info_leave_room}}}" href="#"></a>
</div> </div>
<li class="list-group-item active">{{{ o.feedback_text }}}</dt> <li class="list-group-item active">{{{ o.feedback_text }}}</li>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="btn-group"> <div class="btn-group">
<input {[ if (o.filter_text) { ]} value="{{{o.filter_text}}}" {[ } ]} <input {[ if (o.filter_text) { ]} value="{{{o.filter_text}}}" {[ } ]}
class="roster-filter form-control {[ if (o.filter_type === 'state') { ]} hidden {[ } ]}" class="roster-filter form-control {[ if (o.filter_type === 'state') { ]} hidden {[ } ]}"
placeholder="{{{o.placeholder}}}"> placeholder="{{{o.placeholder}}}"/>
<span class="clear-input fa fa-times {[ if (!o.filter_text || o.filter_type === 'state') { ]} hidden {[ } ]}"></span> <span class="clear-input fa fa-times {[ if (!o.filter_text || o.filter_type === 'state') { ]} hidden {[ } ]}"></span>
</div> </div>
......
<li class="toggle-compose-spoiler fa {[ if (o.composing_spoiler) { ]} fa-eye-slash {[ } ]} {[ if (!o.composing_spoiler) { ]} fa-eye {[ } ]}" <li class="toggle-compose-spoiler fa {[ if (o.composing_spoiler) { ]} fa-eye-slash {[ } ]} {[ if (!o.composing_spoiler) { ]} fa-eye {[ } ]}"
title="{{ o.label_toggle_spoiler }}"></a> title="{{ o.label_toggle_spoiler }}">
</li> </li>
<li class="upload-file"> <li class="upload-file">
<a class="fa fa-paperclip" title="{{{o.tooltip_upload_file}}}"></a> <a class="fa fa-paperclip" title="{{{o.tooltip_upload_file}}}"></a>
<input type="file" class="fileupload" multiple style="display:none"/> <input type="file" class="fileupload" multiple="" style="display:none"/>
</li> </li>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="user-details-modal-label">{{{o.display_name}}}</h5> <h5 class="modal-title" id="user-details-modal-label">{{{o.display_name}}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="{{{o.__('Close')}}}"><span aria-hidden="true">&times;</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="{{{o.__('Close')}}}"><span aria-hidden="true">×</span></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
{[ if (o.image) { ]} {[ if (o.image) { ]}
...@@ -12,24 +12,24 @@ ...@@ -12,24 +12,24 @@
height="100" width="100" src="data:{{{o.image_type}}};base64,{{{o.image}}}"/> height="100" width="100" src="data:{{{o.image_type}}};base64,{{{o.image}}}"/>
{[ } ]} {[ } ]}
{[ if (o.fullname) { ]} {[ if (o.fullname) { ]}
<p><label>{{{o.__('Full Name:')}}}</label>&nbsp;{{{o.fullname}}}</p> <p><label>{{{o.__('Full Name:')}}}</label> {{{o.fullname}}}</p>
{[ } ]} {[ } ]}
<p><label>{{{o.__('XMPP Address:')}}}</label>&nbsp;<a href="xmpp:{{{o.jid}}}">{{{o.jid}}}</a></p> <p><label>{{{o.__('XMPP Address:')}}}</label> <a href="xmpp:{{{o.jid}}}">{{{o.jid}}}</a></p>
{[ if (o.nickname) { ]} {[ if (o.nickname) { ]}
<p><label>{{{o.__('Nickname:')}}}</label>&nbsp;{{{o.nickname}}}</p> <p><label>{{{o.__('Nickname:')}}}</label> {{{o.nickname}}}</p>
{[ } ]} {[ } ]}
{[ if (o.url) { ]} {[ if (o.url) { ]}
<p><label>{{{o.__('URL:')}}}</label>&nbsp;<a target="_blank" rel="noopener" href="{{{o.url}}}">{{{o.url}}}</a></p> <p><label>{{{o.__('URL:')}}}</label> <a target="_blank" rel="noopener" href="{{{o.url}}}">{{{o.url}}}</a></p>
{[ } ]} {[ } ]}
{[ if (o.email) { ]} {[ if (o.email) { ]}
<p><label>{{{o.__('Email:')}}}</label>&nbsp;<a href="mailto:{{{o.email}}}">{{{o.email}}}</a></p> <p><label>{{{o.__('Email:')}}}</label> <a href="mailto:{{{o.email}}}">{{{o.email}}}</a></p>
{[ } ]} {[ } ]}
{[ if (o.role) { ]} {[ if (o.role) { ]}
<p><label>{{{o.__('Role:')}}}</label>&nbsp;{{{o.role}}}</p> <p><label>{{{o.__('Role:')}}}</label> {{{o.role}}}</p>
{[ } ]} {[ } ]}
{[ if (o._converse.pluggable.plugins['converse-omemo'].enabled(o._converse)) { ]} {[ if (o._converse.pluggable.plugins['converse-omemo'].enabled(o._converse)) { ]}
<hr> <hr/>
<ul class="list-group fingerprints"> <ul class="list-group fingerprints">
<li class="list-group-item active">{{{o.__('OMEMO Fingerprints')}}}</li> <li class="list-group-item active">{{{o.__('OMEMO Fingerprints')}}}</li>
{[ if (!o.view.devicelist.devices) { ]} {[ if (!o.view.devicelist.devices) { ]}
...@@ -43,11 +43,11 @@ ...@@ -43,11 +43,11 @@
<div class="btn-group btn-group-toggle"> <div class="btn-group btn-group-toggle">
<label class="btn btn--small {[ if (device.get('trusted') !== -1) { ]} btn-primary active {[ } else { ]} btn-secondary {[ } ]}"> <label class="btn btn--small {[ if (device.get('trusted') !== -1) { ]} btn-primary active {[ } else { ]} btn-secondary {[ } ]}">
<input type="radio" name="{{{device.get('id')}}}" value="1" <input type="radio" name="{{{device.get('id')}}}" value="1"
{[ if (device.get('trusted') !== -1) { ]} checked="checked" {[ } ]}>{{{o.__('Trusted')}}} {[ if (device.get('trusted') !== -1) { ]} checked="checked" {[ } ]}/>{{{o.__('Trusted')}}}
</label> </label>
<label class="btn btn--small {[ if (device.get('trusted') === -1) { ]} btn-primary active {[ } else { ]} btn-secondary {[ } ]}"> <label class="btn btn--small {[ if (device.get('trusted') === -1) { ]} btn-primary active {[ } else { ]} btn-secondary {[ } ]}">
<input type="radio" name="{{{device.get('id')}}}" value="-1" <input type="radio" name="{{{device.get('id')}}}" value="-1"
{[ if (device.get('trusted') === -1) { ]} checked="checked" {[ } ]}>{{{o.__('Untrusted')}}} {[ if (device.get('trusted') === -1) { ]} checked="checked" {[ } ]}/>{{{o.__('Untrusted')}}}
</label> </label>
</div> </div>
<span class="fingerprint">{{{o.utils.formatFingerprint(device.get('bundle').fingerprint)}}}</span> <span class="fingerprint">{{{o.utils.formatFingerprint(device.get('bundle').fingerprint)}}}</span>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment