From 72fc5d4646c6fb59ef23b193f52f329b681a7e72 Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 23 May 2012 16:20:46 +0200 Subject: [PATCH] Improved error handling on emai link --- zerobin/static/css/style.css | 1 + zerobin/static/css/style.min.css | 2 +- zerobin/static/js/behavior.js | 13 +++++++++++++ zerobin/static/js/main.min.js | 2 +- zerobin/views/paste.tpl | 2 +- 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/zerobin/static/css/style.css b/zerobin/static/css/style.css index d5af6fe..d7575ec 100644 --- a/zerobin/static/css/style.css +++ b/zerobin/static/css/style.css @@ -263,6 +263,7 @@ form { form textarea { overflow-y:auto; + min-height:250px; } button.btn, input[type="submit"].btn { diff --git a/zerobin/static/css/style.min.css b/zerobin/static/css/style.min.css index d7aa415..34a9cd0 100644 --- a/zerobin/static/css/style.min.css +++ b/zerobin/static/css/style.min.css @@ -4,4 +4,4 @@ article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display /* Prettify */ .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} /* Custom */ -.brand{font-size:38px!important;padding:0 55px 3px!important;text-shadow:0 1px 0 rgba(255,255,255,.1),0 0 30px rgba(255,255,255,.125);-webkit-transition:all .2s linear;-moz-transition:all .2s linear;-o-transition:all .2s linear;-ms-transition:all .2s linear;transition:all .2s linear}.brand span{font-size:48px;line-height:0}.brand em{display:inline;color:#d40202;font-size:27px}.about{line-height:13px;font-style:italic;text-align:right;padding-top:9px;margin-bottom:0!important}.center{text-align:center}.about span{font-size:10px}body{padding-top:60px;padding-bottom:40px}.sidebar-nav{padding:9px 0}select{width:135px}label{display:inline;margin-left:18px;font-style:italic;font-size:11px;color:#888}ul,ol{padding:0;margin:0}li{margin-left:-9px}p{margin:0 0 20px}.grey{color:#999}.nav-list{padding-right:0!important;font-size:12px}blockquote{width:630px;float:left}h4 p{float:left;font-size:80px;text-shadow:1px 3px 1px #DDD,0 0 4px #333;-webkit-transition:all .2s linear;-o-transition:all .2s linear;-ms-transition:all .2s linear;-moz-transition:all .2s linear;transition:all .2s linear;margin-right:7px;margin-top:3px}h4#pixels-total{position:relative;width:166px;float:right;margin:8px 0 0 0;padding:0 0 0 54px;font-size:1.1em;line-height:1.4;font-weight:normal;color:#777;-webkit-border-top-right-radius:6px;-webkit-border-top-left-radius:20px;-moz-border-top-right-radius:6px;-moz-border-top-left-radius:20px;border-top-right-radius:6px;border-top-left-radius:20px}.greetings{clear:both;margin:0 auto;text-align:center;margin-top:40px}.alert .title{display:block}.btn-group{float:left}html.file-upload p.file-upload{float:left;margin:22px 0 0 21px;display:none}html.file-upload p.file-upload{display:inherit}html.no-file-upload p.file-upload{display:none}input.btn-upload{position:relative;left:-6px;width:100px;z-index:1;margin-top:-13px}input.hide-upload{position:relative;left:-110px;-moz-opacity:0;filter:alpha(opacity=0);opacity:0;z-index:2;width:100px;margin-top:-20px;cursor:pointer;cursor:hand;height:49px}#paste-content{background-color:white;padding:1em}#paste-content.linenums{padding-left:0}.submit-form{display:none}.paste-option{float:right}a#clip-button.hover{cursor:pointer;text-decoration:underline}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{list-style-type:decimal;background:inherit}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;-moz-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}ol.linenums{margin:0 0 0 55px}ol.linenums li{color:#bebec5;line-height:18px;text-shadow:0 1px 0 #fff}.prettyprint{padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,monospace,serif;line-height:21px;font-size:12px}.kwd{color:#66F}.pun,.opn,.clo{color:#0A0}.lit{color:#933}.com{color:#C0C}form{padding-bottom:3em!important;padding-right:17px}form textarea{overflow-y:auto}button.btn,input[type="submit"].btn{margin-left:5px}.well{padding-bottom:40px;padding-right:17px}.legal{margin:0 auto;width:300px;text-align:center;margin-top:30px}.btn{margin-left:5px}.btn-primary,.btn-danger{position:relative;top:-4px}#alert-template{display:none}.progress{display:none}.progress .bar{width:25%;text-indent:10px;text-align:left}.lnk-option canvas{vertical-align:middle;margin-right:10px}.previous-pastes .item{margin-top:5px;vertical-align:middle;line-height:24px;padding-left:1em}li.item{margin-left:-13px;margin-right:-5px}.previous-pastes canvas{display:block;float:left;margin-right:5px}html.local-storage .no-local-storage{display:none}html.no-local-storage .local-storage{display:none}canvas{border:1px solid white}#wrap-content{display:none}.noscript{text-align:center;color:red;font-weight:bold}#faq dt{margin:2em 0 1em 0}#faq p{margin:1em}#force-coloration{text-decoration:underline}#expiration-tag{float:right;margin:1em;background:grey;color:white;font-size:.8em;padding:0 1ex;opacity:.5;filter:alpha(opacity=50);font-weight:bold;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box} \ No newline at end of file +.brand{font-size:38px!important;padding:0 55px 3px!important;text-shadow:0 1px 0 rgba(255,255,255,.1),0 0 30px rgba(255,255,255,.125);-webkit-transition:all .2s linear;-moz-transition:all .2s linear;-o-transition:all .2s linear;-ms-transition:all .2s linear;transition:all .2s linear}.brand span{font-size:48px;line-height:0}.brand em{display:inline;color:#d40202;font-size:27px}.about{line-height:13px;font-style:italic;text-align:right;padding-top:9px;margin-bottom:0!important}.center{text-align:center}.about span{font-size:10px}body{padding-top:60px;padding-bottom:40px}.sidebar-nav{padding:9px 0}select{width:135px}label{display:inline;margin-left:18px;font-style:italic;font-size:11px;color:#888}ul,ol{padding:0;margin:0}li{margin-left:-9px}p{margin:0 0 20px}.grey{color:#999}.nav-list{padding-right:0!important;font-size:12px}blockquote{width:630px;float:left}h4 p{float:left;font-size:80px;text-shadow:1px 3px 1px #DDD,0 0 4px #333;-webkit-transition:all .2s linear;-o-transition:all .2s linear;-ms-transition:all .2s linear;-moz-transition:all .2s linear;transition:all .2s linear;margin-right:7px;margin-top:3px}h4#pixels-total{position:relative;width:166px;float:right;margin:8px 0 0 0;padding:0 0 0 54px;font-size:1.1em;line-height:1.4;font-weight:normal;color:#777;-webkit-border-top-right-radius:6px;-webkit-border-top-left-radius:20px;-moz-border-top-right-radius:6px;-moz-border-top-left-radius:20px;border-top-right-radius:6px;border-top-left-radius:20px}.greetings{clear:both;margin:0 auto;text-align:center;margin-top:40px}.alert .title{display:block}.btn-group{float:left}html.file-upload p.file-upload{float:left;margin:22px 0 0 21px;display:none}html.file-upload p.file-upload{display:inherit}html.no-file-upload p.file-upload{display:none}input.btn-upload{position:relative;left:-6px;width:100px;z-index:1;margin-top:-13px}input.hide-upload{position:relative;left:-110px;-moz-opacity:0;filter:alpha(opacity=0);opacity:0;z-index:2;width:100px;margin-top:-20px;cursor:pointer;cursor:hand;height:49px}#paste-content{background-color:white;padding:1em}#paste-content.linenums{padding-left:0}.submit-form{display:none}.paste-option{float:right}a#clip-button.hover{cursor:pointer;text-decoration:underline}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{list-style-type:decimal;background:inherit}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;-moz-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}ol.linenums{margin:0 0 0 55px}ol.linenums li{color:#bebec5;line-height:18px;text-shadow:0 1px 0 #fff}.prettyprint{padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,monospace,serif;line-height:21px;font-size:12px}.kwd{color:#66F}.pun,.opn,.clo{color:#0A0}.lit{color:#933}.com{color:#C0C}form{padding-bottom:3em!important;padding-right:17px}form textarea{overflow-y:auto;min-height:250px}button.btn,input[type="submit"].btn{margin-left:5px}.well{padding-bottom:40px;padding-right:17px}.legal{margin:0 auto;width:300px;text-align:center;margin-top:30px}.btn{margin-left:5px}.btn-primary,.btn-danger{position:relative;top:-4px}#alert-template{display:none}.progress{display:none}.progress .bar{width:25%;text-indent:10px;text-align:left}.lnk-option canvas{vertical-align:middle;margin-right:10px}.previous-pastes .item{margin-top:5px;vertical-align:middle;line-height:24px;padding-left:1em}li.item{margin-left:-13px;margin-right:-5px}.previous-pastes canvas{display:block;float:left;margin-right:5px}html.local-storage .no-local-storage{display:none}html.no-local-storage .local-storage{display:none}canvas{border:1px solid white}#wrap-content{display:none}.noscript{text-align:center;color:red;font-weight:bold}#faq dt{margin:2em 0 1em 0}#faq p{margin:1em}#force-coloration{text-decoration:underline}#expiration-tag{float:right;margin:1em;background:grey;color:white;font-size:.8em;padding:0 1ex;opacity:.5;filter:alpha(opacity=50);font-weight:bold;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box} \ No newline at end of file diff --git a/zerobin/static/js/behavior.js b/zerobin/static/js/behavior.js index bdfa986..04889fe 100644 --- a/zerobin/static/js/behavior.js +++ b/zerobin/static/js/behavior.js @@ -737,6 +737,19 @@ $("#force-coloration").live("click", function(e) { $(this).remove(); }); +/* Send the paste by email */ +var emailLink = 'mailto:friend@example.com?body=' + window.location; +$('#email-link').attr('href', emailLink).bind('click', function(e){ + $.get(emailLink).error(function(){ + zerobin.message('error', + ("You probably don't have one configured. Try " + + "Thunderbird or " + + "Gmail Notifier" ), + 'Cannot start your email client', true); + }); +}); + + }); /* End of "document ready" jquery callback */ diff --git a/zerobin/static/js/main.min.js b/zerobin/static/js/main.min.js index 77b8dae..e8761f0 100644 --- a/zerobin/static/js/main.min.js +++ b/zerobin/static/js/main.min.js @@ -48,4 +48,4 @@ b[d[2]]=d[3]?parseInt(d[3],10):d[2].match(/^(ct|salt|iv)$/)?sjcl.codec.base64.to undefined)c[b[d]]=a[b[d]];return c}};sjcl.encrypt=sjcl.json.encrypt;sjcl.decrypt=sjcl.json.decrypt;sjcl.misc.S={};sjcl.misc.cachedPbkdf2=function(a,b){var c=sjcl.misc.S,d;b=b||{};d=b.iter||1E3;c=c[a]=c[a]||{};d=c[d]=c[d]||{firstSalt:b.salt&&b.salt.length?b.salt.slice(0):sjcl.random.randomWords(2,0)};c=b.salt===undefined?d.firstSalt:b.salt;d[c]=d[c]||sjcl.misc.pbkdf2(a,c,b.iter);return{key:d[c].slice(0),salt:c.slice(0)}}; /* custom */ -(function(){sjcl.random.startCollectors();$.ajaxSetup({cache:true});function a(c){var b=arguments;return function(){return c.apply(c,Array.prototype.slice.call(b,1))}}window.zerobin={version:"0.1",encrypt:function(f,g,d,b,e,c){setTimeout(function(){g=sjcl.codec.utf8String.toBits(g);if(d){d()}setTimeout(function(){g=sjcl.codec.base64.fromBits(g);if(b){b()}setTimeout(function(){g=lzw.compress(g);if(e){e()}setTimeout(function(){g=sjcl.encrypt(f,g);if(c){c(g)}},250)},250)},250)},250)},decrypt:function(f,g,d,b,e,h,c){setTimeout(function(){try{g=sjcl.decrypt(f,g);if(b){b()}setTimeout(function(){try{g=lzw.decompress(g);if(e){e()}setTimeout(function(){try{g=sjcl.codec.base64.toBits(g);if(h){h()}setTimeout(function(){try{g=sjcl.codec.utf8String.fromBits(g);if(c){c(g)}}catch(l){d(l)}},250)}catch(k){d(k)}},250)}catch(j){d(j)}},250)}catch(i){d(i)}},250)},makeKey:function(){return sjcl.codec.base64.fromBits(sjcl.random.randomWords(8,0),0)},getFormatedDate:function(b){b=b||new Date();return((b.getMonth()+1)+"-"+b.getDate()+"-"+b.getFullYear())},getFormatedTime:function(c){c=c||new Date();var e=c.getHours();var b=c.getMinutes();var d=c.getSeconds();if(e<10){e="0"+e}if(b<10){b="0"+b}if(d<10){d="0"+d}return e+":"+b+":"+d},numOrdA:function(d,c){return(d-c)},getLocalStorageKeys:function(){var b="zerobinV0.1";var d=[];for(var c in localStorage){if(c.indexOf(b)!==-1){d.push(c)}}d.sort();d.reverse();return d},getTinyURL:function(d,c){var b="http://is.gd/create.php?format=json&url=";$.getJSON(b+encodeURIComponent(d)+"&callback=?",function(e){c(e.shorturl)})},support:{localStorage:(function(){var b=!!(localStorage);$("html").addClass((b?"":"no-")+"local-storage");return b})(),history:(function(){var b=!!(window.history&&history.pushState);$("html").addClass((b?"":"no-")+"history");return b})(),fileUpload:(function(){var b=window;var c=!!(b.File&&b.FileReader&&b.FileList&&b.Blob);$("html").addClass((c?"":"no-")+"file-upload");return c})()},storePaste:function(c,b){b=b||new Date();b=(b.getFullYear()+"-"+(b.getMonth()+1)+"-"+b.getDate()+" "+zerobin.getFormatedTime(b));var d=zerobin.getLocalStorageKeys();if(localStorage.length>19){void localStorage.removeItem(d[19])}localStorage.setItem("zerobinV"+zerobin.version+"#"+b,c)},getPreviousPastes:function(){var c=[],d=zerobin.getLocalStorageKeys(),b=zerobin.getFormatedDate();$.each(d,function(g,f){var j=f.replace(/^[^#]+#/,"");var e=j.match(/^(\d+)-(\d+)-(\d+)\s/);e=e[2]+"-"+e[3]+"-"+e[1];var h="the ";if(e===b){e=j.split(" ")[1];h="at "}c.push({displayDate:e,prefix:h,link:localStorage.getItem(f)})});return c},parseUrl:(function(){var b=document.createElement("div");b.innerHTML="";return function(c){b.firstChild.href=c;b.innerHTML=b.innerHTML;return b.firstChild}})(),getPasteId:function(b){var c=b?zerobin.parseUrl(b):window.location;return c.pathname.replace(/\/|paste/g,"")},getPasteKey:function(b){var c=b?zerobin.parseUrl(b):window.location;return c.hash.replace("#","").replace(/(\?|&).*$/,"")},getPasteContent:function(){var b="";$("#paste-content li").each(function(c){b=b+$(this).text()+"\n"});return b},count:function(h,d){var g=/(\r?\n|\r)/g;var c=/(\r?\n|\r|\s+)/g;d=d||{};d.lineBreaks=d.lineBreaks||1;var f=h.length,e=f-h.replace(/[\u0100-\uFFFF]/g,"").length,b=f-h.replace(g,"").length;return f+e+Math.max(0,d.lineBreaks*(b-1))},message:function(d,e,f,b,g){$(window).scrollTop(0);if(b){$(".alert-"+d).remove()}var c=$("#alert-template").clone().attr("id",null).addClass("alert alert-"+d);$(".message",c).html(e);if(f){$(".title",c).html(f)}else{$(".title",c).remove()}c.prependTo($("#main")).show("fadeUp",g)},progressBar:function(b){var d=$(b);var c={container:d,elem:d.find(".bar")};c.set=function(f,e){c.elem.text(f).css("width",e)};return c},isCode:function(h){var b=/[A-Z]{3}[A-Z]+|\.[a-z]|[=:<>{}\[\]$_'"&]| {2}|\t/g;var j=/(\/\*|\/\/|#|;).*$/g;var g=0;var f=0;h=h.split("\n");for(var e=0;ezerobin.max_size;var t=Math.round(p/1024);var w=Math.round(zerobin.max_size/1024);if(q){zerobin.message("error",('Your file is '+t+"KB. You have reached the maximum size limit of "+w+"KB."),"Warning!",true)}if(!q&&r.trim()){var z=$("input, textarea, select, button").prop("disabled",true);var v=zerobin.progressBar("form.well .progress");v.container.show();v.set("Converting paste to bits...","25%");try{var y=$("#expiration").val();var x=zerobin.makeKey();zerobin.encrypt(x,r,a(v.set,"Encoding to base64...","45%"),a(v.set,"Compressing...","65%"),a(v.set,"Encrypting...","85%"),function(e){v.set("Sending...","95%");var A={content:e,expiration:y};$.post("/paste/create",A).error(function(B){z.prop("disabled",false);v.container.hide();zerobin.message("error","Paste could not be saved. Please try again later.","Error")}).success(function(C){v.set("Redirecting to new paste...","100%");if(C.status==="error"){zerobin.message("error",C.message,"Error");z.prop("disabled",false);v.container.hide()}else{var B="/paste/"+C.paste+"#"+x;if(zerobin.support.localStorage){zerobin.storePaste(B)}window.location=(B)}})})}catch(s){z.prop("disabled",false);v.container.hide();zerobin.message("error","Paste could not be encrypted. Aborting.","Error")}}});var g=$("#paste-content").text().trim();var j=zerobin.getPasteKey();var i=false;if(g&&j){$.getScript("/static/js/vizhash.min.js").done(function(p,q){if(vizhash.supportCanvas){var e=vizhash.canvasHash(zerobin.getPasteId(),24,24);$('').click(function(r){r.preventDefault();if(confirm("This picture is unique to your paste so you can identify it quickly. \n\n Do you want to know more about this?")){window.open("http://is.gd/IJaMRG","_blank")}}).prependTo(".lnk-option").append(e.canvas)}});var n=$("input, textarea, select, button").prop("disabled",true);var h=zerobin.progressBar(".well form .progress");h.container.show();h.set("Decrypting paste...","25%");zerobin.decrypt(j,g,function(){h.container.hide();zerobin.message("error","Could not decrypt data (Wrong key ?)","Error")},a(h.set,"Decompressing...","45%"),a(h.set,"Base64 decoding...","65%"),a(h.set,"From bits to string...","85%"),function(e){$("#paste-content").text(e);h.set("Code coloration...","95%");setTimeout(function(){ZeroClipboard.setMoviePath("/static/js/ZeroClipboard.swf");var q=new ZeroClipboard.Client();var p=function(){q.reposition()};q.addEventListener("mouseup",function(){$("#clip-button").text("Copying paste...");q.setText(zerobin.getPasteContent())});q.addEventListener("complete",function(){$("#clip-button").text("Copy to clipboard");zerobin.message("info","The paste is now in your clipboard","",true,p)});q.glue("clip-button");window.onresize=p;$("#short-url").click(function(r){r.preventDefault();$("#short-url").text("Loading short url...");zerobin.getTinyURL(window.location.toString(),function(s){q.setText(s);$("#copy-success").hide();zerobin.message("success",''+s+"","Short url",true,p);$("#short-url").text("Get short url")})});$(".close").die().live("click",function(r){r.preventDefault();$(this).parent().fadeOut(p)});if(zerobin.isCode(e)>100){$("#paste-content").addClass("linenums");prettyPrint()}else{zerobin.message("info","The paste didn't not seem to be code, so it was not colorized. Force coloration","",false,p)}$("#paste-content").addClass("done");h.set("Done","100%");h.container.hide();n.prop("disabled",false);e=""},250)})}$(".paste-option select").live("change",function(){$(".paste-option select").val($(this).val())});$("#content").elastic();$("#content").live("keyup change",function(){if($("#content").height()<400){$(".paste-option.down").remove()}else{if($(".paste-option").length===1){$(".paste-option").clone().addClass("down").appendTo("form.well")}}});if(zerobin.support.localStorage){var l=$(".previous-pastes"),o=zerobin.getPreviousPastes();if(o.length){$.getScript("/static/js/vizhash.min.js").done(function(e,p){l.find(".item").remove();$.each(zerobin.getPreviousPastes(),function(s,u){var v=$('
  • ').appendTo(l);var r=$("").attr("href",u.link).text(u.prefix+u.displayDate).appendTo(v);if(vizhash.supportCanvas){var t=zerobin.getPasteId(u.link);var q=vizhash.canvasHash(t,24,24).canvas;r.prepend($(q).addClass("vhash"))}if(u.link.replace(/#[^#]+/,"")===window.location.pathname){v.addClass("active");r.click(function(){window.location=r.attr("href");window.location.reload()})}})})}}$(".btn-clone").click(function(p){p.preventDefault();$(".submit-form").show();$(".paste-form").hide();$("#content").val(zerobin.getPasteContent()).trigger("change")});$(".clone .btn-danger").click(function(p){p.preventDefault();$(".submit-form").hide();$(".paste-form").show()});if(zerobin.support.fileUpload){var m=function(p){var e=new FileReader();e.onload=function(q){$("#content").val(q.target.result).trigger("change")};e.readAsText(p[0])};var d=$("#file-upload");var b=$(".btn-upload");try{b.val("Uploading...");b.prop("disabled",true);d.change(function(){m(this.files)})}catch(f){zerobin.message("error","Could no upload the file","Error");b.val("Upload File");b.prop("disabled",false)}b.prop("disabled",false);b.val("Upload File");d.mouseover(a($(this).css,"cursor","pointer"))}$(".close").live("click",function(p){p.preventDefault();$(this).parent().fadeOut()});$(".email-link").each(function(q,r){var t=$(this);var e=t.attr("title").replace("__AT__","@");var s=t.text().replace("__AT__","@");var p=$(''+s+"");t.replaceWith(p)});$("#wrap-content").each(function(e,p){$(p).show()});if(zerobin.support.history&&zerobin.paste_not_found){var c=zerobin.getPasteId();var k=zerobin.getLocalStorageKeys();$.each(k,function(p,e){if(localStorage[e].indexOf(c)!==-1){localStorage.removeItem(e);return false}})}$("#force-coloration").live("click",function(p){p.preventDefault();$("#paste-content").addClass("linenums");$(this).die(p).text("Applying coloration");prettyPrint();$(this).remove()})})})(); \ No newline at end of file +(function(){sjcl.random.startCollectors();$.ajaxSetup({cache:true});function a(c){var b=arguments;return function(){return c.apply(c,Array.prototype.slice.call(b,1))}}window.zerobin={version:"0.1.1",encrypt:function(f,g,d,b,e,c){setTimeout(function(){g=sjcl.codec.utf8String.toBits(g);if(d){d()}setTimeout(function(){g=sjcl.codec.base64.fromBits(g);if(b){b()}setTimeout(function(){g=lzw.compress(g);if(e){e()}setTimeout(function(){g=sjcl.encrypt(f,g);if(c){c(g)}},250)},250)},250)},250)},decrypt:function(f,g,d,b,e,h,c){setTimeout(function(){try{g=sjcl.decrypt(f,g);if(b){b()}setTimeout(function(){try{g=lzw.decompress(g);if(e){e()}setTimeout(function(){try{g=sjcl.codec.base64.toBits(g);if(h){h()}setTimeout(function(){try{g=sjcl.codec.utf8String.fromBits(g);if(c){c(g)}}catch(l){d(l)}},250)}catch(k){d(k)}},250)}catch(j){d(j)}},250)}catch(i){d(i)}},250)},makeKey:function(){return sjcl.codec.base64.fromBits(sjcl.random.randomWords(8,0),0)},getFormatedDate:function(b){b=b||new Date();return((b.getMonth()+1)+"-"+b.getDate()+"-"+b.getFullYear())},getFormatedTime:function(c){c=c||new Date();var e=c.getHours();var b=c.getMinutes();var d=c.getSeconds();if(e<10){e="0"+e}if(b<10){b="0"+b}if(d<10){d="0"+d}return e+":"+b+":"+d},numOrdA:function(d,c){return(d-c)},getLocalStorageKeys:function(){var b="zerobinV0.1";var d=[];for(var c in localStorage){if(c.indexOf(b)!==-1){d.push(c)}}d.sort();d.reverse();return d},getTinyURL:function(d,c){var b="http://is.gd/create.php?format=json&url=";$.getJSON(b+encodeURIComponent(d)+"&callback=?",function(e){c(e.shorturl)})},support:{localStorage:(function(){var b=!!(localStorage);$("html").addClass((b?"":"no-")+"local-storage");return b})(),history:(function(){var b=!!(window.history&&history.pushState);$("html").addClass((b?"":"no-")+"history");return b})(),fileUpload:(function(){var b=window;var c=!!(b.File&&b.FileReader&&b.FileList&&b.Blob);$("html").addClass((c?"":"no-")+"file-upload");return c})()},storePaste:function(c,b){b=b||new Date();b=(b.getFullYear()+"-"+(b.getMonth()+1)+"-"+b.getDate()+" "+zerobin.getFormatedTime(b));var d=zerobin.getLocalStorageKeys();if(localStorage.length>19){void localStorage.removeItem(d[19])}localStorage.setItem("zerobinV"+zerobin.version+"#"+b,c)},getPreviousPastes:function(){var c=[],d=zerobin.getLocalStorageKeys(),b=zerobin.getFormatedDate();$.each(d,function(g,f){var j=f.replace(/^[^#]+#/,"");var e=j.match(/^(\d+)-(\d+)-(\d+)\s/);e=e[2]+"-"+e[3]+"-"+e[1];var h="the ";if(e===b){e=j.split(" ")[1];h="at "}c.push({displayDate:e,prefix:h,link:localStorage.getItem(f)})});return c},parseUrl:(function(){var b=document.createElement("div");b.innerHTML="";return function(c){b.firstChild.href=c;b.innerHTML=b.innerHTML;return b.firstChild}})(),getPasteId:function(b){var c=b?zerobin.parseUrl(b):window.location;return c.pathname.replace(/\/|paste/g,"")},getPasteKey:function(b){var c=b?zerobin.parseUrl(b):window.location;return c.hash.replace("#","").replace(/(\?|&).*$/,"")},getPasteContent:function(){var b="";$("#paste-content li").each(function(c){b=b+$(this).text()+"\n"});return b},count:function(h,d){var g=/(\r?\n|\r)/g;var c=/(\r?\n|\r|\s+)/g;d=d||{};d.lineBreaks=d.lineBreaks||1;var f=h.length,e=f-h.replace(/[\u0100-\uFFFF]/g,"").length,b=f-h.replace(g,"").length;return f+e+Math.max(0,d.lineBreaks*(b-1))},message:function(d,e,f,b,g){$(window).scrollTop(0);if(b){$(".alert-"+d).remove()}var c=$("#alert-template").clone().attr("id",null).addClass("alert alert-"+d);$(".message",c).html(e);if(f){$(".title",c).html(f)}else{$(".title",c).remove()}c.prependTo($("#main")).show("fadeUp",g)},progressBar:function(b){var d=$(b);var c={container:d,elem:d.find(".bar")};c.set=function(f,e){c.elem.text(f).css("width",e)};return c},isCode:function(h){var b=/[A-Z]{3}[A-Z]+|\.[a-z]|[=:<>{}\[\]$_'"&]| {2}|\t/g;var j=/(\/\*|\/\/|#|;).*$/g;var g=0;var f=0;h=h.split("\n");for(var e=0;ezerobin.max_size;var u=Math.round(q/1024);var x=Math.round(zerobin.max_size/1024);if(r){zerobin.message("error",('Your file is '+u+"KB. You have reached the maximum size limit of "+x+"KB."),"Warning!",true)}if(!r&&s.trim()){var A=$("input, textarea, select, button").prop("disabled",true);var w=zerobin.progressBar("form.well .progress");w.container.show();w.set("Converting paste to bits...","25%");try{var z=$("#expiration").val();var y=zerobin.makeKey();zerobin.encrypt(y,s,a(w.set,"Encoding to base64...","45%"),a(w.set,"Compressing...","65%"),a(w.set,"Encrypting...","85%"),function(e){w.set("Sending...","95%");var B={content:e,expiration:z};$.post("/paste/create",B).error(function(C){A.prop("disabled",false);w.container.hide();zerobin.message("error","Paste could not be saved. Please try again later.","Error")}).success(function(D){w.set("Redirecting to new paste...","100%");if(D.status==="error"){zerobin.message("error",D.message,"Error");A.prop("disabled",false);w.container.hide()}else{var C="/paste/"+D.paste+"#"+y;if(zerobin.support.localStorage){zerobin.storePaste(C)}window.location=(C)}})})}catch(t){A.prop("disabled",false);w.container.hide();zerobin.message("error","Paste could not be encrypted. Aborting.","Error")}}});var h=$("#paste-content").text().trim();var k=zerobin.getPasteKey();var j=false;if(h&&k){$.getScript("/static/js/vizhash.min.js").done(function(q,r){if(vizhash.supportCanvas){var e=vizhash.canvasHash(zerobin.getPasteId(),24,24);$('').click(function(s){s.preventDefault();if(confirm("This picture is unique to your paste so you can identify it quickly. \n\n Do you want to know more about this?")){window.open("http://is.gd/IJaMRG","_blank")}}).prependTo(".lnk-option").append(e.canvas)}});var o=$("input, textarea, select, button").prop("disabled",true);var i=zerobin.progressBar(".well form .progress");i.container.show();i.set("Decrypting paste...","25%");zerobin.decrypt(k,h,function(){i.container.hide();zerobin.message("error","Could not decrypt data (Wrong key ?)","Error")},a(i.set,"Decompressing...","45%"),a(i.set,"Base64 decoding...","65%"),a(i.set,"From bits to string...","85%"),function(e){$("#paste-content").text(e);i.set("Code coloration...","95%");setTimeout(function(){ZeroClipboard.setMoviePath("/static/js/ZeroClipboard.swf");var r=new ZeroClipboard.Client();var q=function(){r.reposition()};r.addEventListener("mouseup",function(){$("#clip-button").text("Copying paste...");r.setText(zerobin.getPasteContent())});r.addEventListener("complete",function(){$("#clip-button").text("Copy to clipboard");zerobin.message("info","The paste is now in your clipboard","",true,q)});r.glue("clip-button");window.onresize=q;$("#short-url").click(function(s){s.preventDefault();$("#short-url").text("Loading short url...");zerobin.getTinyURL(window.location.toString(),function(t){r.setText(t);$("#copy-success").hide();zerobin.message("success",''+t+"","Short url",true,q);$("#short-url").text("Get short url")})});$(".close").die().live("click",function(s){s.preventDefault();$(this).parent().fadeOut(q)});if(zerobin.isCode(e)>100){$("#paste-content").addClass("linenums");prettyPrint()}else{zerobin.message("info","The paste didn't not seem to be code, so it was not colorized. Force coloration","",false,q)}$("#paste-content").addClass("done");i.set("Done","100%");i.container.hide();o.prop("disabled",false);e=""},250)})}$(".paste-option select").live("change",function(){$(".paste-option select").val($(this).val())});$("#content").elastic();$("#content").live("keyup change",function(){if($("#content").height()<400){$(".paste-option.down").remove()}else{if($(".paste-option").length===1){$(".paste-option").clone().addClass("down").appendTo("form.well")}}});if(zerobin.support.localStorage){var m=$(".previous-pastes"),p=zerobin.getPreviousPastes();if(p.length){$.getScript("/static/js/vizhash.min.js").done(function(e,q){m.find(".item").remove();$.each(zerobin.getPreviousPastes(),function(t,v){var w=$('
  • ').appendTo(m);var s=$("").attr("href",v.link).text(v.prefix+v.displayDate).appendTo(w);if(vizhash.supportCanvas){var u=zerobin.getPasteId(v.link);var r=vizhash.canvasHash(u,24,24).canvas;s.prepend($(r).addClass("vhash"))}if(v.link.replace(/#[^#]+/,"")===window.location.pathname){w.addClass("active");s.click(function(){window.location=s.attr("href");window.location.reload()})}})})}}$(".btn-clone").click(function(q){q.preventDefault();$(".submit-form").show();$(".paste-form").hide();$("#content").val(zerobin.getPasteContent()).trigger("change")});$(".clone .btn-danger").click(function(q){q.preventDefault();$(".submit-form").hide();$(".paste-form").show()});if(zerobin.support.fileUpload){var n=function(q){var e=new FileReader();e.onload=function(r){$("#content").val(r.target.result).trigger("change")};e.readAsText(q[0])};var d=$("#file-upload");var b=$(".btn-upload");try{b.val("Uploading...");b.prop("disabled",true);d.change(function(){n(this.files)})}catch(g){zerobin.message("error","Could no upload the file","Error");b.val("Upload File");b.prop("disabled",false)}b.prop("disabled",false);b.val("Upload File");d.mouseover(a($(this).css,"cursor","pointer"))}$(".close").live("click",function(q){q.preventDefault();$(this).parent().fadeOut()});$(".email-link").each(function(r,s){var u=$(this);var e=u.attr("title").replace("__AT__","@");var t=u.text().replace("__AT__","@");var q=$(''+t+"");u.replaceWith(q)});$("#wrap-content").each(function(e,q){$(q).show()});if(zerobin.support.history&&zerobin.paste_not_found){var c=zerobin.getPasteId();var l=zerobin.getLocalStorageKeys();$.each(l,function(q,e){if(localStorage[e].indexOf(c)!==-1){localStorage.removeItem(e);return false}})}$("#force-coloration").live("click",function(q){q.preventDefault();$("#paste-content").addClass("linenums");$(this).die(q).text("Applying coloration");prettyPrint();$(this).remove()});var f="mailto:friend@example.com?body="+window.location;$("#email-link").attr("href",f).bind("click",function(q){$.get(f).error(function(){zerobin.message("error",("You probably don't have one configured. Try Thunderbird or Gmail Notifier"),"Cannot start your email client",true)})})})})(); \ No newline at end of file diff --git a/zerobin/views/paste.tpl b/zerobin/views/paste.tpl index dbfbf57..f2aa737 100644 --- a/zerobin/views/paste.tpl +++ b/zerobin/views/paste.tpl @@ -24,7 +24,7 @@

    Copy To Clipboard | Get short url | - Email + Email this