- bbb-scheduling has been removed from bbb-web

This commit is contained in:
BigBlueButton 2010-07-19 19:27:24 +00:00
parent 1e6eff084b
commit cad05a9ce1
42 changed files with 1 additions and 2701 deletions

34
bigbluebutton-web/grails-app/conf/DataSource.groovy Normal file → Executable file
View File

@ -17,37 +17,3 @@
*
* $Id: $
*/
dataSource {
pooled = false
driverClassName = "com.mysql.jdbc.Driver"
username = "bbb@localhost"
password = "secret"
}
//hibernate {
// cache.use_second_level_cache=true
// cache.use_query_cache=true
// cache.provider_class='org.hibernate.cache.EhCacheProvider'
//}
// environment specific settings
environments {
development {
dataSource {
pooled = true
dbCreate = "update" // one of 'create', 'create-drop','update'
}
}
test {
dataSource {
dbCreate = 'create'
url = "jdbc:mysql://localhost/bigbluebutton_test"
}
}
production {
dataSource {
pooled = true
dbCreate = "update" // one of 'create', 'create-drop','update'
}
}
}

View File

@ -28,38 +28,14 @@ class SecurityFilters {
switch (controllerName) {
case 'api':
case 'portal':
case 'join':
case 'adhoc':
case 'presentation':
return true
break
case 'publicScheduledSession':
return true
}
// This just means that the user must be authenticated. He does
// not need any particular role or permission.
accessControl { true }
}
}
// Creating, modifying, or deleting a user requires the "Administrator"
// role.
userEditing(controller: "user", action: "(create|edit|save|update|delete|list)") {
before = {
accessControl {
role("Administrator")
}
}
}
// Showing a user requires the "Administrator" *or* the "User" roles.
userShow(controller: "user", action: "show") {
before = {
accessControl {
role("Administrator") || role("User")
}
}
}
}
}

View File

@ -1,313 +0,0 @@
/* BigBlueButton - http://www.bigbluebutton.org
*
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.controllers
import java.text.MessageFormat;
import org.bigbluebutton.web.domain.ScheduledSession
import org.bigbluebutton.web.domain.Conference
import grails.converters.*
import org.codehaus.groovy.grails.commons.*
import org.bigbluebutton.web.services.DynamicConferenceService;
import org.bigbluebutton.web.services.SchedulingService
import org.bigbluebutton.api.domain.DynamicConference;
class PublicScheduledSessionController {
DynamicConferenceService dynamicConferenceService;
def schedulingService
def DIAL_NUM = /%%DIALNUM%%/
def CONF_NUM = /%%CONFNUM%%/
def CONF_NAME = /%%CONFNAME%%/
def keywordList = [DIAL_NUM, CONF_NUM, CONF_NAME];
def beforeInterceptor = {
if (schedulingService.schedulingServiceEnabled) {
return true
}
response.sendError 403
return false
}
def index = {
redirect(action:joinIn)
}
def show = {
def tokenId = session['conference']
def sessionId = session['room']
if (!tokenId || !sessionId) {
redirect(action:joinIn,id:tokenId)
}
def scheduledSessionInstance = ScheduledSession.findByTokenId( tokenId )
if(!scheduledSessionInstance) {
flash.message = "Could not find conference session."
redirect(action:joinIn)
}
else {
def config = ConfigurationHolder.config
def hostURL = config.bigbluebutton.web.serverURL
println "serverURL $hostURL"
def now = new Date().time
def inSession = ((now > scheduledSessionInstance.startDateTime.time) && (now < scheduledSessionInstance.endDateTime.time))
return [ scheduledSessionInstance : scheduledSessionInstance, hostUrl:hostURL, inSession:inSession ]
}
}
def joinIn = {
session.invalidate()
def sessionInfo
if (params.id) {
def conference = Conference.findByConferenceNumber(params.id)
if (conference) {
def c = ScheduledSession.createCriteria()
def now = new Date()
def results = c {
eq('voiceConferenceBridge', conference.conferenceNumber.toString())
and {
le('startDateTime', now)
and {
gt('endDateTime', now)
}
}
maxResults(1)
}
if (results) {
def confSession = results[0];
sessionInfo = [name: confSession.name, description: confSession.description]
}
}
}
return [ fullname: params.fullname, id:(params.id), password: params.password, info:sessionInfo ]
}
def signIn = {
if (params.fullname.trim() == "") {
log.debug "USer entered a blank name"
flash.message = "Please enter your name."
render(view:"joinIn", model: [id:params.id, fullname:params.fullname])
return
} else {
log.debug "Fullname is not null ${params.fullname}"
}
log.debug "Attempting to sign in to ${params.id}"
def conference = Conference.findByConferenceNumber(params.id)
def signedIn = false
if (conference) {
def c = ScheduledSession.createCriteria()
def now = new Date()
def results = c {
eq('voiceConferenceBridge', conference.conferenceNumber.toString())
and {
le('startDateTime', now)
and {
gt('endDateTime', now)
}
}
maxResults(1)
}
if (results) {
def confSession = results[0];
def role = ''
if (confSession) {
log.debug "Found conference session ${confSession.name}"
switch (params.password) {
case confSession.hostPassword:
log.debug "Logged in as host"
// Let us set role to MODERATOR for now as we don't support HOST yet
role = "MODERATOR"
signedIn = true
break
case confSession.moderatorPassword:
log.debug "Logged in as as moderator"
role = "MODERATOR"
signedIn = true
break
case confSession.attendeePassword:
log.debug "Logged in as viewer"
role = "VIEWER"
signedIn = true
break
}
if (signedIn) {
log.debug "Login successful...setting in session information"
def welcomeMessage = dynamicConferenceService.defaultWelcomeMessage
def dialNumber = dynamicConferenceService.defaultDialAccessNumber
if (welcomeMessage != null || welcomeMessage != "") {
log.debug "Substituting keywords"
keywordList.each{ keyword ->
switch(keyword){
case DIAL_NUM:
if ((dialNumber != null) || (dialNumber != "")) {
welcomeMessage = welcomeMessage.replaceAll(DIAL_NUM, dialNumber)
}
break
case CONF_NUM:
welcomeMessage = welcomeMessage.replaceAll(CONF_NUM, confSession.voiceConferenceBridge)
break
case CONF_NAME:
welcomeMessage = welcomeMessage.replaceAll(CONF_NAME, confSession.getName())
break
}
}
}
session["fullname"] = params.fullname
session["role"] = role
session["conference"] = confSession.tokenId
session["room"] = confSession.sessionId
session["voicebridge"] = confSession.voiceConferenceBridge
session["conferencename"] = confSession.getName()
session['welcome'] = welcomeMessage
def long _10_MINUTES = 10*60*1000
def startTime = confSession.startDateTime.time - _10_MINUTES
def endTime = confSession.endDateTime.time + _10_MINUTES
if ((startTime <= now.time) && (now.time <= endTime)) {
session["mode"] = "LIVE"
session["record"] = false
if (confSession.record) {
session["record"] = true
}
log.debug "Joining LIVE and recording is ${confSession.record}"
} else {
session["mode"] = "PLAYBACK"
log.debug "Joining PLAYBACK"
}
log.debug "Displaying session information"
//redirect(action:show)
def config = ConfigurationHolder.config
def hostUrl = config.bigbluebutton.web.serverURL
redirect(url:"${hostUrl}/client/BigBlueButton.html")
}
}
}
}
if (!signedIn) {
flash.message = "Could not log you into the conference. Please check if your conference number or schedule is correct."
render(view:"joinIn",model: [id:params.id, fullname:params.fullname])
}
}
def enter = {
def fname = session["fullname"]
def rl = session["role"]
def cnf = session["conference"]
def rm = session["room"]
def vb = session["voicebridge"]
def wbv = session["webvoiceconf"]
def rec = session["record"]
def md = session["mode"]
def confName = session["conferencename"]
def welcomeMsg = session['welcome']
def meetID = session["meetingID"]
def externUID = session["externUserID"]
if (!rm) {
response.addHeader("Cache-Control", "no-cache")
withFormat {
xml {
render(contentType:"text/xml") {
'join'() {
returncode("FAILED")
message("Could not find conference ${params.conference}.")
}
}
}
}
} else {
response.addHeader("Cache-Control", "no-cache")
withFormat {
xml {
render(contentType:"text/xml") {
'join'() {
returncode("SUCCESS")
fullname("$fname")
confname("$confName")
meetingID("$meetID")
externUserID("$externUID")
role("$rl")
conference("$cnf")
room("$rm")
voicebridge("${vb}")
webvoiceconf("${wbv}")
mode("$md")
record("$rec")
welcome("$welcomeMsg")
}
}
}
}
}
}
def signOut = {
def config = ConfigurationHolder.config
def hostURL = config.bigbluebutton.web.logoutURL
log.debug("LogoutURL=$hostURL")
// For backward compatibility. We renamed "loggedOutUrl" to
// "logoutURL" in 0.64 to be consistent with the API. Remove this
// in later iterations (ralam mar 26, 2010)
//if ((hostURL == null) || (hostURL == "")) {
if (hostURL.isEmpty()) {
log.debug("No logoutURL property set. Checking for old loggedOutUrl.")
hostURL = config.bigbluebutton.web.loggedOutUrl
if (!hostURL.isEmpty())
log.debug("Old loggedOutUrl property set to $hostURL")
}
def meetingToken = session["conference"]
DynamicConference conf = dynamicConferenceService.getConferenceByToken(meetingToken)
if (conf != null) {
if ((conf.logoutUrl != null) && (conf.logoutUrl != "")) {
hostURL = conf.logoutUrl
log.debug("logoutURL has been set from API. Redirecting to server url $hostURL.")
}
}
if (hostURL.isEmpty()) {
hostURL = config.bigbluebutton.web.serverURL
log.debug("No logout url. Redirecting to server url $hostURL.")
}
// Log the user out of the application.
session.invalidate()
println "serverURL $hostURL"
redirect(url: hostURL)
}
}

View File

@ -1,44 +0,0 @@
/*
* BigBlueButton - http://www.bigbluebutton.org
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.domain
class Account implements Comparable {
Date created
Date lastUpdated
String createdBy
String updatedBy
String type
String name
String description
static belongsTo = [owner:User]
static hasMany = [users:User, conferences:Conference]
static constraints = {
name(maxLength:50, blank:false)
type(inList:['BASIC', 'ESSENTIAL', 'PREMIUM'])
}
String toString() {"${this.name}"}
int compareTo(obj) {
obj.id.compareTo(id)
}
}

View File

@ -1,48 +0,0 @@
/*
* BigBlueButton - http://www.bigbluebutton.org
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.domain
class Conference implements Comparable {
Date dateCreated
Date lastUpdated
String createdBy
String updatedBy
String name
Integer conferenceNumber
User user
SortedSet sessions
static hasMany = [sessions:ScheduledSession]
static constraints = {
name(maxLength:50, blank:false)
conferenceNumber(unique:true, size:5..10)
}
String toString() {"${this.id}:${this.name} ${this.user}"}
int compareTo(obj) {
obj.id.compareTo(id)
}
}

View File

@ -1,31 +0,0 @@
/*
* BigBlueButton - http://www.bigbluebutton.org
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.domain
class Permission {
String type
String possibleActions
static constraints = {
type(nullable: false, blank: false, unique: true)
possibleActions(nullable:false, blank: false)
}
}

View File

@ -1,30 +0,0 @@
/*
* BigBlueButton - http://www.bigbluebutton.org
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.domain
class Role {
String name
static constraints = {
name(nullable: false, blank: false, unique: true)
}
}

View File

@ -1,33 +0,0 @@
/*
* BigBlueButton - http://www.bigbluebutton.org
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.domain
class RolePermissionRel {
Role role
Permission permission
String target
String actions
static constraints = {
actions(nullable: false, blank: false)
}
}

View File

@ -1,71 +0,0 @@
/*
* BigBlueButton - http://www.bigbluebutton.org
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.domain
class ScheduledSession implements Comparable {
Date dateCreated
Date lastUpdated
String createdBy
String modifiedBy
String name
String description
/* The id for this session. This can be used as the conference room in Red5, for example. */
String sessionId
/* An id that we can use in the URL to join this conference session */
String tokenId
Integer numberOfAttendees = new Integer(3)
/* Is there a time limit for this session? */
Boolean timeLimited = true
Date startDateTime
/* If there is a time limit, until when? */
Date endDateTime
/* Is this session going to be recorded? */
Boolean record = false
/* Do we require a password to join this session? */
Boolean passwordProtect = true
String hostPassword = 'change-me-please'
String moderatorPassword = 'change-me-please'
String attendeePassword = 'change-me-please'
String voiceConferenceBridge
Date getCurrentTime() { new Date() }
static transients = ['currentTime']
public ScheduledSession() {
startDateTime = new Date()
// Set the end to 1 hour after start
endDateTime = new Date(startDateTime.time + 60*60*1000)
}
Conference conference
static constraints = {
name(maxLength:50, blank:false)
tokenId(blank:false)
sessionId(blank:false)
}
String toString() {"${this.id}:${this.name} - ${this.sessionId} ${this.tokenId}"}
int compareTo(obj) {
obj.id.compareTo(id)
}
}

