Friday, December 7, 2007

Shortcut to stsadm.exe

Also tired of manually navigating to the bin folder to execute a stsadm operation? Dan Lewis shows us a nice and simple way to do it automatically.

As you maybe already know... There are 184 SharePoint operations that can be performed with STSADM. Ian Morrish created a SharePoint list for all the commands and options that group them by functional area: STSADM commands.

Google Maps and MOSS integration

It is possible to create a Google Map Webpart within MOSS. It looks very simple... you just have to use a Content Editor Webpart and some lines of HTML code. Someone who has already tested it?

Take a look at the HowTo: Create Google Map WebPart

Thursday, November 29, 2007

How to: Create Search Scopes in MOSS 2007 Enterprise Search

Patrick Tisseghem made some nice video tutorials about Enterprise Search. Watch and learn how to create and expose search scopes in Microsoft Office SharePoint Server 2007 Enterprise Search.



If you're looking for some more video tutorials about enterprise search... surf to Msn and use the search engine.

Wednesday, November 21, 2007

Coding against the SharePoint Object Model (Some useful code snippets)

I thought it might be handy to write down some useful code snippets. These snippets are often used when you code against the SharePoint Object Model...

Delete all items in a document library:
----------------------------------------------------

using (SPSite sitecollection = new SPSite("http://..."))
{
using (SPWeb web = sitecollection.OpenWeb())
{
SPList myList = web.Lists["Document library"];
int amountOfFiles = myList.Items.Count;

for (int i = amountOfFiles - 1; i >= 0; i--)
{
//Delete Document Library item
web.AllowUnsafeUpdates = true;
myList.Items.Delete(i);
web.AllowUnsafeUpdates = false;
}
}
}

Uploading a file to a document library:
----------------------------------------------------

using (SPSite sitecollection = new SPSite("http://..."))
{
using (SPWeb web = sitecollection.OpenWeb())
{
SPFolder docFolder = web.GetFolder("document library");

FileStream fStream = File.OpenRead(urlOfDocumentOnServer);
Byte[] ContentsContents = new byte[Convert.ToInt32(fStream.Length)];
fStream.Read(Contents, 0, Convert.ToInt32(fStream.Length)); }

web.AllowUnsafeUpdates = true;
docFolder.Files.Add(filename, Contents);
web.AllowUnsafeUpdates = false;
}
}

Add a Contenttype to a ListItem:
---------------------------------------------

using (SPSite sitecollection = new SPSite("http://..."))
{
using (SPWeb web = sitecollection.OpenWeb())
{
SPList list = web.Lists["document library"];

SPContentTypeCollection ctcollection = list.ContentTypes;
SPContentType contenttype = ctcollection[itemcontenttype];

SPListItem item = list.Items[0];
item["ContentTypeId"] = contenttype.Id;

web.AllowUnsafeUpdates = true;
item.Update();
web.AllowUnsafeUpdates = false;
}
}

Add an Eventhandler on a SharePoint list:
--------------------------------------------------
SPList list = web.Lists["List"];
SPEventReceiverType type = SPEventReceiverType.ItemAdded;
string assembly = "";
string className = "";
list.EventReceivers.Add(type, assembly, className);

list.Update();

Delete an EventHandler from a SharePoint list:
-------------------------------------------------
Guid guid = ...;

list.EventReceivers[guid].Delete();

Start a workflow on an item
-------------------------------------
Guid wfBaseId = new Guid("{6BE0ED92-BB12-4F8F-9687-E12DC927E4AD}");
SPSite site = ...;
SPWeb web = site.OpenWeb();
SPList list = web.Lists["listname"];
SPListItem item = list.Items[0];
SPWorkflowAssociation associationTemplate= list.WorkflowAssociations.GetAssociationByBaseID(wfBaseId);
site.WorkflowManager.StartWorkflow(item, associationTemplate, "");

Note: the workflow base ID can be found in the workflow.xml in the feature folder
Source: Steven Van de Craen

-------------------------------------------------

Other SharePoint Code Snippets...
Checking if a workflow is running on an item/SPWorkflowState
Detect an item published in ItemUpdating eventReceiver
How (not) to complete workflow tasks using code in WSS3
Modifying SharePoint Workflow Task Programmatically Problem
How to create MySite Programmatically
Add users of an AD Group to the SharePoint Site

