08 november 2012

Managed Metadata Navigatie in SharePoint 2013

In deze blogpost leg ik uit hoe je de nieuwe Managed Metadata navigatie functionaliteit van SharePoint 2013 kan configureren op een hiërarchie met meerdere site collecties. Ik ga er in deze handleiding van uit dat je al meerdere site collecties hebt, waarin je de Managed Metadata navigatie wilt toepassen.

Content Type hub

In het geval van meerdere site collecties is het aan te raden een ‘Content Type hub’ aan te maken. Dit is een site collectie die functioneert als host voor al je metadata, waaronder content types, fields/columns, terms, tags, etc. De overige site collecties kunnen gebruik maken van de metadata die opgeslagen is in de content type hub.
Een Content Type hub maak je als volgt aan:
  1. Open Central Administration en navigeer naar Applicaton management -> Create site collections.
  2. Maak een site collectie aan die je als Content Type hub gaat gebruiken. Geef de site collectie een herkenbare naam zoals ‘cth’ (afkorting voor Content Type hub). Je kunt gewoon een willekeurig template gebruiken, want je doet verder niets met deze site (je gebruikt hem alleen als host).
  3. Navigeer binnen Central Administration naar Application Management -> Manage Service Applications.
  4. Klik in de ribbon op New -> Managed Metadata Service.
  5. Vul het formulier in. Geef het wederom een herkenbare naam, zodat je je nieuwe Managed Metadata Service Application straks makkelijk terug vind. Vul verder de juiste Database Server in en stel een Application pool in. In het veld Content Type hub vul je de URL van de site collectie uit stap 2 in. Klik ten slotte op Save.
  6. De nieuwe Managed Metadata Service staat nu in het overzicht. Hierbij zijn twee regels zichtbaar, waarbij het onderscheid zichtbaar is onder de kolom Type’. Hier kan je zien dat er een Managed Metadata Service is, met daaronder een Managed Metadata Service Connection.
  7. Controleer of je Managed Metadata Service de status Started (rechts in beeld) heeft en publiceer hem nog even voor de zekerheid. Je kunt het publiceren door de bovenste regel (onder Type staat Managed Metadata Service) aan te klikken, en vervolgens in de ribbon op Publish te klikken.
  8. Klik nu op de onderste regel (onder Type staat Managed Metadata Service Connection).
    Je Term Store Management Tool wordt nu geopend, hier gaan we straks mee verder.
  9. Open, in een nieuw venster, de site collection die als Content Type hub dient.
  10. Ga naar Site Settings en klik op Site Collection Features (te vinden onder het kopje Site Collection Administration).
  11. Activeer de feature Content Type Syndication Hub.
De Content Type hub is nu aangemaakt en klaar voor gebruik. Voor het gemak van deze handleiding heb ik je in stap 7 alvast de Term Store Management Tool laten openen. Hierin gaan we nu onze navigatie in aanmaken.

Navigatie aanmaken

De navigatie bestaat uit Terms welke verzameld zijn in een Term Set. Term Sets worden weer verzameld in Groups. Laten we beginnen:
  1. Als je in de Term Store Management Tool in het linker venster kijkt, zie je de onderdelen die al in de Term Store staan. Waarschijnlijk zie je nog niets, behalve een regel met de naam van de Managed metadata Service en een mapje dat System heet. Hover met je muis over de naam van je Managed Metadata Service en je ziet een pijltje verschijnen aan de rechterkant. Klik op het pijltje en selecteer New Group.
  2. Geef de nieuwe Group een herkenbare naam zoals ‘Site Navigation’.
  3. Hover nu met de muis over de nieuwe Group en klik wederom op het pijltje. Selecteer nu New Term Set.
  4. Een van de problemen die ik tegen ben gekomen is dat maar 1 site collectie gebruik kan maken van een term set. Om deze reden zullen we dus voor iedere site collectie een nieuwe Term Set aan moeten maken. Gelukkig kunnen in die Term Sets, de Terms hergebruiken. We gaan nu dus eerst de verschillende Term Sets aanmaken, maar we gaan slechts in 1 Term Set de Terms aanmaken. Als dat klaar is, dan hergebruiken we die Terms in de overige Term Sets.
  5. Geef de nieuwe Term Set die je in stap 3 hebt aangemaakt een herkenbare naam. Houdt hierbij rekening met het feit dat iedere site collectie een eigen Term Set krijgt. Het is dus handig om je Term Set te vernoemen naar de site collectie waar je hem straks op gaat toepassen.
  6. Klik op de Term Set en klik in het grote rechter venster bovenin op het tabje INTENDED USE. Zet een vinkje bij Use this Term Set for Site Navigation.
  7. Herhaal stap 3, 4 en 5 voor iedere site collectie waarop je de navigatie wilt toepassen.
  8. Hover nu over 1 van je Term Sets en klik weer op het pijltje. Selecteer New Term en geef de nieuwe Term een naam.
  9. Je hebt nu de eerste echte link voor het menu aangemaakt. De naam van de Term is wat je straks ziet in het menu, houdt hier dus rekening mee als je de Term een naam geeft.
  10. Herhaal Stap 7 tot je alle gewenste links voor het menu hebt aangemaakt.
  11. Klik op een Term en klik op het tabje NAVIGATION in het grote scherm rechts. Klik de radiobutton bij Simple Link or Header aan en vul de URL in waar deze link straks in het menu naar moet gaan verwijzen. Deze URL komt uit een andere site collectie, dus de Browse-knop heeft hier geen zin. Zoek zelf de URL op en vul deze handmatig in.
  12. Klik op het tabblad GENERAL en controleer in het veld Member Of of de juiste Source Term is geselecteerd. Zo niet, verbeter deze dan.
  13. Herhaal stap 9 en 10 voor iedere term die in je menu moet komen.
  14. Hover over een van overige Term Sets die je hebt aangemaakt voor je andere site collections en klik op het pijltje. Selecteer nu Reuse Terms.
    Voeg alle Terms toe die je in het menu van de site collectie, waarop deze Term Set van toepassing is/wordt, wilt zien.
  15. Klik op de Term Set en selecteer het tabblad CUSTOM SORT. Klik de radiobutton bij Use custom sort order aan en zet de Terms in de gewenste volgorde.
  16. Herhaal stap 12 en 13 voor alle Term Sets.
