SharePoint 2013 bringt eine neue Topleiste mit, die den Anwender mit Links zu Newsfeed, Skydrive und Sites versorgt. Aber nicht in jeder Installation machen diese Links Sinn.
Um sie zu entfernen ist entweder eine Änderung an der MasterPage oder ein JQuery Script notwendig. Eine dritte Möglichkeit ist das Bereitstellen eines DelegateControls.
Ein Blick in die Masterpage zeigt die DelegateControls. (Die gezeigte Methode funktionier bei jedem DelegateControl. Nur die ControlId des zu überschreibenden Controls muss später in der Elementsdatei angepasst werden)
1: <div id="suiteLinksBox">
2: <SharePoint:DelegateControl id="ID_SuiteLinksDelegate" ControlId="SuiteLinksDelegate" runat="server" />
3: </div>
Die Leiste mit den drei Links, ist das “SuiteLinksDelegate” Control. Für dieses erstellen wir ein eigenes Steuerelement, das den von uns gewünschten Inhalt ausgibt. Der Inhalt kann auch leer sein.
Dafür ist im Visual Studio eine neue FarmSolution anzulegen. Als Element wird ein neues UserControls hinzugefügt.
Dieses Usercontrol wird in einem SharePoint-Mapped Folder “ControlsTemplates” abgelegt und somit in den 15-er Hive ausgeliefert.
Der Code des User-Controls besteht nur aus einer überschriebenen Methode- Render () ist zu überschreiben und die Funktion der Basis Klasse ist nicht aufzurufen. Stattdessen kann hier über den HtmlTextWriter jeder beliebige HTML-Code geschrieben werden.
Mein Code sieht so aus:
namespace NoSkyDrive.ControlTemplates.NoSkyDrive
{
public partial class NoSkyDrive : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void Render(HtmlTextWriter writer)
{
//base.Render(writer);
}
}
}
Zu guter Letzt ist noch das DelegateControl zu überschreiben. Dies geschieht mittels einer Elements.xml Datei. Einfach ein leeres Element zu der Solution hinzufügen und den Code des Elements anpassen:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Control Id ="SuiteLinksDelegate"
Sequence="100"
ControlSrc="/_ControlTemplates/15/NoSkyDrive/NoSkyDrive.ascx">
</Control>
</Elements>
In dem Control Element ist als Id der ControlId des Delegate Controls anzugeben. Diesen haben wir vorher in der Masterpage ermittelt. Die “ControlsSrc” der Pfad zu der zuvor erstellten UserControl Datei.
Die fertige Ansicht der SharePoint Seite ohne SkyDrive, Newsfeed und Sites-Links: