Надійшов запит про створення на сайті SharePoint 2013 окремого сховища графічних зображень (цифрових фотографій). Перше, що спало на думку - реалізувати завдання стандартними засобами SharePoint, створивши для цих цілей Бібліотеку малюнків SharePoint. Однак відповідно до поставленої задачі таких зображень потрібно буде розміщувати велику кількість, та ще й у великій якості (як наслідок розмір графічних файлів буде не скромний). Вивчаючи питання про те, як можна винести цей текст з БД, ми встали перед вибором між двома можливими на момент постановки задачі варіантами:
- використовувати технологію Remote BLOB Storage (RBS) забезпечується провайдером FILESTREAM з SQL Server в зв'язці з SharePoint;
- Використовувати сторонні комерційні рішення для розширення SharePoint, що дозволяють в числі своїх функцій виносити контент списків і бібліотек SharePoint на зовнішні накопичувачі, як наприклад Sparqube Picture Column
Після вивчення можливих переваг і недоліків першого варіанту стало очевидно, що без дотримання Кращих практик використання FILESTREAM , Які ми в нашій ситуації не могли виконати, в кінцевому рахунку ми можемо отримати відчутну деградацію продуктивності сімейства сайтів SharePoint і ще ряд побічних неприємностей.
Другий варіант, з використанням сторонніх комерційних продуктів розглядався взагалі як крайній варіант, і відпав сам собою, зокрема в силу невиправданою дорожнечі подібних рішень.
На допомогу прийшов наш колега - фахівець з SharePoint Володимир Земляков , Який написав Рішення (Solution), яке створює в сімействі сайтів SharePoint новий Тип контенту і дозволяють працювати з ним, оперуючи зовнішніми графічними файлами в елементах Списку SharePoint, створеного на основі нового шаблону списку. Візуалізація зображень для кінцевих користувачів реалізована на базі модифікованого Рішення Mirata.PictureGallery від Daniel Reed. Далі оглядово розглянемо установку і використання цих рішень.
Для початку створимо спільну мережеву папку, в яку будуть розміщуватися графічні файли там де нам це зручно, наприклад на виділеному файловому кластері.
У нашому випадку UNC-шлях до папки буде наступний: \\ KOM-AD01-FSCL \ MEDIA-STORE $ \ IMAGES
Дамо до зазначеної мережевий папці повний доступ на рівні NTFS / SMB облікового запису, від імені якої працює пул додатків IIS для веб-сайту SharePoint, з якого в подальшому ми плануємо виконувати додавання графічних файлів.
Потім на якомусь сайті IIS створимо віртуальний каталог, який буде посилатися на зазначену мережеву папку.
В результаті URL віртуального каталогу для відповідної папки в нашому випадку вийде наступний:
http://kom-ad01-srv-apps.holding.com/MEDIA/IMAGES/
***
Викачуємо файли рішень (PictureGallery.wsp і Mirata.PictureGallery.wsp) зі сторінки проекту на Codeplex - Sharepoint Picture Gallery , Копіюємо ці файли на наш WFE-сервер SharePoint і виконуємо їх установку за допомогою PowerShell на рівні сімейства сайтів (Site Collection)
Add-PSSnapin Microsoft.SharePoint.PowerShell Add-SPSolution -LiteralPath "C: \ Temp \ PictureGallery.wsp" Install-SPSolution -Identity "PictureGallery.wsp" -GACDeployment -WebApplication "http://site.holding.com" Add- SPSolution -LiteralPath "C: \ Temp \ Mirata.PictureGallery.wsp" Install-SPSolution -Identity "Mirata.PictureGallery.wsp" -GACDeployment -WebApplication "http://site.holding.com"
Після установки Рішень буде проведений автоматичний перезапуск пулу додатків IIS відповідає за вказаний сайт SharePoint.
<
p align = "center"> ***
Далі, для кореневого сайту сімейства сайтів, в яке ми розгорнули рішення, переходимо в Параметри сайту
в розділі налаштувань Адміністрування сімейства сайтів вибираємо посилання Можливості сімейства сайтів
Активуємо з'явилися Можливості (Features) в зазначеному порядку:
1. Додавання типу контенту і визначення списку Галерея зображень
2. Галерея зображень
3. Веб-частина галерея зображень
Перевіряємо поява нового Типу контенту (Параметри сайту> Колекції веб-дизайнера> Типи контенту сайту)
Крім нового Типу контенту в сімействі сайтів зареєстрований новий Шаблон списку, на підставі якого ми тепер можемо створити Галерею зображень. Викликаємо для цього в меню управління пункт Додати додаток
У переліку веб-додатків знаходимо додаток Галерея зображень і додаємо його на сайт задавши йому будь-який зручний для нас ім'я, наприклад Фотогалерея
У Параметрах нового списку вибираємо пункт настройки Параметри галереї зображень:
Зазначимо UNC-шлях до мережевої папки, в яку фактично будуть завантажуватися додаються в список графічно файли, тобто шлях до мережевої папки, яку ми створили раніше на файловому сервері.
Зазначимо URL-шлях до папки веб-сервера, в якій завантажені файли будуть доступні для завантаження і перегляду через веб-інтерфейс SharePoint, тобто посилання на віртуальний каталог IIS, який ми створили раніше.
Як ви розумієте, обидва шляхи повинні вказувати на один і той же фізичний розташування.
Цих налаштувань досить, щоб почати роботу з Галереєю зображень кінцевим користувачам SharePoint. До використання кнопки Перевірка ми повернемося трохи пізніше.
<
p align = "center"> ***
Щоб виконати додавання графічних файлів, відкриємо форму списку нашої Галереї зображень, на стрічці перемкнемося на закладку Елементи і скористаємося кнопкою Завантажити зображення (кнопка доступна тільки користувачам мають право на зміну списку)
Відкриється форма додавання, де за допомогою кнопки Огляд ми можемо вибрати додаються з комп'ютера користувача графічні файли. Виділяємо один або відразу декілька файлів і натискаємо кнопку Завантажити.
У разі успішного завантаження ми отримаємо відповідне повідомлення.
В результаті операції завантаження для кожного завантаження графічного файлу в Галереї зображень буде створено окремий елемент, в якому будуть збережені повні URL-шляху до самого графічного файлу скопійованого на файловий сервер і відноситься до нього генерується файлу мініатюри.
За замовчуванням в створеному Списку включено можливість створення папок. Щоб додати новий елемент в певну папку, в формі Списку потрібно спочатку увійти в цю папку, а потім скористатися кнопкою Завантажити зображення.
У процесі додавання файлів в файлову систему за вказаною раніше в налаштуваннях UNC-шляху будуть створені копії цих файлів з іменами у вигляді випадково згенерували унікальних ідентифікаторів (для того щоб уникнути можливих конфліктів імен файлів при багаторазових загрузках та ще й за участю різних користувачів).
У цьому ж каталозі буде створено (якщо його ще немає) підкаталог _t. В цей підкаталог з темі ж ID з додаванням нижнього підкреслення на початку імені будуть згенеровані Мініатюри зображень (Thumbnails) розміром 150x100 пікселів, які будуть використовуватися для візуалізації в веб-частини перегляду.
<
p align = "center"> ***
Створюємо окрему сторінку для перегляду Галереї зображень, на яку вішаємо веб-частину Галерея зображень з категорії СБСістем.
У властивостях веб-частини в параметрі List виберемо Список (Галерею зображень), з якого ми хочемо відображати графічні файли в даній веб-частини, поставимо назву і при необхідності налаштуємо фіксовану ширину зони ...
Цю ж веб-частину можна вивісити на головну сторінку сайту, де публікуються новини та відображаються всі останні зміни контенту сайту, але з уже більш жорстким обмеженням щодо виведення мініатюр, наприклад з відображенням лише останніх трьох доданих зображень через параметр веб-частини Page Size
У необов'язковий параметр ViewAllImageUrl можна вказати посилання на окрему сторінку, на якій буде розміщена ця-ж веб частина але вже з більшою кількістю відображуваних за один раз елементів, тобто як на головну сторінку перегляду Галереї зображень. Якщо цей параметр не заповнений, то і відповідно посилання Всі елементи в веб-частини відображатися не буде.
В кінцевому підсумку ми можемо отримати приблизно такий вигляд ...
При кліці по мініатюрі відкривається модальне вікно перегляду дозволяє переміщатися між графічними файлами відображеними в даний момент в веб-частини.
Як бачимо, в веб-частини над слайдами зображень нам доступні посилання на елементи навігації, які змінюються в залежності від прав користувача на список і поточного положення щодо структури папок списку.
Для того, щоб потрапити в форму безпосереднього редагування елементів Списку SharePoint можна перейти за посиланням Редагувати елементи. Це посилання відображається тільки для тих користувачів, у яких є права на зміну Списку.
Видалення елемента списку відбувається поетапно. Тобто спочатку виконується перевірка прав доступу до елемента списку і видалення цього елемента штатними механізмами SharePoint, а вже потім виконується видалення асоційованого графічного файлу і його мініатюри з файлової системи. Якщо в цей момент з якоїсь причини (наприклад тимчасове блокування файлу) відповідні файли не змогли піти з файлової системи, а елемент списку SharePoint асоційований з цими файлами вже видалений, то може виникнути ситуація, коли в файлової системі з часом збереться кілька " файлового сміття ". Щоб навести порядок як на файлової системі, так і в самому списку SharePoint, і була створена раніше згадана кнопка Перевірка в Параметрах списку.
При натисканні цієї кнопки буде вироблено зіставлення елементів списку з каталогом файлової системи зазначеному в параметрі UNC-шлях. Якщо будуть знайдені якісь розбіжності, буде виведена інформаційна таблиця з можливістю видалення як "осиротілих" файлів в файлову систему, так і елементів списку мають посилання на неіснуючі файли.
<
p align = "center"> ***
У висновку варто зробити зауваження про те, що при плануванні резервного копіювання веб-вузлів SharePoint треба пам'ятати, що контент розміщений за вказаною нами UNC-шляху до складу резервної копії не потрапить, тому потрібно окремо вирішити питання про резервне копіювання цих файлів, якщо вони мають якусь важливість.