2015-10-31 55 views
1

我們正在使用angularJS並使用spring/hibernate開發Web應用程序。 我們在生產環境中使用Linux操作系統,開發環境是Windows。我們正在嘗試在我們的應用程序中實現像ms-word一樣的在線文檔編輯工具。使用OnlyOffice在基於J2EE的Web應用程序中進行聯機文檔編輯 - 但回調URL不起作用

經過一番研究,我們使用OnlyOffice https://api.onlyoffice.com/。 我正在使用以下angularJs組件來使用唯一辦公室 https://github.com/legalthings/angular-onlyoffice 我們能夠將它與應用程序集成,我們可以在Web瀏覽器中的編輯器中看到打開的文檔。 但我的更改沒有被保存。控件沒有到達callBackUrl。

由於angularJs組件使用的onSave方法,該方法是不存在在OnlyOffice API anymore.So我已經在HTML改變了代碼和JS文件1位: - 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使用本地主機和應用程序的名字也完全合格的名稱,但是那也是行不通的。 任何幫助是高度讚賞。

編輯

CallBackUrl被稱爲現在的瀏覽器按鈕的接近......但我們的要求是將文檔保存在保存按鈕的點擊。 在此先感謝。

回答

0

事實上,單擊「保存」按鈕將在文檔編輯器中創建一個臨時文件。工作文檔版本將僅在所有用戶關閉文檔編輯器後(十秒內)創建。 無法實時下載更改的文檔(在關閉之前)。

相關問題