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.directories.web;
35
36 import fr.paris.lutece.plugins.directories.business.DirectoryEntity;
37 import fr.paris.lutece.plugins.directories.business.DirectoryEntityHome;
38 import fr.paris.lutece.plugins.directories.service.DirectoriesService;
39 import fr.paris.lutece.plugins.directories.service.EntryService;
40 import fr.paris.lutece.plugins.directories.service.upload.DirectoriesAsynchronousUploadHandler;
41 import fr.paris.lutece.plugins.directories.util.DirectoriesConstants;
42 import fr.paris.lutece.plugins.genericattributes.business.Entry;
43 import fr.paris.lutece.portal.service.i18n.I18nService;
44 import fr.paris.lutece.portal.service.message.AdminMessage;
45 import fr.paris.lutece.portal.service.message.AdminMessageService;
46 import fr.paris.lutece.portal.service.template.AppTemplateService;
47 import fr.paris.lutece.portal.util.mvc.admin.annotations.Controller;
48 import fr.paris.lutece.portal.util.mvc.commons.annotations.Action;
49 import fr.paris.lutece.portal.util.mvc.commons.annotations.View;
50 import fr.paris.lutece.util.html.AbstractPaginator;
51 import fr.paris.lutece.util.html.HtmlTemplate;
52 import fr.paris.lutece.util.sort.AttributeComparator;
53 import fr.paris.lutece.portal.web.constants.Parameters;
54 import fr.paris.lutece.portal.web.util.LocalizedPaginator;
55 import fr.paris.lutece.util.url.UrlItem;
56
57 import java.util.Collections;
58 import java.util.List;
59 import java.util.Map;
60 import javax.servlet.http.HttpServletRequest;
61
62
63
64
65 @Controller( controllerJsp = "ManageDirectoryResponse.jsp", controllerPath = "jsp/admin/plugins/directories/", right = "DIRECTORIES_MANAGEMENT" )
66 public class DirectoryResponseJspBean extends AbstractDirectoriesManagerJspBean
67 {
68 private static final long serialVersionUID = -2119684946497061605L;
69
70 private static final String VIEW_CREATE_DIRECTORY_RESPONSE = "createDirectoryResponse";
71 private static final String VIEW_MODIFY_DIRECTORY_RESPONSE = "modifyDirectoryResponse";
72 private static final String VIEW_MANAGE_DIRECTORY_RESPONSE = "manageDirectoryResponse";
73
74 private static final String ACTION_CREATE_DIRECTORY_RESPONSE = "createDirectoryResponse";
75 private static final String ACTION_MODIFY_DIRECTORY_RESPONSE = "modifyDirectoryResponse";
76 private static final String ACTION_REMOVE_DIRECTORY_RESPONSE = "removeDirectoryResponse";
77 private static final String ACTION_CONFIRM_REMOVE_DIRECTORY_RESPONSE = "confirmRemoveDirectoryResponse";
78
79
80 private static final String TEMPLATE_CREATE_DIRECTORY_RESPONSE = "/admin/plugins/directories/create_directory_response.html";
81 private static final String TEMPLATE_MODIFY_DIRECTORY_RESPONSE = "/admin/plugins/directories/modify_directory_response.html";
82 private static final String TEMPLATE_MANAGE_DIRECTORY_RESPONSE = "/admin/plugins/directories/manage_directory_response.html";
83 private static final String TEMPLATE_HTML_CODE_FORM_ADMIN = "admin/plugins/directories/html_code_form.html";
84
85 private static final String PROPERTY_PAGE_TITLE_MANAGE_DIRECTORY_RESPONSE = "directories.entity.title";
86 private static final String PROPERTY_PAGE_TITLE_CREATE_DIRECTORY_RESPONSE = "directories.createResponse.title";
87 private static final String PROPERTY_PAGE_TITLE_MODIFY_DIRECTORY_RESPONSE = "directories.modifyResponse.title";
88
89 private static final String INFO_DIRECTORY_RESPONSE_REMOVED = "directories.info.entity.removed";
90 private static final String INFO_REFERENCE_CREATED = "directories.entity.created";
91 private static final String MESSAGE_CONFIRM_REMOVE_ENTITY = "directories.message.confirmRemoveEntity";
92
93
94 private static final String PARAMETER_ID_DIRECTORY = "id_directory";
95 private static final String PARAMETER_ID_ENTITY = "id_entity";
96 private static final String PARAMETER_ENTITY_TITLE = "entity_title";
97 private static final String PARAMETER_VIEW = "view";
98
99
100 private static final String MARK_LIST_RESPONSES = "list_responses";
101 private static final String MARK_PAGINATOR = "paginator";
102 private static final String MARK_NB_ITEMS_PER_PAGE = "nb_items_per_page";
103 private static final String MARK_SEARCH = "search";
104
105
106 private int _nItemsPerPage;
107 private String _strCurrentPageIndex;
108
109
110
111
112
113
114
115
116 @View( value = VIEW_MANAGE_DIRECTORY_RESPONSE, defaultView = true )
117 public String getManageDirectories( HttpServletRequest request )
118 {
119 String strIdDirectory = request.getParameter( PARAMETER_ID_DIRECTORY );
120 int nIdDirectory = Integer.parseInt( strIdDirectory );
121
122 String strURL = request.getRequestURL( ).toString( );
123 UrlItem url = new UrlItem( strURL );
124 url.addParameter( PARAMETER_ID_DIRECTORY, strIdDirectory );
125 url.addParameter( PARAMETER_VIEW, VIEW_MANAGE_DIRECTORY_RESPONSE );
126
127 List<DirectoryEntity> listEntity = DirectoryEntityHome.getDirectoryEntityListByIdDirectory( nIdDirectory );
128 DirectoryEntityHome.fillAdminUserName( listEntity );
129
130 Map<String, Object> model = getModel( );
131
132
133 String searchValue = request.getParameter( MARK_SEARCH );
134 if ( searchValue != null )
135 {
136 listEntity = DirectoryEntityHome.filter( searchValue, listEntity );
137 url.addParameter( MARK_SEARCH, searchValue );
138 }
139
140
141 String strSortedAttributeName = request.getParameter( Parameters.SORTED_ATTRIBUTE_NAME );
142 String strAscSort = null;
143
144 if ( strSortedAttributeName != null )
145 {
146 strAscSort = request.getParameter( Parameters.SORTED_ASC );
147
148 boolean bIsAscSort = Boolean.parseBoolean( strAscSort );
149
150 Collections.sort( listEntity, new AttributeComparator( strSortedAttributeName, bIsAscSort ) );
151 }
152
153 _strCurrentPageIndex = AbstractPaginator.getPageIndex( request, AbstractPaginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
154 _nItemsPerPage = AbstractPaginator.getItemsPerPage( request, AbstractPaginator.PARAMETER_ITEMS_PER_PAGE, _nItemsPerPage, 10 );
155
156 if ( strSortedAttributeName != null )
157 {
158 url.addParameter( Parameters.SORTED_ATTRIBUTE_NAME, strSortedAttributeName );
159 }
160
161 if ( strAscSort != null )
162 {
163 url.addParameter( Parameters.SORTED_ASC, strAscSort );
164 }
165
166
167 LocalizedPaginator<DirectoryEntity> paginator = new LocalizedPaginator<>( listEntity, _nItemsPerPage, url.getUrl( ),
168 AbstractPaginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex, getLocale( ) );
169
170 model.put( MARK_NB_ITEMS_PER_PAGE, "" + _nItemsPerPage );
171 model.put( MARK_PAGINATOR, paginator );
172 model.put( MARK_SEARCH, searchValue );
173 model.put( DirectoriesConstants.MARK_LIST_DIRECTORY_ENTITY, paginator.getPageItems( ) );
174 model.put( PARAMETER_ID_DIRECTORY, nIdDirectory );
175 return getPage( PROPERTY_PAGE_TITLE_MANAGE_DIRECTORY_RESPONSE, TEMPLATE_MANAGE_DIRECTORY_RESPONSE, model );
176 }
177
178
179
180
181
182
183
184
185 @View( VIEW_CREATE_DIRECTORY_RESPONSE )
186 public String getCreateDirectoryResponse( HttpServletRequest request )
187 {
188 DirectoriesAsynchronousUploadHandler.getHandler( ).removeSessionFiles( request.getSession( ) );
189 String strIdDirectory = request.getParameter( PARAMETER_ID_DIRECTORY );
190 int nIdDirectory = Integer.parseInt( strIdDirectory );
191 Map<String, Object> model = getModel( );
192 List<Entry> listEntryFirstLevel = EntryService.getDirectoryEntryList( nIdDirectory, true );
193 StringBuilder strBuilder = new StringBuilder( );
194 for ( Entry entry : listEntryFirstLevel )
195 {
196 EntryService.getHtmlEntry( model, entry.getIdEntry( ), strBuilder, getLocale( ), false );
197 }
198 model.put( PARAMETER_ID_DIRECTORY, strIdDirectory );
199 model.put( DirectoriesConstants.MARK_STR_ENTRY, strBuilder.toString( ) );
200 HtmlTemplate templateForm = AppTemplateService.getTemplate( TEMPLATE_HTML_CODE_FORM_ADMIN, getLocale( ), model );
201 model.put( DirectoriesConstants.MARK_FORM_HTML, templateForm.getHtml( ) );
202 return getPage( PROPERTY_PAGE_TITLE_CREATE_DIRECTORY_RESPONSE, TEMPLATE_CREATE_DIRECTORY_RESPONSE, model );
203 }
204
205
206
207
208
209
210
211
212 @View( VIEW_MODIFY_DIRECTORY_RESPONSE )
213 public String getModifyDirectoryResponse( HttpServletRequest request )
214 {
215 String strIdDirectory = request.getParameter( PARAMETER_ID_DIRECTORY );
216 int nIdDirectory = Integer.parseInt( strIdDirectory );
217 String strIdEntity = request.getParameter( PARAMETER_ID_ENTITY );
218 int nIdEntity = Integer.parseInt( strIdEntity );
219 DirectoryEntity entity = DirectoryEntityHome.findByPrimaryKey( nIdEntity );
220 Map<String, Object> model = getModel( );
221 StringBuilder strBuffer = new StringBuilder( );
222 List<Entry> listEntryFirstLevel = EntryService.getDirectoryEntryList( nIdDirectory, true );
223 model.put( MARK_LIST_RESPONSES, DirectoriesService.findAndBuildListResponse( request, nIdEntity ) );
224 for ( Entry entry : listEntryFirstLevel )
225 {
226 EntryService.getHtmlEntry( model, entry.getIdEntry( ), strBuffer, getLocale( ), false );
227 }
228 model.put( PARAMETER_ID_DIRECTORY, strIdDirectory );
229 model.put( PARAMETER_ID_ENTITY, strIdEntity );
230 model.put( PARAMETER_ENTITY_TITLE, entity.getTitle( ) );
231 model.put( DirectoriesConstants.MARK_STR_ENTRY, strBuffer.toString( ) );
232 HtmlTemplate templateForm = AppTemplateService.getTemplate( TEMPLATE_HTML_CODE_FORM_ADMIN, getLocale( ), model );
233 model.put( DirectoriesConstants.MARK_FORM_HTML, templateForm.getHtml( ) );
234 return getPage( PROPERTY_PAGE_TITLE_MODIFY_DIRECTORY_RESPONSE, TEMPLATE_MODIFY_DIRECTORY_RESPONSE, model );
235 }
236
237
238
239
240
241
242
243
244 @Action( ACTION_CREATE_DIRECTORY_RESPONSE )
245 public String doCreateDirectoryResponse( HttpServletRequest request )
246 {
247 int nIdDirectory = Integer.parseInt( request.getParameter( PARAMETER_ID_DIRECTORY ) );
248 String strEntityTitle = request.getParameter( PARAMETER_ENTITY_TITLE );
249 DirectoriesService.createEntity( request, nIdDirectory, strEntityTitle );
250 Map<String, Object> model = getModel( );
251 model.put( PARAMETER_ID_DIRECTORY, nIdDirectory );
252 addInfo( I18nService.getLocalizedString( INFO_REFERENCE_CREATED, getLocale( ) ) );
253 return redirect( request, VIEW_MANAGE_DIRECTORY_RESPONSE, PARAMETER_ID_DIRECTORY, nIdDirectory );
254 }
255
256
257
258
259
260
261
262
263 @Action( ACTION_MODIFY_DIRECTORY_RESPONSE )
264 public String doModifyDirectoryResponse( HttpServletRequest request )
265 {
266 int nIdDirectory = Integer.parseInt( request.getParameter( PARAMETER_ID_DIRECTORY ) );
267 String strIdEntity = request.getParameter( PARAMETER_ID_ENTITY );
268 String strEntityTitle = request.getParameter( PARAMETER_ENTITY_TITLE );
269 int nIdEntity = Integer.parseInt( strIdEntity );
270 DirectoriesService.modifyEntity( request, nIdDirectory, nIdEntity, strEntityTitle );
271 Map<String, Object> model = getModel( );
272 model.put( PARAMETER_ID_DIRECTORY, nIdDirectory );
273 addInfo( I18nService.getLocalizedString( INFO_REFERENCE_CREATED, getLocale( ) ) );
274 return redirect( request, VIEW_MANAGE_DIRECTORY_RESPONSE, PARAMETER_ID_DIRECTORY, nIdDirectory );
275 }
276
277
278
279
280
281
282
283
284 @Action( ACTION_CONFIRM_REMOVE_DIRECTORY_RESPONSE )
285 public String getConfirmRemoveDirectory( HttpServletRequest request )
286 {
287 int nId = Integer.parseInt( request.getParameter( PARAMETER_ID_ENTITY ) );
288 int nIdDirectory = Integer.parseInt( request.getParameter( PARAMETER_ID_DIRECTORY ) );
289
290 UrlItem url = new UrlItem( getActionUrl( ACTION_REMOVE_DIRECTORY_RESPONSE ) );
291 url.addParameter( PARAMETER_ID_ENTITY, nId );
292 url.addParameter( PARAMETER_ID_DIRECTORY, nIdDirectory );
293
294 String strMessageUrl = AdminMessageService.getMessageUrl( request, MESSAGE_CONFIRM_REMOVE_ENTITY, url.getUrl( ), AdminMessage.TYPE_CONFIRMATION );
295
296 return redirect( request, strMessageUrl );
297 }
298
299
300
301
302
303
304
305
306 @Action( ACTION_REMOVE_DIRECTORY_RESPONSE )
307 public String doRemoveDirectory( HttpServletRequest request )
308 {
309 int nId = Integer.parseInt( request.getParameter( PARAMETER_ID_ENTITY ) );
310 int nIdDirectory = Integer.parseInt( request.getParameter( PARAMETER_ID_DIRECTORY ) );
311
312 DirectoryEntityHome.remove( nId );
313 addInfo( INFO_DIRECTORY_RESPONSE_REMOVED, getLocale( ) );
314
315 return redirect( request, VIEW_MANAGE_DIRECTORY_RESPONSE, PARAMETER_ID_DIRECTORY, nIdDirectory );
316 }
317
318 }