View File

@ -1,37 +0,0 @@
/*
* BigBlueButton - http://www.bigbluebutton.org
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.domain
class User {
String username
String passwordHash
String fullName
Date dateCreated
Date lastUpdated
static constraints = {
username(nullable: false, blank:false,email:true,unique:true)
fullName(blank:false)
}
String toString() {"${this.id}:${this.username},${this.fullName}"}
}

View File

@ -1,34 +0,0 @@
/*
* BigBlueButton - http://www.bigbluebutton.org
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.domain
class UserPermissionRel {
User user
Permission permission
String target
String actions
static constraints = {
target(nullable: true, blank: false)
actions(nullable: false, blank: false)
}
}

View File

@ -1,27 +0,0 @@
/*
* BigBlueButton - http://www.bigbluebutton.org
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.domain
class UserRoleRel {
User user
Role role
}

View File

@ -1,29 +0,0 @@
/*
* BigBlueButton - http://www.bigbluebutton.org
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* $Id: $
*/
package org.bigbluebutton.web.domain
class VoiceConferenceBridge {
Date dateCreated
Date lastUpdated
String createdBy
String modifiedBy
}

View File

@ -1,114 +0,0 @@
/* BigBlueButton - http://www.bigbluebutton.org
*
*
* Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
*
* BigBlueButton is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
*
* @version $Id: $
*/
package org.bigbluebutton.web.services
import org.bigbluebutton.presentation.service.AdhocConference
import java.util.concurrent.ConcurrentHashMap
public class AdhocConferenceService{
boolean transactional = false
def serviceEnabled = false
private final Map<String, AdhocConference> conferences
public AdhocConferenceService() {
conferences = new ConcurrentHashMap<String, AdhocConference>()
}
public void createConference(String voiceBridge) {
AdhocConference conference = new AdhocConference(voiceBridge)
if (!conferences.containsKey(conference.voiceBridge))
conferences.put(conference.voiceBridge, conference)
}
public void createConference(AdhocConference conference) {
if (!conferences.containsKey(conference.voiceBridge))
conferences.put(conference.voiceBridge, conference)
}
public boolean conferenceExistWithVoiceBridge(String voiceBridge) {
return conferences.containsKey(voiceBridge)
}
/*
* Returns the AdhocConference if present,
* or null if absent.
*/
public AdhocConference getConferenceWithVoiceBridge(String voiceBridge) {
return conferences.get(voiceBridge)
}
public boolean conferenceExistWithModeratorToken(String token) {
for (Iterator iter = conferences.values().iterator(); iter.hasNext();) {
AdhocConference conf = (AdhocConference) iter.next()
println conf.moderatorToken
if (conf.moderatorToken == token) {
return true
}
}
return false
}
/*
* Returns the AdhocConference if present,
* or null if absent.
*/
public AdhocConference getConferenceWithModeratorToken(String token) {
for (Iterator iter = conferences.values().iterator(); iter.hasNext();) {
AdhocConference conf = (AdhocConference) iter.next()
println conf.moderatorToken
if (conf.moderatorToken == token) {
return conf
}
}
return null
}
public boolean conferenceExistWithViewerToken(String token) {
for (Iterator iter = conferences.values().iterator(); iter.hasNext();) {
AdhocConference conf = (AdhocConference) iter.next()
println conf.viewerToken
if (conf.viewerToken == token) {
return true
}
}
return false
}
/*
* Returns the AdhocConference if present,
* or null if absent.
*/
public AdhocConference getConferenceWithViewerToken(String token) {
for (Iterator iter = conferences.values().iterator(); iter.hasNext();) {
AdhocConference conf = (AdhocConference) iter.next()
println conf.viewerToken
if (conf.viewerToken == token) {
return conf
}
}
return null
}
}

View File

@ -1,12 +0,0 @@
package org.bigbluebutton.web.services;
/*
* This class will enable/disable the scheduling of conference. We need
* this to support the old scheduling mechanism with ability to disable it
* for those who will just use the API. Eventually, all scheduling should
* be done using the API.
*/
public class SchedulingService {
static transactional = false
def schedulingServiceEnabled = false
}

View File

@ -1,26 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="layout" content="main" />
<title>Login</title>
</head>
<body>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<form action="/bigbluebutton/api/conference.html" method="post">
<table>
<tbody>
<tr>
<td>Conference Number:</td>
<td><input type="text" name="voiceBridge" value="85115" /></td>
</tr>
<tr>
<td />
<td><input type="submit" value="Create" /></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>

View File

@ -1,30 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="layout" content="main" />
<title>Login</title>
</head>
<body>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<form action="/bigbluebutton/api/conference/session.xml" method="post">
<table>
<tbody>
<tr>
<td>Fullname:</td>
<td><input type="text" name="fullname" value="Richard" /></td>
</tr>
<tr>
<td>Auth Token:</td>
<td><input type="text" name="authToken" value="attToken" /></td>
</tr>
<tr>
<td />
<td><input type="submit" value="Join" /></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>

View File

@ -1,46 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="layout" content="main" />
<title>Login</title>
</head>
<body>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<table>
<tbody>
<tr>
<td>Voice Bridge Number:</td>
<td>${voicebridge}</td>
</tr>
<tr>
<td>Moderator Token</td>
<td>${modToken}</td>
</tr>
<tr>
<td>Viewer Token</td>
<td>${viewerToken}</td>
</tr>
</tbody>
</table>
<form action="/bigbluebutton/api/conference/session.html" method="post">
<table>
<tbody>
<tr>
<td>Enter your name Fullname:</td>
<td><input type="text" name="fullname" value="" /></td>
</tr>
<tr>
<td>Enter Token:</td>
<td><input type="text" name="authToken" value="" /></td>
</tr>
<tr>
<td />
<td><input type="submit" value="Join" /></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>

