воскресенье, 19 декабря 2010 г.

Хорошая статья о разработке приложений на SP

http://office.microsoft.com/ru-ru/sharepoint-designer-help/HA010239046.aspx

Действительно, в шаблонах от Microsoft еть любопытные вещи и тут описывается хотя бы примерно “как это работает”

И также полезно вот это, как памятка заказчику перед началом любого проекта. Прежде чем начинать, определи следующие понятия:

* Исполнители и роли в бизнес-процессе.    В данном случае ответственный за проект создает проект и следит за данными о задачах, вопросах и т. д. Ответственным за задачи назначаются вопросы и задачи, с которыми им необходимо взаимодействовать для выполнения своих заданий. Управляющие должны видеть сводные данные общего состояния проекта.
* Элементы пользовательского интерфейса, необходимые для различных исполнителей    В данном случае у ответственного за проект, ответственных за задачи и управляющего свои режимы отображения, соответствующие выполняемым ими задачам. Например, у ответственного за задачу должна быть возможность просмотра всех вопросов, назначенных ему, тогда как у ответственного за проект должна быть возможность просмотра всех просроченных вопросов.
* Суть бизнес-процесса    В данном случае ответственный за проект создает проект, промежуточные отчеты, задачи и бюджетные операции, а затем следит за выполнением проекта. Ответственный за проект постоянно осуществляет доступ ко всем данным, а ответственный за задачу должен работать над данными при назначении ему задачи.
* Местонахождение данных     Будут использоваться только данные в Windows SharePoint Services или требуется доступ к внешним данным (из базы данных, через веб-службу, через каталог бизнес-данных и т. д.), потребуется ли хранение данных вне Windows SharePoint Services?
* Отношения между данными    В данном случае требуются проект, отчет, задачи и вопросы. Они должны составлять логическую иерархию. Также в иерархию должны входить пользователи и точки данных и такие элементы, как бюджет, количество дней и им подобные.

Вроде бы и так всё очевидно? Неа, не всегда…

На что ещё способен MOSS2007…

 

Последнее небольшое приложение использует по-максимуму всё то, что можно сделать не открывая VisualStudio =)

Приложение – опрос для экспертов. Стандартный в целом опрос, с одной только особенностью – в процессе него подсчитываются баллы и записываются в отдельный список. Для этого потребовалось с помощью Power Item Event Receiver добавить powershell-код в события ItemUpdating/ItemAdding. “Малой кровью”, а именно рабочими процессами – никак, т.к. на элементы опроса рабочие процессы попросту не навешиваются – недоработка.

DispForm того списка, куда пишутся результаты, максимально облегчена – с помощью style.display="none"; скрыто всё лишнее – меню добавления/удаления, кнопки, информация о создании – всё.

Часть данных хранится в другом списке, отображается в настоящей DispForm с помощью связки через переменную в адресной строке:

image
Создаем новый элемент в связанном списке

image
С помощью переменной в строке URL делаем привязку. Главное, чтобы пользователь её не поменял =)

В целом страница-анкета (так DispForm называется теперь на языке заказчика) выглядит вполне компактно:

image

Заметил интересную особенность: если в ссылке на страницу, где следует выполнить какое-то действие <a href …> присутствует “onclick="javascript:this.href = unescapeProperly(escape(this.href)); GoToLink(this); return false;" target="_self" то после окончания действия (нажатия ОК или Отмена) нас вернет на исходную страницу. Удобно, но загвоздка в одном - если у исходной страницы в URL присутствует Source – то идет возврат на него.

Помог вот этот топик форума: http://www.gotdotnet.ru/forums/5/119622/

“В SharePoint есть уже встроенный javascript, для организации передачи Source. Так что надо просто его использовать. Для этого оформляйте ссылку так:

<a href="url" onclick="javascript:GoToLink(this); return false;" target="_self">Link title</a>

Только чтобы это заработало необходимо, чтобы на странице было описание javascript функции GetSource, которая почему-то не описана в файлах javascript'ов SharePoint. Так что Вам придется на страницу добавить еще и вот такой кусок:

<SCRIPT type="text/javascript">
          function GetSource(defaultSource)
          {
          return escapeProperly(STSPageUrlValidation(window.location.href));
          }
</SCRIPT>”