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:
Derek Hulley
2007-09-10 23:15:37 +00:00
parent 223934268c
commit cc218b118e
18 changed files with 248 additions and 49 deletions

View File

@@ -319,7 +319,7 @@
<config evaluator="node-type" condition="wcmwf:changeRequestTask">
<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"
icon="/images/icons/manage_workflow_task_large.gif"
description-id="manage_task_desc" />

View File

@@ -127,6 +127,7 @@
<permissions>
<permission allow="true">CreateChildren</permission>
</permissions>
<evaluator>org.alfresco.web.action.evaluator.WCMStagingReadonlyEvaluator</evaluator>
<label-id>sandbox_create</label-id>
<image>/images/icons/new_content.gif</image>
<action>wizard:createWebContent</action>
@@ -137,6 +138,7 @@
<permissions>
<permission allow="true">CreateChildren</permission>
</permissions>
<evaluator>org.alfresco.web.action.evaluator.WCMStagingReadonlyEvaluator</evaluator>
<label-id>create_folder</label-id>
<image>/images/icons/create_space.gif</image>
<action>dialog:createAvmFolder</action>
@@ -157,6 +159,7 @@
<permissions>
<permission allow="true">CreateChildren</permission>
</permissions>
<evaluator>org.alfresco.web.action.evaluator.WCMStagingReadonlyEvaluator</evaluator>
<label-id>add_content</label-id>
<image>/images/icons/add.gif</image>
<action>addAvmContent</action>
@@ -168,6 +171,7 @@
<permissions>
<permission allow="true">CreateChildren</permission>
</permissions>
<evaluator>org.alfresco.web.action.evaluator.WCMStagingReadonlyEvaluator</evaluator>
<label-id>import_website_content</label-id>
<image>/images/icons/import_website.gif</image>
<action>dialog:importContent</action>
@@ -304,22 +308,22 @@
<action idref="edit_file" />
<action idref="update_file" />
<action idref="submit" />
<action idref="revert" />
<action idref="preview_file" />
<action idref="copy_avm_node" />
<action idref="file_details" />
<action idref="delete_file" />
<action idref="revert" />
</action-group>
<!-- Actions for a folder in Modified Files list -->
<action-group id="avm_folder_modified">
<show-link>false</show-link>
<action idref="submit" />
<action idref="revert" />
<action idref="preview_folder" />
<action idref="copy_avm_node" />
<action idref="folder_details" />
<action idref="delete_folder" />
<action idref="revert" />
</action-group>
<!-- Actions for a deleted node in Modified Files list -->

View File

@@ -246,15 +246,15 @@
<action-group id="edit_wcm_package_item_actions">
<action idref="edit_file" />
<action idref="update_file" />
<action idref="workflow_revert" />
<action idref="workflow_preview_file" />
<action idref="workflow_file_details" />
<action idref="workflow_revert" />
</action-group>
<action-group id="review_wcm_package_item_actions">
<action idref="workflow_revert" />
<action idref="workflow_preview_file" />
<action idref="workflow_file_details" />
<action idref="workflow_revert" />
</action-group>
<action-group id="remove_package_item_actions">
@@ -293,19 +293,19 @@
<action-group id="edit_and_remove_wcm_package_item_actions">
<action idref="edit_file"/>
<action idref="update_file" />
<action idref="workflow_revert" />
<action idref="workflow_preview_file" />
<action idref="workflow_file_details" />
<action idref="remove_package_item" />
<action idref="workflow_revert" />
</action-group>
<action-group id="edit_and_delete_wcm_package_item_actions">
<action idref="edit_file"/>
<action idref="update_file" />
<action idref="workflow_revert" />
<action idref="workflow_preview_file" />
<action idref="workflow_file_details" />
<action idref="delete_file" />
<action idref="workflow_revert" />
</action-group>
<action-group id="add_package_item_actions">

View File

@@ -81,6 +81,10 @@
<!-- to the clipboard and whether the paste all action also clears the clipboard -->
<clipboard-status-visible>true</clipboard-status-visible>
<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>
</config>

View File

@@ -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));
}
}

View File

@@ -46,15 +46,15 @@ public class WCMWorkflowEvaluator extends WCMLockEvaluator
*/
public boolean evaluate(final Node node)
{
final Pair<Integer, String> p = AVMNodeConverter.ToAVMVersionPath(node.getNodeRef());
final String path = p.getSecond();
boolean proceed = false;
if (AVMUtil.isWorkflowStore(AVMUtil.getStoreName(path)) || super.evaluate(node))
if (super.evaluate(node))
{
final FacesContext facesContext = FacesContext.getCurrentInstance();
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
// in the task dialog) or not part of an already in-progress workflow
proceed = ((AVMUtil.isWorkflowStore(AVMUtil.getStoreName(path)) ||

View File

@@ -184,11 +184,13 @@ public class LoginBean
public void validatePassword(FacesContext context, UIComponent component, Object value)
throws ValidatorException
{
int minPasswordLength = Application.getClientConfig(context).getMinPasswordLength();
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),
new Object[]{3, 32});
new Object[]{minPasswordLength, 32});
throw new ValidatorException(new FacesMessage(err));
}
}
@@ -199,13 +201,15 @@ public class LoginBean
public void validateUsername(FacesContext context, UIComponent component, Object value)
throws ValidatorException
{
int minUsernameLength = Application.getClientConfig(context).getMinUsernameLength();
String name = (String) value;
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),
new Object[]{2, 256});
new Object[]{minUsernameLength, 256});
throw new ValidatorException(new FacesMessage(err));
}
if (name.indexOf('\'') != -1 || name.indexOf('"') != -1 || name.indexOf('\\') != -1)