De menu’s voor alle site collecties zijn nu klaar.

Navigatie toepassen

Nu dat de menu’s klaar zijn, moeten ze worden toegepast op de site collecties.
  1. Om de topnavigatie te kunnen bewerken moet een bepaalde feature aan staan. Ga naar de site collectie waarop je de navigatie wilt activeren.
  2. Ga naar Site Settings en vervolgens naar Site Collection Features (te vinden onder het kopje Site Collection Administration). Activeer de feature SharePoint Server Publishing Infrastructure.
  3. Ga nu (nog steeds binnen Site Settings) naar Navigation (te vinden onder het kopje Look and Feel).
  4. Klik, onder het kopje Global Navigation, de radiobutton bij Managed Navigation: The navigation items will be represented using a Managed Metadata term set aan.
  5. Scroll nu omlaag naar het kopje Managed Navigation: Term Set, zoek in het venstertje de juiste Term Set op en klik deze aan.
  6. Klik helemaal onderin het scherm op OK.
De navigatie zou nu zichtbaar moeten zijn op de pagina’s van je site collectie. Mocht dit niet het geval zijn, dan kan je nog even de timer job Application Server Administration Timer Job handmatig starten. Deze is te vinden in Central Administration onder Monitoring -> Check job status.

12 juli 2012

SharePoint 2010 solution maken in Visual Studio

Dit is een stap-voor-stap handleiding voor het maken van een design solution in Visual Studio. De solution is tevens geschikt voor language packs en Variations. Om deze handleiding te volgen heb je geen voorkennis van Visual Studio nodig. Bij alle stappen wordt nauwkeurig uitgelegd wat je moet doen en waarom dat nodig is.

Voorbereiding

Er zijn een aantal dingen die je moet doen voordat we een nieuw project gaan aanmaken. Later in deze handleiding zal vanzelf duidelijk worden waarom dit nodig is. Bij deze handleiding wordt ervan uit gegaan dat de SharePoint Site (collection) waarop het design moet worden toegepast al bestaat. Zorg dus dat je eerst de Site(collection) waarop je design moet worden toegepast, al aanwezig is.

Hostfile

Om je SharePoint site in een browser te kunnen opvragen, moet je deze eerst in de hostfile op je computer zetten. Doe je dit niet, dan geeft de browser aan dat de site niet gevonden kan worden. Je kunt je site als volgt aan de hostfile toevoegen:
  1. Open Notepad/Kladblok via de Run as administrator optie.
  2. Klik op Open en navigeer naar de volgende locatie:
    C:\Windows\System32\drivers\etc
  3. Zorg dat alle bestandstypen worden weergegeven.
  4. Open hosts en voeg onderin het ip-nummer (Tab er tussen) en de url van je site toe. Als je site op dezelfde machine staat als de browser waarmee je hem wilt openen kan je localhost (127.0.0.1) gebruiken.
  5. Sla het bestand op en sluit Notepad/Kladblok af.

Rechten

