Dynamische Portals met de Portal Starter Kit Eenvoudig en snel Portal applicaties bouwen
Door Michiel van Otegem
12 oktober 2004
Starter Kits zijn kant en klare ASP.NET applicaties die Microsoft gratis
beschikbaar stelt. Ze helpen je om snel applicaties te maken met veel voorkomende
functionaliteit, en geven inzicht in hoe je bepaalde problemen op kunt lossen.
Als je een Starter Kit download zit alle broncode er namelijk bij, zodat je kunt
kijken hoe alles werkt. Uiteraard kun je de code naar wens aanpassen en uitbreiden.
Met de Portal Starter Kit kun je Portal applicaties maken voor het internet of
intranet.
Een Portal applicatie is eigenlijk een soort centrale vergaarbak van functionaliteiten.
Een intranet met nieuws, telefoonnummers, links, documenten, en dergelijke, is
een mooi voorbeeld van een typische portal. Ook op het internet zijn er allerlei
portals, zoals bijvoorbeeld MSN.com. Verschillende portals hebben over het
algemeen veel met elkaar gemeen, hoewel ze niet altijd dezelfde functionaliteit
bieden. Ze hebben wel bijna altijd dezelfde stuctuur. De Portal Starter Kit biedt
een standaard structuur met een aantal basisfunctionaliteiten die geïmplementeerd
zijn als aparte modules. Je kunt naar harte lust bepalen welke modules op een
pagina zichtbaar zijn, en je kunt dezelfde module zelfs meerdere malen in een
pagina gebruiken. Vervolgens kun je op de pagina de modules zonodig weer verder
aanpassen.
De Portal Starter Kit is grotendeels gebaseerd op een van de belangrijkste en
meest gebruikte voorbeeldapplicaties uit de Beta fase van ASP.NET: de IBuySpy
Portal. Hoewel de Portal Starter Kit qua opmaak enigszins uitgekleed is, is aan
de inhoud van de voorbeeld site nog wel te merken dat er veel uit de IBuySpy
Portal komt. De Portal Starter Kit is echter wat handzamer in gebruik, zeker als
je nog niet zo bekend bent met ASP.NET en de Starter Kits.
Downloaden en installeren
Je kunt de Portal Starter Kit downloaden via http://www.asp.net/StarterKits/DownloadPortal.aspx.
Je kunt hierbij kiezen uit twee verschillende versies, die beide in Visual Basic,
C#, en J# beschikbaar zijn. Je kunt kiezen uit een SDK versie, en een Visual Studio
versie. Deze versies zijn nagenoeg identiek, maar de Visual Studio versie bevat
ook Solution bestanden die je kunt openen in Visual Studio, zodat je onmiddellijk
aan de slag kunt met de code. Maak je geen gebruik van Visual Studio, dan heb je
aan de SDK versie genoeg. De J# versies werkt overigens alleen met versie 1.1 van
het .NET Framework, en bevat momenteel ook meer bugs. Wil je de Portal Starter Kit
in productie gebruiken, dan kun je totdat versie 1.0 voor J# beschikbaar is beter
gebruik maken van de Visual Basic of C# versie.
Een gedeelte van de portal is ook geschikt voor weergave op mobiele apparaten
zoals mobiele telefoons en PDAs. Als je met versie 1.1 van het .NET Framework
werkt, hoef je daarvoor niets extras te doen. Werk je nog met versie 1.0, dan
heb je ook Microsoft Mobile Internet Toolkit nodig, die je kunt downloaden via
dezelfde pagina als de Portal Starter Kit (circa 4 MB). Verder heb je ook nog een
SQL Server 2000 of Microsoft Desktop Engine (MSDE) database nodig. Wil je gebruik
maken van MSDE, let dan goed op de versie die je hebt. Alles voor de Service Pack
3a versie is namelijk vatbaar voor het Blaster Virus. Wil je zeker zijn dat je de
juiste versie heb, download dan ook MSDE van de Portal Starter Kit download pagina
(circa 70 MB).
De download van de Portal Starter Kit is minder dan 2 MB, dus loont het niet eens
de moeite om het installatie bestand ergens op te slaan. Dit ook gezien het feit
dat er nog wel eens bug fixes zijn, en het dus slim is altijd de laatste versie
op te halen.
De installatie kopieert de portal inclusief broncode en documentatie naar de harde
schijf. Als je wilt, kun je meteen een virtual directory aan laten maken in
Internet Information Server. Met de Visual Studio versie is dat wel zo handig,
omdat je dan zeker bent dat het Solution bestand meteen naar de juiste plek wijst.
De database kun je zowel lokaal als op een aparte server installeren. Als je
lokaal kiest, dan maakt de installatie de database voor je aan. Voor een aparte
server zijn er enkele SQL scripts die je uit moet voeren, en dien je de database
connectionstring ook aan te passen. Die is te vinden in <appSettings> in web.config
van de portal applicatie. Instructies hiervoor kun je vinden op de documentatiepagina
van de Portal Starter Kit die automatisch geopend wordt na de installatie.

