Merged BRANCHES/DEV/BRIAN/PUBLISHING to HEAD:

29482: Publishing:
   - Added support for LinkedIn status updates
 29486: Social Publishing UI Updates, including:
   - Dialogue: Complete UI rework
   - Publishing History: display of unpublish event support
   - Created Alfresco.util.toggleClass function
 29491: Publishing:
   - Added correct list of supported MIME types the the YouTube channel type
 29493: Publishing:
   - Added video/mp4 to YouTube supported MIME types
 29496: ChannelsGet now filters out channels that are not authorised. Added a space before the node URL on status updates. Extended unit tests to check behaviour for non-Admin users.
 29513: Adds specific http client libraries to prevent the mac falling back to it's buggy default implementation (which, e.g. doesn't send Content-Length headers if the content length is zero). Required for Flickr support (their publish API requires both a content length header and zero length content. It returns a 411 error using the default Mac libs).
 29534: Fixed PublishingEventsGet REST method. ChannelService getChannels() methods now support filtering by publish permissions.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29542 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Brian Remmington
2011-08-04 08:26:41 +00:00
parent 34585f5f2e
commit 7ceaf0a9b0
39 changed files with 1114 additions and 384 deletions

View File

@@ -93,15 +93,14 @@ public class ChannelHelper
nodeService.createNode(parent, ASSOC_CONTAINS, channelQName, channelNodeType, props);
NodeRef channelNode = channelAssoc.getChildRef();
// Allow any user to read Channel permissions.
permissionService.setPermission(channelNode, PermissionService.ALL_AUTHORITIES, PermissionService.READ_PERMISSIONS, true);
permissionService.setPermission(channelNode, PermissionService.ALL_AUTHORITIES, PermissionService.READ_ASSOCIATIONS, true);
return channelNode;
}
public Channel buildChannelObject(NodeRef nodeRef, ChannelService channelService)
{
if(nodeRef == null ||
nodeService.exists(nodeRef)==false ||
permissionService.hasPermission(nodeRef, PermissionService.ADD_CHILDREN)!= AccessStatus.ALLOWED)
nodeService.exists(nodeRef)==false)
{
return null;
}
@@ -259,16 +258,40 @@ public class ChannelHelper
return null;
}
public List<Channel> getChannels(NodeRef channelContainer, final ChannelService channelService)
public List<Channel> getAllChannels(NodeRef channelContainer, final ChannelService channelService)
{
List<ChildAssociationRef> channelAssocs = getChannelAssocs(channelContainer);
return CollectionUtils.transform(channelAssocs, getChannelTransformer(channelService));
return CollectionUtils.transform(channelAssocs, getChannelTransformer(channelService, false));
}
public List<Channel> getChannelsByType(NodeRef containerNode, String channelTypeId, ChannelService channelService)
public List<Channel> getChannelsForTypes(final NodeRef containerNode, List<ChannelType> types, final ChannelService channelService, final boolean checkPermissions)
{
return CollectionUtils.transformFlat(types, new Function<ChannelType, List<Channel>>()
{
public List<Channel> apply(ChannelType channelType)
{
return getChannelsByType(containerNode, channelType.getId(), channelService, checkPermissions);
}
});
}
public List<Channel> getChannelsByType(NodeRef containerNode, String channelTypeId, ChannelService channelService, boolean checkPermissions)
{
List<ChildAssociationRef> channelAssocs = getChannelAssocsByType(containerNode, channelTypeId);
return CollectionUtils.transform(channelAssocs, getChannelTransformer(channelService));
return CollectionUtils.transform(channelAssocs, getChannelTransformer(channelService, checkPermissions));
}
public List<Channel> filterAuthorisedChannels(Collection<Channel> channels)
{
return CollectionUtils.filter(channels, new Filter<Channel>()
{
@Override
public Boolean apply(Channel value)
{
return value.isAuthorised();
}
});
}
public List<ChannelType> getReleventChannelTypes(final NodeRef nodeToPublish, Collection<ChannelType> channelTypes)
@@ -334,18 +357,28 @@ public class ChannelHelper
return null;
}
private Function<ChildAssociationRef, Channel> getChannelTransformer(final ChannelService channelService)
private Function<ChildAssociationRef, Channel> getChannelTransformer(final ChannelService channelService, final boolean checkPermissions)
{
return new Function<ChildAssociationRef, Channel>()
{
public Channel apply(ChildAssociationRef value)
{
NodeRef channelNode = value.getChildRef();
if(checkPermissions && hasPublishPermissions(channelNode)==false)
{
return null;
}
return buildChannelObject(channelNode, channelService);
}
};
}
public boolean hasPublishPermissions(NodeRef channelNode)
{
AccessStatus access = permissionService.hasPermission(channelNode, PermissionService.ADD_CHILDREN);
return AccessStatus.ALLOWED == access;
}
public boolean isChannelAuthorised(NodeRef channelNode)
{
Boolean isAuthorised = Boolean.FALSE;