Skip to content

Commit a83911d

Browse files
linkmauvejcbrand
authored andcommitted
WIP: Move the nickname selection form to a modal
1 parent c836eb4 commit a83911d

File tree

4 files changed

+57
-32
lines changed

4 files changed

+57
-32
lines changed

src/converse-muc-views.js

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import tpl_chatroom_features from "templates/chatroom_features.html";
2727
import tpl_chatroom_form from "templates/chatroom_form.html";
2828
import tpl_chatroom_head from "templates/chatroom_head.html";
2929
import tpl_chatroom_invite from "templates/chatroom_invite.html";
30-
import tpl_chatroom_nickname_form from "templates/chatroom_nickname_form.html";
30+
import tpl_chatroom_nickname_form_modal from "templates/chatroom_nickname_form_modal.html";
3131
import tpl_chatroom_password_form from "templates/chatroom_password_form.html";
3232
import tpl_chatroom_sidebar from "templates/chatroom_sidebar.html";
3333
import tpl_info from "templates/info.html";
@@ -1028,7 +1028,7 @@ converse.plugins.add('converse-muc-views', {
10281028
onConnectionStatusChanged () {
10291029
const conn_status = this.model.get('connection_status');
10301030
if (conn_status === converse.ROOMSTATUS.NICKNAME_REQUIRED) {
1031-
this.renderNicknameForm();
1031+
this.renderNicknameButton();
10321032
} else if (conn_status === converse.ROOMSTATUS.PASSWORD_REQUIRED) {
10331033
this.renderPasswordForm();
10341034
} else if (conn_status === converse.ROOMSTATUS.CONNECTING) {
@@ -1471,29 +1471,34 @@ converse.plugins.add('converse-muc-views', {
14711471
},
14721472

14731473
hideChatRoomContents () {
1474-
const container_el = this.el.querySelector('.chatroom-body');
1475-
if (container_el !== null) {
1476-
[].forEach.call(container_el.children, child => child.classList.add('hidden'));
1477-
}
1474+
return;
14781475
},
14791476

1480-
renderNicknameForm () {
1481-
/* Render a form which allows the user to choose theirnickname.
1477+
renderNicknameButton () {
1478+
this.el.querySelector('.setNicknameButtonForm').classList.remove('hidden');
1479+
this.el.querySelector('.sendXMPPMessage').classList.add('hidden');
1480+
this.el.querySelector('.setNicknameButtonForm').addEventListener('submit', this.renderNicknameModal.bind(this), false);
1481+
},
1482+
1483+
renderNicknameModal (ev) {
1484+
/* Render a button which allows the user to get a modal to set their nickname.
14821485
*/
1486+
ev.preventDefault();
14831487
const message = this.model.get('nickname_validation_message');
14841488
this.model.save('nickname_validation_message', undefined);
1485-
this.hideChatRoomContents();
1486-
if (!this.nickname_form) {
1487-
this.nickname_form = new _converse.MUCNicknameForm({
1488-
'model': new Backbone.Model({'validation_message': message}),
1489+
if (this.nickname_form_modal === undefined) {
1490+
this.nickname_form_modal = new _converse.NicknameFormModal({
1491+
//'model': new Backbone.Model({'validation_message': message}),
1492+
'model': this.model,
14891493
'chatroomview': this,
14901494
});
14911495
const container_el = this.el.querySelector('.chatroom-body');
1492-
container_el.insertAdjacentElement('beforeend', this.nickname_form.el);
1496+
container_el.insertAdjacentElement('beforeend', this.nickname_form_modal.el);
14931497
} else {
1494-
this.nickname_form.model.set('validation_message', message);
1498+
this.nickname_form_modal.model.set('validation_message', message);
14951499
}
1496-
u.showElement(this.nickname_form.el);
1500+
this.nickname_form_modal.show(ev);
1501+
console.log(this.nickname_form_modal);
14971502
u.safeSave(this.model, {'connection_status': converse.ROOMSTATUS.NICKNAME_REQUIRED});
14981503
},
14991504

@@ -1778,7 +1783,7 @@ converse.plugins.add('converse-muc-views', {
17781783
* form has been submitted and removed.
17791784
*/
17801785
if (this.model.get('connection_status') == converse.ROOMSTATUS.NICKNAME_REQUIRED) {
1781-
this.renderNicknameForm();
1786+
this.renderNicknameButton();
17821787
} else if (this.model.get('connection_status') == converse.ROOMSTATUS.PASSWORD_REQUIRED) {
17831788
this.renderPasswordForm();
17841789
} else if (this.model.get('connection_status') == converse.ROOMSTATUS.ENTERED) {
@@ -1956,21 +1961,23 @@ converse.plugins.add('converse-muc-views', {
19561961
});
19571962

19581963

1959-
_converse.MUCNicknameForm = Backbone.VDOMView.extend({
1960-
className: 'muc-nickname-form',
1964+
_converse.NicknameFormModal = _converse.BootstrapModal.extend({
1965+
19611966
events: {
19621967
'submit form': 'submitNickname',
19631968
},
19641969

19651970
initialize (attrs) {
1971+
_converse.BootstrapModal.prototype.initialize.apply(this, arguments);
19661972
this.chatroomview = attrs.chatroomview;
19671973
this.listenTo(this.model, 'change:validation_message', this.render);
19681974
this.render();
19691975
},
19701976

19711977
toHTML () {
19721978
const err_msg = this.model.get('validation_message');
1973-
return tpl_chatroom_nickname_form({
1979+
return tpl_chatroom_nickname_form_modal({
1980+
'__': __,
19741981
'heading': __('Please choose your nickname'),
19751982
'label_nickname': __('Nickname'),
19761983
'label_join': __('Enter groupchat'),
@@ -1998,9 +2005,11 @@ converse.plugins.add('converse-muc-views', {
19982005
'validation_message': __('You need to provide a nickname')
19992006
});
20002007
}
2008+
this.modal.hide();
20012009
}
20022010
});
20032011

2012+
20042013
_converse.ChatRoomOccupantView = Backbone.VDOMView.extend({
20052014
tagName: 'li',
20062015
initialize () {

src/templates/chatbox_message_form.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
<div class="new-msgs-indicator hidden">▼ {{{ o.unread_msgs }}} ▼</div>
2+
<form class="setNicknameButtonForm hidden">
3+
<input type="submit" class="btn btn-primary" name="join" value="Join"/>
4+
</form>
25
<form class="sendXMPPMessage">
36
{[ if (o.show_toolbar) { ]}
47
<ul class="chat-toolbar no-text-select"></ul>

src/templates/chatroom_nickname_form.html

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<div class="modal" id="ask-nickname-modal" tabindex="-1" role="dialog" aria-labelledby="ask-nickname-modal-label" aria-hidden="true">
2+
<div class="modal-dialog" role="document">
3+
<div class="modal-content">
4+
<div class="modal-header">
5+
<h5 class="modal-title"
6+
id="ask-nickname-modal-label">{{{o.heading}}}</h5>
7+
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
8+
<span aria-hidden="true">×</span>
9+
</button>
10+
</div>
11+
<div class="modal-body">
12+
<form class="converse-form chatroom-form converse-centered-form">
13+
<fieldset class="form-group">
14+
<label>{{{o.__('Nickname:')}}}</label>
15+
<p class="validation-message">{{{o.validation_message}}}</p>
16+
<input type="text" required="required" name="nick" value="{{{o.nickname}}}"
17+
class="form-control {{o.error_class}}" placeholder="{{{o.label_nickname}}}"/>
18+
</fieldset>
19+
<fieldset class="form-group">
20+
<input type="submit" class="btn btn-primary" name="join" value="{{{o.label_join}}}"/>
21+
</fieldset>
22+
</form>
23+
</div>
24+
</div>
25+
</div>
26+
</div>

0 commit comments

Comments
 (0)