rogerrut 2004/11/08 14:30:28 Added: portals-bridges/common/src/java/org/apache/portals/bridges/common ScriptRuntimeData.java ScriptPostProcess.java Log: Cleanup and improvement of the PERL portlet --> Added navigation support for Form actions, hrefs to other perl scripts --> Normalized action handling for the portlet. -- >Moved some utility functions into the portals-bridges common package since the PHP portlet uses some of the same functionality Revision Changes Path 1.1 jakarta-jetspeed-2/portals-bridges/common/src/java/org/apache/portals/bridges/common/ScriptRuntimeData.java Index: ScriptRuntimeData.java =================================================================== /* * Copyright 2000-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.portals.bridges.common; /** * ScriptRuntimeData * * Base class that provides meta data to no Java portlets such as: * PHP, Perl * * @author <a href="mailto:[EMAIL PROTECTED]">Roger Ruttimann</a> * @version $Id: ScriptRuntimeData.java,v 1.1 2004/11/08 22:30:28 rogerrut Exp $ */ public class ScriptRuntimeData { // Class members private String scriptName = ""; private String queryString = ""; private String displayMessage = ""; private String sessionParameterName = ""; /** * addQueryString() * Adds one argument at the time to the query strings. Takes care of the separators * */ public void addQueryArgument(String queryArgument) { if (queryString == null) { queryString = queryArgument; } else { queryString += '&'; queryString += queryArgument; } } /** * @return Returns the displayMessage. */ public String getDisplayMessage() { return displayMessage; } /** * @param displayMessage The displayMessage to set. */ public void setDisplayMessage(String displayMessage) { this.displayMessage = displayMessage; } /** * @return Returns the queryString. */ public String getQueryString() { return queryString; } /** * @param queryString The queryString to set. */ public void setQueryString(String queryString) { this.queryString = queryString; } /** * @return Returns the scriptName. */ public String getScriptName() { return scriptName; } /** * @param scriptName The scriptName to set. */ public void setScriptName(String scriptName) { this.scriptName = scriptName; } /** * @return Returns the sessionParameterName. */ public String getSessionParameterName() { return sessionParameterName; } /** * @param sessionParameterName The sessionParameterName to set. */ public void setSessionParameterName(String sessionParameterName) { this.sessionParameterName = sessionParameterName; } } 1.1 jakarta-jetspeed-2/portals-bridges/common/src/java/org/apache/portals/bridges/common/ScriptPostProcess.java Index: ScriptPostProcess.java =================================================================== /* * Copyright 2000-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.portals.bridges.common; import javax.portlet.PortletURL; /** * ScriptPostProcess * * Utility class for post processing perl or php created pages. * * @author <a href="mailto:[EMAIL PROTECTED]">Roger Ruttimann</a> * @version $Id: ScriptPostProcess.java,v 1.1 2004/11/08 22:30:28 rogerrut Exp $ */ public class ScriptPostProcess { // Private members StringBuffer internalPage = null; /** * */ public ScriptPostProcess() { super(); // TODO Auto-generated constructor stub } /** * getFinalizedPage * @return String processed page */ public String getFinalizedPage() { if (internalPage != null) { return internalPage.toString(); } else { return ""; } } /** * setInitialPage() * Sets the internal page that will be processed by invoking the different methods * @param page */ public void setInitalPage(StringBuffer page) { this.internalPage = page; } /** * postProcessPage() * Applies default rules for processing HREFS and actions in an HTML page * @param actionURL * @param actionParameterName */ public void postProcessPage(PortletURL actionURL, String actionParameterName) { // Anchor tags processPage("<a", ">", "href=", actionURL, actionParameterName); processPage("<A", ">", "HREF=", actionURL, actionParameterName); processPage("<AREA", ">", "href=", actionURL, actionParameterName); // Forms processPage("<FORM", ">", "action=", actionURL, actionParameterName); processPage("<form", ">", "action=", actionURL, actionParameterName); } /** * processPage() * Apply one rule to the page * @param startTag * @param endTag * @param ref * @param actionURL * @param actionParameterName */ public void processPage(String startTag, String endTag, String ref, PortletURL actionURL, String actionParameterName) { final String SINGLE_QUOTE = "\'"; final String DOUBLE_QUOTE = "\""; StringBuffer finalPage = new StringBuffer(); String page = internalPage.toString(); int ixTagOpen, ixTagEnd, ixRefStart, ixRefEnd; //ref = ref + quote; // Start search ixTagOpen = page.indexOf(startTag); try { while (ixTagOpen != -1 ) { finalPage.append(page.substring(0, ixTagOpen)); page = page.substring(ixTagOpen); ixTagEnd = page.indexOf(endTag); ixRefStart = page.indexOf(ref); //If reference start tag is after endTag it means that the Tag doesn't include any source links // just continue... if ( ixRefStart == -1 || ixRefStart > ixTagEnd ) { finalPage.append(page.substring(0, ixTagEnd)); page = page.substring(ixTagEnd); } else { String strQuote = ""; String url = ""; ixRefStart = ixRefStart + ref.length(); finalPage.append(page.substring(0, ixRefStart)); page = page.substring(ixRefStart); // Check if the argument starts with a single or double quote or no quote if ( page.startsWith(SINGLE_QUOTE)) strQuote = SINGLE_QUOTE; else if (page.startsWith(DOUBLE_QUOTE)) strQuote = DOUBLE_QUOTE; if ( strQuote.length() > 0) { finalPage.append(strQuote); page = page.substring(1); ixRefEnd = page.indexOf(strQuote); // Extract the URL url = page.substring(0, ixRefEnd); } else { // No quote just the first no ASCII char ixRefEnd = 0; StringBuffer nqurl = new StringBuffer(); boolean bEnd = false; while ( bEnd == false) { char c = page.charAt(ixRefEnd); if ( Character.isSpaceChar(c) == false ) { ixRefEnd++; nqurl.append(c); } else { bEnd = true; ixRefEnd--; } } // Get the string url = nqurl.toString(); } // Prepend the Action URL actionURL.setParameter(actionParameterName, url); finalPage.append(actionURL.toString()).append(strQuote); //Remainder page = page.substring(ixRefEnd+1); } // Continue scan ixTagOpen = page.indexOf(startTag); } finalPage.append(page); } catch(Exception e) { System.out.println("ERROR: Exception in processHREFS " + e.getMessage() ); } internalPage = finalPage; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]