- upgrade bigbluebutton-web to grails 2.3.6

This commit is contained in:
Richard Alam 2014-02-25 15:46:06 +00:00
parent 944f7a15c4
commit 6cf30e9f07
210 changed files with 5548 additions and 14528 deletions

0
bigbluebutton-web/COPYING.LESSER Normal file → Executable file
View File

0
bigbluebutton-web/INSTALL Normal file → Executable file
View File

View File

@ -1,4 +0,0 @@
Testing:
How to run the presentation conversion unit tests.
grails test-app org.bigbluebutton.presentation.imp.*

View File

@ -1,76 +0,0 @@
println "meetme begin"
number = channel.getData("conf-getconfno", 10000, 10)
conf = db.firstRow("SELECT * FROM conference WHERE conference_number=$number")
if (conf) println "found one! " + conf.conference_name
if (conf) {
pin = channel.getData("conf-getpin", 10000)
println pin
println conf.pin
if (pin.toInteger() == conf.pin) {
channel.streamFile("conf-placeintoconf")
channel.exec("Meetme", "$number|dMq")
} else {
channel.streamFile("conf-invalidpin")
}
} else {
channel.streamFile("conf-invalid")
}
/*
//channel.streamFile("conf-adminmenu")
//channel.streamFile("conf-banned")
//channel.streamFile("conf-enteringno")
//channel.streamFile("conference-call")
//channel.streamFile("conference")
//channel.streamFile("conference-reservations")
//channel.streamFile("conf-errormenu")
channel.streamFile("conf-full")
//channel.streamFile("conf-getchannel")
channel.streamFile("conf-getpin")
//channel.streamFile("conf-hasentered")
//channel.streamFile("conf-hasjoin")
//channel.streamFile("conf-hasleft")
channel.streamFile("conf-invalid")
channel.streamFile("confirm-number-is")
//channel.streamFile("conf-kicked")
//channel.streamFile("conf-leaderhasleft")
//channel.streamFile("conf-locked")
//channel.streamFile("conf-lockednow")
//channel.streamFile("conf-muted")
//channel.streamFile("conf-noempty")
//channel.streamFile("conf-onlyone")
//channel.streamFile("conf-onlyperson")
//channel.streamFile("conf-onlypersonleft")
//channel.streamFile("conf-otherinparty")
//channel.streamFile("conf-peopleinconf")
//channel.streamFile("conf-recordings")
//channel.streamFile("conf-sysop")
//channel.streamFile("conf-sysopreqcancelled")
//channel.streamFile("conf-sysopreq")
channel.streamFile("conf-thereare")
//channel.streamFile("conf-unlockednow")
//channel.streamFile("conf-unmuted")
//channel.streamFile("conf-usermenu")
//channel.streamFile("conf-userswilljoin")
//channel.streamFile("conf-userwilljoin")
channel.streamFile("conf-waitforleader")
channel.streamFile("conf-youareinconfnum")
*/
println "meetme end"
def getDigits(int number) {
StringBuffer sb = new StringBuffer()
for (int t = 0; t < number; t++) {
sb.append(channel.waitForDigit(10000))
}
return sb.toString()
}

View File

@ -1,7 +1,6 @@
#Grails Metadata file
#Thu Jun 06 12:32:30 PDT 2013
app.grails.version=1.3.9
#Tue Feb 25 00:47:48 UTC 2014
app.grails.version=2.3.6
app.name=bigbluebutton
app.servlet.version=2.4
app.version=0.70dev
plugins.tomcat=1.3.9
app.servlet.version=3.0
app.version=0.1

View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/bigbluebutton"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;bigbluebutton&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;GRAILS_HOME/dist/grails-bootstrap-1.1.1.jar&quot; path=&quot;3&quot; type=&quot;3&quot;/&gt;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;GRAILS_HOME/lib/groovy-all-1.6.3.jar&quot; path=&quot;3&quot; type=&quot;3&quot;/&gt;&#10;"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="grails.util.GrailsMain"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="bigbluebutton"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dbase.dir=&quot;${project_loc:bigbluebutton}&quot; -Dserver.port=8080 -Dgrails.env=development"/>
</launchConfiguration>

View File

@ -1,73 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>documents</key>
<array>
<dict>
<key>filename</key>
<string>bigbluebutton.launch</string>
</dict>
<dict>
<key>filename</key>
<string>build.xml</string>
</dict>
<dict>
<key>name</key>
<string>grails-app</string>
<key>regexFolderFilter</key>
<string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
<key>sourceDirectory</key>
<string>grails-app</string>
</dict>
<dict>
<key>name</key>
<string>test</string>
<key>regexFolderFilter</key>
<string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
<key>sourceDirectory</key>
<string>test</string>
</dict>
<dict>
<key>name</key>
<string>lib</string>
<key>regexFolderFilter</key>
<string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
<key>sourceDirectory</key>
<string>lib</string>
</dict>
<dict>
<key>name</key>
<string>scripts</string>
<key>regexFolderFilter</key>
<string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
<key>sourceDirectory</key>
<string>scripts</string>
</dict>
<dict>
<key>name</key>
<string>src</string>
<key>regexFolderFilter</key>
<string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
<key>sourceDirectory</key>
<string>src</string>
</dict>
<dict>
<key>name</key>
<string>web-app</string>
<key>regexFolderFilter</key>
<string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
<key>sourceDirectory</key>
<string>web-app</string>
</dict>
</array>
<key>fileHierarchyDrawerWidth</key>
<integer>200</integer>
<key>metaData</key>
<dict/>
<key>showFileHierarchyDrawer</key>
<true/>
<key>windowFrame</key>
<string>{{237, 127}, {742, 553}}</string>
</dict>
</plist>

View File

@ -1,10 +1,10 @@
usePlugin 'java'
usePlugin 'eclipse'
apply plugin: 'java'
apply plugin: 'eclipse'
task resolveDeps(dependsOn: configurations.default.buildArtifacts, type: Copy) {
task resolveDeps(type: Copy) {
into('lib')
from configurations.default
from configurations.default.allArtifacts*.file
from configurations.default.allArtifacts.file
}
repositories {
@ -43,7 +43,13 @@ dependencies {
compile 'commons-lang:commons-lang:2.5'
compile 'com.google.code.gson:gson:1.7.1'
compile 'org.springframework.amqp:spring-rabbit:1.2.0.RELEASE@jar'
// Logging
// compile 'ch.qos.logback:logback-core:1.0.9@jar'
// compile 'ch.qos.logback:logback-classic:1.0.9@jar'
// compile 'org.slf4j:log4j-over-slf4j:1.7.2@jar'
// compile 'org.slf4j:jcl-over-slf4j:1.7.2@jar'
// compile 'org.slf4j:jul-to-slf4j:1.7.2@jar'
// compile 'org.slf4j:slf4j-api:1.7.2@jar'
//junit
compile 'junit:junit:4.8.2'

View File

@ -1,62 +0,0 @@
<project name="bigbluebutton" default="run">
<condition property="grails" value="grails.bat">
<os family="windows"/>
</condition>
<property name="grails" value="grails" />
<!-- =================================
target: clean
================================= -->
<target name="clean" description="--> Cleans a Grails application">
<exec executable="${grails}" failonerror="true">
<arg value="clean"/>
</exec>
</target>
<!-- =================================
target: war
================================= -->
<target name="war" description="--> Creates a WAR of a Grails application">
<exec executable="${grails}" failonerror="true">
<arg value="war"/>
</exec>
</target>
<!-- =================================
target: test
================================= -->
<target name="test" description="--> Run a Grails applications unit tests">
<exec executable="${grails}" failonerror="true">
<arg value="test-app"/>
</exec>
</target>
<!-- =================================
target: run
================================= -->
<!-- Check whether Tomcat is running -->
<target name="check-port-8080" description="Check whether tomcat6 is running">
<echo message="Checking whether tomcat6 is running before doing 'grails run-app'"/>
<condition property="tomcat.running">
<socket server="127.0.0.1" port="8080"/>
</condition>
</target>
<target name="run" depends="check-port-8080" description="--> Run a Grails applications unit tests">
<fail message="Detected that tomcat6 is running on port 8080. Stop tomcat6 then try again." if="tomcat.running" />
<echo message="Running grails ..." />
<exec executable="${grails}" failonerror="true">
<arg value="run-app"/>
</exec>
</target>
<!-- =================================
target: deploy
================================= -->
<target name="deploy" depends="war" description="--> The deploy target (initially empty)">
<!-- TODO -->
</target>
</project>

View File

@ -0,0 +1,5 @@
modules = {
application {
resource url:'js/application.js'
}
}

View File

@ -1,30 +1,7 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
*
* This program 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.0 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, see <http://www.gnu.org/licenses/>.
*
*/
class BootStrap {
def jmsContainer
def init = { servletContext ->
log.debug "Bootstrapping bbb-web"
}
def destroy = {
}
def init = { servletContext ->
}
def destroy = {
}
}

View File

@ -1,35 +1,72 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
*
* This program 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.0 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, see <http://www.gnu.org/licenses/>.
*
*/
grails.servlet.version = "3.0" // Change depending on target container compliance (2.5 or 3.0)
grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.project.work.dir = "target/work"
grails.project.target.level = 1.6
grails.project.source.level = 1.6
//grails.project.war.file = "target/${appName}-${appVersion}.war"
grails.project.fork = [
// configure settings for compilation JVM, note that if you alter the Groovy version forked compilation is required
// compile: [maxMemory: 256, minMemory: 64, debug: false, maxPerm: 256, daemon:true],
// This closure is to enable logging in production.
// This closure is passed the location of the staging directory that
// is zipped up to make the WAR file, and the command line arguments.
// Here we copy over oug log4j.properties file while the web.xml is
// overridden from what's in src/templates/war/web.xml.
// (ralam, jan 7, 2010)
grails.war.resources = {stagingDir, args ->
//println '*** Copying our custom web.xml and log4j.properties as workaround for logging problem. ***'
//println '*** Copying our custom web.xml as workaround for logging problem. ***'
//copy(file: "grails-app/conf/custom-web.xml", tofile: "${stagingDir}/WEB-INF/web.xml")
println '*** Copying our custom log4j.properties as workaround for logging problem. ***'
copy(file: "grails-app/conf/log4j.properties", tofile: "${stagingDir}/WEB-INF/classes/log4j.properties")
// configure settings for the test-app JVM, uses the daemon by default
test: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, daemon:true],
// configure settings for the run-app JVM
run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
// configure settings for the run-war JVM
war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
// configure settings for the Console UI JVM
console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256]
]
grails.project.dependency.resolver = "maven" // or ivy
grails.project.dependency.resolution = {
// inherit Grails' default dependencies
inherits("global") {
// specify dependency exclusions here; for example, uncomment this to disable ehcache:
// excludes 'ehcache'
}
log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
checksums true // Whether to verify checksums on resolve
legacyResolve false // whether to do a secondary resolve on plugin installation, not advised and here for backwards compatibility
repositories {
inherits true // Whether to inherit repository definitions from plugins
grailsPlugins()
grailsHome()
mavenLocal()
grailsCentral()
mavenCentral()
// uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories
//mavenRepo "http://repository.codehaus.org"
//mavenRepo "http://download.java.net/maven/2/"
//mavenRepo "http://repository.jboss.com/maven2/"
}
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
// runtime 'mysql:mysql-connector-java:5.1.24'
}
plugins {
// plugins for the build system only
build ":tomcat:7.0.42"
// plugins for the compile step
compile ":scaffolding:2.0.0"
compile ':cache:1.1.1'
// plugins needed at runtime but not for compilation
runtime ":hibernate:3.6.10.1" // or ":hibernate4:4.1.11.1"
runtime ":database-migration:1.3.5"
runtime ":jquery:1.10.2"
runtime ":resources:1.2"
// Uncomment these (or add new ones) to enable additional resources capabilities
//runtime ":zipped-resources:1.0.1"
//runtime ":cached-resources:1.1"
//runtime ":yui-minify-resources:0.1.5"
}
}

View File

@ -1,99 +1,117 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
*
* This program 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.0 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, see <http://www.gnu.org/licenses/>.
*
*/
// locations to search for config files that get merged into the main config
// config files can either be Java properties files or ConfigSlurper scripts
// locations to search for config files that get merged into the main config;
// config files can be ConfigSlurper scripts, Java properties files, or classes
// in the classpath in ConfigSlurper format
// grails.config.locations = [ "classpath:${appName}-config.properties",
// "classpath:${appName}-config.groovy",
// "file:${userHome}/.grails/${appName}-config.properties",
// "file:${userHome}/.grails/${appName}-config.groovy"]
grails.config.locations = [ "classpath:bigbluebutton.properties"]
// grails.config.locations = [ "classpath:bigbluebutton.properties"]
// if(System.properties["${appName}.config.location"]) {
// if (System.properties["${appName}.config.location"]) {
// grails.config.locations << "file:" + System.properties["${appName}.config.location"]
// }
grails.mime.file.extensions = true // enables the parsing of file extensions from URLs into the request format
grails.mime.types = [ html: ['text/html','application/xhtml+xml'],
xml: ['text/xml', 'application/xml'],
text: 'text-plain',
js: 'text/javascript',
rss: 'application/rss+xml',
atom: 'application/atom+xml',
css: 'text/css',
csv: 'text/csv',
all: '*/*',
json: ['application/json','text/json'],
form: 'application/x-www-form-urlencoded',
multipartForm: 'multipart/form-data'
]
// The default codec used to encode data with ${}
grails.views.default.codec="none" // none, html, base64
grails.views.gsp.encoding="UTF-8"
grails.converters.encoding="UTF-8"
grails.config.locations = [ "classpath:bigbluebutton.properties"]
grails.project.groupId = appName // change this to alter the default package name and Maven publishing destination
// The ACCEPT header will not be used for content negotiation for user agents containing the following strings (defaults to the 4 major rendering engines)
grails.mime.disable.accept.header.userAgents = ['Gecko', 'WebKit', 'Presto', 'Trident']
grails.mime.types = [
all: '*/*',
atom: 'application/atom+xml',
css: 'text/css',
csv: 'text/csv',
form: 'application/x-www-form-urlencoded',
html: ['text/html','application/xhtml+xml'],
js: 'text/javascript',
json: ['application/json', 'text/json'],
multipartForm: 'multipart/form-data',
rss: 'application/rss+xml',
text: 'text/plain',
hal: ['application/hal+json','application/hal+xml'],
xml: ['text/xml', 'application/xml']
]
// URL Mapping Cache Max Size, defaults to 5000
//grails.urlmapping.cache.maxsize = 1000
// What URL patterns should be processed by the resources plugin
grails.resources.adhoc.patterns = ['/images/*', '/css/*', '/js/*', '/plugins/*']
// Legacy setting for codec used to encode data with ${}
grails.views.default.codec = "html"
// The default scope for controllers. May be prototype, session or singleton.
// If unspecified, controllers are prototype scoped.
grails.controllers.defaultScope = 'singleton'
// GSP settings
grails {
views {
gsp {
encoding = 'UTF-8'
htmlcodec = 'xml' // use xml escaping instead of HTML4 escaping
codecs {
expression = 'html' // escapes values inside ${}
scriptlet = 'html' // escapes output from scriptlets in GSPs
taglib = 'none' // escapes output from taglibs
staticparts = 'none' // escapes output from static template parts
}
}
// escapes all not-encoded output at final stage of outputting
filteringCodecForContentType {
//'text/html' = 'html'
}
}
}
grails.converters.encoding = "UTF-8"
// scaffolding templates configuration
grails.scaffolding.templates.domainSuffix = 'Instance'
// Set to false to use the new Grails 1.2 JSONBuilder in the render method
grails.json.legacy.builder = false
// enabled native2ascii conversion of i18n properties files
grails.enable.native2ascii = true
// packages to include in Spring bean scanning
grails.spring.bean.packages = []
// whether to disable processing of multi part requests
grails.web.disable.multipart=false
// request parameters to mask when logging exceptions
grails.exceptionresolver.params.exclude = ['password']
// configure auto-caching of queries by default (if false you can cache individual queries with 'cache: true')
grails.hibernate.cache.queries = false
environments {
development {
grails.serverURL = "http://localhost:8080"
}
production {
grails.serverURL = "http://localhost:8080"
}
test {
}
grails.logging.jul.usebridge = true
}
production {
grails.logging.jul.usebridge = false
// TODO: grails.serverURL = "http://www.changeme.com"
}
}
// Use own log4j.properties for logging as it seems there is a
// problem with logging on production using the DSL. This works
// ok when ran using "grails run-war"
// (ralam - jan 7, 2010)
//log4j configuration
// log4j configuration
log4j = {
appenders {
rollingFile name:'logfileAppender', maxFileSize:500000, file:"/tmp/bbb-web.log"
console name:'consoleAppender', layout:pattern(conversionPattern: '%d{[dd.MM.yy HH:mm:ss.SSS]} %-5p %c %x - %m%n')
}
// Example of changing the log pattern for the default console appender:
//
//appenders {
// console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
//}
root {
warn 'logfileAppender', 'consoleAppender'
additivity = true
}
warn 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate',
'org.mortbay.log'
debug 'grails.app',
'org.bigbluebutton'
// additivity.StackTrace=false
error 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
debug 'org.bigbluebutton'
}

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

