From efcc0ed3f9548b950a2df96b2e6d75f1034c2466 Mon Sep 17 00:00:00 2001 From: Victor Dubiniuk Date: Tue, 22 Oct 2013 16:18:03 +0300 Subject: [PATCH] Integrate bootstrap, wait for js components to load --- js/3rdparty/webodf/webodf_bootstrap.js | 20 -------- js/documents.js | 66 +++++++++++++++++++------- 2 files changed, 48 insertions(+), 38 deletions(-) delete mode 100644 js/3rdparty/webodf/webodf_bootstrap.js diff --git a/js/3rdparty/webodf/webodf_bootstrap.js b/js/3rdparty/webodf/webodf_bootstrap.js deleted file mode 100644 index 67e44fed..00000000 --- a/js/3rdparty/webodf/webodf_bootstrap.js +++ /dev/null @@ -1,20 +0,0 @@ -/*globals navigator,dojoConfig */ -var usedLocale = "C"; - -if (navigator && navigator.language.match(/^(de)/)) { - usedLocale = navigator.language.substr(0,2); -} - -dojoConfig = { - locale: usedLocale, - paths: { - "webodf/editor": OC.appswebroots.documents + "/js/3rdparty/webodf/editor", - "dijit": OC.appswebroots.documents + "/js/3rdparty/resources/dijit", - "dojox": OC.appswebroots.documents + "/js/3rdparty/resources/dojox", - "dojo": OC.appswebroots.documents + "/js/3rdparty/resources/dojo", - "resources": OC.appswebroots.documents + "/js/3rdparty/resources" - } -}; - - -//alert("bootstrap hello"); diff --git a/js/documents.js b/js/documents.js index 7754254c..ae5e063c 100644 --- a/js/documents.js +++ b/js/documents.js @@ -6,6 +6,7 @@ var documentsMain = { isEditormode : false, useUnstable : false, isGuest : false, + ready :false, UI : { /* Overlay HTML */ @@ -49,7 +50,7 @@ var documentsMain = { $(documentsMain.UI.overlay).hide().appendTo(document.body); documentsMain.UI.mainTitle = $('title').text(); }, - + showOverlay : function(){ $('#documents-overlay,#documents-overlay-below').fadeIn('slow'); }, @@ -87,16 +88,17 @@ var documentsMain = { }, onStartup: function() { + var fileId; "use strict"; documentsMain.useUnstable = $('#webodf-unstable').val()==='true'; documentsMain.UI.init(); if (!OC.currentUser){ documentsMain.isGuest = true; - var fileId; + } else { // Does anything indicate that we need to autostart a session? - var fileId = parent.location.hash.replace(/\W*/g, ''); + fileId = parent.location.hash.replace(/\W*/g, ''); } if (!fileId){ @@ -106,18 +108,16 @@ var documentsMain = { } - OC.addScript('documents', '3rdparty/webodf/dojo-amalgamation', function() { - OC.addScript('documents', '3rdparty/webodf/webodf-debug').done(function() { - // preload stuff in the background - require({}, ["dojo/ready"], function(ready) { - ready(function() { - require({}, ["webodf/editor/Editor"], function(Editor) { - - if (fileId){ - documentsMain.prepareSession(); - documentsMain.joinSession(fileId); - } - }); + OC.addScript('documents', '3rdparty/webodf/webodf-debug').done(function() { + // preload stuff in the background + require({}, ["dojo/ready"], function(ready) { + ready(function() { + require({}, ["webodf/editor/Editor"], function(Editor) { + documentsMain.ready = true; + if (fileId){ + documentsMain.prepareSession(); + documentsMain.joinSession(fileId); + } }); }); }); @@ -137,7 +137,7 @@ var documentsMain = { initSession: function(response) { "use strict"; - + if (!response || !response.es_id || !response.status || response.status==='error'){ OC.Notification.show(t('documents', 'Failed to load this document. Please check if it can be opened with an external odt editor. This might also mean it has been unshared or deleted recently.')); documentsMain.prepareGrid(); @@ -145,6 +145,13 @@ var documentsMain = { setTimeout(OC.Notification.hide, 7000); return; } + + //Wait for 3 sec if editor is still loading + if (!documentsMain.ready){ + setTimeout(function(){ documentsMain.initSession(response) }, 3000); + console.log('Waiting for the editor to start...'); + return; + } require({ }, ["webodf/editor/server/owncloud/ServerFactory", "webodf/editor/Editor"], function (ServerFactory, Editor) { // fade out file list and show WebODF canvas @@ -335,14 +342,36 @@ var documentsMain = { }; +//web odf bootstrap code. Added here to reduce number of requests +/*globals navigator,dojoConfig */ +var usedLocale = "C"; + +if (navigator && navigator.language.match(/^(de)/)) { + usedLocale = navigator.language.substr(0,2); +} + +dojoConfig = { + locale: usedLocale, + paths: { + "webodf/editor": OC.appswebroots.documents + "/js/3rdparty/webodf/editor", + "dijit": OC.appswebroots.documents + "/js/3rdparty/resources/dijit", + "dojox": OC.appswebroots.documents + "/js/3rdparty/resources/dojox", + "dojo": OC.appswebroots.documents + "/js/3rdparty/resources/dojo", + "resources": OC.appswebroots.documents + "/js/3rdparty/resources" + } +}; + +//init $(document).ready(function() { "use strict"; $('.documentslist').on('click', 'li:not(.add-document)', function(event) { event.preventDefault(); + if (documentsMain.isEditorMode){ return; } + documentsMain.prepareSession(); if ($(this).attr('data-id')){ documentsMain.joinSession($(this).attr('data-id')); @@ -353,6 +382,7 @@ $(document).ready(function() { $(document.body).on('click', '#odf-invite', documentsMain.onInvite); $(document.body).on('click', '#odf-join', function(event){ event.preventDefault(); + // !Login page mess wih WebODF toolbars $(document.body).attr('id', 'body-user'); $('header,footer').hide(); @@ -366,6 +396,6 @@ $(document).ready(function() { var file_upload_start = $('#file_upload_start'); file_upload_start.on('fileuploaddone', documentsMain.show); //TODO when ending a session as the last user close session? - - OC.addScript('documents', '3rdparty/webodf/webodf_bootstrap', documentsMain.onStartup); + + OC.addScript('documents', '3rdparty/webodf/dojo-amalgamation', documentsMain.onStartup); });