Commit bf139279 authored by JC Brand's avatar JC Brand

Merge branch 'master' into converse-omemo

parents fad6b536 87406f5f
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
"array-bracket-spacing": "off", "array-bracket-spacing": "off",
"array-callback-return": "error", "array-callback-return": "error",
"arrow-body-style": "off", "arrow-body-style": "off",
"arrow-parens": "error", "arrow-parens": "off",
"arrow-spacing": "error", "arrow-spacing": "error",
"block-scoped-var": "off", "block-scoped-var": "off",
"block-spacing": "off", "block-spacing": "off",
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
- #161 XEP-0363: HTTP File Upload - #161 XEP-0363: HTTP File Upload
- #194 Include entity capabilities in outgoing presence stanzas - #194 Include entity capabilities in outgoing presence stanzas
- #337 API call to update a VCard - #337 API call to update a VCard
- #421 XEP-0308: Last Message Correction
- #968 Use nickname from VCard when joining a room - #968 Use nickname from VCard when joining a room
- #1091 There's now only one CSS file for all view modes. - #1091 There's now only one CSS file for all view modes.
- #1094 Show room members who aren't currently online - #1094 Show room members who aren't currently online
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
[![Bountysource bounties](https://img.shields.io/bountysource/team/converse.js/activity.svg?maxAge=2592000)](https://www.bountysource.com/teams/converse.js/issues?tracker_ids=194169) [![Bountysource bounties](https://img.shields.io/bountysource/team/converse.js/activity.svg?maxAge=2592000)](https://www.bountysource.com/teams/converse.js/issues?tracker_ids=194169)
[![Translation status](https://hosted.weblate.org/widgets/conversejs/-/svg-badge.svg)](https://hosted.weblate.org/engage/conversejs/?utm_source=widget) [![Translation status](https://hosted.weblate.org/widgets/conversejs/-/svg-badge.svg)](https://hosted.weblate.org/engage/conversejs/?utm_source=widget)
[Converse.js](https://conversejs.org) is a web based [XMPP/Jabber](http://xmpp.org) instant messaging client. [Converse.js](https://conversejs.org) is a web based [XMPP/Jabber](https://xmpp.org) instant messaging client.
It enables you to add chat functionality to your website, independent of It enables you to add chat functionality to your website, independent of
any specific backend. You will however need an XMPP server to connect any specific backend. You will however need an XMPP server to connect
...@@ -23,13 +23,13 @@ avialable at [https://conversejs.org/demo/embedded.html](https://conversejs.org/ ...@@ -23,13 +23,13 @@ avialable at [https://conversejs.org/demo/embedded.html](https://conversejs.org/
### Converse.js: As seen on the conversejs.org website ### Converse.js: As seen on the conversejs.org website
![Screenshot of Converse.js](https://opkode.com/img/converse-screenshot.png) ![Screenshot of Converse](https://opkode.com/img/converse-screenshot.png)
### inVerse: a fullscreen version of converse.js ### inVerse: a fullscreen version of converse.js
Converse.js is also available in a fullscreen version, called [inVerse](https://inverse.chat) Converse.js is also available in a fullscreen version, hosted at [inverse.chat](https://inverse.chat)
![Screenshot of inVerse](https://opkode.com/img/inverse-screenshot.png) ![Screenshot of Converse in fullscreen mode](https://opkode.com/img/inverse-screenshot.png)
## Documentation ## Documentation
...@@ -43,45 +43,46 @@ which shows you how to use the CDN (content delivery network) to quickly get a d ...@@ -43,45 +43,46 @@ which shows you how to use the CDN (content delivery network) to quickly get a d
- A [plugin architecture](https://conversejs.org/docs/html/plugin_development.html) based on [pluggable.js](https://conversejs.github.io/pluggable.js/) - A [plugin architecture](https://conversejs.org/docs/html/plugin_development.html) based on [pluggable.js](https://conversejs.github.io/pluggable.js/)
- Single-user and group chats - Single-user and group chats
- Contacts and groups - Contacts and groups
- Multi-user chat rooms [XEP 45](http://xmpp.org/extensions/xep-0045.html) - Multi-user chat rooms [XEP 45](https://xmpp.org/extensions/xep-0045.html)
- Direct invitations to chat rooms [XEP 249](http://xmpp.org/extensions/xep-0249.html) - Direct invitations to chat rooms [XEP 249](https://xmpp.org/extensions/xep-0249.html)
- vCard support [XEP 54](http://xmpp.org/extensions/xep-0054.html) - vCard support [XEP 54](https://xmpp.org/extensions/xep-0054.html)
- Service discovery [XEP 30](http://xmpp.org/extensions/xep-0030.html) - Service discovery [XEP 30](https://xmpp.org/extensions/xep-0030.html)
- In-band registration [XEP 77](http://xmpp.org/extensions/xep-0077.html) - In-band registration [XEP 77](https://xmpp.org/extensions/xep-0077.html)
- Chat room bookmarks [XEP 48](http://xmpp.org/extensions/xep-0048.html) - Chat room bookmarks [XEP 48](https://xmpp.org/extensions/xep-0048.html)
- Roster item exchange [XEP 144](http://xmpp.org/extensions/tmp/xep-0144-1.1.html) - Roster item exchange [XEP 144](https://xmpp.org/extensions/tmp/xep-0144-1.1.html)
- Chat statuses (online, busy, away, offline) - Chat statuses (online, busy, away, offline)
- Custom status messages - Custom status messages
- Desktop notifications - Desktop notifications
- Typing and state notifications [XEP 85](http://xmpp.org/extensions/xep-0085.html) - Typing and state notifications [XEP 85](https://xmpp.org/extensions/xep-0085.html)
- Messages appear in all connnected chat clients [XEP 280](http://xmpp.org/extensions/xep-0280.html) - Messages appear in all connnected chat clients [XEP 280](https://xmpp.org/extensions/xep-0280.html)
- Third person "/me" messages [XEP 245](http://xmpp.org/extensions/xep-0245.html) - Third person "/me" messages [XEP 245](https://xmpp.org/extensions/xep-0245.html)
- XMPP Ping [XEP 199](http://xmpp.org/extensions/xep-0199.html) - XMPP Ping [XEP 199](https://xmpp.org/extensions/xep-0199.html)
- Server-side archiving of messages [XEP 313](http://xmpp.org/extensions/xep-0313.html) - Server-side archiving of messages [XEP 313](https://xmpp.org/extensions/xep-0313.html)
- Hidden Messages (aka Spoilers) [XEP 382](http://xmpp.org/extensions/xep-0382.html) - Hidden Messages (aka Spoilers) [XEP 382](https://xmpp.org/extensions/xep-0382.html)
- Client state indication [XEP 352](http://xmpp.org/extensions/xep-0352.html) - Client state indication [XEP 352](https://xmpp.org/extensions/xep-0352.html)
- Last Message Correction [XEP 308](https://xmpp.org/extensions/xep-0308.html)
- Off-the-record encryption - Off-the-record encryption
- Translated into 16 languages - Translated into 16 languages
## Integration into other frameworks ## Integration into other frameworks
- **[Ruby on Rails](http://rubyonrails.org)**: [conversejs-rails](https://github.com/mikemarsian/conversejs-rails) - **[Ruby on Rails](https://rubyonrails.org)**: [conversejs-rails](https://github.com/mikemarsian/conversejs-rails)
- **[Django](http://www.djangoproject.com)**: [django-conversejs](https://pypi.python.org/pypi/django-conversejs) or [django-xmpp](https://github.com/fpytloun/django-xmpp) - **[Django](https://www.djangoproject.com)**: [django-conversejs](https://pypi.python.org/pypi/django-conversejs) or [django-xmpp](https://github.com/fpytloun/django-xmpp)
- **[Plone](http://plone.com)**: [collective.converse](http://github.com/collective/collective.converse) - **[Plone](https://plone.com)**: [collective.converse](https://github.com/collective/collective.converse)
- **[Roundcube](http://roundcube.net)**: [roundcube-converse.js-xmpp-plugin](https://github.com/devurandom/roundcube-converse.js-xmpp-plugin) - **[Roundcube](https://roundcube.net)**: [roundcube-converse.js-xmpp-plugin](https://github.com/devurandom/roundcube-converse.js-xmpp-plugin)
- **[Wordpress](http://wordpress.org)**: [ConverseJS](http://wordpress.org/plugins/conversejs) - **[Wordpress](https://wordpress.org)**: [ConverseJS](https://wordpress.org/plugins/conversejs/)
- **[Patternslib](http://patternslib.com)**: [patterns.converse](https://github.com/jcbrand/patterns.converse) - **[Patternslib](http://patternslib.com)**: [patterns.converse](https://github.com/jcbrand/patterns.converse)
- **[Alfresco](http://www.alfresco.com)**: [alfresco-js-chat-share](https://github.com/keensoft/alfresco-js-chat-share) - **[Alfresco](https://www.alfresco.com)**: [alfresco-js-chat-share](https://github.com/keensoft/alfresco-js-chat-share)
- **[Friendica](http://friendica.com)**: [converse](https://github.com/friendica/friendica-addons/tree/master/xmpp/converse) - **[Friendica](https://friendi.ca)**: [converse](https://github.com/friendica/friendica-addons/tree/master/xmpp/converse)
- **[Tiki Wiki CMS Groupware](http://tiki.org)**: [built-in optional feature](https://doc.tiki.org/XMPP) - **[Tiki Wiki CMS Groupware](https://tiki.org)**: [built-in optional feature](https://doc.tiki.org/XMPP)
## Screencasts ## Screencasts
*Note: These screencasts are already quite old! Converse.js has grown and evolved further since then.* *Note: These screencasts are already quite old! Converse.js has grown and evolved further since then.*
- [In a static HTML page](http://opkode.com/media/blog/2013/04/02/converse.js-xmpp-instant-messaging-with-javascript). - [In a static HTML page](https://opkode.com/media/blog/2013/04/02/converse.js-xmpp-instant-messaging-with-javascript).
Here we chat to external XMPP accounts on Jabber.org and Gmail. Here we chat to external XMPP accounts on Jabber.org and Gmail.
- [Integrated into a Plone site](http://opkode.com/media/blog/instant-messaging-for-plone-with-javascript-and-xmpp) - [Integrated into a Plone site](https://opkode.com/media/blog/instant-messaging-for-plone-with-javascript-and-xmpp)
via collective.xmpp.chat. via collective.xmpp.chat.
- [Off-the-record encryption](https://opkode.com/media/blog/2013/11/11/conversejs-otr-support) - [Off-the-record encryption](https://opkode.com/media/blog/2013/11/11/conversejs-otr-support)
in Converse 0.7. in Converse 0.7.
...@@ -123,4 +124,4 @@ The following people are making recurring donations: ...@@ -123,4 +124,4 @@ The following people are making recurring donations:
Additionally this project is supported by Additionally this project is supported by
* [![KeyCDN](https://conversejs.org/logo/keycdn.png)](https://www.keycdn.com/) * [![KeyCDN](https://conversejs.org/logo/keycdn.png)](https://www.keycdn.com/)
* [![Wikisuite](https://conversejs.org/logo/wikisuite.png)](http://wikisuite.org) * [![Wikisuite](https://conversejs.org/logo/wikisuite.png)](https://wikisuite.org)
This diff is collapsed.
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<noscript><p><img src="//stats.opkode.com/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript> <noscript><p><img src="//stats.opkode.com/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript>
<![if gte IE 11]> <![if gte IE 11]>
<link type="text/css" rel="stylesheet" media="screen" href="/css/converse.css" /> <link type="text/css" rel="stylesheet" media="screen" href="/css/converse.css" />
<script src="/dist/converse.min.js"></script> <script src="/dist/converse.js"></script>
<![endif]> <![endif]>
<style> <style>
......
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgstr "" ...@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: Converse.js 0.4\n" "Project-Id-Version: Converse.js 0.4\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-17 11:19+0200\n" "POT-Creation-Date: 2018-05-17 11:19+0200\n"
"PO-Revision-Date: 2018-05-07 18:37+0000\n" "PO-Revision-Date: 2018-07-02 15:35+0200\n"
"Last-Translator: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>\n" "Last-Translator: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>\n"
"Language-Team: French <https://hosted.weblate.org/projects/conversejs/" "Language-Team: French <https://hosted.weblate.org/projects/conversejs/"
"translations/fr/>\n" "translations/fr/>\n"
...@@ -92,50 +92,9 @@ msgstr "Marquer ce salon" ...@@ -92,50 +92,9 @@ msgstr "Marquer ce salon"
msgid "The name for this bookmark:" msgid "The name for this bookmark:"
msgstr "Nom de ce marque-page :" msgstr "Nom de ce marque-page :"
#: dist/converse-no-dependencies.js:16466 #: dist/converse-no-dependencies.js:17811
msgid "Would you like this room to be automatically joined upon startup?" msgid "Sorry, could not determine file upload URL."
msgstr "Voulez-vous rejoindre automatiquement ce salon au lancement ?" msgstr "Désolé, impossible de déterminer l’URL pour envoyer le fichier."
#: dist/converse-no-dependencies.js:16467
msgid "What should your nickname for this room be?"
msgstr "Quel alias devrait être utilisé pour ce salon ?"
#: dist/converse-no-dependencies.js:16469
#: dist/converse-no-dependencies.js:25296
#: dist/converse-no-dependencies.js:25380
msgid "Save"
msgstr "Enregistrer"
#: dist/converse-no-dependencies.js:16470
#: dist/converse-no-dependencies.js:25376
#: dist/converse-no-dependencies.js:32190
msgid "Cancel"
msgstr "Annuler"
#: dist/converse-no-dependencies.js:16543
#, javascript-format
msgid "Are you sure you want to remove the bookmark \"%1$s\"?"
msgstr "Voulez-vous vraiment retirer le marque-page « %1$s » ?"
#: dist/converse-no-dependencies.js:16659
msgid "Sorry, something went wrong while trying to save your bookmark."
msgstr ""
"Désolé, quelque chose s’est mal passé pendant la sauvegarde de ce marque-"
"page."
#: dist/converse-no-dependencies.js:16738
#: dist/converse-no-dependencies.js:33112
msgid "Leave this room"
msgstr "Quitter ce salon"
#: dist/converse-no-dependencies.js:16739
msgid "Remove this bookmark"
msgstr "Retirer ce marque-page"
#: dist/converse-no-dependencies.js:16740
#: dist/converse-no-dependencies.js:33113
msgid "Unbookmark this room"
msgstr "Retirer ce salon"
#: dist/converse-no-dependencies.js:16741 #: dist/converse-no-dependencies.js:16741
#: dist/converse-no-dependencies.js:28819 #: dist/converse-no-dependencies.js:28819
...@@ -187,32 +146,10 @@ msgstr "" ...@@ -187,32 +146,10 @@ msgstr ""
"La taille de votre fichier, %1$s, dépasse le maximum autorisé par votre " "La taille de votre fichier, %1$s, dépasse le maximum autorisé par votre "
"serveur, qui est %2$s." "serveur, qui est %2$s."
#: dist/converse-no-dependencies.js:22197 #: dist/converse-no-dependencies.js:18681
msgid "Show more" msgid "Show more"
msgstr "Afficher plus" msgstr "Afficher plus"
#: dist/converse-no-dependencies.js:22248
msgid "Typing from another device"
msgstr "Saisie depuis un autre appareil"
#: dist/converse-no-dependencies.js:22250
msgid "is typing"
msgstr "écrit"
#: dist/converse-no-dependencies.js:22254
msgid "Stopped typing on the other device"
msgstr "Fin de saisie depuis l’autre appareil"
#: dist/converse-no-dependencies.js:22256
msgid "has stopped typing"
msgstr "a arrêté d’écrire"
#: dist/converse-no-dependencies.js:22259
#: dist/converse-no-dependencies.js:23256
#: dist/converse-no-dependencies.js:30521
msgid "has gone away"
msgstr "est parti"
#: dist/converse-no-dependencies.js:22488 #: dist/converse-no-dependencies.js:22488
msgid "Close this chat box" msgid "Close this chat box"
msgstr "Fermer cette fenêtre de discussion" msgstr "Fermer cette fenêtre de discussion"
...@@ -325,7 +262,7 @@ msgstr "Cliquez pour écrire votre message en tant que spoiler" ...@@ -325,7 +262,7 @@ msgstr "Cliquez pour écrire votre message en tant que spoiler"
msgid "Clear all messages" msgid "Clear all messages"
msgstr "Supprimer tous les messages" msgstr "Supprimer tous les messages"
#: dist/converse-no-dependencies.js:22755 #: dist/converse-no-dependencies.js:19149
msgid "Insert emojis" msgid "Insert emojis"
msgstr "Insérer un emoji" msgstr "Insérer un emoji"
...@@ -347,7 +284,7 @@ msgstr "Écrire à la troisième personne" ...@@ -347,7 +284,7 @@ msgstr "Écrire à la troisième personne"
msgid "Show this menu" msgid "Show this menu"
msgstr "Afficher ce menu" msgstr "Afficher ce menu"
#: dist/converse-no-dependencies.js:23164 #: dist/converse-no-dependencies.js:19614
msgid "Are you sure you want to clear the messages from this conversation?" msgid "Are you sure you want to clear the messages from this conversation?"
msgstr "Voulez-vous vraiment effacer les messages de cette conversation ?" msgstr "Voulez-vous vraiment effacer les messages de cette conversation ?"
...@@ -361,7 +298,7 @@ msgstr "s’est déconnecté" ...@@ -361,7 +298,7 @@ msgstr "s’est déconnecté"
msgid "is busy" msgid "is busy"
msgstr "est occupé" msgstr "est occupé"
#: dist/converse-no-dependencies.js:23260 #: dist/converse-no-dependencies.js:19710
msgid "is online" msgid "is online"
msgstr "est en ligne" msgstr "est en ligne"
...@@ -891,22 +828,22 @@ msgstr "Rejoindre" ...@@ -891,22 +828,22 @@ msgstr "Rejoindre"
msgid "Message" msgid "Message"
msgstr "Message" msgstr "Message"
#: dist/converse-no-dependencies.js:29058 #: dist/converse-no-dependencies.js:29053
#, javascript-format #, javascript-format
msgid "%1$s is no longer a moderator" msgid "%1$s is no longer a moderator"
msgstr "%1$s n’est plus un modérateur" msgstr "%1$s n’est plus un modérateur"
#: dist/converse-no-dependencies.js:29061 #: dist/converse-no-dependencies.js:29056
#, javascript-format #, javascript-format
msgid "%1$s has been given a voice again" msgid "%1$s has been given a voice again"
msgstr "%1$s peut de nouveau parler" msgstr "%1$s peut de nouveau parler"
#: dist/converse-no-dependencies.js:29064 #: dist/converse-no-dependencies.js:29059
#, javascript-format #, javascript-format
msgid "%1$s has been muted" msgid "%1$s has been muted"
msgstr "%1$s ne peut plus parler" msgstr "%1$s ne peut plus parler"
#: dist/converse-no-dependencies.js:29067 #: dist/converse-no-dependencies.js:29062
#, javascript-format #, javascript-format
msgid "%1$s is now a moderator" msgid "%1$s is now a moderator"
msgstr "%1$s est désormais un modérateur" msgstr "%1$s est désormais un modérateur"
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -3,7 +3,7 @@ const u = converse_utils; ...@@ -3,7 +3,7 @@ const u = converse_utils;
window.renderAvatars = function (el) { window.renderAvatars = function (el) {
el = el || document; el = el || document;
const canvasses = el.querySelectorAll('canvas.avatar'); const canvasses = el.querySelectorAll('canvas.chat-msg__avatar');
_.each(canvasses, (canvas_el) => { _.each(canvasses, (canvas_el) => {
const avatar_url = canvas_el.getAttribute('data-avatar'); const avatar_url = canvas_el.getAttribute('data-avatar');
if (!avatar_url) { if (!avatar_url) {
......
#conversejs { #conversejs.fullscreen {
#controlbox { #controlbox {
#chatrooms { #chatrooms {
.bookmarks-list { .bookmarks-list {
dl.rooms-list.bookmarks {
dd.available-chatroom {
a {
&.open-room {
width: 80%;
}
}
}
}
} }
} }
} }
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -71,7 +71,7 @@ body.reset { ...@@ -71,7 +71,7 @@ body.reset {
&.converse-mobile { &.converse-mobile {
.converse-chatboxes { .converse-chatboxes {
width: 100vw; width: 100vw;
right: 15px; // Hack due to padding added by bootstrap left: -15px; // Hack due to padding added by bootstrap
} }
} }
&.converse-overlayed { &.converse-overlayed {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -43,8 +43,8 @@ ...@@ -43,8 +43,8 @@
@import "profile"; @import "profile";
@import "chatbox"; @import "chatbox";
@import "controlbox"; @import "controlbox";
@import "roomslist";
@import "roster"; @import "roster";
@import "lists";
@import "chatrooms"; @import "chatrooms";
@import "headline"; @import "headline";
@import "messages"; @import "messages";
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<div class="message chat-msg chat-action {{{o.extra_classes}}}" data-isodate="{{{o.time}}}" data-from="{{{o.from}}}">
<span class="chat-msg-heading">
<span class="chat-msg-author">**{{{o.username}}}</span>
</span>
<p class="chat-msg-text"><!-- message gets added here via renderMessage --></p>
</div>
<div class="list-item controlbox-padded room-item available-chatroom d-flex flex-row {[ if (o.hidden) { ]} hidden {[ } ]}" data-room-jid="{{{o.jid}}}"> <div class="list-item controlbox-padded room-item available-chatroom d-flex flex-row {[ if (o.hidden) { ]} hidden {[ } ]}" data-room-jid="{{{o.jid}}}">
<a class="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="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="#">&nbsp;</a>
<a class="room-info fa fa-info-circle align-self-center" data-room-jid="{{{o.jid}}}"
title="{{{o.info_title}}}" href="#">&nbsp;</a>
</div> </div>
<a href="#" class="rooms-toggle bookmarks-toggle controlbox-padded" title="{{{o.desc_bookmarks}}}"> <a href="#" class="list-toggle bookmarks-toggle controlbox-padded" title="{{{o.desc_bookmarks}}}">
<span class="fa {[ if (o.toggle_state === o._converse.OPENED) { ]} fa-caret-down {[ } else { ]} fa-caret-right {[ } ]}"> <span class="fa {[ if (o.toggle_state === o._converse.OPENED) { ]} fa-caret-down {[ } else { ]} fa-caret-right {[ } ]}">
</span> {{{o.label_bookmarks}}}</a> </span> {{{o.label_bookmarks}}}</a>
<div class="items-list bookmarks rooms-list {[ if (o.toggle_state !== o._converse.OPENED) { ]} hidden {[ } ]}"></div> <div class="items-list bookmarks rooms-list {[ if (o.toggle_state !== o._converse.OPENED) { ]} hidden {[ } ]}"></div>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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