Monday, November 19, 2007

Using Custom XML islands together with Content Controls

To realize a link between Word 2007 Content Controls and Custom XML you can either do it with a tool such as Word 2007 content control toolkit or do it programmatically with XPath and add a dataBinding node for each Structured Document Tag(SDT) like this example:

w:dataBinding w:prefixMappings="" w:xpath="/myXml/dataRow/dataField" w:storeItemID="{CFD5333D-3117-4F96-8B72-CC1D814E0755}"

If you want to fill the custom xml dynamically - try the following:

using (Package p = Package.Open(generatedPath, FileMode.Open, FileAccess.ReadWrite))
{
// Now we can get the path to our custom XML in the template
Uri partUri = new Uri("/customXml/item1.xml", UriKind.Relative);
PackagePart part = p.GetPart(partUri);
// Overwrite existing part, therefore open with FileMode.Create
using (Stream s = part.GetStream(FileMode.Create))
{
// Now use the XmlSerialize to write back the content
XmlSerializer serializer = new XmlSerializer(typeof(Employee));
serializer.Serialize(s, employee);
}

// Flush memory-content back to the package
p.Flush();

Just navigate to MzCool if you need an explanation of the whole context...

Thursday, November 15, 2007

Xperimenting with OpenXML

When you start experimenting with WordProcessingML (or Open XML in general), you definitely must take a look at the following tools:

Word 2007 Content Control Toolkit
This light-weight tool can open any word open xml
document and lists all content controls and available XML parts. It also enables mapping between content controls and custom XML. This all by using the System.IO.Packaging library available in .NET 3.0.

Package Explorer
This tool let you look inside a Open XML package, edit XML parts,...
[Thx to Maarten, who recommended me to made use of these]

If you need a lot of information about OpenXML - Download this great book (Open XML: The Markup explained)

Thursday, November 8, 2007

Silverlight MSDN event

On Halloween evening, I attended a MSDN event in Utopolis Mechelen dedicated to Silverlight. If you're curious about the content of the event - Take a look at the presentation slide decks and demo's.

Thursday, October 25, 2007

SharePoint vs Developer

Just another day trying to learn SharePoint... Developing in SharePoint is a battle! Some of those days the errors: slap you in the face, kick your ass and finally they knock you out! Look familiar? Remember those days? You are absolutely not alone... read this funny story about a frustrated man, called Sean.

A SharePoint song related to the story:

Tuesday, October 23, 2007

Style the AutoCompleteExtender

In my previous post I wrote about building a custom field type, who extends the AutoCompleteExtender. Now... It all looks pretty, but if you take a look at the size of the textbox and the font of the dropdownlistitems you can see that we need to pimp our AutoCompleteExtender.

Here's the trick:
  • Link the textbox with the 'ms-long' class. This CSS class provides the style for the list item metadata fields within SharePoint.
  • Make a Div element that refers to the 'ms-long' class.

First we need to style the textbox:


Then style the AutoCompleteExtender dropdownlist:

  • Make a Div element just above the AutoCompleteExtenderTag:

  • Set the AutoCompleteExtender property [CompletionListElementID]:

Result:




Monday, October 22, 2007

Use ASP.NET AJAX framework with WSS 3.0

I had to make a custom field type, which uses the AutoComplete from the Ajax Toolkit.

"AutoComplete is an ASP.NET AJAX extender that can be attached to any TextBox control, and will associate that control with a popup panel to display words that begin with the prefix typed into the textbox. "

First I was afraid to begin with this task because of the rumors about the ASP.NET AJAX integration with Office SharePoint Server 2007 and Windows SharePoint Services 3.0 . After all, it turned out better than I expected.

What do we want to achieve:



I think it's unnecessary to write down an how-to. I made use of the following URL's to accomplish it.


The code beneath shows how to define the ascx control [Defines a SharePoint:RenderingTemplate element whichs tells SharePoint how to render your control].



Missing attributes in the AutoCompleteExtender tag:
ServicePath=http://moss/_layouts/WebService/WebService.asmx
ServiceMethod="GetEmployees" MinimumPrefixLength="1"

Chinese? Watch this video: How do I use the ASP.NET AJAX AutoComplete control?

So that's it... Questions / Comments? Feel free!

Saturday, October 20, 2007

How to remove a bad webpart from a page?

Previously, I added a poorly written webpart to my default.aspx page. The consequence of this action is that you aren't able anymore to load the page. In this case, the only thing you have to do is to remove the webpart. Removing the webpart in the webpart gallery doesn't solve this.

Resolution:
Append ?Contents=1 to the webpart page's URL to display the Webpart Maintenance Page. On that page you can delete the malefactor.

Example: http://moss/default.aspx?contents=1

Wednesday, October 17, 2007

SharePoint 2007 Development: Interactive Training Course DVD

SharePoint 2007 Development interactive course on DVD-ROM is intended for Developers, Administrators, Designers, Planers, Web Masters, and Managers.The training DVD provides a unique method of learning that allows you to see the steps, hear the explanations, and perform the tasks. Instructor demonstrations and hands on labs ensure that you fully understand all subject matters.

This DVD looks great!...

How to make a basic workflow?

For those who have never build a basic workflow, take a look at the DiceGame. This simple workflow just edit the title of the item, on which the workflow has started. The new title contains a number from 1 to 6. In the more complex DiceGame you will learn how to create a task if the number of the title is higher than three.

ow... I almost forget to say that there's also a next tutorial (making an initiation form on the DiceGame)

Have fun!

Tuesday, October 16, 2007

Custom Timer Job

I have been working on a Custom Timer Job (CTJ) to fix a little bug within our brand new intern portal. I have several tips for those who are making or willing to make one:

If you don't know how to make a CTJ? Take a look at: Example of a Custom Timer Job

How to debug a Custom Timer Job?

After installing and activating the CTJ - Feature
(Make sure that the code in the execute() method runs every minute. It takes less time to debug)

- Set a breakpoint somewhere in your code.
- Click 'Debug' in the toolbar (Visual Studio 2005)
- Click 'Attach to process'
- Select 'OWSTimer.exe'
- Everytime the code is being executed, the debugger starts working.
- Now you can enjoy 'debugging'


How to access the web.config within a Custom Timer Job?

Configuration config =
WebConfigurationManager.OpenWebConfiguration("/", "Sharepoint - 80");
string value = config.AppSettings.Settings["keyName"].value;

Hope , these tips save some developer time :)

