Hosten von ActiveX-Steuerelementen in SharePoint Foundation 2010 (Wrox)

SharePoint 2010

Zusammenfassung: Informationen zum Integrieren von ActiveX-Steuerelementen in Microsoft SharePoint Foundation 2010-Anwendungen.

Wrox-Logo

Bücher von Wrox zu SharePoint

Diese Artikel befasst sich damit, wie Sie ActiveX-Steuerelemente in Microsoft SharePoint 2010 hosten, um in Webbrowsern zusätzliche Funktionalität anzubieten. SharePoint 2010 verwendet ActiveX-Steuerelemente, um digitale Signaturen zu sammeln, Microsoft Office-Anwendungen zu öffnen und das Anwesenheitssymbol neben den Namen von Benutzern in Ihren SharePoint-Websites anzuzeigen. In diesem Artikel wird beschrieben, wie Sie Webseiten ActiveX-Steuerelemente hinzufügen und anschließend aktivieren, indem Sie im Menüband von SharePoint 2010 auf eine benutzerdefinierte Schaltfläche klicken. Für das Codebeispiel wird mithilfe eines ActiveX-Steuerelements Windows Media Player geöffnet und eine in einer SharePoint-Dokumentbibliothek vorhandene Mediendatei wiedergegeben. Wenn Sie ein neues ActiveX-Steuerelement erstellen möchten, anstatt ein vorhandenes ActiveX-Steuerelement wiederzuverwenden, finden Sie weitere Informationen unter ActiveX-Steuerelemente (Übersicht und Lernprogramme) auf der MSDN-Website.

Mit dem ActiveX-Framework können Sie Softwarepakete erstellen, die in Desktop- und Webanwendungen wiederverwendet werden können. Gewöhnlich besteht ein Softwarepaket aus Steuerelementen der Benutzeroberfläche, so genannten ActiveX-Steuerelementen, die wiederverwendbare Funktionalität enthalten. Beispielsweise kann ein ActiveX-Steuerelement zum Sammeln von Signaturen von dem Programm, von dem es ursprünglich installiert wurde, sowie in der von Ihnen entwickelten Anwendung verwendet werden. ActiveX-Steuerelemente können in mehreren Programmiersprachen geschrieben werden, einschließlich C++, Visual Basic, C# und sonstigen CLR-basierten Sprachen. Und die Steuerelemente können in Anwendungen verwendet werden, die in verschiedenen Programmiersprachen geschrieben wurden, einschließlich Sprachen, die nicht CLR-basiert sind.

Bei vielen Webanwendungen, einschließlich SharePoint 2010, bieten ActiveX-Steuerelemente Browsern zusätzliche Funktionalität, wie z. B. den Zugriff auf das Dateisystem des Benutzers oder die Interaktion mit dem Betriebssystem und installierten Anwendungen. ActiveX-Steuerelemente werden von Internet Explorer standardmäßig unterstützt. Sie können jedoch die ActiveX-Unterstützung in anderen Browsern mithilfe von Plug-Ins aktivieren, wie z. B. mit dem Plug-In für Mozilla Firefox.

Für die Verwendung eines benutzerdefinierten ActiveX-Steuerelements auf Ihrer Webseite müssen Sie einer Seite, von der auf Ihr benutzerdefiniertes Steuerelement verwiesen wird, ein <object>-Tag oder einen <script>-Block hinzufügen. Das benutzerdefinierte Steuerelement kann vorab installiert werden, so wie dies bei Microsoft Office 2010 der Fall ist, oder es kann installiert werden, wenn vom Webbrowser auf die Seite zugegriffen wird, so wie beim Steuerelement für digitale Signaturen in InfoPath Forms Services.

Durch das Hinzufügen eines <object>-Tags zur Webseite wird das ActiveX-Steuerelement instanziiert, sobald die Seite vollständig geladen wurde. Wenn dieser Vorgang zu speicherintensiv ist, können Sie der Seite das <object>-Tag mithilfe einer JavaScript-Funktion in einem <script>-Block hinzufügen. Das ActiveX-Steuerelement wird dann nur instanziiert, wenn Sie die JavaScript-Funktion aufrufen. Das Instanziieren des ActiveX-Steuerelements ist mit einem <object>-Tag einfacher als mit einem <script>-Block, da kein zusätzlicher JavaScript-Code geschrieben werden muss.

Zum Hinzufügen eines ActiveX-Steuerelements zu einer Webseite verwenden Sie das <object>-Tag und geben einen Wert für das classid -Attribut oder das progid -Attribut an. Mit dem classid-Attribut geben Sie das ActiveX-Steuerelement an, das mithilfe seiner Klassen-ID (GUID) angezeigt wird. Mit dem progid-Attribut geben Sie das ActiveX-Steuerelement stattdessen mithilfe seiner ProgID an. Es ist nicht möglich, die beiden Attribute classid und progid für dasselbe <object>-Tag zu verwenden.

Wenn eine ActiveX-DLL installiert wird, werden die Klassen-ID und die ProgID der ActiveX-Steuerelemente der Registrierung des Benutzercomputers hinzugefügt. Der Browser kann die Klassen-ID oder die ProgID verwenden, um das Steuerelement zum Anzeigen auf der Seite zu laden. Im folgenden Codebeispiel wird das ActiveX-Steuerelement angezeigt, mit dem Sie wie in Abbildung 1 dargestellt Dateien auf die Seite Mehrere Dokumente hochladen ziehen können.

