понедельник, 20 августа 2012 г.

Callouts (popovers) в SharePoint 2013 Preview

В прошлую пятницу читал в своем отделе доклад по юзабилити, и среди прочего рассказывал об элементе интерфейса под названием “popover” (терминология Apple), еще называемом “callout” (терминология MS). Далее по тексту я буду использовать терминологию Microsoft, хотя хочется отметить, что у Apple popover’ы описаны и проработаны намного лучше.

Если вкратце, callout очень похож на “раздутый” tooltip, только еще обязательно включает “стрелку”, указывающую на вызвавший callout-элемент. Callout может содержать не только текст и иконки, но вообще говоря почти любые контролы – ссылки, edit box’ы, и т.д.

Callout’ы на сегодня используются всеми мировыми софтверными лидерами – Google, MS, Apple, ну и в мелких проектах конечно тоже. Очень хороший пример грамотного и удобного callout’а – кнопка +1 от Google+:

image

Callout может вызываться по щелчку или при наведении курсора на исходный элемент, и закрывается при щелчке на любом месте приложения вне пределов самого callout’а. Поведение и внешний вид callout’ов на самом деле слегка варьируются от вендора к вендору, например, согласно UX Guidelines от Apple, их popover’ы не должны содержать закрывающего крестика, а вот в callout’ах MS и Google это не запрещено и зависит от контекста. Поскольку мы с вами пишем под SharePoint, рекомендую пользоваться именно MS-овскими соглашениями и рекомендациями.

Callout’ы – это сравнительно новый элемент интерфейса для Microsoft, но они уже используются как минимум в Office 2013 Preview. Например, в новом Outlook с помощью callout’ов реализован своеобразный preview вкладок:

image

Также callout’ы используются и в других приложениях офиса, в том числе и в SharePoint! Например, callout’ы используются вместо обычных контекстных меню в Picture Library:

callouts

Другой пример – страница All Site Content, где с помощью callout’ов контекстное меню совмещено с подробным описанием элемента:

image

И это очень очень классно, потому что это означает, что мы тоже сможем использовать такие callout’ы в своих решениях, причем не прилагая никаких особых усилий: ведь всё уже написано за нас.

Однако, сразу же хочется предупредить: как и с любыми другими “новомодными” фишками, с callout’ами важно не переборщить. Традиционно они используются, когда необходимо спрятать сравнительно редкоиспользуемую часть интерфейса со страницы. Но эта часть интерфейса должна быть небольшой: гигантские callout’ы недопустимы. К тому же, нельзя отображать больше одного callout’а на странице, и также нельзя их вкладывать друг в друга. Эти правила я вычитал в Guidelines компании Apple, и похоже они соблюдаются неукоснительно и Google’ом, и MS.

Но вернемся к SharePoint! Быстрое исследование показало, что callout’ы реализованы с помощью скрипта callout.js, который загружается через механизм Script-On-Demand (SOD). Исследовав файл callout.debug.js в 15\TEMPLATE\LAYOUTS, я обнаружил, что он создает глобальный объект calloutManager, с помощью которого реализуется очень удобный интерфейс по управлению callout'ами.

image

Этот скриншот показывает наличие очень интересных методов – таких как getFromLaunchPoint и createNewIfNecessary. Т.е. объект calloutManager по сути берет на себя даже трекинг созданных callout’ов, что безусловно очень удобно, т.к. открывать несколько callout’ов одновременно запрещено

В общем, уже через пару минут мне удалось отобразить свой первый callout:

image

Код для этого получился очень простой:

myCustomCallout = calloutManager.createNewIfNecessary({
ID:
'myCallout1',
title:
'Hello world!',
content:
'Please, click <a href="http://google.com">here</a>.',
launchPoint: $get(
'ctl00_DeltaPlaceHolderPageTitleInTitleArea')
});
myCustomCallout.open();

Параметр launchPoint должен ссылаться на DOM-объект, рядом с которым планируется вывести callout. ID – произвольный уникальный идентификатор для вашего callout’а. Кстати, помимо перечисленных выше, есть и другие интересные параметры – например, можно задать, с какой стороны выводить callout, отображать или нет закрывающий крестик и т.д.


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


За сим, желаю удачи!

четверг, 26 июля 2012 г.

Обзор приемов работы с Site Pages

В одном из недавних постов я рассказал, почему я предпочитаю использовать Site Pages вместо Application Pages. Одна из важных мыслей в той статье касалась того, что для эффективного создания решений на основе Site Pages, нужно научиться по-другому думать и использовать совершенно другие блоки и инструменты.

