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.extend.modules.feedback.web;
35
36 import fr.paris.lutece.plugins.extend.modules.feedback.business.config.FeedbackExtenderConfig;
37 import fr.paris.lutece.plugins.extend.modules.feedback.service.ExtendFeedbackService;
38 import fr.paris.lutece.plugins.extend.modules.feedback.service.FeedbackCaptchaService;
39 import fr.paris.lutece.plugins.extend.modules.feedback.service.FeedbackPlugin;
40 import fr.paris.lutece.plugins.extend.modules.feedback.service.IExtendFeedbackService;
41 import fr.paris.lutece.plugins.extend.modules.feedback.service.IFeedbackCaptchaService;
42 import fr.paris.lutece.plugins.extend.modules.feedback.service.extender.FeedbackResourceExtender;
43 import fr.paris.lutece.plugins.extend.modules.feedback.util.constants.FeedbackConstants;
44 import fr.paris.lutece.plugins.extend.service.extender.config.IResourceExtenderConfigService;
45 import fr.paris.lutece.portal.service.message.SiteMessage;
46 import fr.paris.lutece.portal.service.message.SiteMessageException;
47 import fr.paris.lutece.portal.service.message.SiteMessageService;
48 import fr.paris.lutece.portal.service.plugin.Plugin;
49 import fr.paris.lutece.portal.service.security.UserNotSignedException;
50 import fr.paris.lutece.portal.service.spring.SpringContextService;
51 import fr.paris.lutece.portal.web.constants.Messages;
52 import fr.paris.lutece.portal.web.xpages.XPage;
53 import fr.paris.lutece.portal.web.xpages.XPageApplication;
54
55
56 import javax.servlet.http.HttpServletRequest;
57
58 import org.apache.commons.lang3.StringUtils;
59
60
61
62
63
64
65
66
67
68 public class FeedbackApp implements XPageApplication
69 {
70
71
72
73 private static final long serialVersionUID = 7290027035637324504L;
74
75 private IFeedbackCaptchaService _feedbackCaptchaService = SpringContextService.getBean( FeedbackCaptchaService.BEAN_SERVICE );
76 private IExtendFeedbackService _extendFeedbackService = SpringContextService.getBean( ExtendFeedbackService.BEAN_SERVICE );
77 private IResourceExtenderConfigService _configService = SpringContextService.getBean( FeedbackConstants.BEAN_CONFIG_SERVICE );
78
79
80
81
82 @Override
83 public XPage getPage( HttpServletRequest request, int nMode, Plugin plugin )
84 throws UserNotSignedException, SiteMessageException
85 {
86
87 _feedbackCaptchaService.validateCaptcha( request );
88
89 String strIdExtendableResource = request.getParameter( FeedbackConstants.PARAMETER_ID_EXTENDABLE_RESOURCE );
90 String strExtendableResourceType = request.getParameter( FeedbackConstants.PARAMETER_EXTENDABLE_RESOURCE_TYPE );
91
92 FeedbackExtenderConfig config = _configService.find( FeedbackResourceExtender.RESOURCE_EXTENDER, strIdExtendableResource, strExtendableResourceType );
93 String strBackUrl = getBackUrl( request );
94
95 if ( !_extendFeedbackService.isAuthorized( request, config ) )
96 {
97 throw new UserNotSignedException( );
98 }
99
100 if ( _extendFeedbackService.doSubmitFeedback( request ) )
101 {
102 SiteMessageService.setMessage( request, FeedbackConstants.MESSAGE_MESSAGE_SENT,
103 null, null, null, null, SiteMessage.TYPE_CONFIRMATION, null, strBackUrl );
104 }
105
106 SiteMessageService.setMessage( request, Messages.MANDATORY_FIELDS, SiteMessage.TYPE_STOP );
107
108 return null;
109 }
110
111
112
113
114
115
116 private String getBackUrl ( HttpServletRequest request )
117 {
118 String strIdExtendableResource = request.getParameter( FeedbackConstants.PARAMETER_ID_EXTENDABLE_RESOURCE );
119 String strBackUrl = ( String ) request.getSession( ).getAttribute( FeedbackPlugin.PLUGIN_NAME + FeedbackConstants.PARAMETER_SESSION_BACK_URL + strIdExtendableResource );
120
121 if( StringUtils.isEmpty( strBackUrl ) )
122 {
123 String strbackUrl = request.getHeader( FeedbackConstants.PARAMETER_REFERER );
124
125 request.getSession( ).setAttribute( FeedbackPlugin.PLUGIN_NAME + FeedbackConstants.PARAMETER_SESSION_BACK_URL + strIdExtendableResource , strbackUrl );
126
127 return strbackUrl;
128 }
129
130 return strBackUrl;
131 }
132 }