vrijdag 17 februari 2012

SharePoint 2007 en 2010 CSS stijloverzichten en voorbeelden

Een mooi overzicht van de CSS stijlen die door SharePoint worden gebruikt, inclusief de lokaties waar deze worden gebruikt, de CSS bestandsnaam en een voorbeeld ervan worden op de volgende lokaties gegeven:

Voor SharePoint 2007:
CSS Reference Chart for SharePoint 2007 (Microsoft Office SharePoint Server 2007 and Windows SharePoint Services v3)

Voor SharePoint 2010:
SharePoint 2010 CSS Reference Chart


dinsdag 31 januari 2012

SharePoint 2013: wat is er al bekend?

Update: De SharePoint 2013 Preview is beschikbaar! Meer info hierover (en praktische links ermee te beginnen) vind je in mijn post SharePoint 2013 (Office 15): praktisch aan de slag.

Hoe Microsoft de volgende versie gaat noemen: SharePoint 2013 of SharePoint 15, weten we nog niet, maar de informatie die af en toe bekend wordt, ga ik in deze blogpost verzamelen.

Technical Preview Managed Object Model Software Development Kit

Vandaag heeft Microsoft "SharePoint 15 Technical Preview Managed Object Model Software Development Kit" uitgebracht. Deze is te vinden op SharePoint 15 Technical Preview Managed Object Model Software Development Kit.

Deze Technical Preview bevat een helpfile (chm) met informatie over het Managed Object Model. Dit is beperkt tot uitleg hoe andere Microsoft applicaties gebruik kunnen maken van SharePoint. Het Managed Object Model wordt dus slechts summier besproken. In concreto worden classes, members en methods genoemd, zonder verdere uitleg. Meer volgt (hopelijk) snel...

Office 15 and SharePoint 15 Beta Availability

Afgaande op geruchten (TAP member on a LinkedIn group) wordt de beta versie van SharePoint 2013 en Office 2013 juni 2012 beschikbaar gesteld.

zondag 29 januari 2012

Aanpassen van lijst- en bibliotheekformulieren in SharePoint 2010, zonder SharePoint Designer of InfoPath

Zoals toegezegd, bij deze een vervolg op mijn blogpost Aanpassen van lijst- en bibliotheekformulieren zonder SharePoint Designer of InfoPath. Toegegeven, deze eerste versie was een probeersel en kon op verschillende punten wel wat verbetering gebruiken. En misschien moest ik ook eens een blogpost maken met wat meer plaatjes, alleen tekst is zo saai.

Een korte recap: hoe zat het ook alweer?
Standaard edit/view forms in Sharepoint zijn slecht aanpasbaar; de lijst/bibliotheekvelden worden weergegeven in een webonderdeel waaraan helaas niets veranderd kan worden. En dat terwijl je toch af en toe wel de behoefte heb om (zonder InfoPath of Designer) een mooi formulier te kunnen maken met wat meer intelligentie erin en een wat andere opmaak. Al was het maar het kunnen verbergen of zichtbaar maken van velden en het instellen van waarden van velden.
De truuk die je daarvoor kunt gebruiken is deze velden direct in de DOM object model te manipuleren. Je moet de velden dan eerst zien te vinden, waarna je eigenschappen ervan kunt wijzigen.

Een nieuwe opzet
In mijn eerste versie hiervan werden de velden recht-toe-recht-aan direct in het DOM object model opgezocht en gewijzigd. In mijn nieuwe opzet wordt eerst een JavaScript object model gemaakt van de velden in het formulier. Als dat model nueenmaal is gegenereerd kan eenvoudiger via JavaScript worden gewijzigd waarbij de bijgehorende velden in het DOM object model automatisch worden aangepast. Er is als het ware een abstractielaagje tussen het DOM object model en de intelligentie in de pagina gevoegd. Da's al een wat nettere opzet.

Maar nu naar de praktijk...

Een voorbeeld implementatie
Als demo van de nieuwe opzet heb ik het volgende geimplementeerd: een standaard list edit webpagina aangevuld met de volgende webonderdelen:
- Een Content Editor webonderdeel met JavaScript code om van de velden in het gesloten veld webonderdeel een JavaScript object model te genereren
- Een Content Editor webonderdeel voor een zelfgebouwde veld editor waarin wijzigingen (weergeven/verbergen) in het JavaScript object model kunnen worden doorgevoerd en in de webpagina worden getoond , "just for demo purposes".





