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.portlet;
35
36 import fr.paris.lutece.plugins.folderlisting.business.portlet.FolderListingPortlet;
37 import fr.paris.lutece.plugins.folderlisting.business.portlet.FolderListingPortletHome;
38 import fr.paris.lutece.plugins.folderlisting.service.Folder;
39 import fr.paris.lutece.plugins.folderlisting.service.FolderService;
40 import fr.paris.lutece.portal.business.portlet.PortletHome;
41 import fr.paris.lutece.portal.service.message.AdminMessage;
42 import fr.paris.lutece.portal.service.message.AdminMessageService;
43 import fr.paris.lutece.portal.service.template.AppTemplateService;
44 import fr.paris.lutece.portal.service.util.AppPathService;
45 import fr.paris.lutece.portal.service.workgroup.AdminWorkgroupService;
46 import fr.paris.lutece.portal.web.portlet.PortletJspBean;
47 import fr.paris.lutece.util.ReferenceList;
48 import fr.paris.lutece.util.html.HtmlTemplate;
49
50 import java.io.File;
51
52 import java.util.HashMap;
53 import java.util.List;
54
55 import javax.servlet.http.HttpServletRequest;
56
57
58
59
60
61 public class FolderListingPortletJspBean extends PortletJspBean
62 {
63
64 public static final String RIGHT_MANAGE_ADMIN_SITE = "CORE_ADMIN_SITE";
65
66
67 private static final String MESSAGE_FOLDER_INVALID = "folderlisting.message.folderInvalid";
68
69
70 private static final String PARAMETER_PAGE_ID = "page_id";
71 private static final String PARAMETER_PORTLET_ID = "portlet_id";
72 private static final String PARAMETER_PORTLET_TYPE_ID = "portlet_type_id";
73 private static final String PARAMETER_FOLDER = "folder";
74
75
76 private static final String MARK_FOLDER_LIST = "folder_list";
77 private static final String MARK_FOLDER_ID = "folder_id";
78
79
80 private static final String TEMPLATE_COMBO_FOLDER = "admin/plugins/folderlisting/portlet/combo_folder.html";
81 private static final String COMBO_FOLDER_LIST = "@combo_folders@";
82
83
84
85
86
87
88
89
90 public String getCreate( HttpServletRequest request )
91 {
92 String strIdPage = request.getParameter( PARAMETER_PAGE_ID );
93 System.out.println( "strIdPage " + strIdPage );
94
95 String strPortletIdType = request.getParameter( PARAMETER_PORTLET_TYPE_ID );
96 System.out.println( "strPortletIdType " + strPortletIdType );
97
98 HtmlTemplate template = getCreateTemplate( strIdPage, strPortletIdType );
99 List<Folder> listFolders = FolderService.getInstance( ).getFoldersCollection( );
100 listFolders = (List<Folder>) AdminWorkgroupService.getAuthorizedCollection( listFolders, getUser( ) );
101
102 ReferenceList rlFolders = new ReferenceList( );
103
104 for ( Folder folder : listFolders )
105 {
106 rlFolders.addItem( folder.getId( ), folder.getName( ) );
107 }
108
109 String strHtmlCombo = getFolderIndexCombo( rlFolders, "" );
110 template.substitute( COMBO_FOLDER_LIST, strHtmlCombo );
111
112 return template.getHtml( );
113 }
114
115
116
117
118
119
120
121
122 public String getModify( HttpServletRequest request )
123 {
124 String strPortletId = request.getParameter( PARAMETER_PORTLET_ID );
125 int nPortletId = Integer.parseInt( strPortletId );
126 FolderListingPortlet portlet = (FolderListingPortlet) PortletHome.findByPrimaryKey( nPortletId );
127 HtmlTemplate template = getModifyTemplate( portlet );
128 List<Folder> listFolders = FolderService.getInstance( ).getFoldersCollection( );
129 listFolders = (List<Folder>) AdminWorkgroupService.getAuthorizedCollection( listFolders, getUser( ) );
130
131 ReferenceList rlFolders = new ReferenceList( );
132
133 for ( Folder folder : listFolders )
134 {
135 rlFolders.addItem( folder.getId( ), folder.getName( ) );
136 }
137
138 String strHtmlCombo = getFolderIndexCombo( rlFolders, portlet.getRootFolderId( ) );
139 template.substitute( COMBO_FOLDER_LIST, strHtmlCombo );
140
141 return template.getHtml( );
142 }
143
144
145
146
147
148
149 public String getPropertiesPrefix( )
150 {
151 return "portlet.folderlisting";
152 }
153
154
155
156
157
158
159
160
161 public String doCreate( HttpServletRequest request )
162 {
163 FolderListingPortlet portlet = new FolderListingPortlet( );
164 String strIdPage = request.getParameter( PARAMETER_PAGE_ID );
165 String strFolderId = request.getParameter( PARAMETER_FOLDER );
166 int nIdPage = Integer.parseInt( strIdPage );
167
168
169 String strErrorUrl = setPortletCommonData( request, portlet );
170
171 if ( strErrorUrl != null )
172 {
173 return strErrorUrl;
174 }
175
176 portlet.setPageId( nIdPage );
177
178 if ( isValidFolder( strFolderId ) )
179 {
180 portlet.setRootFolderId( strFolderId );
181 FolderListingPortletHome.getInstance( ).create( portlet );
182 }
183 else
184 {
185 return AdminMessageService.getMessageUrl( request, MESSAGE_FOLDER_INVALID, AdminMessage.TYPE_STOP );
186 }
187
188
189 return getPageUrl( nIdPage );
190 }
191
192
193
194
195
196
197
198
199 public String doModify( HttpServletRequest request )
200 {
201
202 String strPortletId = request.getParameter( PARAMETER_PORTLET_ID );
203 int nPortletId = Integer.parseInt( strPortletId );
204 FolderListingPortlet portlet = (FolderListingPortlet) PortletHome.findByPrimaryKey( nPortletId );
205
206
207 String strErrorUrl = setPortletCommonData( request, portlet );
208
209 if ( strErrorUrl != null )
210 {
211 return strErrorUrl;
212 }
213
214
215 setPortletCommonData( request, portlet );
216
217 String strFolderId = request.getParameter( PARAMETER_FOLDER );
218
219 if ( isValidFolder( strFolderId ) )
220 {
221 portlet.setRootFolderId( strFolderId );
222 portlet.update( );
223 }
224 else
225 {
226 return AdminMessageService.getMessageUrl( request, MESSAGE_FOLDER_INVALID, AdminMessage.TYPE_STOP );
227 }
228
229 return getPageUrl( portlet.getPageId( ) );
230 }
231
232
233
234
235
236
237
238
239
240 String getFolderIndexCombo( ReferenceList listFolders, String strDefaultFolderId )
241 {
242 HashMap model = new HashMap( );
243 model.put( MARK_FOLDER_LIST, listFolders );
244 model.put( MARK_FOLDER_ID, strDefaultFolderId );
245
246 HtmlTemplate templateCombo = AppTemplateService.getTemplate( TEMPLATE_COMBO_FOLDER, getLocale( ), model );
247
248 return templateCombo.getHtml( );
249 }
250
251
252
253
254
255
256
257
258 private boolean isValidFolder( String strFolderId )
259 {
260 boolean bValue = false;
261
262 if ( ( strFolderId != null ) && !strFolderId.equals( "" ) )
263 {
264 Folder folder = FolderService.getInstance( ).getFolder( strFolderId );
265
266 if ( folder != null )
267 {
268 String strFolderPath = "/" + folder.getPath( );
269 String strAbsolutePath = AppPathService.getAbsolutePathFromRelativePath( strFolderPath );
270
271 if ( new File( strAbsolutePath ).exists( ) )
272 {
273 bValue = true;
274 }
275 }
276 }
277
278 return bValue;
279 }
280 }