|
From: <jbo...@li...> - 2005-08-16 16:07:03
|
Author: szimano
Date: 2005-08-16 12:06:49 -0400 (Tue, 16 Aug 2005)
New Revision: 865
Modified:
trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/FileDataSource.java
trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/MediaDataSource.java
trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiEngine.java
trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPage.java
trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPlugin.java
trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java
trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java
trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/jsp/Edit.jsp
trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp
Log:
some changes
Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/FileDataSource.java
===================================================================
--- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/FileDataSource.java 2005-08-16 11:28:17 UTC (rev 864)
+++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/FileDataSource.java 2005-08-16 16:06:49 UTC (rev 865)
@@ -90,6 +90,8 @@
}
public WikiPage getPage(String pageName) {
+ System.out.println("[WIKI:FileDataSource]: Getting new page: "+pageName);
+
WikiPage page = null;
File pageFile = new File(pathToMedia + "/" + pageName + ".txt");
@@ -252,4 +254,15 @@
}
}
+ public boolean pageExists(String pageName) {
+ File pageFile = new File(pathToMedia + "/" + pageName + ".txt");
+
+ if (pageFile.exists()) {
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+
}
Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/MediaDataSource.java
===================================================================
--- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/MediaDataSource.java 2005-08-16 11:28:17 UTC (rev 864)
+++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/MediaDataSource.java 2005-08-16 16:06:49 UTC (rev 865)
@@ -71,6 +71,8 @@
public WikiPage getPageAtVersion(String pageName, String languageCode, int version);
public WikiPage getPageAtVersion(String pageName, int version);
+
+ public boolean pageExists(String pageName);
}
Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiEngine.java
===================================================================
--- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiEngine.java 2005-08-16 11:28:17 UTC (rev 864)
+++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiEngine.java 2005-08-16 16:06:49 UTC (rev 865)
@@ -88,6 +88,11 @@
// your code here
return false;
}
+
+ public boolean pageExists(String pageName) {
+
+ return false;
+ }
/**
* <p>
@@ -115,9 +120,7 @@
* @param wikiContext
*/
public WikiPage getByName(String pageName, WikiContext wikiContext) {
-
- // TODO: make user authentication with wikiContext
-
+
WikiPage ret = null;
if (pages.containsKey(pageName)) {
@@ -128,10 +131,14 @@
pages.put(pageName, ret);
}
- if (wikiContext != null) {
- return wikiContext.process(ret);
+ if (ret != null) {
+ if (wikiContext != null) {
+ return wikiContext.process(ret);
+ } else {
+ return ret;
+ }
} else {
- return ret;
+ return null;
}
}
Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPage.java
===================================================================
--- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPage.java 2005-08-16 11:28:17 UTC (rev 864)
+++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPage.java 2005-08-16 16:06:49 UTC (rev 865)
@@ -9,6 +9,7 @@
package org.jboss.wiki;
import java.io.Serializable;
+import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
@@ -32,9 +33,13 @@
*/
private static final long serialVersionUID = 1L;
+ /* number of minutes after which page lock will expire */
+ private static final int LOCK_TIME = 30;
+
private Date lockTime = null;
-
+
private String lockUser;
+
/**
* <p>
* Represents ...
@@ -315,12 +320,47 @@
getPageContent(), getLastVersion(), getEditDate());
return clonedPage;
}
-
+
+ public void unlock(User user) {
+ System.out.println("UNLOCK: "+user.getUserName()+" save user: "+lockUser);
+ if ((user.getUserName()).equals(lockUser)) {
+ System.out.println("Unlocking page");
+ lockTime = null;
+ lockUser = null;
+ }
+ }
+
public Date lock(User user) {
- Date lockTime = null;
-
- //if
- return lockTime;
+ Date now = new Date();
+ Date expDate = null;
+ Date retDate = lockTime;
+
+ if (this.lockTime != null) {
+ // lets calculete expire date of current lock
+
+ Calendar calExpireDate = Calendar.getInstance();
+ calExpireDate.setTime(this.lockTime);
+ calExpireDate.add(Calendar.MINUTE, LOCK_TIME);
+ expDate = calExpireDate.getTime();
+
+ if (expDate.before(now)) {
+ // lock expired. take it out
+ lockTime = null;
+ lockUser = null;
+ }
+ }
+
+ if (this.lockTime == null) {
+ System.out.println("LOCK: "+user.getUserName());
+
+ // page isn't locked or lock expired. Lets lock it.
+ this.lockTime = now;
+ this.lockUser = user.getUserName();
+ System.out.println("LOCK: "+lockUser);
+ retDate = null;
+ }
+
+ return retDate;
}
public String getLockUser() {
Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPlugin.java
===================================================================
--- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPlugin.java 2005-08-16 11:28:17 UTC (rev 864)
+++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPlugin.java 2005-08-16 16:06:49 UTC (rev 865)
@@ -33,7 +33,7 @@
* @return
* @param content
*/
- public abstract WikiPage process(WikiPage wikiPage);
+ public abstract WikiPage process(final WikiPage wikiPage);
/**
* <p>Does ...</p>
Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java
===================================================================
--- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2005-08-16 11:28:17 UTC (rev 864)
+++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2005-08-16 16:06:49 UTC (rev 865)
@@ -16,8 +16,9 @@
import org.jboss.portlet.*;
/**
- * The WikiPortlet.<p>
- *
+ * The WikiPortlet.
+ * <p>
+ *
* @author <a href="mailto:ds...@jb...">Damon Sicore</a>
* @author <a href="mailto:tom...@jb...">Tomasz Szimanski</a>
* @version $Id$
@@ -36,21 +37,28 @@
}
public void processAction(JBossActionRequest rReq, JBossActionResponse rResp) {
-
- WikiContext wikiContext = new WikiContext(rReq.getUser(), wikiEngine.getWikiType("HTML"));
-
+
+ WikiContext wikiContext = new WikiContext(rReq.getUser(), wikiEngine
+ .getWikiType("HTML"));
+
if (rReq.getParameter("action") != null) {
rResp.setRenderParameter("action", rReq.getParameter("action"));
}
if (rReq.getParameter("page") != null) {
rResp.setRenderParameter("page", rReq.getParameter("page"));
-
+
}
if (rReq.getParameter("editAction") != null) {
System.out.println("EDITING PAGE");
+ // unlock page
+ WikiPage edPage = wikiEngine.getByName((String) rReq
+ .getParameter("editedPage"), wikiContext);
+
+ edPage.unlock(rReq.getUser());
+
// saving, previewing or canceling
if (rReq.getParameter("editAction").equals("Save")) {
@@ -60,8 +68,6 @@
System.out.println("SAVING PAGE");
// save the page
- WikiPage edPage = wikiEngine.getByName(rReq
- .getParameter("editedPage"), wikiContext);
if (edPage == null) {
edPage = new WikiPage(rReq.getParameter("editedPage"),
@@ -89,51 +95,79 @@
public void doView(JBossRenderRequest rReq, JBossRenderResponse rRes)
throws PortletException, java.io.IOException {
+
+ WikiPage noSuchPage = new WikiPage("", new Credentials(""), "There is no such page. Click on EDIT to start it.", 0, null);
String page = "Wiki.jsp";
-
+
String wikiPage = defaultPage;
-
+
WikiPage pageToShow = null;
-
- WikiContext wikiContext = null ;
-
+
+ WikiContext wikiContext = null;
+
if (rReq.getParameter("page") != null) {
wikiPage = rReq.getParameter("page");
}
-
+
if ((rReq.getParameter("action") != null)
- && (rReq.getParameter("action").equals("Edit"))) {
+ && (rReq.getParameter("action").equals("Edit"))
+ && (rReq.getUser() != null)) {
page = "Edit.jsp";
+
pageToShow = wikiEngine.getByName(wikiPage, wikiContext);
-
+
+ if (pageToShow == null) {
+ // start editing new page
+ // wikiPage = defaultPage;
+
+ pageToShow = new WikiPage(wikiPage, new Credentials(rReq
+ .getUser().getUserName()), "", 0, new Date());
+ // wikiEngine.getByName(wikiPage, wikiContext);
+ }
+
Date dateLock = pageToShow.lock(rReq.getUser());
-
+
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 {
page = "Wiki.jsp";
- wikiContext = new WikiContext(rReq.getUser(), wikiEngine.getWikiType("HTML"));
+ wikiContext = new WikiContext(rReq.getUser(), wikiEngine
+ .getWikiType("HTML"));
pageToShow = wikiEngine.getByName(wikiPage, wikiContext);
-
+
+ if (pageToShow == null) {
+
+ try {
+ pageToShow = (WikiPage)noSuchPage.clone();
+ }
+ catch (CloneNotSupportedException cnse){
+ System.out.println(cnse);
+ }
+
+ pageToShow.setName(wikiPage);
+ }
+
}
-
+
PortletURL wikiURL = rRes.createActionURL();
rReq.setAttribute("actionURL", wikiURL.toString());
- rReq.setAttribute("wikiName", "<img src=\"/file-access/default/members/jbosswiki/images/JBossWikiLogoMedium.png\" width=\"100\" />");
+ rReq
+ .setAttribute(
+ "wikiName",
+ "<img src=\"/file-access/default/members/jbosswiki/images/JBossWikiLogoMedium.png\" width=\"100\" />");
- if (pageToShow == null) {
- // TODO MOVE IT UP !!!
-
- wikiPage = defaultPage;
-
- pageToShow = wikiEngine.getByName(wikiPage, wikiContext);
- }
-
rReq.setAttribute("wikiContent", pageToShow.getContent());
rReq.setAttribute("wikiPage", wikiPage);
@@ -142,6 +176,9 @@
rReq.setAttribute("author", pageToShow.getLastAuthor());
+ rReq.setAttribute("logedIn", (rReq.getUser() != null) ? "true"
+ : "false");
+
rRes.setTitle("Wiki");
if (javax.portlet.WindowState.NORMAL.equals(rReq.getWindowState())
|| javax.portlet.WindowState.MAXIMIZED.equals(rReq
Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java
===================================================================
--- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java 2005-08-16 11:28:17 UTC (rev 864)
+++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java 2005-08-16 16:06:49 UTC (rev 865)
@@ -787,7 +787,7 @@
return clean.toString();
}
- public WikiPage process(WikiPage wikiPage) {
+ public WikiPage process(final WikiPage wikiPage) {
WikiPage newPage = null;
try {
Modified: trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/jsp/Edit.jsp
===================================================================
--- trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/jsp/Edit.jsp 2005-08-16 11:28:17 UTC (rev 864)
+++ trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/jsp/Edit.jsp 2005-08-16 16:06:49 UTC (rev 865)
@@ -11,12 +11,17 @@
String wikiName = (String)request.getAttribute("wikiName");
String wikiContent = (String)request.getAttribute("wikiContent");
String wikiPage = (String)request.getAttribute("wikiPage");
+ String lockMsg = (String)request.getAttribute("lockMsg");
+
+ if (lockMsg == null)
+ lockMsg = "";
+
%>
<h2><%=wikiName%>: <%=wikiPage%></h2>
<hr />
-
+<div style="color:#FF0000"><%=lockMsg%></div>
<form method="post" action="<%=actionURL%>">
<textarea name="wikiContent" rows="40" cols="80" style="width:100%;">
Modified: trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp
===================================================================
--- trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp 2005-08-16 11:28:17 UTC (rev 864)
+++ trunk/forge/portal-extensions/forge-wiki/src/web/WEB-INF/jsp/Wiki.jsp 2005-08-16 16:06:49 UTC (rev 865)
@@ -41,7 +41,26 @@
<tr>
<td class="wikiFooter">
<hr />
-<a href="<%=actionURL%>&action=Edit&page=<%=wikiPage%>">Edit this page</a> <a href="<%=actionURL%>">More info...</a> <a href="<%=actionURL%>">Attach file...</a>
+
+
+<%
+
+ String logedIn = (String)request.getAttribute("logedIn");
+
+
+ if (logedIn.equals("true")) {
+ out.print("<a href='"+actionURL+"&action=Edit&page="+wikiPage+"'>Edit page</a>");
+
+ }
+ else {
+ out.print("<i>Login to edit pages</i>");
+ }
+
+%>
+
+
+
+<a href="<%=actionURL%>">More info...</a> <a href="<%=actionURL%>">Attach file...</a>
</td>
</tr>
</table>
|