In principe werk je altijd met een SharePoint Administrator account (meestal is dit 'sp_admin'). Dit om de rechten zoveel mogelijk te beperken. De lokale Administrator (dat is Administrator op de server) heeft namelijk alle rechten, waardoor er gemakkelijk fouten gemaakt kunnen worden. Zorg er dus voor dat voor je met deze handleiding begint, het SharePoint Administrator account rechten heeft op de content database van je site collectie. Is dat niet het geval, dan doe je dat als volgt:
  1. Open SQL Server Management Studio via de Run as different user optie.
    (Houdt Shift ingedrukt terwijl je met de rechtermuisknop klikt om deze optie zichtbaar te maken)
  2. Log in als Administrator en klik vervolgens op Connect
  3. Klik op Databases -> Voorbeeld_WSS_Content -> Security -> Users
    (Vul in het groene gedeelte je eigen content database in)
  4. Klik met je rechtermuisknop op Users en vervolgens op New User...
  5. Vul de volgende gegevens in:
    • User name: sp_admin
    • Login name: Domein\sp_admin
      (Let op: Het domein moet erbij worden vermeld)
  6. Vink bij Owned Schemas en Role Members de optie db_owner aan.
  7. Sluit SQL Server Management Studio.

CKSDev

Als je je solution vanuit Visual Studio deployt, dan wordt er altijd een IIS reset uitgevoerd. Op het moment dat je de veranderingen die je maakt, wilt testen, is het nogal tijdrovend om telkens op de IIS reset te moeten wachten. Daar kan de tool CKSDev ons mee helpen. CKSDev heeft een optie waarmee je de bestanden uit de solution slechts naar de SharePoint root kopieert. De IIS reset is zo niet nodig en je kan toch je werk testen. De installatie:
  1. Klik op Tools -> Extension Manager.
  2. Klik op Online Gallery in de linker kolom en type vervolgens in het zoekveld ‘CKSDev’ in.
  3. Selecteer het bovenste zoekresultaat en klik op Download.
  4. Installeer CKSDev en herstart vervolgens Visual Studio via de Run as administrator optie.

Start

Nu kunnen we beginnen met het aanmaken van de solution in Visual studio. Om te beginnen open je Visual Studio via de Run as administrator optie. Dit moet je altijd doen (dus ook als je een volgende keer verder gaat werken aan je solution), omdat je anders de juiste rechten niet hebt om je solution te deployen.

Nieuw Project aanmaken

Hieronder vertel ik hoe je je eigen project kunt starten in Visual Studio. Zorg het voor dat je Visual Studio hebt geopend via de Run as Administrator optie.
  1. Klik op New Project. Dit kan via de Start Page of via File -> New Project.
  2. Controleer of in de linkerkolom SharePoint -> 2010 geselecteerd is en klik op Empty SharePoint Project in de middelste kolom.
  3. Vul onderin het scherm de naam van je project in.
    Als je de naam invult, dan past de Solution Name zich automatisch aan. Dat kan je zo laten.
  4. Vul de juiste locatie in om de bestanden uit de solution op te slaan. Maak hiervoor een nieuwe map aan op de c-schijf, die je makkelijk kan terugvinden.
  5. Klik op OK.
  6. Vul, in het venster dat nu is verschenen, de URL van je site collection in.
  7. Selecteer Deploy as a farm solution en klik op Finish.
  8. Ga naar Solution Explorer (Tabje in de kolom rechts in beeld) en klik op je project/solution.
  9. Onderin de kolom verschijnen nu de Properties van je solution. Zet de eigenschap Include Assembly in Package op False.
  10. Klik met je rechter muisknop op je project/solution en klik op Deploy.
  11. Controleer in Central Administration of je solution is gedeployed. Ga hiervoor naar System Settings -> Manage Farm Solutions.

Managed Folders

De volgende stap is het aanmaken van Managed folders. Deze zijn bedoeld om de locaties vast te leggen waar de onderdelen van de solution moeten worden opgeslagen. De locatie is niet altijd op iedere server exact hetzelfde. Managed folders zorgen er voor dat de juiste locatie altijd word gevonden door te werken vanuit een root, die niet aan een vaste locatie gebonden is.
  1. Klik in de Solution Explorer met de rechter muisknop op je solution en klik vervolgens op Add -> SharePoint “Layouts” Mapped Folder.
  2. Herhaal voorgaande eventueel voor de SharePoint “Images” Mapped Folder
  3. Voeg een item toe aan de Mapped Folder. Dit is nodig omdat een lege map niet wordt gedeployed, je kan dan dus niet controleren of alles werkt. Na de controle kan je het bestand eventueel weer weggooien.
  4. Deploy je solution.
  5. Controleer of je bestanden naar de SharePoint root zijn gekopieerd door in je verkenner het volgende adres op te zoeken:
    Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\

