Huge cleanup, remove all old config stuff

master
Daniel Berteaud 10 years ago
parent b65ad2c63e
commit 2b0b0bf609
  1. 428
      public/js/vroom.js
  2. 2
      templates/default/configure_modal.html.ep
  3. 77
      templates/default/join.html.ep
  4. 48
      templates/default/join_password_modal.html.ep
  5. 61
      templates/default/owner_password_modal.html.ep

@ -72,51 +72,6 @@ $('#switch_lang').change(function(){
// Define a few functions // Define a few functions
// //
// Add a new email address to be notified when someone joins
// This only add the email address on the interface
function addNotifiedEmail(email){
var id = email.replace(/['"]/g, '_');
$('<li></li>').html(email +
' <a href="javascript:void(0);" onclick="removeNotifiedEmail(\'' + email.replace('\'', '\\\'') + '\');"' +
' title="' + locale.REMOVE_THIS_ADDRESS + '">' +
' <span class="glyphicon glyphicon-remove-circle"></span>' +
' </a>')
.attr('id', 'emailNotification_' + id)
.appendTo('#emailNotificationList');
}
// Remove the address from the list
// Remove it from the interface and request the frontend to remove it from
// the database too
function removeNotifiedEmail(email){
var id = escapeJqSelector(email.replace(/['"]/, '_').replace('\\\'', '\''));
$.ajax({
data: {
req: JSON.stringify({
action: 'email_notification',
param: {
set: 'off',
email: email,
room: roomName
}
})
},
error: function() {
$.notify(locale.ERROR_OCCURRED, 'error');
},
success: function(data) {
if (data.status == 'success'){
$.notify(data.msg, 'info');
$('#emailNotification_' + id).remove();
webrtc.sendToAll('notif_change', {});
}
else{
$.notify(data.msg, 'error');
}
}
});
}
// Escape a string to be used as a jQuerry selector // Escape a string to be used as a jQuerry selector
// Taken from http://totaldev.com/content/escaping-characters-get-valid-jquery-id // Taken from http://totaldev.com/content/escaping-characters-get-valid-jquery-id
function escapeJqSelector(string){ function escapeJqSelector(string){
@ -222,22 +177,18 @@ function maxHeight(){
$('#ownerPassConfirm').on('input', function() { $('#ownerPassConfirm').on('input', function() {
if ($('#ownerPassConfirm').val() == $('#ownerPass').val() && if ($('#ownerPassConfirm').val() == $('#ownerPass').val() &&
$('#ownerPassConfirm').val() != ''){ $('#ownerPassConfirm').val() != ''){
$('#setOwnerPassButton').removeClass('disabled');
$('#ownerPassConfirm').parent().removeClass('has-error'); $('#ownerPassConfirm').parent().removeClass('has-error');
} }
else{ else{
$('#setOwnerPassButton').addClass('disabled');
$('#ownerPassConfirm').parent().addClass('has-error'); $('#ownerPassConfirm').parent().addClass('has-error');
} }
}); });
$('#joinPassConfirm').on('input', function() { $('#joinPassConfirm').on('input', function() {
if ($('#joinPass').val() == $('#joinPassConfirm').val() && if ($('#joinPass').val() == $('#joinPassConfirm').val() &&
$('#joinPass').val() != ''){ $('#joinPass').val() != ''){
$('#setJoinPassButton').removeClass('disabled');
$('#joinPassConfirm').parent().removeClass('has-error'); $('#joinPassConfirm').parent().removeClass('has-error');
} }
else{ else{
$('#setJoinPassButton').addClass('disabled');
$('#joinPassConfirm').parent().addClass('has-error'); $('#joinPassConfirm').parent().addClass('has-error');
} }
}); });
@ -550,7 +501,6 @@ function initVroom(room) {
// We keep it so we can clone it again // We keep it so we can clone it again
$('.email-list').find('.email-entry:not(:first)').remove(); $('.email-list').find('.email-entry:not(:first)').remove();
$.each(data.notif, function(index, obj){ $.each(data.notif, function(index, obj){
addNotifiedEmail(obj.email);
addEmailInputField(obj.email); addEmailInputField(obj.email);
}); });
// Now, remove the first one if the list is not empty // Now, remove the first one if the list is not empty
@ -570,23 +520,15 @@ function initVroom(room) {
} }
} }
if (data.locked == 'yes'){ if (data.locked == 'yes'){
$('#lockLabel').addClass('btn-danger active');
$('#lockButton').prop('checked', true);
$('#lockedSet').bootstrapSwitch('state', true); $('#lockedSet').bootstrapSwitch('state', true);
} }
if (data.ask_for_name == 'yes'){ if (data.ask_for_name == 'yes'){
$('#askForNameLabel').addClass('btn-danger active');
$('#askForNameButton').prop('checked', true);
$('#askForNameSet').bootstrapSwitch('state', true); $('#askForNameSet').bootstrapSwitch('state', true);
} }
if (data.join_auth == 'yes'){ if (data.join_auth == 'yes'){
$('#joinPassLabel').addClass('btn-danger active');
$('#joinPassButton').prop('checked', true);
$('#joinPassSet').bootstrapSwitch('state', true); $('#joinPassSet').bootstrapSwitch('state', true);
} }
if (data.owner_auth == 'yes'){ if (data.owner_auth == 'yes'){
$('#ownerPassLabel').addClass('btn-danger active');
$('#ownerPassButton').prop('checked', true);
$('#ownerPassSet').bootstrapSwitch('state', true); $('#ownerPassSet').bootstrapSwitch('state', true);
} }
} }
@ -1360,92 +1302,6 @@ function initVroom(room) {
getPeerRole(data.id); getPeerRole(data.id);
}); });
// A new notified email has been added or removed
// We need to refresh the whole list
webrtc.on('notif_change', function(data){
if (peers.local.role != 'owner' || data.roomType == 'screen' || peers[data.id].role != 'owner'){
return;
}
$('#emailNotificationList > li').remove();
getRoomInfo();
});
// askForName set/unset
webrtc.on('ask_for_name', function(data){
if (peers.local.role != 'owner' || peers[data.id].role != 'owner'){
return;
}
if (data.payload.action == 'set'){
roomInfo.ask_for_name = 'yes';
$('#askForNameLabel').addClass('btn-danger active');
$('#askForNameButton').prop('checked', true);
}
else{
roomInfo.ask_for_name = 'no';
$('#askForNameLabel').removeClass('btn-danger active');
$('#askForNameButton').prop('checked', false);
}
});
// A few notif on password set/unset or lock/unlock
webrtc.on('room_lock', function(data){
if (data.roomType == 'screen' || peers[data.id].role != 'owner'){
return;
}
if (data.payload.action == 'lock'){
roomInfo.locked = 'yes';
$('#lockLabel').addClass('btn-danger active');
$('#lockButton').prop('checked', true);
$.notify(sprintf(locale.ROOM_LOCKED_BY_s, stringEscape(peers[data.id].displayName)), 'info');
}
else{
roomInfo.locked = 'no';
$('#lockLabel').removeClass('btn-danger active');
$('#lockButton').prop('checked', false);
$.notify(sprintf(locale.ROOM_UNLOCKED_BY_s, stringEscape(peers[data.id].displayName)), 'info');
}
});
webrtc.on('password_protect', function(data){
if (data.roomType == 'screen' || peers[data.id].role != 'owner'){
return;
}
var who = (peers[data.id].hasName) ? peers[data.id].displayName : locale.A_ROOM_ADMIN;
if (data.payload.action == 'set'){
$.notify(sprintf(locale.PASSWORD_PROTECT_ON_BY_s, stringEscape(who)), 'info');
$('#joinPassLabel').addClass('btn-danger active');
$('#joinPassButton').prop('checked', true);
$('#joinPassSet').bootstrapSwitch('state', true);
}
else{
$.notify(sprintf(locale.PASSWORD_PROTECT_OFF_BY_s, stringEscape(who)), 'info');
$('#joinPassLabel').removeClass('btn-danger active');
$('#joinPassButton').prop('checked', false);
$('#joinPassSet').bootstrapSwitch('state', true);
}
});
webrtc.on('owner_password', function(data){
if (data.roomType == 'screen' || peers[data.id].role != 'owner'){
return;
}
if (peers.local.role == 'owner'){
var who = (peers[data.id].hasName) ? peers[data.id].displayName : locale.A_ROOM_ADMIN;
if (data.payload.action == 'set'){
$.notify(sprintf(locale.OWNER_PASSWORD_CHANGED_BY_s, stringEscape(who)), 'info');
$('#ownerPassLabel').addClass('btn-danger active');
$('#ownerPassButton').prop('checked', true);
$('#ownerPassSet').bootstrapSwitch('state', true);
}
else{
$.notify(sprintf(locale.OWNER_PASSWORD_REMOVED_BY_s, stringEscape(who)), 'info');
$('#ownerPassLabel').removeClass('btn-danger active');
$('#ownerPassButton').prop('checked', false);
$('#ownerPassSet').bootstrapSwitch('state', false);
}
}
else{
getRoomInfo();
}
});
// An owner has wiped data // An owner has wiped data
webrtc.on('wipe_data', function(data){ webrtc.on('wipe_data', function(data){
if (data.roomType == 'screen' || peers[data.id].role != 'owner'){ if (data.roomType == 'screen' || peers[data.id].role != 'owner'){
@ -1597,10 +1453,6 @@ function initVroom(room) {
}, 2000); }, 2000);
}); });
// Do not close the dropdown menus (invite/conf) when filling fields
$('.dropdown-menu').on('click', 'li', function(e){
e.stopPropagation();
});
// Handle Email Invitation // Handle Email Invitation
$('#inviteEmail').submit(function(event) { $('#inviteEmail').submit(function(event) {
event.preventDefault(); event.preventDefault();
@ -1706,79 +1558,6 @@ function initVroom(room) {
} }
}); });
// Handle room lock/unlock
$('#lockButton').change(function() {
var action = ($(this).is(":checked")) ? 'lock_room' : 'unlock_room';
$.ajax({
data: {
req: JSON.stringify({
action: action,
param: {
room: roomName
}
})
},
error: function(data) {
$.notify(locale.ERROR_OCCURRED, 'error');
},
success: function(data) {
if (data.status == 'success'){
$.notify(data.msg, 'info');
if (action === 'lock_room'){
$('#lockLabel').addClass('btn-danger active');
}
else{
$('#lockLabel').removeClass('btn-danger active');
}
$('#lockLabel').removeClass('focus');
webrtc.sendToAll('room_lock', {action: action});
}
else{
$.notify(data.msg, 'error');
}
}
});
// DIsable the button for a moment so you cannot overload the server
suspendButton($(this));
});
// Force participants to set a name
$('#askForNameButton').change(function() {
var set = ($(this).is(":checked")) ? 'on':'off';
$.ajax({
data: {
req: JSON.stringify({
action: 'set_ask_for_name',
param: {
set: set,
room: roomName
}
})
},
error: function(data) {
$.notify(locale.ERROR_OCCURRED, 'error');
},
success: function(data) {
if (data.status == 'success'){
$.notify(data.msg, 'info');
if (set === 'on'){
$('#askForNameLabel').addClass('btn-danger active');
}
else{
$('#askForNameLabel').removeClass('btn-danger active focus');
}
// In any case, remove the focus
$('#askForNameLabel').removeClass('focus');
webrtc.sendToAll('ask_for_name', {action: set});
}
else{
$.notify(data.msg, 'error');
}
}
});
suspendButton($(this));
});
// ScreenSharing // ScreenSharing
$('#shareScreenButton').change(function() { $('#shareScreenButton').change(function() {
var action = ($(this).is(":checked")) ? 'share':'unshare'; var action = ($(this).is(":checked")) ? 'share':'unshare';
@ -1938,87 +1717,6 @@ function initVroom(room) {
}); });
}); });
$('#joinPassButton').change(function(){
var action = ($(this).is(':checked')) ? 'set':'unset';
if (action == 'set'){
$('#joinPassModal').modal('show');
// Uncheck the button now
// so it's not inconsistent if we just close the modal dialog
// submitting the form will recheck it
$('#joinPassButton').prop('checked', false);
$('#joinPassLabel').removeClass('active');
}
else{
$.ajax({
data: {
req: JSON.stringify({
action: 'set_join_password',
param: {
type: 'join',
room: roomName,
}
})
},
error: function() {
$.notify(locale.ERROR_OCCURRED, 'error');
},
success: function(data) {
$('#joinPass').val('');
$('#joinPassConfirm').val('');
if (data.status == 'success'){
$.notify(data.msg, 'info');
$('#joinPassLabel').removeClass('btn-danger active');
webrtc.sendToAll('password_protect', {action: 'unset'});
}
else{
$.notify(data.msg, 'error');
}
}
});
suspendButton($(this));
}
});
// Join password protection
$('#joinPassForm').submit(function(event) {
event.preventDefault();
var pass = $('#joinPass').val();
var pass2 = $('#joinPassConfirm').val();
if (pass == pass2 && pass != ''){
$('#setJoinPassButton').addClass('disabled');
$.ajax({
data: {
req: JSON.stringify({
action: 'set_join_password',
param: {
password: pass,
room: roomName
}
})
},
error: function() {
$.notify(locale.ERROR_OCCURRED, 'error');
},
success: function(data) {
$('#joinPass').val('');
$('#joinPassConfirm').val('');
if (data.status == 'success'){
$.notify(data.msg, 'info');
$('#joinPassModal').modal('hide');
$('#joinPassLabel').addClass('btn-danger active');
$('#joinPassButton').prop('checked', true);
webrtc.sendToAll('password_protect', {action: 'set'});
}
else{
$.notify(data.msg, 'error');
}
}
});
}
else{
$('#joinPassConfirm').notify(locale.PASSWORDS_DO_NOT_MATCH, 'error');
}
});
// Hide or show password fields // Hide or show password fields
$('#joinPassSet').on('switchChange.bootstrapSwitch', function(event, state) { $('#joinPassSet').on('switchChange.bootstrapSwitch', function(event, state) {
if (state){ if (state){
@ -2103,127 +1801,6 @@ function initVroom(room) {
}); });
}); });
$('#ownerPassButton').change(function(){
var action = ($(this).is(':checked')) ? 'set':'unset';
if (action == 'set'){
$('#ownerPassModal').modal('show');
// Uncheck the button now
// so it's not inconsistent if we just close the modal dialog
// submitting the form will recheck it
$('#ownerPassButton').prop('checked', false);
$('#ownerPassLabel').removeClass('active');
}
else{
$.ajax({
data: {
req: JSON.stringify({
action: 'set_owner_password',
param: {
room: roomName
}
})
},
error: function() {
$.notify(locale.ERROR_OCCURRED, 'error');
},
success: function(data) {
$('#ownerPass').val('');
if (data.status == 'success'){
$.notify(data.msg, 'info');
webrtc.sendToAll('owner_password', {action: 'remove'});
$('#ownerPassLabel').removeClass('btn-danger active');
}
else{
$.notify(data.msg, 'error');
}
}
});
suspendButton($(this));
}
});
$('#ownerPassForm').submit(function(event) {
event.preventDefault();
var pass = $('#ownerPass').val();
var pass2 = $('#ownerPassConfirm').val();
if (pass == pass2 && pass != ''){
$('#setOwnerPassButton').addClass('disabled');
$.ajax({
data: {
req: JSON.stringify({
action: 'set_owner_password',
param: {
password: pass,
room: roomName
}
})
},
error: function() {
$.notify(locale.ERROR_OCCURRED, 'error');
$('#ownerPassLabel').removeClass('btn-danger active');
},
success: function(data) {
$('#ownerPass').val('');
$('#ownerPassConfirm').val('');
if (data.status == 'success'){
$('#ownerPassModal').modal('hide');
$('#ownerPassLabel').addClass('btn-danger active');
$('#ownerPassButton').prop('checked', true);
$.notify(data.msg, 'info');
webrtc.sendToAll('owner_password', {action: 'set'});
}
else{
$.notify(data.msg, 'error');
}
}
});
}
else{
$('#ownerPassConfirm').notify(locale.PASSWORDS_DO_NOT_MATCH, 'error');
}
});
// Add an email to be notified when someone joins
// First, enable the add button when the input looks like an email address
$('#newEmailNotification').on('input', function() {
if (!$('#newEmailNotification').val().match(/^\S+\@\S+\.\S+$/)){
$('#newEmailNotificationButton').addClass('disabled');
}
else{
$('#newEmailNotificationButton').removeClass('disabled');
}
});
// Then send this new address to the server
$('#newEmailNotificationForm').submit(function(event){
event.preventDefault();
$.ajax({
data: {
req: JSON.stringify({
action: 'email_notification',
param: {
set: 'on',
email: $('#newEmailNotification').val(),
room: roomName
}
})
},
error: function() {
$.notify(locale.ERROR_OCCURRED, 'error');
},
success: function(data) {
if (data.status == 'success'){
$.notify(data.msg, 'info');
addNotifiedEmail($('#newEmailNotification').val());
webrtc.sendToAll('notif_change', {});
$('#newEmailNotification').val('');
}
else{
$.notify(data.msg, 'error');
}
}
});
});
// Choose another color. Useful if two peers have the same // Choose another color. Useful if two peers have the same
$('#changeColorButton').click(function(){ $('#changeColorButton').click(function(){
peers.local.color = chooseColor(); peers.local.color = chooseColor();
@ -2348,11 +1925,6 @@ function initVroom(room) {
} }
}); });
// Empty password fields on modal dismiss
$('#joinPassModal,#ownerPassModal').on('hide.bs.modal',function(){
$(this).find(':input').val('');
});
// Remove the active class on the help button // Remove the active class on the help button
$('#helpModal').on('hide.bs.modal',function(){ $('#helpModal').on('hide.bs.modal',function(){
$('#helpButton').removeClass('active'); $('#helpButton').removeClass('active');

@ -89,7 +89,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="col-sm-offset-4 col-sm-8"> <div class="col-sm-offset-4 col-sm-8">
<button type="submit" class="btn btn-primary"> <button type="submit" id="configureButton" class="btn btn-primary">
<%=l 'SUBMIT' %> <%=l 'SUBMIT' %>
</button> </button>
<button class="btn btn-default" data-dismiss="modal"> <button class="btn btn-default" data-dismiss="modal">

@ -120,81 +120,6 @@
</li> </li>
</ul> </ul>
</div> </div>
<div class="btn-group dropdown ownerEl">
<button class="btn btn-default dropdown-toggle help" type="button" id="confMenuButton" data-toggle="dropdown" data-toggle="tooltip" data-placement="bottom" title="<%=l 'CONFIGURE' %>">
<span class="glyphicon glyphicon-wrench">
</span>
<span class="caret">
</span>
</button>
<ul class="dropdown-menu" role="menu" aria-labelledby="confMenuButton" id="confMenu">
<li class="text-center">
<div class="navbar-form">
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-default help" id="lockLabel" data-toggle="tooltip" data-placement="bottom" title="<%=l 'PREVENT_TO_JOIN' %>">
<input type="checkbox" id="lockButton">
<span class="glyphicon glyphicon-ban-circle">
</span>
</label>
<label class="btn btn-default help" id="joinPassLabel" data-toggle="tooltip" data-placement="bottom" title="<%=l 'PASSWORD_PROTECT' %>">
<input type="checkbox" id="joinPassButton">
<span class="glyphicon glyphicon-lock">
</span>
</label>
<label class="btn btn-default help" id="ownerPassLabel" data-toggle="tooltip" data-placement="bottom" title="<%=l 'RESERVE_THIS_ROOM' %>">
<input type="checkbox" id="ownerPassButton">
<span class="glyphicon glyphicon-pushpin">
</span>
</label>
<label class="btn btn-default help" id="askForNameLabel" data-toggle="tooltip" data-placement="bottom" title="<%=l 'FORCE_DISPLAY_NAME' %>">
<input type="checkbox" id="askForNameButton">
<span class="glyphicon glyphicon-leaf">
</span>
</label>
</div>
</div>
</li>
<li class="divider">
</li>
<li class="text-center">
<div class="navbar-form">
<div class="btn-group">
<%
my $wipeTitle = ($etherpad) ? 'WIPE_CHAT_AND_PAD' : 'WIPE_CHAT';
%>
<button id="wipeDataButton" class="btn btn-default help" data-toggle="tooltip" data-placement="bottom" title="<%=l $wipeTitle %>">
<span class="glyphicon glyphicon-fire">
</span>
</button>
<button id="terminateRoomButton" class="btn btn-default help" data-toggle="tooltip" data-placement="bottom" title="<%=l 'TERMINATE_ROOM' %>">
<span class="glyphicon glyphicon-trash">
</span>
</button>
</div>
</div>
</li>
<li class="divider">
</li>
<li>
<p class="text-center">
<%=l 'NOTIFICATION_ON_JOIN' %>
</p>
<ul class="list-inline" id="emailNotificationList">
</ul>
<form class="navbar-form" id="newEmailNotificationForm">
<div class="input-group">
<input type="email" id="newEmailNotification" class="form-control help" placeholder="<%=l 'EMAIL_PLACEHOLDER' %>" data-toggle="tooltip" data-placement="bottom" title="<%=l 'ADD_NOTIFICATION' %>"/>
<span class="input-group-btn">
<button id="newEmailNotificationButton" type="submit" class="btn btn-default help disabled" data-toggle="tooltip" data-placement="bottom" title="<%=l 'ADD_THIS_ADDRESS' %>">
<span class="glyphicon glyphicon-ok">
</span>
</button>
</span>
</div>
</form>
</li>
</ul>
</div>
</div> </div>
<div class="btn-group navbar-form navbar-left"> <div class="btn-group navbar-form navbar-left">
<button class="btn btn-default dropdown-toggle help unauthEl" type="button" id="authMenuButton" data-toggle="dropdown" data-toggle="tooltip" data-placement="bottom" title="<%=l 'AUTHENTICATE' %>"> <button class="btn btn-default dropdown-toggle help unauthEl" type="button" id="authMenuButton" data-toggle="dropdown" data-toggle="tooltip" data-placement="bottom" title="<%=l 'AUTHENTICATE' %>">
@ -781,8 +706,6 @@
</div> </div>
%=include 'invite_modal' %=include 'invite_modal'
%=include 'configure_modal' %=include 'configure_modal'
%=include 'owner_password_modal'
%=include 'join_password_modal'
%=include 'noscript' %=include 'noscript'
<div class="frame"> <div class="frame">
<div id="chatMenu" class="nav-collapse collapse"> <div id="chatMenu" class="nav-collapse collapse">

@ -1,48 +0,0 @@
<div class="modal fade" role="dialog" id="joinPassModal" aria-labelledby="joinPassModal" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
&times;
</button>
<h4 class="modal-title" id="joinPassTitle">
<%=l 'PASSWORD_PROTECT' %>
</h4>
</div>
<div class="modal-body">
<form class="form-horizontal" role="form" id="joinPassForm">
<p>
<%=l 'PROTECT_ROOM_WITH_PASSWORD' %>
</p>
<div class="form-group">
<label for="joinPass" class="col-sm-4 control-label">
<%=l 'PASSWORD' %>
</label>
<div class="col-sm-8">
<input type="password" id="joinPass" class="form-control help" placeholder="<%=l 'PASSWORD' %>" data-toggle="tooltip" data-placement="bottom" title="<%=l 'PASSWORD' %>"/>
</div>
</div>
<div class="form-group">
<label for="joinPassConfirm" class="col-sm-4 control-label">
<%=l 'CONFIRM_PASSWORD' %>
</label>
<div class="col-sm-8">
<input type="password" id="joinPassConfirm" class="form-control help" placeholder="<%=l 'CONFIRM_PASSWORD' %>" data-toggle="tooltip" data-placement="bottom" title="<%=l 'CONFIRM_PASSWORD' %>"/>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-4 col-sm-8">
<button id="setJoinPassButton" type="submit" class="btn btn-default btn-primary help disabled" data-toggle="tooltip" data-placement="bottom" title="<%=l 'SUBMIT' %>">
<%=l 'SUBMIT' %>
</button>
<button class="btn btn-default help" data-dismiss="modal" data-toggle="tooltip" data-placement="bottom" title="<%=l 'CANCEL' %>">
<%=l 'CANCEL' %>
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>

@ -1,61 +0,0 @@
<div class="modal fade" role="dialog" id="ownerPassModal" aria-labelledby="ownerPassModal" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
&times;
</button>
<h4 class="modal-title">
<%=l 'RESERVE_THIS_ROOM' %>
</h4>
</div>
<div class="modal-body">
<form class="form-horizontal" role="form" id="ownerPassForm">
<p>
<%=l 'SET_OWNER_PASS' %>
<ul>
<li>
<%= sprintf($self->l('A_STANDARD_ROOM_EXPIRES_AFTER_d'), int($config->{'rooms.inactivity_timeout'}/60)) %>
</li>
<li>
<%=l 'A_RESERVED_ROOM' %>
<% if ($config->{'rooms.reserved_inactivity_timeout'} > 0){ %>
<%= sprintf($self->l('EXPIRE_AFTER_d'), int($config->{'rooms.reserved_inactivity_timeout'}/(60*24))) %>
<% } else{ %>
<%=l 'WILL_NEVER_EXPIRE' %>
<% } %>
</li>
</ul>
</p>
<div class="form-group">
<label for="ownerPass" class="col-sm-4 control-label">
<%=l 'PASSWORD' %>
</label>
<div class="col-sm-8">
<input type="password" id="ownerPass" class="form-control help" placeholder="<%=l 'PASSWORD' %>" data-toggle="tooltip" data-placement="bottom" title="<%=l 'PASSWORD' %>"/>
</div>
</div>
<div class="form-group">
<label for="ownerPassConfirm" class="col-sm-4 control-label">
<%=l 'CONFIRM_PASSWORD' %>
</label>
<div class="col-sm-8">
<input type="password" id="ownerPassConfirm" class="form-control help" placeholder="<%=l 'CONFIRM_PASSWORD' %>" data-toggle="tooltip" data-placement="bottom" title="<%=l 'CONFIRM_PASSWORD' %>"/>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-4 col-sm-8">
<button id="setOwnerPassButton" type="submit" class="btn btn-primary help disabled" data-toggle="tooltip" data-placement="bottom" title="<%=l 'SUBMIT' %>">
<%=l 'SUBMIT' %>
</button>
<button class="btn btn-default help" data-dismiss="modal" data-toggle="tooltip" data-placement="bottom" title="<%=l 'CANCEL' %>">
<%=l 'CANCEL' %>
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
Loading…
Cancel
Save