View File

@@ -52,6 +52,7 @@ import org.alfresco.repo.workflow.WorkflowModel;
import org.alfresco.service.cmr.avm.AVMExistsException;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
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.AVMSyncService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
@@ -105,6 +106,7 @@ public class CreateWebContentWizard extends BaseContentWizard
protected boolean formSelectDisabled = false;
protected boolean startWorkflow = false;
protected AVMLockingService avmLockingService;
protected AVMService avmService;
protected AVMSyncService avmSyncService;
protected AVMBrowseBean avmBrowseBean;
@@ -114,11 +116,19 @@ public class CreateWebContentWizard extends BaseContentWizard
/**
* @param avmService The AVMService to set.
*/
public void setAvmService(AVMService avmService)
public void setAvmService(final 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.
*/
@@ -130,7 +140,7 @@ public class CreateWebContentWizard extends BaseContentWizard
/**
* @param avmBrowseBean The AVMBrowseBean to set.
*/
public void setAvmBrowseBean(AVMBrowseBean avmBrowseBean)
public void setAvmBrowseBean(final AVMBrowseBean avmBrowseBean)
{
this.avmBrowseBean = avmBrowseBean;
}
@@ -299,13 +309,30 @@ public class CreateWebContentWizard extends BaseContentWizard
if (LOGGER.isDebugEnabled())
{
for (AVMDifference diff : diffList)
for (final AVMDifference diff : diffList)
{
LOGGER.debug("updating main store with " + diff.getSourcePath());
}
}
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)
{
final List<AVMNodeDescriptor> submitNodes =

View File

@@ -37,6 +37,7 @@ import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.service.cmr.avm.AVMService;
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.model.FileExistsException;
import org.alfresco.service.cmr.repository.ContentData;
@@ -159,10 +160,15 @@ public class EditFilePropertiesDialog extends EditContentPropertiesDialog
}
// Translate to what AVMService wants to take.
DictionaryService dd = Repository.getServiceRegistry(context).getDictionaryService();
Map<QName, PropertyValue> avmProps = new HashMap<QName, PropertyValue>();
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
this.avmService.setNodeProperties(AVMNodeConverter.ToAVMVersionPath(nodeRef).getSecond(), avmProps);

View File

@@ -41,10 +41,13 @@ import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.service.cmr.avm.AVMService;
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.TypeDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
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.ui.common.component.UIListItem;
@@ -145,10 +148,15 @@ public class EditFolderPropertiesDialog extends EditSpaceDialog
}
// Translate to what AVMService wants to take.
DictionaryService dd = Repository.getServiceRegistry(context).getDictionaryService();
Map<QName, PropertyValue> avmProps = new HashMap<QName, PropertyValue>();
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

View File

