001
014
015 package com.liferay.taglib.ui;
016
017 import com.liferay.portal.kernel.json.JSONArray;
018 import com.liferay.portal.kernel.json.JSONFactoryUtil;
019 import com.liferay.portal.kernel.util.GetterUtil;
020 import com.liferay.portal.kernel.util.StringUtil;
021 import com.liferay.portal.kernel.util.Validator;
022 import com.liferay.portal.model.Layout;
023 import com.liferay.portal.service.LayoutLocalServiceUtil;
024 import com.liferay.taglib.ui.util.SessionTreeJSClicks;
025 import com.liferay.taglib.util.IncludeTag;
026
027 import java.util.ArrayList;
028 import java.util.List;
029
030 import javax.portlet.PortletURL;
031
032 import javax.servlet.http.HttpServletRequest;
033
034
037 public class LayoutsTreeTag extends IncludeTag {
038
039 @Override
040 public int doStartTag() {
041 return EVAL_BODY_INCLUDE;
042 }
043
044 public void setCheckContentDisplayPage(boolean checkContentDisplayPage) {
045 _checkContentDisplayPage = checkContentDisplayPage;
046 }
047
048 public void setDefaultStateChecked(boolean defaultStateChecked) {
049 _defaultStateChecked = defaultStateChecked;
050 }
051
052 public void setDraggableTree(boolean draggableTree) {
053 _draggableTree = draggableTree;
054 }
055
056 public void setExpandFirstNode(boolean expandFirstNode) {
057 _expandFirstNode = expandFirstNode;
058 }
059
060 public void setGroupId(long groupId) {
061 _groupId = groupId;
062 }
063
064 public void setIncomplete(boolean incomplete) {
065 _incomplete = incomplete;
066 }
067
068 public void setLinkTemplate(String linkTemplate) {
069 _linkTemplate = linkTemplate;
070 }
071
072 public void setPortletURL(PortletURL portletURL) {
073 _portletURL = portletURL;
074 }
075
076 public void setPrivateLayout(boolean privateLayout) {
077 _privateLayout = privateLayout;
078 }
079
080 public void setRootLinkTemplate(String rootLinkTemplate) {
081 _rootLinkTemplate = rootLinkTemplate;
082 }
083
084 public void setRootNodeName(String rootNodeName) {
085 _rootNodeName = rootNodeName;
086 }
087
088 public void setSaveState(boolean saveState) {
089 _saveState = saveState;
090 }
091
092 public void setSelectableTree(boolean selectableTree) {
093 _selectableTree = selectableTree;
094 }
095
096 public void setSelectedLayoutIds(String selectedLayoutIds) {
097 _selectedLayoutIds = selectedLayoutIds;
098 }
099
100 public void setSelPlid(long selPlid) {
101 _selPlid = selPlid;
102 }
103
104 public void setTreeId(String treeId) {
105 _treeId = treeId;
106 }
107
108 @Override
109 protected void cleanUp() {
110 _checkContentDisplayPage = false;
111 _defaultStateChecked = false;
112 _draggableTree = true;
113 _expandFirstNode = true;
114 _groupId = 0;
115 _incomplete = true;
116 _linkTemplate = null;
117 _portletURL = null;
118 _privateLayout = false;
119 _rootLinkTemplate = null;
120 _rootNodeName = null;
121 _saveState = true;
122 _selectableTree = false;
123 _selectedLayoutIds = null;
124 _selPlid = 0;
125 _treeId = null;
126 }
127
128 protected String getCheckedNodes() {
129 JSONArray checkedNodesJSONArray = JSONFactoryUtil.createJSONArray();
130
131 String checkedLayoutIds = GetterUtil.getString(
132 _selectedLayoutIds,
133 SessionTreeJSClicks.getOpenNodes(
134 request, _treeId + "SelectedNode"));
135
136 if (Validator.isNull(checkedLayoutIds)) {
137 return checkedNodesJSONArray.toString();
138 }
139
140 for (long checkedLayoutId : StringUtil.split(checkedLayoutIds, 0L)) {
141 Layout checkedLayout = LayoutLocalServiceUtil.fetchLayout(
142 _groupId, _privateLayout, checkedLayoutId);
143
144 if (checkedLayout != null) {
145 checkedNodesJSONArray.put(
146 String.valueOf(checkedLayout.getPlid()));
147 }
148 }
149
150 return checkedNodesJSONArray.toString();
151 }
152
153 protected String getModules() {
154 List<String> modules = new ArrayList<>();
155
156 modules.add("liferay-layouts-tree");
157
158 if (_selectableTree) {
159 modules.add("liferay-layouts-tree-selectable");
160 }
161
162 if (_checkContentDisplayPage) {
163 modules.add("liferay-layouts-tree-check-content-display-page");
164 }
165
166 if (_saveState) {
167 modules.add("liferay-layouts-tree-state");
168 }
169
170 return StringUtil.merge(modules);
171 }
172
173 @Override
174 protected String getPage() {
175 return _PAGE;
176 }
177
178 @Override
179 protected boolean isCleanUpSetAttributes() {
180 return _CLEAN_UP_SET_ATTRIBUTES;
181 }
182
183 @Override
184 protected void setAttributes(HttpServletRequest request) {
185 request.setAttribute(
186 "liferay-ui:layouts-tree:checkedNodes", getCheckedNodes());
187 request.setAttribute(
188 "liferay-ui:layouts-tree:checkContentDisplayPage",
189 String.valueOf(_checkContentDisplayPage));
190 request.setAttribute(
191 "liferay-ui:layouts-tree:defaultStateChecked",
192 String.valueOf(_defaultStateChecked));
193 request.setAttribute(
194 "liferay-ui:layouts-tree:draggableTree",
195 String.valueOf(_draggableTree));
196 request.setAttribute(
197 "liferay-ui:layouts-tree:expandFirstNode",
198 String.valueOf(_expandFirstNode));
199 request.setAttribute(
200 "liferay-ui:layouts-tree:groupId", String.valueOf(_groupId));
201 request.setAttribute(
202 "liferay-ui:layouts-tree:incomplete", String.valueOf(_incomplete));
203 request.setAttribute(
204 "liferay-ui:layouts-tree:linkTemplate",
205 String.valueOf(_linkTemplate));
206 request.setAttribute("liferay-ui:layouts-tree:modules", getModules());
207 request.setAttribute("liferay-ui:layouts-tree:portletURL", _portletURL);
208 request.setAttribute(
209 "liferay-ui:layouts-tree:privateLayout",
210 String.valueOf(_privateLayout));
211 request.setAttribute(
212 "liferay-ui:layouts-tree:rootLinkTemplate", _rootLinkTemplate);
213 request.setAttribute(
214 "liferay-ui:layouts-tree:rootNodeName", _rootNodeName);
215 request.setAttribute(
216 "liferay-ui:layouts-tree:saveState", String.valueOf(_saveState));
217 request.setAttribute(
218 "liferay-ui:layouts-tree:selectableTree",
219 String.valueOf(_selectableTree));
220 request.setAttribute(
221 "liferay-ui:layouts-tree:selectedLayoutIds", _selectedLayoutIds);
222 request.setAttribute(
223 "liferay-ui:layouts-tree:selPlid", String.valueOf(_selPlid));
224 request.setAttribute("liferay-ui:layouts-tree:treeId", _treeId);
225 }
226
227 private static final boolean _CLEAN_UP_SET_ATTRIBUTES = true;
228
229 private static final String _PAGE = "/html/taglib/ui/layouts_tree/page.jsp";
230
231 private boolean _checkContentDisplayPage;
232 private boolean _defaultStateChecked;
233 private boolean _draggableTree = true;
234 private boolean _expandFirstNode = true;
235 private long _groupId;
236 private boolean _incomplete = true;
237 private String _linkTemplate;
238 private PortletURL _portletURL;
239 private boolean _privateLayout;
240 private String _rootLinkTemplate;
241 private String _rootNodeName;
242 private boolean _saveState = true;
243 private boolean _selectableTree;
244 private String _selectedLayoutIds;
245 private long _selPlid;
246 private String _treeId;
247
248 }