Monday, October 15, 2007

LDAP attributes

If you want to perform queries against the Active Directory with the DirectorySearcher class, it might be handy to take a look at the several LDAP Attributes . You can use these attributes to build the query.

Getting accountnames from UserProfile Database

It was hard to find a piece of code to retrieve the Accountnames from users who are placed in the userprofile database. I found an example in the MOSS SDK:

using (SPSite site = new SPSite(http://servername/))
{
ServerContext context = ServerContext.GetContext(site);
UserProfileManager profileManager = new UserProfileManager(context);
foreach (UserProfile profile in profileManager)
{
Console.WriteLine(profile[PropertyConstants.AccountName]);
}
}

Thursday, September 20, 2007

Royal Straight Flush

Vandaag mijn eerste Royal Straight Flush gemaakt bij het spelen van Texas Holdem No Limit. Voor de niet kenners onder ons [Royal Straight Flush = hoogst mogelijke combinatie die er kan gevormd worden]. De kans op dergelijke combinatie bedraagt 1 op 649.740 oftewel
0 .000154%.

Vele mensen kunnen alleen maar dromen om OOIT deze combinatie te maken. Nu vraag je u waarschijnlijk af... Waarom schrijft hij dit neer op een SharePoint blog? Awel.. Ziehier de screenshot:



[Royal Straight Flush gemaakt 2 min na het openen van mijn SharePoint Blog :) ]

Sunday, September 16, 2007

Junior Software Engineer (.NET)

Lang geleden dat ik hier nog eens een krabbel heb gezet. In de toekomst zullen hier nog wel vele SharePoint-gerelateerde berichten komen te staan. Momenteel ben ik een .NET opleiding aan het volgen bij Dolmen (het bedrijf waar ik stage heb gelopen). Binnen enkele maanden heb ik de eer om deel te nemen aan het befaamde SharePoint Team van 'laat ons zeggen': gans Belgiƫ! Van zodra ik gestart ben met 'SharePointen' zal ik hier en daar wel eens topics selecteren en een woordje over schrijven (eventuele problemen, oplossingen en wie weet uitvindingen lol).

Tot schrijfs,
Sven

Wednesday, June 6, 2007

SharePoint List Extension

Na de Macaw extension in grote lijnen te proberen begrijpen, heb ik een poging gedaan om het geheel te laten werken. Het enige dat maar niet wil werken, is het toepassen van een query op de SharePoint List. Zoals te zien in onderstaande screenshots krijg ik de volgende error: There is an error in the query. Object reference not set to an instance of an object.




Op Teun.ToString() website zijn er vele andere mensen die hiermee problemen hebben. Als iemand een oplossing weet, laat het me weten! ;)