Natuurlijk moet hiervoor eerst een testlijst worden gemaakt. Bij voorkeur een met velden voor ieder mogelijk veldtype, om alle mogelijkheden eens uit te proberen.

Edit modus van een lijst item edit formulier
Om een standaard listitem edit formulier te kunnen wijzigen moet het eerst in edit modus gebracht worden. Dat was in Sharepoint 2007 gemakkelijk (toevoegen van ToolPaneView=2 aan de URL van de betreffende webpagina). De SharePoint 2010 interface is echter gewijzigd ten opzichte van die van SharePoint 2007; een lijstitem wordt in een popup getoond. Aan de SharePoint 2010 URL's (b.v. http://hrweb.contoso.com/Lists/TestList1/AllItems.aspx) kun je daarom niet zien welke aspx pagina gebruikt wordt voor de popup. Daar kun je achter komen door via de rechtermuisknop de properties van de popup pagina op te vragen. Deze zal lijken op de volgende voorbeeld URL: http://hrweb.contoso.com/Lists/TestList1/EditForm.aspx. Via de truuk met de ToolPaneView=2 parameter kun je deze pagina in Edit-mode krijgen en kunnen de aanpassingen gemaakt worden.

Toevoegen van benodigde webonderdelen
In de opzet van de demo wordt het webonderdeel met de zelfgebouwde veld editor boven het gesloten webonderdelen met de velden geplaatst en het webonderdeel met de JavaScript code om van de velden in het gesloten veld webonderdeel een JavaScript object model te genereren eronder.

Het instellen van Content Editor webonderdelen gaat overigens enigszins anders dan in SharePoint 2007. Kon je met Sharepoint 2007 eenvoudig de HTML code via het properties menu instellen, in SharePoint 2010 moet je in het webonderdeel zelf klikken en via de Ribbon "Edit HTML source" selecteren. Daarnaast verandert SharePoint het een en ander in de code die je invoert zodat het editten ervan niet bepaald gebruiksvriendelijk wordt. Het is aan te raden om de JavaScript code in een gewone texteditor (tip: gratis NoteTab) te onderhouden en te plakken in het betreffende Content Editor webonderdeel. 't Is even wennen.

Webonderdeel 2: genereren van het JavaScript object model
JavaScipt kent user defined objecten die op een eenvoudige manier zijn aan te maken. De objecten kennen properties en kunnen worden uitgebreid met methods. Voor ons voorbeeld wordt een formulier object aangemaakt met daarin een array met veld objecten. Onderstaande code geeft op hoofdlijnen weer hoe deze objecten worden gedefinieerd.

function Form( iFormname ) {
this.Name = iFormname;
this.Fields = new Array();

// Scan form for fields and store them in the Fields array
ScanFields( this.Fields );
}
Form.prototype.FormFieldLookup = FormFieldLookup;

function Field( iFieldname, iRequired, ioDOMobject, ioRowDOMobject ) {
this.Name = iFieldname;
this.Required = iRequired;
this.Visible = true;
this.Enabled = true;
this.FieldDOMobject = ioDOMobject;
this.FieldRowDOMobject = ioRowDOMobject;
}
Field.prototype.FieldSetVisibility = FieldSetVisibility;
Field.prototype.FieldSetEnabled = FieldSetEnabled;


Met de ScanField functie wordt het JavaScript object model gevuld met de in pagina aanwezige velden. Deze zijn te herkennen aan de <h3 class="ms-standardheader"> tags. De veldkenmerken zijn dan eenvoudig in het DOM object model op te zoeken en aan het JavaScript object model toe te voegen. Om zelf eens te kijken hoe het DOM object model eruit ziet kan gebruik worden gemaakt van de "View source" functie in de browser en de IE Developer Toolbar.

Webonderdeel 1: de zelfgebouwde veld editor
Dit webonderdeel wordt gegenereerd op basis van een div en een tabelletje die middels JavaScript wordt gevuld met de veldinformatie in het JavaScript object model.
In de veld editor worden de JavaScript functies waarmee het JavaScript object model (en daarmee het DOM object model) vervolgens aangeroepen.

Enkele voorbeelden:

Opzoeken van een veldobject op basis van de veldnaam in het JavaScript obect model:

var vField = vForm.FormFieldLookup( vConsoleSelectFields.options[vConsoleSelectFields.selectedIndex].text );


Verbergen van een veldobject:

vField.FieldSetVisibility( iChecked );


Updates van deze blogpost
Deze eerste versie is nog wat summier. Maar zoals vorige keer deed zal ik ook nu in deze blogpost doen: in de loop van de tijd verder uitbreiden met uitleg, voorbeelden en toepassingen.

