Author: thomas.heute(a)jboss.com
Date: 2008-07-15 09:52:13 -0400 (Tue, 15 Jul 2008)
New Revision: 11450
Added:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/util/ResourceUtil.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileSize.java
Modified:
branches/JBoss_Portal_Branch_2_7/cms/build.xml
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/CMSObjectImpl.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/ContentImpl.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/FileImpl.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/interceptors/ACLInterceptor.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/JCRCMS.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ACLEnforcer.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentCreateCommand.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentGetCommand.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentGetVersionsCommand.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileCreateCommand.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileGetListCommand.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileUpdateAndVersionCommand.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileUpdateCommand.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FolderCreateCommand.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/StoreArchiveCommand.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/model/Content.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/model/File.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileArchiveUpload.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileCreate.java
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFolderCreate.java
branches/JBoss_Portal_Branch_2_7/core-cms/src/main/org/jboss/portal/core/cms/ui/admin/CMSAdminPortlet.java
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/classes/Resource.properties
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/create.jsp
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/edit.jsp
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/folderlist.jsp
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/pending_items.jsp
Log:
Merging changes from Sohil made on Branch 2.6:
JBPORTAL-2046 - Exception is thrown upon clicking the '+' symbol of the 'Root
Folder' node when moving content
JBPORTAL-2015 - CMS content object should return a long for the size
JBPORTAL-2016 - CMS content object should have a method to return the size of the latest
version of the file
JBPORTAL-2031 - Create CMS content which contains a slash '/' fails
JBPORTAL-2002 - VersionException thrown when you try to upload an archive (ZIP) that
contains files that already exists in the repository
JBPORTAL-2033 - User with only read-permissions on a folder cannot read a folder
JBPORTAL-1929 , JBPORTAL-1982 - Relative links in CMS content munged by WYSIWYG editor
Modified: branches/JBoss_Portal_Branch_2_7/cms/build.xml
===================================================================
--- branches/JBoss_Portal_Branch_2_7/cms/build.xml 2008-07-15 11:31:57 UTC (rev 11449)
+++ branches/JBoss_Portal_Branch_2_7/cms/build.xml 2008-07-15 13:52:13 UTC (rev 11450)
@@ -407,6 +407,7 @@
<test todir="${test.reports}"
name="org.jboss.portal.test.cms.commands.TestFileCreateFailed"/>
<test todir="${test.reports}"
name="org.jboss.portal.test.cms.commands.TestFileDelete"/>
<test todir="${test.reports}"
name="org.jboss.portal.test.cms.commands.TestSearch"/>
+ <test todir="${test.reports}"
name="org.jboss.portal.test.cms.commands.TestFileSize"/>
<test todir="${test.reports}"
name="org.jboss.portal.test.cms.commands.TestFolderCopy"/>
<test todir="${test.reports}"
name="org.jboss.portal.test.cms.commands.TestFolderCreate"/>
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/CMSObjectImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/CMSObjectImpl.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/CMSObjectImpl.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -23,6 +23,7 @@
package org.jboss.portal.cms.impl;
import org.jboss.portal.cms.model.CMSObject;
+import org.jboss.portal.cms.util.FileUtil;
import java.io.Serializable;
import java.util.Date;
@@ -87,12 +88,12 @@
public String getBasePath()
{
- return basePath;
+ return FileUtil.cleanDoubleSlashes(basePath);
}
public void setBasePath(String basePath)
- {
- this.basePath = basePath;
+ {
+ this.basePath = FileUtil.cleanDoubleSlashes(basePath);
}
public String getBaseUUID()
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/ContentImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/ContentImpl.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/ContentImpl.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -60,7 +60,7 @@
protected String mimeType;
- protected int size;
+ protected long size;
protected boolean isWaitingForPublishApproval = false;
protected String approvalProcessId = null;
@@ -166,7 +166,7 @@
isLive = live;
}
- public int getSize()
+ public long getSize()
{
return this.size;
}
@@ -181,7 +181,7 @@
this.mimeType = mimeType;
}
- public void setSize(int size)
+ public void setSize(long size)
{
this.size = size;
}
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/FileImpl.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/FileImpl.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/FileImpl.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -34,19 +34,8 @@
{
/** The serialVersionUID */
private static final long serialVersionUID = 7700626816158921578L;
- protected long fileSize;
protected Content content;
- public long getFileSize()
- {
- return fileSize;
- }
-
- public void setFileSize(long fileSize)
- {
- this.fileSize = fileSize;
- }
-
public void setContent(Locale locale, Content content)
{
this.content = content;
@@ -64,5 +53,10 @@
return this.content;
}
+
+ public long getSize()
+ {
+ return this.content.getSize();
+ }
}
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/interceptors/ACLInterceptor.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/interceptors/ACLInterceptor.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/interceptors/ACLInterceptor.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -232,44 +232,52 @@
JCRCommand command =
(JCRCommand)securityContext.getAttribute("command");
try
{
- if (filteredResponse instanceof Folder)
+ //UI-level filtering of resources for the CMSAdmin tool
+ if(JCRCMS.isUISecurityFilterActive())
{
- Folder folder = (Folder)filteredResponse;
- List filteredFolders = new ArrayList();
- List filteredFiles = new ArrayList();
- securityContext.removeAttribute("command");
- if (folder.getFolders() != null)
+ if (filteredResponse instanceof Folder)
{
- for (Iterator itr = folder.getFolders().iterator(); itr.hasNext();)
+ Folder folder = (Folder)filteredResponse;
+ List filteredFolders = new ArrayList();
+ List filteredFiles = new ArrayList();
+ securityContext.removeAttribute("command");
+ if (folder.getFolders() != null)
{
- Folder cour = (Folder)itr.next();
- securityContext.setAttribute("applyFilter",
cour.getBasePath());
- PortalPermission cmsPermission = new CMSPermission(securityContext);
- boolean allow =
this.authorizationManager.checkPermission(cmsPermission);
- if (allow)
+ for (Iterator itr = folder.getFolders().iterator(); itr.hasNext();)
{
- filteredFolders.add(cour);
+ Folder cour = (Folder)itr.next();
+ securityContext.setAttribute("applyFilter",
cour.getBasePath());
+ securityContext.setAttribute("isFolder", Boolean.TRUE);
+ PortalPermission cmsPermission = new
CMSPermission(securityContext);
+ boolean allow =
this.authorizationManager.checkPermission(cmsPermission);
+ if (allow)
+ {
+ filteredFolders.add(cour);
+ }
}
}
- }
- if (folder.getFiles() != null)
- {
- for (Iterator itr = folder.getFiles().iterator(); itr.hasNext();)
+ if (folder.getFiles() != null)
{
- File cour = (File)itr.next();
- securityContext.setAttribute("applyFilter",
cour.getBasePath());
- PortalPermission cmsPermission = new CMSPermission(securityContext);
- boolean allow =
this.authorizationManager.checkPermission(cmsPermission);
- if (allow)
+ for (Iterator itr = folder.getFiles().iterator(); itr.hasNext();)
{
- filteredFiles.add(cour);
+ File cour = (File)itr.next();
+ securityContext.setAttribute("applyFilter",
cour.getBasePath());
+ securityContext.setAttribute("isFolder", Boolean.FALSE);
+ PortalPermission cmsPermission = new
CMSPermission(securityContext);
+ boolean allow =
this.authorizationManager.checkPermission(cmsPermission);
+ if (allow)
+ {
+ filteredFiles.add(cour);
+ }
}
}
+ folder.setFolders(filteredFolders);
+ folder.setFiles(filteredFiles);
}
- folder.setFolders(filteredFolders);
- folder.setFiles(filteredFiles);
}
- else if ((filteredResponse instanceof List) && (command instanceof
SearchCommand))
+
+ //Filtering of resources in the context of Search
+ if ((filteredResponse instanceof List) && (command instanceof
SearchCommand))
{
List list = (List)filteredResponse;
List filteredFiles = new ArrayList();
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/JCRCMS.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/JCRCMS.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/JCRCMS.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -132,6 +132,30 @@
{
turnOffWorkflow.set(null);
}
+
+ /**
+ *
+ */
+ protected static ThreadLocal applyUISecurityFilter = new ThreadLocal();
+ public static void enableUISecurityFilter()
+ {
+ applyUISecurityFilter.set(Boolean.TRUE);
+ }
+ public static void disableUISecurityFilter()
+ {
+ applyUISecurityFilter.set(null);
+ }
+ public static boolean isUISecurityFilterActive()
+ {
+ boolean isUISecurityFilterActive = false;
+
+ if(applyUISecurityFilter.get() != null &&
((Boolean)applyUISecurityFilter.get()))
+ {
+ isUISecurityFilterActive = true;
+ }
+
+ return isUISecurityFilterActive;
+ }
public JCRCMS()
{
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ACLEnforcer.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ACLEnforcer.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ACLEnforcer.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -35,7 +35,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -146,7 +145,15 @@
if (cmsSecurityContext.getAttribute("applyFilter") != null)
{
String path =
(String)cmsSecurityContext.getAttribute("applyFilter");
- hasAccess = this.computeToolAccess(loggedInUser, path);
+ Boolean isFolder =
(Boolean)cmsSecurityContext.getAttribute("isFolder");
+ if(isFolder)
+ {
+ hasAccess = this.hasReadAccess(loggedInUser, path);
+ }
+ else
+ {
+ hasAccess = this.hasWriteAccess(loggedInUser, path);
+ }
}
else if (cmsSecurityContext.getAttribute("path") != null)
{
@@ -211,22 +218,33 @@
path = ((FileGetListCommand)command).sFilePath;
}
- hasReadAccess = this.computeAccess(user, path, "read");
- if (!hasReadAccess)
+ hasReadAccess = this.hasReadAccess(user, path);
+
+ return hasReadAccess;
+ }
+
+ /**
+ *
+ * @param user
+ * @param path
+ * @return
+ */
+ private boolean hasReadAccess(User user, String path)
+ {
+ boolean hasAccess = this.computeAccess(user, path, "read");
+ if (!hasAccess)
{
//make sure implied write is not available
- hasReadAccess = this.computeAccess(user, path, "write");
- if (!hasReadAccess)
+ hasAccess = this.computeAccess(user, path, "write");
+ if (!hasAccess)
{
//make sure implied manage is not available
- hasReadAccess = this.computeAccess(user, path, "manage");
+ hasAccess = this.computeAccess(user, path, "manage");
}
}
-
- return hasReadAccess;
+ return hasAccess;
}
-
//-------------------------------------------------------------------------------------------------------------------------------------------
/**
* @param user
* @param command
@@ -275,8 +293,24 @@
return hasWriteAccess;
}
+
+ /**
+ *
+ * @param user
+ * @param path
+ * @return
+ */
+ private boolean hasWriteAccess(User user, String path)
+ {
+ boolean hasAccess = this.computeAccess(user, path, "write");
+ if (!hasAccess)
+ {
+ //make sure implied manage is not available
+ hasAccess = this.computeAccess(user, path, "manage");
+ }
+ return hasAccess;
+ }
-
//-----------------------------------------------------------------------------------------------------------------------------------------
/**
* @param user
* @param command
@@ -315,8 +349,7 @@
return hasManageAccess;
}
-
-
//-----------------------------------------------------------------------------------------------------------------------------------------
+
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------
/**
*
*/
@@ -461,82 +494,9 @@
}
/**
- * This is used to filter out cms resources in the CMS Admin tool, so that the user
can see only the resources that
- * he has write/manage access to
- *
* @param user
- * @param path
* @return
*/
- private boolean computeToolAccess(User user, String path)
- {
- boolean toolAccess = false;
-
- //to prevent any administration issues, if the user is the 'cmsRoot'
- //treat him like a super user with access to everything in the cms
- User root = this.authorizationManager.getProvider().getRoot();
- if (user != null && user.getUserName() != null &&
user.getUserName().equals(root.getUserName()))
- {
- return true;
- }
-
- //get the permissions available for the user in question
- Collection userPermissions = this.getPermissions(user);
-
- //check against permissions that are explicitly specified on this node (file or
folder)
- Collection specificPermissions = this.getPermissions(path);
- for (Iterator itr = specificPermissions.iterator(); itr.hasNext();)
- {
- Permission specificPermission = (Permission)itr.next();
- if ((specificPermission.getService().equals("cms")) &&
- (specificPermission.getAction().equals("write") ||
specificPermission.getAction().equals("manage"))
- )
- {
- for (Iterator itr2 = userPermissions.iterator(); itr2.hasNext();)
- {
- Permission userPermission = (Permission)itr2.next();
- if ((userPermission.getService().equals("cms")) &&
- (userPermission.getAction().equals("write") ||
userPermission.getAction().equals("manage"))
- )
- {
- String pathCriteria =
userPermission.findCriteriaValue("path");
- if (pathCriteria.equals(path))
- {
- //this means this user has read access to this path
- toolAccess = true;
- }
- }
- }
- }
- }
-
- if (specificPermissions != null && !specificPermissions.isEmpty())
- {
- //explicit permissions on this node have been specified....
- //which override any permissions that could be inherited via the path hierarchy
- return toolAccess;
- }
-
- //if i am here...calculate based on permissions inherited via path hierarchy
- Collection writeOrMoreCriteria = this.getWriteOrMore(userPermissions);
- for (Iterator itr = writeOrMoreCriteria.iterator(); itr.hasNext();)
- {
- Criteria cour = (Criteria)itr.next();
- if (this.doesPathMatchPattern(path, cour.getValue()))
- {
-
- toolAccess = true;
- break;
- }
- }
-
- return toolAccess;
- }
-
- /**
- * @param user
- * @return
- */
private boolean computeWorkflowManagementAccess(User user, Set managerRoles)
{
if (managerRoles == null || managerRoles.isEmpty())
@@ -614,106 +574,6 @@
}
/**
- * @param allPermissions
- * @return
- */
- private Collection getWriteOrMore(Collection allPermissions)
- {
- Collection writeOrMore = new HashSet();
-
- if (allPermissions != null)
- {
- for (Iterator itr = allPermissions.iterator(); itr.hasNext();)
- {
- Permission cour = (Permission)itr.next();
- if ((cour.getService().equals("cms")) &&
- (cour.getAction().equals("write") ||
cour.getAction().equals("manage"))
- )
- {
- writeOrMore.addAll(cour.getCriteria());
- }
- }
- }
-
- return writeOrMore;
- }
-
- /**
- * @param path
- * @param pattern
- * @return
- */
- private boolean doesPathMatchPattern(String path, String pattern)
- {
- boolean match = true;
-
- //format the path first before starting to match it with the specified pattern
- if (!path.startsWith("/"))
- {
- path = "/" + path;
- }
- if (!path.endsWith("/"))
- {
- path = path + "/";
- }
-
- StringTokenizer patternTokenizer = new StringTokenizer(pattern, "/");
- StringTokenizer pathTokenizer = new StringTokenizer(path, "/");
- StringBuffer pathMatched = new StringBuffer("/");
- StringBuffer patternMatched = new StringBuffer();
- if (pattern.startsWith("/"))
- {
- patternMatched.append("/");
- }
- while (
- patternTokenizer.hasMoreTokens() &&
- pathTokenizer.hasMoreTokens()
- )
- {
- String patternToken = patternTokenizer.nextToken();
- String pathToken = pathTokenizer.nextToken();
-
- //setup token tracking
- pathMatched.append(pathToken + "/");
- if (patternTokenizer.hasMoreTokens())
- {
- patternMatched.append(patternToken + "/");
- }
- else
- {
- patternMatched.append(patternToken);
- }
-
- //perform token matching
- if (!match)
- {
- continue;
- }
- int wildCardIndex = patternToken.indexOf('*');
- //if wildCard is not relevant
- if (wildCardIndex <= 0)
- {
- //if wildCardIndex == 0 then this token matches...
- if (wildCardIndex != 0 && !pathToken.equals(patternToken))
- {
- match = false;
- }
- }
- else
- {
- String wildPath = pathToken.substring(0, wildCardIndex);
- String wildPattern = patternToken.substring(0, wildCardIndex);
- if (!wildPath.equals(wildPattern))
- {
- match = false;
- }
- }
- }
-
- return match;
- }
-
- /**
* @param action
* @param impliedTarget
* @return
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentCreateCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentCreateCommand.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentCreateCommand.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -62,6 +62,8 @@
contentNode.setProperty("portalcms:description", new
StringValue(mFile.getContent().getDescription()));
contentNode.setProperty("portalcms:title", new
StringValue(mFile.getContent().getTitle()));
contentNode.setProperty("portalcms:language", new
StringValue(mFile.getContent().getLocale().getLanguage()));
+ contentNode.setProperty("portalcms:size", new StringValue(String
+ .valueOf(mFile.getContent().getBytes().length)));
if (mFile.getContent().getMimeType() != null)
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentGetCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentGetCommand.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentGetCommand.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -102,6 +102,11 @@
content.setLastModified(contentNode.getProperty("jcr:lastModified").getDate().getTime());
content.setBasePath(this.msPath + "/" + this.mlocale.getLanguage());
content.setDescription(contentNode.getProperty("portalcms:description").getString());
+ if (contentNode.hasProperty("portalcms:size"))
+ {
+ long size =
Long.parseLong(contentNode.getProperty("portalcms:size").getString());
+ content.setSize(size);
+ }
if (this.msVersionNumber == null) // get LIVE
{
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentGetVersionsCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentGetVersionsCommand.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/ContentGetVersionsCommand.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -95,10 +95,10 @@
content.setVersionUUID(node.getUUID());
content.setBytes("".getBytes());
- int size = 0;
+ long size = 0;
if (node.hasProperty("portalcms:size"))
{
- size =
Integer.parseInt(node.getProperty("portalcms:size").getString());
+ size =
Long.parseLong(node.getProperty("portalcms:size").getString());
}
content.setSize(size);
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileCreateCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileCreateCommand.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileCreateCommand.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -22,10 +22,14 @@
******************************************************************************/
package org.jboss.portal.cms.impl.jcr.command;
+import org.apache.log4j.Logger;
+
import org.apache.jackrabbit.value.DateValue;
+import org.jboss.portal.cms.CMSException;
import org.jboss.portal.cms.impl.jcr.JCRCommand;
import org.jboss.portal.cms.model.File;
import org.jboss.portal.cms.util.NodeUtil;
+import org.jboss.portal.cms.impl.jcr.util.ResourceUtil;
import javax.jcr.Node;
import java.util.Calendar;
@@ -38,6 +42,8 @@
{
/** The serialVersionUID */
private static final long serialVersionUID = -653823238247348749L;
+ private static Logger log = Logger.getLogger(FileCreateCommand.class);
+
File mFile;
public FileCreateCommand(File file)
@@ -49,28 +55,37 @@
{
try
{
+ //Validate the FilePath
+ boolean isValid = NodeUtil.isValidPath(mFile.getBasePath());
+ if(!isValid)
+ {
+ throw new CMSException("Path: "+mFile.getBasePath()+" is
invalid");
+ }
+
JCRCommand existsCMD =
(JCRCommand)context.getCommandFactory().createItemExistsCommand(mFile.getBasePath());
Boolean bExists = (Boolean)context.execute(existsCMD);
- if (!bExists.booleanValue()) // if fileNode exists already, ignore the
creation.
+
+ //If fileNode exists already, ignore the creation.
+ if (!bExists.booleanValue())
{
String parentPath = NodeUtil.getParentPath(mFile.getBasePath());
String nodeName = NodeUtil.getNodeName(mFile.getBasePath());
-
+
+ //Make sure the Path hierarchy is complete
+ ResourceUtil.createParentHierarchy(context, parentPath);
+
Node parentNode = (Node)context.getSession().getItem(parentPath);
Node fileNode = parentNode.addNode(nodeName, "portalcms:file");
parentNode.setProperty("jcr:lastModified", new
DateValue(Calendar.getInstance()));
parentNode.setProperty("portalcms:lastmodified", new
DateValue(Calendar.getInstance()));
fileNode.setProperty("jcr:lastModified", new
DateValue(Calendar.getInstance()));
parentNode.save();
- }
- else
- {
- // TODO: Do something !
- }
+ }
}
catch (Exception e)
{
- e.printStackTrace();
+ log.error(this, e);
+ throw new CMSException(e);
}
return null;
}
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileGetListCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileGetListCommand.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileGetListCommand.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -81,6 +81,11 @@
content.setEncoding(contentNode.getProperty("jcr:encoding").getString());
content.setStream(contentNode.getProperty("jcr:data").getStream());
content.setLocale(new
Locale(contentNode.getProperty("portalcms:language").getString()));
+ if (contentNode.hasProperty("portalcms:size"))
+ {
+ long size =
Long.parseLong(contentNode.getProperty("portalcms:size").getString());
+ content.setSize(size);
+ }
contents.add(content);
}
}
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileUpdateAndVersionCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileUpdateAndVersionCommand.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileUpdateAndVersionCommand.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -24,6 +24,7 @@
import org.apache.jackrabbit.value.BinaryValue;
import org.apache.jackrabbit.value.DateValue;
+import org.apache.jackrabbit.value.StringValue;
import org.jboss.portal.cms.CMSMimeMappings;
import org.jboss.portal.cms.impl.jcr.JCRCommand;
import org.jboss.portal.cms.impl.jcr.util.VersionUtil;
@@ -66,6 +67,8 @@
contentNode.setProperty("jcr:encoding", "UTF-8");
contentNode.setProperty("jcr:data", new
BinaryValue(mFile.getContent().getBytes()));
contentNode.setProperty("jcr:lastModified", timestamp);
+ contentNode.setProperty("portalcms:size", new StringValue(String
+ .valueOf(mFile.getContent().getBytes().length)));
if (mFile.getContent().getMimeType() != null)
{
@@ -91,7 +94,7 @@
//Update the lastModified Property of the FileNode of this content
Node fileNode = (Node)context.getSession().getItem(mFile.getBasePath());
- fileNode.setProperty("jcr:lastModified", timestamp);
+ fileNode.setProperty("jcr:lastModified", timestamp);
// Update the folder modified date
fileNode.getParent().setProperty("portalcms:lastmodified",
timestamp);
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileUpdateCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileUpdateCommand.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FileUpdateCommand.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -24,6 +24,7 @@
import org.apache.jackrabbit.value.BinaryValue;
import org.apache.jackrabbit.value.DateValue;
+import org.apache.jackrabbit.value.StringValue;
import org.jboss.portal.cms.CMSMimeMappings;
import org.jboss.portal.cms.impl.jcr.JCRCommand;
import org.jboss.portal.cms.model.File;
@@ -65,6 +66,8 @@
contentNode.setProperty("jcr:encoding", "UTF-8");
contentNode.setProperty("jcr:data", new
BinaryValue(mFile.getContent().getBytes()));
contentNode.setProperty("jcr:lastModified", timestamp);
+ contentNode.setProperty("portalcms:size", new StringValue(String
+ .valueOf(mFile.getContent().getBytes().length)));
if (mFile.getContent().getMimeType() != null)
{
@@ -86,7 +89,7 @@
//Update the lastModified Property of the FileNode of this content
Node fileNode = (Node)context.getSession().getItem(mFile.getBasePath());
- fileNode.setProperty("jcr:lastModified", timestamp);
+ fileNode.setProperty("jcr:lastModified", timestamp);
// Update the folder modified date
fileNode.getParent().setProperty("portalcms:lastmodified",
timestamp);
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FolderCreateCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FolderCreateCommand.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/FolderCreateCommand.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -22,9 +22,13 @@
******************************************************************************/
package org.jboss.portal.cms.impl.jcr.command;
+import org.apache.log4j.Logger;
import org.apache.jackrabbit.value.DateValue;
import org.apache.jackrabbit.value.StringValue;
+
+import org.jboss.portal.cms.CMSException;
import org.jboss.portal.cms.impl.jcr.JCRCommand;
+import org.jboss.portal.cms.impl.jcr.util.ResourceUtil;
import org.jboss.portal.cms.model.Folder;
import org.jboss.portal.cms.util.NodeUtil;
@@ -40,6 +44,8 @@
{
/** The serialVersionUID */
private static final long serialVersionUID = -3007711915681479942L;
+ private static Logger log = Logger.getLogger(FolderCreateCommand.class);
+
Folder mFolder;
public FolderCreateCommand(Folder folder)
@@ -51,8 +57,18 @@
{
try
{
+ //Validate the FolderPath
+ boolean isValid = NodeUtil.isValidPath(mFolder.getBasePath());
+ if(!isValid)
+ {
+ throw new CMSException("Path: "+mFolder.getBasePath()+" is
invalid");
+ }
+
String parentPath = NodeUtil.getParentPath(mFolder.getBasePath());
String nodeName = NodeUtil.getNodeName(mFolder.getBasePath());
+
+ //Make sure the Path hierarchy is complete
+ ResourceUtil.createParentHierarchy(context, parentPath);
Node parentNode = (Node)context.getSession().getItem(parentPath);
Node folderNode = parentNode.addNode(nodeName, "portalcms:folder");
@@ -71,7 +87,8 @@
}
catch (Exception e)
{
- e.printStackTrace();
+ log.error(this, e);
+ throw new CMSException(e);
}
return null;
}
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/StoreArchiveCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/StoreArchiveCommand.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/command/StoreArchiveCommand.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -113,25 +113,23 @@
content.setBasePath(sBasePath + "/" + this.msLanguage);
content.setBytes(zipBytes);
file.setContent(new Locale(this.msLanguage), content);
-
- // in case folder does not exist, yet.
- String sParentPath = NodeUtil.getParentPath(sBasePath);
- JCRCommand nodeExists =
(JCRCommand)context.getCommandFactory().createItemExistsCommand(sParentPath);
+
+ //Store the file
+ JCRCommand nodeExists =
(JCRCommand)context.getCommandFactory().createItemExistsCommand(file.getBasePath());
Boolean bExists = (Boolean)context.execute(nodeExists);
if (!bExists.booleanValue())
{
- this.createParentHierarchy(sParentPath);
+ //Create new file
+ JCRCommand newFile =
(JCRCommand)context.getCommandFactory().createNewFileCommand(file, content);
+ context.execute(newFile);
}
-
- JCRCommand fileSave =
(JCRCommand)context.getCommandFactory().createFileSaveCommand(file);
- context.execute(fileSave);
-
- JCRCommand saveContentCMD =
(JCRCommand)context.getCommandFactory().createContentSaveCommand(file);
- context.execute(saveContentCMD);
-
- //Add this content to the repository
- JCRCommand createContent =
(JCRCommand)context.getCommandFactory().createContentCreateNewVersionCommand(content,
true);
- context.execute(createContent);
+ else
+ {
+ //Update the existing one, and make the new version created
+ //in return as live
+ JCRCommand updateFile =
(JCRCommand)context.getCommandFactory().createUpdateFileCommand(file, content, true);
+ context.execute(updateFile);
+ }
}
else // isDirectory
{
Copied:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/util/ResourceUtil.java
(from rev 11235,
branches/JBoss_Portal_Branch_2_6/cms/src/main/org/jboss/portal/cms/impl/jcr/util/ResourceUtil.java)
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/util/ResourceUtil.java
(rev 0)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/impl/jcr/util/ResourceUtil.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -0,0 +1,121 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, 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.portal.cms.impl.jcr.util;
+
+import java.util.Calendar;
+import java.util.StringTokenizer;
+import java.util.Date;
+
+import javax.jcr.Node;
+
+import org.apache.jackrabbit.value.DateValue;
+import org.apache.jackrabbit.value.StringValue;
+import org.jboss.portal.cms.CMSException;
+import org.jboss.portal.cms.model.Folder;
+import org.jboss.portal.cms.util.NodeUtil;
+import org.jboss.portal.cms.impl.jcr.JCRCommand;
+import org.jboss.portal.cms.impl.jcr.JCRCommandContext;
+import org.jboss.portal.cms.impl.FolderImpl;
+
+/**
+ * @author <a href="mailto:sshah@redhat.com">Sohil Shah</a>
+ *
+ */
+public class ResourceUtil
+{
+ /** @param parentPath */
+ public static void createParentHierarchy(JCRCommandContext context, String parentPath)
throws CMSException
+ {
+ try
+ {
+ StringTokenizer tokenizer = new StringTokenizer(parentPath, "/");
+
+ StringBuffer buffer = new StringBuffer("/");
+ while (tokenizer.hasMoreTokens())
+ {
+ buffer.append(tokenizer.nextToken());
+ String cour = buffer.toString();
+
+ JCRCommand nodeExists =
(JCRCommand)context.getCommandFactory().createItemExistsCommand(cour);
+ Boolean bExists = (Boolean)context.execute(nodeExists);
+ if (!bExists.booleanValue())
+ {
+ ResourceUtil.createFolder(context, cour);
+ }
+ else
+ {
+ //Make Sure this resource is not a file. You don't want to create a
Folder inside a File
+ Node node = (Node)context.getSession().getItem(cour);
+ if(NodeTypeUtil.isFile(node))
+ {
+ throw new CMSException("Invalid Path: "+ parentPath + "
: Trying to create a Folder inside a File");
+ }
+ }
+
+ if (tokenizer.hasMoreTokens())
+ {
+ buffer.append("/");
+ }
+ }
+ }
+ catch(Exception e)
+ {
+ throw new CMSException(e);
+ }
+ }
+
+ /**
+ * @param folderPath
+ * @throws CMSException
+ */
+ private static void createFolder(JCRCommandContext context, String folderPath) throws
CMSException
+ {
+ try
+ {
+ Folder folder = new FolderImpl();
+ folder.setName(folderPath);
+ folder.setDescription(folderPath);
+ folder.setTitle(folderPath);
+ folder.setLastModified(new Date());
+ folder.setBasePath(folderPath);
+
+ String parentPath = NodeUtil.getParentPath(folder.getBasePath());
+ String nodeName = NodeUtil.getNodeName(folder.getBasePath());
+
+ Node parentNode = (Node)context.getSession().getItem(parentPath);
+ Node folderNode = parentNode.addNode(nodeName, "portalcms:folder");
+ folderNode.setProperty("portalcms:description", new
StringValue(folder.getDescription()));
+
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(folder.getLastModified());
+ DateValue dv = new DateValue(calendar);
+ parentNode.setProperty("portalcms:lastmodified", dv);
+ folderNode.setProperty("portalcms:lastmodified", dv);
+ parentNode.save();
+ }
+ catch(Exception e)
+ {
+ throw new CMSException(e);
+ }
+ }
+}
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/model/Content.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/model/Content.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/model/Content.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -38,9 +38,9 @@
void setMimeType(String type);
/** @return the */
- int getSize();
+ long getSize();
- void setSize(int size);
+ void setSize(long size);
/** @return Returns the content. */
InputStream getStream();
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/model/File.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/model/File.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/cms/model/File.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -38,4 +38,6 @@
void setContent(Locale locale, Content content);
Content getContent();
+
+ long getSize();
}
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileArchiveUpload.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileArchiveUpload.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileArchiveUpload.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -26,6 +26,7 @@
import org.jboss.portal.cms.CMSException;
import org.jboss.portal.cms.Command;
import org.jboss.portal.cms.model.Folder;
+import org.jboss.portal.cms.model.File;
import org.jboss.portal.common.io.IOTools;
import java.io.FileInputStream;
@@ -77,13 +78,76 @@
public void testArchiveUpload() throws CMSException, IOException
{
+ //create archive
+ this.runArchive();
+ this.assertArchiveUploadCreate();
+
+ //update archive
+ this.runArchive();
+ this.assertArchiveUploadUpdate();
+
+ }
+
+ private void runArchive() throws IOException
+ {
service.setDefaultLocale(Locale.ENGLISH.getLanguage());
- InputStream is = IOTools.safeBufferedWrapper(new FileInputStream(sZipFile));
- Command storearchiveCMD =
service.getCommandFactory().createStoreArchiveCommand("", is, "en");
- service.execute(storearchiveCMD);
- is.close();
+ InputStream is = null;
+ try
+ {
+ is = IOTools.safeBufferedWrapper(new FileInputStream(sZipFile));
+ Command storearchiveCMD =
service.getCommandFactory().createStoreArchiveCommand("", is, "en");
+ service.execute(storearchiveCMD);
+ }
+ finally
+ {
+ if(is != null)
+ {
+ is.close();
+ }
+ }
+ }
+
+ private void assertArchiveUploadCreate()
+ {
+ //retrieve list
+ Command listCMD =
service.getCommandFactory().createFolderGetListCommand("/ziptest/poop");
+ Folder whopper = (Folder)service.execute(listCMD);
+ List folders = whopper.getFolders();
+ List files = whopper.getFiles();
+ assertEquals("Folder Size incorrect", folders.size(), 1);
+ assertEquals("File Size incorrect", files.size(), 1);
// retrieve list
+ Command listCMD2 =
service.getCommandFactory().createFolderGetListCommand("/ziptest/poop/music");
+ Folder whopper2 = (Folder)service.execute(listCMD2);
+ List folders2 = whopper2.getFolders();
+ List files2 = whopper2.getFiles();
+ assertEquals("Folder Size incorrect", folders2.size(), 0);
+ assertEquals("File Size incorrect", files2.size(), 1);
+
+ //Look for single versions of files
+ for(int i=0; i<files.size(); i++)
+ {
+ File file = (File)files.get(i);
+
+ Command versionsCMD =
service.getCommandFactory().createContentGetVersionsCommand(file.getBasePath()+"/en");
+ List versions = (List)service.execute(versionsCMD);
+ assertEquals("Multiple Versions not Found", versions.size(), 1);
+ }
+
+ for(int i=0; i<files2.size(); i++)
+ {
+ File file = (File)files2.get(i);
+
+ Command versionsCMD =
service.getCommandFactory().createContentGetVersionsCommand(file.getBasePath()+"/en");
+ List versions = (List)service.execute(versionsCMD);
+ assertEquals("Multiple Versions not Found", versions.size(), 1);
+ }
+ }
+
+ private void assertArchiveUploadUpdate()
+ {
+ //retrieve list
Command listCMD =
service.getCommandFactory().createFolderGetListCommand("/ziptest/poop");
Folder whopper = (Folder)service.execute(listCMD);
List folders = whopper.getFolders();
@@ -98,11 +162,24 @@
List files2 = whopper2.getFiles();
assertEquals("Folder Size incorrect", folders2.size(), 0);
assertEquals("File Size incorrect", files2.size(), 1);
-
- // retrieve list
- Command listCMD3 =
service.getCommandFactory().createFolderGetListCommand("/");
- Folder whopper3 = (Folder)service.execute(listCMD3);
- List folders3 = whopper3.getFolders();
- List files3 = whopper3.getFiles();
+
+ //Look for multiple versions of files
+ for(int i=0; i<files.size(); i++)
+ {
+ File file = (File)files.get(i);
+
+ Command versionsCMD =
service.getCommandFactory().createContentGetVersionsCommand(file.getBasePath()+"/en");
+ List versions = (List)service.execute(versionsCMD);
+ assertEquals("Multiple Versions not Found", versions.size(), 2);
+ }
+
+ for(int i=0; i<files2.size(); i++)
+ {
+ File file = (File)files2.get(i);
+
+ Command versionsCMD =
service.getCommandFactory().createContentGetVersionsCommand(file.getBasePath()+"/en");
+ List versions = (List)service.execute(versionsCMD);
+ assertEquals("Multiple Versions not Found", versions.size(), 2);
+ }
}
}
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileCreate.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileCreate.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileCreate.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -23,6 +23,8 @@
package org.jboss.portal.test.cms.commands;
import junit.framework.TestSuite;
+
+import org.jboss.portal.cms.CMSException;
import org.jboss.portal.cms.Command;
import org.jboss.portal.cms.impl.ContentImpl;
import org.jboss.portal.cms.impl.FileImpl;
@@ -149,4 +151,73 @@
session.logout();
}
+
+
+ public void testRootFileCreate() throws Exception
+ {
+ try
+ {
+ this.fileCreate("/");
+ }
+ catch(CMSException e)
+ {
+ String message = e.getMessage();
+ assertTrue("Invalid Path Not Validated", message.contains("Path:
/ is invalid"));
+ }
+ }
+
+ public void testRecursiveFileCreate() throws Exception
+ {
+ //Create a legal file
+ this.fileCreate("/level-1/blah");
+
+ //Assert
+ Command fileGet =
service.getCommandFactory().createFileGetCommand("/level-1/blah",
Locale.ENGLISH);
+ File cour = (File)service.execute(fileGet);
+ assertNotNull("File was not created", cour);
+ assertEquals("Content Incorrect", new
String(cour.getContent().getBytes()), "1234567890");
+
+ //Try to create a file that should not be allowed
+ try
+ {
+ this.fileCreate("/level-1/blah/blah2");
+ }
+ catch(CMSException e)
+ {
+ String message = e.getMessage();
+ assertTrue("Invalid Parent Hierarchy Not Validated",
message.contains("Trying to create a Folder inside a File"));
+ }
+
+ //Try to create a file way down the path hierarchy
+ this.fileCreate("/level-1/level-2/level-3/blah");
+
+ //Assert
+ fileGet =
service.getCommandFactory().createFileGetCommand("/level-1/level-2/level-3/blah",
Locale.ENGLISH);
+ cour = (File)service.execute(fileGet);
+ assertNotNull("File was not created", cour);
+ assertEquals("Content Incorrect", new
String(cour.getContent().getBytes()), "1234567890");
+ }
+
+ /**
+ *
+ * @param path
+ */
+ private void fileCreate(String path)
+ {
+ //create file english
+ File file = new FileImpl();
+ file.setBasePath(path);
+
+ Content content = new ContentImpl();
+ content.setEncoding("UTF-8");
+ content.setTitle("English Title");
+ content.setDescription("English Description");
+ content.setBasePath(path + "/" + Locale.ENGLISH.getLanguage());
+ content.setBytes("1234567890".getBytes());
+ content.setMimeType("image/gif");
+ file.setContent(Locale.ENGLISH, content);
+
+ Command createFileCMD = service.getCommandFactory().createNewFileCommand(file,
content);
+ service.execute(createFileCMD);
+ }
}
Copied:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileSize.java
(from rev 11230,
branches/JBoss_Portal_Branch_2_6/cms/src/main/org/jboss/portal/test/cms/commands/TestFileSize.java)
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileSize.java
(rev 0)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFileSize.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -0,0 +1,178 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, 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.portal.test.cms.commands;
+
+import junit.framework.TestSuite;
+import org.jboss.portal.cms.Command;
+import org.jboss.portal.cms.impl.ContentImpl;
+import org.jboss.portal.cms.impl.FileImpl;
+import org.jboss.portal.cms.model.Content;
+import org.jboss.portal.cms.model.File;
+
+import java.util.Locale;
+
+
+/**
+ *
+ * @author <a href="mailto:sshah@redhat.com">Sohil Shah</a>
+ *
+ */
+public class TestFileSize extends AbstractCommandTestCase
+{
+ String sFilePath = "/testdoc.gif";
+
+ String sCopyToFilePath = "/testdoccopy.gif";
+
+ // zip vars
+ String sZipPath = "/poop";
+
+ String sZipFile = "resources/test/jcr/ziptest.zip";
+
+ String sJPG = "/hibernate_logo.gif";
+
+ String sText = "/training.txt";
+
+
+ /**
+ *
+ *
+ */
+ public TestFileSize()
+ {
+ }
+
+ /**
+ *
+ *
+ */
+ public static TestSuite suite() throws Exception
+ {
+ return createTestSuite(TestFileSize.class);
+ }
+
+ /**
+ *
+ *
+ */
+ public void testFileCreate() throws Exception
+ {
+ // create file english
+ File file = new FileImpl();
+ file.setBasePath(sFilePath);
+
+ Content content = new ContentImpl();
+ content.setEncoding("UTF-8");
+ content.setTitle("English Title");
+ content.setDescription("English Description");
+ content.setBasePath(sFilePath + "/" + Locale.ENGLISH.getLanguage());
+ content.setBytes("1234567890".getBytes());
+ content.setMimeType("image/gif");
+ file.setContent(Locale.ENGLISH, content);
+
+ // save english file
+ Command saveFileCMD = service.getCommandFactory().createFileSaveCommand(file);
+ service.execute(saveFileCMD);
+
+ //save english content
+ Command saveContentCMD =
service.getCommandFactory().createContentSaveCommand(file);
+ service.execute(saveContentCMD);
+
+ // version the english content node
+ Command verCMD =
service.getCommandFactory().createContentCreateNewVersionCommand(content, true);
+ service.execute(verCMD);
+
+ Command fileGet = service.getCommandFactory().createFileGetCommand(sFilePath,
Locale.ENGLISH);
+ File cour = (File)service.execute(fileGet);
+ assertEquals("File Size Incorrect", cour.getSize(),
"1234567890".length());
+
+
+ //create content spanish
+ Content contentSP = new ContentImpl();
+ contentSP.setEncoding("UTF-8");
+ contentSP.setTitle("Spanish Title");
+ contentSP.setDescription("Spanish Description");
+ contentSP.setBasePath(sFilePath + "/es");
+ contentSP.setBytes("0987654321/es".getBytes());
+ contentSP.setMimeType("image/gif");
+ file.setContent(new Locale("es"), contentSP);
+
+ //save spanish content
+ Command saveSPContentCMD =
service.getCommandFactory().createContentSaveCommand(file);
+ service.execute(saveSPContentCMD);
+
+ // version the spanish content node
+ Command verSPCMD =
service.getCommandFactory().createContentCreateNewVersionCommand(contentSP, true);
+ service.execute(verSPCMD);
+
+ fileGet = service.getCommandFactory().createFileGetCommand(sFilePath, new
Locale("es"));
+ cour = (File)service.execute(fileGet);
+ assertEquals("File Size Incorrect", cour.getSize(),
"0987654321/es".length());
+ }
+
+ /**
+ *
+ *
+ */
+ public void testFileUpdate() throws Exception
+ {
+ // create file english
+ File file = new FileImpl();
+ file.setBasePath(sFilePath);
+
+ Content content = new ContentImpl();
+ content.setEncoding("UTF-8");
+ content.setTitle("English Title");
+ content.setDescription("English Description");
+ content.setBasePath(sFilePath + "/" + Locale.ENGLISH.getLanguage());
+ content.setBytes("1234567890".getBytes());
+ content.setMimeType("image/gif");
+ file.setContent(Locale.ENGLISH, content);
+
+ // save english file
+ Command saveFileCMD = service.getCommandFactory().createFileSaveCommand(file);
+ service.execute(saveFileCMD);
+
+ //save english content
+ Command saveContentCMD = service.getCommandFactory().createContentSaveCommand(file);
+ service.execute(saveContentCMD);
+
+ // version the english content node
+ Command verCMD =
service.getCommandFactory().createContentCreateNewVersionCommand(content, true);
+ service.execute(verCMD);
+
+ Command fileGet = service.getCommandFactory().createFileGetCommand(sFilePath,
Locale.ENGLISH);
+ File cour = (File)service.execute(fileGet);
+ assertEquals("File Size Incorrect", cour.getSize(),
"1234567890".length());
+ assertEquals("File Content Incorrect", new
String(cour.getContent().getBytes()), "1234567890");
+
+ //Now Update this content and create a new version
+ content.setBytes("1234567890/updated".getBytes());
+ Command cmdUpdate = service.getCommandFactory().createUpdateFileCommand(file,
content, true);
+ service.execute(cmdUpdate);
+
+ fileGet = service.getCommandFactory().createFileGetCommand(sFilePath,
Locale.ENGLISH);
+ cour = (File)service.execute(fileGet);
+ assertEquals("File Size Incorrect", cour.getSize(),
"1234567890/updated".length());
+ assertEquals("File Content Incorrect", new
String(cour.getContent().getBytes()), "1234567890/updated");
+ }
+}
Modified:
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFolderCreate.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFolderCreate.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/cms/src/main/org/jboss/portal/test/cms/commands/TestFolderCreate.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -96,4 +96,45 @@
assertNotNull("Folder description is null", description);
assertTrue("Incorrect description for " + sFolderPath,
description.getString().equals("Folder description"));
}
+
+ public void testRecursiveFolderCreate() throws Exception
+ {
+ this.createFolder("/level-1/blah");
+ this.assertFolder("/level-1/blah");
+
+ //Create a deeper folder
+ this.createFolder("/level-1/level-2/level-3/blah");
+ this.assertFolder("/level-1/level-2/level-3/blah");
+ }
+
+ private void createFolder(String folderPath)
+ {
+ //create folder object
+ Folder folder = new FolderImpl();
+ folder.setCreationDate(new Date());
+ folder.setDescription("Folder description");
+ folder.setTitle("Folder Title");
+ folder.setLastModified(new Date());
+ folder.setName("Alpha Folder");
+ folder.setBasePath(folderPath);
+
+ // save folder
+ Command saveCMD = service.getCommandFactory().createFolderSaveCommand(folder);
+ service.execute(saveCMD);
+ }
+
+ private void assertFolder(String folderPath) throws Exception
+ {
+ String[] cour = folderPath.split("/");
+ String folderName = cour[cour.length-1];
+
+ Session session = RepositoryUtil.login(service.getRepository(), "anonid",
"");
+ Node folderNode = (Node)session.getItem(folderPath);
+ assertNotNull("FolderNodeis null", folderNode);
+ assertTrue("Incorrect primarynodetype",
folderNode.getPrimaryNodeType().getName().equals("portalcms:folder"));
+ assertTrue("Incorrect Name for " + sFolderPath,
folderNode.getName().equals(folderName));
+ Property description = folderNode.getProperty("portalcms:description");
+ assertNotNull("Folder description is null", description);
+ assertTrue("Incorrect description for " + sFolderPath,
description.getString().equals("Folder description"));
+ }
}
Modified:
branches/JBoss_Portal_Branch_2_7/core-cms/src/main/org/jboss/portal/core/cms/ui/admin/CMSAdminPortlet.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-cms/src/main/org/jboss/portal/core/cms/ui/admin/CMSAdminPortlet.java 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/core-cms/src/main/org/jboss/portal/core/cms/ui/admin/CMSAdminPortlet.java 2008-07-15
13:52:13 UTC (rev 11450)
@@ -44,6 +44,7 @@
import org.jboss.portal.cms.util.NodeUtil;
import org.jboss.portal.cms.workflow.ApprovePublish;
import org.jboss.portal.cms.workflow.CMSWorkflowUtil;
+import org.jboss.portal.cms.impl.jcr.JCRCMS;
import org.jboss.portal.core.cms.ui.Util;
import org.jboss.portal.core.cms.command.StreamContentCommand;
import org.jboss.portal.core.controller.ControllerContext;
@@ -148,19 +149,16 @@
this.resources = config.getResourceBundle(Locale.getDefault());
}
-
-
+ /**
+ *
+ */
protected void doView(final JBossRenderRequest rReq, final JBossRenderResponse rRes)
throws PortletException, IOException, UnavailableException
{
//check and make sure the CMSAdminPortlet is accessible to the current user
if (!this.isPortletAccessible(rReq))
{
- rRes.setContentType("text/html");
- PrintWriter writer = rRes.getWriter();
- String sHTML = "<h2>Access Denied</h2>";
- writer.write(sHTML);
- writer.close();
+ this.showAccessDeniedScreen(rRes);
return;
}
@@ -170,29 +168,27 @@
{
if (!this.isSecurityConsoleAccessible(rReq))
{
- rRes.setContentType("text/html");
- PrintWriter writer = rRes.getWriter();
- String sHTML = "<h2>Access Denied</h2>";
- writer.write(sHTML);
- writer.close();
+ this.showAccessDeniedScreen(rRes);
return;
}
}
-
try
{
if (rReq.getParameter("accessDenied") != null)
{
- throw new PortletException("Access to this resource is denied");
+ this.showAccessDeniedScreen(rRes);
}
- internalDoView(rReq, rRes);
+ else
+ {
+ internalDoView(rReq, rRes);
+ }
}
catch (CMSException e)
{
if (e.toString().indexOf("Access to this resource is denied") != -1)
{
- throw new PortletException("Access to this resource is denied");
+ this.showAccessDeniedScreen(rRes);
}
else
{
@@ -200,6 +196,30 @@
}
}
}
+
+ /**
+ *
+ * @param renderResponse
+ * @throws IOException
+ */
+ private void showAccessDeniedScreen(JBossRenderResponse renderResponse) throws
IOException
+ {
+ renderResponse.setContentType("text/html");
+ PrintWriter writer = null;
+ try
+ {
+ writer = renderResponse.getWriter();
+ String sHTML = "<h2>Access Denied</h2>";
+ writer.write(sHTML);
+ }
+ finally
+ {
+ if(writer != null)
+ {
+ writer.close();
+ }
+ }
+ }
private void internalDoView(JBossRenderRequest rReq, JBossRenderResponse rRes)
throws CMSException, PortletException, IOException
@@ -217,11 +237,13 @@
{
sPath = "/";
}
-
+
+ JCRCMS.enableUISecurityFilter();
Command listCMD =
CMSService.getCommandFactory().createFolderGetListCommand(sPath);
Folder mainFolder = (Folder)CMSService.execute(listCMD);
List folders = mainFolder.getFolders();
List files = mainFolder.getFiles();
+ JCRCMS.disableUISecurityFilter();
rRes.setContentType("text/html");
rReq.setAttribute("folders", folders);
@@ -253,34 +275,60 @@
}
else if (CMSAdminConstants.OP_CONFIRM_CREATE_COLLECTION.equals(op))
{
- String sNavPath = rReq.getParameter("navpath");
-
- List folders = this.getFolderList(sNavPath);
-
- rReq.setAttribute("folders", folders);
- rRes.setContentType("text/html");
- rReq.setAttribute("navpath", sNavPath);
-
- String sPath = rReq.getParameter("path");
- rRes.setContentType("text/html");
- rReq.setAttribute("createpath", sPath);
- javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/confirmcreatecollection.jsp");
- prd.include(rReq, rRes);
+ try
+ {
+ String sNavPath = rReq.getParameter("navpath");
+
+ List folders = this.getFolderList(sNavPath);
+ if((folders == null || folders.isEmpty()) &&
+ (sNavPath != null && !sNavPath.equals("/")))
+ {
+ sNavPath = NodeUtil.getParentPath(sNavPath);
+ folders = this.getFolderList(sNavPath);
+ }
+
+ rReq.setAttribute("folders", folders);
+ rRes.setContentType("text/html");
+ rReq.setAttribute("navpath", sNavPath);
+
+ String sPath = rReq.getParameter("path");
+ rRes.setContentType("text/html");
+ rReq.setAttribute("createpath", sPath);
+ javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/confirmcreatecollection.jsp");
+ prd.include(rReq, rRes);
+ }
+ catch(Exception e)
+ {
+ throw new PortletException(e);
+ }
}
else if (CMSAdminConstants.OP_UPLOADCONFIRM.equals(op))
{
- String sPath = rReq.getParameter("path");
- String sNavPath = rReq.getParameter("navpath");
-
- List folders = this.getFolderList(sNavPath);
-
- rReq.setAttribute("folders", folders);
- rRes.setContentType("text/html");
- rReq.setAttribute("currpath", sPath);
- rReq.setAttribute("navpath", sNavPath);
- rReq.setAttribute("defaultlocale", CMSService.getDefaultLocale());
- javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/upload.jsp");
- prd.include(rReq, rRes);
+ try
+ {
+ String sPath = rReq.getParameter("path");
+ String sNavPath = rReq.getParameter("navpath");
+
+ List folders = this.getFolderList(sNavPath);
+ if((folders == null || folders.isEmpty()) &&
+ (sNavPath != null && !sNavPath.equals("/")))
+ {
+ sNavPath = NodeUtil.getParentPath(sNavPath);
+ folders = this.getFolderList(sNavPath);
+ }
+
+ rReq.setAttribute("folders", folders);
+ rRes.setContentType("text/html");
+ rReq.setAttribute("currpath", sPath);
+ rReq.setAttribute("navpath", sNavPath);
+ rReq.setAttribute("defaultlocale", CMSService.getDefaultLocale());
+ javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/upload.jsp");
+ prd.include(rReq, rRes);
+ }
+ catch(Exception e)
+ {
+ throw new PortletException(e);
+ }
}
else if (CMSAdminConstants.OP_VIEWFILE.equals(op))
{
@@ -364,49 +412,88 @@
}
else if (CMSAdminConstants.OP_UPLOADARCHIVECONFIRM.equals(op))
{
- String sPath = rReq.getParameter("path");
- String sNavPath = rReq.getParameter("navpath");
-
- List folders = this.getFolderList(sNavPath);
-
- rReq.setAttribute("folders", folders);
- rRes.setContentType("text/html");
- rReq.setAttribute("currpath", sPath);
- rReq.setAttribute("navpath", sNavPath);
- javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/uploadarchive.jsp");
- prd.include(rReq, rRes);
+ try
+ {
+ String sPath = rReq.getParameter("path");
+ String sNavPath = rReq.getParameter("navpath");
+
+ List folders = this.getFolderList(sNavPath);
+ if((folders == null || folders.isEmpty()) &&
+ (sNavPath != null && !sNavPath.equals("/")))
+ {
+ sNavPath = NodeUtil.getParentPath(sNavPath);
+ folders = this.getFolderList(sNavPath);
+ }
+
+ rReq.setAttribute("folders", folders);
+ rRes.setContentType("text/html");
+ rReq.setAttribute("currpath", sPath);
+ rReq.setAttribute("navpath", sNavPath);
+ javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/uploadarchive.jsp");
+ prd.include(rReq, rRes);
+ }
+ catch(Exception e)
+ {
+ throw new PortletException(e);
+ }
}
else if (CMSAdminConstants.OP_CONFIRMCOPY.equals(op))
{
- String sPath = rReq.getParameter("path");
- String sNavPath = rReq.getParameter("navpath");
- String sType = rReq.getParameter("type");
-
- List folders = this.getFolderList(sNavPath);
-
- rReq.setAttribute("folders", folders);
- rRes.setContentType("text/html");
- rReq.setAttribute("currpath", sPath);
- rReq.setAttribute("navpath", sNavPath);
- rReq.setAttribute("type", sType);
- javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/confirmcopy.jsp");
- prd.include(rReq, rRes);
+ try
+ {
+ String sPath = rReq.getParameter("path");
+ String sNavPath = rReq.getParameter("navpath");
+ String sType = rReq.getParameter("type");
+
+ List folders = this.getFolderList(sNavPath);
+ if((folders == null || folders.isEmpty()) &&
+ (sNavPath != null && !sNavPath.equals("/")))
+ {
+ sNavPath = NodeUtil.getParentPath(sNavPath);
+ folders = this.getFolderList(sNavPath);
+ }
+
+ rReq.setAttribute("folders", folders);
+ rRes.setContentType("text/html");
+ rReq.setAttribute("currpath", sPath);
+ rReq.setAttribute("navpath", sNavPath);
+ rReq.setAttribute("type", sType);
+ javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/confirmcopy.jsp");
+ prd.include(rReq, rRes);
+ }
+ catch(Exception e)
+ {
+ throw new PortletException(e);
+ }
}
else if (CMSAdminConstants.OP_CONFIRMMOVE.equals(op))
{
- String sPath = rReq.getParameter("path");
- String sNavPath = rReq.getParameter("navpath");
- String sType = rReq.getParameter("type");
-
- List folders = this.getFolderList(sNavPath);
-
- rReq.setAttribute("folders", folders);
- rRes.setContentType("text/html");
- rReq.setAttribute("currpath", sPath);
- rReq.setAttribute("navpath", sNavPath);
- rReq.setAttribute("type", sType);
- javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/confirmmove.jsp");
- prd.include(rReq, rRes);
+ try
+ {
+ String sPath = rReq.getParameter("path");
+ String sNavPath = rReq.getParameter("navpath");
+ String sType = rReq.getParameter("type");
+
+ List folders = this.getFolderList(sNavPath);
+ if((folders == null || folders.isEmpty()) &&
+ (sNavPath != null && !sNavPath.equals("/")))
+ {
+ sNavPath = NodeUtil.getParentPath(sNavPath);
+ folders = this.getFolderList(sNavPath);
+ }
+
+ rReq.setAttribute("folders", folders);
+ rRes.setContentType("text/html");
+ rReq.setAttribute("currpath", sPath);
+ rReq.setAttribute("navpath", sNavPath);
+ rReq.setAttribute("type", sType);
+ javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/confirmmove.jsp");
+ prd.include(rReq, rRes);
+ }
+ catch(Exception e)
+ {
+ throw new PortletException(e);
+ }
}
else if (CMSAdminConstants.OP_CONFIRMDELETE.equals(op))
{
@@ -538,17 +625,30 @@
}
else if (CMSAdminConstants.OP_EXPORTARCHIVE.equals(op))
{
- String sPath = rReq.getParameter("path");
- String sNavPath = rReq.getParameter("navpath");
-
- List folders = this.getFolderList(sNavPath);
-
- rReq.setAttribute("folders", folders);
- rRes.setContentType("text/html");
- rReq.setAttribute("currpath", sPath);
- rReq.setAttribute("navpath", sNavPath);
- javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/exportarchive.jsp");
- prd.include(rReq, rRes);
+ try
+ {
+ String sPath = rReq.getParameter("path");
+ String sNavPath = rReq.getParameter("navpath");
+
+ List folders = this.getFolderList(sNavPath);
+ if((folders == null || folders.isEmpty()) &&
+ (sNavPath != null && !sNavPath.equals("/")))
+ {
+ sNavPath = NodeUtil.getParentPath(sNavPath);
+ folders = this.getFolderList(sNavPath);
+ }
+
+ rReq.setAttribute("folders", folders);
+ rRes.setContentType("text/html");
+ rReq.setAttribute("currpath", sPath);
+ rReq.setAttribute("navpath", sNavPath);
+ javax.portlet.PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH +
"/exportarchive.jsp");
+ prd.include(rReq, rRes);
+ }
+ catch(Exception e)
+ {
+ throw new PortletException(e);
+ }
}
else if (CMSAdminConstants.OP_EXPORTARCHIVE_PICKUP.equals(op))
{
@@ -1710,4 +1810,9 @@
this.setApprovePublish(null);
}
}
+
+ private void filterResourceBySecurity(List resources, PortalCMSSecurityContext
securityContext)
+ {
+
+ }
}
\ No newline at end of file
Modified:
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/classes/Resource.properties
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/classes/Resource.properties 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/classes/Resource.properties 2008-07-15
13:52:13 UTC (rev 11450)
@@ -131,4 +131,4 @@
CMS_ADMIN_SELECT_ROLES=Select Roles that have access to this node.
CMS_ADMIN_SELECT_USERS=Select Users that have access to this node.
CMS_ADMIN_YOU_CAN_SELECT_CTRL_ROLES=You may select multiple roles by using CTRL+click on
the role names.
-CMS_ADMIN_YOU_CAN_SELECT_CTRL_USERS=You may select multiple users by using CTRL+click on
the user names.
\ No newline at end of file
+CMS_ADMIN_YOU_CAN_SELECT_CTRL_USERS=You may select multiple users by using CTRL+click on
the user names.
Modified:
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/create.jsp
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/create.jsp 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/create.jsp 2008-07-15
13:52:13 UTC (rev 11450)
@@ -53,8 +53,8 @@
content_css : "<%= sCSSURL %>",
plugin_insertdate_dateFormat : "%Y-%m-%d",
plugin_insertdate_timeFormat : "%H:%M:%S",
- relative_urls : "false",
- document_base_url : "<%= sDocBase %>",
+ relative_urls : "true",
+ convert_urls: "false",
extended_valid_elements :
"style[type],a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],font[face|size|color],hr[class|width|size|noshade]"
});
Modified:
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/edit.jsp
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/edit.jsp 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/edit.jsp 2008-07-15
13:52:13 UTC (rev 11450)
@@ -38,8 +38,8 @@
content_css : "<%= sCSSURL %>",
plugin_insertdate_dateFormat : "%Y-%m-%d",
plugin_insertdate_timeFormat : "%H:%M:%S",
- relative_urls : "false",
- document_base_url : "<%= sDocBase %>",
+ relative_urls : "true",
+ convert_urls: "false",
extended_valid_elements :
"style[type],a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],font[face|size|color],hr[class|width|size|noshade]"
});
Modified:
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/folderlist.jsp
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/folderlist.jsp 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/folderlist.jsp 2008-07-15
13:52:13 UTC (rev 11450)
@@ -26,7 +26,7 @@
<a href="<portlet:renderURL>
<portlet:param name="op" value="<%= OP %>"/>
- <portlet:param name="path" value="/"/>
+ <portlet:param name="path" value="<%= sCurrPath %>"/>
<portlet:param name="navpath" value="/"/>
<%
if (sCMType != null)
@@ -103,25 +103,5 @@
folder.getBasePath().substring(folder.getBasePath().lastIndexOf("/") + 1,
folder.getBasePath().length()) %></a>
<br>
-<%
- }
-}
-else
-{
-%>
-<a href="<portlet:renderURL>
- <portlet:param name="op" value="<%= OP %>"/>
- <portlet:param name="path" value="<%= sCurrPath %>"/>
- <portlet:param name="navpath" value="<%=
NodeUtil.getParentPath(sNavPath) %>"/>
- <%
- if(sCMType != null)
- {
- %>
- <portlet:param name="type" value="<%= sCMType %>"/>
- <%
- }
- %>
-</portlet:renderURL>">Up</a>
-<%
- }
-%>
+<%}
+}%>
Modified:
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/pending_items.jsp
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/pending_items.jsp 2008-07-15
11:31:57 UTC (rev 11449)
+++
branches/JBoss_Portal_Branch_2_7/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/pending_items.jsp 2008-07-15
13:52:13 UTC (rev 11450)
@@ -120,8 +120,8 @@
content_css : "<%= sCSSURL %>",
plugin_insertdate_dateFormat : "%Y-%m-%d",
plugin_insertdate_timeFormat : "%H:%M:%S",
- relative_urls : "false",
- document_base_url : "<%= sDocBase %>",
+ relative_urls : "true",
+ convert_urls: "false",
extended_valid_elements :
"style[type],a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],font[face|size|color],hr[class|width|size|noshade]"
});