Modules

Modules worden gebruikt om bijvoorbeeld je Masterpages en Page Layouts op te slaan.
  1. Klik met je rechter muisknop op de solution en kies voor Add -> New Item.
  2. Selecteer in de linker kolom SharePoint -> 2010 en in de middelste kolom Module.
  3. Geef de module een representatieve naam (Bijvoorbeeld: MasterPages) en klik op Add.
  4. Verwijder Sample.txt.
  5. Klik met de rechter muisknop op de module en kies Add -> New Item.
  6. Selecteer het bestand van je keuze en geef het een representatieve naam.
  7. De kans is aanwezig dat Visual Studio het nieuwe bestand ongevraagd en onaangekondigd in de Mapped Folder 'Layouts' Plaatst. Zwaar irritant, maar ik heb nog niet kunnen vinden waarom dit gebeurt en hoe je het kan voorkomen. Mocht dit dus zo zijn, sleep het bestand dan terug naar je module. Je kan ook alle bestandjes (met de .cs extensie) die onder het bestand hangen weg gooien, die heb je niet nodig.

Features

Een feature is o.a. de aan/uit knop van je solution. Features zijn terug te vinden in de Central Administration (Scope: farm), de Site Collection Features (Scope: Site), of de Site Features (Scope: Web). Bij iedere feature staat een knop Activate/Deactivate, waarmee je vanzelfsprekend de feaure aan of uit kunt zetten. Het voordeel hiervan is prestatie. Hoe minder features actief zijn, hoe sneller je site zal zijn. Verder hoef je een solution ook niet geheel te rectracten/verwijderen als je hem (tijdelijk) niet wilt gebruiken.
  1. Klik in de Solution Explorer met je rechter muisknop op Features en klik vervolgens op Add Feature.
  2. Rename de feature naar een representatieve naam. Het is aan te raden om de scope in de naam te verwerken. Zo zie je in één oogopslag waar je de feature terug kunt vinden. (Bijvoorbeeld ‘Site.Pages’ of Web.Lists)
  3. Open de feature (indien dit niet vanzelf gebeurd) en vul een titel in.
  4. Stel de Scope in. (Zie het scopes-overzicht hieronder om te bepalen welke scope je nodig hebt.)
  5. Deploy je solution.
  6. Controleer of je feature er tussen staat. (Zie het scopes-overzicht hieronder om te bepalen waar je je feature terug kunt vinden.)

Scopes

De scope bepaald op welk niveau de feature word gedeployed. Er zijn 4 scopes beschikbaar:
Scopes overzicht SharePoint 2010
In de praktijk zal je bij de meeste design solutions alleen gebruik maken van de scopes Site en Web.

Resources

Resources worden onder andere gebruikt om namen variabel te maken, zodat deze bijvoorbeeld automatisch worden vertaald als de SharePoint site in verschillende talen beschikbaar is. Daarnaast gebruiken we resources om bijvoorbeeld namen te geven aan onze eigen Columns en Content Types, hierover in later meer.

Resources aanmaken

  1. Klik met je rechter muisknop op de solution en klik vervolgens op Add -> SharePoint Mapped Folder.
  2. Kies de map Resources en klik op OK.
  3. Klik met je rechter muisknop op de Resources folder die je zojuist hebt aangemaakt en klik vervolgens op Add -> New Item.
  4. Selecteer in de linker kolom Visual C# -> General en in de middelste kolom Resources File.
  5. Geef de Resources File dezelfde naam als je solution en klik op Add (deze Resource File is in het Engels, Engels is default en je hoeft dus ook geen extra Resource File voor Engels te maken).
  6. Maak eventueel extra Resources Files voor andere talen en vermeld de taal in de naam (bijvoorbeeld ‘Voorbeeld.Solution.SP2010.nl-NL’ voor Nederlands)
  7. Dubbelklik op Package in de Solution Explorer (rechts in beeld) en selecteer onder in beeld het tabblad Manifest.
  8. Scroll naar beneden en klik op Edit Options.
  9. Pas de Manifest Template aan zodat deze vergelijkbaar is met onderstaande:
    Resource XML voor SharePoint 2010
    (Vul op de groene gedeelten je eigen waarden in)
  10. Deploy de solution.
  11. Controleer in de SharePoint root of de bestanden er staan.
    (Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Resources\)
  12. Controleer in de AppGlobalResources of de bestanden er staan.
    (inetpub\wwwroot\wss\VirtualDirectories\Voorbeeld.domein.local80\App_GlobalResources\ Resources\)
    (Vul in het groene gedeelte je eigen Web Applicatie in)

