updated to liferay 62

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/news-feed@126812 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Massimiliano Assante 2016-04-06 14:35:20 +00:00
parent 5fcef05c31
commit 96006bba75
18 changed files with 208 additions and 225 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="src" output="target/news-feed-1.13.1-SNAPSHOT/WEB-INF/classes" path="src/main/java"> <classpathentry kind="src" output="target/news-feed-2.0.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<attributes> <attributes>
<attribute name="optional" value="true"/> <attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
@ -31,5 +31,5 @@
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="output" path="target/news-feed-1.13.1-SNAPSHOT/WEB-INF/classes"/> <classpathentry kind="output" path="target/news-feed-2.0.0-SNAPSHOT/WEB-INF/classes"/>
</classpath> </classpath>

View File

@ -4,6 +4,15 @@
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
<dependent-module archiveName="session-checker-1.0.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/session-checker/session-checker">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="pickitem-widget-1.1.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/pickitem-widget/pickitem-widget">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="gcube-widgets-2.0.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/gcube-widgets/gcube-widgets">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="java-output-path" value="/${module}/target/www/WEB-INF/classes"/> <property name="java-output-path" value="/${module}/target/www/WEB-INF/classes"/>
<property name="context-root" value="news-feed"/> <property name="context-root" value="news-feed"/>
</wb-module> </wb-module>

View File

@ -0,0 +1,7 @@
<root>
<facet id="jst.jaxrs">
<node name="libprov">
<attribute name="provider-id" value="jaxrs-no-op-library-provider"/>
</node>
</facet>
</root>

View File

@ -2,7 +2,8 @@
<faceted-project> <faceted-project>
<fixed facet="wst.jsdt.web"/> <fixed facet="wst.jsdt.web"/>
<installed facet="wst.jsdt.web" version="1.0"/> <installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="jst.web" version="2.5"/>
<installed facet="java" version="1.7"/> <installed facet="java" version="1.7"/>
<installed facet="liferay.portlet" version="6.0"/> <installed facet="liferay.portlet" version="6.0"/>
<installed facet="jst.jaxrs" version="2.0"/>
<installed facet="jst.web" version="3.0"/>
</faceted-project> </faceted-project>

0
log.txt Normal file
View File

56
pom.xml
View File

