From 6565006d22c6ccc5861bef944fc058046eadea4c Mon Sep 17 00:00:00 2001 From: Quang Pham Date: Mon, 21 May 2012 17:20:08 +0700 Subject: [PATCH] SOC-2485 | Fix added status shared with an attached link is not shown on the Activity stream gadget --- .../webui/activity/UIActivityFactory.java | 9 ++- .../plugin/link/UILinkActivityComposer.java | 4 +- .../Activities/script/eXo/social/LinkShare.js | 12 ++-- .../script/eXo/social/StatusUpdate.js | 59 ++++++++++--------- 4 files changed, 45 insertions(+), 39 deletions(-) diff --git a/component/webui/src/main/java/org/exoplatform/social/webui/activity/UIActivityFactory.java b/component/webui/src/main/java/org/exoplatform/social/webui/activity/UIActivityFactory.java index f6243d2283..d2861d3d1e 100755 --- a/component/webui/src/main/java/org/exoplatform/social/webui/activity/UIActivityFactory.java +++ b/component/webui/src/main/java/org/exoplatform/social/webui/activity/UIActivityFactory.java @@ -53,11 +53,14 @@ public UIActivityFactory() { public BaseUIActivity addChild(ExoSocialActivity activity, UIContainer parent) throws Exception { final String type = activity.getType(); - if(type!=null){ + final String externalId = activity.getExternalId(); + if (type != null) { return buildActivity(activity, parent, type); - } else { - return buildActivity(activity, parent, UIDefaultActivity.ACTIVITY_TYPE); + } else if (externalId != null) { + // TODO Need to check if match the provided activity type or not + return buildActivity(activity, parent, externalId); } + return buildActivity(activity, parent, UIDefaultActivity.ACTIVITY_TYPE); } private BaseUIActivity buildActivity(ExoSocialActivity activity, UIContainer parent, String type) throws Exception { diff --git a/extras/link-composer-plugin/src/main/java/org/exoplatform/social/plugin/link/UILinkActivityComposer.java b/extras/link-composer-plugin/src/main/java/org/exoplatform/social/plugin/link/UILinkActivityComposer.java index a4a6e7a2bb..ff909b0f24 100644 --- a/extras/link-composer-plugin/src/main/java/org/exoplatform/social/plugin/link/UILinkActivityComposer.java +++ b/extras/link-composer-plugin/src/main/java/org/exoplatform/social/plugin/link/UILinkActivityComposer.java @@ -223,12 +223,14 @@ public void onPostActivity(PostContext postContext, UIComponent source, return; } - String title = "Shared a link: ${" + TITLE_PARAM + "} "; + String title = "${" + TITLE_PARAM + "}"; ExoSocialActivity activity = new ExoSocialActivityImpl(userIdentity.getId(), UILinkActivity.ACTIVITY_TYPE, title, null); activity.setTemplateParams(templateParams); + activity.setExternalId(UILinkActivity.ACTIVITY_TYPE); + activity.setUrl(templateParams.get(LINK_PARAM).toString()); if (postContext == UIComposer.PostContext.SPACE) { UISpaceActivitiesDisplay uiDisplaySpaceActivities = (UISpaceActivitiesDisplay) getActivityDisplay(); diff --git a/webapp/opensocial/src/main/webapp/gadgets/Activities/script/eXo/social/LinkShare.js b/webapp/opensocial/src/main/webapp/gadgets/Activities/script/eXo/social/LinkShare.js index 64fedf81a8..86c1a43453 100644 --- a/webapp/opensocial/src/main/webapp/gadgets/Activities/script/eXo/social/LinkShare.js +++ b/webapp/opensocial/src/main/webapp/gadgets/Activities/script/eXo/social/LinkShare.js @@ -40,7 +40,7 @@ eXo.social.LinkShare = function(link, lang) { this.callbackHandler = function(res) { //when can not get any info function fallback(data) { - LinkShare.data.title = data.link; //TODO gets domain name only + LinkShare.data.title = data.title; LinkShare.data.link = data.link; LinkShare.data.description = ""; LinkShare.data.images = []; @@ -658,7 +658,7 @@ eXo.social.LinkShare.prototype.save = function(comment, callback) { body.comment = comment; //body.comment = status; //params[opensocial.Activity.Field.TITLE] = Locale.getMsg('user_shared_a_link', [viewerName]); - params[opensocial.Activity.Field.TITLE] = gadgets.json.stringify(body); + //params[opensocial.Activity.Field.TITLE] = gadgets.json.stringify(body); //params[opensocial.Activity.Field.BODY] = gadgets.json.stringify(body); //debug.info(params[opensocial.Activity.Field.BODY]); //thumbnail @@ -675,14 +675,12 @@ eXo.social.LinkShare.prototype.save = function(comment, callback) { // var activity = opensocial.newActivity(params); var link = LinkShare.data.link; var title = LinkShare.data.title; - var titleData = "Shared a link: " + title + " "; var description = LinkShare.data.description; - var activity = opensocial.newActivity({ 'title' : titleData, + var image = LinkShare.data.images[LinkShare.data.selectedImageIndex]; + var activity = opensocial.newActivity({ 'title' : title, 'url': link, 'externalId' : "LINK_ACTIVITY", - - 'templateParams': - {"comment":comment,"description":description, "title":title, "link":link} + 'templateParams': {"comment":comment,"description":description, "title":title, "link":link, "image":image} }); opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, callback); //resets diff --git a/webapp/opensocial/src/main/webapp/gadgets/Activities/script/eXo/social/StatusUpdate.js b/webapp/opensocial/src/main/webapp/gadgets/Activities/script/eXo/social/StatusUpdate.js index 9b7cacdee5..42abe9c4ac 100644 --- a/webapp/opensocial/src/main/webapp/gadgets/Activities/script/eXo/social/StatusUpdate.js +++ b/webapp/opensocial/src/main/webapp/gadgets/Activities/script/eXo/social/StatusUpdate.js @@ -688,14 +688,14 @@ eXo.social.StatusUpdate.prototype.handleActivities = function(dataResponse, data * Gets html block of link share activity. * * @param activity - * @param data json title object from activity.title + * @param jsonObject * @param isOwnerActivity to decide some actions displayed */ - var getLinkShareActivityBlock = function(activity, jsonTitle, isOwnerActivity) { - if (!activity || !jsonTitle) { + var getLinkShareActivityBlock = function(activity, jsonObject, isOwnerActivity) { + if (!activity || !jsonObject) { debug.error('getLinkShareActivityBlock: activity or data is null.'); debug.info(activity); - debug.info(jsonTitle); + debug.info(jsonObject); miniMessage.createDismissibleMessage(Locale.getMsg('internal_error')); return ''; } @@ -722,35 +722,35 @@ eXo.social.StatusUpdate.prototype.handleActivities = function(dataResponse, data html.push('
'); html.push(''); html.push('
'); - if (jsonTitle.comment) { - var comment = Util.stripHtml(StatusUpdate.allowedTags, jsonTitle.comment); - if (comment !== '') { - jsonTitle.comment = comment; + if (jsonObject.comment) { + var comment = Util.stripHtml(StatusUpdate.allowedTags, jsonObject.comment); + if (comment) { + jsonObject.comment = comment; } - html.push(jsonTitle.comment); + html.push(jsonObject.comment); } - if (jsonTitle.title.length === 0) { - jsonTitle.title = jsonTitle.link; + if (!jsonObject.title) { + jsonObject.title = jsonObject.link; } var description; - if (jsonTitle.description) { - description = jsonTitle.description; + if (jsonObject.description) { + description = jsonObject.description; } html.push('
'); html.push('
') html.push('
'); - if (jsonTitle.image !== '') { - html.push('' + jsonTitle.title + ''); + if (jsonObject.image) { + html.push('' + jsonObject.title + ''); } html.push('
'); - if (jsonTitle.image !== '') { + if (jsonObject.image) { html.push('
'); //margin-left is set } else { html.push('
'); //no margin-left is set } - html.push(''); + html.push(''); html.push('
' + description + '
'); - html.push('
' + Locale.getMsg('source') + ' : ' + jsonTitle.link + '
'); + html.push('
' + Locale.getMsg('source') + ' : ' + jsonObject.link + '
'); html.push('
'); html.push('
'); html.push('
'); @@ -962,16 +962,19 @@ eXo.social.StatusUpdate.prototype.handleActivities = function(dataResponse, data function setDisplay() { var title = activity.getField(opensocial.Activity.Field.TITLE); - if (title === null) title = ''; - var jsonTitle = title.replace(/"/g, '"'); - sonTitle = jsonTitle.replace(/\/g, "\\"); - try { - jsonTitle = gadgets.json.parse(jsonTitle); - } catch(e) { - //ignores - } - if (jsonTitle.title) { //process with json Title, link display - html = getLinkShareActivityBlock(activity, jsonTitle, isOwnerActivity); + var url = activity.getField(opensocial.Activity.Field.URL); + var externalId = activity.getField(opensocial.Activity.Field.EXTERNAL_ID); + var templateParams = activity.getField(opensocial.Activity.Field.TEMPLATE_PARAMS); + var jsonObject = { + "comment": templateParams.comment, + "title": title, + "link": url, + "description": templateParams.description, + "image": templateParams.image + }; + if (!title) title = ''; + if (externalId && (externalId == 'LINK_ACTIVITY')) { + html = getLinkShareActivityBlock(activity, jsonObject, isOwnerActivity); } else {//normal display html = getNormalActivityBlock(activity, isOwnerActivity); }