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.portal.web;
35
36 import fr.paris.lutece.portal.service.content.ContentService;
37 import fr.paris.lutece.portal.service.content.XPageAppService;
38 import fr.paris.lutece.portal.service.message.ISiteMessageHandler;
39 import fr.paris.lutece.portal.service.message.SiteMessageException;
40 import fr.paris.lutece.portal.service.plugin.Plugin;
41 import fr.paris.lutece.portal.service.plugin.PluginService;
42 import fr.paris.lutece.portal.service.portal.StandaloneAppService;
43 import fr.paris.lutece.portal.service.security.UserNotSignedException;
44 import fr.paris.lutece.portal.service.spring.SpringContextService;
45 import fr.paris.lutece.portal.service.template.AppTemplateService;
46 import fr.paris.lutece.portal.service.util.AppPathService;
47 import fr.paris.lutece.portal.web.xpages.XPageApplicationEntry;
48 import fr.paris.lutece.util.html.HtmlTemplate;
49
50 import java.util.ArrayList;
51 import java.util.Collection;
52 import java.util.Collections;
53 import java.util.Comparator;
54 import java.util.HashMap;
55 import java.util.List;
56 import java.util.Locale;
57
58 import javax.servlet.http.HttpServletRequest;
59
60
61
62
63
64 public class StandaloneAppJspBean
65 {
66
67
68 private static final int MODE_HTML = 0;
69 private static final String TEMPLATE_STANDALONE = "skin/site/standalone_app.html";
70 private static final String MARK_ENTRY_LIST = "entry_list";
71 private static final String MARK_BASE_URL = "base_url";
72 private static final String MARK_CORE_PLUGIN = "core_plugin";
73 private static final String BEAN_SITE_MESSAGE_HANDLER = "siteMessageHandler";
74
75
76
77
78
79
80
81
82
83
84 public String getContent( HttpServletRequest request )
85 throws UserNotSignedException, SiteMessageException
86 {
87 return getContent( request, MODE_HTML );
88 }
89
90
91
92
93
94
95
96
97
98
99
100 public String getContent( HttpServletRequest request, int nMode )
101 throws UserNotSignedException, SiteMessageException
102 {
103
104 ISiteMessageHandler handlerSiteMessage = (ISiteMessageHandler) SpringContextService.getBean( BEAN_SITE_MESSAGE_HANDLER );
105
106 if ( handlerSiteMessage.hasMessage( request ) )
107 {
108 return handlerSiteMessage.getPage( request, nMode );
109 }
110
111 ContentService csStandalone = new StandaloneAppService( );
112 String htmlPage = csStandalone.getPage( request, nMode );
113
114 if ( htmlPage == null )
115 {
116
117 return getPluginList( request );
118 }
119
120 return htmlPage;
121 }
122
123
124
125
126
127
128
129 public String getPluginList( HttpServletRequest request )
130 {
131 HashMap<String, Object> modelList = new HashMap<String, Object>( );
132 Collection<XPageApplicationEntry> entryList = new ArrayList<XPageApplicationEntry>( );
133 Locale locale = ( request == null ) ? null : request.getLocale( );
134
135 Collection<XPageApplicationEntry> applications = XPageAppService.getXPageApplicationsList( );
136 Comparator<XPageApplicationEntry> comparator = new Comparator<XPageApplicationEntry>( )
137 {
138 public int compare( XPageApplicationEntry c1, XPageApplicationEntry c2 )
139 {
140 Plugin p1 = ( c1.getPlugin( ) == null ) ? PluginService.getCore( ) : c1.getPlugin( );
141 Plugin p2 = ( c2.getPlugin( ) == null ) ? PluginService.getCore( ) : c2.getPlugin( );
142
143 return p1.getName( ).compareTo( p2.getName( ) );
144 }
145 };
146
147 List<XPageApplicationEntry> applicationsSorted = new ArrayList<XPageApplicationEntry>( applications );
148 Collections.sort( applicationsSorted, comparator );
149
150
151 for ( XPageApplicationEntry entry : applicationsSorted )
152 {
153 if ( entry.isEnable( ) )
154 {
155 entryList.add( entry );
156 }
157 }
158
159
160 modelList.put( MARK_ENTRY_LIST, entryList );
161 modelList.put( MARK_BASE_URL, AppPathService.getBaseUrl( request ) );
162 modelList.put( MARK_CORE_PLUGIN, PluginService.getCore( ) );
163
164 HtmlTemplate templateList = AppTemplateService.getTemplate( TEMPLATE_STANDALONE, locale, modelList );
165
166 return templateList.getHtml( );
167 }
168 }