Afbeelding 1, Portal startpagina met navigatie tabs
De portal aanpassen
De geïnstalleerde portal is 100% functioneel, je kunt er dus meteen mee aan de
slag. De kans is echter heel groot dat de indeling van de portal niet zo is als
je het uiteindelijk voor ogen hebt, en ook de inhoud zal je naar je eigen wensen
willen aanpassen. Om dit te kunnen doen moet je inloggen via het logingedeelte
in de linker balk van de Home tab. Een kleine onvolkomenheid is dat je niet weet
wat de gebruikersnaam en het wachtwoord van de beheerder zijn. Dit staat namelijk
niet in de documentatie van de Portal Starter Kit. Uit de Portal_Users tabel in
de database kun je wel de gebruikersnaam achterhalen, maar in de nieuwste versie
van de Portal Starter Kit zijn de wachtwoorden versleuteld. Het is dus handig om
te weten dat in dit geval het wachtwoord gelijk is aan de gebruikersnaam. Dat
wachtwoord moet je natuurlijk meteen veranderen, of je moet een nieuwe gebruiker
maken die je administratie rechten geeft, waarna je de guest gebruiker kunt verwijderen.
Hoe je dat doet wordt later behandeld.
Wanneer je ingelogd bent verschijnt de tab Admin. Via die tab kun je wijzigingen
maken aan de portal. De simpelste wijziging kun je doen via Site Settings,
waarmee je de titel van de portal kunt veranderen. Jammer genoeg is dat alleen
de titel die verschijnt bovenin de pagina, niet de HTML titel die verschijnt op
de applicatiebalk van Internet Explorer. Wil je die laatste veranderen, dan moet
je de HTML van DesktopDefault.aspx aanpassen. Onder Site Settings zie je de sectie
Tabs waarmee je aan kunt passen welke tabs zichtbaar zijn, en welke modules een
tab bevat, zoals te zien in afbeelding 2. Met de pijltjes naast de drop-down list
kun je de volgorde van de tabs instellen. Selecteer je een bepaalde tab, dan kun
je deze wijzigen met het potlood icoon of verwijderen met het kruisje. Een nieuwe
tab toevoegen doe je door op Add New Tab te klikken. Als je een tab toevoegt of
wijzigt, krijg je een nieuwe pagina te zien, waarin je in kunt stellen hoe de tab
heet, voor welke gebruikersgroepen de tab beschikbaar is, of de tab beschikbaar is
voor mobiele gebruikers, en welke modules op een tab zichtbaar zijn (zie afbeelding 3).
Ieder tab is verdeeld in drie delen: een linker balk (Left Mini Pane), een rechter
balk (Right Mini Pane), en het middelste gedeelte voor de content (Content Pane).
Als je een module toevoegt, kun je de module met de pijltjes naar rechts en links
verplaatsen tussen de verschillende delen. Een module kun je ook weer verder wijzigen.
Zo kun je de titel aanpassen, aangeven hoe lang de module eventueel in de ASP.NET
Cache bewaard wordt, aangeven welke gebruikersgroepen de content van de module mogen
wijzigen, en of de module zichtbaar moet zijn voor mobiele gebruikers. Gebruikers
die de rechten hebben om een bepaalde module op een bepaalde tab te wijzijgen zien
bij die module icoontjes en links voor het aanpassen van de module. Het type module
bepaalt hoe dit er precies uit ziet. Bij de Links module kun je bijvoorbeeld links
toevoegen en wijzigen, tewijl je bij de Html Document module een scherm krijgt
waarmee je de HTML content van de module kunt wijzigen.

Afbeelding 2, Tabs beheren