View File

@ -1,101 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Create Attendees</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">Attendees List</g:link></span>
</div>
<div class="body">
<h1>Create Attendees</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${attendees}">
<div class="errors">
<g:renderErrors bean="${attendees}" as="list" />
</div>
</g:hasErrors>
<g:form action="save" method="post" >
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="callerName">Caller Name:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'callerName','errors')}">
<input type="text" id="callerName" name="callerName" value="${fieldValue(bean:attendees,field:'callerName')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="callerNumber">Caller Number:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'callerNumber','errors')}">
<input type="text" id="callerNumber" name="callerNumber" value="${fieldValue(bean:attendees,field:'callerNumber')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="channelId">Channel Id:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'channelId','errors')}">
<input type="text" id="channelId" name="channelId" value="${fieldValue(bean:attendees,field:'channelId')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="conferenceNumber">Conference Number:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'conferenceNumber','errors')}">
<input type="text" id="conferenceNumber" name="conferenceNumber" value="${fieldValue(bean:attendees,field:'conferenceNumber')}" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="dateJoined">Date Joined:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'dateJoined','errors')}">
<g:datePicker name="dateJoined" value="${attendees?.dateJoined}" ></g:datePicker>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="dateLeft">Date Left:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'dateLeft','errors')}">
<g:datePicker name="dateLeft" value="${attendees?.dateLeft}" ></g:datePicker>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="userNumber">User Number:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'userNumber','errors')}">
<input type="text" id="userNumber" name="userNumber" value="${fieldValue(bean:attendees,field:'userNumber')}" />
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><input class="save" type="submit" value="Create" /></span>
</div>
</g:form>
</div>
</body>
</html>

View File

@ -1,104 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Edit Attendees</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">Attendees List</g:link></span>
<span class="menuButton"><g:link class="create" action="create">New Attendees</g:link></span>
</div>
<div class="body">
<h1>Edit Attendees</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${attendees}">
<div class="errors">
<g:renderErrors bean="${attendees}" as="list" />
</div>
</g:hasErrors>
<g:form method="post" >
<input type="hidden" name="id" value="${attendees?.id}" />
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="callerName">Caller Name:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'callerName','errors')}">
<input type="text" id="callerName" name="callerName" value="${fieldValue(bean:attendees,field:'callerName')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="callerNumber">Caller Number:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'callerNumber','errors')}">
<input type="text" id="callerNumber" name="callerNumber" value="${fieldValue(bean:attendees,field:'callerNumber')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="channelId">Channel Id:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'channelId','errors')}">
<input type="text" id="channelId" name="channelId" value="${fieldValue(bean:attendees,field:'channelId')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="conferenceNumber">Conference Number:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'conferenceNumber','errors')}">
<input type="text" id="conferenceNumber" name="conferenceNumber" value="${fieldValue(bean:attendees,field:'conferenceNumber')}" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="dateJoined">Date Joined:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'dateJoined','errors')}">
<g:datePicker name="dateJoined" value="${attendees?.dateJoined}" ></g:datePicker>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="dateLeft">Date Left:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'dateLeft','errors')}">
<g:datePicker name="dateLeft" value="${attendees?.dateLeft}" ></g:datePicker>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="userNumber">User Number:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:attendees,field:'userNumber','errors')}">
<input type="text" id="userNumber" name="userNumber" value="${fieldValue(bean:attendees,field:'userNumber')}" />
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><g:actionSubmit class="save" value="Update" /></span>
<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
</div>
</g:form>
</div>
</body>
</html>

View File

@ -1,64 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Attendees List</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="create" action="create">New Attendees</g:link></span>
</div>
<div class="body">
<h1>Attendees List</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div class="list">
<table>
<thead>
<tr>
<g:sortableColumn property="id" title="Id" />
<g:sortableColumn property="callerName" title="Caller Name" />
<g:sortableColumn property="callerNumber" title="Caller Number" />
<g:sortableColumn property="channelId" title="Channel Id" />
<g:sortableColumn property="conferenceNumber" title="Conference Number" />
<g:sortableColumn property="dateJoined" title="Date Joined" />
</tr>
</thead>
<tbody>
<g:each in="${attendeesList}" status="i" var="attendees">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td><g:link action="show" id="${attendees.id}">${attendees.id?.encodeAsHTML()}</g:link></td>
<td>${attendees.callerName?.encodeAsHTML()}</td>
<td>${attendees.callerNumber?.encodeAsHTML()}</td>
<td>${attendees.channelId?.encodeAsHTML()}</td>
<td>${attendees.conferenceNumber?.encodeAsHTML()}</td>
<td>${attendees.dateJoined?.encodeAsHTML()}</td>
</tr>
</g:each>
</tbody>
</table>
</div>
<div class="paginateButtons">
<g:paginate total="${Attendees.count()}" />
</div>
</div>
</body>
</html>

View File

@ -1,93 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Show Attendees</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">Attendees List</g:link></span>
<span class="menuButton"><g:link class="create" action="create">New Attendees</g:link></span>
</div>
<div class="body">
<h1>Show Attendees</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">Id:</td>
<td valign="top" class="value">${attendees.id}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Caller Name:</td>
<td valign="top" class="value">${attendees.callerName}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Caller Number:</td>
<td valign="top" class="value">${attendees.callerNumber}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Channel Id:</td>
<td valign="top" class="value">${attendees.channelId}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Conference Number:</td>
<td valign="top" class="value">${attendees.conferenceNumber}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Date Joined:</td>
<td valign="top" class="value">${attendees.dateJoined}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Date Left:</td>
<td valign="top" class="value">${attendees.dateLeft}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">User Number:</td>
<td valign="top" class="value">${attendees.userNumber}</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<g:form>
<input type="hidden" name="id" value="${attendees?.id}" />
<span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
</g:form>
</div>
</div>
</body>
</html>

View File

@ -1,39 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="layout" content="main" />
<title>Login</title>
</head>
<body>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:form action="signIn">
<input type="hidden" name="targetUri" value="${targetUri}" />
<table>
<tbody>
<tr>
<td>&nbsp;</td>
<td>To login, username: admin@test.com password: admin</td>
</tr>
<tr>
<td>Username:</td>
<td><input type="text" name="username" value="${username}" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" value="" /></td>
</tr>
<tr>
<td>Remember me?:</td>
<td><g:checkBox name="rememberMe" value="${rememberMe}" /></td>
</tr>
<tr>
<td />
<td><input type="submit" value="Sign in" /></td>
</tr>
</tbody>
</table>
</g:form>
</body>
</html>