<OBJECT id=idUploadCtl name=idUploadCtl 
    classid=CLSID:07B06095-5687-4d13-9E32-12B4259C9813 width=638 
    height=261>
<PARAM NAME="BorderStyle" VALUE="None">
<PARAM NAME="CurrentAutoScaleDimensions" VALUE="6, 13">
<PARAM NAME="AllowDrop" VALUE="True">
<PARAM NAME="BackColor" VALUE="Window">
<PARAM NAME="CausesValidation" VALUE="True">
<PARAM NAME="Cursor" VALUE="Arrow">
<PARAM NAME="Enabled" VALUE="True">
<PARAM NAME="Font" VALUE="Tahoma, 11world">
<PARAM NAME="ForeColor" VALUE="76, 76, 76">
<PARAM NAME="Location" VALUE="157, 292">
<PARAM NAME="Margin" VALUE="3, 3, 3, 3">
<PARAM NAME="MaximumSize" VALUE="0, 0">
<PARAM NAME="MinimumSize" VALUE="0, 0">
<PARAM NAME="Name" VALUE="UploadCtl">
<PARAM NAME="Size" VALUE="638, 261">
</OBJECT>

Abbildung 1. Seite "Mehrere Dokumente hochladen"

Seite "Mehrere Dokumente hochladen"

Im vorherigen Codebeispiel wurde mit dem classid-Attribut die Klassen-ID des Uploadsteuerelements angegeben. Der Wert für das classid-Attribut hat das Format CLSID:guid, wobei guid die Klassen-ID des ActiveX-Steuerelements ist. Das progid-Attribut hätte stattdessen verwendet werden können, und zwar mit dem Wert STSUpld.UploadCtl.

Die Attribute id und name des <object>-Tags verweisen in clientseitigem JavaScript auf das Steuerelement. Mit den Attributen width und height wird die Größe des Steuerelements angegeben. Das <object>-Tag enthält mehrere <param>-Tags. Mit dem <param>-Tag können Sie Werte an das Steuerelement übergeben, die möglicherweise benötigt werden, wenn das Steuerelement auf der Webseite angezeigt wird. Die <param>-Tags sind für dieses ActiveX-Steuerelement eindeutig, und Sie können viele <param>-Tags oder überhaupt keine Tags verwenden. Schließlich müssen die <param>-Tags keine bestimmte Reihenfolge aufweisen.

Ein letztes Attribut des <object>-Tags, das Sie möglicherweise verwenden, ist das codebase-Attribut. Mit dem codebase-Attribut wird der Speicherort einer CAB-Installationsdatei angegeben, die das ActiveX-Steuerelement enthält, das vom Browser heruntergeladen werden kann, falls das ActiveX-Steuerelement nicht auf dem lokalen Computer installiert wurde. Eine CAB-Datei ist ein komprimiertes Microsoft-CAB-Archiv und enthält eine Manifestdatei mit Anweisungen für das Betriebssystem zum Installieren der ActiveX-Steuerelemente. Der folgende Codeausschnitt veranschaulicht ein <object>-Tag, von dem das codebase-Attribut verwendet wird.

<object id='eula.DSigCtrl' 
    CLASSID='CLSID:5EEE5BF6-DC9E-43be-9100-BF19643943C5'
    CODEBASE='http://local.demo.com/_layouts/DSigCtrl.cab#Version=-1,-1,-1,-1'>
    <param name='DSigControlID' value='eulaControl' />
</object>

SharePoint verwendet die in Tabelle 1 aufgelisteten ActiveX-Steuerelemente, die von Microsoft Office 2010 während des Setups installiert werden. Diese Steuerelemente ermöglichen das gleichzeitige Ändern mehrerer Dokumente und Elemente, das Starten clientseitiger Office-Anwendungen zum Bearbeiten von Dokumenten sowie das Aktivieren weiterer Funktionalität, die vom Browser standardmäßig nicht unterstützt wird. Die DLL-Dateien mit diesen Steuerelementen sind im Verzeichnis %ProgramFiles%\Microsoft Office\Office14\ gespeichert.

Tabelle 1. Liste der ActiveX-Steuerelemente in SharePoint

ProgID

Beschreibung

DLL-Datei

STSUpld.CopyCtl

Kopiert ein Dokument in einer Liste an einen anderen Speicherort.

STSCOPY.DLL

DiagramLaunch.DiagramLauncher

Startet Microsoft Visio 2010 zum Erstellen eines neuen Visio-Diagramms.

DGRMLNCH.dll

SharePoint.ExportDatabase

Startet Microsoft Access 2010 zum Erstellen oder Exportieren der Daten aus einer verknüpften Tabelle in eine(r) SharePoint-Liste.

OWSSUPP.dll

ListNet.ListNet

Zeigt eine SharePoint-Liste in der Datenblattansicht an, wodurch der Benutzer mehrere Elemente gleichzeitig bearbeiten kann.

STSLIST.dll

Name.NameCtrl

Zeigt Anwesenheitsinformationen für die SharePoint-Benutzer in der Website an.

NAME.dll

OISCTRL.OISClientLauncher

