Commit 765115c4 authored by JC Brand's avatar JC Brand

Merge branch 'master' into gh-pages

Conflicts:
	CHANGES.rst
	Makefile
	bower.json
	converse.min.css
	converse.min.js
	docs/doctrees/index.doctree
	docs/html/searchindex.js
	docs/source/conf.py
	index.html
	package.json
parents 19026dd5 b140596b
Changelog
=========
0.7.0 (2013-11-13)
------------------
.. Note ::
This release introduces a backward incompatible change. The boilerplate
HTML needed in your webpage for converse.js to work has been reduced to a
single div: <div id="conversejs"></div>
Features:
~~~~~~~~~
* Add a toolbar for single user chat [jcbrand]
* Add support for OTR (off-the-record) encryption [jcbrand]
* Add support for smileys [jcbrand]
* Simplified boilerplate markup [jcbrand]
* New configuration settings, ``xhr_custom_status_url`` and ``xhr_user_search_url`` [jcbrand]
Bugfixes:
~~~~~~~~~
* #58 Contact's name gets replaced with their JID [jcbrand]
* #81 Requesting contacts appear as pending contacts [jcbrand]
0.6.6 (2013-10-16)
------------------
......
......@@ -40,6 +40,9 @@ pot:
merge:
find ./locale -maxdepth 1 -mindepth 1 -type d -exec msgmerge {}/LC_MESSAGES/converse.po ./locale/converse.pot -U \;
po2json:
find ./locale -maxdepth 1 -mindepth 1 -type d -exec po2json {}/LC_MESSAGES/converse.po {}/LC_MESSAGES/converse.json \;
release:
sed -i s/\"version\":\ \"[0-9]\.[0-9]\.[0-9]\"/\"version\":\ \"$(VERSION)\"/ bower.json
sed -i s/\"version\":\ \"[0-9]\.[0-9]\.[0-9]\"/\"version\":\ \"$(VERSION)\"/ package.json
......
......@@ -11,8 +11,6 @@ It enables you to add chat functionality to your website, independent of any
specific backend. You will however need an XMPP server to connect to, either
your own, or a public one.
It is used by collective.xmpp.chat_, which is a Plone_ instant messaging add-on.
--------
Features
--------
......@@ -32,6 +30,7 @@ It has the following features:
* Typing notifications
* Third person messages (/me )
* Translated into multiple languages (af, de, es, fr, it, hu, pt-BR, ru)
* Off-the-record encryption support (via `OTR.js <http://arlolra.github.io/otr>`_)
-----------
Screencasts
......@@ -40,6 +39,16 @@ Screencasts
* `In a static HTML page`_. Here we chat to external XMPP accounts on Jabber.org and Gmail.
* `Integrated into a Plone site`_ via collective.xmpp.chat.
Integration into other frameworks
---------------------------------
* `Plone <http://plone.org>`_:
`collective.xmpp.chat <http://github.com/collective/collective.xmpp.chat>`_ is an add-on for Plone that uses *Converse.js*. Together with `collective.xmpp.core <http://github.com/collective/collective.xmpp.core>`_, it provides for single-signon-support (SSO) and also enables you to manually or automatically register your Plone users onto your XMPP server.
* `Django <http://www.djangoproject.com>`_:
`django-conversejs <https://pypi.python.org/pypi/django-conversejs>`_ is an app that makes it easer to integrate *Converse.js* into Django.
* `Roundcube <http://roundcube.net>`_:
`roundcube-converse.js-xmpp-plugin <https://github.com/thomascube/roundcube-converse.js-xmpp-plugin>`_ is a plugin for Roundcube Webmail.
----
Demo
----
......@@ -80,7 +89,8 @@ Licence
Donate
------
Bitcoin address: 16FsPqE9DhFTryxrUenpsGX4LJ1TPu8GqS
* Bitcoin: 16FsPqE9DhFTryxrUenpsGX4LJ1TPu8GqS
* Litecoin: LLvLH6qJch7HAamLguHkwobCrxmHLhiwZw
.. _Converse.js: http://conversejs.org
.. _strophe.js: http://strophe.im/strophejs
......
TODO:
=====
* Add /leave command
* Inform users of /help via placeholder in textarea
* Create a single sprite image from the current images
* Implement manual "Fetch user vCard" feature.
* Add data forms functionality for chatrooms
** Allows permanent chatrooms
** And password protected chatrooms
{
"name": "converse",
"version": "0.6.6",
"version": "0.7.0",
"devDependencies": {
"jasmine": "https://github.com/jcbrand/jasmine.git#1_3_x"
"jasmine": "https://github.com/jcbrand/jasmine.git#1_3_x",
"otr": "0.2.7"
},
"dependencies": {
"requirejs": "2.1.8",
......@@ -17,6 +18,8 @@
"strophe.vcard": "https://raw.github.com/jcbrand/strophejs-plugins/75c8693992bc357c699b6d615eeb396e799f5c02/vcard/strophe.vcard.js",
"strophe.disco": "https://raw.github.com/jcbrand/strophejs-plugins/75c8693992bc357c699b6d615eeb396e799f5c02/disco/strophe.disco.js",
"strophe.muc": "https://raw.github.com/jcbrand/strophejs-plugins/75c8693992bc357c699b6d615eeb396e799f5c02/muc/strophe.muc.js",
"otr": "0.2.7",
"crypto-js": "~3.1.2",
"almond": "~0.2.6"
},
"exportsOverride": {}
......
......@@ -25,6 +25,12 @@
"strophe.muc": "components/strophe.muc/index",
"strophe.roster": "components/strophe.roster/index",
"strophe.vcard": "components/strophe.vcard/index",
"strophe.disco": "components/strophe.disco/index"
"strophe.disco": "components/strophe.disco/index",
"bigint": "components/otr/build/dep/bigint",
"crypto": "components/otr/build/dep/crypto",
"crypto.aes": "components/crypto-js/build/rollups/aes",
"eventemitter": "components/otr/build/dep/eventemitter",
"otr": "components/otr/build/otr",
"salsa20": "components/otr/build/dep/salsa20"
}
})
This diff is collapsed.
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.
;(function (root, factory) {
if (typeof define === "function" && define.amd) {
define([
"crypto.core",
"crypto.enc-base64",
"crypto.md5",
"crypto.evpkdf",
"crypto.cipher-core",
"crypto.aes",
"crypto.sha1",
"crypto.sha256",
"crypto.hmac",
"crypto.pad-nopadding",
"crypto.mode-ctr"
], function() {
return CryptoJS;
}
);
} else {
root.CryptoJS = factory();
}
}(this));
Subscription flow
=================
Happy flow
----------
Contact1 makes a presence subscription request to contact2.
::
<presence type="subscribe" to="contact2@localhost"/>
Contact1 receives a roster update
::
<iq type="set" to="contact1@localhost">
<query xmlns="jabber:iq:roster">
<item jid="contact2@localhost" ask="subscribe" subscription="none"></item>
</query>
</iq>
Contact2 receives the presence subscription, but no
roster update. We create a roster item manually in
handleIncomingSubscription and add the 'requesting'
property to indicate that this is an incoming request.
Contact2 clicks "Accept". This confirms the
subscription and subscribes back.
::
<presence type="subscribed" to="contact1@localhost"/>
<presence type="subscribe" to="contact1@localhost"/>
Contact2 receives a roster update
::
<iq type="set" to="contact2@localhost">
<query xmlns="jabber:iq:roster">
<item jid="contact1@localhost" ask="subscribe" subscription="from"></item>
</query>
</iq>
Contact1's converse.js client will automatically
approve.
Contact2 receives a roster update (as does contact1).
::
<iq type="set" to="contact2@localhost">
<query xmlns="jabber:iq:roster">
<item jid="contact1@localhost" subscription="both"></item>
</query>
</iq>
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 619e5f84e981950155ae238c5fc1fbf2
config: 099a02a0399c0711440ea358b163182c
tags: fbb0d17656682115ca4d033fb2f83ba1
This diff is collapsed.
......@@ -9,7 +9,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Index &mdash; Converse.js 0.6.6 documentation</title>
<title>Index &mdash; Converse.js 0.7.0 documentation</title>
<link rel="stylesheet" href="_static/stylesheet.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
......@@ -17,7 +17,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '0.6.6',
VERSION: '0.7.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
......@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="Converse.js 0.6.6 documentation" href="index.html" />
<link rel="top" title="Converse.js 0.7.0 documentation" href="index.html" />
</head>
<body>
<div id="header_wrap" class="outer">
......@@ -51,7 +51,7 @@
<li class="right" style="margin-right: 10px">
<a href="#" title="General Index"
accesskey="I">index</a></li>
<li><a href="index.html">Converse.js 0.6.6 documentation</a> &raquo;</li>
<li><a href="index.html">Converse.js 0.7.0 documentation</a> &raquo;</li>
</ul>
</div>
<section id="main_content" class="inner">
......@@ -80,7 +80,7 @@
<li class="right" style="margin-right: 10px">
<a href="#" title="General Index"
>index</a></li>
<li><a href="index.html">Converse.js 0.6.6 documentation</a> &raquo;</li>
<li><a href="index.html">Converse.js 0.7.0 documentation</a> &raquo;</li>
</ul>
</div>
</div>
......
This diff is collapsed.
# Sphinx inventory version 2
# Project: Converse.js
# Version: 0.6.6
# Version: 0.7.0
# The remainder of this file is compressed using zlib.
xm
{"];
......
......@@ -7,7 +7,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Search &mdash; Converse.js 0.6.6 documentation</title>
<title>Search &mdash; Converse.js 0.7.0 documentation</title>
<link rel="stylesheet" href="_static/stylesheet.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
......@@ -15,7 +15,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '0.6.6',
VERSION: '0.7.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
......@@ -25,7 +25,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
<link rel="top" title="Converse.js 0.6.6 documentation" href="index.html" />
<link rel="top" title="Converse.js 0.7.0 documentation" href="index.html" />
<script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
......@@ -55,7 +55,7 @@
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li><a href="index.html">Converse.js 0.6.6 documentation</a> &raquo;</li>
<li><a href="index.html">Converse.js 0.7.0 documentation</a> &raquo;</li>
</ul>
</div>
<section id="main_content" class="inner">
......@@ -100,7 +100,7 @@
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li><a href="index.html">Converse.js 0.6.6 documentation</a> &raquo;</li>
<li><a href="index.html">Converse.js 0.7.0 documentation</a> &raquo;</li>
</ul>
</div>
</div>
......
This diff is collapsed.
......@@ -48,9 +48,9 @@ copyright = u'2013, JC Brand'
# built documents.
#
# The short X.Y version.
version = '0.6.6'
version = '0.7.0'
# The full version, including alpha/beta/rc tags.
release = '0.6.6'
release = '0.7.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
......
This diff is collapsed.
......@@ -18,8 +18,8 @@
<h1 id="project_title"><a href="http://conversejs.org">Converse.js</a></h1>
<h2 id="project_tagline">An XMPP chat client for your website</h2>
<section id="downloads">
<a class="zip_download_link" href="https://github.com/jcbrand/converse.js/archive/v0.6.6.zip">Download the latest release as a .zip file</a>
<a class="tar_download_link" href="https://github.com/jcbrand/converse.js/archive/v0.6.6.tar.gz">Download the latest release as a tar.gz file</a>
<a class="zip_download_link" href="https://github.com/jcbrand/converse.js/archive/v0.7.0.zip">Download the latest release as a .zip file</a>
<a class="tar_download_link" href="https://github.com/jcbrand/converse.js/archive/v0.7.0.tar.gz">Download the latest release as a tar.gz file</a>
</section>
</header>
</div>
......@@ -42,18 +42,19 @@
<h2>Features</h2>
<ul>
<li>Single-user chat</li>
<li>Multi-user chat in chatrooms (<a href="http://xmpp.org/extensions/xep-0045.html">XEP 45</a>)</li>
<li>vCard support (<a href="http://xmpp.org/extensions/xep-0054.html">XEP 54</a>)</li>
<li>Service discovery (<a href="http://xmpp.org/extensions/xep-0030.html">XEP 30</a>)</li>
<li>Multi-user chat in chatrooms (<a href="http://xmpp.org/extensions/xep-0045.html" target="_blank">XEP 45</a>)</li>
<li>vCard support (<a href="http://xmpp.org/extensions/xep-0054.html" target="_blank">XEP 54</a>)</li>
<li>Service discovery (<a href="http://xmpp.org/extensions/xep-0030.html" target="_blank">XEP 30</a>)</li>
<li>Contact rosters</li>
<li>Manually or automically subscribe to other contacts</li>
<li>Accept or decline contact requests</li>
<li>Roster item exchange (<a href="http://xmpp.org/extensions/tmp/xep-0144-1.1.html">XEP 144</a>)</li>
<li>Roster item exchange (<a href="http://xmpp.org/extensions/tmp/xep-0144-1.1.html" target="_blank">XEP 144</a>)</li>
<li>Chat statuses (online, busy, away, offline)</li>
<li>Custom status messages</li>
<li>Typing notifications</li>
<li>Third person messages (/me )</li>
<li>Translated into multiple languages (af, de, es, fr, hu, it, nl, pt-BR, ru)</li>
<li>Off-the-record encryption (via <a href="http://arlolra.github.io/otr/" target="_blank">OTR.js</a>)</li>
</ul>
<h2>Screencasts</h2>
......@@ -151,6 +152,7 @@
<li><a href="http://jquery.com" target="_blank">JQuery</a></li>
<li><a href="http://strophe.im/strophejs" target="_blank">strophe.js</a></li>
<li><a href="http://backbonejs.org" target="_blank">backbone.js</a></li>
<li><a href="http://arlolra.github.io/otr/" target="_blank">OTR.js</a></li>
<li><a href="http://requirejs.org" target="_blank">require.js</a> (optional dependency)</li>
</ul>
......@@ -175,14 +177,7 @@
</footer>
</div>
<div id="chatpanel">
<div id="collective-xmpp-chat-data"></div>
<div id="toggle-controlbox">
<a href="#" class="chat toggle-online-users">
<strong class="conn-feedback">Toggle chat</strong> <strong style="display: none" id="online-count">(0)</strong>
</a>
</div>
</div>
<div id="conversejs"></div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
......@@ -193,15 +188,16 @@
<script>
require(['converse'], function (converse) {
converse.initialize({
allow_otr: true,
auto_list_rooms: false,
auto_subscribe: false,
bosh_service_url: 'https://bind.opkode.im', // Please use this connection manager only for testing purposes
debug: true ,
hide_muc_server: false,
i18n: locales['en'], // Refer to ./locale/locales.js to see which locales are supported
prebind: false,
show_controlbox_by_default: true,
xhr_user_search: false,
debug: false
});
});
</script>
......
......@@ -6,18 +6,34 @@
"": {
"Project-Id-Version": "Converse.js 0.4",
"Report-Msgid-Bugs-To": "",
"POT-Creation-Date": "2013-09-13 16:02+0200",
"PO-Revision-Date": "2013-09-15 11:44+0200",
"POT-Creation-Date": "2013-09-15 21:55+0200",
"PO-Revision-Date": "2013-09-15 21:56+0200",
"Last-Translator": "JC Brand <jc@opkode.com>",
"Language-Team": "Afrikaans",
"Language": "af",
"MIME-Version": "1.0",
"Content-Type": "text/plain; charset=ASCII",
"Content-Type": "text/plain; charset=UTF-8",
"Content-Transfer-Encoding": "8bit",
"domain": "converse",
"lang": "af",
"plural_forms": "nplurals=2; plural=(n != 1);"
},
"unencrypted": [
null,
"nie-privaat"
],
"unverified": [
null,
"ongeverifieer"
],
"verified": [
null,
"privaat"
],
"finished": [
null,
"afgesluit"
],
"Disconnected": [
null,
"Verbindung onderbreek"
......@@ -46,13 +62,57 @@
null,
"Onderbreek verbinding"
],
"me": [
"Re-establishing encrypted session": [
null,
"ek"
"Herstel versleutelde sessie"
],
"Your browser needs to generate a private key, which will be used in your encrypted chat session. This can take up to 30 seconds during which your browser might freeze and become unresponsive.": [
null,
"Die webblaaier moet 'n private sleutel vir die versleutelde klets-sessie genereer. Dit kan tot 30 sekondes duur, waartydenѕ die webblaaier mag vries en nie reageer nie."
],
"Private key generated.": [
null,
"Private sleutel"
],
"Authentication request from %1$s\n\nYour buddy is attempting to verify your identity, by asking you the question below.\n\n%2$s": [
null,
"Verifikasie versoek van %1$s\n\nU gespreksmaat probeer om u identiteit te verifieer, deur die volgende vraag te vra \n\n%2$s"
],
"Could not verify this user's identify.": [
null,
"Kon nie hierdie gebruiker se identitied verifieer nie."
],
"%1$s is typing": [
"Personal message": [
null,
"Persoonlike boodskap"
],
"Start encrypted conversation": [
null,
"Begin versleutelde gesprek"
],
"Refresh encrypted conversation": [
null,
"Verfris versleutelde gesprek"
],
"End encrypted conversation": [
null,
"Beëindig versleutelde gesprek"
],
"Verify with SMP": [
null,
"Verifieer met SMP"
],
"Verify with fingerprints": [
null,
"Verifieer met vingerafdrukke"
],
"What's this?": [
null,
"Wat is hierdie?"
],
"me": [
null,
"%1$s tik tans"
"ek"
],
"Show this menu": [
null,
......@@ -66,9 +126,73 @@
null,
"Verwyder boodskappe"
],
"Personal message": [
"Your message could not be sent": [
null,
"Persoonlike boodskap"
"U boodskap kon nie gestuur word nie"
],
"We received an unencrypted message": [
null,
"Ons het 'n onversleutelde boodskap ontvang"
],
"We received an unreadable encrypted message": [
null,
"Ons het 'n onleesbare versleutelde boodskap ontvang"
],
"This user has requested an encrypted session.": [
null,
"Hierdie gebruiker versoek 'n versleutelde sessie"
],
"Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [
null,
"Hier is die vingerafdrukke, bevestig hulle met %1$s, buite hierdie kletskanaal \n\nU vingerafdruk, %2$s: %3$s\n\nVingerafdruk vir %1$s: %4$s\n\nIndien u die vingerafdrukke bevestig het, klik OK, andersinds klik Kanselleer"
],
"You will be prompted to provide a security question and then an answer to that question.\n\nYour buddy will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will have been verified.": [
null,
"Daar sal van u verwag word om 'n sekuriteitsvraag te stel, en dan ook die antwoord tot daardie vraag te verskaf.\n\nU gespreksmaat sal dan daardie vraag gestel word, en indien hulle presies dieselfde antwoord (hoofletters tel) verskaf, sal hul identiteit geverifieer wees."
],
"What is your security question?": [
null,
"Wat is u sekuriteitsvraag?"
],
"What is the answer to the security question?": [
null,
"Wat is die antwoord tot die sekuriteitsvraag?"
],
"Invalid authentication scheme provided": [
null,
"Ongeldige verifikasiemetode verskaf"
],
"Your messages are not encrypted anymore": [
null,
"U boodskappe is nie meer versleutel nie"
],
"Your messages are now encrypted but your buddy's identity has not been verified.": [
null,
"U boodskappe is now versleutel maar u gespreksmaat se identiteit is nog onseker."
],
"Your buddy's identify has been verified.": [
null,
"U gespreksmaat se identiteit is geverifieer."
],
"Your buddy has ended encryption on their end, you should do the same.": [
null,
"U gespreksmaat het versleuteling gestaak, u behoort nou dieselfde te doen."
],
"Your messages are not encrypted. Click here to enable OTR encryption.": [
null,
"U boodskappe is nie versleutel nie. Klik hier om OTR versleuteling te aktiveer."
],
"Your messages are encrypted, but your buddy has not been verified.": [
null,
"U boodskappe is versleutel, maar u gespreksmaat se identiteit is not onseker."
],
"Your messages are encrypted and your buddy verified.": [
null,
"U boodskappe is versleutel en u gespreksmaat se identiteit geverifieer."
],
"Your buddy has closed their end of the private session, you should do the same": [
null,
"U gespreksmaat het die private sessie gestaak. U behoort dieselfde te doen"
],
"Contacts": [
null,
......
......@@ -3,18 +3,34 @@
"": {
"Project-Id-Version": "Converse.js 0.4",
"Report-Msgid-Bugs-To": "",
"POT-Creation-Date": "2013-09-13 16:02+0200",
"PO-Revision-Date": "2013-09-15 11:44+0200",
"POT-Creation-Date": "2013-09-15 21:55+0200",
"PO-Revision-Date": "2013-09-15 21:56+0200",
"Last-Translator": "JC Brand <jc@opkode.com>",
"Language-Team": "Afrikaans",
"Language": "af",
"MIME-Version": "1.0",
"Content-Type": "text/plain; charset=ASCII",
"Content-Type": "text/plain; charset=UTF-8",
"Content-Transfer-Encoding": "8bit",
"domain": "converse",
"lang": "af",
"plural_forms": "nplurals=2; plural=(n != 1);"
},
"unencrypted": [
null,
"nie-privaat"
],
"unverified": [
null,
"ongeverifieer"
],
"verified": [
null,
"privaat"
],
"finished": [
null,
"afgesluit"
],
"Disconnected": [
null,
"Verbindung onderbreek"
......@@ -43,13 +59,57 @@
null,
"Onderbreek verbinding"
],
"me": [
"Re-establishing encrypted session": [
null,
"ek"
"Herstel versleutelde sessie"
],
"Your browser needs to generate a private key, which will be used in your encrypted chat session. This can take up to 30 seconds during which your browser might freeze and become unresponsive.": [
null,
"Die webblaaier moet 'n private sleutel vir die versleutelde klets-sessie genereer. Dit kan tot 30 sekondes duur, waartydenѕ die webblaaier mag vries en nie reageer nie."
],
"Private key generated.": [
null,
"Private sleutel"
],
"Authentication request from %1$s\n\nYour buddy is attempting to verify your identity, by asking you the question below.\n\n%2$s": [
null,
"Verifikasie versoek van %1$s\n\nU gespreksmaat probeer om u identiteit te verifieer, deur die volgende vraag te vra \n\n%2$s"
],
"Could not verify this user's identify.": [
null,
"Kon nie hierdie gebruiker se identitied verifieer nie."
],
"%1$s is typing": [
"Personal message": [
null,
"Persoonlike boodskap"
],
"Start encrypted conversation": [
null,
"Begin versleutelde gesprek"
],
"Refresh encrypted conversation": [
null,
"Verfris versleutelde gesprek"
],
"End encrypted conversation": [
null,
"Beëindig versleutelde gesprek"
],
"Verify with SMP": [
null,
"Verifieer met SMP"
],
"Verify with fingerprints": [
null,
"Verifieer met vingerafdrukke"
],
"What's this?": [
null,
"Wat is hierdie?"
],
"me": [
null,
"%1$s tik tans"
"ek"
],
"Show this menu": [
null,
......@@ -63,9 +123,73 @@
null,
"Verwyder boodskappe"
],
"Personal message": [
"Your message could not be sent": [
null,
"Persoonlike boodskap"
"U boodskap kon nie gestuur word nie"
],
"We received an unencrypted message": [
null,
"Ons het 'n onversleutelde boodskap ontvang"
],
"We received an unreadable encrypted message": [
null,
"Ons het 'n onleesbare versleutelde boodskap ontvang"
],
"This user has requested an encrypted session.": [
null,
"Hierdie gebruiker versoek 'n versleutelde sessie"
],
"Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [
null,
"Hier is die vingerafdrukke, bevestig hulle met %1$s, buite hierdie kletskanaal \n\nU vingerafdruk, %2$s: %3$s\n\nVingerafdruk vir %1$s: %4$s\n\nIndien u die vingerafdrukke bevestig het, klik OK, andersinds klik Kanselleer"
],
"You will be prompted to provide a security question and then an answer to that question.\n\nYour buddy will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will have been verified.": [
null,
"Daar sal van u verwag word om 'n sekuriteitsvraag te stel, en dan ook die antwoord tot daardie vraag te verskaf.\n\nU gespreksmaat sal dan daardie vraag gestel word, en indien hulle presies dieselfde antwoord (hoofletters tel) verskaf, sal hul identiteit geverifieer wees."
],
"What is your security question?": [
null,
"Wat is u sekuriteitsvraag?"
],
"What is the answer to the security question?": [
null,
"Wat is die antwoord tot die sekuriteitsvraag?"
],
"Invalid authentication scheme provided": [
null,
"Ongeldige verifikasiemetode verskaf"
],
"Your messages are not encrypted anymore": [
null,
"U boodskappe is nie meer versleutel nie"
],
"Your messages are now encrypted but your buddy's identity has not been verified.": [
null,
"U boodskappe is now versleutel maar u gespreksmaat se identiteit is nog onseker."
],
"Your buddy's identify has been verified.": [
null,
"U gespreksmaat se identiteit is geverifieer."
],
"Your buddy has ended encryption on their end, you should do the same.": [
null,
"U gespreksmaat het versleuteling gestaak, u behoort nou dieselfde te doen."
],
"Your messages are not encrypted. Click here to enable OTR encryption.": [
null,
"U boodskappe is nie versleutel nie. Klik hier om OTR versleuteling te aktiveer."
],
"Your messages are encrypted, but your buddy has not been verified.": [
null,
"U boodskappe is versleutel, maar u gespreksmaat se identiteit is not onseker."
],
"Your messages are encrypted and your buddy verified.": [
null,
"U boodskappe is versleutel en u gespreksmaat se identiteit geverifieer."
],
"Your buddy has closed their end of the private session, you should do the same": [
null,
"U gespreksmaat het die private sessie gestaak. U behoort dieselfde te doen"
],
"Contacts": [
null,
......
This diff is collapsed.
This diff is collapsed.
......@@ -3,8 +3,8 @@
"": {
"Project-Id-Version": "Converse.js 0.4",
"Report-Msgid-Bugs-To": "",
"POT-Creation-Date": "2013-09-13 16:02+0200",
"PO-Revision-Date": "2013-09-15 11:44+0200",
"POT-Creation-Date": "2013-09-15 21:55+0200",
"PO-Revision-Date": "2013-09-15 22:03+0200",
"Last-Translator": "JC Brand <jc@opkode.com>",
"Language-Team": "German",
"Language": "de",
......@@ -16,6 +16,22 @@
"lang": "de",
"plural_forms": "nplurals=2; plural=(n != 1);"
},
"unencrypted": [
null,
""
],
"unverified": [
null,
""
],
"verified": [
null,
""
],
"finished": [
null,
""
],
"Disconnected": [
null,
"Verbindung unterbrochen."
......@@ -44,13 +60,57 @@
null,
"Trenne Verbindung"
],
"me": [
"Re-establishing encrypted session": [
null,
"Ich"
""
],
"%1$s is typing": [
"Your browser needs to generate a private key, which will be used in your encrypted chat session. This can take up to 30 seconds during which your browser might freeze and become unresponsive.": [
null,
"%1$s tippt"
""
],
"Private key generated.": [
null,
""
],
"Authentication request from %1$s\n\nYour buddy is attempting to verify your identity, by asking you the question below.\n\n%2$s": [
null,
""
],
"Could not verify this user's identify.": [
null,
""
],
"Personal message": [
null,
"Persönliche Nachricht"
],
"Start encrypted conversation": [
null,
""
],
"Refresh encrypted conversation": [
null,
""
],
"End encrypted conversation": [
null,
""
],
"Verify with SMP": [
null,
""
],
"Verify with fingerprints": [
null,
""
],
"What's this?": [
null,
""
],
"me": [
null,
"Ich"
],
"Show this menu": [
null,
......@@ -64,9 +124,73 @@
null,
"Nachrichten entfernen"
],
"Personal message": [
"Your message could not be sent": [
null,
"Persönliche Nachricht"
""
],
"We received an unencrypted message": [
null,
""
],
"We received an unreadable encrypted message": [
null,
""
],
"This user has requested an encrypted session.": [
null,
""
],
"Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [
null,
""
],
"You will be prompted to provide a security question and then an answer to that question.\n\nYour buddy will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will have been verified.": [
null,
""
],
"What is your security question?": [
null,
""
],
"What is the answer to the security question?": [
null,
""
],
"Invalid authentication scheme provided": [
null,
""
],
"Your messages are not encrypted anymore": [
null,
""
],
"Your messages are now encrypted but your buddy's identity has not been verified.": [
null,
""
],
"Your buddy's identify has been verified.": [
null,
""
],
"Your buddy has ended encryption on their end, you should do the same.": [
null,
""
],
"Your messages are not encrypted. Click here to enable OTR encryption.": [
null,
""
],
"Your messages are encrypted, but your buddy has not been verified.": [
null,
""
],
"Your messages are encrypted and your buddy verified.": [
null,
""
],
"Your buddy has closed their end of the private session, you should do the same": [
null,
""
],
"Contacts": [
null,
......@@ -480,6 +604,10 @@
null,
"Online-Kontakte"
],
"%1$s is typing": [
null,
"%1$s tippt"
],
"Connected": [
null,
"Verbunden"
......@@ -489,4 +617,4 @@
"Angehängt"
]
}
}
\ No newline at end of file
}
This diff is collapsed.
......@@ -6,8 +6,8 @@
"": {
"Project-Id-Version": "Converse.js 0.4",
"Report-Msgid-Bugs-To": "",
"POT-Creation-Date": "2013-09-13 16:02+0200",
"PO-Revision-Date": "2013-09-15 11:44+0200",
"POT-Creation-Date": "2013-09-15 21:55+0200",
"PO-Revision-Date": "2013-09-15 22:03+0200",
"Last-Translator": "JC Brand <jc@opkode.com>",
"Language-Team": "German",
"Language": "de",
......@@ -19,6 +19,22 @@
"lang": "de",
"plural_forms": "nplurals=2; plural=(n != 1);"
},
"unencrypted": [
null,
""
],
"unverified": [
null,
""
],
"verified": [
null,
""
],
"finished": [
null,
""
],
"Disconnected": [
null,
"Verbindung unterbrochen."
......@@ -47,13 +63,57 @@
null,
"Trenne Verbindung"
],
"me": [
"Re-establishing encrypted session": [
null,
"Ich"
""
],
"%1$s is typing": [
"Your browser needs to generate a private key, which will be used in your encrypted chat session. This can take up to 30 seconds during which your browser might freeze and become unresponsive.": [
null,
"%1$s tippt"
""
],
"Private key generated.": [
null,
""
],
"Authentication request from %1$s\n\nYour buddy is attempting to verify your identity, by asking you the question below.\n\n%2$s": [
null,
""
],
"Could not verify this user's identify.": [
null,
""
],
"Personal message": [
null,
"Persönliche Nachricht"
],
"Start encrypted conversation": [
null,
""
],
"Refresh encrypted conversation": [
null,
""
],
"End encrypted conversation": [
null,
""
],
"Verify with SMP": [
null,
""
],
"Verify with fingerprints": [
null,
""
],
"What's this?": [
null,
""
],
"me": [
null,
"Ich"
],
"Show this menu": [
null,
......@@ -67,9 +127,73 @@
null,
"Nachrichten entfernen"
],
"Personal message": [
"Your message could not be sent": [
null,
"Persönliche Nachricht"
""
],
"We received an unencrypted message": [
null,
""
],
"We received an unreadable encrypted message": [
null,
""
],
"This user has requested an encrypted session.": [
null,
""
],
"Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [
null,
""
],
"You will be prompted to provide a security question and then an answer to that question.\n\nYour buddy will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will have been verified.": [
null,
""
],
"What is your security question?": [
null,
""
],
"What is the answer to the security question?": [
null,
""
],
"Invalid authentication scheme provided": [
null,
""
],
"Your messages are not encrypted anymore": [
null,
""
],
"Your messages are now encrypted but your buddy's identity has not been verified.": [
null,
""
],
"Your buddy's identify has been verified.": [
null,
""
],
"Your buddy has ended encryption on their end, you should do the same.": [
null,
""
],
"Your messages are not encrypted. Click here to enable OTR encryption.": [
null,
""
],
"Your messages are encrypted, but your buddy has not been verified.": [
null,
""
],
"Your messages are encrypted and your buddy verified.": [
null,
""
],
"Your buddy has closed their end of the private session, you should do the same": [
null,
""
],
"Contacts": [
null,
......@@ -483,6 +607,10 @@
null,
"Online-Kontakte"
],
"%1$s is typing": [
null,
"%1$s tippt"
],
"Connected": [
null,
"Verbunden"
......
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.
......@@ -195,7 +195,7 @@
if (!window.locales) {
window.locales = {};
}
window.locales.de = factory(new Jed(translations));
window.locales.hu = factory(new Jed(translations));
}
}(this, function(hu) {
return hu;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -10,7 +10,23 @@ require.config({
"strophe.muc": "components/strophe.muc/index",
"strophe.roster": "components/strophe.roster/index",
"strophe.vcard": "components/strophe.vcard/index",
"strophe.disco": "components/strophe.disco/index"
"strophe.disco": "components/strophe.disco/index",
"salsa20": "components/otr/build/dep/salsa20",
"bigint": "components/otr/build/dep/bigint",
"crypto.core": "components/otr/vendor/cryptojs/core",
"crypto.enc-base64": "components/otr/vendor/cryptojs/enc-base64",
"crypto.md5": "components/crypto-js/src/md5",
"crypto.evpkdf": "components/crypto-js/src/evpkdf",
"crypto.cipher-core": "components/otr/vendor/cryptojs/cipher-core",
"crypto.aes": "components/otr/vendor/cryptojs/aes",
"crypto.sha1": "components/otr/vendor/cryptojs/sha1",
"crypto.sha256": "components/otr/vendor/cryptojs/sha256",
"crypto.hmac": "components/otr/vendor/cryptojs/hmac",
"crypto.pad-nopadding": "components/otr/vendor/cryptojs/pad-nopadding",
"crypto.mode-ctr": "components/otr/vendor/cryptojs/mode-ctr",
"crypto": "crypto",
"eventemitter": "components/otr/build/dep/eventemitter",
"otr": "components/otr/build/otr"
},
// define module dependencies for modules not using define
......@@ -26,6 +42,9 @@ require.config({
//module value.
exports: 'Backbone'
},
'crypto.aes': {
exports: 'CryptoJS'
},
'jquery.tinysort': { deps: ['jquery'] },
'strophe': { deps: ['jquery'] },
'underscore': { exports: '_' },
......
This diff is collapsed.
......@@ -8,6 +8,23 @@
<link rel="stylesheet" type="text/css" media="screen" href="converse.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="components/otr/build/dep/salsa20.js"></script>
<script type="text/javascript" src="components/otr/build/dep/bigint.js"></script>
<!-- CryptoJS -->
<script type="text/javascript" src="components/otr/vendor/cryptojs/core.js"></script>
<script type="text/javascript" src="components/otr/vendor/cryptojs/enc-base64.js"></script>
<script type="text/javascript" src="components/crypto-js/src/md5.js"></script>
<script type="text/javascript" src="components/crypto-js/src/evpkdf.js"></script>
<script type="text/javascript" src="components/otr/vendor/cryptojs/cipher-core.js"></script>
<script type="text/javascript" src="components/otr/vendor/cryptojs/aes.js"></script>
<script type="text/javascript" src="components/otr/vendor/cryptojs/sha1.js"></script>
<script type="text/javascript" src="components/otr/vendor/cryptojs/sha256.js"></script>
<script type="text/javascript" src="components/otr/vendor/cryptojs/hmac.js"></script>
<script type="text/javascript" src="components/otr/vendor/cryptojs/pad-nopadding.js"></script>
<script type="text/javascript" src="components/otr/vendor/cryptojs/mode-ctr.js"></script>
<!-- until here -->
<script type="text/javascript" src="components/otr/build/dep/eventemitter.js"></script>
<script type="text/javascript" src="components/otr/build/otr.js"></script>
<script type="text/javascript" src="components/strophe/strophe.js"></script>
<script type="text/javascript" src="components/strophe.roster/index.js"></script>
<script type="text/javascript" src="components/strophe.muc/index.js"></script>
......@@ -163,14 +180,7 @@
</footer>
</div>
<div id="chatpanel">
<div id="collective-xmpp-chat-data"></div>
<div id="toggle-controlbox">
<a href="#" class="chat toggle-online-users">
<strong class="conn-feedback">Toggle chat</strong> <strong style="display: none" id="online-count">(0)</strong>
</a>
</div>
</div>
<div id="conversejs"></div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
......
{
"name": "converse.js",
"version": "0.6.6",
"version": "0.7.0",
"description": "Browser based XMPP instant messaging client",
"main": "main.js",
"directories": {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -18,20 +18,6 @@
<h2 id="project_tagline">Tests</h2>
</header>
</div>
<div id="chatpanel">
<div id="collective-xmpp-chat-data"></div>
<div id="toggle-controlbox">
<a href="#" class="chat toggle-online-users">
<span class="conn-feedback">Click here to chat</span> <strong style="display: none" id="online-count">(0)</strong>
</a>
</div>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">try { var pageTracker = _gat._getTracker("UA-2128260-8"); pageTracker._trackPageview(); } catch(err) {}</script>
<div id="conversejs"></div>
</body>
</html>
......@@ -5,13 +5,38 @@
return factory();
});
}(this, function (converse) {
var mock_connection = {
var mock = {};
// Names from http://www.fakenamegenerator.com/
mock.req_names = [
'Louw Spekman', 'Mohamad Stet', 'Dominik Beyer'
];
mock.pend_names = [
'Suleyman van Beusichem', 'Nanja van Yperen', 'Nicole Diederich'
];
mock.cur_names = [
'Max Frankfurter', 'Candice van der Knijff', 'Irini Vlastuin', 'Rinse Sommer', 'Annegreet Gomez',
'Robin Schook', 'Marcel Eberhardt', 'Simone Brauer', 'Asmaa Haakman', 'Felix Amsel',
'Lena Grunewald', 'Laura Grunewald', 'Mandy Seiler', 'Sven Bosch', 'Nuriye Cuypers'
];
mock.num_contacts = mock.req_names.length + mock.pend_names.length + mock.cur_names.length;
mock.chatroom_names = [
'Dyon van de Wege', 'Thomas Kalb', 'Dirk Theissen', 'Felix Hofmann', 'Ka Lek', 'Anne Ebersbacher'
];
mock.event = {
'preventDefault': function () {}
};
mock.mock_connection = {
'mock': true,
'muc': {
'listRooms': function () {},
'join': function () {},
'leave': function () {},
'rooms': {}
},
'service': 'jasmine tests',
'jid': 'dummy@localhost',
'addHandler': function (handler, ns, name, type, id, from, options) {
return function () {};
......@@ -48,5 +73,5 @@
'items': function () {}
}
};
return mock_connection;
return mock;
}));
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