Resources gebruiken

  1. Dubbelklik op een Resource File die je hebt aangemaakt. Deze staat in de Solution Explorer.
  2. Vul bij Name de waarde ‘FeatureTitle’ in en bij Value een representatieve naam. (bijvoorbeeld: Design Template)
  3. Herhaal stap 2, alleen vul dan bij Name ‘FeatureMetaDataTitle’ in. Vul bij Value hetzelfde in als bij stap 2.
  4. Herhaal stap 1, 2 en 3 voor de eventuele Resource Files voor andere talen en vertaal steeds de waarde bij Value (dus niet bij Name, dat blijft steeds FeatureTitle en FeatureMetaDataTitle).
  5. Dubbelklik op de feature die je eerder hebt aangemaakt (Staat in de Solution Explorer).
  6. Vul bij de Properties (rechts onderin beeld, onder de Solutions Explorer) bij Default Resource File de naam van je eerste Resource File in (dus de default Engelse) en laat de .resx extensie weg. Dit is nu dus hetzelfde als de naam van je solution.
  7. Vul nu bij Title (in het grote venster links) het volgende in: $Resources: Voorbeeld.SP2010.Branding, FeatureTitle;
    (Vul bij het groene gedeelte je eigen waarde in. Dit is dezelfde waarde als die je zojuist bij Properties hebt ingevuld)
  8. Sla alles op.
  9. Deploy de solution.
  10. Controleer bij de Site Collection Features of de solution nu de naam heeft die je bij stap 2 als Value hebt ingevuld.

Onderdelen

Hieronder een overzicht van de verschillende onderdelen die je aan je solution kunt toevoegen. Je hoeft uiteraard niet alles toe te voegen, gebruik alleen wat je nodig hebt.

MasterPages

  1. Klik met je rechter muisknop op de solution en kies voor Add -> New Item.
  2. Selecteer in de linker kolom SharePoint -> 2010 en in de middelste kolom Module.
  3. Noem de module 'MasterPages' en klik op Add.
  4. Rename Sample.txt en pas daarbij de .txt extensie aan naar .master (Bijvoorbeeld: Voorbeeld.master).
  5. Pas Elements.xml aan zodat deze vergelijkbaar word met onderstaande:
    Elements.xml van de MasterPages module voor SharePoint 2010
    (Vul op de groene gedeelten je eigen waarden in)
  6. Kopieer de code van een standaard V4 masterpage en plak deze in je eigen masterpage.
  7. Dubbelklik op de feature die je eerder hebt aangemaakt en controleer of de module MasterPages in het Items in the Feature vak staat. Zo niet, zet de module daar dan in.
  8. Deploy de solution.
  9. Ga naar je site (Site Settings -> Master page), controleer of je masterpage tussen de beschikbare masterpages staat en activeer deze bij Site Master Page (Let op: Dus niet bij 'System Master Page'). Zet ook een vinkje bij Reset all subsites for default Masterpage.

Page Layouts

  1. Voeg een module aan de solution toe en noem deze 'PageLayouts'.
  2. Verwijder het Sample.txt bestand in de module.
  3. Klik met de rechter muisknop op de module PageLayouts en klik op Add -> New Item.
  4. Selecteer in de linker kolom SharePoint -> 2010 en in de middelste kolom Application Page.
  5. Geef de pagina een representatieve naam (Bijvoorbeeld HomePage.aspx).
  6. Het kan nu zo zijn dat Visual Studio het bestand in de mapped Folder Layouts zet. Zwaar irritant, maar ik heb nog niet kunnen vinden waarom dit gebeurt en hoe je het kan voorkomen. Mocht dit dus zo zijn, sleep het bestand dan terug naar de module PageLayouts. Je kan ook alle bestandjes die onder het .aspx bestand hangen weg gooien, die hebben we niet nodig.
  7. Pas de Elements.xml van de module PageLayouts aan zodat deze vergelijkbaar word met onderstaande:
    Elements.xml van de Page Layouts module voor SharePoint 2010
    (Vul bij de groene gedeelten je eigen waardes in)
  8. Dubbelklik op de Feature waarin je MasterPages module staat.
  9. Verplaats de Module PageLayouts naar het vak Items in the Feature.
  10. Deploy de solution.
  11. Controleer of de nieuwe Pagelayout(s) aanwezig is/zijn op je site (Site Settings -> Master pages and page layouts)

