Dziś będzie o tym czym są SharePoint application pages i jak można je wykorzystać w naszej codziennej pracy. Oryginalnie ten post umieściłem na swoim blogu w języku angielskim. Zdecydowałem się na napisanie tej serii artykułów gdy zdałem sobie sprawę, jak wiele czasu musiałem poświęcić na zrozumienie SharePoint application pages (strony aplikacyjne???) i powiązanych z nimi tematów. Zostały one napisane z punktu widzenia rozwiązania konkretnego problemu. Musiałem stworzyć niestandardowy workflow dla niestandardowej listy, bo nie dało się tego zrobić z pomocą SharePoint designer. Konieczne było skorzystanie z Visual Studio aby stworzyć wszystko od podstaw. Application page to nic skomplikowanego, w Internecie są dziesiątki artykułów, ale nie mogłem znaleźć informacji jak to wszystko poskładać z innymi opcjami, które są dostępne w SharePoint. Ich moc będziemy mogli zobaczyć łącząc różne moduły, które są w nim dostępne.
Załóżmy, że macie SharePointa w wersji standard lub foundation. Nie ma tam form serwera dla naszych formularzy, które sobie zrobiliśmy w InfoPath, a które swoją drogą uważam za bardzo udane… Dodatkowo potrzebny jest Wam workflow dla jakiejś zakręconej listy. Ponadto cześć z informacji, które są Wam potrzebne znajdziecie w różnych częściach Waszej infrastruktury (SQL Server, Web service, etc) lub też z różnych względów potrzebujecie skorzystać z kontrolek innych dostawców, np. Telerik. Takie wymagania zmuszają nas do skorzystania z kodu, a tym samym z SharePoint application pages. Oczywiście można szukać na siłę innego rozwiązania, ale moim zdaniem application page jest najbardziej naturalnym wyborem w takim przypadku.
Jak tworzymy SharePoint application pages?
1. Potrzebuję własnej listy. Wykorzystamy ją do formularzy “NEW” i “EDIT”.
2. Formularze będą korzystać z kodu, by mieć pewność, że informacje które podają użytkownicy są poprawne, a część będzie pobierana z naszego system ERP.
3. Stworzę niestandardowy workflow. Nie zamierzam tu korzystać bezpośrednio z listy zadań. Zdarzyło mi spotykać różnych szalonych użytkowników, którzy mieli przydzielone zadania, które zamykali, nie robiąc faktycznie tego co powinni. Zamierzam zatem zaimplementować funkcję, która sprawdzi czy lista zawiera wszystkie niezbędne informacje.
A więc do dzieła! Tworzymy pusty projekt SharePoint 2010. Z racji tego, że potrzebujemy własnego typu zawartości, dodajemy content type do projektu. W moim przypadku potrzebne będą:
– invoice number
– invoice date
– invoice amount
– supplier
– purchase order
A tak wygląda mój typ zawartości:

Kolejny krok pokaże nam potęgę narzędzi Visual Studio dla projektów SharePoint. Dodajemy do naszego rozwiązania element: “List Definition From Content type”. Wybieramy typ zawartości, który sobie stworzyliśmy w poprzednim kroku i teraz VSTO robi magię …

Szybko, prawa?
Po załadowaniu solucji na serwer zobaczymy nasza listę. Pozostała jeszcze jedna rzecz do zrobienia. Gdy naciskamy przycisk nowy element na naszej liście zobaczymy standardowy formularz SharePointa. Musimy zrobić dwie rzeczy, aby móc skorzystać z własnych. Po pierwsze musimy dodać do naszego rozwiązania Visual Studio kolejny element: “Application page” i aby uniknąć bałaganu w folderze Layouts powinniśmy stworzyć własny dla naszej strony. Kolejnym krokiem jest modyfikacja schematu naszej listy. Musimy zmienić opcję Inherits na FALSE oraz dodać tag “FormUrls” ze ścieżką do naszej strony aplikacji. I to wszystko. Gdy załadujemy nasze rozwiązanie na serwer po kliknięciu „Nowy element” dostaniemy naszą pustą stronę.

Co zrobić potem dowiemy się w następnym poście z tego cyklu.