AliasPortletJspBean.java

  1. /*
  2.  * Copyright (c) 2002-2022, City of Paris
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  *
  9.  *  1. Redistributions of source code must retain the above copyright notice
  10.  *     and the following disclaimer.
  11.  *
  12.  *  2. Redistributions in binary form must reproduce the above copyright notice
  13.  *     and the following disclaimer in the documentation and/or other materials
  14.  *     provided with the distribution.
  15.  *
  16.  *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
  17.  *     contributors may be used to endorse or promote products derived from
  18.  *     this software without specific prior written permission.
  19.  *
  20.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21.  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23.  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
  24.  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25.  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26.  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27.  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28.  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29.  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30.  * POSSIBILITY OF SUCH DAMAGE.
  31.  *
  32.  * License 1.0
  33.  */
  34. package fr.paris.lutece.portal.web.portlet;

  35. import fr.paris.lutece.portal.business.portlet.AliasPortlet;
  36. import fr.paris.lutece.portal.business.portlet.AliasPortletHome;
  37. import fr.paris.lutece.portal.business.portlet.Portlet;
  38. import fr.paris.lutece.portal.business.portlet.PortletHome;
  39. import fr.paris.lutece.portal.service.i18n.I18nService;
  40. import fr.paris.lutece.portal.service.message.AdminMessage;
  41. import fr.paris.lutece.portal.service.message.AdminMessageService;
  42. import fr.paris.lutece.portal.web.constants.Messages;
  43. import fr.paris.lutece.util.ReferenceList;
  44. import fr.paris.lutece.util.html.HtmlTemplate;

  45. import java.util.HashMap;
  46. import java.util.Map;

  47. import javax.servlet.http.HttpServletRequest;

  48. /**
  49.  * This class provides the user interface to manage Alias Portlet
  50.  */
  51. public class AliasPortletJspBean extends PortletJspBean
  52. {
  53.     // //////////////////////////////////////////////////////////////////////////
  54.     // Constants

  55.     // Right
  56.     public static final String RIGHT_MANAGE_ADMIN_SITE = "CORE_ADMIN_SITE";
  57.     private static final long serialVersionUID = 1894295808070813451L;
  58.     private static final String PARAM_PORTLET_NAME = "portlet_name";
  59.     private static final String PARAM_ORDER = "order";
  60.     private static final String PARAM_COLUMN = "column";
  61.     private static final String PARAM_ALIAS_ID = "alias_id";
  62.     private static final String PARAM_ACCEPT_ALIAS = "accept_alias";
  63.     private static final String MARK_ALIAS_PORTLETS_LIST = "alias_portlets_list";
  64.     private static final String MARK_ALIAS_PORTLET = "alias_portlet";
  65.     private static final String LABEL_ALIAS_PORTLET_NAME = "portal.site.portlet_alias.portlet.name.label";

  66.     /**
  67.      * Process portlet's creation
  68.      *
  69.      * @param request
  70.      *            The Http request
  71.      * @return The management url
  72.      */
  73.     @Override
  74.     public String doCreate( HttpServletRequest request )
  75.     {
  76.         AliasPortlet aliasPortlet = new AliasPortlet( );
  77.         String strAliasId = request.getParameter( PARAM_ALIAS_ID );

  78.         // if no portlet has the accept alias field true
  79.         if ( strAliasId == null )
  80.         {
  81.             return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
  82.         }

  83.         // Gets the parameters of the alias portlet posted in the request
  84.         String strName = request.getParameter( PARAM_PORTLET_NAME );

  85.         // mandatory field
  86.         if ( ( strName == null ) || strName.trim( ).equals( "" ) )
  87.         {
  88.             return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
  89.         }

  90.         String strOrder = request.getParameter( PARAM_ORDER );
  91.         int nOrder = Integer.parseInt( strOrder );
  92.         String strColumn = request.getParameter( PARAM_COLUMN );
  93.         int nColumn = Integer.parseInt( strColumn );
  94.         String strAcceptAlias = request.getParameter( PARAM_ACCEPT_ALIAS );
  95.         int nAcceptAlias = Integer.parseInt( strAcceptAlias );
  96.         aliasPortlet.setName( strName );
  97.         aliasPortlet.setOrder( nOrder );
  98.         aliasPortlet.setColumn( nColumn );
  99.         aliasPortlet.setAcceptAlias( nAcceptAlias );

  100.         String strPageId = request.getParameter( PARAMETER_PAGE_ID );
  101.         int nPageId = Integer.parseInt( strPageId );
  102.         int nAliasId = Integer.parseInt( strAliasId );
  103.         aliasPortlet.setPageId( nPageId );
  104.         aliasPortlet.setAliasId( nAliasId );

  105.         // gets the style of the parent portlet
  106.         Portlet portlet = PortletHome.findByPrimaryKey( nAliasId );
  107.         aliasPortlet.setStyleId( portlet.getStyleId( ) );

  108.         // creates the alias portlet
  109.         AliasPortletHome.getInstance( ).create( aliasPortlet );

  110.         // Displays the page with the new portlet
  111.         return getPageUrl( nPageId );
  112.     }

  113.     /**
  114.      * Process portlet's modification
  115.      *
  116.      * @param request
  117.      *            The http request
  118.      * @return Management's Url
  119.      */
  120.     @Override
  121.     public String doModify( HttpServletRequest request )
  122.     {
  123.         // recovers portlet attributes
  124.         String strPortletId = request.getParameter( PARAMETER_PORTLET_ID );
  125.         int nPortletId = Integer.parseInt( strPortletId );
  126.         AliasPortlet portlet = (AliasPortlet) PortletHome.findByPrimaryKey( nPortletId );

  127.         // Gets the parameters of the alias portlet posted in the request
  128.         String strName = request.getParameter( PARAM_PORTLET_NAME );
  129.         String strOrder = request.getParameter( PARAM_ORDER );
  130.         int nOrder = Integer.parseInt( strOrder );
  131.         String strColumn = request.getParameter( PARAM_COLUMN );
  132.         int nColumn = Integer.parseInt( strColumn );

  133.         // mandatory field
  134.         if ( ( strName == null ) || strName.trim( ).equals( "" ) )
  135.         {
  136.             return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
  137.         }

  138.         portlet.setName( strName );
  139.         portlet.setOrder( nOrder );
  140.         portlet.setColumn( nColumn );

  141.         String strIdAlias = request.getParameter( PARAM_ALIAS_ID );
  142.         int nIdAlias = Integer.parseInt( strIdAlias );
  143.         portlet.setAliasId( nIdAlias );

  144.         Portlet rub = PortletHome.findByPrimaryKey( nIdAlias );
  145.         portlet.setStyleId( rub.getStyleId( ) );

  146.         // updates the portlet
  147.         portlet.update( );

  148.         // Displays the page with the portlet updated
  149.         return getPageUrl( portlet.getPageId( ) );
  150.     }

  151.     /**
  152.      * Returns the Alias portlet creation form
  153.      *
  154.      * @param request
  155.      *            The http request
  156.      * @return The HTML form
  157.      */
  158.     @Override
  159.     public String getCreate( HttpServletRequest request )
  160.     {
  161.         String strIdPage = request.getParameter( PARAMETER_PAGE_ID );
  162.         String strIdPortletType = request.getParameter( PARAMETER_PORTLET_TYPE_ID );
  163.         Map<String, Object> model = new HashMap<>( );
  164.         model.put( MARK_ALIAS_PORTLETS_LIST, buildAliasPortletList( ) );

  165.         HtmlTemplate template = getCreateTemplate( strIdPage, strIdPortletType, model );

  166.         return template.getHtml( );
  167.     }

  168.     /**
  169.      * Returns the Alias portlet modification form
  170.      *
  171.      * @param request
  172.      *            The Http request
  173.      * @return The HTML form
  174.      */
  175.     @Override
  176.     public String getModify( HttpServletRequest request )
  177.     {
  178.         String strIdPortlet = request.getParameter( PARAMETER_PORTLET_ID );
  179.         int idPortlet = Integer.parseInt( strIdPortlet );
  180.         Portlet portlet = PortletHome.findByPrimaryKey( idPortlet );
  181.         AliasPortlet aliasPortlet = (AliasPortlet) portlet;
  182.         Map<String, Object> model = new HashMap<>( );
  183.         model.put( MARK_ALIAS_PORTLETS_LIST, buildAliasPortletList( ) );
  184.         model.put( MARK_ALIAS_PORTLET, aliasPortlet.getAliasId( ) );

  185.         HtmlTemplate template = getModifyTemplate( portlet, model );

  186.         return template.getHtml( );
  187.     }

  188.     /**
  189.      * Returns the Reference List of Portlets accepting Alias.
  190.      *
  191.      * @return The Reference List
  192.      */
  193.     private ReferenceList buildAliasPortletList( )
  194.     {

  195.         ReferenceList refList = new ReferenceList( );

  196.         for ( Portlet portlet : AliasPortletHome.getAcceptAliasPortletList( ) )
  197.         {
  198.             refList.addItem( portlet.getId( ), I18nService.getLocalizedString( LABEL_ALIAS_PORTLET_NAME, new String [ ] {
  199.                     String.valueOf( portlet.getPageId( ) ), portlet.getName( )
  200.             }, getLocale( ) ) );
  201.         }
  202.         return refList;
  203.     }
  204. }