2015-10-31 1 views
1

Мы работаем над веб-приложением с угловым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 вызывается теперь закрытия кнопки браузера ... Но наше требование, чтобы сохранить документ на нажатие кнопки сохранения. Спасибо заранее.

ответ

0

Дело в том, что нажатие на кнопку «Сохранить» создает временный файл в редакторе документов. Версия рабочего документа будет создана только после закрытия редактора документов всеми пользователями (через десять секунд). Невозможно загрузить измененный документ в реальном времени (перед его закрытием).

Смежные вопросы