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.folderlisting.web;
35
36 import fr.paris.lutece.plugins.folderlisting.business.FolderListingDatabase;
37 import fr.paris.lutece.plugins.folderlisting.business.FolderListingDatabaseHome;
38 import fr.paris.lutece.plugins.folderlisting.business.portlet.FolderListingPortletHome;
39 import fr.paris.lutece.portal.service.message.AdminMessage;
40 import fr.paris.lutece.portal.service.message.AdminMessageService;
41 import fr.paris.lutece.portal.service.template.AppTemplateService;
42 import fr.paris.lutece.portal.service.util.AppPathService;
43 import fr.paris.lutece.portal.service.util.AppPropertiesService;
44 import fr.paris.lutece.portal.service.workgroup.AdminWorkgroupService;
45 import fr.paris.lutece.portal.web.admin.PluginAdminPageJspBean;
46 import fr.paris.lutece.portal.web.constants.Messages;
47 import fr.paris.lutece.util.ReferenceList;
48 import fr.paris.lutece.util.html.HtmlTemplate;
49 import fr.paris.lutece.util.html.Paginator;
50
51 import java.io.File;
52
53 import java.util.HashMap;
54 import java.util.List;
55
56 import javax.servlet.http.HttpServletRequest;
57
58
59
60
61
62 public class FolderListingDatabaseJspBean extends PluginAdminPageJspBean
63 {
64
65
66 public static final String RIGHT_FOLDERLISTING_MANAGEMENT = "FOLDERLISTING_MANAGEMENT";
67
68
69 private static final String MARK_FOLDER_LIST = "folder_list";
70 private static final String MARK_FOLDER = "folder";
71 private static final String MARK_PAGINATOR = "paginator";
72 private static final String MARK_NB_ITEMS_PER_PAGE = "nb_items_per_page";
73 private static final String MARK_WORKGROUP_LIST = "workgroup_list";
74
75
76 private static final String PARAMETER_FOLDER_NAME = "folder_name";
77 private static final String PARAMETER_FOLDER_PATH = "folder_path";
78 private static final String PARAMETER_FOLDER_WORKGROUP = "folder_workgroup";
79 private static final String PARAMETER_ID_FOLDER = "id_folder";
80 private static final String PARAMETER_PAGE_INDEX = "page_index";
81
82
83 private static final String PROPERTY_PAGE_TITLE_FOLDERS = "folderlisting.folders.pageTitle";
84 private static final String PROPERTY_PAGE_TITLE_CREATE = "folderlisting.create_folder.pageTitle";
85 private static final String PROPERTY_PAGE_TITLE_MODIFY = "folderlisting.modify_folder.pageTitle";
86 private static final String PROPERTY_FOLDER_PER_PAGE = "folderlisting.folderPerPage";
87
88
89 private static final String MESSAGE_FOLDER_INVALID = "folderlisting.message.folderInvalid";
90 private static final String MESSAGE_CONFIRM_DELETE_FOLDER = "folderlisting.message.confirmDeleteFolder";
91 private static final String MESSAGE_FOLDER_LINKED_PORTLET = "folderlisting.message.folderLinkedPortlet";
92
93
94 private static final String TEMPLATE_FOLDERS = "/admin/plugins/folderlisting/folders.html";
95 private static final String TEMPLATE_CREATE_FOLDER = "/admin/plugins/folderlisting/create_folder.html";
96 private static final String TEMPLATE_MODIFY_FOLDER = "/admin/plugins/folderlisting/modify_folder.html";
97
98
99 private static final String JSP_DELETE_FOLDER = "jsp/admin/plugins/folderlisting/DoDeleteFolder.jsp";
100 private String _strCurrentPageIndex;
101 private int _nItemsPerPage;
102 private int _nDefaultItemsPerPage;
103
104 public FolderListingDatabaseJspBean( )
105 {
106 _nDefaultItemsPerPage = AppPropertiesService.getPropertyInt( PROPERTY_FOLDER_PER_PAGE, 10 );
107 }
108
109
110
111
112
113
114
115
116 public String getCreateFolder( HttpServletRequest request )
117 {
118 HashMap<String, ReferenceList> model = new HashMap<String, ReferenceList>( );
119 setPageTitleProperty( PROPERTY_PAGE_TITLE_CREATE );
120
121 model.put( MARK_WORKGROUP_LIST, AdminWorkgroupService.getUserWorkgroups( getUser( ), getLocale( ) ) );
122
123 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_CREATE_FOLDER, getLocale( ), model );
124
125 return getAdminPage( template.getHtml( ) );
126 }
127
128
129
130
131
132
133
134
135 public String getManageFolders( HttpServletRequest request )
136 {
137 setPageTitleProperty( PROPERTY_PAGE_TITLE_FOLDERS );
138
139
140 _nItemsPerPage = Paginator.getItemsPerPage( request, Paginator.PARAMETER_ITEMS_PER_PAGE, _nItemsPerPage,
141 _nDefaultItemsPerPage );
142
143 _strCurrentPageIndex = Paginator.getPageIndex( request, Paginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
144
145 List<FolderListingDatabase> listFolderList = FolderListingDatabaseHome.findFolderListingDatabasesList( getPlugin( ) );
146 listFolderList = (List<FolderListingDatabase>) AdminWorkgroupService.getAuthorizedCollection( listFolderList,
147 getUser( ) );
148
149 Paginator paginator = new Paginator( listFolderList, _nItemsPerPage, getHomeUrl( request ),
150 PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
151 HashMap model = new HashMap( );
152 model.put( MARK_PAGINATOR, paginator );
153 model.put( MARK_NB_ITEMS_PER_PAGE, "" + _nItemsPerPage );
154 model.put( MARK_FOLDER_LIST, paginator.getPageItems( ) );
155
156 HtmlTemplate templateList = AppTemplateService.getTemplate( TEMPLATE_FOLDERS, getLocale( ), model );
157
158 return getAdminPage( templateList.getHtml( ) );
159 }
160
161
162
163
164
165
166
167
168 public String getModifyFolder( HttpServletRequest request )
169 {
170 HashMap model = new HashMap( );
171 setPageTitleProperty( PROPERTY_PAGE_TITLE_MODIFY );
172
173 int nId = Integer.parseInt( request.getParameter( PARAMETER_ID_FOLDER ) );
174 FolderListingDatabase folder = FolderListingDatabaseHome.findByPrimaryKey( nId, getPlugin( ) );
175
176 model.put( MARK_FOLDER, folder );
177 model.put( MARK_WORKGROUP_LIST, AdminWorkgroupService.getUserWorkgroups( getUser( ), getLocale( ) ) );
178
179 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MODIFY_FOLDER, getLocale( ), model );
180
181 return getAdminPage( template.getHtml( ) );
182 }
183
184
185
186
187
188
189
190
191 public String doConfirmDelete( HttpServletRequest request )
192 {
193 String strIdFolder = request.getParameter( PARAMETER_ID_FOLDER );
194 int nIdFolder = Integer.parseInt( strIdFolder );
195 String strDeleteUrl = JSP_DELETE_FOLDER + "?" + PARAMETER_ID_FOLDER + "=" + strIdFolder;
196 String strUrl = AdminMessageService.getMessageUrl( request, MESSAGE_FOLDER_LINKED_PORTLET,
197 AdminMessage.TYPE_STOP );
198
199
200 if ( FolderListingPortletHome.checkNoFolderInPortlet( nIdFolder ) )
201 {
202 FolderListingDatabase folder = FolderListingDatabaseHome.findByPrimaryKey( nIdFolder, getPlugin( ) );
203 Object[] messageArgs = { folder.getFolderName( ) };
204 strUrl = AdminMessageService.getMessageUrl( request, MESSAGE_CONFIRM_DELETE_FOLDER, messageArgs,
205 strDeleteUrl, AdminMessage.TYPE_CONFIRMATION );
206 }
207
208 return strUrl;
209 }
210
211
212
213
214
215
216
217
218 public String doCreateFolder( HttpServletRequest request )
219 {
220 FolderListingDatabase folder = new FolderListingDatabase( );
221 String strFolderPath = request.getParameter( PARAMETER_FOLDER_PATH );
222 strFolderPath = cleanPath( strFolderPath );
223 folder.setFolderName( request.getParameter( PARAMETER_FOLDER_NAME ) );
224 folder.setFolderPath( strFolderPath );
225 folder.setWorkgroup( request.getParameter( PARAMETER_FOLDER_WORKGROUP ) );
226
227
228 if ( request.getParameter( PARAMETER_FOLDER_NAME ).equals( "" ) ||
229 request.getParameter( PARAMETER_FOLDER_PATH ).equals( "" ) )
230 {
231 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
232 }
233
234 String strUrl = AdminMessageService.getMessageUrl( request, MESSAGE_FOLDER_INVALID, AdminMessage.TYPE_STOP );
235
236 if ( isValidFolder( folder.getFolderPath( ) ) )
237 {
238 FolderListingDatabaseHome.create( folder, getPlugin( ) );
239 strUrl = getHomeUrl( request );
240 }
241
242 return strUrl;
243 }
244
245
246
247
248
249
250
251
252 public String doDeleteFolder( HttpServletRequest request )
253 {
254 int nId = Integer.parseInt( request.getParameter( PARAMETER_ID_FOLDER ) );
255 FolderListingDatabaseHome.remove( nId, getPlugin( ) );
256
257 return getHomeUrl( request );
258 }
259
260
261
262
263
264
265
266
267 public String doModifyFolder( HttpServletRequest request )
268 {
269 int nIdFolder = Integer.parseInt( request.getParameter( PARAMETER_ID_FOLDER ) );
270 String strFolderPath = request.getParameter( PARAMETER_FOLDER_PATH );
271 String strFolderName = request.getParameter( PARAMETER_FOLDER_NAME );
272 strFolderPath = cleanPath( strFolderPath );
273
274
275 if ( request.getParameter( PARAMETER_FOLDER_PATH ).equals( "" ) ||
276 request.getParameter( PARAMETER_FOLDER_NAME ).equals( "" ) )
277 {
278 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
279 }
280
281 FolderListingDatabase folder = FolderListingDatabaseHome.findByPrimaryKey( nIdFolder, getPlugin( ) );
282 folder.setFolderName( strFolderName );
283 folder.setFolderPath( strFolderPath );
284 folder.setWorkgroup( request.getParameter( PARAMETER_FOLDER_WORKGROUP ) );
285
286 String strUrl = AdminMessageService.getMessageUrl( request, MESSAGE_FOLDER_INVALID, AdminMessage.TYPE_STOP );
287
288 if ( isValidFolder( folder.getFolderPath( ) ) )
289 {
290 FolderListingDatabaseHome.update( folder, getPlugin( ) );
291 strUrl = getHomeUrl( request );
292 }
293
294 return strUrl;
295 }
296
297
298
299
300
301
302 private boolean isValidFolder( String strFolderPath )
303 {
304 strFolderPath = "/" + strFolderPath;
305
306 String strAbsolutePath = AppPathService.getAbsolutePathFromRelativePath( strFolderPath );
307 boolean bValue = false;
308
309 if ( new File( strAbsolutePath ).exists( ) )
310 {
311 bValue = true;
312 }
313
314 return bValue;
315 }
316
317
318
319
320
321
322 private String cleanPath( String strPath )
323 {
324 if ( !strPath.startsWith( "/" ) )
325 {
326 strPath = "/" + strPath;
327 }
328
329 return strPath;
330 }
331 }