001
014
015 package com.liferay.portlet.documentlibrary.display.context.logic;
016
017 import com.liferay.portal.kernel.bean.BeanParamUtil;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.exception.SystemException;
020 import com.liferay.portal.kernel.io.unsync.UnsyncStringWriter;
021 import com.liferay.portal.kernel.language.LanguageUtil;
022 import com.liferay.portal.kernel.language.UnicodeLanguageUtil;
023 import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
024 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
025 import com.liferay.portal.kernel.portlet.LiferayWindowState;
026 import com.liferay.portal.kernel.repository.model.FileEntry;
027 import com.liferay.portal.kernel.repository.model.FileShortcut;
028 import com.liferay.portal.kernel.repository.model.FileVersion;
029 import com.liferay.portal.kernel.servlet.BrowserSnifferUtil;
030 import com.liferay.portal.kernel.servlet.taglib.ui.DeleteMenuItem;
031 import com.liferay.portal.kernel.servlet.taglib.ui.JavaScriptMenuItem;
032 import com.liferay.portal.kernel.servlet.taglib.ui.JavaScriptToolbarItem;
033 import com.liferay.portal.kernel.servlet.taglib.ui.JavaScriptUIItem;
034 import com.liferay.portal.kernel.servlet.taglib.ui.MenuItem;
035 import com.liferay.portal.kernel.servlet.taglib.ui.ToolbarItem;
036 import com.liferay.portal.kernel.servlet.taglib.ui.URLMenuItem;
037 import com.liferay.portal.kernel.servlet.taglib.ui.URLToolbarItem;
038 import com.liferay.portal.kernel.servlet.taglib.ui.URLUIItem;
039 import com.liferay.portal.kernel.template.Template;
040 import com.liferay.portal.kernel.template.TemplateConstants;
041 import com.liferay.portal.kernel.template.TemplateManagerUtil;
042 import com.liferay.portal.kernel.template.URLTemplateResource;
043 import com.liferay.portal.kernel.util.Constants;
044 import com.liferay.portal.kernel.util.HtmlUtil;
045 import com.liferay.portal.kernel.util.JavaConstants;
046 import com.liferay.portal.kernel.util.StringBundler;
047 import com.liferay.portal.kernel.util.StringPool;
048 import com.liferay.portal.kernel.util.TextFormatter;
049 import com.liferay.portal.theme.PortletDisplay;
050 import com.liferay.portal.theme.ThemeDisplay;
051 import com.liferay.portal.util.PortalUtil;
052 import com.liferay.portal.util.PropsValues;
053 import com.liferay.portal.util.WebKeys;
054 import com.liferay.portlet.PortletURLUtil;
055 import com.liferay.portlet.documentlibrary.display.context.DLUIItemKeys;
056 import com.liferay.portlet.documentlibrary.model.DLFileEntryConstants;
057 import com.liferay.portlet.documentlibrary.util.DLUtil;
058 import com.liferay.portlet.trash.util.TrashUtil;
059 import com.liferay.taglib.security.PermissionsURLTag;
060
061 import java.util.List;
062
063 import javax.portlet.PortletRequest;
064 import javax.portlet.PortletResponse;
065 import javax.portlet.PortletURL;
066
067 import javax.servlet.http.HttpServletRequest;
068 import javax.servlet.http.HttpServletResponse;
069
070
073 public class UIItemsBuilder {
074
075 public UIItemsBuilder(
076 HttpServletRequest request, HttpServletResponse response,
077 FileShortcut fileShortcut)
078 throws PortalException {
079
080 this(request, response, fileShortcut.getFileVersion(), fileShortcut);
081 }
082
083 public UIItemsBuilder(
084 HttpServletRequest request, HttpServletResponse response,
085 FileVersion fileVersion) {
086
087 this(request, response, fileVersion, null);
088 }
089
090 public void addCancelCheckoutMenuItem(List<MenuItem> menuItems)
091 throws PortalException {
092
093 if (!_fileEntryDisplayContextHelper.
094 isCancelCheckoutDocumentActionAvailable()) {
095
096 return;
097 }
098
099 _addURLUIItem(
100 new URLMenuItem(), menuItems, "icon-remove",
101 DLUIItemKeys.CANCEL_CHECKOUT, "cancel-checkout[document]",
102 _getActionURL(
103 "/document_library/edit_file_entry",
104 Constants.CANCEL_CHECKOUT));
105 }
106
107 public void addCancelCheckoutToolbarItem(List<ToolbarItem> toolbarItems)
108 throws PortalException {
109
110 if (!_fileEntryDisplayContextHelper.
111 isCancelCheckoutDocumentActionAvailable()) {
112
113 return;
114 }
115
116 _addJavaScriptUIItem(
117 new JavaScriptToolbarItem(), toolbarItems, "icon-undo",
118 DLUIItemKeys.CANCEL_CHECKOUT,
119 LanguageUtil.get(_request, "cancel-checkout[document]"),
120 getSubmitFormJavaScript(Constants.CANCEL_CHECKOUT, null));
121 }
122
123 public void addCheckinMenuItem(List<MenuItem> menuItems)
124 throws PortalException {
125
126 if (!_fileEntryDisplayContextHelper.isCheckinActionAvailable()) {
127 return;
128 }
129
130 _addURLUIItem(
131 new URLMenuItem(), menuItems, "icon-lock", DLUIItemKeys.CHECKIN,
132 "checkin",
133 _getActionURL(
134 "/document_library/edit_file_entry", Constants.CHECKIN));
135 }
136
137 public void addCheckinToolbarItem(List<ToolbarItem> toolbarItems)
138 throws PortalException {
139
140 if (!_fileEntryDisplayContextHelper.isCheckinActionAvailable()) {
141 return;
142 }
143
144 _addJavaScriptUIItem(
145 new JavaScriptToolbarItem(), toolbarItems, "icon-lock",
146 DLUIItemKeys.CHECKIN, LanguageUtil.get(_request, "checkin"),
147 getSubmitFormJavaScript(Constants.CHECKIN, null));
148 }
149
150 public void addCheckoutMenuItem(List<MenuItem> menuItems)
151 throws PortalException {
152
153 if (!_fileEntryDisplayContextHelper.
154 isCheckoutDocumentActionAvailable()) {
155
156 return;
157 }
158
159 _addURLUIItem(
160 new URLMenuItem(), menuItems, "icon-unlock", DLUIItemKeys.CHECKOUT,
161 "checkout[document]",
162 _getActionURL(
163 "/document_library/edit_file_entry", Constants.CHECKOUT));
164 }
165
166 public void addCheckoutToolbarItem(List<ToolbarItem> toolbarItems)
167 throws PortalException {
168
169 if (!_fileEntryDisplayContextHelper.
170 isCheckoutDocumentActionAvailable()) {
171
172 return;
173 }
174
175 _addJavaScriptUIItem(
176 new JavaScriptToolbarItem(), toolbarItems, "icon-unlock",
177 DLUIItemKeys.CHECKOUT,
178 LanguageUtil.get(_request, "checkout[document]"),
179 getSubmitFormJavaScript(Constants.CHECKOUT, null));
180 }
181
182 public void addDeleteMenuItem(List<MenuItem> menuItems)
183 throws PortalException {
184
185 if (isDeleteActionAvailable()) {
186 DeleteMenuItem deleteMenuItem = new DeleteMenuItem();
187
188 deleteMenuItem.setKey(DLUIItemKeys.DELETE);
189 deleteMenuItem.setURL(
190 _getActionURL(
191 "/document_library/edit_file_entry", Constants.DELETE));
192
193 menuItems.add(deleteMenuItem);
194 }
195 else if (isMoveToTheRecycleBinActionAvailable()) {
196 DeleteMenuItem deleteMenuItem = new DeleteMenuItem();
197
198 deleteMenuItem.setKey(DLUIItemKeys.DELETE);
199 deleteMenuItem.setTrash(true);
200 deleteMenuItem.setURL(
201 _getActionURL(
202 "/document_library/edit_file_entry",
203 Constants.MOVE_TO_TRASH));
204
205 menuItems.add(deleteMenuItem);
206 }
207 }
208
209 public void addDeleteToolbarItem(List<ToolbarItem> toolbarItems)
210 throws PortalException {
211
212 if (!isDeleteActionAvailable()) {
213 return;
214 }
215
216 LiferayPortletResponse liferayPortletResponse =
217 _getLiferayPortletResponse();
218
219 PortletURL portletURL = liferayPortletResponse.createRenderURL();
220
221 portletURL.setParameter("struts_action", "/document_library/view");
222 portletURL.setParameter(
223 "folderId", String.valueOf(_fileEntry.getFolderId()));
224
225 StringBundler sb = new StringBundler(5);
226
227 sb.append("if (confirm('");
228 sb.append(
229 UnicodeLanguageUtil.get(
230 _request, "are-you-sure-you-want-to-delete-this"));
231 sb.append("')) {");
232 sb.append(
233 getSubmitFormJavaScript(Constants.DELETE, portletURL.toString()));
234 sb.append("}");
235
236 _addJavaScriptUIItem(
237 new JavaScriptToolbarItem(), toolbarItems, "icon-remove",
238 DLUIItemKeys.DELETE, LanguageUtil.get(_request, "delete"),
239 sb.toString());
240 }
241
242 public void addDownloadMenuItem(List<MenuItem> menuItems)
243 throws PortalException {
244
245 if (!_fileEntryDisplayContextHelper.isDownloadActionAvailable()) {
246 return;
247 }
248
249 String label = TextFormatter.formatStorageSize(
250 _fileEntry.getSize(), _themeDisplay.getLocale());
251
252 label = _themeDisplay.translate("download") + " (" + label + ")";
253
254 String url = DLUtil.getDownloadURL(
255 _fileEntry, _fileVersion, _themeDisplay, StringPool.BLANK, false,
256 true);
257
258 URLMenuItem urlMenuItem = _addURLUIItem(
259 new URLMenuItem(), menuItems, "icon-download",
260 DLUIItemKeys.DOWNLOAD, label, url);
261
262 urlMenuItem.setMethod("get");
263 urlMenuItem.setTarget("_blank");
264 }
265
266 public void addDownloadToolbarItem(List<ToolbarItem> toolbarItems)
267 throws PortalException {
268
269 if (!_fileEntryDisplayContextHelper.isDownloadActionAvailable()) {
270 return;
271 }
272
273 _addURLUIItem(
274 new URLToolbarItem(), toolbarItems, "icon-download",
275 DLUIItemKeys.DOWNLOAD, LanguageUtil.get(_request, "download"),
276 DLUtil.getDownloadURL(
277 _fileEntry, _fileVersion, _themeDisplay, StringPool.BLANK));
278 }
279
280 public void addEditMenuItem(List<MenuItem> menuItems)
281 throws PortalException {
282
283 if (!_fileEntryDisplayContextHelper.isEditActionAvailable()) {
284 return;
285 }
286
287 PortletURL portletURL = _getRenderURL(
288 "/document_library/edit_file_entry");
289
290 portletURL.setParameter("backURL", _getCurrentURL());
291
292 _addURLUIItem(
293 new URLMenuItem(), menuItems, "icon-edit", DLUIItemKeys.EDIT,
294 "edit", portletURL.toString());
295 }
296
297 public void addEditToolbarItem(List<ToolbarItem> toolbarItems)
298 throws PortalException {
299
300 if (!_fileEntryDisplayContextHelper.isEditActionAvailable()) {
301 return;
302 }
303
304 PortletURL portletURL = _getRenderURL(
305 "/document_library/edit_file_entry");
306
307 _addURLUIItem(
308 new URLToolbarItem(), toolbarItems, "icon-edit", DLUIItemKeys.EDIT,
309 LanguageUtil.get(_request, "edit"), portletURL.toString());
310 }
311
312 public void addMoveMenuItem(List<MenuItem> menuItems)
313 throws PortalException {
314
315 if (!_fileEntryDisplayContextHelper.isMoveActionAvailable()) {
316 return;
317 }
318
319 LiferayPortletResponse liferayPortletResponse =
320 _getLiferayPortletResponse();
321
322 PortletURL portletURL = liferayPortletResponse.createRenderURL();
323
324 portletURL.setParameter(
325 "struts_action", "/document_library/move_entry");
326
327 PortletURL redirectURL = liferayPortletResponse.createRenderURL();
328
329 redirectURL.setParameter("struts_action", "/document_library/view");
330 redirectURL.setParameter("folderId", String.valueOf(_folderId));
331
332 portletURL.setParameter("redirect", redirectURL.toString());
333
334 portletURL.setParameter(
335 "fileEntryIds", String.valueOf(_fileEntry.getFileEntryId()));
336
337 _addURLUIItem(
338 new URLMenuItem(), menuItems, "icon-move", DLUIItemKeys.MOVE,
339 "move", portletURL.toString());
340 }
341
342 public void addMoveToolbarItem(List<ToolbarItem> toolbarItems)
343 throws PortalException {
344
345 if (!_fileEntryDisplayContextHelper.isMoveActionAvailable()) {
346 return;
347 }
348
349 PortletURL portletURL = _getRenderURL("/document_library/move_entry");
350
351 _addURLUIItem(
352 new URLToolbarItem(), toolbarItems, "icon-move", DLUIItemKeys.MOVE,
353 LanguageUtil.get(_request, "move"), portletURL.toString());
354 }
355
356 public void addMoveToTheRecycleBinToolbarItem(
357 List<ToolbarItem> toolbarItems)
358 throws PortalException {
359
360 if (!isMoveToTheRecycleBinActionAvailable()) {
361 return;
362 }
363
364 LiferayPortletResponse liferayPortletResponse =
365 _getLiferayPortletResponse();
366
367 PortletURL portletURL = liferayPortletResponse.createRenderURL();
368
369 portletURL.setParameter("struts_action", "/document_library/view");
370 portletURL.setParameter(
371 "folderId", String.valueOf(_fileEntry.getFolderId()));
372
373 _addJavaScriptUIItem(
374 new JavaScriptToolbarItem(), toolbarItems, "icon-trash",
375 DLUIItemKeys.MOVE_TO_THE_RECYCLE_BIN,
376 LanguageUtil.get(_request, "move-to-the-recycle-bin"),
377 getSubmitFormJavaScript(
378 Constants.MOVE_TO_TRASH, portletURL.toString()));
379 }
380
381 public void addOpenInMsOfficeMenuItem(List<MenuItem> menuItems)
382 throws PortalException {
383
384 if (!isOpenInMsOfficeActionAvailable()) {
385 return;
386 }
387
388 String webDavURL = DLUtil.getWebDavURL(
389 _themeDisplay, _fileEntry.getFolder(), _fileEntry,
390 PropsValues.
391 DL_FILE_ENTRY_OPEN_IN_MS_OFFICE_MANUAL_CHECK_IN_REQUIRED,
392 true);
393
394 String onClick = getNamespace() + "openDocument('" + webDavURL + "');";
395
396 JavaScriptMenuItem javascriptMenuItem = _addJavaScriptUIItem(
397 new JavaScriptMenuItem(), menuItems, "icon-file-alt",
398 DLUIItemKeys.OPEN_IN_MS_OFFICE, "open-in-ms-office", onClick);
399
400 String javaScript =
401 "/com/liferay/portlet/documentlibrary/context/dependencies" +
402 "/open_in_ms_office_js.ftl";
403
404 Class<?> clazz = getClass();
405
406 URLTemplateResource urlTemplateResource = new URLTemplateResource(
407 javaScript, clazz.getResource(javaScript));
408
409 Template template = TemplateManagerUtil.getTemplate(
410 TemplateConstants.LANG_TYPE_FTL, urlTemplateResource, false);
411
412 template.put(
413 "errorMessage", UnicodeLanguageUtil.get(
414 _request,
415 "cannot-open-the-requested-document-due-to-the-following-" +
416 "reason"));
417 template.put("namespace", getNamespace());
418
419 UnsyncStringWriter unsyncStringWriter = new UnsyncStringWriter();
420
421 template.processTemplate(unsyncStringWriter);
422
423 javascriptMenuItem.setJavaScript(unsyncStringWriter.toString());
424 }
425
426 public void addOpenInMsOfficeToolbarItem(List<ToolbarItem> toolbarItems)
427 throws PortalException {
428
429 if (!isOpenInMsOfficeActionAvailable()) {
430 return;
431 }
432
433 String webDavURL = DLUtil.getWebDavURL(
434 _themeDisplay, _fileEntry.getFolder(), _fileEntry,
435 PropsValues.
436 DL_FILE_ENTRY_OPEN_IN_MS_OFFICE_MANUAL_CHECK_IN_REQUIRED);
437
438 StringBundler sb = new StringBundler(4);
439
440 sb.append(getNamespace());
441 sb.append("openDocument('");
442 sb.append(webDavURL);
443 sb.append("');");
444
445 _addJavaScriptUIItem(
446 new JavaScriptToolbarItem(), toolbarItems, "icon-file-alt",
447 DLUIItemKeys.OPEN_IN_MS_OFFICE,
448 LanguageUtil.get(_request, "open-in-ms-office"), sb.toString());
449 }
450
451 public void addPermissionsMenuItem(List<MenuItem> menuItems)
452 throws PortalException {
453
454 if (!_fileEntryDisplayContextHelper.isPermissionsButtonVisible()) {
455 return;
456 }
457
458 String url = null;
459
460 try {
461 url = PermissionsURLTag.doTag(
462 null, DLFileEntryConstants.getClassName(),
463 HtmlUtil.unescape(_fileEntry.getTitle()), null,
464 String.valueOf(_fileEntry.getFileEntryId()),
465 LiferayWindowState.POP_UP.toString(), null, _request);
466 }
467 catch (Exception e) {
468 throw new SystemException("Unable to create permissions URL", e);
469 }
470
471 URLMenuItem urlMenuItem = _addURLUIItem(
472 new URLMenuItem(), menuItems, "icon-lock", DLUIItemKeys.PERMISSIONS,
473 "permissions", url);
474
475 urlMenuItem.setMethod("get");
476 urlMenuItem.setUseDialog(true);
477 }
478
479 public void addPermissionsToolbarItem(List<ToolbarItem> toolbarItems)
480 throws PortalException {
481
482 if (!_fileEntryDisplayContextHelper.isPermissionsButtonVisible()) {
483 return;
484 }
485
486 String permissionsURL = null;
487
488 try {
489 permissionsURL = PermissionsURLTag.doTag(
490 null, DLFileEntryConstants.getClassName(),
491 HtmlUtil.unescape(_fileEntry.getTitle()), null,
492 String.valueOf(_fileEntry.getFileEntryId()),
493 LiferayWindowState.POP_UP.toString(), null, _request
494 );
495 }
496 catch (Exception e) {
497 throw new SystemException("Unable to create permissions URL", e);
498 }
499
500 StringBundler sb = new StringBundler(6);
501
502 sb.append("Liferay.Util.openWindow({");
503 sb.append("title: '");
504 sb.append(UnicodeLanguageUtil.get(_request, "permissions"));
505 sb.append("', uri: '");
506 sb.append(permissionsURL);
507 sb.append("'});");
508
509 _addJavaScriptUIItem(
510 new JavaScriptToolbarItem(), toolbarItems, "icon-lock",
511 DLUIItemKeys.PERMISSIONS, LanguageUtil.get(_request, "permissions"),
512 sb.toString());
513 }
514
515 public void addViewOriginalFileMenuItem(List<MenuItem> menuItems) {
516 if (_fileShortcut == null) {
517 return;
518 }
519
520 PortletURL portletURL = _getRenderURL(
521 "/document_library/view_file_entry");
522
523 portletURL.setParameter("redirect", _getCurrentURL());
524 portletURL.setParameter(
525 "fileEntryId", String.valueOf(_fileShortcut.getToFileEntryId()));
526
527 _addURLUIItem(
528 new URLMenuItem(), menuItems, "icon-search",
529 DLUIItemKeys.VIEW_ORIGINAL_FILE, "view-original-file",
530 portletURL.toString());
531 }
532
533 protected String getNamespace() {
534 LiferayPortletResponse liferayPortletResponse =
535 _getLiferayPortletResponse();
536
537 return liferayPortletResponse.getNamespace();
538 }
539
540 protected String getSubmitFormJavaScript(String cmd, String redirect) {
541 StringBundler sb = new StringBundler(18);
542
543 sb.append("document.");
544 sb.append(getNamespace());
545 sb.append("fm.");
546 sb.append(getNamespace());
547 sb.append(Constants.CMD);
548 sb.append(".value = '");
549 sb.append(cmd);
550 sb.append("';");
551
552 if (redirect != null) {
553 sb.append("document.");
554 sb.append(getNamespace());
555 sb.append("fm.");
556 sb.append(getNamespace());
557 sb.append("redirect.value = '");
558 sb.append(redirect);
559 sb.append("';");
560 }
561
562 sb.append("submitForm(document.");
563 sb.append(getNamespace());
564 sb.append("fm);");
565
566 return sb.toString();
567 }
568
569 protected boolean isDeleteActionAvailable() throws PortalException {
570 if (_fileEntryDisplayContextHelper.isFileEntryDeletable() &&
571 !_isFileEntryTrashable()) {
572
573 return true;
574 }
575
576 return false;
577 }
578
579 protected boolean isMoveToTheRecycleBinActionAvailable()
580 throws PortalException {
581
582 if (!isDeleteActionAvailable() &&
583 _fileEntryDisplayContextHelper.isFileEntryDeletable()) {
584
585 return true;
586 }
587
588 return false;
589 }
590
591 protected boolean isOpenInMsOfficeActionAvailable() throws PortalException {
592 if (_fileEntryDisplayContextHelper.hasViewPermission() &&
593 _fileVersionDisplayContextHelper.isMsOffice() &&
594 _isWebDAVEnabled() && _isIEOnWin32()) {
595
596 return true;
597 }
598
599 return false;
600 }
601
602 private UIItemsBuilder(
603 HttpServletRequest request, HttpServletResponse response,
604 FileVersion fileVersion, FileShortcut fileShortcut) {
605
606 try {
607 _request = request;
608 _fileVersion = fileVersion;
609 _fileShortcut = fileShortcut;
610
611 FileEntry fileEntry = null;
612
613 if (fileVersion != null) {
614 fileEntry = fileVersion.getFileEntry();
615 }
616
617 _fileEntry = fileEntry;
618
619 _folderId = BeanParamUtil.getLong(_fileEntry, request, "folderId");
620
621 _themeDisplay = (ThemeDisplay)request.getAttribute(
622 WebKeys.THEME_DISPLAY);
623
624 _fileEntryDisplayContextHelper = new FileEntryDisplayContextHelper(
625 _themeDisplay.getPermissionChecker(), _fileEntry);
626 _fileVersionDisplayContextHelper =
627 new FileVersionDisplayContextHelper(fileVersion);
628 }
629 catch (PortalException pe) {
630 throw new SystemException(
631 "Unable to build UIItemsBuilder for " + fileVersion, pe);
632 }
633 }
634
635 private <T extends JavaScriptUIItem> T _addJavaScriptUIItem(
636 T javascriptUIItem, List<? super T> javascriptUIItems, String icon,
637 String key, String label, String onClick ) {
638
639 javascriptUIItem.setIcon(icon);
640 javascriptUIItem.setKey(key);
641 javascriptUIItem.setLabel(label);
642 javascriptUIItem.setOnClick(onClick);
643
644 javascriptUIItems.add(javascriptUIItem);
645
646 return javascriptUIItem;
647 }
648
649 private <T extends URLUIItem> T _addURLUIItem(
650 T urlUIItem, List<? super T> urlUIItems, String icon, String key,
651 String label, String url ) {
652
653 urlUIItem.setIcon(icon);
654 urlUIItem.setKey(key);
655 urlUIItem.setLabel(label);
656 urlUIItem.setURL(url);
657
658 urlUIItems.add(urlUIItem);
659
660 return urlUIItem;
661 }
662
663 private String _getActionURL(String strutsAction, String cmd) {
664 LiferayPortletResponse liferayPortletResponse =
665 _getLiferayPortletResponse();
666
667 PortletURL portletURL = liferayPortletResponse.createActionURL();
668
669 portletURL.setParameter("struts_action", strutsAction);
670 portletURL.setParameter(Constants.CMD, cmd);
671 portletURL.setParameter("redirect", _getCurrentURL());
672 portletURL.setParameter(
673 "fileEntryId", String.valueOf(_fileEntry.getFileEntryId()));
674
675 return portletURL.toString();
676 }
677
678 private String _getCurrentURL() {
679 if (_currentURL != null) {
680 return _currentURL;
681 }
682
683 LiferayPortletRequest liferayPortletRequest =
684 _getLiferayPortletRequest();
685
686 LiferayPortletResponse liferayPortletResponse =
687 _getLiferayPortletResponse();
688
689 PortletURL portletURL = PortletURLUtil.getCurrent(
690 liferayPortletRequest, liferayPortletResponse);
691
692 _currentURL = portletURL.toString();
693
694 return _currentURL;
695 }
696
697 private LiferayPortletRequest _getLiferayPortletRequest() {
698 PortletRequest portletRequest = (PortletRequest) _request.getAttribute(
699 JavaConstants.JAVAX_PORTLET_REQUEST);
700
701 return PortalUtil.getLiferayPortletRequest(portletRequest);
702 }
703
704 private LiferayPortletResponse _getLiferayPortletResponse() {
705 PortletResponse portletResponse =
706 (PortletResponse) _request.getAttribute(
707 JavaConstants.JAVAX_PORTLET_RESPONSE);
708
709 return PortalUtil.getLiferayPortletResponse(portletResponse);
710 }
711
712 private PortletURL _getRenderURL(String strutsAction) {
713 LiferayPortletResponse liferayPortletResponse =
714 _getLiferayPortletResponse();
715
716 PortletURL portletURL = liferayPortletResponse.createRenderURL();
717
718 portletURL.setParameter("struts_action", strutsAction);
719 portletURL.setParameter("redirect", _getCurrentURL());
720 portletURL.setParameter(
721 "fileEntryId", String.valueOf(_fileEntry.getFileEntryId()));
722
723 return portletURL;
724 }
725
726 private boolean _isFileEntryTrashable() throws PortalException {
727 if (_fileEntryDisplayContextHelper.isDLFileEntry() &&
728 _isTrashEnabled()) {
729
730 return true;
731 }
732
733 return false;
734 }
735
736 private boolean _isIEOnWin32() {
737 if (_ieOnWin32 == null) {
738 _ieOnWin32 = BrowserSnifferUtil.isIeOnWin32(_request);
739 }
740
741 return _ieOnWin32;
742 }
743
744 private boolean _isTrashEnabled() throws PortalException {
745 if (_trashEnabled == null) {
746 _trashEnabled = TrashUtil.isTrashEnabled(
747 _themeDisplay.getScopeGroupId());
748 }
749
750 return _trashEnabled;
751 }
752
753 private boolean _isWebDAVEnabled() {
754 PortletDisplay portletDisplay = _themeDisplay.getPortletDisplay();
755
756 return portletDisplay.isWebDAVEnabled();
757 }
758
759 private String _currentURL;
760 private final FileEntry _fileEntry;
761 private final FileEntryDisplayContextHelper _fileEntryDisplayContextHelper;
762 private FileShortcut _fileShortcut;
763 private final FileVersion _fileVersion;
764 private final FileVersionDisplayContextHelper
765 _fileVersionDisplayContextHelper;
766 private final long _folderId;
767 private Boolean _ieOnWin32;
768 private final HttpServletRequest _request;
769 private final ThemeDisplay _themeDisplay;
770 private Boolean _trashEnabled;
771
772 }