001
014
015 package com.liferay.portal.layoutconfiguration.util.velocity;
016
017 import com.liferay.portal.kernel.servlet.JSPSupportServlet;
018 import com.liferay.portal.kernel.util.GetterUtil;
019 import com.liferay.portal.kernel.util.StringPool;
020 import com.liferay.portal.kernel.util.UnicodeProperties;
021 import com.liferay.portal.model.CustomizedPages;
022 import com.liferay.portal.model.Layout;
023 import com.liferay.portlet.layoutsadmin.context.LayoutsAdminDisplayContext;
024 import com.liferay.portlet.sites.util.SitesUtil;
025 import com.liferay.taglib.aui.InputTag;
026
027 import java.io.Writer;
028
029 import java.util.Map;
030
031 import javax.servlet.http.HttpServletRequest;
032 import javax.servlet.http.HttpServletResponse;
033 import javax.servlet.jsp.JspFactory;
034 import javax.servlet.jsp.PageContext;
035 import javax.servlet.jsp.tagext.Tag;
036
037
041 public class CustomizationSettingsProcessor implements ColumnProcessor {
042
043 public CustomizationSettingsProcessor(
044 HttpServletRequest request, HttpServletResponse response) {
045
046 JspFactory jspFactory = JspFactory.getDefaultFactory();
047
048 _pageContext = jspFactory.getPageContext(
049 new JSPSupportServlet(request.getServletContext()), request,
050 response, null, false, 0, false);
051
052 _writer = _pageContext.getOut();
053
054 LayoutsAdminDisplayContext layoutsAdminDisplayContext =
055 new LayoutsAdminDisplayContext(request, null);
056
057 Layout selLayout = layoutsAdminDisplayContext.getSelLayout();
058
059 _layoutTypeSettings = selLayout.getTypeSettingsProperties();
060
061 _customizationEnabled = true;
062
063 if (!SitesUtil.isLayoutUpdateable(selLayout)) {
064 _customizationEnabled = false;
065 }
066
067 if (selLayout.isLayoutPrototypeLinkActive()) {
068 _customizationEnabled = false;
069 }
070 }
071
072 @Override
073 public String processColumn(String columnId) throws Exception {
074 return processColumn(columnId, StringPool.BLANK);
075 }
076
077 @Override
078 public String processColumn(String columnId, String classNames)
079 throws Exception {
080
081 String customizableKey = CustomizedPages.namespaceColumnId(columnId);
082
083 boolean customizable = false;
084
085 if (_customizationEnabled) {
086 customizable = GetterUtil.getBoolean(
087 _layoutTypeSettings.getProperty(
088 customizableKey, String.valueOf(false)));
089 }
090
091 _writer.append("<div class=\"");
092 _writer.append(classNames);
093 _writer.append("\">");
094
095 _writer.append("<h1>");
096 _writer.append(columnId);
097 _writer.append("</h1>");
098
099 InputTag inputTag = new InputTag();
100
101 inputTag.setDisabled(!_customizationEnabled);
102 inputTag.setLabel("customizable");
103 inputTag.setName(
104 "TypeSettingsProperties--".concat(customizableKey).concat("--"));
105 inputTag.setPageContext(_pageContext);
106 inputTag.setType("checkbox");
107 inputTag.setValue(customizable);
108
109 int result = inputTag.doStartTag();
110
111 if (result == Tag.EVAL_BODY_INCLUDE) {
112 inputTag.doEndTag();
113 }
114
115 _writer.append("</div>");
116
117 return StringPool.BLANK;
118 }
119
120 @Override
121 public String processMax() throws Exception {
122 return StringPool.BLANK;
123 }
124
125
128 @Deprecated
129 @Override
130 public String processMax(String classNames) throws Exception {
131 return processMax();
132 }
133
134 @Override
135 public String processPortlet(String portletId) throws Exception {
136 _writer.append("<div class=\"portlet\">");
137 _writer.append(portletId);
138 _writer.append("</div>");
139
140 return StringPool.BLANK;
141 }
142
143 @Override
144 public String processPortlet(
145 String portletId, Map<String, ?> defaultSettingsMap)
146 throws Exception {
147
148 return processPortlet(portletId);
149 }
150
151 private boolean _customizationEnabled;
152 private UnicodeProperties _layoutTypeSettings;
153 private PageContext _pageContext;
154 private Writer _writer;
155
156 }