@ -1,32 +1,45 @@
dataSource {
pooled = true
driverClassName = "org.hsqldb.jdbcDriver"
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
cache.use_query_cache = false
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' // Hibernate 3
// cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop','update'
url = "jdbc:hsqldb:mem:devDB"
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:mem:testDb"
url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:file:prodDb;shutdown=true"
url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
properties {
maxActive = -1
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
testOnBorrow=true
testWhileIdle=true
testOnReturn=false
validationQuery="SELECT 1"
jdbcInterceptors="ConnectionState"
}
}
}
}

View File

@ -1,73 +1,53 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
*
* This program 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.0 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, see <http://www.gnu.org/licenses/>.
*
*/
class UrlMappings {
static mappings = {
"/presentation/upload"(controller:"presentation") {
action = [GET:'show', POST:'upload', DELETE:'delete']
}
static mappings = {
"/presentation/upload"(controller:"presentation") {
action = [GET:'show', POST:'upload', DELETE:'delete']
}
"/presentation/test-convert"(controller:"presentation") {
action = [GET:'testConversion']
}
"/presentation/test-convert"(controller:"presentation") {
action = [GET:'testConversion']
}
"/presentation/$conference/$room/$presentation_name/slides"(controller:"presentation") {
action = [GET:'numberOfSlides']
}
"/presentation/$conference/$room/$presentation_name/slides"(controller:"presentation") {
action = [GET:'numberOfSlides']
}
"/presentation/$conference/$room/$presentation_name/slide/$id"(controller:"presentation") {
action = [GET:'showSlide']
}
"/presentation/$conference/$room/$presentation_name/slide/$id"(controller:"presentation") {
action = [GET:'showSlide']
}
"/presentation/$conference/$room/$presentation_name/thumbnails"(controller:"presentation") {
action = [GET:'numberOfThumbnails']
}
"/presentation/$conference/$room/$presentation_name/thumbnails"(controller:"presentation") {
action = [GET:'numberOfThumbnails']
}
"/presentation/$conference/$room/$presentation_name/thumbnail/$id"(controller:"presentation") {
action = [GET:'showThumbnail']
}
"/presentation/$conference/$room/$presentation_name/thumbnail/$id"(controller:"presentation") {
action = [GET:'showThumbnail']
}
"/presentation/$conference/$room/$presentation_name/textfiles"(controller:"presentation") {
action = [GET:'numberOfTextfiles']
}
"/presentation/$conference/$room/$presentation_name/textfiles"(controller:"presentation") {
action = [GET:'numberOfTextfiles']
}
"/presentation/$conference/$room/$presentation_name/textfile/$id"(controller:"presentation") {
action = [GET:'showTextfile']
}
"/presentation/$conference/$room/$presentation_name/textfile/$id"(controller:"presentation") {
action = [GET:'showTextfile']
}
"/api/setConfigXML"(controller:"api") {
action = [POST:'setConfigXML']
}
"/api/setConfigXML"(controller:"api") {
action = [POST:'setConfigXML']
}
"/api/setPollXML"(controller:"api") {
action = [POST:'setPollXML']
}
"/api/setPollXML"(controller:"api") {
action = [POST:'setPollXML']
}
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"500"(view:'/error')
"/" (controller: 'conference', action: 'list')
"/$controller/$action?/$id?(.${format})?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}

View File

@ -77,7 +77,7 @@ defaultDialAccessNumber=613-555-1234
# conference. This is only used for the old scheduling which will be
# removed in the future. Use the API to create a conference.
defaultWelcomeMessage=<br>Welcome to <b>%%CONFNAME%%</b>!<br><br>For help on using BigBlueButton see these (short) <a href="event:http://www.bigbluebutton.org/content/videos"><u>tutorial videos</u></a>.<br><br>To join the audio bridge click the headset icon (upper-left hand corner). Use a headset to avoid causing background noise for others.<br>
defaultWelcomeMessageFooter=This server is running <a href="https://code.google.com/p/bigbluebutton/wiki/081Overview" target="_blank"><u>BigBlueButton 0.81</u></a>.
defaultWelcomeMessageFooter=This server is running a <a href="https://code.google.com/p/bigbluebutton/wiki/081Overview" target="_blank"><u>BigBlueButton 0.81-RC</u></a>.
# Default maximum number of users a meeting can have.
# Doesn't get enforced yet but is the default value when the create
@ -109,7 +109,7 @@ disableRecordingDefault=false
#----------------------------------------------------
# This URL is where the BBB client is accessible. When a user sucessfully
# enters a name and password, she is redirected here to load the client.
bigbluebutton.web.serverURL=http://192.168.153.139
bigbluebutton.web.serverURL=http://192.168.0.150
#----------------------------------------------------
# Assign URL where the logged-out participant will be redirected after sign-out.
@ -132,7 +132,7 @@ defaultConfigURL=${bigbluebutton.web.serverURL}/client/conf/config.xml
apiVersion=0.81
# Salt which is used by 3rd-party apps to authenticate api calls
securitySalt=873b4c35e992f3e54c374412082934b6
securitySalt=0c3eaac5b455b4353ec826fce1657ad8
# Directory where we drop the <meeting-id-recorded>.done file
recordStatusDir=/var/bigbluebutton/recording/status/recorded

View File

@ -1,69 +0,0 @@
#
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
#
# Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
#
# This program 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.0 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, see <http://www.gnu.org/licenses/>.
#
# This custom log4j.properties file is a workaround for problem with logging when
# deployed to Tomcat. This goes hand-in-hand with src/templates/war/web.xml
# Taken from /home/firstuser/dev/tools/grails-1.1.1/src/war/WEB-INF/log4j.properties (ralam - jan 6, 2010)
log4j.rootLogger=DEBUG, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n
# Keep 20 days of logs
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.Append=true
log4j.appender.logfile.File=/var/log/bigbluebutton/bbb-web.log
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.MaxBackupIndex=20
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.logger.org.codehaus.groovy.grails.web.servlet=WARN
log4j.logger.org.codehaus.groovy.grails.web.pages=WARN
log4j.logger.org.codehaus.groovy.grails.web.sitemesh=WARN
log4j.logger.org.codehaus.groovy.grails.web.mapping.filter=WARN
log4j.logger.org.codehaus.groovy.grails.web.mapping=WARN
log4j.logger.org.codehaus.groovy.grails.web.binding=WARN
log4j.logger.org.codehaus.groovy.grails.commons=WARN
log4j.logger.org.codehaus.groovy.grails.plugins=WARN
log4j.logger.org.codehaus.groovy.grails.orm.hibernate=WARN
log4j.logger.org.codehaus.groovy.grails.context.support=WARN
# Spring
log4j.logger.org.springframework=WARN
# Hibernate
log4j.logger.org.hibernate=WARN
# Mortbay
log4j.logger.org.mortbay.log=WARN
# ActiveMQ
log4j.logger.org.apache.activemq=WARN
# JSecurity
log4j.logger.org.jsecurity=WARN
# BigBlueButton
log4j.logger.org.bigbluebutton=DEBUG
log4j.logger.grails.app.controller=DEBUG
log4j.logger.grails.app.service=DEBUG

View File

@ -1,23 +1,3 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
*
* This program 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.0 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, see <http://www.gnu.org/licenses/>.
*
*/
// Place your Spring DSL code here
beans = {
}

View File

@ -1 +0,0 @@
login.failed = Invalid username and/or password

28
bigbluebutton-web/grails-app/i18n/messages.properties Normal file → Executable file
View File

@ -17,6 +17,31 @@ default.not.unique.message=Property [{0}] of class [{1}] with value [{2}] must b
default.paginate.prev=Previous
default.paginate.next=Next
default.boolean.true=True
default.boolean.false=False
default.date.format=yyyy-MM-dd HH:mm:ss z
default.number.format=0
default.created.message={0} {1} created
default.updated.message={0} {1} updated
default.deleted.message={0} {1} deleted
default.not.deleted.message={0} {1} could not be deleted
default.not.found.message={0} not found with id {1}
default.optimistic.locking.failure=Another user has updated this {0} while you were editing
default.home.label=Home
default.list.label={0} List
default.add.label=Add {0}
default.new.label=New {0}
default.create.label=Create {0}
default.show.label=Show {0}
default.edit.label=Edit {0}
default.button.create.label=Create
default.button.edit.label=Edit
default.button.update.label=Update
default.button.delete.label=Delete
default.button.delete.confirm.message=Are you sure?
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Property {0} must be a valid URL
@ -28,6 +53,3 @@ typeMismatch.java.lang.Long=Property {0} must be a valid number
typeMismatch.java.lang.Short=Property {0} must be a valid number
typeMismatch.java.math.BigDecimal=Property {0} must be a valid number
typeMismatch.java.math.BigInteger=Property {0} must be a valid number
conference.name.blank=Please enter a name for this conference
conference.name.max.exceeded=Please enter a valid name no more than {3} characters

View File

@ -0,0 +1,55 @@
default.doesnt.match.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] neodpovídá požadovanému vzoru [{3}]
default.invalid.url.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] není validní URL
default.invalid.creditCard.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] není validní číslo kreditní karty
default.invalid.email.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] není validní emailová adresa
default.invalid.range.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] není v povoleném rozmezí od [{3}] do [{4}]
default.invalid.size.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] není v povoleném rozmezí od [{3}] do [{4}]
default.invalid.max.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] překračuje maximální povolenou hodnotu [{3}]
default.invalid.min.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] je menší než minimální povolená hodnota [{3}]
default.invalid.max.size.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] překračuje maximální velikost [{3}]
default.invalid.min.size.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] je menší než minimální velikost [{3}]
default.invalid.validator.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] neprošla validací
default.not.inlist.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] není obsažena v seznamu [{3}]
default.blank.message=Položka [{0}] třídy [{1}] nemůže být prázdná
default.not.equal.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] nemůže být stejná jako [{3}]
default.null.message=Položka [{0}] třídy [{1}] nemůže být prázdná
default.not.unique.message=Položka [{0}] třídy [{1}] o hodnotě [{2}] musí být unikátní
default.paginate.prev=Předcházející
default.paginate.next=Následující
default.boolean.true=Pravda
default.boolean.false=Nepravda
default.date.format=dd. MM. yyyy HH:mm:ss z
default.number.format=0
default.created.message={0} {1} vytvořeno
default.updated.message={0} {1} aktualizováno
default.deleted.message={0} {1} smazáno
default.not.deleted.message={0} {1} nelze smazat
default.not.found.message={0} nenalezen s id {1}
default.optimistic.locking.failure=Jiný uživatel aktualizoval záznam {0}, právě když byl vámi editován
default.home.label=Domů
default.list.label={0} Seznam
default.add.label=Přidat {0}
default.new.label=Nový {0}
default.create.label=Vytvořit {0}
default.show.label=Ukázat {0}
default.edit.label=Editovat {0}
default.button.create.label=Vytvoř
default.button.edit.label=Edituj
default.button.update.label=Aktualizuj
default.button.delete.label=Smaž
default.button.delete.confirm.message=Jste si jistý?
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Položka {0} musí být validní URL
typeMismatch.java.net.URI=Položka {0} musí být validní URI
typeMismatch.java.util.Date=Položka {0} musí být validní datum
typeMismatch.java.lang.Double=Položka {0} musí být validní desetinné číslo
typeMismatch.java.lang.Integer=Položka {0} musí být validní číslo
typeMismatch.java.lang.Long=Položka {0} musí být validní číslo
typeMismatch.java.lang.Short=Položka {0} musí být validní číslo
typeMismatch.java.math.BigDecimal=Položka {0} musí být validní číslo
typeMismatch.java.math.BigInteger=Položka {0} musí být validní číslo

View File

