001
014
015 package com.liferay.portal.kernel.portlet;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.settings.LocalizedValuesMap;
020 import com.liferay.portal.kernel.settings.ModifiableSettings;
021 import com.liferay.portal.kernel.util.LocaleUtil;
022 import com.liferay.portal.kernel.util.ParamUtil;
023 import com.liferay.portal.kernel.util.StringUtil;
024 import com.liferay.portal.kernel.util.Validator;
025 import com.liferay.portal.kernel.util.WebKeys;
026 import com.liferay.portal.model.PortletConstants;
027
028 import java.io.IOException;
029
030 import java.util.Locale;
031 import java.util.Map;
032
033 import javax.portlet.PortletConfig;
034 import javax.portlet.PortletRequest;
035
036 import javax.servlet.RequestDispatcher;
037 import javax.servlet.ServletContext;
038 import javax.servlet.ServletException;
039 import javax.servlet.http.HttpServletRequest;
040 import javax.servlet.http.HttpServletResponse;
041
042
045 public class BaseJSPSettingsConfigurationAction
046 extends SettingsConfigurationAction
047 implements ConfigurationAction, ResourceServingConfigurationAction {
048
049 public String getJspPath(HttpServletRequest request) {
050 PortletConfig selPortletConfig = getSelPortletConfig(request);
051
052 String configTemplate = selPortletConfig.getInitParameter(
053 "config-template");
054
055 if (Validator.isNotNull(configTemplate)) {
056 return configTemplate;
057 }
058
059 String configJSP = selPortletConfig.getInitParameter("config-jsp");
060
061 if (Validator.isNotNull(configJSP)) {
062 return configJSP;
063 }
064
065 return "/configuration.jsp";
066 }
067
068 @Override
069 public void include(
070 PortletConfig portletConfig, HttpServletRequest request,
071 HttpServletResponse response)
072 throws Exception {
073
074 ServletContext servletContext = getServletContext(request);
075
076 RequestDispatcher requestDispatcher =
077 servletContext.getRequestDispatcher(getJspPath(request));
078
079 try {
080 requestDispatcher.include(request, response);
081 }
082 catch (ServletException se) {
083 if (_log.isErrorEnabled()) {
084 _log.error("Unable to include JSP", se);
085 }
086
087 throw new IOException(
088 "Unable to include " + getJspPath(request), se);
089 }
090 }
091
092 public void setServletContext(ServletContext servletContext) {
093 _servletContext = servletContext;
094 }
095
096 protected ServletContext getServletContext(HttpServletRequest request) {
097 if (_servletContext != null) {
098 return _servletContext;
099 }
100
101 String portletResource = ParamUtil.getString(
102 request, "portletResource");
103
104 if (Validator.isNotNull(portletResource)) {
105 String rootPortletId = PortletConstants.getRootPortletId(
106 portletResource);
107
108 PortletBag portletBag = PortletBagPool.get(rootPortletId);
109
110 return portletBag.getServletContext();
111 }
112
113 return (ServletContext)request.getAttribute(WebKeys.CTX);
114 }
115
116 protected void removeDefaultValue(
117 PortletRequest portletRequest, ModifiableSettings modifiableSettings,
118 String key, LocalizedValuesMap localizedMap) {
119
120 String defaultValue = localizedMap.getDefaultValue();
121
122 Map<Locale, String> localizedMapValues = localizedMap.getValues();
123
124 for (Locale locale : localizedMapValues.keySet()) {
125 String languageKeyId = key + "_" + LocaleUtil.toLanguageId(locale);
126
127 String value = getParameter(portletRequest, languageKeyId);
128
129 if (defaultValue.equals(value) ||
130 StringUtil.equalsIgnoreBreakLine(defaultValue, value)) {
131
132 modifiableSettings.reset(languageKeyId);
133 }
134 }
135 }
136
137 private static final Log _log = LogFactoryUtil.getLog(
138 BaseJSPSettingsConfigurationAction.class);
139
140 private ServletContext _servletContext;
141
142 }