In unserem aktuellen Sharepoint-Projekt hatte ein Kollege die Idee auf folgende Weise eine dynamische Verlinung zur Wiki einzubauen:
Oft kommt es vor, dass es zu einer umfangreichen Sharepoint Anwendung auch eine umfangreiche Wiki gibt. Hier ein Beispiel wie man zu den Listen eine dynamsiche Verlinkung zu der Wiki der aktuellen Liste in die Seite enbauen kann. Wenn es zu der aktuellen Liste kein Wiki gibt, dann wird auf die Wiki-Startseite verlinkt.
Voraussetzung hierfür ist, dass der jeweilige Wiki den gleichen Namen wie die dazugehörige Liste hat.
Zunächst wird per Javascript im onload-Event der Seite ausgelesen um welche Liste es sich handelt. Danach wird der Name der Liste an die Datei gotolistwiki.aspx übergeben, hierzu wird ein Popup-Fenster (javascript:popupWiki(newURL)) geöffnet.
function showWikiForList () {
if(typeof(ctx) != 'undefined') {
var url = document.location.href;
url = url.substring(0, url.lastIndexOf("/"));
url = url.substring(0, url.lastIndexOf("/"));
url = url.substring(0, url.lastIndexOf("/"));
newURL = "/gotolistwiki.aspx?ItemName=" + ctx.ListTitle;
var link = document.getElementById(Element für den Link zum Wiki);
link.href = "javascript:popupWiki(newURL)";
link.href = newURL;
}
}
function popupWiki(url) {
showWindow = window.open(url, "wiki", "width=900,height=700,status=yes,scrollbars=yes,resizable=yes");
showWindow.focus();
}
In der Datei gotolistwiki.aspx schließlich wird nachgesehen ob es im Wiki-Verzeichnis "Help" eine Datei mit dem Namen der Liste existiert. Wenn ja, dann wir diese Seite geladen, ansonsten wird auf die Startseite des Wiki verlinkt.
<%@ Page Language="C#" %>
<%@ Import namespace="Microsoft.SharePoint"%>
<script runat="server">
protected override void OnLoad(EventArgs e)
{
string strWikiItem = Request.QueryString["ItemName"];
string sWikiRelative = "/Help/";
string sWikiHome = "Home.aspx";
string sWikiPage = strWikiItem+".aspx";
string sWikiBase = Request.UrlReferrer.AbsoluteUri;
using(SPSite oSPSite = new SPSite(sWikiBase))
{
using(SPWeb oSPWeb = oSPSite.OpenWeb())
{
sWikiBase = oSPWeb.Url;
if (oSPWeb.GetFile(sWikiBase+sWikiRelative+sWikiPage).Exists)
Response.Redirect(sWikiBase+sWikiRelative+sWikiPage);
else
Response.Redirect(sWikiBase+sWikiRelative+sWikiHome);
}
}
}
</script>