Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Файловый менеджер. Сильно не ругайте. (https://javascript.ru/forum/dom-window/30647-fajjlovyjj-menedzher-silno-ne-rugajjte.html)

ainutoch 10.08.2012 18:50

Файловый менеджер. Сильно не ругайте.
 
Прошу извинить, может не туда и не так влез. Имею домашний сервер под Apache, хочу http-ишный файловый менеджер. Для чего? Отдыхаю в Таиланде, мучаюсь на работе, понадобился файл с домашнего сервера, ну вот, нате вам! Ладно, это лирика. Менеджер хочу в стиле Win7, правую часть наваял (Perl+JS), верхнюю часть (с маршрутом) тоже вроде по моей скромной потенции, а вот с левой частью - беда... Никак не могу сообразить, КАК по нажатию этих треугольничков в готовой страницу вставлять новые элементы, а по закрытию - убирать элементы. Или это в JS+Perl слабо осуществимо? Коллега кричит - "Руби!!!", а я не понимаю - на хрена?

B@rmaley.e><e 10.08.2012 20:03

Кроме Javascript'а здесь ничего, во-первых, не нужно, а во-вторых, не поможет. Товарища с криками о руби можно послать лесом.

Схема такая: можете сразу выводить все элементы на страницу, скрыв некоторые (те, что изначально должны быть скрытыми), а потом показывать их по нажатию на нужные элементы.

ainutoch 10.08.2012 20:11

Схема такая: можете сразу выводить все элементы на страницу, скрыв некоторые (те, что изначально должны быть скрытыми), а потом показывать их по нажатию на нужные элементы.[/quote]

Спасибо, не пойдет. Это надо зачитать все дерево каталогов на диске 2Тб. Сколько времени будет работать такой скрипт?

B@rmaley.e><e 10.08.2012 21:07

В таком случае можно по клику не показывать элементы, а вставлять их в документ, предварительно подгрузив их с помощью AJAX'а.

Deff 10.08.2012 22:03

Цитата:

Сообщение от ainutoch
Спасибо, не пойдет. Это надо зачитать все дерево каталогов на диске 2Тб. Сколько времени будет работать такой скрипт?

В LocalStorage - грузите все дерево - единожды - а далее лишь сортировка и редактирование - и синхронизация - ну тут голову слегка - поломать - но при загруженном дереве каталогов - долго не будет

ainutoch 11.08.2012 08:35

Спасибо.
Ну а динамически в нужное место HTML (<table>), зачитав perl-ом содержимое нужного каталога, никак не воткнуть? Темновато это для меня, простите... Или же только заново переформировывать страницу? Вроде возможно все хранить в hidden полях, но уж больно муторно получается. Нужно учитывать степень вложенности (для нужного смещения по горизонтали), флажок открытости/закрытости каталога и т.д.
Мне кажется, что читать зараз ВСЁ дерево каталогов - моветон.
Простите за надоедливость, все предложенное отвергаю не со зла.

Aetae 11.08.2012 09:00

Цитата:

Сообщение от ainutoch (Сообщение 196555)
Спасибо.
Ну а динамически в нужное место HTML (<table>), зачитав perl-ом содержимое нужного каталога, никак не воткнуть? Темновато это для меня, простите... Или же только заново переформировывать страницу? Вроде возможно все хранить в hidden полях, но уж больно муторно получается. Нужно учитывать степень вложенности (для нужного смещения по горизонтали), флажок открытости/закрытости каталога и т.д.
Мне кажется, что читать зараз ВСЁ дерево каталогов - моветон.
Простите за надоедливость, все предложенное отвергаю не со зла.

Вам же сказали - AJAX.
Если страшит само слово - не бойтесь: на самом деле это просто запрос из javascript к серверу(к тому самому perl скрипту) и получение от него ответа(который можно вставить куда надо).)

Там даже пример похожий есть.

Gozar 12.08.2012 22:41

Месяц назад написал двупанельный файловый менеджер. ИМХО, лучше однопанельного. Дерево делать не стал, нафиг. Оно не очень удобно, но хозяин - барин.

Я так понял проблема в написании дерева каталогов?

Цитата:

Сообщение от ainutoch
Мне кажется, что читать зараз ВСЁ дерево каталогов - моветон

Ясен перес, моветон.

На сервере функция простая, читаем каталог с путем присланным из js AJAX.(Путь + выбранный каталог)

На клиенте строим дерево, достраивая один уровень по клику на + (плюсике), по клику на - (минус) убираем в display:none то что отстроили. Эдакое кэширование получиться, если есть дети и display:none, то запрос на сервер не делаем, а делаем display:block -> показ.

+

Gozar 12.08.2012 22:51

+ /

1. клик по /
2. ajax запрос на сервер -> на сервере perl-ом читаем список корня и отдаем клиенту
3. клиент получает список и строит детей, затем меняет у родителя + на -

- /

+ Users
+ Document And Settings
+ Program Files

Пример с jquery
$.ajax({
  type: "POST",
  url: "dir.cgi",
  data: { path: "/" },
  dataType: "json"
}).done(function( list ) {

// отстраиваем детей, где list массив объектов [ { "name": "Users", "type": "dir"}, { "name": "ico.jpg", "type": "file"} ]
while (list) {

}

});

ainutoch 13.08.2012 18:21

Спасибо, люди добрые. Два дня читал, начало доходить, о чем вы говорите. Начну пробовать.


Часовой пояс GMT +3, время: 09:08.