.

При совместном использовании технологий Device Channels и Image Renditions нужно рассмотреть два вопроса. Первый – как разработчик будет создавать контент, использующий обе названных технологии, и второй – как реализовать эти технологии с технической точки зрения.

Работа над созданием контента

Для начала давайте посмотрим, как разработчики создают контент, передаваемый с помощью механизмов Device Channels и Image Renditions.

Обычно контент создается на веб-страницах SharePoint следующим образом: разработчики переводят страницу в режим редактирования, добавляют содержимое, сохраняют страницу и публикуют ее. Это несложно. При добавлении картинок с помощью технологий Device Channel и Image Renditions процесс создания контента может стать слишком громоздким, если вы заранее не позаботитесь о планировании данного процесса.

Например, если веб-сайт SharePoint имеет три канала Device Channels и для выбранных изображений планируется использовать разные представления в каждом канале, скорее всего, вы создадите следующие объекты для реализации данного решения:

  • 3 страницы Master Page (по одной на канал Device Channel);
  • 3 файла CSS (по одному на канал Device Channel), подключенные на странице Master Page;
  • 3 и более представлений (по одному на изображение в каждом канале Device Channel), используются в макетах Page Layout;
  • 3 макета Page Layout (Home Page, Secondary Page, Tertiary Page).

Теперь давайте рассмотрим процесс редактирования страниц. Один из способов формирования макетов Page Layout – создать три панели каналов устройств (Device Channel Panel) и поместить их в каждый макет.

Контент, размещенный в панели Device Channel, прорисовывается только в данном канале Device Channel. Подробную информацию о панелях Device Channel можно найти здесь: http://msdn.microsoft.com/en-us/library/jj862340.

Реализация

Диаграмма, приведенная на рисунке, иллюстрирует рассматриваемый пример.

 

Макет страницы
Рисунок. Макет страницы

В подобном сценарии каждая панель Device Channel содержит объект управления Publishing Image, у которого значение свойства RenditionID задается таким образом, что объект Publishing Image отображает соответствующее представление изображения, связанного с панелью, в которой размещен объект. Например, в диаграмме на рисунке значение RenditionID 2 сопоставлено представлению, используемому в канале Device Channel с именем iPad, а код, реализующий это сопоставление, выглядит следующим образом:




Хотя такой подход очень легко реализовать с технической точки зрения, он сильно усложняет жизнь разработчикам контента, так как им приходится использовать различные устройства для редактирования объектов Publishing Image внутри каждой панели Device Channel.

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

Другой способ решения задачи – добавить параметр QueryString под названием DeviceChannel в строку URL веб-браузера, чтобы принудительно прорисовать страницу в виде, настроенном для определенного канала Device Channel.

Вы также можете задействовать средства разработки, такие как IE Developer Tools, для отправки строки User Agent из веб-браузера к веб-страницам системы SharePoint для подключения к соответствующему каналу Device Channels и последующего редактирования объектов управления поля Publishing Image.

Неважно, какой вариант вы выберете, это будет трудоемкий и громоздкий подход, который снизит производительность разработчиков контента. Таким образом, перед нами встает вопрос: сможем ли мы предоставить разработчикам контента возможность редактирования управляющих объектов Publishing Image, что позволит им задавать изображения для всех каналов Device Channels из канала устройств, используемого по умолчанию? Ответ — да! Чтобы решить задачу и предоставить разработчикам контента простой механизм редактирования, комбинируйте панели Device Channel и панели Edit Mode в макетах страниц. Во второй части статьи я покажу, как это сделать.