Falcon Space. Работа с ресурсами

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


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

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


Как работать с ресурсами

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

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

2.Создаем и настраиваем тип ресурса:

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

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

   Роли на чтение - кто может просматривать картинки

   Роли за загрузку и редактирование - Кто может загружать и редактировать записи. 

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

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

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

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

   Загружать без трансформации. Если да - то картинки не меняют размеров при загрузке. 

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

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

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

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

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

   Отношение для обрезки - соотношение сторон для ручного обрезания фото.

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

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

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

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

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

Дополнительные параметры сниппета ресурсов (as-resourceManager):
  • data-title="Товар 1" - задаем внешнюю подпись у картинки. Если не указано, то используется подпись, связанная с ресурсом (по умолчанию это имя файла).
    Это поле также используется в заголовке диалогового окна (при показе полноэкранной картинки). 
  • data-hideTitle="1"  - скрываем подпись у картинки (находится под картинкой)
  • data-link="/product/1" - если задана ссылка, то при клике на картинку идет переход по данной ссылке. Если нет ссылки - то показ полной картинки в диалоговом окне. 
  • data-carouselEnabled="1" - если указано 1, то при нажатии на картинку будет показываться слайдер из картинок в диалоговом окне. 
  • data-bigFirst="1" - если 1, то первая картинка в показе будет большой, а все остальные маленькие (например, для использования на странице товара).
  • data-compact="1" - если 1, то галерея картинок (или документов) будет показана в уменьшенном виде.
  • data-ultracompact="1" - если 1, то галерея картинок (или документов) будет показана в очень уменьшенном виде. Обычно используется для вывода в таблицах.
  • data-emptyText="Нет фото" - Если нет элементов, то будет показана эта надпись.
  • data-uploadTitle - задает заголовок окна загрузки файлов

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

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

Примечание

  1. Файлы храняться в папке /uploads/rs/{entiyCode}/{itemID}
  2. Не путайте entityCode (код сущности, например product) и typeCode (настройки вывода компонента, например manageProdyctImages)
  3. Если необходимо проверить права доступа дополнительно (на основе itemID), то необходимо создать хранимую процедуру с именем resources_{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)


Вывод статичных файлов через систему подгружаемых файлов (Robots.txt и др). 

Вы можете настроить получение любого файла по определенному адресу. 
/Controls/Resource/GetFile?code={code} по данному адресу можно запросить некий файл + передать дополнительные параметры. 
Содержимое файла формируется в хранимой процедуре rs_{code}_getFile
Управление хранимыми процедурами реализовано в разделе Типы подгружаемых файлов.

CREATE PROCEDURE [dbo].[rs_example_getFile]
    @urlParameters DictionaryParameter READONLY,
    @username nvarchar(32),
    @lang int = 0
AS
BEGIN
    /*Процедура выдает некий файл исходя из параметров URL
      (содержимое файла может браться из настроек либо формироваться
       прямо в процедуре)*/

    /*Как получать параметры из URL
      DECLARE @s nvarchar(128)
      DECLARE @s value from @urlParameters where [key] = 'itemID'*/

    -- выдаем результат
    SELECT top 1 1 Result,
                 '' Msg,
                 value Text, -- тело файла
                 'text/css' MimeType -- Mime Тип
    FROM as_settings
    WHERE code = 'globalCss'
END
 

В системе реализованы по умолчанию управление следующими файлами: 

  • Robots.txt - /Controls/Resource/GetFile?code=robots
  • глобальный файл JS - /Controls/Resource/GetFile?code=globalJS 
  • глобальный файл CSS - /Controls/Resource/GetFile?code=globalCSS
  • дефолтовая картинка товара в каталоге  - /Controls/Resource/GetFile?code=defaultProductImage.

По необходимости вы можете настроить редиректы в URL Rewrite на IIS для более легких путей к файлам. 

Работа с графическими файлами

Для работы с графическими файлами указываем их в кодировке Base64 (Используйте сервис https://www.base64-image.de/ для трансформации картинок в строку).
Типы файлов image/png, image/jpeg, image/gif


ВАЖНО. Файлы кешируются. Поэтому для получения свежей версии файла чуть меняйте ссылку, напр /Controls/Resource/GetFile?code=defaultProductImage&prefix=1
В дальнейшем вы можете указывать эту ссылку на файл.
Вид процедуры. Также вы можете указать вместо данных в Text ссылку на файл на сервере по необходимости, например, ‘/uploads/user…’. 
ALTER PROCEDURE [dbo].[rs_defaultProductImage_getFile]
    @urlParameters DictionaryParameter READONLY,
    @username nvarchar(32),
    @langID int = 0
AS
BEGIN
    SELECT top 1 1 Result,
                 '' Msg,
                 'data:image/png;base64,GB4bh8GDtOT7Ow2uh3P6xsGoH7mJ-
                  mR3i_0pwyO_qA2gNfCqgoTRiEQQmoiVS_0vgo-
                  tuWpP5Zhk8f1a5qlQuVCznYYJy3YvsrPA
                  hi9g2OTPeOJ2MMbNydw4Oxo9Illjjcvf' text,
                 'image/png' MimeType
END

Если вам нужно фото пользователя: /Controls/Resource/GetFile?code=userPhoto&user=demo1
Если превью фото пользователя: /Controls/Resource/GetFile?code=userPhoto&user=demo1&thumb=1

Файловый менеджер

В системе есть файловый менеджер (/fileManager), который позволяет осуществлять навигацию по папкам, загружать файлы, редактировать текстовые файлы. 

Также можно создавать отдельные файловые менеджеры с началом в определенной папке, с указанием какие роли могут просматривать файлы, загружать, редактировать. 
Для этого необходимо использовать сниппет:
<div class="as-fm" data-code="{code}"></div>
Настройки файлового менеджера хранятся в таблице as_fileManagers. 

HowTo по ресурсам и картинкам 

Не отображается картинка юзера справа вверху
Проверьте, что у вас установлены 2 процедуры: 

  • rs_userPhoto_getFile
  • rs_defaultUserPhoto_getFile
Как изменить текст когда нет загруженных картинок?
Для этого укажите атрибут data-emptyText у сниппета менеджера ресурсов. 
<div class="as-resourceManager" data-text="Нет фото"></div>

Платформа Falcon Space

Это снижение стоимости владения

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

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

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

Бесплатное обучение разработке на Falcon Space

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space.
Примечание