Happy coding!

maandag 2 januari 2012

SharePoint 2010: waar is het RSS Viewer webpart gebleven?

Als je je afvraagt waar Web parts gebleven zijn als je ze in je web page wilt selecteren, neem dan een kijkje in de Site collection features... wellicht is een benodige feature niet geactiveerd.

In mijn geval kon ik het (Content Rollup) RSS Viewer webpart niet vinden. Deze wordt zichtbaar als je de "SharePoint Server Standard Site Collection features" in de Site Collection Administration activeert.

En zo zijn er meer features die je beter kunt aanzetten...

dinsdag 20 december 2011

Management rapportage in Excel van SharePoint lijsten en bibliotheken

Managers houden van Excel. De applicatie geeft ze de mogelijkheid om gegevens op verschillende manieren weer te geven, te analyseren en te rapporteren. Excel biedt daarvoor ook meer dan voldoende mogelijkheden.

SharePoint lijstjes (en de werkboek weergave van lijstjes) bieden helaas niet zoveel mogelijkheden. Excel services (de online versie van Excel, in het kort gezegd) biedt meer mogelijkheden, maar daarvoor zijn technische instellingen nodig en het vergt inspanning van de infrastructuur.

Excel Web Queries in het kort
Gemakkelijker en laagdrempeliger is het gebruik van Excel Web Queries. Hiermee kan informatie vanaf websites worden downloaded (ook automatisch, volgens een bepaalde frequentie) in een Excel workbook en wordt deze informatie in Excel cellen beschikbaar gesteld. De informatie kan vervolgens, als gebruikelijk, worden verwerkt in formules, grafieken, et cetera.

Wat je hiermee nog meer kunt bereiken is onder anderen:
- Het maken van een management dashboard waarin informatie vanuit verschillende bronnen wordt weergegeven. Een gevuld management dashboard kan dan ook offline worden gebruikt.
- Vanuit Excel kan deze informatie natuurlijk ook weer worden gebruikt in andere, b.v. Office, applicaties.

Excel Web Queries maken
Web queries kunnen op verschillende manieren worden aangemaakt:
- In Excel: via het menu Data | From web
- Vanuit SharePoint lijsten en bibliotheken: via het lijst - of bibliotheek menu Actions | Export to Spreadsheet
- Vanuit .iqy bestanden (Connection bestanden)

Wanneer een export naar Excel vanuit een SharePoint lijst of bibliotheek wordt gemaakt wordt een .iqy bestand ter download aangeboden. Dit bestand kan zowel opgeslagen worden om later te openen of meteen geopend worden in Excel (dubbelklikken). Na openen van dit bestand (Excel) wordt de Web query uitgevoerd en wordt het huidige werkblad in het geopende spreadsheet gevuld met de gegevens die met de Web query zijn opgehaald. Een opgeslagen .iqy bestand kan direct in een specifiek werkblad worden gesleept zodat een Excel werkboek meerdere Web queries kan bevatten; per werkblad kunnen de gegevens vanuit een Web query worden opgehaald.

Bij het importeren van een Web query in een Excel werkblad kan worden gekozen voor:
- Weergave van de opgehaalde gegevens als tabel
- Weergave in een PivotTable rapport
- Weergave in een PivotChart en PivotTable rapport

Daarnaast kan gekozen worden voor de precieze lokatie waar de geimporteerde gegevens worden opgeslagen:
- In het reeds geopende werkblad, vanaf een specifieke lokatie (celnaam, b.v. $A$1)
- In een nieuw werkblad
- In een nieuw werkboek

Ook kan, onder anderen, worden aangegeven:
- Of de gegevens automatisch ververst worden bij opening van het Excel werkboek of na een bepaald aantal minuten.
- Of de opgehaalde gegevens in Excel werkboek bij het bewaren van het betreffende werkboek ook moeten worden opgeslagen of moeten worden verwijderd (en alleen de Query zelf in het werkboek wordt opgeslagen).
- Welk connection bestand gebrukt wordt om de gegevens op te halen.

Automatisch verversen van gegevens
Gegevens vanuit een Web query kan automatisch worden ververst door dit aan te geven (properties van de betreffende Web query in Excel). Let wel: het downloaden van verse data kan enige tijd in beslag nemen, dus te snel verversen van data is niet handig.

Voor verdere uitleg over data connections en data bronnen, zie Create, edit, and manage connections to external data. De beschikbare data sources staan in de map "\My Documents\My Data Sources".

