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.adminwall.web;
35
36 import fr.paris.lutece.plugins.adminwall.business.Hashtag;
37 import fr.paris.lutece.plugins.adminwall.business.HashtagHome;
38 import fr.paris.lutece.plugins.adminwall.business.Link;
39 import fr.paris.lutece.plugins.adminwall.business.LinkHome;
40 import fr.paris.lutece.plugins.adminwall.business.Post;
41 import fr.paris.lutece.plugins.adminwall.business.PostHome;
42 import fr.paris.lutece.plugins.adminwall.service.AdminWallService;
43 import fr.paris.lutece.portal.business.user.AdminUser;
44 import fr.paris.lutece.portal.service.admin.AdminUserService;
45 import fr.paris.lutece.portal.service.message.AdminMessage;
46 import fr.paris.lutece.portal.service.message.AdminMessageService;
47 import fr.paris.lutece.portal.service.util.AppPropertiesService;
48 import fr.paris.lutece.portal.util.mvc.admin.annotations.Controller;
49 import fr.paris.lutece.portal.util.mvc.commons.annotations.Action;
50 import fr.paris.lutece.portal.util.mvc.commons.annotations.View;
51 import fr.paris.lutece.portal.web.util.LocalizedPaginator;
52 import fr.paris.lutece.util.html.Paginator;
53 import fr.paris.lutece.util.url.UrlItem;
54
55 import java.sql.Timestamp;
56
57 import java.util.ArrayList;
58 import java.util.Collection;
59 import java.util.Collections;
60 import java.util.Date;
61 import java.util.List;
62 import java.util.Map;
63
64 import javax.servlet.http.HttpServletRequest;
65
66
67
68
69
70
71 @Controller( controllerJsp = "ManageWall.jsp", controllerPath = "jsp/admin/plugins/adminwall/", right = "ADMINWALL_ACCESS" )
72 public class WallJspBean extends AdminWallJspBean
73 {
74
75
76
77 private static final String TEMPLATE_MANAGE_POST = "/admin/plugins/adminwall/manage_posts.html";
78 private static final String TEMPLATE_CREATE_POST = "/admin/plugins/adminwall/create_post.html";
79
80
81 private static final String PARAMETER_ID_POST = "idPost";
82 private static final String PARAMETER_TAG = "tag";
83 private static final String PARAMETER_ID_AUTEUR = "idAuteur";
84
85
86 private static final String PROPERTY_PAGE_TITLE_MANAGE_POSTS = "adminwall.manage_posts.pageTitle";
87 private static final String PROPERTY_PAGE_TITLE_CREATE_POST = "adminwall.create_post.pageTitle";
88
89
90 private static final String MARK_POST_LIST = "post_list";
91 private static final String MARK_POST = "post";
92 private static final String MARK_USERID = "userId";
93 private static final String JSP_MANAGE_WALL = "jsp/admin/plugins/adminwall/ManageWall.jsp";
94
95
96 private static final String MESSAGE_CONFIRM_REMOVE_POST = "adminwall.message.confirmRemovePost";
97 private static final String PROPERTY_DEFAULT_LIST_POST_PER_PAGE = "adminwall.listPosts.itemsPerPage";
98 private static final String VALIDATION_ATTRIBUTES_PREFIX = "adminwall.model.entity.post.attribute.";
99
100
101 private static final String VIEW_MANAGE_POSTS = "managePosts";
102 private static final String VIEW_CREATE_POST = "createPost";
103
104
105 private static final String ACTION_CREATE_POST = "createPost";
106 private static final String ACTION_REMOVE_POST = "removePost";
107 private static final String ACTION_CONFIRM_REMOVE_POST = "confirmRemovePost";
108
109
110 private static final String INFO_POST_CREATED = "adminwall.info.post.created";
111 private static final String INFO_POST_REMOVED = "adminwall.info.post.removed";
112
113
114 private Post _post;
115 private Hashtag _hashtag;
116 private Link _link;
117
118
119
120
121
122
123
124 @View( value = VIEW_MANAGE_POSTS, defaultView = true )
125 public String getManagePosts( HttpServletRequest request )
126 {
127 Collection<Post> collectionPosts = new ArrayList<Post>( );
128 List<Post> listPosts = (List<Post>) collectionPosts;
129
130
131 _strCurrentPageIndex = Paginator.getPageIndex( request, Paginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
132 _nDefaultItemsPerPage = AppPropertiesService.getPropertyInt( PROPERTY_DEFAULT_LIST_POST_PER_PAGE, 50 );
133 _nItemsPerPage = Paginator.getItemsPerPage( request, Paginator.PARAMETER_ITEMS_PER_PAGE, _nItemsPerPage,
134 _nDefaultItemsPerPage );
135
136
137 UrlItem url = new UrlItem( JSP_MANAGE_WALL );
138 String strUrl = url.getUrl( );
139
140
141 String paramTag = request.getParameter( PARAMETER_TAG );
142
143 if ( paramTag == null )
144 {
145 listPosts = (List<Post>) PostHome.getPostsList( );
146 }
147 else
148 {
149
150 int idHashtag = HashtagHome.getId( paramTag );
151 List<Link> listLinks = (List<Link>) LinkHome.getLinksListTag( idHashtag );
152
153
154 for ( Link link : listLinks )
155 {
156 int idPost = link.getPost( );
157 Post pos = PostHome.findByPrimaryKey( idPost );
158 listPosts.add( pos );
159 }
160
161 Collections.reverse( listPosts );
162 }
163
164
165 String paramIdAuteur = request.getParameter( PARAMETER_ID_AUTEUR );
166
167 if ( paramIdAuteur != null )
168 {
169
170 int nIdAuteur = Integer.parseInt( paramIdAuteur );
171 listPosts = (List<Post>) PostHome.getPostsListIdAuteur( nIdAuteur );
172 }
173
174 for ( Post pos : listPosts )
175 {
176
177 AdminWallService.activateURL( pos );
178
179 AdminWallService.activateHashtag( pos );
180 }
181
182
183 LocalizedPaginator paginator = new LocalizedPaginator( listPosts, _nItemsPerPage, strUrl, PARAMETER_PAGE_INDEX,
184 _strCurrentPageIndex, getLocale( ) );
185
186
187 AdminUser currentUser = AdminUserService.getAdminUser( request );
188 int userId = currentUser.getUserId( );
189
190
191 Map<String, Object> model = getModel( );
192 model.put( MARK_USERID, userId );
193 model.put( MARK_NB_ITEMS_PER_PAGE, "" + _nItemsPerPage );
194 model.put( MARK_PAGINATOR, paginator );
195 model.put( MARK_POST_LIST, paginator.getPageItems( ) );
196
197 return getPage( PROPERTY_PAGE_TITLE_MANAGE_POSTS, TEMPLATE_MANAGE_POST, model );
198 }
199
200
201
202
203
204
205
206 @View( VIEW_CREATE_POST )
207 public String getCreatePost( HttpServletRequest request )
208 {
209 _post = ( _post != null ) ? _post : new Post( );
210
211 Map<String, Object> model = getModel( );
212 model.put( MARK_POST, _post );
213
214 return getPage( PROPERTY_PAGE_TITLE_CREATE_POST, TEMPLATE_CREATE_POST, model );
215 }
216
217
218
219
220
221
222
223 @Action( ACTION_CREATE_POST )
224 public String doCreatePost( HttpServletRequest request )
225 {
226 _post = ( _post != null ) ? _post : new Post( );
227
228
229 Date dDate = new Date( );
230 Timestamp time = new Timestamp( dDate.getTime( ) );
231 _post.setTimestamp( time );
232
233
234 AdminUser currentUser = AdminUserService.getAdminUser( request );
235
236 String prenom = currentUser.getFirstName( );
237 String nom = currentUser.getLastName( );
238 _post.setAuteur( prenom + " " + nom );
239
240 int idAuteur = currentUser.getUserId( );
241 _post.setIdAuteur( idAuteur );
242
243 populate( _post, request );
244
245
246 if ( !validateBean( _post, VALIDATION_ATTRIBUTES_PREFIX ) )
247 {
248 return redirectView( request, VIEW_MANAGE_POSTS );
249 }
250
251 PostHome.create( _post );
252
253
254 AdminWallService.detectHashtag( _post );
255
256 _post = null;
257 addInfo( INFO_POST_CREATED, getLocale( ) );
258
259 return redirectView( request, VIEW_MANAGE_POSTS );
260 }
261
262
263
264
265
266
267
268
269 @Action( ACTION_CONFIRM_REMOVE_POST )
270 public String getConfirmRemovePost( HttpServletRequest request )
271 {
272 int nId = Integer.parseInt( request.getParameter( PARAMETER_ID_POST ) );
273 UrlItem url = new UrlItem( getActionUrl( ACTION_REMOVE_POST ) );
274 url.addParameter( PARAMETER_ID_POST, nId );
275
276 String strMessageUrl = AdminMessageService.getMessageUrl( request, MESSAGE_CONFIRM_REMOVE_POST, url.getUrl( ),
277 AdminMessage.TYPE_CONFIRMATION );
278
279 return redirect( request, strMessageUrl );
280 }
281
282
283
284
285
286
287
288 @Action( ACTION_REMOVE_POST )
289 public String doRemovePost( HttpServletRequest request )
290 {
291 int nId = Integer.parseInt( request.getParameter( PARAMETER_ID_POST ) );
292 PostHome.remove( nId );
293 LinkHome.remove( nId );
294 addInfo( INFO_POST_REMOVED, getLocale( ) );
295
296 return redirectView( request, VIEW_MANAGE_POSTS );
297 }
298 }