CSS

  1. Klik met de rechter muisknop op de Layouts folder en klik vervolgens op Add -> New Folder. Geef deze folder een naam die representatief is voor je project. Bijvoorbeeld de naam van je project.
  2. Klik met de rechter muisknop op de folder die je zojuist hebt aangemaakt en klik vervolgens op Add -> New Folder. Noem deze folder 'CSS'.
  3. Klik met de rechter muisknop op de folder CSS en klik vervolgens op Add -> New Item.
  4. Selecteer in de linker kolom Visual C# -> Web en in de middelste kolom Style Sheet.
  5. Vul onderin de naam van het stylesheet in. Noem het 'styles.css'.
  6. Herhaal stap 3, 4 en 5 twee keer en noem de stylesheets 'layouts.css' en 'text.css'. Voeg eventueel nog stylesheets toe voor mediaqueries m.b.t. responsive webdesign als je dit wilt toepassen.

XSL

Let op: Gebruik alleen XSLT als je weet wat je doet. XSL gaat met ieder typefoutje stuk en helaas kan niet worden getraceerd waar de fout zit. Het herstellen van zo'n fout is dus niet zo makkelijk. Zorg hoe dan ook altijd voor een kopie van het een werkend exemplaar.
  1. Klik met je rechter muisknop op de solution en kies voor Add -> New Item.
  2. Selecteer in de linker kolom SharePoint -> 2010 en in de middelste kolom Module.
  3. Noem de module 'XSL' en klik op Add.
  4. Rename Sample.txt en pas daarbij de .txt extensie aan naar .xsl (Bijvoorbeeld: itemstyle.xsl).
  5. Pas Elements.xml aan zodat deze vergelijkbaar word met onderstaande:
    Elements.xml van de XSL module voor SharePoint 2010
    (Vul bij de groene gedeelten je eigen waardes in)
  6. Dubbelklik op de feature die je eerder hebt aangemaakt en controleer of de module XSL in het Items in the Feature vak staat. Zo niet, zet de module daar dan in.

Fields

Field is eigenlijk niet helemaal de goede benaming, het zijn eigenlijk Columns en in columns word metadata opgeslagen. Het nut hiervan zit m voornamelijk in de vindbaarheid van items/documenten in Search, maar ook in de toepassing van verschillende talen. We kunnen een set van columns maken die, voor iedere taal die we op de SharePoint site toepassen, automatisch vertaald worden. Dit doen we met Resources, waarover die we eerder in deze handleiding al hebben besproken.
  1. Klik met je rechter muisknop op Features (in de Solution Explorer) en klik op Add Feature.
  2. Geef de feature een representatieve naam (Bijvoorbeeld: Site.Fields).
  3. Vul bij Title het volgende in:
    $Resources: Voorbeeld.SP2010.Branding, FeatureMetaDataTitle;
    Vul in het groene gedeelte je eigen waarde in, dit is hetzelfde als de naam van default resource (Engels).
  4. Vul bij de Properties (rechts onderin beeld, onder de Solutions Explorer) bij Default Resource File de naam van het eerste Resource File (de Engelse dus) in en laat de .resx extensie weg. Dit is nu dus hetzelfde als de naam van je solution.
  5. Dubbelklik op op je default Resource File (Engels) en vul bij Name de waarde ‘GroupFieldsTitle’ in en bij Value een naam voor je eigen kolommen (Bijvoorbeeld: Design Template Columns).
  6. Herhaal stap 5 nog een keer en vul hierbij onder Name ‘FieldTextName’ in. De GroupFieldsTitle uit stap 5 is de groepsnaam van je custom columns, FieldTextName is je eerste eigen column. Vul eens gekke waarden in (bijvoorbeeld ‘Pindakaas’) bij Value om straks mee te testen.
  7. Klik met je rechter muisknop op je solution en klik op Add -> New Folder.
  8. Noem de folder ‘Fields’.
  9. Klik met je rechter muisknop op de folder Fields en klik vervolgens op Add -> New Item.
  10. Selecteer in de linker kolom SharePoint -> 2010 en in de middelste kolom Empty Element.
  11. Noem het bestand ‘Fields’.
  12. Pas de Elements.xml aan zodat deze vergelijkbaar is met onderstaande:
    Elements.xml van de Fields module voor SharePoint 2010
    (Vul bij de groene gedeelten je eigen waardes in). Bij ID vul je een GUID in. Deze kan je aanmaken zoals uitgelegd in het hoofdstuk Guides. Bij de overige groene gedeelten vul je de naam van je default Resource File (Engels) in.
  13. Alle attributen van fields kun je bekijken op:
    http://msdn.microsoft.com/en-us/library/aa979575.aspx
  14. Dubbelklik op de feature die je in stap 1 hebt aangemaakt.
  15. Verplaats Fields naar Items in the Feature.
  16. Deploy je solution.
  17. Controleer of het Field is aangemaakt (Site Settings -> Site Columns, hier kan je nu de waarden van Value uit stap 6 zien).

