Skip to content

Instantly share code, notes, and snippets.

@jaredmcateer
Created May 24, 2012 19:15
Show Gist options
  • Save jaredmcateer/2783646 to your computer and use it in GitHub Desktop.
Save jaredmcateer/2783646 to your computer and use it in GitHub Desktop.
Cookie manager bookmarklet (requires prototype)
javascript:(function(a){function c(a){var b=window.getComputedStyle(a.target,null);a.dataTransfer.setData("text/plain",parseInt(b.getPropertyValue("left"),10)-a.clientX+","+(parseInt(b.getPropertyValue("top"),10)-a.clientY))}function d(a){return a.preventDefault(),!1}function e(a){var b=a.dataTransfer.getData("text/plain").split(","),c=document.getElementById("cmgr_dragMe");return c.style.left=a.clientX+parseInt(b[0],10)+"px",c.style.top=a.clientY+parseInt(b[1],10)+"px",a.preventDefault(),!1}function f(){var a,b,c,d;return a='<h1>Cookie Manager [<span id="cmgr_close">X</span>]</h1>',b='<fieldset><legend>Add</legend><label>Key:<br><input type="text" id="cmgr_addKey" /></label><br><label>Value:<br><input type="text" id="cmgr_addValue" /></label><br><input type="submit" id="cmgr_addCookie" value="Add"></fieldset>',c='<fieldset><legend>Delete</legend><label>Key:<br><input type="text" id="cmgr_delKey" /></label><br><input type="submit" id="cmgr_delCookie" value="Delete" /></fieldset>',d='<fieldset><legend>Get</legend><label>Key:<br><input type=text id="cmgr_getKey" /></label><br><input type="submit" id="cmgr_getCookie" value="Get" /> <input type=submit id=cmgr_showAll value="Show All" /></fieldset>',a+b+c+d}function g(){var c=a("cmgr_addKey").value||"",d=a("cmgr_addValue").value||"";if(c===""){alert("Key must be delcared");return}b.setItem(c,d),alert("Set cookie: "+c+": "+d)}function h(){var c=a("cmgr_delKey").value||"";if(c===""){alert("Key must be delcared");return}b.removeItem(c),alert("Removed cookie: "+c)}function i(){var c=a("cmgr_getKey").value||"";if(c===""){alert("Key must be delcared");return}if(!b.hasItem(c)){alert("Cookie ("+c+") key not found");return}alert(b.getItem(c))}function j(){var b=a("cmgr_list"),c=document.cookie||"",d="",e=c.split(";");e.each(function(a){a=a.split("="),d+='<li><span style="font-weight:bold">'+a[0]+": </span>"+a[1]+"</li>"}),b||(b=new Element("div",{id:"cmgr_list"}),a("cmgr_dragMe").insert(b)),b.setStyle({"max-height":"300px",overflow:"auto"}),b.update(""),b.insert((new Element("h2")).update("Cookies")),b.insert((new Element("ul")).setStyle({background:"#fff",color:"#000","font-size":"8pt"}).update(d)),b.insert((new Element("input",{type:"submit",value:"close"})).observe("click",function(){b.remove()}))}function k(){var b,k,l;b='<section id="cmgr_dragMe" draggable="true"></section>',l=document.body,l.insert(b),k=a("cmgr_dragMe"),k.setStyle({position:"absolute",left:"0",top:"0",width:"400px",background:"#f0f0f0",border:"2px solid #666","border-radius":"2px",padding:"8px"}),k.update(f()),k.select("fieldset").each(function(a){a.setStyle({border:"1px solid black","border-radius":"2px",padding:"8px"})}),k.select("input[type=text]").each(function(a){a.setStyle({width:"375px"})}),a("cmgr_addCookie").observe("click",g),a("cmgr_delCookie").observe("click",h),a("cmgr_getCookie").observe("click",i),a("cmgr_showAll").observe("click",j),a("cmgr_close").setStyle({cursor:"pointer"}),a("cmgr_close").observe("click",function(){k.remove()}),l.observe("dragstart",c),l.observe("dragover",d),l.observe("drop",e)}var b={getItem:function(a){return!a||!this.hasItem(a)?null:unescape(document.cookie.replace(new RegExp("(?:^|.*;\\s*)"+escape(a).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*"),"$1"))},setItem:function(a,b,c,d,e,f){if(!a||/^(?:expires|max\-age|path|domain|secure)$/.test(a))return;var g="";if(c)switch(typeof c){case"number":g="; max-age="+c;break;case"string":g="; expires="+c;break;case"object":c.hasOwnProperty("toGMTString")&&(g="; expires="+c.toGMTString())}document.cookie=escape(a)+"="+escape(b)+g+(e?"; domain="+e:"")+(d?"; path="+d:"")+(f?"; secure":"")},removeItem:function(a){if(!a||!this.hasItem(a))return;var b=new Date;b.setDate(b.getDate()-1),document.cookie=escape(a)+"=; expires="+b.toGMTString()+"; path=/"},hasItem:function(a){return(new RegExp("(?:^|;\\s*)"+escape(a).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=")).test(document.cookie)}};k()})($)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment