From: <jbo...@li...> - 2005-09-02 16:19:58
|
Author: adamw Date: 2005-09-02 12:19:50 -0400 (Fri, 02 Sep 2005) New Revision: 1040 Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java Log: CSS from file-access in freezone Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-09-02 15:20:58 UTC (rev 1039) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-09-02 16:19:50 UTC (rev 1040) @@ -23,235 +23,240 @@ * @author adamw */ public class Freezone extends JBossPortlet { - /** - * <code>DEFAULT_PAGE</code> - Name of the page that is displayed if no - * page is selected. - */ - private final static String DEFAULT_PAGE = "index.html"; - - private ProjectsHelper projectsHelper; - private ForgeHelper forgeHelper; - private ContentManager cm; - - public void init() { - projectsHelper = new ProjectsHelper(); - forgeHelper = new ForgeHelper(); - cm = forgeHelper.getContentManager(""); - } - - /** - * In the given content, finds a first string of the form: - * <link ... href=, and returns the text inside the reference. - * - * @param content - * String in which to look for the reference. - * @param refName - * Name of the reference. - * @return Text contained in the reference or null if no reference is found. - */ - private String findNextReference(String content, String refName) { - int h; - int start; - if (refName.equals("link")) { - h = content.indexOf(" href="); //search for one of the link types - if (h == -1) - { - return null; - } - else start = h; - int begin = content.substring(start).indexOf('"'); - int end = content.substring(start + begin + 1).indexOf('"'); - begin += start; - end += begin; - return content.substring(begin + 1, end + 1); - } - else if(refName.equals("image")) - { - start=content.indexOf("<img src="); - if (start == -1) - return null; - int begin = content.substring(start).indexOf('"'); - int end=content.substring(start+begin+1).indexOf('"'); - begin+=start; end+=begin; - return content.substring(begin+1, end+1);} - else - return null; - } - - /** - * Figures out if a link is an off-site link. This recognizes the most - * common protocols by checking how it starts. (clears all white space in - * case the link starts with '\n' or [space] - * - * @author Janne Jalkanen - */ - private boolean isExternalLink(String link) { - link = link.trim(); - return link.startsWith("http:") || link.startsWith("ftp:") - || link.startsWith("https:") || link.startsWith("mailto:") - || link.startsWith("news:") || link.startsWith("file:"); - } - -// modifies path to page/resource so folder structure can be supported - private String modifyPath(String path, String element) { - int start, end; - String mainPath = ""; - if (element.startsWith("#")) - { - return path+element; - - } - else if (element.startsWith("./")) - { System.out.println("found a match"); - element = element.substring(2); - System.out.println("and element is now "+ element); - }//ignore ./ only clutters the code - - int pre = path.lastIndexOf('/'); - if(pre== -1)//we are in root dir - { - return element; - } - else { - mainPath = path.substring(0, pre); - }//main path to page - - - if (element.startsWith("/")) - return element.substring(1); //base path, start with WEB-root - - if (element.indexOf('/') != -1) { - if (element.indexOf("../") != -1)//need to go up a few levels - { - while (element.indexOf("../") != -1) //do we need to go more - { - if (mainPath.equals("")) - return DEFAULT_PAGE; //trying to go too far up - else { - start = element.lastIndexOf("../");//go one level up - end = mainPath.lastIndexOf("/");//find last level - if(end == -1) - {end = 0;} //we have reached last level - element = element.substring(0, start) - + element - .substring(start + 3, element.length()); - mainPath = mainPath.substring(0, end); - - }//else - - }//while - - }//if ../ - - } - - return mainPath + '/' + element; - } - - public void doView(JBossRenderRequest request, JBossRenderResponse response) - throws IOException { - response.setContentType("text/html"); - - try { - String portalName = forgeHelper.getPortalName(request); - - // Getting the selected project - String projectId = projectsHelper.getSelectedProjectId(request, true); - - // Getting the name of the requested page - String pagePath = forgeHelper.getRequestParameter(request, "page"); - if (pagePath == null) - pagePath = DEFAULT_PAGE; - else - pagePath = ForgeHelper.replace(pagePath, - ForgeHelper.FREEZONE_SEPARATOR, "/"); - - // If the tried to break into other files, denying access to him. - if (pagePath.indexOf("..") != -1) - throw new Exception(); - - // Reading the file. - String pageContent = cm.read(portalName + "/" - + ProjectsHelper.MEMBERS_DIR + "/" + projectId + "/" - + ProjectsHelper.FREEZONE_DIR + "/" + pagePath); - if (pageContent == null) - throw new Exception(); - - String nextRef; - String nextRef2; - String imagePrepend = "/file-access/" + portalName + "/" - + ProjectsHelper.MEMBERS_DIR + "/" + projectId + "/"+ProjectsHelper.FREEZONE_DIR+"/"; - while(pageContent.indexOf("HREF=")!= -1) - { - pageContent = ForgeHelper.replace(pageContent,"HREF=", "href="); - } - - while(pageContent.indexOf("<IMG SRC=")!= -1) - { - pageContent = ForgeHelper.replace(pageContent,"<IMG SRC=", "<img src="); - } - -// Replacing links - while ((nextRef = findNextReference(pageContent, "link")) != null) { - if(!isExternalLink(nextRef)) - { - //it would be relative not outside link - nextRef2 = modifyPath(pagePath, nextRef); - if(nextRef2.endsWith(".png")) - { - nextRef2=imagePrepend+nextRef2+"\" target=\"_blank\""; - pageContent = ForgeHelper.replace(pageContent,"href=" - + '"' + nextRef + '"', "*ref="+'"'+ nextRef2); - } - else - pageContent = ForgeHelper.replace(pageContent, "href=" - + '"' + nextRef + '"', - ProjectsHelper.createFreezonePageLink(portalName, - projectId, nextRef2+'"')); - } - else { - pageContent = ForgeHelper.replace(pageContent, "href=" - + '"' + nextRef, "$"+nextRef+'"'); - } - } - - // Replacing images - while ((nextRef = findNextReference(pageContent, "image")) != null) - { - nextRef2 = modifyPath(pagePath, nextRef); - pageContent = ForgeHelper.replace(pageContent, "<img src="+'"' - + nextRef+'"', "*img src="+'"'+imagePrepend + nextRef2+'"');} - - //fix back internal links - while (pageContent.indexOf("*ref=") != -1) - pageContent = ForgeHelper.replace(pageContent, - "*ref=", " href=" ); - - while (pageContent.indexOf(" /portal/index.html?ctrl:id") != -1) - pageContent = ForgeHelper.replace(pageContent, - " /portal/index.html?ctrl:id", " href=" + '"' - + "/portal/index.html?ctrl:id"); - - //fix back external links - - while (pageContent.indexOf("$http:") != -1 - || pageContent.indexOf("$ftp:") != -1 - || pageContent.indexOf("$https:") != -1 - || pageContent.indexOf("$file:") != -1 - || pageContent.indexOf("$mailto:") != -1 - || pageContent.indexOf("$news:") != -1) - {pageContent = ForgeHelper.replace(pageContent, "$", - " href=" + '"');} - //fix back image links - while (pageContent.indexOf("*img src=") != -1 ) - {pageContent = ForgeHelper.replace(pageContent, "*img src=", - "<img src=");} - - response.getWriter().write(pageContent); - } catch (Exception e) { - e.printStackTrace(); - response.getWriter().write( - "The page you requested cannot be accessed "); - } - } + /** + * <code>DEFAULT_PAGE</code> - Name of the page that is displayed if no + * page is selected. + */ + private final static String DEFAULT_PAGE = "index.html"; + + private ProjectsHelper projectsHelper; + + private ForgeHelper forgeHelper; + + private ContentManager cm; + + public void init() { + projectsHelper = new ProjectsHelper(); + forgeHelper = new ForgeHelper(); + cm = forgeHelper.getContentManager(""); + } + + /** + * In the given content, finds a first string of the form: <link ... href=, + * and returns the text inside the reference. + * + * @param content + * String in which to look for the reference. + * @param refName + * Name of the reference. + * @return Text contained in the reference or null if no reference is found. + */ + private String findNextReference(String content, String refName) { + int h; + int start; + if (refName.equals("link")) { + h = content.indexOf(" href="); // search for one of the link types + if (h == -1) { + return null; + } else + start = h; + int begin = content.substring(start).indexOf('"'); + int end = content.substring(start + begin + 1).indexOf('"'); + begin += start; + end += begin; + return content.substring(begin + 1, end + 1); + } else if (refName.equals("image")) { + start = content.indexOf("<img src="); + if (start == -1) + return null; + int begin = content.substring(start).indexOf('"'); + int end = content.substring(start + begin + 1).indexOf('"'); + begin += start; + end += begin; + return content.substring(begin + 1, end + 1); + } else + return null; + } + + /** + * Figures out if a link is an off-site link. This recognizes the most + * common protocols by checking how it starts. (clears all white space in + * case the link starts with '\n' or [space] + * + * @author Janne Jalkanen + */ + private boolean isExternalLink(String link) { + link = link.trim(); + return link.startsWith("http:") || link.startsWith("ftp:") + || link.startsWith("https:") || link.startsWith("mailto:") + || link.startsWith("news:") || link.startsWith("file:"); + } + + // modifies path to page/resource so folder structure can be supported + private String modifyPath(String path, String element) { + int start, end; + String mainPath = ""; + if (element.startsWith("#")) { + return path + element; + + } else if (element.startsWith("./")) { + System.out.println("found a match"); + element = element.substring(2); + System.out.println("and element is now " + element); + }// ignore ./ only clutters the code + + int pre = path.lastIndexOf('/'); + if (pre == -1)// we are in root dir + { + return element; + } else { + mainPath = path.substring(0, pre); + }// main path to page + + if (element.startsWith("/")) + return element.substring(1); // base path, start with WEB-root + + if (element.indexOf('/') != -1) { + if (element.indexOf("../") != -1)// need to go up a few levels + { + while (element.indexOf("../") != -1) // do we need to go more + { + if (mainPath.equals("")) + return DEFAULT_PAGE; // trying to go too far up + else { + start = element.lastIndexOf("../");// go one level up + end = mainPath.lastIndexOf("/");// find last level + if (end == -1) { + end = 0; + } // we have reached last level + element = element.substring(0, start) + + element + .substring(start + 3, element.length()); + mainPath = mainPath.substring(0, end); + + }// else + + }// while + + }// if ../ + + } + + return mainPath + '/' + element; + } + + public void doView(JBossRenderRequest request, JBossRenderResponse response) + throws IOException { + response.setContentType("text/html"); + + try { + String portalName = forgeHelper.getPortalName(request); + + // Getting the selected project + String projectId = projectsHelper.getSelectedProjectId(request, + true); + + // Getting the name of the requested page + String pagePath = forgeHelper.getRequestParameter(request, "page"); + if (pagePath == null) + pagePath = DEFAULT_PAGE; + else + pagePath = ForgeHelper.replace(pagePath, + ForgeHelper.FREEZONE_SEPARATOR, "/"); + + // If the tried to break into other files, denying access to him. + if (pagePath.indexOf("..") != -1) + throw new Exception(); + + // Reading the file. + String pageContent = cm.read(portalName + "/" + + ProjectsHelper.MEMBERS_DIR + "/" + projectId + "/" + + ProjectsHelper.FREEZONE_DIR + "/" + pagePath); + if (pageContent == null) + throw new Exception(); + + String nextRef; + String nextRef2; + String fileAccessPrepend = "/file-access/" + portalName + "/" + + ProjectsHelper.MEMBERS_DIR + "/" + projectId + "/" + + ProjectsHelper.FREEZONE_DIR + "/"; + while (pageContent.indexOf("HREF=") != -1) { + pageContent = ForgeHelper + .replace(pageContent, "HREF=", "href="); + } + + while (pageContent.indexOf("<IMG SRC=") != -1) { + pageContent = ForgeHelper.replace(pageContent, "<IMG SRC=", + "<img src="); + } + + // Replacing links + while ((nextRef = findNextReference(pageContent, "link")) != null) { + if (!isExternalLink(nextRef)) { + // it would be relative not outside link + nextRef2 = modifyPath(pagePath, nextRef); + if (nextRef2.endsWith(".png")) { + nextRef2 = fileAccessPrepend + nextRef2 + + "\" target=\"_blank\""; + pageContent = ForgeHelper + .replace(pageContent, "href=" + '"' + nextRef + + '"', "*ref=" + '"' + nextRef2); + } if (nextRef2.endsWith(".css")) { + nextRef2 = fileAccessPrepend + nextRef2 + "\""; + pageContent = ForgeHelper + .replace(pageContent, "href=" + '"' + nextRef + + '"', "*ref=" + '"' + nextRef2); + } else + pageContent = ForgeHelper.replace(pageContent, "href=" + + '"' + nextRef + '"', ProjectsHelper + .createFreezonePageLink(portalName, projectId, + nextRef2 + '"')); + } else { + pageContent = ForgeHelper.replace(pageContent, "href=" + + '"' + nextRef, "$" + nextRef + '"'); + } + } + + // Replacing images + while ((nextRef = findNextReference(pageContent, "image")) != null) { + nextRef2 = modifyPath(pagePath, nextRef); + pageContent = ForgeHelper.replace(pageContent, "<img src=" + + '"' + nextRef + '"', "*img src=" + '"' + fileAccessPrepend + + nextRef2 + '"'); + } + + // fix back internal links + while (pageContent.indexOf("*ref=") != -1) + pageContent = ForgeHelper.replace(pageContent, "*ref=", + " href="); + + while (pageContent.indexOf(" /portal/index.html?ctrl:id") != -1) + pageContent = ForgeHelper.replace(pageContent, + " /portal/index.html?ctrl:id", " href=" + '"' + + "/portal/index.html?ctrl:id"); + + // fix back external links + + while (pageContent.indexOf("$http:") != -1 + || pageContent.indexOf("$ftp:") != -1 + || pageContent.indexOf("$https:") != -1 + || pageContent.indexOf("$file:") != -1 + || pageContent.indexOf("$mailto:") != -1 + || pageContent.indexOf("$news:") != -1) { + pageContent = ForgeHelper.replace(pageContent, "$", + " href=" + '"'); + } + // fix back image links + while (pageContent.indexOf("*img src=") != -1) { + pageContent = ForgeHelper.replace(pageContent, "*img src=", + "<img src="); + } + + response.getWriter().write(pageContent); + } catch (Exception e) { + e.printStackTrace(); + response.getWriter().write( + "The page you requested cannot be accessed "); + } + } } |