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.blog.web.insertservice;
35
36 import java.util.ArrayList;
37 import java.util.Collection;
38 import java.util.HashMap;
39 import java.util.List;
40 import java.util.Locale;
41 import java.util.Map;
42
43 import javax.servlet.http.HttpServletRequest;
44
45 import org.apache.commons.lang3.StringUtils;
46
47 import fr.paris.lutece.plugins.blog.business.Blog;
48 import fr.paris.lutece.plugins.blog.business.BlogSearchFilter;
49 import fr.paris.lutece.plugins.blog.business.TagHome;
50 import fr.paris.lutece.plugins.blog.business.insertservice.BlogLinkPOJO;
51 import fr.paris.lutece.plugins.blog.service.BlogService;
52 import fr.paris.lutece.plugins.blog.service.docsearch.BlogSearchService;
53 import fr.paris.lutece.plugins.blog.utils.BlogUtils;
54 import fr.paris.lutece.portal.service.admin.AdminUserService;
55 import fr.paris.lutece.portal.service.template.AppTemplateService;
56 import fr.paris.lutece.portal.web.insert.InsertServiceJspBean;
57 import fr.paris.lutece.portal.web.insert.InsertServiceSelectionBean;
58 import fr.paris.lutece.util.html.HtmlTemplate;
59
60
61
62
63
64 public abstract class AbstractBlogInsertServiceJspBean extends InsertServiceJspBean implements InsertServiceSelectionBean
65 {
66
67
68
69 private static final long serialVersionUID = 5418289952051358700L;
70
71
72 private static final String TEMPLATE_SELECT_BLOG_LINK = "admin/plugins/blog/insertservice/select_blog_link.html";
73
74
75 protected static final String PARAMETER_INPUT = "input";
76 protected static final String PARAMETER_SELECTED_BLOG_ID = "selected_blog_id";
77 protected static final String PARAMETER_LINK_TEXT = "custom_link_text";
78 protected static final String PARAMETER_LINK_TITLE = "custom_link_title";
79 private static final String PARAMETER_BLOG_SEARCH_TEXT = "search_text";
80 private static final String PARAMETER_SELECTED_TAGS = "selected_tags";
81 private static final String PARAMETER_DATE_BLOG_PUBLISHED_AFTER = "date_blog_published_after";
82 private static final String PARAMETER_DATE_BLOG_PUBLISHED_BEFORE = "date_blog_published_before";
83
84
85 private static final String MARK_INPUT = "input";
86 private static final String MARK_LANGUAGE = "language";
87 private static final String MARK_BLOG_SEARCH_TEXT = "search_text";
88 private static final String MARK_TAGS = "tags";
89 private static final String MARK_TAGS_REFERENCE_LIST = "tags_reference_list";
90 private static final String MARK_BLOG_LIST_FILTERED = "blog_list_filtered";
91 private static final String MARK_BLOG_INSERT_SERVICE_TYPE = "blog_insert_service_type";
92
93
94 private Collection<Blog> _blogsList;
95
96
97 private String [ ] _tagsArray;
98
99
100 private String _insertServiceType = "blog_insert_service";
101
102
103
104
105
106
107
108
109 @Override
110 public String getInsertServiceSelectorUI( HttpServletRequest request )
111 {
112 Locale locale = AdminUserService.getLocale( request );
113
114 Map<String, Object> model = new HashMap<>( );
115
116 model.put( MARK_INPUT, request.getParameter( PARAMETER_INPUT ) );
117 model.put( MARK_LANGUAGE, locale );
118
119 model.put( MARK_BLOG_INSERT_SERVICE_TYPE, getInsertServiceType( ) );
120
121
122 String blogSearchTextString = request.getParameter( PARAMETER_BLOG_SEARCH_TEXT );
123 model.put( MARK_BLOG_SEARCH_TEXT, blogSearchTextString );
124
125
126 model.put( MARK_TAGS_REFERENCE_LIST, TagHome.getTagsReferenceList( ) );
127
128 model.put( MARK_TAGS, _tagsArray );
129
130
131 model.put( MARK_BLOG_LIST_FILTERED, _blogsList );
132
133 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_SELECT_BLOG_LINK, locale, model );
134
135 return template.getHtml( );
136 }
137
138
139
140
141
142
143
144
145 public String doInsertBlogLink( HttpServletRequest request )
146 {
147 String strInput = request.getParameter( PARAMETER_INPUT );
148
149 BlogLinkPOJO blogLinkContent = getSelectedBlogData( request );
150
151 String strBlogLink = buildBlogLink( blogLinkContent.getBlog( ), blogLinkContent.getBlogLinkText( ), blogLinkContent.getBlogLinkTitle( ),
152 blogLinkContent.getBlogLinkTargetedWindow( ) );
153
154 return insertUrl( request, strInput, strBlogLink );
155 }
156
157
158
159
160
161
162
163
164 protected BlogLinkPOJO getSelectedBlogData( HttpServletRequest request )
165 {
166
167 String strSelectedBlogId = request.getParameter( PARAMETER_SELECTED_BLOG_ID );
168 int selectedBlogId = 0;
169
170 if ( StringUtils.isNumeric( strSelectedBlogId ) )
171 {
172 selectedBlogId = Integer.parseInt( strSelectedBlogId );
173 }
174
175
176 String blogLinkText = request.getParameter( PARAMETER_LINK_TEXT );
177
178
179 String blogLinkTitle = request.getParameter( PARAMETER_LINK_TITLE );
180
181
182 String targetedWindow = BlogUtils.CONSTANT_LINK_TARGET_NEW_WINDOW;
183
184 Blog blog = BlogService.getInstance( ).findByPrimaryKeyWithoutBinaries( selectedBlogId );
185
186 return new BlogLinkPOJO( blogLinkText, blogLinkTitle, targetedWindow, blog );
187 }
188
189
190
191
192
193
194
195
196 protected List<Integer> getBlogIdsWithFilter( HttpServletRequest request )
197 {
198
199 String blogSearchText = request.getParameter( PARAMETER_BLOG_SEARCH_TEXT );
200 _tagsArray = request.getParameterValues( PARAMETER_SELECTED_TAGS );
201 String strPublishedDateAfter = request.getParameter( PARAMETER_DATE_BLOG_PUBLISHED_AFTER );
202 String strPublishedDateBefore = request.getParameter( PARAMETER_DATE_BLOG_PUBLISHED_BEFORE );
203
204
205 List<Integer> blogIdsList = new ArrayList<>( );
206
207
208 BlogSearchFilter filter = BlogUtils.buildBlogSearchFilter( blogSearchText, _tagsArray, null, 0, strPublishedDateAfter, strPublishedDateBefore, null,
209 AdminUserService.getLocale( request ) );
210
211
212 BlogSearchService.getInstance( ).getSearchResults( filter, blogIdsList );
213
214 return blogIdsList;
215 }
216
217
218
219
220
221
222
223
224 public abstract String doSearchBlogLink( HttpServletRequest request );
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239 protected abstract String buildBlogLink( Blog blog, String customlinkText, String customLinkTitle, String targetedWindow );
240
241
242
243
244
245
246 protected String getInsertServiceType( )
247 {
248 return _insertServiceType;
249 }
250
251
252
253
254
255
256
257 protected void setInsertServiceType( String strInsertServiceType )
258 {
259 _insertServiceType = strInsertServiceType;
260 }
261
262
263
264
265
266
267
268 protected void setBlogList( Collection<Blog> blogsList )
269 {
270 _blogsList = blogsList;
271 }
272 }