@@ -72,6 +72,10 @@ public class ManageChangeRequestTaskDialog extends ManageTaskDialog
{
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
this.doResubmitNow = false;
}
@@ -124,7 +128,7 @@ public class ManageChangeRequestTaskDialog extends ManageTaskDialog
for (AVMDifference diff : diffs)
{
AVMNodeDescriptor node = this.avmService.lookup(diff.getDestinationVersion(),
diff.getDestinationPath());
diff.getDestinationPath(), true);
if (node != null)
{
submitNodes.add(node);

View File

@@ -42,6 +42,7 @@ import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
import org.alfresco.service.cmr.avm.AVMService;
import org.alfresco.service.cmr.avmsync.AVMDifference;
import org.alfresco.service.cmr.avmsync.AVMSyncService;
import org.alfresco.service.cmr.workflow.WorkflowTask;
import org.alfresco.util.NameMatcher;
import org.alfresco.util.Pair;
import org.alfresco.util.VirtServerUtils;
@@ -58,6 +59,7 @@ public class RevertAllDialog extends BaseDialogBean
private static final String MSG_REVERTALL_SUCCESS = "revertall_success";
protected AVMBrowseBean avmBrowseBean;
protected AVMService avmService;
protected AVMSyncService avmSyncService;
protected ActionService actionService;
protected NameMatcher nameMatcher;
@@ -69,6 +71,14 @@ public class RevertAllDialog extends BaseDialogBean
private String virtUpdatePath;
/**
* @param avmService the avmService to set
*/
public void setAvmService(AVMService avmService)
{
this.avmService = avmService;
}
/**
* @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<WorkflowTask> tasks = null;
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();
versionPaths.add(new Pair<Integer, String>(-1, revertPath) );
if ( (this.virtUpdatePath == null) &&
VirtServerUtils.requiresUpdateNotification(revertPath)
)
VirtServerUtils.requiresUpdateNotification(revertPath) )
{
this.virtUpdatePath = revertPath;
}
}
}
Map<String, Serializable> args = new HashMap<String, Serializable>(1, 1.0f);
args.put(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable)versionPaths);
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(
context, MSG_REVERTALL_SUCCESS), this.avmBrowseBean.getUsername());

View File

@@ -40,6 +40,7 @@ import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
import org.alfresco.service.cmr.avm.AVMService;
import org.alfresco.service.cmr.workflow.WorkflowTask;
import org.alfresco.util.Pair;
import org.alfresco.web.app.Application;
import org.alfresco.web.bean.dialog.BaseDialogBean;
@@ -91,27 +92,30 @@ public class RevertSelectedDialog extends BaseDialogBean
List<AVMNodeDescriptor> selected = this.avmBrowseBean.getSelectedSandboxItems();
List<Pair<Integer, String>> versionPaths = new ArrayList<Pair<Integer, String>>();
List<WorkflowTask> tasks = null;
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();
versionPaths.add(new Pair<Integer, String>(-1, revertPath));
if ( (this.virtUpdatePath == null) &&
VirtServerUtils.requiresUpdateNotification(revertPath)
)
VirtServerUtils.requiresUpdateNotification(revertPath) )
{
this.virtUpdatePath = revertPath;
}
}
}
Map<String, Serializable> args = new HashMap<String, Serializable>(1, 1.0f);
args.put(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable)versionPaths);
for (AVMNodeDescriptor node : selected)
{
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(
context, MSG_REVERTSELECTED_SUCCESS), this.avmBrowseBean.getUsername());

View File

@@ -407,6 +407,7 @@ public class SubmitDialog extends BaseDialogBean
String stagingPath = AVMUtil.buildSandboxRootPath(this.avmBrowseBean.getStagingStore());
List<AVMDifference> diffs = new ArrayList<AVMDifference>(items.size());
String storeId = this.avmBrowseBean.getWebProject().getStoreId();
for (ItemWrapper wrapper : items)
{
String srcPath = sandboxPath + wrapper.getPath();
@@ -415,7 +416,7 @@ public class SubmitDialog extends BaseDialogBean
diffs.add(diff);
// 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
// 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
// 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
// transaction has completed via doPostCommitProcessing.
if (this.virtUpdatePath == null)

View File

@@ -72,6 +72,8 @@ public class ClientConfigElement extends ConfigElementAdapter
private boolean pasteAllAndClear = true;
private boolean allowGuestConfig = false;
private List<QName> simpleSearchAdditionalAttributes = null;
private int minUsernameLength = 2;
private int minPasswordLength = 3;
/**
* Default Constructor
@@ -214,6 +216,16 @@ public class ClientConfigElement extends ConfigElementAdapter
combinedElement.setSimpleSearchAdditionalAttributes(newElement.getSimpleSearchAdditionalAttributes());
}
if (newElement.getMinUsernameLength() != combinedElement.getMinUsernameLength())
{
combinedElement.setMinUsernameLength(newElement.getMinUsernameLength());
}
if (newElement.getMinPasswordLength() != combinedElement.getMinPasswordLength())
{
combinedElement.setMinPasswordLength(newElement.getMinPasswordLength());
}
return combinedElement;
}
@@ -573,4 +585,36 @@ public class ClientConfigElement extends ConfigElementAdapter
{
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;
}
}

View File

@@ -61,6 +61,8 @@ public class ClientElementReader implements ConfigElementReader
public static final String ELEMENT_GUESTCONFIG = "allow-guest-config";
public static final String ELEMENT_SIMPLESEARCHADDITIONALATTRS = "simple-search-additional-attributes";
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)
@@ -228,6 +230,20 @@ public class ClientElementReader implements ConfigElementReader
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;

View File

@@ -2631,6 +2631,10 @@
<property-name>avmService</property-name>
<value>#{AVMLockingAwareService}</value>
</managed-property>
<managed-property>
<property-name>avmLockingService</property-name>
<value>#{AVMLockingService}</value>
</managed-property>
<managed-property>
<property-name>avmSyncService</property-name>
<value>#{AVMSyncService}</value>
@@ -2688,6 +2692,10 @@
<property-name>avmService</property-name>
<value>#{AVMLockingAwareService}</value>
</managed-property>
<managed-property>
<property-name>avmLockingService</property-name>
<value>#{AVMLockingService}</value>
</managed-property>
<managed-property>
<property-name>avmSyncService</property-name>
<value>#{AVMSyncService}</value>
@@ -3480,6 +3488,10 @@
<managed-bean-name>RevertAllDialog</managed-bean-name>
<managed-bean-class>org.alfresco.web.bean.wcm.RevertAllDialog</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>avmService</property-name>
<value>#{AVMLockingAwareService}</value>
</managed-property>
<managed-property>
<property-name>avmBrowseBean</property-name>
<value>#{AVMBrowseBean}</value>

View File

@@ -151,7 +151,7 @@
<h:panelGroup id="props-panel-facets">
<f:facet name="title">
<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" />
</r:actionInstanceEvaluator>
</r:permissionEvaluator>