Afbeelding 3, Modules op tabs beheren
De portal uitbreiden
Hoewel er al allerlei handige modules zijn, kun je de portal eenvoudig uitbreiden
met je eigen modules. Modules zijn geïmplementeerd als user controls, maar zijn
afgeleid van .StarterKit.Portal.PortalModuleControl. Vervolgens kun je werken
alsof je een gewone user control aan het maken bent. Wil je ook nog gebruik maken
van de standaard titel die de modules in de portal bevatten, dan kun je gebruik
maken van de portal:title control. Hiervoor dien je echter wel een referentie
maken naar DesktopModuleTitle.ascx. Je kunt dit zien in codevoorbeeld 1. Zoals
je kunt zien in codevoorbeeld 1, heeft de portal:title control geen inhoud, omdat
de titel ingesteld wordt als je de module invoegt in een pagina. De portal bevat
de functionaliteit al om de titel in te voegen en te wijzigen, dus daar hoef je
verder niets aan te doen. De attributen EditText en EditUrl zijn optioneel, en
laat aan de gebruikers met wijzigrechten op de betreffende module een link met
de titel Wijzigen zien. Door op de link te klikken krijgt de gebruiker de pagina
te zien waarmee de module gewijzigd kan worden. Die pagina is een gewone ASP.NET
pagina, die je uiteraard nog wel moet maken. In principe hoef je daarin niets
speciaals te doen, maar het is verstandig om in de Page_Load of Page_Init methode
te controleren of de gebruiker wel toegang heeft tot de edit pagina van de gekozen
module. Dit doe je met de code in codevoorbeeld 2.
<%@ Control Inherits="ASPNET.StarterKit.Portal.PortalModuleControl" %>
<%@ Register TagPrefix="Portal" TagName="Title" Src="~/DesktopModuleTitle.ascx" %>
<portal:title runat="server" EditText="Wijzigen"
EditUrl="PortalModules/MijnModule/EditMijnModule.aspx"/>
Codevoorbeeld 1, De basis voor een module control
C#:
int moduleId = Int32.Parse(Request.Params["Mid"]);
if (!PortalSecurity.HasEditPermissions(moduleId)) {
Response.Redirect("~/Admin/EditAccessDenied.aspx");
}
VB:
Dim moduleId As Integer = Cint(Request.Params("Mid")
If Not PortalSecurity.HasEditPermissions(moduleId) Then
Response.Redirect("~/Admin/EditAccessDenied.aspx")
End If
Codevoorbeeld 2, Toegang tot de edit pagina controleren
Beveiliging
Onderaan de Admin tab, onder het kopje Manage Users, kun je gebruikers toevoegen,
wijzigen en verwijderen. Wil je een gebruiker wijzigen of verwijderen, dan
selecteer je de gebruiker in de drop-down list, en kies je vervolgens het
bijbehorende icoon. Een gebruiker toevoegen doe je door op de Add New User link
te klikken. Je krijgt dan een scherm te zien waarin je het email adres van de
gebruiker op moet geven en een wachtwoord. Het email adres dient in principe als
loginnaam. Vul je geen email adres in, dan krijg je een lelijke ASP.NET
foutmelding te zien. Die foutmelding vindt echter plaats na het toevoegen van de
gebruiker, dus die bestaat dan toch. In hetzelfde scherm kun je de gebruiker ook
toevoegen en verwijderen uit bepaalde gebruikersgroepen. Dit kan echter ook via
Security Roles op de Admin tab. Dat is wel een beetje vreemd, omdat je eerst een
Role moet selecteren en klikken op het potlood icoon, waarna je op Change Role
Members moet klikken.
De Portal Starter Kit ondersteunt ook Windows Authentication, wat handig is voor
een intranet. Je kunt hiernaar overstappen door
<authentication mode="Forms">
te veranderen in
<authentication mode="Windows">
Dit is al voor je voorbereid, zodat je alleen commentaar tags moet verplaatsen.
Voordat je dit doet, moet je echter wel zorgen dat op zn minst één domein
gebruiker tot de Admins groep behoort. Je kunt dit doen door een gebruiker toe
te voegen, en dan in plaats van het email adres en domein gebruiker op te geven,
als volgt: DOMEINNAAM\gebruikersnaam. Je kunt daarbij elk willekeurig wachtwoord
gebruiken, omdat daar later toch geen gebruik van wordt gemaakt. Zoals gezegd
zal dit een foutmelding opleveren, maar je zult zien dat de gebruiker toch toegevoegd
is. Vergeet de gebruiker vervolgens niet toe te voegen aan de Admins groep.
Als je eenmaal overgestapt bent op Windows Authentication worden gebruikers automatisch
geïdentificeerd, en zal de aangemaakte gebruiker toegang hebben tot de Admin tab.
Je kunt nu nieuwe gebruikers toekennen aan rollen zonder dat je deze eerst hoeft
aan te maken. Je kunt gewoon naar Security Roles gaan en gebruikers toekennen aan
rollen. Naast de drop-down list verschijnt er nu ook een TextBox waarin je een
gebruiker uit het domein kunt toevoegen. Die wordt zonodig aan de Portal_Users
toegevoegd.
Verder
Er is zeker nog meer te ontdekken in de Portal Starter Kit dan beschreven in dit
artikel. Gewapend met dit artikel, de documentatie, en de broncode, is dat echter
geen sprong in het diepe. Het is zelfs betrekkelijk eenvoudig om de Portal
Starter Kit naar wens aan te passen en uit te breiden. Uiteraard kun je ook de
opmaak veranderen door de ASP.NET paginas en controls te wijzigen, en de stylesheet
aan te passen.
Dit artikel is eerder verschenen in .NET Magazine.
|