[jboss-svn-commits] JBL Code SVN: r8074 - in labs/jbosslabs/trunk/portal-extensions/jbosswiki: forge-wiki forge-wiki/src/java/org/jboss/wiki forge-wiki/src/java/org/jboss/wiki/attributesextractor forge-wiki/src/java/org/jboss/wiki/autorization forge-wiki/src/java/org/jboss/wiki/fileaccess forge-wiki/src/java/org/jboss/wiki/helper forge-wiki/src/java/org/jboss/wiki/portlet forge-wiki/src/java/org/jboss/wiki/ui forge-wiki/src/web forge-wiki/src/web/WEB-INF forge-wiki/src/web/views wiki-common/src/etc wiki-common/src/etc/images wiki-common/src/etc/org/jboss/wiki wiki-common/src/java/org/jboss/wiki wiki-common/src/java/org/jboss/wiki/plugins
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Dec 5 14:51:55 EST 2006
Author: szimano
Date: 2006-12-05 14:51:38 -0500 (Tue, 05 Dec 2006)
New Revision: 8074
Added:
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortletOld.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/attributesextractor/
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/attributesextractor/AttributesExtractor.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/attributesextractor/PortletAttributesExctractor.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/autorization/
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/autorization/AuthorizationListener.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/helper/
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/helper/WikiHelper.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/PortletWikiSession.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/WikiPortletMyFaces.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/ui/
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/ui/WikiView.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/Messages.properties
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/faces-config.xml
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/wiki.taglib.xml
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/index.xhtml
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_template.xhtml
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_view.xhtml
labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDirWikiPageDictionary.java
Removed:
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/PortletWikiSession.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java
Modified:
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/project.properties
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/project.xml
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jboss-portlet.xml
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/portlet.xml
labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/web.xml
labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties
labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/images/wikiStyle.css
labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties
labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDSCommons.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileMediaDataSource.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/SubpagesListPlugin.java
labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TrailPlugin.java
Log:
jsf controller reimplementation sceleton JBWIKI-96
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/project.properties 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/project.properties 2006-12-05 19:51:38 UTC (rev 8074)
@@ -3,4 +3,4 @@
maven.war.src=${basedir}/src/web
maven.jar.includes=**/WikiEngine.class
maven.ejb.includes=**/WikiService*
-maven.ear.final.name=wiki.ear
\ No newline at end of file
+maven.ear.final.name=wiki.ear
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/project.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/project.xml 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/project.xml 2006-12-05 19:51:38 UTC (rev 8074)
@@ -134,5 +134,41 @@
<version>1.0</version>
<jar>portal-portlet-lib.jar</jar>
</dependency>
+
+ <dependency>
+ <groupId>myfaces</groupId>
+ <artifactId>myfaces-api</artifactId>
+ <version>1.1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>myfaces</groupId>
+ <artifactId>myfaces-impl</artifactId>
+ <version>1.1.4</version>
+ </dependency>
+
+ <dependency>
+ <groupId>facelets</groupId>
+ <artifactId>jsf-facelets</artifactId>
+ <version>1.0</version>
+ <jar>jsf-facelets.jar</jar>
+ </dependency>
+ <dependency>
+ <groupId>facelets</groupId>
+ <artifactId>el-api</artifactId>
+ <version>1.0</version>
+ <jar>el-api.jar</jar>
+ </dependency>
+ <dependency>
+ <groupId>facelets</groupId>
+ <artifactId>el-ri</artifactId>
+ <version>1.0</version>
+ <jar>el-ri.jar</jar>
+ </dependency>
+ <dependency>
+ <groupId>facelets</groupId>
+ <artifactId>jsf-facelets-portlet</artifactId>
+ <version>1.0</version>
+ <jar>jsf-facelets-portlet.jar</jar>
+ </dependency>
</dependencies>
</project>
Deleted: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/PortletWikiSession.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/PortletWikiSession.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/PortletWikiSession.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -1,51 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.wiki;
-
-import javax.portlet.PortletSession;
-
-public class PortletWikiSession implements WikiSession {
-
- PortletSession portletSession;
-
- public Object getAttribute(String attributeName) {
- return portletSession.getAttribute(attributeName);
- }
-
- public void setAttribute(String attributeName, Object attribute) {
- portletSession.setAttribute(attributeName, attribute);
- }
-
- public void removeAttribute(String attributeName) {
- portletSession.removeAttribute(attributeName);
- }
-
- public PortletWikiSession(PortletSession portletSession) {
- this.portletSession = portletSession;
- }
-
- public String getId() {
- return portletSession.getId();
- }
-
-}
Deleted: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -1,638 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.wiki;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.portlet.ActionRequest;
-import javax.portlet.ActionResponse;
-import javax.portlet.GenericPortlet;
-import javax.portlet.PortletConfig;
-import javax.portlet.PortletException;
-import javax.portlet.PortletSession;
-import javax.portlet.RenderRequest;
-import javax.portlet.RenderResponse;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.fileupload.PortletDiskFileUpload;
-import org.jboss.logging.Logger;
-import org.jboss.wiki.exceptions.EditSessionExpired;
-import org.jboss.wiki.exceptions.EditingNotAllowedException;
-import org.jboss.wiki.exceptions.WikiManagementNotFoundException;
-import org.jboss.wiki.exceptions.WikiSaveException;
-import org.jboss.wiki.management.WikiServiceManagement;
-
-/**
- * The WikiPortlet.
- * <p>
- *
- * @author <a href="mailto:dsicore at jboss.org">Damon Sicore</a>
- * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
- * @version $Id$
- */
-
-public class WikiPortlet extends GenericPortlet {
-
- final static String jspPath = "/WEB-INF/jsp/";
-
- private static final String WINDOWS_FILE_NAME = "\\w:\\\\.+";
-
- private String defaultPage = "Main";
-
- private WikiEngine wikiEngine;
-
- private Logger log;
-
- public void init() {
- log = Logger.getLogger(WikiPortlet.class);
-
- WikiCommon wikiCommon = new WikiCommon();
-
- try {
- WikiServiceManagement wikiServiceMenagement = wikiCommon
- .getWikiManagement();
- wikiEngine = wikiServiceMenagement.getWikiEngine();
- } catch (WikiManagementNotFoundException e1) {
- log.error("Couldn't find WikiManagement", e1);
- wikiEngine = new WikiEngine();
- }
- }
-
- private Map<String, String> convertParameters(ActionRequest rReq) {
- Map<String, String> convertedParameters = new HashMap<String, String>();
-
- Map paramMap = rReq.getParameterMap();
-
- for (Object key : paramMap.keySet()) {
- try {
- if (rReq.getParameter("editAction") != null) {
- convertedParameters.put((String) key, new String(rReq
- .getParameter((String) key).getBytes("ISO-8859-1"),
- "UTF-8"));
- } else {
- convertedParameters.put((String) key, rReq
- .getParameter((String) key));
- }
- } catch (UnsupportedEncodingException e) {
- log.error(e);
- convertedParameters.put((String) key, (String) paramMap
- .get(key));
- }
- }
-
- return convertedParameters;
- }
-
- public void processAction(ActionRequest rReq, ActionResponse rResp) {
-
- Map<String, String> convertedParameters = convertParameters(rReq);
-
- Credentials credentials = wikiEngine.getCredentialsInstance(rReq);
-
- // wikiContext is null - to get refernece to actual page
-
- WikiContext wikiContext = null;
-
- if (PortletDiskFileUpload.isMultipartContent(rReq)) {
- PortletDiskFileUpload dfu = new PortletDiskFileUpload();
-
- // maximum allowed file upload size (10 MB)
- dfu.setSizeMax(10 * 1000 * 1000);
-
- // maximum size in memory (vs disk) (100 KB)
- dfu.setSizeThreshold(100 * 1000);
-
- try {
- // get the FileItems
- List fileItems = dfu.parseRequest(rReq);
- Iterator iter = fileItems.iterator();
- while (iter.hasNext()) {
- FileItem item = (FileItem) iter.next();
- if (item.isFormField()) {
- // pass along to render request
- String fieldName = item.getFieldName();
- String value = item.getString();
- rResp.setRenderParameter(fieldName, value);
- } else {
- // write the uploaded file to a new location
- String fieldName = item.getFieldName();
- String fileName = item.getName();
-
- // change windows names (remove c:\bull\shit\)
- if (fileName.matches(WINDOWS_FILE_NAME)) {
- fileName = fileName.substring(fileName
- .lastIndexOf('\\') + 1, fileName.length());
- }
-
- if (fileName.length() == 0) {
- throw new FileUploadException("Wrong file name: "
- + item.getName());
- }
-
- // delete spaces
-
- while (fileName.indexOf(' ') != -1) {
- Character chr = fileName.charAt(fileName
- .indexOf(' ') + 1);
-
- fileName = fileName.substring(0, fileName
- .indexOf(' '))
- + (char) Character.toUpperCase(chr)
- + fileName.substring(
- fileName.indexOf(' ') + 2, fileName
- .length());
- }
-
- String tempDir = System.getProperty("java.io.tmpdir");
- String serverFileName = fieldName + fileName
- + "-portlet.tmp";
-
- File serverFile = new File(tempDir, serverFileName);
-
- item.write(serverFile);
-
- log.info("serverFileName : " + tempDir + "/"
- + serverFileName + " filename: " + fileName);
-
- WikiPage pageWithAtt = wikiEngine.getByName(
- convertedParameters.get("page"), null,
- (String) convertedParameters.get("language"));
-
- FileInputStream fis = new FileInputStream(serverFile);
-
- pageWithAtt.addAttachement(fis, fileName, credentials
- .getName());
-
- // at the end delete the temp file
- serverFile.delete();
- }
- }
- } catch (FileUploadException fue) {
- String msg = "File Upload Exception: " + fue.getMessage();
- rResp.setRenderParameter("error", msg);
- getPortletContext().log(msg, fue);
- } catch (Exception e) {
- String msg = "Exception: " + e.getMessage();
- rResp.setRenderParameter("error", msg);
- getPortletContext().log(msg, e);
- }
- }
-
- if (convertedParameters.get("page") != null
- && (convertedParameters.get("page").length() > 0)) {
- StringBuffer sBuf = new StringBuffer(convertedParameters
- .get("page"));
-
- if (Character.isLowerCase(sBuf.charAt(0))) {
- // change first letter to upper if it isn't
- sBuf.setCharAt(0, Character.toUpperCase(sBuf.charAt(0)));
- }
-
- //
- // Capitalise words in subpages
- //
-
- for (int i = 0; i < sBuf.length() - 1; i++) {
- if ((sBuf.charAt(i) == '/')
- && (Character.isLowerCase(sBuf.charAt(i + 1)))) {
- sBuf.setCharAt(i + 1, Character.toUpperCase(sBuf
- .charAt(i + 1)));
- }
- }
-
- rResp.setRenderParameter("page", sBuf.toString());
-
- }
-
- if (convertedParameters.get("searchQuery") != null) {
- Map<String, Integer> pages = wikiEngine.findPages(
- convertedParameters.get("searchQuery"),
- (String) convertedParameters.get("language"));
-
- rReq.getPortletSession().setAttribute("findResult", pages);
-
- // show the results
- rResp.setRenderParameter("page", "FindResult");
- }
-
- int i = 1;
-
- while (convertedParameters.get("var" + i) != null) {
- rReq.getPortletSession().setAttribute("var" + i,
- convertedParameters.get("var" + i));
- i++;
- }
-
- if (convertedParameters.get("action") != null) {
- rResp.setRenderParameter("action", convertedParameters
- .get("action"));
- }
-
- if (convertedParameters.get("type") != null) {
- rResp.setRenderParameter("type", convertedParameters.get("type"));
- }
-
- if (convertedParameters.get("version") != null) {
- log.info("[process action]Getting page "
- + convertedParameters.get("page") + " at version "
- + convertedParameters.get("version"));
- rResp.setRenderParameter("version", convertedParameters
- .get("version"));
- }
-
- if (convertedParameters.get("language") != null) {
- rResp.setRenderParameter("language", (String) convertedParameters
- .get("language"));
- } else {
- rResp.setRenderParameter("language", wikiEngine.defaultLangugeCode);
- }
-
- if (convertedParameters.get("editAction") != null) {
- log.debug("EDITING PAGE");
-
- String editedPageName = convertedParameters.get("editedPage");
-
- // unlock page
- WikiPage edPage = wikiEngine.getByName(editedPageName, wikiContext,
- (String) convertedParameters.get("language"));
-
- if (edPage != null) { // it may be null if the page isn't saved
- // yet
- edPage.unlock(credentials, Integer
- .valueOf((String) convertedParameters
- .get("editSessionId")));
- }
-
- // saving, previewing or canceling
-
- if (convertedParameters.get("editAction").equals("Save")) {
-
- // save the page
-
- if (edPage == null) {
- edPage = new WikiPage(editedPageName, credentials, "", 0,
- 0, new Date(), wikiEngine, true, true, null, null,
- 0, (String) convertedParameters.get("language"));
- }
-
- // set new content
- edPage.setContent(convertedParameters.get("wikiContent"));
-
- // set author name for new version
- edPage.setLastAuthor(credentials);
-
- // increase page version
- edPage.setLastVersion(edPage.getLastVersion() + 1);
-
- // set new data
- edPage.setEditDate(new Date());
-
- // save the page
- try {
- edPage.save(credentials, Integer
- .valueOf((String) convertedParameters
- .get("editSessionId")),
- (String) convertedParameters.get("language"),
- new PortletWikiSession(rReq.getPortletSession()));
- } catch (NumberFormatException e) {
- log.error(e);
- } catch (EditSessionExpired e) {
- rReq.setAttribute("errorMsg", e.getMessage());
- log.error(e);
- } catch (WikiSaveException e) {
- rReq.setAttribute("errorMsg", e.getMessage());
- log.error(e);
- } catch (EditingNotAllowedException e) {
- rReq.setAttribute("errorMsg", e.getMessage());
- log.error(e);
- }
-
- // and finally remove old page object from memory to force
- // reloading it
- wikiEngine.refreshPage(edPage.getName(), edPage.getLangCode());
- }
- }
-
- }
-
- public void doView(RenderRequest rReq, RenderResponse rRes)
- throws PortletException, java.io.IOException {
- try {
- WikiSession wikiSession = new PortletWikiSession(rReq
- .getPortletSession());
-
- Credentials credentials = wikiEngine.getCredentialsInstance(rReq);
-
- String langCode = rReq.getParameter("language");
-
- String wikiURL = rRes.createActionURL().toString() + "&language="
- + langCode;
-
- log.info(wikiURL);
-
- rReq.setAttribute("actionURL", wikiURL);
-
- if (langCode == null) {
- langCode = wikiEngine.defaultLangugeCode;
- }
-
- boolean showPage = true;
-
- // Create server host and put it into session for plugins
- String hostURL = ((rReq.isSecure()) ? "https" : "http")
- + "://"
- + rReq.getServerName()
- + ((rReq.getServerPort() == 80) ? "" : ":"
- + rReq.getServerPort());
-
- prepareSession(rReq.getPortletSession(), credentials, hostURL, wikiURL, rReq.isSecure());
-
- /*
- * WikiPage noSuchPage = new WikiPage("", credentials, "There is no
- * such page. Click on EDIT to start it.", 0, 0, null,
- * wikiEngine.getMediaDataSource(), wikiEngine
- * .getAttachementDataSource(), true, true);
- */
-
- String page = "Wiki.jsp";
-
- String wikiPage = defaultPage;
-
- WikiPage pageToShow = null;
-
- WikiContext wikiContext = null;
-
- if (rReq.getParameter("page") != null) {
- wikiPage = rReq.getParameter("page");
- }
-
- if ((rReq.getParameter("action") != null)
- && (rReq.getParameter("action").equals("Attach"))) {
- rReq.setAttribute("fileAttach", "true");
- }
-
- if ((rReq.getParameter("action") != null)
- && (rReq.getParameter("action").equals("Edit"))
- && (credentials.isLoggedIn())) {
- page = "Edit.jsp";
- showPage = false;
-
- WikiContext editWikiContext = new WikiContext(credentials,
- wikiEngine.getWikiType("edit"), wikiSession);
-
- pageToShow = wikiEngine.getByName(wikiPage, editWikiContext,
- langCode);
-
- if ((pageToShow != null)
- && (!pageToShow.isEditable(credentials))) {
- if (!credentials.isAdmin()) {
- showPage = true;
- }
- } else {
- if (rReq.getParameter("version") != null) {
- // show previous version of page
-
- log.info("Getting page " + wikiPage + " at version "
- + rReq.getParameter("version"));
-
- if ((pageToShow.getLastVersion() > Integer.valueOf(rReq
- .getParameter("version")))) {
- pageToShow = wikiEngine
- .getByName(wikiPage, editWikiContext,
- Integer.valueOf(rReq
- .getParameter("version")),
- langCode);
- }
-
- if (pageToShow.getLastVersion() != pageToShow
- .getVersion()) {
- rReq.setAttribute("showedVersion", Integer
- .valueOf(rReq.getParameter("version")));
- }
- } else {
- pageToShow = wikiEngine.getByName(wikiPage,
- editWikiContext, langCode);
- }
-
- if (pageToShow == null) {
- // start editing new page
- // wikiPage = defaultPage;
-
- pageToShow = new WikiPage(wikiPage, credentials, "", 0,
- 0, new Date(), wikiEngine, true, true, null,
- null, 0, langCode);
- // wikiEngine.getByName(wikiPage, wikiContext);
- }
-
- int editSessionId = wikiEngine.getEditSessionId();
-
- Date dateLock = wikiEngine.getByName(wikiPage, null,
- langCode).lock(credentials, editSessionId);
-
- rReq.setAttribute("editSessionId", String
- .valueOf(editSessionId));
-
- if (dateLock != null) {
- rReq
- .setAttribute(
- "lockMsg",
- "Page is locked by "
- + pageToShow.getLockUser()
- + " from "
- + dateLock
- + ".<br> I won't stop you from saving, but you or he can erease each other changes. Lock will expire: ");
- }
- }
- } else if ((rReq.getParameter("action") != null)
- && (rReq.getParameter("action").equals("Info"))) {
- page = "PageInfo.jsp";
- showPage = false;
-
- pageToShow = wikiEngine.getByName(wikiPage, null, langCode);
-
- /*
- * if (pageToShow == null) { // if somebody entered a link to
- * info // non-existing page page = "Wiki.jsp"; try { pageToShow =
- * (WikiPage) noSuchPage.clone(); } catch
- * (CloneNotSupportedException cnse) { log.info(cnse); }
- *
- * pageToShow.setName(wikiPage); } else {
- */
- rReq.setAttribute("pageAtTop", pageToShow);
-
- }
-
- if (showPage) {
- page = "Wiki.jsp";
-
- String type = "html";
-
- if (rReq.getParameter("type") != null) {
- type = rReq.getParameter("type");
- // log.info("Getting type: " + type);
- }
-
- wikiContext = new WikiContext(credentials, wikiEngine
- .getWikiType(type), new PortletWikiSession(rReq
- .getPortletSession()));
-
- if (rReq.getParameter("version") != null) {
- // show previous version of page
- log.info("Getting page " + wikiPage + " at version "
- + rReq.getParameter("version"));
- pageToShow = wikiEngine.getByName(wikiPage, wikiContext,
- Integer.valueOf(rReq.getParameter("version")),
- langCode);
-
- if (pageToShow.getLastVersion() != pageToShow.getVersion()) {
- rReq.setAttribute("showedVersion", Integer.valueOf(rReq
- .getParameter("version")));
- }
- } else {
- pageToShow = wikiEngine.getByName(wikiPage, wikiContext,
- langCode);
- }
-
- /*
- * if (pageToShow == null) {
- *
- * try { pageToShow = (WikiPage) noSuchPage.clone(); } catch
- * (CloneNotSupportedException cnse) { log.info(cnse); }
- *
- * pageToShow.setName(wikiPage); }
- */
-
- }
-
- rReq
- .setAttribute(
- "wikiName",
- "<img src=\""
- + hostURL
- + "/wiki/"
- + WikiCommon.wikiButtons
- + "/JBossWikiLogoMedium.png\" width=\"100\" border=\"0\" style=\"vertical-align: middle\"/>");
-
- rReq.setAttribute("wikiContent", pageToShow.getContent());
-
- rReq.setAttribute("wikiImagesUrl", hostURL + "/wiki/"
- + WikiCommon.wikiButtons + "/");
-
- rReq.setAttribute("wikiPage", pageToShow.getName());
-
- rReq.setAttribute("editDate", pageToShow.getEditDate());
-
- rReq.setAttribute("author", pageToShow.getLastAuthor());
-
- rReq.setAttribute("logedIn", credentials.isLoggedIn());
-
- rReq.setAttribute("defaultPage", defaultPage);
-
- rReq.setAttribute("isEditable", pageToShow.isEditable(credentials));
-
- rReq.setAttribute("isViewable", pageToShow.isViewable(credentials));
-
- rReq.setAttribute("isAdmin", credentials.isAdmin());
-
- rReq.setAttribute("usedLangs", wikiEngine.getUsedLanguageCodes());
-
- rReq.setAttribute("currentLanguage", langCode);
-
- rReq
- .setAttribute(
- "friendlyLink",
- hostURL
- + "/wiki/"
- + ((!langCode
- .equals(wikiEngine.defaultLangugeCode)) ? langCode
- .toLowerCase()
- + "/"
- : "") + 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())
- || javax.portlet.WindowState.MAXIMIZED.equals(rReq
- .getWindowState())) {
- rRes.setContentType("text/html; charset=UTF-8");
- javax.portlet.PortletRequestDispatcher pRD = this
- .getPortletContext().getRequestDispatcher(
- jspPath + page);
- pRD.include(rReq, rRes);
- return;
- }
- doDispatch(rReq, rRes);
- } catch (RuntimeException e) {
- e.printStackTrace();
- throw (e);
- }
- }
-
- private void prepareSession(PortletSession portletSession,
- Credentials credentials, String hostURL, String wikiURL, Boolean isSecure) {
- // prepare some data for plugins in session
- portletSession.setAttribute(WikiSession.CREDENTIALS, credentials);
- portletSession.setAttribute(WikiSession.HOST_URL, hostURL);
- portletSession.setAttribute(WikiSession.ACTION_URL, wikiURL);
- portletSession.setAttribute(WikiSession.IS_SECURE, isSecure);
- }
-}
\ No newline at end of file
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortletOld.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortletOld.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortletOld.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,639 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.wiki;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.PortletSession;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.PortletDiskFileUpload;
+import org.jboss.logging.Logger;
+import org.jboss.wiki.exceptions.EditSessionExpired;
+import org.jboss.wiki.exceptions.EditingNotAllowedException;
+import org.jboss.wiki.exceptions.WikiManagementNotFoundException;
+import org.jboss.wiki.exceptions.WikiSaveException;
+import org.jboss.wiki.management.WikiServiceManagement;
+import org.jboss.wiki.portlet.PortletWikiSession;
+
+/**
+ * The WikiPortlet.
+ * <p>
+ *
+ * @author <a href="mailto:dsicore at jboss.org">Damon Sicore</a>
+ * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ * @version $Id$
+ */
+
+public class WikiPortletOld extends GenericPortlet {
+
+ final static String jspPath = "/WEB-INF/jsp/";
+
+ private static final String WINDOWS_FILE_NAME = "\\w:\\\\.+";
+
+ private String defaultPage = "Main";
+
+ private WikiEngine wikiEngine;
+
+ private Logger log;
+
+ public void init() {
+ log = Logger.getLogger(WikiPortletOld.class);
+
+ WikiCommon wikiCommon = new WikiCommon();
+
+ try {
+ WikiServiceManagement wikiServiceMenagement = wikiCommon
+ .getWikiManagement();
+ wikiEngine = wikiServiceMenagement.getWikiEngine();
+ } catch (WikiManagementNotFoundException e1) {
+ log.error("Couldn't find WikiManagement", e1);
+ wikiEngine = new WikiEngine();
+ }
+ }
+
+ private Map<String, String> convertParameters(ActionRequest rReq) {
+ Map<String, String> convertedParameters = new HashMap<String, String>();
+
+ Map paramMap = rReq.getParameterMap();
+
+ for (Object key : paramMap.keySet()) {
+ try {
+ if (rReq.getParameter("editAction") != null) {
+ convertedParameters.put((String) key, new String(rReq
+ .getParameter((String) key).getBytes("ISO-8859-1"),
+ "UTF-8"));
+ } else {
+ convertedParameters.put((String) key, rReq
+ .getParameter((String) key));
+ }
+ } catch (UnsupportedEncodingException e) {
+ log.error(e);
+ convertedParameters.put((String) key, (String) paramMap
+ .get(key));
+ }
+ }
+
+ return convertedParameters;
+ }
+
+ public void processAction(ActionRequest rReq, ActionResponse rResp) {
+
+ Map<String, String> convertedParameters = convertParameters(rReq);
+
+ Credentials credentials = wikiEngine.getCredentialsInstance(rReq);
+
+ // wikiContext is null - to get refernece to actual page
+
+ WikiContext wikiContext = null;
+
+ if (PortletDiskFileUpload.isMultipartContent(rReq)) {
+ PortletDiskFileUpload dfu = new PortletDiskFileUpload();
+
+ // maximum allowed file upload size (10 MB)
+ dfu.setSizeMax(10 * 1000 * 1000);
+
+ // maximum size in memory (vs disk) (100 KB)
+ dfu.setSizeThreshold(100 * 1000);
+
+ try {
+ // get the FileItems
+ List fileItems = dfu.parseRequest(rReq);
+ Iterator iter = fileItems.iterator();
+ while (iter.hasNext()) {
+ FileItem item = (FileItem) iter.next();
+ if (item.isFormField()) {
+ // pass along to render request
+ String fieldName = item.getFieldName();
+ String value = item.getString();
+ rResp.setRenderParameter(fieldName, value);
+ } else {
+ // write the uploaded file to a new location
+ String fieldName = item.getFieldName();
+ String fileName = item.getName();
+
+ // change windows names (remove c:\bull\shit\)
+ if (fileName.matches(WINDOWS_FILE_NAME)) {
+ fileName = fileName.substring(fileName
+ .lastIndexOf('\\') + 1, fileName.length());
+ }
+
+ if (fileName.length() == 0) {
+ throw new FileUploadException("Wrong file name: "
+ + item.getName());
+ }
+
+ // delete spaces
+
+ while (fileName.indexOf(' ') != -1) {
+ Character chr = fileName.charAt(fileName
+ .indexOf(' ') + 1);
+
+ fileName = fileName.substring(0, fileName
+ .indexOf(' '))
+ + (char) Character.toUpperCase(chr)
+ + fileName.substring(
+ fileName.indexOf(' ') + 2, fileName
+ .length());
+ }
+
+ String tempDir = System.getProperty("java.io.tmpdir");
+ String serverFileName = fieldName + fileName
+ + "-portlet.tmp";
+
+ File serverFile = new File(tempDir, serverFileName);
+
+ item.write(serverFile);
+
+ log.info("serverFileName : " + tempDir + "/"
+ + serverFileName + " filename: " + fileName);
+
+ WikiPage pageWithAtt = wikiEngine.getByName(
+ convertedParameters.get("page"), null,
+ (String) convertedParameters.get("language"));
+
+ FileInputStream fis = new FileInputStream(serverFile);
+
+ pageWithAtt.addAttachement(fis, fileName, credentials
+ .getName());
+
+ // at the end delete the temp file
+ serverFile.delete();
+ }
+ }
+ } catch (FileUploadException fue) {
+ String msg = "File Upload Exception: " + fue.getMessage();
+ rResp.setRenderParameter("error", msg);
+ getPortletContext().log(msg, fue);
+ } catch (Exception e) {
+ String msg = "Exception: " + e.getMessage();
+ rResp.setRenderParameter("error", msg);
+ getPortletContext().log(msg, e);
+ }
+ }
+
+ if (convertedParameters.get("page") != null
+ && (convertedParameters.get("page").length() > 0)) {
+ StringBuffer sBuf = new StringBuffer(convertedParameters
+ .get("page"));
+
+ if (Character.isLowerCase(sBuf.charAt(0))) {
+ // change first letter to upper if it isn't
+ sBuf.setCharAt(0, Character.toUpperCase(sBuf.charAt(0)));
+ }
+
+ //
+ // Capitalise words in subpages
+ //
+
+ for (int i = 0; i < sBuf.length() - 1; i++) {
+ if ((sBuf.charAt(i) == '/')
+ && (Character.isLowerCase(sBuf.charAt(i + 1)))) {
+ sBuf.setCharAt(i + 1, Character.toUpperCase(sBuf
+ .charAt(i + 1)));
+ }
+ }
+
+ rResp.setRenderParameter("page", sBuf.toString());
+
+ }
+
+ if (convertedParameters.get("searchQuery") != null) {
+ Map<String, Integer> pages = wikiEngine.findPages(
+ convertedParameters.get("searchQuery"),
+ (String) convertedParameters.get("language"));
+
+ rReq.getPortletSession().setAttribute("findResult", pages);
+
+ // show the results
+ rResp.setRenderParameter("page", "FindResult");
+ }
+
+ int i = 1;
+
+ while (convertedParameters.get("var" + i) != null) {
+ rReq.getPortletSession().setAttribute("var" + i,
+ convertedParameters.get("var" + i));
+ i++;
+ }
+
+ if (convertedParameters.get("action") != null) {
+ rResp.setRenderParameter("action", convertedParameters
+ .get("action"));
+ }
+
+ if (convertedParameters.get("type") != null) {
+ rResp.setRenderParameter("type", convertedParameters.get("type"));
+ }
+
+ if (convertedParameters.get("version") != null) {
+ log.info("[process action]Getting page "
+ + convertedParameters.get("page") + " at version "
+ + convertedParameters.get("version"));
+ rResp.setRenderParameter("version", convertedParameters
+ .get("version"));
+ }
+
+ if (convertedParameters.get("language") != null) {
+ rResp.setRenderParameter("language", (String) convertedParameters
+ .get("language"));
+ } else {
+ rResp.setRenderParameter("language", wikiEngine.defaultLangugeCode);
+ }
+
+ if (convertedParameters.get("editAction") != null) {
+ log.debug("EDITING PAGE");
+
+ String editedPageName = convertedParameters.get("editedPage");
+
+ // unlock page
+ WikiPage edPage = wikiEngine.getByName(editedPageName, wikiContext,
+ (String) convertedParameters.get("language"));
+
+ if (edPage != null) { // it may be null if the page isn't saved
+ // yet
+ edPage.unlock(credentials, Integer
+ .valueOf((String) convertedParameters
+ .get("editSessionId")));
+ }
+
+ // saving, previewing or canceling
+
+ if (convertedParameters.get("editAction").equals("Save")) {
+
+ // save the page
+
+ if (edPage == null) {
+ edPage = new WikiPage(editedPageName, credentials, "", 0,
+ 0, new Date(), wikiEngine, true, true, null, null,
+ 0, (String) convertedParameters.get("language"));
+ }
+
+ // set new content
+ edPage.setContent(convertedParameters.get("wikiContent"));
+
+ // set author name for new version
+ edPage.setLastAuthor(credentials);
+
+ // increase page version
+ edPage.setLastVersion(edPage.getLastVersion() + 1);
+
+ // set new data
+ edPage.setEditDate(new Date());
+
+ // save the page
+ try {
+ edPage.save(credentials, Integer
+ .valueOf((String) convertedParameters
+ .get("editSessionId")),
+ (String) convertedParameters.get("language"),
+ new PortletWikiSession(rReq.getPortletSession()));
+ } catch (NumberFormatException e) {
+ log.error(e);
+ } catch (EditSessionExpired e) {
+ rReq.setAttribute("errorMsg", e.getMessage());
+ log.error(e);
+ } catch (WikiSaveException e) {
+ rReq.setAttribute("errorMsg", e.getMessage());
+ log.error(e);
+ } catch (EditingNotAllowedException e) {
+ rReq.setAttribute("errorMsg", e.getMessage());
+ log.error(e);
+ }
+
+ // and finally remove old page object from memory to force
+ // reloading it
+ wikiEngine.refreshPage(edPage.getName(), edPage.getLangCode());
+ }
+ }
+
+ }
+
+ public void doView(RenderRequest rReq, RenderResponse rRes)
+ throws PortletException, java.io.IOException {
+ try {
+ WikiSession wikiSession = new PortletWikiSession(rReq
+ .getPortletSession());
+
+ Credentials credentials = wikiEngine.getCredentialsInstance(rReq);
+
+ String langCode = rReq.getParameter("language");
+
+ String wikiURL = rRes.createActionURL().toString() + "&language="
+ + langCode;
+
+ log.info(wikiURL);
+
+ rReq.setAttribute("actionURL", wikiURL);
+
+ if (langCode == null) {
+ langCode = wikiEngine.defaultLangugeCode;
+ }
+
+ boolean showPage = true;
+
+ // Create server host and put it into session for plugins
+ String hostURL = ((rReq.isSecure()) ? "https" : "http")
+ + "://"
+ + rReq.getServerName()
+ + ((rReq.getServerPort() == 80) ? "" : ":"
+ + rReq.getServerPort());
+
+ prepareSession(rReq.getPortletSession(), credentials, hostURL, wikiURL, rReq.isSecure());
+
+ /*
+ * WikiPage noSuchPage = new WikiPage("", credentials, "There is no
+ * such page. Click on EDIT to start it.", 0, 0, null,
+ * wikiEngine.getMediaDataSource(), wikiEngine
+ * .getAttachementDataSource(), true, true);
+ */
+
+ String page = "Wiki.jsp";
+
+ String wikiPage = defaultPage;
+
+ WikiPage pageToShow = null;
+
+ WikiContext wikiContext = null;
+
+ if (rReq.getParameter("page") != null) {
+ wikiPage = rReq.getParameter("page");
+ }
+
+ if ((rReq.getParameter("action") != null)
+ && (rReq.getParameter("action").equals("Attach"))) {
+ rReq.setAttribute("fileAttach", "true");
+ }
+
+ if ((rReq.getParameter("action") != null)
+ && (rReq.getParameter("action").equals("Edit"))
+ && (credentials.isLoggedIn())) {
+ page = "Edit.jsp";
+ showPage = false;
+
+ WikiContext editWikiContext = new WikiContext(credentials,
+ wikiEngine.getWikiType("edit"), wikiSession);
+
+ pageToShow = wikiEngine.getByName(wikiPage, editWikiContext,
+ langCode);
+
+ if ((pageToShow != null)
+ && (!pageToShow.isEditable(credentials))) {
+ if (!credentials.isAdmin()) {
+ showPage = true;
+ }
+ } else {
+ if (rReq.getParameter("version") != null) {
+ // show previous version of page
+
+ log.info("Getting page " + wikiPage + " at version "
+ + rReq.getParameter("version"));
+
+ if ((pageToShow.getLastVersion() > Integer.valueOf(rReq
+ .getParameter("version")))) {
+ pageToShow = wikiEngine
+ .getByName(wikiPage, editWikiContext,
+ Integer.valueOf(rReq
+ .getParameter("version")),
+ langCode);
+ }
+
+ if (pageToShow.getLastVersion() != pageToShow
+ .getVersion()) {
+ rReq.setAttribute("showedVersion", Integer
+ .valueOf(rReq.getParameter("version")));
+ }
+ } else {
+ pageToShow = wikiEngine.getByName(wikiPage,
+ editWikiContext, langCode);
+ }
+
+ if (pageToShow == null) {
+ // start editing new page
+ // wikiPage = defaultPage;
+
+ pageToShow = new WikiPage(wikiPage, credentials, "", 0,
+ 0, new Date(), wikiEngine, true, true, null,
+ null, 0, langCode);
+ // wikiEngine.getByName(wikiPage, wikiContext);
+ }
+
+ int editSessionId = wikiEngine.getEditSessionId();
+
+ Date dateLock = wikiEngine.getByName(wikiPage, null,
+ langCode).lock(credentials, editSessionId);
+
+ rReq.setAttribute("editSessionId", String
+ .valueOf(editSessionId));
+
+ if (dateLock != null) {
+ rReq
+ .setAttribute(
+ "lockMsg",
+ "Page is locked by "
+ + pageToShow.getLockUser()
+ + " from "
+ + dateLock
+ + ".<br> I won't stop you from saving, but you or he can erease each other changes. Lock will expire: ");
+ }
+ }
+ } else if ((rReq.getParameter("action") != null)
+ && (rReq.getParameter("action").equals("Info"))) {
+ page = "PageInfo.jsp";
+ showPage = false;
+
+ pageToShow = wikiEngine.getByName(wikiPage, null, langCode);
+
+ /*
+ * if (pageToShow == null) { // if somebody entered a link to
+ * info // non-existing page page = "Wiki.jsp"; try { pageToShow =
+ * (WikiPage) noSuchPage.clone(); } catch
+ * (CloneNotSupportedException cnse) { log.info(cnse); }
+ *
+ * pageToShow.setName(wikiPage); } else {
+ */
+ rReq.setAttribute("pageAtTop", pageToShow);
+
+ }
+
+ if (showPage) {
+ page = "Wiki.jsp";
+
+ String type = "html";
+
+ if (rReq.getParameter("type") != null) {
+ type = rReq.getParameter("type");
+ // log.info("Getting type: " + type);
+ }
+
+ wikiContext = new WikiContext(credentials, wikiEngine
+ .getWikiType(type), new PortletWikiSession(rReq
+ .getPortletSession()));
+
+ if (rReq.getParameter("version") != null) {
+ // show previous version of page
+ log.info("Getting page " + wikiPage + " at version "
+ + rReq.getParameter("version"));
+ pageToShow = wikiEngine.getByName(wikiPage, wikiContext,
+ Integer.valueOf(rReq.getParameter("version")),
+ langCode);
+
+ if (pageToShow.getLastVersion() != pageToShow.getVersion()) {
+ rReq.setAttribute("showedVersion", Integer.valueOf(rReq
+ .getParameter("version")));
+ }
+ } else {
+ pageToShow = wikiEngine.getByName(wikiPage, wikiContext,
+ langCode);
+ }
+
+ /*
+ * if (pageToShow == null) {
+ *
+ * try { pageToShow = (WikiPage) noSuchPage.clone(); } catch
+ * (CloneNotSupportedException cnse) { log.info(cnse); }
+ *
+ * pageToShow.setName(wikiPage); }
+ */
+
+ }
+
+ rReq
+ .setAttribute(
+ "wikiName",
+ "<img src=\""
+ + hostURL
+ + "/wiki/"
+ + WikiCommon.wikiButtons
+ + "/JBossWikiLogoMedium.png\" width=\"100\" border=\"0\" style=\"vertical-align: middle\"/>");
+
+ rReq.setAttribute("wikiContent", pageToShow.getContent());
+
+ rReq.setAttribute("wikiImagesUrl", hostURL + "/wiki/"
+ + WikiCommon.wikiButtons + "/");
+
+ rReq.setAttribute("wikiPage", pageToShow.getName());
+
+ rReq.setAttribute("editDate", pageToShow.getEditDate());
+
+ rReq.setAttribute("author", pageToShow.getLastAuthor());
+
+ rReq.setAttribute("logedIn", credentials.isLoggedIn());
+
+ rReq.setAttribute("defaultPage", defaultPage);
+
+ rReq.setAttribute("isEditable", pageToShow.isEditable(credentials));
+
+ rReq.setAttribute("isViewable", pageToShow.isViewable(credentials));
+
+ rReq.setAttribute("isAdmin", credentials.isAdmin());
+
+ rReq.setAttribute("usedLangs", wikiEngine.getUsedLanguageCodes());
+
+ rReq.setAttribute("currentLanguage", langCode);
+
+ rReq
+ .setAttribute(
+ "friendlyLink",
+ hostURL
+ + "/wiki/"
+ + ((!langCode
+ .equals(wikiEngine.defaultLangugeCode)) ? langCode
+ .toLowerCase()
+ + "/"
+ : "") + 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())
+ || javax.portlet.WindowState.MAXIMIZED.equals(rReq
+ .getWindowState())) {
+ rRes.setContentType("text/html; charset=UTF-8");
+ javax.portlet.PortletRequestDispatcher pRD = this
+ .getPortletContext().getRequestDispatcher(
+ jspPath + page);
+ pRD.include(rReq, rRes);
+ return;
+ }
+ doDispatch(rReq, rRes);
+ } catch (RuntimeException e) {
+ e.printStackTrace();
+ throw (e);
+ }
+ }
+
+ private void prepareSession(PortletSession portletSession,
+ Credentials credentials, String hostURL, String wikiURL, Boolean isSecure) {
+ // prepare some data for plugins in session
+ portletSession.setAttribute(WikiSession.CREDENTIALS, credentials);
+ portletSession.setAttribute(WikiSession.HOST_URL, hostURL);
+ portletSession.setAttribute(WikiSession.ACTION_URL, wikiURL);
+ portletSession.setAttribute(WikiSession.IS_SECURE, isSecure);
+ }
+}
\ No newline at end of file
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/attributesextractor/AttributesExtractor.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/attributesextractor/AttributesExtractor.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/attributesextractor/AttributesExtractor.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.wiki.attributesextractor;
+
+import org.jboss.wiki.Credentials;
+import org.jboss.wiki.WikiSession;
+
+/**
+ * AttributesExtractor.java
+ *
+ * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ */
+
+public interface AttributesExtractor {
+ public String getHostURL();
+
+ public String getAppContext();
+
+ public Credentials getCredentials();
+
+ public WikiSession getWikiSession();
+
+ public boolean isSecure();
+
+ public String getOutputLink(Object request, Object response, boolean isAction);
+
+ public String getParameter(Object response, String key);
+
+ public String getRequestedPageName();
+
+ public String getRequestedLanguage();
+}
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/attributesextractor/PortletAttributesExctractor.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/attributesextractor/PortletAttributesExctractor.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/attributesextractor/PortletAttributesExctractor.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,173 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.wiki.attributesextractor;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+import javax.faces.context.FacesContext;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletURL;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.myfaces.portlet.MyFacesGenericPortlet;
+import org.jboss.logging.Logger;
+import org.jboss.wiki.Credentials;
+import org.jboss.wiki.WikiSession;
+import org.jboss.wiki.helper.WikiHelper;
+import org.jboss.wiki.portlet.PortletWikiSession;
+
+/**
+ * PortletAttributesExctractor.java
+ *
+ * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ */
+
+public class PortletAttributesExctractor implements AttributesExtractor {
+
+ private final static Logger log = Logger
+ .getLogger(PortletAttributesExctractor.class);
+
+ private String hostURL;
+
+ private String appContext;
+
+ private WikiSession wikiSession;
+
+ private Credentials credentials;
+
+ private String page;
+
+ private boolean secure;
+
+ private String language;
+
+ public PortletAttributesExctractor(Object request) {
+ if (request instanceof PortletRequest) {
+ PortletRequest rReq = (PortletRequest) request;
+
+ // get all needed attributes
+ hostURL = ((rReq.isSecure()) ? "https" : "http")
+ + "://"
+ + rReq.getServerName()
+ + ((rReq.getServerPort() == 80) ? "" : ":"
+ + rReq.getServerPort());
+
+ appContext = rReq.getContextPath();
+
+ wikiSession = new PortletWikiSession(rReq.getPortletSession());
+
+ credentials = WikiHelper.getWikiEngine().getCredentialsInstance(
+ request);
+
+ secure = rReq.isSecure();
+
+ page = rReq.getParameter("page");
+
+ language = rReq.getParameter("language");
+
+ } else {
+ throw new IllegalArgumentException("Unknow type request: "
+ + request);
+ }
+ }
+
+ public String getHostURL() {
+ return hostURL;
+ }
+
+ public String getAppContext() {
+ return appContext;
+ }
+
+ public Credentials getCredentials() {
+ return credentials;
+ }
+
+ public WikiSession getWikiSession() {
+ return wikiSession;
+ }
+
+ public boolean isSecure() {
+ return secure;
+ }
+
+ public String getOutputLink(Object request, Object response,
+ boolean isAction) {
+ if (response instanceof RenderResponse
+ && request instanceof RenderRequest) {
+ RenderResponse portletResponse = (RenderResponse) response;
+ RenderRequest portletRequest = (RenderRequest) request;
+
+ PortletURL portletURL;
+ if (isAction) {
+ portletURL = portletResponse.createActionURL();
+ } else {
+ portletURL = portletResponse.createRenderURL();
+ }
+
+ String jsfUrl = portletURL.toString();
+
+ log.info("ViewID: "+FacesContext.getCurrentInstance()
+ .getViewRoot().getViewId());
+ try {
+ jsfUrl += "&"
+ + MyFacesGenericPortlet.VIEW_ID
+ + "="
+ + URLEncoder.encode(FacesContext.getCurrentInstance()
+ .getViewRoot().getViewId(), "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ log.error(e);
+ }
+
+ return jsfUrl;
+
+ } else {
+ throw new IllegalArgumentException(
+ "response and request should be instance of class "
+ + RenderResponse.class + " and "
+ + RenderRequest.class);
+ }
+ }
+
+ public String getParameter(Object request, String key) {
+ if (request instanceof PortletRequest) {
+ PortletRequest rReq = (PortletRequest) request;
+
+ return rReq.getParameter(key);
+ } else {
+ throw new IllegalArgumentException("Unknow type request: "
+ + request);
+ }
+ }
+
+ public String getRequestedPageName() {
+ return page;
+ }
+
+ public String getRequestedLanguage() {
+ return language;
+ }
+
+}
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/autorization/AuthorizationListener.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/autorization/AuthorizationListener.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/autorization/AuthorizationListener.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,35 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.wiki.autorization;
+
+import org.apache.myfaces.application.ActionListenerImpl;
+
+/**
+ * AuthorizationListener.java
+ *
+ * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ */
+
+public class AuthorizationListener extends ActionListenerImpl {
+
+}
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -328,7 +328,7 @@
// get pageName
String pageName = "";
for (int i = 0; i < tokens.length - 1; i++) {
- pageName += "/" + tokens[i];
+ pageName += ((i > 0) ? "/" : "") + tokens[i];
}
String fileName = tokens[tokens.length - 1].substring("file:"
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/helper/WikiHelper.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/helper/WikiHelper.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/helper/WikiHelper.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,82 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.wiki.helper;
+
+import javax.portlet.PortletRequest;
+
+import org.jboss.logging.Logger;
+import org.jboss.wiki.WikiCommon;
+import org.jboss.wiki.WikiEngine;
+import org.jboss.wiki.WikiSession;
+import org.jboss.wiki.attributesextractor.AttributesExtractor;
+import org.jboss.wiki.attributesextractor.PortletAttributesExctractor;
+import org.jboss.wiki.exceptions.WikiManagementNotFoundException;
+import org.jboss.wiki.management.WikiServiceManagement;
+
+/**
+ * WikiHelper.java
+ *
+ * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ */
+
+public class WikiHelper {
+
+ private static WikiEngine wikiEngine;
+
+ private static final Logger log = Logger.getLogger(WikiHelper.class);
+
+ public static WikiEngine getWikiEngine() {
+ if (wikiEngine == null) {
+ try {
+ WikiServiceManagement wikiServiceMenagement = WikiCommon
+ .getWikiManagement();
+ wikiEngine = wikiServiceMenagement.getWikiEngine();
+ } catch (WikiManagementNotFoundException e1) {
+ log.error("Couldn't find WikiManagement", e1);
+ wikiEngine = new WikiEngine();
+ }
+ }
+ return wikiEngine;
+ }
+
+ public static AttributesExtractor getAttributesExtractor(Object request, Object response) {
+ AttributesExtractor extractor;
+
+ if (request instanceof PortletRequest) {
+ extractor = new PortletAttributesExctractor(request);
+ }
+ else {
+ throw new IllegalArgumentException("Unknow type request: "+request);
+ }
+
+ extractor.getWikiSession().setAttribute(WikiSession.CREDENTIALS, extractor.getCredentials());
+ extractor.getWikiSession().setAttribute(WikiSession.HOST_URL, extractor.getHostURL());
+
+ //TODO wikiURL
+ extractor.getWikiSession().setAttribute(WikiSession.ACTION_URL, extractor.getOutputLink(request, response, true));
+ extractor.getWikiSession().setAttribute(WikiSession.IS_SECURE, extractor.isSecure());
+
+ return extractor;
+ }
+
+}
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/PortletWikiSession.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/PortletWikiSession.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/PortletWikiSession.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,53 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.wiki.portlet;
+
+import javax.portlet.PortletSession;
+
+import org.jboss.wiki.WikiSession;
+
+public class PortletWikiSession implements WikiSession {
+
+ PortletSession portletSession;
+
+ public Object getAttribute(String attributeName) {
+ return portletSession.getAttribute(attributeName);
+ }
+
+ public void setAttribute(String attributeName, Object attribute) {
+ portletSession.setAttribute(attributeName, attribute);
+ }
+
+ public void removeAttribute(String attributeName) {
+ portletSession.removeAttribute(attributeName);
+ }
+
+ public PortletWikiSession(PortletSession portletSession) {
+ this.portletSession = portletSession;
+ }
+
+ public String getId() {
+ return portletSession.getId();
+ }
+
+}
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/WikiPortletMyFaces.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/WikiPortletMyFaces.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/portlet/WikiPortletMyFaces.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,109 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.wiki.portlet;
+
+import java.io.IOException;
+import java.util.Map;
+
+import javax.faces.context.FacesContext;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.myfaces.portlet.MyFacesGenericPortlet;
+import org.jboss.logging.Logger;
+
+/**
+ * WikiPortletMyFaces.java
+ *
+ * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ */
+
+public class WikiPortletMyFaces extends MyFacesGenericPortlet {
+
+ private static final Logger log = Logger.getLogger(WikiPortletMyFaces.class);
+
+ protected void facesRender(RenderRequest request, RenderResponse response)
+ throws PortletException, java.io.IOException {
+ if (sessionTimedOut(request)
+ || request.getPortletSession().getAttribute(
+ CURRENT_FACES_CONTEXT) == null) {
+ setPortletRequestFlag(request);
+ nonFacesRequest(request, response);
+ return;
+ }
+
+ super.facesRender(request, response);
+ }
+
+ /**
+ * Called by the portlet container to allow the portlet to process an action request.
+ */
+ public void processAction(ActionRequest request, ActionResponse response)
+ throws PortletException, IOException
+ {
+ if (sessionTimedOut(request)) return;
+
+ setPortletRequestFlag(request);
+
+ this.prepareParams(request, response);
+
+ FacesContext facesContext = facesContext(request, response);
+
+ try
+ {
+ lifecycle.execute(facesContext);
+
+ if (!facesContext.getResponseComplete())
+ {
+ response.setRenderParameter(VIEW_ID, facesContext.getViewRoot().getViewId());
+ }
+
+ request.getPortletSession().setAttribute(CURRENT_FACES_CONTEXT, facesContext);
+ }
+ catch (Throwable e)
+ {
+ facesContext.release();
+ handleExceptionFromLifecycle(e);
+ }
+ }
+
+ private void prepareParams(ActionRequest request, ActionResponse response) {
+ Map<String, String> paramMap = request.getParameterMap();
+
+ for (String key : paramMap.keySet()) {
+ response.setRenderParameter(key, request.getParameter(key));
+ log.info("Param: "+key+" = "+request.getParameter(key));
+ }
+
+ // add plugin parameters
+ int i = 1;
+ while (request.getParameter("var" + i) != null) {
+ request.getPortletSession().setAttribute("var" + i,
+ request.getParameter("var" + i));
+ i++;
+ }
+ }
+}
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/ui/WikiView.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/ui/WikiView.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/ui/WikiView.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,97 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.wiki.ui;
+
+import javax.faces.context.FacesContext;
+
+import org.jboss.logging.Logger;
+import org.jboss.wiki.WikiCommon;
+import org.jboss.wiki.WikiContext;
+import org.jboss.wiki.WikiEngine;
+import org.jboss.wiki.WikiType;
+import org.jboss.wiki.attributesextractor.AttributesExtractor;
+import org.jboss.wiki.helper.WikiHelper;
+
+/**
+ * WikiView.java
+ *
+ * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ */
+
+public class WikiView {
+ private static final Logger log = Logger.getLogger(WikiView.class);
+
+ private AttributesExtractor attrExtractor;
+
+ private String pageName = "Main";
+
+ private String langCode = "EN";
+
+ public WikiView() {
+ attrExtractor = WikiHelper.getAttributesExtractor(getRequest(), getResponse());
+ if (attrExtractor.getRequestedPageName() != null) {
+ pageName = attrExtractor.getRequestedPageName();
+ log.info("Page name: "+pageName);
+ }
+ if (attrExtractor.getRequestedLanguage() != null) {
+ langCode = attrExtractor.getRequestedLanguage();
+ }
+ }
+
+ private Object getRequest() {
+ return FacesContext.getCurrentInstance().getExternalContext()
+ .getRequest();
+ }
+
+ private Object getResponse() {
+ return FacesContext.getCurrentInstance().getExternalContext()
+ .getResponse();
+ }
+
+ public String getWikiImagesURL() {
+ return attrExtractor.getHostURL() + attrExtractor.getAppContext() + "/"
+ + WikiCommon.wikiButtons + "/";
+ }
+
+ public String getWikiFriendlyURL() {
+ return attrExtractor.getHostURL() + attrExtractor.getAppContext() + "/" + pageName;
+ }
+
+ public String getPageName() {
+ if (pageName == null) {
+
+ }
+
+ return pageName;
+ }
+
+ public String getPageContent() {
+ WikiEngine engine = WikiHelper.getWikiEngine();
+
+ WikiType wikiType = engine.getWikiType("html");
+ WikiContext wikiContext = new WikiContext(attrExtractor
+ .getCredentials(), wikiType, attrExtractor.getWikiSession());
+
+ return engine.getByName(pageName, wikiContext, langCode).getContent();
+ }
+}
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/Messages.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/Messages.properties 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/Messages.properties 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1 @@
+pimpek=Pimpek!
\ No newline at end of file
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/faces-config.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/faces-config.xml 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/faces-config.xml 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!DOCTYPE faces-config PUBLIC
+ "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
+ "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
+
+<faces-config>
+ <application>
+ <!-- JBoss Portal-facelets integration -->
+ <property-resolver>org.jboss.portal.faces.el.DelegatingPropertyResolver</property-resolver>
+
+ <!--<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>-->
+ <view-handler>com.sun.facelets.FaceletPortletViewHandler</view-handler>
+ <locale-config>
+ <default-locale>en</default-locale>
+ </locale-config>
+ <action-listener>org.jboss.wiki.autorization.AuthorizationListener</action-listener>
+ </application>
+
+ <managed-bean>
+ <managed-bean-name>wikiView</managed-bean-name>
+ <managed-bean-class>org.jboss.wiki.ui.WikiView</managed-bean-class>
+ <managed-bean-scope>request</managed-bean-scope>
+ </managed-bean>
+
+</faces-config>
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jboss-portlet.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jboss-portlet.xml 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/jboss-portlet.xml 2006-12-05 19:51:38 UTC (rev 8074)
@@ -4,20 +4,6 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd /opt/SUNWps/dtd/portlet.xsd" version="1.0">
<portlet>
<portlet-name>WikiPortlet</portlet-name>
- <portlet-class>org.jboss.wiki.WikiPortlet</portlet-class>
- <supported-locale>en</supported-locale>
- <supports>
- <mime-type>text/html</mime-type>
- <portlet-mode>VIEW</portlet-mode>
- </supports>
- <supported-window-states>
- <window-state>normal</window-state>
- <window-state>minimized</window-state>
- <window-state>maximized</window-state>
- </supported-window-states>
- <portlet-info>
- <title>Wiki Portlet</title>
- </portlet-info>
<transaction>
<trans-attribute>Required</trans-attribute>
</transaction>
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/portlet.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/portlet.xml 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/portlet.xml 2006-12-05 19:51:38 UTC (rev 8074)
@@ -4,11 +4,16 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd /opt/SUNWps/dtd/portlet.xsd" version="1.0">
<portlet>
<portlet-name>WikiPortlet</portlet-name>
- <portlet-class>org.jboss.wiki.WikiPortlet</portlet-class>
+ <init-param>
+ <name>default-view</name>
+ <value>/views/index.xhtml</value>
+ </init-param>
+ <portlet-class>org.jboss.wiki.portlet.WikiPortletMyFaces</portlet-class>
<supported-locale>en</supported-locale>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
+ <portlet-mode>EDIT</portlet-mode>
</supports>
<supported-window-states>
<window-state>normal</window-state>
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/web.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/web.xml 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/web.xml 2006-12-05 19:51:38 UTC (rev 8074)
@@ -7,6 +7,38 @@
<web-app>
+ <!-- Use Documents Saved as *.xhtml -->
+ <context-param>
+ <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+ <param-value>.xhtml</param-value>
+ </context-param>
+
+ <!-- Special Debug Output for Development -->
+ <context-param>
+ <param-name>facelets.DEVELOPMENT</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <!-- <context-param>
+ <param-name>facelets.LIBRARIES</param-name>
+ <param-value>/WEB-INF/wiki.taglib.xml</param-value>
+ </context-param> -->
+
+ <listener>
+ <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+ </listener>
+
+ <servlet>
+ <servlet-name>Faces Servlet</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.jsf</url-pattern>
+ </servlet-mapping>
+
<filter>
<filter-name>wikiFileAccessFilter</filter-name>
<filter-class>org.jboss.wiki.fileaccess.WikiFileAccessFilter</filter-class>
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/wiki.taglib.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/wiki.taglib.xml 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/WEB-INF/wiki.taglib.xml 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE facelet-taglib PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
+ "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+<facelet-taglib>
+ <namespace>http://www.jboss.org/portal/jbosswiki</namespace>
+ <!-- <tag>
+ <tag-name>isAllowed</tag-name>
+ <handler-class>org.jboss.blog.service.permissions.acl.ACLTagHandler</handler-class>
+ </tag> -->
+</facelet-taglib>
\ No newline at end of file
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/index.xhtml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/index.xhtml 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/index.xhtml 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,8 @@
+<div xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:c="http://java.sun.com/jstl/core"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:blog="http://www.jboss.org/portal/jbossblog">
+<ui:include src="wiki_view.xhtml" />
+</div>
\ No newline at end of file
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_template.xhtml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_template.xhtml 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_template.xhtml 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:c="http://java.sun.com/jstl/core"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:blog="http://www.jboss.org/portal/jbossblog">
+<head>
+ <title></title>
+ <link rel='stylesheet' type='text/css' href='/jboss-blog/blog.css' media='screen'/>
+</head>
+<body class="blog-body">
+ <f:loadBundle basename="Messages" var="msg"/>
+
+ <link rel="stylesheet" href="#{wikiView.wikiImagesURL}wikiStyle.css" type="text/css" media="all" />
+
+ <ui:insert name="content" />
+
+</body>
+</html>
\ No newline at end of file
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_view.xhtml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_view.xhtml 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/web/views/wiki_view.xhtml 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,26 @@
+<div xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:c="http://java.sun.com/jstl/core"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:blog="http://www.jboss.org/portal/jbossblog">
+<ui:composition template="wiki_template.xhtml">
+
+ <ui:define name="content">
+ <h:outputLink value="#{wikiView.wikiFriendlyURL}">
+ <h:graphicImage value="#{wikiView.wikiImagesURL}permaLinkButton.png"/>
+ </h:outputLink>
+
+ <h:outputLink value="#{wikiView.wikiFriendlyURL}">
+ <h:outputText value=" #{wikiView.wikiFriendlyURL}"/>
+ </h:outputLink>
+
+ <hr />
+
+ <h:panelGroup styleClass="wikiContent">
+ <h:outputText value="#{wikiView.pageContent}" escape="false"/>
+ </h:panelGroup>
+ </ui:define>
+
+</ui:composition>
+</div>
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/JBossWiki.properties 2006-12-05 19:51:38 UTC (rev 8074)
@@ -20,7 +20,7 @@
#attachmentDataSourceClass=org.jboss.wiki.ShotokuAttachmentDataSource
#wikiPageDictionaryClass class to use for WikiPageDictionary
-wikiPageDictionaryClass=org.jboss.wiki.FileWikiPageDictionary
+wikiPageDictionaryClass=org.jboss.wiki.FileDirWikiPageDictionary
#wikiPageDictionaryClass=org.jboss.wiki.ShotokuWikiPageDictionary
#defaultLanguageCode - country letter of the default code language
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/images/wikiStyle.css
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/images/wikiStyle.css 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/images/wikiStyle.css 2006-12-05 19:51:38 UTC (rev 8074)
@@ -7,4 +7,8 @@
td.wikiFooter {
+}
+
+img {
+ border: 0px;
}
\ No newline at end of file
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties 2006-12-05 19:51:38 UTC (rev 8074)
@@ -6,7 +6,8 @@
#wikiHome part of url. Leave it you use default portlet conifguration
#wikiHome = /portal/index.html?ctrl:id=window.default.WikiPortletWindow&ctrl:type=action
#wikiHome = /portal/index.html?ctrl:cmd=action&ctrl:window=default.wiki.WikiPortletWindow
-wikiHome = /portal/portal/default/wiki/WikiPortletWindow?action=1
+#wikiHome = /portal/portal/default/wiki/WikiPortletWindow?action=1
+wikiHome = /portal/portal/default/wiki/WikiPortletWindow?action=2&org.apache.myfaces.portlet.MyFacesGenericPortlet.VIEW_ID=%2Fviews%2Findex.xhtml
#number of days that should be included in recent changes plugin
recentDays = 30
notification.fromEmail = do-not-reply at labs.jboss.org
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDSCommons.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDSCommons.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDSCommons.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -43,7 +43,8 @@
}
public static String translateToFileName(String pageName) {
-
+ System.out.println(pageName);
+
try {
return URLEncoder.encode(pageName, ENCODING).replaceAll(translatedSlash, SLASH);
} catch (UnsupportedEncodingException e) {
Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDirWikiPageDictionary.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDirWikiPageDictionary.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDirWikiPageDictionary.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -0,0 +1,417 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.wiki;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Queue;
+import java.util.TreeMap;
+
+import javax.crypto.NoSuchPaddingException;
+
+import org.jboss.logging.Logger;
+import org.jboss.wiki.exceptions.PageRenamingException;
+
+/**
+ * FileDirWikiPageDictionary.java
+ *
+ * @author <a href="mailto:tomasz.szymanski at jboss.com">Tomasz Szymanski</a>
+ */
+
+public class FileDirWikiPageDictionary implements WikiPageDictionary {
+
+ private DictionaryNode root;
+
+ private final static Logger log = Logger
+ .getLogger(FileDirWikiPageDictionary.class);
+
+ private String pathToMedia;
+
+ public FileDirWikiPageDictionary() {
+ init("");
+ }
+
+ private void init(String prefix) {
+ Properties fileDSProps = new Properties();
+
+ try {
+
+ fileDSProps.load(FileMediaDataSource.class
+ .getResourceAsStream(FileMediaDataSource.propFileName));
+
+ } catch (IOException ioe) {
+ log.error("Can't load the file " + FileMediaDataSource.propFileName
+ + "\n", ioe);
+ }
+
+ loadProperties(fileDSProps, prefix);
+
+ root = new DictionaryNode(new File(pathToMedia));
+ root.setRealName("");
+ root.setUid("");
+ }
+
+ private void loadProperties(Properties fileDSProps, String prefix) {
+ if (fileDSProps.getProperty("pathToMedia") != null) {
+ pathToMedia = fileDSProps.getProperty("pathToMedia") + "/dict"
+ + (prefix.length() > 0 ? "/" + prefix : "");
+ log.info("Path to dictionary is: " + pathToMedia);
+
+ File mediaDir = new File(pathToMedia);
+
+ if (!mediaDir.exists()) {
+ mediaDir.mkdirs();
+ log.info("Dir for dictionary created");
+ }
+ } else {
+ System.err
+ .println("Your properties file lacks of pathToMedia property. It will not run properly ! Please update "
+ + FileMediaDataSource.propFileName);
+ }
+ }
+
+ public String getRealName(String uid) {
+ log.info("Real: "+uid + " = "+root.getRealName(getQueue(uid)));
+ return root.getRealName(getQueue(uid));
+ }
+
+ private Queue<String> getQueue(String pageName) {
+ return new LinkedList<String>(Arrays.asList(pageName.split("/")));
+ }
+
+ public Map<String, String> getRenameMapings() {
+ Map<String, String> map = new TreeMap<String, String>();
+ root.getRenameMapings("", "", map);
+
+ return map;
+ }
+
+ public String getUid(String realName) {
+ log.info("Uid: "+realName + " = "+root.getUid(getQueue(realName)));
+ return root.getUid(getQueue(realName));
+ }
+
+ public boolean realNameInDictionary(String realName) {
+ return !root.getUid(getQueue(realName)).equals(realName);
+ }
+
+ public void removeDictForPage(String uid) throws PageRenamingException {
+ root.removeDict(getQueue(uid));
+ }
+
+ public void rename(String uid, String newName) throws PageRenamingException {
+ root.rename(getQueue(uid), newName);
+ }
+
+ public void setLanguageCode(String langCode) {
+ init(langCode);
+ }
+
+ public void setWikiEngine(WikiEngine wikiEngine) {
+ // do nothing
+ }
+
+ public boolean uidInDictionary(String uid) {
+ return !root.getRealName(getQueue(uid)).equals(uid);
+ }
+
+}
+
+class DictionaryNode {
+
+ private static final String DICT_PROPS_NAME = "dictionary.properties";
+
+ private final static Logger log = Logger.getLogger(DictionaryNode.class);
+
+ private static final String COMMENT = "Dictionary saved by FileMediaDataSource";
+
+ private Map<String, DictionaryNode> children;
+
+ private Map<String, DictionaryNode> childrenRev;
+
+ private String realName;
+
+ private String uid;
+
+ private Properties dictProps;
+
+ private File dirFile;
+
+ public DictionaryNode(File root) {
+ children = new HashMap<String, DictionaryNode>();
+ childrenRev = new HashMap<String, DictionaryNode>();
+
+ dirFile = root;
+
+ uid = root.getName();
+ realName = uid;
+
+ dictProps = getDictionaryProps(root);
+
+ File[] childDirs = root.listFiles(new FileFilter() {
+ public boolean accept(File pathname) {
+ return pathname.isDirectory();
+ }
+ });
+
+ for (File dir : childDirs) {
+ DictionaryNode node = new DictionaryNode(dir);
+ children.put(dir.getName(), node);
+
+ if (dictProps.getProperty(dir.getName()) != null) {
+ String realName = dictProps.getProperty(dir.getName());
+ childrenRev.put(realName, node);
+ node.setRealName(realName);
+ }
+ }
+ }
+
+ public void removeDict(Queue<String> queue) throws PageRenamingException {
+ String nextUid = queue.poll();
+
+ if (children.get(nextUid) == null) {
+ throw new PageRenamingException("No such entry in dictionary");
+ }
+
+ if (queue.size() == 0) {
+ // remove dict
+ dictProps.remove(nextUid);
+
+ String beforeRealName = children.get(nextUid).getRealName();
+
+ children.get(nextUid).setRealName(nextUid);
+
+ childrenRev.remove(beforeRealName);
+
+ storeThisNode();
+ } else {
+ children.get(nextUid).removeDict(queue);
+ }
+ }
+
+ private String getRealName() {
+ return realName;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid;
+ }
+
+ public void rename(Queue<String> uidQueue, String newName)
+ throws PageRenamingException {
+ if (uidQueue.size() == 1) {
+ // last element - do rename
+
+ String newPageUid = uidQueue.poll();
+
+ log.info("renaming: "+newPageUid+" to "+newName);
+
+ if (childrenRev.get(newName) != null) {
+ throw new PageRenamingException("There is already a page("
+ + childrenRev.get(newName).getUid() + ") renamed to "
+ + newName);
+ }
+
+ File newDict = new File(dirFile.getAbsolutePath() + "/"
+ + newPageUid);
+
+ newDict.mkdir();
+
+ DictionaryNode node = new DictionaryNode(newDict);
+
+ dictProps.setProperty(newPageUid, newName);
+
+ node.setRealName(newName);
+
+ children.put(newPageUid, node);
+ childrenRev.put(newName, node);
+
+ storeThisNode();
+ } else {
+ String newPageUid = uidQueue.poll();
+ if (children.get(newPageUid) != null) {
+ children.get(newPageUid).rename(uidQueue, newName);
+ } else {
+ File newDict = new File(dirFile.getAbsolutePath() + "/"
+ + newPageUid);
+
+ newDict.mkdir();
+
+ DictionaryNode node = new DictionaryNode(newDict);
+
+ children.put(newPageUid, node);
+
+ node.rename(uidQueue, newName);
+ }
+ }
+ }
+
+ private void storeThisNode() {
+ File propsFile = new File(dirFile.getAbsolutePath() + "/"
+ + DICT_PROPS_NAME);
+
+ if (!propsFile.exists()) {
+ try {
+ propsFile.createNewFile();
+ } catch (IOException e) {
+ log.error(e);
+ }
+ }
+
+ try {
+ FileOutputStream fos = new FileOutputStream(propsFile);
+
+ try {
+ dictProps.store(fos, COMMENT);
+ fos.close();
+ } catch (IOException e) {
+ try {
+ fos.close();
+ } catch (IOException e1) {
+ log.error(e1);
+ }
+ log.error(e);
+ }
+ } catch (FileNotFoundException e) {
+ log.error(e);
+ }
+ }
+
+ private String getUid() {
+ return uid;
+ }
+
+ public String getUid(Queue<String> realNameQueue) {
+
+ if (!realNameQueue.isEmpty()) {
+ String name = realNameQueue.poll();
+
+ DictionaryNode node;
+ if ((node = childrenRev.get(name)) != null) {
+ String tail = node.getUid(realNameQueue);
+
+ return ((uid.length() > 0) ? uid + "/" : "") + tail;
+ } else {
+ String ret = ((uid.length() > 0) ? uid + "/" : "") + name;
+
+ while (!realNameQueue.isEmpty()) {
+ ret += "/" + realNameQueue.poll();
+ }
+
+ return ret;
+ }
+ } else {
+ return uid;
+ }
+ }
+
+ public String getRealName(Queue<String> uidQueue) {
+
+ if (!uidQueue.isEmpty()) {
+ String name = uidQueue.poll();
+
+ DictionaryNode node;
+ if ((node = children.get(name)) != null) {
+ String tail = node.getRealName(uidQueue);
+
+ return ((realName.length() > 0) ? realName + "/" : "") + tail;
+ } else {
+
+ String ret = ((realName.length() > 0) ? realName + "/" : "") + name;
+
+ while (!uidQueue.isEmpty()) {
+ ret += "/" + uidQueue.poll();
+ }
+
+ return ret;
+ }
+ } else {
+ return realName;
+ }
+ }
+
+ public void setRealName(String realName) {
+ this.realName = realName;
+ }
+
+ private Properties getDictionaryProps(File dir) {
+ if (dir.isDirectory()) {
+ File propsFile = new File(dir.getAbsolutePath() + "/"
+ + DICT_PROPS_NAME);
+
+ Properties props = new Properties();
+
+ if (propsFile.exists()) {
+ try {
+ FileInputStream fis = new FileInputStream(propsFile);
+
+ try {
+ props.load(fis);
+ fis.close();
+ } catch (IOException e) {
+ try {
+ fis.close();
+ } catch (IOException e1) {
+ log.error(e1);
+ }
+ log.error(e);
+ }
+ } catch (FileNotFoundException e) {
+ log.error(e);
+ }
+ }
+ return props;
+ } else {
+ return null;
+ }
+ }
+
+ public void getRenameMapings(String uidPrefix, String realPrefix,
+ Map<String, String> mapings) {
+ if (!uid.equals(realName)) {
+ mapings.put(addPrefix(uidPrefix, uid), addPrefix(realPrefix,
+ realName));
+ }
+
+ for (DictionaryNode node : children.values()) {
+ node.getRenameMapings(addPrefix(uidPrefix, uid), addPrefix(
+ realPrefix, realName), mapings);
+ }
+ }
+
+ private static String addPrefix(String prefix, String name) {
+ if (prefix.length() > 0) {
+ return prefix + "/" + name;
+ } else
+ return name;
+ }
+}
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileMediaDataSource.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileMediaDataSource.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileMediaDataSource.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -59,7 +59,7 @@
private final static String OTHER_LANG_DIR = "LANG/";
private String GLOBAL_PROPS = "global.properties";
-
+
private final static String LANG_FILE = "languages.properties";
public static final String propFileName = "filedatasource.properties";
@@ -81,7 +81,7 @@
private Logger log;
private String langCode = null;
-
+
private Properties globalProps;
public void setWikiEngine(WikiEngine wikiEngine) {
@@ -208,7 +208,8 @@
try {
pageFileWriter = new PrintWriter(pageFile, CHARSET);
- pageFileReader = new InputStreamReader(new FileInputStream(pageOldFile), CHARSET);
+ pageFileReader = new InputStreamReader(new FileInputStream(
+ pageOldFile), CHARSET);
int b;
@@ -227,9 +228,10 @@
String pageContent = page.getContent();
pageFileWriter.write(pageContent);
- /*for (int i = 0; i < pageContent.length(); i++) {
- pageFileWriter.write((int) pageContent.charAt(i));
- }*/
+ /*
+ * for (int i = 0; i < pageContent.length(); i++) {
+ * pageFileWriter.write((int) pageContent.charAt(i)); }
+ */
pageFileWriter.close();
} catch (FileNotFoundException fnfe) {
@@ -278,11 +280,12 @@
String pageContent = page.getContent();
pageWriter.write(pageContent);
-
- /*for (int i = 0; i < pageContent.length(); i++) {
- pageWriter.write((int) pageContent.charAt(i));
- }*/
+ /*
+ * for (int i = 0; i < pageContent.length(); i++) {
+ * pageWriter.write((int) pageContent.charAt(i)); }
+ */
+
pageWriter.close();
} catch (Exception e) {
@@ -312,7 +315,8 @@
} catch (IOException ioe) {
// There is no prop file for some reson - create one.
- File pagePropsFile = new File(pathToMedia + "/OLD/" + translatedPageName);
+ File pagePropsFile = new File(pathToMedia + "/OLD/"
+ + translatedPageName);
// create dirs
pagePropsFile.mkdirs();
@@ -393,7 +397,8 @@
if (fileName == null)
return null;
- File rolesFile = new File(pathToMedia + "/OLD/" + FileDSCommons.translateToFileName(uid) + "/" + fileName
+ File rolesFile = new File(pathToMedia + "/OLD/"
+ + FileDSCommons.translateToFileName(uid) + "/" + fileName
+ ".properties");
if (!rolesFile.exists()) {
@@ -457,7 +462,8 @@
StringBuilder pageContent = new StringBuilder();
try {
- InputStreamReader input = new InputStreamReader(new FileInputStream(pageFile), CHARSET);
+ InputStreamReader input = new InputStreamReader(
+ new FileInputStream(pageFile), CHARSET);
// FileInputStream input = new FileInputStream(pageFile);
int nextChr = input.read();
@@ -562,14 +568,16 @@
boolean loadContent, int version) {
StringBuilder ret = null;
- File pageFile = new File(pathToMedia + "/OLD/" + FileDSCommons.translateToFileName(uid) + "/" + version
+ File pageFile = new File(pathToMedia + "/OLD/"
+ + FileDSCommons.translateToFileName(uid) + "/" + version
+ ".txt");
if (loadContent) {
try {
-
- InputStreamReader input = new InputStreamReader(new FileInputStream(pageFile), CHARSET);
-
+
+ InputStreamReader input = new InputStreamReader(
+ new FileInputStream(pageFile), CHARSET);
+
int nextChr = input.read();
ret = new StringBuilder();
@@ -634,48 +642,57 @@
private void getPageNamesFor(String directory, Set<String> attSet) {
File attDir = new File(pathToMedia + "/" + directory);
- File[] pageFiles = attDir.listFiles();
- int i;
+ if (attDir.canRead()) {
+ File[] pageFiles = attDir.listFiles();
+ int i;
- for (i = 0; i < pageFiles.length; i++) {
- if ((pageFiles[i].isFile())
- && (pageFiles[i].getName().endsWith(".txt"))) {
- // String[] tokens = pageFiles[i].getName().split("/");
- attSet
- .add((FileDSCommons.translateToPageName(directory)
- + "/" + FileDSCommons
- .translateToPageName(pageFiles[i].getName()
- .substring(
- 0,
- pageFiles[i].getName().length()
- - ".txt".length())))
- .substring(1));
+ for (i = 0; i < pageFiles.length; i++) {
+ if ((pageFiles[i].isFile())
+ && (pageFiles[i].getName().endsWith(".txt"))) {
+ // String[] tokens = pageFiles[i].getName().split("/");
+ attSet.add((FileDSCommons.translateToPageName(directory)
+ + "/" + FileDSCommons
+ .translateToPageName(pageFiles[i].getName()
+ .substring(
+ 0,
+ pageFiles[i].getName().length()
+ - ".txt".length())))
+ .substring(1));
+ }
}
- }
- for (i = 0; i < pageFiles.length; i++) {
- if ((pageFiles[i].isDirectory())
- && (!pageFiles[i].getName().endsWith("-att"))) {
+ for (i = 0; i < pageFiles.length; i++) {
+ if ((pageFiles[i].isDirectory())
+ && (!pageFiles[i].getName().endsWith("-att"))) {
- // do not take dirs from OLD, .svn and trash folders
- if ((!pageFiles[i].getAbsolutePath().equals(
- pathToMedia + "/OLD"))
- && (!pageFiles[i].getAbsolutePath().equals(
- pathToMedia + "/.svn"))
- && (!pageFiles[i].getAbsolutePath().equals(
- pathToMedia + "/"
- + MediaDataSource.mediaTrashName))
- && (!pageFiles[i].getAbsolutePath().equals(
- pathToMedia + "/"
- + AttachmentDataSource.attTrashName))
- && (!pageFiles[i].getAbsolutePath().equals(
- pathToMedia
- + "/"
- + OTHER_LANG_DIR.substring(0,
- OTHER_LANG_DIR.length() - 1)))) {
- // get names for subpages
- getPageNamesFor(directory + "/" + pageFiles[i].getName(),
- attSet);
+ // do not take dirs from OLD, .svn and trash folders
+ if ((!pageFiles[i].getAbsolutePath().equals(
+ pathToMedia + "/OLD"))
+ && (!pageFiles[i].getAbsolutePath().equals(
+ pathToMedia + "/.svn"))
+ && (!pageFiles[i].getAbsolutePath().equals(
+ pathToMedia + "/"
+ + MediaDataSource.mediaTrashName))
+ && (!pageFiles[i]
+ .getAbsolutePath()
+ .equals(
+ pathToMedia
+ + "/"
+ + AttachmentDataSource.attTrashName))
+ && (!pageFiles[i]
+ .getAbsolutePath()
+ .equals(
+ pathToMedia
+ + "/"
+ + OTHER_LANG_DIR
+ .substring(
+ 0,
+ OTHER_LANG_DIR
+ .length() - 1)))) {
+ // get names for subpages
+ getPageNamesFor(directory + "/"
+ + pageFiles[i].getName(), attSet);
+ }
}
}
}
@@ -717,17 +734,20 @@
}
public int getPageMod(String pageName) {
- if (pageModProps.getProperty(FileDSCommons.translateToFileName(pageName)) == null) {
+ if (pageModProps.getProperty(FileDSCommons
+ .translateToFileName(pageName)) == null) {
return (EDITABLE + VIEWABLE);
} else {
- return Integer.valueOf(pageModProps.getProperty(FileDSCommons.translateToFileName(pageName)));
+ return Integer.valueOf(pageModProps.getProperty(FileDSCommons
+ .translateToFileName(pageName)));
}
}
public synchronized void setPageMod(String pageName, int mods) {
if (mods != (EDITABLE + VIEWABLE)) {
- pageModProps.setProperty(FileDSCommons.translateToFileName(pageName), String.valueOf(mods));
+ pageModProps.setProperty(FileDSCommons
+ .translateToFileName(pageName), String.valueOf(mods));
} else {
pageModProps.remove(FileDSCommons.translateToFileName(pageName));
}
@@ -845,7 +865,7 @@
}
String uidTranslated = FileDSCommons.translateToFileName(uid);
-
+
File propsFile = new File(pathToMedia + "/OLD/" + uidTranslated
+ "/metadata.properties");
@@ -886,7 +906,8 @@
public void saveMetadataProps(String uid, Properties props) {
getMetadataProps(uid); // this will create file if needed.
- File propsFile = new File(pathToMedia + "/OLD/" + FileDSCommons.translateToFileName(uid)
+ File propsFile = new File(pathToMedia + "/OLD/"
+ + FileDSCommons.translateToFileName(uid)
+ "/metadata.properties");
FileOutputStream fos = null;
@@ -973,24 +994,25 @@
globalProps = new Properties();
}
File f = new File(pathToMedia + "/" + GLOBAL_PROPS);
-
+
if (!f.exists()) {
f.createNewFile();
}
-
+
FileInputStream fis = new FileInputStream(f);
-
+
globalProps.load(fis);
-
+
fis.close();
}
-
- public synchronized void setGlobalProperty(String key, String value) throws DataSourceException {
+
+ public synchronized void setGlobalProperty(String key, String value)
+ throws DataSourceException {
try {
refreshGlobalProps();
-
+
globalProps.setProperty(key, value);
-
+
saveGlobalProps();
} catch (IOException e) {
throw new DataSourceException(e);
@@ -1002,22 +1024,23 @@
globalProps = new Properties();
}
File f = new File(pathToMedia + "/" + GLOBAL_PROPS);
-
+
if (!f.exists()) {
f.createNewFile();
}
-
+
FileOutputStream fos = new FileOutputStream(f);
-
+
globalProps.store(fos, SAVE_COMMENT);
-
+
fos.close();
}
- public synchronized String getGlobalProperty(String key) throws DataSourceException{
+ public synchronized String getGlobalProperty(String key)
+ throws DataSourceException {
try {
refreshGlobalProps();
-
+
return globalProps.getProperty(key);
} catch (IOException e) {
throw new DataSourceException(e);
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -656,7 +656,7 @@
}
public String getRealName(String uid, String langCode) {
- String[] pageTokens = uid.split("/");
+ /*String[] pageTokens = uid.split("/");
// log.info("Looking at page: (realName) "+uid);
@@ -705,56 +705,44 @@
}
} else
return languageDataSources.get(langCode).getWikiPageDictionary()
- .getRealName(uid);
+ .getRealName(uid);*/
+ return languageDataSources.get(langCode).getWikiPageDictionary()
+ .getRealName(uid);
}
public String getUid(String realName, String langCode) {
- String[] pageTokens = realName.split("/");
-
- // log.info("Looking at page: (uid) "+realName);
-
- if (pageTokens.length > 1) {
- if (!languageDataSources.get(langCode).getWikiPageDictionary()
- .getUid(realName).equals(realName)) {
- // this page is in dictionary
- return languageDataSources.get(langCode)
- .getWikiPageDictionary().getUid(realName);
- } else {
- // look if parts of this page are in dictionary
-
- for (int i = pageTokens.length - 1; i > 0; i--) {
- String page = "";
- String suffix = "";
- for (int j = 0; j < i; j++) {
- page += "/" + pageTokens[j];
- }
-
- // build suffix
-
- for (int j = i; j < pageTokens.length; j++) {
- suffix += "/" + pageTokens[j];
- }
-
- page = page.substring(1);
-
- // log.info("Looking at page: (uid) "+page);
-
- if (!languageDataSources.get(langCode)
- .getWikiPageDictionary().getUid(page).equals(page)) // this
- // page
- // is
- // in
- // dictionary
- return languageDataSources.get(langCode)
- .getWikiPageDictionary().getUid(page)
- + suffix;
- }
-
- return realName;
- }
- } else
- return languageDataSources.get(langCode).getWikiPageDictionary()
- .getUid(realName);
+ /*
+ * String[] pageTokens = realName.split("/");
+ *
+ * if (pageTokens.length > 1) { if
+ * (!languageDataSources.get(langCode).getWikiPageDictionary()
+ * .getUid(realName).equals(realName)) { // this page is in dictionary
+ * return languageDataSources.get(langCode)
+ * .getWikiPageDictionary().getUid(realName); } else { // look if parts
+ * of this page are in dictionary
+ *
+ * for (int i = pageTokens.length - 1; i > 0; i--) { String page = "";
+ * String suffix = ""; for (int j = 0; j < i; j++) { page += "/" +
+ * pageTokens[j]; }
+ * // build suffix
+ *
+ * for (int j = i; j < pageTokens.length; j++) { suffix += "/" +
+ * pageTokens[j]; }
+ *
+ * page = page.substring(1);
+ * // log.info("Looking at page: (uid) "+page);
+ *
+ * if (!languageDataSources.get(langCode)
+ * .getWikiPageDictionary().getUid(page).equals(page)) // this // page //
+ * is // in // dictionary return languageDataSources.get(langCode)
+ * .getWikiPageDictionary().getUid(page) + suffix; }
+ *
+ * return realName; } } else return
+ * languageDataSources.get(langCode).getWikiPageDictionary()
+ * .getUid(realName);
+ */
+ return languageDataSources.get(langCode).getWikiPageDictionary()
+ .getUid(realName);
}
public synchronized void rename(String uid, String newName, String langCode)
@@ -767,11 +755,6 @@
"Page with the name you're trying rename to already exists.");
}
- if (uid.indexOf("/") != -1) {
- // renaming subpage - create aprop. newName
- newName = uid.substring(0, uid.lastIndexOf("/") + 1) + newName;
- }
-
if (!arePagesEdited()) {
languageDataSources.get(langCode).getWikiPageDictionary().rename(
uid, newName);
@@ -826,19 +809,21 @@
public int getLastAttachmentVersion(String pageName, String attachmentName,
String langCode) {
return languageDataSources.get(langCode).getAttachmentDataSource()
- .getLastAttachmentVersion(pageName, attachmentName);
+ .getLastAttachmentVersion(getUid(pageName, langCode),
+ attachmentName);
}
public WikiAttachment getAttachment(String pageName,
String attachementName, int version, String langCode) {
return languageDataSources.get(langCode).getAttachmentDataSource()
- .getAttachment(pageName, attachementName, version);
+ .getAttachment(getUid(pageName, langCode), attachementName,
+ version);
}
public WikiAttachment getAttachment(String pageName,
String attachementName, String langCode) {
return languageDataSources.get(langCode).getAttachmentDataSource()
- .getAttachment(pageName, attachementName);
+ .getAttachment(getUid(pageName, langCode), attachementName);
}
public void addAttachment(InputStream attFile, String attName,
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/SubpagesListPlugin.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/SubpagesListPlugin.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/SubpagesListPlugin.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -31,22 +31,28 @@
@Override
public WikiPage process(WikiPage wikiPage, WikiSession wikiSession) {
- StringBuilder subpageList = new StringBuilder(wikiPage.getPageContent()+"\n");
-
- subpageList.append(HTMLTranslatorParts.pagePartRegexStart).append("----\n!!Subpages list:\\\\\n");
-
- Set<String> subPages = wikiEngine.getPagesFor(wikiPage.getName(), wikiPage.getLangCode());
-
+ StringBuilder subpageList = new StringBuilder(wikiPage.getPageContent()
+ + "\n");
+
+ subpageList.append(HTMLTranslatorParts.pagePartRegexStart).append(
+ "----\n!!Subpages list:\\\\\n");
+
+ Set<String> subPages = wikiEngine.getPagesFor(wikiEngine.getUid(
+ wikiPage.getName(), wikiPage.getLangCode()), wikiPage
+ .getLangCode());
+
for (String page : subPages) {
- subpageList.append("[").append(page).append("]\\\\\n");
+ subpageList.append("[").append(
+ wikiEngine.getUid(page, wikiPage.getLangCode())).append(
+ "]\\\\\n");
}
-
+
subpageList.append(HTMLTranslatorParts.pagePartRegexEnd);
-
- if (subPages.size() > 0 ) {
+
+ if (subPages.size() > 0) {
wikiPage.setContent(subpageList.toString());
}
-
+
return wikiPage;
}
Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TrailPlugin.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TrailPlugin.java 2006-12-05 19:46:38 UTC (rev 8073)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TrailPlugin.java 2006-12-05 19:51:38 UTC (rev 8074)
@@ -31,6 +31,8 @@
public WikiPage process(WikiPage wikiPage, WikiSession wikiSession) {
String trailAttrName = wikiPage.getLangCode()+":TRAIL";
+ log.info("trail");
+
WikiPage newPage = null;
try {
newPage = (WikiPage) wikiPage.clone();
@@ -38,8 +40,10 @@
System.err.println(e);
}
- String trail = "["+newPage.getName()+"] ";
+ String trail = "["+wikiEngine.getUid(newPage.getName(), newPage.getLangCode())+"] ";
+ log.info("Show trail: " + trail);
+
if (wikiSession.getAttribute(trailAttrName) != null) {
String oldTrail = (String)wikiSession.getAttribute(trailAttrName);
More information about the jboss-svn-commits
mailing list