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.genericattributes.service.entrytype;
35
36 import java.util.List;
37 import java.util.Locale;
38
39 import javax.servlet.http.HttpServletRequest;
40
41 import org.apache.commons.lang3.StringUtils;
42
43 import fr.paris.lutece.plugins.genericattributes.business.Entry;
44 import fr.paris.lutece.plugins.genericattributes.business.Field;
45 import fr.paris.lutece.plugins.genericattributes.business.GenericAttributeError;
46 import fr.paris.lutece.plugins.genericattributes.business.MandatoryError;
47 import fr.paris.lutece.plugins.genericattributes.business.Response;
48 import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
49 import fr.paris.lutece.portal.service.editor.EditorBbcodeService;
50 import fr.paris.lutece.portal.service.i18n.I18nService;
51 import fr.paris.lutece.portal.service.message.AdminMessage;
52 import fr.paris.lutece.portal.service.message.AdminMessageService;
53 import fr.paris.lutece.util.string.StringUtil;
54
55
56
57
58 public abstract class AbstractEntryTypeTextArea extends EntryTypeService
59 {
60 private static final String PARAMETER_USE_RICH_TEXT = "useRichText";
61
62
63
64
65 @Override
66 public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
67 {
68 initCommonRequestData( entry, request );
69 String strTitle = request.getParameter( PARAMETER_TITLE );
70 String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
71 String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
72 String strComment = request.getParameter( PARAMETER_COMMENT );
73 String strValue = request.getParameter( PARAMETER_VALUE );
74 String strMandatory = request.getParameter( PARAMETER_MANDATORY );
75 String strWidth = request.getParameter( PARAMETER_WIDTH );
76 String strHeight = request.getParameter( PARAMETER_HEIGHT );
77 String strMaxSizeEnter = request.getParameter( PARAMETER_MAX_SIZE_ENTER );
78 String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
79 String strUseRichText = request.getParameter( PARAMETER_USE_RICH_TEXT );
80 String strOnlyDisplayInBack = request.getParameter( PARAMETER_ONLY_DISPLAY_IN_BACK );
81 String strIndexed = request.getParameter( PARAMETER_INDEXED );
82 String strPlaceholder = request.getParameter( PARAMETER_PLACEHOLDER );
83
84 int nWidth = -1;
85 int nHeight = -1;
86 int nMaxSizeEnter = -1;
87
88 String strFieldError = StringUtils.EMPTY;
89
90 if ( StringUtils.isBlank( strTitle ) )
91 {
92 strFieldError = ERROR_FIELD_TITLE;
93 }
94
95 else
96 if ( StringUtils.isBlank( strWidth ) )
97 {
98 strFieldError = ERROR_FIELD_WIDTH;
99 }
100 else
101 if ( StringUtils.isBlank( strHeight ) )
102 {
103 strFieldError = ERROR_FIELD_HEIGHT;
104 }
105
106 if ( StringUtils.isNotBlank( strFieldError ) )
107 {
108 Object [ ] tabRequiredFields = {
109 I18nService.getLocalizedString( strFieldError, locale )
110 };
111
112 return AdminMessageService.getMessageUrl( request, MESSAGE_MANDATORY_FIELD, tabRequiredFields, AdminMessage.TYPE_STOP );
113 }
114
115 try
116 {
117 nHeight = Integer.parseInt( strHeight );
118 }
119 catch( NumberFormatException ne )
120 {
121 strFieldError = ERROR_FIELD_HEIGHT;
122 }
123
124 try
125 {
126 nWidth = Integer.parseInt( strWidth );
127 }
128 catch( NumberFormatException ne )
129 {
130 strFieldError = ERROR_FIELD_WIDTH;
131 }
132
133 try
134 {
135 if ( StringUtils.isNotBlank( strMaxSizeEnter ) )
136 {
137 nMaxSizeEnter = Integer.parseInt( strMaxSizeEnter );
138 }else {
139
140 nMaxSizeEnter = 2000;
141 }
142 }
143 catch( NumberFormatException ne )
144 {
145 strFieldError = FIELD_MAX_SIZE_ENTER;
146 }
147
148 if ( StringUtils.isNotBlank( strFieldError ) )
149 {
150 Object [ ] tabRequiredFields = {
151 I18nService.getLocalizedString( strFieldError, locale )
152 };
153
154 return AdminMessageService.getMessageUrl( request, MESSAGE_NUMERIC_FIELD, tabRequiredFields, AdminMessage.TYPE_STOP );
155 }
156
157 entry.setTitle( strTitle );
158 entry.setCode( strCode );
159 entry.setHelpMessage( strHelpMessage );
160 entry.setComment( strComment );
161 entry.setCSSClass( strCSSClass );
162
163 GenericAttributesUtils.createOrUpdateField( entry, FIELD_TEXT_CONF, null, strValue );
164 GenericAttributesUtils.createOrUpdateField( entry, FIELD_MAX_SIZE, null, String.valueOf( nMaxSizeEnter ) );
165 GenericAttributesUtils.createOrUpdateField( entry, FIELD_WIDTH, null, String.valueOf( nWidth ) );
166 GenericAttributesUtils.createOrUpdateField( entry, FIELD_HEIGHT, null, String.valueOf( nHeight ) );
167 GenericAttributesUtils.createOrUpdateField( entry, FIELD_RICHTEXT, null, String.valueOf( strUseRichText != null ) );
168 GenericAttributesUtils.createOrUpdateField( entry, FIELD_PLACEHOLDER, null, strPlaceholder != null ? strPlaceholder : StringUtils.EMPTY );
169
170 entry.setMandatory( strMandatory != null );
171 entry.setOnlyDisplayInBack( strOnlyDisplayInBack != null );
172 entry.setIndexed( strIndexed != null );
173 return null;
174 }
175
176
177
178
179 @Override
180 public GenericAttributeError getResponseData( Entry entry, HttpServletRequest request, List<Response> listResponse, Locale locale )
181 {
182 String strValueEntry = request.getParameter( PREFIX_ATTRIBUTE + entry.getIdEntry( ) );
183 Response/genericattributes/business/Response.html#Response">Response response = new Response( );
184 response.setEntry( entry );
185
186 if ( strValueEntry == null )
187 {
188 return null;
189 }
190
191 int nMaxSize = Integer.parseInt( entry.getFieldByCode( FIELD_MAX_SIZE ).getValue( ) );
192
193 Field fieldRichText = entry.getFieldByCode( IEntryTypeService.FIELD_RICHTEXT );
194 boolean useRichtext = fieldRichText != null && Boolean.valueOf( fieldRichText.getValue( ) );
195
196 if ( useRichtext )
197 {
198 response.setResponseValue( EditorBbcodeService.getInstance( ).parse( strValueEntry ) );
199 }
200 else
201 {
202 response.setResponseValue( strValueEntry );
203 }
204
205 if ( StringUtils.isNotBlank( response.getResponseValue( ) ) )
206 {
207
208 if ( useRichtext )
209 {
210 response.setToStringValueResponse( strValueEntry );
211 }
212 else
213 {
214 response.setToStringValueResponse( getResponseValueForRecap( entry, request, response, locale ) );
215 }
216 }
217 else
218 {
219 response.setToStringValueResponse( StringUtils.EMPTY );
220 }
221
222 response.setIterationNumber( getResponseIterationValue( request ) );
223
224 listResponse.add( response );
225
226
227 if ( ( nMaxSize != -1 ) && ( strValueEntry.length( ) > nMaxSize ) )
228 {
229 GenericAttributeErrortributes/business/GenericAttributeError.html#GenericAttributeError">GenericAttributeError error = new GenericAttributeError( );
230 error.setMandatoryError( false );
231 error.setTitleQuestion( entry.getTitle( ) );
232
233 Object [ ] messageArgs = new Object [ ] {
234 nMaxSize,
235 };
236 error.setErrorMessage( I18nService.getLocalizedString( MESSAGE_MAXLENGTH, messageArgs, request.getLocale( ) ) );
237
238 return error;
239 }
240
241 if ( entry.isMandatory( ) && StringUtils.isBlank( strValueEntry ) )
242 {
243 return new MandatoryError( entry, locale );
244 }
245
246 return null;
247 }
248
249
250
251
252 @Override
253 public String getResponseValueForExport( Entry entry, HttpServletRequest request, Response response, Locale locale )
254 {
255 return response.getResponseValue( );
256 }
257
258
259
260
261 @Override
262 public String getResponseValueForRecap( Entry entry, HttpServletRequest request, Response response, Locale locale )
263 {
264 return response.getResponseValue( );
265 }
266 }