Commit e4cf875d authored by JC Brand's avatar JC Brand

Merge branch 'master' into otr

Conflicts:
	bower.json
	converse.css
	converse.js
	main.js
	tests_main.js
parents c0a4e957 c61eef99
Changelog
=========
0.6.0 (Unreleased)
0.6.2 (2013-08-29)
------------------
- Bugfix. The remove icon wasn't appearing in the contacts roster. [jcbrand]
- Bugfix. With auto_subscribe=True, the "Pending Contacts" header didn't disappear
after a new user was accepted. [jcbrand]
0.6.1 (2013-08-28)
------------------
- IE9 and IE8 CSS fixes. [jcbrand]
- Bugfix: Pencil icon not visible (for setting status update). [jcbrand]
- Bugfix: RID, JID and SID initialization values were being ignored. [jcbrand]
- Bugfix: Fall back to English if a non-existing locale was specified. [jcbrand]
0.6.0 (2013-08-26)
------------------
- #39 Documentation for minifying JS is wrong. [jcbrand]
......@@ -13,6 +28,8 @@ Changelog
- Add a debug option (logs to the browser console). [jcbrand]
- Use font icons from http://icomoon.io [jcbrand]
- Added a static mockup to aid CSS/design process. [jcbrand]
- Save language codes with hyphens. Thanks to @seocam. [jcbrand]
- The combined and minified JS file now uses almond and not require.js. [jcbrand]
0.5.2 (2013-08-05)
------------------
......
......@@ -46,7 +46,6 @@ module.exports = function(grunt) {
"es": "locale/es/LC_MESSAGES/es",
"it": "locale/it/LC_MESSAGES/it",
"pt_BR": "locale/pt_BR/LC_MESSAGES/pt_BR",
"sjcl": "components/sjcl/sjcl",
"tinysort": "components/tinysort/src/jquery.tinysort",
"underscore": "components/underscore/underscore",
"backbone": "components/backbone/backbone",
......
......@@ -35,7 +35,7 @@ help:
@echo " text to make text files"
pot:
xgettext --keyword=__ --keyword=translate --from-code=UTF-8 --output=locale/converse.pot converse.js --package-name=Converse.js --copyright-holder="Jan-Carel Brand" --package-version=0.4 -c --language="python";
xgettext --keyword=__ --keyword=___ --from-code=UTF-8 --output=locale/converse.pot converse.js --package-name=Converse.js --copyright-holder="Jan-Carel Brand" --package-version=0.4 -c --language="python";
release:
r.js -o build.js
......
{
"name": "converse",
"version": "0.6.0",
"version": "0.6.2",
"devDependencies": {
"jasmine": "https://github.com/jcbrand/jasmine.git#1_3_x"
},
......@@ -18,7 +18,8 @@
"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.1",
"crypto-js": "~3.1.2"
"crypto-js": "~3.1.2",
"almond": "~0.2.6"
},
"exportsOverride": {}
}
({
baseUrl: ".",
name: "components/almond/almond.js",
out: "converse.min.js",
include: ['main'],
paths: {
"jquery": "components/jquery/jquery",
"jed": "components/jed/jed",
"locales": "locale/locales",
"af": "locale/af/LC_MESSAGES/af",
"en": "locale/en/LC_MESSAGES/en",
"de": "locale/de/LC_MESSAGES/de",
"es": "locale/es/LC_MESSAGES/es",
"it": "locale/it/LC_MESSAGES/it",
"pt_BR": "locale/pt_BR/LC_MESSAGES/pt_BR",
"jquery.tinysort": "components/tinysort/src/jquery.tinysort",
"underscore": "components/underscore/underscore",
"backbone": "components/backbone/backbone",
"backbone.localStorage": "components/backbone.localStorage/backbone.localStorage",
"strophe": "components/strophe/strophe",
"strophe.muc": "components/strophe.muc/index",
"strophe.roster": "components/strophe.roster/index",
"strophe.vcard": "components/strophe.vcard/index",
"strophe.disco": "components/strophe.disco/index"
}
})
......@@ -17,10 +17,7 @@
user-select: none;
}
#collective-xmpp-chat-data {
color: rgb(79, 79, 79);
}
#collective-xmpp-chat-data,
#collective-xmpp-chat-data input {
color: rgb(79, 79, 79);
}
......@@ -169,6 +166,10 @@ ul.participant-list li.moderator {
height:200px;
}
.chatroom .chat-content {
height:200px;
}
.chat-info {
color:#666666;
}
......@@ -331,7 +332,7 @@ dl.add-converse-contact {
float: right;
clear: right;
height: 22px;
padding: 5px 5px 0 0;
padding: 0px 5px 0 0;
color: rgb(79, 79, 79);
}
......@@ -384,18 +385,8 @@ a.close-chatbox-button {
text-shadow:1px 1px 0 #ffffff;
}
.close-chatbox-button {
padding: 0 2px 0 6px;
}
.close-chatbox-button:hover {
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f6f6f6), color-stop(1, #ffffff) );
background:-moz-linear-gradient( center top, #f6f6f6 5%, #ffffff 100% );
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f6f6f6', endColorstr='#ffffff');
background-color:#f6f6f6;
}
.close-chatbox-button:active {
a.configure-chatroom-button:active,
a.close-chatbox-button:active {
position:relative;
top:1px;
}
......@@ -576,6 +567,7 @@ dd.available-chatroom:hover a.room-info {
}
#converse-roster a.open-chat {
line-height: 21px;
width: 85%;
}
#converse-roster dd:hover a.open-chat {
......@@ -627,7 +619,7 @@ div#controlbox-panes {
background-color: white;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
width: 199px;
width: 200px;
}
......@@ -781,6 +773,10 @@ ul.chat-toolbar {
height: 20px;
display: block;
width: 195px;
/* XXX: CHECKME */
float: right;
display: inline-block;
height: 20px;
}
.chat-toolbar .toggle-otr {
......@@ -845,6 +841,11 @@ ul.chat-toolbar li {
cursor: pointer;
}
ul.chat-toolbar li:hover {
cursor: pointer;
color: rgb(39, 39, 39);
}
form#set-custom-xmpp-status {
float: left;
padding: 0;
......@@ -860,7 +861,6 @@ form#set-custom-xmpp-status {
margin:0;
}
#set-custom-xmpp-status button {
padding: 1px 2px 1px 1px;
}
......@@ -894,7 +894,7 @@ form.add-xmpp-contact input {
.chatbox .dropdown dt a span {
cursor:pointer;
display:block;
padding: 2px 7px 0 5px;
padding: 4px 7px 0 5px;
color: rgb(79, 79, 79);
}
......@@ -921,7 +921,7 @@ form.add-xmpp-contact input {
.chatbox .dropdown a {
height: 22px;
display: inline-block;
padding-top: 2px;
line-height: 24px;
}
.chatbox .dropdown dd ul a:hover {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# 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: cc4e774ae6c30c8f75f9540598d47e5a
config: 4e01f0b4332cc0ad20271406d2d00beb
tags: fbb0d17656682115ca4d033fb2f83ba1
......@@ -553,6 +553,14 @@ To minify the Javascript and CSS, run the following command:
grunt minify
.. Note ::
Since release 0.6.0, I'm 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`_.
......
......@@ -9,7 +9,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Index &mdash; Converse.js 0.5.3 documentation</title>
<title>Index &mdash; Converse.js 0.6.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.5.3',
VERSION: '0.6.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.5.3 documentation" href="index.html" />
<link rel="top" title="Converse.js 0.6.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.5.3 documentation</a> &raquo;</li>
<li><a href="index.html">Converse.js 0.6.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.5.3 documentation</a> &raquo;</li>
<li><a href="index.html">Converse.js 0.6.0 documentation</a> &raquo;</li>
</ul>
</div>
</div>
......
This diff is collapsed.
# Sphinx inventory version 2
# Project: Converse.js
# Version: 0.5.3
# Version: 0.6.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.5.3 documentation</title>
<title>Search &mdash; Converse.js 0.6.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.5.3',
VERSION: '0.6.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.5.3 documentation" href="index.html" />
<link rel="top" title="Converse.js 0.6.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.5.3 documentation</a> &raquo;</li>
<li><a href="index.html">Converse.js 0.6.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.5.3 documentation</a> &raquo;</li>
<li><a href="index.html">Converse.js 0.6.0 documentation</a> &raquo;</li>
</ul>
</div>
</div>
......
Search.setIndex({objects:{},terms:{all:0,code:0,partial:0,queri:0,webchat:0,follow:0,middl:0,depend:0,sensit:0,punjab:0,present:0,under:0,spec:0,string:0,fals:0,account:0,facebook:0,jack:0,veri:0,tri:0,chatpanel:0,list:0,sane:0,div:0,pleas:0,prevent:0,past:0,second:0,pass:0,download:0,further:0,fullnam:0,click:0,even:0,index:0,what:0,hide:0,section:0,current:0,"public":0,version:0,"new":0,net:0,method:0,widget:0,themselv:0,gener:0,here:0,bodi:0,let:0,strong:0,modifi:0,valu:0,box:0,great:0,convers:0,ajax:0,fetch:0,implement:0,sorri:0,via:0,repositori:0,extra:0,solut:0,prefer:0,put:0,href:0,org:0,auto_list_room:0,instal:0,should:0,getsess:0,from:0,zip:0,commun:0,doubl:0,two:0,websit:0,few:0,stylesheet:0,call:0,recommend:0,type:0,until:0,toggl:0,more:0,peopl:0,notic:0,site:0,particular:0,vcard:0,must:0,none:0,room:0,work:0,xhr:0,can:0,lc_messag:0,purpos:0,root:0,blogpost:0,control:0,quickstart:0,give:0,share:0,templat:0,tag:0,proprietari:0,explor:0,onlin:0,occup:0,end:0,goal:0,thing:0,write:0,how:0,sid:0,roster:0,instead:0,css:0,updat:0,npm:0,regener:0,product:0,resourc:0,after:0,usabl:0,befor:0,underscor:0,data:0,demonstr:0,man:0,"short":0,practic:0,bind:0,show_controlbox_by_default:0,element:0,caus:0,inform:0,parti:0,mechan:0,order:0,feedback:0,chatbox:0,xmpp:0,over:0,becaus:0,through:0,streamlin:0,snippet:0,jid:0,"8147a27e4a7f9b55ffc85c2683f9529a":0,directli:0,fit:0,fix:0,"static":0,pend:0,hidden:0,therefor:0,might:0,them:0,anim:0,"return":0,thei:0,initi:0,front:0,now:0,introduct:0,edit:0,authent:0,token:0,ejabberd:0,each:0,debug:0,side:0,mean:0,domain:0,individu:0,realli:0,legwork:0,connect:0,happen:0,extract:0,special:0,variabl:0,shown:0,"3rd":0,space:0,miss:0,content:0,rel:0,internet:0,plural:0,factori:0,po2json:0,proxi:0,insid:0,standard:0,standalon:0,reason:0,releas:0,succesfulli:0,afterward:0,could:0,ask:0,keep:0,turn:0,first:0,origin:0,softwar:0,render:0,onc:0,hoop:0,lastnam:0,number:0,yourself:0,restrict:0,instruct:0,alreadi:0,done:0,submit:0,owner:0,custom:0,jabber:0,differ:0,script:0,top:0,attack:0,messag:0,attach:0,stori:0,master:0,jed:0,jcbrand:0,"final":0,luckili:0,consol:0,option:0,tool:0,specifi:0,github:0,pars:0,grunt:0,haven:0,serv:0,jump:0,kind:0,bloat:0,provid:0,remov:0,exampl:0,bridg:0,browser:0,pre:0,"function":0,saa:0,modern:0,ani:0,packag:0,have:0,tabl:0,need:0,moffitt:0,django:0,bosh_service_url:0,prebind:0,min:0,latter:0,note:0,also:0,contact:0,take:0,which:0,singl:0,sure:0,though:0,unsur:0,who:0,most:0,deploi:0,homepag:0,"class":0,don:0,url:0,request:0,doe:0,part:0,runtim:0,bower:0,usual:0,xdomainrequest:0,devdepend:0,show:0,german:0,text:0,session:0,fine:0,find:0,help:0,onli:0,exactli:0,locat:0,just:0,configur:0,apach:0,than:0,folder:0,local:0,meant:0,count:0,get:0,soon:0,opkod:0,nativ:0,cannot:0,requir:0,enabl:0,emb:0,mainspec:0,patch:0,reload:0,bad:0,integr:0,contain:0,where:0,set:0,habit:0,stroph:0,see:0,close:0,page:0,statu:0,said:0,kei:0,state:0,between:0,experi:0,jasmin:0,hide_muc_serv:0,attribut:0,appreci:0,extend:0,screen:0,javascript:0,style:0,job:0,bosh:0,"5e64a30272af065bd72258c565a03f2f":0,both:0,cor:0,instant:0,shortliv:0,conversej:0,myself:0,etc:0,grain:0,mani:0,login:0,com:0,load:0,pot:0,backend:0,quit:0,sucessfulli:0,addition:0,rebuild:0,compon:0,json:0,much:0,subscrib:0,blob:0,session_kei:0,convert:0,minifi:0,togeth:0,i18n:0,those:0,multi:0,main:0,look:0,servic:0,plugin:0,defin:0,abov:0,error:0,hightlight:0,chat:0,helper:0,demo:0,auto_subscrib:0,non:0,rid:0,conn:0,develop:0,open:0,receiv:0,media:0,make:0,minif:0,cross:0,same:0,read:0,onconnectfacebook:0,html:0,chatroom:0,document:0,medit:0,complet:0,signon:0,http:0,webserv:0,optim:0,upon:0,someon:0,hand:0,"50kb":0,user:0,xhr_user_search:0,cssmin:0,recent:0,stateless:0,markup:0,well:0,without:0,command:0,wherebi:0,thi:0,choos:0,latest:0,plural_form:0,protocol:0,firstnam:0,tip:0,jshint:0,languag:0,web:0,xmlhttprequest:0,had:0,add:0,other:0,non_amd:0,input:0,match:0,applic:0,format:0,webpag:0,amd:0,nginx:0,traffic:0,know:0,background:0,like:0,xss:0,backbon:0,specif:0,server:0,collect:0,benefit:0,either:0,output:0,manag:0,facebookconnect:0,deal:0,nplural:0,some:0,back:0,librari:0,bottom:0,deploy:0,achiev:0,track:0,overcom:0,localhost:0,refer:0,object:0,run:0,host:0,although:0,panel:0,src:0,about:0,controlbox:0,unfortun:0,act:0,own:0,curiou:0,encod:0,automat:0,wrap:0,your:0,merg:0,log:0,wai:0,transfer:0,support:0,"long":0,happi:0,avail:0,includ:0,lot:0,suit:0,analysi:0,head:0,properli:0,form:0,bundl:0,link:0,translat:0,synonym:0,line:0,inlin:0,"true":0,bug:0,congratul:0,longer:0,info:0,pull:0,made:0,dirti:0,locale_data:0,possibl:0,"default":0,bugfix:0,displai:0,asynchron:0,below:0,tightli:0,otherwis:0,problem:0,expect:0,featur:0,creat:0,doesn:0,msgmerg:0,exist:0,file:0,face:0,check:0,want:0,when:0,detail:0,gettext:0,field:0,valid:0,rememb:0,test:0,you:0,nice:0,node:0,intend:0,stai:0,lang:0,requirej:0,directori:0,getjson:0,potenti:0,time:0},objtypes:{},titles:["Quickstart (to get a demo up and running)"],objnames:{},filenames:["index"]})
\ No newline at end of file
Search.setIndex({objects:{},terms:{all:0,code:0,partial:0,queri:0,webchat:0,follow:0,middl:0,depend:0,sensit:0,punjab:0,those:0,under:0,spec:0,string:0,fals:0,account:0,facebook:0,jack:0,veri:0,tri:0,chatpanel:0,list:0,sane:0,div:0,pleas:0,prevent:0,almond:0,past:0,second:0,pass:0,download:0,further:0,fullnam:0,click:0,even:0,index:0,what:0,hide:0,section:0,current:0,version:0,"new":0,net:0,"public":0,widget:0,themselv:0,gener:0,here:0,bodi:0,let:0,strong:0,modifi:0,sinc:0,valu:0,box:0,great:0,convers:0,reason:0,fetch:0,implement:0,sorri:0,via:0,although:0,extra:0,apach:0,prefer:0,ask:0,href:0,succesfulli:0,auto_list_room:0,instal:0,getsess:0,from:0,zip:0,commun:0,doubl:0,two:0,websit:0,few:0,stylesheet:0,call:0,recommend:0,type:0,until:0,toggl:0,more:0,peopl:0,notic:0,particular:0,vcard:0,must:0,none:0,room:0,work:0,xhr:0,can:0,lc_messag:0,purpos:0,root:0,blogpost:0,control:0,quickstart:0,give:0,share:0,templat:0,tag:0,proprietari:0,explor:0,onlin:0,unfortun:0,occup:0,end:0,goal:0,turn:0,snippet:0,how:0,sid:0,instead:0,css:0,updat:0,npm:0,regener:0,product:0,resourc:0,haven:0,after:0,usabl:0,befor:0,underscor:0,data:0,demonstr:0,man:0,github:0,practic:0,bind:0,show_controlbox_by_default:0,django:0,caus:0,inform:0,media:0,mechan:0,order:0,feedback:0,chatbox:0,xmpp:0,over:0,becaus:0,through:0,streamlin:0,write:0,jid:0,"8147a27e4a7f9b55ffc85c2683f9529a":0,directli:0,fit:0,fix:0,pend:0,hidden:0,therefor:0,might:0,them:0,anim:0,"return":0,thei:0,initi:0,front:0,now:0,introduct:0,edit:0,authent:0,separ:0,token:0,ejabberd:0,each:0,debug:0,side:0,mean:0,domain:0,"short":0,individu:0,realli:0,wrap:0,"static":0,connect:0,happen:0,extract:0,special:0,variabl:0,shown:0,"3rd":0,space:0,miss:0,content:0,method:0,rel:0,internet:0,plural:0,factori:0,po2json:0,proxi:0,insid:0,standard:0,standalon:0,ajax:0,put:0,org:0,afterward:0,could:0,keep:0,thing:0,first:0,origin:0,softwar:0,render:0,onc:0,hoop:0,lastnam:0,number:0,yourself:0,restrict:0,instruct:0,alreadi:0,done:0,"long":0,owner:0,happi:0,jabber:0,differ:0,script:0,top:0,attack:0,messag:0,attach:0,stori:0,master:0,jed:0,jcbrand:0,"final":0,luckili:0,consol:0,option:0,tool:0,specifi:0,part:0,pars:0,grunt:0,than:0,serv:0,jump:0,kind:0,bloat:0,provid:0,remov:0,exampl:0,bridg:0,browser:0,pre:0,analysi:0,saa:0,modern:0,ani:0,packag:0,have:0,tabl:0,need:0,moffitt:0,element:0,bosh_service_url:0,prebind:0,min:0,latter:0,note:0,also:0,contact:0,take:0,which:0,singl:0,sure:0,though:0,unsur:0,who:0,most:0,deploi:0,homepag:0,"class":0,don:0,url:0,request:0,doe:0,runtim:0,bower:0,latest:0,xdomainrequest:0,devdepend:0,show:0,german:0,text:0,session:0,fine:0,find:0,help:0,onli:0,exactli:0,locat:0,firstnam:0,configur:0,solut:0,should:0,folder:0,local:0,meant:0,info:0,get:0,soon:0,opkod:0,nativ:0,cannot:0,deploy:0,requir:0,enabl:0,emb:0,mainspec:0,multi:0,patch:0,reload:0,bad:0,integr:0,contain:0,where:0,set:0,habit:0,stroph:0,see:0,close:0,statu:0,said:0,extend:0,state:0,between:0,experi:0,jasmin:0,screen:0,attribut:0,appreci:0,kei:0,hide_muc_serv:0,javascript:0,style:0,job:0,bosh:0,otherwis:0,"5e64a30272af065bd72258c565a03f2f":0,both:0,cor:0,instant:0,shortliv:0,conversej:0,etc:0,grain:0,mani:0,login:0,com:0,load:0,pot:0,non:0,backend:0,quit:0,sucessfulli:0,addition:0,rebuild:0,compon:0,json:0,much:0,subscrib:0,non_amd:0,session_kei:0,convert:0,minifi:0,togeth:0,i18n:0,present:0,myself:0,main:0,look:0,servic:0,plugin:0,defin:0,abov:0,error:0,howev:0,hightlight:0,file:0,helper:0,demo:0,auto_subscrib:0,site:0,rid:0,conn:0,develop:0,open:0,minim:0,receiv:0,parti:0,make:0,minif:0,cross:0,same:0,webpag:0,onconnectfacebook:0,html:0,chatroom:0,document:0,medit:0,complet:0,signon:0,http:0,webserv:0,optim:0,upon:0,someon:0,hand:0,"50kb":0,user:0,xhr_user_search:0,cssmin:0,recent:0,stateless:0,markup:0,well:0,without:0,command:0,wherebi:0,thi:0,choos:0,usual:0,plural_form:0,protocol:0,just:0,when:0,jshint:0,languag:0,web:0,xmlhttprequest:0,had:0,add:0,valid:0,blob:0,input:0,match:0,build:0,applic:0,format:0,read:0,amd:0,nginx:0,traffic:0,know:0,background:0,backbon:0,xss:0,like:0,specif:0,manual:0,server:0,collect:0,benefit:0,either:0,output:0,manag:0,facebookconnect:0,old:0,deal:0,nplural:0,some:0,back:0,librari:0,bottom:0,roster:0,achiev:0,track:0,overcom:0,localhost:0,refer:0,object:0,run:0,host:0,repositori:0,panel:0,src:0,about:0,controlbox:0,page:0,act:0,own:0,curiou:0,encod:0,automat:0,contrib:0,your:0,merg:0,log:0,wai:0,transfer:0,support:0,submit:0,custom:0,avail:0,includ:0,lot:0,suit:0,"function":0,head:0,properli:0,form:0,bundl:0,link:0,translat:0,synonym:0,line:0,inlin:0,"true":0,bug:0,congratul:0,requirej:0,count:0,pull:0,made:0,dirti:0,locale_data:0,possibl:0,"default":0,bugfix:0,displai:0,asynchron:0,below:0,tightli:0,legwork:0,problem:0,expect:0,featur:0,creat:0,doesn:0,msgmerg:0,exist:0,chat:0,face:0,check:0,again:0,want:0,tip:0,detail:0,gettext:0,field:0,other:0,rememb:0,test:0,you:0,nice:0,node:0,intend:0,releas:0,stai:0,lang:0,longer:0,directori:0,getjson:0,potenti:0,time:0},objtypes:{},titles:["Quickstart (to get a demo up and running)"],objnames:{},filenames:["index"]})
\ No newline at end of file
......@@ -48,9 +48,9 @@ copyright = u'2013, JC Brand'
# built documents.
#
# The short X.Y version.
version = '0.6.0'
version = '0.6.2'
# The full version, including alpha/beta/rc tags.
release = '0.6.0'
release = '0.6.2'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
......
......@@ -553,6 +553,14 @@ To minify the Javascript and CSS, run the following command:
grunt minify
.. Note ::
Since release 0.6.0, I'm 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`_.
......
......@@ -7,6 +7,7 @@
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
<link rel="stylesheet" type="text/css" media="screen" href="converse.css">
<script data-main="main" src="components/requirejs/require.js"></script>
<!-- <script src="converse.min.js"></script>-->
<title>Converse.js</title>
</head>
......@@ -18,8 +19,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.5.2.zip">Download the latest release as a .zip file</a>
<a class="tar_download_link" href="https://github.com/jcbrand/converse.js/archive/v0.5.2.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.6.2.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.2.tar.gz">Download the latest release as a tar.gz file</a>
</section>
</header>
</div>
......@@ -35,18 +36,10 @@
<p><em>Converse.js</em> can connect to any accessible <a href="http://xmpp.org" target="_blank">XMPP/Jabber</a> server, either from a public provider such as <a href="http://jabber.org">jabber.org</a>, or to one you have set up yourself.</p>
<p>It's possible to enable single-site login, whereby users already authenticated in your website will also automatically be logged in on the chat server,
<p>It's possible to enable single-site-login, whereby users already authenticated in your website will also automatically be logged in on the chat server,
but you will have to pre-authenticate them on your server. You can refer to the <a href="/docs/html/index.html">documentation</a> for more
info.</p>
<p>An <a href="http://github.com/collective/collective.xmpp.chat" target="_blank">add-on product</a> that does exactly this,
already exists for the <a href="http://plone.org" target="_blank">Plone</a> CMS. Hopefully in the future more such add-ons will
be created for other platforms.
</p>
<p>If you have integrated <em>Converse.js</em> into any other CMS or framework,
<a href="http://opkode.com/contact.html" target="_blank">please let me know</a> and I'll mention it on this page.</p>
<h2>Features</h2>
<ul>
<li>Single-user chat</li>
......@@ -61,7 +54,7 @@
<li>Custom status messages</li>
<li>Typing notifications</li>
<li>Third person messages (/me )</li>
<li>Translated into multiple languages (af, de, es, it, pt_BR)</li>
<li>Translated into multiple languages (af, de, es, it, pt-BR)</li>
</ul>
<h2>Screencasts</h2>
......@@ -74,6 +67,30 @@
</li>
</ul>
<h2>Integration into other frameworks</h2>
<ul>
<li><h4><a href="http://plone.org" target="_blank">Plone</a></h4>
<strong><a href="http://github.com/collective/collective.xmpp.chat" target="_blank">collective.xmpp.chat</a></strong>
is an add-on for Plone that uses <em>Converse.js</em>.
Together with <a href="http://github.com/collective/collective.xmpp.core" target="_blank">collective.xmpp.core</a>, it provides for single-signon-support (SSO)
and also enables you to manually or automatically
register your Plone users onto your XMPP server.
</li>
<li><h4><a href="http://www.djangoproject.com" target="_blank">Django</a></h4>
<strong><a href="https://pypi.python.org/pypi/django-conversejs" target="_blank">django-conversejs</a></strong> is an app that makes it easer to integrate <em>Converse.js</em>
into Django. It adds single-signon-support (SSO) support and a database model to store XMPP credentials.
</li>
<li><h4><a href="http://roundcube.net" target="_blank">Roundcube</a></h4>
<strong><a href="https://github.com/priyadi/roundcube-converse.js-xmpp-plugin" target="_blank">roundcube-converse.js-xmpp-plugin</a></strong>
is a plugin for Roundcube Webmail. It's README states that it's still a work in progress.
</li>
</ul>
<p>If you have integrated <em>Converse.js</em> into any other CMS or framework,
<a href="http://opkode.com/contact.html" target="_blank">please let me know</a> and I'll mention it on this page.</p>
<h2>Demo</h2>
<p>You can log in with any existing XMPP account. There is also a list of public XMPP providers on <a href="http://xmpp.net" target="_blank">xmpp.net</a>.</p>
<p><em><strong>Note:</strong> currently the demo doesn't work in Internet Explorer older
......@@ -83,10 +100,29 @@
See <a href="/docs/html/index.html#overcoming-cross-domain-request-restrictions" target="_blank">here</a> for more information.</p></em>
<h3>Is it secure?</h3>
<p>Yes. In this demo <em>Converse.js</em> makes an
<a href="https://en.wikipedia.org/wiki/Secure_Sockets_Layer" target="_blank">SSL</a> encrypted connection to a secure connection manager.
The connection manager then uses SSL and <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS</a> to connect to an XMPP server.</p>
That said, the developers don't assume any liability for any loss or damages as a result of using this software or demo. Use this demo at your own risk.
<p>
Yes, as long as you can trust that the Javascript being downloaded is
not being tampered with. This page itself is served by Github and is not <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS/TLS</a>
encrypted (i.e. served via <a href="https://en.wikipedia.org/wiki/HTTPS">HTTPS</a>).
I don't know how probable it is that Github served pages could be hacked to
insert malicious Javascript.
</p>
<p>
Ideally you'd want your site to be served encrypted via HTTPS.
In this case, use with caution. You can of course go
download the source from Github and run this page locally, removing
the attack vector altogether.
</p>
<p>
<em>Converse.js</em> itself makes encrypted HTTPS requests to a <em>connection manager</em>, which will make an
SSL/TLS encrypted connection to an XMPP server (if the server supports it).
</p>
<p>
Logging in happens via <a href="https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer">SASL</a>.
</p>
<p>
That said, the developers don't assume any liability for any loss or damages as a result of using this software or demo. Use at your own risk.
</p>
<h3>Session support</h3>
<p>
......@@ -119,19 +155,16 @@
<li><a href="http://backbonejs.org" target="_blank">backbone.js</a></li>
<li><a href="http://requirejs.org" target="_blank">require.js</a> (optional dependency)</li>
</ul>
<p>Some images were taken from <a href="http://plone.org" target="_blank">Plone</a> and the
<a href="http://openiconlibrary.sourceforge.net" target="_blank">Open Icon Library</a>.
<h2>Licence</h2>
<p><strong>Converse.js</strong> is released under both the <a href="http://opensource.org/licenses/mit-license.php" target="_blank">MIT</a>
and <a href="http://opensource.org/licenses/GPL-2.0" target="_blank">GPL</a> licenses.</p>
<h2>Contact</h2>
<p>You can follow me on <strong><a href="http://twitter.com/jcopkode" target="_blank">Twitter</a></strong> and <strong><a href="http://identi.ca/opkode" target="_blank">Identica</a></strong></p>
<p>You can follow me on <strong><a href="http://twitter.com/jcopkode" target="_blank">Twitter</a></strong></p>
<p>My XMPP username is <strong>jc@opkode.im</strong>.</p>
<p>Send me an email via this <a href="http://opkode.com/contact" target="_blank">contact form</a>.</p>
</section>
</div>
<!-- FOOTER -->
......@@ -163,11 +196,11 @@
auto_subscribe: false,
bosh_service_url: 'https://bind.opkode.im', // Please use this connection manager only for testing purposes
hide_muc_server: false,
i18n: locales.en, // Refer to ./locale/locales.js to see which locales are supported
i18n: locales['fr'], // Refer to ./locale/locales.js to see which locales are supported
prebind: false,
show_controlbox_by_default: true,
xhr_user_search: false,
debug: true
debug: true
});
});
</script>
......
This diff is collapsed.
......@@ -27,12 +27,13 @@
"it",
"pt_BR"
], function (jed, af, en, es, de, it, pt_BR) {
root.locales = {};
root.locales.af = af;
root.locales.en = en;
root.locales.es = es;
root.locales.de = de;
root.locales.it = it;
root.locales.pt_BR = pt_BR;
root.locales = {
'af': af,
'en': en,
'es': es,
'de': de,
'it': it,
'pt-br': pt_BR
};
});
})(this);
/*
* This file can be used if no locale support is required.
*/
(function (root, factory) {
define("locales", ['jed'], function (Jed) {
var translations = {
"domain": "converse",
"locale_data": {
"converse": {
"": {
"domain": "converse",
"lang": "en",
"plural_forms": "nplurals=2; plural=(n != 1);"
}
}
}
};
root.locales = { 'en': new Jed(translations) };
});
})(this);
......@@ -2,10 +2,10 @@ require.config({
paths: {
"jquery": "components/jquery/jquery",
"locales": "locale/locales",
"tinysort": "components/tinysort/src/jquery.tinysort",
"jquery.tinysort": "components/tinysort/src/jquery.tinysort",
"underscore": "components/underscore/underscore",
"backbone": "components/backbone/backbone",
"localstorage": "components/backbone.localStorage/backbone.localStorage",
"backbone.localStorage": "components/backbone.localStorage/backbone.localStorage",
"strophe": "components/strophe/strophe",
"strophe.muc": "components/strophe.muc/index",
"strophe.roster": "components/strophe.roster/index",
......@@ -40,6 +40,6 @@ require.config({
}
});
require(["components/requirejs/require", "jquery", "converse"], function(require, $, converse) {
require(["jquery", "converse"], function(require, $, converse) {
window.converse = converse;
});
......@@ -114,13 +114,13 @@
John Smit</a>
<a class="remove-xmpp-contact icon-remove" title="Click to remove this contact" href="#"></a>
</dd>
<dd class="dnd current-xmpp-contact">
<dd class="away current-xmpp-contact">
<a class="open-chat" title="Click to chat with this contact" href="#">
<span class="icon-away" title="this contact is away"></span>
Francois Pienaar</a>
<a class="remove-xmpp-contact icon-remove" title="Click to remove this contact" href="#"></a>
</dd>
<dd class="busy current-xmpp-contact">
<dd class="dnd current-xmpp-contact">
<a class="open-chat" title="Click to chat with this contact" href="#">
<span class="icon-dnd" title="This contact is busy"></span>
Gary Teichmann</a>
......@@ -196,7 +196,7 @@
<canvas height="33px" width="33px" class="avatar" style="background-color: black"></canvas>
<div class="chat-title"> JC Brand </div>
</a>
<p class="user-custom-message"></p>
<p class="user-custom-message" title="10000ft in the air">10000ft in the air</p>
<p></p>
</div>
<div class="chat-content">
......@@ -339,6 +339,19 @@ $(document).ready(function () {
$(ev.target).parent().parent().siblings('dd').find('ul').toggle('fast');
});
$("a.change-xmpp-status-message").click(function (ev) {
ev.preventDefault();
var form = ''+
'<form id="set-custom-xmpp-status">' +
'<input type="text" class="custom-xmpp-status"I am online"'+
'placeholder="I am online"/>' +
'<button type="submit">Save</button>' +
'</form>';
$(ev.target).closest('.xmpp-status').replaceWith(form);
$(ev.target).closest('.custom-xmpp-status').focus().focus();
});
$('.toggle-xmpp-contact-form').click(function (ev) {
ev.preventDefault();
$(ev.target).parent().parent().find('.search-xmpp').toggle('fast', function () {
......
{
"name": "converse.js",
"version": "0.5.1",
"version": "0.6.2",
"description": "Browser based XMPP instant messaging client",
"main": "main.js",
"directories": {
......
<!doctype html public "-//w3c//dtd html 4.01 transitional//en"
"http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<title>converse.js tests for minified files</title>
<meta name="description" content="converse.js: open source browser-based instant messaging" />
<link rel="shortcut icon" type="image/png" href="components/jasmine/images/jasmine_favicon.png">
<link rel="stylesheet" type="text/css" href="components/jasmine/src/html/jasmine.css">
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
<link rel="stylesheet" type="text/css" media="screen" href="converse.min.css">
<script src="converse.min.js"></script>
<script src="components/jasmine/lib/jasmine-core/jasmine.js"></script>
<script src="components/jasmine/lib/jasmine-core/jasmine-html.js"></script>
<script src="node_modules/jasmine-reporters/src/jasmine.console_reporter.js"></script>
<script src="node_modules/jasmine-reporters/src/jasmine.junit_reporter.js"></script>
</head>
<body>
<div id="header_wrap" class="outer">
<header class="inner">
<h1 id="project_title"><a href="http://conversejs.org">converse.js</a></h1>
<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>
var mock_connection = {
'muc': {
'listRooms': function () {},
'join': function () {},
'leave': function () {},
'removeRoom': function () {},
'rooms': {}
},
'jid': 'dummy@localhost',
'addHandler': function (handler, ns, name, type, id, from, options) {
return function () {};
},
'send': function () {},
'roster': {
'add': function () {},
'authorize': function () {},
'unauthorize': function () {},
'get': function () {},
'subscribe': function () {},
'registerCallback': function () {}
},
'vcard': {
'get': function (callback, jid) {
var firstname, lastname;
if (!jid) {
jid = 'dummy@localhost';
firstname = 'Max';
lastname = 'Mustermann';
} else {
var name = jid.split('@')[0].replace('.', ' ').split(' ');
firstname = name[0].charAt(0).toUpperCase()+name[0].slice(1);
lastname = name[1].charAt(0).toUpperCase()+name[1].slice(1);
}
var fullname = firstname+' '+lastname;
var vcard = $iq().c('vCard').c('FN').t(fullname);
callback(vcard.tree());
}
},
'disco': {
'info': function () {},
'items': function () {}
}
};
require([
"jquery",
"converse",
], function($, converse) {
// Set up converse.js
window.localStorage.clear();
converse.initialize({
prebind: false,
xhr_user_search: false,
auto_subscribe: false,
animate: false
});
converse.onConnected(
mock_connection,
function (converse) {
window.converse = converse;
require([
"spec/MainSpec",
"spec/ChatRoomSpec"
], function () {
// Jasmine stuff
var jasmineEnv = jasmine.getEnv();
if (/PhantomJS/.test(navigator.userAgent)) {
jasmineEnv.addReporter(new jasmine.TrivialReporter());
jasmineEnv.addReporter(new jasmine.JUnitXmlReporter('./test-reports/'));
jasmineEnv.addReporter(new jasmine.ConsoleReporter());
jasmineEnv.updateInterval = 0;
} else {
var htmlReporter = new jasmine.HtmlReporter();
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.addReporter(new jasmine.ConsoleReporter());
jasmineEnv.specFilter = function(spec) {
return htmlReporter.specFilter(spec);
};
jasmineEnv.updateInterval = 200;
}
jasmineEnv.execute();
});
}
);
}
);
</script>
</body>
</html>
......@@ -3,10 +3,10 @@ require.config({
paths: {
"jquery": "components/jquery/jquery",
"locales": "locale/locales",
"tinysort": "components/tinysort/src/jquery.tinysort",
"jquery.tinysort": "components/tinysort/src/jquery.tinysort",
"underscore": "components/underscore/underscore",
"backbone": "components/backbone/backbone",
"localstorage": "components/backbone.localStorage/backbone.localStorage",
"backbone.localStorage": "components/backbone.localStorage/backbone.localStorage",
"strophe": "components/strophe/strophe",
"strophe.muc": "components/strophe.muc/index",
"strophe.roster": "components/strophe.roster/index",
......
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