Java tutorial
/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.document.library.web.internal.display.context.logic; import com.liferay.document.library.display.context.DLUIItemKeys; import com.liferay.document.library.kernel.model.DLFileEntryConstants; import com.liferay.document.library.kernel.model.DLFolderConstants; import com.liferay.document.library.kernel.util.DLUtil; import com.liferay.document.library.web.internal.util.DLTrashUtil; import com.liferay.portal.kernel.bean.BeanParamUtil; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.io.unsync.UnsyncStringWriter; import com.liferay.portal.kernel.language.LanguageUtil; import com.liferay.portal.kernel.language.UnicodeLanguageUtil; import com.liferay.portal.kernel.portlet.LiferayPortletRequest; import com.liferay.portal.kernel.portlet.LiferayPortletResponse; import com.liferay.portal.kernel.portlet.LiferayWindowState; import com.liferay.portal.kernel.portlet.PortletURLUtil; import com.liferay.portal.kernel.repository.model.FileEntry; import com.liferay.portal.kernel.repository.model.FileShortcut; import com.liferay.portal.kernel.repository.model.FileVersion; import com.liferay.portal.kernel.servlet.BrowserSnifferUtil; import com.liferay.portal.kernel.servlet.taglib.ui.DeleteMenuItem; import com.liferay.portal.kernel.servlet.taglib.ui.JavaScriptMenuItem; import com.liferay.portal.kernel.servlet.taglib.ui.JavaScriptToolbarItem; import com.liferay.portal.kernel.servlet.taglib.ui.JavaScriptUIItem; import com.liferay.portal.kernel.servlet.taglib.ui.MenuItem; import com.liferay.portal.kernel.servlet.taglib.ui.ToolbarItem; import com.liferay.portal.kernel.servlet.taglib.ui.URLMenuItem; import com.liferay.portal.kernel.servlet.taglib.ui.URLToolbarItem; import com.liferay.portal.kernel.servlet.taglib.ui.URLUIItem; import com.liferay.portal.kernel.template.Template; import com.liferay.portal.kernel.template.TemplateConstants; import com.liferay.portal.kernel.template.TemplateManagerUtil; import com.liferay.portal.kernel.template.URLTemplateResource; import com.liferay.portal.kernel.theme.PortletDisplay; import com.liferay.portal.kernel.theme.ThemeDisplay; import com.liferay.portal.kernel.util.Constants; import com.liferay.portal.kernel.util.HtmlUtil; import com.liferay.portal.kernel.util.JavaConstants; import com.liferay.portal.kernel.util.PortalUtil; import com.liferay.portal.kernel.util.StringBundler; import com.liferay.portal.kernel.util.StringPool; import com.liferay.portal.kernel.util.TextFormatter; import com.liferay.portal.kernel.util.WebKeys; import com.liferay.portal.util.PropsValues; import com.liferay.taglib.security.PermissionsURLTag; import java.util.List; import java.util.ResourceBundle; import javax.portlet.ActionRequest; import javax.portlet.PortletRequest; import javax.portlet.PortletResponse; import javax.portlet.PortletURL; import javax.servlet.http.HttpServletRequest; /** * @author Ivn Zaera */ public class UIItemsBuilder { public UIItemsBuilder(HttpServletRequest request, FileShortcut fileShortcut, ResourceBundle resourceBundle) throws PortalException { this(request, fileShortcut.getFileVersion(), fileShortcut, resourceBundle); } public UIItemsBuilder(HttpServletRequest request, FileVersion fileVersion, ResourceBundle resourceBundle) { this(request, fileVersion, null, resourceBundle); } public void addCancelCheckoutMenuItem(List<MenuItem> menuItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isCancelCheckoutDocumentActionAvailable()) { return; } PortletURL portletURL = _getActionURL("/document_library/edit_file_entry", Constants.CANCEL_CHECKOUT); portletURL.setParameter("fileEntryId", String.valueOf(_fileEntry.getFileEntryId())); _addURLUIItem(new URLMenuItem(), menuItems, DLUIItemKeys.CANCEL_CHECKOUT, "cancel-checkout[document]", portletURL.toString()); } public void addCancelCheckoutToolbarItem(List<ToolbarItem> toolbarItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isCancelCheckoutDocumentActionAvailable()) { return; } _addJavaScriptUIItem(new JavaScriptToolbarItem(), toolbarItems, DLUIItemKeys.CANCEL_CHECKOUT, LanguageUtil.get(_resourceBundle, "cancel-checkout[document]"), getSubmitFormJavaScript(Constants.CANCEL_CHECKOUT, null)); } public void addCheckinMenuItem(List<MenuItem> menuItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isCheckinActionAvailable()) { return; } menuItems.add(getJavacriptCheckinMenuItem()); } public void addCheckinToolbarItem(List<ToolbarItem> toolbarItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isCheckinActionAvailable()) { return; } PortletURL portletURL = _getActionURL("/document_library/edit_file_entry", Constants.CHECKIN); portletURL.setParameter("fileEntryId", String.valueOf(_fileEntry.getFileEntryId())); JavaScriptToolbarItem javaScriptToolbarItem = _addJavaScriptUIItem(new JavaScriptToolbarItem(), toolbarItems, DLUIItemKeys.CHECKIN, LanguageUtil.get(_resourceBundle, "checkin"), getNamespace() + "showVersionDetailsDialog('" + portletURL + "');"); String javaScript = "/com/liferay/document/library/web/display/context/dependencies" + "/checkin_js.ftl"; Class<?> clazz = getClass(); URLTemplateResource urlTemplateResource = new URLTemplateResource(javaScript, clazz.getResource(javaScript)); Template template = TemplateManagerUtil.getTemplate(TemplateConstants.LANG_TYPE_FTL, urlTemplateResource, false); template.put("dialogCancelButtonLabel", LanguageUtil.get(_resourceBundle, "cancel")); template.put("dialogSaveButtonLabel", LanguageUtil.get(_resourceBundle, "save")); template.put("dialogTitle", UnicodeLanguageUtil.get(_resourceBundle, "describe-your-changes")); template.put("namespace", getNamespace()); UnsyncStringWriter unsyncStringWriter = new UnsyncStringWriter(); template.processTemplate(unsyncStringWriter); javaScriptToolbarItem.setJavaScript(unsyncStringWriter.toString()); } public void addCheckoutMenuItem(List<MenuItem> menuItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isCheckoutDocumentActionAvailable()) { return; } PortletURL portletURL = _getActionURL("/document_library/edit_file_entry", Constants.CHECKOUT); portletURL.setParameter("fileEntryId", String.valueOf(_fileEntry.getFileEntryId())); _addURLUIItem(new URLMenuItem(), menuItems, DLUIItemKeys.CHECKOUT, "checkout[document]", portletURL.toString()); } public void addCheckoutToolbarItem(List<ToolbarItem> toolbarItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isCheckoutDocumentActionAvailable()) { return; } _addJavaScriptUIItem(new JavaScriptToolbarItem(), toolbarItems, DLUIItemKeys.CHECKOUT, LanguageUtil.get(_resourceBundle, "checkout[document]"), getSubmitFormJavaScript(Constants.CHECKOUT, null)); } public void addDeleteMenuItem(List<MenuItem> menuItems) throws PortalException { String cmd = null; if (isDeleteActionAvailable()) { cmd = Constants.DELETE; } else if (isMoveToTheRecycleBinActionAvailable()) { cmd = Constants.MOVE_TO_TRASH; } else { return; } DeleteMenuItem deleteMenuItem = new DeleteMenuItem(); deleteMenuItem.setKey(DLUIItemKeys.DELETE); if (cmd.equals(Constants.MOVE_TO_TRASH)) { deleteMenuItem.setTrash(true); } String mvcActionCommandName = "/document_library/edit_file_entry"; if (_fileShortcut != null) { mvcActionCommandName = "/document_library/edit_file_shortcut"; } PortletURL portletURL = _getActionURL(mvcActionCommandName, cmd); if (_fileShortcut == null) { portletURL.setParameter("fileEntryId", String.valueOf(_fileEntry.getFileEntryId())); } else { portletURL.setParameter("fileShortcutId", String.valueOf(_fileShortcut.getFileShortcutId())); } deleteMenuItem.setURL(portletURL.toString()); menuItems.add(deleteMenuItem); } public void addDeleteToolbarItem(List<ToolbarItem> toolbarItems) throws PortalException { if (!isDeleteActionAvailable()) { return; } LiferayPortletResponse liferayPortletResponse = _getLiferayPortletResponse(); PortletURL portletURL = liferayPortletResponse.createRenderURL(); long folderId = _fileEntry.getFolderId(); if (folderId == DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) { portletURL.setParameter("mvcRenderCommandName", "/document_library/view"); } else { portletURL.setParameter("mvcRenderCommandName", "/document_library/view_folder"); } portletURL.setParameter("folderId", String.valueOf(folderId)); StringBundler sb = new StringBundler(5); sb.append("if (confirm('"); sb.append(UnicodeLanguageUtil.get(_resourceBundle, "are-you-sure-you-want-to-delete-this")); sb.append("')) {"); sb.append(getSubmitFormJavaScript(Constants.DELETE, portletURL.toString())); sb.append("}"); _addJavaScriptUIItem(new JavaScriptToolbarItem(), toolbarItems, DLUIItemKeys.DELETE, LanguageUtil.get(_resourceBundle, "delete"), sb.toString()); } public void addDownloadMenuItem(List<MenuItem> menuItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isDownloadActionAvailable()) { return; } String label = TextFormatter.formatStorageSize(_fileEntry.getSize(), _themeDisplay.getLocale()); label = _themeDisplay.translate("download") + " (" + label + ")"; String url = DLUtil.getDownloadURL(_fileEntry, _fileVersion, _themeDisplay, StringPool.BLANK, false, true); URLMenuItem urlMenuItem = _addURLUIItem(new URLMenuItem(), menuItems, DLUIItemKeys.DOWNLOAD, label, url); urlMenuItem.setMethod("get"); urlMenuItem.setTarget("_blank"); } public void addDownloadToolbarItem(List<ToolbarItem> toolbarItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isDownloadActionAvailable()) { return; } _addURLUIItem(new URLToolbarItem(), toolbarItems, DLUIItemKeys.DOWNLOAD, LanguageUtil.get(_resourceBundle, "download"), DLUtil.getDownloadURL(_fileEntry, _fileVersion, _themeDisplay, StringPool.BLANK)); } public void addEditMenuItem(List<MenuItem> menuItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isEditActionAvailable()) { return; } PortletURL portletURL = null; if (_fileShortcut == null) { portletURL = _getRenderURL("/document_library/edit_file_entry"); } else { portletURL = _getRenderURL("/document_library/edit_file_shortcut"); } portletURL.setParameter("backURL", _getCurrentURL()); _addURLUIItem(new URLMenuItem(), menuItems, DLUIItemKeys.EDIT, "edit", portletURL.toString()); } public void addEditToolbarItem(List<ToolbarItem> toolbarItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isEditActionAvailable()) { return; } PortletURL portletURL = _getRenderURL("/document_library/edit_file_entry"); _addURLUIItem(new URLToolbarItem(), toolbarItems, DLUIItemKeys.EDIT, LanguageUtil.get(_resourceBundle, "edit"), portletURL.toString()); } public void addMoveMenuItem(List<MenuItem> menuItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isMoveActionAvailable()) { return; } LiferayPortletResponse liferayPortletResponse = _getLiferayPortletResponse(); PortletURL portletURL = liferayPortletResponse.createRenderURL(); portletURL.setParameter("mvcRenderCommandName", "/document_library/move_entry"); PortletURL redirectURL = liferayPortletResponse.createRenderURL(); long folderId = 0; if (_fileShortcut != null) { folderId = _fileShortcut.getFolderId(); } else { folderId = _fileEntry.getFolderId(); } if (folderId == DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) { redirectURL.setParameter("mvcRenderCommandName", "/document_library/view"); } else { redirectURL.setParameter("mvcRenderCommandName", "/document_library/view_folder"); } redirectURL.setParameter("folderId", String.valueOf(folderId)); portletURL.setParameter("redirect", redirectURL.toString()); if (_fileShortcut != null) { portletURL.setParameter("rowIdsDLFileShortcut", String.valueOf(_fileShortcut.getFileShortcutId())); } else { portletURL.setParameter("rowIdsFileEntry", String.valueOf(_fileEntry.getFileEntryId())); } _addURLUIItem(new URLMenuItem(), menuItems, DLUIItemKeys.MOVE, "move", portletURL.toString()); } public void addMoveToolbarItem(List<ToolbarItem> toolbarItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isMoveActionAvailable()) { return; } PortletURL portletURL = _getRenderURL("/document_library/move_entry"); _addURLUIItem(new URLToolbarItem(), toolbarItems, DLUIItemKeys.MOVE, LanguageUtil.get(_resourceBundle, "move"), portletURL.toString()); } public void addMoveToTheRecycleBinToolbarItem(List<ToolbarItem> toolbarItems) throws PortalException { if (!isMoveToTheRecycleBinActionAvailable()) { return; } LiferayPortletResponse liferayPortletResponse = _getLiferayPortletResponse(); PortletURL portletURL = liferayPortletResponse.createRenderURL(); long folderId = _fileEntry.getFolderId(); if (folderId == DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) { portletURL.setParameter("mvcRenderCommandName", "/document_library/view"); } else { portletURL.setParameter("mvcRenderCommandName", "/document_library/view_folder"); } portletURL.setParameter("folderId", String.valueOf(folderId)); portletURL.setParameter("folderId", String.valueOf(_fileEntry.getFolderId())); _addJavaScriptUIItem(new JavaScriptToolbarItem(), toolbarItems, DLUIItemKeys.MOVE_TO_THE_RECYCLE_BIN, LanguageUtil.get(_resourceBundle, "move-to-the-recycle-bin"), getSubmitFormJavaScript(Constants.MOVE_TO_TRASH, portletURL.toString())); } public void addOpenInMsOfficeMenuItem(List<MenuItem> menuItems) throws PortalException { if (!isOpenInMsOfficeActionAvailable()) { return; } String webDavURL = DLUtil.getWebDavURL(_themeDisplay, _fileEntry.getFolder(), _fileEntry, PropsValues.DL_FILE_ENTRY_OPEN_IN_MS_OFFICE_MANUAL_CHECK_IN_REQUIRED, true); String onClick = getNamespace() + "openDocument('" + webDavURL + "');"; JavaScriptMenuItem javascriptMenuItem = _addJavaScriptUIItem(new JavaScriptMenuItem(), menuItems, DLUIItemKeys.OPEN_IN_MS_OFFICE, "open-in-ms-office", onClick); String javaScript = "/com/liferay/document/library/web/display/context/dependencies" + "/open_in_ms_office_js.ftl"; Class<?> clazz = getClass(); URLTemplateResource urlTemplateResource = new URLTemplateResource(javaScript, clazz.getResource(javaScript)); Template template = TemplateManagerUtil.getTemplate(TemplateConstants.LANG_TYPE_FTL, urlTemplateResource, false); template.put("errorMessage", UnicodeLanguageUtil.get(_resourceBundle, "cannot-open-the-requested-document-due-to-the-following-" + "reason")); template.put("namespace", getNamespace()); UnsyncStringWriter unsyncStringWriter = new UnsyncStringWriter(); template.processTemplate(unsyncStringWriter); javascriptMenuItem.setJavaScript(unsyncStringWriter.toString()); } public void addOpenInMsOfficeToolbarItem(List<ToolbarItem> toolbarItems) throws PortalException { if (!isOpenInMsOfficeActionAvailable()) { return; } String webDavURL = DLUtil.getWebDavURL(_themeDisplay, _fileEntry.getFolder(), _fileEntry, PropsValues.DL_FILE_ENTRY_OPEN_IN_MS_OFFICE_MANUAL_CHECK_IN_REQUIRED); StringBundler sb = new StringBundler(4); sb.append(getNamespace()); sb.append("openDocument('"); sb.append(webDavURL); sb.append("');"); _addJavaScriptUIItem(new JavaScriptToolbarItem(), toolbarItems, DLUIItemKeys.OPEN_IN_MS_OFFICE, LanguageUtil.get(_resourceBundle, "open-in-ms-office"), sb.toString()); } public void addPermissionsMenuItem(List<MenuItem> menuItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isPermissionsButtonVisible()) { return; } String url = null; try { url = PermissionsURLTag.doTag(null, DLFileEntryConstants.getClassName(), HtmlUtil.unescape(_fileEntry.getTitle()), null, String.valueOf(_fileEntry.getFileEntryId()), LiferayWindowState.POP_UP.toString(), null, _request); } catch (Exception e) { throw new SystemException("Unable to create permissions URL", e); } URLMenuItem urlMenuItem = _addURLUIItem(new URLMenuItem(), menuItems, DLUIItemKeys.PERMISSIONS, "permissions", url); urlMenuItem.setMethod("get"); urlMenuItem.setUseDialog(true); } public void addPermissionsToolbarItem(List<ToolbarItem> toolbarItems) throws PortalException { if (!_fileEntryDisplayContextHelper.isPermissionsButtonVisible()) { return; } String permissionsURL = null; try { permissionsURL = PermissionsURLTag.doTag(null, DLFileEntryConstants.getClassName(), HtmlUtil.unescape(_fileEntry.getTitle()), null, String.valueOf(_fileEntry.getFileEntryId()), LiferayWindowState.POP_UP.toString(), null, _request); } catch (Exception e) { throw new SystemException("Unable to create permissions URL", e); } StringBundler sb = new StringBundler(5); sb.append("Liferay.Util.openWindow({title: '"); sb.append(UnicodeLanguageUtil.get(_resourceBundle, "permissions")); sb.append("', uri: '"); sb.append(permissionsURL); sb.append("'});"); _addJavaScriptUIItem(new JavaScriptToolbarItem(), toolbarItems, DLUIItemKeys.PERMISSIONS, LanguageUtil.get(_resourceBundle, "permissions"), sb.toString()); } public void addViewOriginalFileMenuItem(List<MenuItem> menuItems) { if (_fileShortcut == null) { return; } PortletURL portletURL = _getRenderURL("/document_library/view_file_entry"); portletURL.setParameter("redirect", _getCurrentURL()); portletURL.setParameter("fileEntryId", String.valueOf(_fileShortcut.getToFileEntryId())); _addURLUIItem(new URLMenuItem(), menuItems, DLUIItemKeys.VIEW_ORIGINAL_FILE, "view-original-file", portletURL.toString()); } public JavaScriptMenuItem getJavacriptCheckinMenuItem() throws PortalException { PortletURL portletURL = _getActionURL("/document_library/edit_file_entry", Constants.CHECKIN); portletURL.setParameter("fileEntryId", String.valueOf(_fileEntry.getFileEntryId())); JavaScriptMenuItem javascriptMenuItem = new JavaScriptMenuItem(); javascriptMenuItem.setKey(DLUIItemKeys.CHECKIN); javascriptMenuItem.setLabel("checkin"); javascriptMenuItem.setOnClick(getNamespace() + "showVersionDetailsDialog('" + portletURL + "');"); String javaScript = "/com/liferay/document/library/web/display/context/dependencies" + "/checkin_js.ftl"; Class<?> clazz = getClass(); URLTemplateResource urlTemplateResource = new URLTemplateResource(javaScript, clazz.getResource(javaScript)); Template template = TemplateManagerUtil.getTemplate(TemplateConstants.LANG_TYPE_FTL, urlTemplateResource, false); template.put("dialogCancelButtonLabel", LanguageUtil.get(_resourceBundle, "cancel")); template.put("dialogSaveButtonLabel", LanguageUtil.get(_resourceBundle, "save")); template.put("dialogTitle", UnicodeLanguageUtil.get(_resourceBundle, "describe-your-changes")); template.put("namespace", getNamespace()); template.put("randomNamespace", _request.getAttribute("randomNamespace")); UnsyncStringWriter unsyncStringWriter = new UnsyncStringWriter(); template.processTemplate(unsyncStringWriter); javascriptMenuItem.setJavaScript(unsyncStringWriter.toString()); return javascriptMenuItem; } public boolean isOpenInMsOfficeActionAvailable() throws PortalException { if (_fileEntryDisplayContextHelper.hasViewPermission() && _fileVersionDisplayContextHelper.isMsOffice() && _isWebDAVEnabled() && _isIEOnWin32()) { return true; } return false; } protected String getNamespace() { LiferayPortletResponse liferayPortletResponse = _getLiferayPortletResponse(); return liferayPortletResponse.getNamespace(); } protected String getSubmitFormJavaScript(String cmd, String redirect) { StringBundler sb = new StringBundler(18); sb.append("document."); sb.append(getNamespace()); sb.append("fm."); sb.append(getNamespace()); sb.append(Constants.CMD); sb.append(".value = '"); sb.append(cmd); sb.append("';"); if (redirect != null) { sb.append("document."); sb.append(getNamespace()); sb.append("fm."); sb.append(getNamespace()); sb.append("redirect.value = '"); sb.append(redirect); sb.append("';"); } sb.append("submitForm(document."); sb.append(getNamespace()); sb.append("fm);"); return sb.toString(); } protected boolean isDeleteActionAvailable() throws PortalException { if (_fileEntryDisplayContextHelper.isFileEntryDeletable() && !_isFileEntryTrashable()) { return true; } return false; } protected boolean isMoveToTheRecycleBinActionAvailable() throws PortalException { if (!isDeleteActionAvailable() && _fileEntryDisplayContextHelper.isFileEntryDeletable()) { return true; } return false; } private UIItemsBuilder(HttpServletRequest request, FileVersion fileVersion, FileShortcut fileShortcut, ResourceBundle resourceBundle) { try { _request = request; _fileVersion = fileVersion; _fileShortcut = fileShortcut; _resourceBundle = resourceBundle; FileEntry fileEntry = null; if (fileVersion != null) { fileEntry = fileVersion.getFileEntry(); } _fileEntry = fileEntry; _folderId = BeanParamUtil.getLong(_fileEntry, request, "folderId"); _themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); _fileEntryDisplayContextHelper = new FileEntryDisplayContextHelper(_themeDisplay.getPermissionChecker(), _fileEntry); _fileVersionDisplayContextHelper = new FileVersionDisplayContextHelper(fileVersion); } catch (PortalException pe) { throw new SystemException("Unable to build UIItemsBuilder for " + fileVersion, pe); } } private <T extends JavaScriptUIItem> T _addJavaScriptUIItem(T javascriptUIItem, List<? super T> javascriptUIItems, String key, String label, String onClick) { javascriptUIItem.setKey(key); javascriptUIItem.setLabel(label); javascriptUIItem.setOnClick(onClick); javascriptUIItems.add(javascriptUIItem); return javascriptUIItem; } private <T extends URLUIItem> T _addURLUIItem(T urlUIItem, List<? super T> urlUIItems, String key, String label, String url) { urlUIItem.setKey(key); urlUIItem.setLabel(label); urlUIItem.setURL(url); urlUIItems.add(urlUIItem); return urlUIItem; } private PortletURL _getActionURL(String mvcActionCommandName, String cmd) { LiferayPortletResponse liferayPortletResponse = _getLiferayPortletResponse(); PortletURL portletURL = liferayPortletResponse.createActionURL(); portletURL.setParameter(ActionRequest.ACTION_NAME, mvcActionCommandName); portletURL.setParameter(Constants.CMD, cmd); portletURL.setParameter("redirect", _getCurrentURL()); return portletURL; } private String _getCurrentURL() { if (_currentURL != null) { return _currentURL; } LiferayPortletRequest liferayPortletRequest = _getLiferayPortletRequest(); LiferayPortletResponse liferayPortletResponse = _getLiferayPortletResponse(); PortletURL portletURL = PortletURLUtil.getCurrent(liferayPortletRequest, liferayPortletResponse); _currentURL = portletURL.toString(); return _currentURL; } private LiferayPortletRequest _getLiferayPortletRequest() { PortletRequest portletRequest = (PortletRequest) _request.getAttribute(JavaConstants.JAVAX_PORTLET_REQUEST); return PortalUtil.getLiferayPortletRequest(portletRequest); } private LiferayPortletResponse _getLiferayPortletResponse() { PortletResponse portletResponse = (PortletResponse) _request .getAttribute(JavaConstants.JAVAX_PORTLET_RESPONSE); return PortalUtil.getLiferayPortletResponse(portletResponse); } private PortletURL _getRenderURL(String mvcRenderCommandName) { LiferayPortletResponse liferayPortletResponse = _getLiferayPortletResponse(); PortletURL portletURL = liferayPortletResponse.createRenderURL(); portletURL.setParameter("mvcRenderCommandName", mvcRenderCommandName); portletURL.setParameter("redirect", _getCurrentURL()); if (_fileShortcut != null) { portletURL.setParameter("fileShortcutId", String.valueOf(_fileShortcut.getFileShortcutId())); } else { portletURL.setParameter("fileEntryId", String.valueOf(_fileEntry.getFileEntryId())); } return portletURL; } private boolean _isFileEntryTrashable() throws PortalException { if (_fileEntryDisplayContextHelper.isDLFileEntry() && _isTrashEnabled()) { return true; } return false; } private boolean _isIEOnWin32() { if (_ieOnWin32 == null) { _ieOnWin32 = BrowserSnifferUtil.isIeOnWin32(_request); } return _ieOnWin32; } private boolean _isTrashEnabled() throws PortalException { if (_trashEnabled == null) { _trashEnabled = DLTrashUtil.isTrashEnabled(_themeDisplay.getScopeGroupId(), _fileEntry.getRepositoryId()); } return _trashEnabled; } private boolean _isWebDAVEnabled() { PortletDisplay portletDisplay = _themeDisplay.getPortletDisplay(); return portletDisplay.isWebDAVEnabled(); } private String _currentURL; private final FileEntry _fileEntry; private final FileEntryDisplayContextHelper _fileEntryDisplayContextHelper; private FileShortcut _fileShortcut; private final FileVersion _fileVersion; private final FileVersionDisplayContextHelper _fileVersionDisplayContextHelper; private final long _folderId; private Boolean _ieOnWin32; private final HttpServletRequest _request; private final ResourceBundle _resourceBundle; private final ThemeDisplay _themeDisplay; private Boolean _trashEnabled; }