From: <jbo...@li...> - 2005-08-16 20:48:03
|
Author: ral...@jb... Date: 2005-08-16 16:47:56 -0400 (Tue, 16 Aug 2005) New Revision: 871 Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java Log: corrected types of links Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java 2005-08-16 17:24:26 UTC (rev 870) +++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java 2005-08-16 20:47:56 UTC (rev 871) @@ -1,7 +1,7 @@ package org.jboss.wiki.plugins; /** - * @author rali + * @author <a href="mailto:ral...@jb...">Rali Genova </a> * * */ @@ -41,6 +41,7 @@ public String[] notextlinks; private String[] mediaFormats = { "*.png", "*.jpeg", "*.gif" }; + private boolean m_allowHTML = false; private boolean m_isbold = false; @@ -68,7 +69,7 @@ private PushbackReader m_in; public HTMLTranslator() { - + } /** @@ -119,58 +120,48 @@ // Check if any lists need closing down. // - if( newLine && ch != '*' && ch != ' ' && m_listlevel > 0 ) - { + if (newLine && ch != '*' && ch != ' ' && m_listlevel > 0) { buf.append("</LI>\n"); - for( ; m_listlevel > 0; m_listlevel-- ) - { + for (; m_listlevel > 0; m_listlevel--) { buf.append("</UL>\n"); } } - if( newLine && ch != '#' && ch != ' ' && m_numlistlevel > 0 ) - { + if (newLine && ch != '#' && ch != ' ' && m_numlistlevel > 0) { buf.append("</LI>\n"); - for( ; m_numlistlevel > 0; m_numlistlevel-- ) - { + for (; m_numlistlevel > 0; m_numlistlevel--) { buf.append("</OL>\n"); } } - if( newLine && ch != '|' && m_istable ) - { + if (newLine && ch != '|' && m_istable) { buf.append("</TABLE>\n"); m_istable = false; m_closeTag = null; } - switch (ch) { case '\r': // DOS linefeeds we forget s = null; break; - case '\n': + case '\n': // // Close things like headings, etc. // - if( m_closeTag != null ) - { - buf.append( m_closeTag ); + if (m_closeTag != null) { + buf.append(m_closeTag); m_closeTag = null; } m_isdefinition = false; - if( newLine ) - { + if (newLine) { // Paragraph change. buf.append("<P>\n"); - } - else - { + } else { buf.append("\n"); newLine = true; } @@ -180,108 +171,91 @@ s = handleBackslash(); break; - case '_': + case '_': s = handleUnderscore(); break; - - case '\'': + + case '\'': s = handleApostrophe(); break; - case '{': + case '{': s = handleOpenbrace(); break; - case '}': + case '}': s = handleClosebrace(); break; - case '-': + case '-': s = handleDash(); break; - case '!': - if( newLine ) - { + case '!': + if (newLine) { s = handleHeading(); - } - else - { + } else { s = "!"; } break; - case ';': - if( newLine ) - { + case ';': + if (newLine) { s = handleDefinitionList(); - } - else - { + } else { s = ";"; } break; - case ':': - if( m_isdefinition ) - { + case ':': + if (m_isdefinition) { s = "</DT><DD>"; m_isdefinition = false; - } - else - { + } else { s = ":"; } break; - case '[': + case '[': s = handleOpenbracket(); break; - case '*': - if( newLine ) - { + case '*': + if (newLine) { s = handleUnorderedList(); - } - else - { + } else { s = "*"; } break; - case '#': - if( newLine ) - { + case '#': + if (newLine) { s = handleOrderedList(); - } - else - { + } else { s = "#"; } break; - case '|': - s = handleBar( newLine ); + case '|': + s = handleBar(newLine); break; - case '<': + case '<': s = m_allowHTML ? "<" : "<"; break; - case '>': + case '>': s = m_allowHTML ? ">" : ">"; break; - case '\"': + case '\"': s = m_allowHTML ? "\"" : """; break; - /* - case '&': - s = "&"; - break; - */ - case '~': + /* + * case '&': s = "&"; break; + */ + case '~': s = handleTilde(); break; case -1: @@ -295,14 +269,14 @@ } if (s != null) { buf.append(s); - + newLine = false; } } translatedContent = buf.toString(); - // translatedContent = translatedContent.replace("\n", "<BR>\n"); - // System.out.println("final string : "+ translatedContent); + // translatedContent = translatedContent.replace("\n", "<BR>\n"); + // System.out.println("final string : "+ translatedContent); return translatedContent; } @@ -316,25 +290,22 @@ return patterns; } - + /** - * Generic escape of next character or entity. + * Generic escape of next character or entity. */ - private String handleTilde() - throws IOException - { + private String handleTilde() throws IOException { int ch = nextToken(); - if( ch == '|' ) + if (ch == '|') return "|"; - if( Character.isUpperCase( (char) ch ) ) - { - return String.valueOf( (char)ch ); + if (Character.isUpperCase((char) ch)) { + return String.valueOf((char) ch); } // No escape. - pushBack( ch ); + pushBack(ch); return "~"; } @@ -484,54 +455,43 @@ return count; } - - private String handleBar( boolean newLine ) - throws IOException -{ - StringBuffer sb = new StringBuffer(); - if( !m_istable && !newLine ) - { - return "|"; - } + private String handleBar(boolean newLine) throws IOException { + StringBuffer sb = new StringBuffer(); - if( newLine ) - { - if( !m_istable ) - { - sb.append("<TABLE CLASS=\"wikitable\" BORDER=\"1\">\n"); - m_istable = true; + if (!m_istable && !newLine) { + return "|"; } - sb.append("<TR>"); - m_closeTag = "</TD></TR>"; - } - - int ch = nextToken(); + if (newLine) { + if (!m_istable) { + sb.append("<TABLE CLASS=\"wikitable\" BORDER=\"1\">\n"); + m_istable = true; + } - if( ch == '|' ) - { - if( !newLine ) - { - sb.append("</TH>"); + sb.append("<TR>"); + m_closeTag = "</TD></TR>"; } - sb.append("<TH>"); - m_closeTag = "</TH></TR>"; - } - else - { - if( !newLine ) - { - sb.append("</TD>"); - } - sb.append("<TD>"); - pushBack( ch ); - } - return sb.toString(); -} + int ch = nextToken(); + if (ch == '|') { + if (!newLine) { + sb.append("</TH>"); + } + sb.append("<TH>"); + m_closeTag = "</TH></TR>"; + } else { + if (!newLine) { + sb.append("</TD>"); + } + sb.append("<TD>"); + pushBack(ch); + } + return sb.toString(); + } + private String handleDefinitionList() throws IOException { if (!m_isdefinition) { m_isdefinition = true; @@ -665,37 +625,57 @@ * @param string * @return */ - private String handleHyperlinks(String link) { +private String handleHyperlinks(String link) { String result = ""; + String pageName = ""; int border = link.indexOf('|'); if (border != -1) { if (isExternalLink(link.substring(border + 1)))//case - // [...|externallink] + // [...|externallink] - opens in new window { - result = "<a href=\"" + link.substring(border + 1) + "\">" + result = "<a href=\"" + link.substring(border + 1) + "\"target=\"_blank\">" + link.substring(0, border) + "</a>"; - } else //case [...|wikipagelink] + } //case [...|wikipagelink] + else { + pageName = cleanLink(link.substring(border + 1)); + if(wikiEngine.pageExists(pageName)) + { result = "<a href=\"" + portalHome + wikiHome + actionType + "action" + page - + cleanLink(link.substring(border + 1)) + "\">" + + pageName + "\">" + link.substring(0, border) + "</a>"; + } + else + result = "<u>"+link.substring(0, border)+"</u>"+"<a href=\"" + + portalHome + wikiHome + actionType + + "action" + page + + pageName + "\">" + + "?" + "</a>"; } } else //[...] case { + if (isExternalLink(link)) { - result = "<a href=\"" + link + "\">" + link + "</a>"; + result = "<a href=\"" + link + "\"target=\"_blank\">" + link + "</a>"; } else { - result = "<a href=\"" + portalHome + wikiHome + actionType + pageName = cleanLink(link); + System.out.println("********pageName is "+pageName); + if(wikiEngine.pageExists(pageName)) + { result = "<a href=\"" + portalHome + wikiHome + actionType + "action" + page + cleanLink(link) + "\">" + link + "</a>"; + } + else + result = "<u>"+pageName+"</u>"+"<a href=\"" + portalHome + wikiHome + actionType + + "action" + page + pageName + "\">" + "?" + + "</a>"; } } return result; } - /** * Figures out if a link is an off-site link. This recognizes the most * common protocols by checking how it starts. @@ -706,23 +686,6 @@ || link.startsWith("news:") || link.startsWith("file:"); } - public String prepareText(String text) { - int index; - - { - index = text.indexOf('$', 0); - } - System.out.println("index of $ " + index); - - if (index != -1) - return text.substring(0, index - 1) + '\\' + "$" - + prepareText(text.substring(index + 1)); - else { - - return text; - } - } - private int nextToken() throws IOException { return m_in.read(); } |