Jump to content
  • entries
    4
  • comments
    2
  • views
    6448

Quests - (Grease) Monkeying with the Open Beta Site


GrandZephyr

972 views

I thought I would write about how I'm writing greasemonkey codes to customize the Tip.it site for myself.

 

To start, I wanted the quests page to hide the completed/done quests as soon as you clicked "done", so I've written a greasemonkey javascript to do it.

748-64.png

 

The open.tip.it site requires you to click a "Save Done" button to hide/store the quests you've completed once you've clicked them.

I was thinking there was probably a way to do it without leaving the page.

 

So, I went ahead and worked on writing the code to make the quests work so when someone clicks the "Done" for any given quest it will hide it.

Also, clicking the checkbox will update the cookie that holds the quest id's for complete quests, and unchecking a box will remove the questid from the completed quests cookie, so the page will know to hide those completed quests the next time you visit.

 

This script was written using greasemonkey for Firefox 8.0 and relies on jQuery, a Javascript library.

 

If anyone ventures to use it and has any advice, please let me know. =)

 

 

// ==UserScript==
// @name           TIPQ
// @namespace      TIPQ
// @description    TIPQ Hider
// @include        http://open.tip.it/quests
// @require        http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// ==/UserScript==

//Add the functions for cookie handling
function setQuestCookie(questid,action)
{
var index,key,contents,exists=0
var cookies=document.cookie.split(";");
for (index=0; index<cookies.length; index++)
 {
 key=cookies[index].substr(0,cookies[index].indexOf("="));
 key=key.replace(/^\s+|\s+$/g,"");
 contents=cookies[index].substring(cookies[index].indexOf("=")+1,cookies[index].length);
 if (key=="quests_completed")
   {
	exists = 1; //cookie exists, we found it
	contents = unescape(unescape(contents));
	//When a quest is checked, we will add that questid to the cookie
	if(action == "add")
	{
		contents=contents.concat(questid+";");
	}
	//When a quest is unchecked, we will remove that questid from the cookie
	if(action == "remove")
	{
		contents=contents.replace(questid+";","");
	}
   }
 }
if(exists == 0) // we did not find the cookie
{
contents=questid+";";
}

//Check if there are any quests hidden, if not remove the cookie
if(contents != "")
{
var expiration=new Date();
expiration.setDate(expiration.getDate() + 31536000);
contents = escape(escape(contents)) + "; expires="+expiration.toUTCString();
}
else
{
contents = "; expires=-1";
}
document.cookie="quests_completed=" + contents;
}


// Initialize our jQuery once the page is ready
$(document).ready(function(){

// When a checkbox is changed, hide it if it was checked, or unhide it if it was unchecked.
$(':checkbox').change(function(){
if(this.checked){
$(this).parent().parent().addClass("members");
$(this).parent().parent().hide();
setQuestCookie(this.value,"add");
}
else{
$(this).parent().parent().removeClass("members");
$(this).parent().parent().show();
setQuestCookie(this.value,"remove");
}
});

}
);

 

0 Comments


Recommended Comments

There are no comments to display.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.