Content Types

Een Content Type is een verzameling van columns(fields), metadata, policies, properties, forms, templates en workflows, die kunnen worden toegepast op meerdere items/documenten, zonder dat dit steeds opnieuw gespecificeerd hoeft te worden. Zo kan er veel worden geautomatiseerd en bespaar jezelf een enorme hoeveelheid tijd.

Content Types aanmaken

  1. Klik met je rechter muisknop op je solution en klik op Add -> New Folder.
  2. Noem de folder ‘ContentTypes’.
  3. Klik met je rechter muisknop op de folder ContentTypes en klik vervolgens op Add -> New Item.
  4. Selecteer in de linker kolom SharePoint -> 2010 en in de middelste kolom Empty Element.
  5. Noem het bestand ‘ContentTypes’.
  6. Pas de Elements.xml aan zodat deze vergelijkbaar is met onderstaande:
    Elements.xml van de Content Type module voor SharePoint 2010
    Vul bij de groene gedeelten je eigen waardes in en laat het content type erven van Item. Bij ID doe je drie dingen:
    1. Je genereert een GUID zoals uitgelegd in het hoofdstuk ‘Guides’ en je plakt hem bij ID. (Let op: Geen parentheses)
    2. Je laat het Content Type erven van Item: Voor de GUID plak je de id van het parent content type, in dit geval: Item. Deze plak je er dus gewoon voor, zonder spaties of wat dan ook. Je ziet dus: 0x01metjeGUIDermeteenachteraan.
    3. Haal alle streepjes weg uit de GUID, zodat het één lang nummer wordt.
    4. Bij de overige grijze delen vul je de naam van je default Resource File (Engels) in.
  7. Meer informatie over Content Type ID’s kun je bekijken op:
    http://msdn.microsoft.com/en-us/library/ms452896.aspx
  8. Dubbelklik op op je default Resource File (Engels) en vul bij Name de waarde ‘GroupContentTypeTitle’ in en bij Value een verzamelnaam voor je eigen Content Types (Bijvoorbeeld: Chantals custom Columns)
  9. Herhaal stap 8 nog een keer en vul hierbij onder Name ‘CTItemName’ in. De GroupContentTypeTitle uit stap 8 is de naam van de group van je custom columns, CTItemName is je eerste eigen Content Type. Vul eens gekke waarden in (bijvoorbeeld ‘Pindakaas’) bij Value om mee te testen.
  10. Als je standaard Columns toe wilt voegen aan je Content Type kun je de GUIDs hier opzoeken:
    http://sharepointmalarkey.wordpress.com/2010/10/12/sharepoint-internal-field-names-sharepoint-2010/
  11. Deploy de solution.
  12. Controleer of het Content Type is aangemaakt (Site Settings -> Site Content Types, hier kan je nu de waarden van Value uit stap 8 en 9 zien).
  13. Herhaal stap 6, maar laat nu het Content Type overerven van Document (0x0101). Je kunt het nieuwe Content Type gewoon toevoegen aan de bestaande Elements.xml. De code voor het nieuwe Content Type moet vergelijkbaar zijn met onderstaande:
    Elements.xml van de Content Type module voor SharePoint 2010
    (Vul bij de groene gedeelten je eigen waardes in)
  14. Deploy de solution.
  15. Controleer of het Content Type is aangemaakt (Site Settings -> Site Content Types, hier kan je nu de waarden van Value uit stap 9 zien).

Content Types inrichten

In deze les gaan we kort in op het inrichten van Content Types. we gaan Columns toevoegen aan de Content Types toevoegen. De Columns bevatten metadata die iets zeggen over de items/documenten die onder dit Content Type vallen. Zo worden de items/documenten bijvoorbeeld veel makkelijker vindbaar in Search.
  1. Dubbelklik op de Elements.xml die in de folder ContentTypes staat.
  2. Pas de code per Content Type aan zodat deze vergelijkbaar wordt met onderstaande:
    Elements.xml van de Content Type module voor SharePoint 2010
    Vul in de grijze gedeelten je eigen waarden in. De GUIDs voor alle FieldRefs heb je al aangemaakt in de Elements.xml die in de map Fields staat. Deze kan je dus gewoon kopiëren. De velden die je hebt aangemaakt in Fields, roep je aan in je Content Types. Je hoeft niet perse alle velden aan te roepen. Gebruik wat je nodig hebt.
  3. Sla alles op en deploy de solution.
  4. Controleer of de columns in het Content Type zijn aangemaakt. (Site Settings -> Site Content Types -> Jouw Content Type, Als je je content type hebt aangeklikt zie onder Columns of je columns er bij staan)