@ -0,0 +1,56 @@
default.doesnt.match.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] overholder ikke mønsteret [{3}]
default.invalid.url.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] er ikke en gyldig URL
default.invalid.creditCard.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] er ikke et gyldigt kreditkortnummer
default.invalid.email.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] er ikke en gyldig e-mail adresse
default.invalid.range.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] ligger ikke inden for intervallet fra [{3}] til [{4}]
default.invalid.size.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] ligger ikke inden for størrelsen fra [{3}] til [{4}]
default.invalid.max.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] overstiger den maksimale værdi [{3}]
default.invalid.min.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] er under den minimale værdi [{3}]
default.invalid.max.size.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] overstiger den maksimale størrelse på [{3}]
default.invalid.min.size.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] er under den minimale størrelse på [{3}]
default.invalid.validator.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] overholder ikke den brugerdefinerede validering
default.not.inlist.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] findes ikke i listen [{3}]
default.blank.message=Feltet [{0}] i klassen [{1}] kan ikke være tom
default.not.equal.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] må ikke være [{3}]
default.null.message=Feltet [{0}] i klassen [{1}] kan ikke være null
default.not.unique.message=Feltet [{0}] i klassen [{1}] som har værdien [{2}] skal være unik
default.paginate.prev=Forrige
default.paginate.next=Næste
default.boolean.true=Sand
default.boolean.false=Falsk
default.date.format=yyyy-MM-dd HH:mm:ss z
default.number.format=0
default.created.message={0} {1} oprettet
default.updated.message={0} {1} opdateret
default.deleted.message={0} {1} slettet
default.not.deleted.message={0} {1} kunne ikke slettes
default.not.found.message={0} med id {1} er ikke fundet
default.optimistic.locking.failure=En anden bruger har opdateret denne {0} imens du har lavet rettelser
default.home.label=Hjem
default.list.label={0} Liste
default.add.label=Tilføj {0}
default.new.label=Ny {0}
default.create.label=Opret {0}
default.show.label=Vis {0}
default.edit.label=Ret {0}
default.button.create.label=Opret
default.button.edit.label=Ret
default.button.update.label=Opdater
default.button.delete.label=Slet
default.button.delete.confirm.message=Er du sikker?
# Databindingsfejl. Brug "typeMismatch.$className.$propertyName for at passe til en given klasse (f.eks typeMismatch.Book.author)
typeMismatch.java.net.URL=Feltet {0} skal være en valid URL
typeMismatch.java.net.URI=Feltet {0} skal være en valid URI
typeMismatch.java.util.Date=Feltet {0} skal være en valid Dato
typeMismatch.java.lang.Double=Feltet {0} skal være et valid tal
typeMismatch.java.lang.Integer=Feltet {0} skal være et valid tal
typeMismatch.java.lang.Long=Feltet {0} skal være et valid tal
typeMismatch.java.lang.Short=Feltet {0} skal være et valid tal
typeMismatch.java.math.BigDecimal=Feltet {0} skal være et valid tal
typeMismatch.java.math.BigInteger=Feltet {0} skal være et valid tal

View File

@ -17,6 +17,31 @@ default.not.unique.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2
default.paginate.prev=Vorherige
default.paginate.next=Nächste
default.boolean.true=Wahr
default.boolean.false=Falsch
default.date.format=dd.MM.yyyy HH:mm:ss z
default.number.format=0
default.created.message={0} {1} wurde angelegt
default.updated.message={0} {1} wurde geändert
default.deleted.message={0} {1} wurde gelöscht
default.not.deleted.message={0} {1} konnte nicht gelöscht werden
default.not.found.message={0} mit der id {1} wurde nicht gefunden
default.optimistic.locking.failure=Ein anderer Benutzer hat das {0} Object geändert während Sie es bearbeitet haben
default.home.label=Home
default.list.label={0} Liste
default.add.label={0} hinzufügen
default.new.label={0} anlegen
default.create.label={0} anlegen
default.show.label={0} anzeigen
default.edit.label={0} bearbeiten
default.button.create.label=Anlegen
default.button.edit.label=Bearbeiten
default.button.update.label=Aktualisieren
default.button.delete.label=Löschen
default.button.delete.confirm.message=Sind Sie sicher?
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Die Eigenschaft {0} muss eine gültige URL sein

View File

@ -17,6 +17,31 @@ default.not.unique.message=La propiedad [{0}] de la clase [{1}] con valor [{2}]
default.paginate.prev=Anterior
default.paginate.next=Siguiente
default.boolean.true=Verdadero
default.boolean.false=Falso
default.date.format=yyyy-MM-dd HH:mm:ss z
default.number.format=0
default.created.message={0} {1} creado
default.updated.message={0} {1} actualizado
default.deleted.message={0} {1} eliminado
default.not.deleted.message={0} {1} no puede eliminarse
default.not.found.message=No se encuentra {0} con id {1}
default.optimistic.locking.failure=Mientras usted editaba, otro usuario ha actualizado su {0}
default.home.label=Principal
default.list.label={0} Lista
default.add.label=Agregar {0}
default.new.label=Nuevo {0}
default.create.label=Crear {0}
default.show.label=Mostrar {0}
default.edit.label=Editar {0}
default.button.create.label=Crear
default.button.edit.label=Editar
default.button.update.label=Actualizar
default.button.delete.label=Eliminar
default.button.delete.confirm.message=¿Está usted seguro?
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=La propiedad {0} debe ser una URL válida

View File

View File

@ -17,3 +17,39 @@ default.not.unique.message=La proprietà [{0}] della classe [{1}] con valore [{2
default.paginate.prev=Precedente
default.paginate.next=Successivo
default.boolean.true=Vero
default.boolean.false=Falso
default.date.format=dd/MM/yyyy HH:mm:ss z
default.number.format=0
default.created.message={0} {1} creato
default.updated.message={0} {1} aggiornato
default.deleted.message={0} {1} eliminato
default.not.deleted.message={0} {1} non può essere eliminato
default.not.found.message={0} non trovato con id {1}
default.optimistic.locking.failure=Un altro utente ha aggiornato questo {0} mentre si era in modifica
default.home.label=Home
default.list.label={0} Elenco
default.add.label=Aggiungi {0}
default.new.label=Nuovo {0}
default.create.label=Crea {0}
default.show.label=Mostra {0}
default.edit.label=Modifica {0}
default.button.create.label=Crea
default.button.edit.label=Modifica
default.button.update.label=Aggiorna
default.button.delete.label=Elimina
default.button.delete.confirm.message=Si è sicuri?
# Data binding errors. Usa "typeMismatch.$className.$propertyName per la personalizzazione (es typeMismatch.Book.author)
typeMismatch.java.net.URL=La proprietà {0} deve essere un URL valido
typeMismatch.java.net.URI=La proprietà {0} deve essere un URI valido
typeMismatch.java.util.Date=La proprietà {0} deve essere una data valida
typeMismatch.java.lang.Double=La proprietà {0} deve essere un numero valido
typeMismatch.java.lang.Integer=La proprietà {0} deve essere un numero valido
typeMismatch.java.lang.Long=La proprietà {0} deve essere un numero valido
typeMismatch.java.lang.Short=La proprietà {0} deve essere un numero valido
typeMismatch.java.math.BigDecimal=La proprietà {0} deve essere un numero valido
typeMismatch.java.math.BigInteger=La proprietà {0} deve essere un numero valido

View File

@ -1,7 +1,7 @@
default.doesnt.match.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]パターンと一致していません。
default.invalid.url.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、URLではありません。
default.invalid.creditCard.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、正当なクレジットカード番号ではありません。
default.invalid.email.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、メールアドレスではありません。
default.invalid.url.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、有効なURLではありません。
default.invalid.creditCard.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、有効なクレジットカード番号ではありません。
default.invalid.email.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、有効なメールアドレスではありません。
default.invalid.range.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]から[{4}]範囲内を指定してください。
default.invalid.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]から[{4}]以内を指定してください。
default.invalid.max.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最大値[{3}]より大きいです。
@ -17,3 +17,39 @@ default.not.unique.message=クラス[{1}]プロパティ[{0}]の値[{2}]は既
default.paginate.prev=戻る
default.paginate.next=次へ
default.boolean.true=はい
default.boolean.false=いいえ
default.date.format=yyyy/MM/dd HH:mm:ss z
default.number.format=0
default.created.message={0}(id:{1})を作成しました。
default.updated.message={0}(id:{1})を更新しました。
default.deleted.message={0}(id:{1})を削除しました。
default.not.deleted.message={0}(id:{1})は削除できませんでした。
default.not.found.message={0}(id:{1})は見つかりませんでした。
default.optimistic.locking.failure=この{0}は編集中に他のユーザによって先に更新されています。
default.home.label=ホーム
default.list.label={0}リスト
default.add.label={0}を追加
default.new.label={0}を新規作成
default.create.label={0}を作成
default.show.label={0}詳細
default.edit.label={0}を編集
default.button.create.label=作成
default.button.edit.label=編集
default.button.update.label=更新
default.button.delete.label=削除
default.button.delete.confirm.message=本当に削除してよろしいですか?
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL={0}は有効なURLでなければなりません。
typeMismatch.java.net.URI={0}は有効なURIでなければなりません。
typeMismatch.java.util.Date={0}は有効な日付でなければなりません。
typeMismatch.java.lang.Double={0}は有効な数値でなければなりません。
typeMismatch.java.lang.Integer={0}は有効な数値でなければなりません。
typeMismatch.java.lang.Long={0}は有効な数値でなければなりません。
typeMismatch.java.lang.Short={0}は有効な数値でなければなりません。
typeMismatch.java.math.BigDecimal={0}は有効な数値でなければなりません。
typeMismatch.java.math.BigInteger={0}は有効な数値でなければなりません。

View File

@ -0,0 +1,56 @@
default.doesnt.match.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overholder ikke mønsteret [{3}]
default.invalid.url.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke en gyldig URL
default.invalid.creditCard.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke et gyldig kredittkortnummer
default.invalid.email.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke en gyldig epostadresse
default.invalid.range.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke innenfor intervallet [{3}] til [{4}]
default.invalid.size.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke innenfor intervallet [{3}] til [{4}]
default.invalid.max.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overstiger maksimumsverdien på [{3}]
default.invalid.min.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er under minimumsverdien på [{3}]
default.invalid.max.size.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overstiger maksimumslengden på [{3}]
default.invalid.min.size.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er kortere enn minimumslengden på [{3}]
default.invalid.validator.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overholder ikke den brukerdefinerte valideringen
default.not.inlist.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] finnes ikke i listen [{3}]
default.blank.message=Feltet [{0}] i klassen [{1}] kan ikke være tom
default.not.equal.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] kan ikke være [{3}]
default.null.message=Feltet [{0}] i klassen [{1}] kan ikke være null
default.not.unique.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] må være unik
default.paginate.prev=Forrige
default.paginate.next=Neste
default.boolean.true=Ja
default.boolean.false=Nei
default.date.format=dd.MM.yyyy HH:mm:ss z
default.number.format=0
default.created.message={0} {1} opprettet
default.updated.message={0} {1} oppdatert
default.deleted.message={0} {1} slettet
default.not.deleted.message={0} {1} kunne ikke slettes
default.not.found.message={0} med id {1} ble ikke funnet
default.optimistic.locking.failure=En annen bruker har oppdatert denne {0} mens du redigerte
default.home.label=Hjem
default.list.label={0}liste
default.add.label=Legg til {0}
default.new.label=Ny {0}
default.create.label=Opprett {0}
default.show.label=Vis {0}
default.edit.label=Endre {0}
default.button.create.label=Opprett
default.button.edit.label=Endre
default.button.update.label=Oppdater
default.button.delete.label=Slett
default.button.delete.confirm.message=Er du sikker?
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Feltet {0} må være en gyldig URL
typeMismatch.java.net.URI=Feltet {0} må være en gyldig URI
typeMismatch.java.util.Date=Feltet {0} må være en gyldig dato
typeMismatch.java.lang.Double=Feltet {0} må være et gyldig tall
typeMismatch.java.lang.Integer=Feltet {0} må være et gyldig heltall
typeMismatch.java.lang.Long=Feltet {0} må være et gyldig heltall
typeMismatch.java.lang.Short=Feltet {0} må være et gyldig heltall
typeMismatch.java.math.BigDecimal=Feltet {0} må være et gyldig tall
typeMismatch.java.math.BigInteger=Feltet {0} må være et gyldig heltall

View File

@ -7,7 +7,7 @@ default.invalid.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}]
default.invalid.max.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] overschrijdt de maximumwaarde [{3}]
default.invalid.min.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is minder dan de minimumwaarde [{3}]
default.invalid.max.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] overschrijdt de maximumgrootte van [{3}]
default.invalid.min.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is minder dan mainimumgrootte van [{3}]
default.invalid.min.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is minder dan minimumgrootte van [{3}]
default.invalid.validator.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is niet geldig
default.not.inlist.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] komt niet voor in de lijst [{3}]
default.blank.message=Attribuut [{0}] van entiteit [{1}] mag niet leeg zijn
@ -17,6 +17,31 @@ default.not.unique.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] m
default.paginate.prev=Vorige
default.paginate.next=Volgende
default.boolean.true=Ja
default.boolean.false=Nee
default.date.format=dd-MM-yyyy HH:mm:ss z
default.number.format=0
default.created.message={0} {1} ingevoerd
default.updated.message={0} {1} gewijzigd
default.deleted.message={0} {1} verwijderd
default.not.deleted.message={0} {1} kon niet worden verwijderd
default.not.found.message={0} met id {1} kon niet worden gevonden
default.optimistic.locking.failure=Een andere gebruiker heeft deze {0} al gewijzigd
default.home.label=Home
default.list.label={0} Overzicht
default.add.label=Toevoegen {0}
default.new.label=Invoeren {0}
default.create.label=Invoeren {0}
default.show.label=Details {0}
default.edit.label=Wijzigen {0}
default.button.create.label=Invoeren
default.button.edit.label=Wijzigen
default.button.update.label=Opslaan
default.button.delete.label=Verwijderen
default.button.delete.confirm.message=Weet je het zeker?
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Attribuut {0} is geen geldige URL

View File