Startet Microsoft Office Picture Manager zum Hochladen von Bildern in eine Bildbibliothek.

OISCTRL.dll

SharePoint.OpenDocuments

Startet die entsprechende Clientanwendung, wenn ein Dokument in einer Dokumentbibliothek bearbeitet wird.

OWSSUPP.dll

SharePoint.OpenXMLDocuments

Startet Microsoft InfoPath 2010 zum Erstellen oder Bearbeiten von XML-Dokumenten in einer Dokumentbibliothek.

inlaunch.dll

SharePoint.SpreadsheetLauncher

Importiert Listen aus Microsoft Excel-Kalkulationstabellen in die aktuelle SharePoint-Website.

OWSSUPP.dll

SharePoint.StssyncHandler

Gibt den Namen der Anwendung zum Synchronisieren von Kalendern und Kontakten zwischen Microsoft Outlook und SharePoint zurück.

OWSSUPP.dll

TaskLaunch.TaskLauncher

Exportiert Aufgaben aus SharePoint nach Microsoft Project 2010.

NAMEEXT.dll

STSUpld.UploadCtl

Ermöglicht dem Benutzer das gleichzeitige Hochladen mehrerer Dokumente in eine Dokumentbibliothek.

STSUPLD.dll

Viele der ActiveX-Steuerelemente in SharePoint werden ausgeführt, wenn der Benutzer beim Anzeigen einer Liste oder Dokumentbibliothek auf eine Schaltfläche im Menüband klickt. Beispielsweise die Schaltflächen Nach Excel exportieren, Visio-Diagramm erstellen, Mit Access öffnen und Zeitplan öffnen im Abschnitt Verbinden und exportieren auf der in Abbildung 2 dargestellten Registerkarte Liste des Menübands. Jede Schaltfläche verwendet ein anderes ActiveX-Steuerelement zum Bereitstellen der Funktionalität für diese Schaltfläche.

Abbildung 2. Registerkarte "Liste" für eine allgemeine SharePoint-Liste

Registerkarte "Liste" für eine generische SharePoint-Liste

Von böswilligen Benutzern erstellte ActiveX-Steuerelemente können ernsthaften Schaden an Ihrem Computer anrichten, indem Dateien geändert oder gelöscht, Viren installiert oder persönliche Daten gestohlen werden. Deshalb weisen ActiveX-Steuerelemente digitale Signaturen zum Identifizieren des Herausgebers des Steuerelements auf. Hierfür wird ein Zertifikat verwendet, das von einer vertrauenswürdigen Stammzertifizierungsstelle wie z. B. VeriSign bezogen wird, damit Sie wissen, woher das Steuerelement stammt. Wenn darüber hinaus Benutzer mithilfe eines ActiveX-Steuerelements auf eine Webseite zugreifen, werden Sie in einer Meldung aufgefordert, die Ausführung des Steuerelements zuzulassen.

Abbildung 3. Aufforderung zum Zulassen der Ausführung eines ActiveX-Steuerelements

Eingabeaufforderung für Berechtigungen eines ActiveX-Steuerelements

Wenn Sie dem Herausgeber des Steuerelements und der Website, von der das Steuerelement verwendet wird, vertrauen, klicken Sie auf die Schaltfläche Zulassen, damit der Browser das ActiveX-Steuerelement anzeigen kann. Schließen Sie andernfalls die Eingabeaufforderung. Wenn Sie das Anzeigen des ActiveX-Steuerelements auf der Seite nicht zulassen, kann es sein, dass bestimmte Funktionalität der Seite nicht verwendet werden kann.

Die Sicherheitseinstellungen des Browsers stellen die letzte Hürde beim Ausführen von ActiveX-Steuerelementen dar. Internet Explorer klassifiziert Websites gemäß den folgenden vier Zonen:

  • Internetzone – Der Benutzer wird jedes Mal aufgefordert, ActiveX-Steuerelemente zuzulassen.

  • Lokale Intranetzone – Der Benutzer wird aufgefordert, ActiveX-Steuerelemente zuzulassen, falls sie zuvor nicht zugelassen waren.

  • Zone vertrauenswürdiger Sites – Identisch mit Lokale Intranetzone, außer dass der Benutzer auch aufgefordert wird, das ActiveX-Steuerelement zu installieren, falls es zuvor nicht installiert wurde.

  • Zone eingeschränkter Sites – ActiveX-Steuerelemente dürfen nicht ausgeführt werden.

Beim Zugriff auf Ihre SharePoint-Website sollten Sie sicherstellen, dass die Website der Zone Lokales Intranet oder Vertrauenswürdige Sites hinzugefügt ist, damit die ActiveX-Steuerelemente in SharePoint mit minimaler Unterbrechung für den Benutzer ausgeführt werden.

Führen Sie zum Hinzufügen einer Website zur Zone Lokales Intranet oder Vertrauenswürdige Sites die folgenden Schritte aus.

Klicken Sie in der Menüleiste des Browsers im Menü Extras auf Internetoptionen.

Klicken Sie auf im Dialogfeld Internetoptionen auf die Registerkarte Sicherheit, wählen Sie die Zone Lokales Intranet oder Vertrauenswürdige Sites aus, und klicken Sie dann auf Einstellungen.

Abbildung 4. Dialogfeld "Internetoptionen"

