Мы работаем над веб-приложением с угловымJS и с использованием пружины/спящего режима. Мы используем операционную систему Linux в производственной среде, а среда разработки - это Windows. Мы пытаемся внедрить инструмент для редактирования документов в Интернете, например, ms-word в нашем приложении.Онлайн-редактирование документов в веб-приложениях на основе J2EE с помощью OnlyOffice- Но callback Url не работает
После некоторых исследований мы используем OnlyOffice https://api.onlyoffice.com/. Я использую следующий компонент angularJs для использования onlyOffice https://github.com/legalthings/angular-onlyoffice Мы можем интегрировать его с приложением, и мы можем увидеть открытый документ в редакторе в веб-браузере. Но мои изменения не сохраняются. Элемент управления не достигает callBackUrl.
Поскольку angularJs компонент использует OnSave метод, который не является там в OnlyOffice API anymore.So я изменил код в HTML и JS файл немного: - файл кода HTML является: -
<div ng-controller="DocumentEditController">
<onlyoffice-editor src="{{ trustSrc(document.src) }}"
title="{{ document.name }}">
</onlyoffice-editor>
</div>
И JS код файла: -
angular.module('onlyoffice', []);
angular.module('onlyoffice').directive('onlyofficeEditor', [function() {
function key(k) {
var result = k.replace(new RegExp("[^0-9-.a-zA-Z_=]", "g"), "_") + (new
Date()).getTime();
return result.substring(result.length - Math.min(result.length, 50));
}
var getDocumentType = function (ext) {
if (".docx.doc.odt.rtf.txt.html.htm.mht.pdf.djvu.fb2.epub.xps".indexOf(ext) != -1) return "text";
if (".xls.xlsx.ods.csv".indexOf(ext) != -1) return "spreadsheet";
if (".pps.ppsx.ppt.pptx.odp".indexOf(ext) != -1) return "presentation";
return null;
};
return {
template: '<div id="onlyoffice-editor"></div>',
link: function ($scope, $element, $attrs) {
$scope.$watch(function() {
return $attrs.src;
}, function() {
if (!$attrs.src) return;
var docUrl = $attrs.src;
var docTitle = $attrs.title || docUrl;
var docKey = key(docUrl);
var docType = docUrl.split('?')[0].substring(docUrl.lastIndexOf(".") + 1).trim().toLowerCase();
var documentType = getDocumentType(docType);
var config = {
type: "desktop",
width: '100%',
height: '100%',
documentType: documentType,
document: {
title: docTitle,
url: docUrl,
fileType: docType,
key: docKey,
permissions: {
edit: true,
download: false
}
},
editorConfig: {
mode: 'edit',
callbackUrl:"/documentSave"
},
events: {
onReady: function() {alert("in on ready");
setTimeout(function() {
$scope.$apply(function() {
$scope.ready = true;
});
}, 5000);
},
onError: function (event) {
alert(event.data);
// var url = event.data;
// $scope.save({url: url, close: $scope.close});
},
}
};
//creating object editing
new DocsAPI.DocEditor("onlyoffice-editor", config);
});
}
}
}]);
Я изменил documenSave на полное имя с использованием Localhost и APPNAME также, но это тоже не работает. Любая помощь очень ценится.
Редактировать
CallBackURL вызывается теперь закрытия кнопки браузера ... Но наше требование, чтобы сохранить документ на нажатие кнопки сохранения. Спасибо заранее.