@ -0,0 +1,59 @@
#
# Translated by Matthias Hryniszak - padcom@gmail.com
#
default.doesnt.match.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie pasuje do wymaganego wzorca [{3}]
default.invalid.url.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] jest niepoprawnym adresem URL
default.invalid.creditCard.message=Właściwość [{0}] klasy [{1}] with value [{2}] nie jest poprawnym numerem karty kredytowej
default.invalid.email.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie jest poprawnym adresem e-mail
default.invalid.range.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie zawiera się zakładanym zakresie od [{3}] do [{4}]
default.invalid.size.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie zawiera się w zakładanym zakresie rozmiarów od [{3}] do [{4}]
default.invalid.max.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] przekracza maksymalną wartość [{3}]
default.invalid.min.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] jest mniejsza niż minimalna wartość [{3}]
default.invalid.max.size.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] przekracza maksymalny rozmiar [{3}]
default.invalid.min.size.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] jest mniejsza niż minimalny rozmiar [{3}]
default.invalid.validator.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie spełnia założonych niestandardowych warunków
default.not.inlist.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie zawiera się w liście [{3}]
default.blank.message=Właściwość [{0}] klasy [{1}] nie może być pusta
default.not.equal.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie może równać się [{3}]
default.null.message=Właściwość [{0}] klasy [{1}] nie może być null
default.not.unique.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] musi być unikalna
default.paginate.prev=Poprzedni
default.paginate.next=Następny
default.boolean.true=Prawda
default.boolean.false=Fałsz
default.date.format=yyyy-MM-dd HH:mm:ss z
default.number.format=0
default.created.message=Utworzono {0} {1}
default.updated.message=Zaktualizowano {0} {1}
default.deleted.message=Usunięto {0} {1}
default.not.deleted.message={0} {1} nie mógł zostać usunięty
default.not.found.message=Nie znaleziono {0} o id {1}
default.optimistic.locking.failure=Inny użytkownik zaktualizował ten obiekt {0} w trakcie twoich zmian
default.home.label=Strona domowa
default.list.label=Lista {0}
default.add.label=Dodaj {0}
default.new.label=Utwórz {0}
default.create.label=Utwórz {0}
default.show.label=Pokaż {0}
default.edit.label=Edytuj {0}
default.button.create.label=Utwórz
default.button.edit.label=Edytuj
default.button.update.label=Zaktualizuj
default.button.delete.label=Usuń
default.button.delete.confirm.message=Czy jesteś pewien?
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Właściwość {0} musi być poprawnym adresem URL
typeMismatch.java.net.URI=Właściwość {0} musi być poprawnym adresem URI
typeMismatch.java.util.Date=Właściwość {0} musi być poprawną datą
typeMismatch.java.lang.Double=Właściwość {0} musi być poprawnyą liczbą
typeMismatch.java.lang.Integer=Właściwość {0} musi być poprawnyą liczbą
typeMismatch.java.lang.Long=Właściwość {0} musi być poprawnyą liczbą
typeMismatch.java.lang.Short=Właściwość {0} musi być poprawnyą liczbą
typeMismatch.java.math.BigDecimal=Właściwość {0} musi być poprawnyą liczbą
typeMismatch.java.math.BigInteger=Właściwość {0} musi być poprawnyą liczbą

View File

@ -0,0 +1,59 @@
#
# Translated by Lucas Teixeira - lucastex@gmail.com
#
default.doesnt.match.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atende ao padrão definido [{3}]
default.invalid.url.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é uma URL válida
default.invalid.creditCard.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um número válido de cartão de crédito
default.invalid.email.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um endereço de email válido.
default.invalid.range.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está entre a faixa de valores válida de [{3}] até [{4}]
default.invalid.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está na faixa de tamanho válida de [{3}] até [{4}]
default.invalid.max.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapass o valor máximo [{3}]
default.invalid.min.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o valor mínimo [{3}]
default.invalid.max.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapassa o tamanho máximo de [{3}]
default.invalid.min.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o tamanho mínimo de [{3}]
default.invalid.validator.message=O campo [{0}] da classe [{1}] com o valor [{2}] não passou na validação
default.not.inlist.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um valor dentre os permitidos na lista [{3}]
default.blank.message=O campo [{0}] da classe [{1}] não pode ficar em branco
default.not.equal.message=O campo [{0}] da classe [{1}] com o valor [{2}] não pode ser igual a [{3}]
default.null.message=O campo [{0}] da classe [{1}] não pode ser vazia
default.not.unique.message=O campo [{0}] da classe [{1}] com o valor [{2}] deve ser único
default.paginate.prev=Anterior
default.paginate.next=Próximo
default.boolean.true=Sim
default.boolean.false=Não
default.date.format=dd/MM/yyyy HH:mm:ss z
default.number.format=0
default.created.message={0} {1} criado
default.updated.message={0} {1} atualizado
default.deleted.message={0} {1} removido
default.not.deleted.message={0} {1} não pode ser removido
default.not.found.message={0} não foi encontrado com id {1}
default.optimistic.locking.failure=Outro usuário atualizou este [{0}] enquanto você tentou salvá-lo
default.home.label=Principal
default.list.label={0} Listagem
default.add.label=Adicionar {0}
default.new.label=Novo {0}
default.create.label=Criar {0}
default.show.label=Ver {0}
default.edit.label=Editar {0}
default.button.create.label=Criar
default.button.edit.label=Editar
default.button.update.label=Alterar
default.button.delete.label=Remover
default.button.delete.confirm.message=Tem certeza?
# Mensagens de erro em atribuição de valores. Use "typeMismatch.$className.$propertyName" para customizar (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=O campo {0} deve ser uma URL válida.
typeMismatch.java.net.URI=O campo {0} deve ser uma URI válida.
typeMismatch.java.util.Date=O campo {0} deve ser uma data válida
typeMismatch.java.lang.Double=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Integer=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Long=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Short=O campo {0} deve ser um número válido.
typeMismatch.java.math.BigDecimal=O campo {0} deve ser um número válido.
typeMismatch.java.math.BigInteger=O campo {0} deve ser um número válido.

View File

@ -0,0 +1,34 @@
#
# translation by miguel.ping@gmail.com, based on pt_BR translation by Lucas Teixeira - lucastex@gmail.com
#
default.doesnt.match.message=O campo [{0}] da classe [{1}] com o valor [{2}] não corresponde ao padrão definido [{3}]
default.invalid.url.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um URL válido
default.invalid.creditCard.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um número válido de cartão de crédito
default.invalid.email.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um endereço de email válido.
default.invalid.range.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está dentro dos limites de valores válidos de [{3}] a [{4}]
default.invalid.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] está fora dos limites de tamanho válido de [{3}] a [{4}]
default.invalid.max.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapassa o valor máximo [{3}]
default.invalid.min.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o valor mínimo [{3}]
default.invalid.max.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapassa o tamanho máximo de [{3}]
default.invalid.min.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o tamanho mínimo de [{3}]
default.invalid.validator.message=O campo [{0}] da classe [{1}] com o valor [{2}] não passou na validação
default.not.inlist.message=O campo [{0}] da classe [{1}] com o valor [{2}] não se encontra nos valores permitidos da lista [{3}]
default.blank.message=O campo [{0}] da classe [{1}] não pode ser vazio
default.not.equal.message=O campo [{0}] da classe [{1}] com o valor [{2}] não pode ser igual a [{3}]
default.null.message=O campo [{0}] da classe [{1}] não pode ser vazio
default.not.unique.message=O campo [{0}] da classe [{1}] com o valor [{2}] deve ser único
default.paginate.prev=Anterior
default.paginate.next=Próximo
# Mensagens de erro em atribuição de valores. Use "typeMismatch.$className.$propertyName" para personalizar(eg typeMismatch.Book.author)
typeMismatch.java.net.URL=O campo {0} deve ser um URL válido.
typeMismatch.java.net.URI=O campo {0} deve ser um URI válido.
typeMismatch.java.util.Date=O campo {0} deve ser uma data válida
typeMismatch.java.lang.Double=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Integer=O campo {0} deve ser um número válido.
typeMismatch.java.lang.Long=O campo {0} deve ser um número valido.
typeMismatch.java.lang.Short=O campo {0} deve ser um número válido.
typeMismatch.java.math.BigDecimal=O campo {0} deve ser um número válido.
typeMismatch.java.math.BigInteger=O campo {0} deve ser um número válido.

View File

View File

@ -0,0 +1,55 @@
default.doesnt.match.message=Attributet [{0}] för klassen [{1}] med värde [{2}] matchar inte mot uttrycket [{3}]
default.invalid.url.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte en giltig URL
default.invalid.creditCard.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte ett giltigt kreditkortsnummer
default.invalid.email.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte en giltig e-postadress
default.invalid.range.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte inom intervallet [{3}] till [{4}]
default.invalid.size.message=Attributet [{0}] för klassen [{1}] med värde [{2}] har en storlek som inte är inom [{3}] till [{4}]
default.invalid.max.message=Attributet [{0}] för klassen [{1}] med värde [{2}] överskrider maxvärdet [{3}]
default.invalid.min.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är mindre än minimivärdet [{3}]
default.invalid.max.size.message=Attributet [{0}] för klassen [{1}] med värde [{2}] överskrider maxstorleken [{3}]
default.invalid.min.size.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är mindre än minimistorleken [{3}]
default.invalid.validator.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte giltigt enligt anpassad regel
default.not.inlist.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte giltigt, måste vara ett av [{3}]
default.blank.message=Attributet [{0}] för klassen [{1}] får inte vara tomt
default.not.equal.message=Attributet [{0}] för klassen [{1}] med värde [{2}] får inte vara lika med [{3}]
default.null.message=Attributet [{0}] för klassen [{1}] får inte vara tomt
default.not.unique.message=Attributet [{0}] för klassen [{1}] med värde [{2}] måste vara unikt
default.paginate.prev=Föregående
default.paginate.next=Nästa
default.boolean.true=Sant
default.boolean.false=Falskt
default.date.format=yyyy-MM-dd HH:mm:ss z
default.number.format=0
default.created.message={0} {1} skapades
default.updated.message={0} {1} uppdaterades
default.deleted.message={0} {1} borttagen
default.not.deleted.message={0} {1} kunde inte tas bort
default.not.found.message={0} med id {1} kunde inte hittas
default.optimistic.locking.failure=En annan användare har uppdaterat det här {0} objektet medan du redigerade det
default.home.label=Hem
default.list.label= {0} - Lista
default.add.label=Lägg till {0}
default.new.label=Skapa {0}
default.create.label=Skapa {0}
default.show.label=Visa {0}
default.edit.label=Ändra {0}
default.button.create.label=Skapa
default.button.edit.label=Ändra
default.button.update.label=Uppdatera
default.button.delete.label=Ta bort
default.button.delete.confirm.message=Är du säker?
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=Värdet för {0} måste vara en giltig URL
typeMismatch.java.net.URI=Värdet för {0} måste vara en giltig URI
typeMismatch.java.util.Date=Värdet {0} måste vara ett giltigt datum
typeMismatch.java.lang.Double=Värdet {0} måste vara ett giltigt nummer
typeMismatch.java.lang.Integer=Värdet {0} måste vara ett giltigt heltal
typeMismatch.java.lang.Long=Värdet {0} måste vara ett giltigt heltal
typeMismatch.java.lang.Short=Värdet {0} måste vara ett giltigt heltal
typeMismatch.java.math.BigDecimal=Värdet {0} måste vara ett giltigt nummer
typeMismatch.java.math.BigInteger=Värdet {0} måste vara ett giltigt heltal

View File

@ -17,6 +17,31 @@ default.not.unique.message=คุณสมบัติ [{0}] ของคลา
default.paginate.prev=ก่อนหน้า
default.paginate.next=ถัดไป
default.boolean.true=จริง
default.boolean.false=เท็จ
default.date.format=dd-MM-yyyy HH:mm:ss z
default.number.format=0
default.created.message=สร้าง {0} {1} เรียบร้อยแล้ว
default.updated.message=ปรับปรุง {0} {1} เรียบร้อยแล้ว
default.deleted.message=ลบ {0} {1} เรียบร้อยแล้ว
default.not.deleted.message=ไม่สามารถลบ {0} {1}
default.not.found.message=ไม่พบ {0} ด้วย id {1} นี้
default.optimistic.locking.failure=มีผู้ใช้ท่านอื่นปรับปรุง {0} ขณะที่คุณกำลังแก้ไขข้อมูลอยู่
default.home.label=หน้าแรก
default.list.label=รายการ {0}
default.add.label=เพิ่ม {0}
default.new.label=สร้าง {0} ใหม่
default.create.label=สร้าง {0}
default.show.label=แสดง {0}
default.edit.label=แก้ไข {0}
default.button.create.label=สร้าง
default.button.edit.label=แก้ไข
default.button.update.label=ปรับปรุง
default.button.delete.label=ลบ
default.button.delete.confirm.message=คุณแน่ใจหรือไม่ ?
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
typeMismatch.java.net.URL=คุณสมบัติ '{0}' จะต้องเป็นค่า URL ที่ถูกต้อง

View File

View File

@ -1,11 +0,0 @@
<jsec:isLoggedIn>
<jsec:hasRole name="Administrator">
<div align="right">
<g:link controller="user" action="list">Manage Users</g:link> |
Logged in as: <jsec:principal/> (<g:link controller="auth" action="signOut">sign out</g:link>)
</div>
</jsec:hasRole>
<jsec:lacksRole name="Administrator">
<div align="right">Logged in as: <jsec:principal/> (<g:link controller="auth" action="signOut">sign out</g:link>)</div>
</jsec:lacksRole>
</jsec:isLoggedIn>

60
bigbluebutton-web/grails-app/views/error.gsp Normal file → Executable file
View File

@ -1,46 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<title>Grails Runtime Exception</title>
<style type="text/css">
.message {
border: 1px solid black;
padding: 5px;
background-color:#E9E9E9;
}
.stack {
border: 1px solid black;
padding: 5px;
overflow:auto;
height: 300px;
}
.snippet {
padding: 5px;
background-color:white;
border:1px solid black;
margin:3px;
font-family:courier;
}
</style>
</head>
<body>
<h1>Grails Runtime Exception</h1>
<h2>Error Details</h2>
<div class="message">
<strong>Message:</strong> ${exception.message?.encodeAsHTML()} <br />
<strong>Caused by:</strong> ${exception.cause?.message?.encodeAsHTML()} <br />
<strong>Class:</strong> ${exception.className} <br />
<strong>At Line:</strong> [${exception.lineNumber}] <br />
<strong>Code Snippet:</strong><br />
<div class="snippet">
<g:each var="cs" in="${exception.codeSnippet}">
${cs?.encodeAsHTML()}<br />
</g:each>
</div>
</div>
<h2>Stack Trace</h2>
<div class="stack">
<pre><g:each in="${exception.stackTraceLines}">${it.encodeAsHTML()}<br/></g:each></pre>
</div>
</body>
<head>
<title><g:if env="development">Grails Runtime Exception</g:if><g:else>Error</g:else></title>
<meta name="layout" content="main">
<g:if env="development"><link rel="stylesheet" href="${resource(dir: 'css', file: 'errors.css')}" type="text/css"></g:if>
</head>
<body>
<g:if env="development">
<g:renderException exception="${exception}" />
</g:if>
<g:else>
<ul class="errors">
<li>An error has occurred</li>
</ul>
</g:else>
</body>
</html>

View File

