文件历史

您可以使用 文档编辑器查看文本文档、电子表格或演示文稿的历史记录。

文档历史记录与文档存储服务一起存储。 文档编辑器 将文档历史记录显示在左侧面板的版本列表中。 当您从列表中选择文档版本时,文档将被显示出来以供预览。

参考图和下面的步骤解释了在ONLYOFFICE 文档服务器中查看历史记录的过程。

Document history
  1. 用户在 文档编辑器中编辑文档时单击 版本历史 按钮。
  2. 文档编辑器文档存储服务请求文档版本列表。
  3. 文档存储服务 发送待显示的版本号的文档版本列表。
  4. 文档编辑器文档存储服务请求有关所选文档版本的信息。
  5. 文档存储服务 将链接发送到所选文档版本。
  6. 文档编辑器 显示选定的文档版本。
  7. 当用户单击文档版本列表中的另一个版本时, 文档编辑器 请求重新显示有关该版本的信息。
  8. 用户单击关闭历史记录按钮,文档编辑器将隐藏文档版本列表。
  1. 创建一个 html 文件来 打开文档
  2. 指定事件处理程序,用于打开在文档编辑器初始化的配置脚本中的 版本历史 列表。 调用 onRequestHistory 事件时,必须执行 refreshHistory 方法。 如果每个版本都存在历史参数,则此方法包含每个文档版本的文档历史记录。

    var onRequestHistory = function () {
        docEditor.refreshHistory({
            "currentVersion": 2,
            "history": [
                {
                    "created": "2010-07-06 10:13 AM",
                    "key": "af86C7e71Ca8",
                    "user": {
                        "id": "F89d8069ba2b",
                        "name": "Kate Cage"
                    },
                    "version": 1
                },
                {
                    "created": "2010-07-07 3:46 PM",
                    "key": "Khirz6zTPdfd7",
                    "user": {
                        "id": "78e1e841",
                        "name": "John Smith"
                    },
                    "version": 2
                },
                ...
            ],
        });
    };
    
    var docEditor = new DocsAPI.DocEditor("placeholder", {
        "events": {
            "onRequestHistory": onRequestHistory,
            ...
        },
        ...
    });
    
    打开文件
  3. 在文档编辑器初始化的配置脚本中,指定用来 从版本历史中选择版本的事件处理程序。 调用 onRequestHistoryData 事件时,必须执行 setHistoryData 方法。 此方法包含对应版本文件的绝对 URL。

    调用setHistoryData方法查看文档历史版本时,必须添加token来验证参数。

    var onRequestHistoryData = function (event) {
        var version = event.data;
        docEditor.setHistoryData({
            "fileType": "docx",
            "key": "Khirz6zTPdfd7",
            "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tZXhhbXBsZS1kb2N1bWVudC5kb2N4IiwidmVyc2lvbiI6Mn0.iRcdHve235L5K1e29SmUBkuHcxb63WHRko51WMJlmS0",
            "url": "https://example.com/url-to-example-document.docx",
            "version": 2
        });
    };
    
    var docEditor = new DocsAPI.DocEditor("placeholder", {
        "events": {
            "onRequestHistoryData": onRequestHistoryData,
            ...
        },
        ...
    });
    
    打开文件
  4. 在文档编辑器初始化的配置脚本中,指定事件处理程序,当用户单击版本历史记录中的恢复按钮时,将 恢复 文件版本。 当调用 onRequestRestore 事件时,必须执行 refreshHistory 方法才能再次初始化版本历史记录。 如果每个版本都存在历史参数,则此方法包含每个文档版本的文档历史记录。

    var onRequestRestore = function (event) {
        var fileType = event.data.fileType;
        var url = event.data.url;
        var version = event.data.version;
        ...
        docEditor.refreshHistory({
            "currentVersion": 2,
            "history": [
                {
                    "created": "2010-07-06 10:13 AM",
                    "key": "af86C7e71Ca8",
                    "user": {
                        "id": "F89d8069ba2b",
                        "name": "Kate Cage"
                    },
                    "version": 1
                },
                {
                    "changes": changes,
                    "created": "2010-07-07 3:46 PM",
                    "key": "Khirz6zTPdfd7",
                    "serverVersion": serverVersion,
                    "user": {
                        "id": "78e1e841",
                        "name": "John Smith"
                    },
                    "version": 2
                },
                ...
            ]
        });
    };
    
    var docEditor = new DocsAPI.DocEditor("placeholder", {
        "events": {
            "onRequestRestore": onRequestRestore,
            ...
        },
        ...
    });
    
    onRequestRestore
  5. 在浏览器中打开您的 html 文件。
  6. 在文档编辑器菜单中打开 版本历史 选项。
  7. 指定关闭历史记录按钮的事件处理程序,该按钮要在文档编辑器初始化的配置脚本中显示。 当用户尝试通过单击“关闭历史记录”按钮,而从查看文档版本历史记录返回到文档时, 调用 onRequestHistoryClose 事件并隐藏版本历史列表。 当该函数被调用时,编辑器必须在编辑模式下再次初始化。

    var onRequestHistoryClose = function () {
        document.location.reload();
    };
    
    var docEditor = new DocsAPI.DocEditor("placeholder", {
        "events": {
            "onRequestHistoryClose": onRequestHistoryClose,
            ...
        },
        ...
    });
    
    onRequestHistoryClose