View File

@ -1,26 +0,0 @@
<g:if test="${session.email}">
<div class="body">
<br/>
<hr />
<br />
<table bgcolor="EEEEEE" border="0"><tr><td>
<p class="doublespace"><b>Creating a conference call</b></p>
<ol class="decimal">
<li> Click on <b>'New Conference'</b></li>
<li> Create the details of the conference </li>
<li> Click on <b>'Create'</b> </li>
<li> Copy and paste the <b>'Invitation email'</b> to a new mail message in your personal mailbox. </li>
<li> Invite people to join your conference call (up to 20 people) </li>
</ol>
<br/><br/>
<b>For Outlook users: (optional)</b>
<p class="doublespace">For great results using your Outlook Calendar, copy and paste the <b>'Invitation Text'</b> to your calendar and invite people to join the conference.</p>
<p class="doublespace">Your invitees will receive the invitation, it will be added to their calendar and they will be able to RSVP and receive a conference reminder.</p>
<br/>
<p class="doublespace"><b>***Please remember that not all people have access to Outlook.</b></p>
</td></tr></table>
</div>
</g:if>

View File

@ -1,53 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Create Conference</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">Conference List</g:link></span>
</div>
<div class="body">
<h1>Create Conference</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${conferenceInstance}">
<div class="errors">
<g:renderErrors bean="${conferenceInstance}" as="list" />
</div>
</g:hasErrors>
<g:form action="save" method="post" >
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="name">Conference Name:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:conferenceInstance,field:'name','errors')}">
<input type="text" id="name" name="name" value="${fieldValue(bean:conferenceInstance,field:'name')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="name">Conference Number:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:conferenceInstance,field:'conferenceNumber','errors')}">
<input type="text" id="conferenceNumber" name="conferenceNumber" value="${fieldValue(bean:conferenceInstance,field:'conferenceNumber')}"/>
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><input class="save" type="submit" value="Create" /></span>
</div>
</g:form>
</div>
</body>
</html>

View File

@ -1,85 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Edit Conference</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">Your Conferences</g:link></span>
<span class="menuButton"><g:link class="create" action="create">New Conference</g:link></span>
</div>
<div class="body">
<h1>Edit Conference</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${conference}">
<div class="errors">
<g:renderErrors bean="${conference}" as="list" />
</div>
</g:hasErrors>
<g:form method="post" >
<input type="hidden" name="id" value="${conference?.id}" />
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="conferenceName">Conference Name:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:conference,field:'name','errors')}">
<input type="text" id="name" name="name" value="${fieldValue(bean:conference,field:'name')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="conferenceName">Conference Number:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:conference,field:'conferenceNumber','errors')}">
<input type="text" id="conferenceNumber" name="conferenceNumber" value="${fieldValue(bean:conference,field:'conferenceNumber')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="dateCreated">Date Created:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:conference,field:'dateCreated','errors')}">
${conference?.dateCreated}
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="lastUpdated">Last Updated:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:conference,field:'lastUpdated','errors')}">
${conference?.lastUpdated}
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="createdBy">Created By:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:conference,field:'createdBy','errors')}">
${conference.createdBy}
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><g:actionSubmit class="save" value="Update" /></span>
<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
</div>
</g:form>
</div>
</body>
</html>

View File

@ -1,41 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Conference List</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="create" action="create">New Conference</g:link></span>
</div>
<div class="body">
<h1>Your Conferences</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div class="list">
<table>
<thead>
<tr>
<g:sortableColumn property="name" title="Conference Name" />
<g:sortableColumn property="dateCreated" title="Date Created" />
<g:sortableColumn property="lastUpdated" title="Last Updated" />
</tr>
</thead>
<tbody>
<g:each in="${conferenceList}" status="i" var="conference">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td><g:link action="show" id="${conference.id}">${fieldValue(bean:conference, field:'name')}</g:link></td>
<td>${fieldValue(bean:conference, field:'dateCreated')}</td>
<td>${fieldValue(bean:conference, field:'lastUpdated')}</td>
</tr>
</g:each>
</tbody>
</table>
</div>
</div>
</body>
</html>

View File

