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 public class MassChangeStatesRecordDirectoryAction extends AbstractPluginAction<DirectoryAdminSearchFields> implements IDirectoryAction
62 {
63
64 private static final String ACTION_NAME = "Mass Change States record";
65
66
67 private static final String TEMPLATE_BUTTON = "actions/mass_change_states_record.html";
68
69
70
71 private static final String PARAMETER_BUTTON_MASS_CHANGE_RECORD_STATUS = "mass_change_states_record";
72
73
74 private static final String MARK_PERMISSION_CHANGE_STATE_RECORD = "permission_change_state_record";
75
76
77 private static final String JSP_DIRECTORY_MASS_CHANGE_STATES_RECORD = "jsp/admin/plugins/directory/ConfirmChangeStatesRecord.jsp";
78
79
80
81
82 public void fillModel( HttpServletRequest request, AdminUser adminUser, Map<String, Object> model )
83 {
84 String strIdDirectory = request.getParameter( DirectoryUtils.PARAMETER_ID_DIRECTORY );
85 model.put( MARK_PERMISSION_CHANGE_STATE_RECORD,
86 RBACService.isAuthorized( Directory.RESOURCE_TYPE, strIdDirectory, DirectoryResourceIdService.PERMISSION_CHANGE_STATE_RECORD, adminUser ) );
87 }
88
89
90
91
92 public String getButtonTemplate( )
93 {
94 return TEMPLATE_BUTTON;
95 }
96
97
98
99
100 public String getName( )
101 {
102 return ACTION_NAME;
103 }
104
105
106
107
108 public boolean isInvoked( HttpServletRequest request )
109 {
110 return request.getParameter( PARAMETER_BUTTON_MASS_CHANGE_RECORD_STATUS ) != null;
111 }
112
113
114
115
116 public IPluginActionResult process( HttpServletRequest request, HttpServletResponse response, AdminUser adminUser, DirectoryAdminSearchFields sessionFields )
117 throws AccessDeniedException
118 {
119 IPluginActionResult result = new DefaultPluginActionResult( );
120
121 String strRedirect = StringUtils.EMPTY;
122
123 if ( ( sessionFields.getSelectedRecords( ) != null ) && !sessionFields.getSelectedRecords( ).isEmpty( ) )
124 {
125 String strIdDirectory = request.getParameter( DirectoryUtils.PARAMETER_ID_DIRECTORY );
126 UrlItem url = new UrlItem( AppPathService.getBaseUrl( request ) + JSP_DIRECTORY_MASS_CHANGE_STATES_RECORD );
127 url.addParameter( DirectoryUtils.PARAMETER_ID_DIRECTORY, strIdDirectory );
128
129 for ( String strIdRecord : sessionFields.getSelectedRecords( ) )
130 {
131 if ( StringUtils.isNotBlank( strIdRecord ) && StringUtils.isNumeric( strIdRecord ) )
132 {
133 url.addParameter( DirectoryUtils.PARAMETER_ID_DIRECTORY_RECORD, strIdRecord );
134 }
135 }
136
137 strRedirect = url.getUrl( );
138 }
139 else
140 {
141 strRedirect = AdminMessageService.getMessageUrl( request, DirectoryUtils.MESSAGE_SELECT_RECORDS, AdminMessage.TYPE_INFO );
142 }
143
144 result.setRedirect( strRedirect );
145
146 return result;
147 }
148 }