Пару вопросов про Cut, Paste и Select

Added by Сергей Б over 1 year ago

1. ff 3.6.13

По умолчанию при двойном клике мышки на файл выполняется SELECT , но у меня отключено
fileURL => false
и судя по всему я по этому получаю сообщение "Доступ к адресам файлов запрещен настройками коннектора" (для моих задач необходимо отключать URL доступ к файлам), в связи с этим у меня вопрос:
Как изменить дефолтное действие по двойному клику мышки с SELECT на OPEN ??

У меня не работает CUT > PASTE и COPY > PASTE я получаю ошибку "Некорректные параметры"
В elfinder.php4.class.php я нашел function _paste() но не пойму что именно вызывает 'Invalid parameters'
Одно важное дополнение: я в connector.php4.php передаю ID сессии и из нее достаю разные параметры:
..../connector.php4.php?ssid=508689932ba1f7a1d0aa09063a5a632b&cmd=open
для cmd я исправил ?cmd= на &cmd= я подозреваю что проблема в этом же но не могу понять как это профиксить.

Заранее благодарю.

PS Проект просто замечательный, за 3 дня перелопачивания инета и пробуя разные варианты файловых менеджеров, я даже в мыслях не думал что возможно найти этот алмаз в той куче навоза которую я перелопатил за это время, потратив кучу времени. Огромное спасибо всем тем кто приложил свои усилия на создание и поддержку этого проекта.


Replies (7)

RE: Пару вопросов про Cut и Select - Added by Dmitry Levashov over 1 year ago

чтобы отследить проблемы с cut/paste воспользуйтесь firebug
Вы используете коннектор для php4 - почему не для 5?
Посмотрите у нас в гите или тут на англоязычном форуме - недавно постили патч для передачи доп параметров коннектру
Ну или дождитесь след версии - она уже в работе )

RE: Пару вопросов про Cut и Select - Added by Сергей Б over 1 year ago

ну я использую php4 потому что у меня php4 :)
спасибо за совет покопаюсь еще в англ форуме, благодарю.

RE: Пару вопросов про Cut и Select - Added by Сергей Б over 1 year ago

Маленькое дополнение:
с помощью настроек в toolbar и в другие меню можно добавлять и убирать любые компоненты но в elfinder.css для toolbar не описаны некоторые значки такие как cut duplicate archive extract и поэтому они некорректно отображаются если их добавить, может это конечно так и задумано и может эти пункты там и не нужны но ИМХО если есть возможность добавлять пункты то и значки должны быть для них описаны.

в elfinder.css для toolbar отсутствуют вот эти значки:

.el-finder-toolbar ul li.archive { background-position: 3px -583px; }
.el-finder-toolbar ul li.extract { background-position: 3px -583px; }
.el-finder-toolbar ul li.cut { background-position: 3px -631px; }
.el-finder-toolbar ul li.duplicate { background-position: 3px -356px; }

RE: Пару вопросов про Cut и Select - Added by Сергей Б over 1 year ago

Сам немного разобрался:

По идее можно было бы в connector.php отключить select

'disabled' => array('select'),

и тогда обработчик dblclick в elfinder.min.js


.bind('dblclick', function(e) {
self.fm.select($(this), true);
self.ui.exec(self.ui.isCmdAllowed('select') ? 'select' : 'open');
})

должен выбирать сам 'open' если 'select' не разрешен, НО видимо проверка на

'fileURL' => false,

стоит раньше и поэтому при отключении 'select' все равно возникает ошибка "Доступ к адресам файлов запрещен настройками коннектора"
Я просто изменил сам обработчик:


.bind('dblclick', function(e) {
self.fm.select($(this), true);
self.ui.exec(self.ui.isCmdAllowed('open') ? 'open' : 'select');
})

RE: Пару вопросов про Cut и Select - Added by Dmitry Levashov over 1 year ago

Спасибо - учту этот баг

RE: Пару вопросов про Cut_Paste и Select - Added by Сергей Б over 1 year ago

И с PASTE разобрался:
я использую connector.php4.php и elfinder.php4.class.php

Когда выполняется PASTE то методом GET на сервер посылаются:

_ 1296149126055
cmd paste
current e4edf04a86f8762917815fa6f46108f1
cut 1
dst e4edf04a86f8762917815fa6f46108f1
src e5f81643f6415bfa1e61f09503311b39
targets[] a3e7bd1ac333fe59f124c4ae3f74a39c

а в elfinder.php4.class.php в функции _paste() как мы видим проверяются переменные и ожидается не targets[] а files видимо прошлые остатки

Оригинал:

function _paste()
{
if (empty($_GET['current']) || false == ($current = $this->_findDir(trim($_GET['current']))) || empty($_GET['src']) || false == ($src = $this->_findDir(trim($_GET['src']))) || empty($_GET['dst']) || false == ($dst = $this->_findDir(trim($_GET['dst']))) || empty($_GET['files']) || !is_array($_GET['files'])
) {
return $this->_result['error'] = 'Invalid parameters';
}

и далее в функции тоже запрашивается files
Функцию _paste нужно исправить в файлах прикрепленных тут на сайте:

Исправленная функция:

function _paste()
{
if (empty($_GET['current']) || false == ($current = $this->_findDir(trim($_GET['current']))) || empty($_GET['src']) || false == ($src = $this->_findDir(trim($_GET['src']))) || empty($_GET['dst']) || false == ($dst = $this->_findDir(trim($_GET['dst']))) || empty($_GET['targets']) || !is_array($_GET['targets'])
) {
return $this->_result['error'] = 'Invalid parameters';
}
$cut = !empty($_GET['cut']);
$this->_logContext['src'] = array();
$this->_logContext['dest'] = $dst;
$this->_logContext['cut'] = $cut;
if (!$this->_isAllowed($dst, 'write') || !$this->_isAllowed($src, 'read')) {
return $this->_result['error'] = 'Access denied';
}
foreach ($_GET['targets'] as $hash) {
if (false == ($f = $this->_find($hash, $src))) {
return $this->_result['error'] = 'File not found' && $this->_content($current, true);
}
$this->_logContext['src'][] = $f;
$_dst = $dst.DIRECTORY_SEPARATOR.basename($f);
if (0 === strpos($dst, $f)) {
return $this->_result['error'] = 'Unable to copy into itself' && $this->_content($current, true);
} elseif (file_exists($_dst)) {
return $this->_result['error'] = 'File or folder with the same name already exists' && $this->_content($current, true);
} elseif ($cut && !$this->_isAllowed($f, 'rm')) {
return $this->_result['error'] = 'Access denied' && $this->_content($current, true);
}
if ($cut) {
if (!@rename($f, $_dst)) {
return $this->_result['error'] = 'Unable to move files' && $this->_content($current, true);
} elseif (!is_dir($f)) {
$this->_rmTmb($f);
}
} elseif (!$this->_copy($f, $_dst)) {
return $this->_result['error'] = 'Unable to copy files' && $this->_content($current, true);
}
}
$this->_content($current, true);
}

RE: Пару вопросов про Cut_Paste и Select - Added by Dmitry Levashov over 1 year ago

Спасибо за такую активную помощь проекту! Если не затруднит - по найденым багам создавайте тикеты http://elrte.org/redmine/projects/elfinder/issues/new
Что, впрочем не отменяет постов на форуме - другим будет понятней, что происходит.
PS коннектор под 4 мы особо не развиваем, но стараемся поддерживать в соответсвии

(1-7/7)