@ -1,99 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Show Conference</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">Your Conferences</g:link></span>
<span class="menuButton"><g:link class="create" action="create">New Conference</g:link></span>
<span class="menuButton"><g:link controller="schedule" class="create" id="${conference?.id}" action="create">Schedule Session</g:link></span>
</div>
<div class="body">
<h1>Show Conference</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">Created By:</td>
<td valign="top" class="value">${fieldValue(bean:conference, field:'createdBy')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Conference Name:</td>
<td valign="top" class="value">${fieldValue(bean:conference, field:'name')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Conference Number:</td>
<td valign="top" class="value">${fieldValue(bean:conference, field:'conferenceNumber')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Date Created:</td>
<td valign="top" class="value">${fieldValue(bean:conference, field:'dateCreated')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Last Updated:</td>
<td valign="top" class="value">${fieldValue(bean:conference, field:'lastUpdated')}</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<g:form>
<input type="hidden" name="id" value="${conference?.id}" />
<span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
</g:form>
</div>
</div>
<div class="body">
<h1>Scheduled Sessions</h1>
<div class="list">
<table>
<thead>
<tr>
<g:sortableColumn property="name" title="Name" />
<g:sortableColumn property="tokenId" title="Link" />
</tr>
</thead>
<tbody>
<g:each in="${sessions}" status="i" var="schedSession">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td>${schedSession.name?.encodeAsHTML()}</td>
<g:if test="${schedSession.expired}">
<td><g:link controller="schedule" action="show" id="${schedSession.id}">
display</g:link>
</td>
</g:if>
</tr>
</g:each>
</tbody>
</table>
</div>
</div>
</body>
</html>

View File

@ -1,34 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="layout" content="main" />
<title>Login</title>
</head>
<body>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:form action="signIn">
<table>
<tbody>
<tr>
<td>Fullname:</td>
<td><input type="text" name="fullname" value="${fullname}" /></td>
</tr>
<tr>
<td>Conference:</td>
<td><input type="conference" name="conference" value="${conference}" /></td>
</tr>
<tr>
<td>Password:</td>
<td><g:passwordField name="password" value="" /></td>
</tr>
<tr>
<td />
<td><input type="submit" value="Sign in" /></td>
</tr>
</tbody>
</table>
</g:form>
</body>
</html>

View File

@ -1,57 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="layout" content="main" />
<title>Login</title>
</head>
<body>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:if test="${info}">
<table>
<tbody>
<tr>
<td>Conference Name:</td>
<td>${info.name}</td>
</tr>
<tr>
<td>Conference Number:</td>
<td>${id}</td>
</tr>
<tr>
<td>Description:</td>
<td>${info.description}</td>
</tr>
</tbody>
</table>
</g:if>
<g:form controller="conference-session" action="signIn">
<g:if test="${id}">
<input type="hidden" name="id" value="${id}" />
</g:if>
<table>
<tbody>
<tr>
<td>Fullname:</td>
<td><input type="text" name="fullname" value="${fullname}" /></td>
</tr>
<g:if test="${!id}">
<tr>
<td>Conference Number:</td>
<td><input type="text" name="id" value="${id}" /></td>
</tr>
</g:if>
<tr>
<td>Password:</td>
<td><g:passwordField name="password" value="" /></td>
</tr>
<tr>
<td />
<td><input type="submit" value="Sign in" /></td>
</tr>
</tbody>
</table>
</g:form>
</body>
</html>

View File

@ -1,96 +0,0 @@
<%@ page import="org.bigbluebutton.web.domain.ScheduledSession" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Show ScheduledSession</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
</div>
<div class="body">
<h1>Information on ${scheduledSessionInstance.name}</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">Session:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'name')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Description:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'description')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Voice Conference Bridge:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'voiceConferenceBridge')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Link:</td>
<td valign="top" class="value">
<g:if test="${inSession}">
<a href="${hostUrl}/client/BigBlueButton.html">CLICK HERE TO JOIN</a>
</g:if>
<g:else>
<a href="${hostUrl}/client/BigBlueButton.html">CLICK HERE TO PLAY</a>
</g:else>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Start Date Time:</td>
<td valign="top" class="value">
<g:formatDate format="EEE, d MMM yyyy 'at' hh:mm aaa" date="${scheduledSessionInstance.startDateTime}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">End Date Time:</td>
<td valign="top" class="value">
<g:formatDate format="EEE, d MMM yyyy 'at' hh:mm aaa" date="${scheduledSessionInstance.endDateTime}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Conference:</td>
<td valign="top" class="value">
${scheduledSessionInstance?.conference?.name.encodeAsHTML()}</td>
</tr>
<tr class="prop">
<td valign="top" class="name"><b>NOTE:</b></td>
<td valign="top" class="value">
If the client does not load after clicking JOIN, refresh button your browser.</td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>

View File

@ -1,14 +0,0 @@
<%@ page import="org.bigbluebutton.web.domain.ScheduledSession" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Show ScheduledSession</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
</div>
</body>
</html>

View File

@ -1,139 +0,0 @@
<%@ page import="org.bigbluebutton.web.domain.ScheduledSession" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Create ScheduledSession</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">ScheduledSession List</g:link></span>
</div>
<div class="body">
<h1>Create ScheduledSession</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${scheduledSessionInstance}">
<div class="errors">
<g:renderErrors bean="${scheduledSessionInstance}" as="list" />
</div>
</g:hasErrors>
<g:form action="save" method="post" >
<input type="hidden" name="conferenceId" value="${conferenceId}" />
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="name">Name:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'name','errors')}">
<input type="text" id="name" name="name" value="${fieldValue(bean:scheduledSessionInstance,field:'name')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="name">Description:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'description','errors')}">
<g:textArea name="description" value="${fieldValue(bean:scheduledSessionInstance,field:'description')}" rows="5" cols="40"/>
</td>
</tr>
<!-- Comment for now (ralam aug 11, 2009)
<tr class="prop">
<td valign="top" class="name">
<label for="numberOfAttendees">Number Of Attendees:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'numberOfAttendees','errors')}">
<input type="text" id="numberOfAttendees" name="numberOfAttendees" value="${fieldValue(bean:scheduledSessionInstance,field:'numberOfAttendees')}" />
</td>
</tr>
-->
<!-- Comment for now (ralam jun 3, 2009)
<tr class="prop">
<td valign="top" class="name">
<label for="record">Record:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'record','errors')}">
<g:checkBox name="record" value="${scheduledSessionInstance?.record}" ></g:checkBox>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="timeLimited">Time Limited:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'timeLimited','errors')}">
<g:checkBox name="timeLimited" value="${scheduledSessionInstance?.timeLimited}" ></g:checkBox>
</td>
</tr>
-->
<tr class="prop">
<td valign="top" class="name">
<label for="startDateTime">Start Date Time:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'startDateTime','errors')}">
<g:datePicker name="startDateTime" value="${scheduledSessionInstance?.startDateTime}" ></g:datePicker>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="endDateTime">End Date Time:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'endDateTime','errors')}">
<g:datePicker name="endDateTime" value="${scheduledSessionInstance?.endDateTime}" ></g:datePicker>
</td>
</tr>
<!-- Comment for now (ralam jun 3, 2009)
<tr class="prop">
<td valign="top" class="name">
<label for="passwordProtect">Password Protect:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'passwordProtect','errors')}">
<g:checkBox name="passwordProtect" value="${scheduledSessionInstance?.passwordProtect}" ></g:checkBox>
</td>
</tr>
-->
<tr class="prop">
<td valign="top" class="name">
<label for="attendeePassword">Attendee Password:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'attendeePassword','errors')}">
<input type="text" id="attendeePassword" name="attendeePassword" value="${fieldValue(bean:scheduledSessionInstance,field:'attendeePassword')}"/>
</td>
</tr>
<!-- Comment for now (ralam jun 3, 2009)
<tr class="prop">
<td valign="top" class="name">
<label for="hostPassword">Host Password:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'hostPassword','errors')}">
<input type="text" id="hostPassword" name="hostPassword" value="${fieldValue(bean:scheduledSessionInstance,field:'hostPassword')}"/>
</td>
</tr>
-->
<tr class="prop">
<td valign="top" class="name">
<label for="moderatorPassword">Moderator Password:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'moderatorPassword','errors')}">
<input type="text" id="moderatorPassword" name="moderatorPassword" value="${fieldValue(bean:scheduledSessionInstance,field:'moderatorPassword')}"/>
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><input class="save" type="submit" value="Create" /></span>
</div>
</g:form>
</div>
</body>
</html>

