elfinder 路径修改_javascript – 自定义elfinder的右键菜单(一个jquery文件管理器插件)...

你想要完成的是什么,但它在很大程度上取决于你的连接器如何工作.

为了使用您的规则,您必须在this.exec或this.getstate中添加代码.每种选择都有利弊.

>如果您将代码添加到this.getstate,您的代码可能会针对单个操作执行多次(例如:当您选择多个文件夹时,该功能在您单击第一个文件夹时执行,在最后一个文件夹上执行,当您在右侧时执行点击).

但是,使用this.getstate,您可以在任何不符合要求(规则)的情况下隐藏选项(按钮).

>向this.exec添加代码可确保每个操作仅执行一次代码,但即使规则不适用,该按钮也始终存在.

如果选择此选项,则需要向用户使用某种警报或对话框消息,以告知他们未显示共享菜单的原因.

在下面的代码中,我使用了this.getstate,但您可以将代码移动到this.exec.在Javascript方面,你需要使用这样的东西:

elFinder.prototype.i18.zh_TW.messages['cmdsharefolder'] = 'Share';

elFinder.prototype._options.commands.push('sharefolder');

elFinder.prototype.commands.sharefolder = function () {

var self = this,

fm = self.fm;

this.exec = function (hashes) {

// Display the share menu

};

this.getstate = function () {

var hashes = self.fm.selected(), result = 0;

// Verifies rule nr 3: For single folder only,

// if select more than one folder will exclude the button

if (hashes.length > 1) {

return -1;

}

// Rule 1 and 2 exclude itself. By this I mean that rule nr 2

// takes precedence over rule nr 1, so you just need to check

// if the selected hash is a root folder.

$.ajax({

url: 'file-manager/check-rule-on-hash',

data: hashes,

type: 'get',

async: false,

dataType: 'json',

success: function(response) {

if (!response.isRoot) {

result = -1;

}

}

});

return result;

}

}

说明:

>规则nr 3很简单,因为您可以通过Javascript访问所选项目的数量.所以你只需要计算所选哈希的数量.如果该数字大于1,则表示用户选择了多个项目,并且不应显示该菜单.

>规则nr 2有点棘手,因为你需要“验证”所选的哈希,这就是为什么我开始说这取决于连接器的工作方式.

例如,我有一个自定义PHP连接器,其中文件夹结构是通过数据库表定义的.尽管所有文件都物理存储在硬盘驱动器上,但元数据存储在同一个表中(主要是因为所有权限都是通过数据库定义的).在我的情况下,执行ajax调用并检查给定的散列是否是根文件夹有点容易,因为该信息存储在数据库中,我可以通过简单的查询检索该信息.

由于我无法确定连接器的工作方式,因此通用解决方案是使用选定的哈希对服务器执行ajax调用,并验证该哈希是否为根文件夹.服务器应返回一个对象,其属性isRoot为true或false.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值