1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.wrapper.web;
35
36 import fr.paris.lutece.plugins.wrapper.business.Wrapper;
37 import fr.paris.lutece.plugins.wrapper.business.WrapperHome;
38 import fr.paris.lutece.portal.service.message.SiteMessage;
39 import fr.paris.lutece.portal.service.message.SiteMessageException;
40 import fr.paris.lutece.portal.service.message.SiteMessageService;
41 import fr.paris.lutece.portal.service.plugin.Plugin;
42 import fr.paris.lutece.portal.service.plugin.PluginService;
43 import fr.paris.lutece.portal.service.security.SecurityService;
44 import fr.paris.lutece.portal.service.template.AppTemplateService;
45 import fr.paris.lutece.portal.service.util.AppPropertiesService;
46 import fr.paris.lutece.portal.web.xpages.XPage;
47 import fr.paris.lutece.portal.web.xpages.XPageApplication;
48 import fr.paris.lutece.util.html.HtmlTemplate;
49
50 import java.util.ArrayList;
51 import java.util.Collection;
52 import java.util.HashMap;
53
54 import javax.servlet.http.HttpServletRequest;
55
56
57
58
59
60 public class WrapperApp implements XPageApplication
61 {
62
63
64
65
66 private static final String PARAMETER_PAGE = "page";
67 private static final String PARAMETER_WRAPPER = "wrapper";
68 private static final String PARAMETER_WRAPPER_ID = "wrapper_id";
69
70
71 private static final String PROPERTY_PAGE_TITLE = "wrapper.pageTitle";
72 private static final String PROPERTY_PAGE_PATH = "wrapper.pagePathLabel";
73
74
75 private static final String PROPERTY_MESSAGE_ERROR_WRAPPER = "wrapper.message.pageInvalid";
76 private static final String PROPERTY_MESSAGE_NOT_AUTHORIZED = "wrapper.message.notAuthorized";
77
78
79 private static final String MARK_WRAPPER_LIST = "wrappers_list";
80 private static final String MARK_WRAPPER = "wrapper";
81 private static final String MARK_PAGE = "page";
82
83
84 private static final String TEMPLATE_XPAGE_WRAPPER = "skin/plugins/wrapper/page_wrapper.html";
85 private static final String TEMPLATE_XPAGE_WRAPPER_LISTS = "skin/plugins/wrapper/wrappers_list.html";
86
87
88 private static final String EMPTY_STRING = "";
89
90
91 private Plugin _plugin;
92
93
94 public WrapperApp( )
95 {
96 }
97
98
99
100
101
102
103
104
105
106
107 public XPage getPage( HttpServletRequest request, int nMode, Plugin plugin )
108 throws SiteMessageException
109 {
110 XPage page = new XPage( );
111
112 String strPluginName = request.getParameter( PARAMETER_PAGE );
113 _plugin = PluginService.getPlugin( strPluginName );
114
115 page.setTitle( AppPropertiesService.getProperty( PROPERTY_PAGE_TITLE ) );
116 page.setPathLabel( AppPropertiesService.getProperty( PROPERTY_PAGE_PATH ) );
117
118 String strWrapperId = request.getParameter( PARAMETER_WRAPPER_ID );
119
120 if ( strWrapperId == null )
121 {
122 page.setContent( getWrappersLists( request ) );
123 }
124
125 if ( ( strWrapperId != null ) )
126 {
127 page.setContent( getWrapper( request, strWrapperId ) );
128 }
129
130 return page;
131 }
132
133 private String getWrappersLists( HttpServletRequest request )
134 throws SiteMessageException
135 {
136 HashMap model = new HashMap( );
137
138 Collection<Wrapper> wrapperList = WrapperHome.findEnabledWrapperList( _plugin );
139 Collection<Wrapper> visibleWrapperList = new ArrayList( );
140
141 for ( Wrapper wrapper : wrapperList )
142 {
143 if ( isVisible( request, wrapper.getRole( ) ) )
144 {
145 visibleWrapperList.add( wrapper );
146 }
147 }
148
149 model.put( MARK_WRAPPER_LIST, visibleWrapperList );
150
151 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_XPAGE_WRAPPER_LISTS, request.getLocale( ),
152 model );
153
154 return template.getHtml( );
155 }
156
157
158
159
160
161
162
163 private String getWrapper( HttpServletRequest request, String strWrapperId )
164 throws SiteMessageException
165 {
166 HashMap model = new HashMap( );
167
168 int nWrapperId = Integer.parseInt( strWrapperId );
169 Wrapper wrapper = WrapperHome.findByPrimaryKey( nWrapperId, _plugin );
170
171 if ( wrapper != null )
172 {
173 int nStatus = wrapper.getStatus( );
174
175 if ( ( nStatus == 0 ) && ( isVisible( request, wrapper.getRole( ) ) ) )
176 {
177 model.put( MARK_WRAPPER, wrapper );
178 model.put( MARK_PAGE, _plugin.getName( ) );
179 }
180 else
181 {
182 SiteMessageService.setMessage( request, PROPERTY_MESSAGE_NOT_AUTHORIZED, SiteMessage.TYPE_ERROR );
183 }
184 }
185 else
186 {
187 SiteMessageService.setMessage( request, PROPERTY_MESSAGE_ERROR_WRAPPER, SiteMessage.TYPE_ERROR );
188 }
189
190 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_XPAGE_WRAPPER, request.getLocale( ), model );
191
192 return template.getHtml( );
193 }
194
195
196
197
198
199
200
201 private boolean isVisible( HttpServletRequest request, String strRole )
202 {
203 if ( ( strRole == null ) || ( strRole.trim( ).equals( EMPTY_STRING ) ) )
204 {
205 return true;
206 }
207
208 if ( !strRole.equals( Wrapper.ROLE_NONE ) && SecurityService.isAuthenticationEnable( ) )
209 {
210 return SecurityService.getInstance( ).isUserInRole( request, strRole );
211 }
212
213 return true;
214 }
215 }