@ -0,0 +1,122 @@
<!DOCTYPE html>
<html>
<head>
<meta name="layout" content="main"/>
<title>Welcome to Grails</title>
<style type="text/css" media="screen">
#status {
background-color: #eee;
border: .2em solid #fff;
margin: 2em 2em 1em;
padding: 1em;
width: 12em;
float: left;
-moz-box-shadow: 0px 0px 1.25em #ccc;
-webkit-box-shadow: 0px 0px 1.25em #ccc;
box-shadow: 0px 0px 1.25em #ccc;
-moz-border-radius: 0.6em;
-webkit-border-radius: 0.6em;
border-radius: 0.6em;
}
.ie6 #status {
display: inline; /* float double margin fix http://www.positioniseverything.net/explorer/doubled-margin.html */
}
#status ul {
font-size: 0.9em;
list-style-type: none;
margin-bottom: 0.6em;
padding: 0;
}
#status li {
line-height: 1.3;
}
#status h1 {
text-transform: uppercase;
font-size: 1.1em;
margin: 0 0 0.3em;
}
#page-body {
margin: 2em 1em 1.25em 18em;
}
h2 {
margin-top: 1em;
margin-bottom: 0.3em;
font-size: 1em;
}
p {
line-height: 1.5;
margin: 0.25em 0;
}
#controller-list ul {
list-style-position: inside;
}
#controller-list li {
line-height: 1.3;
list-style-position: inside;
margin: 0.25em 0;
}
@media screen and (max-width: 480px) {
#status {
display: none;
}
#page-body {
margin: 0 1em 1em;
}
#page-body h1 {
margin-top: 0;
}
}
</style>
</head>
<body>
<a href="#page-body" class="skip"><g:message code="default.link.skip.label" default="Skip to content&hellip;"/></a>
<div id="status" role="complementary">
<h1>Application Status</h1>
<ul>
<li>App version: <g:meta name="app.version"/></li>
<li>Grails version: <g:meta name="app.grails.version"/></li>
<li>Groovy version: ${GroovySystem.getVersion()}</li>
<li>JVM version: ${System.getProperty('java.version')}</li>
<li>Reloading active: ${grails.util.Environment.reloadingAgentEnabled}</li>
<li>Controllers: ${grailsApplication.controllerClasses.size()}</li>
<li>Domains: ${grailsApplication.domainClasses.size()}</li>
<li>Services: ${grailsApplication.serviceClasses.size()}</li>
<li>Tag Libraries: ${grailsApplication.tagLibClasses.size()}</li>
</ul>
<h1>Installed Plugins</h1>
<ul>
<g:each var="plugin" in="${applicationContext.getBean('pluginManager').allPlugins}">
<li>${plugin.name} - ${plugin.version}</li>
</g:each>
</ul>
</div>
<div id="page-body" role="main">
<h1>Welcome to Grails</h1>
<p>Congratulations, you have successfully started your first Grails application! At the moment
this is the default page, feel free to modify it to either redirect to a controller or display whatever
content you may choose. Below is a list of controllers that are currently deployed in this application,
click on each to execute its default action:</p>
<div id="controller-list" role="navigation">
<h2>Available Controllers:</h2>
<ul>
<g:each var="c" in="${grailsApplication.controllerClasses.sort { it.fullName } }">
<li class="controller"><g:link controller="${c.logicalPropertyName}">${c.fullName}</g:link></li>
</g:each>
</ul>
</div>
</div>
</body>
</html>

48
bigbluebutton-web/grails-app/views/layouts/main.gsp Normal file → Executable file
View File

@ -1,22 +1,28 @@
<html>
<head>
<title><g:layoutTitle default="Grails" /></title>
<link rel="stylesheet" href="${createLinkTo(dir:'css',file:'main.css')}" />
<link rel="shortcut icon" href="${createLinkTo(dir:'images',file:'favicon.ico')}" type="image/x-icon" />
<g:layoutHead />
<g:javascript library="application" />
</head>
<body>
<div id="spinner" class="spinner" style="display:none;">
<img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Spinner" />
</div>
<div class="logo"><img src="${createLinkTo(dir:'images',file:'bbb_banner.jpg')}" alt="BigBlueButton" /></div>
<div class="nav">
<div class="nav">
<g:render template="/adminmenubar" />
</div>
<h1>NOTE: We are deprecating this web interface in favor of the API. This will be removed in the next release.</h1>
<g:layoutBody />
bbb-web v. <g:meta name="app.version"/>
</body>
<!DOCTYPE html>
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"><!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title><g:layoutTitle default="Grails"/></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="${resource(dir: 'images', file: 'favicon.ico')}" type="image/x-icon">
<link rel="apple-touch-icon" href="${resource(dir: 'images', file: 'apple-touch-icon.png')}">
<link rel="apple-touch-icon" sizes="114x114" href="${resource(dir: 'images', file: 'apple-touch-icon-retina.png')}">
<link rel="stylesheet" href="${resource(dir: 'css', file: 'main.css')}" type="text/css">
<link rel="stylesheet" href="${resource(dir: 'css', file: 'mobile.css')}" type="text/css">
<g:layoutHead/>
<r:layoutResources />
</head>
<body>
<div id="grailsLogo" role="banner"><a href="http://grails.org"><img src="${resource(dir: 'images', file: 'grails_logo.png')}" alt="Grails"/></a></div>
<g:layoutBody/>
<div class="footer" role="contentinfo"></div>
<div id="spinner" class="spinner" style="display:none;"><g:message code="spinner.alt" default="Loading&hellip;"/></div>
<g:javascript library="application"/>
<r:layoutResources />
</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>FileResource List</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="/">Home</a></span>
</div>
<div class="body">
<h1>File Upload:</h1><br>
<g:form method="post" enctype="multipart/form-data">
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="presentationName">Presentation Name:</label>
</td>
<td valign="top" class="name">
<input type="text" name="presentationName" value="${presentationName}" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="fileUpload">Upload:</label>
</td>
<td valign="top" class="value ${hasErrors(presentations,field:'upload','errors')}">
<input type="file" id="fileUpload" name="fileUpload" />
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><g:actionSubmit class="upload" value="Upload" action="upload" /></span>
</div>
</g:form>
<h1>Presentations</h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<div id="success"></div>
<div class="list">
<table>
<thead>
<tr>
<g:sortableColumn property="files" title="file"/>
<g:sortableColumn property="path" title="path" colspan="3"/>
</tr>
</thead>
<tbody>
<g:each in="${presentations}" status="i" var="presentation">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td>${presentation.decodeURL()}</td>
<td><g:link action="thumbnails" id="${presentation.replace('.','###')}"> thumbnails </g:link></td>
<td><g:link action="show" id="${presentation.replace('.','###')}"> show </g:link></td>
<td><g:link action="delete" id="${presentation.replace('.','###')}" onclick="return confirm('Are you sure?');"> delete </g:link></td>
</tr>
</g:each>
</tbody>
</table>
</div>
</div>
</body>
</html>

View File

@ -1,24 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>FileResource List</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="/">Home</a></span>
</div>
<div class="body">
<h1>${numThumbs} </h1><br>re ${presSlides}
<g:each var="x" in="${ (0..<numThumbs) }">
<li><g:createLink action="show" params="[foo: 'bar', boo: 'far']"/>
<img src="${createLink(action:'thumbnail', params:[id:presSlides, thumb:x])}" alt="BigBlueButton" />
<g:link action="thumbnail" id="${presSlides}" params="[thumb:x]">t</g:link>
</li>
</g:each>
</div>
</body>
</html>

View File

@ -1,40 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="layout" content="main" />
<title>Upload Presentation</title>
</head>
<body>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:form controller="presentation" method="post" action="upload" enctype="multipart/form-data">
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="presentationName">Presentation Name:</label>
</td>
<td valign="top" class="name">
<input type="text" name="presentation_name" value="${presentation_name}" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="fileUpload">Upload:</label>
</td>
<td valign="top" class="name">
<input type="file" id="fileUpload" name="fileUpload" />
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<!--span class="button"><g:actionSubmit class="upload" value="Upload" action="upload" /></span-->
<input type="submit" value="Upload"/>
</div>
</g:form>
</body>
</html>

338
bigbluebutton-web/grailsw Executable file
View File

