diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties
index 8c17655182..b062d949cd 100644
--- a/config/alfresco/messages/webclient.properties
+++ b/config/alfresco/messages/webclient.properties
@@ -507,7 +507,7 @@ create_space_finish=To create your space click Create Space.
select_category=Select a category
selected_categories=Selected categories
no_selected_categories=No categories selected.
-success_ownership=Successfully took ownership of the document.
+success_ownership=Successfully took ownership of the object.
inherit_permissions=Inherit Parent Space Permissions
success_inherit_permissions=Successfully changed Inherit Parent Permissions to 'Yes'
success_not_inherit_permissions=Successfully changed Inherit Parent Permissions to 'No'
diff --git a/source/java/org/alfresco/web/bean/SpaceDetailsBean.java b/source/java/org/alfresco/web/bean/SpaceDetailsBean.java
index 511395d6b6..bbb56028cc 100644
--- a/source/java/org/alfresco/web/bean/SpaceDetailsBean.java
+++ b/source/java/org/alfresco/web/bean/SpaceDetailsBean.java
@@ -22,9 +22,11 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
+import javax.transaction.UserTransaction;
import org.alfresco.model.ContentModel;
import org.alfresco.model.ForumModel;
@@ -33,6 +35,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.TemplateImageResolver;
import org.alfresco.service.cmr.repository.TemplateNode;
+import org.alfresco.service.cmr.security.OwnableService;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.web.app.AlfrescoNavigationHandler;
@@ -52,6 +55,8 @@ import org.alfresco.web.ui.common.component.UIActionLink;
*/
public class SpaceDetailsBean
{
+ private static final String MSG_SUCCESS_OWNERSHIP = "success_ownership";
+
private static final String OUTCOME_RETURN = "showSpaceDetails";
/** BrowseBean instance */
@@ -63,6 +68,9 @@ public class SpaceDetailsBean
/** PermissionService bean reference */
private PermissionService permissionService;
+ /** OwnableService bean reference */
+ private OwnableService ownableService;
+
/** NodeServuce bean reference */
private NodeService nodeService;
@@ -107,6 +115,16 @@ public class SpaceDetailsBean
this.permissionService = permissionService;
}
+ /**
+ * Sets the ownable service instance the bean should use
+ *
+ * @param ownableService The OwnableService
+ */
+ public void setOwnableService(OwnableService ownableService)
+ {
+ this.ownableService = ownableService;
+ }
+
/**
* Returns the Space this bean is currently representing
*
@@ -337,6 +355,37 @@ public class SpaceDetailsBean
return OUTCOME_RETURN;
}
+ /**
+ * Action Handler to take Ownership of the current Space
+ */
+ public void takeOwnership(ActionEvent event)
+ {
+ UserTransaction tx = null;
+
+ try
+ {
+ tx = Repository.getUserTransaction(FacesContext.getCurrentInstance());
+ tx.begin();
+
+ this.ownableService.takeOwnership(getSpace().getNodeRef());
+
+ FacesContext context = FacesContext.getCurrentInstance();
+ String msg = Application.getMessage(context, MSG_SUCCESS_OWNERSHIP);
+ FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
+ context.addMessage(event.getComponent().getClientId(context), facesMsg);
+
+ // commit the transaction
+ tx.commit();
+ }
+ catch (Throwable e)
+ {
+ // rollback the transaction
+ try { if (tx != null) {tx.rollback();} } catch (Exception ex) {}
+ Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
+ FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), e.getMessage()), e);
+ }
+ }
+
/**
* Navigates to next item in the list of Spaces
*/
diff --git a/source/web/WEB-INF/faces-config.xml b/source/web/WEB-INF/faces-config.xml
index a8d556ce18..7487f5da27 100644
--- a/source/web/WEB-INF/faces-config.xml
+++ b/source/web/WEB-INF/faces-config.xml
@@ -834,6 +834,10 @@
permissionService
#{PermissionService}
+
+ ownableService
+ #{OwnableService}
+
diff --git a/source/web/jsp/dialog/space-details.jsp b/source/web/jsp/dialog/space-details.jsp
index 83c449ed44..e496f906b6 100644
--- a/source/web/jsp/dialog/space-details.jsp
+++ b/source/web/jsp/dialog/space-details.jsp
@@ -110,6 +110,11 @@
+ <%-- Take Ownership --%>
+
+
+
+
@@ -231,6 +236,7 @@
columns="1" mode="view" labelStyleClass="propertiesLabel"
externalConfig="true" />
+