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 setRootPortletURL(String rootPortletURL) {
089 _rootPortletURL = rootPortletURL;
090 }
091
092 public void setSaveState(boolean saveState) {
093 _saveState = saveState;
094 }
095
096 public void setSelectableTree(boolean selectableTree) {
097 _selectableTree = selectableTree;
098 }
099
100 public void setSelectedLayoutIds(String selectedLayoutIds) {
101 _selectedLayoutIds = selectedLayoutIds;
102 }
103
104 public void setSelPlid(Long selPlid) {
105 _selPlid = selPlid;
106 }
107
108 public void setTreeId(String treeId) {
109 _treeId = treeId;
110 }
111
112 @Override
113 protected void cleanUp() {
114 _checkContentDisplayPage = false;
115 _defaultStateChecked = false;
116 _draggableTree = true;
117 _expandFirstNode = true;
118 _groupId = 0;
119 _incomplete = true;
120 _linkTemplate = null;
121 _portletURL = null;
122 _privateLayout = false;
123 _rootLinkTemplate = null;
124 _rootNodeName = null;
125 _rootPortletURL = null;
126 _saveState = true;
127 _selectableTree = false;
128 _selectedLayoutIds = null;
129 _selPlid = null;
130 _treeId = null;
131 }
132
133 protected String getCheckedNodes() {
134 JSONArray checkedNodesJSONArray = JSONFactoryUtil.createJSONArray();
135
136 String checkedLayoutIds = GetterUtil.getString(
137 _selectedLayoutIds,
138 SessionTreeJSClicks.getOpenNodes(
139 request, _treeId + "SelectedNode"));
140
141 if (Validator.isNull(checkedLayoutIds)) {
142 return checkedNodesJSONArray.toString();
143 }
144
145 for (long checkedLayoutId : StringUtil.split(checkedLayoutIds, 0L)) {
146 Layout checkedLayout = LayoutLocalServiceUtil.fetchLayout(
147 _groupId, _privateLayout, checkedLayoutId);
148
149 if (checkedLayout != null) {
150 checkedNodesJSONArray.put(
151 String.valueOf(checkedLayout.getPlid()));
152 }
153 }
154
155 return checkedNodesJSONArray.toString();
156 }
157
158 protected String getModules() {
159 List<String> modules = new ArrayList<>();
160
161 modules.add("liferay-layouts-tree");
162
163 if (_selectableTree) {
164 modules.add("liferay-layouts-tree-selectable");
165 }
166
167 if (_checkContentDisplayPage) {
168 modules.add("liferay-layouts-tree-check-content-display-page");
169 }
170
171 if (_saveState) {
172 modules.add("liferay-layouts-tree-state");
173 }
174
175 return StringUtil.merge(modules);
176 }
177
178 @Override
179 protected String getPage() {
180 return _PAGE;
181 }
182
183 @Override
184 protected boolean isCleanUpSetAttributes() {
185 return _CLEAN_UP_SET_ATTRIBUTES;
186 }
187
188 @Override
189 protected void setAttributes(HttpServletRequest request) {
190 request.setAttribute(
191 "liferay-ui:layouts-tree:checkedNodes", getCheckedNodes());
192 request.setAttribute(
193 "liferay-ui:layouts-tree:checkContentDisplayPage",
194 String.valueOf(_checkContentDisplayPage));
195 request.setAttribute(
196 "liferay-ui:layouts-tree:defaultStateChecked",
197 String.valueOf(_defaultStateChecked));
198 request.setAttribute(
199 "liferay-ui:layouts-tree:draggableTree",
200 String.valueOf(_draggableTree));
201 request.setAttribute(
202 "liferay-ui:layouts-tree:expandFirstNode",
203 String.valueOf(_expandFirstNode));
204 request.setAttribute(
205 "liferay-ui:layouts-tree:groupId", String.valueOf(_groupId));
206 request.setAttribute(
207 "liferay-ui:layouts-tree:incomplete", String.valueOf(_incomplete));
208 request.setAttribute(
209 "liferay-ui:layouts-tree:linkTemplate",
210 String.valueOf(_linkTemplate));
211 request.setAttribute("liferay-ui:layouts-tree:modules", getModules());
212 request.setAttribute("liferay-ui:layouts-tree:portletURL", _portletURL);
213 request.setAttribute(
214 "liferay-ui:layouts-tree:privateLayout",
215 String.valueOf(_privateLayout));
216 request.setAttribute(
217 "liferay-ui:layouts-tree:rootLinkTemplate", _rootLinkTemplate);
218 request.setAttribute(
219 "liferay-ui:layouts-tree:rootNodeName", _rootNodeName);
220 request.setAttribute(
221 "liferay-ui:layouts-tree:rootPortletURL", _rootPortletURL);
222 request.setAttribute(
223 "liferay-ui:layouts-tree:saveState", String.valueOf(_saveState));
224 request.setAttribute(
225 "liferay-ui:layouts-tree:selectableTree",
226 String.valueOf(_selectableTree));
227 request.setAttribute(
228 "liferay-ui:layouts-tree:selectedLayoutIds", _selectedLayoutIds);
229 request.setAttribute("liferay-ui:layouts-tree:selPlid", _selPlid);
230 request.setAttribute("liferay-ui:layouts-tree:treeId", _treeId);
231 }
232
233 private static final boolean _CLEAN_UP_SET_ATTRIBUTES = true;
234
235 private static final String _PAGE = "/html/taglib/ui/layouts_tree/page.jsp";
236
237 private boolean _checkContentDisplayPage;
238 private boolean _defaultStateChecked;
239 private boolean _draggableTree = true;
240 private boolean _expandFirstNode = true;
241 private long _groupId;
242 private boolean _incomplete = true;
243 private String _linkTemplate;
244 private PortletURL _portletURL;
245 private boolean _privateLayout;
246 private String _rootLinkTemplate;
247 private String _rootNodeName;
248 private String _rootPortletURL;
249 private boolean _saveState = true;
250 private boolean _selectableTree;
251 private String _selectedLayoutIds;
252 private Long _selPlid;
253 private String _treeId;
254
255 }