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.whatsnew.web.portlet;
35
36 import fr.paris.lutece.plugins.whatsnew.business.ElementOrderEnum;
37 import fr.paris.lutece.plugins.whatsnew.business.IWhatsNew;
38 import fr.paris.lutece.plugins.whatsnew.business.PortletDocumentLink;
39 import fr.paris.lutece.plugins.whatsnew.business.portlet.WhatsNewPortlet;
40 import fr.paris.lutece.plugins.whatsnew.service.WhatsNewPlugin;
41 import fr.paris.lutece.plugins.whatsnew.service.WhatsNewService;
42 import fr.paris.lutece.plugins.whatsnew.service.parameter.WhatsNewParameterService;
43 import fr.paris.lutece.plugins.whatsnew.service.portlet.WhatsNewPortletService;
44 import fr.paris.lutece.plugins.whatsnew.utils.constants.WhatsNewConstants;
45 import fr.paris.lutece.portal.business.portlet.PortletHome;
46 import fr.paris.lutece.portal.service.message.AdminMessage;
47 import fr.paris.lutece.portal.service.message.AdminMessageService;
48 import fr.paris.lutece.portal.service.plugin.Plugin;
49 import fr.paris.lutece.portal.service.plugin.PluginService;
50 import fr.paris.lutece.portal.web.portlet.PortletJspBean;
51 import fr.paris.lutece.util.html.HtmlTemplate;
52
53 import org.apache.commons.lang.StringUtils;
54
55 import java.sql.Timestamp;
56
57 import java.util.HashMap;
58 import java.util.Map;
59
60 import javax.servlet.http.HttpServletRequest;
61
62
63
64
65
66
67
68 public class WhatsNewPortletJspBean extends PortletJspBean
69 {
70
71 public static final String RIGHT_MANAGE_ADMIN_SITE = "CORE_ADMIN_SITE";
72
73
74
75
76
77 private Plugin getPlugin( )
78 {
79 return PluginService.getPlugin( WhatsNewPlugin.PLUGIN_NAME );
80 }
81
82
83
84
85
86
87 public String getCreate( HttpServletRequest request )
88 {
89 String strPageId = request.getParameter( PARAMETER_PAGE_ID );
90 String strPortletTypeId = request.getParameter( PARAMETER_PORTLET_TYPE_ID );
91
92 Map<String, Object> model = new HashMap<String, Object>( );
93 model.put( WhatsNewConstants.MARK_COMBO_PERIOD, WhatsNewService.getInstance( ).getComboDays( ) );
94 model.put( WhatsNewConstants.MARK_LIST_PARAM_DEFAULT_VALUES,
95 WhatsNewParameterService.getInstance( ).getParamDefaultValues( getPlugin( ) ) );
96 initializeModel( model );
97
98 HtmlTemplate template = getCreateTemplate( strPageId, strPortletTypeId, model );
99
100 return template.getHtml( );
101 }
102
103
104
105
106
107
108 public String getModify( HttpServletRequest request )
109 {
110 String strUrl = StringUtils.EMPTY;
111 String strPortletId = request.getParameter( PARAMETER_PORTLET_ID );
112
113 if ( StringUtils.isNotBlank( strPortletId ) && StringUtils.isNumeric( strPortletId ) )
114 {
115 int nPortletId = Integer.parseInt( strPortletId );
116 WhatsNewPortlet portlet = WhatsNewPortletService.getInstance( ).getPortlet( nPortletId );
117
118 if ( portlet != null )
119 {
120 Map<String, Object> model = new HashMap<String, Object>( );
121 model.put( WhatsNewConstants.MARK_MODERATED_ELEMENTS_LIST,
122 WhatsNewService.getInstance( ).getModeratedElementsListHtml( portlet, getLocale( ) ) );
123 model.put( WhatsNewConstants.MARK_COMBO_PERIOD, WhatsNewService.getInstance( ).getComboDays( ) );
124 model.put( WhatsNewConstants.MARK_WHATSNEW_PORTLET, portlet );
125 initializeModel( model );
126
127 HtmlTemplate template = getModifyTemplate( portlet, model );
128
129 strUrl = template.getHtml( );
130 }
131 else
132 {
133 strUrl = AdminMessageService.getMessageUrl( request, WhatsNewConstants.MESSAGE_OBJECT_NOT_FOUND,
134 AdminMessage.TYPE_ERROR );
135 }
136 }
137 else
138 {
139 strUrl = AdminMessageService.getMessageUrl( request, WhatsNewConstants.MESSAGE_NOT_NUMERIC,
140 AdminMessage.TYPE_ERROR );
141 }
142
143 return strUrl;
144 }
145
146
147
148
149
150
151 public String doCreate( HttpServletRequest request )
152 {
153 String strUrl = StringUtils.EMPTY;
154 String strIdPage = request.getParameter( PARAMETER_PAGE_ID );
155
156 if ( StringUtils.isNotBlank( strIdPage ) && StringUtils.isNumeric( strIdPage ) )
157 {
158 WhatsNewPortlet portlet = new WhatsNewPortlet( );
159 String strError = getPortletData( portlet, request );
160
161 if ( StringUtils.isBlank( strError ) )
162 {
163 int nIdPage = Integer.parseInt( strIdPage );
164 portlet.setPageId( nIdPage );
165
166
167 WhatsNewPortletService.getInstance( ).create( portlet );
168
169
170 strUrl = getPageUrl( portlet.getPageId( ) );
171 }
172 else
173 {
174 strUrl = strError;
175 }
176 }
177 else
178 {
179 strUrl = AdminMessageService.getMessageUrl( request, WhatsNewConstants.MESSAGE_NOT_NUMERIC,
180 AdminMessage.TYPE_ERROR );
181 }
182
183 return strUrl;
184 }
185
186
187
188
189
190
191 public String doModify( HttpServletRequest request )
192 {
193 String strUrl = StringUtils.EMPTY;
194 String strPortletId = request.getParameter( PARAMETER_PORTLET_ID );
195
196 if ( StringUtils.isNotBlank( strPortletId ) && StringUtils.isNumeric( strPortletId ) )
197 {
198 int nPortletId = Integer.parseInt( strPortletId );
199 WhatsNewPortlet portlet = (WhatsNewPortlet) PortletHome.findByPrimaryKey( nPortletId );
200
201 if ( portlet != null )
202 {
203 String strError = getPortletData( portlet, request );
204
205 if ( StringUtils.isBlank( strError ) )
206 {
207 WhatsNewPortletService.getInstance( ).update( portlet );
208 setModeratedElements( portlet, request );
209 strUrl = getPageUrl( portlet.getPageId( ) );
210 }
211 else
212 {
213 strUrl = strError;
214 }
215 }
216 else
217 {
218 strUrl = AdminMessageService.getMessageUrl( request, WhatsNewConstants.MESSAGE_OBJECT_NOT_FOUND,
219 AdminMessage.TYPE_ERROR );
220 }
221 }
222 else
223 {
224 strUrl = AdminMessageService.getMessageUrl( request, WhatsNewConstants.MESSAGE_NOT_NUMERIC,
225 AdminMessage.TYPE_ERROR );
226 }
227
228 return strUrl;
229 }
230
231
232
233
234
235 private void initializeModel( Map<String, Object> model )
236 {
237 model.put( WhatsNewConstants.MARK_PLUGIN_DOCUMENT_ACTIVATED,
238 WhatsNewService.getInstance( ).isPluginDocumentActivated( ) );
239 model.put( WhatsNewConstants.MARK_DISPLAY_ORDER_DATE, ElementOrderEnum.DATE.getId( ) );
240 model.put( WhatsNewConstants.MARK_DISPLAY_ORDER_ALPHA, ElementOrderEnum.ALPHA.getId( ) );
241 model.put( WhatsNewConstants.MARK_DISPLAY_ORDER_ASC, WhatsNewConstants.DISPLAY_ASC );
242 model.put( WhatsNewConstants.MARK_DISPLAY_ORDER_DESC, WhatsNewConstants.DISPLAY_DESC );
243 }
244
245
246
247
248
249
250
251 private String getPortletData( WhatsNewPortlet portlet, HttpServletRequest request )
252 {
253
254 String strError = setPortletCommonData( request, portlet );
255
256 String strNbElementsMax = request.getParameter( WhatsNewConstants.PARAMETER_NB_ELEMENTS_MAX );
257
258 if ( StringUtils.isNotBlank( strNbElementsMax ) )
259 {
260 if ( StringUtils.isNumeric( strNbElementsMax ) )
261 {
262 int nNbElementsMax = Integer.parseInt( strNbElementsMax );
263
264 if ( nNbElementsMax > 0 )
265 {
266 String strIsAscSort = request.getParameter( WhatsNewConstants.PARAMETER_DISPLAY_ORDER_ASC_DESC );
267 boolean bIsAscSort = false;
268
269 if ( StringUtils.isNotBlank( strIsAscSort ) && StringUtils.isNumeric( strIsAscSort ) &&
270 ( Integer.parseInt( strIsAscSort ) == WhatsNewConstants.DISPLAY_ASC ) )
271 {
272 bIsAscSort = true;
273 }
274
275 String strPeriod = request.getParameter( WhatsNewConstants.PARAMETER_PERIOD );
276 String strElementOrder = request.getParameter( WhatsNewConstants.PARAMETER_DISPLAY_ORDER );
277
278 if ( StringUtils.isNotBlank( strPeriod ) && StringUtils.isNumeric( strPeriod ) &&
279 StringUtils.isNotBlank( strElementOrder ) && StringUtils.isNumeric( strElementOrder ) )
280 {
281 int nPeriod = Integer.parseInt( strPeriod );
282 int nElementOrder = Integer.parseInt( strElementOrder );
283
284 String strShowDocuments = request.getParameter( WhatsNewConstants.PARAMETER_SHOW_DOCUMENTS );
285 String strShowPortlets = request.getParameter( WhatsNewConstants.PARAMETER_SHOW_PORTLETS );
286 String strShowPages = request.getParameter( WhatsNewConstants.PARAMETER_SHOW_PAGES );
287 String strIsDynamic = request.getParameter( WhatsNewConstants.PARAMETER_IS_DYNAMIC );
288
289 portlet.setShowDocuments( strShowDocuments != null );
290 portlet.setShowPortlets( strShowPortlets != null );
291 portlet.setShowPages( strShowPages != null );
292 portlet.setDynamic( strIsDynamic != null );
293 portlet.setAscSort( bIsAscSort );
294
295 portlet.setPeriod( nPeriod );
296 portlet.setNbElementsMax( nNbElementsMax );
297 portlet.setElementsOrder( nElementOrder );
298 }
299 else
300 {
301 strError = AdminMessageService.getMessageUrl( request, WhatsNewConstants.MESSAGE_NOT_NUMERIC,
302 AdminMessage.TYPE_ERROR );
303 }
304 }
305 else
306 {
307 strError = AdminMessageService.getMessageUrl( request,
308 WhatsNewConstants.MESSAGE_NEGATIVE_PORTLET_NB_ELEMENTS_MAX, AdminMessage.TYPE_ERROR );
309 }
310 }
311 else
312 {
313 strError = AdminMessageService.getMessageUrl( request,
314 WhatsNewConstants.MESSAGE_NOT_VALID_PORTLET_NB_ELEMENTS_MAX, AdminMessage.TYPE_ERROR );
315 }
316 }
317 else
318 {
319 strError = AdminMessageService.getMessageUrl( request,
320 WhatsNewConstants.MESSAGE_MANDATORY_PORTLET_NB_ELEMENTS_MAX, AdminMessage.TYPE_ERROR );
321 }
322
323 return strError;
324 }
325
326
327
328
329
330
331 private void setModeratedElements( WhatsNewPortlet portlet, HttpServletRequest request )
332 {
333 Timestamp limitTimestamp = WhatsNewService.getInstance( )
334 .getTimestampFromPeriodAndCurrentDate( portlet.getPeriod( ),
335 request.getLocale( ) );
336 WhatsNewPortletService.getInstance( ).removeModeratedElements( portlet, getPlugin( ) );
337 setModeratedPortlets( portlet, request, limitTimestamp );
338 setModeratedPages( portlet, request, limitTimestamp );
339 setModeratedDocuments( portlet, request, limitTimestamp );
340 }
341
342
343
344
345
346
347
348 private void setModeratedPortlets( WhatsNewPortlet portlet, HttpServletRequest request, Timestamp limitTimestamp )
349 {
350 if ( !portlet.getDynamic( ) && portlet.getShowPortlets( ) )
351 {
352 for ( IWhatsNew whatsNew : WhatsNewService.getInstance( )
353 .getPortletsByCriterias( limitTimestamp, request.getLocale( ) ) )
354 {
355 String strModeratedElement = request.getParameter( WhatsNewConstants.PARAMETER_MODERATED_PORTLET +
356 WhatsNewConstants.UNDERSCORE + whatsNew.getPortletId( ) );
357
358 if ( StringUtils.isNotBlank( strModeratedElement ) )
359 {
360 WhatsNewPortletService.getInstance( )
361 .createModeratedPortlet( portlet.getId( ), whatsNew.getPortletId( ),
362 getPlugin( ) );
363 }
364 }
365 }
366 }
367
368
369
370
371
372
373
374 private void setModeratedPages( WhatsNewPortlet portlet, HttpServletRequest request, Timestamp limitTimestamp )
375 {
376 if ( !portlet.getDynamic( ) && portlet.getShowPages( ) )
377 {
378 for ( IWhatsNew whatsNew : WhatsNewService.getInstance( )
379 .getPagesByCriterias( limitTimestamp, request.getLocale( ) ) )
380 {
381 String strModeratedElement = request.getParameter( WhatsNewConstants.PARAMETER_MODERATED_PAGE +
382 WhatsNewConstants.UNDERSCORE + whatsNew.getPageId( ) );
383
384 if ( StringUtils.isNotBlank( strModeratedElement ) )
385 {
386 WhatsNewPortletService.getInstance( )
387 .createModeratedPage( portlet.getId( ), whatsNew.getPageId( ), getPlugin( ) );
388 }
389 }
390 }
391 }
392
393
394
395
396
397
398
399 private void setModeratedDocuments( WhatsNewPortlet portlet, HttpServletRequest request, Timestamp limitTimestamp )
400 {
401 if ( !portlet.getDynamic( ) && portlet.getShowDocuments( ) )
402 {
403 for ( IWhatsNew whatsNew : WhatsNewService.getInstance( )
404 .getDocumentsByCriterias( limitTimestamp, request.getLocale( ) ) )
405 {
406 String strModeratedElement = request.getParameter( WhatsNewConstants.PARAMETER_MODERATED_DOCUMENT +
407 WhatsNewConstants.UNDERSCORE + whatsNew.getPortletId( ) + WhatsNewConstants.UNDERSCORE +
408 whatsNew.getDocumentId( ) );
409
410 if ( StringUtils.isNotBlank( strModeratedElement ) )
411 {
412 PortletDocumentLink pdLink = new PortletDocumentLink( whatsNew.getPortletId( ),
413 whatsNew.getDocumentId( ) );
414 WhatsNewPortletService.getInstance( )
415 .createModeratedDocument( portlet.getId( ), pdLink, getPlugin( ) );
416 }
417 }
418 }
419 }
420 }