My first GreaseMonkey script: Blogspot Post PrintView

My first GreaseMonkey script. It provides print option for your posts hosted in blogspot.com. When this script is running a ‘Print’ option will appear next to post’s date header. It depends heavily on the internal code of the template, hence it can very well not work on many non-stock themes and some stock themes.

You can install this from here. I highly recommend that you install it from there.

Anyway I am also providing the code below.
The code
License: GNU Public License version 3.

[code lang=”javascript”]
// Show Posts in Blogspot in Print View
// version 0.1 beta
// 2005-05-02
// Copyright (c) 2008, AppleGrew
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// ——————————————————————–
//
// This is a Greasemonkey user script. To install it, you need
// Greasemonkey 0.3 or later: http://greasemonkey.mozdev.org/
// Then restart Firefox and revisit this script.
// Under Tools, there will be a new menu item to "Install User Script".
// Accept the default configuration and install.
//
// To uninstall, go to Tools/Manage User Scripts,
// select "Access Bar", and click Uninstall.
//
// Usage: When using this script then a new word ‘Print’ will appear
// beside every post’s posting date header.
// ——————————————————————–
//
// ==UserScript==
// @name Blogspot Post PrintView
// @namespace http://applegrew.blogspot.com/search/label/Greasemonkey%20Scripts/
// @description Show Posts in Blogspot in Print View
// @include http://*.blogspot.com/*
// @include file:///home/apple/Desktop/AppleGrew’s%20Mind.html*
// ==/UserScript==

var head, js;
head = document.getElementsByTagName(‘head’)[0];
if (!head) { return; }
js = document.createElement(‘script’);
js.type = ‘text/javascript’;
js.innerHTML =’function printview(id){location.href =location.href + "?print=1&id="+id+""; return;}’;
head.appendChild(js);

var isPrintMode = false;
var qs;
var ID=-1, postClass="post";
if (qs=location.href.match(/\?print=1&id=(\d+)&postclass=(\S+)/i)){
if(qs[1] && qs[2]){
isPrintMode = true;
ID = qs[1];
postClass = unescape(qs[2]);
}
}

var allDates, allPosts;

var postDiv = document.evaluate(
"//div[@class=’blog-posts hfeed’]",
document,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null);

var postDivChildren;
if(postDiv && postDiv.singleNodeValue)
postDivChildren = postDiv.singleNodeValue.childNodes;

if(postDivChildren){
for (var i = 0; i < thisdate =" postDivChildren[i++];" thisdate="postDivChildren[i++];" var="" thispost="postDivChildren[i++];" tagname="" i="" thispost="postDivChildren[i++];" thisdate="" id="" postid="" posttimestamp="thisDate.textContent;" newdiv="document.createElement(‘div’);" var="" divhtml=">h2dateid" href="http://www.blogger.com/post-edit.g?print=1&id=%27+i+%27&postclass=%27+thisPost.getAttribute%28" innerhtml =" DivHTML;" dateid = "dateid" postid = "postid" newbody = "<div\">"+document.getElementById(dateid).innerHTML+
"</h2><div"+postClass+"\"">"+document.getElementById(postid).innerHTML+"</div></div>";
document.body.innerHTML = newbody;

}
[/code]