/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library 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 library 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. */ package com.liferay.announcements.web.internal.display.context; import com.liferay.announcements.kernel.util.AnnouncementsUtil; import com.liferay.announcements.web.constants.AnnouncementsPortletKeys; import com.liferay.announcements.web.internal.display.context.util.AnnouncementsRequestHelper; import com.liferay.portal.kernel.dao.search.SearchContainer; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.model.Layout; import com.liferay.portal.kernel.model.Organization; import com.liferay.portal.kernel.model.Role; import com.liferay.portal.kernel.model.UserGroup; import com.liferay.portal.kernel.portlet.LiferayPortletResponse; import com.liferay.portal.kernel.service.permission.PortletPermissionUtil; import com.liferay.portal.kernel.theme.ThemeDisplay; import com.liferay.portal.kernel.util.FastDateFormatFactoryUtil; import com.liferay.portal.kernel.util.GetterUtil; import com.liferay.portal.kernel.util.ParamUtil; import com.liferay.portal.kernel.util.PortalUtil; import com.liferay.portal.kernel.util.PrefsParamUtil; import com.liferay.portal.kernel.util.StringPool; import com.liferay.portal.kernel.util.StringUtil; import java.text.DateFormat; import java.text.Format; import java.util.LinkedHashMap; import java.util.UUID; import javax.portlet.PortletPreferences; import javax.portlet.PortletURL; /** * @author Adolfo PĂ©rez */ public class DefaultAnnouncementsDisplayContext implements AnnouncementsDisplayContext { public DefaultAnnouncementsDisplayContext( AnnouncementsRequestHelper announcementsRequestHelper) { _announcementsRequestHelper = announcementsRequestHelper; } @Override public LinkedHashMap<Long, long[]> getAnnouncementScopes() throws PortalException { LinkedHashMap<Long, long[]> scopes = new LinkedHashMap<>(); if (isCustomizeAnnouncementsDisplayed()) { long[] selectedScopeGroupIdsArray = GetterUtil.getLongValues( StringUtil.split(getSelectedScopeGroupIds())); long[] selectedScopeOrganizationIdsArray = GetterUtil.getLongValues( StringUtil.split(getSelectedScopeOrganizationIds())); long[] selectedScopeRoleIdsArray = GetterUtil.getLongValues( StringUtil.split(getSelectedScopeRoleIds())); long[] selectedScopeUserGroupIdsArray = GetterUtil.getLongValues( StringUtil.split(getSelectedScopeUserGroupIds())); if (selectedScopeGroupIdsArray.length != 0) { scopes.put( PortalUtil.getClassNameId(Group.class.getName()), selectedScopeGroupIdsArray); } if (selectedScopeOrganizationIdsArray.length != 0) { scopes.put( PortalUtil.getClassNameId(Organization.class.getName()), selectedScopeOrganizationIdsArray); } if (selectedScopeRoleIdsArray.length != 0) { scopes.put( PortalUtil.getClassNameId(Role.class.getName()), selectedScopeRoleIdsArray); } if (selectedScopeUserGroupIdsArray.length != 0) { scopes.put( PortalUtil.getClassNameId(UserGroup.class.getName()), selectedScopeUserGroupIdsArray); } } else { scopes = AnnouncementsUtil.getAnnouncementScopes( _announcementsRequestHelper.getUser()); } scopes.put(Long.valueOf(0), new long[] {0}); return scopes; } @Override public Format getDateFormatDate() { ThemeDisplay themeDisplay = _announcementsRequestHelper.getThemeDisplay(); return FastDateFormatFactoryUtil.getDate( DateFormat.FULL, themeDisplay.getLocale(), themeDisplay.getTimeZone()); } @Override public int getPageDelta() { PortletPreferences portletPreferences = _announcementsRequestHelper.getPortletPreferences(); return GetterUtil.getInteger( portletPreferences.getValue( "pageDelta", String.valueOf(SearchContainer.DEFAULT_DELTA))); } @Override public String getTabs1Names() { return "new,previous"; } @Override public String getTabs1PortletURL() { LiferayPortletResponse liferayPortletResponse = _announcementsRequestHelper.getLiferayPortletResponse(); PortletURL tabs1URL = liferayPortletResponse.createRenderURL(); tabs1URL.setParameter("mvcRenderCommandName", "/announcements/view"); tabs1URL.setParameter("tabs1", _announcementsRequestHelper.getTabs1()); return tabs1URL.toString(); } @Override public UUID getUuid() { return _UUID; } @Override public boolean isCustomizeAnnouncementsDisplayed() { Group scopeGroup = _announcementsRequestHelper.getScopeGroup(); return PrefsParamUtil.getBoolean( _announcementsRequestHelper.getPortletPreferences(), _announcementsRequestHelper.getRequest(), "customizeAnnouncementsDisplayed", !scopeGroup.isUser()); } @Override public boolean isScopeGroupSelected(Group scopeGroup) { String selectedScopeGroupIds = getSelectedScopeGroupIds(); return selectedScopeGroupIds.contains( String.valueOf(scopeGroup.getGroupId())); } @Override public boolean isScopeOrganizationSelected(Organization organization) { String selectedScopeOrganizationIds = getSelectedScopeOrganizationIds(); return selectedScopeOrganizationIds.contains( String.valueOf(organization.getOrganizationId())); } @Override public boolean isScopeRoleSelected(Role role) { String selectedScopeRoleIds = getSelectedScopeRoleIds(); return selectedScopeRoleIds.contains(String.valueOf(role.getRoleId())); } @Override public boolean isScopeUserGroupSelected(UserGroup userGroup) { String selectedScopeUserGroupIds = getSelectedScopeUserGroupIds(); return selectedScopeUserGroupIds.contains( String.valueOf(userGroup.getUserGroupId())); } @Override public boolean isShowPreviousEntries() { String tabs1 = _announcementsRequestHelper.getTabs1(); return tabs1.equals("previous"); } @Override public boolean isShowScopeName() { String mvcRenderCommandName = ParamUtil.getString( _announcementsRequestHelper.getRequest(), "mvcRenderCommandName"); return mvcRenderCommandName.equals("/announcements/edit_entry"); } @Override public boolean isTabs1Visible() { String portletName = _announcementsRequestHelper.getPortletName(); ThemeDisplay themeDisplay = _announcementsRequestHelper.getThemeDisplay(); try { if (!portletName.equals(AnnouncementsPortletKeys.ALERTS) || (portletName.equals(AnnouncementsPortletKeys.ALERTS) && PortletPermissionUtil.hasControlPanelAccessPermission( _announcementsRequestHelper.getPermissionChecker(), themeDisplay.getScopeGroupId(), AnnouncementsPortletKeys.ANNOUNCEMENTS_ADMIN))) { return true; } } catch (PortalException pe) { _log.error(pe, pe); } return false; } protected String getSelectedScopeGroupIds() { Layout layout = _announcementsRequestHelper.getLayout(); return PrefsParamUtil.getString( _announcementsRequestHelper.getPortletPreferences(), _announcementsRequestHelper.getRequest(), "selectedScopeGroupIds", String.valueOf(layout.getGroupId())); } protected String getSelectedScopeOrganizationIds() { return PrefsParamUtil.getString( _announcementsRequestHelper.getPortletPreferences(), _announcementsRequestHelper.getRequest(), "selectedScopeOrganizationIds", StringPool.BLANK); } protected String getSelectedScopeRoleIds() { return PrefsParamUtil.getString( _announcementsRequestHelper.getPortletPreferences(), _announcementsRequestHelper.getRequest(), "selectedScopeRoleIds", StringPool.BLANK); } protected String getSelectedScopeUserGroupIds() { return PrefsParamUtil.getString( _announcementsRequestHelper.getPortletPreferences(), _announcementsRequestHelper.getRequest(), "selectedScopeUserGroupIds", StringPool.BLANK); } private static final UUID _UUID = UUID.fromString( "CD705D0E-7DB4-430C-9492-F1FA25ACE02E"); private static final Log _log = LogFactoryUtil.getLog( DefaultAnnouncementsDisplayContext.class); private final AnnouncementsRequestHelper _announcementsRequestHelper; }