elfinder(一个 Javascript 文件管理器插件)绑定操作在 connector.php 中不触发
elfinder (a Javascript file manager plugin) bind action not fire in connector.php
function log() {
$data = array(
'folder_id' => 1,
'user_id' => 1
);
$this->Folder_model->share($data);
}
function access($attr, $path, $data, $volume) {
return strpos(basename($path), '.') === 0 // if file/folder begins with '.' (dot)
? !($attr == 'read' || $attr == 'write') // set read+write to false, other (locked+hidden) set to true
: null; // else elFinder decide it itself
}
function album() {
$opts = array(
'bind' => array(
'upload.presave' => array(
'Plugin.AutoResize.onUpLoadPreSave'
)
),
'roots' => array(
array(
'driver' => 'LocalFileSystem',
'alias' => 'Home',
'path' => 'uploads/album/' . $this->user_id . '/',
'URL' => site_url('uploads/album/' . $this->user_id),
'uploadDeny' => array('all'),
'uploadAllow' => array('image/jpeg', 'image/gif', 'image/png', 'image/bmp'),
'uploadOrder' => array('deny', 'allow'),
'accessControl' => array($this, 'access'),
'plugin' => array(
'AutoResize' => array(
'enable' => true,
'maxWidth' => 2100,
'maxHeight' => 1500,
'quality' => 100
)
),
'bind' => array(
'mkdir mkfile rename duplicate upload rm paste' => array($this, 'log')
)
)
)
);
$connector = new elFinderConnector(new elFinder($opts));
$connector->run();
}
以上是connector的class,其中album是前端使用的connector路径Jquery。
问题是,由于访问控制可以使用array($this, 'access')
触发功能,所以bind中array($this, 'log')
的语法应该正确吗?
但是,我检查了每个动作都不能触发绑定功能,有什么办法调试吗?非常感谢
您不能在根选项中使用 bind
。
function album() {
$opts = array(
'bind' => array(
'upload.presave' => array(
'Plugin.AutoResize.onUpLoadPreSave'
),
'mkdir mkfile rename duplicate upload rm paste' => array(
array($this, 'log')
)
),
'roots' => array(
array(
'driver' => 'LocalFileSystem',
'alias' => 'Home',
'path' => 'uploads/album/' . $this->user_id . '/',
'URL' => site_url('uploads/album/' . $this->user_id),
'uploadDeny' => array('all'),
'uploadAllow' => array('image/jpeg', 'image/gif', 'image/png', 'image/bmp'),
'uploadOrder' => array('deny', 'allow'),
'accessControl' => array($this, 'access'),
'plugin' => array(
'AutoResize' => array(
'enable' => true,
'maxWidth' => 2100,
'maxHeight' => 1500,
'quality' => 100
)
)
)
)
);
function log() {
$data = array(
'folder_id' => 1,
'user_id' => 1
);
$this->Folder_model->share($data);
}
function access($attr, $path, $data, $volume) {
return strpos(basename($path), '.') === 0 // if file/folder begins with '.' (dot)
? !($attr == 'read' || $attr == 'write') // set read+write to false, other (locked+hidden) set to true
: null; // else elFinder decide it itself
}
function album() {
$opts = array(
'bind' => array(
'upload.presave' => array(
'Plugin.AutoResize.onUpLoadPreSave'
)
),
'roots' => array(
array(
'driver' => 'LocalFileSystem',
'alias' => 'Home',
'path' => 'uploads/album/' . $this->user_id . '/',
'URL' => site_url('uploads/album/' . $this->user_id),
'uploadDeny' => array('all'),
'uploadAllow' => array('image/jpeg', 'image/gif', 'image/png', 'image/bmp'),
'uploadOrder' => array('deny', 'allow'),
'accessControl' => array($this, 'access'),
'plugin' => array(
'AutoResize' => array(
'enable' => true,
'maxWidth' => 2100,
'maxHeight' => 1500,
'quality' => 100
)
),
'bind' => array(
'mkdir mkfile rename duplicate upload rm paste' => array($this, 'log')
)
)
)
);
$connector = new elFinderConnector(new elFinder($opts));
$connector->run();
}
以上是connector的class,其中album是前端使用的connector路径Jquery。
问题是,由于访问控制可以使用array($this, 'access')
触发功能,所以bind中array($this, 'log')
的语法应该正确吗?
但是,我检查了每个动作都不能触发绑定功能,有什么办法调试吗?非常感谢
您不能在根选项中使用 bind
。
function album() {
$opts = array(
'bind' => array(
'upload.presave' => array(
'Plugin.AutoResize.onUpLoadPreSave'
),
'mkdir mkfile rename duplicate upload rm paste' => array(
array($this, 'log')
)
),
'roots' => array(
array(
'driver' => 'LocalFileSystem',
'alias' => 'Home',
'path' => 'uploads/album/' . $this->user_id . '/',
'URL' => site_url('uploads/album/' . $this->user_id),
'uploadDeny' => array('all'),
'uploadAllow' => array('image/jpeg', 'image/gif', 'image/png', 'image/bmp'),
'uploadOrder' => array('deny', 'allow'),
'accessControl' => array($this, 'access'),
'plugin' => array(
'AutoResize' => array(
'enable' => true,
'maxWidth' => 2100,
'maxHeight' => 1500,
'quality' => 100
)
)
)
)
);