diff --git a/source/java/org/alfresco/web/action/ActionEvaluator.java b/source/java/org/alfresco/web/action/ActionEvaluator.java new file mode 100644 index 0000000000..7e2a710d9f --- /dev/null +++ b/source/java/org/alfresco/web/action/ActionEvaluator.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.web.action; + +import org.alfresco.web.bean.repository.Node; + +/** + * Contract supported by all classes that provide dynamic evaluation for a UI action. + *

+ * Evaluators are supplied with a Node instance context object. + *

+ * The evaluator should decide if the action precondition is valid based on the appropriate + * logic and the properties etc. of the Node context and return the result. + * + * @author Kevin Roast + */ +public interface ActionEvaluator +{ + public boolean evaluate(Node node); +} diff --git a/source/java/org/alfresco/web/action/evaluator/EditDocCIFSEvaluator.java b/source/java/org/alfresco/web/action/evaluator/EditDocCIFSEvaluator.java new file mode 100644 index 0000000000..9b64833296 --- /dev/null +++ b/source/java/org/alfresco/web/action/evaluator/EditDocCIFSEvaluator.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.web.action.evaluator; + +import javax.faces.context.FacesContext; + +import org.alfresco.model.ContentModel; +import org.alfresco.service.cmr.lock.LockService; +import org.alfresco.web.action.ActionEvaluator; +import org.alfresco.web.app.Application; +import org.alfresco.web.bean.repository.Node; +import org.alfresco.web.bean.repository.Repository; + +/** + * @author Kevin Roast + */ +public class EditDocCIFSEvaluator implements ActionEvaluator +{ + /** + * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) + */ + public boolean evaluate(Node node) + { + FacesContext fc = FacesContext.getCurrentInstance(); + + // if the node is inline editable, the default http behaviour should always be used + if (node.hasAspect(ContentModel.ASPECT_INLINEEDITABLE) == false && + "webdav".equals(Application.getClientConfig(fc).getEditLinkType())) + { + LockService lockService = + Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getLockService(); + + if (Repository.isNodeOwner(node, lockService) == true || + (node.isLocked() == false && node.hasAspect(ContentModel.ASPECT_WORKING_COPY))) + { + return true; + } + } + + return false; + } +} +/* + + +*/ \ No newline at end of file diff --git a/source/java/org/alfresco/web/action/evaluator/EditDocHttpEvaluator.java b/source/java/org/alfresco/web/action/evaluator/EditDocHttpEvaluator.java new file mode 100644 index 0000000000..63526adaba --- /dev/null +++ b/source/java/org/alfresco/web/action/evaluator/EditDocHttpEvaluator.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.web.action.evaluator; + +import javax.faces.context.FacesContext; + +import org.alfresco.model.ContentModel; +import org.alfresco.service.cmr.lock.LockService; +import org.alfresco.web.action.ActionEvaluator; +import org.alfresco.web.app.Application; +import org.alfresco.web.bean.repository.Node; +import org.alfresco.web.bean.repository.Repository; + +/** + * @author Kevin Roast + */ +public class EditDocHttpEvaluator implements ActionEvaluator +{ + /** + * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) + */ + public boolean evaluate(Node node) + { + FacesContext fc = FacesContext.getCurrentInstance(); + + // if the node is inline editable, the default http behaviour should + // always be used otherwise the configured approach is used + if (node.hasAspect(ContentModel.ASPECT_INLINEEDITABLE) == true || + "http".equals(Application.getClientConfig(fc).getEditLinkType())) + { + LockService lockService = + Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getLockService(); + + if (Repository.isNodeOwner(node, lockService) == true || + (node.isLocked() == false && node.hasAspect(ContentModel.ASPECT_WORKING_COPY))) + { + return true; + } + } + + return false; + } +} +/* + + +*/ \ No newline at end of file diff --git a/source/java/org/alfresco/web/action/evaluator/EditDocWebDavEvaluator.java b/source/java/org/alfresco/web/action/evaluator/EditDocWebDavEvaluator.java new file mode 100644 index 0000000000..33a2ea78a2 --- /dev/null +++ b/source/java/org/alfresco/web/action/evaluator/EditDocWebDavEvaluator.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.web.action.evaluator; + +import javax.faces.context.FacesContext; + +import org.alfresco.model.ContentModel; +import org.alfresco.service.cmr.lock.LockService; +import org.alfresco.web.action.ActionEvaluator; +import org.alfresco.web.app.Application; +import org.alfresco.web.bean.repository.Node; +import org.alfresco.web.bean.repository.Repository; + +/** + * @author Kevin Roast + */ +public class EditDocWebDavEvaluator implements ActionEvaluator +{ + /** + * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) + */ + public boolean evaluate(Node node) + { + FacesContext fc = FacesContext.getCurrentInstance(); + + // if the node is inline editable, the default http behaviour should always be used + if (node.hasAspect(ContentModel.ASPECT_INLINEEDITABLE) == false && + "cifs".equals(Application.getClientConfig(fc).getEditLinkType())) + { + LockService lockService = + Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getLockService(); + + if (Repository.isNodeOwner(node, lockService) == true || + (node.isLocked() == false && node.hasAspect(ContentModel.ASPECT_WORKING_COPY))) + { + return true; + } + } + + return false; + } +} +/* + + +*/ \ No newline at end of file