Что является одной из самых горячо обсуждаемых тем у сотрудников ИТ-отделов? Я дам вам подсказку — это не VGA, USB, COM+ или DHTML... Это мобильные устройства и их использование в компании! Сегодня ИТ-отделы организаций по всему миру из кожи лезут вон, чтобы заставить их веб-сайты и специализированные приложения работать на различных мобильных устройствах.

Если вы разработчик SharePoint и вас еще не просили развернуть сайт SharePoint, доступный с мобильного устройства, то это лишь вопрос времени.

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

Возможность преобразования изображений

За последние несколько лет мне приходилось работать над многими проектами SharePoint, которые на том или ином уровне предусматривали мобильный компонент. Мне хотелось бы поделиться с вами некоторыми наблюдениями и приемами, о которых я узнал в процессе этой работы. Я расскажу о простой, в том числе в развертывании, возможности, которая поможет вам сэкономить массу времени при работе с изображениями на сайте SharePoint.

Каждому разработчику нравятся автоматические процессы, не так ли? Вот один прием, который вы можете использовать для автоматизации Image Renditions в SharePoint 2013. Прежде чем я расскажу о коде, давайте посмотрим, сколько времени экономит этот подход.

Представьте себе типичный веб-сайт SharePoint 2013 в интернете, который вы хотите сделать доступным для мобильных устройств. Один из методов, которые вы можете использовать для сокращения времени загрузки веб-страницы на мобильные устройства, — это преобразование изображений. Оно позволяет менять изображения, которые имеют специфический размер и обрезаются в мобильных устройствах.

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

Например, в недавнем проекте, в рамках которого мы создавали обычный веб-сайт SharePoint 2013 так, чтобы он использовал три схемы страницы (одна для домашней страницы, одна для дополнительной страницы и одна для третичной страницы), применялось 16 преобразований изображений для поддержки трех различных типов устройства.

Создание преобразований изображений вручную не представляет сложности. Требуется заполнить форму на странице Image Renditions в разделе Site Settings (http:///layouts/15/ImageRenditionSettings.aspx) для того, чтобы определить новое преобразование изображения.

Но что делать, когда у вас целая команда трудится над проектом, и каждый из разработчиков использует собственную виртуальную машину? И что делать, если вам нужно переместить код на тестовый сервер, сервер для пилотного развертывания и производственный сервер?

Вы собираетесь составить инструкцию для развертывания, которая требует, чтобы все ваши разработчики, тестировщики и обслуживающий персонал воссоздавали преобразование изображений в каждой среде? Конечно, нет! Вместо этого вы можете найти способ автоматизировать процесс в целях экономии времени и средств, а также для создания одинаковых процессов во всех средах. Чтобы автоматизировать создание процедур преобразования изображений, я могу создать некоторую функцию SharePoint и включать ее в WSP наряду с другими компонентами, которые устанавливаются на сайт SharePoint.

Функция обеспечивает развертывание файла PublishingImageRenditions.xml, который сохраняет все преобразования изображений, поддерживаемые сайтом SharePoint.

Посмотрим на код

В файле elements.xml в функции я использую Module для развертывания файла PublishingImageRenditions.xml в основную галерею страниц. Вот как выглядит этот код:

Name=«Resources»
Path=«ResourcesimageRenditions»
Url=«_catalogs/masterpage»
RootWebOnly=«TRUE»>
Path=«PublishingImageRenditions.xml»
Url=«PublishingImageRenditions.xml»
Type=«GhostableInLibrary» Level=«Published»
ReplaceContent=«true»/>
>

Обратите внимание на атрибут Level. Я установил его в Published, что означает автоматическую публикацию файла.

Также взгляните на атрибут ReplaceContent. Настройка его значения на true предписывает SharePoint записывать контент этого файла поверх того, что было. Ниже я привожу пример, который создает три преобразования изображений. Обратите внимание на элемент ImageRendition, который соотносится со специфическим преобразованием изображения.

xmlns=«http://schemas.datacontract.org/2004/07/Microsoft.SharePoint.Publishing»
xmlns:i=«http://www.w3.org/2001/XMLSchema-instance»>
>4>
>
>
>1>
>Home Page Hero>
>1>
>325>
>128>
>
>
>2>
>Home Page Hero — iPad>
>1>
>325>
>128>
>
>
>3>
>Home Page Hero — iPhone>
>1>
>325>
>128>
>
>
>

Внутри элемента ImageRendition я определяю Id, Name (имя), Version (версию), Width (ширину) и Height (высоту) каждого преобразования изображений. Как видите, это очень просто.

Характеристика Id важна, потому что когда вы интегрируете преобразование изображений с элементами управления полями в схемах страницы или с пользовательскими компонентами, вам необходим Id для ссылки на конкретное преобразование изображения.

Также обратите внимание на элемент NextId вверху файла. Он выдает SharePoint целое значение для назначения номера в списке следующему создаваемому преобразованию изображения. В данном примере элемент NextId имеет значение 4, поскольку я создаю три преобразования изображений с помощью функции.

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

Например, вы определили, что будет всего 48 преобразований изображений на веб-сайте SharePoint, который вы разворачиваете.

В первой фазе вы разворачиваете 16 из них, а на последующих этапах планируете реализовать оставшиеся. В этом случае вы можете установить значение элемента NextId равным 49 для того, чтобы учесть другие преобразования изображений, которые будут развернуты посредством функций, связанных с последующими этапами.

Если авторы вашего контента вручную создают дополнительные преобразования изображений между этапом 1, когда выполняется развертывание, и этапом завершения проекта, их преобразованиям изображений будут назначены значения Id больше 48.

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

Например, если вы обнаружили, что пользователи создали десяток преобразований изображений вручную, вы понимаете, что ваши спецификации для преобразований изображений не принимали во внимание все изображения, созданные на вашем веб-сайте, и что вам следует скорректировать требования к процессу сбора данных и построения архитектуры.

Кроме того, вы можете использовать код для автоматизации процесса создания преобразований изображений. Класс ImageRenditionCollection в пространстве имен microsoft.sharepoint.publishing позволяет это сделать.