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.xmlpage.web;
35
36 import fr.paris.lutece.plugins.xmlpage.service.XmlPageElement;
37 import fr.paris.lutece.plugins.xmlpage.service.XmlPageService;
38 import fr.paris.lutece.plugins.xmlpage.util.XmlPageContentUtils;
39 import fr.paris.lutece.portal.service.plugin.Plugin;
40 import fr.paris.lutece.portal.service.template.AppTemplateService;
41 import fr.paris.lutece.portal.service.util.AppPropertiesService;
42 import fr.paris.lutece.portal.web.xpages.XPage;
43 import fr.paris.lutece.portal.web.xpages.XPageApplication;
44 import fr.paris.lutece.util.html.HtmlTemplate;
45
46 import java.util.HashMap;
47 import java.util.Map;
48
49 import javax.servlet.http.HttpServletRequest;
50
51
52
53
54
55 public class XmlPageApp implements XPageApplication
56 {
57
58 private static final String TEMPLATE_PAGE_XMLPAGE = "skin/plugins/xmlpage/page_xmlpage.html";
59
60
61 private static final String PARAMETER_XMLPAGE_NAME = "xmlpage";
62 private static final String PARAMETER_XMLPAGE_STYLE = "style";
63
64
65 private static final String PROPERTY_ERROR_PAGE_TITLE = "xmlpage.error.pageTitle";
66 private static final String PROPERTY_ERROR_PAGE_PATH = "xmlpage.error.pagePathLabel";
67 private static final String PROPERTY_ERROR_MISSING_PARAMETERS = "xmlpage.error.message.missing.parameters";
68 private static final String PROPERTY_ERROR_PAGE_NOT_FOUND = "xmlpage.error.message.page.not.found";
69 private static final String PROPERTY_ERROR_UNKNOWN = "xmlpage.error.message.unknown";
70 private static final String PROPERTY_TRANSFORM_CACHE = "xmlpage.transform.cache";
71 private static final String PROPERTY_PARAMETERS_LIST = "xmlpage.parameters.list";
72 private static final String PROPERTY_PARAMETERS_LIST_SEPARATOR = "xmlpage.parameters.list.separator";
73
74
75 private static final String BOOKMARK_PAGE_CONTENT = "@page_content@";
76
77
78 private static final String EMPTY_STRING = "";
79
80
81
82
83
84
85
86
87
88
89
90
91
92 public XPage getPage( HttpServletRequest request, int nMode, Plugin plugin )
93 {
94 XPage page = new XPage( );
95
96 String strTransformCache = AppPropertiesService.getProperty( PROPERTY_TRANSFORM_CACHE );
97 String strXmlPageName = request.getParameter( PARAMETER_XMLPAGE_NAME );
98 String strStyle = request.getParameter( PARAMETER_XMLPAGE_STYLE );
99 String strPageContent;
100 String strPageTitle;
101 String strPagePath;
102
103 boolean bTransformCacheActive = Boolean.parseBoolean( strTransformCache );
104 Map<String, String> mapParameters = null;
105
106 if ( !bTransformCacheActive )
107 {
108 String strParametersList = AppPropertiesService.getProperty( PROPERTY_PARAMETERS_LIST );
109 String strParametersListSeparator = AppPropertiesService.getProperty( PROPERTY_PARAMETERS_LIST_SEPARATOR );
110 String[] listParameters = strParametersList.split( strParametersListSeparator );
111
112 mapParameters = new HashMap<String, String>( );
113
114 for ( String currentParameter : listParameters )
115 {
116 if ( request.getParameter( currentParameter ) != null )
117 {
118 mapParameters.put( currentParameter, request.getParameter( currentParameter ) );
119 }
120 }
121 }
122
123 if ( ( strXmlPageName != null ) && !EMPTY_STRING.equals( strXmlPageName ) && ( strStyle != null ) &&
124 !EMPTY_STRING.equals( strStyle ) )
125 {
126 XmlPageElement xmlPageElement = XmlPageService.getInstance( ).getXmlPageResource( strXmlPageName );
127
128 if ( xmlPageElement != null )
129 {
130 strPageContent = XmlPageContentUtils.getContent( xmlPageElement, strStyle, bTransformCacheActive,
131 mapParameters );
132
133
134 if ( strPageContent == null )
135 {
136 strPageContent = AppPropertiesService.getProperty( PROPERTY_ERROR_UNKNOWN );
137 strPageTitle = AppPropertiesService.getProperty( PROPERTY_ERROR_PAGE_TITLE );
138 strPagePath = AppPropertiesService.getProperty( PROPERTY_ERROR_PAGE_PATH );
139 }
140 else
141 {
142 strPageTitle = xmlPageElement.getTitle( );
143 strPagePath = xmlPageElement.getTitle( );
144 }
145 }
146 else
147 {
148 strPageContent = AppPropertiesService.getProperty( PROPERTY_ERROR_PAGE_NOT_FOUND );
149 strPageTitle = AppPropertiesService.getProperty( PROPERTY_ERROR_PAGE_TITLE );
150 strPagePath = AppPropertiesService.getProperty( PROPERTY_ERROR_PAGE_PATH );
151 }
152 }
153 else
154 {
155 strPageContent = AppPropertiesService.getProperty( PROPERTY_ERROR_MISSING_PARAMETERS );
156 strPageTitle = AppPropertiesService.getProperty( PROPERTY_ERROR_PAGE_TITLE );
157 strPagePath = AppPropertiesService.getProperty( PROPERTY_ERROR_PAGE_PATH );
158 }
159
160 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_PAGE_XMLPAGE );
161 template.substitute( BOOKMARK_PAGE_CONTENT, strPageContent );
162 page.setContent( template.getHtml( ) );
163 page.setTitle( strPageTitle );
164 page.setPathLabel( strPagePath );
165
166 return page;
167 }
168 }