/** * Copyright ( C ) 2012 eXo Platform SAS. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.platform.component; import org.apache.commons.lang.ArrayUtils; import org.exoplatform.commons.notification.NotificationUtils; import org.exoplatform.commons.utils.CommonsUtils; import org.exoplatform.platform.navigation.component.utils.DashboardUtils; import org.exoplatform.platform.webui.NavigationURLUtils; import org.exoplatform.portal.mop.Visibility; import org.exoplatform.portal.mop.user.UserNode; import org.exoplatform.portal.mop.user.UserNodeFilterConfig; import org.exoplatform.portal.webui.portal.UIPortal; import org.exoplatform.portal.webui.util.Util; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import org.exoplatform.social.core.service.LinkProvider; import org.exoplatform.social.webui.Utils; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.core.UIPortletApplication; import org.exoplatform.webui.core.lifecycle.UIApplicationLifecycle; /** * @author <a href="fbradai@exoplatform.com">Fbradai</a> */ @ComponentConfig(lifecycle = UIApplicationLifecycle.class, template = "app:/groovy/platformNavigation/portlet/UIUserNavigationPortlet/UIUserNavigationPortlet.gtmpl" ) public class UIUserNavigationPortlet extends UIPortletApplication { private static final Log LOG = ExoLogger.getLogger(UIUserNavigationPortlet.class); public static final String ACTIVITIES_URI= "activities"; public static final String PROFILE_URI= "profile"; public static final String CONNEXIONS_URI= "connections"; public static final String WIKI_URI= "wiki"; public static final String DASHBOARD_URI= "dashboard"; private UserNodeFilterConfig toolbarFilterConfig; private static final String POPUP_AVATAR_UPLOADER = "UIAvatarUploaderPopup"; public static String DEFAULT_TAB_NAME = "Tab_Default"; private static final String USER ="/user/" ; private static final String WIKI_HOME = "/WikiHome"; private static final String WIKI_REF ="wiki" ; private static final String NOTIFICATION_SETTINGS = "NotificationSettingsPortlet"; public UIUserNavigationPortlet() throws Exception { UserNodeFilterConfig.Builder builder = UserNodeFilterConfig.builder(); builder.withReadWriteCheck().withVisibility(Visibility.DISPLAYED, Visibility.TEMPORAL).withTemporalCheck(); toolbarFilterConfig = builder.build(); } public boolean isSelectedUserNavigation(String nav) throws Exception { UIPortal uiPortal = Util.getUIPortal(); UserNode selectedNode = uiPortal.getSelectedUserNode(); if (selectedNode.getURI().contains(nav)) return true; if (NOTIFICATION_SETTINGS.equals(nav) && "notifications".equals(selectedNode.getURI())) return true; //case dashbord String requestUrl = Util.getPortalRequestContext().getRequest().getRequestURL().toString(); if(DASHBOARD_URI.equals(nav) && requestUrl.contains(DashboardUtils.getDashboardURL())) return true; // return false; } public boolean isProfileOwner() { return Utils.getViewerRemoteId().equals(getOwnerRemoteId()); } public static String getOwnerRemoteId() { String currentUserName = org.exoplatform.platform.navigation.component.utils.NavigationUtils.getCurrentUser(); if (currentUserName == null || currentUserName.equals("")) { return Utils.getViewerRemoteId(); } return currentUserName; } ////////////////////////////////////////////////////////// /**/ /**/ /**/ //utils METHOD// /**/ /**/ /**/ ////////////////////////////////////////////////////////// public String[] getUserNodesAsList() { String[] userNodeList=(String[])ArrayUtils.add(null, PROFILE_URI); userNodeList=(String[])ArrayUtils.add(userNodeList, ACTIVITIES_URI); userNodeList=(String[])ArrayUtils.add(userNodeList, CONNEXIONS_URI); userNodeList=(String[])ArrayUtils.add(userNodeList, WIKI_URI); userNodeList=(String[])ArrayUtils.add(userNodeList, DASHBOARD_URI); if (CommonsUtils.isFeatureActive(NotificationUtils.FEATURE_NAME)) { userNodeList=(String[])ArrayUtils.add(userNodeList, NOTIFICATION_SETTINGS); } return userNodeList; } public String[] getURLAsList() throws Exception { String[] urlList=(String[])ArrayUtils.add(null, getProfileLink()); urlList=(String[])ArrayUtils.add(urlList, getactivitesURL()); urlList=(String[])ArrayUtils.add(urlList, getrelationURL()); urlList=(String[])ArrayUtils.add(urlList, getWikiURL()); urlList=(String[])ArrayUtils.add(urlList, DashboardUtils.getDashboardURL()); if (CommonsUtils.isFeatureActive(NotificationUtils.FEATURE_NAME)) { urlList=(String[])ArrayUtils.add(urlList, getNotificationsURL()); } return urlList; } ////////////////////////////////////////////////////////// /**/ /**/ /**/ //GET URL METHOD// /**/ /**/ /**/ ////////////////////////////////////////////////////////// public String getNotificationsURL() { return LinkProvider.getUserNotificationSettingUri(getOwnerRemoteId()); } public String getactivitesURL() { return LinkProvider.getUserActivityUri(getOwnerRemoteId()); } public String getrelationURL() { return LinkProvider.getUserConnectionsYoursUri(getOwnerRemoteId()); } public String getWikiURL() { return NavigationURLUtils.getURLInCurrentPortal(WIKI_REF)+USER +getOwnerRemoteId()+WIKI_HOME; } public String getProfileLink() { return LinkProvider.getUserProfileUri(getOwnerRemoteId()); } }