Daniel's Blog

.NET and SharePoint Development
Google+
View my Google+ profile
XING
View my XING profile

ShareCamp 2010 / Session

Am Wochenende war das erste Barcamp der SharePoint Community.
Das mit fast 200 Besuchern ausgebuchte Event war ein voller Erfolg bei dem man sich mit anderen SharePoint Enthusiasten austauschen konnte.
Mit über 40 Sessions hatte die Unkonferenz eine Menge zu bieten. Die Vorträge gingen von Konfigurationsthemen, über Workflows bis zu Entwicklungsthemen. Alles sehr ausgewogen.
Eine Kleinigkeit habe ich dennoch zu bemängeln: Ich hätte mir mehr Entwicklersessions gewünscht :D :P .

Sollte es nächstes Jahr auch ein ShareCamp geben bin ich wieder mit Freude dabei.

born2share

Eindrücke vom ersten ShareCamp gibts auf http://www.sharecamp.de

Ich möchte mich auch nochmal bei allen Besuchern meiner Session zum Thema Ribbon Customizing im SharePoint 2010 bedanken.
Wie versprochen sind hier die Slides und Beispiele.

  Ribbon_Customizing_im_SP2010_-_Daniel_Lindemann.rar

EDIT: Hatte Probleme mit meinem Webserver. Jetzt funktioniert der Download aber :)

Kick it on dotnet-kicks.de

Bing Maps im Sharepoint

Im aktuellen .NET Magazin ist ein schöner Bericht von Tobias Richling über das Entwickeln von Webanwendungen die geographische Daten per Bing Maps visualisieren.
Dabei benutzt er ein Bing Maps ASP.NET Control, das auf Codeplex veröffentlicht wurde.

Nachdem ich den Artikel durchgelesen habe, dachte ich mir: “Hey, Sharepoint mit Bing Maps ausstatten … wieso nicht?”
Das Ergebnis lies nicht lange auf sich warten. Deshalb möchte ich hier zeigen wie man Bing Maps per Webpart in den Sharepoint 2010 einbinden kann.

Bing Maps im Sharepoint 2010

Bing Maps ASP.NET Control anpassen

Das Bing Maps ASP.NET Control ist ein Wrapper, der um den Bing Maps Service gelegt wurde. Das Steuerelement gehörte zum Live SDK wurde aber wieder entfernt.
Der Vorteil dieses Steuerelements ist, dass man durch das Setzen von wenigen Eigenschaften eine Bing Map angezeigt bekommt ohne eine Zeile Javascript. Dennoch ist es möglich die angezeigte Karte mittels Bing Maps AJAX SDK zu ändern, was einem Entwickler bei Sharepoint 2010 Projekten sehr entgegen kommt :) .

Auf Codeplex steht nur der Quellcode des Steuerelements zu Verfügung. Da die Assembly, um sie in Sharepoint benutzen zu können, mit einem Schlüssel signiert sein muss , ist das sogar ein Vorteil.

Wenn man sich den Quellcode geladen hat, kann man die Solution in Visual Studio öffnen und die Assembly signieren. Das Projekt das einen Schlüssel braucht hat den Namen Microsoft.Live.ServerControls.VE.
Ist dieser Schritt erledigt kann man das Projekt neu erstellen. Das benötigte Steuerelement findet man dann im Projektordner unter Sourcebin.

Erstellen eines Bing Map Webparts

Um das Bing Maps Webpart zu erstellen, benutzt man am besten die Vorlage für ein normales Webpart (die Vorlage des Visual Webpart finde ich ein wenig oversized).
Nachdem man die Referenz zur Bing Maps Control hinzugefügt hat, muss man im Solution Packet Editor noch die Assembly als SafeControl eintragen, damit sie mit auf den Server deployt wird.
Das Solution Paket sollte danach so aussehen:

<Solution xmlns="http://schemas.microsoft.com/sharepoint/" SolutionId="3dd182a9-21c3-4260-9177-de19e39420fe" SharePointProductVersion="14.0">
  <Assemblies>
    <Assembly Location="Microsoft.Live.ServerControls.VE.dll" DeploymentTarget="GlobalAssemblyCache">
      <SafeControls>
        <SafeControl Assembly="Microsoft.Live.ServerControls.VE, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null" Namespace="Microsoft.Live.ServerControls.VE" TypeName="*" />
        <SafeControl Assembly="Microsoft.Live.ServerControls.VE, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null" Namespace="Microsoft.Live.ServerControls.VE.Extenders" TypeName="*" />
      </SafeControls>
    </Assembly>
    <Assembly Location="BingMapsWebpart_SP2010.dll" DeploymentTarget="GlobalAssemblyCache">
      <SafeControls>
        <SafeControl Assembly="BingMapsWebpart_SP2010, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cf157c772a0dd57" Namespace="BingMapsWebpart_SP2010.BingMaps" TypeName="*" />
      </SafeControls>
    </Assembly>
  </Assemblies>
  <FeatureManifests>
    <FeatureManifest Location="BingMapsWebpart_SP2010_BingMapsFeatureFeature.xml" />
  </FeatureManifests>
</Solution>

Je nachdem wie man das Webpart benutzen möchte muss man noch die Deployment Eigenschaften anpassen.
Für mein Beispiel benutze ich folgende Einstellungen:

  • Deployment der Assemblies im GAC
  • Webpart Feature Bereich Site

Zurück zum eigentlichen Thema.
Im Quellcode des Webparts muss man erst einmal feststellen ob ein ScriptManager auf der Seite vorhanden ist, da es sich beim Bing Maps ASP.NET Control um ein Ajax Control handelt. Ist kein ScriptManager auf der Seite vorhanden muss man einen hinzufügen! Am besten Überschreibt man dafür die Methode OnInit( ).

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    // enables script manager
    ScriptManager sm = ScriptManager.GetCurrent(this.Page);
    if (sm == null)
    {
        // register scriptmanager
        ScriptManager newScriptManager = new ScriptManager() { ID = "bingMapsScriptManager", ScriptMode = ScriptMode.Auto };
        this.Page.Form.Controls.Add(newScriptManager);
    }
}

Fehlt nur noch eine Bing Map. Um diese anzeigen zu lassen erstellt man in der Methode CreateChildControls( ) das Objekt Map. Das Map-Objekt ist das Hauptobjekt das benötigt wird und befindet sich im Namespace Microsoft.Live.ServerControls.VE. Es spiegelt wie der Name schon vermuten lässt eine Bing Map wieder.
Man könnte sich die Map jetzt schon anzeigen lassen. Aber ich möchte den Benutzer gerne auf eine Standardansicht leiten. So kann man mittels der Eigenschaft Dashboard das Bing Maps Menü ein- bzw. ausblenden und die Eigenschaft Center gibt an welchen Punkt das Map-Objekt zu Beginn zentrieren soll.
Dazu gibt es noch viele weitere Eigenschaften auf die ich hier nicht weiter eingehen möchte, da es sehr viele sind.

Der Code um Berlin in der Karte anzeigen zu lassen sieht folgendermaßen aus:

protected override void CreateChildControls()
{
    base.CreateChildControls();

    Map bingMap = new Map() { ID = "bingMap", Height = new Unit(600), Width = new Unit(100.00, UnitType.Percentage) };
    bingMap.ZoomLevel = 10;
    bingMap.Dashboard = true;
    bingMap.Center = new LatLong(52.5070, 13.3615);    // Berlin
    bingMap.Locale = SupportedLocales.de_de;    // UI in deutsch
    bingMap.ScaleBarDistanceUnit = DistanceUnit.Kilometers;    // Maßeinheit in KM

    this.Controls.Add(bingMap);
}

Jetzt kann man das Webpart testen. Einfach das Debuggen starten und das Bing Map Webpart auf einer Seite hinzufügen.

Daten in Bing Map anzeigen

Natürlich kann man sich mit Bing Maps nicht nur eine Karte anzeigen lassen. Wie auch bei vielen anderen Web Map Diensten kann man Punkte auf der Karte hervorheben. Dazu gehören z.B. Punkte auf Objekte, Routen, hervorgehobene Bereiche.
Ermöglicht wird das Ganze im Bing Maps ASP.NET Control durch Shapes. Wenn ich mir also eine Reißzwecke am Brandenburger Tor hinzufügen möchte muss ich ein Shape in Gestalt einer Reißzwecke hinzufügen.

Shape brandenburgerTor = new Shape(ShapeType.Pushpin, new LatLongWithAltitude(52.51625, 13.37767));
brandenburgerTor.Title = "Brandenburger Tor";
brandenburgerTor.Description = "Das Wahrzeichen Berlins";
brandenburgerTor.MoreInfoURL = "http://de.wikipedia.org/wiki/Brandenburger_Tor";
bingMap.AddShape(brandenburgerTor);

Die wichtigesten Informationen muss man im Konstruktor übergeben. ShapeType.Pushpin gibt an, dass der Shape als Reißzwecke gerendert wird. Danach folgen die Koordinaten für das Brandenburger Tor als LatLongWithAltitude-Objekt.
Die Eigenschaften Title, Description und MoreInfoURL geben an was angezeigt werden soll, wenn man mit der Maus über den Reißzwecken fährt.

Ortsmarke in Bing Maps

Fazit

Durch Bing Maps und das Bing Maps ASP.NET Control ist es auf einfache Art und Weise möglich geographische Daten im Sharepoint zu visualieren. Man könnte sich beispielsweise eine Liste mit Konferenzen halten und speichert sich in einem zusätzlichen Feld wo sie statt finden. Für mich ist es zudem eine Abwechslung zu den einfach gehaltenen Listen.
Ob Bing Maps in ASP.NET / Sharepoint Anwendungen eine Zukunft hat wird sich noch zeigen. Mir hat das Entwickeln dieser Beispielapplikation auf jeden fall Spaß gemacht.

  BingMapsWebpart_SP2010.zip

Kick it on dotnet-kicks.de

Erstes Sharepoint BarCamp

Am 10. und 11.4.2010 veranstaltet die Firma DataOne zusammen mit Microsoft das erste Sharepoint BarCamp in der Microsoft Zentrale in Unterschleißheim.
Ein BarCamp ist eine Art Konferenz bei der es jedoch statt Besuchern nur aktive Teilnehmer gibt. Die einzelnen Sessions werden dabei meist zu beginn des BarCamps aufgenommen und geplant. Jeder Teilnehmer ist dazu aufgefordert eigene Ideen/Sessions vorzuschlagen. Diese müssen nicht zwingend geplant sein. Ich habe selbst schon guten Sessions beigewohnt, die innerhalb von 5min entstanden sind!

born2share

Weitere Informationen gibt es auf der Seite [ShareCamp] born2share.
Wenn das mit meiner Übernachtungsmöglichkeit klappt (wovon ich ausgehen), werde ich auf jeden fall dort sein!
Bleibt nur noch abzuwarten ob ich auf dem ShareCamp meine erste Session halten werden und über welches Thema *grübel* :D

Kick it on dotnet-kicks.de

Sharepoint 2010 Developer Dashboard aktivieren

Das Developer Dashboard in Sharepoint 2010 bietet die Möglichkeit den Seitenaufbau nachzuverfolgen.
Die Informationen die das Dashboard anzeigt beziehen sich auf die Seite, die Datenbankaufrufe, die Webservice Aufrufe, usw.

Sharepoint2010DeveloperDashboard

Bevor man das Dashboard aktiviert, sollte man wissen, dass es folgende Optionen gibt:

  • On – Schaltet das Developer Dashboard an
  • Off – Schaltet das Developer Dashboard aus
  • OnDemand – Ermöglicht das Öffnen des Developer Dashboards über einen Button im Menü
    Sharepoint2010DeveloperDashboardOnDemandButton

Folgende Möglichkeiten gibt es um das Developer Dashboard in Sharepoint zu aktivieren:

  • STSADM.EXE
  • PowerShell
  • Sharepoint Object Model

STSADM.EXE

Eingabeaufforderung (cmd) öffnen und in den Ordner C:Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN wecheln.
Danach folgenden stsadm.exe mit folgenden Parametern ausführen:

stsadm.exe -o setproperty -propertyname developer-dashboard -propertyvalue On

PowerShell

Nachdem man eine PowerShell geöffnet hat, muss man zuerst die Sharepoint 2010 PowerShell Bibliothek laden:

Add-PSSnapin Microsoft.SharePoint.Powershell

Jetzt kann man einfach folgendes Skript benutzen um das Developer Dashboard zu aktivieren:

$ddb= [Microsoft.Sharepoint.Administration.SPWebService]::ContentService.DeveloperDashboardSettings
$ddb.DisplayLevel = "On"
$ddb.TraceEnabled = $true
$ddb.Update()

Sharepoint Object Model

Um das Developer Dashboard mittels Sharepoint Object Model (kurz: Sharepoint OM) muss man mit Visual Studio ein neues Projekt erstellen und danach die Sharepoint OM Assembly als Referenz hinzufügen.
Die Assembly findet man im GAC unter dem Namen Microsoft.Sharepoint.
Der Code, der das Developer Dashboard aktiviert sieht folgendermaßen aus:

SPWebService.ContentService.DeveloperDashboardSettings.DisplayLevel = SPDeveloperDashboardLevel.On;
SPWebService.ContentService.DeveloperDashboardSettings.TraceEnabled = true;
SPWebService.ContentService.DeveloperDashboardSettings.Update();

Bevor das Programm richtig läuft muss die Zielplattform auf x64 umgestellt sein, da man sonst eine NullReferenceException hervorruft (weitere Infos dazu gibts auf René Hézser’s Blog).

Have fun with Sharepoint 2010!

Kick it on dotnet-kicks.de