views:

476

answers:

2

The incoming links feature of the Sharepoint wiki is cool, but it's a hassle having to go to another page to see the list.

Is it possible to replace the Incoming Links hyperlink with a drop-down menu showing the links on the same page?

+4  A: 

Inspired by the code found here, here and here, I created this file in C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\CONTROLTEMPLATES\WikiMiniConsole.ascx

<%@ Control Language="C#"   AutoEventWireup="false" %>
<%@Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@Register TagPrefix="SharePoint" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.WebControls"%>
<%@Register TagPrefix="SPHttpUtility" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.Utilities"%>
<%@ Register TagPrefix="wssuc" TagName="ToolBar" src="~/_controltemplates/ToolBar.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="ToolBarButton" src="~/_controltemplates/ToolBarButton.ascx" %>

<SharePoint:RenderingTemplate ID="WikiMiniConsole" runat="server">
 <Template>
  <div style="position:relative;top:0;left:0;">
  <div class="ms-wikieditouter">
  <table  id="miniconsole" cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td>
   <table class="ms-wikieditsecond" cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td>
    <table class="ms-wikieditthird" cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td>
     <!-- this is for the orange cast inside the menu -->
     <table class="ms-wikieditorange" cellspacing="0" cellpadding="0" border="0" width="100%">
     <tr>
      <td class="ms-wikieditorangeinnera" style=";width:100%;">&nbsp;</td>
     </tr>
     <tr><td>
      <wssuc:ToolBar CssClass="ms-wikitoolbar" runat="server">
      <Template_Buttons>
       <SharePoint:WikiEditItemButton Text= "<%$Resources:wss,siteactions_wikieditpage%>" runat="server"/>
       <SharePoint:WikiPageHistoryButton Text= "<%$Resources:wss,siteactions_viewpagehistory%>" ButtonID="WikiPageHistory" runat="server"/>
       <SharePoint:WikiIncomingLinksButton Text= "Incoming Links" ButtonID="WikiIncomingLinks" runat="server"/>
      </Template_Buttons>
      </wssuc:ToolBar>
     </td></tr></table>
     </td></tr></table>
   </td></tr></table>
  </td></tr></table>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"> </script>
<script type="text/javascript"> 
$(function() { 

 var toc = "<div id='toc' style='background:#EBF3FF;"
    +"border:1px solid #6F9DD9;display:none;"
    +"position:absolute;top:127;right:11;width:250px;"
    +"text-align:left;'></div>";

 $("td.ms-bodyareaframe:first").append(toc);

 //get the url for the incoming links page 
 u = $("a[id$=WikiIncomingLinks_LinkText]")[0].href; 

 //get the target container and load it with the incoming links 
 //filtered to show the links list only 
 $("#toc").load(u + " .ms-propertysheet");

 $("#toc").wrapInner("<ul style='padding:2px;margin:0;list-style-type:none;'></ul>");
 $("#toc a").wrap("<li style='padding:0;margin:0;'></li>");
 $("#toc li").prepend("<img style='margin-right:5px;' alt='' src='/_layouts/images/square.gif'/>");
 $("#incominglinks").click(function(){
  $("#toc").toggle();
 });

 // override the target of our hyperlink to bring up the menu
 $("#ctl00_PlaceHolderMiniConsole_ctl00_ctl00_ctl00_RptControls_WikiIncomingLinks_LinkText").attr("href", "#")
 $("#ctl00_PlaceHolderMiniConsole_ctl00_ctl00_ctl00_RptControls_WikiIncomingLinks_LinkText").click(function(){
  $("#toc").toggle();
 });  
}); 
</script> 



  </div></div>
 </Template>
</SharePoint:RenderingTemplate>

After resetting IIS, the change is applied to all wiki pages on your site.

Andrew Strong
+1 Thanks for posting your code!
Alex Angas
A: 

Hi Andrew,

This looks great however when I created the file and restarted IIS the drop down for incoming links did not appear. Is there anything else I must do to get this to work I'm on MOSS07?

Cheers

Rowan
@Rowan, I suggest you start by getting the code in the three links I posted working first. My code is essentially a combination of all three. Those links have better step-by-step instructions than in my post.
Andrew Strong