Dialogfeld "Internetoptionen"

Hinweis Hinweis

Wenn Ihre Website öffentlich ist, lässt der Benutzer die Ausführung Ihres Steuerelements möglicherweise nicht zu. In diesem Fall müssen Sie den Benutzer informieren, dass seine Entscheidung, das ActiveX-Steuerelement nicht zuzulassen, für Ihre Website ein nicht optimales Browserverhalten bedeutet.

Das in Abbildung 5 dargestellte Dialogfeld wird angezeigt, wenn Sie Lokales Intranet ausgewählt haben.

Abbildung 5. Dialogfeld "Lokales Intranet"

Dialogfeld "Lokales Intranet"

Klicken Sie auf Erweitert, um das Dialogfeld anzuzeigen.

Abbildung 6. Dialogfeld "Lokales Intranet"

Dialogfeld "Lokales Intranet"

Das in Abbildung 7 dargestellte Dialogfeld wird angezeigt, wenn Sie Vertrauenswürdige Sites ausgewählt haben. In den in den Abbildungen 6 und 7 dargestellten ähnlichen Dialogfeldern sollte die URL der aktuellen Website bereits im Textfeld aufgefüllt sein. Klicken Sie deshalb auf Hinzufügen, um die aktuelle Website der von Ihnen ausgewählten Zone hinzuzufügen.

Abbildung 7. Dialogfeld "Vertrauenswürdige Sites"

Dialogfeld "Vertrauenswürdige Sites"

Klicken Sie auf OK, und schließen Sie die verschiedenen Dialogfelder, bis das in Abbildung 4 dargestellte Dialogfeld Internetoptionen geschlossen wurde.

Hinweis Hinweis

Falls für Ihre SharePoint-Website die Windows-Authentifizierung verwendet wird und Ihr Computer Mitglied der Domäne des SharePoint-Servers ist, sollten Sie eventuell die Website der Zone Lokales Intranet hinzufügen. Ihre Windows-Anmeldeinformationen werden dann automatisch an den SharePoint-Server gesendet, wenn Sie zu Ihrer Website navigieren.

Für einige ActiveX-Steuerelemente gibt es keine visuelle Komponente. In diesem Fall müssen Sie der Seite JavaScript-Funktionen für die Interaktion mit diesen ActiveX-Steuerelementen hinzufügen. Wenn der Benutzer auf eine Schaltfläche auf der Webseite klickt, ruft die Schaltfläche die JavaScript-Funktion auf, von der das ActiveX-Steuerelement aufgerufen wurde. Im folgenden Beispiel wird die ExportDiagram-Methode von JavaScript veranschaulicht, die aufgerufen wird, wenn der Benutzer auf die in Abbildung 8 dargestellte Schaltfläche Visio-Diagramm erstellen klickt.

Abbildung 8. Schaltfläche "Visio-Diagramm erstellen"

Schaltfläche "Visio-Diagramm erstellen"

function ExportDiagram(weburl,listguid, listid, listname, viewname, 
    viewguid)
{ULSsa6:;
    if(g_objDiagramLaunch==null)
    {
        var digInstalled=GetCookie("digInstalled");
        if(digInstalled !=null && digInstalled !='0')
        {
            try
            {
                g_objDiagramLaunch=new 
                    ActiveXObject("DiagramLaunch.DiagramLauncher");
            }
            catch(e)
            {
                return null;
            }
        }
        else if(digInstalled==null)
            GetDiagramLaunchInstalled();
        else
            return null;
    }
    try
    {
        var bstrTemplate="";
        var bstrURI=weburl;
        var bstrViewGUID=viewguid;
        var bstrListGUID=listguid;
        var iListID=listid;
        g_objDiagramLaunch.CreateDiagram(bstrTemplate, bstrURI, 
            bstrViewGUID, bstrListGUID, listname, viewname, iListID);
    }
    catch(e)
    {
        var L_DiagramLaunchFail_Text="Unable to create diagram.";
        alert (L_DiagramLaunchFail_Text);
    }
}

Im vorherigen Codebeispiel wird eine neue Instanz des DiagramLauncher-Steuerelements erstellt, indem der ActiveXObject-Konstruktor mit dem ProgID-Wert DiagramLaunch.DiagramLauncher aufgerufen wird. Die neue Instanz wird in der g_objDiagramLaunch-Variablen gespeichert und später in der Funktion zum Aufrufen der CreateDiagram-Methode verwendet. Mithilfe dieser Methode wird Microsoft Visio 2010 mit der URL der aktuellen Website, den GUIDs der aktuellen Liste und der aktuellen Ansicht, den Titeln der aktuellen Liste und der aktuellen Ansicht sowie der ID der Listenvorlage geöffnet.

Für das Hosten eines benutzerdefinierten ActiveX-Steuerelements in SharePoint gibt es mehrere Möglichkeiten. Sie können dem Inhalts-Editor-Webpart auf einer Webpart-Seite ein <object>-Tag hinzufügen. Sie können Webpart-Seiten, Anwendungsseiten und Gestaltungsvorlagen mithilfe von SharePoint Designer 2010 und Visual Studio 2010<object>- und <script>-Tags hinzufügen. Außerdem können Sie <script>-Tags hinzufügen, indem Sie dem SharePoint-Menüband Steuerelemente hinzufügen.

