Mercurial > dive4elements > gnv-client
changeset 1002:b1eea43ba133
Second attempt to apply redirect link patch.
gnv/trunk@1206 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 13 Jun 2010 16:28:37 +0000 |
parents | ebc3d018af6a |
children | cf5ab5eaeb46 |
files | gnv/ChangeLog gnv/src/main/java/de/intevation/gnv/action/DescribeUIAction.java gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java gnv/src/main/java/de/intevation/gnv/util/XSLTransformer.java gnv/src/main/webapp/WEB-INF/config/struts-config.xml gnv/src/main/webapp/WEB-INF/config/templates/describe-ui.xsl gnv/src/main/webapp/WEB-INF/jsp/index.jsp gnv/src/main/webapp/styles/gnv.css |
diffstat | 9 files changed, 173 insertions(+), 41 deletions(-) [+] |
line wrap: on
line diff
--- a/gnv/ChangeLog Fri Jun 11 12:11:52 2010 +0000 +++ b/gnv/ChangeLog Sun Jun 13 16:28:37 2010 +0000 @@ -1,3 +1,34 @@ +2010-06-10 Sascha L. Teichmann <sascha.teichmann@intevation.de> + + Issue 219 + + * src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java: + Broke over long line. + + * src/main/java/de/intevation/gnv/action/DescribeUIAction.java: Fed + more parameters into XSL transformation to allow better form rendering. + + * src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java: + use explicit boolean to indicate that we are still able to advance. + + * src/main/java/de/intevation/gnv/util/XSLTransformer.java: Removed + stupid initial size of hash map. + + * src/main/webapp/styles/gnv.css: Added style to render direct + links to look like buttons. + + * src/main/webapp/WEB-INF/config/struts-config.xml: Added a few + forwards. The log is full of unresolvable forwards. TODO: This + needs to be checked and is not a problem introduced by direct + link feature. + + * src/main/webapp/WEB-INF/config/templates/describe-ui.xsl: Render + the direct links if there are less than six item in a single + select list. + + * src/main/webapp/WEB-INF/jsp/index.jsp: Cleanup a bit. Removed + form rendering here and moved it into the dynamic XSL transformation. + 2010-06-11 Tim Englich <tim.englich@intevation.de> Issue278
--- a/gnv/src/main/java/de/intevation/gnv/action/DescribeUIAction.java Fri Jun 11 12:11:52 2010 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/action/DescribeUIAction.java Sun Jun 13 16:28:37 2010 +0000 @@ -25,6 +25,8 @@ import de.intevation.gnv.util.XMLUtils; import de.intevation.gnv.util.XSLTransformer; +import org.apache.log4j.Logger; + /** * This controller is called to fetch the current artifact description using the * describe operation. The describe document is used to feed an XSL transformer @@ -36,6 +38,9 @@ */ public class DescribeUIAction extends ArtifactDatabaseActionBase { + private static Logger log = Logger + .getLogger(DescribeUIAction.class); + public static final String XPATH_DYNAMIC_UI = "art:dynamic"; public static final String XPATH_STATIC_UI = "art:static"; @@ -58,6 +63,11 @@ super(); } + public static String getInputException(HttpServletRequest request) { + Object msg = request.getAttribute(CommunicationKeys.REQUEST_EXCEPTION_INPUT_ID); + return msg != null ? msg.toString() : ""; + } + @Override public ActionForward execute( @@ -104,8 +114,10 @@ if (currentUI != null) { ResourceBundle res = ResourceBundle.getBundle( "applicationMessages", locale); - String editText = res.getString( + String editText = res.getString( "gnviewer.history.back.button"); + String submitButton = res.getString( + "gnviewer.select.button.src"); String exampleLinestring = res.getString( "gnviewer.example.linestring"); String examplePolygon = res.getString( @@ -113,12 +125,37 @@ XSLTransformer transformer = new XSLTransformer(); + String nextUrl = response.encodeURL( + mapping.findForward("next").getPath()); + String url = response.encodeURL( mapping.findForward("back").getPath()); + + + transformer.addParameter( + "uuid", + sm.getCurrentArtifact().getDescription()); + + transformer.addParameter( + "exception", + getInputException(request)); + + + Object ft = request.getAttribute("furthertargets"); + + transformer.addParameter("further", + ft == null || (ft instanceof Boolean && ((Boolean)ft).booleanValue()) + ? "true" + : "false"); + + transformer.addParameter("next-url", nextUrl); transformer.addParameter("back-url", url); transformer.addParameter("edit", editText); transformer.addParameter("example-polygon", examplePolygon); transformer.addParameter( + "gnviewer-select-button-src", + submitButton); + transformer.addParameter( "example-linestring", exampleLinestring); @@ -135,10 +172,9 @@ ); String ui = transformer.transform( - dynamicNode, + dynamicNode.getParentNode(), "UTF-8", - request.getRealPath(XSL_SHEET_DYNAMIC - )); + request.getRealPath(XSL_SHEET_DYNAMIC)); if (ui != null && ui.length() > 1) request.setAttribute("ui", ui);
--- a/gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java Fri Jun 11 12:11:52 2010 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java Sun Jun 13 16:28:37 2010 +0000 @@ -98,7 +98,7 @@ ); } catch (ArtifactDatabaseInputException e) { - log.error(e, e); + log.debug(e, e); request.setAttribute( CommunicationKeys.REQUEST_EXCEPTION_INPUT_ID, e.getMessage()); @@ -113,7 +113,7 @@ Map tmpOuts = ad.getOutputModes(); request.setAttribute( "furthertargets", - tmpOuts == null || tmpOuts.isEmpty() + Boolean.valueOf(tmpOuts == null || tmpOuts.isEmpty()) ); } else { try{ @@ -139,7 +139,7 @@ e.getMessage()); } - request.setAttribute("furthertargets", false); + request.setAttribute("furthertargets", Boolean.FALSE); } }else{ log.warn("SessionTimeout has occured");
--- a/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java Fri Jun 11 12:11:52 2010 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java Sun Jun 13 16:28:37 2010 +0000 @@ -25,9 +25,11 @@ */ public interface ArtifactDatabaseClient { - public final static String ARTIFACTDATABASE_COUNT_ID = "de.intevation.gnv.artifactdatabase.client.ArtifactDatabase.count"; + public final static String ARTIFACTDATABASE_COUNT_ID = + "de.intevation.gnv.artifactdatabase.client.ArtifactDatabase.count"; - public final static String ARTIFACTDATABASE_URL_ID = "de.intevation.gnv.artifactdatabase.client.ArtifactDatabase.url"; + public final static String ARTIFACTDATABASE_URL_ID = + "de.intevation.gnv.artifactdatabase.client.ArtifactDatabase.url"; /** * Return the Artifactfactories which can be resolved.
--- a/gnv/src/main/java/de/intevation/gnv/util/XSLTransformer.java Fri Jun 11 12:11:52 2010 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/util/XSLTransformer.java Sun Jun 13 16:28:37 2010 +0000 @@ -98,7 +98,7 @@ */ public void addParameter(String name, String value) { if (params == null) { - params = new HashMap<String, String>(3); + params = new HashMap<String, String>(); } params.put(name, value);
--- a/gnv/src/main/webapp/WEB-INF/config/struts-config.xml Fri Jun 11 12:11:52 2010 +0000 +++ b/gnv/src/main/webapp/WEB-INF/config/struts-config.xml Sun Jun 13 16:28:37 2010 +0000 @@ -91,6 +91,9 @@ <forward name="back" path="/gnv/back.do"/> + <forward + name="next" + path="/gnv/next.do"/> <forward name="selectfis" path="/gnv/selectFis.do"/> @@ -106,6 +109,9 @@ name="back" path="/gnv/back.do"/> <forward + name="next" + path="/gnv/next.do"/> + <forward name="selectfis" path="/gnv/selectFis.do"/> </action> @@ -124,6 +130,9 @@ <forward name="success" path="/WEB-INF/jsp/mainlayout.jsp"/> + <forward + name="next" + path="/gnv/next.do"/> <forward name="back" path="/gnv/back.do"/> @@ -149,6 +158,9 @@ <forward name="success" path="/WEB-INF/jsp/wmslayout.jsp"/> + <forward + name="next" + path="/gnv/next.do"/> <forward name="back" path="/gnv/back.do"/> @@ -180,6 +192,9 @@ <forward name="success" path="/WEB-INF/jsp/mainlayout.jsp"/> + <forward + name="next" + path="/gnv/next.do"/> <forward name="back" path="/gnv/back.do"/> @@ -194,6 +209,9 @@ <forward name="success" path="/WEB-INF/jsp/mainlayout.jsp"/> + <forward + name="next" + path="/gnv/next.do"/> <forward name="back" path="/gnv/back.do"/> @@ -208,6 +226,9 @@ <forward name="success" path="/WEB-INF/jsp/mainlayout.jsp"/> + <forward + name="next" + path="/gnv/next.do"/> <forward name="back" path="/gnv/back.do"/> @@ -219,6 +240,9 @@ type="de.intevation.gnv.action.ShowStatisticAction" scope="request" validate="false"> + <forward + name="next" + path="/gnv/next.do"/> <forward name="back" path="/gnv/back.do"/> @@ -237,6 +261,9 @@ name="back" path="/gnv/back.do"/> <forward + name="next" + path="/gnv/next.do"/> + <forward name="selectfis" path="/gnv/selectFis.do"/> <forward @@ -250,6 +277,9 @@ <forward name="success" path="/WEB-INF/jsp/mainlayout.jsp"/> + <forward + name="next" + path="/gnv/next.do"/> <forward name="back" path="/gnv/back.do"/>
--- a/gnv/src/main/webapp/WEB-INF/config/templates/describe-ui.xsl Fri Jun 11 12:11:52 2010 +0000 +++ b/gnv/src/main/webapp/WEB-INF/config/templates/describe-ui.xsl Sun Jun 13 16:28:37 2010 +0000 @@ -11,21 +11,70 @@ <xsl:param name="example-linestring"/> <xsl:param name="example-polygon"/> + <xsl:param name="uuid"/> + <xsl:param name="next-url">/gnv/next.do</xsl:param> + <xsl:param name="further">false</xsl:param> + <xsl:param name="exception"/> + <xsl:param name="gnviewer-select-button-src">./images/auswaehlen.png</xsl:param> + + <xsl:template match="art:ui"> + <xsl:if test="$further = 'true'"> + <div id="timeseriesfilter"> + <form id="fisSelectionForm" + onsubmit="displayOverlay()" + action="{$next-url}" + method="post"> + <fieldset> + <xsl:if test="$exception != ''"> + <div class="inputException"><xsl:value-of select="$exception"/></div> + </xsl:if> + <input type="hidden" name="artifact-uuid" value="{$uuid}"/> + <xsl:apply-templates select="art:dynamic"/> + <xsl:variable name="item-count" select="count(art:dynamic//xform:select1//xform:item)"/> + <xsl:if test="$item-count = 0 or $item-count > 5"> + <br/> + <input style="margin-top: 5px;" type="image" src="{$gnviewer-select-button-src}"/> + </xsl:if> + </fieldset> + </form> + </div> + </xsl:if> + </xsl:template> <!-- single select --> - <xsl:template match="xform:select1"> + <xsl:template match="xform:select1" > <xsl:variable name="selectName" select="@ref"/> + <xsl:variable name="items" select="count(.//xform:item)"/> <legend><xsl:value-of select="xform:label"/></legend> - <select name="{$selectName}"> - <xsl:apply-templates /> - </select> + <xsl:choose> + <xsl:when test="$items < 6"> + <xsl:apply-templates mode="direct-link"/> + </xsl:when> + <xsl:otherwise> + <select name="{$selectName}"> + <xsl:apply-templates /> + </select> + </xsl:otherwise> + </xsl:choose> </xsl:template> + <xsl:template match="text()" mode="direct-link"/> + + <!-- options for select: direct-link --> + <xsl:template match="xform:item" mode="direct-link"> + <xsl:variable name="optionValue" select="xform:value"/> + <xsl:variable name="selectName" select="ancestor::xform:select1/@ref"/> + <a class="linkButton" + onclick="displayOverlay()" + href="{$next-url}?{$selectName}={$optionValue}"><xsl:value-of select="xform:label"/></a> + <br/> + <br/> + </xsl:template> <!-- multi select --> <xsl:template match="xform:select"> <xsl:variable name="selectName" select="@ref"/> - <xsl:variable name="items" select="count(//xform:item)"/> + <xsl:variable name="items" select="count(.//xform:item)"/> <legend> <xsl:value-of select="xform:label"/> </legend>
--- a/gnv/src/main/webapp/WEB-INF/jsp/index.jsp Fri Jun 11 12:11:52 2010 +0000 +++ b/gnv/src/main/webapp/WEB-INF/jsp/index.jsp Sun Jun 13 16:28:37 2010 +0000 @@ -1,13 +1,10 @@ <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean-el" prefix="bean-el" %> -<%@page import="java.util.Collection"%> <%@page import="de.intevation.gnv.artifactdatabase.objects.ArtifactObject"%> <%@page import="de.intevation.gnv.action.CommunicationKeys"%> <%@page import="de.intevation.gnv.action.sessionmodel.SessionModel"%> <%@page import="de.intevation.gnv.action.sessionmodel.SessionModelFactory"%> -<%@page import="java.util.Iterator"%> <% - String exception = (String)request.getAttribute(CommunicationKeys.REQUEST_EXCEPTION_INPUT_ID); SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request); Object ui = request.getAttribute("ui"); Object staticui = request.getAttribute("staticui"); @@ -15,7 +12,6 @@ Object statistic = request.getAttribute("statistic"); Object histogram = request.getAttribute("histogram"); Object wms_published = request.getAttribute("wms_published"); - boolean furthertargets = true; if (chart == null && statistic == null && histogram == null && wms_published == null) { boolean supportChart = sm.getOutputMode("chart") != null; @@ -24,10 +20,6 @@ } } - Object furthertargetsObject = request.getAttribute("furthertargets"); - if (furthertargetsObject != null){ - furthertargets = ((Boolean)furthertargetsObject).booleanValue(); - } Object exceptionMessage = request.getAttribute(CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID); exceptionMessage = (exceptionMessage != null ? exceptionMessage.toString().replaceAll(" ", ".").replaceAll(":",".").toLowerCase() : null); @@ -94,24 +86,8 @@ <%}%> <%-- render the dynamic part to feed the state and advance to the next state --%> - <%if (ui != null){%> - <div id="timeseriesfilter"> - <form id="fisSelectionForm" onsubmit="displayOverlay()" action="<%=response.encodeURL("next.do")%>" method="post"> - <fieldset> - - <%-- error message, if user input was not valid --%> - <%if (exception != null) {%> - <div class="inputException"><%=exception%></div> - <%}%> - <%=ui != null ? ui.toString().replaceAll(" ", "") : "" %> - - <%if(furthertargets){%> - <br/> - <input style="margin-top: 5px;" type="image" src="<bean:message key="gnviewer.select.button.src"/>"/> - <%}%> - </fieldset> - </form> - </div> + <%if (ui != null) { %> + <%= ui.toString().replaceAll(" ", "") %> <%}%> <%-- render export options if existing for this state --%>
--- a/gnv/src/main/webapp/styles/gnv.css Fri Jun 11 12:11:52 2010 +0000 +++ b/gnv/src/main/webapp/styles/gnv.css Sun Jun 13 16:28:37 2010 +0000 @@ -117,6 +117,14 @@ } /* Some classes for the content */ +a.linkButton { + border: 1px solid #000000; + color: #ff6600; + font-size: 1.2em; + padding: 1px; + text-decoration: none; +} + #contentElement { float: left; height: 90%;