@ -0,0 +1,338 @@
##############################################################################
## ##
## Grails JVM Bootstrap for UN*X ##
## ##
##############################################################################
PROGNAME=`basename "$0"`
DIRNAME=`dirname "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that
MAX_FD="maximum"
warn() {
echo "${PROGNAME}: $*"
}
die() {
warn "$*"
exit 1
}
earlyInit() {
return
}
lateInit() {
return
}
GROOVY_STARTUP=~/.groovy/startup
if [ -r "$GROOVY_STARTUP" ]; then
. "$GROOVY_STARTUP"
fi
earlyInit
# OS specific support (must be 'true' or 'false').
cygwin=false;
darwin=false;
case "`uname`" in
CYGWIN*)
cygwin=true
;;
Darwin*)
darwin=true
;;
esac
# Attempt to set JAVA_HOME if it's not already set
if [ -z "$JAVA_HOME" ]; then
# Set JAVA_HOME for Darwin
if $darwin; then
[ -z "$JAVA_HOME" -a -d "/Library/Java/Home" ] &&
export JAVA_HOME="/Library/Java/Home"
[ -z "$JAVA_HOME" -a -d "/System/Library/Frameworks/JavaVM.framework/Home" ] &&
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Home"
fi
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$GRAILS_HOME" ] &&
GRAILS_HOME=`cygpath --unix "$GRAILS_HOME"`
[ -n "$JAVACMD" ] &&
JAVACMD=`cygpath --unix "$JAVACMD"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CP" ] &&
CP=`cygpath --path --unix "$CP"`
fi
# Remove possible trailing slash (after possible cygwin correction)
GRAILS_HOME=`echo $GRAILS_HOME | sed -e 's|/$||g'`
# Locate GRAILS_HOME if not it is not set
if [ -z "$GRAILS_HOME" -o ! -d "$GRAILS_HOME" ] ; then
# resolve links - $0 may be a link to groovy's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/.."
GRAILS_HOME="`pwd -P`"
cd "$SAVED"
fi
# Warn the user if JAVA_HOME and/or GRAILS_HOME are not set.
if [ -z "$JAVA_HOME" ] ; then
die "JAVA_HOME environment variable is not set"
elif [ ! -d "$JAVA_HOME" ] ; then
die "JAVA_HOME is not a directory: $JAVA_HOME"
fi
if [ -z "$GRAILS_HOME" ] ; then
warn "GRAILS_HOME environment variable is not set"
fi
if [ ! -d "$GRAILS_HOME" ] ; then
die "GRAILS_HOME is not a directory: $GRAILS_HOME"
fi
# Use default groovy-conf config
if [ -z "$STARTER_CONF" ]; then
STARTER_CONF="$GRAILS_HOME/conf/groovy-starter.conf"
fi
STARTER_CLASSPATH="wrapper/grails-wrapper-runtime-2.3.0.jar:wrapper:."
# Allow access to Cocoa classes on OS X
if $darwin; then
STARTER_CLASSPATH="$STARTER_CLASSPATH:/System/Library/Java/Support"
fi
# Create the final classpath
# Setting a classpath using the -cp or -classpath option means not to use
# the global classpath. Groovy behaves then the same as the java
# interpreter
if [ -n "$CP" ] ; then
CP="$CP"
elif [ -n "$CLASSPATH" ] ; then
CP="$CLASSPATH"
fi
# Determine the Java command to use to start the JVM
if [ -z "$JAVACMD" ]; then
if [ -n "$JAVA_HOME" ]; then
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="java"
fi
fi
if [ ! -x "$JAVACMD" ]; then
die "JAVA_HOME is not defined correctly; can not execute: $JAVACMD"
fi
# Increase the maximum file descriptors if we can
if [ "$cygwin" = "false" ]; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ "$MAX_FD_LIMIT" != "unlimited" ]; then
if [ $? -eq 0 ]; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
# use the businessSystem max
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ]; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query businessSystem maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
fi
# Fix the cygwin agent issue
AGENT_GRAILS_HOME=$GRAILS_HOME
if $cygwin ; then
[ -n "$GRAILS_HOME" ] &&
AGENT_GRAILS_HOME=`cygpath --windows "$GRAILS_HOME"`
fi
if [ -z "$GRAILS_AGENT_CACHE_DIR" ]; then
GRAILS_AGENT_CACHE_DIR=~/.grails/2.3.0/
fi
SPRINGLOADED_PARAMS=profile=grails\;cacheDir=$GRAILS_AGENT_CACHE_DIR
if [ ! -d "$GRAILS_AGENT_CACHE_DIR" ]; then
mkdir -p "$GRAILS_AGENT_CACHE_DIR"
fi
# Process JVM args
AGENT_STRING="-javaagent:wrapper/springloaded-core-1.1.3.jar -noverify -Dspringloaded.synchronize=true -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=$SPRINGLOADED_PARAMS"
CMD_LINE_ARGS=""
DISABLE_RELOADING=true
while true; do
if [ "$1" = "-cp" ] || [ "$1" = "-classpath" ]; then
CP=$2
shift 2
break
fi
if [ "$1" = "-reloading" ]; then
AGENT=$AGENT_STRING
DISABLE_RELOADING=false
shift
break
fi
if [ "$1" = "-noreloading" ]; then
DISABLE_RELOADING=true
shift
break
fi
if [ "$1" = "-debug" ]; then
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Dgrails.full.stacktrace=true -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
shift
break
fi
if [ "$1" != -* ]; then
break
fi
CMD_LINE_ARGS="$CMD_LINE_ARGS $1"
shift
done
# Enable agent-based reloading for the 'run-app' command.
if ! $DISABLE_RELOADING; then
for a in "$@"; do
if [ "$a" = "run-app" ]; then
AGENT=$AGENT_STRING
fi
done
if [ $# = 0 ]; then
AGENT=$AGENT_STRING
fi
fi
ARGUMENTS="$CMD_LINE_ARGS $@"
# Setup Profiler
useprofiler=false
if [ "x$PROFILER" != "x" ]; then
if [ -r "$PROFILER" ]; then
. $PROFILER
useprofiler=true
else
die "Profiler file not found: $PROFILER"
fi
fi
# For Darwin, use classes.jar for TOOLS_JAR
TOOLS_JAR="$JAVA_HOME/lib/tools.jar"
if $darwin; then
JAVA_OPTS="-Xdock:name=Grails -Xdock:icon=$GRAILS_HOME/media/icons/grails.icns $JAVA_OPTS"
# TOOLS_JAR="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar"
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
GRAILS_HOME=`cygpath --path --mixed "$GRAILS_HOME"`
JAVA_HOME=`cygpath --path --mixed "$JAVA_HOME"`
STARTER_CONF=`cygpath --path --mixed "$STARTER_CONF"`
CP=`cygpath --path --mixed "$CP"`
TOOLS_JAR=`cygpath --path --mixed "$TOOLS_JAR"`
STARTER_CLASSPATH=`cygpath --path --mixed "$STARTER_CLASSPATH"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GROOVY_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GROOVY_CYGPATTERN)"
fi
# Now convert the arguments
ARGUMENTS=""
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
if [ $CHECK -ne 0 ] ; then
convArg=`cygpath --path --ignore --mixed "$arg"`
else
convArg=$arg
fi
ARGUMENTS="$ARGUMENTS $convArg"
done
fi
STARTER_MAIN_CLASS=org.grails.wrapper.GrailsWrapper
lateInit
startGrails() {
CLASS=$1
shift
if [ -n "$GRAILS_OPTS" ]
then
GRAILS_OPTS="$GRAILS_OPTS"
else
GRAILS_OPTS="-server -Xmx768M -Xms64M -XX:PermSize=32m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8"
fi
JAVA_OPTS="$GRAILS_OPTS $JAVA_OPTS $AGENT"
# Start the Profiler or the JVM
if $useprofiler; then
runProfiler
else
if [ $# -eq 0 ] ; then # no argument given
exec "$JAVACMD" $JAVA_OPTS \
-classpath "$STARTER_CLASSPATH" \
-Dgrails.home="$GRAILS_HOME" \
-Dtools.jar="$TOOLS_JAR" \
-Djava.net.preferIPv4Stack=true \
$STARTER_MAIN_CLASS \
--main $CLASS \
--conf "$STARTER_CONF" \
--classpath "$CP"
else
exec "$JAVACMD" $JAVA_OPTS \
-classpath "$STARTER_CLASSPATH" \
-Dgrails.home="$GRAILS_HOME" \
-Dtools.jar="$TOOLS_JAR" \
-Djava.net.preferIPv4Stack=true \
$STARTER_MAIN_CLASS \
--main $CLASS \
--conf "$STARTER_CONF" \
--classpath "$CP" \
"${ARGUMENTS}"
fi
fi
}
startGrails $STARTER_MAIN_CLASS "$@"

176
bigbluebutton-web/grailsw.bat Executable file
View File

@ -0,0 +1,176 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem ##
@rem Grails JVM Bootstrap for Windows ##
@rem ##
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set CLASS=org.grails.wrapper.GrailsWrapper
if exist "%USERPROFILE%/.groovy/preinit.bat" call "%USERPROFILE%/.groovy/preinit.bat"
@rem Determine the command interpreter to execute the "CD" later
set COMMAND_COM="cmd.exe"
if exist "%SystemRoot%\system32\cmd.exe" set COMMAND_COM="%SystemRoot%\system32\cmd.exe"
if exist "%SystemRoot%\command.com" set COMMAND_COM="%SystemRoot%\command.com"
@rem Use explicit find.exe to prevent cygwin and others find.exe from being used
set FIND_EXE="find.exe"
if exist "%SystemRoot%\system32\find.exe" set FIND_EXE="%SystemRoot%\system32\find.exe"
if exist "%SystemRoot%\command\find.exe" set FIND_EXE="%SystemRoot%\command\find.exe"
:check_JAVA_HOME
@rem Make sure we have a valid JAVA_HOME
if not "%JAVA_HOME%" == "" goto have_JAVA_HOME
echo.
echo ERROR: Environment variable JAVA_HOME has not been set.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo.
goto end
:have_JAVA_HOME
@rem Remove trailing slash from JAVA_HOME if found
if "%JAVA_HOME:~-1%"=="\" SET JAVA_HOME=%JAVA_HOME:~0,-1%
@rem Validate JAVA_HOME
%COMMAND_COM% /C DIR "%JAVA_HOME%" 2>&1 | %FIND_EXE% /I /C "%JAVA_HOME%" >nul
if not errorlevel 1 goto check_GRAILS_HOME
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo.
goto end
:check_GRAILS_HOME
@rem Define GRAILS_HOME if not set
if "%GRAILS_HOME%" == "" set GRAILS_HOME=%DIRNAME%..
@rem Remove trailing slash from GRAILS_HOME if found
if "%GRAILS_HOME:~-1%"=="\" SET GRAILS_HOME=%GRAILS_HOME:~0,-1%
:init
for %%x in ("%HOMEPATH%") do set SHORTHOME=%%~fsx
if "x%GRAILS_AGENT_CACHE_DIR%" == "x" set GRAILS_AGENT_CACHE_DIR=%SHORTHOME%/.grails/2.3.0/
set SPRINGLOADED_PARAMS="profile=grails;cacheDir=%GRAILS_AGENT_CACHE_DIR%"
if not exist "%GRAILS_AGENT_CACHE_DIR%" mkdir "%GRAILS_AGENT_CACHE_DIR%"
set AGENT_STRING=-javaagent:wrapper/springloaded-core-1.1.3.jar -noverify -Dspringloaded.synchronize=true -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=\"%SPRINGLOADED_PARAMS%\"
set DISABLE_RELOADING=
if "%GRAILS_OPTS%" == "" set GRAILS_OPTS=-server -Xmx768M -Xms64M -XX:PermSize=32m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8
@rem Get command-line arguments, handling Windows variants
if "%@eval[2+2]" == "4" goto 4NT_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set CP=
set INTERACTIVE=true
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CURR_ARG=%~1
if "%CURR_ARG:~0,2%" == "-D" (
set GRAILS_OPTS=%GRAILS_OPTS% %~1=%~2
shift
shift
goto win9xME_args_slurp
)
if "x%~1" == "x-cp" (
set CP=%~2
shift
shift
goto win9xME_args_slurp
)
if "x%~1" == "x-debug" (
set JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xnoagent -Dgrails.full.stacktrace=true -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
shift
goto win9xME_args_slurp
)
if "x%~1" == "x-classpath" (
set CP=%~2
shift
shift
goto win9xME_args_slurp
)
if "x%~1" == "x-reloading" (
set AGENT=%AGENT_STRING%
shift
goto win9xME_args_slurp
)
if "x%~1" == "xrun-app" (
set AGENT=%AGENT_STRING%
set INTERACTIVE=
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto win9xME_args_slurp
)
if "x%~1" == "x-noreloading" (
set DISABLE_RELOADING=true
shift
goto win9xME_args_slurp
)
set INTERACTIVE=
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto win9xME_args_slurp
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set STARTER_CLASSPATH=wrapper/grails-wrapper-runtime-2.3.0.jar;wrapper;.
if exist "%USERPROFILE%/.groovy/init.bat" call "%USERPROFILE%/.groovy/init.bat"
@rem Setting a classpath using the -cp or -classpath option means not to use
@rem the global classpath. Groovy behaves then the same as the java interpreter
if "x" == "x%CLASSPATH%" goto after_classpath
set CP=%CP%;%CLASSPATH%
:after_classpath
if "x%DISABLE_RELOADING%" == "xtrue" (
set AGENT=
) else (
if "x%INTERACTIVE%" == "xtrue" (
set AGENT=%AGENT_STRING%
)
)
set STARTER_MAIN_CLASS=org.grails.wrapper.GrailsWrapper
set STARTER_CONF=%GRAILS_HOME%\conf\groovy-starter.conf
set JAVA_EXE=%JAVA_HOME%\bin\java.exe
set TOOLS_JAR=%JAVA_HOME%\lib\tools.jar
set JAVA_OPTS=%GRAILS_OPTS% %JAVA_OPTS% %AGENT%
set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name="%PROGNAME%"
set JAVA_OPTS=%JAVA_OPTS% -Dgrails.home="%GRAILS_HOME%"
set JAVA_OPTS=%JAVA_OPTS% -Dgrails.version=2.3.0
set JAVA_OPTS=%JAVA_OPTS% -Dbase.dir=.
set JAVA_OPTS=%JAVA_OPTS% -Dtools.jar="%TOOLS_JAR%"
set JAVA_OPTS=%JAVA_OPTS% -Dgroovy.starter.conf="%STARTER_CONF%"
if exist "%USERPROFILE%/.groovy/postinit.bat" call "%USERPROFILE%/.groovy/postinit.bat"
@rem Execute Grails
CALL "%JAVA_EXE%" %JAVA_OPTS% -classpath "%STARTER_CLASSPATH%" %STARTER_MAIN_CLASS% --main %CLASS% --conf "%STARTER_CONF%" --classpath "%CP%" "%CMD_LINE_ARGS%"
:end
@rem End local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" endlocal
@rem Optional pause the batch file
if "%GROOVY_BATCH_PAUSE%" == "on" pause

View File

@ -1,28 +0,0 @@
<ivy-module version="2.0">
<info organisation="org.example" module="bigbluebutton"/>
<configurations defaultconfmapping="build->default;compile->compile(*),master(*);test,runtime->runtime(*),master(*)">
<conf name="build"/>
<conf name="compile"/>
<conf name="test" extends="compile"/>
<conf name="runtime" extends="compile"/>
</configurations>
<dependencies>
<dependency org="org.grails" name="grails-bootstrap" rev="1.3.9" conf="build"/>
<dependency org="org.grails" name="grails-scripts" rev="1.3.9" conf="build"/>
<dependency org="org.grails" name="grails-gorm" rev="1.3.9" conf="compile"/>
<dependency org="org.grails" name="grails-web" rev="1.3.9" conf="compile"/>
<dependency org="org.grails" name="grails-test" rev="1.3.9" conf="test"/>
<dependency org="org.slf4j" name="slf4j-log4j12" rev="1.5.5" conf="runtime"/>
<dependency org="opensymphony" name="oscache" rev="2.4" conf="runtime">
<exclude org="javax.jms" module="jms" name="*" type="*" ext="*" conf="" matcher="exact"/>
<exclude org="commons-logging" module="commons-logging" name="*" type="*" ext="*" conf="" matcher="exact"/>
<exclude org="javax.servlet" module="servlet-api" name="*" type="*" ext="*" conf="" matcher="exact"/>
</dependency>
<dependency org="hsqldb" name="hsqldb" rev="1.8.0.5" conf="runtime"/>
<dependency org="net.sf.ehcache" name="ehcache" rev="1.5.0" conf="runtime"/>
<!--
<dependency org="mysql" name="mysql-connector-java" rev="5.1.6" conf="runtime"/>
<dependency org="postgresql" name="postgresql" rev="8.3-603.jdbc3" conf="runtime"/>
-->
</dependencies>
</ivy-module>

View File

@ -1,15 +0,0 @@
<ivysettings>
<settings defaultResolver="codehaus-plus"/>
<include url="${ivy.default.settings.dir}/ivysettings-public.xml" />
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-local.xml" />
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
<resolvers>
<chain name="codehaus-plus" dual="true">
<ibiblio name="codehaus-snapshots" root="http://snapshots.repository.codehaus.org" m2compatible="true" changingPattern=".*SNAPSHOT"/>
<ibiblio name="codehaus" root="http://repository.codehaus.org" m2compatible="true"/>
<ibiblio name="javanet" root="http://download.java.net/maven/2/" m2compatible="true"/>
<resolver ref="public"/>
</chain>
</resolvers>
</ivysettings>

0
bigbluebutton-web/lib/commons-codec-1.3.jar Normal file → Executable file
View File

0
bigbluebutton-web/lib/commons-httpclient.jar Normal file → Executable file
View File

View File

View File

@ -1,316 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.bigbluebutton</groupId>
<artifactId>bigbluebutton</artifactId>
<packaging>war</packaging>
<version>0.70dev</version>
<name>A custom grails project</name>
<description>A custom grails project</description>
<url>http://www.myorganization.org</url>
<properties>
<grails.version>1.3.7</grails.version>
</properties>
<dependencies>
<dependency>
<groupId>org.grails</groupId>
<artifactId>grails-bootstrap</artifactId>
<version>${grails.version}</version>
<exclusions>
<exclusion>
<groupId>org.codehaus.gpars</groupId>
<artifactId>gpars</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.gant</groupId>
<artifactId>gant_groovy1.7</artifactId>
</exclusion>
<exclusion>
<groupId>org.gparallelizer</groupId>
<artifactId>GParallelizer</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.gant</groupId>
<artifactId>gant_groovy1.6</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.ant</groupId>
<artifactId>ant-launcher</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.ivy</groupId>
<artifactId>ivy</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.grails</groupId>
<artifactId>grails-crud</artifactId>
<version>${grails.version}</version>
<exclusions>
<exclusion>
<groupId>org.grails</groupId>
<artifactId>grails-docs</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.ant</groupId>
<artifactId>ant-launcher</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</exclusion>
<exclusion>
<groupId>radeox</groupId>
<artifactId>radeox</artifactId>
</exclusion>
<exclusion>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
</exclusion>
<exclusion>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
</exclusion>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.grails</groupId>
<artifactId>grails-gorm</artifactId>
<version>${grails.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.ant</groupId>
<artifactId>ant-launcher</artifactId>
</exclusion>
<exclusion>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
</exclusion>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
</exclusion>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.grails</groupId>
<artifactId>grails-test</artifactId>
<version>${grails.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!-- Grails defaults to Ehache for the second-level Hibernate cache. -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>3.3.1.GA</version>
<exclusions>
<!-- See http://www.slf4j.org/faq.html#IllegalAccessError -->
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<!-- We are pulling in ehcache-core below -->
<exclusion>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>1.7.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- For ease of development and testing, we include the HSQLDB database. -->
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.10</version>
</dependency>
<!-- Use Log4J for logging. This artifact also pulls in the Log4J JAR. -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<!-- Needed in the case of AOP usage -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.8</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.5.3</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<!-- Required to get hold of javassist:javassist -->
<repository>
<id>jboss.org</id>
<name>jboss.org</name>
<url>http://repository.jboss.com/maven2/</url>
</repository>
</repositories>
<build>
<pluginManagement />
<plugins>
<plugin>
<groupId>org.grails</groupId>
<artifactId>grails-maven-plugin</artifactId>
<version>${grails.version}</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>init</goal>
<goal>maven-clean</goal>
<goal>validate</goal>
<goal>config-directories</goal>
<goal>maven-compile</goal>
<goal>maven-test</goal>
<goal>maven-war</goal>
<goal>maven-functional-test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>tools</id>
<activation>
<property>
<name>java.vendor</name>
<value>Sun Microsystems Inc.</value>
</property>
</activation>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>${java.version}</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
</profile>
</profiles>
</project>

View File

@ -1,40 +0,0 @@
#!/bin/sh
# openoffice.org headless server script
#
# chkconfig: 2345 80 30
# description: headless openoffice server script
# processname: openoffice
#
# Author: Vic Vijayakumar
# Modified by Federico Ch. Tomasczik
#
OOo_HOME=/usr/bin
SOFFICE_PATH=$OOo_HOME/soffice
PIDFILE=/var/run/openoffice-server.pid
set -e
case "$1" in
start)
if [ -f $PIDFILE ]; then
echo "OpenOffice headless server has already started."
sleep 5
exit
fi
echo "Starting OpenOffice headless server"
$SOFFICE_PATH -headless -nologo -nofirststartwizard -accept="socket,host=127.0.0.1,port=8100;urp" & > /dev/null 2>&1
touch $PIDFILE
;;
stop)
if [ -f $PIDFILE ]; then
echo "Stopping OpenOffice headless server."
killall -9 soffice && killall -9 soffice.bin
rm -f $PIDFILE
exit
fi
echo "Openoffice headless server is not running."
exit
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0

View File

@ -31,8 +31,6 @@ import org.bigbluebutton.presentation.UploadedPresentation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mysql.jdbc.log.LogUtils;
public class ThumbnailCreatorImp implements ThumbnailCreator {
private static Logger log = LoggerFactory.getLogger(ThumbnailCreatorImp.class);

View File

@ -1,4 +0,0 @@
@artifact.package@class @artifact.name@ {
def index = { }
}

View File

@ -1,5 +0,0 @@
@artifact.package@class @artifact.name@ {
static constraints = {
}
}

View File

@ -1,17 +0,0 @@
@artifact.package@class @artifact.name@ {
def filters = {
all(controller:'*', action:'*') {
before = {
}
after = {
}
afterView = {
}
}
}
}

View File

@ -1,7 +0,0 @@
includeTargets << grailsScript("Init")
target(main: "The description of the script goes here!") {
// TODO: Implement script here
}
setDefaultTarget(main)

View File

@ -1,8 +0,0 @@
@artifact.package@class @artifact.name@ {
boolean transactional = true
def serviceMethod() {
}
}

View File

@ -1,3 +0,0 @@
@artifact.package@class @artifact.name@ {
}

View File

@ -1,15 +0,0 @@
@artifact.package@import grails.test.*
class @artifact.name@ extends @artifact.superclass@ {
protected void setUp() {
super.setUp()
}
protected void tearDown() {
super.tearDown()
}
void testSomething() {
}
}

View File

@ -1,54 +0,0 @@
class @webtest.name.caps@Test extends grails.util.WebTest {
// Unlike unit tests, functional tests are often sequence dependent.
// Specify that sequence here.
void suite() {
test@webtest.name.caps@ListNewDelete()
// add tests for more operations here
}
def test@webtest.name.caps@ListNewDelete() {
webtest('@webtest.name.caps@ basic operations: view list, create new entry, view, edit, delete, view') {
invoke(url:'@webtest.name.lower@')
verifyText(text:'Home')
verifyListPage(0)
clickLink(label:'New @webtest.name.caps@')
verifyText(text:'Create @webtest.name.caps@')
clickButton(label:'Create')
verifyText(text:'Show @webtest.name.caps@', description:'Detail page')
clickLink(label:'List', description:'Back to list view')
verifyListPage(1)
group(description:'edit the one element') {
clickLink(label:'Show', description:'go to detail view')
clickButton(label:'Edit')
verifyText(text:'Edit @webtest.name.caps@')
clickButton(label:'Update')
verifyText(text:'Show @webtest.name.caps@')
clickLink(label:'List', description:'Back to list view')
}
verifyListPage(1)
group(description:'delete the only element') {
clickLink(label:'Show', description:'go to detail view')
clickButton(label:'Delete')
verifyXPath(xpath:"//div[@class='message']", text:/@webtest.name.caps@.*deleted./, regex:true)
}
verifyListPage(0)
}
}
String ROW_COUNT_XPATH = "count(//td[@class='actionButtons']/..)"
def verifyListPage(int count) {
ant.group(description:"verify @webtest.name.caps@ list view with $count row(s)") {
verifyText(text:'@webtest.name.caps@ List')
verifyXPath(xpath:ROW_COUNT_XPATH, text:count, description:"$count row(s) of data expected")
}
}
}

View File

@ -1,99 +0,0 @@
<%=packageName ? "package ${packageName}\n\n" : ''%>class ${className}Controller {
def index = { redirect(action:list,params:params) }
// the delete, save and update actions only accept POST requests
static allowedMethods = [delete:'POST', save:'POST', update:'POST']
def list = {
params.max = Math.min( params.max ? params.max.toInteger() : 10, 100)
[ ${propertyName}List: ${className}.list( params ), ${propertyName}Total: ${className}.count() ]
}
def show = {
def ${propertyName} = ${className}.get( params.id )
if(!${propertyName}) {
flash.message = "${className} not found with id \${params.id}"
redirect(action:list)
}
else { return [ ${propertyName} : ${propertyName} ] }
}
def delete = {
def ${propertyName} = ${className}.get( params.id )
if(${propertyName}) {
try {
${propertyName}.delete(flush:true)
flash.message = "${className} \${params.id} deleted"
redirect(action:list)
}
catch(org.springframework.dao.DataIntegrityViolationException e) {
flash.message = "${className} \${params.id} could not be deleted"
redirect(action:show,id:params.id)
}
}
else {
flash.message = "${className} not found with id \${params.id}"
redirect(action:list)
}
}
def edit = {
def ${propertyName} = ${className}.get( params.id )
if(!${propertyName}) {
flash.message = "${className} not found with id \${params.id}"
redirect(action:list)
}
else {
return [ ${propertyName} : ${propertyName} ]
}
}
def update = {
def ${propertyName} = ${className}.get( params.id )
if(${propertyName}) {
if(params.version) {
def version = params.version.toLong()
if(${propertyName}.version > version) {
<%def lowerCaseName = grails.util.GrailsNameUtils.getPropertyName(className)%>
${propertyName}.errors.rejectValue("version", "${lowerCaseName}.optimistic.locking.failure", "Another user has updated this ${className} while you were editing.")
render(view:'edit',model:[${propertyName}:${propertyName}])
return
}
}
${propertyName}.properties = params
if(!${propertyName}.hasErrors() && ${propertyName}.save()) {
flash.message = "${className} \${params.id} updated"
redirect(action:show,id:${propertyName}.id)
}
else {
render(view:'edit',model:[${propertyName}:${propertyName}])
}
}
else {
flash.message = "${className} not found with id \${params.id}"
redirect(action:list)
}
}
def create = {
def ${propertyName} = new ${className}()
${propertyName}.properties = params
return ['${propertyName}':${propertyName}]
}
def save = {
def ${propertyName} = new ${className}(params)
if(!${propertyName}.hasErrors() && ${propertyName}.save()) {
flash.message = "${className} \${${propertyName}.id} created"
redirect(action:show,id:${propertyName}.id)
}
else {
render(view:'create',model:[${propertyName}:${propertyName}])
}
}
}

View File

@ -1,62 +0,0 @@
<% import org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor as Events %>
<%=packageName%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Create ${className}</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="\${resource(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">${className} List</g:link></span>
</div>
<div class="body">
<h1>Create ${className}</h1>
<g:if test="\${flash.message}">
<div class="message">\${flash.message}</div>
</g:if>
<g:hasErrors bean="\${${propertyName}}">
<div class="errors">
<g:renderErrors bean="\${${propertyName}}" as="list" />
</div>
</g:hasErrors>
<g:form action="save" method="post" <%= multiPart ? ' enctype="multipart/form-data"' : '' %>>
<div class="dialog">
<table>
<tbody>
<%
excludedProps = ['version',
'id',
Events.ONLOAD_EVENT,
Events.BEFORE_DELETE_EVENT,
Events.BEFORE_INSERT_EVENT,
Events.BEFORE_UPDATE_EVENT]
props = domainClass.properties.findAll { !excludedProps.contains(it.name) }
Collections.sort(props, comparator.constructors[0].newInstance([domainClass] as Object[]))
props.each { p ->
if(!Collection.class.isAssignableFrom(p.type)) {
cp = domainClass.constrainedProperties[p.name]
display = (cp ? cp.display : true)
if(display) { %>
<tr class="prop">
<td valign="top" class="name">
<label for="${p.name}">${p.naturalName}:</label>
</td>
<td valign="top" class="value \${hasErrors(bean:${propertyName},field:'${p.name}','errors')}">
${renderEditor(p)}
</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,64 +0,0 @@
<% import org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor as Events %>
<%=packageName%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Edit ${className}</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="\${resource(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">${className} List</g:link></span>
<span class="menuButton"><g:link class="create" action="create">New ${className}</g:link></span>
</div>
<div class="body">
<h1>Edit ${className}</h1>
<g:if test="\${flash.message}">
<div class="message">\${flash.message}</div>
</g:if>
<g:hasErrors bean="\${${propertyName}}">
<div class="errors">
<g:renderErrors bean="\${${propertyName}}" as="list" />
</div>
</g:hasErrors>
<g:form method="post" <%= multiPart ? ' enctype="multipart/form-data"' : '' %>>
<input type="hidden" name="id" value="\${${propertyName}?.id}" />
<input type="hidden" name="version" value="\${${propertyName}?.version}" />
<div class="dialog">
<table>
<tbody>
<%
excludedProps = ['version',
'id',
Events.ONLOAD_EVENT,
Events.BEFORE_DELETE_EVENT,
Events.BEFORE_INSERT_EVENT,
Events.BEFORE_UPDATE_EVENT]
props = domainClass.properties.findAll { !excludedProps.contains(it.name) }
Collections.sort(props, comparator.constructors[0].newInstance([domainClass] as Object[]))
props.each { p ->
cp = domainClass.constrainedProperties[p.name]
display = (cp ? cp.display : true)
if(display) { %>
<tr class="prop">
<td valign="top" class="name">
<label for="${p.name}">${p.naturalName}:</label>
</td>
<td valign="top" class="value \${hasErrors(bean:${propertyName},field:'${p.name}','errors')}">
${renderEditor(p)}
</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,60 +0,0 @@
<% import org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor as Events %>
<%=packageName%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>${className} List</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="\${resource(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="create" action="create">New ${className}</g:link></span>
</div>
<div class="body">
<h1>${className} List</h1>
<g:if test="\${flash.message}">
<div class="message">\${flash.message}</div>
</g:if>
<div class="list">
<table>
<thead>
<tr>
<%
excludedProps = ['version',
Events.ONLOAD_EVENT,
Events.BEFORE_DELETE_EVENT,
Events.BEFORE_INSERT_EVENT,
Events.BEFORE_UPDATE_EVENT]
props = domainClass.properties.findAll { !excludedProps.contains(it.name) && it.type != Set.class }
Collections.sort(props, comparator.constructors[0].newInstance([domainClass] as Object[]))
props.eachWithIndex { p,i ->
if(i < 6) {
if(p.isAssociation()) { %>
<th>${p.naturalName}</th>
<% } else { %>
<g:sortableColumn property="${p.name}" title="${p.naturalName}" />
<% } } } %>
</tr>
</thead>
<tbody>
<g:each in="\${${propertyName}List}" status="i" var="${propertyName}">
<tr class="\${(i % 2) == 0 ? 'odd' : 'even'}">
<% props.eachWithIndex { p,i ->
if(i == 0) { %>
<td><g:link action="show" id="\${${propertyName}.id}">\${fieldValue(bean:${propertyName}, field:'${p.name}')}</g:link></td>
<% } else if(i < 6) { %>
<td>\${fieldValue(bean:${propertyName}, field:'${p.name}')}</td>
<% } } %>
</tr>
</g:each>
</tbody>
</table>
</div>
<div class="paginateButtons">
<g:paginate total="\${${propertyName}Total}" />
</div>
</div>
</body>
</html>

View File

@ -1,190 +0,0 @@
<% if(property.type == Boolean.class || property.type == boolean.class)
out << renderBooleanEditor(domainClass,property)
else if(Number.class.isAssignableFrom(property.type) || (property.type.isPrimitive() && property.type != boolean.class))
out << renderNumberEditor(domainClass,property)
else if(property.type == String.class)
out << renderStringEditor(domainClass,property)
else if(property.type == Date.class || property.type == java.sql.Date.class || property.type == java.sql.Time.class)
out << renderDateEditor(domainClass,property)
else if(property.type == Calendar.class)
out << renderDateEditor(domainClass,property)
else if(property.type == URL.class)
out << renderStringEditor(domainClass,property)
else if(property.isEnum())
out << renderEnumEditor(domainClass,property)
else if(property.type == TimeZone.class)
out << renderSelectTypeEditor("timeZone",domainClass,property)
else if(property.type == Locale.class)
out << renderSelectTypeEditor("locale",domainClass,property)
else if(property.type == Currency.class)
out << renderSelectTypeEditor("currency",domainClass,property)
else if(property.type==([] as Byte[]).class) //TODO: Bug in groovy means i have to do this :(
out << renderByteArrayEditor(domainClass,property)
else if(property.type==([] as byte[]).class) //TODO: Bug in groovy means i have to do this :(
out << renderByteArrayEditor(domainClass,property)
else if(property.manyToOne || property.oneToOne)
out << renderManyToOne(domainClass,property)
else if((property.oneToMany && !property.bidirectional) || (property.manyToMany && property.isOwningSide()))
out << renderManyToMany(domainClass, property)
else if(property.oneToMany)
out << renderOneToMany(domainClass,property)
private renderEnumEditor(domainClass,property) {
if(property.isEnum()) {
return "<g:select from=\"\${${property.type.name}?.values()}\" value=\"\${${domainInstance}?.${property.name}}\" name=\"${property.name}\" ${renderNoSelection(property)}></g:select>"
}
}
private renderStringEditor(domainClass, property) {
if(!cp) {
return "<input type=\"text\" name=\"${property.name}\" id=\"${property.name}\" value=\"\${fieldValue(bean:${domainInstance},field:'${property.name}')}\" />"
}
else {
if("textarea" == cp.widget || (cp.maxSize > 250 && !cp.password && !cp.inList)) {
return "<textarea rows=\"5\" cols=\"40\" name=\"${property.name}\">\${fieldValue(bean:${domainInstance}, field:'${property.name}')}</textarea>"
}
else {
if(cp.inList) {
def sb = new StringBuffer('<g:select ')
sb << "id=\"${property.name}\" name=\"${property.name}\" from=\"\${${domainInstance}.constraints.${property.name}.inList}\" value=\"\${${domainInstance}.${property?.name}}\" ${renderNoSelection(property)}>"
sb << '</g:select>'
return sb.toString()
}
else {
def sb = new StringBuffer('<input ')
cp.password ? sb << 'type="password" ' : sb << 'type="text" '
if(!cp.editable) sb << 'readonly="readonly" '
if(cp.maxSize) sb << "maxlength=\"${cp.maxSize}\" "
sb << "id=\"${property.name}\" name=\"${property.name}\" value=\"\${fieldValue(bean:${domainInstance},field:'${property.name}')}\"/>"
return sb.toString()
}
}
}
}
private renderByteArrayEditor(domainClass,property) {
return "<input type=\"file\" id=\"${property.name}\" name=\"${property.name}\" />"
}
private renderManyToOne(domainClass,property) {
if(property.association) {
return "<g:select optionKey=\"id\" from=\"\${${property.type.name}.list()}\" name=\"${property.name}.id\" value=\"\${${domainInstance}?.${property.name}?.id}\" ${renderNoSelection(property)}></g:select>"
}
}
private renderManyToMany(domainClass,property) {
def sw = new StringWriter()
def pw = new PrintWriter(sw)
pw.println "<g:select name=\"${property.name}\""
pw.println "from=\"\${${property.referencedDomainClass.fullName}.list()}\""
pw.println "size=\"5\" multiple=\"yes\" optionKey=\"id\""
pw.println "value=\"\${${domainInstance}?.${property.name}}\" />"
return sw.toString()
}
private renderOneToMany(domainClass,property) {
def sw = new StringWriter()
def pw = new PrintWriter(sw)
pw.println()
pw.println "<ul>"
pw.println "<g:each var=\"${property.name[0]}\" in=\"\${${domainInstance}?.${property.name}?}\">"
pw.println " <li><g:link controller=\"${property.referencedDomainClass.propertyName}\" action=\"show\" id=\"\${${property.name[0]}.id}\">\${${property.name[0]}?.encodeAsHTML()}</g:link></li>"
pw.println "</g:each>"
pw.println "</ul>"
pw.println "<g:link controller=\"${property.referencedDomainClass.propertyName}\" params=\"['${domainClass.propertyName}.id':${domainInstance}?.id]\" action=\"create\">Add ${property.referencedDomainClass.shortName}</g:link>"
return sw.toString()
}
private renderNumberEditor(domainClass,property) {
if(!cp) {
if(property.type == Byte.class) {
return "<g:select from=\"\${-128..127}\" name=\"${property.name}\" value=\"\${${domainInstance}?.${property.name}}\"></g:select>"
}
else {
return "<input type=\"text\" id=\"${property.name}\" name=\"${property.name}\" value=\"\${fieldValue(bean:${domainInstance},field:'${property.name}')}\" />"
}
}
else {
if(cp.range) {
return "<g:select from=\"\${${cp.range.from}..${cp.range.to}}\" id=\"${property.name}\" name=\"${property.name}\" value=\"\${${domainInstance}?.${property.name}}\" ${renderNoSelection(property)}></g:select>"
}
else if(cp.inList) {
def sb = new StringBuffer('<g:select ')
sb << "id=\"${property.name}\" name=\"${property.name}\" from=\"\${${domainClass.propertyName}.constraints.${property.name}.inList}\" value=\"\${${domainClass.propertyName}.${property?.name}}\" ${renderNoSelection(property)}>"
sb << '</g:select>'
return sb.toString()
}
else {
return "<input type=\"text\" id=\"${property.name}\" name=\"${property.name}\" value=\"\${fieldValue(bean:${domainInstance},field:'${property.name}')}\" />"
}
}
}
private renderBooleanEditor(domainClass,property) {
if(!cp) {
return "<g:checkBox name=\"${property.name}\" value=\"\${${domainInstance}?.${property.name}}\"></g:checkBox>"
}
else {
def buf = new StringBuffer('<g:checkBox ')
if(cp.widget) buf << "widget=\"${cp.widget}\"";
buf << "name=\"${property.name}\" value=\"\${${domainInstance}?.${property.name}}\" "
cp.attributes.each { k,v ->
buf << "${k}=\"${v}\" "
}
buf << '></g:checkBox>'
return buf.toString()
}
}
private renderDateEditor(domainClass,property) {
def precision = property.type == java.sql.Date ? 'day' : 'minute';
if(!cp) {
return "<g:datePicker name=\"${property.name}\" value=\"\${${domainInstance}?.${property.name}}\" precision=\"${precision}\"></g:datePicker>"
}
else {
if(!cp.editable) {
return "\${${domainInstance}?.${property.name}?.toString()}"
}
else {
def buf = new StringBuffer('<g:datePicker ')
if(cp.widget) buf << "widget=\"${cp.widget}\" "
if(cp.format) buf << "format=\"${cp.format}\" "
cp.attributes.each { k,v ->
buf << "${k}=\"${v}\" "
}
buf << "name=\"${property.name}\" value=\"\${${domainInstance}?.${property.name}}\" precision=\"${precision}\" ${renderNoSelection(property)}></g:datePicker>"
return buf.toString()
}
}
}
private renderSelectTypeEditor(type,domainClass,property) {
if(!cp) {
return "<g:${type}Select name=\"${property.name}\" value=\"\${${domainInstance}?.${property.name}}\"></g:${type}Select>"
}
else {
def buf = new StringBuffer("<g:${type}Select ")
if(cp.widget) buf << "widget=\"${cp.widget}\" ";
cp.attributes.each { k,v ->
buf << "${k}=\"${v}\" "
}
buf << "name=\"${property.name}\" value=\"\${${domainInstance}?.${property.name}}\" ${renderNoSelection(property)}></g:${type}Select>"
return buf.toString()
}
}
private renderNoSelection(property) {
if(property.optional) {
if(property.manyToOne || property.oneToOne) {
return "noSelection=\"['null':'']\""
}
else {
return "noSelection=\"['':'']\""
}
}
return ""
}
%>

View File

@ -1,64 +0,0 @@
<% import org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor as Events %>
<%=packageName%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />
<title>Show ${className}</title>
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="\${resource(dir:'')}">Home</a></span>
<span class="menuButton"><g:link class="list" action="list">${className} List</g:link></span>
<span class="menuButton"><g:link class="create" action="create">New ${className}</g:link></span>
</div>
<div class="body">
<h1>Show ${className}</h1>
<g:if test="\${flash.message}">
<div class="message">\${flash.message}</div>
</g:if>
<div class="dialog">
<table>
<tbody>
<%
excludedProps = ['version',
Events.ONLOAD_EVENT,
Events.BEFORE_DELETE_EVENT,
Events.BEFORE_INSERT_EVENT,
Events.BEFORE_UPDATE_EVENT]
props = domainClass.properties.findAll { !excludedProps.contains(it.name) }
Collections.sort(props, comparator.constructors[0].newInstance([domainClass] as Object[]))
props.each { p -> %>
<tr class="prop">
<td valign="top" class="name">${p.naturalName}:</td>
<% if(p.isEnum()) { %>
<td valign="top" class="value">\${${propertyName}?.${p.name}?.encodeAsHTML()}</td>
<% } else if(p.oneToMany || p.manyToMany) { %>
<td valign="top" style="text-align:left;" class="value">
<ul>
<g:each var="${p.name[0]}" in="\${${propertyName}.${p.name}}">
<li><g:link controller="${p.referencedDomainClass?.propertyName}" action="show" id="\${${p.name[0]}.id}">\${${p.name[0]}?.encodeAsHTML()}</g:link></li>
</g:each>
</ul>
</td>
<% } else if(p.manyToOne || p.oneToOne) { %>
<td valign="top" class="value"><g:link controller="${p.referencedDomainClass?.propertyName}" action="show" id="\${${propertyName}?.${p.name}?.id}">\${${propertyName}?.${p.name}?.encodeAsHTML()}</g:link></td>
<% } else { %>
<td valign="top" class="value">\${fieldValue(bean:${propertyName}, field:'${p.name}')}</td>
<% } %>
</tr>
<% } %>
</tbody>
</table>
</div>
<div class="buttons">
<g:form>
<input type="hidden" name="id" value="\${${propertyName}?.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,107 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>/@grails.project.key@</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>@grails.project.key@</param-value>
</context-param>
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter</filter-class>
</filter>
<filter>
<filter-name>charEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBeanName</param-name>
<param-value>characterEncodingFilter</param-value>
</init-param>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<!-- There is a problem with logging in production for Grails 1.1.1. We cannot get it to work
when deployed to Tomcat. To get logging working is to create this customer web.xml changing
the Log4jConfigListener to Spring and providing our own log4j.properties. When upgrading
Grails, we need to revisit this problem. (ralam, jan 6, 2010) -->
<!--listener-class>org.codehaus.groovy.grails.web.util.Log4jConfigListener</listener-class-->
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener</listener-class>
</listener>
<!-- Grails dispatcher servlet -->
<servlet>
<servlet-name>grails</servlet-name>
<servlet-class>org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- The Groovy Server Pages servlet -->
<servlet>
<servlet-name>gsp</servlet-name>
<servlet-class>org.codehaus.groovy.grails.web.pages.GroovyPagesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>gsp</servlet-name>
<url-pattern>*.gsp</url-pattern>
</servlet-mapping>
<welcome-file-list>
<!--
The order of the welcome pages is important. JBoss deployment will
break if index.gsp is first in the list.
-->
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.gsp</welcome-file>
</welcome-file-list>
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://www.springframework.org/tags</taglib-uri>
<taglib-location>/WEB-INF/tld/spring.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://grails.codehaus.org/tags</taglib-uri>
<taglib-location>/WEB-INF/tld/grails.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>

View File

View File

View File

0
bigbluebutton-web/test/resources/GoodPresentation.pdf Normal file → Executable file
View File

View File

0
bigbluebutton-web/test/resources/OnePage.pdf Normal file → Executable file
View File

0
bigbluebutton-web/test/resources/PresentationsTips.pdf Normal file → Executable file
View File

View File

View File

0
bigbluebutton-web/test/resources/big.pdf Normal file → Executable file
View File

0
bigbluebutton-web/test/resources/blankpresentation.pdf Normal file → Executable file
View File

0
bigbluebutton-web/test/resources/folb_apha.ppt Normal file → Executable file
View File

View File

0
bigbluebutton-web/test/resources/sampleslide.jpeg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

0
bigbluebutton-web/test/resources/secure-slides.pdf Normal file → Executable file
View File

View File

@ -1,19 +0,0 @@
package org.bigbluebutton.api;
class UtilTest extends GroovyTestCase {
void testPresentationFilename() {
String filename = Util.cleanPresentationFilename("mypresentation%#@foo.txt");
assertTrue(filename.equals("mypresentation---foo.txt"))
}
void testPresentationFilenameThatBeginsWithDot() {
String filename = Util.cleanPresentationFilename(".mypresentation%#@foo.txt");
assertTrue(filename.equals("mypresentation---foo.txt"))
}
void testPresentationFilenameWithMultipleDot() {
String filename = Util.cleanPresentationFilename(".mypresentation%#@foo.txt.png");
assertTrue(filename.equals("mypresentation---foo.txt.png"))
}
}

View File

@ -1,14 +0,0 @@
pushd .
# stop
sudo /etc/init.d/tomcat6 stop
# build
cd ~/dev/source/bigbluebutton/bigbluebutton-web
gradle resolveDeps
# run
ant
# return to working dir
popd

View File

@ -1 +0,0 @@
gradle resolveDeps && ant

View File

@ -1,42 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="grailsApplication" class="org.codehaus.groovy.grails.commons.GrailsApplicationFactoryBean">
<description>Grails application factory bean</description>
<property name="grailsDescriptor" value="/WEB-INF/grails.xml" />
<property name="grailsResourceLoader" ref="grailsResourceLoader" />
<property name="grailsDescriptor" value="/WEB-INF/grails.xml" />
<property name="grailsResourceLoader" ref="grailsResourceLoader" />
</bean>
<bean id="pluginManager" class="org.codehaus.groovy.grails.plugins.GrailsPluginManagerFactoryBean">
<description>A bean that manages Grails plugins</description>
<property name="grailsDescriptor" value="/WEB-INF/grails.xml" />
<property name="application" ref="grailsApplication" />
<property name="grailsDescriptor" value="/WEB-INF/grails.xml" />
<property name="application" ref="grailsApplication" />
</bean>
<bean id="grailsConfigurator" class="org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator">
<constructor-arg>
<ref bean="grailsApplication" />
</constructor-arg>
<property name="pluginManager" ref="pluginManager" />
</bean>
<bean id="grailsConfigurator" class="org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator">
<constructor-arg>
<ref bean="grailsApplication" />
</constructor-arg>
<property name="pluginManager" ref="pluginManager" />
</bean>
<bean id="grailsResourceLoader" class="org.codehaus.groovy.grails.commons.GrailsResourceLoaderFactoryBean">
<property name="grailsResourceHolder" ref="grailsResourceHolder" />
</bean>
<bean id="grailsResourceLoader" class="org.codehaus.groovy.grails.commons.GrailsResourceLoaderFactoryBean" />
<bean id="grailsResourceHolder" scope="prototype" class="org.codehaus.groovy.grails.commons.spring.GrailsResourceHolder">
<property name="resources">
<value>classpath*:**/grails-app/**/*.groovy</value>
</property>
</bean>
<bean id="characterEncodingFilter" class="org.springframework.web.filter.CharacterEncodingFilter">
<property name="encoding">
<value>utf-8</value>
</property>
</bean>
<bean id="characterEncodingFilter"
class="org.springframework.web.filter.CharacterEncodingFilter">
<property name="encoding">
<value>utf-8</value>
</property>
</bean>
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean" />
</beans>

0
bigbluebutton-web/web-app/WEB-INF/sitemesh.xml Normal file → Executable file
View File

19
bigbluebutton-web/web-app/WEB-INF/tld/c.tld Normal file → Executable file
View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<description>JSTL 1.1 core library</description>
<description>JSTL 1.2 core library</description>
<display-name>JSTL core</display-name>
<tlib-version>1.1</tlib-version>
<tlib-version>1.2</tlib-version>
<short-name>c</short-name>
<uri>http://java.sun.com/jsp/jstl/core</uri>
@ -174,6 +174,9 @@ Collection of items to iterate over.
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Object</type>
<deferred-value>
<type>java.lang.Object</type>
</deferred-value>
</attribute>
<attribute>
<description>
@ -253,6 +256,9 @@ String of tokens to iterate over.
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
<deferred-value>
<type>java.lang.String</type>
</deferred-value>
</attribute>
<attribute>
<description>
@ -467,6 +473,9 @@ Expression to be evaluated.
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<deferred-value>
<type>java.lang.Object</type>
</deferred-value>
</attribute>
<attribute>
<description>

10
bigbluebutton-web/web-app/WEB-INF/tld/fmt.tld Normal file → Executable file
View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<description>JSTL 1.1 i18n-capable formatting library</description>
<description>JSTL 1.2 i18n-capable formatting library</description>
<display-name>JSTL fmt</display-name>
<tlib-version>1.1</tlib-version>
<tlib-version>1.2</tlib-version>
<short-name>fmt</short-name>
<uri>http://java.sun.com/jsp/jstl/fmt</uri>

0
bigbluebutton-web/web-app/WEB-INF/tld/grails.tld Normal file → Executable file
View File

Some files were not shown because too many files have changed in this diff Show More