如果文档版本是使用 文档编辑器创建的,则在查看文档历史记录时可以显示文档更改。 将编辑会话 保存 在文档版本旁边时,必须将附加数据保存到 文档存储服务 来实现此目的。 在 文档编辑器 中编辑后,有关编辑会话期间更改的信息将与更改的文档一起发送:

当服务器版本更新时,文档编辑器 不会使用changes 数据来突出历史记录中的更改。 它仅在 changesurl 参数中返回更改的文档。
  • History - 当您在侧面板中查看文档历史时,此信息允许显示每个文档版本的时间和作者。 必须作为对象的属性更改作为参数发送给 refreshHistory 方法。

    docEditor.refreshHistory({
        "currentVersion": 2,
        "history": [
            {
                "created": "2010-07-06 10:13 AM",
                "key": "af86C7e71Ca8",
                "user": {
                    "id": "F89d8069ba2b",
                    "name": "Kate Cage"
                },
                "version": 1
            },
            {
                "changes": changes,
                "created": "2010-07-07 3:46 PM",
                "key": "Khirz6zTPdfd7",
                "serverVersion": serverVersion,
                "user": {
                    "id": "78e1e841",
                    "name": "John Smith"
                },
                "version": 2
            },
            ...
        ],
    });
    

    其中 changes 是保存文档后返回的 历史对象更改

    其中 serverVersion 是保存文档后返回的 历史对象 中的 serverVersion

    ONLYOFFICE文档强调从当前文档会话开始时所做的更改,而不是从文档版本开始时所作的更改。 即使在一个会话中创建了多个文档版本,此会话中的所有更改也将突出显示。 因此,您无法在文档历史记录中看到使用强制保存选项创建的文档版本。
  • changesurl - 带有文档编辑数据的文件的绝对 URL,用于显示与特定文档版本相对应的更改。 必须保存文件,并且必须使用 setHistoryData 方法将其地址作为 changesUrl 参数发送。 必须将指向先前文档版本 (previous.url) 的链接添加到对象中。

    当调用setHistoryData方法查看文档历史版本时,必须添加token来验证参数。

    docEditor.setHistoryData({
        "changesUrl": "https://example.com/url-to-changes.zip",
        "fileType": "docx",
        "key": "Khirz6zTPdfd7",
        "previous": {
            "fileType": "docx",
            "key": "af86C7e71Ca8",
            "url": "https://example.com/url-to-the-previous-version-of-the-document.docx"
        },
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaGFuZ2VzVXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tY2hhbmdlcy56aXAiLCJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwicHJldmlvdXMiOnsiZmlsZVR5cGUiOiJkb2N4Iiwia2V5IjoiYWY4NkM3ZTcxQ2E4IiwidXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tdGhlLXByZXZpb3VzLXZlcnNpb24tb2YtdGhlLWRvY3VtZW50LmRvY3gifSwidXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tZXhhbXBsZS1kb2N1bWVudC5kb2N4IiwidmVyc2lvbiI6Mn0.ril3Ol3rvYne3g0dG8TdKCiwJ7-7kkYGc6-XWMvp8FU",
        "url": "https://example.com/url-to-example-document.docx",
        "version": 2
    });
    
    changesurl 请求是在浏览器中从添加的带有 documentserver 域的 iframe 发出的,其中 documentserver 是安装了 ONLYOFFICE 文档服务器的服务器的名称。 为了正确工作,必须允许跨域 HTTP 请求 (CORS)。 这可以使用 Access-Control-Allow-Origin 标头来实现。
    changesurl