summaryrefslogtreecommitdiffstats
path: root/media/js/views/browser.js
diff options
context:
space:
mode:
Diffstat (limited to 'media/js/views/browser.js')
-rw-r--r--media/js/views/browser.js53
1 files changed, 45 insertions, 8 deletions
diff --git a/media/js/views/browser.js b/media/js/views/browser.js
index 858f059..6235a59 100644
--- a/media/js/views/browser.js
+++ b/media/js/views/browser.js
@@ -44,11 +44,16 @@
$input = $target.is(':checkbox') && $target || $target.siblings('[type="checkbox"]'),
id = $input.data('id'),
room = this.rooms.get(id);
+
if (!room) {
return;
}
- (!$input.is(':checked') && this.client.joinRoom(room.id)) ||
- (this.rooms.get(room.id).get('joined') && this.client.leaveRoom(room.id));
+
+ if (room.get('joined')) {
+ this.client.leaveRoom(room.id);
+ } else {
+ this.client.joinRoom(room);
+ }
},
add: function(room) {
var room = room.toJSON ? room.toJSON() : room,
@@ -100,28 +105,60 @@
});
},
create: function(e) {
+ var that = this;
e.preventDefault();
- var $modal = this.$('#lcb-add-room'),
- $form = this.$(e.target),
+ var $form = this.$(e.target),
+ $modal = this.$('#lcb-add-room'),
+ $name = this.$('.lcb-room-name'),
+ $slug = this.$('.lcb-room-slug'),
+ $description = this.$('.lcb-room-description'),
+ $password = this.$('.lcb-room-password'),
+ $confirmPassword = this.$('.lcb-room-confirm-password'),
data = {
- name: this.$('.lcb-room-name').val().trim(),
- slug: this.$('.lcb-room-slug').val().trim(),
- description: this.$('.lcb-room-description').val(),
+ name: $name.val().trim(),
+ slug: $slug.val().trim(),
+ description: $description.val(),
+ password: $password.val(),
callback: function success() {
$modal.modal('hide');
$form.trigger('reset');
}
};
+
+ $name.parent().removeClass('has-error');
+ $slug.parent().removeClass('has-error');
+ $confirmPassword.parent().removeClass('has-error');
+
// we require name is non-empty
if (!data.name) {
$name.parent().addClass('has-error');
return;
}
+
// we require slug is non-empty
if (!data.slug) {
$slug.parent().addClass('has-error');
return;
}
+
+ // remind the user, that users may share the password with others
+ if (data.password) {
+ if (data.password !== $confirmPassword.val()) {
+ $confirmPassword.parent().addClass('has-error');
+ return;
+ }
+
+ swal({
+ title: 'Password-protected room',
+ text: 'You\'re creating a room with a shared password.\n' +
+ 'Anyone who obtains the password may enter the room.',
+ showCancelButton: true
+ }, function(){
+ that.client.events.trigger('rooms:create', data);
+ });
+ return;
+ }
+
this.client.events.trigger('rooms:create', data);
},
addUser: function(user, room) {
@@ -135,4 +172,4 @@
});
-}(window, $, _); \ No newline at end of file
+}(window, $, _);