001    /**
002     * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
003     *
004     * The contents of this file are subject to the terms of the Liferay Enterprise
005     * Subscription License ("License"). You may not use this file except in
006     * compliance with the License. You can obtain a copy of the License by
007     * contacting Liferay, Inc. See the License for the specific language governing
008     * permissions and limitations under the License, including but not limited to
009     * distribution rights of the Software.
010     *
011     *
012     *
013     */
014    
015    package com.liferay.taglib.util;
016    
017    import com.liferay.portal.kernel.servlet.PipingPageContext;
018    import com.liferay.portal.kernel.util.HttpUtil;
019    import com.liferay.portal.kernel.util.WebKeys;
020    import com.liferay.portal.model.Layout;
021    import com.liferay.portal.model.LayoutConstants;
022    import com.liferay.portal.model.Portlet;
023    import com.liferay.portal.model.Theme;
024    import com.liferay.portal.theme.ThemeDisplay;
025    import com.liferay.taglib.portlet.ActionURLTag;
026    import com.liferay.taglib.portletext.IconBackTag;
027    import com.liferay.taglib.portletext.IconCloseTag;
028    import com.liferay.taglib.portletext.IconConfigurationTag;
029    import com.liferay.taglib.portletext.IconEditDefaultsTag;
030    import com.liferay.taglib.portletext.IconEditGuestTag;
031    import com.liferay.taglib.portletext.IconEditTag;
032    import com.liferay.taglib.portletext.IconHelpTag;
033    import com.liferay.taglib.portletext.IconMaximizeTag;
034    import com.liferay.taglib.portletext.IconMinimizeTag;
035    import com.liferay.taglib.portletext.IconOptionsTag;
036    import com.liferay.taglib.portletext.IconPortletCssTag;
037    import com.liferay.taglib.portletext.IconPortletTag;
038    import com.liferay.taglib.portletext.IconPrintTag;
039    import com.liferay.taglib.portletext.IconRefreshTag;
040    import com.liferay.taglib.portletext.RuntimeTag;
041    import com.liferay.taglib.security.DoAsURLTag;
042    import com.liferay.taglib.security.PermissionsURLTag;
043    import com.liferay.taglib.theme.LayoutIconTag;
044    import com.liferay.taglib.theme.MetaTagsTag;
045    import com.liferay.taglib.theme.WrapPortletTag;
046    import com.liferay.taglib.ui.BreadcrumbTag;
047    import com.liferay.taglib.ui.JournalContentSearchTag;
048    import com.liferay.taglib.ui.LanguageTag;
049    import com.liferay.taglib.ui.MyPlacesTag;
050    import com.liferay.taglib.ui.PngImageTag;
051    import com.liferay.taglib.ui.SearchTag;
052    import com.liferay.taglib.ui.StagingTag;
053    import com.liferay.taglib.ui.ToggleTag;
054    
055    import java.util.Map;
056    
057    import javax.portlet.PortletMode;
058    import javax.portlet.PortletRequest;
059    import javax.portlet.WindowState;
060    
061    import javax.servlet.RequestDispatcher;
062    import javax.servlet.ServletContext;
063    import javax.servlet.http.HttpServletRequest;
064    import javax.servlet.http.HttpServletResponse;
065    import javax.servlet.jsp.PageContext;
066    import javax.servlet.jsp.tagext.TagSupport;
067    
068    /**
069     * @author Brian Wing Shun Chan
070     * @author Shuyang Zhou
071     */
072    public class VelocityTaglib {
073    
074            public VelocityTaglib() {
075            }
076    
077            public VelocityTaglib(
078                    ServletContext servletContext, HttpServletRequest request,
079                    HttpServletResponse response, PageContext pageContext) {
080    
081                    init(servletContext, request, response, pageContext);
082            }
083    
084            public void actionURL(long plid, String portletName, String queryString)
085                    throws Exception {
086    
087                    String windowState = WindowState.NORMAL.toString();
088                    String portletMode = PortletMode.VIEW.toString();
089    
090                    actionURL(windowState, portletMode, plid, portletName, queryString);
091            }
092    
093            public void actionURL(String portletName, String queryString)
094                    throws Exception {
095    
096                    actionURL(LayoutConstants.DEFAULT_PLID, portletName, queryString);
097            }
098    
099            public void actionURL(
100                            String windowState, String portletMode, Boolean secure,
101                            Boolean copyCurrentRenderParameters, Boolean escapeXml, String name,
102                            long plid, String portletName, Boolean anchor, Boolean encrypt,
103                            long doAsUserId, Boolean portletConfiguration, String queryString)
104                    throws Exception {
105    
106                    String var = null;
107                    String varImpl = null;
108                    String resourceID = null;
109                    String cacheability = null;
110                    Map<String, String[]> params = HttpUtil.parameterMapFromString(
111                            queryString);
112    
113                    ActionURLTag.doTag(
114                            PortletRequest.ACTION_PHASE, windowState, portletMode, var, varImpl,
115                            secure, copyCurrentRenderParameters, escapeXml, name, resourceID,
116                            cacheability, plid, portletName, anchor, encrypt, doAsUserId,
117                            portletConfiguration, params, _pageContext);
118            }
119    
120            public void actionURL(
121                            String windowState, String portletMode, long plid,
122                            String portletName, String queryString)
123                    throws Exception {
124    
125                    Boolean secure = null;
126                    Boolean copyCurrentRenderParameters = null;
127                    Boolean escapeXml = null;
128                    String name = null;
129                    Boolean anchor = null;
130                    Boolean encrypt = null;
131                    long doAsUserId = 0;
132                    Boolean portletConfiguration = null;
133    
134                    actionURL(
135                            windowState, portletMode, secure, copyCurrentRenderParameters,
136                            escapeXml, name, plid, portletName, anchor, encrypt, doAsUserId,
137                            portletConfiguration, queryString);
138            }
139    
140            public void actionURL(
141                            String windowState, String portletMode, String portletName,
142                            String queryString)
143                    throws Exception {
144    
145                    actionURL(
146                            windowState, portletMode, LayoutConstants.DEFAULT_PLID, portletName,
147                            queryString);
148            }
149    
150            public void breadcrumb() throws Exception {
151                    BreadcrumbTag breadcrumbTag = new BreadcrumbTag();
152    
153                    setUp(breadcrumbTag);
154    
155                    breadcrumbTag.runTag();
156            }
157    
158            public void breadcrumb(
159                            int displayStyle, boolean showGuestGroup, boolean showParentGroups,
160                            boolean showLayout, boolean showPortletBreadcrumb)
161                    throws Exception {
162    
163                    BreadcrumbTag breadcrumbTag = new BreadcrumbTag();
164    
165                    setUp(breadcrumbTag);
166    
167                    breadcrumbTag.setDisplayStyle(displayStyle);
168                    breadcrumbTag.setShowGuestGroup(showGuestGroup);
169                    breadcrumbTag.setShowLayout(showLayout);
170                    breadcrumbTag.setShowParentGroups(showParentGroups);
171                    breadcrumbTag.setShowPortletBreadcrumb(showPortletBreadcrumb);
172    
173                    breadcrumbTag.runTag();
174            }
175    
176            public void doAsURL(long doAsUserId) throws Exception {
177                    DoAsURLTag.doTag(doAsUserId, null, _pageContext);
178            }
179    
180            public BreadcrumbTag getBreadcrumbTag() throws Exception {
181                    BreadcrumbTag breadcrumbTag = new BreadcrumbTag();
182    
183                    setUp(breadcrumbTag);
184    
185                    return breadcrumbTag;
186            }
187    
188            public MyPlacesTag getMyPlacesTag() throws Exception {
189                    MyPlacesTag myPlacesTag = new MyPlacesTag();
190    
191                    setUp(myPlacesTag);
192    
193                    return myPlacesTag;
194            }
195    
196            public PngImageTag getPngImageTag() throws Exception {
197                    PngImageTag pngImageTag = new PngImageTag();
198    
199                    setUp(pngImageTag);
200    
201                    return pngImageTag;
202            }
203    
204            public String getSetting(String name) {
205                    ThemeDisplay themeDisplay = (ThemeDisplay)_request.getAttribute(
206                            WebKeys.THEME_DISPLAY);
207    
208                    Theme theme = themeDisplay.getTheme();
209    
210                    return theme.getSetting(name);
211            }
212    
213            public void iconBack() throws Exception {
214                    IconBackTag iconBackTag = new IconBackTag();
215    
216                    setUp(iconBackTag);
217    
218                    iconBackTag.runTag();
219            }
220    
221            public void iconClose() throws Exception {
222                    IconCloseTag iconCloseTag = new IconCloseTag();
223    
224                    setUp(iconCloseTag);
225    
226                    iconCloseTag.runTag();
227            }
228    
229            public void iconConfiguration() throws Exception {
230                    IconConfigurationTag iconConfigurationTag = new IconConfigurationTag();
231    
232                    setUp(iconConfigurationTag);
233    
234                    iconConfigurationTag.runTag();
235            }
236    
237            public void iconEdit() throws Exception {
238                    IconEditTag iconEditTag = new IconEditTag();
239    
240                    setUp(iconEditTag);
241    
242                    iconEditTag.runTag();
243            }
244    
245            public void iconEditDefaults() throws Exception {
246                    IconEditDefaultsTag iconEditDefaultsTag = new IconEditDefaultsTag();
247    
248                    setUp(iconEditDefaultsTag);
249    
250                    iconEditDefaultsTag.runTag();
251            }
252    
253            public void iconEditGuest() throws Exception {
254                    IconEditGuestTag iconEditGuestTag = new IconEditGuestTag();
255    
256                    setUp(iconEditGuestTag);
257    
258                    iconEditGuestTag.runTag();
259            }
260    
261            public void iconHelp() throws Exception {
262                    IconHelpTag iconHelpTag = new IconHelpTag();
263    
264                    setUp(iconHelpTag);
265    
266                    iconHelpTag.runTag();
267            }
268    
269            public void iconMaximize() throws Exception {
270                    IconMaximizeTag iconMaximizeTag = new IconMaximizeTag();
271    
272                    setUp(iconMaximizeTag);
273    
274                    iconMaximizeTag.runTag();
275            }
276    
277            public void iconMinimize() throws Exception {
278                    IconMinimizeTag iconMinimizeTag = new IconMinimizeTag();
279    
280                    setUp(iconMinimizeTag);
281    
282                    iconMinimizeTag.runTag();
283            }
284    
285            public void iconOptions() throws Exception {
286                    IconOptionsTag iconOptionsTag = new IconOptionsTag();
287    
288                    setUp(iconOptionsTag);
289    
290                    iconOptionsTag.runTag();
291            }
292    
293            public void iconPortlet() throws Exception {
294                    IconPortletTag iconPortletTag = new IconPortletTag();
295    
296                    setUp(iconPortletTag);
297    
298                    iconPortletTag.runTag();
299            }
300    
301            public void iconPortlet(Portlet portlet) throws Exception {
302                    IconPortletTag iconPortletTag = new IconPortletTag();
303    
304                    setUp(iconPortletTag);
305    
306                    iconPortletTag.setPortlet(portlet);
307    
308                    iconPortletTag.runTag();
309            }
310    
311            public void iconPortletCss() throws Exception {
312                    IconPortletCssTag iconPortletCssTag = new IconPortletCssTag();
313    
314                    setUp(iconPortletCssTag);
315    
316                    iconPortletCssTag.runTag();
317            }
318    
319            public void iconPrint() throws Exception {
320                    IconPrintTag iconPrintTag = new IconPrintTag();
321    
322                    setUp(iconPrintTag);
323    
324                    iconPrintTag.runTag();
325            }
326    
327            public void iconRefresh() throws Exception {
328                    IconRefreshTag iconRefreshTag = new IconRefreshTag();
329    
330                    setUp(iconRefreshTag);
331    
332                    iconRefreshTag.runTag();
333            }
334    
335            public void include(ServletContext servletContext, String page)
336                    throws Exception {
337    
338                    RequestDispatcher requestDispatcher =
339                            servletContext.getRequestDispatcher(page);
340    
341                    requestDispatcher.include(_request, _response);
342            }
343    
344            public void include(String page) throws Exception {
345                    RequestDispatcher requestDispatcher =
346                            _servletContext.getRequestDispatcher(page);
347    
348                    requestDispatcher.include(_request, _response);
349            }
350    
351            public VelocityTaglib init(
352                    ServletContext servletContext, HttpServletRequest request,
353                    HttpServletResponse response, PageContext pageContext) {
354    
355                    _servletContext = servletContext;
356                    _request = request;
357                    _response = response;
358                    _pageContext = pageContext;
359    
360                    return this;
361            }
362    
363            public void journalContentSearch() throws Exception {
364                    JournalContentSearchTag journalContentSearchTag =
365                            new JournalContentSearchTag();
366    
367                    setUp(journalContentSearchTag);
368    
369                    journalContentSearchTag.runTag();
370            }
371    
372            public void language() throws Exception {
373                    LanguageTag languageTag = new LanguageTag();
374    
375                    setUp(languageTag);
376    
377                    languageTag.runTag();
378            }
379    
380            public void language(
381                            String formName, String formAction, String name, int displayStyle)
382                    throws Exception {
383    
384                    LanguageTag languageTag = new LanguageTag();
385    
386                    setUp(languageTag);
387    
388                    languageTag.setDisplayStyle(displayStyle);
389                    languageTag.setFormAction(formAction);
390                    languageTag.setFormName(formName);
391                    languageTag.setName(name);
392    
393                    languageTag.runTag();
394            }
395    
396            public void language(
397                            String formName, String formAction, String name,
398                            String[] languageIds, int displayStyle)
399                    throws Exception {
400    
401                    LanguageTag languageTag = new LanguageTag();
402    
403                    setUp(languageTag);
404    
405                    languageTag.setDisplayStyle(displayStyle);
406                    languageTag.setFormAction(formAction);
407                    languageTag.setFormName(formName);
408                    languageTag.setLanguageIds(languageIds);
409                    languageTag.setName(name);
410    
411                    languageTag.runTag();
412            }
413    
414            public void layoutIcon(Layout layout) throws Exception {
415                    LayoutIconTag.doTag(layout, _servletContext, _request, _response);
416            }
417    
418            public void metaTags() throws Exception {
419                    MetaTagsTag.doTag(_servletContext, _request, _response);
420            }
421    
422            public void myPlaces() throws Exception {
423                    MyPlacesTag myPlacesTag = new MyPlacesTag();
424    
425                    setUp(myPlacesTag);
426    
427                    myPlacesTag.runTag();
428            }
429    
430            public void myPlaces(int max) throws Exception {
431                    MyPlacesTag myPlacesTag = new MyPlacesTag();
432    
433                    setUp(myPlacesTag);
434    
435                    myPlacesTag.setMax(max);
436    
437                    myPlacesTag.runTag();
438            }
439    
440            public void permissionsURL(
441                            String redirect, String modelResource,
442                            String modelResourceDescription, String resourcePrimKey)
443                    throws Exception {
444    
445                    PermissionsURLTag.doTag(
446                            redirect, modelResource, modelResourceDescription, resourcePrimKey,
447                            null, _pageContext);
448            }
449    
450            public void renderURL(long plid, String portletName, String queryString)
451                    throws Exception {
452    
453                    String windowState = WindowState.NORMAL.toString();
454                    String portletMode = PortletMode.VIEW.toString();
455    
456                    renderURL(windowState, portletMode, plid, portletName, queryString);
457            }
458    
459            public void renderURL(String portletName, String queryString)
460                    throws Exception {
461    
462                    renderURL(LayoutConstants.DEFAULT_PLID, portletName, queryString);
463            }
464    
465            public void renderURL(
466                            String windowState, String portletMode, Boolean secure,
467                            Boolean copyCurrentRenderParameters, Boolean escapeXml,
468                            long plid, String portletName, Boolean anchor, Boolean encrypt,
469                            long doAsUserId, Boolean portletConfiguration, String queryString)
470                    throws Exception {
471    
472                    String var = null;
473                    String varImpl = null;
474                    String name = null;
475                    String resourceID = null;
476                    String cacheability = null;
477                    Map<String, String[]> params = HttpUtil.parameterMapFromString(
478                            queryString);
479    
480                    ActionURLTag.doTag(
481                            PortletRequest.RENDER_PHASE, windowState, portletMode, var, varImpl,
482                            secure, copyCurrentRenderParameters, escapeXml, name, resourceID,
483                            cacheability, plid, portletName, anchor, encrypt, doAsUserId,
484                            portletConfiguration, params, _pageContext);
485            }
486    
487            public void renderURL(
488                            String windowState, String portletMode, long plid,
489                            String portletName, String queryString)
490                    throws Exception {
491    
492                    Boolean secure = null;
493                    Boolean copyCurrentRenderParameters = null;
494                    Boolean escapeXml = null;
495                    Boolean anchor = null;
496                    Boolean encrypt = null;
497                    long doAsUserId = 0;
498                    Boolean portletConfiguration = null;
499    
500                    renderURL(
501                            windowState, portletMode, secure, copyCurrentRenderParameters,
502                            escapeXml, plid, portletName, anchor, encrypt, doAsUserId,
503                            portletConfiguration, queryString);
504            }
505    
506            public void renderURL(
507                            String windowState, String portletMode, String portletName,
508                            String queryString)
509                    throws Exception {
510    
511                    renderURL(
512                            windowState, portletMode, LayoutConstants.DEFAULT_PLID, portletName,
513                            queryString);
514            }
515    
516            public void runtime(String portletName)
517                    throws Exception {
518    
519                    runtime(portletName, null);
520            }
521    
522            public void runtime(String portletName, String queryString)
523                    throws Exception {
524    
525                    RuntimeTag.doTag(
526                            portletName, queryString, null, _servletContext, _request,
527                            _response);
528            }
529    
530            public void runtime(
531                            String portletName, String queryString, String defaultPreferences)
532                    throws Exception {
533    
534                    RuntimeTag.doTag(
535                            portletName, queryString, defaultPreferences, null, _servletContext,
536                            _request, _response);
537            }
538    
539            public void search() throws Exception {
540                    SearchTag searchTag = new SearchTag();
541    
542                    setUp(searchTag);
543    
544                    searchTag.runTag();
545            }
546    
547            public void staging() throws Exception {
548                    StagingTag stagingTag = new StagingTag();
549    
550                    setUp(stagingTag);
551    
552                    stagingTag.runTag();
553            }
554    
555            public void toggle(
556                            String id, String showImage, String hideImage, String showMessage,
557                            String hideMessage, boolean defaultShowContent)
558                    throws Exception {
559    
560                    ToggleTag.doTag(
561                            id, showImage, hideImage, showMessage, hideMessage,
562                            defaultShowContent, null, _servletContext, _request, _response);
563            }
564    
565            public String wrapPortlet(String wrapPage, String portletPage)
566                    throws Exception {
567    
568                    return WrapPortletTag.doTag(
569                            wrapPage, portletPage, _servletContext, _request, _response,
570                            _pageContext);
571            }
572    
573            protected void setUp(TagSupport tagSupport) throws Exception {
574                    tagSupport.setPageContext(
575                            new PipingPageContext(_pageContext, _response.getWriter()));
576            }
577    
578            private PageContext _pageContext;
579            private HttpServletRequest _request;
580            private HttpServletResponse _response;
581            private ServletContext _servletContext;
582    
583    }