оптимизация работы с настройками папок #16

оптимизация работы с настройками папок #16

есть предложенеи о передаче настроек в виде параметра в ссылке но опять же возникает множество вопросов как лучеш это сделать: мне видется один из вариантов такой при настройке папок выдавать им идентификаторы тогда можно передавать идентификатор и допустим какойто внутренний путь чтот типа такого elfinder?id=articles&folder=sub/folder/in/articles

то есть получаем настройки для идентификатора articles и добавляем в него под папку sub/folder/in/articles тогда допустим при редактировании статей в мэнеджере откроется не весь список доступных папок а именно указанная

The text was updated successfully, but these errors were encountered:

MihailDev commented Nov 4, 2014

да всё верно но есть проблемка контроллер для использования не жесткий то есть кто то в своем приложении решит его назвать filemanager а ктот оставит стандартное название elfinder а ктот ещё какнить назавёт и в этом вся сложность стандартизации использования если допустим сделать модуль который будет атоматом встраиваться и тоесть йд его будет постоянен то тут можно добавить гибкости в использовании но опять же надо будет продумывать как в автомате при инициализации других приложений можно будет встроить пути это если продумывать что бы глобально было удобно работать

по принципу создал приложение в боотсрап класс закинул настройки и забыл всё подтянулось всё работает

loveorigami commented Nov 4, 2014

ну в таком случае - пусть доступом к папке, в случае необходимости, реализует функционал самого elfinder-a из метода текущего контроллера.

т.е. через виджет передаем папку (путь) и, дополнительно, права доступа.

В codeigniter я делал так

  1. Подключение elfinder в контроллере

сюда же $this->acl->has_permission($this->module, $pm);

передавал настройки из модуля с массивом доступа. в переменой и определялось для роли доступ к ключам

В нашем случае возможно, вместе с папкой из виджета можно передать еще и уровень доступа к папке посредством массива

а самом контроллере проверить если существует

иначе взять глобальный доступ.

MihailDev commented Nov 5, 2014

т.е. через виджет передаем папку (путь) и, дополнительно, права доступа.

это не очень красивый вариант все настройки должны производится в конфиг фаиле а то будут потом грабли ешё и детские!

loveorigami commented Nov 10, 2014

Я вот тут подумал - зачем тогдща все так усложнять. По сути - права доступа прописаны в конфиге. Мы делаем удобство вызова удаштвук при работе в текстовом редакторе. Т.е. принцип работы сохраняется, как сейчас, за исключением того, что при вызовет открывается уелевая папка с файлами. Вот этой папки и достаточно. имхо. Поскольку к elfinder нужно будет попасть через модуль, то на доступ к модулю будут свои права.

Если же нужно будет сделать так, чтобы в модуле админ мог видет все файлы, а редактор только свои, тогда в пару строк кода получим нужный функционал. if(admn) - folder = article else - folder = article/$username и передем эту папку в подключение elfinder-у

p.s. зачастую, на практике мне не доводилось делать такую незамысловатую логику. редакторы могут вставлять-удалять фотки, но в пределах одной папки.

MihailDev commented Nov 11, 2014

хотелось бы услышать ещё мнения!

pavlinter commented Nov 14, 2014

Такой вариант можно чтобы ставить открытую папку по умолчанию, но не ограничивать по правам. Это уже в самом виджете.

Или может уже можно как то выбрать папку по умолчанию?

MihailDev commented Nov 19, 2014

просто тяжело сделать чтоб всем было удобно и практично на мой взгляд много подпапок это не очень хорошо тоесть как ты предлагаеш что в основном есть одна папку и вней организовывать как то работу это не совсем верно для менеджера фаилов какждый пользователь хочет по своему организовать структуру так как ему более понятнее!

поэтому есть смысл возможно в передаче идентификатора но опять же проблема даже не в идентификаторе а в том что такого идентификатора у когото может не быть и это уже усложняет процесс разработки

для примера вася сделал модул новостей он там указал идентификатор 'news' далше петя сделал модуль статей он там указал идентификатор 'articles' а денис решил сделать сайт в котором он решил использовать васин и петин модули но он хочет хранить изображения в папке с идентификатором 'images'

и тут вопрос что делать?

loveorigami commented Nov 19, 2014

Я, честно, не пойму до конца, что подразумевается под функционалом "Идентификатор" . для ясности (чтоб мы говорили об одном и том же).

  1. Идентификатор - где он будет объявляться? Допустим, в конфиге.
  2. Что будет прописано в идентификаторе? Навскидку: модуль, папка и права доступа. Нет модуля - открываем папку по умолчанию (uploads)
  3. Получаем примерно такой массив

соответственно, как объявить массив параметров и что в нем указывается, пишем в ReadMe

MihailDev commented Nov 19, 2014

я смотрю с позиции текушей возможности настроить

loveorigami commented Nov 20, 2014

теперь стало понятнее. Загвоздка в том, что модулей у меня может быть много, а использовать я хочу 1 идентификатор. Следовательно - path - указывает на корневую папку идентификатора. Внутри этой папки будут подпапки (folder), в зависимости от модуля. Если нет модуля, path станет корнем.

может тогда перенаправить в конфиге на свой идентификатор?

  • Если нет подключаемого идентификатора, тогда используем идентификатор по умолчанию 'default'
  • Если нет перенаправляемого ( 'to' => 'images', ), тоже используем идентификатор по умолчанию 'default'
  • Eсли нет модуля в массиве folder - открываем 'path' в текущем или дефолтном идентификаторе
