4

如果文件在 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 的替代品作为评论,但它们需要与它具有相同的功能。)

4

1 回答 1

3

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

但是,通过查看一些源代码,我发现每次需要将某些内容发送到服务器时都会调用该sendCommandPost方法。CKFinder.dataTypes.Connector因此,在每个重要事件上,例如文件/文件夹 - 重命名/删除/移动。

因此,您可以轻松创建一个自定义插件,您可以在其中访问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 );
于 2013-10-31T21:36:31.873 回答