Führen Sie die folgenden Schritte zum Erstellen eines Projekts aus, mit welchem dem SharePoint-Menüband Steuerelemente hinzugefügt werden.

Öffnen Sie Visual Studio 2010 im Menü Start.

Klicken Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

Wählen Sie im Dialogfeld Neues Projekt die Option Visual C#, SharePoint und dann 2010 im Bereich auf der linken Seite aus, und wählen Sie dann Leeres SharePoint-Projekt im Bereich auf der rechten Seite aus.

Abbildung 9. Dialogfeld "Neues Projekt"

Dialogfeld 'Neues Projekt'

Geben Sie im Textfeld Name die Bezeichnung ActiveXHosting ein, und klicken Sie dann auf OK. Wenn das Dialogfeld Assistent zum Anpassen von SharePoint angezeigt wird, geben Sie die URL Ihrer SharePoint-Website in das Textfeld ein, wählen Sie das erste Optionsfeld aus, und klicken Sie dann auf Fertig stellen.

Abbildung 10. Dialogfeld "Assistent zum Anpassen von SharePoint"

Dialogfeld "Assistent zum Anpassen von SharePoint"

Hinweis Hinweis

Durch die Auswahl des ersten Optionsfelds wird das Projekt als Sandkastenlösung bereitgestellt und kann deshalb mit niedrigeren Berechtigungen als eine Farmlösung ausgeführt werden.

Nachdem das neue Projekt in Visual Studio geöffnet wurde, klicken Sie mit der rechten Maustaste auf Ihr Projekt, und wählen Sie im Kontextmenü die Option Hinzufügen und dann Neues Element aus.

Wenn das Dialogfeld Neues Element hinzufügen angezeigt wird, wählen Sie im Bereich auf der linken Seite SharePoint aus, und wählen Sie dann in der Liste auf der rechten Seite Leeres Element aus. Geben Sie AddWMPButton in das Textfeld ein, und klicken Sie anschließend auf Hinzufügen, um die Elementdatei zu erstellen.

Abbildung 11. Dialogfeld "Neues Element hinzufügen"

Dialogfeld "Neues Element hinzufügen"

Visual Studio öffnet nun die neu hinzugefügte leere Elementdatei. Elementdateien sind XML-Dokumente mit den Bereitstellungsanweisungen, die SharePoint verwendet, um Listen und Bibliotheken zu erstellen, das Menüband der Website zu ändern und sonstige Objekte in der Website zu erstellen. In diesem Artikel fügen Sie mithilfe dieser Elementdatei ein CustomAction-Element hinzu, um dem Menüband eine Schaltfläche hinzuzufügen. Durch Klicken auf diese Schaltfläche wird JavaScript-Code für die Interaktion mit Ihrem ActiveX-Steuerelement ausgeführt. Fügen Sie den folgenden Code in der Elementdatei hinzu.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <CustomAction Id="AddWMPButton"
                Location="CommandUI.Ribbon"
                RegistrationType="List" RegistrationId="851">
    <CommandUIExtension>
      <CommandUIDefinitions>
      </CommandUIDefinitions>
      <CommandUIHandlers>
      </CommandUIHandlers>
    </CommandUIExtension>
  </CustomAction>
</Elements>

Das <Elements>-Element ist stets das Stammelement in einer Elementdatei. Alle Bereitstellungsanweisungen sind im <Elements>-Element vorhanden. Mit dem <CustomAction>-Element wird ein CustomAction-Steuerelement erstellt. Mit CustomAction-Steuerelementen werden Menüs Elemente sowie dem Menüband Steuerelemente hinzugefügt. Das Id-Attribut des <CustomAction>-Elements ist der Bezeichner des CustomAction-Steuerelements und sollte eindeutig sein. Mit dem Location-Attribut wird angegeben, wo das CustomAction-Steuerelement angezeigt werden soll. Legen Sie das Location-Attribut auf CommandUI.Ribbon fest, wenn Sie das Menüband anpassen möchten. Mit dem RegistrationType-Attribut wird angegeben, wann das CustomAction-Steuerelement angezeigt werden soll. Dieses Beispiel gilt für eine Dokumentbibliothek, weshalb Sie List als Wert angeben. Das RegistrationId-Attribut hat in Abhängigkeit vom Wert für das RegistrationType-Attribut unterschiedliche Bedeutung. Wenn das RegistrationType-Attribut auf List festgelegt ist, stellt das RegistrationId-Attribut die Vorlagen-ID der Liste dar, auf die Sie das CustomAction-Steuerelement anwenden möchten. Der Wert 851 ist die ID der Vorlage Objektbibliothek. Dies bedeutet, dass dieses CustomAction-Steuerelement angezeigt wird, wenn Sie zu einer Objektbibliothek navigieren. Zusätzliche Werte für das RegistrationId-Attribut finden Sie im Abschnitt "Weitere Ressourcen" am Ende dieses Artikels.

Das CustomAction-Element enthält die Elemente CommandUIDefinitions und CommandUIHandlers. Das CommandUIDefinitions-Element enthält die Steuerelemente, die Sie dem Menüband hinzufügen möchten. Das CommandUIHandlers-Element enthält das JavaScript zum Behandeln der Ereignisse, die von den CommandUIDefinitions-Elementen ausgelöst werden.

