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 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) 0.6.6 (2013-10-16)
------------------ ------------------
......
...@@ -40,6 +40,9 @@ pot: ...@@ -40,6 +40,9 @@ pot:
merge: merge:
find ./locale -maxdepth 1 -mindepth 1 -type d -exec msgmerge {}/LC_MESSAGES/converse.po ./locale/converse.pot -U \; 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: 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)\"/ bower.json
sed -i s/\"version\":\ \"[0-9]\.[0-9]\.[0-9]\"/\"version\":\ \"$(VERSION)\"/ package.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 ...@@ -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 specific backend. You will however need an XMPP server to connect to, either
your own, or a public one. your own, or a public one.
It is used by collective.xmpp.chat_, which is a Plone_ instant messaging add-on.
-------- --------
Features Features
-------- --------
...@@ -32,6 +30,7 @@ It has the following features: ...@@ -32,6 +30,7 @@ It has the following features:
* Typing notifications * Typing notifications
* Third person messages (/me ) * Third person messages (/me )
* Translated into multiple languages (af, de, es, fr, it, hu, pt-BR, ru) * 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 Screencasts
...@@ -40,6 +39,16 @@ Screencasts ...@@ -40,6 +39,16 @@ Screencasts
* `In a static HTML page`_. Here we chat to external XMPP accounts on Jabber.org and Gmail. * `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. * `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 Demo
---- ----
...@@ -80,7 +89,8 @@ Licence ...@@ -80,7 +89,8 @@ Licence
Donate Donate
------ ------
Bitcoin address: 16FsPqE9DhFTryxrUenpsGX4LJ1TPu8GqS * Bitcoin: 16FsPqE9DhFTryxrUenpsGX4LJ1TPu8GqS
* Litecoin: LLvLH6qJch7HAamLguHkwobCrxmHLhiwZw
.. _Converse.js: http://conversejs.org .. _Converse.js: http://conversejs.org
.. _strophe.js: http://strophe.im/strophejs .. _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", "name": "converse",
"version": "0.6.6", "version": "0.7.0",
"devDependencies": { "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": { "dependencies": {
"requirejs": "2.1.8", "requirejs": "2.1.8",
...@@ -17,6 +18,8 @@ ...@@ -17,6 +18,8 @@
"strophe.vcard": "https://raw.github.com/jcbrand/strophejs-plugins/75c8693992bc357c699b6d615eeb396e799f5c02/vcard/strophe.vcard.js", "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.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", "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" "almond": "~0.2.6"
}, },
"exportsOverride": {} "exportsOverride": {}
......
...@@ -25,6 +25,12 @@ ...@@ -25,6 +25,12 @@
"strophe.muc": "components/strophe.muc/index", "strophe.muc": "components/strophe.muc/index",
"strophe.roster": "components/strophe.roster/index", "strophe.roster": "components/strophe.roster/index",
"strophe.vcard": "components/strophe.vcard/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 # 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. # 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 tags: fbb0d17656682115ca4d033fb2f83ba1
...@@ -57,14 +57,7 @@ Finally, Converse.js requires a special snippet of HTML markup to be included in ...@@ -57,14 +57,7 @@ Finally, Converse.js requires a special snippet of HTML markup to be included in
:: ::
<div id="chatpanel"> <div id="conversejs"></div>
<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>
The `index.html <https://github.com/jcbrand/converse.js/blob/master/index.html>`_ file inside the The `index.html <https://github.com/jcbrand/converse.js/blob/master/index.html>`_ file inside the
Converse.js repository serves as a nice usable example of this. Converse.js repository serves as a nice usable example of this.
...@@ -222,7 +215,7 @@ but this will require custom code on your server. ...@@ -222,7 +215,7 @@ but this will require custom code on your server.
Jack Moffitt has a great `blogpost`_ about this and even provides an `example Django application`_ to demonstrate it. Jack Moffitt has a great `blogpost`_ about this and even provides an `example Django application`_ to demonstrate it.
.. Note:: .. Note ::
If you want to enable single session support, make sure to pass **prebind: true** If you want to enable single session support, make sure to pass **prebind: true**
when you call **converse.initialize** (see ./index.html). when you call **converse.initialize** (see ./index.html).
Additionally you need to pass in valid **jid**, **sid**, **rid** and Additionally you need to pass in valid **jid**, **sid**, **rid** and
...@@ -589,18 +582,64 @@ Default = ``false`` ...@@ -589,18 +582,64 @@ Default = ``false``
If set to ``true``, only online users will be shown in the contacts roster. If set to ``true``, only online users will be shown in the contacts roster.
Users with any other status (e.g. away, busy etc.) will not be shown. Users with any other status (e.g. away, busy etc.) will not be shown.
xhr_custom_status
-----------------
Default = ``false``
.. Note ::
XHR stands for XMLHTTPRequest, and is meant here in the AJAX sense (Asynchronous Javascript and XML).
This option will let converse.js make an AJAX POST with your changed custom chat status to a
remote server.
xhr_custom_status_url
---------------------
.. Note ::
XHR stands for XMLHTTPRequest, and is meant here in the AJAX sense (Asynchronous Javascript and XML).
Default = Empty string
Used only in conjunction with ``xhr_custom_status``.
This is the URL to which the AJAX POST request to set the user's custom status
message will be made.
The message itself is sent in the request under the key ``msg``.
xhr_user_search xhr_user_search
--------------- ---------------
Default = ``false`` Default = ``false``
.. Note ::
XHR stands for XMLHTTPRequest, and is meant here in the AJAX sense (Asynchronous Javascript and XML).
There are two ways to add users. There are two ways to add users.
* The user inputs a valid JID (Jabber ID), and the user is added as a pending contact. * The user inputs a valid JID (Jabber ID), and the user is added as a pending contact.
* The user inputs some text (for example part of a firstname or lastname), an XHR will be made to a backend, and a list of matches are returned. The user can then choose one of the matches to add as a contact. * The user inputs some text (for example part of a firstname or lastname), an XHR (Ajax Request) will be made to a remote server, and a list of matches are returned. The user can then choose one of the matches to add as a contact.
This setting enables the second mechanism, otherwise by default the first will be used.
This setting enables the second mechanism, otherwise by default the first will *What is expected from the remote server?*
be used.
A default JSON encoded list of objects must be returned. Each object
corresponds to a matched user and needs the keys ``id`` and ``fullname``.
xhr_user_search_url
-------------------
.. Note ::
XHR stands for XMLHTTPRequest, and is meant here in the AJAX sense (Asynchronous Javascript and XML).
Default = Empty string
Used only in conjunction with ``xhr_user_search``.
This is the URL to which an AJAX GET request will be made to fetch user data from your remote server.
The query string will be included in the request with ``q`` as its key.
============ ============
Minification Minification
...@@ -623,15 +662,9 @@ To minify the Javascript and CSS, run the following command: ...@@ -623,15 +662,9 @@ To minify the Javascript and CSS, run the following command:
grunt minify grunt minify
.. Note :: Javascript will be bundled and minified with `require.js`_'s optimization tool,
Since release 0.6.0, I'm using `almond <https://github.com/jrburke/almond>`_ using `almond <https://github.com/jrburke/almond>`_.
instead of `require.js <http://requirejs.org>`_. The
`grunt-contrib-requirejs <https://github.com/gruntjs/grunt-contrib-requirejs>`_
plugin however doesn't support *almond*. I therefore now build it manually
(the old way again), like this: ``r.js -o build.js``. CSS can be minimized
separately via ``grunt cssmin``.
Javascript will be bundled and minified via `require.js`_'s optimization tool.
You can `read more about require.js's optimizer here`_. You can `read more about require.js's optimizer here`_.
CSS is minified via `cssmin <https://github.com/gruntjs/grunt-contrib-cssmin>`_. CSS is minified via `cssmin <https://github.com/gruntjs/grunt-contrib-cssmin>`_.
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <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/stylesheet.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '', URL_ROOT: '',
VERSION: '0.6.6', VERSION: '0.7.0',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.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> </head>
<body> <body>
<div id="header_wrap" class="outer"> <div id="header_wrap" class="outer">
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
<li class="right" style="margin-right: 10px"> <li class="right" style="margin-right: 10px">
<a href="#" title="General Index" <a href="#" title="General Index"
accesskey="I">index</a></li> 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> </ul>
</div> </div>
<section id="main_content" class="inner"> <section id="main_content" class="inner">
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
<li class="right" style="margin-right: 10px"> <li class="right" style="margin-right: 10px">
<a href="#" title="General Index" <a href="#" title="General Index"
>index</a></li> >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> </ul>
</div> </div>
</div> </div>
......
This diff is collapsed.
# Sphinx inventory version 2 # Sphinx inventory version 2
# Project: Converse.js # Project: Converse.js
# Version: 0.6.6 # Version: 0.7.0
# The remainder of this file is compressed using zlib. # The remainder of this file is compressed using zlib.
xm xm
{"]; {"];
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <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/stylesheet.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '', URL_ROOT: '',
VERSION: '0.6.6', VERSION: '0.7.0',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/searchtools.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"> <script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); }); jQuery(function() { Search.loadIndex("searchindex.js"); });
</script> </script>
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
<li class="right" style="margin-right: 10px"> <li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index" <a href="genindex.html" title="General Index"
accesskey="I">index</a></li> 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> </ul>
</div> </div>
<section id="main_content" class="inner"> <section id="main_content" class="inner">
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
<li class="right" style="margin-right: 10px"> <li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index" <a href="genindex.html" title="General Index"
>index</a></li> >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> </ul>
</div> </div>
</div> </div>
......
This diff is collapsed.
...@@ -48,9 +48,9 @@ copyright = u'2013, JC Brand' ...@@ -48,9 +48,9 @@ copyright = u'2013, JC Brand'
# built documents. # built documents.
# #
# The short X.Y version. # The short X.Y version.
version = '0.6.6' version = '0.7.0'
# The full version, including alpha/beta/rc tags. # 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 # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
......
...@@ -57,14 +57,7 @@ Finally, Converse.js requires a special snippet of HTML markup to be included in ...@@ -57,14 +57,7 @@ Finally, Converse.js requires a special snippet of HTML markup to be included in
:: ::
<div id="chatpanel"> <div id="conversejs"></div>
<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>
The `index.html <https://github.com/jcbrand/converse.js/blob/master/index.html>`_ file inside the The `index.html <https://github.com/jcbrand/converse.js/blob/master/index.html>`_ file inside the
Converse.js repository serves as a nice usable example of this. Converse.js repository serves as a nice usable example of this.
...@@ -222,7 +215,7 @@ but this will require custom code on your server. ...@@ -222,7 +215,7 @@ but this will require custom code on your server.
Jack Moffitt has a great `blogpost`_ about this and even provides an `example Django application`_ to demonstrate it. Jack Moffitt has a great `blogpost`_ about this and even provides an `example Django application`_ to demonstrate it.
.. Note:: .. Note ::
If you want to enable single session support, make sure to pass **prebind: true** If you want to enable single session support, make sure to pass **prebind: true**
when you call **converse.initialize** (see ./index.html). when you call **converse.initialize** (see ./index.html).
Additionally you need to pass in valid **jid**, **sid**, **rid** and Additionally you need to pass in valid **jid**, **sid**, **rid** and
...@@ -589,18 +582,64 @@ Default = ``false`` ...@@ -589,18 +582,64 @@ Default = ``false``
If set to ``true``, only online users will be shown in the contacts roster. If set to ``true``, only online users will be shown in the contacts roster.
Users with any other status (e.g. away, busy etc.) will not be shown. Users with any other status (e.g. away, busy etc.) will not be shown.
xhr_custom_status
-----------------
Default = ``false``
.. Note ::
XHR stands for XMLHTTPRequest, and is meant here in the AJAX sense (Asynchronous Javascript and XML).
This option will let converse.js make an AJAX POST with your changed custom chat status to a
remote server.
xhr_custom_status_url
---------------------
.. Note ::
XHR stands for XMLHTTPRequest, and is meant here in the AJAX sense (Asynchronous Javascript and XML).
Default = Empty string
Used only in conjunction with ``xhr_custom_status``.
This is the URL to which the AJAX POST request to set the user's custom status
message will be made.
The message itself is sent in the request under the key ``msg``.
xhr_user_search xhr_user_search
--------------- ---------------
Default = ``false`` Default = ``false``
.. Note ::
XHR stands for XMLHTTPRequest, and is meant here in the AJAX sense (Asynchronous Javascript and XML).
There are two ways to add users. There are two ways to add users.
* The user inputs a valid JID (Jabber ID), and the user is added as a pending contact. * The user inputs a valid JID (Jabber ID), and the user is added as a pending contact.
* The user inputs some text (for example part of a firstname or lastname), an XHR will be made to a backend, and a list of matches are returned. The user can then choose one of the matches to add as a contact. * The user inputs some text (for example part of a firstname or lastname), an XHR (Ajax Request) will be made to a remote server, and a list of matches are returned. The user can then choose one of the matches to add as a contact.
This setting enables the second mechanism, otherwise by default the first will be used.
This setting enables the second mechanism, otherwise by default the first will *What is expected from the remote server?*
be used.
A default JSON encoded list of objects must be returned. Each object
corresponds to a matched user and needs the keys ``id`` and ``fullname``.
xhr_user_search_url
-------------------
.. Note ::
XHR stands for XMLHTTPRequest, and is meant here in the AJAX sense (Asynchronous Javascript and XML).
Default = Empty string
Used only in conjunction with ``xhr_user_search``.
This is the URL to which an AJAX GET request will be made to fetch user data from your remote server.
The query string will be included in the request with ``q`` as its key.
============ ============
Minification Minification
...@@ -623,15 +662,9 @@ To minify the Javascript and CSS, run the following command: ...@@ -623,15 +662,9 @@ To minify the Javascript and CSS, run the following command:
grunt minify grunt minify
.. Note :: Javascript will be bundled and minified with `require.js`_'s optimization tool,
Since release 0.6.0, I'm using `almond <https://github.com/jrburke/almond>`_ using `almond <https://github.com/jrburke/almond>`_.
instead of `require.js <http://requirejs.org>`_. The
`grunt-contrib-requirejs <https://github.com/gruntjs/grunt-contrib-requirejs>`_
plugin however doesn't support *almond*. I therefore now build it manually
(the old way again), like this: ``r.js -o build.js``. CSS can be minimized
separately via ``grunt cssmin``.
Javascript will be bundled and minified via `require.js`_'s optimization tool.
You can `read more about require.js's optimizer here`_. You can `read more about require.js's optimizer here`_.
CSS is minified via `cssmin <https://github.com/gruntjs/grunt-contrib-cssmin>`_. CSS is minified via `cssmin <https://github.com/gruntjs/grunt-contrib-cssmin>`_.
......
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
<h1 id="project_title"><a href="http://conversejs.org">Converse.js</a></h1> <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> <h2 id="project_tagline">An XMPP chat client for your website</h2>
<section id="downloads"> <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="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.6.6.tar.gz">Download the latest release as a tar.gz 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> </section>
</header> </header>
</div> </div>
...@@ -42,18 +42,19 @@ ...@@ -42,18 +42,19 @@
<h2>Features</h2> <h2>Features</h2>
<ul> <ul>
<li>Single-user chat</li> <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>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">XEP 54</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">XEP 30</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>Contact rosters</li>
<li>Manually or automically subscribe to other contacts</li> <li>Manually or automically subscribe to other contacts</li>
<li>Accept or decline contact requests</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>Chat statuses (online, busy, away, offline)</li>
<li>Custom status messages</li> <li>Custom status messages</li>
<li>Typing notifications</li> <li>Typing notifications</li>
<li>Third person messages (/me )</li> <li>Third person messages (/me )</li>
<li>Translated into multiple languages (af, de, es, fr, hu, it, nl, pt-BR, ru)</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> </ul>
<h2>Screencasts</h2> <h2>Screencasts</h2>
...@@ -151,6 +152,7 @@ ...@@ -151,6 +152,7 @@
<li><a href="http://jquery.com" target="_blank">JQuery</a></li> <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://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://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> <li><a href="http://requirejs.org" target="_blank">require.js</a> (optional dependency)</li>
</ul> </ul>
...@@ -175,14 +177,7 @@ ...@@ -175,14 +177,7 @@
</footer> </footer>
</div> </div>
<div id="chatpanel"> <div id="conversejs"></div>
<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>
<script type="text/javascript"> <script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
...@@ -193,15 +188,16 @@ ...@@ -193,15 +188,16 @@
<script> <script>
require(['converse'], function (converse) { require(['converse'], function (converse) {
converse.initialize({ converse.initialize({
allow_otr: true,
auto_list_rooms: false, auto_list_rooms: false,
auto_subscribe: false, auto_subscribe: false,
bosh_service_url: 'https://bind.opkode.im', // Please use this connection manager only for testing purposes bosh_service_url: 'https://bind.opkode.im', // Please use this connection manager only for testing purposes
debug: true ,
hide_muc_server: false, hide_muc_server: false,
i18n: locales['en'], // Refer to ./locale/locales.js to see which locales are supported i18n: locales['en'], // Refer to ./locale/locales.js to see which locales are supported
prebind: false, prebind: false,
show_controlbox_by_default: true, show_controlbox_by_default: true,
xhr_user_search: false, xhr_user_search: false,
debug: false
}); });
}); });
</script> </script>
......
...@@ -6,18 +6,34 @@ ...@@ -6,18 +6,34 @@
"": { "": {
"Project-Id-Version": "Converse.js 0.4", "Project-Id-Version": "Converse.js 0.4",
"Report-Msgid-Bugs-To": "", "Report-Msgid-Bugs-To": "",
"POT-Creation-Date": "2013-09-13 16:02+0200", "POT-Creation-Date": "2013-09-15 21:55+0200",
"PO-Revision-Date": "2013-09-15 11:44+0200", "PO-Revision-Date": "2013-09-15 21:56+0200",
"Last-Translator": "JC Brand <jc@opkode.com>", "Last-Translator": "JC Brand <jc@opkode.com>",
"Language-Team": "Afrikaans", "Language-Team": "Afrikaans",
"Language": "af", "Language": "af",
"MIME-Version": "1.0", "MIME-Version": "1.0",
"Content-Type": "text/plain; charset=ASCII", "Content-Type": "text/plain; charset=UTF-8",
"Content-Transfer-Encoding": "8bit", "Content-Transfer-Encoding": "8bit",
"domain": "converse", "domain": "converse",
"lang": "af", "lang": "af",
"plural_forms": "nplurals=2; plural=(n != 1);" "plural_forms": "nplurals=2; plural=(n != 1);"
}, },
"unencrypted": [
null,
"nie-privaat"
],
"unverified": [
null,
"ongeverifieer"
],
"verified": [
null,
"privaat"
],
"finished": [
null,
"afgesluit"
],
"Disconnected": [ "Disconnected": [
null, null,
"Verbindung onderbreek" "Verbindung onderbreek"
...@@ -46,13 +62,57 @@ ...@@ -46,13 +62,57 @@
null, null,
"Onderbreek verbinding" "Onderbreek verbinding"
], ],
"me": [ "Re-establishing encrypted session": [
null, 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, null,
"%1$s tik tans" "ek"
], ],
"Show this menu": [ "Show this menu": [
null, null,
...@@ -66,9 +126,73 @@ ...@@ -66,9 +126,73 @@
null, null,
"Verwyder boodskappe" "Verwyder boodskappe"
], ],
"Personal message": [ "Your message could not be sent": [
null, 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": [ "Contacts": [
null, null,
......
...@@ -3,18 +3,34 @@ ...@@ -3,18 +3,34 @@
"": { "": {
"Project-Id-Version": "Converse.js 0.4", "Project-Id-Version": "Converse.js 0.4",
"Report-Msgid-Bugs-To": "", "Report-Msgid-Bugs-To": "",
"POT-Creation-Date": "2013-09-13 16:02+0200", "POT-Creation-Date": "2013-09-15 21:55+0200",
"PO-Revision-Date": "2013-09-15 11:44+0200", "PO-Revision-Date": "2013-09-15 21:56+0200",
"Last-Translator": "JC Brand <jc@opkode.com>", "Last-Translator": "JC Brand <jc@opkode.com>",
"Language-Team": "Afrikaans", "Language-Team": "Afrikaans",
"Language": "af", "Language": "af",
"MIME-Version": "1.0", "MIME-Version": "1.0",
"Content-Type": "text/plain; charset=ASCII", "Content-Type": "text/plain; charset=UTF-8",
"Content-Transfer-Encoding": "8bit", "Content-Transfer-Encoding": "8bit",
"domain": "converse", "domain": "converse",
"lang": "af", "lang": "af",
"plural_forms": "nplurals=2; plural=(n != 1);" "plural_forms": "nplurals=2; plural=(n != 1);"
}, },
"unencrypted": [
null,
"nie-privaat"
],
"unverified": [
null,
"ongeverifieer"
],
"verified": [
null,
"privaat"
],
"finished": [
null,
"afgesluit"
],
"Disconnected": [ "Disconnected": [
null, null,
"Verbindung onderbreek" "Verbindung onderbreek"
...@@ -43,13 +59,57 @@ ...@@ -43,13 +59,57 @@
null, null,
"Onderbreek verbinding" "Onderbreek verbinding"
], ],
"me": [ "Re-establishing encrypted session": [
null, 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, null,
"%1$s tik tans" "ek"
], ],
"Show this menu": [ "Show this menu": [
null, null,
...@@ -63,9 +123,73 @@ ...@@ -63,9 +123,73 @@
null, null,
"Verwyder boodskappe" "Verwyder boodskappe"
], ],
"Personal message": [ "Your message could not be sent": [
null, 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": [ "Contacts": [
null, null,
......
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.
...@@ -195,7 +195,7 @@ ...@@ -195,7 +195,7 @@
if (!window.locales) { if (!window.locales) {
window.locales = {}; window.locales = {};
} }
window.locales.de = factory(new Jed(translations)); window.locales.hu = factory(new Jed(translations));
} }
}(this, function(hu) { }(this, function(hu) {
return 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({ ...@@ -10,7 +10,23 @@ require.config({
"strophe.muc": "components/strophe.muc/index", "strophe.muc": "components/strophe.muc/index",
"strophe.roster": "components/strophe.roster/index", "strophe.roster": "components/strophe.roster/index",
"strophe.vcard": "components/strophe.vcard/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 // define module dependencies for modules not using define
...@@ -26,6 +42,9 @@ require.config({ ...@@ -26,6 +42,9 @@ require.config({
//module value. //module value.
exports: 'Backbone' exports: 'Backbone'
}, },
'crypto.aes': {
exports: 'CryptoJS'
},
'jquery.tinysort': { deps: ['jquery'] }, 'jquery.tinysort': { deps: ['jquery'] },
'strophe': { deps: ['jquery'] }, 'strophe': { deps: ['jquery'] },
'underscore': { exports: '_' }, 'underscore': { exports: '_' },
......
This diff is collapsed.
...@@ -8,6 +8,23 @@ ...@@ -8,6 +8,23 @@
<link rel="stylesheet" type="text/css" media="screen" href="converse.css"> <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 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/strophe.js"></script>
<script type="text/javascript" src="components/strophe.roster/index.js"></script> <script type="text/javascript" src="components/strophe.roster/index.js"></script>
<script type="text/javascript" src="components/strophe.muc/index.js"></script> <script type="text/javascript" src="components/strophe.muc/index.js"></script>
...@@ -163,14 +180,7 @@ ...@@ -163,14 +180,7 @@
</footer> </footer>
</div> </div>
<div id="chatpanel"> <div id="conversejs"></div>
<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>
<script type="text/javascript"> <script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
......
{ {
"name": "converse.js", "name": "converse.js",
"version": "0.6.6", "version": "0.7.0",
"description": "Browser based XMPP instant messaging client", "description": "Browser based XMPP instant messaging client",
"main": "main.js", "main": "main.js",
"directories": { "directories": {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -18,20 +18,6 @@ ...@@ -18,20 +18,6 @@
<h2 id="project_tagline">Tests</h2> <h2 id="project_tagline">Tests</h2>
</header> </header>
</div> </div>
<div id="conversejs"></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>
</body> </body>
</html> </html>
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