Skip to content

Commit 8a6dec7

Browse files
committed
HTML 5 player video function
fix #219
1 parent abcaba0 commit 8a6dec7

File tree

340 files changed

+531
-522
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

340 files changed

+531
-522
lines changed

src/main/java/com/openkm/core/MimeTypeConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public class MimeTypeConfig {
5050
public final static String MIME_OO_SPREADSHEET = "application/vnd.oasis.opendocument.spreadsheet";
5151
public final static String MIME_OO_PRESENTATION = "application/vnd.oasis.opendocument.presentation";
5252
public final static String MIME_SWF = "application/x-shockwave-flash";
53+
public final static String MIME_JAR = "application/x-java-archive";
5354

5455
// Image
5556
public final static String MIME_DXF = "image/vnd.dxf";

src/main/java/com/openkm/frontend/client/extension/widget/preview/PreviewExtension.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,15 @@
2323

2424
import com.google.gwt.user.client.ui.Composite;
2525
import com.google.gwt.user.client.ui.Widget;
26+
import com.openkm.frontend.client.bean.GWTDocument;
2627

2728
/**
2829
* TabDocumentExtension
2930
*
3031
* @author jllort
3132
*/
3233
public abstract class PreviewExtension extends Composite implements HasPreviewExtension {
33-
public abstract void createViewer(String url, int width, int height);
34+
public abstract void createViewer(GWTDocument doc, String url, int width, int height);
3435

3536
public abstract Widget getWidget();
3637

src/main/java/com/openkm/frontend/client/widget/properties/EmbeddedPreview.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public EmbeddedPreview() {
6464
* show
6565
*/
6666
public void showEmbedded(String url) {
67-
iframe.setUrl(Main.CONTEXT + "/preview/pdfjs/web/viewer.html?" + url);
67+
iframe.setUrl(Main.CONTEXT + "/Preview?" + url);
6868
}
6969

7070
/**

src/main/java/com/openkm/frontend/client/widget/properties/Preview.java

Lines changed: 66 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@
2424
import java.util.ArrayList;
2525
import java.util.List;
2626

27+
import com.allen_sauer.gwt.log.client.Log;
2728
import com.google.gwt.event.dom.client.ClickEvent;
2829
import com.google.gwt.event.dom.client.ClickHandler;
2930
import com.google.gwt.http.client.URL;
3031
import com.google.gwt.user.client.ui.*;
3132
import com.openkm.frontend.client.Main;
3233
import com.openkm.frontend.client.bean.GWTDocument;
34+
import com.openkm.frontend.client.bean.GWTWorkspace;
3335
import com.openkm.frontend.client.constants.service.RPCService;
3436
import com.openkm.frontend.client.extension.widget.preview.PreviewExtension;
3537
import com.openkm.frontend.client.util.Util;
@@ -100,56 +102,37 @@ public void showEmbedPDF(String uuid) {
100102
}
101103

102104
/**
103-
* cleanPreview
104-
*/
105-
public void cleanPreview() {
106-
swf.setHTML("<div id=\"pdfviewercontainer\" ></div>\n");
107-
embeddedPreview.clear();
108-
}
109-
110-
/**
111-
* Set the media file to reproduce
112-
*
113-
* @param mediaUrl The media file url
105+
* showSystemEmbeddedPreview
114106
*/
115-
public void showMediaFile(String mediaUrl, String mimeType) {
107+
public void showSystemEmbeddedPreview(String url) {
116108
hideWidgetExtension();
117109
vPanel.clear();
118110

119-
if (previewEvent != null) {
120-
vPanel.add(hReturnPanel);
121-
vPanel.setCellHeight(hReturnPanel, String.valueOf(TURN_BACK_HEIGHT) + "px");
122-
}
123-
124-
vPanel.add(video);
125-
vPanel.setCellHorizontalAlignment(video, HasAlignment.ALIGN_CENTER);
126-
vPanel.setCellVerticalAlignment(video, HasAlignment.ALIGN_MIDDLE);
127-
128-
this.mediaUrl = mediaUrl;
129-
Util.removeMediaPlayer();
130-
video.setHTML("<div id=\"mediaplayercontainer\"></div>\n");
111+
vPanel.add(embeddedPreview);
112+
vPanel.setCellHorizontalAlignment(embeddedPreview, HasAlignment.ALIGN_CENTER);
113+
vPanel.setCellVerticalAlignment(embeddedPreview, HasAlignment.ALIGN_MIDDLE);
131114

132-
if (mimeType.equals("audio/mpeg")) {
133-
mediaProvider = "sound";
134-
} else if (mimeType.equals("video/x-flv") || mimeType.equals("video/mp4")) {
135-
mediaProvider = "video";
136-
} else if (mimeType.equals("application/x-shockwave-flash")) {
137-
mediaProvider = "";
138-
}
115+
embeddedPreview.showEmbedded(url);
116+
}
139117

140-
Util.createMediaPlayer(mediaUrl, mediaProvider, "" + width, "" + height);
118+
/**
119+
* cleanPreview
120+
*/
121+
public void cleanPreview() {
122+
swf.setHTML("<div id=\"pdfviewercontainer\" ></div>\n");
123+
embeddedPreview.clear();
141124
}
142125

143126
/**
144127
* setPreviewExtension
145128
*/
146-
public void showPreviewExtension(PreviewExtension preview, String url) {
129+
public void showPreviewExtension(PreviewExtension preview, String url, GWTDocument doc) {
147130
hideWidgetExtension();
148131
vPanel.clear();
149132

150133
if (previewAvailable) {
134+
preview.createViewer(doc, url, width, height);
151135
vPanel.add(preview.getWidget());
152-
preview.createViewer(url, width, height);
153136
}
154137
}
155138

@@ -199,107 +182,77 @@ public void langRefresh() {
199182
}
200183
}
201184

185+
/**
186+
* addPreviewExtension
187+
*/
188+
public void addPreviewExtension(PreviewExtension extension) {
189+
widgetPreviewExtensionList.add(extension);
190+
}
191+
202192
/**
203193
* previewDocument
204194
*/
205195
public void previewDocument(boolean refreshing, GWTDocument doc) {
206-
if (doc.getMimeType().equals("video/x-flv") || doc.getMimeType().equals("video/mp4") || doc.getMimeType().equals("audio/mpeg")) {
207-
if (!refreshing) {
208-
showMediaFile(RPCService.DownloadServlet + "?uuid=" + URL.encodeQueryString(doc.getUuid()), doc.getMimeType());
209-
} else {
210-
resizeMediaPlayer(width, height);
211-
}
212-
} else if (HTMLPreview.isPreviewAvailable(doc.getMimeType())) {
213-
if (!refreshing) {
214-
showHTML(doc);
215-
}
216-
} else if (SyntaxHighlighterPreview.isPreviewAvailable(doc.getMimeType())) {
196+
Log.debug("PreviewDocument: " + doc.getPath());
197+
198+
if (doc.getMimeType().equals("video/x-flv") || doc.getMimeType().equals("video/mp4") || doc.getMimeType().equals("audio/mpeg")
199+
|| doc.getMimeType().equals("audio/x-wav")) {
200+
Log.debug("Preview: Media Player");
201+
String url = RPCService.DownloadServlet + "?uuid=" + URL.encodeQueryString(doc.getUuid()) + "&downloadType="
202+
+ DOWNLOAD_TYPE_PREVIEW;
203+
showSystemEmbeddedPreview(EmbeddedPreview.MPG_URL + URL.encodeQueryString(url) + "&mimeType=" + doc.getMimeType()
204+
+ "&width=" + width + "&height=" + height);
205+
} else if (isHTMLPreviewAvailable(doc.getMimeType())) {
206+
Log.debug("Preview: HTML");
217207
if (!refreshing) {
218-
showSyntaxHighlighterHTML(doc);
208+
String url = "mimeType=" + doc.getMimeType() + "&uuid=" + doc.getUuid();
209+
showSystemEmbeddedPreview(url);
219210
}
220-
} else if (doc.getMimeType().equals("application/pdf")) {
221-
setPreviewConversion(false);
211+
} else if (isSyntaxHighlighterPreviewAvailable(doc.getMimeType())) {
212+
Log.debug("Preview: Syntax Highlighter");
222213
if (!refreshing) {
223-
showPDF(doc.getUuid());
214+
String url = "mimeType=" + doc.getMimeType() + "&uuid=" + doc.getUuid();
215+
showSystemEmbeddedPreview(url);
224216
}
225217
} else if (doc.getMimeType().equals("application/x-shockwave-flash")) {
226-
setPreviewConversion(false);
218+
String url = RPCService.ConverterServlet + "?inline=true&toSwf=true&uuid=" + URL.encodeQueryString(doc.getUuid()) + "&downloadType="
219+
+ DOWNLOAD_TYPE_PREVIEW;
220+
showSystemEmbeddedPreview(EmbeddedPreview.SWF_URL + URL.encodeQueryString(url) + "&uuid=" + URL.encodeQueryString(doc.getUuid()));
221+
} else {
222+
PreviewExtension previewExtension = null;
227223

228-
if (!refreshing) {
229-
showEmbedSWF(doc.getUuid());
230-
} else {
231-
resizeEmbedSWF(width, height);
224+
for (PreviewExtension preview : widgetPreviewExtensionList) {
225+
Log.debug("PreviewExtension: " + preview.getClass().getName());
226+
227+
if (preview.isPreviewAvailable(doc.getMimeType())) {
228+
Log.debug("Chosen preview extension: " + preview.getClass().getName());
229+
previewExtension = preview;
230+
break;
231+
}
232232
}
233-
} else {
234-
if (Main.get().workspaceUserProperties.getWorkspace().isAcrobatPluginPreview() && doc.getMimeType().equals("application/pdf")) {
233+
234+
// CADViewer preview comes here
235+
if (previewExtension != null) {
235236
if (!refreshing) {
236-
showEmbedPDF(doc.getUuid());
237+
String url = RPCService.DownloadServlet;
238+
url += ";jsessionid=" + Main.get().workspaceUserProperties.getWorkspace().getSessionId();
239+
url += "?uuid=" + URL.encodeQueryString(doc.getUuid()) + "&downloadType=" + DOWNLOAD_TYPE_PREVIEW;
240+
showPreviewExtension(previewExtension, url, doc);
237241
} else {
238-
Util.resizeEmbededPDF("" + width, "" + height, pdfID);
242+
previewExtension.resizeViewer(width, height);
239243
}
240244
} else {
241-
setPreviewConversion(true);
242-
243-
if (!refreshing) {
244-
if (doc.isConvertibleToPdf()) {
245-
showPDF(doc.getUuid());
246-
} else {
247-
showEmbedSWF(doc.getUuid());
245+
if (refreshing) {
246+
if (Main.get().workspaceUserProperties.getWorkspace().isAcrobatPluginPreview()) {
247+
Util.resizeEmbededPDF("" + width, "" + height, pdfID);
248248
}
249249
} else {
250-
if (!doc.isConvertibleToPdf()) {
251-
resizeEmbedSWF(width, height);
252-
}
250+
showEmbedPDF(doc.getUuid());
253251
}
254252
}
255253
}
256254
}
257255

258-
/**
259-
* addPreviewExtension
260-
*/
261-
public void addPreviewExtension(PreviewExtension extension) {
262-
widgetPreviewExtensionList.add(extension);
263-
}
264-
265-
/**
266-
* Preview PDF, take in consideration profile selection
267-
*/
268-
public void showPDF(String uuid) {
269-
hideWidgetExtension();
270-
vPanel.clear();
271-
272-
vPanel.add(pdf);
273-
vPanel.setCellHorizontalAlignment(pdf, HasAlignment.ALIGN_CENTER);
274-
vPanel.setCellVerticalAlignment(pdf, HasAlignment.ALIGN_MIDDLE);
275-
276-
if (previewAvailable) {
277-
pdf.setHTML("<div id=\"" + pdfContainer + "\"></div>\n"); // needed for rewriting purpose
278-
showSystemEmbeddedPreview(EmbeddedPreview.PDFJS_URL + URL.encodeQueryString(RPCService.ConverterServlet +"?toPdf=true&inline=true&uuid=" + uuid));
279-
} else {
280-
pdf.setHTML("<div id=\"" + pdfContainer + "\" align=\"center\"><br><br>" + Main.i18n("preview.unavailable") + "</div>\n");
281-
}
282-
}
283-
284-
/**
285-
* showSystemEmbeddedPreview
286-
*/
287-
public void showSystemEmbeddedPreview(String url) {
288-
hideWidgetExtension();
289-
vPanel.clear();
290-
291-
if (previewEvent != null) {
292-
vPanel.add(hReturnPanel);
293-
vPanel.setCellHeight(hReturnPanel, String.valueOf(TURN_BACK_HEIGHT) + "px");
294-
}
295-
296-
vPanel.add(embeddedPreview);
297-
vPanel.setCellHorizontalAlignment(embeddedPreview, HasAlignment.ALIGN_CENTER);
298-
vPanel.setCellVerticalAlignment(embeddedPreview, HasAlignment.ALIGN_MIDDLE);
299-
300-
embeddedPreview.showEmbedded(url);
301-
}
302-
303256
/**
304257
* isHTMLPreviewAvailable
305258
*/

src/main/java/com/openkm/servlet/RepositoryStartupServlet.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -381,13 +381,6 @@ private static void createMissingDirs() {
381381
pdfCacheFolder.mkdirs();
382382
}
383383

384-
// Initialize SWF cache folder
385-
File swfCacheFolder = new File(Config.REPOSITORY_CACHE_SWF);
386-
if (!swfCacheFolder.exists()) {
387-
log.info("Create missing directory {}", swfCacheFolder.getPath());
388-
swfCacheFolder.mkdirs();
389-
}
390-
391384
// Initialize chroot folder
392385
if (Config.SYSTEM_MULTIPLE_INSTANCES || Config.CLOUD_MODE) {
393386
File chrootFolder = new File(Config.INSTANCE_CHROOT_PATH);

src/main/java/com/openkm/util/WebUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ public static final boolean getBoolean(HttpServletRequest request, String name,
311311
/**
312312
* Get HTTP header.
313313
*/
314-
private static String getHeader(HttpServletRequest request, String name) {
314+
public static String getHeader(HttpServletRequest request, String name) {
315315
String value = request.getHeader(name);
316316

317317
if (value != null) {

0 commit comments

Comments
 (0)