Wenn Sie dem Menüband eine Schaltfläche hinzufügen möchten, müssen Sie ein CommandUIDefinition-Element und ein Button-Element innerhalb des CommandUIDefinitions-Elements hinzufügen.

<CommandUIDefinitions>
    <CommandUIDefinition 
        Location="Ribbon.Library.Actions.Controls._children">
        <Button
            Id="Ribbon.Library.Actions.PlayInWMP"
            Command="Ribbon.Library.Actions.PlayInWMP"
            Sequence="30"
            Image16by16="/_layouts/images/WAV16.GIF"
            Image32by32="/_layouts/images/WAV32.GIF"
            LabelText="Play in Windows Media Player"
            TemplateAlias="o2" />
    </CommandUIDefinition>
</CommandUIDefinitions>

Mit dem Location-Attribut des CommandUIDefinition-Elements wird angegeben, wo die Schaltfläche im Menüband angezeigt werden soll. Der Wert des Location-Attributs gibt an, dass die Schaltfläche im Abschnitt Verbinden und exportieren auf der Registerkarte Bibliothek des Menübands angezeigt werden soll. Zusätzliche Werte finden Sie im Abschnitt "Weitere Ressourcen" am Ende dieses Artikels. In Tabelle 2 wird erläutert, wie Sie die Attribute des Button-Elements verwenden.

Tabelle 2. Attribute des Button-Elements

Name

Beschreibung

Id

Der eindeutige Bezeichner der Schaltfläche. Ein Verweis auf ein gerendertes Steuerelement in clientseitigem JavaScript ist durch Übergeben dieses Werts an document.getElementById möglich.

Command

Der Befehl, der ausgelöst wird, wenn ein Benutzer auf die Schaltfläche klickt. Dieser Wert muss mit einem CommandUIHandler-Element im CommandUIHandlers-Element übereinstimmen.

Sequence

Bestimmt, wo die Schaltfläche in Bezug auf die restlichen Steuerelemente im Abschnitt Verbinden und exportieren angezeigt wird.

Image16by16

Das Bild, das angezeigt wird, wenn die Schaltfläche im kleinen und mittleren Modus angezeigt wird.

Image32by32

Das Bild, das angezeigt wird, wenn die Schaltfläche im großen Modus angezeigt wird.

LabelText

Der Text, der angezeigt wird, wenn die Schaltfläche im mittleren und großen Modus angezeigt wird.

TemplateAlias

Bestimmt den standardmäßigen Größenanpassungsmodus der Schaltfläche und deren Darstellung in diesem Abschnitt. Beispielsweise bedeutet der Wert o2, dass die Schaltfläche im mittleren Modus und über anderen Steuerelementen angezeigt wird.

Sie müssen der Datei ein CommandUIHandler-Element hinzufügen, damit der Befehl für die Schaltfläche ausgeführt wird, wenn auf die Schaltfläche geklickt wird.

<CommandUIHandlers>
    <CommandUIHandler Command="Ribbon.Library.Actions.PlayInWMP"
        CommandAction="javascript:"
        EnabledScript="javascript:"/>
</CommandUIHandlers>

Das CommandUIHandler-Element enthält JavaScript-Code zur Festlegung, wann die Schaltfläche aktiviert werden soll und was passiert, wenn der Befehl ausgelöst wird. Der Wert des Command-Attributs muss mit dem Command-Attribut des behandelten Steuerelements übereinstimmen. Die Werte für CommandAction und EnabledScript beginnen stets mit javascript:. Das EnabledScript-Attribut muss auf einen booleschen Ausdruck festgelegt sein, der true zurückgibt, falls das Steuerelement aktiviert ist, und false, falls das Steuerelement deaktiviert ist. Dieser Ausdruck wird ausgewertet, wenn die Seite erstmalig gerendert wird und wenn der Benutzer die Seite auf irgendeine Weise bearbeitet. Falls Sie das EnabledScript-Attribut unterdrücken, ist das Steuerelement immer aktiviert. Für das CommandAction-Attribut muss JavaScript-Code festgelegt werden, der ausgeführt wird, wenn der Befehl von dem Steuerelement ausgelöst wird. Sie können beliebigen Code verwenden, den Sie in ein <script>-Tag auf einer Webseite einschließen können.

Da mit der Schaltfläche Windows Media Player zur Wiedergabe einer Musikdatei aus der Objektbibliothek gestartet wird, müssen Sie einen Ausdruck für das EnabledScript-Attribut hinzufügen, das true zurückgibt, wenn ein Element in der Objektbibliothek ausgewählt wird. In SharePoint gibt es das Clientobjektmodell, mit dem Sie feststellen können, ob Elemente ausgewählt werden. Geben Sie den folgenden Code als Wert für das EnabledScript-Attribut ein.

EnabledScript="javascript:
    SP.ListOperation.Selection.getSelectedItems().length > 0"

Die SP.ListOperation.Selection-Klasse enthält die getSelectedItems-Methode, mit der ein Array der ausgewählten Elemente auf der Seite zurückgegeben wird. JavaScript-Arrays enthalten die length-Eigenschaft, mit der Sie bestimmen, ob Elemente ausgewählt wurden. Falls Elemente ausgewählt wurden, wird die Schaltfläche aktiviert. Andernfalls ist die Schaltfläche deaktiviert.

