ONLYOFFICE歷史版本功能的開發

https://api.onlyoffice.com/editors/history

上面的頁面介紹如何進行歷史版本功能的開發。

https://api.onlyoffice.com/editors/howitworks

上面介紹了onlyoffice document server所包含的功能,


The client side includes:

  • Document manager - the list of the documents displayed in the user browser where the user can select the necessary document and perform some actions with it (depending on the provided rights, the user can open the document to view it or edit, share the document with other users).

  • Document editor - the document viewing and editing interface with all the most known document editing features available, used as a medium between the user and the document editing service.

The server side includes:

  • Document storage service - the server service which stores all the documents available to the users with the appropriate access rights. It provides the document IDs and links to these documents to the document manager which the user sees in the browser.

  • Document editing service - the server service which allows to perform the document viewing and editing (in case the user has the appropriate rights to do that). The document editor interface is used to access all the document editing service features.

  • Document command service - the server service which allows to perfom additional commands with document editing service.

  • Document conversion service - the server service which allows to convert the document file into the appropriate Office Open XML format (docx for text documents, xlsx for spreadsheets and pptx for presentations) for their editing or downloading.

Please note, that ONLYOFFICE Document Server includes the document editordocument editing servicedocument command service and document conversion service. The document manager and document storage service are either included to Community Server or must be implemented by the software integrators who use ONLYOFFICE Document Server on their own server.

請注意,onlyoffice document server包括document editordocument editing servicedocument command service(文檔編輯器、文檔編輯服務、文檔命令服務和文檔轉換服務)。文檔管理器文檔存儲服務要麼包含在社區服務器上,要麼必須由在自己的服務器上僅使用office文檔服務器的軟件集成商實現。

我用golang就是開發了文檔管理器和文檔存儲


類似可道雲的那種雲盤的資料管理。


但相比可道雲,對於我們工程設計人員來說,更容易管理文檔,比如編號和名稱分開,文件作爲附件放到成果下面,而不像可道雲這樣直接看到的就是附件,一個成果下可以放多個附件。還可以發佈文章,可以設置成果間的關聯,可以設置目錄的權限,可以根據附件擴展名來設置權限,比如只運行看pdf文件,不運行看dwg,dgn等圖紙文件。

回到正題,歷史版本的開發必須從onlyoffice document server的返回值裏找到數據結構。

[html] view plain copy

  1. {  

  2.     "key":"1520696086733383100",  

  3.     "status":2,  

  4.       

  5.     "url":"http://192.168.99.100:9000/cache/files/1520696086733383100_1849/outpu  

  6.     t.docx/output.docx?md5=CSBXuCfKbp1zaA2C-IoB2g==&expires=1523288157&  

  7.     disposition=attachment&ooname=output.docx",  

  8.     "changesurl":"http://192.168.99.100:9000/cache/files/  

  9.     1520696086733383100_1849/changes.zip/changes.zip?  

  10.     md5=eQOOXry8Spob255EtEi7QA==&expires=1523288157&  

  11.     disposition=attachment&ooname=output.zip",  

  12. "history":{  

  13.     "serverVersion":"5.0.7",  

  14.     "changes":[  

  15.         {  

  16.             "created":"2018-03-10 15:34:57",  

  17.             "user":  

  18.             {  

  19.                 "id":"9",  

  20.                 "name":"qin.xc"  

  21.             }  

  22.         },  

  23.         {  

  24.             "created":"2018-03-10 15:35:29",  

  25.             "user":  

  26.             {  

  27.                 "id":"8",  

  28.                 "name":"qin8.xc"  

  29.             }  

  30.         }  

  31.     ]  

  32. },  

  33. "users":["8"],  

  34. "actions":[{"type":0,"userid":"9"}],  

  35. "lastsave":"2018-03-10T15:35:37.823Z",  

  36. "notmodified":false  

  37. }  

官網上的例子:

Sample of JSON object sent to the "callbackUrl" address by document editing service when the user changed the document and closed it for editing

[html] view plain copy

  1. {  

  2.     "actions": [{"type": 0, "userid": "78e1e841"}],  

  3.     "changesurl": "https://documentserver/url-to-changes.zip",  

  4.     "history": {  

  5.         "changes": changes,  

  6.         "serverVersion": serverVersion  

  7.     },  

  8.     "key": "Khirz6zTPdfd7",  

  9.     "status": 2,  

  10.     "url": "https://documentserver/url-to-edited-document.docx",  

  11.     "users": ["6d5a81d0"]  

  12. }  

所以用beego開發先設置數據結構,然後解析到結構體就行了。

[plain] view plain copy

  1. type Callback struct {  

  2.     Key         string   `json:"key"`  

  3.     Status      int      `json:"status"`  

  4.     Url         string   `json:"url"`  

  5.     Changesurl  string   `json:"changesurl"`  

  6.     History     history1 `json:"history"`  

  7.     Users       []string `json:"users"`  

  8.     Actions     []action `json:"actions"`  

  9.     Lastsave    string   `json:"lastsave"`  

  10.     Notmodified bool     `json:"notmodified"`  

  11. }  

  12.   

  13. type action struct {  

  14.     Type   int    `json:"type"`  

  15.     Userid string `json:"userid"`  

  16. }  

  17.   

  18. type history1 struct {  

  19.     ServerVersion string   `json:"serverVersion"`  

  20.     Changes       []change `json:"changes"`  

  21. }  

  22.   

  23. type change struct {  

  24.     Created string `json:"created"` //time.Time  

  25.     User    User1  `json:"user"`  

  26. }  

  27.   

  28. type User1 struct {  

  29.     Id   string `json:"id"` //必須大寫才能在tpl中顯示{{.json}}  

  30.     Name string `json:"name"`  

  31. }  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章