Commit bf837a92 authored by JC Brand's avatar JC Brand

Merge branch 'live-filter'

Conflicts:
	builds/converse-no-locales-no-otr.min.js
	builds/converse-no-otr.min.js
	builds/converse.min.js
	builds/converse.website-no-otr.min.js
	builds/converse.website.min.js
parents 33aac2cf c5ce850e
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -754,7 +754,7 @@ dl.add-converse-contact { ...@@ -754,7 +754,7 @@ dl.add-converse-contact {
clear: right; clear: right;
height: 22px; height: 22px;
width: 12px; width: 12px;
padding: 0px 5px 0 0; padding: 0px 15px 0 0;
color: #4f4f4f; color: #4f4f4f;
} }
#conversejs ul#found-users { #conversejs ul#found-users {
...@@ -817,7 +817,7 @@ dl.add-converse-contact { ...@@ -817,7 +817,7 @@ dl.add-converse-contact {
top: 1px; top: 1px;
} }
#conversejs .controlbox-pane dt { #conversejs .controlbox-pane dt {
padding: 3px; padding-bottom: 3px;
} }
#conversejs .chatroom-form-container { #conversejs .chatroom-form-container {
height: 100%; height: 100%;
...@@ -872,24 +872,52 @@ dl.add-converse-contact { ...@@ -872,24 +872,52 @@ dl.add-converse-contact {
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
#conversejs #converse-roster span.req-contact-name { #converse-roster span.req-contact-name {
width: 65%; width: 65%;
} }
#conversejs #converse-roster span.pending-contact-name, #converse-roster span.pending-contact-name,
#conversejs #converse-roster a.open-chat { #converse-roster a.open-chat {
width: 80%; width: 80%;
} }
#converse-roster dd span { #converse-roster dd span {
padding: 0 5px 0 0; padding: 0 5px 0 0;
} }
#converse-roster { #converse-roster {
overflow-y: auto;
overflow-x: hidden;
width: 100%; width: 100%;
position: relative; position: relative;
margin: 0.5em 0 0 0; margin: 0.5em 0 0 0;
height: 254px; height: 194px;
height: calc(100% - 70px); height: calc(100% - 25px);
overflow-x: hidden;
}
#converse-roster .roster-filter {
padding: 0;
margin: 0 0 5px 0.5em;
width: 111px;
height: 20px;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABNSURBVHjaXI7BDcAwCAMvyQjMyQ6dAbZiKfqoUK34g2zJh1dENIC7M8pMAPYdzAVY3d0ajNz9aypS/b5R6o+ZPdqoKgCq6h80KH3xDgBqNR97p8oAGQAAAABJRU5ErkJggg== ) no-repeat right -20px center;
border: 1px solid #999;
display: inline-block;
}
#converse-roster .filter-type {
height: 20px;
padding: 0;
margin: 0 0 0 -5px;
}
/* (jQ addClass:) if input has value: */
#converse-roster .roster-filter.x {
background-position: right 3px center;
}
/* (jQ addClass:) if mouse is over the 'x' input area*/
#converse-roster .roster-filter.onX {
cursor: pointer;
}
#converse-roster .roster-contacts {
margin: 0;
overflow-y: auto;
overflow-x: hidden;
max-height: 195px;
max-height: calc(100% - 67px);
} }
#converse-roster .group-toggle { #converse-roster .group-toggle {
color: #666; color: #666;
...@@ -961,7 +989,7 @@ dl.add-converse-contact { ...@@ -961,7 +989,7 @@ dl.add-converse-contact {
text-shadow: 0 1px 0 #fafafa; text-shadow: 0 1px 0 #fafafa;
clear: both; clear: both;
} }
#conversejs #converse-roster dd { #converse-roster dd {
line-height: 16px; line-height: 16px;
} }
#conversejs .group-toggle { #conversejs .group-toggle {
...@@ -970,20 +998,20 @@ dl.add-converse-contact { ...@@ -970,20 +998,20 @@ dl.add-converse-contact {
} }
#conversejs .roster-group:hover, #conversejs .roster-group:hover,
#conversejs dd.available-chatroom:hover, #conversejs dd.available-chatroom:hover,
#conversejs #converse-roster dd:hover { #converse-roster dd:hover {
background-color: #eee; background-color: #eee;
} }
#conversejs #converse-roster dd a.decline-xmpp-request { #converse-roster dd a.decline-xmpp-request {
margin-left: 5px; margin-left: 5px;
} }
#conversejs #converse-roster dd a.remove-xmpp-contact { #converse-roster dd a.remove-xmpp-contact {
float: right; float: right;
width: 22px; width: 22px;
margin: 0; margin: 0;
display: none; display: none;
color: #4f4f4f; color: #4f4f4f;
} }
#conversejs #converse-roster dd:hover a.remove-xmpp-contact { #converse-roster dd:hover a.remove-xmpp-contact {
display: inline-block; display: inline-block;
} }
#conversejs .chatbox, #conversejs .chatbox,
......
This diff is collapsed.
Changelog Changelog
========= =========
0.8 (2014-08-04) 0.8.1 (Unreleased)
---------------- ------------------
* #212 Provide a live filter of the roster contacts. [jcbrand]
0.8.0 (2014-08-04)
------------------
.. note:: .. note::
1. Converse.js is now relicensed under the `Mozilla Public License <http://www.mozilla.org/MPL/2.0/>`_. 1. Converse.js is now relicensed under the `Mozilla Public License <http://www.mozilla.org/MPL/2.0/>`_.
......
...@@ -11,14 +11,8 @@ ...@@ -11,14 +11,8 @@
<link type="text/css" rel="stylesheet" media="screen" href="components/bootstrap/dist/css/bootstrap.min.css" /> <link type="text/css" rel="stylesheet" media="screen" href="components/bootstrap/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" media="screen" href="components/fontawesome/css/font-awesome.min.css" /> <link type="text/css" rel="stylesheet" media="screen" href="components/fontawesome/css/font-awesome.min.css" />
<link type="text/css" rel="stylesheet" media="screen" href="css/theme.css" /> <link type="text/css" rel="stylesheet" media="screen" href="css/theme.css" />
<link type="text/css" rel="stylesheet" media="screen" href="css/converse.min.css" /> <link type="text/css" rel="stylesheet" media="screen" href="css/converse.css" />
<!-- Only for development: <script data-main="main" src="components/requirejs/require.js"></script> --> <script data-main="main" src="components/requirejs/require.js"></script>
<![if gte IE 9]>
<script src="builds/converse.website.min.js"></script>
<![endif]>
<!--[if lt IE 9]>
<script src="builds/converse.website-no-otr.min.js"></script>
<![endif]-->
</head> </head>
<body id="page-top" data-spy="scroll" data-target=".navbar-custom"> <body id="page-top" data-spy="scroll" data-target=".navbar-custom">
......
...@@ -831,7 +831,7 @@ dl.add-converse-contact { ...@@ -831,7 +831,7 @@ dl.add-converse-contact {
clear: right; clear: right;
height: 22px; height: 22px;
width: 12px; width: 12px;
padding: 0px 5px 0 0; padding: 0px 15px 0 0;
color: rgb(79, 79, 79); color: rgb(79, 79, 79);
} }
...@@ -902,7 +902,7 @@ dl.add-converse-contact { ...@@ -902,7 +902,7 @@ dl.add-converse-contact {
} }
#conversejs .controlbox-pane dt { #conversejs .controlbox-pane dt {
padding: 3px; padding-bottom: 3px;
} }
#conversejs .chatroom-form-container { #conversejs .chatroom-form-container {
...@@ -967,12 +967,12 @@ dl.add-converse-contact { ...@@ -967,12 +967,12 @@ dl.add-converse-contact {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
#conversejs #converse-roster span.req-contact-name { #converse-roster span.req-contact-name {
width: 65%; width: 65%;
} }
#conversejs #converse-roster span.pending-contact-name, #converse-roster span.pending-contact-name,
#conversejs #converse-roster a.open-chat { #converse-roster a.open-chat {
width: 80%; width: 80%;
} }
...@@ -981,13 +981,46 @@ dl.add-converse-contact { ...@@ -981,13 +981,46 @@ dl.add-converse-contact {
} }
#converse-roster { #converse-roster {
overflow-y: auto;
overflow-x: hidden;
width: 100%; width: 100%;
position: relative; position: relative;
margin: 0.5em 0 0 0; margin: 0.5em 0 0 0;
height: 254px; height: 194px;
height: ~"calc(100% - 70px)"; height: ~"calc(100% - 25px)";
overflow-x: hidden;
}
#converse-roster .roster-filter {
padding: 0;
margin: 0 0 5px 0.5em;
width: 111px;
height: 20px;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABNSURBVHjaXI7BDcAwCAMvyQjMyQ6dAbZiKfqoUK34g2zJh1dENIC7M8pMAPYdzAVY3d0ajNz9aypS/b5R6o+ZPdqoKgCq6h80KH3xDgBqNR97p8oAGQAAAABJRU5ErkJggg== ) no-repeat right -20px center;
border: 1px solid #999;
display: inline-block;
}
#converse-roster .filter-type {
height: 20px;
padding: 0;
margin: 0 0 0 -5px;
}
/* (jQ addClass:) if input has value: */
#converse-roster .roster-filter.x {
background-position: right 3px center;
}
/* (jQ addClass:) if mouse is over the 'x' input area*/
#converse-roster .roster-filter.onX{
cursor:pointer;
}
#converse-roster .roster-contacts {
margin: 0;
overflow-y: auto;
overflow-x: hidden;
max-height: 195px;
max-height: ~"calc(100% - 67px)";
} }
#converse-roster .group-toggle { #converse-roster .group-toggle {
...@@ -1073,7 +1106,7 @@ dl.add-converse-contact { ...@@ -1073,7 +1106,7 @@ dl.add-converse-contact {
clear: both; clear: both;
} }
#conversejs #converse-roster dd { #converse-roster dd {
line-height: 16px; line-height: 16px;
} }
...@@ -1084,15 +1117,15 @@ dl.add-converse-contact { ...@@ -1084,15 +1117,15 @@ dl.add-converse-contact {
#conversejs .roster-group:hover, #conversejs .roster-group:hover,
#conversejs dd.available-chatroom:hover, #conversejs dd.available-chatroom:hover,
#conversejs #converse-roster dd:hover { #converse-roster dd:hover {
background-color: #eee; background-color: #eee;
} }
#conversejs #converse-roster dd a.decline-xmpp-request { #converse-roster dd a.decline-xmpp-request {
margin-left: 5px; margin-left: 5px;
} }
#conversejs #converse-roster dd a.remove-xmpp-contact { #converse-roster dd a.remove-xmpp-contact {
float: right; float: right;
width: 22px; width: 22px;
margin: 0; margin: 0;
...@@ -1100,7 +1133,7 @@ dl.add-converse-contact { ...@@ -1100,7 +1133,7 @@ dl.add-converse-contact {
color: rgb(79, 79, 79); color: rgb(79, 79, 79);
} }
#conversejs #converse-roster dd:hover a.remove-xmpp-contact { #converse-roster dd:hover a.remove-xmpp-contact {
display: inline-block; display: inline-block;
} }
......
...@@ -4,6 +4,7 @@ config = { ...@@ -4,6 +4,7 @@ config = {
"jquery": "components/jquery/dist/jquery", "jquery": "components/jquery/dist/jquery",
"jquery.browser": "components/jquery.browser/dist/jquery.browser", "jquery.browser": "components/jquery.browser/dist/jquery.browser",
"jquery.easing": "components/jquery-easing-original/jquery.easing.1.3", // XXX: Only required for https://conversejs.org website "jquery.easing": "components/jquery-easing-original/jquery.easing.1.3", // XXX: Only required for https://conversejs.org website
"utils": "src/utils",
"bootstrap": "components/bootstrap/dist/js/bootstrap", // XXX: Only required for https://conversejs.org website "bootstrap": "components/bootstrap/dist/js/bootstrap", // XXX: Only required for https://conversejs.org website
"locales": "locale/locales", "locales": "locale/locales",
"underscore": "components/underscore/underscore", "underscore": "components/underscore/underscore",
...@@ -74,6 +75,7 @@ config = { ...@@ -74,6 +75,7 @@ config = {
'bigint': { deps: ['crypto'] }, 'bigint': { deps: ['crypto'] },
'jquery.browser': { deps: ['jquery'] }, 'jquery.browser': { deps: ['jquery'] },
'jquery.easing': { deps: ['jquery'] }, 'jquery.easing': { deps: ['jquery'] },
'utils': { deps: ['jquery'] },
'strophe': { deps: ['jquery'] }, 'strophe': { deps: ['jquery'] },
'strophe.disco': { deps: ['strophe'] }, 'strophe.disco': { deps: ['strophe'] },
'strophe.muc': { deps: ['strophe', 'jquery'] }, 'strophe.muc': { deps: ['strophe', 'jquery'] },
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
(function (root, factory) { (function (root, factory) {
define([ define([
"mock", "mock",
"utils" "test_utils"
], function (mock, utils) { ], function (mock, test_utils) {
return factory(mock, utils); return factory(mock, test_utils);
} }
); );
} (this, function (mock, utils) { } (this, function (mock, test_utils) {
return describe("ChatRooms", $.proxy(function (mock, utils) { return describe("ChatRooms", $.proxy(function (mock, test_utils) {
describe("A Chat Room", $.proxy(function () { describe("A Chat Room", $.proxy(function () {
beforeEach(function () { beforeEach(function () {
runs(function () { runs(function () {
utils.closeAllChatBoxes(); test_utils.closeAllChatBoxes();
}); });
waits(250); waits(250);
runs(function () { runs(function () {
utils.openControlBox(); test_utils.openControlBox();
}); });
waits(250); waits(250);
runs(function () { runs(function () {
utils.openRoomsPanel(); test_utils.openRoomsPanel();
}); });
waits(501); waits(501);
runs(function () { runs(function () {
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
}); });
waits(250); waits(250);
runs(function () { runs(function () {
utils.closeControlBox(); test_utils.closeControlBox();
}); });
waits(250); waits(250);
runs(function () {}); runs(function () {});
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
// We instantiate a new ChatBoxes collection, which by default // We instantiate a new ChatBoxes collection, which by default
// will be empty. // will be empty.
spyOn(this.chatboxviews, 'trimChats'); spyOn(this.chatboxviews, 'trimChats');
utils.openControlBox(); test_utils.openControlBox();
var newchatboxes = new this.ChatBoxes(); var newchatboxes = new this.ChatBoxes();
expect(newchatboxes.length).toEqual(0); expect(newchatboxes.length).toEqual(0);
// The chatboxes will then be fetched from browserStorage inside the // The chatboxes will then be fetched from browserStorage inside the
...@@ -350,5 +350,5 @@ ...@@ -350,5 +350,5 @@
expect(view.$el.find('.chat-body p').text()).toBe("This room has reached it's maximum number of occupants"); expect(view.$el.find('.chat-body p').text()).toBe("This room has reached it's maximum number of occupants");
}, converse)); }, converse));
}, converse)); }, converse));
}, converse, mock, utils)); }, converse, mock, test_utils));
})); }));
(function (root, factory) { (function (root, factory) {
define([ define([
"mock", "mock",
"utils" "test_utils"
], function (mock, utils) { ], function (mock, test_utils) {
return factory(mock, utils); return factory(mock, test_utils);
} }
); );
} (this, function (mock, utils) { } (this, function (mock, test_utils) {
var checkHeaderToggling = function ($header) { var checkHeaderToggling = function ($header) {
var $toggle = $header.find('a.group-toggle'); var $toggle = $header.find('a.group-toggle');
...@@ -24,16 +24,16 @@ ...@@ -24,16 +24,16 @@
expect($header.nextUntil('dt', 'dd').length === $header.nextUntil('dt', 'dd:visible').length).toBeTruthy(); expect($header.nextUntil('dt', 'dd').length === $header.nextUntil('dt', 'dd:visible').length).toBeTruthy();
}; };
describe("The Control Box", $.proxy(function (mock, utils) { describe("The Control Box", $.proxy(function (mock, test_utils) {
beforeEach(function () { beforeEach(function () {
runs(function () { runs(function () {
utils.openControlBox(); test_utils.openControlBox();
}); });
}); });
it("can be opened by clicking a DOM element with class 'toggle-controlbox'", $.proxy(function () { it("can be opened by clicking a DOM element with class 'toggle-controlbox'", $.proxy(function () {
runs(function () { runs(function () {
utils.closeControlBox(); test_utils.closeControlBox();
}); });
waits(50); waits(50);
runs(function () { runs(function () {
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
describe("The Status Widget", $.proxy(function () { describe("The Status Widget", $.proxy(function () {
beforeEach(function () { beforeEach(function () {
utils.openControlBox(); test_utils.openControlBox();
}); });
it("shows the user's chat status, which is online by default", $.proxy(function () { it("shows the user's chat status, which is online by default", $.proxy(function () {
...@@ -120,9 +120,9 @@ ...@@ -120,9 +120,9 @@
}); });
}, converse)); }, converse));
}, converse)); }, converse));
}, converse, mock, utils)); }, converse, mock, test_utils));
describe("The Contacts Roster", $.proxy(function (mock, utils) { describe("The Contacts Roster", $.proxy(function (mock, test_utils) {
describe("A Roster Group", $.proxy(function () { describe("A Roster Group", $.proxy(function () {
...@@ -135,7 +135,7 @@ ...@@ -135,7 +135,7 @@
}); });
function _clearContacts () { function _clearContacts () {
utils.clearBrowserStorage(); test_utils.clearBrowserStorage();
converse.rosterview.model.reset(); converse.rosterview.model.reset();
} }
...@@ -146,8 +146,8 @@ ...@@ -146,8 +146,8 @@
spyOn(this.rosterview, 'update').andCallThrough(); spyOn(this.rosterview, 'update').andCallThrough();
converse.rosterview.render(); converse.rosterview.render();
utils.createContacts('pending'); test_utils.createContacts('pending');
utils.createContacts('requesting'); test_utils.createContacts('requesting');
var groups = { var groups = {
'colleagues': 3, 'colleagues': 3,
'friends & acquaintences': 3, 'friends & acquaintences': 3,
...@@ -243,14 +243,14 @@ ...@@ -243,14 +243,14 @@
describe("Pending Contacts", $.proxy(function () { describe("Pending Contacts", $.proxy(function () {
function _clearContacts () { function _clearContacts () {
utils.clearBrowserStorage(); test_utils.clearBrowserStorage();
converse.rosterview.model.reset(); converse.rosterview.model.reset();
} }
function _addContacts () { function _addContacts () {
_clearContacts(); _clearContacts();
// Must be initialized, so that render is called and documentFragment set up. // Must be initialized, so that render is called and documentFragment set up.
utils.createContacts('pending').openControlBox().openContactsPanel(); test_utils.createContacts('pending').openControlBox().openContactsPanel();
} }
it("can be collapsed under their own header", $.proxy(function () { it("can be collapsed under their own header", $.proxy(function () {
...@@ -350,13 +350,13 @@ ...@@ -350,13 +350,13 @@
describe("Existing Contacts", $.proxy(function () { describe("Existing Contacts", $.proxy(function () {
function _clearContacts () { function _clearContacts () {
utils.clearBrowserStorage(); test_utils.clearBrowserStorage();
converse.rosterview.model.reset(); converse.rosterview.model.reset();
} }
var _addContacts = function () { var _addContacts = function () {
_clearContacts(); _clearContacts();
utils.createContacts().openControlBox().openContactsPanel(); test_utils.createContacts().openControlBox().openContactsPanel();
}; };
it("can be collapsed under their own header", $.proxy(function () { it("can be collapsed under their own header", $.proxy(function () {
...@@ -561,13 +561,13 @@ ...@@ -561,13 +561,13 @@
describe("Requesting Contacts", $.proxy(function () { describe("Requesting Contacts", $.proxy(function () {
beforeEach($.proxy(function () { beforeEach($.proxy(function () {
runs(function () { runs(function () {
utils.clearBrowserStorage(); test_utils.clearBrowserStorage();
converse.rosterview.model.reset(); converse.rosterview.model.reset();
utils.createContacts('requesting').openControlBox(); test_utils.createContacts('requesting').openControlBox();
}); });
waits(50); waits(50);
runs(function () { runs(function () {
utils.openContactsPanel(); test_utils.openContactsPanel();
}); });
}, converse)); }, converse));
...@@ -646,7 +646,7 @@ ...@@ -646,7 +646,7 @@
spyOn(converse, 'emit'); spyOn(converse, 'emit');
spyOn(this.connection.roster, 'unauthorize'); spyOn(this.connection.roster, 'unauthorize');
spyOn(window, 'confirm').andReturn(true); spyOn(window, 'confirm').andReturn(true);
utils.createContacts('requesting').openControlBox(); test_utils.createContacts('requesting').openControlBox();
var name = mock.req_names.sort()[1]; var name = mock.req_names.sort()[1];
var jid = name.replace(/ /g,'.').toLowerCase() + '@localhost'; var jid = name.replace(/ /g,'.').toLowerCase() + '@localhost';
converse.rosterview.$el.find(".req-contact-name:contains('"+name+"')") converse.rosterview.$el.find(".req-contact-name:contains('"+name+"')")
...@@ -661,10 +661,10 @@ ...@@ -661,10 +661,10 @@
describe("All Contacts", $.proxy(function () { describe("All Contacts", $.proxy(function () {
beforeEach($.proxy(function () { beforeEach($.proxy(function () {
utils.clearBrowserStorage(); test_utils.clearBrowserStorage();
converse.rosterview.model.reset(); converse.rosterview.model.reset();
utils.createContacts('all').openControlBox(); test_utils.createContacts('all').openControlBox();
utils.openContactsPanel(); test_utils.openContactsPanel();
}, converse)); }, converse));
it("are saved to, and can be retrieved from, browserStorage", $.proxy(function () { it("are saved to, and can be retrieved from, browserStorage", $.proxy(function () {
...@@ -700,9 +700,9 @@ ...@@ -700,9 +700,9 @@
} }
}, converse)); }, converse));
}, converse)); }, converse));
}, converse, mock, utils)); }, converse, mock, test_utils));
describe("The 'Add Contact' widget", $.proxy(function (mock, utils) { describe("The 'Add Contact' widget", $.proxy(function (mock, test_utils) {
it("opens up an add form when you click on it", $.proxy(function () { it("opens up an add form when you click on it", $.proxy(function () {
var panel = this.chatboxviews.get('controlbox').contactspanel; var panel = this.chatboxviews.get('controlbox').contactspanel;
spyOn(panel, 'toggleContactForm').andCallThrough(); spyOn(panel, 'toggleContactForm').andCallThrough();
...@@ -713,16 +713,16 @@ ...@@ -713,16 +713,16 @@
panel.$el.find('a.toggle-xmpp-contact-form').click(); panel.$el.find('a.toggle-xmpp-contact-form').click();
}, converse)); }, converse));
}, converse, mock, utils)); }, converse, mock, test_utils));
describe("The Controlbox Tabs", $.proxy(function () { describe("The Controlbox Tabs", $.proxy(function () {
beforeEach($.proxy(function () { beforeEach($.proxy(function () {
runs(function () { runs(function () {
utils.closeAllChatBoxes(); test_utils.closeAllChatBoxes();
}); });
waits(50); waits(50);
runs(function () { runs(function () {
utils.openControlBox(); test_utils.openControlBox();
}); });
}, converse)); }, converse));
...@@ -739,11 +739,11 @@ ...@@ -739,11 +739,11 @@
describe("chatrooms panel", $.proxy(function () { describe("chatrooms panel", $.proxy(function () {
beforeEach($.proxy(function () { beforeEach($.proxy(function () {
runs(function () { runs(function () {
utils.closeAllChatBoxes(); test_utils.closeAllChatBoxes();
}); });
waits(50); waits(50);
runs(function () { runs(function () {
utils.openControlBox(); test_utils.openControlBox();
}); });
}, converse)); }, converse));
...@@ -792,5 +792,5 @@ ...@@ -792,5 +792,5 @@
}, converse)); }, converse));
}, converse)); }, converse));
}, converse)); }, converse));
}, converse, mock, utils)); }, converse, mock, test_utils));
})); }));
(function (root, factory) { (function (root, factory) {
define([ define([
"mock", "mock",
"utils" "test_utils"
], function (mock, utils) { ], function (mock, test_utils) {
return factory(mock, utils); return factory(mock, test_utils);
} }
); );
} (this, function (mock, utils) { } (this, function (mock, test_utils) {
return describe("Converse", $.proxy(function(mock, utils) { return describe("Converse", $.proxy(function(mock, test_utils) {
beforeEach($.proxy(function () { beforeEach($.proxy(function () {
window.localStorage.clear(); window.localStorage.clear();
...@@ -43,5 +43,5 @@ ...@@ -43,5 +43,5 @@
// Restore the connection // Restore the connection
converse.connection = old_connection; converse.connection = old_connection;
}, converse)); }, converse));
}, converse, mock, utils)); }, converse, mock, test_utils));
})); }));
(function (root, factory) { (function (root, factory) {
define([ define([
"mock", "mock",
"utils" "test_utils"
], function (mock, utils) { ], function (mock, test_utils) {
return factory(mock, utils); return factory(mock, test_utils);
} }
); );
} (this, function (mock, utils) { } (this, function (mock, test_utils) {
return describe("The Converse Event Emitter", $.proxy(function(mock, utils) { return describe("The Converse Event Emitter", $.proxy(function(mock, test_utils) {
window.localStorage.clear(); window.localStorage.clear();
window.sessionStorage.clear(); window.sessionStorage.clear();
...@@ -64,5 +64,5 @@ ...@@ -64,5 +64,5 @@
expect(this.anotherCallback.callCount, 3); expect(this.anotherCallback.callCount, 3);
expect(this.neverCalled).not.toHaveBeenCalled(); expect(this.neverCalled).not.toHaveBeenCalled();
}); });
}, converse, mock, utils)); }, converse, mock, test_utils));
})); }));
(function (root, factory) { (function (root, factory) {
define([ define([
"mock", "mock",
"utils" "test_utils"
], function (mock, utils) { ], function (mock, test_utils) {
return factory(mock, utils); return factory(mock, test_utils);
} }
); );
} (this, function (mock, utils) { } (this, function (mock, test_utils) {
return describe("The Minimized Chats Widget", $.proxy(function(mock, utils) { return describe("The Minimized Chats Widget", $.proxy(function(mock, test_utils) {
beforeEach(function () { beforeEach(function () {
runs(function () { runs(function () {
utils.closeAllChatBoxes(); test_utils.closeAllChatBoxes();
utils.removeControlBox(); test_utils.removeControlBox();
converse.roster.browserStorage._clear(); converse.roster.browserStorage._clear();
utils.initConverse(); test_utils.initConverse();
utils.createContacts(); test_utils.createContacts();
utils.openControlBox(); test_utils.openControlBox();
utils.openContactsPanel(); test_utils.openContactsPanel();
converse.minimized_chats.toggleview.model.browserStorage._clear(); converse.minimized_chats.toggleview.model.browserStorage._clear();
converse.minimized_chats.initToggle(); converse.minimized_chats.initToggle();
}); });
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
it("shows chats that have been minimized", $.proxy(function () { it("shows chats that have been minimized", $.proxy(function () {
var contact_jid, chatview; var contact_jid, chatview;
contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost'; contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
utils.openChatBoxFor(contact_jid); test_utils.openChatBoxFor(contact_jid);
chatview = converse.chatboxviews.get(contact_jid); chatview = converse.chatboxviews.get(contact_jid);
expect(chatview.model.get('minimized')).toBeFalsy(); expect(chatview.model.get('minimized')).toBeFalsy();
expect(this.minimized_chats.$el.is(':visible')).toBeFalsy(); expect(this.minimized_chats.$el.is(':visible')).toBeFalsy();
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
expect(this.minimized_chats.keys()[0]).toBe(contact_jid); expect(this.minimized_chats.keys()[0]).toBe(contact_jid);
contact_jid = mock.cur_names[1].replace(/ /g,'.').toLowerCase() + '@localhost'; contact_jid = mock.cur_names[1].replace(/ /g,'.').toLowerCase() + '@localhost';
utils.openChatBoxFor(contact_jid); test_utils.openChatBoxFor(contact_jid);
chatview = converse.chatboxviews.get(contact_jid); chatview = converse.chatboxviews.get(contact_jid);
expect(chatview.model.get('minimized')).toBeFalsy(); expect(chatview.model.get('minimized')).toBeFalsy();
chatview.$el.find('.toggle-chatbox-button').click(); chatview.$el.find('.toggle-chatbox-button').click();
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
it("can be toggled to hide or show minimized chats", $.proxy(function () { it("can be toggled to hide or show minimized chats", $.proxy(function () {
var contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost'; var contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
utils.openChatBoxFor(contact_jid); test_utils.openChatBoxFor(contact_jid);
var chatview = converse.chatboxviews.get(contact_jid); var chatview = converse.chatboxviews.get(contact_jid);
expect(this.minimized_chats.$el.is(':visible')).toBeFalsy(); expect(this.minimized_chats.$el.is(':visible')).toBeFalsy();
chatview.model.set({'minimized': true}); chatview.model.set({'minimized': true});
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
expect(this.minimized_chats.toggleview.$('.unread-message-count').is(':visible')).toBeFalsy(); expect(this.minimized_chats.toggleview.$('.unread-message-count').is(':visible')).toBeFalsy();
for (i=0; i<3; i++) { for (i=0; i<3; i++) {
contact_jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@localhost'; contact_jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@localhost';
utils.openChatBoxFor(contact_jid); test_utils.openChatBoxFor(contact_jid);
chatview = converse.chatboxviews.get(contact_jid); chatview = converse.chatboxviews.get(contact_jid);
chatview.model.set({'minimized': true}); chatview.model.set({'minimized': true});
msg = $msg({ msg = $msg({
...@@ -86,5 +86,5 @@ ...@@ -86,5 +86,5 @@
} }
}, converse)); }, converse));
}, converse, mock, utils)); }, converse, mock, test_utils));
})); }));
(function (root, factory) { (function (root, factory) {
define([ define([
"mock", "mock",
"utils" "test_utils"
], function (mock, utils) { ], function (mock, test_utils) {
return factory(mock, utils); return factory(mock, test_utils);
} }
); );
} (this, function (mock, utils) { } (this, function (mock, test_utils) {
return describe("The OTR module", $.proxy(function(mock, utils) { return describe("The OTR module", $.proxy(function(mock, test_utils) {
beforeEach($.proxy(function () { beforeEach($.proxy(function () {
window.localStorage.clear(); window.localStorage.clear();
...@@ -36,5 +36,5 @@ ...@@ -36,5 +36,5 @@
// Clean up // Clean up
this.prebind = false; this.prebind = false;
}, converse)); }, converse));
}, converse, mock, utils)); }, converse, mock, test_utils));
})); }));
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
"strophe.disco": "components/strophe.disco/index", "strophe.disco": "components/strophe.disco/index",
"converse-dependencies": "src/deps-no-otr", "converse-dependencies": "src/deps-no-otr",
"jquery.browser": "components/jquery.browser/dist/jquery.browser", "jquery.browser": "components/jquery.browser/dist/jquery.browser",
"utils": "src/utils",
"moment":"components/momentjs/moment", "moment":"components/momentjs/moment",
"converse-templates":"src/templates", "converse-templates":"src/templates",
"tpl": "components/requirejs-tpl-jcbrand/tpl", "tpl": "components/requirejs-tpl-jcbrand/tpl",
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
"ru": "locale/ru/LC_MESSAGES/ru", "ru": "locale/ru/LC_MESSAGES/ru",
"zh": "locale/zh/LC_MESSAGES/zh", "zh": "locale/zh/LC_MESSAGES/zh",
"jquery.browser": "components/jquery.browser/dist/jquery.browser", "jquery.browser": "components/jquery.browser/dist/jquery.browser",
"utils": "src/utils",
"underscore": "components/underscore/underscore", "underscore": "components/underscore/underscore",
"backbone": "components/backbone/backbone", "backbone": "components/backbone/backbone",
"backbone.browserStorage": "components/backbone.browserStorage/backbone.browserStorage", "backbone.browserStorage": "components/backbone.browserStorage/backbone.browserStorage",
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
"ru": "locale/ru/LC_MESSAGES/ru", "ru": "locale/ru/LC_MESSAGES/ru",
"zh": "locale/zh/LC_MESSAGES/zh", "zh": "locale/zh/LC_MESSAGES/zh",
"jquery.browser": "components/jquery.browser/dist/jquery.browser", "jquery.browser": "components/jquery.browser/dist/jquery.browser",
"utils": "src/utils",
"underscore": "components/underscore/underscore", "underscore": "components/underscore/underscore",
"backbone": "components/backbone/backbone", "backbone": "components/backbone/backbone",
"backbone.browserStorage": "components/backbone.browserStorage/backbone.browserStorage", "backbone.browserStorage": "components/backbone.browserStorage/backbone.browserStorage",
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
"backbone.overview": "components/backbone.overview/backbone.overview", "backbone.overview": "components/backbone.overview/backbone.overview",
"bootstrap": "components/bootstrap/dist/js/bootstrap", // XXX: Only required for https://conversejs.org website "bootstrap": "components/bootstrap/dist/js/bootstrap", // XXX: Only required for https://conversejs.org website
"jquery.easing": "components/jquery-easing-original/jquery.easing.1.3", // XXX: Only required for https://conversejs.org website "jquery.easing": "components/jquery-easing-original/jquery.easing.1.3", // XXX: Only required for https://conversejs.org website
"utils": "src/utils",
"strophe": "components/strophe/strophe", "strophe": "components/strophe/strophe",
"strophe.muc": "components/strophe.muc/index", "strophe.muc": "components/strophe.muc/index",
"strophe.roster": "components/strophe.roster/index", "strophe.roster": "components/strophe.roster/index",
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
"ru": "locale/ru/LC_MESSAGES/ru", "ru": "locale/ru/LC_MESSAGES/ru",
"zh": "locale/zh/LC_MESSAGES/zh", "zh": "locale/zh/LC_MESSAGES/zh",
"jquery.browser": "components/jquery.browser/dist/jquery.browser", "jquery.browser": "components/jquery.browser/dist/jquery.browser",
"utils": "src/utils",
"underscore": "components/underscore/underscore", "underscore": "components/underscore/underscore",
"backbone": "components/backbone/backbone", "backbone": "components/backbone/backbone",
"backbone.browserStorage": "components/backbone.browserStorage/backbone.browserStorage", "backbone.browserStorage": "components/backbone.browserStorage/backbone.browserStorage",
......
...@@ -5,6 +5,7 @@ define("converse-dependencies", [ ...@@ -5,6 +5,7 @@ define("converse-dependencies", [
"backbone.browserStorage", "backbone.browserStorage",
"backbone.overview", "backbone.overview",
"jquery.browser", "jquery.browser",
"utils",
"strophe", "strophe",
"strophe.muc", "strophe.muc",
"strophe.roster", "strophe.roster",
......
...@@ -4,6 +4,7 @@ define("converse-dependencies", [ ...@@ -4,6 +4,7 @@ define("converse-dependencies", [
"backbone.browserStorage", "backbone.browserStorage",
"backbone.overview", "backbone.overview",
"jquery.browser", "jquery.browser",
"utils",
"strophe", "strophe",
"strophe.muc", "strophe.muc",
"strophe.roster", "strophe.roster",
......
...@@ -6,6 +6,7 @@ define("converse-dependencies", [ ...@@ -6,6 +6,7 @@ define("converse-dependencies", [
"backbone.overview", "backbone.overview",
"jquery.browser", "jquery.browser",
"jquery.easing", // XXX: Can be removed, only for https://conversejs.org "jquery.easing", // XXX: Can be removed, only for https://conversejs.org
"utils",
"strophe", "strophe",
"strophe.muc", "strophe.muc",
"strophe.roster", "strophe.roster",
......
...@@ -2,11 +2,12 @@ define("converse-dependencies", [ ...@@ -2,11 +2,12 @@ define("converse-dependencies", [
"otr", "otr",
"moment", "moment",
"locales", "locales",
"bootstrap", // XXX: Can be removed, only for https://conversejs.org "bootstrap", // XXX: Only for https://conversejs.org
"backbone.browserStorage", "backbone.browserStorage",
"backbone.overview", "backbone.overview",
"jquery.browser", "jquery.browser",
"jquery.easing", // XXX: Can be removed, only for https://conversejs.org "jquery.easing", // XXX: Only for https://conversejs.org
"utils",
"strophe", "strophe",
"strophe.muc", "strophe.muc",
"strophe.roster", "strophe.roster",
......
...@@ -32,6 +32,7 @@ define("converse-templates", [ ...@@ -32,6 +32,7 @@ define("converse-templates", [
"tpl!src/templates/room_description", "tpl!src/templates/room_description",
"tpl!src/templates/room_item", "tpl!src/templates/room_item",
"tpl!src/templates/room_panel", "tpl!src/templates/room_panel",
"tpl!src/templates/roster",
"tpl!src/templates/roster_item", "tpl!src/templates/roster_item",
"tpl!src/templates/select_option", "tpl!src/templates/select_option",
"tpl!src/templates/status_option", "tpl!src/templates/status_option",
...@@ -73,11 +74,12 @@ define("converse-templates", [ ...@@ -73,11 +74,12 @@ define("converse-templates", [
room_description: arguments[30], room_description: arguments[30],
room_item: arguments[31], room_item: arguments[31],
room_panel: arguments[32], room_panel: arguments[32],
roster_item: arguments[33], roster: arguments[33],
select_option: arguments[34], roster_item: arguments[34],
status_option: arguments[35], select_option: arguments[35],
toggle_chats: arguments[36], status_option: arguments[36],
toolbar: arguments[37], toggle_chats: arguments[37],
trimmed_chat: arguments[38] toolbar: arguments[38],
trimmed_chat: arguments[39]
}; };
}); });
<input class="roster-filter" placeholder="{{placeholder}}">
<select class="filter-type">
<option value="contacts">{{label_contacts}}</option>
<option value="groups">{{label_groups}}</option>
</select>
<dl class="roster-contacts" style="display: block;">
jQuery.fn.hasScrollBar = function() {
if (!$.contains(document, this.get(0))) {
return false;
}
if(this.parent().height() < this.get(0).scrollHeight) {
return true;
}
return false;
};
// Extra test dependencies // Extra test dependencies
config.paths.mock = "tests/mock"; config.paths.mock = "tests/mock";
config.paths.utils = "tests/utils"; config.paths.test_utils = "tests/utils";
config.paths.jasmine = "components/jasmine/lib/jasmine-core/jasmine"; config.paths.jasmine = "components/jasmine/lib/jasmine-core/jasmine";
config.paths["jasmine-html"] = "components/jasmine/lib/jasmine-core/jasmine-html"; config.paths["jasmine-html"] = "components/jasmine/lib/jasmine-core/jasmine-html";
config.paths["console-runner"] = "node_modules/phantom-jasmine/lib/console-runner"; config.paths["console-runner"] = "node_modules/phantom-jasmine/lib/console-runner";
......
(function (root, factory) { (function (root, factory) {
define("utils", [ define("test_utils", [
'jquery', 'jquery',
'mock' 'mock'
], ],
......
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