[OPENMEETINGS-1624] file upload should work in IE11
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/b40d794e Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/b40d794e Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/b40d794e Branch: refs/heads/3.2.x Commit: b40d794eae6d46d2e66ead295b84bc55b8f31415 Parents: 3dc27be Author: Maxim Solodovnik <[email protected]> Authored: Sat Apr 8 10:25:17 2017 +0000 Committer: Maxim Solodovnik <[email protected]> Committed: Sat Apr 8 10:25:17 2017 +0000 ---------------------------------------------------------------------- .../apache/openmeetings/web/room/SwfPanel.html | 7 ++-- .../apache/openmeetings/web/room/SwfPanel.java | 37 +++++++++++++++----- .../openmeetings/web/room/swf-functions.js | 2 +- .../apache/openmeetings/web/user/chat/chat.js | 11 ++++-- 4 files changed, 41 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b40d794e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html index 9addd3b..fc318ca 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html @@ -7,16 +7,16 @@ to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - + --> <html xmlns:wicket="http://wicket.apache.org"> <wicket:head> @@ -44,6 +44,5 @@ <img src="images/ajax-loader.gif" /> </div> <noscript>Please enable JavaScript in order to use this application.</noscript> - <script type="text/javascript" wicket:id="init"></script> </wicket:panel> </html> http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b40d794e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java index 57cc928..5d92663 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java @@ -38,12 +38,14 @@ import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.app.WebSession; import org.apache.openmeetings.web.common.BasePanel; import org.apache.wicket.ajax.AbstractAjaxTimerBehavior; +import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.head.CssHeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; +import org.apache.wicket.markup.head.OnDomReadyHeaderItem; import org.apache.wicket.markup.head.PriorityHeaderItem; -import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.protocol.http.ClientProperties; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.request.mapper.parameter.PageParametersEncoder; import org.apache.wicket.request.resource.JavaScriptResourceReference; @@ -65,7 +67,20 @@ public class SwfPanel extends BasePanel { public static final String PARAM_URL = "url"; public static final String SWF_TYPE_NETWORK = "network"; public static final String SWF_TYPE_SETTINGS = "settings"; + private final PageParameters pp; private Long roomId = null; + private final AbstractDefaultAjaxBehavior panelLoaded = new AbstractDefaultAjaxBehavior() { + private static final long serialVersionUID = 1L; + + @Override + protected void respond(AjaxRequestTarget target) { + PageParameters spp = new PageParameters(pp); + if (roomId != null) { + spp.mergeWith(new PageParameters().add(WICKET_ROOM_ID, roomId)); + } + target.appendJavaScript(getInitFunction(spp)); + } + }; public SwfPanel(String id) { this(id, new PageParameters()); @@ -77,6 +92,7 @@ public class SwfPanel extends BasePanel { public SwfPanel(String id, PageParameters pp) { super(id); + this.pp = pp; //OK let's find the room try { StringValue room = pp.get(WICKET_ROOM_ID); @@ -86,12 +102,12 @@ public class SwfPanel extends BasePanel { } catch (Exception e) { //no-op } - PageParameters spp = new PageParameters(pp); - if (roomId != null) { - spp.mergeWith(new PageParameters().add(WICKET_ROOM_ID, roomId)); - } - add(new Label("init", getInitFunction(spp)).setEscapeModelStrings(false)); - add(new AbstractAjaxTimerBehavior(Duration.minutes(5)) { + } + + @Override + protected void onInitialize() { + super.onInitialize(); + add(panelLoaded, new AbstractAjaxTimerBehavior(Duration.minutes(5)) { private static final long serialVersionUID = 1L; @Override @@ -114,6 +130,7 @@ public class SwfPanel extends BasePanel { if (WebSession.get().getClientInfo().getProperties().isBrowserMozillaFirefox()) { response.render(new PriorityHeaderItem(CssHeaderItem.forCSS(".ui-widget-overlay{opacity: 1 !important;}", "ff-veil-hack"))); } + response.render(OnDomReadyHeaderItem.forScript(panelLoaded.getCallbackScript())); } public String getInitFunction(PageParameters pp) { @@ -143,8 +160,10 @@ public class SwfPanel extends BasePanel { , "775", "452", "767", "764", "765", "918", "54", "761", "762", "144", "203", "642" , "save.success"); } - initStr = String.format("var labels = %s; initSwf(%s);", lbls - , new JSONObject().put("src", swf + new PageParametersEncoder().encodePageParameters(pp)).toString()); + JSONObject options = new JSONObject().put("src", swf + new PageParametersEncoder().encodePageParameters(pp)); + ClientProperties cp = WebSession.get().getClientInfo().getProperties(); + options.put("wmode", cp.isBrowserInternetExplorer() && cp.getBrowserVersionMajor() == 11 ? "opaque" : "direct"); + initStr = String.format("var labels = %s; initSwf(%s);", lbls, options.toString()); } return initStr; } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b40d794e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js index aa84eba..5ecc512 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js @@ -31,7 +31,7 @@ function initSwf(_options) { .attr('quality', 'high') .attr('bgcolor', options.bgcolor) .attr('src', "public/" + options.src) - .attr('wmode', 'direct') + .attr('wmode', options.wmode) .attr('allowfullscreen', true) .attr('width', options.width).attr('height', options.height) .attr('id', 'lzapp') http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b40d794e/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js index 570d33e..ca6548d 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js @@ -33,9 +33,16 @@ var Chat = function() { , emoticon = new CSSEmoticon() , typingTimer , doneTypingInterval = 5000 //time in ms, 5 second for example - , audio = new Audio('./public/chat_message.mp3'); + , audio ; - + try { + audio = new Audio('./public/chat_message.mp3'); + } catch (e) { + //not implemented in IE + audio = { + play: function() {} + }; + } function doneTyping () { typingTimer = null; chatActivity('typing_stop', $('.room.box').data('room-id'));
