A simple Blog Engine control for Social Bookmarks.
It's not written as a extension since there are no events available for the post footer and I didn't want this portion to be part of each post content.
Bookmark Admin Panel

This is how the end result looks like

Add the following code to PostView.ascx found inside your theme folder
<script runat="server" language="c#">
private string RenderBookmarks()
{
string fileName = Context.Server.MapPath(BlogSettings.Instance.StorageLocation) + "bookmarks.xml";
if (File.Exists(fileName))
{
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
System.IO.StringWriter sw = new System.IO.StringWriter();
foreach (XmlNode node in doc.SelectNodes("bookmarks/bookmark"))
{
HtmlAnchor hyperlnk = new HtmlAnchor();
hyperlnk.Attributes.Add("rel", "nofollow");
hyperlnk.Target = "_blank";
hyperlnk.Name = node.Attributes["Name"].Value;
string fullURL = node.Attributes["Url"].Value;
fullURL = fullURL.Replace("[URL]", Post.AbsoluteLink.ToString());
fullURL = fullURL.Replace("[TITLE]", Post.Title);
hyperlnk.HRef = fullURL;
hyperlnk.InnerHtml = "<img src='" + Utils.RelativeWebRoot + "pics/socialicons/" +
node.Attributes["ImageName"].Value + "' border='0'/>";
hyperlnk.RenderControl(new HtmlTextWriter(sw));
}
Post p = new Post();
p = (Post)ViewState["Post"];
return sw.ToString();
}
else
{
return "Error in RenderBookmarks - bookmarks.xml not found";
}
}
</script>HTML fragment to show the bookmarks in the footer (PostView.ascx)
<div class="bookmarks">
Share this post by <a rel="nofollow" href="mailto:?subject=<%=Post.Title %>&
body=Thought you might like this: <%=Post.AbsoluteLink.ToString() %>">
<asp:Image ID="Image2" runat="Server" ImageUrl="~/pics/mail.gif" AlternateText="Share by email" /></a>
or online bookmarks <% =RenderBookmarks()%>
/div>
Copy "bookmarks.xml" to "App_Data" folder.
Copy "bookmarks.aspx" & "bookmarks.cs" into "admin\Pages" folder
Copy all social icon images to "pics\socialicons"
Download the code and images here
Bookmarks.zip (381.92 kb)