diff --git a/config/alfresco/blogs/web-scripts-blog-context.xml b/config/alfresco/blogs/web-scripts-blog-context.xml
index 6791bb0295..335c911e93 100644
--- a/config/alfresco/blogs/web-scripts-blog-context.xml
+++ b/config/alfresco/blogs/web-scripts-blog-context.xml
@@ -5,11 +5,12 @@
-
-
-
-
-
+
+
+
+
+
+
@@ -29,7 +30,6 @@
-
-
-
\ No newline at end of file
+
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/AbstractBlogWebScript.java b/source/java/org/alfresco/repo/web/scripts/blogs/AbstractBlogWebScript.java
index 7f6381b542..95c03a5175 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/AbstractBlogWebScript.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/AbstractBlogWebScript.java
@@ -18,12 +18,32 @@
*/
package org.alfresco.repo.web.scripts.blogs;
+import java.io.IOException;
+import java.util.Map;
+
+import org.alfresco.repo.blog.BlogServiceImpl;
+import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.model.Repository;
import org.alfresco.service.ServiceRegistry;
+import org.alfresco.service.cmr.activities.ActivityService;
+import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.blog.BlogService;
+import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
+import org.alfresco.service.cmr.repository.StoreRef;
+import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.site.SiteService;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.json.JSONStringer;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
+import org.springframework.extensions.webscripts.Status;
+import org.springframework.extensions.webscripts.WebScriptException;
+import org.springframework.extensions.webscripts.WebScriptRequest;
/**
* @author Neil Mc Erlean
@@ -37,6 +57,7 @@ public abstract class AbstractBlogWebScript extends DeclarativeWebScript
protected static final String DATA = "data";
protected static final String DRAFT = "draft";
protected static final String EXTERNAL_BLOG_CONFIG = "externalBlogConfig";
+ protected static final String POST = "post";
protected static final String ITEM = "item";
protected static final String NODE = "node";
protected static final String PAGE = "page";
@@ -44,11 +65,14 @@ public abstract class AbstractBlogWebScript extends DeclarativeWebScript
protected static final String TAGS = "tags";
protected static final String TITLE = "title";
+ private static Log logger = LogFactory.getLog(AbstractBlogWebScript.class);
+
// Injected services
protected Repository repository;
protected BlogService blogService;
protected NodeService nodeService;
protected SiteService siteService;
+ protected ActivityService activityService;
//TODO Remove this after full refactor
protected ServiceRegistry services;
@@ -77,4 +101,190 @@ public abstract class AbstractBlogWebScript extends DeclarativeWebScript
{
this.siteService = siteService;
}
+
+ public void setActivityService(ActivityService activityService)
+ {
+ this.activityService = activityService;
+ }
+
+ /**
+ * Generates an activity entry for the discussion item
+ *
+ * @param thing Either post or reply
+ * @param event One of created, updated, deleted
+ */
+ protected void addActivityEntry(String event, BlogPostInfo blog,
+ SiteInfo site, WebScriptRequest req, JSONObject json)
+ {
+ // We can only add activities against a site
+ if (site == null)
+ {
+ logger.info("Unable to add activity entry for blog " + event + " as no site given");
+ return;
+ }
+
+ // What page is this for?
+ String page = req.getParameter("page");
+ if (page == null && json != null)
+ {
+ if (json.containsKey("page"))
+ {
+ page = (String)json.get("page");
+ }
+ }
+ if (page == null)
+ {
+ // Default
+ page = "blog-postview";
+ }
+ if (page.indexOf('?') == -1)
+ {
+ page += "?postId=" + blog.getSystemName();
+ }
+
+ // Get the title
+ String title = blog.getTitle();
+
+ try
+ {
+ String data = new JSONStringer()
+ .object()
+ .key(TITLE).value(title)
+ .key(PAGE).value(page)
+ .endObject().toString();
+
+ activityService.postActivity(
+ "org.alfresco.blog.post-" + event,
+ site.getShortName(),
+ "blog", data);
+ }
+ catch(Exception e)
+ {
+ // Warn, but carry on
+ logger.warn("Error adding blog post " + event + " to activities feed", e);
+ }
+ }
+
+ @Override
+ protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ {
+ Map templateVars = req.getServiceMatch().getTemplateVars();
+ if (templateVars == null)
+ {
+ String error = "No parameters supplied";
+ throw new WebScriptException(Status.STATUS_BAD_REQUEST, error);
+ }
+
+
+ // Parse the JSON, if supplied
+ JSONObject json = null;
+ String contentType = req.getContentType();
+ if (contentType != null && contentType.indexOf(';') != -1)
+ {
+ contentType = contentType.substring(0, contentType.indexOf(';'));
+ }
+ if (MimetypeMap.MIMETYPE_JSON.equals(contentType))
+ {
+ JSONParser parser = new JSONParser();
+ try
+ {
+ json = (JSONObject)parser.parse(req.getContent().getContent());
+ }
+ catch (IOException io)
+ {
+ throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Invalid JSON: " + io.getMessage());
+ }
+ catch (ParseException pe)
+ {
+ throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Invalid JSON: " + pe.getMessage());
+ }
+ }
+
+
+ // Did they request it by node reference or site?
+ NodeRef nodeRef = null;
+ SiteInfo site = null;
+ BlogPostInfo blog = null;
+
+ if (templateVars.containsKey("site"))
+ {
+ // Site, and Optionally Blog Post
+ String siteName = templateVars.get("site");
+ site = siteService.getSite(siteName);
+ if (site == null)
+ {
+ String error = "Could not find site: " + siteName;
+ throw new WebScriptException(Status.STATUS_NOT_FOUND, error);
+ }
+
+ // Did they give a blog post name too?
+ if (templateVars.containsKey("path"))
+ {
+ String name = templateVars.get("path");
+ blog = blogService.getBlogPost(siteName, name);
+
+ if (blog == null)
+ {
+ String error = "Could not find blog '" + name + "' for site '" +
+ site.getShortName() + "'";
+ throw new WebScriptException(Status.STATUS_NOT_FOUND, error);
+ }
+ nodeRef = blog.getNodeRef();
+ }
+ else
+ {
+ // The NodeRef is the container (if it exists)
+ if (siteService.hasContainer(siteName, BlogServiceImpl.BLOG_COMPONENT))
+ {
+ nodeRef = siteService.getContainer(siteName, BlogServiceImpl.BLOG_COMPONENT);
+ }
+ }
+ }
+ else if (templateVars.containsKey("store_type") &&
+ templateVars.containsKey("store_id") &&
+ templateVars.containsKey("id"))
+ {
+ // NodeRef, should be a Blog Post
+ StoreRef store = new StoreRef(
+ templateVars.get("store_type"),
+ templateVars.get("store_id"));
+
+ nodeRef = new NodeRef(store, templateVars.get("id"));
+ if (! nodeService.exists(nodeRef))
+ {
+ String error = "Could not find node: " + nodeRef;
+ throw new WebScriptException(Status.STATUS_NOT_FOUND, error);
+ }
+
+ // Try to build the appropriate object for it
+ blog = blogService.getForNodeRef(nodeRef);
+
+ // See if it's actually attached to a site
+ if (blog != null)
+ {
+ NodeRef container = blog.getContainerNodeRef();
+ if (container != null)
+ {
+ NodeRef maybeSite = nodeService.getPrimaryParent(container).getParentRef();
+ if (maybeSite != null)
+ {
+ // Try to make it a site, will return Null if it isn't one
+ site = siteService.getSite(maybeSite);
+ }
+ }
+ }
+ }
+ else
+ {
+ String error = "Unsupported template parameters found";
+ throw new WebScriptException(Status.STATUS_BAD_REQUEST, error);
+ }
+
+ // Have the real work done
+ return executeImpl(site, nodeRef, blog, req, json, status, cache);
+ }
+
+ protected abstract Map executeImpl(SiteInfo site,
+ NodeRef nodeRef, BlogPostInfo blog, WebScriptRequest req,
+ JSONObject json, Status status, Cache cache);
}
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/BlogLibJs.java b/source/java/org/alfresco/repo/web/scripts/blogs/BlogLibJs.java
index b3241bfcb1..3bb8e9b9b3 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/BlogLibJs.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/BlogLibJs.java
@@ -24,8 +24,7 @@ import java.util.Map;
import org.alfresco.model.BlogIntegrationModel;
import org.alfresco.service.namespace.QName;
-import org.json.JSONException;
-import org.json.JSONObject;
+import org.json.simple.JSONObject;
/**
* This class is a port of a previous JavaScript library.
@@ -57,15 +56,9 @@ public class BlogLibJs
private static void putJSONEntryInMap(JSONObject json,
Map arr, String jsonKey, QName mapKey)
{
- try
- {
- if (json.has(jsonKey))
- {
- arr.put(mapKey, json.getString(jsonKey));
- }
- } catch (JSONException ignored)
- {
- // Intentionally empty
- }
+ if (json.containsKey(jsonKey))
+ {
+ arr.put(mapKey, (Serializable)json.get(jsonKey));
+ }
}
}
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/BlogServiceTest.java b/source/java/org/alfresco/repo/web/scripts/blogs/BlogServiceTest.java
index 73af0c0019..c83313c6a6 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/BlogServiceTest.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/BlogServiceTest.java
@@ -50,6 +50,8 @@ import org.springframework.extensions.webscripts.TestWebScriptServer.Response;
/**
* Unit Test to test Blog Web Script API
*
+ * TODO Add unit tests for the Blog Integration part
+ *
* @author mruflin
*/
public class BlogServiceTest extends BaseWebScriptTest
@@ -510,7 +512,7 @@ public class BlogServiceTest extends BaseWebScriptTest
JSONObject metadata = result.getJSONObject("metadata");
JSONObject perms = metadata.getJSONObject("blogPermissions");
assertEquals(false, metadata.getBoolean("externalBlogConfig"));
- assertEquals(true, perms.getBoolean("delete"));
+ assertEquals(false, perms.getBoolean("delete")); // No container yet
assertEquals(true, perms.getBoolean("edit"));
assertEquals(true, perms.getBoolean("create"));
@@ -530,6 +532,14 @@ public class BlogServiceTest extends BaseWebScriptTest
assertEquals(2, result.getInt("itemCount"));
assertEquals(2, result.getJSONArray("items").length());
+ // Check the core permissions
+ metadata = result.getJSONObject("metadata");
+ perms = metadata.getJSONObject("blogPermissions");
+ assertEquals(false, metadata.getBoolean("externalBlogConfig"));
+ assertEquals(true, perms.getBoolean("delete")); // On the container itself
+ assertEquals(true, perms.getBoolean("edit"));
+ assertEquals(true, perms.getBoolean("create"));
+
// Check each one in detail, they'll come back Published
// then draft (newest first within that)
blog = result.getJSONArray("items").getJSONObject(0);
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/blog/BlogGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/blog/BlogGet.java
index eb69cf8b12..6858a97ad5 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/blog/BlogGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/blog/BlogGet.java
@@ -22,10 +22,13 @@ import java.util.HashMap;
import java.util.Map;
import org.alfresco.repo.web.scripts.blogs.AbstractBlogWebScript;
-import org.alfresco.repo.web.scripts.blogs.RequestUtilsLibJs;
+import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
+import org.json.simple.JSONObject;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.Status;
+import org.springframework.extensions.webscripts.WebScriptException;
import org.springframework.extensions.webscripts.WebScriptRequest;
/**
@@ -37,14 +40,34 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
public class BlogGet extends AbstractBlogWebScript
{
@Override
- protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ protected Map executeImpl(SiteInfo site, NodeRef containerNodeRef,
+ BlogPostInfo blog, WebScriptRequest req, JSONObject json, Status status, Cache cache)
{
- Map model = new HashMap();
-
- // get requested node
- NodeRef node = RequestUtilsLibJs.getRequestNode(req, services);
- model.put(ITEM, node);
-
- return model;
+ if (blog != null)
+ {
+ // They appear to have supplied a blog post itself...
+ // Oh well, let's hope for the best!
+ }
+
+ if (containerNodeRef == null && site != null)
+ {
+ // They want to know about a blog container on a
+ // site where nothing has lazy-created the container
+ // Give them info on the site for now, should be close enough!
+ containerNodeRef = site.getNodeRef();
+ }
+
+ if (containerNodeRef == null)
+ {
+ // Looks like they've asked for something that isn't there
+ throw new WebScriptException(Status.STATUS_NOT_FOUND, "Blog Not Found");
+ }
+
+ // Build the response
+ Map model = new HashMap();
+ model.put(POST, blog);
+ model.put(ITEM, blog.getNodeRef());
+
+ return model;
}
}
\ No newline at end of file
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/blog/BlogPut.java b/source/java/org/alfresco/repo/web/scripts/blogs/blog/BlogPut.java
index c663221f3b..88c135169b 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/blog/BlogPut.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/blog/BlogPut.java
@@ -18,62 +18,59 @@
*/
package org.alfresco.repo.web.scripts.blogs.blog;
-import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
-import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.BlogIntegrationModel;
+import org.alfresco.repo.blog.BlogServiceImpl;
import org.alfresco.repo.web.scripts.blogs.AbstractBlogWebScript;
import org.alfresco.repo.web.scripts.blogs.BlogLibJs;
-import org.alfresco.repo.web.scripts.blogs.RequestUtilsLibJs;
+import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.namespace.QName;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.json.JSONTokener;
+import org.json.simple.JSONObject;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptRequest;
/**
- * This class is the controller for the blog.get web script.
+ * This class is the controller for the blog.put web script.
+ *
+ * TODO Push most of the logic from this into the BlogService
*
* @author Neil Mc Erlean (based on existing JavaScript webscript controllers)
* @since 4.0
*/
public class BlogPut extends AbstractBlogWebScript
{
- @SuppressWarnings("deprecation")
@Override
- protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ protected Map executeImpl(SiteInfo site, NodeRef containerNodeRef,
+ BlogPostInfo blog, WebScriptRequest req, JSONObject json, Status status, Cache cache)
{
- Map model = new HashMap();
+ if (blog != null)
+ {
+ // They appear to have supplied a blog post itself...
+ // Oh well, let's hope for the best!
+ }
+
+ if (site != null && containerNodeRef == null)
+ {
+ // Force the lazy creation
+ // This is a bit icky, but it'll have to do for now...
+ containerNodeRef = siteService.createContainer(
+ site.getShortName(), BlogServiceImpl.BLOG_COMPONENT, null, null);
+ }
- // get requested node
- NodeRef node = RequestUtilsLibJs.getRequestNode(req, services);
-
- // parse the JSON
- JSONObject json = null;
- try
- {
- json = new JSONObject(new JSONTokener(req.getContent().getContent()));
- }
- catch (JSONException jsonX)
- {
- throw new AlfrescoRuntimeException("Could not parse JSON", jsonX);
- }
- catch (IOException iox)
- {
- throw new AlfrescoRuntimeException("Could not parse JSON", iox);
- }
-
- updateBlog(node, json);
-
- model.put("item", node);
-
- return model;
+ // Do the work
+ updateBlog(containerNodeRef, json);
+
+ // Record it as done
+ Map model = new HashMap();
+ model.put("item", containerNodeRef);
+
+ return model;
}
/**
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/post/BlogPostDelete.java b/source/java/org/alfresco/repo/web/scripts/blogs/post/BlogPostDelete.java
index 859e81d222..72560d5754 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/post/BlogPostDelete.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/post/BlogPostDelete.java
@@ -21,15 +21,14 @@ package org.alfresco.repo.web.scripts.blogs.post;
import java.util.HashMap;
import java.util.Map;
-import org.alfresco.model.ContentModel;
import org.alfresco.repo.web.scripts.blogs.AbstractBlogWebScript;
-import org.alfresco.repo.web.scripts.blogs.RequestUtilsLibJs;
-import org.alfresco.service.cmr.activities.ActivityService;
+import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
-import org.json.JSONException;
-import org.json.JSONStringer;
+import org.alfresco.service.cmr.site.SiteInfo;
+import org.json.simple.JSONObject;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.Status;
+import org.springframework.extensions.webscripts.WebScriptException;
import org.springframework.extensions.webscripts.WebScriptRequest;
/**
@@ -40,59 +39,30 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
*/
public class BlogPostDelete extends AbstractBlogWebScript
{
- private ActivityService activityService;
-
- public void setActivityService(ActivityService activityService)
- {
- this.activityService = activityService;
- }
-
- @SuppressWarnings("deprecation")
@Override
- protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ protected Map executeImpl(SiteInfo site, NodeRef nodeRef,
+ BlogPostInfo blog, WebScriptRequest req, JSONObject json, Status status, Cache cache)
{
- Map model = new HashMap();
+ if (blog == null)
+ {
+ throw new WebScriptException(Status.STATUS_NOT_FOUND, "Blog Post Not Found");
+ }
- // get requested node
- NodeRef node = RequestUtilsLibJs.getRequestNode(req, services);
+ // TODO Get this from the BlogPostInfo Object
+ final boolean isDraftBlogPost = blogService.isDraftBlogPost(blog.getNodeRef());
- // Map item = BlogPostLibJs.getBlogPostData(node, services);
-
- final String title = (String) nodeService.getProperty(node, ContentModel.PROP_TITLE);
- final String site = req.getServiceMatch().getTemplateVars().get("site");
- final String page = req.getParameter("page");
- final boolean isDraftBlogPost = blogService.isDraftBlogPost(node);
-
- nodeService.deleteNode(node);
-
- model.put("message", "Node " + node + " deleted");
+ // Have it deleted
+ blogService.deleteBlogPost(blog);
+ // If we're in a site, and it isn't a draft, add an activity
if (site != null && !isDraftBlogPost)
{
- sendActivityReport(title, site, page);
+ addActivityEntry("deleted", blog, site, req, json);
}
-
+
+ // Report it as deleted
+ Map model = new HashMap();
+ model.put("message", "Blog " + blog.getNodeRef() + " deleted");
return model;
}
-
- private void sendActivityReport(final String title, final String site,
- final String page)
- {
- String data = null;
- try
- {
- data = new JSONStringer()
- .object()
- .key(TITLE).value(title)
- .key(PAGE).value(page)
- .endObject().toString();
- } catch (JSONException e)
- {
- // Intentionally empty
- }
- if (data != null)
- {
- activityService.postActivity("org.alfresco.blog.post-deleted", site, "blog", data);
- }
- }
}
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/post/BlogPostGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/post/BlogPostGet.java
index d038b241e8..1417ba4e19 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/post/BlogPostGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/post/BlogPostGet.java
@@ -23,10 +23,13 @@ import java.util.Map;
import org.alfresco.repo.web.scripts.blogs.AbstractBlogWebScript;
import org.alfresco.repo.web.scripts.blogs.BlogPostLibJs;
-import org.alfresco.repo.web.scripts.blogs.RequestUtilsLibJs;
+import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
+import org.json.simple.JSONObject;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.Status;
+import org.springframework.extensions.webscripts.WebScriptException;
import org.springframework.extensions.webscripts.WebScriptRequest;
/**
@@ -37,16 +40,23 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
*/
public class BlogPostGet extends AbstractBlogWebScript
{
- @SuppressWarnings("deprecation")
@Override
- protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ protected Map executeImpl(SiteInfo site, NodeRef nodeRef,
+ BlogPostInfo blog, WebScriptRequest req, JSONObject json, Status status, Cache cache)
{
+ if (blog == null)
+ {
+ throw new WebScriptException(Status.STATUS_NOT_FOUND, "Blog Post Not Found");
+ }
+
+ // Build the response
Map model = new HashMap();
- // get requested node
- NodeRef node = RequestUtilsLibJs.getRequestNode(req, services);
+ // TODO Fetch this from the BlogPostInfo object
+ NodeRef node = blog.getNodeRef();
Map item = BlogPostLibJs.getBlogPostData(node, services);
- model.put("item", item);
+ model.put(ITEM, item);
+ model.put(POST, blog);
model.put("externalBlogConfig", BlogPostLibJs.hasExternalBlogConfiguration(node, services));
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java
index 603f961a7a..fa2b41f269 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java
@@ -29,13 +29,15 @@ import org.alfresco.query.PagingRequest;
import org.alfresco.query.PagingResults;
import org.alfresco.repo.web.scripts.blogs.AbstractBlogWebScript;
import org.alfresco.repo.web.scripts.blogs.BlogPostLibJs;
-import org.alfresco.repo.web.scripts.blogs.RequestUtilsLibJs;
import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.blog.BlogService.RangedDateProperty;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.util.Pair;
+import org.alfresco.util.ScriptPagingDetails;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.json.simple.JSONObject;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptRequest;
@@ -49,13 +51,11 @@ public abstract class AbstractGetBlogWebScript extends AbstractBlogWebScript
private static final Log log = LogFactory.getLog(AbstractGetBlogWebScript.class);
@Override
- protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ protected Map executeImpl(SiteInfo site, NodeRef nonSiteContainer,
+ BlogPostInfo blog, WebScriptRequest req, JSONObject json, Status status, Cache cache)
{
Map model = new HashMap();
- // get requested node
- NodeRef node = RequestUtilsLibJs.getRequestNode(req, services);
-
// process additional parameters.
PagingRequest pagingReq = parsePagingParams(req);
@@ -85,9 +85,18 @@ public abstract class AbstractGetBlogWebScript extends AbstractBlogWebScript
}
}
- // fetch and assign the data
- PagingResults blogPostList = getBlogPostList(node, fromDate, toDate,
- tag, pagingReq);
+ // Fetch and assign the data
+ PagingResults blogPostList =
+ getBlogPostList(site, nonSiteContainer, fromDate, toDate, tag, pagingReq);
+
+ // We need the container for various bits
+ NodeRef container = nonSiteContainer;
+ if(container == null)
+ {
+ // Container mustn't exist yet
+ // Fake it with the site for permissions checking reasons
+ container = site.getNodeRef();
+ }
if (log.isDebugEnabled())
{
@@ -96,7 +105,7 @@ public abstract class AbstractGetBlogWebScript extends AbstractBlogWebScript
log.debug(msg.toString());
}
- createFtlModel(req, model, node, pagingReq, blogPostList);
+ createFtlModel(req, model, container, pagingReq, blogPostList);
return model;
}
@@ -135,28 +144,20 @@ public abstract class AbstractGetBlogWebScript extends AbstractBlogWebScript
private PagingRequest parsePagingParams(WebScriptRequest req)
{
- Map templateVars = req.getServiceMatch().getTemplateVars();
- String startIndexStr = templateVars.get("startIndex");
- String pageSizeStr = templateVars.get("pageSize");
-
- int startIndex = 0;
- int pageSize = 10;
- if (startIndexStr != null)
- {
- startIndex = Integer.parseInt(startIndexStr);
- }
- if (pageSizeStr != null)
- {
- pageSize = Integer.parseInt(pageSizeStr);
- }
- return new PagingRequest(startIndex, pageSize, null);
+ return ScriptPagingDetails.buildPagingRequest(req, 1000);
}
private Date parseDateParam(WebScriptRequest req, String paramName)
{
Map templateVars = req.getServiceMatch().getTemplateVars();
String dateStr = templateVars.get(paramName);
+ if(dateStr == null)
+ {
+ // Try on the parameters instead
+ dateStr = req.getParameter(paramName);
+ }
+ // Parse if available
Date result = null;
if (dateStr != null)
{
@@ -169,18 +170,28 @@ public abstract class AbstractGetBlogWebScript extends AbstractBlogWebScript
/**
* Fetches all posts of the given blog
*/
- private PagingResults getBlogPostList(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq)
+ private PagingResults getBlogPostList(SiteInfo site, NodeRef nonSiteContainer,
+ Date fromDate, Date toDate, String tag, PagingRequest pagingReq)
{
// Currently we only support CannedQuery-based gets without tags:
if (tag == null || tag.trim().isEmpty())
{
- return getBlogResultsImpl(node, fromDate, toDate, pagingReq);
+ return getBlogResultsImpl(site, nonSiteContainer, fromDate, toDate, pagingReq);
}
else
{
- return blogService.findBlogPosts(node, new RangedDateProperty(fromDate, toDate, ContentModel.PROP_CREATED), tag, pagingReq);
+ RangedDateProperty dateRange = new RangedDateProperty(fromDate, toDate, ContentModel.PROP_CREATED);
+ if(site != null)
+ {
+ return blogService.findBlogPosts(site.getShortName(), dateRange, tag, pagingReq);
+ }
+ else
+ {
+ return blogService.findBlogPosts(nonSiteContainer, dateRange, tag, pagingReq);
+ }
}
}
- protected abstract PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq);
+ protected abstract PagingResults getBlogResultsImpl(
+ SiteInfo site, NodeRef nonSiteContainer, Date fromDate, Date toDate, PagingRequest pagingReq);
}
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsGet.java
index cf41ea410a..041c5ec06f 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsGet.java
@@ -20,10 +20,12 @@ package org.alfresco.repo.web.scripts.blogs.posts;
import java.util.Date;
+import org.alfresco.query.EmptyPagingResults;
import org.alfresco.query.PagingRequest;
import org.alfresco.query.PagingResults;
import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
/**
* This class is the controller for the blog-posts.get web script.
@@ -35,8 +37,16 @@ public class BlogPostsGet extends AbstractGetBlogWebScript
{
@SuppressWarnings("deprecation")
@Override
- protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
+ protected PagingResults getBlogResultsImpl(
+ SiteInfo site, NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
+ // As it uses deprecated methods, this bit can be a bit hacky...
+ if (node == null)
+ {
+ // Site based request, but no container exists yet
+ return new EmptyPagingResults();
+ }
+
// This intentionally uses the deprecated method in the foundation service.
// In fact the method is there specifically for this class.
return blogService.getMyDraftsAndAllPublished(node, fromDate, toDate, pagingReq);
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyDraftsGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyDraftsGet.java
index 7dbfada420..0695900524 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyDraftsGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyDraftsGet.java
@@ -25,6 +25,7 @@ import org.alfresco.query.PagingResults;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
/**
* This class is the controller for the blog-posts-mydrafts.get web script.
@@ -36,8 +37,16 @@ import org.alfresco.service.cmr.repository.NodeRef;
public class BlogPostsMyDraftsGet extends AbstractGetBlogWebScript
{
@Override
- protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
+ protected PagingResults getBlogResultsImpl(SiteInfo site, NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
- return blogService.getDrafts(node, AuthenticationUtil.getFullyAuthenticatedUser(), pagingReq);
+ String user = AuthenticationUtil.getFullyAuthenticatedUser();
+ if(site != null)
+ {
+ return blogService.getDrafts(site.getShortName(), user, pagingReq);
+ }
+ else
+ {
+ return blogService.getDrafts(node, user, pagingReq);
+ }
}
}
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyPublishedGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyPublishedGet.java
index 4985903e37..2fd9e3772c 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyPublishedGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyPublishedGet.java
@@ -25,6 +25,7 @@ import org.alfresco.query.PagingResults;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
/**
* This class is the controller for the blog-posts-mypublished.get web script.
@@ -35,9 +36,17 @@ import org.alfresco.service.cmr.repository.NodeRef;
public class BlogPostsMyPublishedGet extends AbstractGetBlogWebScript
{
@Override
- protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
+ protected PagingResults getBlogResultsImpl(
+ SiteInfo site, NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
String fullyAuthenticatedUser = AuthenticationUtil.getFullyAuthenticatedUser();
- return blogService.getPublished(node, fromDate, toDate, fullyAuthenticatedUser, pagingReq);
+ if(site != null)
+ {
+ return blogService.getPublished(site.getShortName(), fromDate, toDate, fullyAuthenticatedUser, pagingReq);
+ }
+ else
+ {
+ return blogService.getPublished(node, fromDate, toDate, fullyAuthenticatedUser, pagingReq);
+ }
}
}
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsNewGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsNewGet.java
index ea65955542..28bd1a4472 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsNewGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsNewGet.java
@@ -24,6 +24,7 @@ import org.alfresco.query.PagingRequest;
import org.alfresco.query.PagingResults;
import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
/**
* This class is the controller for the blog-posts-publishedext.get web script.
@@ -34,8 +35,16 @@ import org.alfresco.service.cmr.repository.NodeRef;
public class BlogPostsNewGet extends AbstractGetBlogWebScript
{
@Override
- protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
+ protected PagingResults getBlogResultsImpl(
+ SiteInfo site, NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
- return blogService.getPublished(node, fromDate, toDate, null, pagingReq);
+ if(site != null)
+ {
+ return blogService.getPublished(site.getShortName(), fromDate, toDate, null, pagingReq);
+ }
+ else
+ {
+ return blogService.getPublished(node, fromDate, toDate, null, pagingReq);
+ }
}
}
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPerMonthGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPerMonthGet.java
index 6f4982aee4..5198fcbe24 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPerMonthGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPerMonthGet.java
@@ -30,6 +30,7 @@ import org.alfresco.query.PagingRequest;
import org.alfresco.query.PagingResults;
import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
import org.springframework.extensions.webscripts.WebScriptRequest;
/**
@@ -41,9 +42,17 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
public class BlogPostsPerMonthGet extends AbstractGetBlogWebScript
{
@Override
- protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
+ protected PagingResults getBlogResultsImpl(
+ SiteInfo site, NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
- return blogService.getPublished(node, fromDate, toDate, null, pagingReq);
+ if(site != null)
+ {
+ return blogService.getPublished(site.getShortName(), fromDate, toDate, null, pagingReq);
+ }
+ else
+ {
+ return blogService.getPublished(node, fromDate, toDate, null, pagingReq);
+ }
}
@Override
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPost.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPost.java
index f5cac71c2b..c23827ee7b 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPost.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPost.java
@@ -18,30 +18,23 @@
*/
package org.alfresco.repo.web.scripts.blogs.posts;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.alfresco.model.ContentModel;
import org.alfresco.repo.web.scripts.blogs.AbstractBlogWebScript;
import org.alfresco.repo.web.scripts.blogs.BlogPostLibJs;
-import org.alfresco.repo.web.scripts.blogs.RequestUtilsLibJs;
-import org.alfresco.service.cmr.activities.ActivityService;
import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.tagging.TaggingService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.json.JSONStringer;
-import org.json.JSONTokener;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.Status;
-import org.springframework.extensions.webscripts.WebScriptException;
import org.springframework.extensions.webscripts.WebScriptRequest;
/**
@@ -55,34 +48,33 @@ public class BlogPostsPost extends AbstractBlogWebScript
private static final Log log = LogFactory.getLog(BlogPostsPost.class);
// Injected services
- private ActivityService activityService;
private TaggingService taggingService;
- public void setActivityService(ActivityService activityService)
- {
- this.activityService = activityService;
- }
-
public void setTaggingService(TaggingService taggingService)
{
this.taggingService = taggingService;
}
@Override
- protected Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ protected Map executeImpl(SiteInfo site, NodeRef nodeRef,
+ BlogPostInfo blog, WebScriptRequest req, JSONObject json, Status status, Cache cache)
{
Map model = new HashMap();
- JsonParams jsonPostParams = parsePostParams(req);
+ // If they're doing Path Based rather than Site Based, ensure
+ // that the Container is a Tag Scope
+ if(site == null && nodeRef != null)
+ {
+ ensureTagScope(nodeRef);
+ }
+
+ // Have the Blog Post created
+ JsonParams jsonPostParams = parsePostParams(json);
+ BlogPostInfo post = createBlogPost(jsonPostParams, site, nodeRef);
- NodeRef node = RequestUtilsLibJs.getRequestNode(req, services);
- ensureTagScope(node);
-
- NodeRef post = createBlogPost(jsonPostParams, node);
-
- Map blogPostData = BlogPostLibJs.getBlogPostData(post, services);
+ Map blogPostData = BlogPostLibJs.getBlogPostData(post.getNodeRef(), services);
model.put(ITEM, blogPostData);
- model.put(EXTERNAL_BLOG_CONFIG, BlogPostLibJs.hasExternalBlogConfiguration(node, services));
+ model.put(EXTERNAL_BLOG_CONFIG, BlogPostLibJs.hasExternalBlogConfiguration(nodeRef, services));
boolean isDraft = blogPostData.get(ITEM) != null &&
((Boolean)blogPostData.get(ITEM)).booleanValue();
@@ -91,92 +83,62 @@ public class BlogPostsPost extends AbstractBlogWebScript
jsonPostParams.getPage() != null &&
!isDraft)
{
- final NodeRef nodeParam = (NodeRef)blogPostData.get(NODE);
- String postNodeName = (String)nodeService.getProperty(nodeParam, ContentModel.PROP_NAME);
- String postNodeTitle = (String)nodeService.getProperty(nodeParam, ContentModel.PROP_TITLE);
- String data = null;
- try
- {
- data = new JSONStringer()
- .object()
- .key(TITLE).value(postNodeTitle)
- .key(PAGE).value(jsonPostParams.getPage() + "?postId=" + postNodeName)
- .endObject().toString();
- } catch (JSONException e)
- {
- // Intentionally empty
- }
- if (data != null)
- {
- activityService.postActivity("org.alfresco.blog.post-created", jsonPostParams.getSite(), "blog", data);
- }
+ addActivityEntry("created", post, site, req, json);
}
return model;
}
- private JsonParams parsePostParams(WebScriptRequest req)
+ private JsonParams parsePostParams(JSONObject json)
{
- try
- {
- JSONObject json = new JSONObject(new JSONTokener(req.getContent().getContent()));
-
- JsonParams result = new JsonParams();
- if (json.has(TITLE))
- {
- result.setTitle(json.getString(TITLE));
- }
- if (json.has(CONTENT))
- {
- result.setContent(json.getString(CONTENT));
- }
- if (json.has(DRAFT))
- {
- result.setIsDraft(json.getString(DRAFT));
- }
- // If there are no tags, this is a java.lang.String "".
- // If there are any tags, it's a JSONArray of strings. One or more.
- if (json.has(TAGS))
- {
- Object tagsObj = json.get(TAGS);
- List tags = new ArrayList();
- if (tagsObj instanceof JSONArray)
- {
- JSONArray tagsJsonArray = (JSONArray)tagsObj;
- for (int i = 0; i < tagsJsonArray.length(); i++)
- {
- tags.add(tagsJsonArray.getString(i));
- }
- }
- else
- {
- tags.add(tagsObj.toString());
- }
- result.setTags(tags);
- }
- if (json.has(SITE))
- {
- result.setSite(json.getString(SITE));
- }
- if (json.has(PAGE))
- {
- result.setPage(json.getString(PAGE));
- }
- if (json.has(CONTAINER))
- {
- result.setContainer(json.getString(CONTAINER));
- }
-
- return result;
- }
- catch (IOException iox)
- {
- throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Could not read content from req.", iox);
- }
- catch (JSONException je)
- {
- throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Could not parse JSON from req.", je);
- }
+ JsonParams result = new JsonParams();
+ if (json.containsKey(TITLE))
+ {
+ result.setTitle((String)json.get(TITLE));
+ }
+ if (json.containsKey(CONTENT))
+ {
+ result.setContent((String)json.get(CONTENT));
+ }
+ if (json.containsKey(DRAFT))
+ {
+ result.setIsDraft((Boolean)json.get(DRAFT));
+ }
+
+ // If there are no tags, this is a java.lang.String "".
+ // If there are any tags, it's a JSONArray of strings. One or more.
+ if (json.containsKey(TAGS))
+ {
+ Object tagsObj = json.get(TAGS);
+ List tags = new ArrayList();
+ if (tagsObj instanceof JSONArray)
+ {
+ JSONArray tagsJsonArray = (JSONArray)tagsObj;
+ for (int i = 0; i < tagsJsonArray.size(); i++)
+ {
+ tags.add( (String)tagsJsonArray.get(i) );
+ }
+ }
+ else
+ {
+ tags.add(tagsObj.toString());
+ }
+ result.setTags(tags);
+ }
+ if (json.containsKey(SITE))
+ {
+ result.setSite((String)json.get(SITE));
+ }
+ if (json.containsKey(PAGE))
+ {
+ result.setPage((String)json.get(PAGE));
+ }
+ if (json.containsKey(CONTAINER))
+ {
+ result.setContainer((String)json.get(CONTAINER));
+ }
+
+ return result;
}
/**
@@ -202,11 +164,11 @@ public class BlogPostsPost extends AbstractBlogWebScript
/**
* Creates a blog post
*/
- private NodeRef createBlogPost(JsonParams jsonParams, NodeRef blogNode)
+ private BlogPostInfo createBlogPost(JsonParams jsonParams, SiteInfo site, NodeRef blogNode)
{
String titleParam = jsonParams.getTitle() == null ? "" : jsonParams.getTitle();
String contentParam = jsonParams.getContent() == null ? "" : jsonParams.getContent();
- boolean isDraftParam = jsonParams.getIsDraft() == null ? false : Boolean.parseBoolean(jsonParams.getIsDraft());
+ boolean isDraftParam = jsonParams.getIsDraft();
if (log.isDebugEnabled())
{
@@ -225,7 +187,17 @@ public class BlogPostsPost extends AbstractBlogWebScript
tagsParam.addAll(jsonParams.getTags());
}
- BlogPostInfo newPostNode = blogService.createBlogPost(blogNode, titleParam, contentParam, isDraftParam);
+ BlogPostInfo newPostNode;
+ if(site != null)
+ {
+ newPostNode = blogService.createBlogPost(
+ site.getShortName(), titleParam, contentParam, isDraftParam);
+ }
+ else
+ {
+ newPostNode = blogService.createBlogPost(
+ blogNode, titleParam, contentParam, isDraftParam);
+ }
// Ignore empty string tags
List nonEmptyTags = new ArrayList();
@@ -241,7 +213,7 @@ public class BlogPostsPost extends AbstractBlogWebScript
taggingService.setTags(newPostNode.getNodeRef(), nonEmptyTags);
}
- return newPostNode.getNodeRef();
+ return newPostNode;
}
/**
@@ -251,7 +223,7 @@ public class BlogPostsPost extends AbstractBlogWebScript
{
private String title;
private String content;
- private String isDraft; //This is a String, not a boolean
+ private boolean isDraft = false;
private List tags;
private String site;
private String container;
@@ -273,11 +245,11 @@ public class BlogPostsPost extends AbstractBlogWebScript
{
this.content = content;
}
- public String getIsDraft()
+ public boolean getIsDraft()
{
return isDraft;
}
- public void setIsDraft(String isDraft)
+ public void setIsDraft(boolean isDraft)
{
this.isDraft = isDraft;
}
diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPublishedExtGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPublishedExtGet.java
index 2788bf408e..d7f7977dd3 100644
--- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPublishedExtGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPublishedExtGet.java
@@ -24,6 +24,7 @@ import org.alfresco.query.PagingRequest;
import org.alfresco.query.PagingResults;
import org.alfresco.service.cmr.blog.BlogPostInfo;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.site.SiteInfo;
/**
* This class is the controller for the blog-posts-publishedext.get web script.
@@ -34,8 +35,16 @@ import org.alfresco.service.cmr.repository.NodeRef;
public class BlogPostsPublishedExtGet extends AbstractGetBlogWebScript
{
@Override
- protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
+ protected PagingResults getBlogResultsImpl(
+ SiteInfo site, NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
- return blogService.getPublishedExternally(node, pagingReq);
+ if(site != null)
+ {
+ return blogService.getPublishedExternally(site.getShortName(), pagingReq);
+ }
+ else
+ {
+ return blogService.getPublishedExternally(node, pagingReq);
+ }
}
}