Author: szimano Date: 2006-03-04 09:43:15 -0500 (Sat, 04 Mar 2006) New Revision: 2737 Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ATOMPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachmentListPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RDFPlugin.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java Log: languages in filter and feeds JBWIKI-7 Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2006-03-04 11:44:51 UTC (rev 2736) +++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2006-03-04 14:43:15 UTC (rev 2737) @@ -492,14 +492,24 @@ rReq.setAttribute("friendlyLink", hostURL + "/wiki/" - + ((!langCode.equals(wikiEngine.defaultLangugeCode)) ? langCode.toLowerCase() + + ((!langCode.equals(wikiEngine.defaultLangugeCode)) ? langCode + .toLowerCase() + "/" : "") + pageToShow.getName()); - rReq.setAttribute("rssLink", hostURL + "/wiki/rss/" - + pageToShow.getName()); - rReq.setAttribute("rdfLink", hostURL + "/wiki/rdf/" - + pageToShow.getName()); - rReq.setAttribute("atomLink", hostURL + "/wiki/atom/" - + pageToShow.getName()); + rReq.setAttribute("rssLink", hostURL + + "/wiki/" + + ((!langCode.equals(wikiEngine.defaultLangugeCode)) ? langCode + .toLowerCase() + + "/" : "") + "rss/" + pageToShow.getName()); + rReq.setAttribute("rdfLink", hostURL + + "/wiki/" + + ((!langCode.equals(wikiEngine.defaultLangugeCode)) ? langCode + .toLowerCase() + + "/" : "") + "rdf/" + pageToShow.getName()); + rReq.setAttribute("atomLink", hostURL + + "/wiki/" + + ((!langCode.equals(wikiEngine.defaultLangugeCode)) ? langCode + .toLowerCase() + + "/" : "") + "atom/" + pageToShow.getName()); rRes.setTitle("Wiki"); if (javax.portlet.WindowState.NORMAL.equals(rReq.getWindowState()) Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2006-03-04 11:44:51 UTC (rev 2736) +++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2006-03-04 14:43:15 UTC (rev 2737) @@ -184,6 +184,26 @@ return; } + // check if user is browsing different then default language + if (wikiEngine.getUsedLanguageCodes().containsKey(tokens[0].toUpperCase())) { + langCode = tokens[0].toUpperCase(); + // redo tokens but without language + if (requestURI.startsWith(tokens[0]+ "/")) { + requestURI = requestURI.substring((tokens[0] + "/").length()); + } + else { + requestURI = requestURI.substring((tokens[0]).length()); + } + + tokens = requestURI.split("[/]"); + + if ((tokens.length == 1) && (tokens[0].equals(""))) { + // show Main page - as there is no place to go specified :) + httpResponse.sendRedirect(hostURL + wikiHome + "&language=" + langCode); + return; + } + } + // check if all tokens are UpperCase (meanins they are all wiki // pages) boolean isAllUpperCase = true; @@ -279,29 +299,12 @@ httpResponse.getWriter().flush(); } else { - // show language - - langCode = tokens[0].toUpperCase(); - - log.info("Lang code: "+langCode); - - String pageName = ""; - - for (int i = 1; i < tokens.length; i++) { - pageName += "/" + tokens[i]; - } - - if (Character.isUpperCase(tokens[tokens.length - 1].charAt(0))) { - httpResponse.sendRedirect(hostURL + wikiHome + "&page=" - + pageName.substring(1) - + ((version != -1) ? "&version=" + version : "") - + "&language="+langCode); - } else { - PrintWriter out = httpResponse.getWriter(); - httpResponse.setContentType("text/html"); - out - .println("<html><body><h3>ERROR</h3><br />\nPage name must start with upper case letter.</body></html>"); - } + // show error response + httpResponse.setContentType("text/html"); + httpResponse + .getWriter() + .println( + "<html><body><h3>ERROR</h3><br />\nThere is no such wikiType: "+wikiTypeName+"</body></html>"); } } else { httpResponse.setContentType("text/html"); Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ATOMPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ATOMPlugin.java 2006-03-04 11:44:51 UTC (rev 2736) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ATOMPlugin.java 2006-03-04 14:43:15 UTC (rev 2737) @@ -65,12 +65,21 @@ atomFeed.append("<link rel=\"alternate\" type=\"text/xml\" href=\"") .append((String) wikiSession.getAttribute("hostURL")).append( - "/wiki/atom/").append(wikiPage.getName()).append( + "/wiki/").append( + wikiPage.getLangCode().equals( + wikiEngine.defaultLangugeCode) ? "" : wikiPage + .getLangCode().toLowerCase() + + "/").append("atom/").append(wikiPage.getName()).append( "\" />"); atomFeed.append("<link href=\"").append( (String) wikiSession.getAttribute("hostURL")).append("/wiki/") - .append(wikiPage.getName()).append("\" />\n"); + .append( + wikiPage.getLangCode().equals( + wikiEngine.defaultLangugeCode) ? "" : wikiPage + .getLangCode().toLowerCase() + + "/").append(wikiPage.getName()).append( + "\" />\n"); atomFeed.append("<tagline>").append(wikiPage.getName()).append( "</tagline>\n"); @@ -104,7 +113,7 @@ (String) wikiSession.getAttribute("hostURL") + getProperty("wikiHome").replaceAll("&", "&") + "&page=" + wikiPage.getName() - + "&version=" + i, content, wikiPage + + "&version=" + i + "&language=" + wikiPage.getLangCode(), content, wikiPage .getEditDate(), (String) wikiSession .getAttribute("hostURL")); } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachmentListPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachmentListPlugin.java 2006-03-04 11:44:51 UTC (rev 2736) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/AttachmentListPlugin.java 2006-03-04 14:43:15 UTC (rev 2737) @@ -34,7 +34,13 @@ @Override public WikiPage process(WikiPage wikiPage, WikiSession wikiSession) { - host = (String) wikiSession.getAttribute("hostURL") + "/wiki/"; + host = (String) wikiSession.getAttribute("hostURL") + + "/wiki/" + + (!wikiPage.getLangCode().equals(wikiEngine.defaultLangugeCode) ? wikiPage + .getLangCode().toLowerCase() + + "/" + : ""); + String fileEditURL = (String) wikiSession.getAttribute("actionURL") + "&type=fileInfo&page=" + wikiPage.getName(); Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2006-03-04 11:44:51 UTC (rev 2736) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2006-03-04 14:43:15 UTC (rev 2737) @@ -68,7 +68,7 @@ public class HTMLTranslatorParts extends WikiPlugin { private Logger log; - + /* URL components, later to be configurable */ private String portalHome = ""; @@ -81,7 +81,7 @@ // private String actionType = "&ctrl:type="; private String page = "&page="; - + private String language = "&language="; private static String mediaPatterns; @@ -130,7 +130,7 @@ private boolean executePlugins = true; public HTMLTranslatorParts() { - + } /** @@ -155,7 +155,8 @@ * @author Janne Jalkanen * @author Rali Genova */ - public String parseLinks(String page, WikiSession wikiSession, WikiPage wikiPage) throws IOException { + public String parseLinks(String page, WikiSession wikiSession, + WikiPage wikiPage) throws IOException { m_in = new PushbackReader(new StringReader(page), PUSHBACK_BUFFER_SIZE); StringBuffer buf = new StringBuffer(); StringBuffer word = null; @@ -218,7 +219,8 @@ if (camelCase != null) { start = buf.toString().lastIndexOf(camelCase); buf.replace(start, start + camelCase.length(), - handleHyperlinks(camelCase, wikiSession, wikiPage)); + handleHyperlinks(camelCase, wikiSession, + wikiPage)); } // We've ended a word boundary, so time to reset. @@ -364,12 +366,13 @@ case '<': s = m_allowHTML ? "<" : "<"; break; - - //TODO this should be changed somehow to make paes XML compatible (change & to & if it is standalone &) - /*case '&': - s = "&"; - break;*/ - + + // TODO this should be changed somehow to make paes XML compatible + // (change & to & if it is standalone &) + /* + * case '&': s = "&"; break; + */ + case '>': s = m_allowHTML ? ">" : ">"; break; @@ -683,7 +686,8 @@ return "\\"; } - private String handleOpenbracket(WikiSession wikiSession, WikiPage wikiPage) throws IOException { + private String handleOpenbracket(WikiSession wikiSession, WikiPage wikiPage) + throws IOException { StringBuffer sb = new StringBuffer(); int ch; boolean isPlugin = false; @@ -720,7 +724,7 @@ return sb.toString(); } - return handleHyperlinks(sb.toString(), wikiSession,wikiPage); + return handleHyperlinks(sb.toString(), wikiSession, wikiPage); } private String handleOpenbrace() throws IOException { @@ -805,17 +809,17 @@ * @return the HTML link representation of the wiki page/external link * @author Rali Genova */ - private String handleHyperlinks(String link, WikiSession wikiSession, WikiPage wPage) { + private String handleHyperlinks(String link, WikiSession wikiSession, + WikiPage wPage) { String result = ""; String text = ""; String wikiPage = ""; if (isPluginLink(link)) { - //return null; // we do not include plugin links for now - if (executePlugins ) { + // return null; // we do not include plugin links for now + if (executePlugins) { return wikiEngine.executeInsidePlugin(link, wPage, wikiSession); - } - else { + } else { return link; } } @@ -828,9 +832,9 @@ } else // [link] case { if (!isExternalLink(link)) { - text = wikiEngine.getRealName(cleanLink(link), wPage.getLangCode()); - } - else { + text = wikiEngine.getRealName(cleanLink(link), wPage + .getLangCode()); + } else { text = link; } } @@ -841,11 +845,9 @@ result = "<img src=\"" + link + "\" alt=\"" + text + "\" />";// external // image } else - result = "<a href=\"" - + link - + "\" target=\"_blank\">" - + text - + "</a><img src=\""+imagePath+"/"+WikiCommon.wikiButtons+"/out.png\" />"; + result = "<a href=\"" + link + "\" target=\"_blank\">" + text + + "</a><img src=\"" + imagePath + "/" + + WikiCommon.wikiButtons + "/out.png\" />"; } // internal link else { @@ -858,9 +860,9 @@ } else if (isNumber(link))// defines footnote { - result = "<a href=\"" + portalHome + wikiHome + page + pageName + language + wPage.getLangCode() - + "#ref-" + pageName + "-" + link + "\">[" + text - + "]</A>"; + result = "<a href=\"" + portalHome + wikiHome + page + pageName + + language + wPage.getLangCode() + "#ref-" + pageName + + "-" + link + "\">[" + text + "]</A>"; } // check if not an image link as well @@ -871,13 +873,16 @@ } // check for attachments later on else { - wikiPage = wikiEngine.getRealName(cleanLink(link), wPage.getLangCode()); + wikiPage = wikiEngine.getRealName(cleanLink(link), wPage + .getLangCode()); if (wikiEngine.pageExists(wikiPage, wPage.getLangCode())) { result = "<a href=\"" + portalHome + wikiHome + page - + wikiPage + language + wPage.getLangCode() + "\">" + text + "</a>"; + + wikiPage + language + wPage.getLangCode() + "\">" + + text + "</a>"; } else result = "<u>" + text + "</u>" + "<a href=\"" + portalHome - + wikiHome + page + wikiPage + language + wPage.getLangCode() + "\">" + "?" + "</a>"; + + wikiHome + page + wikiPage + language + + wPage.getLangCode() + "\">" + "?" + "</a>"; } } @@ -953,20 +958,23 @@ // for (int i = 0; i < clean.length(); i++) { - if ((clean.charAt(i) != '/')&&!(Character.isLetterOrDigit(clean.charAt(i)) - || clean.charAt(i) == '_' || clean.charAt(i) == '.')) { + if ((clean.charAt(i) != '/') + && !(Character.isLetterOrDigit(clean.charAt(i)) + || clean.charAt(i) == '_' || clean.charAt(i) == '.')) { clean.deleteCharAt(i); --i; // We just shortened this buffer. } } - + // // Capitalise words in subpages // - + for (int i = 0; i < clean.length() - 1; i++) { - if ((clean.charAt(i) == '/')&&(Character.isLowerCase(clean.charAt(i+1)))) { - clean.setCharAt(i+1, Character.toUpperCase(clean.charAt(i+1))); + if ((clean.charAt(i) == '/') + && (Character.isLowerCase(clean.charAt(i + 1)))) { + clean.setCharAt(i + 1, Character.toUpperCase(clean + .charAt(i + 1))); } } @@ -1013,14 +1021,18 @@ /** Tag that gets closed at EOL. */ m_closeTag = null; } - + public WikiPage process(final WikiPage wikiPage, WikiSession wikiSession) { WikiPage newPage = null; portalHome = (String) wikiSession.getAttribute("hostURL") + (String) wikiSession.getAttribute("actionURL"); wikiHome = ""; - imagePath = (String) wikiSession.getAttribute("hostURL") + "/wiki"; + imagePath = (String) wikiSession.getAttribute("hostURL") + + "/wiki" + + (!wikiPage.getLangCode().equals(wikiEngine.defaultLangugeCode) ? "/" + + wikiPage.getLangCode().toLowerCase() + : ""); try { newPage = (WikiPage) wikiPage.clone(); @@ -1029,36 +1041,41 @@ } pageName = newPage.getName(); - String newContent = parseParts(newPage.getContent(), wikiSession, wikiPage); + String newContent = parseParts(newPage.getContent(), wikiSession, + wikiPage); newPage.setPageContent(newContent); return newPage; } - private String parseParts(String pageContent, WikiSession wikiSession, WikiPage wikiPage) { + private String parseParts(String pageContent, WikiSession wikiSession, + WikiPage wikiPage) { String newPageContent = pageContent; try { int lastBegIndx = 0; while ((lastBegIndx = newPageContent.indexOf(pagePartRegexStart, lastBegIndx)) != -1) { - + initTranslator(); - + int endIndx = newPageContent.indexOf(pagePartRegexEnd, lastBegIndx); if (endIndx != -1) { - String pagePart = newPageContent.substring(lastBegIndx + pagePartRegexStart.length(), - endIndx); - String replace = parseLinks(pagePart, wikiSession, wikiPage)/*.replaceAll("&", "&")*/; - + String pagePart = newPageContent.substring(lastBegIndx + + pagePartRegexStart.length(), endIndx); + String replace = parseLinks(pagePart, wikiSession, wikiPage)/* + * .replaceAll("&", + * "&") + */; + newPageContent = newPageContent.substring(0, lastBegIndx) + replace + newPageContent.substring(endIndx + pagePartRegexEnd.length()); - + lastBegIndx += replace.length(); } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RDFPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RDFPlugin.java 2006-03-04 11:44:51 UTC (rev 2736) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RDFPlugin.java 2006-03-04 14:43:15 UTC (rev 2737) @@ -39,7 +39,8 @@ rdfFeed.append("<link>").append(link).append("</link>\n"); rdfFeed.append("<description>").append(description).append( "</description>\n"); - rdfFeed.append("<dc:date>").append(date.toString()).append("</dc:date>\n"); + rdfFeed.append("<dc:date>").append(date.toString()).append( + "</dc:date>\n"); rdfFeed.append("</item>\n"); } @@ -48,40 +49,60 @@ StringBuilder rdfFeed = new StringBuilder( "<!-- name=\"generator\" content=\"JBoss Wiki RDFPlugin\" -->\n"); rdfFeed.append("<rdf:RDF>\n"); - rdfFeed.append("<channel rdf:about=\"").append((String) wikiSession.getAttribute("hostURL") - + "/wiki/" + wikiPage.getName()).append("\">\n"); - rdfFeed.append("<title>JBoss Forge Wiki: "+wikiPage.getName()+"</title>\n"); - rdfFeed.append("<link>" + (String) wikiSession.getAttribute("hostURL") - + "/wiki/" + wikiPage.getName() + "</link>\n"); + rdfFeed.append("<channel rdf:about=\"").append( + (String) wikiSession.getAttribute("hostURL")).append("/wiki/") + .append( + wikiPage.getLangCode().equals( + wikiEngine.defaultLangugeCode) ? "" : wikiPage + .getLangCode().toLowerCase() + + "/").append(wikiPage.getName()).append( + "\">\n"); + rdfFeed.append("<title>JBoss Forge Wiki: " + wikiPage.getName() + + "</title>\n"); + rdfFeed.append("<link>" + (String) wikiSession.getAttribute("hostURL")) + .append("/wiki/").append( + wikiPage.getLangCode().equals( + wikiEngine.defaultLangugeCode) ? "" : wikiPage + .getLangCode().toLowerCase() + + "/").append(wikiPage.getName()).append( + "</link>\n"); rdfFeed.append("<description>JBoss Wiki: " + wikiPage.getName() + "</description>\n"); rdfFeed.append("<dc:language>en</dc:language>\n"); rdfFeed.append("<items>\n<rdf:Seq>\n"); - + StringBuilder items = new StringBuilder(); - + for (int i = wikiPage.getLastVersion(); i > 0; i--) { String content; - + if (i > 1) { - content = differenceEngine.makeDiff(wikiPage.getPageAtVersion(true, i).getPageContent(), wikiPage.getPageAtVersion(true, i-1).getPageContent()).replaceAll("&", "&").replaceAll("<","<").replaceAll(">",">").replaceAll("\n","<br />\n"); - } - else { + content = differenceEngine + .makeDiff( + wikiPage.getPageAtVersion(true, i) + .getPageContent(), + wikiPage.getPageAtVersion(true, i - 1) + .getPageContent()).replaceAll("&", + "&").replaceAll("<", "<").replaceAll( + ">", ">").replaceAll("\n", "<br />\n"); + } else { content = "This is first version of the page so it doesn't have diff yet"; } - + String url = (String) wikiSession.getAttribute("hostURL") - + getProperty("wikiHome").replaceAll("&", "&") - + "&page=" + wikiPage.getName() - + "&version=" + i; - - addItem(items, wikiPage.getName() + " rev: " + i, - url, content, wikiPage.getEditDate()); - - rdfFeed.append("<rdf:li rdf:resource=\"").append(url).append("\" />\n"); + + getProperty("wikiHome").replaceAll("&", "&") + + "&page=" + wikiPage.getName() + "&version=" + i + + "&language=" + wikiPage.getLangCode(); + + addItem(items, wikiPage.getName() + " rev: " + i, url, content, + wikiPage.getEditDate()); + + rdfFeed.append("<rdf:li rdf:resource=\"").append(url).append( + "\" />\n"); } - rdfFeed.append("</rdf:Seq>\n</items>\n</channel>\n").append(items).append("</rdf:RDF>\n"); + rdfFeed.append("</rdf:Seq>\n</items>\n</channel>\n").append(items) + .append("</rdf:RDF>\n"); wikiPage.setPageContent(rdfFeed.toString()); Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java 2006-03-04 11:44:51 UTC (rev 2736) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java 2006-03-04 14:43:15 UTC (rev 2737) @@ -46,28 +46,42 @@ "<!-- name=\"generator\" content=\"JBoss Wiki RSSPlugin\" -->\n"); rssFeed.append("<rss version=\"0.92\">\n"); rssFeed.append("<channel>\n"); - rssFeed.append("<title>JBoss Forge Wiki: "+wikiPage.getName()+"</title>\n"); - rssFeed.append("<link>" + (String) wikiSession.getAttribute("hostURL") - + "/wiki/" + wikiPage.getName() + "</link>\n"); + rssFeed.append("<title>JBoss Forge Wiki: " + wikiPage.getName() + + "</title>\n"); + rssFeed.append("<link>").append( + (String) wikiSession.getAttribute("hostURL")).append("/wiki/") + .append( + wikiPage.getLangCode().equals( + wikiEngine.defaultLangugeCode) ? "" : wikiPage + .getLangCode().toLowerCase() + + "/").append(wikiPage.getName()).append( + "</link>\n"); rssFeed.append("<description>JBoss Wiki: " + wikiPage.getName() + "</description>\n"); rssFeed.append("<language>en</language>\n"); for (int i = wikiPage.getLastVersion(); i > 0; i--) { String content; - + if (i > 1) { - content = differenceEngine.makeDiff(wikiPage.getPageAtVersion(true, i).getPageContent(), wikiPage.getPageAtVersion(true, i-1).getPageContent()).replaceAll("&", "&").replaceAll("<","<").replaceAll(">",">").replaceAll("\n","<br />\n"); - } - else { + content = differenceEngine + .makeDiff( + wikiPage.getPageAtVersion(true, i) + .getPageContent(), + wikiPage.getPageAtVersion(true, i - 1) + .getPageContent()).replaceAll("&", + "&").replaceAll("<", "<").replaceAll( + ">", ">").replaceAll("\n", "<br />\n"); + } else { content = "This is first version of the page so it doesn't have diff yet"; } - + addItem(rssFeed, wikiPage.getName() + " rev: " + i, (String) wikiSession.getAttribute("hostURL") + getProperty("wikiHome").replaceAll("&", "&") + "&page=" + wikiPage.getName() - + "&version=" + i, content); + + "&version=" + i + "&language=" + + wikiPage.getLangCode(), content); } rssFeed.append("</channel>\n</rss>\n"); |