mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V2.1 to HEAD
6486: Fix for AWC-1134 (Made minimum length for username and password configurable) 6487: Added "copy.verbose" property to build script to list all files being copied in the 'deploy-tomcat-exploded' and 'deploy-webclient-changes' targets 6488: Changed default CIFS server to remove underscore as it can cause problems with OpenOffice. 6489: Fix for WCM-498 (Expired items that are deleted are not represented as such in the change request dialog or submit dialog) 6490: Fix for WCM-446 and WCM-624. Multi-select and All operations in Modified Files list respect items in workflow and ignore them. 6491: Fixes profoundly brain dead behavior in AVMLockingService.init(). 6492: Refactoring of LookupCache to be clustering compatible 6493: Staging and locking changes 6494: WCM Revert action moved to end of all action lists to avoid accidently clicking it (as it has no confirmation screen!) 6496: Fixes for WCM-746 and WCM-747 - Edit File Properties and Edit Folder Properties working correctly again for AVM objects. 6497: Enable virtualization server to be (re)started at any point prior or during the startup of the alfresco webapp (fixes WCM-750). 6498: WCM-742 - moving locks from the preview sandbox to the main user sandbox. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6739 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -319,7 +319,7 @@
|
|||||||
|
|
||||||
<config evaluator="node-type" condition="wcmwf:changeRequestTask">
|
<config evaluator="node-type" condition="wcmwf:changeRequestTask">
|
||||||
<dialogs>
|
<dialogs>
|
||||||
<dialog name="manageTask" page="/jsp/workflow/manage-task-dialog.jsp"
|
<dialog name="manageTask" page="/jsp/wcm/manage-review-task-dialog.jsp"
|
||||||
managed-bean="ManageChangeRequestTaskDialog"
|
managed-bean="ManageChangeRequestTaskDialog"
|
||||||
icon="/images/icons/manage_workflow_task_large.gif"
|
icon="/images/icons/manage_workflow_task_large.gif"
|
||||||
description-id="manage_task_desc" />
|
description-id="manage_task_desc" />
|
||||||
|
@@ -127,6 +127,7 @@
|
|||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">CreateChildren</permission>
|
<permission allow="true">CreateChildren</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
|
<evaluator>org.alfresco.web.action.evaluator.WCMStagingReadonlyEvaluator</evaluator>
|
||||||
<label-id>sandbox_create</label-id>
|
<label-id>sandbox_create</label-id>
|
||||||
<image>/images/icons/new_content.gif</image>
|
<image>/images/icons/new_content.gif</image>
|
||||||
<action>wizard:createWebContent</action>
|
<action>wizard:createWebContent</action>
|
||||||
@@ -137,6 +138,7 @@
|
|||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">CreateChildren</permission>
|
<permission allow="true">CreateChildren</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
|
<evaluator>org.alfresco.web.action.evaluator.WCMStagingReadonlyEvaluator</evaluator>
|
||||||
<label-id>create_folder</label-id>
|
<label-id>create_folder</label-id>
|
||||||
<image>/images/icons/create_space.gif</image>
|
<image>/images/icons/create_space.gif</image>
|
||||||
<action>dialog:createAvmFolder</action>
|
<action>dialog:createAvmFolder</action>
|
||||||
@@ -157,6 +159,7 @@
|
|||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">CreateChildren</permission>
|
<permission allow="true">CreateChildren</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
|
<evaluator>org.alfresco.web.action.evaluator.WCMStagingReadonlyEvaluator</evaluator>
|
||||||
<label-id>add_content</label-id>
|
<label-id>add_content</label-id>
|
||||||
<image>/images/icons/add.gif</image>
|
<image>/images/icons/add.gif</image>
|
||||||
<action>addAvmContent</action>
|
<action>addAvmContent</action>
|
||||||
@@ -168,6 +171,7 @@
|
|||||||
<permissions>
|
<permissions>
|
||||||
<permission allow="true">CreateChildren</permission>
|
<permission allow="true">CreateChildren</permission>
|
||||||
</permissions>
|
</permissions>
|
||||||
|
<evaluator>org.alfresco.web.action.evaluator.WCMStagingReadonlyEvaluator</evaluator>
|
||||||
<label-id>import_website_content</label-id>
|
<label-id>import_website_content</label-id>
|
||||||
<image>/images/icons/import_website.gif</image>
|
<image>/images/icons/import_website.gif</image>
|
||||||
<action>dialog:importContent</action>
|
<action>dialog:importContent</action>
|
||||||
@@ -304,22 +308,22 @@
|
|||||||
<action idref="edit_file" />
|
<action idref="edit_file" />
|
||||||
<action idref="update_file" />
|
<action idref="update_file" />
|
||||||
<action idref="submit" />
|
<action idref="submit" />
|
||||||
<action idref="revert" />
|
|
||||||
<action idref="preview_file" />
|
<action idref="preview_file" />
|
||||||
<action idref="copy_avm_node" />
|
<action idref="copy_avm_node" />
|
||||||
<action idref="file_details" />
|
<action idref="file_details" />
|
||||||
<action idref="delete_file" />
|
<action idref="delete_file" />
|
||||||
|
<action idref="revert" />
|
||||||
</action-group>
|
</action-group>
|
||||||
|
|
||||||
<!-- Actions for a folder in Modified Files list -->
|
<!-- Actions for a folder in Modified Files list -->
|
||||||
<action-group id="avm_folder_modified">
|
<action-group id="avm_folder_modified">
|
||||||
<show-link>false</show-link>
|
<show-link>false</show-link>
|
||||||
<action idref="submit" />
|
<action idref="submit" />
|
||||||
<action idref="revert" />
|
|
||||||
<action idref="preview_folder" />
|
<action idref="preview_folder" />
|
||||||
<action idref="copy_avm_node" />
|
<action idref="copy_avm_node" />
|
||||||
<action idref="folder_details" />
|
<action idref="folder_details" />
|
||||||
<action idref="delete_folder" />
|
<action idref="delete_folder" />
|
||||||
|
<action idref="revert" />
|
||||||
</action-group>
|
</action-group>
|
||||||
|
|
||||||
<!-- Actions for a deleted node in Modified Files list -->
|
<!-- Actions for a deleted node in Modified Files list -->
|
||||||
|
@@ -246,15 +246,15 @@
|
|||||||
<action-group id="edit_wcm_package_item_actions">
|
<action-group id="edit_wcm_package_item_actions">
|
||||||
<action idref="edit_file" />
|
<action idref="edit_file" />
|
||||||
<action idref="update_file" />
|
<action idref="update_file" />
|
||||||
<action idref="workflow_revert" />
|
|
||||||
<action idref="workflow_preview_file" />
|
<action idref="workflow_preview_file" />
|
||||||
<action idref="workflow_file_details" />
|
<action idref="workflow_file_details" />
|
||||||
|
<action idref="workflow_revert" />
|
||||||
</action-group>
|
</action-group>
|
||||||
|
|
||||||
<action-group id="review_wcm_package_item_actions">
|
<action-group id="review_wcm_package_item_actions">
|
||||||
<action idref="workflow_revert" />
|
|
||||||
<action idref="workflow_preview_file" />
|
<action idref="workflow_preview_file" />
|
||||||
<action idref="workflow_file_details" />
|
<action idref="workflow_file_details" />
|
||||||
|
<action idref="workflow_revert" />
|
||||||
</action-group>
|
</action-group>
|
||||||
|
|
||||||
<action-group id="remove_package_item_actions">
|
<action-group id="remove_package_item_actions">
|
||||||
@@ -293,19 +293,19 @@
|
|||||||
<action-group id="edit_and_remove_wcm_package_item_actions">
|
<action-group id="edit_and_remove_wcm_package_item_actions">
|
||||||
<action idref="edit_file"/>
|
<action idref="edit_file"/>
|
||||||
<action idref="update_file" />
|
<action idref="update_file" />
|
||||||
<action idref="workflow_revert" />
|
|
||||||
<action idref="workflow_preview_file" />
|
<action idref="workflow_preview_file" />
|
||||||
<action idref="workflow_file_details" />
|
<action idref="workflow_file_details" />
|
||||||
<action idref="remove_package_item" />
|
<action idref="remove_package_item" />
|
||||||
|
<action idref="workflow_revert" />
|
||||||
</action-group>
|
</action-group>
|
||||||
|
|
||||||
<action-group id="edit_and_delete_wcm_package_item_actions">
|
<action-group id="edit_and_delete_wcm_package_item_actions">
|
||||||
<action idref="edit_file"/>
|
<action idref="edit_file"/>
|
||||||
<action idref="update_file" />
|
<action idref="update_file" />
|
||||||
<action idref="workflow_revert" />
|
|
||||||
<action idref="workflow_preview_file" />
|
<action idref="workflow_preview_file" />
|
||||||
<action idref="workflow_file_details" />
|
<action idref="workflow_file_details" />
|
||||||
<action idref="delete_file" />
|
<action idref="delete_file" />
|
||||||
|
<action idref="workflow_revert" />
|
||||||
</action-group>
|
</action-group>
|
||||||
|
|
||||||
<action-group id="add_package_item_actions">
|
<action-group id="add_package_item_actions">
|
||||||
|
@@ -81,6 +81,10 @@
|
|||||||
<!-- to the clipboard and whether the paste all action also clears the clipboard -->
|
<!-- to the clipboard and whether the paste all action also clears the clipboard -->
|
||||||
<clipboard-status-visible>true</clipboard-status-visible>
|
<clipboard-status-visible>true</clipboard-status-visible>
|
||||||
<paste-all-and-clear>true</paste-all-and-clear>
|
<paste-all-and-clear>true</paste-all-and-clear>
|
||||||
|
|
||||||
|
<!-- minimum length for username and password -->
|
||||||
|
<username-min-length>2</username-min-length>
|
||||||
|
<password-min-length>3</password-min-length>
|
||||||
</client>
|
</client>
|
||||||
</config>
|
</config>
|
||||||
|
|
||||||
|
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This program 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 General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
* As a special exception to the terms and conditions of version 2.0 of
|
||||||
|
* the GPL, you may redistribute this Program in connection with Free/Libre
|
||||||
|
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
||||||
|
* FLOSS exception. You should have recieved a copy of the text describing
|
||||||
|
* the FLOSS exception, and it is also available here:
|
||||||
|
* http://www.alfresco.com/legal/licensing
|
||||||
|
*/
|
||||||
|
package org.alfresco.web.action.evaluator;
|
||||||
|
|
||||||
|
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||||
|
import org.alfresco.web.action.ActionEvaluator;
|
||||||
|
import org.alfresco.web.bean.repository.Node;
|
||||||
|
import org.alfresco.web.bean.wcm.AVMUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Evaluator to return if a item path is not within a staging area sandbox.
|
||||||
|
*
|
||||||
|
* @author Kevin Roast
|
||||||
|
*/
|
||||||
|
public class WCMStagingReadonlyEvaluator implements ActionEvaluator
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return true if the item is not locked by another user
|
||||||
|
*/
|
||||||
|
public boolean evaluate(final Node node)
|
||||||
|
{
|
||||||
|
String path = AVMNodeConverter.ToAVMVersionPath(node.getNodeRef()).getSecond();
|
||||||
|
return !AVMUtil.isMainStore(AVMUtil.getStoreName(path));
|
||||||
|
}
|
||||||
|
}
|
@@ -46,15 +46,15 @@ public class WCMWorkflowEvaluator extends WCMLockEvaluator
|
|||||||
*/
|
*/
|
||||||
public boolean evaluate(final Node node)
|
public boolean evaluate(final Node node)
|
||||||
{
|
{
|
||||||
final Pair<Integer, String> p = AVMNodeConverter.ToAVMVersionPath(node.getNodeRef());
|
|
||||||
final String path = p.getSecond();
|
|
||||||
|
|
||||||
boolean proceed = false;
|
boolean proceed = false;
|
||||||
if (AVMUtil.isWorkflowStore(AVMUtil.getStoreName(path)) || super.evaluate(node))
|
if (super.evaluate(node))
|
||||||
{
|
{
|
||||||
final FacesContext facesContext = FacesContext.getCurrentInstance();
|
final FacesContext facesContext = FacesContext.getCurrentInstance();
|
||||||
final AVMService avmService = Repository.getServiceRegistry(facesContext).getAVMService();
|
final AVMService avmService = Repository.getServiceRegistry(facesContext).getAVMService();
|
||||||
|
|
||||||
|
final Pair<Integer, String> p = AVMNodeConverter.ToAVMVersionPath(node.getNodeRef());
|
||||||
|
final String path = p.getSecond();
|
||||||
|
|
||||||
// evaluate to true if we are not deleted and within a workflow store (i.e. list of resources
|
// evaluate to true if we are not deleted and within a workflow store (i.e. list of resources
|
||||||
// in the task dialog) or not part of an already in-progress workflow
|
// in the task dialog) or not part of an already in-progress workflow
|
||||||
proceed = ((AVMUtil.isWorkflowStore(AVMUtil.getStoreName(path)) ||
|
proceed = ((AVMUtil.isWorkflowStore(AVMUtil.getStoreName(path)) ||
|
||||||
|
@@ -184,11 +184,13 @@ public class LoginBean
|
|||||||
public void validatePassword(FacesContext context, UIComponent component, Object value)
|
public void validatePassword(FacesContext context, UIComponent component, Object value)
|
||||||
throws ValidatorException
|
throws ValidatorException
|
||||||
{
|
{
|
||||||
|
int minPasswordLength = Application.getClientConfig(context).getMinPasswordLength();
|
||||||
|
|
||||||
String pass = (String) value;
|
String pass = (String) value;
|
||||||
if (pass.length() < 3 || pass.length() > 32)
|
if (pass.length() < minPasswordLength || pass.length() > 32)
|
||||||
{
|
{
|
||||||
String err = MessageFormat.format(Application.getMessage(context, MSG_PASSWORD_LENGTH),
|
String err = MessageFormat.format(Application.getMessage(context, MSG_PASSWORD_LENGTH),
|
||||||
new Object[]{3, 32});
|
new Object[]{minPasswordLength, 32});
|
||||||
throw new ValidatorException(new FacesMessage(err));
|
throw new ValidatorException(new FacesMessage(err));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -199,13 +201,15 @@ public class LoginBean
|
|||||||
public void validateUsername(FacesContext context, UIComponent component, Object value)
|
public void validateUsername(FacesContext context, UIComponent component, Object value)
|
||||||
throws ValidatorException
|
throws ValidatorException
|
||||||
{
|
{
|
||||||
|
int minUsernameLength = Application.getClientConfig(context).getMinUsernameLength();
|
||||||
|
|
||||||
String name = (String) value;
|
String name = (String) value;
|
||||||
name = name.trim();
|
name = name.trim();
|
||||||
|
|
||||||
if (name.length() < 2 || name.length() > 256)
|
if (name.length() < minUsernameLength || name.length() > 256)
|
||||||
{
|
{
|
||||||
String err = MessageFormat.format(Application.getMessage(context, MSG_USERNAME_LENGTH),
|
String err = MessageFormat.format(Application.getMessage(context, MSG_USERNAME_LENGTH),
|
||||||
new Object[]{2, 256});
|
new Object[]{minUsernameLength, 256});
|
||||||
throw new ValidatorException(new FacesMessage(err));
|
throw new ValidatorException(new FacesMessage(err));
|
||||||
}
|
}
|
||||||
if (name.indexOf('\'') != -1 || name.indexOf('"') != -1 || name.indexOf('\\') != -1)
|
if (name.indexOf('\'') != -1 || name.indexOf('"') != -1 || name.indexOf('\\') != -1)
|
||||||
|
@@ -52,6 +52,7 @@ import org.alfresco.repo.workflow.WorkflowModel;
|
|||||||
import org.alfresco.service.cmr.avm.AVMExistsException;
|
import org.alfresco.service.cmr.avm.AVMExistsException;
|
||||||
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
|
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
|
||||||
import org.alfresco.service.cmr.avm.AVMService;
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
|
import org.alfresco.service.cmr.avm.locking.AVMLockingService;
|
||||||
import org.alfresco.service.cmr.avmsync.AVMDifference;
|
import org.alfresco.service.cmr.avmsync.AVMDifference;
|
||||||
import org.alfresco.service.cmr.avmsync.AVMSyncService;
|
import org.alfresco.service.cmr.avmsync.AVMSyncService;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
@@ -105,6 +106,7 @@ public class CreateWebContentWizard extends BaseContentWizard
|
|||||||
protected boolean formSelectDisabled = false;
|
protected boolean formSelectDisabled = false;
|
||||||
protected boolean startWorkflow = false;
|
protected boolean startWorkflow = false;
|
||||||
|
|
||||||
|
protected AVMLockingService avmLockingService;
|
||||||
protected AVMService avmService;
|
protected AVMService avmService;
|
||||||
protected AVMSyncService avmSyncService;
|
protected AVMSyncService avmSyncService;
|
||||||
protected AVMBrowseBean avmBrowseBean;
|
protected AVMBrowseBean avmBrowseBean;
|
||||||
@@ -114,11 +116,19 @@ public class CreateWebContentWizard extends BaseContentWizard
|
|||||||
/**
|
/**
|
||||||
* @param avmService The AVMService to set.
|
* @param avmService The AVMService to set.
|
||||||
*/
|
*/
|
||||||
public void setAvmService(AVMService avmService)
|
public void setAvmService(final AVMService avmService)
|
||||||
{
|
{
|
||||||
this.avmService = avmService;
|
this.avmService = avmService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param avmLockingService The AVMLockingService to set.
|
||||||
|
*/
|
||||||
|
public void setAvmLockingService(final AVMLockingService avmLockingService)
|
||||||
|
{
|
||||||
|
this.avmLockingService = avmLockingService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param avmSyncService The AVMSyncService to set.
|
* @param avmSyncService The AVMSyncService to set.
|
||||||
*/
|
*/
|
||||||
@@ -130,7 +140,7 @@ public class CreateWebContentWizard extends BaseContentWizard
|
|||||||
/**
|
/**
|
||||||
* @param avmBrowseBean The AVMBrowseBean to set.
|
* @param avmBrowseBean The AVMBrowseBean to set.
|
||||||
*/
|
*/
|
||||||
public void setAvmBrowseBean(AVMBrowseBean avmBrowseBean)
|
public void setAvmBrowseBean(final AVMBrowseBean avmBrowseBean)
|
||||||
{
|
{
|
||||||
this.avmBrowseBean = avmBrowseBean;
|
this.avmBrowseBean = avmBrowseBean;
|
||||||
}
|
}
|
||||||
@@ -299,13 +309,30 @@ public class CreateWebContentWizard extends BaseContentWizard
|
|||||||
|
|
||||||
if (LOGGER.isDebugEnabled())
|
if (LOGGER.isDebugEnabled())
|
||||||
{
|
{
|
||||||
for (AVMDifference diff : diffList)
|
for (final AVMDifference diff : diffList)
|
||||||
{
|
{
|
||||||
LOGGER.debug("updating main store with " + diff.getSourcePath());
|
LOGGER.debug("updating main store with " + diff.getSourcePath());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.avmSyncService.update(diffList, null, true, true, true, true, null, null);
|
this.avmSyncService.update(diffList, null, true, true, true, true, null, null);
|
||||||
|
for (final AVMDifference diff : diffList)
|
||||||
|
{
|
||||||
|
final String path = diff.getDestinationPath();
|
||||||
|
if (LOGGER.isDebugEnabled())
|
||||||
|
{
|
||||||
|
LOGGER.debug("modifying lock on " + path +
|
||||||
|
". chaging store from " +
|
||||||
|
this.avmLockingService.getLock(AVMUtil.getStoreId(path),
|
||||||
|
AVMUtil.getStoreRelativePath(path)).getStore() +
|
||||||
|
" to " + AVMUtil.getStoreName(path));
|
||||||
|
}
|
||||||
|
this.avmLockingService.modifyLock(AVMUtil.getStoreId(path),
|
||||||
|
AVMUtil.getStoreRelativePath(path),
|
||||||
|
null,
|
||||||
|
AVMUtil.getStoreName(path),
|
||||||
|
null,
|
||||||
|
null);
|
||||||
|
}
|
||||||
if (this.startWorkflow)
|
if (this.startWorkflow)
|
||||||
{
|
{
|
||||||
final List<AVMNodeDescriptor> submitNodes =
|
final List<AVMNodeDescriptor> submitNodes =
|
||||||
|
@@ -37,6 +37,7 @@ import org.alfresco.repo.avm.AVMNodeConverter;
|
|||||||
import org.alfresco.repo.domain.PropertyValue;
|
import org.alfresco.repo.domain.PropertyValue;
|
||||||
import org.alfresco.service.cmr.avm.AVMService;
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||||
|
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||||
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
|
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
|
||||||
import org.alfresco.service.cmr.model.FileExistsException;
|
import org.alfresco.service.cmr.model.FileExistsException;
|
||||||
import org.alfresco.service.cmr.repository.ContentData;
|
import org.alfresco.service.cmr.repository.ContentData;
|
||||||
@@ -159,10 +160,15 @@ public class EditFilePropertiesDialog extends EditContentPropertiesDialog
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Translate to what AVMService wants to take.
|
// Translate to what AVMService wants to take.
|
||||||
|
DictionaryService dd = Repository.getServiceRegistry(context).getDictionaryService();
|
||||||
Map<QName, PropertyValue> avmProps = new HashMap<QName, PropertyValue>();
|
Map<QName, PropertyValue> avmProps = new HashMap<QName, PropertyValue>();
|
||||||
for (Map.Entry<QName, Serializable> entry : repoProps.entrySet())
|
for (Map.Entry<QName, Serializable> entry : repoProps.entrySet())
|
||||||
{
|
{
|
||||||
avmProps.put(entry.getKey(), new PropertyValue(entry.getKey(), entry.getValue()));
|
PropertyDefinition propDef = dd.getProperty(entry.getKey());
|
||||||
|
if (propDef != null)
|
||||||
|
{
|
||||||
|
avmProps.put(entry.getKey(), new PropertyValue(propDef.getDataType().getName(), entry.getValue()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// send the properties back to the repository
|
// send the properties back to the repository
|
||||||
this.avmService.setNodeProperties(AVMNodeConverter.ToAVMVersionPath(nodeRef).getSecond(), avmProps);
|
this.avmService.setNodeProperties(AVMNodeConverter.ToAVMVersionPath(nodeRef).getSecond(), avmProps);
|
||||||
|
@@ -41,10 +41,13 @@ import org.alfresco.repo.avm.AVMNodeConverter;
|
|||||||
import org.alfresco.repo.domain.PropertyValue;
|
import org.alfresco.repo.domain.PropertyValue;
|
||||||
import org.alfresco.service.cmr.avm.AVMService;
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||||
|
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||||
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
|
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
|
||||||
|
import org.alfresco.service.cmr.dictionary.TypeDefinition;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.web.bean.repository.Node;
|
import org.alfresco.web.bean.repository.Node;
|
||||||
|
import org.alfresco.web.bean.repository.Repository;
|
||||||
import org.alfresco.web.bean.spaces.EditSpaceDialog;
|
import org.alfresco.web.bean.spaces.EditSpaceDialog;
|
||||||
import org.alfresco.web.ui.common.component.UIListItem;
|
import org.alfresco.web.ui.common.component.UIListItem;
|
||||||
|
|
||||||
@@ -145,10 +148,15 @@ public class EditFolderPropertiesDialog extends EditSpaceDialog
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Translate to what AVMService wants to take.
|
// Translate to what AVMService wants to take.
|
||||||
|
DictionaryService dd = Repository.getServiceRegistry(context).getDictionaryService();
|
||||||
Map<QName, PropertyValue> avmProps = new HashMap<QName, PropertyValue>();
|
Map<QName, PropertyValue> avmProps = new HashMap<QName, PropertyValue>();
|
||||||
for (Map.Entry<QName, Serializable> entry : repoProps.entrySet())
|
for (Map.Entry<QName, Serializable> entry : repoProps.entrySet())
|
||||||
{
|
{
|
||||||
avmProps.put(entry.getKey(), new PropertyValue(entry.getKey(), entry.getValue()));
|
PropertyDefinition propDef = dd.getProperty(entry.getKey());
|
||||||
|
if (propDef != null)
|
||||||
|
{
|
||||||
|
avmProps.put(entry.getKey(), new PropertyValue(propDef.getDataType().getName(), entry.getValue()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// send the properties back to the repository
|
// send the properties back to the repository
|
||||||
|
@@ -72,6 +72,10 @@ public class ManageChangeRequestTaskDialog extends ManageTaskDialog
|
|||||||
{
|
{
|
||||||
super.init(parameters);
|
super.init(parameters);
|
||||||
|
|
||||||
|
// reset any link validation state from other WCM task dialogs
|
||||||
|
this.avmBrowseBean.setLinkValidationState(null);
|
||||||
|
this.avmBrowseBean.setLinkValidationMonitor(null);
|
||||||
|
|
||||||
// reset the doResubmit flag
|
// reset the doResubmit flag
|
||||||
this.doResubmitNow = false;
|
this.doResubmitNow = false;
|
||||||
}
|
}
|
||||||
@@ -124,7 +128,7 @@ public class ManageChangeRequestTaskDialog extends ManageTaskDialog
|
|||||||
for (AVMDifference diff : diffs)
|
for (AVMDifference diff : diffs)
|
||||||
{
|
{
|
||||||
AVMNodeDescriptor node = this.avmService.lookup(diff.getDestinationVersion(),
|
AVMNodeDescriptor node = this.avmService.lookup(diff.getDestinationVersion(),
|
||||||
diff.getDestinationPath());
|
diff.getDestinationPath(), true);
|
||||||
if (node != null)
|
if (node != null)
|
||||||
{
|
{
|
||||||
submitNodes.add(node);
|
submitNodes.add(node);
|
||||||
|
@@ -42,6 +42,7 @@ import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
|
|||||||
import org.alfresco.service.cmr.avm.AVMService;
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
import org.alfresco.service.cmr.avmsync.AVMDifference;
|
import org.alfresco.service.cmr.avmsync.AVMDifference;
|
||||||
import org.alfresco.service.cmr.avmsync.AVMSyncService;
|
import org.alfresco.service.cmr.avmsync.AVMSyncService;
|
||||||
|
import org.alfresco.service.cmr.workflow.WorkflowTask;
|
||||||
import org.alfresco.util.NameMatcher;
|
import org.alfresco.util.NameMatcher;
|
||||||
import org.alfresco.util.Pair;
|
import org.alfresco.util.Pair;
|
||||||
import org.alfresco.util.VirtServerUtils;
|
import org.alfresco.util.VirtServerUtils;
|
||||||
@@ -58,6 +59,7 @@ public class RevertAllDialog extends BaseDialogBean
|
|||||||
private static final String MSG_REVERTALL_SUCCESS = "revertall_success";
|
private static final String MSG_REVERTALL_SUCCESS = "revertall_success";
|
||||||
|
|
||||||
protected AVMBrowseBean avmBrowseBean;
|
protected AVMBrowseBean avmBrowseBean;
|
||||||
|
protected AVMService avmService;
|
||||||
protected AVMSyncService avmSyncService;
|
protected AVMSyncService avmSyncService;
|
||||||
protected ActionService actionService;
|
protected ActionService actionService;
|
||||||
protected NameMatcher nameMatcher;
|
protected NameMatcher nameMatcher;
|
||||||
@@ -69,6 +71,14 @@ public class RevertAllDialog extends BaseDialogBean
|
|||||||
private String virtUpdatePath;
|
private String virtUpdatePath;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param avmService the avmService to set
|
||||||
|
*/
|
||||||
|
public void setAvmService(AVMService avmService)
|
||||||
|
{
|
||||||
|
this.avmService = avmService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param avmBrowseBean The AVM BrowseBean to set
|
* @param avmBrowseBean The AVM BrowseBean to set
|
||||||
*/
|
*/
|
||||||
@@ -118,23 +128,31 @@ public class RevertAllDialog extends BaseDialogBean
|
|||||||
|
|
||||||
List<Pair<Integer, String>> versionPaths = new ArrayList<Pair<Integer, String>>();
|
List<Pair<Integer, String>> versionPaths = new ArrayList<Pair<Integer, String>>();
|
||||||
|
|
||||||
|
List<WorkflowTask> tasks = null;
|
||||||
for (AVMDifference diff : diffs)
|
for (AVMDifference diff : diffs)
|
||||||
|
{
|
||||||
|
AVMNodeDescriptor node = avmService.lookup(-1, diff.getSourcePath(), true);
|
||||||
|
if (tasks == null)
|
||||||
|
{
|
||||||
|
tasks = AVMWorkflowUtil.getAssociatedTasksForSandbox(AVMUtil.getStoreName(diff.getSourcePath()));
|
||||||
|
}
|
||||||
|
if (AVMWorkflowUtil.getAssociatedTasksForNode(node, tasks).size() == 0)
|
||||||
{
|
{
|
||||||
String revertPath = diff.getSourcePath();
|
String revertPath = diff.getSourcePath();
|
||||||
versionPaths.add(new Pair<Integer, String>(-1, revertPath) );
|
versionPaths.add(new Pair<Integer, String>(-1, revertPath) );
|
||||||
|
|
||||||
if ( (this.virtUpdatePath == null) &&
|
if ( (this.virtUpdatePath == null) &&
|
||||||
VirtServerUtils.requiresUpdateNotification(revertPath)
|
VirtServerUtils.requiresUpdateNotification(revertPath) )
|
||||||
)
|
|
||||||
{
|
{
|
||||||
this.virtUpdatePath = revertPath;
|
this.virtUpdatePath = revertPath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Map<String, Serializable> args = new HashMap<String, Serializable>(1, 1.0f);
|
Map<String, Serializable> args = new HashMap<String, Serializable>(1, 1.0f);
|
||||||
args.put(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable)versionPaths);
|
args.put(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable)versionPaths);
|
||||||
Action action = this.actionService.createAction(AVMUndoSandboxListAction.NAME, args);
|
Action action = this.actionService.createAction(AVMUndoSandboxListAction.NAME, args);
|
||||||
this.actionService.executeAction(action, null); // dummy action ref
|
this.actionService.executeAction(action, null); // dummy action ref, list passed as action arg
|
||||||
|
|
||||||
String msg = MessageFormat.format(Application.getMessage(
|
String msg = MessageFormat.format(Application.getMessage(
|
||||||
context, MSG_REVERTALL_SUCCESS), this.avmBrowseBean.getUsername());
|
context, MSG_REVERTALL_SUCCESS), this.avmBrowseBean.getUsername());
|
||||||
|
@@ -40,6 +40,7 @@ import org.alfresco.service.cmr.action.Action;
|
|||||||
import org.alfresco.service.cmr.action.ActionService;
|
import org.alfresco.service.cmr.action.ActionService;
|
||||||
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
|
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
|
||||||
import org.alfresco.service.cmr.avm.AVMService;
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
|
import org.alfresco.service.cmr.workflow.WorkflowTask;
|
||||||
import org.alfresco.util.Pair;
|
import org.alfresco.util.Pair;
|
||||||
import org.alfresco.web.app.Application;
|
import org.alfresco.web.app.Application;
|
||||||
import org.alfresco.web.bean.dialog.BaseDialogBean;
|
import org.alfresco.web.bean.dialog.BaseDialogBean;
|
||||||
@@ -91,27 +92,30 @@ public class RevertSelectedDialog extends BaseDialogBean
|
|||||||
List<AVMNodeDescriptor> selected = this.avmBrowseBean.getSelectedSandboxItems();
|
List<AVMNodeDescriptor> selected = this.avmBrowseBean.getSelectedSandboxItems();
|
||||||
List<Pair<Integer, String>> versionPaths = new ArrayList<Pair<Integer, String>>();
|
List<Pair<Integer, String>> versionPaths = new ArrayList<Pair<Integer, String>>();
|
||||||
|
|
||||||
|
List<WorkflowTask> tasks = null;
|
||||||
for (AVMNodeDescriptor node : selected)
|
for (AVMNodeDescriptor node : selected)
|
||||||
|
{
|
||||||
|
if (tasks == null)
|
||||||
|
{
|
||||||
|
tasks = AVMWorkflowUtil.getAssociatedTasksForSandbox(AVMUtil.getStoreName(node.getPath()));
|
||||||
|
}
|
||||||
|
if (AVMWorkflowUtil.getAssociatedTasksForNode(node, tasks).size() == 0)
|
||||||
{
|
{
|
||||||
String revertPath = node.getPath();
|
String revertPath = node.getPath();
|
||||||
versionPaths.add(new Pair<Integer, String>(-1, revertPath));
|
versionPaths.add(new Pair<Integer, String>(-1, revertPath));
|
||||||
|
|
||||||
if ( (this.virtUpdatePath == null) &&
|
if ( (this.virtUpdatePath == null) &&
|
||||||
VirtServerUtils.requiresUpdateNotification(revertPath)
|
VirtServerUtils.requiresUpdateNotification(revertPath) )
|
||||||
)
|
|
||||||
{
|
{
|
||||||
this.virtUpdatePath = revertPath;
|
this.virtUpdatePath = revertPath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Map<String, Serializable> args = new HashMap<String, Serializable>(1, 1.0f);
|
Map<String, Serializable> args = new HashMap<String, Serializable>(1, 1.0f);
|
||||||
args.put(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable)versionPaths);
|
args.put(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable)versionPaths);
|
||||||
for (AVMNodeDescriptor node : selected)
|
|
||||||
{
|
|
||||||
Action action = this.actionService.createAction(AVMUndoSandboxListAction.NAME, args);
|
Action action = this.actionService.createAction(AVMUndoSandboxListAction.NAME, args);
|
||||||
this.actionService.executeAction(action, AVMNodeConverter.ToNodeRef(-1, node.getPath()));
|
this.actionService.executeAction(action, null); // dummy action ref, list passed as action arg
|
||||||
}
|
|
||||||
|
|
||||||
String msg = MessageFormat.format(Application.getMessage(
|
String msg = MessageFormat.format(Application.getMessage(
|
||||||
context, MSG_REVERTSELECTED_SUCCESS), this.avmBrowseBean.getUsername());
|
context, MSG_REVERTSELECTED_SUCCESS), this.avmBrowseBean.getUsername());
|
||||||
|
@@ -407,6 +407,7 @@ public class SubmitDialog extends BaseDialogBean
|
|||||||
String stagingPath = AVMUtil.buildSandboxRootPath(this.avmBrowseBean.getStagingStore());
|
String stagingPath = AVMUtil.buildSandboxRootPath(this.avmBrowseBean.getStagingStore());
|
||||||
List<AVMDifference> diffs = new ArrayList<AVMDifference>(items.size());
|
List<AVMDifference> diffs = new ArrayList<AVMDifference>(items.size());
|
||||||
|
|
||||||
|
String storeId = this.avmBrowseBean.getWebProject().getStoreId();
|
||||||
for (ItemWrapper wrapper : items)
|
for (ItemWrapper wrapper : items)
|
||||||
{
|
{
|
||||||
String srcPath = sandboxPath + wrapper.getPath();
|
String srcPath = sandboxPath + wrapper.getPath();
|
||||||
@@ -415,7 +416,7 @@ public class SubmitDialog extends BaseDialogBean
|
|||||||
diffs.add(diff);
|
diffs.add(diff);
|
||||||
|
|
||||||
// recursively remove locks from this item
|
// recursively remove locks from this item
|
||||||
recursivelyRemoveLocks(this.avmBrowseBean.getWebProject().getStoreId(), -1, srcPath);
|
recursivelyRemoveLocks(storeId, -1, srcPath);
|
||||||
|
|
||||||
// If nothing has required notifying the virtualization server
|
// If nothing has required notifying the virtualization server
|
||||||
// so far, check to see if destPath forces a notification
|
// so far, check to see if destPath forces a notification
|
||||||
@@ -485,7 +486,7 @@ public class SubmitDialog extends BaseDialogBean
|
|||||||
//
|
//
|
||||||
// Therefore, just derive the name of the webapp
|
// Therefore, just derive the name of the webapp
|
||||||
// in the workflow sandbox from the 1st item in
|
// in the workflow sandbox from the 1st item in
|
||||||
// the submiot list (even if it's not in WEB-INF),
|
// the submit list (even if it's not in WEB-INF),
|
||||||
// and force the virt server notification after the
|
// and force the virt server notification after the
|
||||||
// transaction has completed via doPostCommitProcessing.
|
// transaction has completed via doPostCommitProcessing.
|
||||||
if (this.virtUpdatePath == null)
|
if (this.virtUpdatePath == null)
|
||||||
|
@@ -72,6 +72,8 @@ public class ClientConfigElement extends ConfigElementAdapter
|
|||||||
private boolean pasteAllAndClear = true;
|
private boolean pasteAllAndClear = true;
|
||||||
private boolean allowGuestConfig = false;
|
private boolean allowGuestConfig = false;
|
||||||
private List<QName> simpleSearchAdditionalAttributes = null;
|
private List<QName> simpleSearchAdditionalAttributes = null;
|
||||||
|
private int minUsernameLength = 2;
|
||||||
|
private int minPasswordLength = 3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default Constructor
|
* Default Constructor
|
||||||
@@ -214,6 +216,16 @@ public class ClientConfigElement extends ConfigElementAdapter
|
|||||||
combinedElement.setSimpleSearchAdditionalAttributes(newElement.getSimpleSearchAdditionalAttributes());
|
combinedElement.setSimpleSearchAdditionalAttributes(newElement.getSimpleSearchAdditionalAttributes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (newElement.getMinUsernameLength() != combinedElement.getMinUsernameLength())
|
||||||
|
{
|
||||||
|
combinedElement.setMinUsernameLength(newElement.getMinUsernameLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newElement.getMinPasswordLength() != combinedElement.getMinPasswordLength())
|
||||||
|
{
|
||||||
|
combinedElement.setMinPasswordLength(newElement.getMinPasswordLength());
|
||||||
|
}
|
||||||
|
|
||||||
return combinedElement;
|
return combinedElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -573,4 +585,36 @@ public class ClientConfigElement extends ConfigElementAdapter
|
|||||||
{
|
{
|
||||||
this.simpleSearchAdditionalAttributes = simpleSearchAdditionalAttributes;
|
this.simpleSearchAdditionalAttributes = simpleSearchAdditionalAttributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Returns the minimum length for a username.
|
||||||
|
*/
|
||||||
|
public int getMinUsernameLength()
|
||||||
|
{
|
||||||
|
return this.minUsernameLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param minUsernameLength The minimum length of a username
|
||||||
|
*/
|
||||||
|
/*package*/ void setMinUsernameLength(int minUsernameLength)
|
||||||
|
{
|
||||||
|
this.minUsernameLength = minUsernameLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Returns the minimum length for a password.
|
||||||
|
*/
|
||||||
|
public int getMinPasswordLength()
|
||||||
|
{
|
||||||
|
return this.minPasswordLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param minPasswordLength The minimum length of a password
|
||||||
|
*/
|
||||||
|
/*package*/ void setMinPasswordLength(int minPasswordLength)
|
||||||
|
{
|
||||||
|
this.minPasswordLength = minPasswordLength;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -61,6 +61,8 @@ public class ClientElementReader implements ConfigElementReader
|
|||||||
public static final String ELEMENT_GUESTCONFIG = "allow-guest-config";
|
public static final String ELEMENT_GUESTCONFIG = "allow-guest-config";
|
||||||
public static final String ELEMENT_SIMPLESEARCHADDITIONALATTRS = "simple-search-additional-attributes";
|
public static final String ELEMENT_SIMPLESEARCHADDITIONALATTRS = "simple-search-additional-attributes";
|
||||||
public static final String ELEMENT_SIMPLESEARCHADDITIONALATTRSQNAME = "qname";
|
public static final String ELEMENT_SIMPLESEARCHADDITIONALATTRSQNAME = "qname";
|
||||||
|
public static final String ELEMENT_MINUSERNAMELENGTH = "username-min-length";
|
||||||
|
public static final String ELEMENT_MINPASSWORDLENGTH = "password-min-length";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.config.xml.elementreader.ConfigElementReader#parse(org.dom4j.Element)
|
* @see org.alfresco.config.xml.elementreader.ConfigElementReader#parse(org.dom4j.Element)
|
||||||
@@ -228,6 +230,20 @@ public class ClientElementReader implements ConfigElementReader
|
|||||||
configElement.setSimpleSearchAdditionalAttributes(simpleSearchAddtlAttrb);
|
configElement.setSimpleSearchAdditionalAttributes(simpleSearchAddtlAttrb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get the minimum length of usernames
|
||||||
|
Element minUsername = element.element(ELEMENT_MINUSERNAMELENGTH);
|
||||||
|
if (minUsername != null)
|
||||||
|
{
|
||||||
|
configElement.setMinUsernameLength(Integer.parseInt(minUsername.getTextTrim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the minimum length of passwords
|
||||||
|
Element minPassword = element.element(ELEMENT_MINPASSWORDLENGTH);
|
||||||
|
if (minPassword != null)
|
||||||
|
{
|
||||||
|
configElement.setMinPasswordLength(Integer.parseInt(minPassword.getTextTrim()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return configElement;
|
return configElement;
|
||||||
|
@@ -2631,6 +2631,10 @@
|
|||||||
<property-name>avmService</property-name>
|
<property-name>avmService</property-name>
|
||||||
<value>#{AVMLockingAwareService}</value>
|
<value>#{AVMLockingAwareService}</value>
|
||||||
</managed-property>
|
</managed-property>
|
||||||
|
<managed-property>
|
||||||
|
<property-name>avmLockingService</property-name>
|
||||||
|
<value>#{AVMLockingService}</value>
|
||||||
|
</managed-property>
|
||||||
<managed-property>
|
<managed-property>
|
||||||
<property-name>avmSyncService</property-name>
|
<property-name>avmSyncService</property-name>
|
||||||
<value>#{AVMSyncService}</value>
|
<value>#{AVMSyncService}</value>
|
||||||
@@ -2688,6 +2692,10 @@
|
|||||||
<property-name>avmService</property-name>
|
<property-name>avmService</property-name>
|
||||||
<value>#{AVMLockingAwareService}</value>
|
<value>#{AVMLockingAwareService}</value>
|
||||||
</managed-property>
|
</managed-property>
|
||||||
|
<managed-property>
|
||||||
|
<property-name>avmLockingService</property-name>
|
||||||
|
<value>#{AVMLockingService}</value>
|
||||||
|
</managed-property>
|
||||||
<managed-property>
|
<managed-property>
|
||||||
<property-name>avmSyncService</property-name>
|
<property-name>avmSyncService</property-name>
|
||||||
<value>#{AVMSyncService}</value>
|
<value>#{AVMSyncService}</value>
|
||||||
@@ -3480,6 +3488,10 @@
|
|||||||
<managed-bean-name>RevertAllDialog</managed-bean-name>
|
<managed-bean-name>RevertAllDialog</managed-bean-name>
|
||||||
<managed-bean-class>org.alfresco.web.bean.wcm.RevertAllDialog</managed-bean-class>
|
<managed-bean-class>org.alfresco.web.bean.wcm.RevertAllDialog</managed-bean-class>
|
||||||
<managed-bean-scope>session</managed-bean-scope>
|
<managed-bean-scope>session</managed-bean-scope>
|
||||||
|
<managed-property>
|
||||||
|
<property-name>avmService</property-name>
|
||||||
|
<value>#{AVMLockingAwareService}</value>
|
||||||
|
</managed-property>
|
||||||
<managed-property>
|
<managed-property>
|
||||||
<property-name>avmBrowseBean</property-name>
|
<property-name>avmBrowseBean</property-name>
|
||||||
<value>#{AVMBrowseBean}</value>
|
<value>#{AVMBrowseBean}</value>
|
||||||
|
@@ -151,7 +151,7 @@
|
|||||||
<h:panelGroup id="props-panel-facets">
|
<h:panelGroup id="props-panel-facets">
|
||||||
<f:facet name="title">
|
<f:facet name="title">
|
||||||
<r:permissionEvaluator value="#{FileDetailsBean.document}" allow="Write">
|
<r:permissionEvaluator value="#{FileDetailsBean.document}" allow="Write">
|
||||||
<r:actionInstanceEvaluator value="#{FileDetailsBean.document}" evaluatorClassName="org.alfresco.web.action.evaluator.WCMWorkflowEvaluator">
|
<r:actionInstanceEvaluator value="#{FileDetailsBean.avmNode}" evaluatorClassName="org.alfresco.web.action.evaluator.WCMWorkflowEvaluator">
|
||||||
<a:actionLink id="titleLink1" value="#{msg.modify}" showLink="false" image="/images/icons/Change_details.gif" action="dialog:editAvmFileProperties" />
|
<a:actionLink id="titleLink1" value="#{msg.modify}" showLink="false" image="/images/icons/Change_details.gif" action="dialog:editAvmFileProperties" />
|
||||||
</r:actionInstanceEvaluator>
|
</r:actionInstanceEvaluator>
|
||||||
</r:permissionEvaluator>
|
</r:permissionEvaluator>
|
||||||
|
Reference in New Issue
Block a user