Pass parameters to InfoPath Form

In some cases it might be handy to pass some parameters to the InfoPath form. Example: It would be nice if users don't have to complete their account data (Name, Surname, E-mailadress,...). In this case you have a few options:

  1. Access SharePoint webservices to retreive the data (UserProfile.asmx)
  2. Write some code behind the InfoPath Form (as exposed below)
  3. By using Contact Selector ActiveX control

InfoPath codebehind method:

In the Loading event of the form template, we have to catch the parameters with the TryGetValue method.

public void FormEvents_Loading(object sender, LoadingEventArgs e)
{
string Naam = string.Empty;
try
{
e.InputParameters.TryGetValue("naampje", out Naam);
}
catch (Exception ex)
{
Naam = ex.Message.ToString();
}

finally
{
MainDataSource.CreateNavigator().SelectSingleNode
("/my:myFields/my:voornaam", NamespaceManager).SetValue(Naam);
}
}


Afterwards, you can pass a parameter through the URL. Add a querystring at the back of the URL eg. &naampje=kieseennaam

Monday, June 4, 2007

Calculated Columns (Part 2)

Het is wel degelijk mogelijk om een calculated column als site column te definiƫren. Mijn fout zat in het verwijzen naar het StartDate field. Eerst moet men een field StartDate (site column met als type DateTime) aanmaken en daarna hiernaar verwijzen (fieldref) in de calculated column feature.

De oplossing vindt je op Jopx terug.

Sunday, June 3, 2007

Thank message after a submitted InfoPath Form

It's possible to let appear a 'Thank you' message to the person who submitted the InfoPath Form. You can do this by working with Views in InfoPath. On the first view (the main form) we place a button with the following rules: Submit using a dataconnection & Switch new view. With these rules we tell InfoPath to store the new form in a form library and after that it must switch to another view (the second form). The next thing we need to do is creating the message on the new view. That's all!

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.

Monday, April 30, 2007

Custom List Definition with Business Data Column

Momenteel aan het uitzoeken of het mogelijk is om een Business Data Column via een feature toe te voegen aan een List. De business Data Field is reeds toegevoegd maar is nog niet werkend gekregen. This Post is under construction...

Friday, April 27, 2007

Taken weergeven in CQWebPart

Ik heb uitgezocht of het mogelijk is om taken binnen een CQWebPart te ordenen volgens de site waarvan ze afkomstig zijn & of het mogelijk is enkel de taken te tonen die toegewezen zijn aan de ingelogde gebruiker. Dit alles is mogelijk gemaakt binnen MOSS. De beschrijving van de configuratie is geschreven.

Thursday, April 26, 2007

MediaPlayer WebPart in MOSS 2007

Op aanvraag van Marijn heb ik een webpart gevonden die het mogelijk maakt om filmpjes af te spelen op een SharePoint site. Ik heb deze webpart getest en deze lijkt niet naar behoren te werken binnen een VPC. Er kan enkel een filmpje lokaal worden afgespeeld. Filmpjes, die upgeload worden naar de SharePoint omgeving, kunnen blijkbaar niet afgespeeld worden (binnen VPC).
Download hier de WebPart.

Wednesday, April 25, 2007

Business Data Catalog (BDC) Completed

Na lange tijd zwoegen is het gelukt om een application definition file, die het metadata model beschrijft voor het LOB systeem, te schrijven. De BDC zal zijn data via een webservice ophalen en tonen in de BDC List Webpart.
Resultaat:


