PageRenderTime 25ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/apps/wiki/wiki-web/src/main/resources/META-INF/resources/wiki/edit_page.jsp

http://github.com/liferay/liferay-portal
JavaServer Pages | 429 lines | 327 code | 89 blank | 13 comment | 50 complexity | b8fc31074c216d84cfd1700fb1a00253 MD5 | raw file
Possible License(s): LGPL-2.0
  1. <%--
  2. /**
  3. * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
  4. *
  5. * This library is free software; you can redistribute it and/or modify it under
  6. * the terms of the GNU Lesser General Public License as published by the Free
  7. * Software Foundation; either version 2.1 of the License, or (at your option)
  8. * any later version.
  9. *
  10. * This library is distributed in the hope that it will be useful, but WITHOUT
  11. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  12. * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
  13. * details.
  14. */
  15. --%>
  16. <%@ include file="/wiki/init.jsp" %>
  17. <%
  18. String redirect = ParamUtil.getString(request, "redirect");
  19. WikiEngineRenderer wikiEngineRenderer = (WikiEngineRenderer)request.getAttribute(WikiWebKeys.WIKI_ENGINE_RENDERER);
  20. WikiNode node = (WikiNode)request.getAttribute(WikiWebKeys.WIKI_NODE);
  21. WikiPage wikiPage = (WikiPage)request.getAttribute(WikiWebKeys.WIKI_PAGE);
  22. long nodeId = BeanParamUtil.getLong(wikiPage, request, "nodeId");
  23. String title = BeanParamUtil.getString(wikiPage, request, "title");
  24. boolean editTitle = ParamUtil.getBoolean(request, "editTitle");
  25. String selectedFormat = BeanParamUtil.getString(wikiPage, request, "format", wikiGroupServiceOverriddenConfiguration.defaultFormat());
  26. Collection<String> formats = wikiEngineRenderer.getFormats();
  27. if (!formats.contains(selectedFormat)) {
  28. Iterator<String> iterator = formats.iterator();
  29. if (iterator.hasNext()) {
  30. selectedFormat = iterator.next();
  31. }
  32. }
  33. String parentTitle = BeanParamUtil.getString(wikiPage, request, "parentTitle");
  34. boolean editable = false;
  35. if (wikiPage != null) {
  36. if (WikiPagePermission.contains(permissionChecker, wikiPage, ActionKeys.UPDATE)) {
  37. editable = true;
  38. }
  39. }
  40. else if ((wikiPage == null) && editTitle) {
  41. editable = true;
  42. wikiPage = WikiPageLocalServiceUtil.createWikiPage(0);
  43. wikiPage.setNodeId(node.getNodeId());
  44. wikiPage.setFormat(selectedFormat);
  45. wikiPage.setParentTitle(parentTitle);
  46. }
  47. if (Validator.isNotNull(title)) {
  48. try {
  49. WikiPageTitleValidator wikiPageTitleValidator = (WikiPageTitleValidator)request.getAttribute(WikiWebKeys.WIKI_PAGE_TITLE_VALIDATOR);
  50. wikiPageTitleValidator.validate(title);
  51. editable = true;
  52. }
  53. catch (PageTitleException pte) {
  54. editTitle = true;
  55. }
  56. }
  57. long templateNodeId = ParamUtil.getLong(request, "templateNodeId");
  58. String templateTitle = ParamUtil.getString(request, "templateTitle");
  59. WikiPage templatePage = null;
  60. if ((templateNodeId > 0) && Validator.isNotNull(templateTitle)) {
  61. try {
  62. templatePage = WikiPageServiceUtil.getPage(templateNodeId, templateTitle);
  63. if (Validator.isNull(parentTitle)) {
  64. parentTitle = templatePage.getParentTitle();
  65. if (wikiPage.isNew()) {
  66. selectedFormat = templatePage.getFormat();
  67. wikiPage.setContent(templatePage.getContent());
  68. wikiPage.setFormat(selectedFormat);
  69. wikiPage.setParentTitle(parentTitle);
  70. }
  71. }
  72. }
  73. catch (Exception e) {
  74. }
  75. }
  76. WikiURLHelper wikiURLHelper = new WikiURLHelper(wikiRequestHelper, renderResponse, wikiGroupServiceConfiguration);
  77. PortletURL backToViewPagesURL = wikiURLHelper.getBackToViewPagesURL(node);
  78. if (Validator.isNull(redirect)) {
  79. redirect = backToViewPagesURL.toString();
  80. }
  81. String headerTitle = ((wikiPage == null) || wikiPage.isNew()) ? LanguageUtil.get(request, "new-wiki-page") : wikiPage.getTitle();
  82. boolean portletTitleBasedNavigation = GetterUtil.getBoolean(portletConfig.getInitParameter("portlet-title-based-navigation"));
  83. if (portletTitleBasedNavigation) {
  84. portletDisplay.setShowBackIcon(true);
  85. portletDisplay.setURLBack(backToViewPagesURL.toString());
  86. renderResponse.setTitle(headerTitle);
  87. }
  88. %>
  89. <c:if test="<%= portletTitleBasedNavigation && (wikiPage != null) && !wikiPage.isNew() %>">
  90. <liferay-frontend:info-bar>
  91. <aui:workflow-status markupView="lexicon" showHelpMessage="<%= false %>" showIcon="<%= false %>" showLabel="<%= false %>" status="<%= wikiPage.getStatus() %>" version="<%= String.valueOf(wikiPage.getVersion()) %>" />
  92. </liferay-frontend:info-bar>
  93. </c:if>
  94. <portlet:actionURL name="/wiki/edit_page" var="editPageActionURL">
  95. <portlet:param name="mvcRenderCommandName" value="/wiki/edit_page" />
  96. </portlet:actionURL>
  97. <portlet:renderURL var="editPageRenderURL">
  98. <portlet:param name="mvcRenderCommandName" value="/wiki/edit_page" />
  99. </portlet:renderURL>
  100. <div <%= portletTitleBasedNavigation ? "class=\"container-fluid container-fluid-max-xl container-form-lg\"" : StringPool.BLANK %> id='<%= liferayPortletResponse.getNamespace() + "wikiEditPageContainer" %>'>
  101. <aui:form action="<%= editPageActionURL %>" method="post" name="fm">
  102. <aui:input name="<%= Constants.CMD %>" type="hidden" />
  103. <aui:input name="redirect" type="hidden" value="<%= redirect %>" />
  104. <aui:input name="editTitle" type="hidden" value="<%= editTitle %>" />
  105. <aui:input name="nodeId" type="hidden" value="<%= nodeId %>" />
  106. <aui:input name="parentTitle" type="hidden" value="<%= parentTitle %>" />
  107. <aui:input name="workflowAction" type="hidden" value="<%= WorkflowConstants.ACTION_SAVE_DRAFT %>" />
  108. <c:if test="<%= wikiPage != null %>">
  109. <aui:input name="version" type="hidden" value="<%= wikiPage.getVersion() %>" />
  110. </c:if>
  111. <c:if test="<%= templatePage != null %>">
  112. <aui:input name="templateNodeId" type="hidden" value="<%= String.valueOf(templateNodeId) %>" />
  113. <aui:input name="templateTitle" type="hidden" value="<%= templateTitle %>" />
  114. </c:if>
  115. <liferay-ui:error exception="<%= DuplicatePageException.class %>" message="there-is-already-a-page-with-the-specified-title" />
  116. <liferay-ui:error exception="<%= PageContentException.class %>" message="the-content-is-not-valid" />
  117. <liferay-ui:error exception="<%= PageTitleException.class %>" message="please-enter-a-valid-title" />
  118. <liferay-ui:error exception="<%= PageVersionException.class %>" message="another-user-has-made-changes-since-you-started-editing-please-copy-your-changes-and-try-again" />
  119. <liferay-asset:asset-categories-error />
  120. <liferay-asset:asset-tags-error />
  121. <aui:model-context bean="<%= ((wikiPage != null) && !wikiPage.isNew()) ? wikiPage : templatePage %>" model="<%= WikiPage.class %>" />
  122. <c:choose>
  123. <c:when test="<%= !editable %>">
  124. <c:if test="<%= (wikiPage == null) || wikiPage.isNew() %>">
  125. <div class="alert alert-info">
  126. <liferay-ui:message key="this-page-does-not-exist-yet-and-the-title-is-not-valid" />
  127. </div>
  128. <aui:button href="<%= HtmlUtil.escape(PortalUtil.escapeRedirect(redirect)) %>" value="cancel" />
  129. </c:if>
  130. <c:if test="<%= (wikiPage != null) && !wikiPage.isApproved() %>">
  131. <div class="alert alert-info">
  132. <%
  133. Format dateFormatDate = FastDateFormatFactoryUtil.getDateTime(locale, timeZone);
  134. %>
  135. <liferay-ui:message arguments="<%= new Object[] {HtmlUtil.escape(wikiPage.getUserName()), dateFormatDate.format(wikiPage.getModifiedDate())} %>" key="this-page-cannot-be-edited-because-user-x-is-modifying-it-and-the-results-have-not-been-published-yet" translateArguments="<%= false %>" />
  136. </div>
  137. </c:if>
  138. </c:when>
  139. <c:otherwise>
  140. <aui:fieldset-group markupView="lexicon">
  141. <aui:fieldset>
  142. <c:if test="<%= !portletTitleBasedNavigation && (wikiPage != null) && !wikiPage.isNew() %>">
  143. <div class="text-center">
  144. <aui:workflow-status markupView="lexicon" showIcon="<%= false %>" showLabel="<%= false %>" status="<%= wikiPage.getStatus() %>" version="<%= String.valueOf(wikiPage.getVersion()) %>" />
  145. </div>
  146. </c:if>
  147. <c:if test="<%= ((wikiPage == null) || wikiPage.isNew()) && Validator.isNotNull(title) %>">
  148. <div class="alert alert-info">
  149. <liferay-ui:message key="this-page-does-not-exist-yet-use-the-form-below-to-create-it" />
  150. </div>
  151. </c:if>
  152. <c:choose>
  153. <c:when test="<%= editTitle %>">
  154. <div class="entry-title">
  155. <aui:input label='<%= LanguageUtil.get(request, "title") %>' name="title" type="text" value="<%= HtmlUtil.escape(title) %>" />
  156. </div>
  157. </c:when>
  158. <c:otherwise>
  159. <div class="entry-title">
  160. <h1 class="sheet-title"><%= HtmlUtil.escape(title) %></h1>
  161. </div>
  162. <aui:input name="title" type="hidden" value="<%= title %>" />
  163. </c:otherwise>
  164. </c:choose>
  165. <div>
  166. <%
  167. try {
  168. if ((templatePage != null) && (wikiPage != null) && wikiPage.isNew()) {
  169. WikiUtil.renderEditPageHTML(wikiEngineRenderer, selectedFormat, pageContext, node, templatePage);
  170. }
  171. else {
  172. WikiUtil.renderEditPageHTML(wikiEngineRenderer, selectedFormat, pageContext, node, wikiPage);
  173. }
  174. }
  175. catch (WikiFormatException wfe) {
  176. %>
  177. <div class="alert alert-danger">
  178. <liferay-ui:message key="the-format-of-this-page-is-not-supported-the-page-content-will-be-shown-unformatted" />
  179. </div>
  180. <aui:input name="content" type="textarea" value="<%= wikiPage.getContent() %>" />
  181. <%
  182. }
  183. %>
  184. </div>
  185. </aui:fieldset>
  186. <c:if test="<%= ((wikiPage != null) && (wikiPage.getPageId() > 0)) || ((templatePage != null) && WikiNodePermission.contains(permissionChecker, node, ActionKeys.ADD_ATTACHMENT)) %>">
  187. <aui:fieldset collapsed="<%= true %>" collapsible="<%= true %>" label="attachments">
  188. <c:if test="<%= !wikiPage.isNew() && WikiNodePermission.contains(permissionChecker, node, ActionKeys.ADD_ATTACHMENT) %>">
  189. <liferay-util:include page="/wiki/edit_page_attachment.jsp" servletContext="<%= application %>" />
  190. </c:if>
  191. <liferay-util:include page="/wiki/edit_page_view_attachments.jsp" servletContext="<%= application %>" />
  192. </aui:fieldset>
  193. </c:if>
  194. <%
  195. long resourcePrimKey = 0;
  196. if ((wikiPage != null) && !wikiPage.isNew()) {
  197. resourcePrimKey = wikiPage.getResourcePrimKey();
  198. }
  199. else if (templatePage != null) {
  200. resourcePrimKey = templatePage.getResourcePrimKey();
  201. }
  202. long assetEntryId = 0;
  203. long classPK = resourcePrimKey;
  204. if ((wikiPage != null) && !wikiPage.isNew() && !wikiPage.isApproved() && (wikiPage.getVersion() != WikiPageConstants.VERSION_DEFAULT)) {
  205. AssetEntry assetEntry = AssetEntryLocalServiceUtil.fetchEntry(WikiPage.class.getName(), wikiPage.getPrimaryKey());
  206. if (assetEntry != null) {
  207. assetEntryId = assetEntry.getEntryId();
  208. classPK = wikiPage.getPrimaryKey();
  209. }
  210. }
  211. %>
  212. <aui:fieldset collapsed="<%= true %>" collapsible="<%= true %>" label="categorization">
  213. <liferay-asset:asset-categories-selector
  214. className="<%= WikiPage.class.getName() %>"
  215. classPK="<%= classPK %>"
  216. visibilityTypes="<%= AssetVocabularyConstants.VISIBILITY_TYPES %>"
  217. />
  218. <liferay-asset:asset-tags-selector
  219. className="<%= WikiPage.class.getName() %>"
  220. classPK="<%= classPK %>"
  221. />
  222. </aui:fieldset>
  223. <aui:fieldset collapsed="<%= true %>" collapsible="<%= true %>" label="related-assets">
  224. <liferay-asset:input-asset-links
  225. assetEntryId="<%= assetEntryId %>"
  226. className="<%= WikiPage.class.getName() %>"
  227. classPK="<%= classPK %>"
  228. />
  229. </aui:fieldset>
  230. <aui:fieldset collapsed="<%= true %>" collapsible="<%= true %>" label="configuration">
  231. <aui:input name="summary" />
  232. <c:if test="<%= (wikiPage == null) || wikiPage.isNew() || wikiPage.isApproved() %>">
  233. <aui:model-context bean="<%= WikiPageLocalServiceUtil.createWikiPage(0) %>" model="<%= WikiPage.class %>" />
  234. </c:if>
  235. <c:choose>
  236. <c:when test="<%= !formats.isEmpty() %>">
  237. <aui:select changesContext="<%= true %>" name="format">
  238. <%
  239. for (String format : formats) {
  240. %>
  241. <aui:option label="<%= WikiUtil.getFormatLabel(wikiEngineRenderer, format, locale) %>" selected="<%= selectedFormat.equals(format) %>" value="<%= format %>" />
  242. <%
  243. }
  244. %>
  245. <c:if test="<%= !formats.contains(selectedFormat) %>">
  246. <aui:option label="<%= selectedFormat %>" selected="<%= true %>" value="<%= selectedFormat %>" />
  247. </c:if>
  248. </aui:select>
  249. </c:when>
  250. <c:otherwise>
  251. <aui:input name="format" type="hidden" value="<%= selectedFormat %>" />
  252. </c:otherwise>
  253. </c:choose>
  254. <c:if test="<%= (wikiPage != null) && !wikiPage.isNew() %>">
  255. <aui:input label="this-is-a-minor-edit" name="minorEdit" />
  256. </c:if>
  257. </aui:fieldset>
  258. <c:if test="<%= wikiPage != null %>">
  259. <liferay-expando:custom-attributes-available
  260. className="<%= WikiPage.class.getName() %>"
  261. >
  262. <aui:fieldset collapsed="<%= true %>" collapsible="<%= true %>" label="custom-fields">
  263. <liferay-expando:custom-attribute-list
  264. className="<%= WikiPage.class.getName() %>"
  265. classPK="<%= (templatePage != null) ? templatePage.getPrimaryKey() : wikiPage.getPrimaryKey() %>"
  266. editable="<%= true %>"
  267. label="<%= true %>"
  268. />
  269. </aui:fieldset>
  270. </liferay-expando:custom-attributes-available>
  271. </c:if>
  272. <c:if test="<%= (wikiPage == null) || wikiPage.isNew() %>">
  273. <aui:fieldset collapsed="<%= true %>" collapsible="<%= true %>" label="permissions">
  274. <liferay-ui:input-permissions
  275. modelName="<%= WikiPage.class.getName() %>"
  276. />
  277. </aui:fieldset>
  278. </c:if>
  279. <%
  280. boolean pending = false;
  281. if (wikiPage != null) {
  282. pending = wikiPage.isPending();
  283. }
  284. %>
  285. <c:if test="<%= pending %>">
  286. <div class="alert alert-info">
  287. <liferay-ui:message key="there-is-a-publication-workflow-in-process" />
  288. </div>
  289. </c:if>
  290. <%
  291. String saveButtonLabel = "save";
  292. if ((wikiPage == null) || wikiPage.isDraft() || wikiPage.isApproved()) {
  293. saveButtonLabel = "save-as-draft";
  294. }
  295. String publishButtonLabel = "publish";
  296. if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(themeDisplay.getCompanyId(), scopeGroupId, WikiPage.class.getName())) {
  297. publishButtonLabel = "submit-for-publication";
  298. }
  299. %>
  300. <div class="sheet-footer">
  301. <aui:button disabled="<%= pending %>" name="publishButton" primary="<%= true %>" value="<%= publishButtonLabel %>" />
  302. <aui:button name="saveButton" primary="<%= false %>" type="submit" value="<%= saveButtonLabel %>" />
  303. <aui:button href="<%= redirect %>" type="cancel" />
  304. </div>
  305. </aui:fieldset-group>
  306. </c:otherwise>
  307. </c:choose>
  308. </aui:form>
  309. </div>
  310. <liferay-frontend:component
  311. context='<%=
  312. HashMapBuilder.<String, Object>put(
  313. "constants",
  314. HashMapBuilder.<String, Object>put(
  315. "ACTION_PUBLISH", WorkflowConstants.ACTION_PUBLISH
  316. ).put(
  317. "ACTION_SAVE_DRAFT", WorkflowConstants.ACTION_SAVE_DRAFT
  318. ).put(
  319. "CMD", Constants.CMD
  320. ).build()
  321. ).put(
  322. "currentAction", (wikiPage == null) || wikiPage.isNew() ? Constants.ADD : Constants.UPDATE
  323. ).put(
  324. "renderUrl", editPageRenderURL
  325. ).put(
  326. "rootNodeId", liferayPortletResponse.getNamespace() + "wikiEditPageContainer"
  327. ).build()
  328. %>'
  329. module="wiki/js/WikiPortlet.es"
  330. />
  331. <%
  332. if ((wikiPage != null) && !wikiPage.isNew()) {
  333. PortletURL viewPageURL = wikiURLHelper.getViewPageURL(node, title);
  334. PortalUtil.addPortletBreadcrumbEntry(request, wikiPage.getTitle(), viewPageURL.toString());
  335. PortalUtil.addPortletBreadcrumbEntry(request, LanguageUtil.get(request, "edit"), currentURL);
  336. }
  337. else {
  338. PortalUtil.addPortletBreadcrumbEntry(request, LanguageUtil.get(request, "add-page"), currentURL);
  339. }
  340. %>