QuickInfosPortlet.java
/*
* Copyright (C) 2000 - 2026 Silverpeas
*
* This program is free software: you can redistribute it and/or modify it under the terms of the
* GNU Affero General Public License as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* As a special exception to the terms and conditions of version 3.0 of the GPL, you may
* redistribute this Program in connection with Free/Libre Open Source Software ("FLOSS")
* applications as described in Silverpeas's FLOSS exception. You should have received a copy of the
* text describing the FLOSS exception, and it is also available here:
* "http://www.silverpeas.org/docs/core/legal/floss_exception.html"
*
* This program 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
* Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License along with this program.
* If not, see <https://www.gnu.org/licenses/>.
*/
package org.silverpeas.components.quickinfo.portlets;
import java.io.IOException;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.PortletSession;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.silverpeas.core.web.portlets.FormNames;
import org.silverpeas.components.quickinfo.model.QuickInfoService;
import org.silverpeas.components.quickinfo.model.QuickInfoServiceProvider;
import org.silverpeas.kernel.util.StringUtil;
import org.silverpeas.core.web.mvc.controller.MainSessionController;
public class QuickInfosPortlet extends GenericPortlet implements FormNames {
public static final String PARAM_DISPLAY = "displayMode";
@Override
public void doView(RenderRequest request, RenderResponse response)
throws PortletException {
PortletSession session = request.getPortletSession();
MainSessionController mainSessionCtrl = (MainSessionController) session
.getAttribute(MainSessionController.MAIN_SESSION_CONTROLLER_ATT,
PortletSession.APPLICATION_SCOPE);
QuickInfoService service = QuickInfoServiceProvider.getQuickInfoService();
request.setAttribute("QuickInfos", service.getPlatformNews(mainSessionCtrl.getUserId()));
include(request, response, "portlet.jsp");
}
@Override
public void doEdit(RenderRequest request, RenderResponse response) throws PortletException {
include(request, response, "edit.jsp");
}
/**
* Include "help" JSP.
*/
@Override
public void doHelp(RenderRequest request, RenderResponse response) throws PortletException {
include(request, response, "help.jsp");
}
/**
* Include a page.
*/
private void include(RenderRequest request, RenderResponse response, String pageName)
throws PortletException {
response.setContentType(request.getResponseContentType());
if (!StringUtil.isDefined(pageName)) {
// assert
throw new NullPointerException("null or empty page name");
}
try {
PortletRequestDispatcher dispatcher =
getPortletContext().getRequestDispatcher("/portlets/jsp/quickInfos/" + pageName);
dispatcher.include(request, response);
} catch (IOException ioe) {
throw new PortletException(ioe);
}
}
/*
* Process Action.
*/
@Override
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException {
if (request.getParameter(SUBMIT_FINISHED) != null) {
processEditFinishedAction(request, response);
} else if (request.getParameter(SUBMIT_CANCEL) != null) {
processEditCancelAction(response);
}
}
/*
* Process the "cancel" action for the edit page.
*/
private void processEditCancelAction(ActionResponse response)
throws PortletException {
response.setPortletMode(PortletMode.VIEW);
}
/*
* Process the "finished" action for the edit page. Set the "url" to the value specified in the
* edit page.
*/
private void processEditFinishedAction(ActionRequest request, ActionResponse response)
throws PortletException {
String displayMode = request.getParameter(PARAM_DISPLAY);
try {
// store preference
setUpPortletPreferences(request, displayMode);
response.setPortletMode(PortletMode.VIEW);
} catch (NumberFormatException e) {
response.setRenderParameter(ERROR_BAD_VALUE, "true");
response.setPortletMode(PortletMode.EDIT);
}
}
private static void setUpPortletPreferences(ActionRequest request, String displayMode) throws PortletException {
PortletPreferences pref = request.getPreferences();
try {
pref.setValue(PARAM_DISPLAY, displayMode);
pref.store();
} catch (IOException ioe) {
throw new PortletException("QuickInfosPortlet.processEditFinishedAction", ioe);
}
}
}