ASPNL logo (1 kb)
zaterdag 17 mei 2008




Microsoft MVP

.NET Codewise Community
<< vorige | overzicht | volgende >>

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 PDA’s. Als je met versie 1.1 van het .NET Framework werkt, hoef je daarvoor niets extra’s 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#:
//Module identificatie opvragen
int moduleId = Int32.Parse(Request.Params["Mid"]);

//Toegang tot de module controleren
if (!PortalSecurity.HasEditPermissions(moduleId)) {
   Response.Redirect("~/Admin/EditAccessDenied.aspx");
}

VB:
'Module identificatie opvragen
Dim moduleId As Integer = Cint(Request.Params("Mid")

'Toegang tot module controleren
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 z’n 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 pagina’s en controls te wijzigen, en de stylesheet aan te passen.

Dit artikel is eerder verschenen in .NET Magazine.
<< vorige | ^ naar boven | overzicht | volgende >>
copyright 2000-2007 ASPNL