Commit 6786d1b7 authored by JC Brand's avatar JC Brand

Merge branch 'master' of github.com:jcbrand/converse.js

parents 779ce605 34e214d0
......@@ -190,7 +190,7 @@
"no-use-before-define": "off",
"no-useless-call": "error",
"no-useless-computed-key": "error",
"no-useless-concat": "error",
"no-useless-concat": "off",
"no-useless-constructor": "error",
"no-useless-escape": "off",
"no-useless-rename": "error",
......
# Changelog
## 3.2.1 (2017-08-29)
### Bugfixes
- Various IE11 fixes.
- #907 Unnecessary login validation error when `default_domain` or `locked_domain` are set.
- #908 Login form for inVerse is only 200px when `allow_registration` is set to `false`.
- #909 Translations written as template literals [aren't parsed properly by xgettext](https://savannah.gnu.org/bugs/?50920).
- #911 Use `getDefaultNickName` consistently to allow better overrides via plugins.
- #912 `maximize` method in `converse-minimize` fails if the `controlbox` is not there.
## 3.2.0 (2017-08-09)
### New Plugins
......
......@@ -2,7 +2,7 @@
*
* An XMPP chat client that runs in the browser.
*
* Version: 3.2.0-rc
* Version: 3.2.1
*
* Copyright: JC Brand 2012-2017
* Except for 3rd party dependencies.
......
......@@ -61,11 +61,11 @@ serve_bg: dev
########################################################################
## Translation machinery
GETTEXT = xgettext --keyword=__ --keyword=___ --from-code=UTF-8 --output=locale/converse.pot src/*.js --package-name=Converse.js --copyright-holder="Jan-Carel Brand" --package-version=3.2.0-rc -c
GETTEXT = xgettext --language="JavaScript" --keyword=__ --keyword=___ --from-code=UTF-8 --output=locale/converse.pot src/*.js --package-name=Converse.js --copyright-holder="Jan-Carel Brand" --package-version=3.2.1 -c
.PHONY: pot
pot:
$(GETTEXT) --language="javascript" 2>&1 > /dev/null; test $$? -eq 0 && exit 0 || $(GETTEXT) --language="python" && exit $$?;
$(GETTEXT) 2>&1 > /dev/null; exit $$?;
.PHONY: po
po:
......@@ -83,7 +83,6 @@ release:
$(SED) -ri s/Version:\ [0-9]\+\.[0-9]\+\.[0-9]\+/Version:\ $(VERSION)/ COPYRIGHT
$(SED) -ri s/Version:\ [0-9]\+\.[0-9]\+\.[0-9]\+/Version:\ $(VERSION)/ src/start.frag
$(SED) -ri s/Project-Id-Version:\ Converse\.js\ [0-9]\+\.[0-9]\+\.[0-9]\+/Project-Id-Version:\ Converse.js\ $(VERSION)/ locale/converse.pot
$(SED) -ri s/\"version\":\ \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/\"version\":\ \"$(VERSION)\"/ bower.json
$(SED) -ri s/\"version\":\ \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/\"version\":\ \"$(VERSION)\"/ package.json
$(SED) -ri s/--package-version=[0-9]\+\.[0-9]\+\.[0-9]\+/--package-version=$(VERSION)/ Makefile
$(SED) -ri s/v[0-9]\+\.[0-9]\+\.[0-9]\+\.zip/v$(VERSION)\.zip/ index.html
......@@ -176,31 +175,31 @@ BUILDS = dist/converse.js \
dist/converse.js: transpile src locale node_modules *.js
$(RJS) -o src/build.js include=converse out=dist/converse.js optimize=none
dist/converse.min.js: src locale node_modules *.js
$(RJS) -o src/build.js include=converse out=dist/converse.js
$(RJS) -o src/build.js include=converse out=dist/converse.min.js
dist/converse-esnext.js: src locale node_modules *.js transpile
$(RJS) -o src/build-esnext.js include=converse out=dist/converse-esnext.js optimize=none
dist/converse-esnext.min.js: src locale node_modules *.js transpile
$(RJS) -o src/build-esnext.js include=converse out=dist/converse-esnext.js
$(RJS) -o src/build-esnext.js include=converse out=dist/converse-esnext.min.js
dist/inverse.js: transpile src locale node_modules *.js
$(RJS) -o src/build-inverse.js include=inverse out=dist/inverse.js optimize=none
dist/inverse.min.js: src locale node_modules *.js
$(RJS) -o src/build-inverse.js include=inverse out=dist/inverse.js
$(RJS) -o src/build-inverse.js include=inverse out=dist/inverse.min.js
dist/converse-no-jquery.js: transpile src locale node_modules *.js
$(RJS) -o src/build.js include=converse wrap.endFile=end-no-jquery.frag exclude=jquery exclude=jquery.noconflict out=dist/converse-no-jquery.js optimize=none
dist/converse-no-jquery.min.js: src locale node_modules *.js transpile
$(RJS) -o src/build.js include=converse wrap.endFile=end-no-jquery.frag exclude=jquery exclude=jquery.noconflict out=dist/converse-no-jquery.js
$(RJS) -o src/build.js include=converse wrap.endFile=end-no-jquery.frag exclude=jquery exclude=jquery.noconflict out=dist/converse-no-jquery.min.js
dist/converse-no-dependencies.js: transpile src locale node_modules *.js
$(RJS) -o src/build-no-dependencies.js optimize=none out=dist/converse-no-dependencies.js
$(RJS) -o src/build-no-dependencies.js optimize=none out=dist/converse-no-dependencies.min.js
dist/converse-no-dependencies.min.js: src locale node_modules *.js
$(RJS) -o src/build-no-dependencies.js out=dist/converse-no-dependencies.js
$(RJS) -o src/build-no-dependencies.js out=dist/converse-no-dependencies.min.js
dist/converse-mobile.js: transpile src locale node_modules *.js
$(RJS) -o src/build.js paths.converse=src/converse-mobile include=converse out=dist/converse-mobile.js optimize=none
dist/converse-mobile.min.js: src locale node_modules *.js
$(RJS) -o src/build.js paths.converse=src/converse-mobile include=converse out=dist/converse-mobile.js
$(RJS) -o src/build.js paths.converse=src/converse-mobile include=converse out=dist/converse-mobile.min.js
dist/converse-muc-embedded.js: transpile src locale node_modules *.js
$(RJS) -o src/build.js paths.converse=src/converse-embedded include=converse out=dist/converse-muc-embedded.js optimize=none
dist/converse-muc-embedded.min.js: src locale node_modules *.js
$(RJS) -o src/build.js paths.converse=src/converse-embedded include=converse out=dist/converse-muc-embedded.js
$(RJS) -o src/build.js paths.converse=src/converse-embedded include=converse out=dist/converse-muc-embedded.min.js
.PHONY: jsmin
jsmin: $(BUILDS)
......
......@@ -1360,10 +1360,23 @@
padding: 1em; }
#converse-embedded-chat form.pure-form.converse-form legend,
#conversejs form.pure-form.converse-form legend {
color: #777; }
color: #777;
font-size: 125%; }
#converse-embedded-chat form.pure-form.converse-form input[type=checkbox],
#conversejs form.pure-form.converse-form input[type=checkbox] {
display: block; }
#converse-embedded-chat form.pure-form.converse-form select,
#converse-embedded-chat form.pure-form.converse-form input[type=password],
#converse-embedded-chat form.pure-form.converse-form input[type=number],
#converse-embedded-chat form.pure-form.converse-form input[type=text],
#conversejs form.pure-form.converse-form select,
#conversejs form.pure-form.converse-form input[type=password],
#conversejs form.pure-form.converse-form input[type=number],
#conversejs form.pure-form.converse-form input[type=text] {
min-width: 50%; }
#converse-embedded-chat form.pure-form.converse-form label,
#conversejs form.pure-form.converse-form label {
margin-top: 1em;
margin: 1em 0;
font-size: 16px; }
#converse-embedded-chat form.pure-form.converse-form input[type=text],
#converse-embedded-chat form.pure-form.converse-form input[type=password],
......@@ -1944,10 +1957,13 @@
color: red;
display: none; }
#conversejs #controlbox #converse-register .provider-title {
font-size: 22px; }
font-size: 20px;
margin: 0; }
#conversejs #controlbox #converse-register .provider-score {
width: 178px;
margin-bottom: 8px; }
#conversejs #controlbox #converse-register .title, #conversejs #controlbox #converse-register .instructions, #conversejs #controlbox #converse-register label {
margin: 0.5em 0 0 0; }
#conversejs #controlbox #converse-register .form-help .url {
font-weight: bold;
color: #578EA9; }
......
......@@ -1360,10 +1360,23 @@
padding: 1em; }
#converse-embedded-chat form.pure-form.converse-form legend,
#conversejs form.pure-form.converse-form legend {
color: #777; }
color: #777;
font-size: 125%; }
#converse-embedded-chat form.pure-form.converse-form input[type=checkbox],
#conversejs form.pure-form.converse-form input[type=checkbox] {
display: block; }
#converse-embedded-chat form.pure-form.converse-form select,
#converse-embedded-chat form.pure-form.converse-form input[type=password],
#converse-embedded-chat form.pure-form.converse-form input[type=number],
#converse-embedded-chat form.pure-form.converse-form input[type=text],
#conversejs form.pure-form.converse-form select,
#conversejs form.pure-form.converse-form input[type=password],
#conversejs form.pure-form.converse-form input[type=number],
#conversejs form.pure-form.converse-form input[type=text] {
min-width: 50%; }
#converse-embedded-chat form.pure-form.converse-form label,
#conversejs form.pure-form.converse-form label {
margin-top: 1em;
margin: 1em 0;
font-size: 18px; }
#converse-embedded-chat form.pure-form.converse-form input[type=text],
#converse-embedded-chat form.pure-form.converse-form input[type=password],
......@@ -1445,10 +1458,9 @@ body {
height: 100vh; }
#conversejs form.pure-form.converse-form {
margin: 1em; }
#conversejs form.pure-form.converse-form legend {
color: #777; }
#conversejs form.pure-form.converse-form label {
margin-top: 1em; }
#conversejs form.pure-form.converse-form input[type=checkbox] {
margin-left: 1em;
display: inline; }
#conversejs form.pure-form.converse-form input[type=text],
#conversejs form.pure-form.converse-form input[type=password],
#conversejs form.pure-form.converse-form input[type=number],
......@@ -2010,10 +2022,13 @@ body {
color: red;
display: none; }
#conversejs #controlbox #converse-register .provider-title {
font-size: 22px; }
font-size: 26px;
margin: 0; }
#conversejs #controlbox #converse-register .provider-score {
width: 178px;
margin-bottom: 8px; }
#conversejs #controlbox #converse-register .title, #conversejs #controlbox #converse-register .instructions, #conversejs #controlbox #converse-register label {
margin: 0.5em 0 0 0; }
#conversejs #controlbox #converse-register .form-help .url {
font-weight: bold;
color: #578EA9; }
......@@ -2351,9 +2366,13 @@ body {
margin-top: 15%; }
#conversejs #controlbox #converse-register #available-chatrooms, #conversejs #controlbox #converse-login #available-chatrooms {
padding: 0 1em 2em 1em; }
#conversejs #controlbox #converse-register input[type=submit], #conversejs #controlbox #converse-login input[type=submit] {
#conversejs #controlbox #converse-register .title, #conversejs #controlbox #converse-register .instructions, #conversejs #controlbox #converse-register label, #conversejs #controlbox #converse-login .title, #conversejs #controlbox #converse-login .instructions, #conversejs #controlbox #converse-login label {
margin: 1em 0; }
#conversejs #controlbox #converse-register input[type=submit],
#conversejs #controlbox #converse-register input[type=button], #conversejs #controlbox #converse-login input[type=submit],
#conversejs #controlbox #converse-login input[type=button] {
width: auto;
margin-top: 1.5em; }
margin: 1.5em 1em 0 0; }
#conversejs #controlbox #controlbox-tabs {
/* single tab */ }
#conversejs #controlbox #controlbox-tabs li {
......
This diff is collapsed.
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.
......@@ -48,9 +48,9 @@ copyright = u'2014, JC Brand'
# built documents.
#
# The short X.Y version.
version = '3.2.0-rc'
version = '3.2.1'
# The full version, including alpha/beta/rc tags.
release = '3.2.0-rc'
release = '3.2.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
......
......@@ -485,7 +485,7 @@ default_domain
Specify a domain to act as the default for user JIDs. This allows users to log
in with only the username part of their JID, instead of the full JID.
For example, if ``default_domain`` is ``example.org``, then the user:
For example, if ``default_domain`` is ``example.org``, then the user
``johnny@example.org`` can log in with only ``johnny``.
JIDs with other domains are still allowed but need to be provided in full.
......@@ -701,6 +701,12 @@ locked_domain
Similar to `default_domain`_ but no other domains are allowed.
For example, if ``locked_domain`` is set to ``example.org``, then the user
``johnny@example.org`` can log in with only ``johnny``.
Additionally, only users registered on the ``example.org`` host can log in, no
other users are allowed to log in.
message_archiving
-----------------
......
......@@ -12,12 +12,12 @@
<link type="text/css" rel="stylesheet" media="screen" href="css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" media="screen" href="css/font-awesome.min.css" />
<link type="text/css" rel="stylesheet" media="screen" href="css/theme.min.css" />
<link type="text/css" rel="stylesheet" media="screen" href="https://cdn.conversejs.org/3.1.0/css/converse.min.css" />
<link type="text/css" rel="stylesheet" media="screen" href="css/converse.css" />
<script type="text/javascript" src="analytics.js"></script>
<noscript><p><img src="//stats.opkode.com/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript>
<script src="src/website.js"></script>
<![if gte IE 11]>
<script src="https://cdn.conversejs.org/3.1.0/dist/converse.min.js"></script>
<script src="dist/converse.min.js"></script>
<![endif]>
</head>
......
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.
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.
{
"name": "converse.js",
"version": "3.2.0",
"version": "3.2.1",
"description": "Browser based XMPP instant messaging client",
"main": "main.js",
"directories": {
......
......@@ -67,12 +67,16 @@
display: none;
}
.provider-title {
font-size: 22px;
font-size: $font-size-huge;
margin: 0;
}
.provider-score {
width: 178px;
margin-bottom: 8px;
}
.title, .instructions, label {
margin: 0.5em 0 0 0;
}
.form-help .url {
font-weight: bold;
color: $link-color;
......
......@@ -194,9 +194,19 @@
padding: 1em;
legend {
color: $text-color;
font-size: 125%;
}
input[type=checkbox] {
display: block;
}
select,
input[type=password],
input[type=number],
input[type=text] {
min-width: 50%;
}
label {
margin-top: 1em;
margin: 1em 0;
font-size: $font-size-large;
}
input[type=text],
......
......@@ -40,9 +40,13 @@
#available-chatrooms {
padding: 0 1em 2em 1em;
}
input[type=submit] {
.title, .instructions, label {
margin: 1em 0;
}
input[type=submit],
input[type=button] {
width: auto;
margin-top: 1.5em;
margin: 1.5em 1em 0 0;
}
}
#controlbox-tabs {
......
......@@ -39,11 +39,10 @@ body {
form {
&.pure-form.converse-form {
margin: 1em;
legend {
color: $text-color;
}
label {
margin-top: 1em;
input[type=checkbox] {
margin-left: 1em;
display: inline;
}
input[type=text],
input[type=password],
......
......@@ -81,7 +81,8 @@
$form.find('input[name="name"]').val('Play&apos;s the Thing');
$form.find('input[name="autojoin"]').prop('checked', true);
$form.find('input[name="nick"]').val('JC');
$form.submit();
view.$el.find('.button-primary').click();
expect(view.model.get('bookmarked')).toBeTruthy();
expect($bookmark.hasClass('on-button'), true);
......
......@@ -743,7 +743,7 @@
}));
});
it("will cause the chat area to be scrolled down only if it was at the bottom already",
it("will cause the chat area to be scrolled down only if it was at the bottom originally",
mock.initConverseWithPromises(
null, ['rosterGroupsFetched'], {},
function (done, _converse) {
......@@ -769,10 +769,9 @@
}).c('body').t('Message: '+i).up()
.c('active', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree());
}
test_utils.waitUntil(function () {
return chatboxview.$content.scrollTop();
}, 500)
}, 1000)
.then(function () {
return test_utils.waitUntil(function () {
return !chatboxview.model.get('auto_scrolled');
......@@ -1756,31 +1755,42 @@
test_utils.openContactsPanel(_converse);
test_utils.waitUntil(function () {
return _converse.rosterview.$el.find('dt').length;
}, 300).then(function () {
}, 500).then(function () {
// Make the timeouts shorter so that we can test
_converse.TIMEOUTS.PAUSED = 200;
_converse.TIMEOUTS.INACTIVE = 200;
contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
test_utils.openChatBoxFor(_converse, contact_jid);
view = _converse.chatboxviews.get(contact_jid);
return test_utils.waitUntil(function () {
return view.model.get('chat_state') === 'active';
}, 500);
}).then(function () {
console.log('chat_state set to active');
view = _converse.chatboxviews.get(contact_jid);
expect(view.model.get('chat_state')).toBe('active');
view.keyPressed({
target: view.$el.find('textarea.chat-textarea'),
keyCode: 1
});
return test_utils.waitUntil(function () {
return view.model.get('chat_state') === 'composing';
}, 500);
}).then(function () {
console.log('chat_state set to composing');
view = _converse.chatboxviews.get(contact_jid);
expect(view.model.get('chat_state')).toBe('composing');
spyOn(_converse.connection, 'send');
return test_utils.waitUntil(function () {
if (view.model.get('chat_state') === 'paused') {
return true;
}
return false;
}, 300);
return view.model.get('chat_state') === 'paused';
}, 500);
}).then(function () {
console.log('chat_state set to paused');
return test_utils.waitUntil(function () {
return view.model.get('chat_state') === 'inactive';
}, 300);
}, 500);
}).then(function () {
console.log('chat_state set to inactive');
expect(_converse.connection.send).toHaveBeenCalled();
var calls = _.filter(_converse.connection.send.calls.all(), function (call) {
return call.args[0] instanceof Strophe.Builder;
......@@ -1800,7 +1810,7 @@
expect($stanza.children().get(1).tagName).toBe('no-store');
expect($stanza.children().get(2).tagName).toBe('no-permanent-store');
done();
});
}).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL));
}));
it("is sent when the user a minimizes a chat box",
......
This diff is collapsed.
......@@ -137,6 +137,17 @@
});
_converse.rosterview.update(); // XXX: Will normally called as event handler
}
$.fn.hasScrollBar = function() {
if (!$.contains(document, this.get(0))) {
return false;
}
if(this.parent().height() < this.get(0).scrollHeight) {
return true;
}
return false;
};
return test_utils.waitUntil(function () {
if (_converse.rosterview.$roster.hasScrollBar()) {
return $filter.is(':visible');
......
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.
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.
<label>{{{label}}}</label>
<input name="{{{name}}}" type="{{{type}}}" {{{checked}}}>
<label class="checkbox" for="{{{name}}}">{{{label}}}<input name="{{{name}}}" type="{{{type}}}" {{{checked}}}></label>
This diff is collapsed.
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