2014-05-06 21:19:35 +02:00
<!DOCTYPE html>
< html lang = "en" >
2013-03-28 17:52:07 +01:00
< head >
2014-05-06 15:25:31 +02:00
< title > Converse.js< / title >
2014-05-06 21:19:35 +02:00
< meta charset = "utf-8" >
2013-11-16 11:02:45 +01:00
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" / >
2014-05-07 22:36:45 +02:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" / >
2014-05-06 15:25:31 +02:00
< meta name = "description" content = "Converse.js: A free chat client for your website" / >
2014-05-07 22:36:45 +02:00
< meta name = "author" content = "JC Brand" / >
2014-05-06 15:25:31 +02:00
< meta name = "keywords" content = "xmpp chat webchat converse.js" / >
2014-09-21 19:05:19 +02:00
< link rel = "shortcut icon" type = "image/ico" href = "css/images/favicon.ico" / >
2014-07-19 23:54:52 +02:00
< link type = "text/css" rel = "stylesheet" media = "screen" href = "components/bootstrap/dist/css/bootstrap.min.css" / >
2014-07-20 00:20:28 +02:00
< link type = "text/css" rel = "stylesheet" media = "screen" href = "components/fontawesome/css/font-awesome.min.css" / >
2014-05-11 20:09:16 +02:00
< link type = "text/css" rel = "stylesheet" media = "screen" href = "css/theme.css" / >
2014-12-07 13:45:14 +01:00
< link type = "text/css" rel = "stylesheet" media = "screen" href = "css/converse.min.css" / >
2014-12-13 21:54:48 +01:00
< script type = "text/javascript" src = "analytics.js" > < / script >
2014-12-30 10:45:33 +01:00
< noscript > < p > < img src = "//stats.opkode.com/piwik.php?idsite=1" style = "border:0;" alt = "" / > < / p > < / noscript >
2014-12-07 13:45:14 +01:00
<!-- Only for development: <script data - main="main" src="components/requirejs/require.js"></script> -->
<![if gte IE 9]>
2015-08-24 17:56:50 +02:00
< script src = "builds/converse.min.js" > < / script >
2014-12-07 13:45:14 +01:00
<![endif]>
<!-- [if lt IE 9]>
2015-08-24 17:56:50 +02:00
< script src = "builds/converse-no-otr.min.js" > < / script >
2014-12-07 13:45:14 +01:00
<![endif]-->
2013-03-28 17:52:07 +01:00
< / head >
2014-05-06 21:19:35 +02:00
< body id = "page-top" data-spy = "scroll" data-target = ".navbar-custom" >
< nav class = "navbar navbar-custom navbar-fixed-top" role = "navigation" >
< div class = "container" >
< div class = "navbar-header page-scroll" >
< button type = "button" class = "navbar-toggle" data-toggle = "collapse" data-target = ".navbar-main-collapse" >
< i class = "fa fa-bars" > < / i >
< / button >
< a class = "navbar-brand" href = "#page-top" >
< i class = "fa fa-play-circle" > < / i > < span class = "light" > Home< / span >
< / a >
< / div >
<!-- Collect the nav links, forms, and other content for toggling -->
< div class = "collapse navbar-collapse navbar-right navbar-main-collapse" >
< ul class = "nav navbar-nav" >
<!-- Hidden li included to remove active class from about link when scrolled up past about section -->
< li class = "hidden" >
< a href = "#page-top" > < / a >
< / li >
< li class = "page-scroll" >
< a href = "#about" > About< / a >
< / li >
< li class = "page-scroll" >
< a href = "#features" > Features< / a >
< / li >
2014-08-05 18:47:52 +02:00
<!--
2014-05-06 21:19:35 +02:00
< li class = "page-scroll" >
< a href = "#donate" > Donate< / a >
< / li >
2014-08-05 18:47:52 +02:00
-->
2014-05-06 21:19:35 +02:00
< li class = "page-scroll" >
< a href = "#contact" > Contact< / a >
< / li >
2015-05-02 00:22:50 +02:00
< li >
< a href = "/docs/html/manual.html" > User Manual< / a >
< / li >
2014-12-07 10:48:32 +01:00
< li >
2014-12-07 01:32:46 +01:00
< a href = "/docs/html/index.html" > Documentation< / a >
2014-05-06 21:19:35 +02:00
< / li >
2014-12-07 10:48:32 +01:00
< li >
< a href = "https://github.com/jcbrand/converse.js/releases" class = "button" target = "_blank" > Download< / a >
< / li >
2014-05-06 21:19:35 +02:00
< / ul >
< / div >
<!-- /.navbar - collapse -->
< / div >
<!-- /.container -->
< / nav >
< section class = "intro" >
< div class = "intro-body" >
< div class = "container" >
< div class = "row" >
< div class = "col-md-8 col-md-offset-2" >
2014-09-21 18:42:18 +02:00
< h1 class = "brand-heading" > < i class = "icon-conversejs" > < / i > Converse.js< / h1 >
2015-03-08 16:54:32 +01:00
< p class = "intro-text" > A free and open-source XMPP chat client in your browser< / p >
2014-05-06 21:19:35 +02:00
< div class = "page-scroll" >
2014-12-07 10:48:32 +01:00
< a href = "#about" class = "btn btn-default btn-lg" > < span class = "btn-text" > Learn More< / span > < / a >
2014-05-06 15:25:31 +02:00
< / div >
< / div >
< / div >
2014-05-06 21:19:35 +02:00
< div class = "row" >
< div class = "col-md-8 col-md-offset-2 banner-social-buttons" >
< ul class = "list-inline" >
< li > < a href = "https://twitter.com/jcopkode" class = "btn btn-circle btn-lg" title = "Twitter" target = "_blank" > < i class = "fa fa-twitter" > < / i > < / a >
< / li >
< li > < a href = "https://github.com/jcbrand/converse.js" class = "btn btn-circle btn-lg" title = "GitHub" target = "_blank" > < i class = "fa fa-github" > < / i > < / a >
< / li >
< / ul >
< / div >
< / div >
2014-05-06 15:25:31 +02:00
< / div >
2014-05-06 21:19:35 +02:00
< / div >
2014-09-21 19:05:19 +02:00
< / section >
2013-03-28 16:42:49 +01:00
2014-05-06 21:19:35 +02:00
< section id = "about" class = "container content-section text-center" >
< div class = "row" >
< div class = "col-lg-8 col-lg-offset-2" >
2015-02-27 15:07:37 +01:00
< h2 > < strong > Converse.js< / strong > is written in Javascript and runs in your browser.< / h2 >
< p > You can start using it here immediately, or you can < a href = "/docs/html/index.html" > integrate it into your own website< / a > .< / p >
2014-05-06 21:19:35 +02:00
< p >
2015-02-27 15:07:37 +01:00
You can connect to any publically accessible < a href = "http://xmpp.org" target = "_blank" > XMPP/Jabber< / a > server,
2015-01-07 11:17:12 +01:00
either from a < a href = "https://xmpp.net/directory.php" > public provider< / a > , or one you have set up yourself.
2014-05-06 21:19:35 +02:00
< / p >
2015-02-27 15:07:37 +01:00
< h3 > Don't have an XMPP/Jabber account?< / h3 >
< p > No problem! With converse.js you can register an account on any public XMPP server that allows registration.< / p >
2014-05-06 21:19:35 +02:00
< / div >
< / div >
< / section >
2014-05-06 22:30:37 +02:00
< section class = "features-section content-section" id = "features" >
2014-05-06 21:19:35 +02:00
< div class = "container" >
< div class = "row" >
< div class = "col-lg-4" >
< section >
2014-05-07 08:04:32 +02:00
< span class = "feature-icon page-scroll" > < a class = "fa fa-globe" href = "#features" title = "Integration" > < / a > < / span >
2014-05-06 21:19:35 +02:00
< header >
< h2 > Integration< / h2 >
< / header >
< ul class = "integration" >
< li > < a href = "http://github.com/collective/collective.xmpp.chat" target = "_blank" > Plone< / a > < / li >
2015-06-22 20:04:08 +02:00
< li > < a href = "https://pypi.python.org/pypi/django-conversejs" target = "_blank" > Django (option 1)< / a > < / li >
< li > < a href = "https://github.com/fpytloun/django-xmpp" target = "_blank" > Django (option 2)< / a > < / li >
2014-05-06 21:19:35 +02:00
< li > < a href = "https://github.com/priyadi/roundcube-converse.js-xmpp-plugin" target = "_blank" > Roundcube< / a > < / li >
< li > < a href = "http://wordpress.org/plugins/conversejs" target = "_blank" > Wordpress< / a > < / li >
2014-08-25 18:08:35 +02:00
< li > < a href = "https://github.com/jcbrand/patterns.converse" target = "_blank" > Patternslib< / a > < / li >
< li > < a href = "https://github.com/keensoft/alfresco-js-chat-share" target = "_blank" > Alfresco< / a > < / li >
2014-05-06 21:19:35 +02:00
< / ul >
< / section >
< / div >
< div class = "col-lg-4" >
< section >
2014-05-07 08:04:32 +02:00
< span class = "feature-icon page-scroll" > < a class = "fa fa-check-square-o" href = "#features" title = "Features" > < / a > < / span >
2014-05-06 21:19:35 +02:00
< / section >
< header >
< h2 > Features< / h2 >
< / header >
< ul class = "features" >
< li > Single-user chat< / li >
< li > Multi-user chatrooms (< a href = "http://xmpp.org/extensions/xep-0045.html" target = "_blank" > XEP 45< / a > )< / li >
2015-05-29 10:07:40 +02:00
< li > Direct invitations to chat rooms (< a href = "http://xmpp.org/extensions/xep-0249.html" target = "_blank" > XEP 249< / a > )< / li >
2014-05-06 21:19:35 +02:00
< 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 >
2015-05-29 10:07:40 +02:00
< li > In-band registration (< a href = "http://xmpp.org/extensions/xep-0077.html" target = "_blank" > XEP 77< / a > )< / li >
2014-08-05 18:47:52 +02:00
< li > Contact rosters and groups< / li >
2014-05-06 21:19:35 +02:00
< li > Contact subscriptions< / 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 >
2015-05-29 10:07:40 +02:00
< li > Typing and state notifications (< a href = "http://xmpp.org/extensions/xep-0085.html" target = "_blank" > XEP 85< / a > )< / li >
< li > Messages appear in all connected chat clients (< a href = "http://xmpp.org/extensions/xep-0280.html" target = "_blank" > XEP 280< / a > )< / li >
< li > Third person "/me" messages (< a href = "http://xmpp.org/extensions/xep-0245.html" target = "_blank" > XEP 245< / a > )< / li >
< li > XMPP Ping (< a href = "http://xmpp.org/extensions/xep-0199.html" target = "_blank" > XEP 199< / a > )< / li >
2015-07-29 14:20:39 +02:00
< li > Server-side archiving of messages (< a href = "http://xmpp.org/extensions/xep-0313.html" target = "_blank" > XEP 313< / a > )< / li > A
2015-05-29 10:07:40 +02:00
< li > Client state indication (< a href = "http://xmpp.org/extensions/xep-0352.html" target = "_blank" > XEP 352< / a > )< / li > A
2015-05-27 20:57:51 +02:00
< li > Off-the-record encryption< / li >
2015-05-29 10:07:40 +02:00
< li > Translated into 16 languages< / li >
2014-05-06 21:19:35 +02:00
< / ul >
2014-05-06 15:25:31 +02:00
< / div >
2014-05-06 21:19:35 +02:00
< div class = "col-lg-4" >
< section >
2014-05-07 08:04:32 +02:00
< span class = "feature-icon page-scroll" > < a class = "fa fa-video-camera" href = "#features" title = "Screencasts" > < / a > < / span >
2014-05-06 21:19:35 +02:00
< header >
< h2 > Screencasts< / h2 >
< / header >
< ul class = "screencasts" >
< li >
2015-08-24 17:01:55 +02:00
< a href = "https://opkode.com/blog/2012/07/30/instant-messaging-for-plone-with-javascript-and-xmpp" target = "_blank" >
2014-05-06 21:19:35 +02:00
In a Plone site
< / a >
< / li >
< li >
< a href = "http://opkode.com/media/blog/2013/04/02/converse.js-xmpp-instant-messaging-with-javascript" target = "_blank" >
Chatting with buddies from Jabber.org and Gmail
< / a >
< / li >
< li >
< a href = "https://opkode.com/media/blog/2013/11/11/conversejs-otr-support" target = "_blank" >
Off-the-record encryption
< / a >
< / li >
< / ul >
< / section >
< / div >
< / div >
< / div >
< / section >
2014-05-06 15:25:31 +02:00
2014-08-05 18:47:52 +02:00
<!--
2014-05-06 21:19:35 +02:00
< section id = "donate" class = "donate-section content-section text-center" >
< div class = "container" >
< div class = "row" >
< div class = "col-lg-8 col-lg-offset-2" >
2014-05-06 15:25:31 +02:00
< h3 > Donate< / h3 >
2014-05-07 08:04:32 +02:00
< p class = "bitcoin-header" > Most of the work done on < strong > converse.js< / strong > is unpaid and a labor of love.< / p >
2014-11-15 16:40:34 +01:00
< p > Thanks to those have donated already.< / p >
2014-05-06 21:19:35 +02:00
< p class = "bitcoin-header" > < strong > Bitcoin< / strong > < / p >
< img src = "css/images/bitcoin_qr_code.png" / >
< p > 16FsPqE9DhFTryxrUenpsGX4LJ1TPu8GqS< / p >
2014-05-06 15:25:31 +02:00
< / div >
< / div >
2014-05-06 21:19:35 +02:00
< / div >
< / section >
2014-08-05 18:47:52 +02:00
-->
2014-05-06 21:19:35 +02:00
2014-05-06 22:30:37 +02:00
< section class = "outro content-section" id = "contact" >
2014-05-06 21:19:35 +02:00
< div class = "intro-body" >
< div class = "container" >
< div class = "row" >
< div class = "col-lg-8 col-lg-offset-2" >
< h2 > Contact< / h2 >
2014-10-10 10:24:31 +02:00
< ul class = "contact" >
2015-02-27 15:07:37 +01:00
< li > Follow me on < a href = "http://twitter.com/jcopkode" target = "_blank" > Twitter< / a > or chat with me via XMPP at < a href = "xmpp:jc@opkode.com" class = "xmpp JSnocheck" title = "XMPP/Jabber" > jc@opkode.com< / a > .< / li >
< li > For technical support, please write to the mailing list: < a href = "mailto:conversejs@librelist.com" > conversejs@librelist.com< / a > < br / >
or ask in the Converse.js chat room: < a href = "xmpp:discuss@conference.conversejs.org" class = "xmpp JSnocheck" title = "Converse.js chat room" > discuss@conference.conversejs.org< / a > .< / li >
2014-10-10 10:24:31 +02:00
< li > Also check out the < a href = "http://librelist.com/browser/conversejs" target = "_blank" > mailing list archives< / a > .< / li >
< li > Please file < a target = "_blank" href = "https://github.com/jcbrand/converse.js/issues" > bugs on Github< / a > .< / li >
< li > I'm available for features and < a href = "http://opkode.com/contact" target = "_blank" > consulting< / a > .< / li >
2014-10-10 10:53:16 +02:00
< / ul >
2014-05-06 21:19:35 +02:00
< / div >
< / div >
2014-05-06 15:25:31 +02:00
< / div >
2014-05-06 21:19:35 +02:00
< / div >
< / section >
2014-05-06 15:25:31 +02:00
< / body >
2013-04-01 23:44:49 +02:00
2013-07-24 23:58:04 +02:00
< script >
2014-09-21 19:05:19 +02:00
require(['converse'], function (converse) {
2014-09-26 11:30:56 +02:00
(function () {
/* XXX: This function initializes jquery.easing for the https://conversejs.org
* website. This code is only useful in the context of the converse.js
* website and converse.js itself is NOT dependent on it.
*/
2014-11-15 16:40:34 +01:00
var $ = converse.env.jQuery;
2015-08-24 17:56:50 +02:00
$.extend( $.easing, {
easeInOutExpo: function (x, t, b, c, d) {
if (t==0) return b;
if (t==d) return b+c;
if ((t/=d/2) < 1 ) return c / 2 * Math . pow ( 2 , 10 * ( t - 1 ) ) + b ;
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
},
});
2014-09-26 11:30:56 +02:00
$(window).scroll(function() {
if ($(".navbar").offset().top > 50) {
$(".navbar-fixed-top").addClass("top-nav-collapse");
} else {
$(".navbar-fixed-top").removeClass("top-nav-collapse");
}
});
//jQuery for page scrolling feature - requires jQuery Easing plugin
$('.page-scroll a').bind('click', function(event) {
var $anchor = $(this);
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top
}, 700, 'easeInOutExpo');
event.preventDefault();
});
})();
2014-09-21 19:05:19 +02:00
converse.initialize({
2014-11-16 10:58:32 +01:00
bosh_service_url: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
2014-09-21 19:05:19 +02:00
keepalive: true,
2014-12-07 01:30:45 +01:00
message_carbons: true,
2014-09-21 19:05:19 +02:00
play_sounds: true,
2014-10-28 18:09:58 +01:00
roster_groups: true,
2014-09-21 19:05:19 +02:00
show_controlbox_by_default: true,
2014-10-28 18:09:58 +01:00
xhr_user_search: false
2013-07-24 23:58:04 +02:00
});
});
< / script >
2013-03-28 16:42:49 +01:00
< / html >