Работа с ресурсами. Загрузка картинок, файлов

Управление ресурсами

Ресурс - это фото или документ, прикрепленный к некой сущности (по entityCode и itemID).
Компонент дает возможность вывести галерею ресурсов (фото или документы), возможность редактировать их и возможность загрузить новые ресурсы. 

Ресурсы крепятся к некоторым сущностям (entityCode). О том как получить ссылку на ресурс можно ознакомиться здесь, о том как загружать файл, когда задействовано диалоговое окно читать здесь

 


Вывод и функции зависят от 2 режимов: 
isSingle  - определяет будет ли привязываться 1 ресурс для данной сущности (например аватар человека) или целая коллекция ресурсов.
read/write - может ли пользователь управлять коллекцией ресурсов (загружать, редактировать, удалять) или нет.

Создание ресурса

1.Добавляем на страницу сниппет компонента:

<div class="as-resourceManager" data-code="{typeCode}" data-itemid="docs-falcon-space--rabota-s-resursami"></div>

2. В меню "Компоненты" выбираем "Типы ресурсов", далее нажимаем кнопку "Добавить" и вводим код ресурса (имя).

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

<div class="as-files" data-code="productImages" data-itemid="5" data-disabledeleteconfirm="1" data-successmsg=" "></div>

Настройка ресурса

   Код - код типа ресурса (используется в сниппете)

   Код объекта - код некоего объекта в системе (не привязан жестко к какой-то таблице).
   Не путайте код сущности (Товар) и код Типа ресурса (настройка как будет работать компонент).
   К одной сущности может быть в итоге привязано несколько типов ресурсов. 

   Роли на чтение - кто может просматривать картинки (через запятую без пробелов. Если указано all - то доступ имеют все. Если * - то только авторизованные пользователи).

   Роли на запись - Кто может загружать и редактировать записи (через запятую без пробелов. Если указано all - то доступ имеют все. Если * - то только авторизованные пользователи). Также о об установке прав доступа на менеджер ресурсов можно почитать здесь.

   Галка Одиночная картинка - если Да, то работаем только с 1 ресурсом для сущности.

   Галка Показывать настройки загрузки - отображать при Upload дополнительные опции загрузки (для картинок).

   Возможность загрузки - если Да, то можно будет загружать файлы (для ролей на загрузку).

   Показать сразу в полный размер - если Да, то в менеджер грузятся сразу полноразмерные картинки а не thumb.

   Загружать без трансформации (LoadWithoutTransform). Если да - то картинки не меняют размеров при загрузке.  Также эта настройка влияет на обработку имен файлов. Если она стоит Да, то имя файла никак не обрабатывается (через dbo.str_processURL для исключения различных спецзнаков и транслитерации).

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

   Максимальный размер файла в МБ - насколько большой файл можно загружать. Внимание! Есть системное ограничение на файлы в 12Мб.

   Фильтр для файлов - регулярное выражение на фильтрацию файлов (Regex). 

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

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

   Отношение для обрезки - соотношение сторон для ручного обрезания фото (как загружать фото с обрезкой можно почитать здесь).

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

   Водяной знак - URL путь к картинке водяного знака (будет ставить посередине каждого изображения при Upload).
   Внимание! Не влияет при установке на уже ранее загруженные изображения. 

   Качество сохранения картинок - качество сохранения картинки от 10 до 100. 

   Добавлять поля к картинке (и миниатюре) при загрузке - при несовпадении пропорций и размеров картинка будет дополняться белыми полями. 

   Путь сохранения - указывается некий путь в /uploads к файлу или папке. Если папка, то в нее будет сохраняться файл со своим именем.
   Если файл - то имя файла будет жестко определено этим параметром. Например: если указали /docs, то сохранение файлов будет идти в /uploads/docs/

Дополнительные параметры сниппета ресурсов (as-resourceManager):

Специальные настройки в /settings

SP BeforeUpload для настройки загрузки конкретного файла

С помощью этой процедуры можно поменять имя, путь сохранения файла, а также отменить загрузку (если Result = 0).

Пример процедуры: 

CREATE PROCEDURE [dbo].[rs_t1_beforeUpload]
	@itemID nvarchar(128),
	@username nvarchar(128),
	@parameters ExtendedDictionaryParameter readonly
AS
BEGIN
	-- SELECT 1
	select 1 Result, '' Msg, 'fax' Filename, '/_a1/a2' Path
    -- SELECT 2 Outer actions    
END

Вместо t1 будет entityCode от типа ресурса (не путать с code!).

Входные параметры: 

Выходные SELECT:

SELECT 1 

SELECT 2  - внешние действия

Дополнительные действия после выполнения операции с ресурсами

Вы можете выполнить некоторые действия после загрузки (upload), удаления (delete) или обновления полей ресурса (edit). 
Для этого необходимо реализовать процедуры rs_{entityCode}_{action}_callback (редактировать их можно будет в управлении типами ресурсов). 
action - upload, delete, edit.
На вход принимает: typeCode(тип ресурса), itemID, resourceID (если загрузка нескольких файлов - то первый файл), username.
На выходе:

SELECT 1. ResultModel(Result, Msg, Actions). Actions позволяют сделать некоторые действия в браузере (например, обновить часть экрана). 

SELECT 2. Вызов внешних действий

Примечание

  1. Файлы хранятся в папке /uploads/rs/{entiyCode}/{itemID}
  2. Не путайте entityCode (код сущности, например product) и typeCode (настройки вывода компонента, например manageProdyctImages)
  3. Если необходимо проверить права доступа дополнительно (на основе itemID), то необходимо создать хранимую процедуру с именем rs_{entityCode}_hasAccess.
    На входе typeCode, username, itemID, right (read or write). На выходе - модель ResultModel (поля Result bit, Msg nvarchar(256)). Управление процедурой есть на странице управления компонентом.
  4. Для не картинок используются типовые иконки типов - pdf, excel, word, text и other. 
  5. Вы можете установить по умолчанию картинку для варианта, когда не загружено ресурсов.
    Для этого прописываем путь к картинке в параметре
    defaultImagePath для ResourceType.
  6. Вы можете обрезать картинки. Установите в пикселях для типов ресурсов Width и Height. Картинка в итоге впишется в этот прямоугольник по размерам и сохранится в jpg. 
  7. Для картинок также сохраняется thumbUrl. Его размеры управляются через тип ресурса - thumbWidth, thumbHeight.
    Для других типов в роли превью выступает значок типа файла. 
  8. Для получения URL картинки в SQL можно использовать функцию [dbo].[rs_resourceLink] (entityCode, itemID, isThumb)
Пример: 
SELECT [dbo].[rs_resourceLink] ('product', 1014, 0)

 Также по теме:

Возможные проблемы и их решения:

Страница-источник на сайте falconspace.ru