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.theme;
35
36 import java.util.Collection;
37 import java.util.HashMap;
38 import java.util.Map;
39
40 import javax.inject.Inject;
41 import javax.inject.Named;
42 import javax.servlet.http.HttpServletRequest;
43 import javax.servlet.http.HttpServletResponse;
44
45 import fr.paris.lutece.portal.service.theme.ThemeResourceIdService;
46 import fr.paris.lutece.portal.service.theme.ThemeService;
47 import fr.paris.lutece.portal.service.theme.ThemeUtil;
48 import fr.paris.lutece.portal.business.rbac.RBAC;
49 import fr.paris.lutece.portal.business.style.Theme;
50 import fr.paris.lutece.portal.service.admin.AccessDeniedException;
51 import fr.paris.lutece.portal.service.message.AdminMessage;
52 import fr.paris.lutece.portal.service.message.AdminMessageService;
53 import fr.paris.lutece.portal.service.portal.ThemesService;
54 import fr.paris.lutece.portal.service.rbac.RBACService;
55 import fr.paris.lutece.portal.service.spring.SpringContextService;
56 import fr.paris.lutece.portal.service.template.AppTemplateService;
57 import fr.paris.lutece.portal.service.util.AppPathService;
58 import fr.paris.lutece.portal.util.mvc.admin.MVCAdminJspBean;
59 import fr.paris.lutece.portal.util.mvc.admin.annotations.Controller;
60 import fr.paris.lutece.portal.util.mvc.commons.annotations.Action;
61 import fr.paris.lutece.portal.util.mvc.commons.annotations.View;
62 import fr.paris.lutece.portal.web.constants.Messages;
63 import fr.paris.lutece.util.html.HtmlTemplate;
64 import fr.paris.lutece.util.http.SecurityUtil;
65 import fr.paris.lutece.util.url.UrlItem;
66
67
68
69
70 @Controller( controllerJsp = "ManageThemes.jsp", controllerPath = "jsp/admin/templates/", right = "CORE_THEME_MANAGEMENT" )
71 public class ThemeJspBean extends MVCAdminJspBean
72 {
73 private static final long serialVersionUID = 3959917474602825328L;
74
75
76 private static final String TEMPLATE_MANAGE_THEMES = "admin/theme/manage_themes.html";
77
78 private static final String JSP_MANAGE_THEMES = "jsp/admin/plugins/filestoragetransfer/ManageRequests.jsp";
79
80
81 private static final String VIEW_MANAGE_THEMES = "manageThemes";
82
83
84 private static final String ACTION_MODIFY_GLOBAL_THEME = "modifyGlobalTheme";
85
86 private static ThemeService _themeService = SpringContextService.getBean( "themeService");
87
88
89
90
91
92
93
94 @View( value = VIEW_MANAGE_THEMES, defaultView = true )
95 public String getManageThemes( HttpServletRequest request )
96 {
97 Collection<Theme> _listThemes = _themeService.getThemesList( );
98
99 Map<String, Object> model = getModel( );
100 model.put( ThemeUtil.MARK_THEMES_LIST, _listThemes );
101 model.put( ThemeUtil.MARK_THEME_DEFAULT, _themeService.getGlobalTheme( ) );
102 model.put( ThemeUtil.MARK_BASE_URL, AppPathService.getBaseUrl( request ) );
103 model.put( ThemeUtil.MARK_PERMISSION_MODIFY_GLOBAL_THEME,
104 RBACService.isAuthorized( Theme.RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID,
105 ThemeResourceIdService.PERMISSION_MODIFY_GLOBAL_THEME, getUser( ) ) );
106
107 setPageTitleProperty( ThemeUtil.PROPERTY_MANAGE_THEMES_PAGE_TITLE );
108
109 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_THEMES, getLocale( ), model );
110
111 return getAdminPage( template.getHtml( ) );
112 }
113
114
115
116
117
118
119 @Action( ACTION_MODIFY_GLOBAL_THEME )
120 public String doModifyGlobalTheme( HttpServletRequest request )
121 {
122 String strUrl = "";
123 String strTheme = request.getParameter( ThemeUtil.PARAMETER_THEME );
124 String strVersion = request.getParameter( ThemeUtil.PARAMETER_THEME_VERSION );
125
126 if ( !strTheme.isBlank() )
127 {
128 _themeService.setGlobalTheme( strTheme, strVersion );
129 strUrl = getHomeUrl( request );
130 }
131 else
132 {
133 strUrl = AdminMessageService.getMessageUrl( request, ThemeUtil.MESSAGE_OBJECT_NOT_FOUND,
134 AdminMessage.TYPE_STOP );
135 }
136
137 return strUrl;
138 }
139
140 }