View File

@ -1,177 +0,0 @@
<%@ page import="org.bigbluebutton.web.domain.ScheduledSession" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Edit ScheduledSession</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">ScheduledSession List</g:link></span>
</div>
<div class="body">
<h1>Edit ScheduledSession</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${scheduledSessionInstance}">
<div class="errors">
<g:renderErrors bean="${scheduledSessionInstance}" as="list" />
</div>
</g:hasErrors>
<g:form method="post" >
<input type="hidden" name="id" value="${scheduledSessionInstance?.id}" />
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="name">Name:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'name','errors')}">
<input type="text" id="name" name="name" value="${fieldValue(bean:scheduledSessionInstance,field:'name')}"/>
</td>
</tr>
<!-- Comment for now (ralam aug 11, 2009)
<tr class="prop">
<td valign="top" class="name">
<label for="numberOfAttendees">Number Of Attendees:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'numberOfAttendees','errors')}">
<input type="text" id="numberOfAttendees" name="numberOfAttendees" value="${fieldValue(bean:scheduledSessionInstance,field:'numberOfAttendees')}" />
</td>
</tr>
-->
<!-- Comment for now (ralam jun 3, 2009)
<tr class="prop">
<td valign="top" class="name">
<label for="record">Record:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'record','errors')}">
<g:checkBox name="record" value="${scheduledSessionInstance?.record}" ></g:checkBox>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="timeLimited">Time Limited:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'timeLimited','errors')}">
<g:checkBox name="timeLimited" value="${scheduledSessionInstance?.timeLimited}" ></g:checkBox>
</td>
</tr>
-->
<tr class="prop">
<td valign="top" class="name">
<label for="startDateTime">Start Date Time:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'startDateTime','errors')}">
<g:datePicker name="startDateTime" value="${scheduledSessionInstance?.startDateTime}" ></g:datePicker>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="startDateTime">End Date Time:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'endDateTime','errors')}">
<g:datePicker name="endDateTime" value="${scheduledSessionInstance?.endDateTime}" ></g:datePicker>
</td>
</tr>
<!-- Comment for now (ralam jun 3, 2009)
<tr class="prop">
<td valign="top" class="name">
<label for="passwordProtect">Password Protect:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'passwordProtect','errors')}">
<g:checkBox name="passwordProtect" value="${scheduledSessionInstance?.passwordProtect}" ></g:checkBox>
</td>
</tr>
-->
<tr class="prop">
<td valign="top" class="name">
<label for="attendeePassword">Attendee Password:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'attendeePassword','errors')}">
<input type="text" id="attendeePassword" name="attendeePassword" value="${fieldValue(bean:scheduledSessionInstance,field:'attendeePassword')}"/>
</td>
</tr>
<!-- Comment for now (ralam jun 3, 2009)
<tr class="prop">
<td valign="top" class="name">
<label for="hostPassword">Host Password:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'hostPassword','errors')}">
<input type="text" id="hostPassword" name="hostPassword" value="${fieldValue(bean:scheduledSessionInstance,field:'hostPassword')}"/>
</td>
</tr>
-->
<tr class="prop">
<td valign="top" class="name">
<label for="moderatorPassword">Moderator Password:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'moderatorPassword','errors')}">
<input type="text" id="moderatorPassword" name="moderatorPassword" value="${fieldValue(bean:scheduledSessionInstance,field:'moderatorPassword')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="conference">Conference:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'conference','errors')}">
${scheduledSessionInstance?.conference?.name}
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="createdBy">Created By:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'createdBy','errors')}">
${fieldValue(bean:scheduledSessionInstance,field:'createdBy')}
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="dateCreated">Date Created:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'dateCreated','errors')}">
${scheduledSessionInstance?.dateCreated}
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="lastUpdated">Last Updated:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'lastUpdated','errors')}">
${scheduledSessionInstance?.lastUpdated}
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="modifiedBy">Modified By:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:scheduledSessionInstance,field:'modifiedBy','errors')}">
${fieldValue(bean:scheduledSessionInstance,field:'modifiedBy')}
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><g:actionSubmit class="save" value="Update" /></span>
<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
</div>
</g:form>
</div>
</body>
</html>

View File

@ -1,49 +0,0 @@
<%@ page import="org.bigbluebutton.web.domain.ScheduledSession" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>ScheduledSession List</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
</div>
<div class="body">
<h1>ScheduledSession List</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div class="list">
<table>
<thead>
<tr>
<g:sortableColumn property="name" title="Name" />
<g:sortableColumn property="startDateId" title="Start" />
<g:sortableColumn property="endDateId" title="End" />
</tr>
</thead>
<tbody>
<g:each in="${scheduledSessionInstanceList}" status="i" var="scheduledSessionInstance">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td><g:link action="show" id="${scheduledSessionInstance.id}">${fieldValue(bean:scheduledSessionInstance, field:'name')}</g:link></td>
<td>${fieldValue(bean:scheduledSessionInstance, field:'startDateTime')}</td>
<td>${fieldValue(bean:scheduledSessionInstance, field:'endDateTime')}</td>
</tr>
</g:each>
</tbody>
</table>
</div>
<div class="paginateButtons">
<g:paginate total="${ScheduledSession.count()}" />
</div>
</div>
</body>
</html>

View File