Сегодня я хочу рассказать, какие существуют приемы разработки на основе Site Pages. Какие имеющиеся в SharePoint инструменты можно использовать, и как с их помощью можно очень быстро создавать гибкие и прекрасно кастомизируемые решения. Будет также реальный пример, как можно за 5 минут разбить поля на форме списка на вкладки.

А в свете выхода SharePoint 2013, ориентация на Site Pages особенно важна: ведь например возможности разрабатывать Application Pages в новых SharePoint Apps просто не существует…

Ну что ж, давайте начнем!

среда, 25 июля 2012 г.

Apps в SharePoint 2013

Apps – это, наверное, наиболее революционное изменение в SharePoint 2013 по сравнению с 2010й версией. В этой статье мне хочется рассказать, почему про Apps нужно узнать уже сейчас, ну и, конечно, что это вообще такое.

понедельник, 23 июля 2012 г.

Списки в SharePoint 2013 Preview

Выход SharePoint 2013 Preview, откровенно говоря, существенно сбил планы моих следующих публикаций, где мне хотелось побольше рассказать о разработке на основе Site Pages, развивая тему, начатую в посте Site Pages vs Application Pages. С этим направлением, однако, придется на какое-то время распрощаться, уступив место нескольким статьям по новому SharePoint’у :)

Итак, уже прошла целая неделя с момента выхода Preview, на сайтах TechNet и MSDN опубликована гора статей и видеоуроков, да и в сети уже появились очень интересные посты про SharePoint 2013 и некоторые наиболее революционные его фичи... Несмотря на всё это, как минимум судя по моим коллегам и знакомым, далеко не все бросились сломя голову ставить SharePoint 2013 и изучать, что же там нового. И даже если кто-то SharePoint 2013 поставил — дальше чем немного походить по сайту, дело скорее всего не зашло.

image

И это наверное даже не очень удивительно. Спектр нововведений 2013-й версии SharePoint очень велик: не знаешь, с чего начать изучение. Наверняка в какое-то ближайшее время выйдет книга, освещающая все нововведения, потому что в одном посте или даже в серии постов, как следует описать всё новое возможным не представляется.

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

четверг, 28 июня 2012 г.

Как скрывать Ribbon в SharePoint

Казалось бы, делов-то семечки: #s4-ribbonrow { display: none; }, и вуаля. Согласен, можно и так. Но есть нюансы!

Во-первых, способов скрывать Ribbon – далеко не один. А в SharePoint, если есть несколько способов что-то сделать, скорее всего чем-то эти способы отличаются. И в одних ситуациях можно применять, в других нет.

Во-вторых, если скрывать через css как было обозначено выше, перестают работать статусы (SP.UI.Status) и оповещения (SP.UI.Notify). В общем, не всё так просто!

среда, 27 июня 2012 г.

Site Pages vs Application Pages

Еще буквально полгода назад я почти не задумываясь создавал Application Pages под каждый чих и был этим вполне счастлив. А что, пользоваться ими просто и привычно: это суть обычные ASP.Net страницы с обычным CodeBehind, и любой ASP.Net-чик чувствует себя с ними как дома.

Однако сейчас, я почти все формы, и даже странички настроек, создаю на основе Site Pages. И этому есть очень серьезные причины.

Чтобы понять, как я к такому пришел, нужно понять, чем Site Pages отличаются от Application Pages.

вторник, 26 июня 2012 г.

SharePoint и XSLT: область ссылок «быстрого доступа»

Возвращаюсь к серии статей про SharePoint и XSLT.

Все вы помните ссылку «Добавить новый элемент» внизу представлений списков SharePoint:

image

В связи с наличием этой ссылки возникает два естественных вопроса:
  1. Как поменять текст этой ссылки? (например вместо “Добавить новый элемент”, я хочу текст “Добавить товар” или “Добавить продукт” и т.д.)
  2. Как добавить еще пару ссылок рядом со ссылкой для создания нового элемента?
В последнее время я очень часто и текст ссылки меняю, и другие ссылки добавляю к ней. Такие представления начинают смотреться гораздо приятнее и дружественнее пользователю.

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

image

, где ссылка Configure application route открывает редактор маршрута заявки (т.е. можно определить, кто и в каком порядке должен одобрять эту заявку).

В этой статье я расскажу, как реализовать такие изменения. Рассмотрим два способа:
  1. no-code — для частных решений, быстрых правок и кастомизаций Office365
  2. программно – что может потребоваться для создания коробочных решений