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.digglike.web;
35
36 import fr.paris.lutece.plugins.digglike.business.DiggSubmitType;
37 import fr.paris.lutece.plugins.digglike.business.DiggSubmitTypeHome;
38 import fr.paris.lutece.plugins.digglike.utils.DiggUtils;
39 import fr.paris.lutece.portal.service.fileupload.FileUploadService;
40 import fr.paris.lutece.portal.service.i18n.I18nService;
41 import fr.paris.lutece.portal.service.image.ImageResource;
42 import fr.paris.lutece.portal.service.message.AdminMessage;
43 import fr.paris.lutece.portal.service.message.AdminMessageService;
44 import fr.paris.lutece.portal.service.plugin.Plugin;
45 import fr.paris.lutece.portal.service.template.AppTemplateService;
46 import fr.paris.lutece.portal.service.util.AppLogService;
47 import fr.paris.lutece.portal.service.util.AppPathService;
48 import fr.paris.lutece.portal.service.util.AppPropertiesService;
49 import fr.paris.lutece.portal.web.admin.PluginAdminPageJspBean;
50 import fr.paris.lutece.portal.web.upload.MultipartHttpServletRequest;
51 import fr.paris.lutece.util.html.HtmlTemplate;
52 import fr.paris.lutece.util.html.Paginator;
53 import fr.paris.lutece.util.url.UrlItem;
54
55 import org.apache.commons.fileupload.FileItem;
56
57 import java.util.HashMap;
58 import java.util.List;
59 import java.util.Locale;
60 import java.util.Map;
61
62 import javax.servlet.http.HttpServletRequest;
63
64
65
66
67
68
69
70 public class DiggSubmitTypeJspBean extends PluginAdminPageJspBean
71 {
72 private static final long serialVersionUID = 2466547668533718657L;
73
74
75 private static final String TEMPLATE_MANAGE_DIGG_SUBMIT_TYPE = "admin/plugins/digglike/manage_digg_submit_type.html";
76 private static final String TEMPLATE_CREATE_DIGG_SUBMIT_TYPE = "admin/plugins/digglike/create_digg_submit_type.html";
77 private static final String TEMPLATE_MODIFY_DIGG_SUBMIT_TYPE = "admin/plugins/digglike/modify_digg_submit_type.html";
78
79
80 private static final String MARK_DIGG_SUBMIT_TYPE_LIST = "type_list";
81 private static final String MARK_DIGG_SUBMIT_TYPE = "type";
82 private static final String MARK_PAGINATOR = "paginator";
83 private static final String MARK_NB_ITEMS_PER_PAGE = "nb_items_per_page";
84
85
86 private static final String PARAMETER_PAGE_INDEX = "page_index";
87 private static final String PARAMETER_ID_DIGG_SUBMIT_TYPE = "id_type";
88 private static final String PARAMETER_NAME = "name";
89 private static final String PARAMETER_COLOR = "color";
90 private static final String PARAMETER_PARAMETERIZABLE = "parameterizable";
91 private static final String PARAMETER_IMAGE_SOURCE = "image_source";
92 private static final String PARAMETER_UPDATE_FILE = "update_file";
93
94
95 private static final String EMPTY_STRING = "";
96
97
98 private static final String MESSAGE_MANDATORY_FIELD = "digglike.message.mandatory.field";
99 private static final String FIELD_NAME = "digglike.createDiggSubmitType.labelName";
100 private static final String MESSAGE_CONFIRM_REMOVE_DIGG_SUBMIT_TYPE = "digglike.message.confirmRemoveDiggSubmitType";
101 private static final String MESSAGE_DIGG_SUBMIT_TYPE_ASSOCIATE_TO_DIGG = "digglike.message.diggSubmitTypeAssociateToDigg";
102
103
104 private static final String PROPERTY_ITEM_PER_PAGE = "digglike.itemsPerPage";
105 private static final String PROPERTY_MANAGE_DIGG_SUBMIT_TYPE_TITLE = "digglike.manageDiggSubmitType.pageTitle";
106 private static final String PROPERTY_MODIFY_DIGG_SUBMIT_TYPE_TITLE = "digglike.modifyDiggSubmitType.title";
107 private static final String PROPERTY_CREATE_DIGG_SUBMIT_TYPE_TITLE = "digglike.createDiggSubmitType.title";
108
109
110 private static final String JSP_MANAGE_DIGG_SUBMIT_TYPE = "jsp/admin/plugins/digglike/ManageDiggSubmitType.jsp";
111 private static final String JSP_DO_REMOVE_DIGG_SUBMIT_TYPE = "jsp/admin/plugins/digglike/DoRemoveDiggSubmitType.jsp";
112
113
114 private int _nDefaultItemsPerPage = AppPropertiesService.getPropertyInt( PROPERTY_ITEM_PER_PAGE, 15 );
115 private String _strCurrentPageIndex;
116 private int _nItemsPerPage;
117
118
119
120
121
122
123 public String getManageDiggSubmitType( HttpServletRequest request )
124 {
125 Plugin plugin = getPlugin( );
126 Locale locale = getLocale( );
127 Map<String, Object> model = new HashMap<String, Object>( );
128 List<DiggSubmitType> listDiggSubmitType = DiggSubmitTypeHome.getList( plugin );
129 _strCurrentPageIndex = Paginator.getPageIndex( request, Paginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
130 _nItemsPerPage = Paginator.getItemsPerPage( request, Paginator.PARAMETER_ITEMS_PER_PAGE, _nItemsPerPage,
131 _nDefaultItemsPerPage );
132
133 Paginator<DiggSubmitType> paginator = new Paginator<DiggSubmitType>( listDiggSubmitType, _nItemsPerPage,
134 getJspManageDiggSubmitType( request ), PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
135
136 model.put( MARK_PAGINATOR, paginator );
137 model.put( MARK_NB_ITEMS_PER_PAGE, EMPTY_STRING + _nItemsPerPage );
138 model.put( MARK_DIGG_SUBMIT_TYPE_LIST, paginator.getPageItems( ) );
139 setPageTitleProperty( PROPERTY_MANAGE_DIGG_SUBMIT_TYPE_TITLE );
140
141 HtmlTemplate templateList = AppTemplateService.getTemplate( TEMPLATE_MANAGE_DIGG_SUBMIT_TYPE, locale, model );
142
143 return getAdminPage( templateList.getHtml( ) );
144 }
145
146
147
148
149
150
151 public String getCreateDiggSubmitType( HttpServletRequest request )
152 {
153 Locale locale = getLocale( );
154 Map<String, Object> model = new HashMap<String, Object>( );
155 setPageTitleProperty( PROPERTY_CREATE_DIGG_SUBMIT_TYPE_TITLE );
156
157 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_CREATE_DIGG_SUBMIT_TYPE, locale, model );
158
159 return getAdminPage( template.getHtml( ) );
160 }
161
162
163
164
165
166
167 public String doCreateDiggSubmitType( HttpServletRequest request )
168 {
169 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
170 DiggSubmitType diggSubmitType = new DiggSubmitType( );
171 String strError = getDiggSubmitTypeData( multipartRequest, diggSubmitType );
172
173 if ( strError != null )
174 {
175 return strError;
176 }
177
178 DiggSubmitTypeHome.create( diggSubmitType, getPlugin( ) );
179
180 return getJspManageDiggSubmitType( request );
181 }
182
183
184
185
186
187
188 public String getModifyDiggSubmitType( HttpServletRequest request )
189 {
190 Plugin plugin = getPlugin( );
191 Locale locale = getLocale( );
192 DiggSubmitType diggSubmitType;
193 String strIdDiggSubmitType = request.getParameter( PARAMETER_ID_DIGG_SUBMIT_TYPE );
194 Map<String, Object> model = new HashMap<String, Object>( );
195 int nIdDiggSubmitType = -1;
196
197 if ( ( strIdDiggSubmitType != null ) && !strIdDiggSubmitType.equals( EMPTY_STRING ) )
198 {
199 try
200 {
201 nIdDiggSubmitType = Integer.parseInt( strIdDiggSubmitType );
202 }
203 catch ( NumberFormatException ne )
204 {
205 AppLogService.error( ne );
206
207 return getManageDiggSubmitType( request );
208 }
209 }
210 else
211 {
212 return getManageDiggSubmitType( request );
213 }
214
215 diggSubmitType = DiggSubmitTypeHome.findByPrimaryKey( nIdDiggSubmitType, plugin );
216 model.put( MARK_DIGG_SUBMIT_TYPE, diggSubmitType );
217 setPageTitleProperty( PROPERTY_MODIFY_DIGG_SUBMIT_TYPE_TITLE );
218
219 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MODIFY_DIGG_SUBMIT_TYPE, locale, model );
220
221 return getAdminPage( template.getHtml( ) );
222 }
223
224
225
226
227
228
229 public String doModifyDiggSubmitType( HttpServletRequest request )
230 {
231 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
232 Plugin plugin = getPlugin( );
233 DiggSubmitType diggSubmitType;
234 String strIdDiggSubmitType = multipartRequest.getParameter( PARAMETER_ID_DIGG_SUBMIT_TYPE );
235 int nIdDiggSubmitType = -1;
236
237 if ( ( strIdDiggSubmitType != null ) && !strIdDiggSubmitType.equals( EMPTY_STRING ) )
238 {
239 try
240 {
241 nIdDiggSubmitType = Integer.parseInt( strIdDiggSubmitType );
242 }
243 catch ( NumberFormatException ne )
244 {
245 AppLogService.error( ne );
246
247 return getHomeUrl( request );
248 }
249 }
250 else
251 {
252 return getHomeUrl( request );
253 }
254
255 diggSubmitType = DiggSubmitTypeHome.findByPrimaryKey( nIdDiggSubmitType, plugin );
256
257 String strError = getDiggSubmitTypeData( multipartRequest, diggSubmitType );
258
259 if ( strError != null )
260 {
261 return strError;
262 }
263
264 DiggSubmitTypeHome.update( diggSubmitType, getPlugin( ) );
265
266 return getJspManageDiggSubmitType( request );
267 }
268
269
270
271
272
273
274 public String removeDiggSubmitType( HttpServletRequest request )
275 {
276 if ( request.getParameter( PARAMETER_ID_DIGG_SUBMIT_TYPE ) == null )
277 {
278 return getHomeUrl( request );
279 }
280
281 String strIdDiggSubmitType = request.getParameter( PARAMETER_ID_DIGG_SUBMIT_TYPE );
282
283 UrlItem url = new UrlItem( JSP_DO_REMOVE_DIGG_SUBMIT_TYPE );
284 url.addParameter( PARAMETER_ID_DIGG_SUBMIT_TYPE, strIdDiggSubmitType );
285
286 return AdminMessageService.getMessageUrl( request, MESSAGE_CONFIRM_REMOVE_DIGG_SUBMIT_TYPE, url.getUrl( ),
287 AdminMessage.TYPE_CONFIRMATION );
288 }
289
290
291
292
293
294
295 public String doRemoveDiggSubmitType( HttpServletRequest request )
296 {
297 String strIdDiggSubmitType = request.getParameter( PARAMETER_ID_DIGG_SUBMIT_TYPE );
298 Plugin plugin = getPlugin( );
299 int nIdDiggSubmitType = DiggUtils.getIntegerParameter( strIdDiggSubmitType );
300
301 if ( DiggSubmitTypeHome.isAssociateToDigg( nIdDiggSubmitType, plugin ) )
302 {
303 return AdminMessageService.getMessageUrl( request, MESSAGE_DIGG_SUBMIT_TYPE_ASSOCIATE_TO_DIGG,
304 AdminMessage.TYPE_STOP );
305 }
306
307 if ( nIdDiggSubmitType != -1 )
308 {
309 DiggSubmitTypeHome.remove( nIdDiggSubmitType, plugin );
310 }
311
312 return getJspManageDiggSubmitType( request );
313 }
314
315
316
317
318
319
320
321
322
323 private String getDiggSubmitTypeData( MultipartHttpServletRequest multipartRequest, DiggSubmitType diggSubmitType )
324 {
325 String strName = multipartRequest.getParameter( PARAMETER_NAME );
326 String strColor = multipartRequest.getParameter( PARAMETER_COLOR );
327 String strParameterizable = multipartRequest.getParameter( PARAMETER_PARAMETERIZABLE );
328 Boolean bParameterizable = true;
329 String strFieldError = EMPTY_STRING;
330 FileItem imageSource = multipartRequest.getFile( PARAMETER_IMAGE_SOURCE );
331 String strImageName = FileUploadService.getFileNameOnly( imageSource );
332 String strUpdateFile = multipartRequest.getParameter( PARAMETER_UPDATE_FILE );
333
334 if ( ( strName == null ) || strName.trim( ).equals( EMPTY_STRING ) )
335 {
336 strFieldError = FIELD_NAME;
337 }
338
339 else if ( ( strParameterizable == null ) || strParameterizable.trim( ).equals( EMPTY_STRING ) )
340 {
341 bParameterizable = false;
342 }
343
344
345 if ( !strFieldError.equals( EMPTY_STRING ) )
346 {
347 Object[] tabRequiredFields = { I18nService.getLocalizedString( strFieldError, getLocale( ) ) };
348
349 return AdminMessageService.getMessageUrl( multipartRequest, MESSAGE_MANDATORY_FIELD, tabRequiredFields,
350 AdminMessage.TYPE_STOP );
351 }
352
353 if ( ( diggSubmitType.getIdType( ) == DiggUtils.CONSTANT_ID_NULL ) || ( strUpdateFile != null ) )
354 {
355 ImageResource image = new ImageResource( );
356 byte[] baImageSource = imageSource.get( );
357
358 if ( ( strImageName != null ) && !strImageName.equals( "" ) )
359 {
360 image.setImage( baImageSource );
361 image.setMimeType( imageSource.getContentType( ) );
362 }
363
364 diggSubmitType.setPictogram( image );
365 }
366
367 diggSubmitType.setColor( strColor );
368 diggSubmitType.setName( strName );
369 diggSubmitType.setParameterizableInFO( bParameterizable );
370
371 return null;
372 }
373
374
375
376
377
378
379 private String getJspManageDiggSubmitType( HttpServletRequest request )
380 {
381 return AppPathService.getBaseUrl( request ) + JSP_MANAGE_DIGG_SUBMIT_TYPE;
382 }
383 }