Handmatig aanmaken van Web query (.iqy) bestanden
Web queries kunnen ook als tekstbestand (.iqy) in een teksteditor handmatig worden aangemaakt.

Een .iqy bestand de volgende opzet als in het onderstaande voorbeeld: MSN MoneyCentral Belangrijke indices voor investeerders (standaard meegeleverd met bijvoorbeeld Excel 2007):


WEB
1
http://moneycentral.msn.com/investor/external/excel/quotes.asp?symbol=$INDU,$COMP,$TRAN,$UTIL,$DAX,$FTSE,$HSI,$IIX.X,$COMPX,$NI225,$CAC,$SOX.X,$IUX,$OEX,$INX,$STI,$AOI,$CA:OSPTX

Selection=EntirePage
Formatting=All
PreFormattedTextToColumns=True
ConsecutiveDelimitersAsOne=True
SingleBlockTextImport=False


Web queries op SharePoint lijsten en bibliotheken
Een .iqy bestand met een Web query naar een SharePoint lijst of bibliotheek heeft een invulling als in het onderstaande voorbeeld.


WEB
1
http://portal.demo.intra/NieuwsProject/_vti_bin/owssvr.dll?XMLDATA=1&List={4CE0FF47-3559-47E3-8158-5820814FCBA8}&View={E13E619E-37E7-4FA0-8C82-8C83D3B76BE8}&RowLimit=0&RootFolder=%2fNieuwsProject%2fPages

Selection={4CE0FF47-3559-47E3-8158-5820814FCBA8}-{E13E619E-37E7-4FA0-8C82-8C83D3B76BE8}
EditWebPage=
Formatting=None
PreFormattedTextToColumns=True
ConsecutiveDelimitersAsOne=True
SingleBlockTextImport=False
DisableDateRecognition=False
DisableRedirections=False
SharePointApplication=http://portal.demo.intra/NieuwsProject/_vti_bin
SharePointListView={E13E619E-37E7-4FA0-8C82-8C83D3B76BE8}
SharePointListName={4CE0FF47-3559-47E3-8158-5820814FCBA8}
RootFolder=/NieuwsProject/Pages


Hierin zijn onder anderen gedefinieerd:
- De unieke identifier (GUID, zie http://nl.wikipedia.org/wiki/Globally_Unique_Identifier) van de lijst of bibliotheek waaruit de gegevens worden opgehaald.
- De unieke identifier van de weergave van lijst of bibliotheek waaruit de gegevens worden opgehaald. Het is dus mogelijk om gegevens van aparte views op lijsten en bibliotheken op te halen.

Aandachtspunten
- Om gebruik te maken van (connecties naar) externe gegevens is het van belang dat dit toegestaan wordt vanaf de computer van de eindgebruiker. Zie hiervoor het "Trust Center" en de ingestelde "trusted locations".

Wordt vervolgd
In een komende update van deze blogpost zal ik verder ingaan op de mogelijkheden en wat praktische voorbeelden geven.

Verder lezen
- Use Excel's Web queries to easily view web data
- Get external data from a Web page: uitleg over alle mogelijkheden / parameters van Web queries.
- Integrate Far-Flung Data into Your Spreadsheets with the Help of Web Services
- Excel Web Query Secrets Revealed
- Hacking Excel Web Queries

Uitleg en voorbeelden van het gebruik van externe beleggings informatie in Excel, via Web queries:
- Stock quote and chart from Yahoo! in C#. Hierin wordt ook beschreven hoe Yahoo stockquotes kunnen worden gebruikt.
Free Stock Quotes in Excel.






dinsdag 13 december 2011

Aanpassen van standaard webpagina's voor nieuwe items en bewerken van items: een generieke aanpak

Naar aanleiding van mijn artikel Aanpassen van lijst- en bibliotheekformulieren zonder SharePoint Designer of InfoPath ben ik eens wat verder gaan denken over een wat meer generieke aanpak.

In het artikel beschrijf ik hoe je middels JavaScript velden kunt manipuleren om zo meer controle uit te oefenen of de werking van deze formulieren. De gebruikte code is bruikbaar maar de oplossing is wat ad hoc. En dat moet beter kunnen...

Ik denk hierbij aan het volgende:
- Bij het openen van de web pagina wordt op basis van de lijstvelden een Objectmodel gemaakt van alle aanwezige velden.
- Middels deze objecten kunnen de veldwaarden, opmaak, zichtbaarheid en andere eigenschappen worden ingesteld.
- Speciale velden en objecten voor opslag van informatie voor extra en veldoverstijgende functionaliteit. Denk hierbij aan Google maps lokaties, workflow statussen, KPI informatie, et cetera. Deze informatie kan in speciale web onderdelen (op het Content Editor webonderdeel gebaseerd) gebruikt worden.
- Objecten voor manipuleren van overige SharePoint user interface elementen als menu's.

Bovenstaande kan de eindgebruiker (met de juiste JavaScript/AJAX kennis en ervaring) een breed scala aan extra functionaliteit bieden.

In komende blogs zal ik hier verder op ingaan en e.e.a. uitwerken in praktische voorbeelden.

woensdag 7 december 2011

Spelen met SharePoint 2010 op Windows 7 (64 bits)

SharePoint 2010 stelt verregaande eisen aan omgeving waarop het draait. Een 64 bits Operating System, minimaal 8 Gb intern geheugen (6 Gb met wat meer geduld) en een flinke hoeveelheid schijfruimte.

Een nieuwe pc?
Je kunt natuurlijk meteen een nieuwe pc aanschaffen. In mijn geval een i7 met 12 Gb RAM en 2 Tb schijfruimte. Daarop Windows 2008 server (64 bits uiteraard) en Hyper-V om meerdere severs virtueel te laten draaien. Draait lekker moet ik zeggen, zelfs met SharePoint 2007 en 2010 tegelijk.

Maar naar klanten neem ik die full tower pc niet zo gemakkelijk mee. Dan is een laptop toch iets gemakkelijker...

En op een laptop? Een mogelijkheid...
Maar op een laptop is SharePoint 2010 niet altijd goed mogelijk.
In mijn geval heb ik een laptop met 8 Gb RAM en helaas niet de mogelijkheid om er een ander besturingssysteem op te installeren. Hyper-V kan ik dus wel vergeten. Maar gelukkig is er een manier om toch snel met SharePoint 2010 aan de slag te kunnen, en dat is gebruik te maken van:
- VirtualBox
- "2010 Information Worker Demonstration and Evaluation Virtual Machine": De SharePoint 2010 demo omgeving van Microsoft

2010 Information Worker Demonstration and Evaluation Virtual Machine (SP1)
Een mooie opstap om kennis te maken met SharePoint 2010 is gebruik te maken van een vantevoren ingerichte omgeving die *gratis* bij Microsoft is te downloaden. Deze Virtual Machine kan in Microsoft Hyper-V worden gedraaid. Heb je geen Hyper-V, dan is VirtualBox een leuk alternatief.

VirtualBox
VirtualBox. VirtualBox is een *gratis* produkt van Oracle waarmee VHD bestanden (Microsoft's formaat voor virtuele harddisks, gebruikt in bijvoorbeeld demo installaties) kunnen worden ingelezen. Wel belangrijk: gebruik de IDE controller, en niet de SATA controller bij het koppelen van de SharePoint 2010 Virtual harddisk, anders start de virtuele machine niet op.

Waar zijn de voorgedefinieerde sites?
Helaas kon ik, afgezien van de Central Administration, de overige voorgedefinieerde sites (hrweb, finweb, ...) niet bereiken. Wat hielp was het aanpassen van de hosts file (te vinden onder: C:\Windows\System32\drivers\etc). Daarin maakte in additionele entries voor deze sites en gebruikte ik de IP-adressen die ik met het commando ipconfig /all terugvond (IPv4 address).


# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost

192.168.150.6 finweb.contoso.com
192.168.150.6 finweb

192.168.150.6 intranet.contoso.com
192.168.150.6 intranet

192.168.150.6 hrweb.contoso.com
192.168.150.6 hrweb


Aan de slag
Zowel VirtualBox als het SharePoint 2010 demo image zijn geen volledige omgevingen die gebruikt kunnen worden voor bijvoorbeeld ontwikkelwerk. Daarbij zijn ook, als de evaluatieperiode voorbij is, licenties nodig voor de software. Maar voor een snelle kennismaking met SharePoint 2010 bieden ze aardige mogelijkheden. Wat betreft die kennismaking: in de Information Worker Demonstration and Evaluation Virtual Machine zijn demo beschrijvingen en implementaties te vinden. Deze zijn leerzaam om te doorlopen en om mee te experimenteren. En zo leer je SharePoint tenslotte het beste kennen; niet (alleen) vanuit de boeken, maar door ermee te werken.