/**
* 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.google.docs.internal.display.context;
import com.liferay.document.library.display.context.BaseDLViewFileVersionDisplayContext;
import com.liferay.document.library.display.context.DLViewFileVersionDisplayContext;
import com.liferay.document.library.google.docs.internal.util.GoogleDocsConstants;
import com.liferay.document.library.google.docs.internal.util.GoogleDocsMetadataHelper;
import com.liferay.dynamic.data.mapping.kernel.DDMStructure;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.repository.model.FileVersion;
import com.liferay.portal.kernel.servlet.taglib.ui.Menu;
import com.liferay.portal.kernel.servlet.taglib.ui.MenuItem;
import com.liferay.portal.kernel.servlet.taglib.ui.ToolbarItem;
import com.liferay.portal.kernel.util.ResourceBundleUtil;
import com.liferay.portal.kernel.util.Validator;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.ResourceBundle;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Iván Zaera
*/
public class GoogleDocsDLViewFileVersionDisplayContext
extends BaseDLViewFileVersionDisplayContext {
public GoogleDocsDLViewFileVersionDisplayContext(
DLViewFileVersionDisplayContext parentDLDisplayContext,
HttpServletRequest request, HttpServletResponse response,
FileVersion fileVersion,
GoogleDocsMetadataHelper googleDocsMetadataHelper) {
super(_UUID, parentDLDisplayContext, request, response, fileVersion);
_googleDocsMetadataHelper = googleDocsMetadataHelper;
_googleDocsUIItemsProcessor = new GoogleDocsUIItemsProcessor(
request, googleDocsMetadataHelper);
}
@Override
public List<DDMStructure> getDDMStructures() throws PortalException {
List<DDMStructure> ddmStructures = super.getDDMStructures();
Iterator<DDMStructure> iterator = ddmStructures.iterator();
while (iterator.hasNext()) {
DDMStructure ddmStructure = iterator.next();
String structureKey = ddmStructure.getStructureKey();
if (structureKey.equals(
GoogleDocsConstants.DDM_STRUCTURE_KEY_GOOGLE_DOCS)) {
iterator.remove();
break;
}
}
return ddmStructures;
}
@Override
public Menu getMenu() throws PortalException {
Menu menu = super.getMenu();
List<MenuItem> menuItems = menu.getMenuItems();
menuItems.removeIf(
menuItem -> Objects.equals(
menuItem.getKey(), "#edit-with-image-editor"));
_googleDocsUIItemsProcessor.processMenuItems(menuItems);
return menu;
}
@Override
public List<ToolbarItem> getToolbarItems() throws PortalException {
List<ToolbarItem> toolbarItems = super.getToolbarItems();
_googleDocsUIItemsProcessor.processToolbarItems(toolbarItems);
return toolbarItems;
}
@Override
public boolean hasPreview() {
return false;
}
@Override
public boolean isDownloadLinkVisible() {
return false;
}
@Override
public boolean isVersionInfoVisible() {
return false;
}
@Override
public void renderPreview(
HttpServletRequest request, HttpServletResponse response)
throws IOException {
PrintWriter printWriter = response.getWriter();
if (_googleDocsMetadataHelper.containsField(
GoogleDocsConstants.DDM_FIELD_NAME_EMBEDDABLE_URL)) {
String previewURL = _googleDocsMetadataHelper.getFieldValue(
GoogleDocsConstants.DDM_FIELD_NAME_EMBEDDABLE_URL);
if (Validator.isNotNull(previewURL)) {
printWriter.format(
"<iframe frameborder=\"0\" height=\"300\" src=\"%s\" " +
"width=\"100%%\"></iframe>",
previewURL);
return;
}
}
ResourceBundle resourceBundle = ResourceBundleUtil.getBundle(
"content.Language", request.getLocale(), getClass());
printWriter.write("<div class=\"alert alert-info\">");
printWriter.write(
ResourceBundleUtil.getString(
resourceBundle,
"google-docs-does-not-provide-a-preview-for-this-document"));
printWriter.write("</div>");
}
private static final UUID _UUID = UUID.fromString(
"7B61EA79-83AE-4FFD-A77A-1D47E06EBBE9");
private final GoogleDocsMetadataHelper _googleDocsMetadataHelper;
private final GoogleDocsUIItemsProcessor _googleDocsUIItemsProcessor;
}