001
014
015 package com.liferay.portlet.documentlibrary.display.context;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.repository.model.FileEntry;
020 import com.liferay.portal.kernel.repository.model.FileShortcut;
021 import com.liferay.portal.kernel.repository.model.FileVersion;
022 import com.liferay.portal.kernel.servlet.taglib.ui.Menu;
023 import com.liferay.portal.kernel.servlet.taglib.ui.MenuItem;
024 import com.liferay.portal.kernel.servlet.taglib.ui.ToolbarItem;
025 import com.liferay.portal.kernel.util.StringPool;
026 import com.liferay.portal.util.WebKeys;
027 import com.liferay.portlet.documentlibrary.display.context.logic.DLPortletInstanceSettingsHelper;
028 import com.liferay.portlet.documentlibrary.display.context.logic.DLVisualizationHelper;
029 import com.liferay.portlet.documentlibrary.display.context.logic.FileEntryDisplayContextHelper;
030 import com.liferay.portlet.documentlibrary.display.context.logic.FileVersionDisplayContextHelper;
031 import com.liferay.portlet.documentlibrary.display.context.logic.UIItemsBuilder;
032 import com.liferay.portlet.documentlibrary.display.context.util.DLRequestHelper;
033 import com.liferay.portlet.documentlibrary.display.context.util.JSPRenderer;
034 import com.liferay.portlet.documentlibrary.model.DLFileEntryMetadata;
035 import com.liferay.portlet.documentlibrary.model.DLFileVersion;
036 import com.liferay.portlet.documentlibrary.service.DLFileEntryMetadataLocalServiceUtil;
037 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
038 import com.liferay.portlet.dynamicdatamapping.storage.DDMFormValues;
039 import com.liferay.portlet.dynamicdatamapping.storage.StorageEngineUtil;
040
041 import java.io.IOException;
042
043 import java.util.ArrayList;
044 import java.util.Collections;
045 import java.util.List;
046 import java.util.UUID;
047
048 import javax.servlet.ServletException;
049 import javax.servlet.http.HttpServletRequest;
050 import javax.servlet.http.HttpServletResponse;
051
052
055 public class DefaultDLViewFileVersionDisplayContext
056 implements DLViewFileVersionDisplayContext {
057
058 public DefaultDLViewFileVersionDisplayContext(
059 HttpServletRequest request, HttpServletResponse response,
060 FileShortcut fileShortcut)
061 throws PortalException {
062
063 this(request, response, fileShortcut.getFileVersion(), fileShortcut);
064 }
065
066 public DefaultDLViewFileVersionDisplayContext(
067 HttpServletRequest request, HttpServletResponse response,
068 FileVersion fileVersion) {
069
070 this(request, response, fileVersion, null);
071 }
072
073 @Override
074 public DDMFormValues getDDMFormValues(DDMStructure ddmStructure)
075 throws PortalException {
076
077 DLFileEntryMetadata dlFileEntryMetadata =
078 DLFileEntryMetadataLocalServiceUtil.getFileEntryMetadata(
079 ddmStructure.getStructureId(), _fileVersion.getFileVersionId());
080
081 return StorageEngineUtil.getDDMFormValues(
082 dlFileEntryMetadata.getDDMStorageId());
083 }
084
085 @Override
086 public List<DDMStructure> getDDMStructures() throws PortalException {
087 if (_fileVersionDisplayContextHelper.isDLFileVersion()) {
088 DLFileVersion dlFileVersion =
089 (DLFileVersion)_fileVersion.getModel();
090
091 return dlFileVersion.getDDMStructures();
092 }
093
094 return Collections.emptyList();
095 }
096
097 @Override
098 public Menu getMenu() throws PortalException {
099 Menu menu = new Menu();
100
101 String direction = "left";
102
103 if (_dlVisualizationHelper.isShowMinimalActionsButton()) {
104 direction = "down";
105 }
106
107 menu.setDirection(direction);
108
109 boolean extended = true;
110
111 if (_dlVisualizationHelper.isShowMinimalActionsButton()) {
112 extended = false;
113 }
114
115 menu.setExtended(extended);
116
117 String icon = null;
118
119 if (_dlVisualizationHelper.isShowMinimalActionsButton()) {
120 icon = StringPool.BLANK;
121 }
122
123 menu.setIcon(icon);
124
125 menu.setMenuItems(_getMenuItems());
126
127 String message = "actions";
128
129 if (_dlVisualizationHelper.isShowMinimalActionsButton()) {
130 message = StringPool.BLANK;
131 }
132
133 menu.setMessage(message);
134
135 menu.setShowWhenSingleIcon(
136 _dlVisualizationHelper.isShowWhenSingleIconActionButton());
137 menu.setTriggerCssClass("btn btn-default");
138
139 return menu;
140 }
141
142 @Override
143 public List<ToolbarItem> getToolbarItems() throws PortalException {
144 List<ToolbarItem> toolbarItems = new ArrayList<>();
145
146 _uiItemsBuilder.addDownloadToolbarItem(toolbarItems);
147
148 _uiItemsBuilder.addOpenInMsOfficeToolbarItem(toolbarItems);
149
150 _uiItemsBuilder.addEditToolbarItem(toolbarItems);
151
152 _uiItemsBuilder.addMoveToolbarItem(toolbarItems);
153
154 _uiItemsBuilder.addCheckoutToolbarItem(toolbarItems);
155
156 _uiItemsBuilder.addCancelCheckoutToolbarItem(toolbarItems);
157
158 _uiItemsBuilder.addCheckinToolbarItem(toolbarItems);
159
160 _uiItemsBuilder.addPermissionsToolbarItem(toolbarItems);
161
162 _uiItemsBuilder.addMoveToTheRecycleBinToolbarItem(toolbarItems);
163
164 _uiItemsBuilder.addDeleteToolbarItem(toolbarItems);
165
166 return toolbarItems;
167 }
168
169 @Override
170 public UUID getUuid() {
171 return _UUID;
172 }
173
174 @Override
175 public boolean isDownloadLinkVisible() throws PortalException {
176 return _fileEntryDisplayContextHelper.isDownloadActionAvailable();
177 }
178
179 @Override
180 public boolean isVersionInfoVisible() {
181 return true;
182 }
183
184 @Override
185 public void renderPreview(
186 HttpServletRequest request, HttpServletResponse response)
187 throws IOException, ServletException {
188
189 JSPRenderer jspRenderer = new JSPRenderer(
190 "/html/portlet/document_library/view_file_entry_preview.jsp");
191
192 jspRenderer.setAttribute(
193 WebKeys.DOCUMENT_LIBRARY_FILE_VERSION, _fileVersion);
194
195 jspRenderer.render(request, response);
196 }
197
198 private DefaultDLViewFileVersionDisplayContext(
199 HttpServletRequest request, HttpServletResponse response,
200 FileVersion fileVersion, FileShortcut fileShortcut) {
201
202 try {
203 _fileVersion = fileVersion;
204
205 DLRequestHelper dlRequestHelper = new DLRequestHelper(request);
206
207 _dlVisualizationHelper = new DLVisualizationHelper(dlRequestHelper);
208
209 _dlPortletInstanceSettingsHelper =
210 new DLPortletInstanceSettingsHelper(dlRequestHelper);
211
212 _fileEntryDisplayContextHelper = new FileEntryDisplayContextHelper(
213 dlRequestHelper.getPermissionChecker(),
214 _getFileEntry(fileVersion));
215
216 _fileVersionDisplayContextHelper =
217 new FileVersionDisplayContextHelper(fileVersion);
218
219 if (fileShortcut == null) {
220 _uiItemsBuilder = new UIItemsBuilder(
221 request, response, fileVersion);
222 }
223 else {
224 _uiItemsBuilder = new UIItemsBuilder(
225 request, response, fileShortcut);
226 }
227 }
228 catch (PortalException pe) {
229 throw new SystemException(
230 "Unable to build DefaultDLViewFileVersionDisplayContext for " +
231 fileVersion,
232 pe);
233 }
234 }
235
236 private FileEntry _getFileEntry(FileVersion fileVersion)
237 throws PortalException {
238
239 if (fileVersion != null) {
240 return fileVersion.getFileEntry();
241 }
242
243 return null;
244 }
245
246 private List<MenuItem> _getMenuItems() throws PortalException {
247 List<MenuItem> menuItems = new ArrayList<>();
248
249 if (_dlPortletInstanceSettingsHelper.isShowActions()) {
250 _uiItemsBuilder.addDownloadMenuItem(menuItems);
251
252 _uiItemsBuilder.addOpenInMsOfficeMenuItem(menuItems);
253
254 _uiItemsBuilder.addViewOriginalFileMenuItem(menuItems);
255
256 _uiItemsBuilder.addEditMenuItem(menuItems);
257
258 _uiItemsBuilder.addMoveMenuItem(menuItems);
259
260 _uiItemsBuilder.addCheckoutMenuItem(menuItems);
261
262 _uiItemsBuilder.addCheckinMenuItem(menuItems);
263
264 _uiItemsBuilder.addCancelCheckoutMenuItem(menuItems);
265
266 _uiItemsBuilder.addPermissionsMenuItem(menuItems);
267
268 _uiItemsBuilder.addDeleteMenuItem(menuItems);
269 }
270
271 return menuItems;
272 }
273
274 private static final UUID _UUID = UUID.fromString(
275 "85F6C50E-3893-4E32-9D63-208528A503FA");
276
277 private final DLPortletInstanceSettingsHelper
278 _dlPortletInstanceSettingsHelper;
279 private final DLVisualizationHelper _dlVisualizationHelper;
280 private final FileEntryDisplayContextHelper _fileEntryDisplayContextHelper;
281 private final FileVersion _fileVersion;
282 private final FileVersionDisplayContextHelper
283 _fileVersionDisplayContextHelper;
284 private final UIItemsBuilder _uiItemsBuilder;
285
286 }