diff --git a/config/alfresco/web-publishing-context.xml b/config/alfresco/web-publishing-context.xml index 8e341150eb..c6e80b8b31 100644 --- a/config/alfresco/web-publishing-context.xml +++ b/config/alfresco/web-publishing-context.xml @@ -87,6 +87,7 @@ + diff --git a/source/java/org/alfresco/repo/publishing/AbstractChannelType.java b/source/java/org/alfresco/repo/publishing/AbstractChannelType.java index 77fd534518..77957274d9 100644 --- a/source/java/org/alfresco/repo/publishing/AbstractChannelType.java +++ b/source/java/org/alfresco/repo/publishing/AbstractChannelType.java @@ -38,6 +38,8 @@ import org.alfresco.service.cmr.transfer.NodeFinder; import org.alfresco.service.namespace.QName; import org.alfresco.util.ParameterCheck; import org.springframework.beans.factory.InitializingBean; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; /** * @author Nick Smith @@ -175,4 +177,29 @@ public abstract class AbstractChannelType implements ChannelType, InitializingBe } return result; } + + public Resource getIcon16() + { + return getIcon("16"); + } + + public Resource getIcon32() + { + return getIcon("32"); + } + + protected Resource getIcon(String sizeSuffix) + { + String className = this.getClass().getCanonicalName(); + className = className.replaceAll("\\.", "\\/"); + StringBuilder iconPath = new StringBuilder(className); + iconPath.append(sizeSuffix).append('.').append(getIconFileExtension()); + Resource resource = new ClassPathResource(iconPath.toString()); + return resource.exists() ? resource : null; + } + + public String getIconFileExtension() + { + return "png"; + } } diff --git a/source/java/org/alfresco/repo/publishing/PublishingEventProcessor.java b/source/java/org/alfresco/repo/publishing/PublishingEventProcessor.java index d947963019..fe2b04c1ac 100644 --- a/source/java/org/alfresco/repo/publishing/PublishingEventProcessor.java +++ b/source/java/org/alfresco/repo/publishing/PublishingEventProcessor.java @@ -34,6 +34,7 @@ import java.util.Set; import org.alfresco.model.ContentModel; import org.alfresco.repo.policy.BehaviourFilter; +import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.publishing.NodeSnapshot; import org.alfresco.service.cmr.publishing.PublishingEvent; import org.alfresco.service.cmr.publishing.PublishingPackageEntry; @@ -62,6 +63,7 @@ public class PublishingEventProcessor private NodeService nodeService; private BehaviourFilter behaviourFilter; private UrlShortener urlShortener; + private DictionaryService dictionaryService; public void processEventNode(NodeRef eventNode) { @@ -223,6 +225,13 @@ public class PublishingEventProcessor Map publishProps = nodeService.getProperties(publishedNode); Set propsToRemove = new HashSet(publishProps.keySet()); propsToRemove.removeAll(snapshotProps.keySet()); + + //We want to retain the published asset id and URL in the updated node... + snapshotProps.put(PublishingModel.PROP_ASSET_ID, nodeService.getProperty(publishedNode, + PublishingModel.PROP_ASSET_ID)); + snapshotProps.put(PublishingModel.PROP_ASSET_URL, nodeService.getProperty(publishedNode, + PublishingModel.PROP_ASSET_URL)); + for (QName propertyToRemove : propsToRemove) { nodeService.removeProperty(publishedNode, propertyToRemove); @@ -238,6 +247,12 @@ public class PublishingEventProcessor Set aspectsToRemove = nodeService.getAspects(publishedNode); aspectsToRemove.removeAll(newAspects); aspectsToRemove.remove(ASPECT_PUBLISHED); + aspectsToRemove.remove(PublishingModel.ASPECT_ASSET); + for (QName publishedAssetAspect : dictionaryService.getSubAspects(PublishingModel.ASPECT_ASSET, true)) + { + aspectsToRemove.remove(publishedAssetAspect); + } + for (QName aspectToRemove : aspectsToRemove) { nodeService.removeAspect(publishedNode, aspectToRemove); @@ -327,4 +342,9 @@ public class PublishingEventProcessor { this.urlShortener = urlShortener; } + + public void setDictionaryService(DictionaryService dictionaryService) + { + this.dictionaryService = dictionaryService; + } } \ No newline at end of file diff --git a/source/java/org/alfresco/repo/publishing/facebook/FacebookChannelType16.png b/source/java/org/alfresco/repo/publishing/facebook/FacebookChannelType16.png new file mode 100644 index 0000000000..ac2a4f0374 Binary files /dev/null and b/source/java/org/alfresco/repo/publishing/facebook/FacebookChannelType16.png differ diff --git a/source/java/org/alfresco/repo/publishing/facebook/FacebookChannelType32.png b/source/java/org/alfresco/repo/publishing/facebook/FacebookChannelType32.png new file mode 100644 index 0000000000..bc0bcd9560 Binary files /dev/null and b/source/java/org/alfresco/repo/publishing/facebook/FacebookChannelType32.png differ diff --git a/source/java/org/alfresco/repo/publishing/flickr/FlickrChannelType16.png b/source/java/org/alfresco/repo/publishing/flickr/FlickrChannelType16.png new file mode 100644 index 0000000000..3cc9fcf672 Binary files /dev/null and b/source/java/org/alfresco/repo/publishing/flickr/FlickrChannelType16.png differ diff --git a/source/java/org/alfresco/repo/publishing/flickr/FlickrChannelType32.png b/source/java/org/alfresco/repo/publishing/flickr/FlickrChannelType32.png new file mode 100644 index 0000000000..9395b72055 Binary files /dev/null and b/source/java/org/alfresco/repo/publishing/flickr/FlickrChannelType32.png differ diff --git a/source/java/org/alfresco/repo/publishing/slideshare/SlideShareChannelType16.png b/source/java/org/alfresco/repo/publishing/slideshare/SlideShareChannelType16.png new file mode 100644 index 0000000000..0cdf715687 Binary files /dev/null and b/source/java/org/alfresco/repo/publishing/slideshare/SlideShareChannelType16.png differ diff --git a/source/java/org/alfresco/repo/publishing/slideshare/SlideShareChannelType32.png b/source/java/org/alfresco/repo/publishing/slideshare/SlideShareChannelType32.png new file mode 100644 index 0000000000..9f918f4149 Binary files /dev/null and b/source/java/org/alfresco/repo/publishing/slideshare/SlideShareChannelType32.png differ diff --git a/source/java/org/alfresco/repo/publishing/twitter/TwitterChannelType16.png b/source/java/org/alfresco/repo/publishing/twitter/TwitterChannelType16.png new file mode 100644 index 0000000000..32a97f4075 Binary files /dev/null and b/source/java/org/alfresco/repo/publishing/twitter/TwitterChannelType16.png differ diff --git a/source/java/org/alfresco/repo/publishing/twitter/TwitterChannelType32.png b/source/java/org/alfresco/repo/publishing/twitter/TwitterChannelType32.png new file mode 100644 index 0000000000..06119a414a Binary files /dev/null and b/source/java/org/alfresco/repo/publishing/twitter/TwitterChannelType32.png differ diff --git a/source/java/org/alfresco/repo/publishing/youtube/YouTubeChannelType16.png b/source/java/org/alfresco/repo/publishing/youtube/YouTubeChannelType16.png new file mode 100644 index 0000000000..a869638ac6 Binary files /dev/null and b/source/java/org/alfresco/repo/publishing/youtube/YouTubeChannelType16.png differ diff --git a/source/java/org/alfresco/repo/publishing/youtube/YouTubeChannelType32.png b/source/java/org/alfresco/repo/publishing/youtube/YouTubeChannelType32.png new file mode 100644 index 0000000000..6ff7494b36 Binary files /dev/null and b/source/java/org/alfresco/repo/publishing/youtube/YouTubeChannelType32.png differ diff --git a/source/java/org/alfresco/service/cmr/publishing/channels/ChannelType.java b/source/java/org/alfresco/service/cmr/publishing/channels/ChannelType.java index 0d334465a4..d9bc79e8a3 100644 --- a/source/java/org/alfresco/service/cmr/publishing/channels/ChannelType.java +++ b/source/java/org/alfresco/service/cmr/publishing/channels/ChannelType.java @@ -27,6 +27,7 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.transfer.NodeFilter; import org.alfresco.service.cmr.transfer.NodeFinder; import org.alfresco.service.namespace.QName; +import org.springframework.core.io.Resource; /** * @author Brian @@ -59,4 +60,8 @@ public interface ChannelType String getAuthorisationUrl(Channel channel, String callbackUrl); boolean acceptAuthorisationCallback(Channel channel, Map callbackHeaders, Map callbackParams); + + String getIconFileExtension(); + Resource getIcon16(); + Resource getIcon32(); }