Synteza aplikacji biznesowych 2013/2014 Instrukcja laboratoryjna cz.2 Administracja serwisów Microsoft SharePoint Prowadzący: Tomasz Goluch Wersja: 4.1
I. Diagnostyka przy użyciu mechanizmu Developer Dashboard. Cel: uruchomienie i zapoznanie się z mechanizmem diagnozowania wydajności serwisów Sharepoint Developer Dashboard. 1. Uruchom Visual Studio z prawami administratora. 2. Utwórz nowy Console Application projekt (Visual C#). 3. Ustaw projekt w trybie 64 bit (Properties Build Platform Target x64). 4. Dodaj referencję do Microsoft.SharePoint. 5. Dodaj następujący kod: 6. Uruchom debbugera: (Ctrl+F5), wynik działania probramu powinien być następujący: ETI II. Programowanie własnych składników Visual Web Part z wykorzystaniem Linq to Sharepoint. Cel: napisanie i wdrożenie prostego składnika Web Part czytającego dane z listy i wyświetlającego je w kontrolce Data Grid 1. Uruchom Visual Studio z prawami administratora. 2. Utwórz nowy Visual Web Part projekt 1. 3. Zapamiętaj lokalny adres witryny projektu. 4. Podaj adres witryny projektu w polu: What site do you want to use for bebbuging? 5. Zaznacz opcję: Deploy as a farm solution. 1 Projekt wymaga uruchomienia środowiska programistycznego z prawami administratora. Możesz zostać poproszony o restart programu.
6. W pliku: VisualWebPart1.webpart zmień tytuł i opis Web Parta: <properties> <property name="title" type="string">tutaj podaj tytuł</property> <property name="description" type="string">tutaj podaj opis</property> </properties> 7. Otwórz okno wiersza poleceń w katalogu głównym projektu 2. 8. Ustaw ścieżkę dostępu do folderu zawierającego narzędzie spmetal za pomocą komendy: set path=%path%;%programfiles%\common files\microsoft shared\web server extensions\15\bin 3 9. W celu stworzenia odpowiednich encji wygeneruj Linq-to-SharePoint proxy kod za pomocą komendy: spmetal /web:http://domena.com 4 /namespace:nazwaprojektu.visualwebpart1 /code:splinq.cs 10. Dodaj do katalogu głównego projektu nowo wygenerowany plik: SPLinq.cs 2 Aby otworzyć wiersz poleceń w katalogu bieżącym należy przytrzymać klawisz Shift i kliknąć prawym przyciskiem na wolnym polu w bieżącym oknie. Następnie z menu kontekstowego należy wybrać polecenie: Open command window here. 3 Innym sposobem na dodanie ścieżki do SPMetal.exe należy kliknąć prawym przyciskiem na komputer i wybrać: Properties Advanced System Settings Advanced Environment Variables W oknie: System System variables kliknij dwukrotnie na zmiennej PATH i dołącz do jaj zawartości następującą ścieżkę: %ProgramFiles%\common files\microsoft shared\web server extensions\14\bin. 4 Tutaj podaj adres zapamiętanej wcześniej witryny lokalnej.
11. Dodaj referencję c:\program files\common Files\microsoft shared\web Server Extensions\15\ISAPI\Microsoft.SharePoint.Linq.dll 12. Dodaj do pliku VisualWebPart1UserControl.ascx kod deklarujący kontrolkę SPGridView: <%@ Import Namespace="Microsoft.SharePoint.WebControls" %> <SharePoint:SPGridView ID="spGridView" runat="server" AutoGenerateColumns="false"> <HeaderStyle HorizontalAlign="Left" ForeColor="Navy" Font-Bold="true" /> <Columns> <SharePoint:SPBoundField DataField="Name"> </SharePoint:SPBoundField> <SharePoint:SPBoundField DataField="DocumentCreatedBy"> </SharePoint:SPBoundField> </Columns> </SharePoint:SPGridView> 13. W kodzie behind dodaj następujące przestrzenie nazw: using Microsoft.SharePoint.Linq; using Microsoft.SharePoint; using System.Linq; 14. Wewnątrz metody Page_Load kontrolki użytkownika w plikuvisualwebpart1usercontrol.ascx.cs umieść następujące linie kodu: var dc = new SPLinqDataContext(SPContext.Current.Web.Url); var Documents = dc.getlist<document>("documents"); var docquery = from doc in Documents where doc.name.contains(".pdf") select new doc.name, doc.documentcreatedby ; spgridview.datasource = docquery; spgridview.databind(); 15. Uruchom debbugera: (F5) 16. Zaloguj się do przeglądarki z prawami administratora głównej witryny Sharepoint (login: Administrator, hasło: ETI_pg_2014). 17. Wybierz edycję witryny: settings Edit Page INSERT Web Part. 18. Z menu Categories wybierz: Custom 5, a następnie z menu Parts wybierz własny projekt i dodaj do witryny przyciskiem Add. 19. Dodaj kilka dokumentów różnych typów6 do Documents i zaobserwuj zachowanie się dodanego składnika Web Part. 5 Jeżeli w menu Categories nie występuje zakładka Customs sprawdź czy we właściwości: Site URL projektu została podana poprawna ścieżka. 6 Dodaj dokumenty PDF i inne.
Proszę przedstawić prowadzącemu działający program. III. Komunikacja pomiędzy składnikami Web Part. Cel: napisanie dwóch prostych składników Web Part (dostawcy i konsumenta). 1. Uruchom Visual Studio z prawami administratora. 2. Utwórz nowy Empty SharePoint projekt 7. 3. Zapamiętaj lokalny adres witryny projektu. 4. Zaznacz opcję: Deploy as a farm solution. 5. Dodaj do projektu nowy plik interfejsu o przykładowej nazwie IProject. 6. Zmień widoczność interfejsu na Publiczną. 7. Wewnątrz interfejsu umieść następujące linie kodu: public interface IProject int Id get; string Name get; 8. Dodaj do projektu nowy składnik Web Part (Dostawca). 9. Zaimplementuj wcześniejszy interfejs w klasie nowego składnika Web Part. 10. Dodaj wewnątrz klasy nowego składnika Web Part następujące linie kodu: public DropDownList _bufor = null; int IProject.Id get return int.parse(_bufor.selectedvalue); string IProject.Name get return _bufor.selecteditem.tostring(); 11. Wewnątrz metody CreateChildControls dodaj następujący kod: try _bufor = new DropDownList(); 7 Projekt wymaga uruchomienia środowiska programistycznego z prawami administratora. Możesz zostać poproszony o restart programu.
Controls.Add(_bufor); using (SPSite spsite = new SPSite(SPContext.Current.Web.Url)) using (SPWeb spweb = spsite.openweb()) SPList doclist = spweb.lists["documents"]; foreach(splistitem doc in doclist.items) _bufor.items.add(new ListItem(doc.Name, doc.id.tostring())); _bufor.autopostback = true; catch (Exception ex) this.controls.clear(); this.controls.add(new LiteralControl(ex.Message)); 12. Poniżej metody CreateChildControls dodaj metodę NameDoesNotMatter: [ConnectionProvider("Project Name and ID")] public IProject NameDoesNotMatter() return this; 13. Dodaj do projektu kolejny nowy składnik Web Part (Konsument). 14. Dodaj wewnątrz klasy nowego składnika Web Part następujące linie kodu: IProject _bufor = null; Label _lbl = null; 15. Wewnątrz metody CreateChildControls dodaj następujący kod: try _lbl = new Label(); if (_bufor!= null) if (_bufor.id > 0) _lbl.text = _bufor.name + " został zaznaczony"; else _lbl.text = "Nic nie zaostało zaznaczone"; else _lbl.text = "Brak połączenia z dostawcą"; this.controls.add(_lbl); catch(exception ex) this.controls.clear(); this.controls.add(new LiteralControl(ex.Message));
16. Poniżej metody CreateChildControls dodaj metodę ThisNameDoesNotMatter: [ConnectionConsumer("Project Name and ID")] public void ThisNameDoesNotMatter(IProject providerinterface) _bufor = providerinterface; 17. Uruchom debbugera: (F5) 18. Zaloguj się do przeglądarki z prawami administratora głównej witryny Sharepoint (login: Administrator, hasło: ETI_pg_2014). 19. Wybierz: PAGE View All Pages. 20. Wybierz: FILES New Document Web Part Page. 21. Wymyśl i podaj nazwę strony. 22. Wybierz szablon układu: Full Page, Vertical. 23. Wybierz: Create. 24. Kliknij na strefie składnika Web Part (pole z napisem: Add a Web Part). 25. Z menu Categories wybierz: Custom, a następnie z menu Web Parts wybierz projekt (Konsument) i dodaj do witryny przyciskiem Dodaj. 26. Kliknij na strefie składnika Web Part (pole z napisem: Add a Web Part).
27. Z menu Kategorie wybierz: Custom, a następnie z menu Web Parts wybierz projekt (Dostawca) i dodaj do witryny przyciskiem Add. 28. Kliknij na oknie combo składnika Web Part (Dostawca) i wybierz: Connections Send Project Name and ID to Konsument 8. 29. Wybierz: Site Stop Editing. 30. Przejdź do głównej strony: Home (Witryna najwyższego poziomu). 31. W oknie combo producenta wybierz jedną z dostępnych pozycji. 32. Wybrana opcja powinna zostać wyświetlona w oknie konsumenta. Proszę przedstawić prowadzącemu działający program. IV. Programowanie składnika Web Part z użyciem kontrolek SharePoint. Cel: Zaprogramowanie składnika Web Part z użyciem kontrolek SharePoint w celu wyświetlenia informacji z witryny SharePoint. Utworzenie niestandardowego składnika XSLTListWebPart w programie SharePoint Designer. 1. Uruchom Visual Studio z prawami administratora. 2. Utwórz nowy Visual Web Part projekt 9. 3. Zapamiętaj lokalny adres witryny projektu. 4. Zaznacz opcję: Deploy as a farm solution. 5. W pliku: VisualWebPart1.webpart podaj tytuł i opis Web Parta: <properties> <property name="title" type="string">tutaj podaj tytuł</property> <property name="description" type="string">tutaj podaj opis</property> </properties> 6. Dodaj do pliku VisualWebPartUserControl.ascx następujący kod: <SharePoint:ListViewByQuery runat="server" ID="ProjectListView" /> <br /> <asp:label ID="Label1" runat="server" Text="Zadania rozpoczęte przed:" /> <SharePoint:DateTimeControl ID="DueDate" AutoPostBack="true" OnDateChanged="OnDate_Changed" DateOnly="true" runat="server"> </SharePoint:DateTimeControl> 7. W kodzie behind dodaj następujące przestrzenie nazw: using Microsoft.SharePoint; using Microsoft.SharePoint.Utilities; using System.Web; 8 Tutaj powinna się wyświetlić nazwa składnika Web Part konsumenta. 9 Projekt wymaga uruchomienia środowiska programistycznego z prawami administratora. Możesz zostać poproszony o restart programu.
8. Wewnątrz metody Page_Load umieść następujące linie kodu: DateTime duedate = DateTime.Now; if (!string.isnullorempty(request.querystring["date"])) duedate = DateTime.Parse(Request.QueryString["date"]); DueDate.SelectedDate = duedate; SPWeb home = SPContext.Current.Web; ProjectListView.List = home.lists["projects"]; SPQuery query = new SPQuery(ProjectListView.List.DefaultView); query.viewfields = "<FieldRef Name=\"Title\" /><FieldRef Name=\"StartDate\" />"; query.query = string.format("<where><leq><fieldref Name=\"StartDate\" />" + "<Value Type=\"DateTime\">0</Value></Leq></Where>", duedate.tostring("s")); ProjectListView.DisableFilter = true; ProjectListView.DisableSort = true; ProjectListView.Query = query; 9. Wewnątrz edytowanej klasy dodaj następująca metodę: protected void OnDate_Changed(object sender, EventArgs e) SPUtility.Redirect(SPContext.Current.ListItem.Name, SPRedirectFlags.Default, HttpContext.Current, string.format("date=0", DueDate.SelectedDate.ToString("d"))); 10. Uruchom debbugera: (F5) 11. Dodaj w Designerze listę o nazwie Projects z dwoma polami: Title (typu: Single line of text) i StartDate (typu: Date and Time). 12. Zaloguj się do przeglądarki z prawami administratora głównej witryny Sharepoint (login: Administrator, hasło: ETI_pg_2014). 13. Wybierz edycję witryny: settings Edit Page INSERT Web Part. 14. Z menu Categories wybierz: Custom 10, a następnie z menu Parts wybierz własny projekt i dodaj do witryny przyciskiem Add. 15. Dodaj kilka zadań o różnej dacie rozpoczęcia do listy Projects i zaobserwuj zachowanie się dodanego składnika Web Part zmieniając datę w kalendarzu. 10 Jeżeli w menu Categories nie występuje zakładka Customs sprawdź czy we właściwości: Site URL projektu została podana poprawna ścieżka.
16. Uruchom program Microsoft SharePoint Designer 2013. 17. Wybierz: Otwórz witrynę. 18. Podaj adres witryny a następnie zaakceptuj przyciskiem Otwórz. 19. Zaloguj się do przeglądarki z prawami administratora głównej witryny Sharepoint (login: Administrator, hasło: ETI_pg_2014). 20. Wybierz: Cite Pages Home.aspx 21. Wybierz na wstążce: Edit File Edit File in Advanced Mode. 22. Ustaw kursor w kodzie przed znacznikiem: </Content> 23. Wybierz na wstążce: INSERT Data View Lists Projects 24. Zapisz plik (Ctrl+S). 25. Dodaj kilka zadań o różnych terminach do listy Projects i zaobserwuj zachowanie się dodanego składnika Web Part. Proszę przedstawić prowadzącemu działający program.