MihailDev commented Nov 20, 2014

ну согласись что это усложнение настоек если так уж нужная одна папка почему не настроить в своём модуле елфаиндер контроллер с одной папкой и всё упрётся в передачу правельного контроллера

вася сделал модул новостей он там организовал работу с папкой '@web/files/news' и сделал контроллер 'news/elfinder' далше петя сделал модуль статей он там организовал работу с папкой '@web/files/articles' и сделал контроллер 'articles/elfinder' а денис решил сделать сайт в котором он решил использовать васин и петин модули но он хочет хранить изображения в папке '@web/files/images' он берёт и просто в конфиге фаиле подправляет настройки модулей задав им обоим папку для загрузки '@web/files/images'

loveorigami commented Nov 20, 2014

Это как бы демонстрация, как игнорировать, чужие идентификаторы. Ниже я дал объяснение:

  • Если нет подключаемого идентификатора, тогда используем идентификатор по умолчанию 'default'

Я исхожу из того, что у меня под CI сейчас работает 50 модулей, где в каждом модуле (в контроллере) прописывается своя рабочая папка.

C этого я и начал обсуждение данного вопроса. Как вызвать из редактора elfinder с нужной папкой?

Ты сказал, что папки прописывать прямо в контроллере - не верно. Согласен.

Теперь вместо этого предлагаешь создавать 50 контроллеров с elfinder или прописывать 50 идентификаторов.

в моем варианте выше можно указать идентификатор 'images' как дефолтный и вообще не беспокоиться, какие настройки сделали Вася и Петя. В любом модуле или контролере будет загружаться

  • Из контроллера news я открываю папку @web/uploads/folder_news с уже настроенными и корневой папкой, и правами доступа и тп.
  • Создал новый контроллер posts. Подключил редактор - без всяких настроек и идентификаторов у меня откроется папка @web/uploads
  • Хочу, чтобы открывалась папка @web/uploads\posts, дописываю в конфиге с папками 'posts'=>'posts', Все.
MihailDev commented Nov 20, 2014

прости возможно я немного потерял твою проблему так как я пытаюсь сделать удобным для всех то есть я не расчитывал на то что лично у тебя есть 50 модулей! планировалось как реализация под один модуль

в твоём случая я вижу один вариант сделать свой контроллер для обработки наследуй его от mihaildev\elfinder\Controller и доработай акшин actionConnect так чтоб он тебя устраивал

loveorigami commented Nov 21, 2014

Жаль ). Написать то свой контроллер не проблема. ) Поосто раньше я собирал все по отдельности (TinyMce + Elfinder или CkEditor+ Elfinder), и там и там в разных фреймврках давал возможность пользователям работать в разных модулях со своей папкой. (Я уже показывал реализайию и в Ci и в Yii 1.1.15). А втвоем компоненте уже все сделано. Осталось совсем чуть-чуть ). Поэтому свою идею для уже настроенной связи CkEditor + Elfinder я и хочу "пропихнуть" ). Это намного облегчит работу с контентом на сайте. Из сказанного тобой

я так понимаю - ты рассматриваешь реализацию: 1 коннектор - 1 модуль - 1 контроллер - 1 папка. Как тогда поступить, если:

  • Вася и Петя создали по модулю (news и post). Я их скачал через composer. Оба они используют в модулях один и тот же идентификатор 'images'. В первом папка - uploads/news, во втором files/posts. Т.е. выходит тоже самое, если бы они прописали эти папки прямо в модуле. Без последствий path уже не перепишешь в конфиге. Появляется конфликт.
  • По модулю - у меня в одном модуле может быть несколько контроллеров. Пример: модуль doctors. Контроллеры - default (нужна папка с фото докторов - doctors/photo), articles (научные статьи докторов. папка - doctors/articles/), diploms - (награды, дипломы, патенты - doctors/diploms). В статьях использую редактор. В других местах - file Input.
  • Виджет я могу вызывать и не из модуля. А прямо из вида контроллера. Например - news. В common у меня модель. В backenf NewsController (crud), во frontend NewsController.
  • В админке я планирую использовать несколько идентификатор. Для менеджеров - с указанием подпапок, и для админа - с указанием корневой папки. Для случаев, когда у пользователей будут свои папки - doctors/articles/, а у админа - doctors/articles.

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

В Yii2, в особенности в твоем компоненте, понравилось, что все эти настройки можно делать из конфига.

И по большому счету, вышеописанные случаи можно "разрулить", введя в конфиг идентификатора НЕобязательный параметр "folders".

Что имеем сейчас:

прописывая в модуле (контроллере) свой идентификатор, по сути я прописываю жестко папку.

  • Ставлю сторонний модуль через composer, открываю - и он не работает, потому что не прописан его идентификатор в конфиге. Для такого случая (как я писал выше), нужно иметь дефолтный идентификатор . Вот подумал, чтобы не заставлять прописывать в конфиге 'default'-идентификатор , по дефолту считать таковым первый. Т.е. 'identificator_1'.
  • Получаем - скачал модуль, открыл редактор, и без всяких настроек открылась папка 'baseUrl'=>'@web/files/global', из identificator_1. И не важно, какой там идентификатор у Васи или Пети. Становится важным, из какого контроллера они вызвали виджет.
  • Вводим необязательный параметр folder, расширяющий возможности elfinder для уточнения, какую папку открыть из того или иного контроллера

И видим, чторешаются практически все проблемы, описанные выше. Есть один нюанс, над которым думаю: что означает ключ в массиве folder.

📎📎📎📎📎📎📎📎📎📎