Skip to content

Commit

Permalink
HTML 5 player video function
Browse files Browse the repository at this point in the history
fix #219
  • Loading branch information
gnujavasergio committed Jul 13, 2022
1 parent abcaba0 commit 8a6dec7
Show file tree
Hide file tree
Showing 340 changed files with 531 additions and 522 deletions.
1 change: 1 addition & 0 deletions src/main/java/com/openkm/core/MimeTypeConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ public class MimeTypeConfig {
public final static String MIME_OO_SPREADSHEET = "application/vnd.oasis.opendocument.spreadsheet";
public final static String MIME_OO_PRESENTATION = "application/vnd.oasis.opendocument.presentation";
public final static String MIME_SWF = "application/x-shockwave-flash";
public final static String MIME_JAR = "application/x-java-archive";

// Image
public final static String MIME_DXF = "image/vnd.dxf";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,15 @@

import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.openkm.frontend.client.bean.GWTDocument;

/**
* TabDocumentExtension
*
* @author jllort
*/
public abstract class PreviewExtension extends Composite implements HasPreviewExtension {
public abstract void createViewer(String url, int width, int height);
public abstract void createViewer(GWTDocument doc, String url, int width, int height);

public abstract Widget getWidget();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public EmbeddedPreview() {
* show
*/
public void showEmbedded(String url) {
iframe.setUrl(Main.CONTEXT + "/preview/pdfjs/web/viewer.html?" + url);
iframe.setUrl(Main.CONTEXT + "/Preview?" + url);
}

/**
Expand Down
179 changes: 66 additions & 113 deletions src/main/java/com/openkm/frontend/client/widget/properties/Preview.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,14 @@
import java.util.ArrayList;
import java.util.List;

import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.ui.*;
import com.openkm.frontend.client.Main;
import com.openkm.frontend.client.bean.GWTDocument;
import com.openkm.frontend.client.bean.GWTWorkspace;
import com.openkm.frontend.client.constants.service.RPCService;
import com.openkm.frontend.client.extension.widget.preview.PreviewExtension;
import com.openkm.frontend.client.util.Util;
Expand Down Expand Up @@ -100,56 +102,37 @@ public void showEmbedPDF(String uuid) {
}

/**
* cleanPreview
*/
public void cleanPreview() {
swf.setHTML("<div id=\"pdfviewercontainer\" ></div>\n");
embeddedPreview.clear();
}

/**
* Set the media file to reproduce
*
* @param mediaUrl The media file url
* showSystemEmbeddedPreview
*/
public void showMediaFile(String mediaUrl, String mimeType) {
public void showSystemEmbeddedPreview(String url) {
hideWidgetExtension();
vPanel.clear();

if (previewEvent != null) {
vPanel.add(hReturnPanel);
vPanel.setCellHeight(hReturnPanel, String.valueOf(TURN_BACK_HEIGHT) + "px");
}

vPanel.add(video);
vPanel.setCellHorizontalAlignment(video, HasAlignment.ALIGN_CENTER);
vPanel.setCellVerticalAlignment(video, HasAlignment.ALIGN_MIDDLE);

this.mediaUrl = mediaUrl;
Util.removeMediaPlayer();
video.setHTML("<div id=\"mediaplayercontainer\"></div>\n");
vPanel.add(embeddedPreview);
vPanel.setCellHorizontalAlignment(embeddedPreview, HasAlignment.ALIGN_CENTER);
vPanel.setCellVerticalAlignment(embeddedPreview, HasAlignment.ALIGN_MIDDLE);

if (mimeType.equals("audio/mpeg")) {
mediaProvider = "sound";
} else if (mimeType.equals("video/x-flv") || mimeType.equals("video/mp4")) {
mediaProvider = "video";
} else if (mimeType.equals("application/x-shockwave-flash")) {
mediaProvider = "";
}
embeddedPreview.showEmbedded(url);
}

Util.createMediaPlayer(mediaUrl, mediaProvider, "" + width, "" + height);
/**
* cleanPreview
*/
public void cleanPreview() {
swf.setHTML("<div id=\"pdfviewercontainer\" ></div>\n");
embeddedPreview.clear();
}

/**
* setPreviewExtension
*/
public void showPreviewExtension(PreviewExtension preview, String url) {
public void showPreviewExtension(PreviewExtension preview, String url, GWTDocument doc) {
hideWidgetExtension();
vPanel.clear();

if (previewAvailable) {
preview.createViewer(doc, url, width, height);
vPanel.add(preview.getWidget());
preview.createViewer(url, width, height);
}
}

Expand Down Expand Up @@ -199,107 +182,77 @@ public void langRefresh() {
}
}

/**
* addPreviewExtension
*/
public void addPreviewExtension(PreviewExtension extension) {
widgetPreviewExtensionList.add(extension);
}

/**
* previewDocument
*/
public void previewDocument(boolean refreshing, GWTDocument doc) {
if (doc.getMimeType().equals("video/x-flv") || doc.getMimeType().equals("video/mp4") || doc.getMimeType().equals("audio/mpeg")) {
if (!refreshing) {
showMediaFile(RPCService.DownloadServlet + "?uuid=" + URL.encodeQueryString(doc.getUuid()), doc.getMimeType());
} else {
resizeMediaPlayer(width, height);
}
} else if (HTMLPreview.isPreviewAvailable(doc.getMimeType())) {
if (!refreshing) {
showHTML(doc);
}
} else if (SyntaxHighlighterPreview.isPreviewAvailable(doc.getMimeType())) {
Log.debug("PreviewDocument: " + doc.getPath());

if (doc.getMimeType().equals("video/x-flv") || doc.getMimeType().equals("video/mp4") || doc.getMimeType().equals("audio/mpeg")
|| doc.getMimeType().equals("audio/x-wav")) {
Log.debug("Preview: Media Player");
String url = RPCService.DownloadServlet + "?uuid=" + URL.encodeQueryString(doc.getUuid()) + "&downloadType="
+ DOWNLOAD_TYPE_PREVIEW;
showSystemEmbeddedPreview(EmbeddedPreview.MPG_URL + URL.encodeQueryString(url) + "&mimeType=" + doc.getMimeType()
+ "&width=" + width + "&height=" + height);
} else if (isHTMLPreviewAvailable(doc.getMimeType())) {
Log.debug("Preview: HTML");
if (!refreshing) {
showSyntaxHighlighterHTML(doc);
String url = "mimeType=" + doc.getMimeType() + "&uuid=" + doc.getUuid();
showSystemEmbeddedPreview(url);
}
} else if (doc.getMimeType().equals("application/pdf")) {
setPreviewConversion(false);
} else if (isSyntaxHighlighterPreviewAvailable(doc.getMimeType())) {
Log.debug("Preview: Syntax Highlighter");
if (!refreshing) {
showPDF(doc.getUuid());
String url = "mimeType=" + doc.getMimeType() + "&uuid=" + doc.getUuid();
showSystemEmbeddedPreview(url);
}
} else if (doc.getMimeType().equals("application/x-shockwave-flash")) {
setPreviewConversion(false);
String url = RPCService.ConverterServlet + "?inline=true&toSwf=true&uuid=" + URL.encodeQueryString(doc.getUuid()) + "&downloadType="
+ DOWNLOAD_TYPE_PREVIEW;
showSystemEmbeddedPreview(EmbeddedPreview.SWF_URL + URL.encodeQueryString(url) + "&uuid=" + URL.encodeQueryString(doc.getUuid()));
} else {
PreviewExtension previewExtension = null;

if (!refreshing) {
showEmbedSWF(doc.getUuid());
} else {
resizeEmbedSWF(width, height);
for (PreviewExtension preview : widgetPreviewExtensionList) {
Log.debug("PreviewExtension: " + preview.getClass().getName());

if (preview.isPreviewAvailable(doc.getMimeType())) {
Log.debug("Chosen preview extension: " + preview.getClass().getName());
previewExtension = preview;
break;
}
}
} else {
if (Main.get().workspaceUserProperties.getWorkspace().isAcrobatPluginPreview() && doc.getMimeType().equals("application/pdf")) {

// CADViewer preview comes here
if (previewExtension != null) {
if (!refreshing) {
showEmbedPDF(doc.getUuid());
String url = RPCService.DownloadServlet;
url += ";jsessionid=" + Main.get().workspaceUserProperties.getWorkspace().getSessionId();
url += "?uuid=" + URL.encodeQueryString(doc.getUuid()) + "&downloadType=" + DOWNLOAD_TYPE_PREVIEW;
showPreviewExtension(previewExtension, url, doc);
} else {
Util.resizeEmbededPDF("" + width, "" + height, pdfID);
previewExtension.resizeViewer(width, height);
}
} else {
setPreviewConversion(true);

if (!refreshing) {
if (doc.isConvertibleToPdf()) {
showPDF(doc.getUuid());
} else {
showEmbedSWF(doc.getUuid());
if (refreshing) {
if (Main.get().workspaceUserProperties.getWorkspace().isAcrobatPluginPreview()) {
Util.resizeEmbededPDF("" + width, "" + height, pdfID);
}
} else {
if (!doc.isConvertibleToPdf()) {
resizeEmbedSWF(width, height);
}
showEmbedPDF(doc.getUuid());
}
}
}
}

/**
* addPreviewExtension
*/
public void addPreviewExtension(PreviewExtension extension) {
widgetPreviewExtensionList.add(extension);
}

/**
* Preview PDF, take in consideration profile selection
*/
public void showPDF(String uuid) {
hideWidgetExtension();
vPanel.clear();

vPanel.add(pdf);
vPanel.setCellHorizontalAlignment(pdf, HasAlignment.ALIGN_CENTER);
vPanel.setCellVerticalAlignment(pdf, HasAlignment.ALIGN_MIDDLE);

if (previewAvailable) {
pdf.setHTML("<div id=\"" + pdfContainer + "\"></div>\n"); // needed for rewriting purpose
showSystemEmbeddedPreview(EmbeddedPreview.PDFJS_URL + URL.encodeQueryString(RPCService.ConverterServlet +"?toPdf=true&inline=true&uuid=" + uuid));
} else {
pdf.setHTML("<div id=\"" + pdfContainer + "\" align=\"center\"><br><br>" + Main.i18n("preview.unavailable") + "</div>\n");
}
}

/**
* showSystemEmbeddedPreview
*/
public void showSystemEmbeddedPreview(String url) {
hideWidgetExtension();
vPanel.clear();

if (previewEvent != null) {
vPanel.add(hReturnPanel);
vPanel.setCellHeight(hReturnPanel, String.valueOf(TURN_BACK_HEIGHT) + "px");
}

vPanel.add(embeddedPreview);
vPanel.setCellHorizontalAlignment(embeddedPreview, HasAlignment.ALIGN_CENTER);
vPanel.setCellVerticalAlignment(embeddedPreview, HasAlignment.ALIGN_MIDDLE);

embeddedPreview.showEmbedded(url);
}

/**
* isHTMLPreviewAvailable
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -381,13 +381,6 @@ private static void createMissingDirs() {
pdfCacheFolder.mkdirs();
}

// Initialize SWF cache folder
File swfCacheFolder = new File(Config.REPOSITORY_CACHE_SWF);
if (!swfCacheFolder.exists()) {
log.info("Create missing directory {}", swfCacheFolder.getPath());
swfCacheFolder.mkdirs();
}

// Initialize chroot folder
if (Config.SYSTEM_MULTIPLE_INSTANCES || Config.CLOUD_MODE) {
File chrootFolder = new File(Config.INSTANCE_CHROOT_PATH);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/openkm/util/WebUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ public static final boolean getBoolean(HttpServletRequest request, String name,
/**
* Get HTTP header.
*/
private static String getHeader(HttpServletRequest request, String name) {
public static String getHeader(HttpServletRequest request, String name) {
String value = request.getHeader(name);

if (value != null) {
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit 8a6dec7

Please sign in to comment.