处理评论

从文档中收集所有评论,并将其显示在自定义界面中。


它是如何运作的

  1. 当用户打开文档时,会执行 GetAllComments 方法来收集文档中的所有评论, 并将其显示在自定义界面中。 将显示以下评论数据:评论作者、发布评论的时间、评论文本和评论回复:

    var comments = [];
    
    var onDocumentReady = function () {
        window.connector = docEditor.createConnector();
    
        ...
    
        connector.executeMethod("GetAllComments", null, function (data) {
            comments = data;
        });
    
        ...
    
    }
    
  2. 当用户单击自定义界面中的 添加评论 按钮时,将执行 AddComment 方法向文档添加新评论。调用此方法后,会触发 onAddComment 事件, 将新评论添加到包含所有文档评论的数组中:

    var onDocumentReady = function () {
    
        ...
    
        connector.attachEvent("onAddComment", function (val) {
            var index = comments.findIndex((comment) => comment["Id"] === val["Id"]);
    
            if (index == -1) {
                comments = [val, ...comments];
            }
        });
    
        ...
    }
    
    ...
    
    $("#addComment").on("click", function () {
    
        ...
    
        var comment = $("#addCommentArea").val();
    
        if (Boolean(comment)) {
            var currentdate = Date.now();
            var datetime = "" + currentdate;
    
            connector.executeMethod("AddComment", [{ 
                    Text: comment, 
                    UserName: "John Smith", 
                    Time: datetime 
                }]
            );
        }
    
        ...
    
    });
    
  3. 当用户单击自定义界面中的 删除评论 按钮时,将执行 RemoveComments 方法从文档中删除评论。调用此方法后,将触发 onRemoveComment 事件, 以从包含所有文档评论的数组中删除评论:

    var onDocumentReady = function () {
    
        ...
    
        connector.attachEvent("onRemoveComment", function (val) {
            const index = comments.findIndex((comment) => comment["Id"] === val["Id"]);
    
            if (index !== -1) {
                comments.splice(index, 1);
            }
    
            ...
    
        });
    
        ...
    }
    
    $("#deleteComment").on("click", function () {
    
        ...
    
        connector.executeMethod("RemoveComments", [[comments[indexComment]["Id"]]]);
    
        ...
    
    });
    
  4. 当用户单击自定义界面中的箭头按钮时,将执行MoveToComment 方法在文档中的评论之间移动:

    
    ...
    
    connector.executeMethod("MoveToComment", [comments[indexComment]["Id"]]);
    
    ...
    
    
  5. 当用户单击自定义界面中的 添加回复 按钮时,将执行 ChangeComment 方法, 通过更改 CommentData 对象向现有评论添加回复。调用此方法后,会触发 onChangeCommentData 事件, 将新的评论回复添加到包含所有文档评论的数组中:

    var onDocumentReady = function () {
    
        ...
    
        connector.attachEvent("onChangeCommentData", function (val) {
            const index = comments.findIndex((comment) => comment["Id"] === val["Id"]);
    
            if (index !== -1) {
                comments[index]["Data"] = val["Data"];
            }
        });
    
        ...
    
    }
    
    $("#addReply").on("click", function () {
    
        ...
    
        var reply = $("#addReplyArea").val();
    
        if (Boolean(reply)) {
            var currentdate = Date.now();
            var datetime = "" + currentdate;
    
            comments[indexComment]["Data"]["Replies"].push({
                Text: reply
                Time: datetime,
                UserName: "John Smith"
            });
    
            connector.executeMethod(
                "ChangeComment", 
                [comments[indexComment]["Id"],
                comments[indexComment]["Data"]]
            );
        }
    
        ...
    
    });
    

请注意,该连接器仅适用于 ONLYOFFICE 开发者版本

此类是一项附加功能,需要额外付费。 如果您有任何疑问,请通过 sales@onlyoffice.com 联系我们的销售团队。