Monday, April 23, 2007

Business Data Catalog (BDC) Deel 2

De Webservice heb ik ondertussen al werkende gekregen. Deze webservice gaat data uit een database halen. Nu is het de bedoeling dat ik een application definition file schrijf (XML) die van deze webservice gebruik maakt.

Thursday, April 19, 2007

Business Data Catalog (BDC)

Ik heb de eer om me te verdiepen in de volgens sommige 'krachtigste feature in MOSS 2007' nl Business Data Catalog. De BDC is een feature van MOSS die je toelaat om te connecteren met de andere business data systemen om daarna deze data uit de systemen te presenteren in 4 verschillende presentatiemethoden binnen MOSS. Men kan deze data benaderen via ADO.NET ofwel via Webservices.

Mijn opdracht bestaat uit het schrijven van een BDC XML application file die de data ophaald uit de AdventureWorks Database via een webservice tussenlaag.

FBA users & MySites

Nadat FBA users de mogelijkheid hebben gekregen om te kunnen inloggen, zou het ook in sommige gevallen handig zijn om ze van een MySite te laten gebruik maken. Dit was een helse klus om het voor elkaar te krijgen. Maar zoals altijd: De aanhouder wint.

Een MySite voor bv. Manager1 (= FBA user):

Wednesday, April 18, 2007

Form Based Authentication (FBA)

Een situatie waarin het nuttig is FBA users aan te maken:
Het Nieuwsblad (bedrijf) die vele freelancers ter beschikking heeft. Het zou handig zijn dat deze freelancers gebruik zouden kunnen maken van de SharePoint omgeving zonder deze te hoeven toegevoegen aan de Active Directory (Deze werken toch meestal voor een korte periode voor het bedrijf). Daarom is het de bedoeling dat we deze users in een aparte Membership database bewaren.

Done:

  • Een FBA user & role store aangemaakt (Database creatie)

  • SharePoint Setup gedaan

  • SharePoint Custom Forms Authentication Feature geĆÆnstalleerd & geĆ«xperimenteerd




Monday, April 16, 2007

Exporteren van content

Om het achterliggend idee van translatable columns beter te begrijpen heb ik gebruik gemaakt van het STSADM command om de content van de site te exporteren naar een .CAB bestand. Na het exporteren merkte ik op dat er verschillende .DAT en .XML bestanden werden gecreƫrd.

Mijn eerste gedacht was dat er een aparte XML file ging aangemaakt worden voor een beschrijving van de translatable columns. Dit blijkt toch niet zo te zijn. Het enige wat er veranderd is, zijn een paar records die toegevoegd werden aan de Manifest.xml. Deze records komen overeen met de aangeduide fields binnen de settings van de translatable columns. Wat er verder nog aangepast of toegevoegd wordt, blijft voor mij nog een raadsel.

Wednesday, March 28, 2007

WCM - Experimenteren met Variations

Done:
  • Server Language packs geĆÆnstalleerd (Nederlands & Frans)
  • Variation labels aangemaakt (Source label = English)
  • Beschrijving van de voordelen van het automatisch aanmaken van pagina's in een variation
  • Variation Label menu werkt
  • Beschrijving gegeven van translatable columns
  • Translation management library (& bijhorende workflow) uitgedokterd
  • Aanpassing gemaakt aan de VariationsRootLanding: redirecten werkt!

Het werkje is geschreven.

Monday, March 26, 2007

Folder aanmaken in Discussion Board

Dankzij Ibbe's geniale idee om een contenttype toe te voegen aan de discussion list, is het gelukt om een folder aan te maken.

Het lab is geschreven!

Friday, March 23, 2007

Een topic maken in discussion board via code

Om een discussion board te kunnen manipuleren met code heb ik eerst al eens geprobeerd een topic & reply aan te maken. Dit is al mooi gelukt!

Discussion Board

Momenteel ben ik aan't uitpluizen hoe men folders kan aanmaken binnen een discussion board. Elk topic op zich is een folder, maar de opdracht bestaat erin een folder te maken boven zo'n folder.

Folder > topics > topic > items

De bedoeling van dit is om ervoor te zorgen dat men gerelateerde topics onder een zelfde folder kan brengen.

