Tuesday, May 29, 2007

Content type definiëren op SPWeb niveau

Als men een content type definieert in een feature en daarna deze feature gaat deployen, dan zal het content type gedefinieerd worden op SiteCollection niveau. Het is echter mogelijk een content type te definiëren op SPWeb niveau via de UI. Nu vragen we ons af of het mogelijk is een content type feature te deployen op SPWebniveau...


Poging 1:
Scope van de feature op Web geplaatst.
Bij het installeren van de feature krijgt men dan een geweldige error: Elements of type 'ContentType' are not supported at the 'Web' Scope. This feature could not be installed

Een hopeloze poging 2:
gebruik maken van het Object Model.

//Id van het contenttype feature; site = SPWeb object
System.Guid guid = new System.Guid("56615608-9e3d-4ff6-b2c6-90e070e45ff1");
site.Features.Add(guid);

Deze poging was vanzelfsprekend dat dit niet ging werken omdat het eerst nodig is de feature te installeren (Dit is onmogelijk op Webniveau).
error: Feature '56615608-9e3d-4ff6-b2c6-90e070e45ff1' is Site-scoped, and can not be added to the Web.

Op deze pagina kan men alvast zien dat het element type content type behoord tot de scope 'Site'

Poging 3:
Een mogelijke Workaround:

Maak een content type aan via het Sharepoint Object Model en prop deze code in een Feature_Activated methode. Bij het installeren van de feature zal er een content type aangemaakt worden op SPWebniveau en niet op SiteCollection niveau.

Dit is een mogelijke oplossing :) Hoewel ik denk dat dit de enige oplossing is.

Wednesday, May 23, 2007

Enesys Rs Data Extension

Ik probeer een rapport samen te stellen van data afkomstig uit een List en deze daarna te gebruiken/ weergeven binnen SharePoint. Om toegang te krijgen tot data uit een List kunnen we de Enesys RS Data Extension gebruiken...

Enesys Data Extension Reporting Services is a data extension for Microsoft SQL Reporting Services that makes it possible to create reports using data in SharePoint lists.

Een eenvoudig rapportje maken is ondertussen al gelukt. Nu zou ik alleen willen dat dit wordt weergegeven in een ReportViewerWebpart. Dit lijkt absoluut geen gemakkelijke opdracht want hiervoor is het noodzakelijk dat er een Report Server & een Reporting Service Add-in wordt geïnstalleerd. De Add-in zorgde voor weinig problemen. De Report Server configureren daarentegen, liep niet van een leie dakje. Wat er ontbrak ... SQL server 2005 Service pack 2: deze voorziet integratie met SharePoint. Ook het starten van de Report Server Windows Service bleek een probleem. Deze Service staat bij het opstarten op "disabled" en moet dus bij Administration Tools > services aangezet worden.

Nu alles opgezet is , kunnen we het rapportje deployen naar de server. Daarna kunnen we het RDL bestand weergeven in de ReportViewerWebpart. Dit blijkt nog niet te werken...

An error has occurred during report processing.Cannot create a
connection to data source 'MOSS'.Request for the permission of type
'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Tuesday, May 22, 2007

Calculated Columns

Bij deze opdracht mocht ik uitzoeken of het mogelijk was om een site column van het type 'Calculated' te creëren. Formule die we gaan gebruiken: DeadLine = StartDate + 7 .

Wat ik ondertussen al te weten ben gekomen:
Het is mogelijk om een calculated field toe te voegen aan de schema.xml van een list definition. Na het installeren/activeren van de List Feature & aanmaken van een nieuw custom list definition zal men zien dat er een extra column van het type calculated (=DeadLine) wordt toegevoegd. Het enige wat we nog moeten doen is een column 'StartDate' aanmaken via de UI (men zou dit ook via schema.xml kunnen doen). Maak nu een nieuw item aan en men zal zien dat de column DeadLine een datum weergeeft die 7 dagen later is dan de waarde van StartDate.


Het eigenaardige is dat het op het eerste zicht niet wil lukken als men de calculated column als een site column definieert... Spooky!

Tuesday, May 15, 2007

Locale wijzigen in Regional Settings

Bij deze opdracht is het de bedoeling om de locale van de regional setting te wijzigen van een Subsite. Standaard zal deze Subsite de locale overnemen van de Parent. We zouden dus graag een Subsite aanmaken die niet overerfd van zijn parent, maar een die een vaste waarde aanneemt (Dutch-Belgium).

De code voor het wijzigen van de locale is al geschreven. Het enige wat er nu nog moet gedaan worden is om deze code (automatisch) te laten uitvoeren na het creëren van een site. De oplossing (waarschijnlijk) : een Feature bouwen dat een "Event Receiver > Activation Event bevat" . Daarna een feature staple gebruiken om deze feature te 'nieten' aan de site definition.

Feature Stapling allows you to “staple” a Feature to a site definition without
modifying it in any way. This means you can add your feature to all sites
created using that site definition.

Ik had reeds een poging gedaan door de ONET.XML te wijzigen met een ExecuteUrl tag. Dit bleek niet te werken omdat het een V2 property is. (oftwel verkeerd geplaatst ; lol)

update:
Feature Stapling was dus inderdaad de oplossing voor het probleem. Opdracht voltooid!

Monday, May 14, 2007

Ontolica for MOSS 2007 RTM