@ -13,7 +13,7 @@
<groupId>org.gcube.portlets.user</groupId> <groupId>org.gcube.portlets.user</groupId>
<artifactId>news-feed</artifactId> <artifactId>news-feed</artifactId>
<packaging>war</packaging> <packaging>war</packaging>
<version>1.13.1-SNAPSHOT</version> <version>2.0.0-SNAPSHOT</version>
<name>gCube News Feed Portlet</name> <name>gCube News Feed Portlet</name>
<description> <description>
@ -32,7 +32,7 @@
<maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.target>1.7</maven.compiler.target>
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory> <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<liferay.version>6.2.5</liferay.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties> </properties>
@ -48,12 +48,6 @@
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
<dependencies> <dependencies>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.9.1</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>com.google.gwt</groupId> <groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId> <artifactId>gwt-user</artifactId>
@ -100,7 +94,7 @@
<dependency> <dependency>
<groupId>org.gcube.portlets.widgets</groupId> <groupId>org.gcube.portlets.widgets</groupId>
<artifactId>session-checker</artifactId> <artifactId>session-checker</artifactId>
<version>[0.2.0-SNAPSHOT, 1.0.0-SNAPSHOT)</version> <version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.portlets.widgets</groupId> <groupId>org.gcube.portlets.widgets</groupId>
@ -120,7 +114,7 @@
<dependency> <dependency>
<groupId>org.gcube.portlets.widgets</groupId> <groupId>org.gcube.portlets.widgets</groupId>
<artifactId>image-previewer-widget</artifactId> <artifactId>image-previewer-widget</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>[1.1.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.common</groupId> <groupId>org.gcube.common</groupId>
@ -146,22 +140,31 @@
<dependency> <dependency>
<groupId>org.gcube.portlets.user</groupId> <groupId>org.gcube.portlets.user</groupId>
<artifactId>gcube-widgets</artifactId> <artifactId>gcube-widgets</artifactId>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.portal</groupId> <groupId>org.gcube.portal</groupId>
<artifactId>custom-portal-handler</artifactId> <artifactId>custom-portal-handler</artifactId>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>org.gcube.common.portal</groupId>
<artifactId>portal-manager</artifactId>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.dvos</groupId>
<artifactId>usermanagement-core</artifactId>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
</dependency>
<dependency> <dependency>
<groupId>org.gcube.core</groupId> <groupId>org.gcube.core</groupId>
<artifactId>common-scope-maps</artifactId> <artifactId>common-scope-maps</artifactId>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>org.gcube.dvos</groupId>
<artifactId>usermanagement-core</artifactId>
</dependency>
<dependency> <dependency>
<groupId>com.google</groupId> <groupId>com.google</groupId>
<artifactId>gwt-jsonmaker</artifactId> <artifactId>gwt-jsonmaker</artifactId>
@ -183,6 +186,25 @@
<dependency> <dependency>
<groupId>com.liferay.portal</groupId> <groupId>com.liferay.portal</groupId>
<artifactId>portal-service</artifactId> <artifactId>portal-service</artifactId>
<version>${liferay.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>util-bridges</artifactId>
<version>${liferay.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>util-taglib</artifactId>
<version>${liferay.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>util-java</artifactId>
<version>${liferay.version}</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
@ -190,6 +212,12 @@
<artifactId>portlet-api</artifactId> <artifactId>portlet-api</artifactId>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId> <artifactId>slf4j-log4j12</artifactId>

View File

@ -6,6 +6,7 @@ import java.util.HashSet;
import net.eliasbalasis.tibcopagebus4gwt.client.PageBusAdapterException; import net.eliasbalasis.tibcopagebus4gwt.client.PageBusAdapterException;
import org.gcube.common.portal.GCubePortalConstants;
import org.gcube.portal.databook.client.GCubeSocialNetworking; import org.gcube.portal.databook.client.GCubeSocialNetworking;
import org.gcube.portal.databook.client.util.Encoder; import org.gcube.portal.databook.client.util.Encoder;
import org.gcube.portal.databook.shared.Attachment; import org.gcube.portal.databook.shared.Attachment;
@ -17,6 +18,7 @@ import org.gcube.portal.databook.shared.FeedType;
import org.gcube.portal.databook.shared.Like; import org.gcube.portal.databook.shared.Like;
import org.gcube.portal.databook.shared.PrivacyLevel; import org.gcube.portal.databook.shared.PrivacyLevel;
import org.gcube.portal.databook.shared.UserInfo; import org.gcube.portal.databook.shared.UserInfo;
import org.gcube.portlets.user.gcubewidgets.client.ClientScopeHelper;
import org.gcube.portlets.user.newsfeed.client.FilterType; import org.gcube.portlets.user.newsfeed.client.FilterType;
import org.gcube.portlets.user.newsfeed.client.NewsFeed; import org.gcube.portlets.user.newsfeed.client.NewsFeed;
import org.gcube.portlets.user.newsfeed.client.NewsService; import org.gcube.portlets.user.newsfeed.client.NewsService;
@ -202,8 +204,8 @@ public class NewsFeedPanel extends Composite {
eventBus.addHandler(SelectedUserEvent.TYPE, new SelectedUserEventHandler() { eventBus.addHandler(SelectedUserEvent.TYPE, new SelectedUserEventHandler() {
@Override @Override
public void onSelectedUser(SelectedUserEvent event) { public void onSelectedUser(SelectedUserEvent event) {
GWT.log("event..."); final String profilePageURL = GCubePortalConstants.PREFIX_GROUP_URL + ClientScopeHelper.extractOrgFriendlyURL(Location.getHref()) +GCubePortalConstants.USER_PROFILE_FRIENDLY_URL;
Location.assign(GCubeSocialNetworking.USER_PROFILE_LINK+"?"+ Location.assign(profilePageURL+"?"+
Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+ Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+
Encoder.encode(event.getSelectedUser().getId())); Encoder.encode(event.getSelectedUser().getId()));
} }
@ -331,8 +333,8 @@ public class NewsFeedPanel extends Composite {
showFeedTimelineSource = result.isShowTimelineSourceLabel(); showFeedTimelineSource = result.isShowTimelineSourceLabel();
isInfrastructure = true; isInfrastructure = true;
} }
else // else
mainPanel.addStyleName("framed"); // mainPanel.addStyleName("framed");
} }
}); });
@ -414,8 +416,8 @@ public class NewsFeedPanel extends Composite {
@Override @Override
public void onSuccess(EnhancedFeed result) { public void onSuccess(EnhancedFeed result) {
if (result.getFeed().getType() == FeedType.DISABLED) { if (result.getFeed().getType() == FeedType.DISABLED) {
final String profilePageURL = GCubePortalConstants.PREFIX_GROUP_URL + ClientScopeHelper.extractOrgFriendlyURL(Location.getHref()) +GCubePortalConstants.USER_PROFILE_FRIENDLY_URL;
String usrLink = "<a class=\"link\" href=\""+GCubeSocialNetworking.USER_PROFILE_LINK+"?"+ String usrLink = "<a class=\"link\" href=\""+profilePageURL+"?"+
Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+ Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+
Encoder.encode(result.getFeed().getEntityId())+"\">"+result.getFeed().getFullName()+ Encoder.encode(result.getFeed().getEntityId())+"\">"+result.getFeed().getFullName()+
"</a> "; "</a> ";
@ -772,7 +774,7 @@ public class NewsFeedPanel extends Composite {
} else { } else {
newsPanel.add(new HTML("<div class=\"nofeed-message\">" + newsPanel.add(new HTML("<div class=\"nofeed-message\">" +
"Sorry, looks like we've got nothing for you at the moment. <br> " + "Sorry, looks like we've got nothing for you at the moment. <br> " +
"You may begin by <a class=\"vrelink\" href=\"/group/data-e-infrastructure-gateway/join-new/\"><span class=\"important\">joining</span></a> some of the available " + "You may begin by joining some of the available " +
"<br>"+vreLabel+"s.</div>")); "<br>"+vreLabel+"s.</div>"));
} }
isFirstTweet = true; isFirstTweet = true;

View File

@ -90,7 +90,7 @@ public class AddCommentTemplate extends Composite {
mainPanel.removeStyleName("comment-hidden"); mainPanel.removeStyleName("comment-hidden");
mainPanel.setStyleName("single-comment"); mainPanel.setStyleName("single-comment");
commentTextArea.addStyleName("comment-dark-color"); commentTextArea.addStyleName("comment-dark-color");
submitButton.setText("Save"); submitButton.setText("Edit");
} }
/** Used by AddCommentTemplate to instantiate SuperPosedTextArea */ /** Used by AddCommentTemplate to instantiate SuperPosedTextArea */

View File

@ -1,8 +1,11 @@
package org.gcube.portlets.user.newsfeed.client.ui; package org.gcube.portlets.user.newsfeed.client.ui;
import org.gcube.common.portal.GCubePortalConstants;
import org.gcube.common.portal.PortalContext;
import org.gcube.portal.databook.client.GCubeSocialNetworking; import org.gcube.portal.databook.client.GCubeSocialNetworking;
import org.gcube.portal.databook.client.util.Encoder; import org.gcube.portal.databook.client.util.Encoder;
import org.gcube.portal.databook.shared.Comment; import org.gcube.portal.databook.shared.Comment;
import org.gcube.portlets.user.gcubewidgets.client.ClientScopeHelper;
import org.gcube.portlets.user.newsfeed.client.event.DeleteCommentEvent; import org.gcube.portlets.user.newsfeed.client.event.DeleteCommentEvent;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
@ -14,6 +17,7 @@ import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window.Location;
import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HTMLPanel;
@ -85,8 +89,9 @@ public class SingleComment extends Composite {
commentToShow = commentToShow.substring(0, TEXT_TO_SHOW_LENGHT) + "..."; commentToShow = commentToShow.substring(0, TEXT_TO_SHOW_LENGHT) + "...";
seeMore.setHTML("<a class=\"seemore\"> See More </a>"); seeMore.setHTML("<a class=\"seemore\"> See More </a>");
} }
final String profilePageURL = GCubePortalConstants.PREFIX_GROUP_URL + ClientScopeHelper.extractOrgFriendlyURL(Location.getHref()) +GCubePortalConstants.USER_PROFILE_FRIENDLY_URL;
commentText.setHTML("<a class=\"link\" href=\""+GCubeSocialNetworking.USER_PROFILE_LINK+"?"+
commentText.setHTML("<a class=\"link\" href=\"" + profilePageURL + "?"+
Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+ Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+
Encoder.encode(toShow.getUserid())+"\">"+toShow.getFullName()+ Encoder.encode(toShow.getUserid())+"\">"+toShow.getFullName()+
"</a> " + commentToShow); "</a> " + commentToShow);
@ -110,8 +115,9 @@ public class SingleComment extends Composite {
commentToShow = commentToShow.replaceAll("&lt;","<").replaceAll("&gt;",">"); commentToShow = commentToShow.replaceAll("&lt;","<").replaceAll("&gt;",">");
commentToShow = commentToShow.replaceAll("&amp;","&"); commentToShow = commentToShow.replaceAll("&amp;","&");
final String profilePageURL = GCubePortalConstants.PREFIX_GROUP_URL + ClientScopeHelper.extractOrgFriendlyURL(Location.getHref()) +GCubePortalConstants.USER_PROFILE_FRIENDLY_URL;
commentText.setHTML("<a class=\"link\" href=\""+GCubeSocialNetworking.USER_PROFILE_LINK+"?"+
commentText.setHTML("<a class=\"link\" href=\"" + profilePageURL + "?"+
Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+ Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+
Encoder.encode(myComment.getUserid())+"\">"+ Encoder.encode(myComment.getUserid())+"\">"+
myComment.getFullName()+"</a> " + commentToShow); myComment.getFullName()+"</a> " + commentToShow);

View File

@ -11,7 +11,7 @@
<tr> <tr>
<td width="30px" align="middle"> <td width="30px" align="middle">
<g:Image styleName="member-photo" url="" ui:field="avatarImage" <g:Image styleName="member-photo" url="" ui:field="avatarImage"
width="30px" height="30px" /> width="36px" height="36px" />
<m:AvatarReplacement4Comments visible="false" <m:AvatarReplacement4Comments visible="false"
ui:field="avatarReplacement"></m:AvatarReplacement4Comments> ui:field="avatarReplacement"></m:AvatarReplacement4Comments>
</td> </td>

View File

@ -7,6 +7,7 @@ import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import org.gcube.common.portal.GCubePortalConstants;
import org.gcube.portal.databook.client.GCubeSocialNetworking; import org.gcube.portal.databook.client.GCubeSocialNetworking;
import org.gcube.portal.databook.client.util.Encoder; import org.gcube.portal.databook.client.util.Encoder;
import org.gcube.portal.databook.shared.Attachment; import org.gcube.portal.databook.shared.Attachment;
@ -14,6 +15,7 @@ import org.gcube.portal.databook.shared.Comment;
import org.gcube.portal.databook.shared.EnhancedFeed; import org.gcube.portal.databook.shared.EnhancedFeed;
import org.gcube.portal.databook.shared.Feed; import org.gcube.portal.databook.shared.Feed;
import org.gcube.portal.databook.shared.UserInfo; import org.gcube.portal.databook.shared.UserInfo;
import org.gcube.portlets.user.gcubewidgets.client.ClientScopeHelper;
import org.gcube.portlets.user.newsfeed.client.event.AddLikeEvent; import org.gcube.portlets.user.newsfeed.client.event.AddLikeEvent;
import org.gcube.portlets.user.newsfeed.client.event.DeleteFeedEvent; import org.gcube.portlets.user.newsfeed.client.event.DeleteFeedEvent;
import org.gcube.portlets.user.newsfeed.client.event.OpenFeedEvent; import org.gcube.portlets.user.newsfeed.client.event.OpenFeedEvent;
@ -37,6 +39,7 @@ import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window; import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.Window.Location;
import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HTMLPanel;
@ -301,10 +304,12 @@ public class TweetTemplate extends Composite {
//replace the < & and > //replace the < & and >
feedText = feedText.replaceAll("&lt;","<").replaceAll("&gt;",">"); feedText = feedText.replaceAll("&lt;","<").replaceAll("&gt;",">");
feedText = feedText.replaceAll("&amp;","&"); feedText = feedText.replaceAll("&amp;","&");
final String profilePageURL = GCubePortalConstants.PREFIX_GROUP_URL + ClientScopeHelper.extractOrgFriendlyURL(Location.getHref()) +GCubePortalConstants.USER_PROFILE_FRIENDLY_URL;
if (! isAppFeed) { if (! isAppFeed) {
// sharePostArea.setHTML("<a>" + NewsFeedPanel.SHARE_FWD_LABEL + "</a>"); // sharePostArea.setHTML("<a>" + NewsFeedPanel.SHARE_FWD_LABEL + "</a>");
contentArea.setHTML("<a class=\"link\" href=\""+GCubeSocialNetworking.USER_PROFILE_LINK contentArea.setHTML("<a class=\"link\" href=\""+profilePageURL
+"?"+ +"?"+
Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+ Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+
Encoder.encode(feed.getEntityId())+"\">"+feed.getFullName()+"</a> " + feedText); Encoder.encode(feed.getEntityId())+"\">"+feed.getFullName()+"</a> " + feedText);
@ -441,7 +446,11 @@ public class TweetTemplate extends Composite {
//replace the < & and > //replace the < & and >
feedText = feedText.replaceAll("&lt;","<").replaceAll("&gt;",">"); feedText = feedText.replaceAll("&lt;","<").replaceAll("&gt;",">");
feedText = feedText.replaceAll("&amp;","&"); feedText = feedText.replaceAll("&amp;","&");
contentArea.setHTML("<a class=\"link\"href=\""+GCubeSocialNetworking.USER_PROFILE_LINK+"?"+
final String profilePageURL = GCubePortalConstants.PREFIX_GROUP_URL + ClientScopeHelper.extractOrgFriendlyURL(Location.getHref()) +GCubePortalConstants.USER_PROFILE_FRIENDLY_URL;
contentArea.setHTML("<a class=\"link\"href=\"" + profilePageURL + "?"+
Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+ Encoder.encode(GCubeSocialNetworking.USER_PROFILE_OID)+"="+
Encoder.encode(myFeed.getFeed().getEntityId())+"\">"+ Encoder.encode(myFeed.getFeed().getEntityId())+"\">"+
myFeed.getFeed().getFullName()+"</a> " + feedText); myFeed.getFeed().getFullName()+"</a> " + feedText);

View File

@ -21,10 +21,12 @@ import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.application.framework.core.session.SessionManager; import org.gcube.application.framework.core.session.SessionManager;
import org.gcube.applicationsupportlayer.social.ApplicationNotificationsManager; import org.gcube.applicationsupportlayer.social.ApplicationNotificationsManager;
import org.gcube.applicationsupportlayer.social.NotificationsManager; import org.gcube.applicationsupportlayer.social.NotificationsManager;
import org.gcube.common.portal.GCubePortalConstants;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.scope.impl.ScopeBean; import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.common.scope.impl.ScopeBean.Type; import org.gcube.common.scope.impl.ScopeBean.Type;
import org.gcube.portal.custom.communitymanager.OrganizationsUtil;
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
import org.gcube.portal.databook.client.GCubeSocialNetworking;
import org.gcube.portal.databook.server.DBCassandraAstyanaxImpl; import org.gcube.portal.databook.server.DBCassandraAstyanaxImpl;
import org.gcube.portal.databook.server.DatabookStore; import org.gcube.portal.databook.server.DatabookStore;
import org.gcube.portal.databook.shared.Attachment; import org.gcube.portal.databook.shared.Attachment;
@ -43,6 +45,7 @@ import org.gcube.portal.notifications.bean.GenericItemBean;
import org.gcube.portal.notifications.thread.CommentNotificationsThread; import org.gcube.portal.notifications.thread.CommentNotificationsThread;
import org.gcube.portal.notifications.thread.LikeNotificationsThread; import org.gcube.portal.notifications.thread.LikeNotificationsThread;
import org.gcube.portal.notifications.thread.MentionNotificationsThread; import org.gcube.portal.notifications.thread.MentionNotificationsThread;
import org.gcube.portlets.user.gcubewidgets.client.ClientScopeHelper;
import org.gcube.portlets.user.newsfeed.client.NewsService; import org.gcube.portlets.user.newsfeed.client.NewsService;
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean; import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
import org.gcube.portlets.user.newsfeed.shared.NewsConstants; import org.gcube.portlets.user.newsfeed.shared.NewsConstants;
@ -51,21 +54,22 @@ import org.gcube.portlets.user.newsfeed.shared.UserSettings;
import org.gcube.portlets.widgets.pickitem.shared.ItemBean; import org.gcube.portlets.widgets.pickitem.shared.ItemBean;
import org.gcube.socialnetworking.social_data_search_client.ElasticSearchClientImpl; import org.gcube.socialnetworking.social_data_search_client.ElasticSearchClientImpl;
import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.GroupManager;
import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayGroupManager; import org.gcube.vomanagement.usermanagement.UserManager;
import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException;
import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault;
import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager;
import org.gcube.vomanagement.usermanagement.impl.LiferayRoleManager;
import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager;
import org.gcube.vomanagement.usermanagement.model.GCubeGroup;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.google.gwt.user.client.Window.Location;
import com.google.gwt.user.server.rpc.RemoteServiceServlet; import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.Organization;
import com.liferay.portal.model.Role;
import com.liferay.portal.model.User;
import com.liferay.portal.model.UserModel;
import com.liferay.portal.service.OrganizationLocalServiceUtil;
import com.liferay.portal.service.UserLocalServiceUtil; import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.theme.ThemeDisplay;
/** /**
* The server side implementation of the RPC service. * The server side implementation of the RPC service.
@ -74,10 +78,7 @@ import com.liferay.portal.theme.ThemeDisplay;
public class NewsServiceImpl extends RemoteServiceServlet implements NewsService { public class NewsServiceImpl extends RemoteServiceServlet implements NewsService {
private static final Logger _log = LoggerFactory.getLogger(NewsServiceImpl.class); private static final Logger _log = LoggerFactory.getLogger(NewsServiceImpl.class);
/**
*
*/
private static final String ADMIN_ROLE = "Administrator";
private static final String VRE_LABEL = "VRE_LABEL"; private static final String VRE_LABEL = "VRE_LABEL";
private static final String SHOW_TIMELINE_SOURCE = "SHOW_TIMELINE_SOURCE"; private static final String SHOW_TIMELINE_SOURCE = "SHOW_TIMELINE_SOURCE";
private static final String REFRESH_TIME = "REFRESH_TIME"; private static final String REFRESH_TIME = "REFRESH_TIME";
@ -139,7 +140,7 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
*/ */
public String getDevelopmentUser() { public String getDevelopmentUser() {
String user = NewsConstants.TEST_USER; String user = NewsConstants.TEST_USER;
// user = "costantino.perciante"; // user = "costantino.perciante";
return user; return user;
} }
/** /**
@ -179,18 +180,24 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
} }
if (username.compareTo(NewsConstants.TEST_USER) != 0 && !isDevelopment) { if (username.compareTo(NewsConstants.TEST_USER) != 0 && !isDevelopment) {
UserModel user = UserLocalServiceUtil.getUserByScreenName(OrganizationsUtil.getCompany().getCompanyId(), username); UserManager um = new LiferayUserManager();
thumbnailURL = "/image/user_male_portrait?img_id="+user.getPortraitId(); GCubeUser user = um.getUserByUsername(username);
fullName = user.getFirstName() + " " + user.getLastName();
email = user.getEmailAddress(); thumbnailURL = user.getUserAvatarURL();
String accountURL = ""; fullName = user.getFullname();
email = user.getEmail();
final String profilePageURL =
GCubePortalConstants.PREFIX_GROUP_URL +
PortalContext.getConfiguration().getSiteLandingPagePath(getThreadLocalRequest())+
GCubePortalConstants.USER_PROFILE_FRIENDLY_URL;
String accountURL = profilePageURL;
try { try {
ThemeDisplay themeDisplay = (ThemeDisplay) this.getThreadLocalRequest().getSession().getAttribute(WebKeys.THEME_DISPLAY); accountURL = "";
accountURL = themeDisplay.getURLMyAccount().toString();
}catch (NullPointerException e) { }catch (NullPointerException e) {
e.printStackTrace(); e.printStackTrace();
} }
UserInfo userInfo = new UserInfo(username, fullName, thumbnailURL, user.getEmailAddress(), accountURL, true, isAdmin(), null); UserInfo userInfo = new UserInfo(username, fullName, thumbnailURL, user.getEmail(), accountURL, true, isAdmin(), null);
CustomConfiguration config = getUserConfiguration(); CustomConfiguration config = getUserConfiguration();
UserSettings toReturn = new UserSettings(userInfo, config.getRefreshTime(), session.getScopeName(), config.getVreLabel(), isInfrastructureScope(), config.isShowTimelineSource()); UserSettings toReturn = new UserSettings(userInfo, config.getRefreshTime(), session.getScopeName(), config.getVreLabel(), isInfrastructureScope(), config.isShowTimelineSource());
setUserSettingsInSession(toReturn); setUserSettingsInSession(toReturn);
@ -243,18 +250,20 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
return null; return null;
} }
_log.info("****** retrieving feeds for user: " + userName); _log.info("****** retrieving posts for user: " + userName);
User currUser = OrganizationsUtil.validateUser(userName); UserManager um = new LiferayUserManager();
GCubeUser currUser = um.getUserByUsername(userName);
/** /**
* this handles the case where the portlet is deployed outside of VREs (regular) * this handles the case where the portlet is deployed outside of VREs (regular)
*/ */
if (isInfrastructureScope()) { if (isInfrastructureScope()) {
_log.info("****** risInfrastructureScope() = true");
//VRE Feeds //VRE Feeds
GroupManager gm = new LiferayGroupManager(); GroupManager gm = new LiferayGroupManager();
for (Organization org : currUser.getOrganizations()) { for (GCubeGroup group : gm.listGroupsByUser(currUser.getUserId())) {
if (gm.isVRE(org.getOrganizationId()+"")) { if (gm.isVRE(group.getGroupId())) {
String vreid = gm.getScope(""+org.getOrganizationId()); //get the scope String vreid = gm.getInfrastructureScope(group.getGroupId()); //get the scope
_log.trace("Reading feeds for VRE: " + vreid); _log.info("Reading feeds for VRE: " + vreid);
ArrayList<Feed> OrganizationFeeds = (ArrayList<Feed>) store.getRecentFeedsByVRE(vreid, feedsNoPerCategory); ArrayList<Feed> OrganizationFeeds = (ArrayList<Feed>) store.getRecentFeedsByVRE(vreid, feedsNoPerCategory);
for (Feed feed : OrganizationFeeds) { for (Feed feed : OrganizationFeeds) {
feedsMap.put(feed.getKey(), feed); feedsMap.put(feed.getKey(), feed);
@ -328,16 +337,18 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
} }
String lowerCaseHashtag = hashtag.toLowerCase(); String lowerCaseHashtag = hashtag.toLowerCase();
/** /**
* this handles the case where the portlet is deployed outside of VREs (regular) * this handles the case where the portlet is deployed outside of VREs (regular)
*/ */
if (isInfrastructureScope()) { if (isInfrastructureScope()) {
User currUser = OrganizationsUtil.validateUser(userName); UserManager um = new LiferayUserManager();
GCubeUser currUser = um.getUserByUsername(userName);
//VRE Feeds //VRE Feeds
for (Organization org : currUser.getOrganizations()) { GroupManager gm = new LiferayGroupManager();
GroupManager gm = new LiferayGroupManager(); for (GCubeGroup group : gm.listGroupsByUser(currUser.getUserId())) {
if (gm.isVRE(org.getOrganizationId()+"")) { if (gm.isVRE(group.getGroupId())) {
String vreid = gm.getScope(""+org.getOrganizationId()); //get the scope String vreid = gm.getInfrastructureScope(group.getGroupId()); //get the scope
ArrayList<Feed> feeds = (ArrayList<Feed>) store.getVREFeedsByHashtag(vreid, lowerCaseHashtag); ArrayList<Feed> feeds = (ArrayList<Feed>) store.getVREFeedsByHashtag(vreid, lowerCaseHashtag);
for (Feed feed : feeds) { for (Feed feed : feeds) {
feedsMap.put(feed.getKey(), feed); feedsMap.put(feed.getKey(), feed);
@ -410,11 +421,13 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
Set<String> vres = new HashSet<String>(); Set<String> vres = new HashSet<String>();
if (isInfrastructureScope()) { if (isInfrastructureScope()) {
User currUser = OrganizationsUtil.validateUser(userName); UserManager um = new LiferayUserManager();
for (Organization org : currUser.getOrganizations()) { GCubeUser currUser = um.getUserByUsername(userName);
GroupManager gm = new LiferayGroupManager(); //VRE Feeds
if (gm.isVRE(org.getOrganizationId()+"")) { GroupManager gm = new LiferayGroupManager();
String vreid = gm.getScope(""+org.getOrganizationId()); //get the scope for (GCubeGroup group : gm.listGroupsByUser(currUser.getUserId())) {
if (gm.isVRE(group.getGroupId())) {
String vreid = gm.getInfrastructureScope(group.getGroupId()); //get the scope
vres.add(vreid); vres.add(vreid);
} }
} }
@ -701,7 +714,7 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
ArrayList<ItemBean> mentionedUsers = null; ArrayList<ItemBean> mentionedUsers = null;
if (mentionedUserFullNames != null && ! mentionedUserFullNames.isEmpty()) { if (mentionedUserFullNames != null && ! mentionedUserFullNames.isEmpty()) {
mentionedUsers = getSelectedUserIds(mentionedUserFullNamesList); mentionedUsers = getSelectedUserIds(mentionedUserFullNamesList);
escapedCommentText = Utils.convertMentionPeopleAnchorHTML(escapedCommentText, mentionedUsers); escapedCommentText = Utils.convertMentionPeopleAnchorHTML(escapedCommentText, mentionedUsers, getThreadLocalRequest());
} }
Comment comment = new Comment(UUID.randomUUID().toString(), user.getUsername(), Comment comment = new Comment(UUID.randomUUID().toString(), user.getUsername(),
@ -857,20 +870,13 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
if (! isWithinPortal()) { if (! isWithinPortal()) {
return ""; return "";
} }
StringBuilder thumbnailURL = new StringBuilder("/image/user_male_portrait?img_id="); String thumbnailURL = "";
User user = null;
try { try {
user = UserLocalServiceUtil.getUserByScreenName(OrganizationsUtil.getCompany().getCompanyId(), screenName); thumbnailURL = new LiferayUserManager().getUserByUsername(screenName).getUserAvatarURL();
} } catch (UserManagementSystemException | UserRetrievalFault e) {
catch (com.liferay.portal.NoSuchUserException ex) {
return null;
}
catch (PortalException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace(); e.printStackTrace();
} }
return thumbnailURL.append(user.getPortraitId()).toString(); return thumbnailURL;
} }
@Override @Override
@ -992,7 +998,7 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
if (fullNames == null) if (fullNames == null)
return new ArrayList<ItemBean>(); return new ArrayList<ItemBean>();
else { else {
ArrayList<ItemBean> allUsers = Utils.getOrganizationUsers("/"+OrganizationsUtil.getRootOrganizationName(), getASLSession().getUsername(), isWithinPortal()); ArrayList<ItemBean> allUsers = Utils.getOrganizationUsers("/"+PortalContext.getConfiguration().getInfrastructureName(), getASLSession().getUsername(), isWithinPortal());
ArrayList<ItemBean> toReturn = new ArrayList<ItemBean>(); ArrayList<ItemBean> toReturn = new ArrayList<ItemBean>();
for (String fullName : fullNames) for (String fullName : fullNames)
for (ItemBean puser : allUsers) { for (ItemBean puser : allUsers) {
@ -1014,40 +1020,16 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
private boolean isAdmin() throws PortalException, SystemException { private boolean isAdmin() throws PortalException, SystemException {
if (! isWithinPortal()) if (! isWithinPortal())
return false; return false;
try { try {
User currUser = OrganizationsUtil.validateUser(getASLSession().getUsername()); GCubeUser curUser = new LiferayUserManager().getUserByUsername(getASLSession().getUsername());
List<Organization> organizations = OrganizationLocalServiceUtil.getOrganizations(0, OrganizationLocalServiceUtil.getOrganizationsCount()); return new LiferayRoleManager().isAdmin(curUser.getUserId());
Organization rootOrganization = null;
for (Organization organization : organizations) {
if (organization.getName().equals(OrganizationsUtil.getRootOrganizationName() ) ) {
rootOrganization = organization;
break;
}
}
_log.trace("root: " + rootOrganization.getName() );
return (hasRole(ADMIN_ROLE, rootOrganization.getName(), currUser));
} }
catch (NullPointerException e) { catch (Exception e) {
_log.error("Cannot find root organziation, please check gcube-data.properties file in $CATALINA_HOME/conf folder"); _log.error("Could not check if the user is an Administrator, returning false");
return false; return false;
} }
} }
/**
*
* @param rolename
* @param organizationName
* @param user
* @return
* @throws SystemException
*/
private boolean hasRole(String rolename, String organizationName, User user) throws SystemException {
for (Role role : user.getRoles())
if (role.getName().compareTo(rolename) == 0 )
return true;
return false;
}
/** /**
* utilty method that convert a URL in a text into a clickable link into the browser * utilty method that convert a URL in a text into a clickable link into the browser
* *

View File

@ -7,21 +7,26 @@ import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.gcube.common.portal.GCubePortalConstants;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.scope.impl.ScopeBean; import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.common.scope.impl.ScopeBean.Type; import org.gcube.common.scope.impl.ScopeBean.Type;
import org.gcube.portal.custom.communitymanager.OrganizationsUtil;
import org.gcube.portal.databook.client.GCubeSocialNetworking; import org.gcube.portal.databook.client.GCubeSocialNetworking;
import org.gcube.portlets.widgets.pickitem.shared.ItemBean; import org.gcube.portlets.widgets.pickitem.shared.ItemBean;
import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.GroupManager;
import org.gcube.vomanagement.usermanagement.UserManager; import org.gcube.vomanagement.usermanagement.UserManager;
import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayGroupManager; import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager;
import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayUserManager; import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager;
import org.gcube.vomanagement.usermanagement.model.UserModel; import org.gcube.vomanagement.usermanagement.model.GCubeUser;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.liferay.portal.service.UserLocalServiceUtil; import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.management.PortalManager;
public class Utils { public class Utils {
private static final Logger _log = LoggerFactory.getLogger(Utils.class); private static final Logger _log = LoggerFactory.getLogger(Utils.class);
@ -38,7 +43,7 @@ public class Utils {
UserManager um = new LiferayUserManager(); UserManager um = new LiferayUserManager();
GroupManager gm = new LiferayGroupManager(); GroupManager gm = new LiferayGroupManager();
ScopeBean sb = new ScopeBean(scope); ScopeBean sb = new ScopeBean(scope);
List<UserModel> users = null; List<GCubeUser> users = null;
if (sb.is(Type.INFRASTRUCTURE)) if (sb.is(Type.INFRASTRUCTURE))
users = um.listUsersByGroup(gm.getRootVO().getGroupId()); users = um.listUsersByGroup(gm.getRootVO().getGroupId());
@ -52,12 +57,9 @@ public class Utils {
_log.error("Error, you must be in SCOPE VRE OR INFRASTURCTURE, you are in VO SCOPE returning no users"); _log.error("Error, you must be in SCOPE VRE OR INFRASTURCTURE, you are in VO SCOPE returning no users");
return portalUsers; return portalUsers;
} }
for (UserModel user : users) { for (GCubeUser user : users) {
if (user.getScreenName().compareTo("test.user") != 0 && user.getScreenName().compareTo(currUser) != 0) { //skip test.user & current user if (user.getUsername().compareTo("test.user") != 0 && user.getUsername().compareTo(currUser) != 0) { //skip test.user & current user
String thumbnailURL = ""; portalUsers.add(new ItemBean(user.getUserId()+"", user.getUsername(), user.getFullname(), user.getUserAvatarURL()));
com.liferay.portal.model.UserModel lifeUser = UserLocalServiceUtil.getUserByScreenName(OrganizationsUtil.getCompany().getCompanyId(), user.getScreenName());
thumbnailURL = "/image/user_male_portrait?img_id="+lifeUser.getPortraitId();
portalUsers.add(new ItemBean(user.getUserId(), user.getScreenName(), user.getFullname(), thumbnailURL));
} }
} }
} }
@ -152,9 +154,15 @@ public class Utils {
* @param taggedPeople * @param taggedPeople
* @return * @return
*/ */
protected static String convertMentionPeopleAnchorHTML(String escapedFeedText, ArrayList<ItemBean> taggedPeople) { protected static String convertMentionPeopleAnchorHTML(String escapedFeedText, ArrayList<ItemBean> taggedPeople, HttpServletRequest request) {
String userProfilePageURL = "";
try {
userProfilePageURL = PortalContext.getConfiguration().getSiteLandingPagePath(request)+GCubePortalConstants.USER_PROFILE_FRIENDLY_URL;
} catch (PortalException | SystemException e) {
e.printStackTrace();
}
for (ItemBean tagged : taggedPeople) { for (ItemBean tagged : taggedPeople) {
String taggedHTML = "<a class=\"link\" href=\""+GCubeSocialNetworking.USER_PROFILE_LINK String taggedHTML = "<a class=\"link\" href=\""+userProfilePageURL
+"?"+ +"?"+
new String(Base64.encodeBase64(GCubeSocialNetworking.USER_PROFILE_OID.getBytes()))+"="+ new String(Base64.encodeBase64(GCubeSocialNetworking.USER_PROFILE_OID.getBytes()))+"="+
new String(Base64.encodeBase64(tagged.getName().getBytes()))+"\">"+tagged.getAlternativeName()+"</a> "; new String(Base64.encodeBase64(tagged.getName().getBytes()))+"\">"+tagged.getAlternativeName()+"</a> ";
@ -180,43 +188,5 @@ public class Utils {
} }
return null; return null;
} }
/**
// *
// * @param vreid
// * @param hashtag
// * @return the feed map for the client containing occurrences of the hashtag
// * @throws PrivacyLevelTypeNotFoundException
// * @throws FeedTypeNotFoundException
// * @throws FeedIDNotFoundException
// * @throws ColumnNameNotFoundException
// */
// private HashMap<String, Feed> getFeedsMap(String vreid, String hashtag) throws PrivacyLevelTypeNotFoundException, FeedTypeNotFoundException, FeedIDNotFoundException, ColumnNameNotFoundException {
// if (hashtag.length() < 2)
// throw new IllegalArgumentException("Hashtag length myst be greater than 1");
// else {
// HashMap<String, Feed> feedsMap = new HashMap<String, Feed>();
// String upperCase = hashtag;
// String lowerCase = hashtag;
//
// char afterHashtag = hashtag.charAt(1);
// if (Character.isUpperCase(afterHashtag)) {
// upperCase = hashtag;
// lowerCase =hashtag.substring(0,1)+Character.toLowerCase(afterHashtag)+hashtag.substring(2);
// } else {
// upperCase =hashtag.substring(0,1)+Character.toUpperCase(afterHashtag)+hashtag.substring(2);
// lowerCase = hashtag;
// }
//
// ArrayList<Feed> lowerCaseFeeds = (ArrayList<Feed>) store.getVREFeedsByHashtag(vreid, lowerCase);
// for (Feed feed : lowerCaseFeeds) {
// feedsMap.put(feed.getKey(), feed);
// }
// ArrayList<Feed> upperCaseFeeds = (ArrayList<Feed>) store.getVREFeedsByHashtag(vreid, upperCase);
// for (Feed feed : upperCaseFeeds) {
// feedsMap.put(feed.getKey(), feed);
// }
// return feedsMap;
// }
// }
} }

View File

@ -11,11 +11,15 @@ import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse; import javax.portlet.RenderResponse;
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class NewsFeedPortlet extends GenericPortlet { public class NewsFeedPortlet extends GenericPortlet {
private static final Logger _log = LoggerFactory.getLogger(NewsFeedPortlet.class);
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
response.setContentType("text/html"); response.setContentType("text/html");
ScopeHelper.setContext(request); ScopeHelper.setContext(request);
_log.debug("NewsFeedPortlet context set");
PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/NewsFeed_view.jsp"); PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/NewsFeed_view.jsp");
dispatcher.include(request, response); dispatcher.include(request, response);
} }

View File

@ -1,4 +1,4 @@
@import url(http://fonts.googleapis.com/css?family=Architects+Daughter); @import url(https://fonts.googleapis.com/css?family=Architects+Daughter);
table { table {
border-collapse: separate !important; border-collapse: separate !important;
@ -46,7 +46,7 @@ table {
/* this is very important when usere paste long links*/ /* this is very important when usere paste long links*/
} }
.post-comment { div#comment-inputContainer textarea.post-comment {
padding: 4px 2px; padding: 4px 2px;
color: #999; color: #999;
background-color: transparent; background-color: transparent;
@ -60,6 +60,17 @@ table {
margin-left: 5px; margin-left: 5px;
width: 430px; width: 430px;
min-height: 30px; min-height: 30px;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
div#comment-inputContainer textarea.post-comment.comment-dark-color {
color: #333;
background-color: transparent;
transition: background .25s ease-in-out;
-moz-transition: background .25s ease-in-out;
-webkit-transition: background .25s ease-in-out;
} }
.highlightedUser { .highlightedUser {
@ -67,17 +78,6 @@ table {
} }
/* DIV trick ends here */ /* DIV trick ends here */
.framed {
margin: 0 0 10px;
padding: 10px;
margin: 0 5px;
background: #FFF;
border-radius: 6px !important;
-moz-border-radius: 6px !important;
-webkit-border-radius: 6px !important;
border: 1px solid #DBDBDB;
}
.new-feeds-container { .new-feeds-container {
position: relative; position: relative;
} }
@ -249,17 +249,12 @@ table {
line-height: 14px; line-height: 14px;
} }
.member-photo { img.member-photo {
display: block; display: block;
padding: 2px; padding: 2px;
border: 1px solid #E6E6E6; border: 1px solid #E6E6E6;
} }
.commentsPanel {
width: 410px !important;
padding-left: 5px;
}
.comment-hidden { .comment-hidden {
opacity: 0; opacity: 0;
} }
@ -276,7 +271,7 @@ table {
.commentsPanel { .commentsPanel {
width: 99%; width: 99%;
margin-top: 4px; margin: 4px 0 0 4px;
} }
.more-comment { .more-comment {
@ -289,14 +284,14 @@ table {
border-bottom-width: 1px; border-bottom-width: 1px;
} }
.single-comment { div>table.single-comment {
background-color: #EFF3F5; background-color: #EFF3F5;
border-bottom-color: #FFF; border-bottom-color: #FFF;
border-bottom-style: solid; border-bottom-style: solid;
border-bottom-width: 1px; border-bottom-width: 1px;
border-left: 2px solid #DDD; border-left: 2px solid #DDD;
padding-left: 3px; padding-left: 3px;
width: 494px; width: 495px;
} }
.comment-bgcolor { .comment-bgcolor {
@ -398,11 +393,6 @@ a.seemore, a.seemore:visited {
color: #3B5998; color: #3B5998;
} }
a.seemore:hover {
opacity: 0.8;
text-decoration: underline;
}
a.person-link { a.person-link {
font-family: 'Helvetica Neue', Arial, sans-serif; font-family: 'Helvetica Neue', Arial, sans-serif;
font-size: 16x; font-size: 16x;
@ -418,11 +408,6 @@ a.person-link, a.person-link:visited {
color: #3B5998; color: #3B5998;
} }
a.person-link:hover {
opacity: 0.8;
font-size: 16x;
text-decoration: underline;
}
.tweet-content { .tweet-content {
font-family: 'Helvetica Neue', Arial, sans-serif; font-family: 'Helvetica Neue', Arial, sans-serif;
@ -468,12 +453,6 @@ a.person-link:hover {
background: url("images/star_blue.png") no-repeat left; background: url("images/star_blue.png") no-repeat left;
} }
.tweet-actions .likes-number:hover, .show-comments-number:hover {
opacity: 0.8;
cursor: pointer;
cursor: hand;
}
.tweet-actions .comments-number, .show-comments-number { .tweet-actions .comments-number, .show-comments-number {
color: #3B5998; color: #3B5998;
width: 20px; width: 20px;
@ -491,12 +470,7 @@ a.person-link:hover {
cursor: hand; cursor: hand;
} }
.tweet-actions div a:hover { div.tweet-content a.link, div.tweet-content a.link:active, div.tweet-content a.link:visited, div.user-comment a.link, div.user-comment a.link:active, div.user-comment a.link:visited {
opacity: 0.8;
text-decoration: underline;
}
a.link, a.link:active, a.link:visited {
font-family: 'Lucida Grande', Verdana, 'Bitstream Vera Sans', Arial, font-family: 'Lucida Grande', Verdana, 'Bitstream Vera Sans', Arial,
sans-serif; sans-serif;
font-size: 12px; font-size: 12px;
@ -592,12 +566,4 @@ a.link:hover {
transition: background .45s ease-in-out; transition: background .45s ease-in-out;
-moz-transition: background .45s ease-in-out; -moz-transition: background .45s ease-in-out;
-webkit-transition: background .45s ease-in-out; -webkit-transition: background .45s ease-in-out;
} }
.comment-dark-color {
color: #333;
background-color: transparent;
transition: background .25s ease-in-out;
-moz-transition: background .25s ease-in-out;
-webkit-transition: background .25s ease-in-out;
}

View File

@ -1,6 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 6.0.0//EN" "http://www.liferay.com/dtd/liferay-display_6_0_0.dtd"> <!DOCTYPE display PUBLIC "-//Liferay//DTD Display 6.2.0//EN" "http://www.liferay.com/dtd/liferay-display_6_2_0.dtd">
<display> <display>
<category name="gCube Social Apps"> <category name="gCube Social Apps">
<portlet id="NewsFeed" /> <portlet id="NewsFeed" />

View File

@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 5.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_0_0.dtd"> <!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app> <liferay-portlet-app>
<portlet> <portlet>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"> version="3.0">
<!-- Servlets --> <!-- Servlets -->
<servlet> <servlet>