@ -1,130 +0,0 @@
<%@ page import="org.bigbluebutton.web.domain.ScheduledSession" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Show ScheduledSession</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">ScheduledSession List</g:link></span>
</div>
<div class="body">
<h1>Show ScheduledSession</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">Name:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'name')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Description:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'description')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Voice Conference Bridge:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'voiceConferenceBridge')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Link:</td>
<td valign="top" class="value">
${hostUrl}/bigbluebutton/conference-session/joinIn/${fieldValue(bean:scheduledSessionInstance, field:'voiceConferenceBridge')} (<a href="${hostUrl}/bigbluebutton/conference-session/joinIn/${fieldValue(bean:scheduledSessionInstance, field:'voiceConferenceBridge')}">JOIN</a>)
</td>
</tr>
<!-- Comment for now (ralam aug 11, 2009)
<tr class="prop">
<td valign="top" class="name">Number Of Attendees:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'numberOfAttendees')}</td>
</tr>
-->
<tr class="prop">
<td valign="top" class="name">Conference:</td>
<td valign="top" class="value">
<g:link controller="conference" action="show" id="${scheduledSessionInstance?.conference?.id}">
${scheduledSessionInstance?.conference?.encodeAsHTML()}
</g:link>
</td>
</tr>
<!-- Comment for now (ralam jun 3, 2009)
<tr class="prop">
<td valign="top" class="name">Password Protect:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'passwordProtect')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Host Password:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'hostPassword')}</td>
</tr>
-->
<tr class="prop">
<td valign="top" class="name">Moderator Password:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'moderatorPassword')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Attendee Password:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'attendeePassword')}</td>
</tr>
<!-- Comment for now (ralam jun 3, 2009)
<tr class="prop">
<td valign="top" class="name">Record:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'record')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Time Limited:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'timeLimited')}</td>
</tr>
-->
<tr class="prop">
<td valign="top" class="name">Start Date Time:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'startDateTime')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">End Date Time:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'endDateTime')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Created By:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'createdBy')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Date Created:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'dateCreated')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Last Updated:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'lastUpdated')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Modified By:</td>
<td valign="top" class="value">${fieldValue(bean:scheduledSessionInstance, field:'modifiedBy')}</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<g:form>
<input type="hidden" name="id" value="${scheduledSessionInstance?.id}" />
<span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
</g:form>
</div>
</div>
</body>
</html>

View File

@ -1,49 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Edit User</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">User List</g:link></span>
<span class="menuButton"><g:link class="create" action="create">New User</g:link></span>
</div>
<div class="body">
<h1>Edit User</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${userInstance}">
<div class="errors">
<g:renderErrors bean="${userInstance}" as="list" />
</div>
</g:hasErrors>
<g:form method="post" >
<input type="hidden" name="id" value="${userInstance?.id}" />
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="password">New Password:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:userInstance,field:'passwordHash','errors')}">
<g:passwordField name="newpassword" value="" />
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><g:actionSubmit class="save" value="Update" action="updatepassword"/></span>
<span class="button"><g:link action="show" id="${userInstance?.id}">Cancel</g:link></span>
</div>
</g:form>
</div>
</body>
</html>

View File

@ -1,65 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Create User</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">User List</g:link></span>
</div>
<div class="body">
<h1>Create User</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${userInstance}">
<div class="errors">
<g:renderErrors bean="${userInstance}" as="list" />
</div>
</g:hasErrors>
<g:form action="save" method="post" >
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="username">Username:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:userInstance,field:'username','errors')}">
<input type="text" id="username" name="username" value="${fieldValue(bean:userInstance,field:'username')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="fullName">Full Name:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:userInstance,field:'fullName','errors')}">
<input type="text" id="fullName" name="fullName" value="${fieldValue(bean:userInstance,field:'fullName')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="password">Password:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:userInstance,field:'passwordHash','errors')}">
<g:passwordField name="password" value="${password}" />
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><input class="save" type="submit" value="Create" /></span>
</div>
</g:form>
</div>
</body>
</html>

View File

@ -1,77 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Edit User</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">User List</g:link></span>
<span class="menuButton"><g:link class="create" action="create">New User</g:link></span>
</div>
<div class="body">
<h1>Edit User</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${userInstance}">
<div class="errors">
<g:renderErrors bean="${userInstance}" as="list" />
</div>
</g:hasErrors>
<g:form method="post" >
<input type="hidden" name="id" value="${userInstance?.id}" />
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="username">Username:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:userInstance,field:'username','errors')}">
<input type="text" id="username" name="username" value="${fieldValue(bean:userInstance,field:'username')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="fullName">Full Name:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:userInstance,field:'fullName','errors')}">
<input type="text" id="fullName" name="fullName" value="${fieldValue(bean:userInstance,field:'fullName')}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="dateCreated">Date Created:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:userInstance,field:'dateCreated','errors')}">
${userInstance?.dateCreated}
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="lastUpdated">Last Updated:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:userInstance,field:'lastUpdated','errors')}">
${userInstance?.lastUpdated}
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><g:actionSubmit class="save" value="Update" /></span>
<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
</div>
</g:form>
</div>
</body>
</html>

View File

@ -1,54 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>User List</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="create" action="create">New User</g:link></span>
</div>
<div class="body">
<h1>User List</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div class="list">
<table>
<thead>
<tr>
<g:sortableColumn property="id" title="Id" />
<g:sortableColumn property="username" title="Username" />
<g:sortableColumn property="email" title="Email" />
<g:sortableColumn property="fullName" title="Full Name" />
<th>Conferences</th>
<g:sortableColumn property="dateCreated" title="Date Created" />
</tr>
</thead>
<tbody>
<g:each in="${userInstanceList}" status="i" var="userInstance">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td><g:link action="show" id="${userInstance.id}">${fieldValue(bean:userInstance, field:'id')}</g:link></td>
<td>${fieldValue(bean:userInstance, field:'username')}</td>
<td>${fieldValue(bean:userInstance, field:'fullName')}</td>
<td>${fieldValue(bean:userInstance, field:'dateCreated')}</td>
</tr>
</g:each>
</tbody>
</table>
</div>
</div>
</body>
</html>

View File

@ -1,71 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Show User</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">User List</g:link></span>
<span class="menuButton"><g:link class="create" action="create">New User</g:link></span>
</div>
<div class="body">
<h1>Show User</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">Username:</td>
<td valign="top" class="value">${fieldValue(bean:userInstance, field:'username')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Full Name:</td>
<td valign="top" class="value">${fieldValue(bean:userInstance, field:'fullName')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Date Created:</td>
<td valign="top" class="value">${fieldValue(bean:userInstance, field:'dateCreated')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Last Updated:</td>
<td valign="top" class="value">${fieldValue(bean:userInstance, field:'lastUpdated')}</td>
</tr>
<tr class="prop">
<td valign="top" class="name">Password</td>
<td valign="top" class="value"><g:link action="changepassword" id="${userInstance.id}">Change</g:link></td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<g:form>
<input type="hidden" name="id" value="${userInstance?.id}" />
<span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
</g:form>
</div>
</div>
</body>
</html>

2
bigbluebutton-web/web-app/index.gsp Normal file → Executable file
View File

@ -1 +1 @@
<%response.sendRedirect(request.getContextPath()+"/conference/list");%>
This page is no longer available, please use the api