Fixes for image support

This commit is contained in:
Ludovic Dubost
2020-01-02 20:12:00 +01:00
parent 6155284c4d
commit d9fb248504
7 changed files with 250 additions and 64 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) Ascensio System SIA 2012-2019. All rights reserved
* Copyright (C) Ascensio System SIA 2012-2020. All rights reserved
*
* https://www.onlyoffice.com/
*
@@ -11484,7 +11484,7 @@ function isRealObject(obj)
if (window['IS_NATIVE_EDITOR'])
{
var stream = window["native"]["openFileCommand"](sFileUrl, changesUrl, Signature);
//получаем url к папке с файлом
var url;
var nIndex = sFileUrl.lastIndexOf("/");
@@ -11496,7 +11496,7 @@ function isRealObject(obj)
} else {
bError = true;
}
bEndLoadFile = true;
onEndOpen();
}
@@ -12384,6 +12384,10 @@ function isRealObject(obj)
function UploadImageFiles(files, documentId, documentUserId, jwt, callback)
{
// CryptPad: we need to take control of the upload
window.parent.APP.UploadImageFiles(files, documentId, documentUserId, jwt, callback);
return;
if (files.length > 0)
{
var url = sUploadServiceLocalUrl + '/' + documentId + '/' + documentUserId + '/' + g_oDocumentUrls.getMaxIndex();
@@ -15594,6 +15598,7 @@ window["AscDesktopEditor_Save"] = function()
window["AscDesktopEditor"]["OnSave"]();
}
};
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
@@ -21531,7 +21536,16 @@ CCollaborativeEditingBase.prototype.Clear_NewImages = function()
};
CCollaborativeEditingBase.prototype.Add_NewImage = function(Url)
{
this.m_aNewImages.push( Url );
// CryptPad - Modify URL for local loading
var that = this;
if (Url.indexOf("#src=")!=-1) {
window.parent.APP.getImageURL(Url, function(url) {
that.m_aNewImages.push( Url );
});
} else {
this.m_aNewImages.push( Url );
}
// CryptPad - End modification
};
//-----------------------------------------------------------------------------------
// Функции для работы с массивом m_aDC
@@ -24323,9 +24337,32 @@ function (window, undefined)
baseEditorsApi.prototype._addImageUrl = function()
{
};
// CRYPTPAD
// This method is necessary to add the loaded images to the list of loaded images
// The code is in slide/api.js
baseEditorsApi.prototype.asc_addImageCallback = function(res)
{
};
baseEditorsApi.prototype.asc_addImage = function()
{
var t = this;
// CryptPad: we need to take control of the upload
// t.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
// This method calls back to the cryptpad onlyoffice inner.js to load the cryptad file dialog
window.parent.APP.AddImage(function(res) {
// This method adds the loaded image to the list of loaded images
t.asc_addImageCallback(res);
// This method activats the image
t._addImageUrl([res.url]);
// t.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
}, function() {
// t.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
t.sendEvent("asc_onError", error, c_oAscError.Level.NoCritical);
});
return;
// Cryptpad end
AscCommon.ShowImageFileDialog(this.documentId, this.documentUserId, this.CoAuthoringApi.get_jwt(), function(error, files)
{
t._uploadCallback(error, files);
@@ -32084,7 +32121,15 @@ background-repeat: no-repeat;\
{
this.AddImageUrl(AscCommon.getFullImageSrc2(url));
};
// CRYPTPAD
// This method is necessary to add the loaded images to the list of loaded images
asc_docs_api.prototype.asc_addImageCallback = function(res)
{
g_oDocumentUrls.addImageUrl(res.name, res.url)
}
asc_docs_api.prototype.asyncImageEndLoadedBackground = function(_image)
{
};
asc_docs_api.prototype._addImageUrl = function(urls)
{
if(this.isImageChangeUrl || this.isShapeImageChangeUrl){
@@ -37306,4 +37351,4 @@ background-repeat: no-repeat;\
AscCommon.g_font_loader.LoadDocumentFonts2(_fonts);
};
})(window, window.document);
})(window, window.document);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) Ascensio System SIA 2012-2019. All rights reserved
* Copyright (C) Ascensio System SIA 2012-2020. All rights reserved
*
* https://www.onlyoffice.com/
*
@@ -204606,7 +204606,7 @@ function DecodeBase64(imData, szSrc)
{
this.Api = _api;
};
this.LoadEmbeddedFonts = function(url, _fonts)
{
this.embeddedFilesPath = url;
@@ -204875,7 +204875,7 @@ function DecodeBase64(imData, szSrc)
oThis.Api.OpenDocumentProgress.CurrentFont++;
oThis.Api.SendOpenProgress();
}
oThis.fonts_loading_after_style[oThis.fonts_loading_after_style.length] = oThis.fonts_loading[0];
oThis.fonts_loading.shift();
oThis._LoadFonts();
@@ -204950,7 +204950,7 @@ function DecodeBase64(imData, szSrc)
{
this.embeddedFontFiles[font_index].SetStreamIndex(stream_index);
};
function CGlobalImageLoader()
{
this.map_image_index = {};
@@ -204962,7 +204962,7 @@ function DecodeBase64(imData, szSrc)
this.bIsLoadDocumentFirst = false;
this.bIsAsyncLoadDocumentImages = false;
this.bIsAsyncLoadDocumentImages = true;
this.bIsLoadDocumentImagesNoByOrder = true;
this.nNoByOrderCounter = 0;
@@ -205023,7 +205023,15 @@ function DecodeBase64(imData, szSrc)
}
}
};
this.LoadDocumentImagesCallback = function() {
if (this.ThemeLoader == null)
this.Api.asyncImagesDocumentEndLoaded();
else
this.ThemeLoader.asyncImagesEndLoaded();
}
this.LoadDocumentImages = function(_images, isUrl)
{
// сначала заполним массив
@@ -205051,13 +205059,10 @@ function DecodeBase64(imData, szSrc)
{
this.LoadImageAsync(i);
}
this.images_loading.splice(0, _len);
if (this.ThemeLoader == null)
this.Api.asyncImagesDocumentEndLoaded();
else
this.ThemeLoader.asyncImagesEndLoaded();
var that = this;
setTimeout(function() { that.LoadDocumentImagesCallback() }, 3000);
}
};
@@ -205181,17 +205186,27 @@ function DecodeBase64(imData, szSrc)
oImage.Status = ImageLoadStatus.Loading;
oImage.Image = new Image();
oThis.map_image_index[oImage.src] = oImage;
var oThat = oThis;
oImage.Image.onload = function(){
oImage.Status = ImageLoadStatus.Complete;
oThis.Api.asyncImageEndLoadedBackground(oImage);
oThat.Api.asyncImageEndLoadedBackground(oImage);
};
oImage.Image.onerror = function(){
oImage.Status = ImageLoadStatus.Complete;
oImage.Image = null;
oThis.Api.asyncImageEndLoadedBackground(oImage);
oThat.Api.asyncImageEndLoadedBackground(oImage);
};
//oImage.Image.crossOrigin = 'anonymous';
oThis.loadImageByUrl(oImage.Image, oImage.src);
// CRYPTPAD: if we find an image URL with #channel= in it
// then we need to ask cryptpad to get the blob
if (oImage.src.indexOf("#src=")!=-1)
window.parent.APP.getImageURL(oImage.src, function(url) {
oThis.loadImageByUrl(oImage.Image, url);
oThis.map_image_index[url] = oImage;
});
else
oThis.loadImageByUrl(oImage.Image, oImage.src);
};
this.LoadImagesWithCallback = function(arr, loadImageCallBack, loadImageCallBackArgs)