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">
|
||||
<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" />
|
||||
|
@@ -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 -->
|
||||
|
@@ -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">
|
||||
|
@@ -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>
|
||||
|
||||
|
@@ -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)
|
||||
{
|
||||
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)) ||
|
||||
|
@@ -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)
|
||||
|
@@ -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 =
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
@@ -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());
|
||||
|
@@ -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());
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
Reference in New Issue
Block a user