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.directory.web.action;
35
36 import fr.paris.lutece.plugins.directory.business.Directory;
37 import fr.paris.lutece.plugins.directory.service.DirectoryResourceIdService;
38 import fr.paris.lutece.plugins.directory.utils.DirectoryUtils;
39 import fr.paris.lutece.portal.business.user.AdminUser;
40 import fr.paris.lutece.portal.service.admin.AccessDeniedException;
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.rbac.RBACService;
44 import fr.paris.lutece.portal.service.util.AppPathService;
45 import fr.paris.lutece.portal.web.pluginaction.AbstractPluginAction;
46 import fr.paris.lutece.portal.web.pluginaction.DefaultPluginActionResult;
47 import fr.paris.lutece.portal.web.pluginaction.IPluginActionResult;
48 import fr.paris.lutece.util.url.UrlItem;
49
50 import org.apache.commons.lang.StringUtils;
51
52 import java.util.Map;
53
54 import javax.servlet.http.HttpServletRequest;
55 import javax.servlet.http.HttpServletResponse;
56
57
58
59
60
61
62 public class MassDeleteRecordsDirectoryAction extends AbstractPluginAction<DirectoryAdminSearchFields> implements IDirectoryAction
63 {
64
65 private static final String ACTION_NAME = "Mass Remove Records";
66
67
68 private static final String TEMPLATE_BUTTON = "actions/mass_delete_records.html";
69
70
71
72 private static final String PARAMETER_BUTTON_MASS_DELETE_RECORDS = "mass_delete_records";
73
74
75 private static final String MARK_PERMISSION_DELETE_RECORD = "permission_delete_record";
76
77
78 private static final String JSP_DIRECTORY_MASS_REMOVE_RECORDS = "jsp/admin/plugins/directory/ConfirmRemoveDirectoryRecord.jsp";
79
80
81
82
83 public void fillModel( HttpServletRequest request, AdminUser adminUser, Map<String, Object> model )
84 {
85 String strIdDirectory = request.getParameter( DirectoryUtils.PARAMETER_ID_DIRECTORY );
86 model.put( MARK_PERMISSION_DELETE_RECORD,
87 RBACService.isAuthorized( Directory.RESOURCE_TYPE, strIdDirectory, DirectoryResourceIdService.PERMISSION_DELETE_RECORD, adminUser ) );
88 }
89
90
91
92
93 public String getButtonTemplate( )
94 {
95 return TEMPLATE_BUTTON;
96 }
97
98
99
100
101 public String getName( )
102 {
103 return ACTION_NAME;
104 }
105
106
107
108
109 public boolean isInvoked( HttpServletRequest request )
110 {
111 return request.getParameter( PARAMETER_BUTTON_MASS_DELETE_RECORDS ) != null;
112 }
113
114
115
116
117 public IPluginActionResult process( HttpServletRequest request, HttpServletResponse response, AdminUser adminUser, DirectoryAdminSearchFields sessionFields )
118 throws AccessDeniedException
119 {
120 IPluginActionResult result = new DefaultPluginActionResult( );
121
122 String strRedirect = StringUtils.EMPTY;
123
124 if ( ( sessionFields.getSelectedRecords( ) != null ) && !sessionFields.getSelectedRecords( ).isEmpty( ) )
125 {
126 String strIdDirectory = request.getParameter( DirectoryUtils.PARAMETER_ID_DIRECTORY );
127 UrlItem url = new UrlItem( AppPathService.getBaseUrl( request ) + JSP_DIRECTORY_MASS_REMOVE_RECORDS );
128 url.addParameter( DirectoryUtils.PARAMETER_ID_DIRECTORY, strIdDirectory );
129
130 for ( String strIdRecord : sessionFields.getSelectedRecords( ) )
131 {
132 if ( StringUtils.isNotBlank( strIdRecord ) && StringUtils.isNumeric( strIdRecord ) )
133 {
134 url.addParameter( DirectoryUtils.PARAMETER_ID_DIRECTORY_RECORD, strIdRecord );
135 }
136 }
137
138 strRedirect = url.getUrl( );
139 }
140 else
141 {
142 strRedirect = AdminMessageService.getMessageUrl( request, DirectoryUtils.MESSAGE_SELECT_RECORDS, AdminMessage.TYPE_INFO );
143 }
144
145 result.setRedirect( strRedirect );
146
147 return result;
148 }
149 }