Nun müssen Sie dem CommandAction-Attribut Skript hinzufügen. Geben Sie den folgenden Code für das CommandAction-Attribut ein, um Windows Media Player zu öffnen, wenn ein Benutzer auf die Schaltfläche klickt.

CommandAction="javascript:
    try {
      if (SP.ListOperation.Selection.getSelectedItems().length > 0) {
        var id = SP.ListOperation.Selection.getSelectedItems()[0].id;
        var fileUrl = document.getElementById(id).nextSibling.getAttribute('href');
        fileUrl = document.location.href.substring(0, document.location.href.indexOf('/', 8)) + fileUrl;

        var player = new ActiveXObject('WMPlayer.OCX');
        player.openPlayer(fileUrl);
      }
    } catch (e) {
      alert('Could not launch Windows Media Player.');
    }"

Im vorherigen Code wird das erste Element im Array, das von der getSelectedItems-Methode zurückgegeben wird, abgerufen, um die ID des ausgewählten Elements zu bestimmen. Die ID des ausgewählten Elements wird an die getElementById-Methode der document-Klasse übergeben, um einen Verweis auf das ausgewählte Element zu erhalten. Mit der nextSibling-Eigenschaft wird das nächste gleichgeordnete HTML-Element des ausgewählten Elements zurückgegeben, wobei es sich um ein Anchortag handelt, das auf den Speicherort der vom Benutzer ausgewählten Musikdatei verweist. Anchortags enthalten ein href-Attribut zur Angabe der URL der Datei. Wenn die URL empfangen wurde, wird die URL der aktuellen Seite analysiert, um die Serveradresse zu erhalten, die der URL der Datei vorangestellt wird. Schließlich wird die ActiveXObject-Methode mit dem ProgID-Wert des Windows Media Player-Steuerelements aufgerufen, um eine neue Instanz des Steuerelements zu erstellen, und dessen openPlayer-Methode wird mit der Datei-URL aufgerufen. Windows Media Player wird geöffnet und die Datei, die vom Server gestreamt wird, wird wiedergegeben. Wenn der Benutzer Windows Media Player nicht installiert hat oder es ablehnt, dass das ActiveX-Steuerelement vom Skript instanziiert wird, wird stattdessen die alert-Methode im catch-Block aufgerufen.

Schließlich fügen Sie dem Projekt ein SharePoint-Feature hinzu. Mit Features kann Funktionalität in SharePoint aktiviert bzw. deaktiviert werden. Wenn Sie ein neues Feature hinzufügen möchten, klicken Sie mit der rechten Maustaste auf den Ordner Features, und klicken Sie dann auf Feature hinzufügen. Geben Sie die folgenden Werte ein, nachdem das Feature geöffnet wurde:

  • Titel – Windows Media Player-Integration

  • Beschreibung – Ermöglicht dem Benutzer das Öffnen von Windows Media Player zur Wiedergabe von in SharePoint gespeicherten Medien

  • Bereich – Web

Nun können Sie die Lösung testen. Wählen Sie Debuggen und dann Debuggen starten in der Menüleiste aus. Visual Studio erstellt das Projekt, stellt das generierte Lösungspaket bereit, aktiviert das Feature und öffnet den Browser zum Navigieren zur Ihrer SharePoint-Website.

Zum Testen Ihres CustomAction-Steuerelements müssen Sie der Website eine Objektbibliothek hinzufügen. Wählen Sie zum Erstellen einer Objektbibliothek Weitere Optionen im Menü Websiteaktionen aus. Wählen Sie im Dialogfeld Erstellen die Option Objektbibliothek aus, und geben Sie Musik in das Textfeld auf der linken Seite ein. Klicken Sie auf Erstellen, um das Erstellen der Objektbibliothek abzuschließen.

Abbildung 12. Dialogfeld "Erstellen"

Dialogfeld "Erstellen"

Der Browser sollte automatisch zu der erstellten Objektbibliothek navigieren. Klicken Sie auf die in Abbildung 13 dargestellte Registerkarte Bibliothek. Beachten Sie, dass die Schaltfläche Mit Windows Media Player wiedergeben im Abschnitt Verbinden und exportieren der Registerkarte Bibliothek deaktiviert ist.

Laden Sie eine Audiodatei in die Objektbibliothek hoch, und wählen Sie sie in der Liste aus. Beachten Sie, dass die Schaltfläche nun aktiviert ist. Klicken Sie auf die Schaltfläche, um Windows Media Player zu starten und die Datei wiederzugeben.

Abbildung 13. Registerkarte "Bibliothek"

Registerkarte "Bibliothek"

Mithilfe von ActiveX-Steuerelementen können Sie SharePoint-Websites umfangreiche und leistungsstarke Funktionalität hinzufügen. Sie können damit eine Interaktivitätsebene hinzufügen, die der Browser nicht bietet, und die Integration in Desktopanwendungen ermöglichen, um ein problemloses Arbeiten zwischen SharePoint und clientseitigen Anwendungen zu ermöglichen. ActiveX-Steuerelemente können installiert werden, wenn der Benutzer auf Ihre Webseite in SharePoint zugreift, und Sie können von Microsoft oder anderen Unternehmen erstellte ActiveX-Steuerelemente hosten oder eigene ActiveX-Steuerelemente erstellen.

