Update bigbluebutton-web to gradle 5.1 (Work In Progress)
@ -21,12 +21,14 @@ object Dependencies {
|
||||
val apacheHttpAsync = "4.1.4"
|
||||
|
||||
// Office and document conversion
|
||||
val apacheOffice = "4.0.0"
|
||||
val jodConverter = "4.2.1"
|
||||
val apachePoi = "3.17"
|
||||
val nuProcess = "1.2.4"
|
||||
val libreOffice = "5.4.2"
|
||||
|
||||
// Server
|
||||
val servlet = "3.1.0"
|
||||
|
||||
// Apache Commons
|
||||
val lang = "3.8.1"
|
||||
val io = "2.6"
|
||||
@ -62,6 +64,8 @@ object Dependencies {
|
||||
val officeJuh = "org.libreoffice" % "juh" % Versions.libreOffice
|
||||
val officejurt = "org.libreoffice" % "jurt" % Versions.libreOffice
|
||||
|
||||
val servletApi = "javax.servlet" % "javax.servlet-api" % Versions.servlet
|
||||
|
||||
val apacheLang = "org.apache.commons" % "commons-lang3" % Versions.lang
|
||||
val apacheIo = "commons-io" % "commons-io" % Versions.io
|
||||
val apachePool2 = "org.apache.commons" % "commons-pool2" % Versions.pool
|
||||
@ -97,6 +101,7 @@ object Dependencies {
|
||||
Compile.poiXml,
|
||||
Compile.jodConverter,
|
||||
Compile.nuProcess,
|
||||
Compile.servletApi,
|
||||
Compile.apacheLang,
|
||||
Compile.apacheIo,
|
||||
Compile.apachePool2,
|
||||
|
@ -1,6 +0,0 @@
|
||||
#Grails Metadata file
|
||||
#Tue Mar 08 20:22:39 UTC 2016
|
||||
app.grails.version=2.5.2
|
||||
app.name=bigbluebutton
|
||||
app.servlet.version=3.0
|
||||
app.version=0.9.0
|
@ -1,45 +1,112 @@
|
||||
apply plugin: 'java'
|
||||
apply plugin: 'eclipse'
|
||||
/*
|
||||
configurations {
|
||||
runtime.exclude group: "org.slf4j", module: "slf4j-api"
|
||||
}
|
||||
dependencies {
|
||||
//junit
|
||||
testCompile 'junit:junit:4.12'
|
||||
// Testing
|
||||
testCompile 'org.testng:testng:6.14.'
|
||||
testCompile 'org.easymock:easymock:4.0.1@jar'
|
||||
}
|
||||
test { useTestNG() }
|
||||
*/
|
||||
buildscript {
|
||||
repositories {
|
||||
jcenter()
|
||||
mavenLocal()
|
||||
maven { url "https://repo.grails.org/grails/core" }
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.grails:grails-gradle-plugin:$grailsVersion"
|
||||
classpath "org.grails.plugins:hibernate5:${gormVersion-".RELEASE"}"
|
||||
classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.15.1"
|
||||
}
|
||||
}
|
||||
|
||||
version "0.10.0"
|
||||
group "org.bigbluebutton.web"
|
||||
|
||||
apply plugin:"eclipse"
|
||||
apply plugin:"idea"
|
||||
apply plugin:"war"
|
||||
apply plugin:"org.grails.grails-web"
|
||||
apply plugin:"asset-pipeline"
|
||||
apply plugin:"org.grails.grails-gsp"
|
||||
|
||||
task resolveDeps(type: Copy) {
|
||||
into('lib')
|
||||
from configurations.default
|
||||
from configurations.default.allArtifacts.file
|
||||
into('lib')
|
||||
from configurations.default
|
||||
from configurations.default.allArtifacts.file
|
||||
doLast { println '[bbb:task] Resolved dependencies for bigbluebutton-web application' }
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
jcenter()
|
||||
mavenLocal()
|
||||
maven { url "https://repo.grails.org/grails/core" }
|
||||
}
|
||||
|
||||
configurations {
|
||||
runtime.exclude group: "org.slf4j", module: "slf4j-api"
|
||||
compile.exclude group: "org.red5", module: "red5-server-common"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile 'org.bigbluebutton:bbb-common-web:0.0.3-SNAPSHOT'
|
||||
|
||||
// XML creation speedup
|
||||
compile 'org.freemarker:freemarker:2.3.28'
|
||||
|
||||
//junit
|
||||
testCompile 'junit:junit:4.12'
|
||||
|
||||
// Testing
|
||||
testCompile 'org.testng:testng:6.14.3@jar'
|
||||
testCompile 'org.easymock:easymock:4.0.1@jar'
|
||||
compile "org.springframework.boot:spring-boot-starter-logging"
|
||||
compile "org.springframework.boot:spring-boot-autoconfigure"
|
||||
compile "org.grails:grails-core"
|
||||
compile "org.springframework.boot:spring-boot-starter-actuator"
|
||||
runtime "org.springframework.boot:spring-boot-starter-tomcat"
|
||||
compile "org.grails:grails-web-boot"
|
||||
compile "org.grails:grails-logging"
|
||||
compile "org.grails:grails-plugin-rest"
|
||||
compile "org.grails:grails-plugin-databinding"
|
||||
compile "org.grails:grails-plugin-i18n"
|
||||
compile "org.grails:grails-plugin-services"
|
||||
compile "org.grails:grails-plugin-url-mappings"
|
||||
compile "org.grails:grails-plugin-interceptors"
|
||||
compile 'org.grails.plugins:external-config:1.2.2'
|
||||
compile "org.grails.plugins:cache"
|
||||
compile "org.grails.plugins:async"
|
||||
compile "org.grails.plugins:scaffolding"
|
||||
compile "org.grails.plugins:events"
|
||||
compile "org.grails.plugins:gsp"
|
||||
//--- BigBlueButton Dependencies Start
|
||||
compile "org.bigbluebutton:bbb-common-message_2.12:0.0.20-SNAPSHOT"
|
||||
compile "org.bigbluebutton:bbb-common-web:0.0.3-SNAPSHOT"
|
||||
compile "io.lettuce:lettuce-core:5.1.3.RELEASE"
|
||||
compile "org.reactivestreams:reactive-streams:1.0.2"
|
||||
compile "io.projectreactor:reactor-core:3.2.3.RELEASE"
|
||||
compile "org.freemarker:freemarker:2.3.28"
|
||||
compile "com.google.code.gson:gson:2.8.5"
|
||||
compile "org.json:json:20180813"
|
||||
compile "org.apache.poi:poi-ooxml:3.17"
|
||||
compile "org.jodconverter:jodconverter-local:4.2.1"
|
||||
compile "com.zaxxer:nuprocess:1.2.4"
|
||||
compile "net.java.dev.jna:jna:4.5.1"
|
||||
compile "org.libreoffice:unoil:5.4.2"
|
||||
compile "org.libreoffice:ridl:5.4.2"
|
||||
compile "org.libreoffice:juh:5.4.2"
|
||||
compile "org.libreoffice:jurt:5.4.2"
|
||||
//--- BigBlueButton Dependencies End
|
||||
console "org.grails:grails-console"
|
||||
profile "org.grails.profiles:web"
|
||||
runtime "com.bertramlabs.plugins:asset-pipeline-grails:2.15.1"
|
||||
testCompile "org.grails:grails-gorm-testing-support"
|
||||
testCompile "org.grails.plugins:geb"
|
||||
testCompile "org.grails:grails-web-testing-support"
|
||||
testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1"
|
||||
testRuntime "net.sourceforge.htmlunit:htmlunit:2.18"
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
java { srcDir 'src/java' }
|
||||
resources { srcDir 'src/resources' }
|
||||
}
|
||||
test {
|
||||
java { srcDir 'test/unit' }
|
||||
resources { srcDir 'test/resources' }
|
||||
}
|
||||
bootRun {
|
||||
jvmArgs('-Dspring.output.ansi.enabled=always')
|
||||
addResources = true
|
||||
String springProfilesActive = 'spring.profiles.active'
|
||||
systemProperty springProfilesActive, System.getProperty(springProfilesActive)
|
||||
}
|
||||
|
||||
test { useTestNG() }
|
||||
assets {
|
||||
minifyJs = true
|
||||
minifyCss = true
|
||||
}
|
||||
|
3
bigbluebutton-web/gradle.properties
Normal file
@ -0,0 +1,3 @@
|
||||
grailsVersion=3.3.9
|
||||
gormVersion=6.1.11.RELEASE
|
||||
gradleWrapperVersion=3.5
|
BIN
bigbluebutton-web/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
6
bigbluebutton-web/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
#Fri Nov 27 23:09:32 CET 2015
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip
|
160
bigbluebutton-web/gradlew
vendored
Normal file
@ -0,0 +1,160 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
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\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
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
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
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 maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# 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 [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
90
bigbluebutton-web/gradlew.bat
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
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.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="93.58px" height="93.58px" viewBox="0 0 93.58 93.58" enable-background="new 0 0 93.58 93.58" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<circle fill="none" stroke="#FEB672" stroke-width="2.8347" stroke-miterlimit="10" cx="46.79" cy="46.789" r="45.374"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#FEB672" d="M71.126,29.576c0,0.414-0.337,0.75-0.75,0.75h-3.25v3.25c0,0.415-0.337,0.751-0.751,0.751h-1.499
|
||||
c-0.415,0-0.75-0.336-0.75-0.751v-3.25h-3.251c-0.414,0-0.749-0.336-0.749-0.75v-1.498c0-0.416,0.335-0.752,0.749-0.752h3.251
|
||||
v-3.249c0-0.414,0.335-0.75,0.75-0.75h1.499c0.414,0,0.751,0.336,0.751,0.75v3.249h3.25c0.413,0,0.75,0.336,0.75,0.752V29.576z"/>
|
||||
</g>
|
||||
<path fill="#FEB672" d="M50.42,60.386c0.554,1.467,0.855,1.951,1.493,3.44c0.271,0.627,0.523,1.228,0.649,1.518
|
||||
c0.049,0.117,0.036,0.248-0.033,0.355c-0.172,0.259-0.552,0.747-1.181,1.086c-1.098,0.594-3.409,0.809-4.555,0.812h-0.006
|
||||
c-1.146-0.004-3.457-0.219-4.558-0.812c-0.627-0.339-1.006-0.827-1.177-1.086c-0.07-0.107-0.083-0.238-0.032-0.355
|
||||
c0.123-0.29,0.376-0.891,0.646-1.518c0.64-1.489,0.941-1.974,1.495-3.44c0.485-1.294,0.729-3.175,0.745-4.593
|
||||
c0.006-0.604-0.03-1.122-0.106-1.476c-0.121-0.56-0.501-1.412-0.907-2.042c-0.548-0.849-1.527-1.583-2.157-1.919
|
||||
c-0.475-0.254-1.984-0.817-2.576-1.146c-0.755-0.416-1.739-1.067-2.399-1.584c-0.735-0.574-2.182-1.992-2.746-2.695
|
||||
c-1.084-1.344-2.083-2.922-2.565-4.62c-0.601-2.106-0.576-3.009-0.657-3.688c-0.014-0.117,0.075-0.222,0.191-0.227
|
||||
c0.73-0.025,3.854-0.093,16.809-0.081c12.953-0.012,16.076,0.056,16.806,0.081c0.118,0.005,0.206,0.109,0.191,0.227
|
||||
c-0.08,0.68-0.057,1.582-0.654,3.688c-0.486,1.698-1.483,3.276-2.567,4.62c-0.564,0.703-2.011,2.121-2.746,2.695
|
||||
c-0.661,0.517-1.646,1.168-2.399,1.584c-0.594,0.328-2.102,0.892-2.576,1.146c-0.63,0.336-1.608,1.07-2.158,1.919
|
||||
c-0.405,0.63-0.785,1.482-0.904,2.042c-0.079,0.354-0.112,0.872-0.107,1.476C49.69,57.211,49.935,59.092,50.42,60.386z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
19
bigbluebutton-web/grails-app/assets/images/documentation.svg
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="93.58px" height="93.58px" viewBox="0 0 93.58 93.58" enable-background="new 0 0 93.58 93.58" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<circle fill="none" stroke="#FEB672" stroke-width="2.8347" stroke-miterlimit="10" cx="46.88" cy="46.792" r="45.374"/>
|
||||
</g>
|
||||
<path fill="#FEB672" d="M64.379,40.958v24.062c0,1.208-0.979,2.188-2.188,2.188H31.567c-1.208,0-2.188-0.979-2.188-2.188V28.562
|
||||
c0-1.208,0.98-2.188,2.188-2.188h18.229v12.396c0,1.208,0.979,2.188,2.188,2.188H64.379z M55.629,44.604
|
||||
c0-0.41-0.318-0.729-0.729-0.729H38.858c-0.41,0-0.729,0.319-0.729,0.729v1.458c0,0.41,0.319,0.729,0.729,0.729H54.9
|
||||
c0.41,0,0.729-0.319,0.729-0.729V44.604z M55.629,50.438c0-0.41-0.318-0.729-0.729-0.729H38.858c-0.41,0-0.729,0.319-0.729,0.729
|
||||
v1.458c0,0.41,0.319,0.729,0.729,0.729H54.9c0.41,0,0.729-0.319,0.729-0.729V50.438z M55.629,56.271
|
||||
c0-0.41-0.318-0.729-0.729-0.729H38.858c-0.41,0-0.729,0.319-0.729,0.729v1.458c0,0.41,0.319,0.729,0.729,0.729H54.9
|
||||
c0.41,0,0.729-0.319,0.729-0.729V56.271z M63.468,38.042H52.713V27.287c0.318,0.205,0.592,0.41,0.82,0.638l9.297,9.297
|
||||
C63.059,37.449,63.264,37.723,63.468,38.042z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0"?>
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1000" height="500">
|
||||
<desc iVinci="yes" version="4.5" gridStep="20" showGrid="no" snapToGrid="no" codePlatform="0"/>
|
||||
<g id="Layer1" opacity="1">
|
||||
<g id="Shape1">
|
||||
<desc shapeID="1" type="0" basicInfo-basicType="0" basicInfo-roundedRectRadius="12" basicInfo-polygonSides="6" basicInfo-starPoints="5" bounding="rect(-74.3391,-50.75,148.678,101.5)" text="" font-familyName="" font-pixelSize="20" font-bold="0" font-underline="0" font-alignment="1" strokeStyle="0" markerStart="0" markerEnd="0" shadowEnabled="0" shadowOffsetX="0" shadowOffsetY="2" shadowBlur="4" shadowOpacity="160" blurEnabled="0" blurRadius="4" transform="matrix(4.79624,0,0,4.79624,500,250)" pers-center="0,0" pers-size="0,0" pers-start="0,0" pers-end="0,0" locked="0" mesh="" flag=""/>
|
||||
<path id="shapePath1" d="M527.264,491.011 C544.051,488.613 563.236,483.817 572.829,479.021 C582.421,474.224 589.615,467.03 589.615,462.234 C589.615,462.234 587.217,457.438 584.819,452.641 C580.023,445.447 575.227,435.854 563.236,409.475 C558.44,397.484 547.589,366.072 544.051,351.92 C540.386,330.773 540.051,308.254 544.051,287.171 C547.531,274.839 552.314,262.919 560.838,253.597 C570.402,240.945 581.622,228.467 596.81,222.422 C644.094,203.599 699.929,162.469 728.707,116.904 C738.299,100.117 742.876,92.923 746.372,83.3305 C755.023,59.5988 762.66,34.3876 762.28,8.98871 L762.28,6.59059 L498.487,6.59059 L232.295,6.59059 L232.295,11.3868 C231.901,74.2274 269.048,130.868 313.831,172.061 C337.813,193.644 366.59,210.431 400.164,222.422 C412.154,227.218 416.951,229.616 426.543,239.208 C438.534,253.597 448.126,270.384 452.923,289.569 C455.827,317.286 453.654,346.577 445.728,373.503 L440.932,387.892 C438.534,397.484 431.339,411.873 419.349,435.854 C407.358,459.836 407.358,462.234 407.358,464.632 C412.154,479.021 440.932,488.613 484.098,493.409 C493.691,493.409 508.079,493.409 527.264,491.011 M325.822,409.475 C342.609,407.077 356.998,402.281 361.794,395.086 L361.794,392.688 L359.396,385.494 C342.609,354.318 333.016,327.939 333.016,301.56 C333.016,287.171 335.415,279.977 340.211,267.986 C347.405,255.995 349.803,252.125 361.794,247.329 C366.59,244.876 372.313,243.95 374.711,242.478 C380.979,240.625 388.173,236.81 388.173,236.81 C388.173,236.81 383.868,235.884 379.016,233.486 C364.628,228.69 359.396,224.82 347.405,217.625 C309.035,196.042 285.054,174.459 261.073,143.284 C253.878,131.293 250.156,125.996 246.684,121.163 L244.286,116.904 C241.888,114.506 145.963,114.506 143.565,116.904 C141.939,150.478 158.03,180.057 179.536,205.635 C204.661,235.514 225.101,244.005 244.286,248.801 C261.073,253.597 263.471,255.995 270.665,265.588 C275.462,277.578 277.86,284.773 277.86,299.161 C280.258,320.745 273.063,342.328 258.675,373.503 C253.878,383.096 249.082,392.688 249.082,392.688 C249.082,395.086 253.878,399.883 258.675,402.281 C270.665,409.475 304.239,414.271 325.822,409.475 M716.716,409.475 C735.901,407.077 747.892,402.281 750.29,395.086 C750.29,392.688 750.29,390.29 743.095,375.901 C728.008,346.118 717.597,310.72 726.308,277.578 C731.287,264.162 737.689,250.182 752.688,247.852 C776.669,240.658 795.854,229.616 819.835,205.635 C834.224,191.246 847.61,166.971 851.369,152.876 C854.382,141.577 858.172,128.066 855.807,116.904 C853.409,114.506 755.086,114.506 752.688,116.904 C752.688,116.904 750.29,119.302 747.892,121.7 C745.493,128.895 735.901,143.284 728.707,150.478 C719.114,162.469 690.337,191.246 680.744,198.44 C663.057,216.559 629.114,228.768 611.199,236.81 C613.597,239.208 625.587,246.403 635.18,248.801 C654.365,255.995 654.365,255.995 661.559,267.986 C666.355,279.977 668.754,287.171 668.754,301.56 C670.08,334.844 653.109,365.67 639.976,392.688 C657.022,411.883 692.824,411.394 716.716,409.475 Z" style="stroke:none;fill-rule:evenodd;fill:#ffffff;fill-opacity:1;"/>
|
||||
</g>
|
||||
<g id="Shape2">
|
||||
<desc shapeID="2" type="0" basicInfo-basicType="0" basicInfo-roundedRectRadius="12" basicInfo-polygonSides="6" basicInfo-starPoints="5" bounding="rect(-3.75,-28,7.5,56)" text="" font-familyName="" font-pixelSize="20" font-bold="0" font-underline="0" font-alignment="1" strokeStyle="0" markerStart="0" markerEnd="0" shadowEnabled="0" shadowOffsetX="0" shadowOffsetY="2" shadowBlur="4" shadowOpacity="160" blurEnabled="0" blurRadius="4" transform="matrix(1,0,0,1,417.25,99.5)" pers-center="0,0" pers-size="0,0" pers-start="0,0" pers-end="0,0" locked="0" mesh="" flag=""/>
|
||||
<path id="shapePath2" d="M413.5,127.5 C414,126.5 416,123 416.5,122.5 C416,123 414,126.5 413.5,127.5 M421,71.5 " style="stroke:none;fill-rule:evenodd;fill:#669020;fill-opacity:1;"/>
|
||||
</g>
|
||||
<g id="Shape3">
|
||||
<desc shapeID="3" type="0" basicInfo-basicType="0" basicInfo-roundedRectRadius="12" basicInfo-polygonSides="6" basicInfo-starPoints="5" bounding="rect(0,0,0,0)" text="" font-familyName="" font-pixelSize="20" font-bold="0" font-underline="0" font-alignment="1" strokeStyle="0" markerStart="0" markerEnd="0" shadowEnabled="0" shadowOffsetX="0" shadowOffsetY="2" shadowBlur="4" shadowOpacity="160" blurEnabled="0" blurRadius="4" transform="matrix(1,0,0,1,0,0)" pers-center="0,0" pers-size="0,0" pers-start="0,0" pers-end="0,0" locked="0" mesh="" flag=""/>
|
||||
<path id="shapePath3" d="M0,0 Z" style="stroke:none;fill-rule:evenodd;fill:#4c4c4c;fill-opacity:1;"/>
|
||||
</g>
|
||||
<g id="Shape4">
|
||||
<desc shapeID="4" type="0" basicInfo-basicType="0" basicInfo-roundedRectRadius="12" basicInfo-polygonSides="6" basicInfo-starPoints="5" bounding="rect(0,0,0,0)" text="" font-familyName="" font-pixelSize="20" font-bold="0" font-underline="0" font-alignment="1" strokeStyle="0" markerStart="0" markerEnd="0" shadowEnabled="0" shadowOffsetX="0" shadowOffsetY="2" shadowBlur="4" shadowOpacity="160" blurEnabled="0" blurRadius="4" transform="matrix(1,0,0,1,0,0)" pers-center="0,0" pers-size="0,0" pers-start="0,0" pers-end="0,0" locked="0" mesh="" flag=""/>
|
||||
<path id="shapePath4" d="M0,0 Z" style="stroke:none;fill-rule:evenodd;fill:#000000;fill-opacity:1;"/>
|
||||
</g>
|
||||
<g id="Shape5">
|
||||
<desc shapeID="5" type="0" basicInfo-basicType="0" basicInfo-roundedRectRadius="12" basicInfo-polygonSides="6" basicInfo-starPoints="5" bounding="rect(-84.6928,-47.6497,169.386,95.2993)" text="" font-familyName="" font-pixelSize="20" font-bold="0" font-underline="0" font-alignment="1" strokeStyle="0" markerStart="0" markerEnd="0" shadowEnabled="0" shadowOffsetX="0" shadowOffsetY="2" shadowBlur="4" shadowOpacity="160" blurEnabled="0" blurRadius="4" transform="matrix(1,0,0,1,90.9499,90.9738)" pers-center="0,0" pers-size="0,0" pers-start="0,0" pers-end="0,0" locked="0" mesh="" flag=""/>
|
||||
<path id="shapePath5" d="M0,0 Z" style="stroke:none;fill-rule:evenodd;fill:#0d0d0d;fill-opacity:1;"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.8 KiB |
13
bigbluebutton-web/grails-app/assets/images/grails.svg
Normal file
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 658 B After Width: | Height: | Size: 658 B |
Before Width: | Height: | Size: 659 B After Width: | Height: | Size: 659 B |
Before Width: | Height: | Size: 767 B After Width: | Height: | Size: 767 B |
Before Width: | Height: | Size: 755 B After Width: | Height: | Size: 755 B |
Before Width: | Height: | Size: 726 B After Width: | Height: | Size: 726 B |
Before Width: | Height: | Size: 701 B After Width: | Height: | Size: 701 B |
Before Width: | Height: | Size: 806 B After Width: | Height: | Size: 806 B |
Before Width: | Height: | Size: 778 B After Width: | Height: | Size: 778 B |
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 300 B |
Before Width: | Height: | Size: 835 B After Width: | Height: | Size: 835 B |
Before Width: | Height: | Size: 834 B After Width: | Height: | Size: 834 B |
18
bigbluebutton-web/grails-app/assets/images/slack.svg
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="45px" height="45px" viewBox="0 0 45 45" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 52.1 (67048) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>slack_orange</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="slack_orange">
|
||||
<path d="M22.502,0 C10.073,0 0,10.073 0,22.499 C0,34.927 10.073,45 22.502,45 C34.927,45 45,34.927 45,22.499 C45,10.073 34.927,0 22.502,0 Z" id="Shape" fill="#FEB672"></path>
|
||||
<g id="Slack_Mark_Monochrome_White" transform="translate(11.000000, 11.000000)" fill="#FFFFFF">
|
||||
<rect id="Rectangle-path" transform="translate(11.554441, 11.462704) rotate(-18.518296) translate(-11.554441, -11.462704) " x="9.94812935" y="9.91115274" width="3.21262291" height="3.10310168"></rect>
|
||||
<g id="Group">
|
||||
<rect id="Rectangle-path" transform="translate(11.554441, 11.462704) rotate(-18.518296) translate(-11.554441, -11.462704) " x="9.94812935" y="9.91115274" width="3.21262291" height="3.10310168"></rect>
|
||||
<path d="M22.0142857,8.30555556 C19.6595238,0.456349206 16.2642857,-1.36904762 8.41507937,0.985714286 C0.565873016,3.34047619 -1.25952381,6.73571429 1.0952381,14.5849206 C3.45,22.434127 6.8452381,24.2595238 14.6944444,21.9047619 C22.5436508,19.55 24.3690476,16.1547619 22.0142857,8.30555556 Z M18.0531746,13.3984127 L16.5746032,13.8912698 L17.0857143,15.4246032 C17.2865079,16.0452381 16.9579365,16.7206349 16.3373016,16.9214286 C16.2095238,16.9579365 16.0634921,16.9944444 15.9357143,16.9761905 C15.4611111,16.9579365 15.0047619,16.647619 14.8404762,16.1730159 L14.3293651,14.6396825 L11.2809524,15.6619048 L11.7920635,17.1952381 C11.9928571,17.815873 11.6642857,18.4912698 11.0436508,18.6920635 C10.915873,18.7285714 10.7698413,18.7650794 10.6420635,18.7468254 C10.1674603,18.7285714 9.71111111,18.418254 9.5468254,17.9436508 L9.03571429,16.4103175 L7.55714286,16.9031746 C7.42936508,16.9396825 7.28333333,16.9761905 7.15555556,16.9579365 C6.68095238,16.9396825 6.22460317,16.6293651 6.06031746,16.1547619 C5.85952381,15.534127 6.18809524,14.8587302 6.80873016,14.6579365 L8.28730159,14.1650794 L7.3015873,11.2261905 L5.82301587,11.7190476 C5.6952381,11.7555556 5.54920635,11.7920635 5.42142857,11.7738095 C4.9468254,11.7555556 4.49047619,11.4452381 4.32619048,10.9706349 C4.12539683,10.35 4.45396825,9.67460317 5.07460317,9.47380952 L6.5531746,8.98095238 L6.04206349,7.44761905 C5.84126984,6.82698413 6.16984127,6.1515873 6.79047619,5.95079365 C7.41111111,5.75 8.08650794,6.07857143 8.28730159,6.69920635 L8.7984127,8.23253968 L11.8468254,7.21031746 L11.3357143,5.67698413 C11.1349206,5.05634921 11.4634921,4.38095238 12.084127,4.18015873 C12.7047619,3.97936508 13.3801587,4.30793651 13.5809524,4.92857143 L14.0920635,6.46190476 L15.5706349,5.96904762 C16.1912698,5.76825397 16.8666667,6.0968254 17.0674603,6.71746032 C17.268254,7.33809524 16.9396825,8.01349206 16.3190476,8.21428571 L14.8404762,8.70714286 L15.8261905,11.6460317 L17.3047619,11.1531746 C17.9253968,10.952381 18.6007937,11.2809524 18.8015873,11.9015873 C19.002381,12.5222222 18.6738095,13.197619 18.0531746,13.3984127 Z" id="Shape" fill-rule="nonzero"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
11
bigbluebutton-web/grails-app/assets/javascripts/application.js
Executable file
@ -0,0 +1,11 @@
|
||||
// This is a manifest file that'll be compiled into application.js.
|
||||
//
|
||||
// Any JavaScript file within this directory can be referenced here using a relative path.
|
||||
//
|
||||
// You're free to add application-wide JavaScript to this file, but it's generally better
|
||||
// to create separate JavaScript files as needed.
|
||||
//
|
||||
//= require jquery-3.3.1.min
|
||||
//= require bootstrap
|
||||
//= require popper.min
|
||||
//= require_self
|
6461
bigbluebutton-web/grails-app/assets/javascripts/bootstrap.bundle.js
vendored
Normal file
7
bigbluebutton-web/grails-app/assets/javascripts/bootstrap.bundle.min.js
vendored
Normal file
3944
bigbluebutton-web/grails-app/assets/javascripts/bootstrap.js
vendored
Normal file
7
bigbluebutton-web/grails-app/assets/javascripts/bootstrap.min.js
vendored
Normal file
2
bigbluebutton-web/grails-app/assets/javascripts/jquery-3.3.1.min.js
vendored
Normal file
5
bigbluebutton-web/grails-app/assets/javascripts/popper.min.js
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
||||
* listed below.
|
||||
*
|
||||
* Any CSS file within this directory can be referenced here using a relative path.
|
||||
*
|
||||
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
||||
* compiled file, but it's generally better to create a new file per style scope.
|
||||
*
|
||||
*= require bootstrap
|
||||
*= require grails
|
||||
*= require main
|
||||
*= require mobile
|
||||
*= require_self
|
||||
*/
|
1912
bigbluebutton-web/grails-app/assets/stylesheets/bootstrap-grid.css
vendored
Normal file
331
bigbluebutton-web/grails-app/assets/stylesheets/bootstrap-reboot.css
vendored
Normal file
@ -0,0 +1,331 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v4.1.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2018 The Bootstrap Authors
|
||||
* Copyright 2011-2018 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
|
||||
*/
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: sans-serif;
|
||||
line-height: 1.15;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-ms-overflow-style: scrollbar;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
@-ms-viewport {
|
||||
width: device-width;
|
||||
}
|
||||
|
||||
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: #212529;
|
||||
text-align: left;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
[tabindex="-1"]:focus {
|
||||
outline: 0 !important;
|
||||
}
|
||||
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title],
|
||||
abbr[data-original-title] {
|
||||
text-decoration: underline;
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: .5rem;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
-webkit-text-decoration-skip: objects;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #0056b3;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]) {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]):focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
-ms-overflow-style: scrollbar;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
svg {
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.75rem;
|
||||
padding-bottom: 0.75rem;
|
||||
color: #6c757d;
|
||||
text-align: left;
|
||||
caption-side: bottom;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus {
|
||||
outline: 1px dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
button,
|
||||
html [type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
input[type="date"],
|
||||
input[type="time"],
|
||||
input[type="datetime-local"],
|
||||
input[type="month"] {
|
||||
-webkit-appearance: listbox;
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: .5rem;
|
||||
font-size: 1.5rem;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type="search"] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
[type="search"]::-webkit-search-cancel-button,
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-reboot.css.map */
|
9030
bigbluebutton-web/grails-app/assets/stylesheets/bootstrap.css
vendored
Normal file
7
bigbluebutton-web/grails-app/assets/stylesheets/bootstrap.min.css
vendored
Normal file
109
bigbluebutton-web/grails-app/assets/stylesheets/errors.css
Executable file
@ -0,0 +1,109 @@
|
||||
h1, h2 {
|
||||
margin: 10px 25px 5px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.filename {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.exceptionMessage {
|
||||
margin: 10px;
|
||||
border: 1px solid #000;
|
||||
padding: 5px;
|
||||
background-color: #E9E9E9;
|
||||
}
|
||||
|
||||
.stack,
|
||||
.snippet {
|
||||
margin: 0 25px 10px;
|
||||
}
|
||||
|
||||
.stack,
|
||||
.snippet {
|
||||
border: 1px solid #ccc;
|
||||
-mox-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
-webkit-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
/* error details */
|
||||
.error-details {
|
||||
border-top: 1px solid #FFAAAA;
|
||||
-mox-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
-webkit-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
border-bottom: 1px solid #FFAAAA;
|
||||
-mox-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
-webkit-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
background-color:#FFF3F3;
|
||||
line-height: 1.5;
|
||||
overflow: hidden;
|
||||
padding: 5px;
|
||||
padding-left:25px;
|
||||
}
|
||||
|
||||
.error-details dt {
|
||||
clear: left;
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.error-details dt:after {
|
||||
content: ":";
|
||||
}
|
||||
|
||||
.error-details dd {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* stack trace */
|
||||
.stack {
|
||||
padding: 5px;
|
||||
overflow: auto;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
/* code snippet */
|
||||
.snippet {
|
||||
background-color: #fff;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.snippet .line {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.snippet .lineNumber {
|
||||
background-color: #ddd;
|
||||
color: #999;
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
padding: 0 3px;
|
||||
text-align: right;
|
||||
width: 3em;
|
||||
}
|
||||
|
||||
.snippet .error {
|
||||
background-color: #fff3f3;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.snippet .error .lineNumber {
|
||||
background-color: #faa;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.snippet .line:first-child .lineNumber {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.snippet .line:last-child .lineNumber {
|
||||
padding-bottom: 5px;
|
||||
}
|
1078
bigbluebutton-web/grails-app/assets/stylesheets/grails.css
Normal file
594
bigbluebutton-web/grails-app/assets/stylesheets/main.css
Executable file
@ -0,0 +1,594 @@
|
||||
/* FONT STACK */
|
||||
body,
|
||||
input, select, textarea {
|
||||
font-family: "Open Sans", "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
/* BASE LAYOUT */
|
||||
|
||||
html {
|
||||
background-color: #ddd;
|
||||
background-image: -moz-linear-gradient(center top, #aaa, #ddd);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #aaa), color-stop(1, #ddd));
|
||||
background-image: linear-gradient(to bottom, #aaa, #ddd);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr = '#aaaaaa', EndColorStr = '#dddddd');
|
||||
background-repeat: no-repeat;
|
||||
height: 100%;
|
||||
/* change the box model to exclude the padding from the calculation of 100% height (IE8+) */
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html.no-cssgradients {
|
||||
background-color: #aaa;
|
||||
}
|
||||
|
||||
html * {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #F5F5F5;
|
||||
color: #333333;
|
||||
overflow-x: hidden; /* prevents box-shadow causing a horizontal scrollbar in firefox when viewport < 960px wide */
|
||||
-moz-box-shadow: 0 0 0.3em #424649;
|
||||
-webkit-box-shadow: 0 0 0.3em #424649;
|
||||
box-shadow: 0 0 0.3em #424649;
|
||||
}
|
||||
|
||||
#grailsLogo {
|
||||
background-color: #feb672;
|
||||
}
|
||||
|
||||
a:hover, a:active {
|
||||
outline: none; /* prevents outline in webkit on active links but retains it for tab focus */
|
||||
}
|
||||
|
||||
h1, h2, h3 {
|
||||
font-weight: normal;
|
||||
font-size: 1.25em;
|
||||
margin: 0.8em 0 0.3em 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/* GENERAL */
|
||||
|
||||
#grailsLogo a {
|
||||
display: inline-block;
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
.content {
|
||||
}
|
||||
|
||||
.content h1 {
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
margin: 0.8em 1em 0.3em;
|
||||
padding: 0 0.25em;
|
||||
}
|
||||
|
||||
.scaffold-list h1 {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.footer img {
|
||||
height: 80px;
|
||||
margin-right: 25px;
|
||||
margin-bottom: 15px;
|
||||
clear: bottom;
|
||||
}
|
||||
|
||||
.footer strong a {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background: #424649;
|
||||
color: #ffffff;
|
||||
clear: both;
|
||||
font-size: 1em;
|
||||
margin-top: 1.5em;
|
||||
padding: 1em;
|
||||
padding-bottom: 2em;
|
||||
min-height: 1em;
|
||||
}
|
||||
|
||||
.footer a {
|
||||
color: #feb672;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
background: url(../images/spinner.gif) 50% 50% no-repeat transparent;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
padding: 0.5em;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
text-indent: -9999px;
|
||||
}
|
||||
|
||||
/* NAVIGATION MENU */
|
||||
|
||||
.nav {
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.nav ul {
|
||||
overflow: hidden;
|
||||
padding-left: 0;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.nav li {
|
||||
display: block;
|
||||
float: left;
|
||||
list-style-type: none;
|
||||
margin-right: 0.5em;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.nav a {
|
||||
color: #666666;
|
||||
display: block;
|
||||
padding: 0.25em 0.7em;
|
||||
text-decoration: none;
|
||||
-moz-border-radius: 0.3em;
|
||||
-webkit-border-radius: 0.3em;
|
||||
border-radius: 0.3em;
|
||||
}
|
||||
|
||||
.nav li.dropdown-item a {
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.nav a:active, .nav a:visited {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.nav a:focus, .nav a:hover {
|
||||
background-color: #999999;
|
||||
color: #ffffff;
|
||||
outline: none;
|
||||
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
|
||||
}
|
||||
|
||||
.no-borderradius .nav a:focus, .no-borderradius .nav a:hover {
|
||||
background-color: transparent;
|
||||
color: #444444;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.nav a.home, .nav a.list, .nav a.create {
|
||||
background-position: 0.7em center;
|
||||
background-repeat: no-repeat;
|
||||
text-indent: 25px;
|
||||
}
|
||||
|
||||
.nav a.home {
|
||||
background-image: url(../images/skin/house.png);
|
||||
}
|
||||
|
||||
.nav a.list {
|
||||
background-image: url(../images/skin/database_table.png);
|
||||
}
|
||||
|
||||
.nav a.create {
|
||||
background-image: url(../images/skin/database_add.png);
|
||||
}
|
||||
|
||||
.nav li.dropdown.show ul.dropdown-menu {
|
||||
background-color: #424649;
|
||||
}
|
||||
|
||||
/* CREATE/EDIT FORMS AND SHOW PAGES */
|
||||
|
||||
fieldset,
|
||||
.property-list {
|
||||
margin: 0.6em 1.25em 0 1.25em;
|
||||
padding: 0.3em 1.8em 1.25em;
|
||||
position: relative;
|
||||
zoom: 1;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.property-list .fieldcontain {
|
||||
list-style: none;
|
||||
overflow: hidden;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.fieldcontain {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.fieldcontain label,
|
||||
.fieldcontain .property-label {
|
||||
color: #666666;
|
||||
text-align: right;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.fieldcontain .property-label {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fieldcontain .property-value {
|
||||
display: block;
|
||||
margin-left: 27%;
|
||||
}
|
||||
|
||||
label {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
margin: 0 0.25em 0 0;
|
||||
}
|
||||
|
||||
input, select, textarea {
|
||||
background-color: #fcfcfc;
|
||||
border: 1px solid #cccccc;
|
||||
font-size: 1em;
|
||||
padding: 0.2em 0.4em;
|
||||
}
|
||||
|
||||
select {
|
||||
padding: 0.2em 0.2em 0.2em 0;
|
||||
}
|
||||
|
||||
select[multiple] {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 250px;
|
||||
height: 150px;
|
||||
overflow: auto; /* IE always renders vertical scrollbar without this */
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
input[type=checkbox], input[type=radio] {
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
input:focus, select:focus, textarea:focus {
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #eeeeee;
|
||||
outline: 0;
|
||||
-moz-box-shadow: 0 0 0.5em #ffffff;
|
||||
-webkit-box-shadow: 0 0 0.5em #ffffff;
|
||||
box-shadow: 0 0 0.5em #ffffff;
|
||||
}
|
||||
|
||||
.required-indicator {
|
||||
color: #cc0000;
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
margin-left: 0.3em;
|
||||
position: relative;
|
||||
top: 0.1em;
|
||||
}
|
||||
|
||||
ul.one-to-many {
|
||||
display: inline-block;
|
||||
list-style-position: inside;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
ul.one-to-many li.add {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
/* EMBEDDED PROPERTIES */
|
||||
|
||||
fieldset.embedded {
|
||||
background-color: transparent;
|
||||
border: 1px solid #CCCCCC;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
-moz-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
fieldset.embedded legend {
|
||||
margin: 0 1em;
|
||||
}
|
||||
|
||||
/* MESSAGES AND ERRORS */
|
||||
|
||||
.errors,
|
||||
.message {
|
||||
font-size: 0.8em;
|
||||
line-height: 2;
|
||||
margin: 1em 2em;
|
||||
padding: 0.25em;
|
||||
}
|
||||
|
||||
.message {
|
||||
background: #f3f3ff;
|
||||
border: 1px solid #b2d1ff;
|
||||
color: #006dba;
|
||||
-moz-box-shadow: 0 0 0.25em #b2d1ff;
|
||||
-webkit-box-shadow: 0 0 0.25em #b2d1ff;
|
||||
box-shadow: 0 0 0.25em #b2d1ff;
|
||||
}
|
||||
|
||||
.errors {
|
||||
background: #fff3f3;
|
||||
border: 1px solid #ffaaaa;
|
||||
color: #cc0000;
|
||||
-moz-box-shadow: 0 0 0.25em #ff8888;
|
||||
-webkit-box-shadow: 0 0 0.25em #ff8888;
|
||||
box-shadow: 0 0 0.25em #ff8888;
|
||||
}
|
||||
|
||||
.errors ul,
|
||||
.message {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.errors li {
|
||||
list-style: none;
|
||||
background: transparent url(../images/skin/exclamation.png) 0.5em 50% no-repeat;
|
||||
text-indent: 2.2em;
|
||||
}
|
||||
|
||||
.message {
|
||||
background: transparent url(../images/skin/information.png) 0.5em 50% no-repeat;
|
||||
text-indent: 2.2em;
|
||||
}
|
||||
|
||||
/* form fields with errors */
|
||||
|
||||
.error input, .error select, .error textarea {
|
||||
background: #fff3f3;
|
||||
border-color: #ffaaaa;
|
||||
color: #cc0000;
|
||||
}
|
||||
|
||||
.error input:focus, .error select:focus, .error textarea:focus {
|
||||
-moz-box-shadow: 0 0 0.5em #ffaaaa;
|
||||
-webkit-box-shadow: 0 0 0.5em #ffaaaa;
|
||||
box-shadow: 0 0 0.5em #ffaaaa;
|
||||
}
|
||||
|
||||
/* same effects for browsers that support HTML5 client-side validation (these have to be specified separately or IE will ignore the entire rule) */
|
||||
|
||||
input:invalid, select:invalid, textarea:invalid {
|
||||
background: #fff3f3;
|
||||
border-color: #ffaaaa;
|
||||
color: #cc0000;
|
||||
}
|
||||
|
||||
input:invalid:focus, select:invalid:focus, textarea:invalid:focus {
|
||||
-moz-box-shadow: 0 0 0.5em #ffaaaa;
|
||||
-webkit-box-shadow: 0 0 0.5em #ffaaaa;
|
||||
box-shadow: 0 0 0.5em #ffaaaa;
|
||||
}
|
||||
|
||||
/* TABLES */
|
||||
|
||||
table {
|
||||
border-top: 1px solid #DFDFDF;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
tr {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
tr>td:first-child, tr>th:first-child {
|
||||
padding-left: 1.25em;
|
||||
}
|
||||
|
||||
tr>td:last-child, tr>th:last-child {
|
||||
padding-right: 1.25em;
|
||||
}
|
||||
|
||||
td, th {
|
||||
line-height: 1.5em;
|
||||
padding: 0.5em 0.6em;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #efefef;
|
||||
background-image: -moz-linear-gradient(top, #ffffff, #eaeaea);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(1, #eaeaea));
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr = '#ffffff', EndColorStr = '#eaeaea');
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#eaeaea')";
|
||||
color: #666666;
|
||||
font-weight: bold;
|
||||
line-height: 1.7em;
|
||||
padding: 0.2em 0.6em;
|
||||
}
|
||||
|
||||
thead th {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
th a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
th a:link, th a:visited {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
th a:hover, th a:focus {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
th.sortable a {
|
||||
background-position: right;
|
||||
background-repeat: no-repeat;
|
||||
padding-right: 1.1em;
|
||||
}
|
||||
|
||||
th.asc a {
|
||||
background-image: url(../images/skin/sorted_asc.gif);
|
||||
}
|
||||
|
||||
th.desc a {
|
||||
background-image: url(../images/skin/sorted_desc.gif);
|
||||
}
|
||||
|
||||
.odd {
|
||||
background: #f7f7f7;
|
||||
}
|
||||
|
||||
.even {
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
th:hover, tr:hover {
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
/* PAGINATION */
|
||||
|
||||
.pagination {
|
||||
border-top: 0;
|
||||
margin: 0.8em 1em 0.3em;
|
||||
padding: 0.3em 0.2em;
|
||||
text-align: center;
|
||||
-moz-box-shadow: 0 0 3px 1px #AAAAAA;
|
||||
-webkit-box-shadow: 0 0 3px 1px #AAAAAA;
|
||||
box-shadow: 0 0 3px 1px #AAAAAA;
|
||||
background-color: #EFEFEF;
|
||||
}
|
||||
|
||||
.pagination a,
|
||||
.pagination .currentStep {
|
||||
color: #666666;
|
||||
display: inline-block;
|
||||
margin: 0 0.1em;
|
||||
padding: 0.25em 0.7em;
|
||||
text-decoration: none;
|
||||
-moz-border-radius: 0.3em;
|
||||
-webkit-border-radius: 0.3em;
|
||||
border-radius: 0.3em;
|
||||
}
|
||||
|
||||
.pagination a:hover, .pagination a:focus,
|
||||
.pagination .currentStep {
|
||||
background-color: #999999;
|
||||
color: #ffffff;
|
||||
outline: none;
|
||||
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
|
||||
}
|
||||
|
||||
.no-borderradius .pagination a:hover, .no-borderradius .pagination a:focus,
|
||||
.no-borderradius .pagination .currentStep {
|
||||
background-color: transparent;
|
||||
color: #444444;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* ACTION BUTTONS */
|
||||
|
||||
.buttons {
|
||||
background-color: #efefef;
|
||||
overflow: hidden;
|
||||
padding: 0.3em;
|
||||
-moz-box-shadow: 0 0 3px 1px #aaaaaa;
|
||||
-webkit-box-shadow: 0 0 3px 1px #aaaaaa;
|
||||
box-shadow: 0 0 3px 1px #aaaaaa;
|
||||
margin: 0.1em 0 0 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.buttons input,
|
||||
.buttons a {
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
color: #666666;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
margin: 0 0.25em 0;
|
||||
overflow: visible;
|
||||
padding: 0.25em 0.7em;
|
||||
text-decoration: none;
|
||||
|
||||
-moz-border-radius: 0.3em;
|
||||
-webkit-border-radius: 0.3em;
|
||||
border-radius: 0.3em;
|
||||
}
|
||||
|
||||
.buttons input:hover, .buttons input:focus,
|
||||
.buttons a:hover, .buttons a:focus {
|
||||
background-color: #999999;
|
||||
color: #ffffff;
|
||||
outline: none;
|
||||
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
|
||||
-moz-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.no-borderradius .buttons input:hover, .no-borderradius .buttons input:focus,
|
||||
.no-borderradius .buttons a:hover, .no-borderradius .buttons a:focus {
|
||||
background-color: transparent;
|
||||
color: #444444;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.buttons .delete, .buttons .edit, .buttons .save {
|
||||
background-position: 0.7em center;
|
||||
background-repeat: no-repeat;
|
||||
text-indent: 25px;
|
||||
}
|
||||
|
||||
.buttons .delete {
|
||||
background-image: url(../images/skin/database_delete.png);
|
||||
}
|
||||
|
||||
.buttons .edit {
|
||||
background-image: url(../images/skin/database_edit.png);
|
||||
}
|
||||
|
||||
.buttons .save {
|
||||
background-image: url(../images/skin/database_save.png);
|
||||
}
|
||||
|
||||
a.skip {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
|
||||
.grails-logo-container {
|
||||
background: #7c7c7c no-repeat 50% 30%;
|
||||
margin-bottom: 20px;
|
||||
color: white;
|
||||
height:300px;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
img.grails-logo {
|
||||
height:340px;
|
||||
margin-top:-10px;
|
||||
}
|
82
bigbluebutton-web/grails-app/assets/stylesheets/mobile.css
Executable file
@ -0,0 +1,82 @@
|
||||
/* Styles for mobile devices */
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
.nav {
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.nav li {
|
||||
margin: 0 0.5em 0 0;
|
||||
padding: 0.25em;
|
||||
}
|
||||
|
||||
/* Hide individual steps in pagination, just have next & previous */
|
||||
.pagination .step, .pagination .currentStep {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pagination .prevLink {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.pagination .nextLink {
|
||||
float: right;
|
||||
}
|
||||
|
||||
/* pagination needs to wrap around floated buttons */
|
||||
.pagination {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* slightly smaller margin around content body */
|
||||
fieldset,
|
||||
.property-list {
|
||||
padding: 0.3em 1em 1em;
|
||||
}
|
||||
|
||||
input, textarea {
|
||||
width: 100%;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
select, input[type=checkbox], input[type=radio], input[type=submit], input[type=button], input[type=reset] {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
/* hide all but the first column of list tables */
|
||||
.scaffold-list td:not(:first-child),
|
||||
.scaffold-list th:not(:first-child) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.scaffold-list thead th {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* stack form elements */
|
||||
.fieldcontain {
|
||||
margin-top: 0.6em;
|
||||
}
|
||||
|
||||
.fieldcontain label,
|
||||
.fieldcontain .property-label,
|
||||
.fieldcontain .property-value {
|
||||
display: block;
|
||||
float: none;
|
||||
margin: 0 0 0.25em 0;
|
||||
text-align: left;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.errors ul,
|
||||
.message p {
|
||||
margin: 0.5em;
|
||||
}
|
||||
|
||||
.error ul {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
@ -3,8 +3,8 @@ 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.target.level = 1.8
|
||||
grails.project.source.level = 1.8
|
||||
//grails.project.war.file = "target/${appName}-${appVersion}.war"
|
||||
|
||||
grails.project.fork = [
|
||||
@ -31,43 +31,4 @@ grails.project.dependency.resolution = {
|
||||
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.27'
|
||||
runtime 'org.json:json:20160212'
|
||||
}
|
||||
|
||||
plugins {
|
||||
// plugins for the build system only
|
||||
build ":tomcat:7.0.52.1"
|
||||
|
||||
// plugins for the compile step
|
||||
compile ":scaffolding:2.1.0"
|
||||
// compile ':cache:1.1.3' //TODO commented out for now Anton
|
||||
|
||||
// plugins needed at runtime but not for compilation
|
||||
runtime ":hibernate4:4.3.5.2" // or ":hibernate4:4.3.1.1"
|
||||
runtime ":database-migration:1.4.0"
|
||||
//runtime ":jquery:1.11.0"
|
||||
runtime ":asset-pipeline:1.8.3"
|
||||
// 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"
|
||||
}
|
||||
}
|
||||
|
@ -1 +0,0 @@
|
||||
|
@ -1,104 +0,0 @@
|
||||
class UrlMappings {
|
||||
|
||||
static mappings = {
|
||||
"/presentation/$authzToken/upload"(controller:"presentation") {
|
||||
action = [POST:'upload']
|
||||
}
|
||||
|
||||
"/presentation/checkPresentation"(controller:"presentation") {
|
||||
action = [GET:'checkPresentationBeforeUploading']
|
||||
}
|
||||
|
||||
"/presentation/test-convert"(controller:"presentation") {
|
||||
action = [GET:'testConversion']
|
||||
}
|
||||
|
||||
"/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/thumbnails"(controller:"presentation") {
|
||||
action = [GET:'numberOfThumbnails']
|
||||
}
|
||||
|
||||
"/presentation/$conference/$room/$presentation_name/thumbnail/$id"(controller:"presentation") {
|
||||
action = [GET:'showThumbnail']
|
||||
}
|
||||
|
||||
"/presentation/$conference/$room/$presentation_name/png/$id"(controller:"presentation") {
|
||||
action = [GET:'showPng']
|
||||
}
|
||||
|
||||
"/presentation/$conference/$room/$presentation_name/svgs"(controller:"presentation") {
|
||||
action = [GET:'numberOfSvgs']
|
||||
}
|
||||
|
||||
"/presentation/$conference/$room/$presentation_name/svg/$id"(controller:"presentation") {
|
||||
action = [GET:'showSvgImage']
|
||||
}
|
||||
|
||||
"/presentation/$conference/$room/$presentation_name/textfiles"(controller:"presentation") {
|
||||
action = [GET:'numberOfTextfiles']
|
||||
}
|
||||
|
||||
"/presentation/$conference/$room/$presentation_name/textfiles/$id"(controller:"presentation") {
|
||||
action = [GET:'showTextfile']
|
||||
}
|
||||
|
||||
"/presentation/download/$meetingId/$presId"(controller:"presentation") {
|
||||
action = [GET:'downloadFile']
|
||||
}
|
||||
|
||||
"/api/setConfigXML"(controller:"api") {
|
||||
action = [POST:'setConfigXML']
|
||||
}
|
||||
|
||||
"/api/setPollXML"(controller:"api") {
|
||||
action = [POST:'setPollXML']
|
||||
}
|
||||
|
||||
"/api/getMeetings"(controller:"api") {
|
||||
action = [GET:'getMeetingsHandler', POST:'getMeetingsHandler']
|
||||
}
|
||||
|
||||
"/api/getSessions"(controller:"api") {
|
||||
action = [GET:'getSessionsHandler', POST:'getSessionsHandler']
|
||||
}
|
||||
|
||||
"/api/getRecordings"(controller:"api") {
|
||||
action = [GET:'getRecordingsHandler', POST:'getRecordingsHandler']
|
||||
}
|
||||
|
||||
"/api/updateRecordings"(controller:"api") {
|
||||
action = [GET:'updateRecordingsHandler', POST:'updateRecordingsHandler']
|
||||
}
|
||||
|
||||
"/api/guestWait"(controller:"api") {
|
||||
action = [GET: 'guestWaitHandler']
|
||||
}
|
||||
|
||||
"/api/getRecordingTextTracks"(controller:"recording") {
|
||||
action = [GET:'getRecordingTextTracks']
|
||||
}
|
||||
|
||||
"/api/putRecordingTextTrack"(controller:"recording") {
|
||||
action = [POST:'putRecordingTextTrack']
|
||||
}
|
||||
|
||||
"/$controller/$action?/$id?(.${format})?"{
|
||||
constraints {
|
||||
// apply constraints here
|
||||
}
|
||||
}
|
||||
|
||||
"/"(controller:"api") {
|
||||
action = [GET:'index']
|
||||
}
|
||||
|
||||
"500"(view:'/error')
|
||||
}
|
||||
}
|
@ -93,7 +93,7 @@ environments {
|
||||
// TODO: grails.serverURL = "http://www.changeme.com"
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// log4j configuration
|
||||
log4j = {
|
||||
appenders {
|
||||
@ -117,20 +117,5 @@ log4j = {
|
||||
debug logfile: 'org.bigbluebutton.*',
|
||||
'grails.app.controllers',
|
||||
'grails.app.services'
|
||||
|
||||
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',
|
||||
'grails.app.controllers',
|
||||
'grails.app.services'
|
||||
}
|
||||
*/
|
128
bigbluebutton-web/grails-app/conf/application.yml
Normal file
@ -0,0 +1,128 @@
|
||||
---
|
||||
grails:
|
||||
profile: web
|
||||
codegen:
|
||||
defaultPackage: org.bigbluebutton.web
|
||||
gorm:
|
||||
reactor:
|
||||
# Whether to translate GORM events into Reactor events
|
||||
# Disabled by default for performance reasons
|
||||
events: false
|
||||
info:
|
||||
app:
|
||||
name: '@info.app.name@'
|
||||
version: '@info.app.version@'
|
||||
grailsVersion: '@info.app.grailsVersion@'
|
||||
spring:
|
||||
main:
|
||||
banner-mode: "off"
|
||||
groovy:
|
||||
template:
|
||||
check-template-location: false
|
||||
|
||||
# Spring Actuator Endpoints are Disabled by Default
|
||||
endpoints:
|
||||
enabled: false
|
||||
jmx:
|
||||
enabled: true
|
||||
|
||||
---
|
||||
grails:
|
||||
mime:
|
||||
disable:
|
||||
accept:
|
||||
header:
|
||||
userAgents:
|
||||
- Gecko
|
||||
- WebKit
|
||||
- Presto
|
||||
- Trident
|
||||
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
|
||||
pdf: application/pdf
|
||||
rss: application/rss+xml
|
||||
text: text/plain
|
||||
hal:
|
||||
- application/hal+json
|
||||
- application/hal+xml
|
||||
xml:
|
||||
- text/xml
|
||||
- application/xml
|
||||
urlmapping:
|
||||
cache:
|
||||
maxsize: 1000
|
||||
controllers:
|
||||
defaultScope: singleton
|
||||
converters:
|
||||
encoding: UTF-8
|
||||
views:
|
||||
default:
|
||||
codec: html
|
||||
gsp:
|
||||
encoding: UTF-8
|
||||
htmlcodec: xml
|
||||
codecs:
|
||||
expression: html
|
||||
scriptlets: html
|
||||
taglib: none
|
||||
staticparts: none
|
||||
endpoints:
|
||||
jmx:
|
||||
unique-names: true
|
||||
|
||||
---
|
||||
hibernate:
|
||||
cache:
|
||||
queries: false
|
||||
use_second_level_cache: false
|
||||
use_query_cache: false
|
||||
dataSource:
|
||||
pooled: true
|
||||
jmxExport: true
|
||||
driverClassName: org.h2.Driver
|
||||
username: sa
|
||||
password: ''
|
||||
|
||||
environments:
|
||||
development:
|
||||
dataSource:
|
||||
dbCreate: create-drop
|
||||
url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
|
||||
test:
|
||||
dataSource:
|
||||
dbCreate: update
|
||||
url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
|
||||
production:
|
||||
dataSource:
|
||||
dbCreate: none
|
||||
url: jdbc:h2:./prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
|
||||
properties:
|
||||
jmxEnabled: true
|
||||
initialSize: 5
|
||||
maxActive: 50
|
||||
minIdle: 5
|
||||
maxIdle: 25
|
||||
maxWait: 10000
|
||||
maxAge: 600000
|
||||
timeBetweenEvictionRunsMillis: 5000
|
||||
minEvictableIdleTimeMillis: 60000
|
||||
validationQuery: SELECT 1
|
||||
validationQueryTimeout: 3
|
||||
validationInterval: 15000
|
||||
testOnBorrow: true
|
||||
testWhileIdle: true
|
||||
testOnReturn: false
|
||||
jdbcInterceptors: ConnectionState
|
||||
defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED
|
51
bigbluebutton-web/grails-app/conf/logback.groovy
Normal file
@ -0,0 +1,51 @@
|
||||
import grails.util.BuildSettings
|
||||
import grails.util.Environment
|
||||
import org.springframework.boot.logging.logback.ColorConverter
|
||||
import org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter
|
||||
|
||||
import java.nio.charset.Charset
|
||||
|
||||
conversionRule 'clr', ColorConverter
|
||||
conversionRule 'wex', WhitespaceThrowableProxyConverter
|
||||
|
||||
// See http://logback.qos.ch/manual/groovy.html for details on configuration
|
||||
appender('STDOUT', ConsoleAppender) {
|
||||
encoder(PatternLayoutEncoder) {
|
||||
charset = Charset.forName('UTF-8')
|
||||
|
||||
pattern =
|
||||
'%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} ' + // Date
|
||||
'%clr(%5p) ' + // Log level
|
||||
'%clr(---){faint} %clr([%15.15t]){faint} ' + // Thread
|
||||
'%clr(%-40.40logger{39}){cyan} %clr(:){faint} ' + // Logger
|
||||
'%m%n%wex' // Message
|
||||
}
|
||||
}
|
||||
|
||||
logger('org.grails.web.servlet', ERROR) // controllers
|
||||
logger('org.grails.web.pages', ERROR) // GSP
|
||||
logger('org.grails.web.sitemesh', ERROR) // layouts
|
||||
logger('org.grails.web.mapping.filter', ERROR) // URL mapping
|
||||
logger('org.grails.web.mapping', ERROR) // URL mapping
|
||||
logger('org.grails.commons', ERROR) // core / classloading
|
||||
logger('org.grails.plugins', ERROR) // plugins
|
||||
logger('org.springframework', ERROR)
|
||||
|
||||
logger('io.lettuce', INFO)
|
||||
|
||||
logger('org.bigbluebutton', DEBUG)
|
||||
logger('grails.app.controllers', DEBUG)
|
||||
logger('grails.app.services', DEBUG)
|
||||
|
||||
def targetDir = BuildSettings.TARGET_DIR
|
||||
if (Environment.isDevelopmentMode() && targetDir != null) {
|
||||
appender("FULL_STACKTRACE", FileAppender) {
|
||||
file = "${targetDir}/stacktrace.log"
|
||||
append = true
|
||||
encoder(PatternLayoutEncoder) {
|
||||
pattern = "%level %logger - %msg%n"
|
||||
}
|
||||
}
|
||||
logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false)
|
||||
}
|
||||
root(ERROR, ['STDOUT'])
|
@ -1,3 +1,39 @@
|
||||
// Place your Spring DSL code here
|
||||
beans = {
|
||||
}
|
||||
/*
|
||||
Add back applicationContext.xml
|
||||
|
||||
<?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.xsd">
|
||||
|
||||
<bean id="grailsApplication" class="org.grails.commons.GrailsApplicationFactoryBean">
|
||||
<description>Grails application factory bean</description>
|
||||
<property name="grailsDescriptor" value="/WEB-INF/grails.xml" />
|
||||
</bean>
|
||||
|
||||
<bean id="pluginManager" class="org.grails.plugins.GrailsPluginManagerFactoryBean">
|
||||
<description>A bean that manages Grails plugins</description>
|
||||
<property name="grailsDescriptor" value="/WEB-INF/grails.xml" />
|
||||
<property name="application" ref="grailsApplication" />
|
||||
</bean>
|
||||
|
||||
<bean id="grailsConfigurator" class="org.grails.commons.spring.GrailsRuntimeConfigurator">
|
||||
<constructor-arg>
|
||||
<ref bean="grailsApplication" />
|
||||
</constructor-arg>
|
||||
<property name="pluginManager" ref="pluginManager" />
|
||||
</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,0 +1,106 @@
|
||||
package org.bigbluebutton.web
|
||||
|
||||
class UrlMappings {
|
||||
|
||||
static mappings = {
|
||||
"/bigbluebutton/presentation/$authzToken/upload"(controller:"presentation") {
|
||||
action = [POST:'upload']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/checkPresentation"(controller:"presentation") {
|
||||
action = [GET:'checkPresentationBeforeUploading']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/test-convert"(controller:"presentation") {
|
||||
action = [GET:'testConversion']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/$conference/$room/$presentation_name/slides"(controller:"presentation") {
|
||||
action = [GET:'numberOfSlides']
|
||||
}
|
||||
|
||||
"/bigbluebutton/bigbluebutton/presentation/$conference/$room/$presentation_name/slide/$id"(controller:"presentation") {
|
||||
action = [GET:'showSlide']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/$conference/$room/$presentation_name/thumbnails"(controller:"presentation") {
|
||||
action = [GET:'numberOfThumbnails']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/$conference/$room/$presentation_name/thumbnail/$id"(controller:"presentation") {
|
||||
action = [GET:'showThumbnail']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/$conference/$room/$presentation_name/png/$id"(controller:"presentation") {
|
||||
action = [GET:'showPng']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/$conference/$room/$presentation_name/svgs"(controller:"presentation") {
|
||||
action = [GET:'numberOfSvgs']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/$conference/$room/$presentation_name/svg/$id"(controller:"presentation") {
|
||||
action = [GET:'showSvgImage']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/$conference/$room/$presentation_name/textfiles"(controller:"presentation") {
|
||||
action = [GET:'numberOfTextfiles']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/$conference/$room/$presentation_name/textfiles/$id"(controller:"presentation") {
|
||||
action = [GET:'showTextfile']
|
||||
}
|
||||
|
||||
"/bigbluebutton/presentation/download/$meetingId/$presId"(controller:"presentation") {
|
||||
action = [GET:'downloadFile']
|
||||
}
|
||||
|
||||
"/bigbluebutton/api/setConfigXML"(controller:"api") {
|
||||
action = [POST:'setConfigXML']
|
||||
}
|
||||
|
||||
"/bigbluebutton/api/setPollXML"(controller:"api") {
|
||||
action = [POST:'setPollXML']
|
||||
}
|
||||
|
||||
"/bigbluebutton/api/getMeetings"(controller:"api") {
|
||||
action = [GET:'getMeetingsHandler', POST:'getMeetingsHandler']
|
||||
}
|
||||
|
||||
"/bigbluebutton/api/getSessions"(controller:"api") {
|
||||
action = [GET:'getSessionsHandler', POST:'getSessionsHandler']
|
||||
}
|
||||
|
||||
"/bigbluebutton/api/getRecordings"(controller:"api") {
|
||||
action = [GET:'getRecordingsHandler', POST:'getRecordingsHandler']
|
||||
}
|
||||
|
||||
"/bigbluebutton/api/updateRecordings"(controller:"api") {
|
||||
action = [GET:'updateRecordingsHandler', POST:'updateRecordingsHandler']
|
||||
}
|
||||
|
||||
"/bigbluebutton/api/guestWait"(controller:"api") {
|
||||
action = [GET: 'guestWaitHandler']
|
||||
}
|
||||
|
||||
"/bigbluebutton/api/getRecordingTextTracks"(controller:"recording") {
|
||||
action = [GET:'getRecordingTextTracks']
|
||||
}
|
||||
|
||||
"/bigbluebutton/api/putRecordingTextTrack"(controller:"recording") {
|
||||
action = [POST:'putRecordingTextTrack']
|
||||
}
|
||||
|
||||
"/bigbluebutton/$controller/$action?/$id?(.${format})?"{
|
||||
constraints {
|
||||
// apply constraints here
|
||||
}
|
||||
}
|
||||
|
||||
"/bigbluebutton/"(controller:"api") {
|
||||
action = [GET:'index']
|
||||
}
|
||||
|
||||
"500"(view:'/error')
|
||||
}
|
||||
}
|
@ -68,7 +68,7 @@ class ApiController {
|
||||
private static final String RESP_CODE_FAILED = 'FAILED'
|
||||
private static final String ROLE_MODERATOR = "MODERATOR";
|
||||
private static final String ROLE_ATTENDEE = "VIEWER";
|
||||
private static final String REDIRECT_RESPONSE = true
|
||||
private static final Boolean REDIRECT_RESPONSE = true
|
||||
|
||||
MeetingService meetingService;
|
||||
PresentationService presentationService
|
||||
@ -99,7 +99,7 @@ class ApiController {
|
||||
def create = {
|
||||
String API_CALL = 'create'
|
||||
log.debug CONTROLLER_NAME + "#${API_CALL}"
|
||||
log.debug params
|
||||
log.debug request.getParameterMap().toMapString()
|
||||
|
||||
// BEGIN - backward compatibility
|
||||
if (StringUtils.isEmpty(params.checksum)) {
|
||||
|
@ -53,3 +53,4 @@ 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
|
||||
typeMismatch=Property {0} is type-mismatched
|
||||
|
55
bigbluebutton-web/grails-app/i18n/messages_cs.properties
Normal 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
|
@ -11,7 +11,7 @@ default.invalid.min.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]
|
||||
default.invalid.validator.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、カスタムバリデーションを通過できません。
|
||||
default.not.inlist.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]リスト内に存在しません。
|
||||
default.blank.message=[{1}]クラスのプロパティ[{0}]の空白は許可されません。
|
||||
default.not.equal.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]と同等ではありません。
|
||||
default.not.equal.message=クラス[{1}]プロパティ[{0}]の値[{2}]に[{3}]は許可されません。
|
||||
default.null.message=[{1}]クラスのプロパティ[{0}]にnullは許可されません。
|
||||
default.not.unique.message=クラス[{1}]プロパティ[{0}]の値[{2}]は既に使用されています。
|
||||
|
||||
|
@ -8,7 +8,7 @@ default.invalid.creditCard.message=O campo [{0}] da classe [{1}] com o valor [{2
|
||||
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.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}]
|
||||
@ -16,7 +16,7 @@ default.invalid.validator.message=O campo [{0}] da classe [{1}] com o valor [{2}
|
||||
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.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
|
||||
@ -30,7 +30,7 @@ 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.not.found.message={0} não foi encontrado com o id {1}
|
||||
default.optimistic.locking.failure=Outro usuário atualizou este [{0}] enquanto você tentou salvá-lo
|
||||
|
||||
default.home.label=Principal
|
||||
|
56
bigbluebutton-web/grails-app/i18n/messages_sk.properties
Normal file
@ -0,0 +1,56 @@
|
||||
default.doesnt.match.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] nezodpovedá požadovanému formátu [{3}]
|
||||
default.invalid.url.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] nie je platná URL adresa
|
||||
default.invalid.creditCard.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] nie je platné číslo kreditnej karty
|
||||
default.invalid.email.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] nie je platná emailová adresa
|
||||
default.invalid.range.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] nie je v povolenom rozmedzí od [{3}] do [{4}]
|
||||
default.invalid.size.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] nie je v povolenom rozmedzí od [{3}] do [{4}]
|
||||
default.invalid.max.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] prekračuje maximálnu povolenú hodnotu [{3}]
|
||||
default.invalid.min.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] je menšia ako minimálna povolená hodnota [{3}]
|
||||
default.invalid.max.size.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] prekračuje maximálnu veľkosť [{3}]
|
||||
default.invalid.min.size.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] je menšia ako minimálna veľkosť [{3}]
|
||||
default.invalid.validator.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] neprešla validáciou
|
||||
default.not.inlist.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] nie je obsiahnutá v zozname [{3}]
|
||||
default.blank.message=Položka [{0}] triedy [{1}] nemôže byť prázdna
|
||||
default.not.equal.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] nemôže byť rovnaká ako [{3}]
|
||||
default.null.message=Položka [{0}] triedy [{1}] nemôže byť prázdna
|
||||
default.not.unique.message=Položka [{0}] triedy [{1}] s hodnotou [{2}] musí byť unikátna
|
||||
|
||||
default.paginate.prev=Predchádzajúce
|
||||
default.paginate.next=Nasledujúce
|
||||
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} vytvorené
|
||||
default.updated.message={0} {1} aktualizované
|
||||
default.deleted.message={0} {1} vymazané
|
||||
default.not.deleted.message={0} {1} nemožno zmazať
|
||||
default.not.found.message={0} nenájdené s id {1}
|
||||
default.optimistic.locking.failure=Iný používateľ aktualizoval záznam {0}, práve keď bol vami editovaný
|
||||
|
||||
default.home.label=Domov
|
||||
default.list.label={0} Zoznam
|
||||
default.add.label=Pridať {0}
|
||||
default.new.label=Nový {0}
|
||||
default.create.label=Vytvoriť {0}
|
||||
default.show.label=Ukázať {0}
|
||||
default.edit.label=Editovať {0}
|
||||
|
||||
default.button.create.label=Vytvor
|
||||
default.button.edit.label=Edituj
|
||||
default.button.update.label=Aktualizuj
|
||||
default.button.delete.label=Zmaž
|
||||
default.button.delete.confirm.message=Ste si istý?
|
||||
|
||||
# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
|
||||
typeMismatch.java.net.URL=Položka {0} musí byť platná URL adresa
|
||||
typeMismatch.java.net.URI=Položka {0} musí byť platná URI adresa
|
||||
typeMismatch.java.util.Date=Položka {0} musí byť platný dátum
|
||||
typeMismatch.java.lang.Double=Položka {0} musí byť desatinné číslo
|
||||
typeMismatch.java.lang.Integer=Položka {0} musí byť celé číslo
|
||||
typeMismatch.java.lang.Long=Položka {0} musí byť celé číslo
|
||||
typeMismatch.java.lang.Short=Položka {0} musí byť celé číslo
|
||||
typeMismatch.java.math.BigDecimal=Položka {0} musí byť desatinné číslo
|
||||
typeMismatch.java.math.BigInteger=Položka {0} musí byť celé číslo
|
||||
typeMismatch=Položka {0} má nezhodný typ
|
@ -0,0 +1,10 @@
|
||||
package org.bigbluebutton.web
|
||||
|
||||
import grails.boot.GrailsApp
|
||||
import grails.boot.config.GrailsAutoConfiguration
|
||||
|
||||
class Application extends GrailsAutoConfiguration {
|
||||
static void main(String[] args) {
|
||||
GrailsApp.run(Application, args)
|
||||
}
|
||||
}
|
@ -1,3 +1,5 @@
|
||||
package org.bigbluebutton.web
|
||||
|
||||
class BootStrap {
|
||||
|
||||
def init = { servletContext ->
|
@ -1,18 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<!doctype html>
|
||||
<html>
|
||||
<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>
|
||||
<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"><asset:stylesheet src="errors.css"/></g:if>
|
||||
</head>
|
||||
<body>
|
||||
<g:if env="development">
|
||||
<g:if test="${Throwable.isInstance(exception)}">
|
||||
<g:renderException exception="${exception}" />
|
||||
</g:if>
|
||||
<g:elseif test="${request.getAttribute('javax.servlet.error.exception')}">
|
||||
<g:renderException exception="${request.getAttribute('javax.servlet.error.exception')}" />
|
||||
</g:elseif>
|
||||
<g:else>
|
||||
<ul class="errors">
|
||||
<li>An error has occurred</li>
|
||||
<li>Exception: ${exception}</li>
|
||||
<li>Message: ${message}</li>
|
||||
<li>Path: ${path}</li>
|
||||
</ul>
|
||||
</g:else>
|
||||
</g:if>
|
||||
<g:else>
|
||||
<ul class="errors">
|
||||
<li>An error has occurred</li>
|
||||
</ul>
|
||||
</g:else>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,122 +1,77 @@
|
||||
<!DOCTYPE html>
|
||||
<!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;
|
||||
}
|
||||
<head>
|
||||
<meta name="layout" content="main"/>
|
||||
<title>Welcome to Grails</title>
|
||||
</head>
|
||||
<body>
|
||||
<content tag="nav">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Application Status <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="dropdown-item"><a href="#">Environment: ${grails.util.Environment.current.name}</a></li>
|
||||
<li class="dropdown-item"><a href="#">App profile: ${grailsApplication.config.grails?.profile}</a></li>
|
||||
<li class="dropdown-item"><a href="#">App version:
|
||||
<g:meta name="info.app.version"/></a>
|
||||
</li>
|
||||
<li role="separator" class="dropdown-divider"></li>
|
||||
<li class="dropdown-item"><a href="#">Grails version:
|
||||
<g:meta name="info.app.grailsVersion"/></a>
|
||||
</li>
|
||||
<li class="dropdown-item"><a href="#">Groovy version: ${GroovySystem.getVersion()}</a></li>
|
||||
<li class="dropdown-item"><a href="#">JVM version: ${System.getProperty('java.version')}</a></li>
|
||||
<li role="separator" class="dropdown-divider"></li>
|
||||
<li class="dropdown-item"><a href="#">Reloading active: ${grails.util.Environment.reloadingAgentEnabled}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Artefacts <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="dropdown-item"><a href="#">Controllers: ${grailsApplication.controllerClasses.size()}</a></li>
|
||||
<li class="dropdown-item"><a href="#">Domains: ${grailsApplication.domainClasses.size()}</a></li>
|
||||
<li class="dropdown-item"><a href="#">Services: ${grailsApplication.serviceClasses.size()}</a></li>
|
||||
<li class="dropdown-item"><a href="#">Tag Libraries: ${grailsApplication.tagLibClasses.size()}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Installed Plugins <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<g:each var="plugin" in="${applicationContext.getBean('pluginManager').allPlugins}">
|
||||
<li class="dropdown-item"><a href="#">${plugin.name} - ${plugin.version}</a></li>
|
||||
</g:each>
|
||||
</ul>
|
||||
</li>
|
||||
</content>
|
||||
|
||||
.ie6 #status {
|
||||
display: inline; /* float double margin fix http://www.positioniseverything.net/explorer/doubled-margin.html */
|
||||
}
|
||||
<div class="svg" role="presentation">
|
||||
<div class="grails-logo-container">
|
||||
<asset:image src="grails-cupsonly-logo-white.svg" class="grails-logo"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
#status ul {
|
||||
font-size: 0.9em;
|
||||
list-style-type: none;
|
||||
margin-bottom: 0.6em;
|
||||
padding: 0;
|
||||
}
|
||||
<div id="content" role="main">
|
||||
<section class="row colset-2-its">
|
||||
<h1>Welcome to Grails</h1>
|
||||
|
||||
#status li {
|
||||
line-height: 1.3;
|
||||
}
|
||||
<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>
|
||||
|
||||
#status h1 {
|
||||
text-transform: uppercase;
|
||||
font-size: 1.1em;
|
||||
margin: 0 0 0.3em;
|
||||
}
|
||||
<div id="controllers" 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>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
#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…"/></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>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,28 +1,70 @@
|
||||
<!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…"/></div>
|
||||
<g:javascript library="application"/>
|
||||
<r:layoutResources />
|
||||
</body>
|
||||
<!doctype html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<title>
|
||||
<g:layoutTitle default="Grails"/>
|
||||
</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<asset:link rel="icon" href="favicon.ico" type="image/x-ico"/>
|
||||
|
||||
<asset:stylesheet src="application.css"/>
|
||||
|
||||
<g:layoutHead/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<nav class="navbar navbar-expand-lg navbar-dark navbar-static-top" role="navigation">
|
||||
<a class="navbar-brand" href="/#"><asset:image src="grails.svg" alt="Grails Logo"/></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarContent" aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" aria-expanded="false" style="height: 0.8px;" id="navbarContent">
|
||||
<ul class="nav navbar-nav ml-auto">
|
||||
<g:pageProperty name="page.nav"/>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
|
||||
<g:layoutBody/>
|
||||
|
||||
<div class="footer row" role="contentinfo">
|
||||
<div class="col">
|
||||
<a href="http://guides.grails.org" target="_blank">
|
||||
<asset:image src="advancedgrails.svg" alt="Grails Guides" class="float-left"/>
|
||||
</a>
|
||||
<strong class="centered"><a href="http://guides.grails.org" target="_blank">Grails Guides</a></strong>
|
||||
<p>Building your first Grails app? Looking to add security, or create a Single-Page-App? Check out the <a href="http://guides.grails.org" target="_blank">Grails Guides</a> for step-by-step tutorials.</p>
|
||||
|
||||
</div>
|
||||
<div class="col">
|
||||
<a href="http://docs.grails.org" target="_blank">
|
||||
<asset:image src="documentation.svg" alt="Grails Documentation" class="float-left"/>
|
||||
</a>
|
||||
<strong class="centered"><a href="http://docs.grails.org" target="_blank">Documentation</a></strong>
|
||||
<p>Ready to dig in? You can find in-depth documentation for all the features of Grails in the <a href="http://docs.grails.org" target="_blank">User Guide</a>.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<a href="https://grails-slack.cfapps.io" target="_blank">
|
||||
<asset:image src="slack.svg" alt="Grails Slack" class="float-left"/>
|
||||
</a>
|
||||
<strong class="centered"><a href="https://grails-slack.cfapps.io" target="_blank">Join the Community</a></strong>
|
||||
<p>Get feedback and share your experience with other Grails developers in the community <a href="https://grails-slack.cfapps.io" target="_blank">Slack channel</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="spinner" class="spinner" style="display:none;">
|
||||
<g:message code="spinner.alt" default="Loading…"/>
|
||||
</div>
|
||||
|
||||
<asset:javascript src="application.js"/>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
14
bigbluebutton-web/grails-app/views/notFound.gsp
Normal file
@ -0,0 +1,14 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Page Not Found</title>
|
||||
<meta name="layout" content="main">
|
||||
<g:if env="development"><asset:stylesheet src="errors.css"/></g:if>
|
||||
</head>
|
||||
<body>
|
||||
<ul class="errors">
|
||||
<li>Error: Page Not Found (404)</li>
|
||||
<li>Path: ${request.forwardURI}</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
BIN
bigbluebutton-web/grails-wrapper.jar
Normal file
@ -1,338 +1,152 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################################
|
||||
## ##
|
||||
## Grails JVM Bootstrap for UN*X ##
|
||||
## ##
|
||||
##
|
||||
## Grails start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
PROGNAME=`basename "$0"`
|
||||
DIRNAME=`dirname "$0"`
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRAILS_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-XX:+TieredCompilation" "-XX:TieredStopAtLevel=1" "-XX:CICompilerCount=3"'
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn() {
|
||||
echo "${PROGNAME}: $*"
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die() {
|
||||
warn "$*"
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
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;
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN*)
|
||||
cygwin=true
|
||||
;;
|
||||
|
||||
Darwin*)
|
||||
darwin=true
|
||||
;;
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=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
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
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"
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
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
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
# 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
|
||||
JAR_PATH=$APP_HOME/grails-wrapper.jar
|
||||
|
||||
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
|
||||
# Determine the Java command to use to start the JVM.
|
||||
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
|
||||
die "Profiler file not found: $PROFILER"
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
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"
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
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 maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
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
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
JAR_PATH=`cygpath --path --mixed "$JAR_PATH"`
|
||||
|
||||
# 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="|"
|
||||
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)"
|
||||
if [ "$GRAILS_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRAILS_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments
|
||||
ARGUMENTS=""
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
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"
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
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
|
||||
# Split up the JVM_OPTS And GRAILS_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRAILS_OPTS
|
||||
|
||||
startGrails $STARTER_MAIN_CLASS "$@"
|
||||
exec "$JAVACMD" -jar "${JVM_OPTS[@]}" "$JAR_PATH" "$@"
|
||||
|
@ -1,128 +1,66 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem ##
|
||||
@rem Grails JVM Bootstrap for Windows ##
|
||||
@rem ##
|
||||
@rem
|
||||
@rem Grails startup script 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
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRAILS_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-XX:+TieredCompilation" "-XX:TieredStopAtLevel=1" "-XX:CICompilerCount=3"
|
||||
|
||||
if exist "%USERPROFILE%/.groovy/preinit.bat" call "%USERPROFILE%/.groovy/preinit.bat"
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@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 Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
@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
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: Environment variable JAVA_HOME has not been set.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
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%
|
||||
goto fail
|
||||
|
||||
@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
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
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%
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
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 not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set CP=
|
||||
set INTERACTIVE=true
|
||||
set _SKIP=2
|
||||
|
||||
: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
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
@ -130,47 +68,22 @@ 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"
|
||||
set JAR_PATH=%APP_HOME%/grails-wrapper.jar
|
||||
|
||||
@rem Execute Grails
|
||||
CALL "%JAVA_EXE%" %JAVA_OPTS% -classpath "%STARTER_CLASSPATH%" %STARTER_MAIN_CLASS% --main %CLASS% --conf "%STARTER_CONF%" --classpath "%CP%" "%CMD_LINE_ARGS%"
|
||||
"%JAVA_EXE%" -jar %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRAILS_OPTS% %JAR_PATH% %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRAILS_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRAILS_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
@rem Optional pause the batch file
|
||||
if "%GROOVY_BATCH_PAUSE%" == "on" pause
|
||||
:omega
|
||||
|
1
bigbluebutton-web/settings.gradle
Normal file
@ -0,0 +1 @@
|
||||
rootProject.name = "bigbluebutton"
|
@ -11,7 +11,7 @@
|
||||
|
||||
<tag>
|
||||
<name>link</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspLinkTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspLinkTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<attribute>
|
||||
<name>action</name>
|
||||
@ -42,7 +42,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>form</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspFormTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspFormTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<attribute>
|
||||
<name>action</name>
|
||||
@ -73,7 +73,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>select</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspSelectTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspSelectTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<attribute>
|
||||
<name>name</name>
|
||||
@ -99,7 +99,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>datePicker</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspDatePickerTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspDatePickerTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>name</name>
|
||||
@ -120,7 +120,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>currencySelect</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspCurrencySelectTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspCurrencySelectTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>name</name>
|
||||
@ -136,7 +136,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>localeSelect</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspLocaleSelectTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspLocaleSelectTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>name</name>
|
||||
@ -152,7 +152,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>timeZoneSelect</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspTimeZoneSelectTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspTimeZoneSelectTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>name</name>
|
||||
@ -168,7 +168,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>checkBox</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspCheckboxTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspCheckboxTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>name</name>
|
||||
@ -184,7 +184,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>hasErrors</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspHasErrorsTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspHasErrorsTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<attribute>
|
||||
<name>model</name>
|
||||
@ -205,7 +205,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>eachError</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspEachErrorTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspEachErrorTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<attribute>
|
||||
<name>model</name>
|
||||
@ -226,7 +226,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>renderErrors</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspEachErrorTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspEachErrorTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<attribute>
|
||||
<name>model</name>
|
||||
@ -252,7 +252,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>message</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspMessageTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspMessageTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<attribute>
|
||||
<name>code</name>
|
||||
@ -273,7 +273,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>remoteFunction</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspRemoteFunctionTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspRemoteFunctionTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>before</name>
|
||||
@ -359,7 +359,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>remoteLink</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspRemoteLinkTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspRemoteLinkTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<attribute>
|
||||
<name>before</name>
|
||||
@ -445,7 +445,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>formRemote</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspFormRemoteTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspFormRemoteTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<attribute>
|
||||
<name>before</name>
|
||||
@ -531,7 +531,7 @@
|
||||
</tag>
|
||||
<tag>
|
||||
<name>invokeTag</name>
|
||||
<tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspInvokeGrailsTagLibTag</tag-class>
|
||||
<tag-class>org.grails.web.taglib.jsp.JspInvokeGrailsTagLibTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<variable>
|
||||
<name-given>it</name-given>
|
@ -1,31 +0,0 @@
|
||||
<?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.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" />
|
||||
</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" />
|
||||
</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="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>
|
@ -1,14 +0,0 @@
|
||||
<sitemesh>
|
||||
<page-parsers>
|
||||
<parser content-type="text/html"
|
||||
class="org.codehaus.groovy.grails.web.sitemesh.GrailsHTMLPageParser" />
|
||||
<parser content-type="text/html;charset=ISO-8859-1"
|
||||
class="org.codehaus.groovy.grails.web.sitemesh.GrailsHTMLPageParser" />
|
||||
<parser content-type="text/html;charset=UTF-8"
|
||||
class="org.codehaus.groovy.grails.web.sitemesh.GrailsHTMLPageParser" />
|
||||
</page-parsers>
|
||||
|
||||
<decorator-mappers>
|
||||
<mapper class="org.codehaus.groovy.grails.web.sitemesh.GrailsLayoutDecoratorMapper" />
|
||||
</decorator-mappers>
|
||||
</sitemesh>
|
@ -1,109 +0,0 @@
|
||||
h1, h2 {
|
||||
margin: 10px 25px 5px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.filename {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.exceptionMessage {
|
||||
margin: 10px;
|
||||
border: 1px solid #000;
|
||||
padding: 5px;
|
||||
background-color: #E9E9E9;
|
||||
}
|
||||
|
||||
.stack,
|
||||
.snippet {
|
||||
margin: 0 25px 10px;
|
||||
}
|
||||
|
||||
.stack,
|
||||
.snippet {
|
||||
border: 1px solid #ccc;
|
||||
-mox-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
-webkit-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
/* error details */
|
||||
.error-details {
|
||||
border-top: 1px solid #FFAAAA;
|
||||
-mox-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
-webkit-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
border-bottom: 1px solid #FFAAAA;
|
||||
-mox-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
-webkit-box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
box-shadow: 0 0 2px rgba(0,0,0,0.2);
|
||||
background-color:#FFF3F3;
|
||||
line-height: 1.5;
|
||||
overflow: hidden;
|
||||
padding: 5px;
|
||||
padding-left:25px;
|
||||
}
|
||||
|
||||
.error-details dt {
|
||||
clear: left;
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.error-details dt:after {
|
||||
content: ":";
|
||||
}
|
||||
|
||||
.error-details dd {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* stack trace */
|
||||
.stack {
|
||||
padding: 5px;
|
||||
overflow: auto;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
/* code snippet */
|
||||
.snippet {
|
||||
background-color: #fff;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.snippet .line {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.snippet .lineNumber {
|
||||
background-color: #ddd;
|
||||
color: #999;
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
padding: 0 3px;
|
||||
text-align: right;
|
||||
width: 3em;
|
||||
}
|
||||
|
||||
.snippet .error {
|
||||
background-color: #fff3f3;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.snippet .error .lineNumber {
|
||||
background-color: #faa;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.snippet .line:first-child .lineNumber {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.snippet .line:last-child .lineNumber {
|
||||
padding-bottom: 5px;
|
||||
}
|
@ -1,596 +0,0 @@
|
||||
/* FONT STACK */
|
||||
body,
|
||||
input, select, textarea {
|
||||
font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
/* BASE LAYOUT */
|
||||
|
||||
html {
|
||||
background-color: #ddd;
|
||||
background-image: -moz-linear-gradient(center top, #aaa, #ddd);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #aaa), color-stop(1, #ddd));
|
||||
background-image: linear-gradient(top, #aaa, #ddd);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr = '#aaaaaa', EndColorStr = '#dddddd');
|
||||
background-repeat: no-repeat;
|
||||
height: 100%;
|
||||
/* change the box model to exclude the padding from the calculation of 100% height (IE8+) */
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html.no-cssgradients {
|
||||
background-color: #aaa;
|
||||
}
|
||||
|
||||
.ie6 html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
html * {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #ffffff;
|
||||
color: #333333;
|
||||
margin: 0 auto;
|
||||
max-width: 960px;
|
||||
overflow-x: hidden; /* prevents box-shadow causing a horizontal scrollbar in firefox when viewport < 960px wide */
|
||||
-moz-box-shadow: 0 0 0.3em #255b17;
|
||||
-webkit-box-shadow: 0 0 0.3em #255b17;
|
||||
box-shadow: 0 0 0.3em #255b17;
|
||||
}
|
||||
|
||||
#grailsLogo {
|
||||
background-color: #abbf78;
|
||||
}
|
||||
|
||||
/* replace with .no-boxshadow body if you have modernizr available */
|
||||
.ie6 body,
|
||||
.ie7 body,
|
||||
.ie8 body {
|
||||
border-color: #255b17;
|
||||
border-style: solid;
|
||||
border-width: 0 1px;
|
||||
}
|
||||
|
||||
.ie6 body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
a:link, a:visited, a:hover {
|
||||
color: #48802c;
|
||||
}
|
||||
|
||||
a:hover, a:active {
|
||||
outline: none; /* prevents outline in webkit on active links but retains it for tab focus */
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #48802c;
|
||||
font-weight: normal;
|
||||
font-size: 1.25em;
|
||||
margin: 0.8em 0 0.3em 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/* GENERAL */
|
||||
|
||||
#grailsLogo a {
|
||||
display: inline-block;
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
.content {
|
||||
}
|
||||
|
||||
.content h1 {
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
margin: 0.8em 1em 0.3em;
|
||||
padding: 0 0.25em;
|
||||
}
|
||||
|
||||
.scaffold-list h1 {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background: #abbf78;
|
||||
color: #000;
|
||||
clear: both;
|
||||
font-size: 0.8em;
|
||||
margin-top: 1.5em;
|
||||
padding: 1em;
|
||||
min-height: 1em;
|
||||
}
|
||||
|
||||
.footer a {
|
||||
color: #255b17;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
background: url(../images/spinner.gif) 50% 50% no-repeat transparent;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
padding: 0.5em;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
text-indent: -9999px;
|
||||
}
|
||||
|
||||
/* NAVIGATION MENU */
|
||||
|
||||
.nav {
|
||||
background-color: #efefef;
|
||||
padding: 0.5em 0.75em;
|
||||
-moz-box-shadow: 0 0 3px 1px #aaaaaa;
|
||||
-webkit-box-shadow: 0 0 3px 1px #aaaaaa;
|
||||
box-shadow: 0 0 3px 1px #aaaaaa;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.nav ul {
|
||||
overflow: hidden;
|
||||
padding-left: 0;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.nav li {
|
||||
display: block;
|
||||
float: left;
|
||||
list-style-type: none;
|
||||
margin-right: 0.5em;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.nav a {
|
||||
color: #666666;
|
||||
display: block;
|
||||
padding: 0.25em 0.7em;
|
||||
text-decoration: none;
|
||||
-moz-border-radius: 0.3em;
|
||||
-webkit-border-radius: 0.3em;
|
||||
border-radius: 0.3em;
|
||||
}
|
||||
|
||||
.nav a:active, .nav a:visited {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.nav a:focus, .nav a:hover {
|
||||
background-color: #999999;
|
||||
color: #ffffff;
|
||||
outline: none;
|
||||
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
|
||||
}
|
||||
|
||||
.no-borderradius .nav a:focus, .no-borderradius .nav a:hover {
|
||||
background-color: transparent;
|
||||
color: #444444;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.nav a.home, .nav a.list, .nav a.create {
|
||||
background-position: 0.7em center;
|
||||
background-repeat: no-repeat;
|
||||
text-indent: 25px;
|
||||
}
|
||||
|
||||
.nav a.home {
|
||||
background-image: url(../images/skin/house.png);
|
||||
}
|
||||
|
||||
.nav a.list {
|
||||
background-image: url(../images/skin/database_table.png);
|
||||
}
|
||||
|
||||
.nav a.create {
|
||||
background-image: url(../images/skin/database_add.png);
|
||||
}
|
||||
|
||||
/* CREATE/EDIT FORMS AND SHOW PAGES */
|
||||
|
||||
fieldset,
|
||||
.property-list {
|
||||
margin: 0.6em 1.25em 0 1.25em;
|
||||
padding: 0.3em 1.8em 1.25em;
|
||||
position: relative;
|
||||
zoom: 1;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.property-list .fieldcontain {
|
||||
list-style: none;
|
||||
overflow: hidden;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.fieldcontain {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.fieldcontain label,
|
||||
.fieldcontain .property-label {
|
||||
color: #666666;
|
||||
text-align: right;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.fieldcontain .property-label {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fieldcontain .property-value {
|
||||
display: block;
|
||||
margin-left: 27%;
|
||||
}
|
||||
|
||||
label {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
margin: 0 0.25em 0 0;
|
||||
}
|
||||
|
||||
input, select, textarea {
|
||||
background-color: #fcfcfc;
|
||||
border: 1px solid #cccccc;
|
||||
font-size: 1em;
|
||||
padding: 0.2em 0.4em;
|
||||
}
|
||||
|
||||
select {
|
||||
padding: 0.2em 0.2em 0.2em 0;
|
||||
}
|
||||
|
||||
select[multiple] {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 250px;
|
||||
height: 150px;
|
||||
overflow: auto; /* IE always renders vertical scrollbar without this */
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
input[type=checkbox], input[type=radio] {
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
input:focus, select:focus, textarea:focus {
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #eeeeee;
|
||||
outline: 0;
|
||||
-moz-box-shadow: 0 0 0.5em #ffffff;
|
||||
-webkit-box-shadow: 0 0 0.5em #ffffff;
|
||||
box-shadow: 0 0 0.5em #ffffff;
|
||||
}
|
||||
|
||||
.required-indicator {
|
||||
color: #48802C;
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
margin-left: 0.3em;
|
||||
position: relative;
|
||||
top: 0.1em;
|
||||
}
|
||||
|
||||
ul.one-to-many {
|
||||
display: inline-block;
|
||||
list-style-position: inside;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.ie6 ul.one-to-many, .ie7 ul.one-to-many {
|
||||
display: inline;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
ul.one-to-many li.add {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
/* EMBEDDED PROPERTIES */
|
||||
|
||||
fieldset.embedded {
|
||||
background-color: transparent;
|
||||
border: 1px solid #CCCCCC;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
-moz-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
fieldset.embedded legend {
|
||||
margin: 0 1em;
|
||||
}
|
||||
|
||||
/* MESSAGES AND ERRORS */
|
||||
|
||||
.errors,
|
||||
.message {
|
||||
font-size: 0.8em;
|
||||
line-height: 2;
|
||||
margin: 1em 2em;
|
||||
padding: 0.25em;
|
||||
}
|
||||
|
||||
.message {
|
||||
background: #f3f3ff;
|
||||
border: 1px solid #b2d1ff;
|
||||
color: #006dba;
|
||||
-moz-box-shadow: 0 0 0.25em #b2d1ff;
|
||||
-webkit-box-shadow: 0 0 0.25em #b2d1ff;
|
||||
box-shadow: 0 0 0.25em #b2d1ff;
|
||||
}
|
||||
|
||||
.errors {
|
||||
background: #fff3f3;
|
||||
border: 1px solid #ffaaaa;
|
||||
color: #cc0000;
|
||||
-moz-box-shadow: 0 0 0.25em #ff8888;
|
||||
-webkit-box-shadow: 0 0 0.25em #ff8888;
|
||||
box-shadow: 0 0 0.25em #ff8888;
|
||||
}
|
||||
|
||||
.errors ul,
|
||||
.message {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.errors li {
|
||||
list-style: none;
|
||||
background: transparent url(../images/skin/exclamation.png) 0.5em 50% no-repeat;
|
||||
text-indent: 2.2em;
|
||||
}
|
||||
|
||||
.message {
|
||||
background: transparent url(../images/skin/information.png) 0.5em 50% no-repeat;
|
||||
text-indent: 2.2em;
|
||||
}
|
||||
|
||||
/* form fields with errors */
|
||||
|
||||
.error input, .error select, .error textarea {
|
||||
background: #fff3f3;
|
||||
border-color: #ffaaaa;
|
||||
color: #cc0000;
|
||||
}
|
||||
|
||||
.error input:focus, .error select:focus, .error textarea:focus {
|
||||
-moz-box-shadow: 0 0 0.5em #ffaaaa;
|
||||
-webkit-box-shadow: 0 0 0.5em #ffaaaa;
|
||||
box-shadow: 0 0 0.5em #ffaaaa;
|
||||
}
|
||||
|
||||
/* same effects for browsers that support HTML5 client-side validation (these have to be specified separately or IE will ignore the entire rule) */
|
||||
|
||||
input:invalid, select:invalid, textarea:invalid {
|
||||
background: #fff3f3;
|
||||
border-color: #ffaaaa;
|
||||
color: #cc0000;
|
||||
}
|
||||
|
||||
input:invalid:focus, select:invalid:focus, textarea:invalid:focus {
|
||||
-moz-box-shadow: 0 0 0.5em #ffaaaa;
|
||||
-webkit-box-shadow: 0 0 0.5em #ffaaaa;
|
||||
box-shadow: 0 0 0.5em #ffaaaa;
|
||||
}
|
||||
|
||||
/* TABLES */
|
||||
|
||||
table {
|
||||
border-top: 1px solid #DFDFDF;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
tr {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
tr>td:first-child, tr>th:first-child {
|
||||
padding-left: 1.25em;
|
||||
}
|
||||
|
||||
tr>td:last-child, tr>th:last-child {
|
||||
padding-right: 1.25em;
|
||||
}
|
||||
|
||||
td, th {
|
||||
line-height: 1.5em;
|
||||
padding: 0.5em 0.6em;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #efefef;
|
||||
background-image: -moz-linear-gradient(top, #ffffff, #eaeaea);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(1, #eaeaea));
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr = '#ffffff', EndColorStr = '#eaeaea');
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#eaeaea')";
|
||||
color: #666666;
|
||||
font-weight: bold;
|
||||
line-height: 1.7em;
|
||||
padding: 0.2em 0.6em;
|
||||
}
|
||||
|
||||
thead th {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
th a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
th a:link, th a:visited {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
th a:hover, th a:focus {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
th.sortable a {
|
||||
background-position: right;
|
||||
background-repeat: no-repeat;
|
||||
padding-right: 1.1em;
|
||||
}
|
||||
|
||||
th.asc a {
|
||||
background-image: url(../images/skin/sorted_asc.gif);
|
||||
}
|
||||
|
||||
th.desc a {
|
||||
background-image: url(../images/skin/sorted_desc.gif);
|
||||
}
|
||||
|
||||
.odd {
|
||||
background: #f7f7f7;
|
||||
}
|
||||
|
||||
.even {
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
th:hover, tr:hover {
|
||||
background: #E1F2B6;
|
||||
}
|
||||
|
||||
/* PAGINATION */
|
||||
|
||||
.pagination {
|
||||
border-top: 0;
|
||||
margin: 0;
|
||||
padding: 0.3em 0.2em;
|
||||
text-align: center;
|
||||
-moz-box-shadow: 0 0 3px 1px #AAAAAA;
|
||||
-webkit-box-shadow: 0 0 3px 1px #AAAAAA;
|
||||
box-shadow: 0 0 3px 1px #AAAAAA;
|
||||
background-color: #EFEFEF;
|
||||
}
|
||||
|
||||
.pagination a,
|
||||
.pagination .currentStep {
|
||||
color: #666666;
|
||||
display: inline-block;
|
||||
margin: 0 0.1em;
|
||||
padding: 0.25em 0.7em;
|
||||
text-decoration: none;
|
||||
-moz-border-radius: 0.3em;
|
||||
-webkit-border-radius: 0.3em;
|
||||
border-radius: 0.3em;
|
||||
}
|
||||
|
||||
.pagination a:hover, .pagination a:focus,
|
||||
.pagination .currentStep {
|
||||
background-color: #999999;
|
||||
color: #ffffff;
|
||||
outline: none;
|
||||
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
|
||||
}
|
||||
|
||||
.no-borderradius .pagination a:hover, .no-borderradius .pagination a:focus,
|
||||
.no-borderradius .pagination .currentStep {
|
||||
background-color: transparent;
|
||||
color: #444444;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* ACTION BUTTONS */
|
||||
|
||||
.buttons {
|
||||
background-color: #efefef;
|
||||
overflow: hidden;
|
||||
padding: 0.3em;
|
||||
-moz-box-shadow: 0 0 3px 1px #aaaaaa;
|
||||
-webkit-box-shadow: 0 0 3px 1px #aaaaaa;
|
||||
box-shadow: 0 0 3px 1px #aaaaaa;
|
||||
margin: 0.1em 0 0 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.buttons input,
|
||||
.buttons a {
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
color: #666666;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
margin: 0 0.25em 0;
|
||||
overflow: visible;
|
||||
padding: 0.25em 0.7em;
|
||||
text-decoration: none;
|
||||
|
||||
-moz-border-radius: 0.3em;
|
||||
-webkit-border-radius: 0.3em;
|
||||
border-radius: 0.3em;
|
||||
}
|
||||
|
||||
.buttons input:hover, .buttons input:focus,
|
||||
.buttons a:hover, .buttons a:focus {
|
||||
background-color: #999999;
|
||||
color: #ffffff;
|
||||
outline: none;
|
||||
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
|
||||
-moz-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.no-borderradius .buttons input:hover, .no-borderradius .buttons input:focus,
|
||||
.no-borderradius .buttons a:hover, .no-borderradius .buttons a:focus {
|
||||
background-color: transparent;
|
||||
color: #444444;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.buttons .delete, .buttons .edit, .buttons .save {
|
||||
background-position: 0.7em center;
|
||||
background-repeat: no-repeat;
|
||||
text-indent: 25px;
|
||||
}
|
||||
|
||||
.ie6 .buttons input.delete, .ie6 .buttons input.edit, .ie6 .buttons input.save,
|
||||
.ie7 .buttons input.delete, .ie7 .buttons input.edit, .ie7 .buttons input.save {
|
||||
padding-left: 36px;
|
||||
}
|
||||
|
||||
.buttons .delete {
|
||||
background-image: url(../images/skin/database_delete.png);
|
||||
}
|
||||
|
||||
.buttons .edit {
|
||||
background-image: url(../images/skin/database_edit.png);
|
||||
}
|
||||
|
||||
.buttons .save {
|
||||
background-image: url(../images/skin/database_save.png);
|
||||
}
|
||||
|
||||
a.skip {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
@ -1,82 +0,0 @@
|
||||
/* Styles for mobile devices */
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
.nav {
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.nav li {
|
||||
margin: 0 0.5em 0 0;
|
||||
padding: 0.25em;
|
||||
}
|
||||
|
||||
/* Hide individual steps in pagination, just have next & previous */
|
||||
.pagination .step, .pagination .currentStep {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pagination .prevLink {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.pagination .nextLink {
|
||||
float: right;
|
||||
}
|
||||
|
||||
/* pagination needs to wrap around floated buttons */
|
||||
.pagination {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* slightly smaller margin around content body */
|
||||
fieldset,
|
||||
.property-list {
|
||||
padding: 0.3em 1em 1em;
|
||||
}
|
||||
|
||||
input, textarea {
|
||||
width: 100%;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
select, input[type=checkbox], input[type=radio], input[type=submit], input[type=button], input[type=reset] {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
/* hide all but the first column of list tables */
|
||||
.scaffold-list td:not(:first-child),
|
||||
.scaffold-list th:not(:first-child) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.scaffold-list thead th {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* stack form elements */
|
||||
.fieldcontain {
|
||||
margin-top: 0.6em;
|
||||
}
|
||||
|
||||
.fieldcontain label,
|
||||
.fieldcontain .property-label,
|
||||
.fieldcontain .property-value {
|
||||
display: block;
|
||||
float: none;
|
||||
margin: 0 0 0.25em 0;
|
||||
text-align: left;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.errors ul,
|
||||
.message p {
|
||||
margin: 0.5em;
|
||||
}
|
||||
|
||||
.error ul {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
if (typeof jQuery !== 'undefined') {
|
||||
(function($) {
|
||||
$('#spinner').ajaxStart(function() {
|
||||
$(this).fadeIn();
|
||||
}).ajaxStop(function() {
|
||||
$(this).fadeOut();
|
||||
});
|
||||
})(jQuery);
|
||||
}
|