diff --git a/.classpath b/.classpath index 71c596c..53cf095 100644 --- a/.classpath +++ b/.classpath @@ -457,11 +457,6 @@ - - - - - diff --git a/src/de/superx/bin/ExecuteMask.java b/src/de/superx/bin/ExecuteMask.java index 9f68248..22407cc 100644 --- a/src/de/superx/bin/ExecuteMask.java +++ b/src/de/superx/bin/ExecuteMask.java @@ -33,6 +33,7 @@ import de.superx.common.Maske; import de.superx.common.SxResultRow; import de.superx.common.SxResultSet; import de.superx.common.SxUser; +import de.superx.sec.InputCheckRegistry; import de.superx.servlet.ServletUtils; import de.superx.servlet.SuperXManager; import de.superx.servlet.SxPools; @@ -175,6 +176,7 @@ public class ExecuteMask { Locale desiredLocale = new Locale(myLocale); SuperXManager.maxRows = 1000000; Maske maske = null; + InputCheckRegistry.registerDefaultChecks(); try { maske = new Maske(mandantenID, user, new Integer(tidString), desiredLocale); NamedIdObjectList fields = maske.readFelderFromDb(user); @@ -190,6 +192,7 @@ public class ExecuteMask { log.severe("Fehler beim Ausführen der Maske " + tidString + ": " + e.toString()); System.exit(1); } + System.exit(0); } public static HttpServletResponse getHttpResponse() { diff --git a/src/de/superx/common/Field.java b/src/de/superx/common/Field.java index 5437efc..1dd249c 100644 --- a/src/de/superx/common/Field.java +++ b/src/de/superx/common/Field.java @@ -599,12 +599,18 @@ public class Field extends NamedIdObject implements TemplateHashModel, // Zuweisung s.u. if (getTyp().equals("date")) + { param = xDateParamOhneApostrophes(param); + //HTML5 input type=date always delivers US-format yyyy-MM-dd + if(param !=null && param.indexOf("-")>-1) + param=de.superx.util.SqlStringUtils.formatDateUStoDE(param); //Transform to dd.MM.yyyy + } if (param != null && !param.equals("")) checkDataType(param); if ( param != null && !param.equals("") && this.art == 0 ) { CheckExecution check = new CheckExecution(this); if (!check.run(param)) { + System.err.println("Ungültige Eingabe Feld "+ getFeldInfo()); throw new UngueltigeEingabeException("Ungültige Eingabe"); } } @@ -1501,6 +1507,9 @@ public class Field extends NamedIdObject implements TemplateHashModel, private void xSelectedKeyDatePrüfen() throws InvalidKeyException { this.selectedKey = xDateParamOhneApostrophes(this.selectedKey); + //HTML5 input type=date always delivers US-format yyyy-MM-dd + if(this.selectedKey !=null && this.selectedKey.indexOf("-")>-1) + this.selectedKey=de.superx.util.SqlStringUtils.formatDateUStoDE(this.selectedKey); //Transform to dd.MM.yyyy java.sql.Date d; try { diff --git a/src/de/superx/common/Maske.java b/src/de/superx/common/Maske.java index ec91ade..1bf3f39 100644 --- a/src/de/superx/common/Maske.java +++ b/src/de/superx/common/Maske.java @@ -716,11 +716,10 @@ public class Maske extends NamedIdObject implements Serializable { private void initMaskStylesheets() throws SQLException, DBServletException { - String query = "select t1.filename, t1.caption, t1.description, " - + " t1.contenttype, t0.ord from sx_mask_style t0,sx_stylesheets t1" - + " where (t0.stylesheet_id=t1.tid) and (t1.relation ='mask') and" + " (t0.maskeninfo_id =" + getId() - + ")" + " and (t1.useragent = '' or t1.useragent is null or t1.useragent = '" + browser + "')" - + " order by t0.ord;"; + String query = "select t1.filename, t1.caption, t1.description, " + " t1.contenttype, t0.ord, t1.is_generic," + +" t1.toolbar_icon_filepath, t1.jr_datasource, t1.usage_resultset_data, t1.stylesheet_type from sx_mask_style t0, sx_stylesheets t1" + + " where (t0.stylesheet_id=t1.tid) and (t1.relation ='mask') and" + " (t0.maskeninfo_id =" + getId() + ")" + + " and (t1.useragent = '' or t1.useragent is null or t1.useragent = '" + browser + "')" + " order by t0.ord;"; SxResultSet stylesheetsRs = ServletUtils.execute("Einlesen der Stylesheets für die Maske " + getId(), query, mandantenID); @@ -746,14 +745,17 @@ public class Maske extends NamedIdObject implements Serializable { // mainStylesheet = new Stylesheet(request.getParameter("stylesheet")); String query = "select S.filename, S.caption, S.description, " - + " S.contenttype, M.ord,S.is_generic from sx_stylesheets S,sx_mask_style M" + " where M.stylesheet_id=S.tid " + + " S.contenttype, M.ord,S.is_generic, S.toolbar_icon_filepath," + + " S.jr_datasource, S.usage_resultset_data, S.stylesheet_type from sx_stylesheets S,sx_mask_style M" + " where M.stylesheet_id=S.tid " + " and M.maskeninfo_id =" + getId() + " " + " and S.relation ='table' " + " and (S.useragent = '' or S.useragent is null or S.useragent = '" + browser + "')" + " union" // Default-Styleshets HTML : - + " select S.filename, S.caption, S.description, " + " S.contenttype, 99999, S.is_generic from sx_stylesheets S " + + " select S.filename, S.caption, S.description, " + " S.contenttype, 99999, S.is_generic, S.toolbar_icon_filepath," + + " S.jr_datasource, S.usage_resultset_data, S.stylesheet_type from sx_stylesheets S " + " where S.filename = 'tabelle_html.xsl'" + " union" // Default-Styleshets die neben HTML immer aktiv sind: - + " select S.filename, S.caption, S.description, " + " S.contenttype, 100000, S.is_generic from sx_stylesheets S " + + " select S.filename, S.caption, S.description, " + " S.contenttype, 100000, S.is_generic, S.toolbar_icon_filepath," + + " S.jr_datasource, S.usage_resultset_data, S.stylesheet_type from sx_stylesheets S " + " where S.is_generic=1 and S.filename != 'tabelle_html.xsl'" + " order by 5,2;"; @@ -2082,7 +2084,17 @@ public class Maske extends NamedIdObject implements Serializable { result = selectedTableStylesheet.getFilename(); return result; } - + /** + * selected Stylesheet object + * + * @param none + * + * @return Stylesheet selectedTableStylesheet + */ + public Stylesheet getSelectedTableStylesheet() { + + return this.selectedTableStylesheet; + } /** * determine contenttype, Default is derived from request, if null, then * sx_stylesheets.contenttype is read diff --git a/src/de/superx/common/Stylesheet.java b/src/de/superx/common/Stylesheet.java index 32d4b54..2c0afca 100644 --- a/src/de/superx/common/Stylesheet.java +++ b/src/de/superx/common/Stylesheet.java @@ -3,8 +3,11 @@ package de.superx.common; import java.io.Serializable; public class Stylesheet implements Serializable { - + private static final long serialVersionUID = 1L; + private String filename = "", caption, description, contenttype,stylesheetType; + private String toolbarIconFilepath,usageResultsetData,jrDatasource; + private int ord, isGeneric; public String getCaption() { return caption; @@ -44,13 +47,79 @@ public class Stylesheet implements Serializable { public void setIsGeneric(int isGeneric) { this.isGeneric = isGeneric; } - private String filename = "", caption, description, contenttype; - private int ord, isGeneric; + public String getStylesheetType() { + if(stylesheetType==null) { + //abwärtskompatibel zu kern 4.9: alte Logik über Dateinamen + switch(this.filename) { + case "tabelle_xml.xsl" : + stylesheetType="XML"; + break; + case "tabelle_fo_pdf.xsl" : + stylesheetType="XSL_FO"; + break; + case "tabelle_xls.xsl" : + stylesheetType="XSL_XLSX"; + break; + + default : + if(this.filename.endsWith(".jrxml")) + return "JRXML"; + if(this.filename.endsWith(".xsl")) + return "XSL"; + stylesheetType=""; + } + + } + return stylesheetType; + } + public void setStylesheetType(String stylesheetType) { + this.stylesheetType = (stylesheetType==null)?"":stylesheetType.trim(); + } + + public String getToolbarIconFilepath() { + return toolbarIconFilepath; + } + + public void setToolbarIconFilepath(String toolbarIconFilepath) { + this.toolbarIconFilepath = (toolbarIconFilepath==null)?"":toolbarIconFilepath.trim(); + } + + public String getUsageResultsetData() { + if(jrDatasource==null) { + return "T"; //aktuelle Tabelle + } + return usageResultsetData; + } + + public void setUsageResultsetData(String usageResultsetData) { + this.usageResultsetData = (usageResultsetData==null)?"":usageResultsetData.trim(); + } + + public String getJrDatasource() { + //abwärtskompatibel zu kern 4.9: alte Logik über Dateinamen + if(jrDatasource==null || jrDatasource.equals("")) { + if(this.filename.endsWith("_xmlsource.jrxml")) { + return "XML"; + } + if(this.filename.endsWith(".jrxml")) { + return "RS"; + } + } + return jrDatasource; + } + + public void setJrDatasource(String jrDatasource) { + this.jrDatasource = (jrDatasource==null)?"":jrDatasource.trim(); + } + + public Stylesheet(String file) { - this.filename = file; - if (file == null) - this.filename = ""; + if (file == null) { + file=""; + } + this.filename = file.trim(); + } public Stylesheet(SxResultRow stylesheetRow) { @@ -60,10 +129,14 @@ public class Stylesheet implements Serializable { setCaption(stylesheetRow.get(1).toString()); setDescription(stylesheetRow.get(2).toString()); setContenttype(stylesheetRow.get(3).toString()); - setIsGeneric(Integer.parseInt(stylesheetRow.get(5).toString())); - + setIsGeneric(Integer.parseInt(stylesheetRow.get(5).toString())); + this.setToolbarIconFilepath(stylesheetRow.get(6).toString()); + this.setJrDatasource(stylesheetRow.get(7).toString()); + this.setUsageResultsetData(stylesheetRow.get(8).toString()); + this.setStylesheetType(stylesheetRow.get(9).toString()); } + @Override public String toString() { return filename; } @@ -77,13 +150,16 @@ public class Stylesheet implements Serializable { } public String toXml() { - StringBuffer result = new StringBuffer(""); + StringBuffer result = new StringBuffer(""); result.append(" " + getFilename() + "\n"); result.append(" " + getCaption() + "\n"); result.append(" " + getDescription() + "\n"); result.append("" + getContenttype() + "\n"); result.append("" + getIsGeneric() + "\n"); + result.append("" + this.getStylesheetType() + "\n"); + result.append("" + this.getToolbarIconFilepath() + "\n"); + result.append("" + this.getJrDatasource() + "\n"); + result.append("" + this.getUsageResultsetData() + "\n"); result.append(" \n"); diff --git a/src/de/superx/servlet/SuperXmlTabelle.java b/src/de/superx/servlet/SuperXmlTabelle.java index 603450d..fb07d41 100644 --- a/src/de/superx/servlet/SuperXmlTabelle.java +++ b/src/de/superx/servlet/SuperXmlTabelle.java @@ -971,7 +971,8 @@ public class SuperXmlTabelle extends AbstractSuperXServlet { } else { //DQ XSL_JR start - if (contenttype != null && contenttype.equalsIgnoreCase("application/jrxml")) + if (contenttype != null && contenttype.equalsIgnoreCase("application/jrxml") + && maske.getSelectedTableStylesheet().getStylesheetType().equals("XSL_JRXML")) { transformToJrxmlAndExecute(currentXml,maske.getSelectedTableStylesheetFilename(),null, request, response ,maske,getMandantenID()); } diff --git a/src/de/superx/util/SqlStringUtils.java b/src/de/superx/util/SqlStringUtils.java index 8257a6e..b029815 100644 --- a/src/de/superx/util/SqlStringUtils.java +++ b/src/de/superx/util/SqlStringUtils.java @@ -7,6 +7,8 @@ import java.text.DateFormat; import java.util.Enumeration; import java.util.Hashtable; import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; import java.util.Vector; import de.memtext.util.StringUtils; @@ -651,4 +653,32 @@ public class SqlStringUtils { } return entryOK; } + /** + * Replace all occurencies of properties $property in a string with the corrsponding + * values. + * @param str + * @param properties + * @return + */ + public static String replaceAllProperties(String str, Map properties) { + String result = str; + for (Entry entry : properties.entrySet() ) { + if (entry.getValue() != null) { + result = result.replace("$" + entry.getKey(), entry.getValue()); + result = result.replace("${" + entry.getKey() + "}", entry.getValue()); + } + } + return result; + } + /** + * Convert US-format yyyy-MM-dd to dd.MM.yyyy + * @param str US-Date + * @return result DE-Date + */ + public static String formatDateUStoDE(String str) { + String result = str; + if(str !=null && str.indexOf("-")>-1) + result=str.substring(8)+"."+str.substring(5,7)+"."+str.substring(0,4); //Transform to dd.MM.yyyy + return result; + } } diff --git a/superx/WEB-INF/conf/edustore/db/bin/ant b/superx/WEB-INF/conf/edustore/db/bin/ant deleted file mode 100755 index dfd657b..0000000 --- a/superx/WEB-INF/conf/edustore/db/bin/ant +++ /dev/null @@ -1,197 +0,0 @@ -#! /bin/sh - -# Copyright (c) 2001-2003 The Apache Software Foundation. All rights -# reserved. - -# load system-wide ant configuration -if [ -f "/etc/ant.conf" ] ; then - . /etc/ant.conf -fi - -# provide default values for people who don't use RPMs -if [ -z "$rpm_mode" ] ; then - rpm_mode=false; -fi -if [ -z "$usejikes" ] ; then - usejikes=false; -fi - -# load user ant configuration -if [ -f "$HOME/.antrc" ] ; then - . "$HOME/.antrc" -fi - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -case "`uname`" in - CYGWIN*) cygwin=true ;; - Darwin*) darwin=true - if [ -z "$JAVA_HOME" ] ; then - JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home - fi - ;; -esac - -if [ -z "$ANT_HOME" ] ; then - # try to find ANT - if [ -d /opt/ant ] ; then - ANT_HOME=/opt/ant - fi - - if [ -d "${HOME}/opt/ant" ] ; then - ANT_HOME="${HOME}/opt/ant" - fi - - ## resolve links - $0 may be a link to ant's home - PRG="$0" - progname=`basename "$0"` - saveddir=`pwd` - - # need this for relative symlinks - dirname_prg=`dirname "$PRG"` - cd "$dirname_prg" - - 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 - - ANT_HOME=`dirname "$PRG"`/.. - - cd "$saveddir" - - # make it fully qualified - ANT_HOME=`cd "$ANT_HOME" && pwd` -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$ANT_HOME" ] && - ANT_HOME=`cygpath --unix "$ANT_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --unix "$CLASSPATH"` -fi - -# set ANT_LIB location -ANT_LIB="${ANT_HOME}/lib" - -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=`which java 2> /dev/null ` - if [ -z "$JAVACMD" ] ; then - JAVACMD=java - fi - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." - echo " We cannot execute $JAVACMD" - exit 1 -fi - -if [ -n "$CLASSPATH" ] ; then - LOCALCLASSPATH="$CLASSPATH" -fi - -# in rpm_mode get ant/optional/xml parser&api from JAVALIBDIR -if $rpm_mode; then - JAVALIBDIR=/usr/share/java - for i in ant ant-optional jaxp_parser xml_apis - do - if [ -z "$LOCALCLASSPATH" ] ; then - LOCALCLASSPATH="$JAVALIBDIR/$i.jar" - else - LOCALCLASSPATH="$JAVALIBDIR/$i.jar":"$LOCALCLASSPATH" - fi - done - - # in rpm mode ant/lib is in /usr/share/java/ant - ANT_LIB="${JAVALIBDIR}/ant" -fi - -# add in the dependency .jar files in non-RPM mode (the default) -for i in "${ANT_LIB}"/*.jar -do - # if the directory is empty, then it will return the input string - # this is stupid, so case for it - if [ -f "$i" ] ; then - if [ -z "$LOCALCLASSPATH" ] ; then - LOCALCLASSPATH="$i" - else - LOCALCLASSPATH="$i":"$LOCALCLASSPATH" - fi - fi -done - -if [ -n "$JAVA_HOME" ] ; then - if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then - LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar" - fi - - if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then - LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" - fi - - # OSX hack to make Ant work with jikes - if $darwin ; then - OSXHACK="${JAVA_HOME}/../Classes" - if [ -d "${OSXHACK}" ] ; then - for i in "${OSXHACK}"/*.jar - do - JIKESPATH="$JIKESPATH:$i" - done - fi - fi -else - echo "Warning: JAVA_HOME environment variable is not set (or not exported)." - echo " If build fails because sun.* classes could not be found" - echo " you will need to set the JAVA_HOME environment variable" - echo " to the installation directory of java." -fi - -# Allow Jikes support (off by default) -if $usejikes; then - ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - ANT_HOME=`cygpath --windows "$ANT_HOME"` - JAVA_HOME=`cygpath --windows "$JAVA_HOME"` - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"` - CYGHOME=`cygpath --windows "$HOME"` -fi - -if [ -n "$CYGHOME" ]; then - if [ -n "$JIKESPATH" ]; then - JIKESPATH=`cygpath --path --windows "$JIKESPATH"` - "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.Main $ANT_ARGS "$@" - else - "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.Main $ANT_ARGS "$@" - fi -else - if [ -n "$JIKESPATH" ]; then - "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" org.apache.tools.ant.Main $ANT_ARGS "$@" - else - echo "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" org.apache.tools.ant.Main $ANT_ARGS "$@" - "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" org.apache.tools.ant.Main $ANT_ARGS "$@" - fi -fi - diff --git a/superx/WEB-INF/conf/edustore/db/bin/ant.bat b/superx/WEB-INF/conf/edustore/db/bin/ant.bat deleted file mode 100755 index a828c8f..0000000 --- a/superx/WEB-INF/conf/edustore/db/bin/ant.bat +++ /dev/null @@ -1,96 +0,0 @@ -@echo off - -REM Copyright (c) 2001-2003 The Apache Software Foundation. All rights -REM reserved. - -if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat" - -if "%OS%"=="Windows_NT" @setlocal - -rem %~dp0 is expanded pathname of the current script under NT -set DEFAULT_ANT_HOME=%~dp0.. - -if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME% -set DEFAULT_ANT_HOME= - -rem Slurp the command line arguments. This loop allows for an unlimited number -rem of arguments (up to the command line limit, anyway). -set ANT_CMD_LINE_ARGS=%1 -if ""%1""=="""" goto doneStart -shift -:setupArgs -if ""%1""=="""" goto doneStart -set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1 -shift -goto setupArgs -rem This label provides a place for the argument list loop to break out -rem and for NT handling to skip to. - -:doneStart -rem find ANT_HOME if it does not exist due to either an invalid value passed -rem by the user or the %0 problem on Windows 9x -if exist "%ANT_HOME%\lib\ant.jar" goto checkJava - -rem check for ant in Program Files on system drive -if not exist "%SystemDrive%\Program Files\ant" goto checkSystemDrive -set ANT_HOME=%SystemDrive%\Program Files\ant -goto checkJava - -:checkSystemDrive -rem check for ant in root directory of system drive -if not exist %SystemDrive%\ant\lib\ant.jar goto checkCDrive -set ANT_HOME=%SystemDrive%\ant -goto checkJava - -:checkCDrive -rem check for ant in C:\ant for Win9X users -if not exist C:\ant\lib\ant.jar goto noAntHome -set ANT_HOME=C:\ant -goto checkJava - -:noAntHome -echo ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME. -goto end - -:checkJava -set _JAVACMD=%JAVACMD% -set LOCALCLASSPATH=%CLASSPATH% -for %%i in ("%ANT_HOME%\lib\*.jar") do call "%ANT_HOME%\bin\lcp.bat" %%i - -if "%JAVA_HOME%" == "" goto noJavaHome -if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome -if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe -if exist "%JAVA_HOME%\lib\tools.jar" set LOCALCLASSPATH=%JAVA_HOME%\lib\tools.jar;%LOCALCLASSPATH% -if exist "%JAVA_HOME%\lib\classes.zip" set LOCALCLASSPATH=%JAVA_HOME%\lib\classes.zip;%LOCALCLASSPATH% -goto checkJikes - -:noJavaHome -if "%_JAVACMD%" == "" set _JAVACMD=java.exe -echo. -echo Warning: JAVA_HOME environment variable is not set. -echo If build fails because sun.* classes could not be found -echo you will need to set the JAVA_HOME environment variable -echo to the installation directory of java. -echo. - -:checkJikes -if not "%JIKESPATH%"=="" goto runAntWithJikes - -:runAnt -"%_JAVACMD%" %ANT_OPTS% -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.Main %ANT_ARGS% %ANT_CMD_LINE_ARGS% -goto end - -:runAntWithJikes -"%_JAVACMD%" %ANT_OPTS% -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.Main %ANT_ARGS% %ANT_CMD_LINE_ARGS% -goto end - -:end -set LOCALCLASSPATH= -set _JAVACMD= -set ANT_CMD_LINE_ARGS= - -if "%OS%"=="Windows_NT" @endlocal - -:mainEnd -if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat" - diff --git a/superx/WEB-INF/conf/edustore/db/bin/antRun b/superx/WEB-INF/conf/edustore/db/bin/antRun deleted file mode 100755 index 6d79e43..0000000 --- a/superx/WEB-INF/conf/edustore/db/bin/antRun +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/sh - -# Copyright (c) 2001-2002 The Apache Software Foundation. All rights -# reserved. - -# Args: DIR command -cd "$1" -CMD="$2" -shift -shift - -exec "$CMD" "$@" diff --git a/superx/WEB-INF/conf/edustore/db/bin/antRun.bat b/superx/WEB-INF/conf/edustore/db/bin/antRun.bat deleted file mode 100755 index 8321f81..0000000 --- a/superx/WEB-INF/conf/edustore/db/bin/antRun.bat +++ /dev/null @@ -1,31 +0,0 @@ -@echo off - -REM Copyright (c) 2001-2002 The Apache Software Foundation. All rights -REM reserved. - -if "%OS%"=="Windows_NT" @setlocal - -if ""%1""=="""" goto runCommand - -rem Change drive and directory to %1 -if "%OS%"=="Windows_NT" cd /d ""%1"" -if not "%OS%"=="Windows_NT" cd ""%1"" -shift - -rem Slurp the command line arguments. This loop allows for an unlimited number -rem of agruments (up to the command line limit, anyway). -set ANT_RUN_CMD=%1 -if ""%1""=="""" goto runCommand -shift -:loop -if ""%1""=="""" goto runCommand -set ANT_RUN_CMD=%ANT_RUN_CMD% %1 -shift -goto loop - -:runCommand -rem echo %ANT_RUN_CMD% -%ANT_RUN_CMD% - -if "%OS%"=="Windows_NT" @endlocal - diff --git a/superx/WEB-INF/conf/edustore/db/bin/antRun.pl b/superx/WEB-INF/conf/edustore/db/bin/antRun.pl deleted file mode 100755 index 649d9e5..0000000 --- a/superx/WEB-INF/conf/edustore/db/bin/antRun.pl +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/perl -####################################################################### -# -# antRun.pl -# -# wrapper script for invoking commands on a platform with Perl installed -# this is akin to antRun.bat, and antRun the SH script -# -# created: 2001-10-18 -# last modified: 2001-11-13 -# author: Jeff Tulley jtulley@novell.com -####################################################################### -#be fussy about variables -use strict; - -#turn warnings on during dev; generates a few spurious uninitialised var access warnings -#use warnings; - -#and set $debug to 1 to turn on trace info (currently unused) -my $debug=1; - -####################################################################### -# change drive and directory to "%1" -my $ANT_RUN_CMD = @ARGV[0]; - -# assign current run command to "%2" -chdir (@ARGV[0]) || die "Can't cd to $ARGV[0]: $!\n"; -if ($^O eq "NetWare") { - # There is a bug in Perl 5 on NetWare, where chdir does not - # do anything. On NetWare, the following path-prefixed form should - # always work. (afaict) - $ANT_RUN_CMD .= "/".@ARGV[1]; -} -else { - $ANT_RUN_CMD = @ARGV[1]; -} - -# dispose of the first two arguments, leaving only the command's args. -shift; -shift; - -# run the command -my $returnValue = system $ANT_RUN_CMD, @ARGV; -if ($returnValue eq 0) { - exit 0; -} -else { - # only 0 and 1 are widely recognized as exit values - # so change the exit value to 1 - exit 1; -} diff --git a/superx/WEB-INF/conf/edustore/db/conf/build.xml b/superx/WEB-INF/conf/edustore/db/conf/build.xml index f29f245..bcfe684 100644 --- a/superx/WEB-INF/conf/edustore/db/conf/build.xml +++ b/superx/WEB-INF/conf/edustore/db/conf/build.xml @@ -232,6 +232,7 @@ Beispielaufruf für SuperX: Kernmodul: ant -f ../conf/build.xml -DMODULE=kern -DPFAD=/home/superx/fertige_module -DDATABASE=POSTGRES -DENCODING=iso -DPLATFORM=superx -DROOT_DIR_WEBSERVER=/home/superx/devel_module/kernmodul4.0utf/webserver -DDOC=/home/superx/git/superx/superx/doku erzeuge_paket + ant -f ../conf/build.xml -DMODULE=kern -DPFAD=/home/superx/fertige_module -DDATABASE=POSTGRES -DENCODING=utf8 -DPLATFORM=his1 -DROOT_DIR_WEBSERVER=/home/superx/devel_module/kernmodul4.0utf/webserver erzeuge_paket SOS-Modul und alle anderen: ant -f ../../conf/build.xml -DMODULE=sos -DPFAD=/home/superx/fertige_module -DDATABASE=POSTGRES -DENCODING=iso -DPLATFORM=superx -DDOC=/home/superx/git/superx/superx/doku erzeuge_paket ant -f ../../conf/build.xml -DMODULE=sos -DPFAD=/home/superx/fertige_module -DDATABASE=POSTGRES -DENCODING=utf8 -DPLATFORM=superx -DDOC=/home/superx/git/superx/superx/doku erzeuge_paket @@ -956,7 +957,20 @@ failonerror="false"> - + + + + + + + + + + + match="sos_astat_doku_url.*" replace="sos_astat_doku_url^^^^de^^<br/><a class=\"handbuch_link\" href=\"http://www.superx-projekt.de/doku/sos_modul/benutzer/f_AbfragenfrdenBereichStudierendePrfungen.htm\" target=\"_blank\">Amtliche Statistik-Handbuch ${module(system)}</a>^^${module(systeminfo_id)}^99^^^" byline="true"/> - - - - - + diff --git a/superx/WEB-INF/conf/edustore/db/conf/dimension_templates_mondrian4/dimension_date_template.xsl b/superx/WEB-INF/conf/edustore/db/conf/dimension_templates_mondrian4/dimension_date_template.xsl new file mode 100644 index 0000000..d4b4e17 --- /dev/null +++ b/superx/WEB-INF/conf/edustore/db/conf/dimension_templates_mondrian4/dimension_date_template.xsl @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/superx/WEB-INF/conf/edustore/db/install/conf/kern_full_excludes_webapp.txt b/superx/WEB-INF/conf/edustore/db/install/conf/kern_full_excludes_webapp.txt index 9bff6ef..c5ef84b 100644 --- a/superx/WEB-INF/conf/edustore/db/install/conf/kern_full_excludes_webapp.txt +++ b/superx/WEB-INF/conf/edustore/db/install/conf/kern_full_excludes_webapp.txt @@ -69,7 +69,7 @@ edit/kenn/** edit/zul/** edit/kennx/** META-INF/context.xml -WEB-INF/conf/edustore/** +#WEB-INF/conf/edustore/** WEB-INF/classes/edustore/** xml/js/dojo/dojo/tests/xml/site.xml xml/his1/** diff --git a/superx/WEB-INF/conf/edustore/db/install/upgrade/kern_env_upgrade.x b/superx/WEB-INF/conf/edustore/db/install/upgrade/kern_env_upgrade.x index 04a8917..f4f62e0 100755 --- a/superx/WEB-INF/conf/edustore/db/install/upgrade/kern_env_upgrade.x +++ b/superx/WEB-INF/conf/edustore/db/install/upgrade/kern_env_upgrade.x @@ -31,8 +31,27 @@ fi chmod +x $SUPERX_DIR/db/bin/SQL_ENV fi +#Upgrade der web.xml: +fgrep -i -s "SuperXmlMenu" $WEBAPP/WEB-INF/web.xml +FLAG1=$? + +if [ $FLAG1 -eq 0 ] +then +echo "web.xml:SuperXmlMenu ist ok" +else +echo "web.xml wird um SuperXmlMenu erweitert." +sed "1,/<\/servlet>/s/<\/servlet>/<\/servlet> de.superx.servlet.SuperXmlMenu<\/servlet-name> de.superx.servlet.SuperXmlMenu<\/servlet-class> <\/servlet> SuperXmlMenu<\/servlet-name> de.superx.servlet.SuperXmlMenu<\/servlet-class> <\/servlet>/" $WEBAPP/WEB-INF/web.xml >$WEBAPP/WEB-INF/web.xml.new +cat $WEBAPP/WEB-INF/web.xml.new >$WEBAPP/WEB-INF/web.xml +sed "1,/<\/servlet-mapping>/s/<\/servlet-mapping>/<\/servlet-mapping> SuperXmlMenu<\/servlet-name> \/servlet\/SuperXmlMenu<\/url-pattern> <\/servlet-mapping>/" $WEBAPP/WEB-INF/web.xml >$WEBAPP/WEB-INF/web.xml.new +cat $WEBAPP/WEB-INF/web.xml.new >$WEBAPP/WEB-INF/web.xml +fi +######################### +# # +# kernmodul_upgrade_4.x # +# # +######################### if test -f $WEBAPP/WEB-INF/lib/superx5.0.jar ; then java -cp $WEBAPP/WEB-INF/lib/superx5.0.jar de.superx.bin.Upgrade $WEBAPP/WEB-INF/conf/obsoletfiles.txt @@ -78,6 +97,33 @@ fi fi fi +if [ "$MANDANTID" != "" ] +then +# Bei Mandantenbetrieb: +echo "Achtun g: in der SQL_ENV des Mandanten "$MANDANTID" muessen folgende Pfade geaendert werden:" +echo "XML_CLASSPATH: auskommentieren" +echo "JDBC_CLASSPATH=\"\$LIB_PATH/ant.jar\" ; for i in \`ls \$LIB_PATH/*.jar\` ; do JDBC_CLASSPATH=\$JDBC_CLASSPATH:\$i ; done ; XML_CLASSPATH=\$JDBC_CLASSPATH" +echo "CATALINA_OPTS: ergänzen um '-DSuperX-DB-PROPERTIES-SET=true'." +else +# Bei Normalbetrieb wird SQL_ENV geaendert: +sed 's/^XML_CLASSPATH=/\#XML_CLASSPATH=\$LIB_PATH/g' $SUPERX_DIR/db/bin/SQL_ENV >$SUPERX_DIR/db/bin/SQL_ENV.new +cat $SUPERX_DIR/db/bin/SQL_ENV.new >$SUPERX_DIR/db/bin/SQL_ENV +sed 's/^CATALINA_OPTS=\"/CATALINA_OPTS=\"-DSuperX-DB-PROPERTIES-SET=true /g' $SUPERX_DIR/db/bin/SQL_ENV >$SUPERX_DIR/db/bin/SQL_ENV.new +cat $SUPERX_DIR/db/bin/SQL_ENV.new >$SUPERX_DIR/db/bin/SQL_ENV +sed 's/^JDBC_CLASSPATH=*/JDBC_CLASSPATH=\"\$LIB_PATH\/ant.jar\" \; for i in \`ls \$LIB_PATH\/*.jar\` \; do JDBC_CLASSPATH=\$JDBC_CLASSPATH:\$i \; done \; XML_CLASSPATH=\$JDBC_CLASSPATH/g' $SUPERX_DIR/db/bin/SQL_ENV >$SUPERX_DIR/db/bin/SQL_ENV.new +cat $SUPERX_DIR/db/bin/SQL_ENV.new >$SUPERX_DIR/db/bin/SQL_ENV +chmod +x $SUPERX_DIR/db/bin/SQL_ENV + +if test ! -f $WEBAPP/META-INF/context.xml ; then +if test -f $SUPERX_DIR/webserver/tomcat/conf/server.xml ; then +sx_transform.x -IN:$SUPERX_DIR/webserver/tomcat/conf/server.xml -XSL:$SUPERX_DIR/db/conf/server_xml2context_xml.xsl -OUT:$WEBAPP/META-INF/context.xml -method:xml +fi +fi + +fi + + + if test -f $WEBAPP/xml/index.htm ; then mv $WEBAPP/xml/index.htm $WEBAPP/xml/index.htm.old fi diff --git a/superx/WEB-INF/conf/edustore/db/module/crontab.sam b/superx/WEB-INF/conf/edustore/db/module/crontab.sam new file mode 100644 index 0000000..99ae6bc --- /dev/null +++ b/superx/WEB-INF/conf/edustore/db/module/crontab.sam @@ -0,0 +1,18 @@ +# Example crontab for user superx +# set EDITOR to vi, and enter +# crontab -e +# | | | | | +# | | | | - Wochentag (0=Sonntag) +# | | | | +# | | | - Monat (1-12) +# | | | +# | | - Tag (1-31) +# | | +# | - Stunde (0-23) +# | +# - Minute (0-59) +# + +# Täglicher SuperX-Update um 18 Uhr +# +00 18 * * 1-5 /home/superx/db/module/update.x >>/home/superx/db/module/update.log 2>&1 diff --git a/superx/WEB-INF/conf/edustore/db/module/update_cron.x.sam b/superx/WEB-INF/conf/edustore/db/module/update_cron.x.sam new file mode 100644 index 0000000..7f26d02 --- /dev/null +++ b/superx/WEB-INF/conf/edustore/db/module/update_cron.x.sam @@ -0,0 +1,20 @@ +#!/bin/bash +#This is the central update script for SuperX. +#Activate it in your crontab with for example: +#15 20 * * * root su - superx -c "/home/superx/db/module/update.x" >update.log 2>&1 +#This entry in /etc/crontab starts the update exery night at 20:15 o'clock. + +. /home/superx/db/bin/SQL_ENV +LOG=$SUPERX_DIR/db/module/superx_update.log +#Stop Tomcat +$SUPERX_DIR/webserver/tomcat/bin/shutdown.sh >$LOG 2>&1 +#Dump Database +$SUPERX_DIR/db/install/dump_it.x >>$LOG 2>&1 +#Now the Modules are updated: +#uncomment this to release it (examples) +#$SOS_PFAD/sos_update.x >>$LOG 2>&1 +#$COB_PFAD/cob_update.x >>$LOG 2>&1 +#$SVA_PFAD/sva_update.x >>$LOG 2>&1 +$SUPERX_DIR/webserver/tomcat/bin/startup.sh >>$LOG 2>&1 + + diff --git a/superx/WEB-INF/conf/obsoletfiles.txt b/superx/WEB-INF/conf/obsoletfiles.txt index cec6bcd..22a9b90 100644 --- a/superx/WEB-INF/conf/obsoletfiles.txt +++ b/superx/WEB-INF/conf/obsoletfiles.txt @@ -1,6 +1,7 @@ #Aufgelistete Dateien werden bei einem Kern Upgrade gelöscht. #Dateien relativ zum Pfad $SUPERX_DIR/webserver/tomcat/webapps/superx angeben. #Es sind nur Dateiangaben erlaubt (keine Wildcards). +WEB-INF/conf/edustore/db/bin/ant WEB-INF/lib/avalon-framework-cvs-20020806.jar WEB-INF/lib/poi-2.5.1-final-20040804.jar WEB-INF/lib/poi-3.5-FINAL-20090928.jar @@ -64,11 +65,12 @@ WEB-INF/lib/commons-httpclient-2.0.jar WEB-INF/lib/commons-lang-2.0.jar WEB-INF/lib/commons-logging-1.0.3.jar WEB-INF/lib/commons-pool-1.2.jar +WEB-INF/lib/freemarker.jar WEB-INF/lib/log4j-1.2.9.jar WEB-INF/lib/log4j-1.2.14.jar WEB-INF/lib/poi-3.6.jar WEB-INF/lib/postgresql-9.0-801.jdbc4.jar -file:///home/superx/git/kern/superx/WEB-INF/lib/postgresql-9.2-1002.jdbc4.jar +WEB-INF/lib/postgresql-9.2-1002.jdbc4.jar WEB-INF/lib/poi-3.9-20121203.jar WEB-INF/lib/poi-ooxml-3.9-20121203.jar WEB-INF/lib/poi-examples-3.9-20121203.jar @@ -86,14 +88,13 @@ WEB-INF/lib/superx4.7.jar WEB-INF/lib/superx4.8.jar WEB-INF/lib/commons-httpclient-20020423.jar WEB-INF/lib/rhino-1.5R4.1.jar -file:///home/superx/git/kern/superx/WEB-INF/lib/saxon8-dom.jar -file:///home/superx/git/kern/superx/WEB-INF/lib/saxon8-jdom.jar -file:///home/superx/git/kern/superx/WEB-INF/lib/saxon8-LICENSE.txt -file:///home/superx/git/kern/superx/WEB-INF/lib/saxon8-sql.jar -file:///home/superx/git/kern/superx/WEB-INF/lib/saxon8-xom.jar -file:///home/superx/git/kern/superx/WEB-INF/lib/saxon8-xpath.jar -file:///home/superx/git/kern/superx/WEB-INF/lib/saxon8.jar - +WEB-INF/lib/saxon8-dom.jar +WEB-INF/lib/saxon8-jdom.jar +WEB-INF/lib/saxon8-LICENSE.txt +WEB-INF/lib/saxon8-sql.jar +WEB-INF/lib/saxon8-xom.jar +WEB-INF/lib/saxon8-xpath.jar +WEB-INF/lib/saxon8.jar WEB-INF/lib/saiku-service-2.5.jar #Grafiken wie png oder gif werden nicht mehr verwendet: #Wenn alle SuperX Module mit kern 4.8 SVGs erschienen sind, können wir u.g. Dateien ent-kommentieren: diff --git a/superx/WEB-INF/lib/superx5.0.jar b/superx/WEB-INF/lib/superx5.0.jar index 251f552..2bd0ca8 100644 Binary files a/superx/WEB-INF/lib/superx5.0.jar and b/superx/WEB-INF/lib/superx5.0.jar differ diff --git a/superx/WEB-INF/reports/tabelle2jasperreport_generic.xsl.jrxml b/superx/WEB-INF/reports/tabelle2jasperreport_generic.xsl.jrxml index 6ecaff6..fbd6da1 100644 --- a/superx/WEB-INF/reports/tabelle2jasperreport_generic.xsl.jrxml +++ b/superx/WEB-INF/reports/tabelle2jasperreport_generic.xsl.jrxml @@ -2,6 +2,7 @@ + /ergebnisse/ergebnis/ergebniselement/sqlerg/row /ergebnisse/ergebnis[ @ordnr='0']/maskenname @@ -171,4 +172,4 @@ -<band height="76"><textField><reportElement x="0" y="0" width="285" height="12"/><textElement><font fontName="Liberation Sans"/></textElement><textFieldExpression class="java.lang.String">$F{REPORT_HEADING_INSTITUTION}</textFieldExpression></textField><textField><reportElement x="0" y="20" width="285" height="12"/><textElement><font fontName="Liberation Sans"/></textElement><textFieldExpression class="java.lang.String">$F{REPORT_HEADING_URL}</textFieldExpression></textField><textField><reportElement x="0" y="44" width="303" height="18"/><textElement><font fontName="Liberation Sans" size="14" isBold="true"/></textElement><textFieldExpression class="java.lang.String">$F{Berichtsname}</textFieldExpression></textField><textField><reportElement x="24" y="62" width="100" height="10"/><textElement><font fontName="Liberation Sans" size="8"/></textElement><textFieldExpression class="java.lang.String">$F{standdatum}</textFieldExpression></textField><staticText><reportElement mode="Transparent" x="0" y="62" width="24" height="10" forecolor="#000000" backcolor="#FFFFFF"/><textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single" markup="none"><font fontName="Liberation Sans" size="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Liberation Sans" pdfEncoding="Cp1252" isPdfEmbedded="false"/></textElement><text>Stand:</text></staticText><image><reportElement x="730" y="0" width="80" height="32"><printWhenExpression>$F{REPORT_LOGO_FILE}!=null && !$F{REPORT_LOGO_FILE}.equals("") && !$F{REPORT_LOGO_FILE}.equals("@@REPORT_LOGO_FILE@@")</printWhenExpression></reportElement><imageExpression class="java.lang.String">"../"+$F{REPORT_LOGO_FILE}</imageExpression></image></band>Erzeugungsdatum:new java.util.Date()"" + $V{PAGE_NUMBER} + """Seite " + $V{PAGE_NUMBER} + " von " +<band height="76"><textField><reportElement x="0" y="0" width="729" height="20"/><textElement><font fontName="Liberation Sans"/></textElement><textFieldExpression class="java.lang.String">$F{REPORT_HEADING_INSTITUTION}</textFieldExpression></textField><textField><reportElement x="0" y="20" width="729" height="12"/><textElement><font fontName="Liberation Sans"/></textElement><textFieldExpression class="java.lang.String">$F{REPORT_HEADING_URL}</textFieldExpression></textField><textField><reportElement x="0" y="44" width="809" height="18"/><textElement><font fontName="Liberation Sans" size="14" isBold="true"/></textElement><textFieldExpression class="java.lang.String">$F{Berichtsname}</textFieldExpression></textField><textField><reportElement x="24" y="62" width="809" height="10"/><textElement><font fontName="Liberation Sans" size="8"/></textElement><textFieldExpression class="java.lang.String">$F{standdatum}</textFieldExpression></textField><staticText><reportElement mode="Transparent" x="0" y="62" width="24" height="10" forecolor="#000000" backcolor="#FFFFFF"/><textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single" markup="none"><font fontName="Liberation Sans" size="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Liberation Sans" pdfEncoding="Cp1252" isPdfEmbedded="false"/></textElement><text>Stand:</text></staticText><image><reportElement x="730" y="0" width="80" height="32"><printWhenExpression>$F{REPORT_LOGO_FILE}!=null && !$F{REPORT_LOGO_FILE}.equals("") && !$F{REPORT_LOGO_FILE}.equals("@@REPORT_LOGO_FILE@@")</printWhenExpression></reportElement><imageExpression class="java.lang.String">"../"+$F{REPORT_LOGO_FILE}</imageExpression></image></band>Erzeugungsdatum:new java.util.Date()"" + $V{PAGE_NUMBER} + """Seite " + $V{PAGE_NUMBER} + " von " diff --git a/superx/xml/js/memtext/sx_functions.js b/superx/xml/js/memtext/sx_functions.js index 3cf6614..daf7879 100644 --- a/superx/xml/js/memtext/sx_functions.js +++ b/superx/xml/js/memtext/sx_functions.js @@ -495,6 +495,7 @@ function sichtEintraegeSuchen(was) { // params sollten schon passend escaped sein function maskeSichtLaden(fname, cap, params1) { + resetValidation(); if (fname) Feldname = fname; caption = cap; // @@ -903,6 +904,7 @@ function prepareLesezeichenLink2() { } function maskeComboLaden(fname, caption) { + resetValidation(); Feldname = fname; var callurl = '/superx/servlet/SuperXmlMaske'; //if (jsessionid!='') callurl+=";jsessionid="+jsessionid; @@ -1913,7 +1915,9 @@ function tableRowHeaderSticky(fixedColumnCount_width) for (var i=0; i < numTableRaws; i++) { //normale Spalten, die mitlaufen sollen - Abstand links, Hintergrundfarbe, Ebene und Position setzen document.getElementById("table1").getElementsByTagName('tbody')[0].getElementsByTagName('tr')[i].getElementsByTagName('td')[c].style.left=column_width + "px"; - document.getElementById("table1").getElementsByTagName('tbody')[0].getElementsByTagName('tr')[i].getElementsByTagName('td')[c].style.backgroundColor="#c4c4c4"; + //eigene Farbgebung raus, statt dessen inherit damit nicht durchscheint und ursprüngliche Farbe erhalten bleibt #293635c7 + //document.getElementById("table1").getElementsByTagName('tbody')[0].getElementsByTagName('tr')[i].getElementsByTagName('td')[c].style.backgroundColor="#c4c4c4"; + document.getElementById("table1").getElementsByTagName('tbody')[0].getElementsByTagName('tr')[i].getElementsByTagName('td')[c].style.backgroundColor="inherit"; document.getElementById("table1").getElementsByTagName('tbody')[0].getElementsByTagName('tr')[i].getElementsByTagName('td')[c].style.zIndex=3; document.getElementById("table1").getElementsByTagName('tbody')[0].getElementsByTagName('tr')[i].getElementsByTagName('td')[c].style.position="sticky"; } @@ -1922,4 +1926,11 @@ function tableRowHeaderSticky(fixedColumnCount_width) //und dann der Variable für fixen Abstand von links ergänzen column_width+=this_column_width; } -} \ No newline at end of file +} + +function resetValidation() +{ + var el=document.getElementById('validation'); + if(el) + el.innerHTML = ""; +} diff --git a/superx/xml/maskComponents_html.xsl b/superx/xml/maskComponents_html.xsl index 8a818d9..1af6361 100644 --- a/superx/xml/maskComponents_html.xsl +++ b/superx/xml/maskComponents_html.xsl @@ -800,7 +800,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - + @@ -889,7 +889,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" c=document.getElementById(' select_ - ');document.getElementById('').value=c.options[c.selectedIndex].value; + ');document.getElementById('').value=c.options[c.selectedIndex].value;resetValidation();