Bryan Phillips ist Seniorpartner bei Composable Systems, LLC und ein Microsoft Most Valuable Professional für SharePoint Server. Er ist Mitverfasser von "Professional Microsoft Office SharePoint Designer 2007" sowie "Beginning SharePoint Designer 2010" und unterhält einen Blog zu SharePoint. Bryan arbeitet seit 1997 mit Microsoft-Technologien und hat Zertifizierungen als Microsoft Certified Trainer (MCT), Microsoft Certified Solution Developer (MCSD), Microsoft Certified Database Administrator (MCDBA) und Microsoft Certified Systems Engineer (MCSE).

Die folgenden technischen Redakteure haben an Microsoft SharePoint 2010-Artikeln von Wrox mitgearbeitet:

  • Matt Ranlett ist ein SQL Server MVP und war über viele Jahre eine feste Institution der .NET-Entwicklercommunity in Atlanta. Als Gründungsmitglied von Atlanta Dot Net Regular Guys hat Matt mehrere regionale Benutzergruppen gegründet und leitet diese. Nach der Arbeit verbringt er viele Stunden mit lokalen und nationalen Communityaktivitäten, wie beispielsweise der SharePoint 1, 2, 3!-Reihe, der Organisation von drei Codecamps in Atlanta, der Tätigkeit als Vice President of Technology im Vorstand von INETA sowie Auftritten bei mehreren Podcasts wie z. B. .Net Rocks und dem ASP.NET-Podcast. Dennoch fand Matt kürzlich Zeit, sich mit einer wunderbaren Frau namens Kim zu verheiraten, die er bei der Aufzucht von drei riesigen Hunden unterstützt. Matt arbeitet derzeit als Seniorberater für Intellinet und gehört dem Team an, das mithilfe von innovativen Lösungen für den Erfolg von Unternehmen sorgt.

  • Jake Dan Attis. Was Muster, Praxis und Steuerung im Hinblick auf die SharePoint-Entwicklung betrifft, sind Sie bei Jake Dan Attis goldrichtig. Er ist von Moncton, Kanada, in die Region Atlanta gezogen und hat einen Abschluss in angewandter Mathematik, ist aber ein hundertprozentiger SharePoint-Hardcoreentwickler. Normalerweise nimmt Dan an Community-Events in der Region Atlanta teil, hält dort Vorträge oder organisiert derartige Events, wie beispielsweise Codecamps, SharePoint-Samstage und die SharePoint-Benutzergruppe in Atlanta. Wenn Dan einmal nicht in Visual Studio arbeitet, verbringt er gerne Zeit mit seiner Tochter Lily, schaut sich Hockey und Football an und kostet weltweite Biersorten.

  • Kevin Dostalek kann über 15 Jahre Erfahrung in der IT-Branche sowie über 10 Jahre Erfahrung in der Verwaltung großer IT-Projekte und der Führung von IT-Personal aufweisen. Er hat Projekte für Unternehmen ganz unterschiedlicher Größe geleitet und hatte verschiedene Funktionen inne, wie beispielsweise Entwickler, Architekt, Business Analyst, technischer Leiter, Manager Entwicklung, Projektmanager, Programm-Manager und Mentor/Coach. Darüber hinaus hat Kevin zwischen 2005 und 2008 auch als Vice President eine Lösungsbereitstellungsabteilung für einen MS Gold Partner mittlerer Größe geleitet und war später auch als Vice President of Innovation and Education tätig. Anfang 2010 gründete Kevin das Unternehmen Kick Studios, das Beratungs-, Entwicklungs- und Schulungsservices für die Spezialbereiche SharePoint und Social Computing anbietet. Seitdem ist er auch bei zahlreichen Benutzergruppenversammlungen, Treffen und Konferenzen im ganzen Land als Referent aufgetreten. Weitere Informationen zu Kevin finden Sie in seinem Blog "The Kickboard".

  • Larry Riemann verfügt über mehr als 17 Jahre Erfahrung im Entwurf und der Entwicklung von Geschäftsanwendungen für einige der weltweit größten Unternehmen. Larry ist ein unabhängiger Berater, Eigentümer von Indigo Integrations und bietet SharePoint-Beratung ausschließlich über SharePoint911 an. Er ist Autor, veröffentlicht Artikel und hält gelegentlich Vorträge auf Konferenzen. In den letzten Jahren befasste er sich in erster Linie mit SharePoint, dem Entwickeln und Erweitern von über SharePoint hinausgehender Funktionalität. Neben seiner Arbeit an SharePoint ist Larry ein ausgebildeter .NET-Architekt und verfügt über umfangreiches Know-how in Sachen Systemintegration, Unternehmensarchitektur und Hochverfügbarkeitslösungen. Weitere Informationen zu Larry finden Sie in seinem Blog.

  • Sundararajan Narasiman ist ein technischer Architekt bei der Content Management & Portals Group von Cognizant Technology Solutions, Chennai, und verfügt über mehr als 10 Jahre Branchenerfahrung. Sundararajan ist in erster Linie als Architektur- und Technologieberater für die SharePoint Server 2010-Stapel- und Mainstream .NET 3.5-Entwicklung tätig. Er ist ein begeisterter Programmierer und interessiert sich auch für Extremprogrammierung und EDT.

Anzeigen: