mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
first pass at locking related ui work.
- adding lock icons to the ui - using lock aware service for create and edit web content. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6027 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -125,7 +125,7 @@ kilobyte=KB
|
||||
megabyte=MB
|
||||
gigabyte=GB
|
||||
locked_you=Item locked by you
|
||||
locked_user=Item locked by user
|
||||
locked_user=Item locked by {0,choice,0#SHOULD_NOT_HAPPEN|1#user|1<users}
|
||||
wizard_errors=Please correct the errors below.
|
||||
last_page=Last Page
|
||||
next_page=Next Page
|
||||
@@ -746,16 +746,19 @@ regenerate_renditions_desc=This wizard helps you regenerate renditions.
|
||||
regenerate_renditions_select_renditions_title=Select Renditions
|
||||
regenerate_renditions_select_renditions_step_title=Select Renditions
|
||||
regenerate_renditions_select_renditions_desc=Select which renditions you want to regenerate.
|
||||
regenerate_renditions_select_renditions_select_item_desc={0} related renditions in {1}.
|
||||
regenerate_renditions_select_renditions_select_item_desc={0} related {0,choice,0#renditions|1#rendition|1<renditions} in {1}.
|
||||
regenerate_renditions_select_renditions_select_web_project=Select the web project in which you want to regenerate renditions.
|
||||
regenerate_renditions_select_renditions_select_regenerate_scope=Select which renditions you want to regenerate within the selected web project.
|
||||
regenerate_renditions_select_renditions_scope_all=Choose this option to regenerate all renditions of all form generated content within the selected web project.
|
||||
regenerate_renditions_select_renditions_scope_form=Choose this option to regenerate all renditions of content generated by a particular set of forms configured for the selected web project.
|
||||
regenerate_renditions_select_renditions_scope_rendering_engine_templates=Choose this option to regenerate particular renditions generated by a particular set of rendering engine templates.
|
||||
regenerate_renditions_select_renditions_instruction=To regenerate renditions based on your selection, click next.
|
||||
regenerate_renditions_summary_desc={0} renditions have been regenerated in web project {1}.
|
||||
regenerate_renditions_summary_desc={0} {0,choice,0#renditions|1#rendition|1<renditions} have been regenerated in web project {1}.
|
||||
regenerate_renditions_summary_instruction=To commit these changes to the web project, click Finish.
|
||||
|
||||
regenerate_renditions_snapshot_description_scope_form=Regenerated all rendition for content authored using forms {0}.
|
||||
regenerate_renditions_snapshot_description_scope_rendering_engine_template=Regenerated all renditions generated by {0}.
|
||||
regenerate_renditions_snapshot_description_scope_web_project=Regenerated all renditions in web project {0}.
|
||||
regenerate_renditions_snapshot_short_description=Regenerated {0} {0,choice,0#renditions|1#rendition|1<renditions}.
|
||||
create_form_title=Create Web Form Wizard
|
||||
edit_form_title=Edit Web Form Wizard
|
||||
create_form_desc=This wizard helps you create a new form.
|
||||
|
@@ -39,7 +39,6 @@ import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.ContentReader;
|
||||
import org.alfresco.service.cmr.repository.ContentService;
|
||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.web.app.AlfrescoNavigationHandler;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.app.servlet.DownloadContentServlet;
|
||||
@@ -95,9 +94,6 @@ public class AVMEditBean
|
||||
/** The ContentService bean reference */
|
||||
protected ContentService contentService;
|
||||
|
||||
/** The NodeService bean reference */
|
||||
protected NodeService nodeService;
|
||||
|
||||
/** The FilePickerBean reference */
|
||||
protected FilePickerBean filePickerBean;
|
||||
|
||||
@@ -145,14 +141,6 @@ public class AVMEditBean
|
||||
this.contentService = contentService;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param nodeService The nodeService to set.
|
||||
*/
|
||||
public void setNodeService(final NodeService nodeService)
|
||||
{
|
||||
this.nodeService = nodeService;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the current AVM node context.
|
||||
*/
|
||||
|
@@ -114,26 +114,26 @@ public class RegenerateRenditionsWizard
|
||||
}
|
||||
LOGGER.debug("updating " + diffList.size() + " renditions in staging");
|
||||
this.avmSyncService.update(diffList, null, true, true, true, true, null, null);
|
||||
final StringBuilder description = new StringBuilder();
|
||||
String description = null;
|
||||
final ResourceBundle bundle = Application.getBundle(FacesContext.getCurrentInstance());
|
||||
if (this.regenerateScope.equals(REGENERATE_SCOPE_FORM))
|
||||
{
|
||||
description.append("regenerated all renditions for content authored using forms ").
|
||||
append(StringUtils.arrayToDelimitedString(this.selectedForms, ", ")).
|
||||
append(".");
|
||||
description = MessageFormat.format("regenerate_renditions_snapshot_description_scope_form",
|
||||
StringUtils.arrayToDelimitedString(this.selectedForms, ", "));
|
||||
}
|
||||
else if (this.regenerateScope.equals(REGENERATE_SCOPE_RENDERING_ENGINE_TEMPLATE))
|
||||
{
|
||||
description.append("regenerated all renditions generated by ").
|
||||
append(StringUtils.arrayToDelimitedString(this.selectedRenderingEngineTemplates, ", ")).
|
||||
append(".");
|
||||
description = MessageFormat.format("regenerate_renditions_snapshot_description_scope_rendering_engine_template",
|
||||
StringUtils.arrayToDelimitedString(this.selectedRenderingEngineTemplates, ", "));
|
||||
}
|
||||
else
|
||||
{
|
||||
description.append("regenerated all renditions in web project " + this.selectedWebProject.getName());
|
||||
description = MessageFormat.format("regenerate_renditions_snapshot_description_scope_web_project",
|
||||
this.selectedWebProject.getName());
|
||||
}
|
||||
this.avmService.createSnapshot(this.selectedWebProject.getStoreId(),
|
||||
"regenerated renditions",
|
||||
description.toString());
|
||||
MessageFormat.format("regenerate_renditions_snapshot_short_description", diffList.size()),
|
||||
description);
|
||||
}
|
||||
return outcome;
|
||||
}
|
||||
|
@@ -178,8 +178,7 @@ public class RenderingEngineTemplateImpl
|
||||
public String getOutputPathForRendition(final FormInstanceData formInstanceData, final String currentAVMPath)
|
||||
{
|
||||
final ServiceRegistry sr = this.getServiceRegistry();
|
||||
final NodeService nodeService = sr.getNodeService();
|
||||
final AVMService avmService = sr.getAVMService();
|
||||
final AVMService avmService = this.getAVMService();
|
||||
|
||||
final String formInstanceDataAVMPath = formInstanceData.getPath();
|
||||
|
||||
@@ -253,7 +252,7 @@ public class RenderingEngineTemplateImpl
|
||||
SAXException,
|
||||
RenderingEngine.RenderingException
|
||||
{
|
||||
final AVMService avmService = this.getServiceRegistry().getAVMService();
|
||||
final AVMService avmService = this.getAVMService();
|
||||
final boolean isRegenerate = avmService.lookup(-1, renditionAvmPath) != null;
|
||||
if (!isRegenerate)
|
||||
{
|
||||
@@ -330,7 +329,7 @@ public class RenderingEngineTemplateImpl
|
||||
new PropertyValue(DataTypeDefinition.TEXT,
|
||||
AVMUtil.getStoreRelativePath(formInstanceData.getPath())));
|
||||
|
||||
final AVMService avmService = this.getServiceRegistry().getAVMService();
|
||||
final AVMService avmService = this.getAVMService();
|
||||
avmService.setNodeProperties(rendition.getPath(), props);
|
||||
}
|
||||
|
||||
@@ -555,6 +554,11 @@ public class RenderingEngineTemplateImpl
|
||||
return new FormDataFunctions((AVMRemote)wac.getBean("avmRemote"));
|
||||
}
|
||||
|
||||
private AVMService getAVMService()
|
||||
{
|
||||
return this.getServiceRegistry().getAVMService();
|
||||
}
|
||||
|
||||
private ServiceRegistry getServiceRegistry()
|
||||
{
|
||||
final FacesContext fc = FacesContext.getCurrentInstance();
|
||||
@@ -570,5 +574,6 @@ public class RenderingEngineTemplateImpl
|
||||
{
|
||||
return this.getClass().getName() + "{name : " + this.getName() + "}";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@@ -32,8 +32,10 @@ import javax.faces.context.FacesContext;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.model.WCMAppModel;
|
||||
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||
import org.alfresco.repo.domain.PropertyValue;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.avm.AVMService;
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.util.Pair;
|
||||
@@ -101,11 +103,11 @@ public class RenditionImpl
|
||||
public FormInstanceData getPrimaryFormInstanceData()
|
||||
throws FileNotFoundException
|
||||
{
|
||||
final AVMService avmService = this.getServiceRegistry().getAVMService();
|
||||
final NodeService nodeService = this.getServiceRegistry().getNodeService();
|
||||
final AVMService avmService = this.getAVMService();
|
||||
final String fidAVMStoreRelativePath = (String)
|
||||
nodeService.getProperty(this.nodeRef,
|
||||
WCMAppModel.PROP_PRIMARY_FORM_INSTANCE_DATA);
|
||||
avmService.getNodeProperty(AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getFirst(),
|
||||
AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getSecond(),
|
||||
WCMAppModel.PROP_PRIMARY_FORM_INSTANCE_DATA).getValue(DataTypeDefinition.TEXT);
|
||||
String avmStore = AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getSecond();
|
||||
avmStore = avmStore.substring(0, avmStore.indexOf(':'));
|
||||
final String path = avmStore + ':' + fidAVMStoreRelativePath;
|
||||
@@ -113,7 +115,7 @@ public class RenditionImpl
|
||||
{
|
||||
throw new FileNotFoundException("unable to find primary form instance data " + path);
|
||||
}
|
||||
return new FormInstanceDataImpl(AVMNodeConverter.ToNodeRef(-1, path));
|
||||
return new FormInstanceDataImpl(-1, path);
|
||||
}
|
||||
|
||||
/** the rendering engine template that generated this rendition */
|
||||
@@ -121,20 +123,36 @@ public class RenditionImpl
|
||||
{
|
||||
if (this.renderingEngineTemplate == null)
|
||||
{
|
||||
final NodeService nodeService = this.getServiceRegistry().getNodeService();
|
||||
final NodeRef retNodeRef = (NodeRef)
|
||||
nodeService.getProperty(this.nodeRef,
|
||||
final AVMService avmService = this.getAVMService();
|
||||
PropertyValue pv =
|
||||
avmService.getNodeProperty(AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getFirst(),
|
||||
AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getSecond(),
|
||||
WCMAppModel.PROP_PARENT_RENDERING_ENGINE_TEMPLATE);
|
||||
if (pv == null)
|
||||
{
|
||||
LOGGER.debug("property " + WCMAppModel.PROP_PARENT_RENDERING_ENGINE_TEMPLATE +
|
||||
" not set on " + this.getPath());
|
||||
return null;
|
||||
}
|
||||
|
||||
final NodeRef retNodeRef = (NodeRef)pv.getValue(DataTypeDefinition.NODE_REF);
|
||||
if (retNodeRef == null)
|
||||
{
|
||||
LOGGER.debug("unable to locate parent rendering engine template of rendition " +
|
||||
this.getPath());
|
||||
return null;
|
||||
}
|
||||
|
||||
final NodeRef rpNodeRef = (NodeRef)
|
||||
nodeService.getProperty(this.nodeRef,
|
||||
pv = avmService.getNodeProperty(AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getFirst(),
|
||||
AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getSecond(),
|
||||
WCMAppModel.PROP_PARENT_RENDITION_PROPERTIES);
|
||||
if (pv == null)
|
||||
{
|
||||
LOGGER.debug("property " + WCMAppModel.PROP_PARENT_RENDITION_PROPERTIES +
|
||||
" not set on " + this.getPath());
|
||||
return null;
|
||||
}
|
||||
|
||||
final NodeRef rpNodeRef = (NodeRef)pv.getValue(DataTypeDefinition.NODE_REF);
|
||||
if (rpNodeRef == null)
|
||||
{
|
||||
LOGGER.debug("unable to locate parent rendering engine template properties of rendition " +
|
||||
@@ -169,7 +187,7 @@ public class RenditionImpl
|
||||
|
||||
public OutputStream getOutputStream()
|
||||
{
|
||||
final AVMService avmService = this.getServiceRegistry().getAVMService();
|
||||
final AVMService avmService = this.getAVMService();
|
||||
final Pair<Integer, String> p = AVMNodeConverter.ToAVMVersionPath(this.nodeRef);
|
||||
return (avmService.lookup(p.getFirst(), p.getSecond()) == null
|
||||
? avmService.createFile(AVMNodeConverter.SplitBase(p.getSecond())[0],
|
||||
@@ -194,6 +212,11 @@ public class RenditionImpl
|
||||
this.getRenderingEngineTemplate().render(formInstanceData, this);
|
||||
}
|
||||
|
||||
private AVMService getAVMService()
|
||||
{
|
||||
return this.getServiceRegistry().getAVMService();
|
||||
}
|
||||
|
||||
private ServiceRegistry getServiceRegistry()
|
||||
{
|
||||
final FacesContext fc = FacesContext.getCurrentInstance();
|
||||
|
@@ -25,6 +25,7 @@
|
||||
package org.alfresco.web.ui.repo.component;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.MessageFormat;
|
||||
|
||||
import javax.faces.context.FacesContext;
|
||||
import javax.faces.context.ResponseWriter;
|
||||
@@ -38,6 +39,7 @@ import org.alfresco.web.bean.repository.Repository;
|
||||
import org.alfresco.web.ui.common.Utils;
|
||||
import org.alfresco.web.ui.common.component.SelfRenderingComponent;
|
||||
import org.alfresco.web.ui.repo.WebResources;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* @author Kevin Roast
|
||||
@@ -79,16 +81,17 @@ public class UILockIcon extends SelfRenderingComponent
|
||||
*/
|
||||
public Object saveState(FacesContext context)
|
||||
{
|
||||
Object values[] = new Object[7];
|
||||
return new Object[]
|
||||
{
|
||||
// standard component attributes are saved by the super class
|
||||
values[0] = super.saveState(context);
|
||||
values[1] = this.lockImage;
|
||||
values[2] = this.lockOwnerImage;
|
||||
values[3] = this.align;
|
||||
values[4] = this.width;
|
||||
values[5] = this.height;
|
||||
values[6] = this.value;
|
||||
return (values);
|
||||
super.saveState(context),
|
||||
this.lockImage,
|
||||
this.lockOwnerImage,
|
||||
this.align,
|
||||
this.width,
|
||||
this.height,
|
||||
this.value
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -101,13 +104,9 @@ public class UILockIcon extends SelfRenderingComponent
|
||||
return;
|
||||
}
|
||||
|
||||
ResponseWriter out = context.getResponseWriter();
|
||||
|
||||
// get the value and see if the image is locked
|
||||
NodeService nodeService = getNodeService(context);
|
||||
boolean locked = false;
|
||||
boolean lockedOwner = false;
|
||||
|
||||
String lockUser = null;
|
||||
Object val = getValue();
|
||||
NodeRef ref = null;
|
||||
if (val instanceof NodeRef)
|
||||
@@ -115,15 +114,26 @@ public class UILockIcon extends SelfRenderingComponent
|
||||
ref = (NodeRef)val;
|
||||
if (nodeService.exists(ref) && nodeService.hasAspect(ref, ContentModel.ASPECT_LOCKABLE) == true)
|
||||
{
|
||||
String lockerUser = (String)nodeService.getProperty(ref, ContentModel.PROP_LOCK_OWNER);
|
||||
if (lockerUser != null)
|
||||
{
|
||||
locked = true;
|
||||
lockedOwner = (lockerUser.equals(Application.getCurrentUser(context).getUserName()));
|
||||
lockUser = (String)nodeService.getProperty(ref, ContentModel.PROP_LOCK_OWNER);
|
||||
}
|
||||
}
|
||||
final boolean locked = lockUser != null;
|
||||
final boolean lockedOwner = locked && (lockUser.equals(Application.getCurrentUser(context).getUserName()));
|
||||
|
||||
this.encodeBegin(context, locked, lockedOwner, new String[] { lockUser });
|
||||
}
|
||||
|
||||
protected void encodeBegin(final FacesContext context,
|
||||
final boolean locked,
|
||||
final boolean lockedOwner,
|
||||
final String[] lockUser)
|
||||
throws IOException
|
||||
{
|
||||
if (isRendered() == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ResponseWriter out = context.getResponseWriter();
|
||||
String msg = null;
|
||||
|
||||
if (locked == true)
|
||||
@@ -157,15 +167,14 @@ public class UILockIcon extends SelfRenderingComponent
|
||||
}
|
||||
else
|
||||
{
|
||||
String lockingUser = (String)nodeService.getProperty(ref, ContentModel.PROP_LOCK_OWNER);
|
||||
msg = Application.getMessage(context, MSG_LOCKED_USER);
|
||||
msg = MessageFormat.format(Application.getMessage(context, MSG_LOCKED_USER), lockUser.length);
|
||||
if (getLockedUserTooltip() != null)
|
||||
{
|
||||
msg = getLockedUserTooltip();
|
||||
}
|
||||
StringBuilder buf = new StringBuilder(32);
|
||||
msg = buf.append(msg).append(" '")
|
||||
.append(lockingUser)
|
||||
.append(StringUtils.arrayToDelimitedString(lockUser, ", "))
|
||||
.append("'").toString();
|
||||
}
|
||||
|
||||
|
107
source/java/org/alfresco/web/ui/wcm/component/UIAVMLockIcon.java
Normal file
107
source/java/org/alfresco/web/ui/wcm/component/UIAVMLockIcon.java
Normal file
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* 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.ui.wcm.component;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import javax.faces.context.FacesContext;
|
||||
import javax.faces.context.ResponseWriter;
|
||||
import javax.faces.el.ValueBinding;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||
import org.alfresco.service.cmr.avm.AVMService;
|
||||
import org.alfresco.service.cmr.avm.locking.AVMLock;
|
||||
import org.alfresco.service.cmr.avm.locking.AVMLockingService;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.bean.repository.Repository;
|
||||
import org.alfresco.web.bean.repository.User;
|
||||
import org.alfresco.web.bean.wcm.WebProject;
|
||||
import org.alfresco.web.ui.repo.component.UILockIcon;
|
||||
|
||||
/**
|
||||
* @author Ariel Backenroth
|
||||
*/
|
||||
public class UIAVMLockIcon extends UILockIcon
|
||||
{
|
||||
// ------------------------------------------------------------------------------
|
||||
// Component implementation
|
||||
|
||||
/**
|
||||
* @see javax.faces.component.UIComponent#getFamily()
|
||||
*/
|
||||
public String getFamily()
|
||||
{
|
||||
return "org.alfresco.faces.AVMLockIcon";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see javax.faces.component.UIComponentBase#encodeBegin(javax.faces.context.FacesContext)
|
||||
*/
|
||||
public void encodeBegin(FacesContext context) throws IOException
|
||||
{
|
||||
if (isRendered() == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// get the value and see if the image is locked
|
||||
final AVMService avmService = Repository.getServiceRegistry(context).getAVMService();
|
||||
final AVMLockingService avmLockingService = Repository.getServiceRegistry(context).getAVMLockingService();
|
||||
|
||||
boolean locked = false;
|
||||
boolean lockedOwner = false;
|
||||
Object val = getValue();
|
||||
List<String> lockUser = null;
|
||||
final String avmPath = (val instanceof NodeRef
|
||||
? AVMNodeConverter.ToAVMVersionPath((NodeRef)val).getSecond()
|
||||
: (val instanceof String
|
||||
? (String)val
|
||||
: null));
|
||||
if (avmPath != null)
|
||||
{
|
||||
if (avmService.lookup(-1, avmPath) != null)
|
||||
{
|
||||
final WebProject webProject = new WebProject(avmPath);
|
||||
final AVMLock lock = avmLockingService.getLock(webProject.getStoreId(), avmPath.substring(avmPath.indexOf("/")));
|
||||
if (lock != null)
|
||||
{
|
||||
locked = true;
|
||||
final User currentUser = Application.getCurrentUser(context);
|
||||
lockUser = lock.getOwners();
|
||||
lockedOwner = (webProject.isManager(currentUser) ||
|
||||
lockUser.contains(currentUser.getUserName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
this.encodeBegin(context,
|
||||
locked,
|
||||
lockedOwner,
|
||||
lockUser == null ? new String[0] : (String[])lockUser.toArray(new String[lockUser.size()]));
|
||||
}
|
||||
}
|
@@ -719,6 +719,10 @@ public class UIUserSandboxes extends SelfRenderingComponent
|
||||
out.write("</a></td><td>");
|
||||
out.write(linkPrefix);
|
||||
out.write(name);
|
||||
UIAVMLockIcon lockIcon = (UIAVMLockIcon)fc.getApplication().createComponent("org.alfresco.faces.AVMLockIcon");
|
||||
lockIcon.setId("lock_" + FacesHelper.makeLegalId(name));
|
||||
lockIcon.setValue(sourcePath);
|
||||
Utils.encodeRecursive(fc, lockIcon);
|
||||
out.write("</a>");
|
||||
}
|
||||
else
|
||||
|
41
source/java/org/alfresco/web/ui/wcm/tag/AVMLockIconTag.java
Normal file
41
source/java/org/alfresco/web/ui/wcm/tag/AVMLockIconTag.java
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* 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.ui.wcm.tag;
|
||||
|
||||
import org.alfresco.web.ui.repo.tag.LockIconTag;
|
||||
|
||||
/**
|
||||
* @author Ariel Backenroth
|
||||
*/
|
||||
public class AVMLockIconTag extends LockIconTag
|
||||
{
|
||||
/**
|
||||
* @see javax.faces.webapp.UIComponentTag#getComponentType()
|
||||
*/
|
||||
public String getComponentType()
|
||||
{
|
||||
return "org.alfresco.faces.AVMLockIcon";
|
||||
}
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
<xs:element name="simple-test">
|
||||
<xs:element name="simple">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="string" type="xs:normalizedString" default="default string value"/>
|
||||
|
@@ -2691,7 +2691,7 @@
|
||||
</managed-property>
|
||||
<managed-property>
|
||||
<property-name>avmService</property-name>
|
||||
<value>#{AVMService}</value>
|
||||
<value>#{AVMLockingAwareService}</value>
|
||||
</managed-property>
|
||||
<managed-property>
|
||||
<property-name>avmSyncService</property-name>
|
||||
@@ -2913,7 +2913,7 @@
|
||||
<managed-bean-scope>session</managed-bean-scope>
|
||||
<managed-property>
|
||||
<property-name>avmService</property-name>
|
||||
<value>#{AVMService}</value>
|
||||
<value>#{AVMLockingAwareService}</value>
|
||||
</managed-property>
|
||||
<managed-property>
|
||||
<property-name>avmSyncService</property-name>
|
||||
@@ -2927,10 +2927,6 @@
|
||||
<property-name>avmBrowseBean</property-name>
|
||||
<value>#{AVMBrowseBean}</value>
|
||||
</managed-property>
|
||||
<managed-property>
|
||||
<property-name>nodeService</property-name>
|
||||
<value>#{NodeService}</value>
|
||||
</managed-property>
|
||||
<managed-property>
|
||||
<property-name>filePickerBean</property-name>
|
||||
<value>#{FilePickerBean}</value>
|
||||
|
@@ -10,13 +10,13 @@
|
||||
</component>
|
||||
|
||||
<component>
|
||||
<component-type>org.alfresco.faces.UserSandboxes</component-type>
|
||||
<component-class>org.alfresco.web.ui.wcm.component.UIUserSandboxes</component-class>
|
||||
<component-type>org.alfresco.faces.SandboxSnapshots</component-type>
|
||||
<component-class>org.alfresco.web.ui.wcm.component.UISandboxSnapshots</component-class>
|
||||
</component>
|
||||
|
||||
<component>
|
||||
<component-type>org.alfresco.faces.SandboxSnapshots</component-type>
|
||||
<component-class>org.alfresco.web.ui.wcm.component.UISandboxSnapshots</component-class>
|
||||
<component-type>org.alfresco.faces.AVMLockIcon</component-type>
|
||||
<component-class>org.alfresco.web.ui.wcm.component.UIAVMLockIcon</component-class>
|
||||
</component>
|
||||
|
||||
<component>
|
||||
|
@@ -411,4 +411,88 @@
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>avmLockIcon</name>
|
||||
<tag-class>org.alfresco.web.ui.wcm.tag.AVMLockIconTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
|
||||
<attribute>
|
||||
<name>id</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>binding</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>rendered</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>style</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>styleClass</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>lockImage</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>lockOwnerImage</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>align</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>width</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>height</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>lockedOwnerTooltip</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>lockedUserTooltip</name>
|
||||
<required>false</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
|
||||
<attribute>
|
||||
<name>value</name>
|
||||
<required>true</required>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
</taglib>
|
||||
|
@@ -157,6 +157,7 @@
|
||||
<a:actionLink id="col1-act2" value="#{r.name}" actionListener="#{AVMBrowseBean.clickFolder}">
|
||||
<f:param name="id" value="#{r.id}" />
|
||||
</a:actionLink>
|
||||
<w:avmLockIcon id="col10-lock" value="#{r.nodeRef}" align="absmiddle" />
|
||||
</a:column>
|
||||
|
||||
<%-- Description column
|
||||
@@ -243,6 +244,7 @@
|
||||
<a:actionLink id="col10-act1" value="#{r.name}" href="#{r.url}" target="new" image="#{r.fileType16}" showLink="false" styleClass="inlineAction" />
|
||||
</f:facet>
|
||||
<a:actionLink id="col10-act2" value="#{r.name}" href="#{r.url}" target="new" />
|
||||
<w:avmLockIcon id="col10-lock" value="#{r.nodeRef}" align="absmiddle" />
|
||||
</a:column>
|
||||
|
||||
<%-- Description column
|
||||
|
Reference in New Issue
Block a user