Загрузка и редактирование изображений в кастомном модуле (D8)

Чт, 22/06/2017 - 14:30

Здравствуйте!
Задача реализовать в кастомном модуле загрузку и редактирования изображений (D8).
Подробнее: есть некий объект, к которому при добавлении можно добавить фотографии.
Необходимо чтобы без сохранения объекта, после выбора фотографий для загрузки, их можно было удалять и менять местами (drag and drop). Как на этой странице в поле File attachments только с превью картинок.
Скрин в приложении - это то как должно получиться в итоге. Сейчас же используя следующий код

<?php    
$form
['object_add']['img'] = [
      
'#title' => 'Зображення об\'єкту',
      
'#type' => 'managed_file',
      
'#size' => 100,
      
'#rows' => 1,
      
'#multiple' => TRUE,
      
'#upload_location' => 'public://realty_newbuild/',
      
'#required' => TRUE,
      
'#description' => 'Рекомендований розмір зображення - 610x400px',
    ];
?>

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

0 Спасибо

Комментарии

Аватар пользователя Mihail.space
1 month 2 дня назад Mihail.space #

Это есть искаропки, если в поле изображения в материале выбрать колличество изображений больше чем 1
если порукоблудить в css то можно таскать картинки за сами картинки, а не только за крестик

0 Спасибо
Аватар пользователя Janosense
1 month 1 день назад Janosense #

Всё верно, это есть "искаропки", и мне такой функционал нужно реализовать в моём модуле, который я пишу. Сейчас же я имею стандартный загрузчик который после выбора файлов выводит их список и имеет возможность удаления этих файлов. Миниатюр и возможности сортировки нет.
Я не ищу стороннее решения, мне нужна реализация средствами drupal (если она существует конечно).

0 Спасибо
Аватар пользователя animan
1 month 1 день назад animan #

Это називается - tableDrag.

Функция drupal_attach_tabledrag.

Правда точно не скажу как вам добавить к своему модулю, так как нужно видеть как он сделан.

0 Спасибо
Аватар пользователя Janosense
1 month 1 день назад Janosense #

Про данную функцию знаю, но чтобы её использовать нужно построить таблицу на основе загруженных изображений. Я уже пытался написать препроцессор загрузки изображений (вывел миниатюры), но тут вопрос в том что уже есть реализованный механизм, его всего лишь нужно перенести в мой модуль.
Структура модуля стандартна для D8
all
-modules
--_custom
---module-name
----src
-----Form
...
-------Add.php класс в котором билдятся формы добавления объекта, где и нужна вышеописанная реализация.

0 Спасибо
Аватар пользователя animan
3 недели 5 дней назад animan #

Если открыть ядро, то там сделано так:

<?php
$variables
['table'] = [
    
'#type' => 'table',
    
'#header' => $headers,
    
'#rows' => $rows,
    
'#attributes' => [
      
'id' => $table_id,
    ],
    
'#tabledrag' => [
      [
        
'action' => 'order',
        
'relationship' => 'sibling',
        
'group' => $weight_class,
      ],
    ],
    
'#access' => !empty($rows),
  ];
?>

Файл: core/modules/file/file.field.inc
Таблицу нужно будет делать в любом случае.

0 Спасибо
Аватар пользователя gun_dose
2 недели 2 дня назад gun_dose #

2017 год на дворе, какой джквери?))))

0 Спасибо
Аватар пользователя .poltergeist
2 недели 1 день назад .poltergeist #

не должно плодить сущности, не важно какой год.
то, что ТС показал решается с помощью jquery.ui
а оно идёт в поставке

весь фронт энд превратился в некое подобие ада, достаточно посмотреть разброс стэка на рынке
лично я давно забил болт на клиенсткую часть, давно не вентилирую расклады, jQuery же со мной остался.
делал сценарии мониторинга на angularJS, это, наверное, меня и сподвигло. +500 к UX, и всё такое, да только озарило, что не нравится. перестало. а может и не нравился мне JS с самого начала. хорошо же было лет так 15 назад, это всё научно-технический прогресс.

0 Спасибо