Commit bf139279 authored by JC Brand's avatar JC Brand

Merge branch 'master' into converse-omemo

parents fad6b536 87406f5f
......@@ -34,7 +34,7 @@
"array-bracket-spacing": "off",
"array-callback-return": "error",
"arrow-body-style": "off",
"arrow-parens": "error",
"arrow-parens": "off",
"arrow-spacing": "error",
"block-scoped-var": "off",
"block-spacing": "off",
......
......@@ -7,6 +7,7 @@
- #161 XEP-0363: HTTP File Upload
- #194 Include entity capabilities in outgoing presence stanzas
- #337 API call to update a VCard
- #421 XEP-0308: Last Message Correction
- #968 Use nickname from VCard when joining a room
- #1091 There's now only one CSS file for all view modes.
- #1094 Show room members who aren't currently online
......
......@@ -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)
[![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
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/
### 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
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
......@@ -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/)
- Single-user and group chats
- Contacts and groups
- Multi-user chat rooms [XEP 45](http://xmpp.org/extensions/xep-0045.html)
- Direct invitations to chat rooms [XEP 249](http://xmpp.org/extensions/xep-0249.html)
- vCard support [XEP 54](http://xmpp.org/extensions/xep-0054.html)
- Service discovery [XEP 30](http://xmpp.org/extensions/xep-0030.html)
- In-band registration [XEP 77](http://xmpp.org/extensions/xep-0077.html)
- Chat room bookmarks [XEP 48](http://xmpp.org/extensions/xep-0048.html)
- Roster item exchange [XEP 144](http://xmpp.org/extensions/tmp/xep-0144-1.1.html)
- Multi-user chat rooms [XEP 45](https://xmpp.org/extensions/xep-0045.html)
- Direct invitations to chat rooms [XEP 249](https://xmpp.org/extensions/xep-0249.html)
- vCard support [XEP 54](https://xmpp.org/extensions/xep-0054.html)
- Service discovery [XEP 30](https://xmpp.org/extensions/xep-0030.html)
- In-band registration [XEP 77](https://xmpp.org/extensions/xep-0077.html)
- Chat room bookmarks [XEP 48](https://xmpp.org/extensions/xep-0048.html)
- Roster item exchange [XEP 144](https://xmpp.org/extensions/tmp/xep-0144-1.1.html)
- Chat statuses (online, busy, away, offline)
- Custom status messages
- Desktop notifications
- Typing and state notifications [XEP 85](http://xmpp.org/extensions/xep-0085.html)
- Messages appear in all connnected chat clients [XEP 280](http://xmpp.org/extensions/xep-0280.html)
- Third person "/me" messages [XEP 245](http://xmpp.org/extensions/xep-0245.html)
- XMPP Ping [XEP 199](http://xmpp.org/extensions/xep-0199.html)
- Server-side archiving of messages [XEP 313](http://xmpp.org/extensions/xep-0313.html)
- Hidden Messages (aka Spoilers) [XEP 382](http://xmpp.org/extensions/xep-0382.html)
- Client state indication [XEP 352](http://xmpp.org/extensions/xep-0352.html)
- Typing and state notifications [XEP 85](https://xmpp.org/extensions/xep-0085.html)
- Messages appear in all connnected chat clients [XEP 280](https://xmpp.org/extensions/xep-0280.html)
- Third person "/me" messages [XEP 245](https://xmpp.org/extensions/xep-0245.html)
- XMPP Ping [XEP 199](https://xmpp.org/extensions/xep-0199.html)
- Server-side archiving of messages [XEP 313](https://xmpp.org/extensions/xep-0313.html)
- Hidden Messages (aka Spoilers) [XEP 382](https://xmpp.org/extensions/xep-0382.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
- Translated into 16 languages
## Integration into other frameworks
- **[Ruby on Rails](http://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)
- **[Plone](http://plone.com)**: [collective.converse](http://github.com/collective/collective.converse)
- **[Roundcube](http://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)
- **[Ruby on Rails](https://rubyonrails.org)**: [conversejs-rails](https://github.com/mikemarsian/conversejs-rails)
- **[Django](https://www.djangoproject.com)**: [django-conversejs](https://pypi.python.org/pypi/django-conversejs) or [django-xmpp](https://github.com/fpytloun/django-xmpp)
- **[Plone](https://plone.com)**: [collective.converse](https://github.com/collective/collective.converse)
- **[Roundcube](https://roundcube.net)**: [roundcube-converse.js-xmpp-plugin](https://github.com/devurandom/roundcube-converse.js-xmpp-plugin)
- **[Wordpress](https://wordpress.org)**: [ConverseJS](https://wordpress.org/plugins/conversejs/)
- **[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)
- **[Friendica](http://friendica.com)**: [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)
- **[Alfresco](https://www.alfresco.com)**: [alfresco-js-chat-share](https://github.com/keensoft/alfresco-js-chat-share)
- **[Friendica](https://friendi.ca)**: [converse](https://github.com/friendica/friendica-addons/tree/master/xmpp/converse)
- **[Tiki Wiki CMS Groupware](https://tiki.org)**: [built-in optional feature](https://doc.tiki.org/XMPP)
## Screencasts
*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.
- [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.
- [Off-the-record encryption](https://opkode.com/media/blog/2013/11/11/conversejs-otr-support)
in Converse 0.7.
......@@ -123,4 +124,4 @@ The following people are making recurring donations:
Additionally this project is supported by
* [![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 @@
<noscript><p><img src="//stats.opkode.com/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript>
<![if gte IE 11]>
<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]>
<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 ""
"Project-Id-Version: Converse.js 0.4\n"
"Report-Msgid-Bugs-To: \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"
"Language-Team: French <https://hosted.weblate.org/projects/conversejs/"
"translations/fr/>\n"
......@@ -92,50 +92,9 @@ msgstr "Marquer ce salon"
msgid "The name for this bookmark:"
msgstr "Nom de ce marque-page :"
#: dist/converse-no-dependencies.js:16466
msgid "Would you like this room to be automatically joined upon startup?"
msgstr "Voulez-vous rejoindre automatiquement ce salon au lancement ?"
#: 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:17811
msgid "Sorry, could not determine file upload URL."
msgstr "Désolé, impossible de déterminer l’URL pour envoyer le fichier."
#: dist/converse-no-dependencies.js:16741
#: dist/converse-no-dependencies.js:28819
......@@ -187,32 +146,10 @@ msgstr ""
"La taille de votre fichier, %1$s, dépasse le maximum autorisé par votre "
"serveur, qui est %2$s."
#: dist/converse-no-dependencies.js:22197
#: dist/converse-no-dependencies.js:18681
msgid "Show more"
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
msgid "Close this chat box"
msgstr "Fermer cette fenêtre de discussion"
......@@ -325,7 +262,7 @@ msgstr "Cliquez pour écrire votre message en tant que spoiler"
msgid "Clear all messages"
msgstr "Supprimer tous les messages"
#: dist/converse-no-dependencies.js:22755
#: dist/converse-no-dependencies.js:19149
msgid "Insert emojis"
msgstr "Insérer un emoji"
......@@ -347,7 +284,7 @@ msgstr "Écrire à la troisième personne"
msgid "Show this 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?"
msgstr "Voulez-vous vraiment effacer les messages de cette conversation ?"
......@@ -361,7 +298,7 @@ msgstr "s’est déconnecté"
msgid "is busy"
msgstr "est occupé"
#: dist/converse-no-dependencies.js:23260
#: dist/converse-no-dependencies.js:19710
msgid "is online"
msgstr "est en ligne"
......@@ -891,22 +828,22 @@ msgstr "Rejoindre"
msgid "Message"
msgstr "Message"
#: dist/converse-no-dependencies.js:29058
#: dist/converse-no-dependencies.js:29053
#, javascript-format
msgid "%1$s is no longer a moderator"
msgstr "%1$s n’est plus un modérateur"
#: dist/converse-no-dependencies.js:29061
#: dist/converse-no-dependencies.js:29056
#, javascript-format
msgid "%1$s has been given a voice again"
msgstr "%1$s peut de nouveau parler"
#: dist/converse-no-dependencies.js:29064
#: dist/converse-no-dependencies.js:29059
#, javascript-format
msgid "%1$s has been muted"
msgstr "%1$s ne peut plus parler"
#: dist/converse-no-dependencies.js:29067
#: dist/converse-no-dependencies.js:29062
#, javascript-format
msgid "%1$s is now a moderator"
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;
window.renderAvatars = function (el) {
el = el || document;
const canvasses = el.querySelectorAll('canvas.avatar');
const canvasses = el.querySelectorAll('canvas.chat-msg__avatar');
_.each(canvasses, (canvas_el) => {
const avatar_url = canvas_el.getAttribute('data-avatar');
if (!avatar_url) {
......
#conversejs {
#conversejs.fullscreen {
#controlbox {
#chatrooms {
.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 {
&.converse-mobile {
.converse-chatboxes {
width: 100vw;
right: 15px; // Hack due to padding added by bootstrap
left: -15px; // Hack due to padding added by bootstrap
}
}
&.converse-overlayed {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -43,8 +43,8 @@
@import "profile";
@import "chatbox";
@import "controlbox";
@import "roomslist";
@import "roster";
@import "lists";
@import "chatrooms";
@import "headline";
@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}}}">
<a class="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-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 {[ } ]}"
data-room-jid="{{{o.jid}}}" data-bookmark-name="{{{o.name}}}"
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>
<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> {{{o.label_bookmarks}}}</a>
<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