Mogelijke oplossing !new tag

Aangezien de ifNew() methode in de ItemStyle.xsl niet naar behoren leek te werken, heb ik een manier gevonden om het probleem te omzeilen. In plaats van de @create te laten meegeven als parameter en te checken hoeveel dagen deze al bestaat, heb ik zelf een script geschreven in javascript die zelf de check uitvoert hoelang een gecreeƫrd item al bestaat.

Het script is gebaseerd op het volgende:
if ((oudereDag + 7) > huidigeDatum) Show
Hopelijk werkt het!

Thursday, March 22, 2007

Customizing the Content Query Web Part XSL

Ik ben me momenteel aan't verdiepen in het aanpassen van een content query webpart mbv XSL. De bedoeling hiervan is om meer verstand te krijgen van XSL om op zijn beurt meer verstand te krijgen achter het new! icon probleem.

hier alvast een intressant artikel over dit onderwerp: msdn whitepaper

Wednesday, March 21, 2007

New! Tag


Je kent ze wel die stoere groene icoontjes naast een nieuwe post binnen een Task List (en anderen). EĆ©n van mijn opdrachten is om zo'n icoontje te laten verschijnen in een Content Query Webpart en deze te laten vervallen na 7 dagen. Standaard staat zo'n New! icoon 3 dagen naast een "nieuwe" post.



Update:

De Content Query en List zijn aangemaakt en de verbinding ertussen is gelegd. De icoontjes zijn er ook al aan toegevoegd.

Resultaat:



Nu komt het moeilijkste stuk: Er voor zorgen dat deze New! icoontjes pas vervallen na 7 dagen ipv na 3 dagen.

Momenteel naar op zoek...

Friday, March 16, 2007

IP forms vs Aspx forms

Al bijna een heel week ben ik aan't zwoegen voor een association form werkende te krijgen. Ik kom verschillende problemen tegen en probeer ze telkens te omzeilen door andere middelen te gebruiken maar telkens kom ik op een punt waar ik weer niet verder geraak. De Initiation form en de Task form heeft Ibbe ondertussen al werkende gekregen. ( Initiation Form & Task Form)

Om mijn frustratie wat te koelen heb ik een inleiding geschreven in het gebruik van forms & workflows.

Tuesday, March 13, 2007

Workflow & ASPX Forms (Vervolg)

Stand van zaken:
  • Aspx controls zijn aangemaakt
  • Workflow template is gedefinieerd

Indien men een workflow wil koppelen aan een document library bv. Shared Documents, krijgt men al een aspx form (Association Form) te zien. De aspx form wordt opgeroepen doordat de WSS de 'associationURL' nagaat.

De Association Form bevat een submit button. Nadat men op de submit knop gedrukt heeft zou hij in feite de associatie moeten maken met de library. Hierover later meer...

Monday, March 12, 2007

Workflow & ASPX Forms

Onze eerste uitdagende opdracht bestaat erin een workflow te creeƫren op basis van aspx forms ipv IP forms. Het is niet zo evident aangezien een simpele workflow met IPforms of zonder forms (=Codegebaseerd) nog niet lijkt te werken. We zijn dus momenteel eerst bezig met het klaarspelen van een simpel werkende workflow...

Update: Het is ondertussen gelukt om een workflow te bouwen.

Wednesday, March 7, 2007

Site Template vs Site Definition

Ik vroeg me af wat juist het verschil was tussen deze twee termen. Het zijn blijkbaar twee door elkaar gehaalde termen. Hoe het juist allemaal zit vindt u op deze blog terug.

Cursus Sharepoint 2007

In de eerste vijf dagen van de stage is het de bedoeling dat ik en Ibbe (cfr. Ibbe verlooy bij de links) een 3-daagse cursus volgen. Aangezien onze stagementor (Joris Poelmans) ons wat spaart, heeft hij ons hiervoor 5 dagen opgelegd. Deze cursus handeldt over oa.
  • Installeren en configureren van een WSS v3.0 applicatie
  • Introductie in webparts: gebruik van ASP.NET controls, Communicatie tussen webparts, gebruik van het Sharepoint Object Model
  • Vertrouwd geraken met de nieuwe MOSS 2007 interface
  • Content-types
  • Events
  • ...