【问题标题】:How to create a post-rename or post-delete event hook for CKFinder?如何为 CKFinder 创建重命名后或删除后事件挂钩?
【发布时间】:2013-10-23 10:31:48
【问题描述】:

如果文件在 CKFinder 中被删除或重命名,我需要编辑内容并通知用户各种事情。我想我可以创建一个 JavaScript 解决方案,然后使用一些简单的 AJAX 将逻辑卸载到后端,如下所示:

CKFinder.on('successfulFileRename', function(event, oldpath, newpath) {
    // Contact backend, see where file was used, inform user etc etc
});

但是很遗憾,我找不到任何事件系统。我将如何为 CKFinder 实现此功能?我需要的事件是文件/文件夹 - 重命名/删除/移动。它不一定是前端解决方案,但为了简单起见,我更喜欢它。我的后端是 ASP.net MVC3。

(CKF 的替代品作为 cmets 值得欢迎,但它们需要的功能与其所具有的功能大致相同。)

【问题讨论】:

    标签: javascript asp.net-mvc ckfinder


    【解决方案1】:

    通过documentation 我也找不到任何像扩展点这样的事件。

    但是通过查看一些源代码,我发现CKFinder.dataTypes.Connector 上的sendCommandPost method 每次需要发送到服务器时都会被调用。所以在每个重要事件上,比如文件/文件夹 - 重命名/删除/移动。

    因此您可以轻松创建自定义插件,您可以在其中访问 CKFinderAPI 实例,然后您可以从那里覆盖 sendCommandPost 并添加自定义逻辑

    CKFinder.addPlugin( 'myplugin', function( api ) {
        var orginalsendCommandPost = api.connector.sendCommandPost;
        api.connector.sendCommandPost = function() {
    
          // call the original function
          var result = orginalsendCommandPost.apply(this, arguments);
    
          // commandname as string: 'CreateFolder', 'MoveFiles', 'RenameFile', etc
          console.log(arguments[0]); 
          // arguments as object
          console.log(JSON.stringify(arguments[1]));
    
          return result;
        }
    } );
    

    并注册插件:

    config.extraPlugins = "myplugin";
    var ckfinder = new CKFinder( config );
    

    【讨论】:

    • 听起来不错,我会试一试并在这里报告。
    • 我实际上刚刚尝试过,至少在前端级别它非常非常好。仍在后端工作,我还没有针对所有可能的情况对其进行测试,这正是我想要的。优秀而简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 2021-07-19
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    相关资源
    最近更新 更多