Om de zoekfunctionaliteit van SharePoint optimaal te benutten heeft MondoSoft een add-on voor SharePoint ontwikkeld. Het product biedt een verbeterde Search UI aan bovenop MOSS 2007 search engine. MondoSoft geeft mensen de mogelijk om een cursus te volgen om met deze add-on kennis te maken. Dit voor een prijskaartje van €440. Na dit gelezen te hebben zullen we wel even zelf kennis maken :-)

Mijn ondervindingen :

Installatie
Het installeren had op 123 gedaan geweest als ik de gedownloade files eerst geëxtract zou hebben. (De Setup.exe wou nl. niet voltooien zonder errors) Zeer dom van mij :-) Ik heb geopteerd voor een automatische deployment van de feature aangezien dat de snelste en eenvoudigste manier is.

Ontolica bruikbaar maken
Dit was eveneens een eenvoudige opzet. Onder de 'Operation' tab in de Central Administration is een 'Ontolica for SharePoint' heading geplaatst. Van hieruit kun je de oa.Ontolica modules instellen. Men mag zeker de feature in de Farm Features niet vergeten te activeren.

Ontolica Feature
De Feature bevat een handleiding (AdministratorsGuide) van 221 pagina's. Het heeft me veel tijd gekost om het document globaal te lezen. In 't begin vroeg ik me af waarom Ontolica een verbetering zou kunnen zijn voor SharePoint maar na 'alles' doorgenomen te hebben moet ik zeggen dat het product voor sommige ondernemingen onmisbaar is! Hoewel ik nog niet van alle mogelijkheden gebruik heb kunnen maken, moet ik toegeven dat Ontolica een coole, krachtige tool is die SharePoint een zeker meerwaarde geeft. Hieronder zal ik een overzicht geven van enkele verbeteringen waarmee ik geëxperimenteerd heb:
  • Eenvoudige toevoegen van Search Tabs
  • Drill-Down properties: een mogelijkheid om een zoekopdracht te verfijnen
  • Search-Results actions: creëert een dropdownlist op elk item in de search result
  • Quick Filters: Dit vindt ik persoonlijk een nice-to-have! Deze koppelen een expressie aan de zoekopdrachten. Bij het aanklikken van de radiobutton/checkbox vindt er automatisch een PageReload plaats.
  • Sorting Properties: Deze geven de user de mogelijkheid om te sorteren op een bepaalde propertie. Standaard worden items gesorteerd op 'Relevance' / 'Date'. In een paar kliks kun je sorteren op Author!
  • Search Syntax: verbeterde boolean operators, property search, wildcard search, ... vb. Created = today; ik heb wel opgemerkt dat de Size property niet degelijk werkt. bv. Size<50>
  • Search Box scope: Men kan eenvoudig de default scopes wijzigen of nieuwe scopes aanmaken.


Er zijn nog 101 verbeteringen op te noemen. Kortom, deze tool is een echte aanrader! Enkel de kostprijs valt een beetje tegen :-)

Screenshot

Friday, May 11, 2007

Workflow verwijderen via code

In opdracht van Filip & Tom heb ik een stukje code moeten schrijven die een workflow gaat ongedaan maken op een List. Daarna was het de bedoeling dat ik ging testen of dit schadelijk kon zijn voor een approval workflow in combinatie met variations binnen een Publishing Site met workflows.

Monday, May 7, 2007

Taxonomie & Folksonomie

Hier alvast een intressant artikel die de voor - en nadelen van Folksonomie even op een rijtje zet.

Ik heb geëxperimenteerd met de Taxonomy/Tagging StartersKit voor MOSS.

Ervaring:

  • Positief:
    - Kan zeer handig zijn om content te classificeren
    - Customized Taxonomy CQWebPart werkt goed in combinatie met preference.aspx
    - Eenvoudig te installeren (indien je de publishing feature niet vergeet op te zetten)
  • Negatief:
    - Omslachtig gebruik voor de tags in te stellen
    - Werkt standaard enkel op Pages en niet op Documents
    - Niet gebruiksvriendelijk om meerdere niveau's (Taxonomieën) te implementeren

Poging om te doen werken op Documents:

Na het toevoegen van wat code aan het bronbestand TaxonomieFeature.cs en een kleine instelling aan de Taxonomie Webpart is het mogelijk om ook documenten een tag mee te geven en de Taxonomiewebpart hierop te laten filteren.

Sunday, May 6, 2007

LinkTitle field aanpassen van een Custom List

Bij een Custom List wordt standaard een kolom "Title" & "Attachement" aangemaakt. Om de naam title te veranderen, hoeft men gewoon binnen het <*Fields*> attribuut het <*Field*> attribuut aan te maken van Title, LinkTitleNoMenu & LinkTitle en deze displaynames te veranderen in een nieuwe naam (Men kan deze attributen aanpassen in de Schema.xml van de ListFeature). Op deze manier worden de Fields, die beschreven worden in de FEATURE directory, overschreven met een nieuwe waarde.

Thursday, May 3, 2007

UserProfile property updaten

Ik ben erin geslaagd een stuk code te schrijven die ervoor zorgt dat alle items, binnen een CheckList van een property, worden opgehaald en bewaard worden in een DropDownList. Via deze List heeft men de mogelijkheid een keuze te maken uit de beschikbare items van de CheckList. Na het selecteren van een item zal de property van de User Profile automatisch bijgewerkt worden. De huidige instelling kan men bovenaan de pagina terugvinden.