Lists

  1. Klik met je rechter muisknop op je solution en klik op Add -> New Folder.
  2. Noem de folder ‘Lists’.
  3. Klik met je rechter muisknop op de folder Lists en klik vervolgens op Add -> New Item.
  4. Selecteer in de linker kolom SharePoint -> 2010 en in de middelste kolom Empty Element.
  5. Noem het bestand ‘Lists’.
  6. We gaan een List van het type Generic List maken. Pas de Elements.xml aan zodat deze vergelijkbaar is met onderstaande:
    Elements.xml van Lists voor SharePoint 2010
    (Vul bij de groene gedeelten je eigen waardes in)
  7. Feature ID's en TemplateTypes kun je opzoeken op: http://karinebosch.wordpress.com/walkthroughs/create-custom-lists-in-caml-based-on-existing-list-templates/
  8. Maak een feature aan en noem deze 'Web.Lists'.
  9. Open de feature (indien dit nog niet is gebeurd) en vul bij Title het volgende in:
    $Resources: Voorbeeld.SP2010.Branding, FeatureListsTitle;
    (Vul in het groene gedeelte je eigen waarde in)
  10. Vul bij Description het volgende in:
    $Resources: Voorbeeld.SP2010.Branding, FeatureListsDescription;
    (Vul in het groene gedeelte je eigen waarde in.
  11. Zet de Scope op Web (Dit zorgt er voor dat de feature op site-niveau aan/uit gezet kan worden).
  12. Deploy de solution.
  13. Controleer of je List er staat. Dit doe je door op je site onder All Site Content -> Lists te kijken.

Web Templates

Een web template is een verzameling van eigenschappen die worden toegepast op een site die je op basis van het template aanmaakt. Hieronder kunnen bijvoorbeeld eigenschappen vallen, die we hierboven hebben aangemaakt: Design, lijsten, bibliotheken, metadata, web parts, pagina’s, etc.
  1. Maak een folder aan in je solution en noem deze 'WebTemplates'.
  2. Voeg een Empty Element toe aan de folder en geef het een representatieve naam (bijvoorbeeld: ChantalsWebTemplate).
  3. Pas de Elements.xml aan zodat deze vergelijkbaar word met onderstaande:
    Elements.xml van Lists voor SharePoint 2010
    Vul op de groene gedeelten je eigen waardes in
  4. Voeg de waarden 'TemplateCustom', 'TemplateDescription' en 'TemplateCategory' toe aan je Resource Files.
  5. Klik met je rechter muisknop op het Element dat je zojuist hebt aangemaakt en kies voor Add -> New Item.
  6. Selecteer in de linker kolom Visual C# -> Data en in de middelste kolom XML File.
  7. Noem het bestand 'ONET.xml' en pas de code dusdanig aan dat deze vergelijkbaar wordt met onderstaande. Hierbij kan je zelf bepalen wat je in het web template wilt opnemen.
    ONET.xml voorbeeld
    (Vul op de grijze gedeelten je eigen waardes in)
  8. Voeg naar wens Features toe. Gebruik hiervoor de tag en zet deze in de juiste scope.
  9. Klik op ONET.xml en verander bij Properties (onder de Solution Explorer) het Deployment Type naar ElementFile.
  10. Maak een feature aan en noem deze 'Site.Templates'.
  11. Open de feature (indien dit nog niet is gebeurd) en vul bij Title het volgende in:
    $Resources: Voorbeeld.SP2010.Branding, FeatureTemplateTitle;
    (Vul in het groene gedeelte je eigen waardes in)
  12. Vul bij Description het volgende in:
    $Resources: Voorbeeld.SP2010.Branding, FeatureTemplateDescription;
    (Vul in het groene gedeelte je eigen waardes in)
  13. Verplaats het WebTemplates Element naar het vak Items in the Feature.
  14. Voeg 'FeatureTemplateTitle' en 'FeatureTemplateDescription' toe aan je Resource Files.
  15. Klik (in het Visual Studio topmenu) op Project -> Show All Files.
  16. Klik (in de Solution Explorer) op het +je van de folder Lists en van het Element Lists.
  17. Dubbelklik op SharePointProjectItem.spdata.
  18. Pas de code aan zodat deze het zelfde word als onderstaande:
    SharePointProjectItem.spdata
  19. Sla op en sluit het bestand. Klik weer (in het Visual Studio topmenu) op Project -> Show All Files.
  20. Deploy de solution.
  21. Controleer of je Web Template beschikbaar is. (Site Actions -> New Site. Je zou nu je eigen template moeten kunnen kiezen als basis voor een nieuwe site)