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.blog.web;
35
36 import fr.paris.lutece.api.user.User;
37 import java.util.Collections;
38 import java.util.List;
39 import java.util.Map;
40
41 import javax.servlet.http.HttpServletRequest;
42
43 import org.apache.commons.collections.CollectionUtils;
44
45 import fr.paris.lutece.plugins.blog.business.BlogHome;
46 import fr.paris.lutece.plugins.blog.business.Tag;
47 import fr.paris.lutece.plugins.blog.business.TagHome;
48 import fr.paris.lutece.portal.business.rbac.RBAC;
49 import fr.paris.lutece.portal.service.admin.AccessDeniedException;
50 import fr.paris.lutece.portal.service.admin.AdminUserService;
51 import fr.paris.lutece.portal.service.message.AdminMessage;
52 import fr.paris.lutece.portal.service.message.AdminMessageService;
53 import fr.paris.lutece.portal.service.rbac.RBACService;
54 import fr.paris.lutece.portal.service.util.AppPathService;
55 import fr.paris.lutece.portal.util.mvc.admin.annotations.Controller;
56 import fr.paris.lutece.portal.util.mvc.commons.annotations.Action;
57 import fr.paris.lutece.portal.util.mvc.commons.annotations.View;
58 import fr.paris.lutece.util.json.JsonResponse;
59 import fr.paris.lutece.util.json.JsonUtil;
60 import fr.paris.lutece.util.url.UrlItem;
61
62
63
64
65 @Controller( controllerJsp = "ManageTags.jsp", controllerPath = "jsp/admin/plugins/blog/", right = "BLOG_MANAGEMENT" )
66 public class TagJspBean extends ManageBlogJspBean
67 {
68 private static final long serialVersionUID = 3209382166137329118L;
69
70 private static final String TEMPLATE_MANAGE_TAGS = "/admin/plugins/blog/tag/manage_tags.html";
71 private static final String TEMPLATE_CREATE_TAG = "/admin/plugins/blog/tag/create_tag.html";
72 private static final String TEMPLATE_MODIFY_TAG = "/admin/plugins/blog/tag/modify_tag.html";
73
74
75 private static final String PARAMETER_ID_TAG = "id";
76
77
78 private static final String PROPERTY_PAGE_TITLE_MANAGE_TAGS = "blog.manage_tags.pageTitle";
79 private static final String PROPERTY_PAGE_TITLE_MODIFY_TAGS = "blog.modify_tags.pageTitle";
80 private static final String PROPERTY_PAGE_TITLE_CREATE_TAG = "blog.create_tag.pageTitle";
81
82 private static final String MESSAGE_ERROR_TAG_IS_AFFECTED = "blog.message.errorTagIsAffected";
83
84
85 private static final String MARK_TAG_LIST = "tag_list";
86 private static final String MARK_TAG = "tags";
87 private static final String MARK_WEBAPP_URL = "webapp_url";
88
89 private static final String JSP_MANAGE_TAGS = "jsp/admin/plugins/blog/ManageTags.jsp";
90
91
92 private static final String VALIDATION_ATTRIBUTES_PREFIX = "blog.model.entity.tag.attribute.";
93
94
95 private static final String VIEW_MANAGE_TAGS = "manageTags";
96 private static final String VIEW_CREATE_TAG = "createTag";
97 private static final String VIEW_MODIFY_TAG = "modifyTag";
98
99
100 private static final String ACTION_CREATE_TAG = "createTag";
101 private static final String ACTION_MODIFY_TAG = "modifyTag";
102 private static final String ACTION_REMOVE_TAG = "removeTag";
103 private static final String ACTION_CONFIRM_REMOVE_TAG = "confirmRemoveTag";
104 private static final String ACTION_CREATE_TAG_AJAX_REQUEST = "createTagByAjax";
105
106
107 private static final String INFO_TAG_CREATED = "blog.info.tag.created";
108 private static final String INFO_TAG_UPDATED = "blog.info.tag.updated";
109 private static final String INFO_TAG_REMOVED = "blog.info.tag.removed";
110
111
112 private Tag _tag;
113
114
115
116
117
118
119
120
121 @View( value = VIEW_MANAGE_TAGS, defaultView = true )
122 public String getManageTags( HttpServletRequest request )
123 {
124 _tag = null;
125 List<Tag> listTag = TagHome.getTagList( );
126 Collections.sort( listTag, ( tag1, tag2 ) -> tag1.getName( ).compareToIgnoreCase( tag2.getName( ) ) );
127
128 Map<String, Object> model = getPaginatedListModel( request, MARK_TAG_LIST, listTag, JSP_MANAGE_TAGS );
129 boolean bPermissionCreate = RBACService.isAuthorized( Tag.PROPERTY_RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID, Tag.PERMISSION_CREATE,
130 (User) getUser( ) );
131 boolean bPermissionModify = RBACService.isAuthorized( Tag.PROPERTY_RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID, Tag.PERMISSION_MODIFY,
132 (User) getUser( ) );
133 boolean bPermissionDelete = RBACService.isAuthorized( Tag.PROPERTY_RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID, Tag.PERMISSION_DELETE,
134 (User) getUser( ) );
135
136 model.put( MARK_PERMISSION_CREATE_TAG, bPermissionCreate );
137 model.put( MARK_PERMISSION_MODIFY_TAG, bPermissionModify );
138 model.put( MARK_PERMISSION_DELETE_TAG, bPermissionDelete );
139
140 model.put( MARK_WEBAPP_URL, AppPathService.getBaseUrl( request ) );
141
142 return getPage( PROPERTY_PAGE_TITLE_MANAGE_TAGS, TEMPLATE_MANAGE_TAGS, model );
143 }
144
145
146
147
148
149
150
151
152
153 @View( VIEW_CREATE_TAG )
154 public String getCreateTag( HttpServletRequest request ) throws AccessDeniedException
155 {
156 if ( !RBACService.isAuthorized( Tag.PROPERTY_RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID, Tag.PERMISSION_CREATE, (User) getUser( ) ) )
157 {
158 throw new AccessDeniedException( UNAUTHORIZED );
159 }
160 _tag = ( _tag != null ) ? _tag : new Tag( );
161
162 Map<String, Object> model = getModel( );
163
164 model.put( MARK_TAG, _tag );
165 model.put( MARK_WEBAPP_URL, AppPathService.getBaseUrl( request ) );
166
167 return getPage( PROPERTY_PAGE_TITLE_CREATE_TAG, TEMPLATE_CREATE_TAG, model );
168 }
169
170
171
172
173
174
175
176
177 @Action( ACTION_CREATE_TAG )
178 public String doCreateTag( HttpServletRequest request )
179 {
180 String strRequestAjax = request.getParameter( ACTION_CREATE_TAG_AJAX_REQUEST );
181 _tag = ( _tag != null ) ? _tag : new Tag( );
182 populate( _tag, request );
183 if ( RBACService.isAuthorized( Tag.PROPERTY_RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID, Tag.PERMISSION_CREATE,
184 (User) AdminUserService.getAdminUser( request ) ) )
185 {
186
187 if ( !validateBean( _tag, VALIDATION_ATTRIBUTES_PREFIX ) )
188 {
189 return redirectView( request, VIEW_CREATE_TAG );
190 }
191
192 if ( TagHome.findByName( _tag.getName( ) ) == null )
193 {
194
195 Tag tag = TagHome.create( _tag );
196
197 if ( strRequestAjax != null && ACTION_CREATE_TAG_AJAX_REQUEST.endsWith( strRequestAjax ) )
198 {
199
200 return JsonUtil.buildJsonResponse( new JsonResponse( String.valueOf( tag.getIdTag( ) ) ) );
201 }
202
203 addInfo( INFO_TAG_CREATED, getLocale( ) );
204
205 }
206 else
207 if ( strRequestAjax != null && ACTION_CREATE_TAG_AJAX_REQUEST.endsWith( strRequestAjax ) )
208 {
209
210 return JsonUtil.buildJsonResponse( new JsonResponse( "TAG_EXIST" ) );
211 }
212 }
213 return redirectView( request, VIEW_MANAGE_TAGS );
214 }
215
216
217
218
219
220
221
222
223
224 @Action( ACTION_CONFIRM_REMOVE_TAG )
225 public String getConfirmRemoveTag( HttpServletRequest request ) throws AccessDeniedException
226 {
227
228 String strId = request.getParameter( PARAMETER_ID_TAG );
229 int nId = Integer.parseInt( strId );
230 if ( !RBACService.isAuthorized( Tag.PROPERTY_RESOURCE_TYPE, strId, Tag.PERMISSION_DELETE, (User) AdminUserService.getAdminUser( request ) ) )
231 {
232 throw new AccessDeniedException( UNAUTHORIZED );
233 }
234 UrlItem url = new UrlItem( getActionUrl( ACTION_REMOVE_TAG ) );
235 url.addParameter( PARAMETER_ID_TAG, nId );
236
237 String strMessageUrl = AdminMessageService.getMessageUrl( request, MESSAGE_CONFIRM_REMOVE_TAG, url.getUrl( ), AdminMessage.TYPE_CONFIRMATION );
238
239 return redirect( request, strMessageUrl );
240 }
241
242
243
244
245
246
247
248
249 @Action( ACTION_REMOVE_TAG )
250 public String doRemoveTag( HttpServletRequest request )
251 {
252 String strId = request.getParameter( PARAMETER_ID_TAG );
253 int nId = Integer.parseInt( strId );
254
255 if ( CollectionUtils.isNotEmpty( BlogHome.getBlogByTag( nId ) ) )
256 {
257
258 String strMessageUrl = AdminMessageService.getMessageUrl( request, MESSAGE_ERROR_TAG_IS_AFFECTED, AdminMessage.TYPE_STOP );
259 return redirect( request, strMessageUrl );
260 }
261 if ( RBACService.isAuthorized( Tag.PROPERTY_RESOURCE_TYPE, strId, Tag.PERMISSION_DELETE, (User) AdminUserService.getAdminUser( request ) ) )
262 {
263 TagHome.remove( nId );
264
265 addInfo( INFO_TAG_REMOVED, getLocale( ) );
266
267 }
268 return redirectView( request, VIEW_MANAGE_TAGS );
269 }
270
271
272
273
274
275
276
277
278
279 @View( VIEW_MODIFY_TAG )
280 public String getModifyTag( HttpServletRequest request ) throws AccessDeniedException
281 {
282 String strId = request.getParameter( PARAMETER_ID_TAG );
283 int nId = Integer.parseInt( strId );
284
285 if ( !RBACService.isAuthorized( Tag.PROPERTY_RESOURCE_TYPE, strId, Tag.PERMISSION_MODIFY, (User) getUser( ) ) )
286 {
287 throw new AccessDeniedException( UNAUTHORIZED );
288 }
289 if ( _tag == null || ( _tag.getIdTag( ) != nId ) )
290 {
291
292 _tag = TagHome.findByPrimaryKey( nId );
293
294 }
295
296 Map<String, Object> model = getModel( );
297 model.put( MARK_TAG, _tag );
298 model.put( MARK_WEBAPP_URL, AppPathService.getBaseUrl( request ) );
299
300 return getPage( PROPERTY_PAGE_TITLE_MODIFY_TAGS, TEMPLATE_MODIFY_TAG, model );
301 }
302
303
304
305
306
307
308
309
310 @Action( ACTION_MODIFY_TAG )
311 public String doModifyTag( HttpServletRequest request )
312 {
313
314 _tag = ( _tag != null ) ? _tag : new Tag( );
315 populate( _tag, request );
316 if ( RBACService.isAuthorized( Tag.PROPERTY_RESOURCE_TYPE, String.valueOf( _tag.getIdTag( ) ), Tag.PERMISSION_MODIFY,
317 (User) AdminUserService.getAdminUser( request ) ) )
318 {
319
320 if ( !validateBean( _tag, VALIDATION_ATTRIBUTES_PREFIX ) )
321 {
322 return redirect( request, VIEW_MODIFY_TAG, PARAMETER_ID_TAG, _tag.getIdTag( ) );
323 }
324
325 if ( TagHome.findByName( _tag.getName( ) ) == null )
326 {
327
328 TagHome.update( _tag );
329 addInfo( INFO_TAG_UPDATED, getLocale( ) );
330
331 }
332 }
333 return redirectView( request, VIEW_MANAGE_TAGS );
334 }
335
336 }