diff --git a/ext/upload/bookmarklet.js b/ext/upload/bookmarklet.js index b16dcd94..519adcfe 100644 --- a/ext/upload/bookmarklet.js +++ b/ext/upload/bookmarklet.js @@ -1,96 +1,155 @@ /* Imageboard to Shimmie */ // This should work with "most" sites running Danbooru/Gelbooru/Shimmie -//TODO: Make this use jQuery! +// TODO: Make this use jQuery! (if we can be sure that jquery is loaded) +// maxsize, supext, CA are set inside the bookmarklet (see theme.php) -var maxsze = (maxsze.match("(?:\.*[0-9])")) * 1024; //This assumes we are only working with MB. +var maxsize = (maxsize.match("(?:\.*[0-9])")) * 1024; // This assumes we are only working with MB. var toobig = "The file you are trying to upload is too big to upload!"; var notsup = "The file you are trying to upload is not supported!"; -if (CA === 0 || CA > 2){ //Default - if (confirm("OK = Use Current tags.\nCancel = Use new tags.")==true){ - //Do nothing - }else{ - var tag=prompt("Enter Tags",""); - var chk=1; //This makes sure it doesn't use current tags. + +if(CA === 0 || CA > 2) { // Default + if(confirm("Keep existing tags?\n(Cancel will prompt for new tags)")) { + // Do nothing } -}else if (CA === 1){ //Current Tags - //Do nothing -}else if (CA === 2){ //New Tags - var tag=prompt("Enter Tags",""); - var chk=1; + else { + var tag = prompt("Enter Tags", ""); + var chk = 1; // This makes sure it doesn't use current tags. + } +} +else if(CA === 1) { // Current Tags + // Do nothing +} +else if(CA === 2) { // New Tags + var tag = prompt("Enter Tags", ""); + var chk = 1; } -// Danbooru | oreno.imouto | konachan | sankakucomplex -if(document.getElementById("post_tags") !== null){ - if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementById("post_tags").value;} - tag = tag.replace(/\+/g, "%2B"); //This should stop + not showing in tags :x - var srx="http://" + document.location.hostname + document.location.href.match("\/post\/show\/[0-9]+"); - if(srx.search("oreno\\.imouto") >= 0 || srx.search("konachan\\.com") >= 0){ - var rtg=document.getElementById("stats").innerHTML.match("
  • Rating: (.*) Rating: (.*)<\/li>")[1]; + +/* + * Danbooru (oreno.imouto | konachan | sankakucomplex) + */ +if(document.getElementById("post_tags") !== null) { + if (typeof tag !== "ftp://ftp." && chk !==1) { + var tag = document.getElementById("post_tags").value; + } + tag = tag.replace(/\+/g, "%2B"); // This should stop + not showing in tags :x + + var source = "http://" + document.location.hostname + document.location.href.match("\/post\/show\/[0-9]+"); + if(source.search("oreno\\.imouto") >= 0 || source.search("konachan\\.com") >= 0) { + var rating = document.getElementById("stats").innerHTML.match("
  • Rating: (.*) Rating: (.*)<\/li>")[1]; } if(tag.search(/\bflash\b/)===-1){ - var hrs=document.getElementById("highres").href; - if(srx.search("oreno\\.imouto") >= 0 || srx.search("konachan\\.com") >= 0){ //oreno's theme seems to have moved the filesize - var filesze = document.getElementById("highres").innerHTML.match("[a-zA-Z0-9]+ \\(+([0-9]+\\.[0-9]+) ([a-zA-Z]+)"); + var highres_url = document.getElementById("highres").href; + if(source.search("oreno\\.imouto") >= 0 || source.search("konachan\\.com") >= 0){ // oreno's theme seems to have moved the filesize + var filesize = document.getElementById("highres").innerHTML.match("[a-zA-Z0-9]+ \\(+([0-9]+\\.[0-9]+) ([a-zA-Z]+)"); }else{ - var filesze=document.getElementById("stats").innerHTML.match("[0-9] \\(((?:\.*[0-9])) ([a-zA-Z]+)"); + var filesize = document.getElementById("stats").innerHTML.match("[0-9] \\(((?:\.*[0-9])) ([a-zA-Z]+)"); + } + if(filesize[2] == "MB") { + var filesize = filesize[1] * 1024; + } + else { + var filesize = filesize[2].match("[0-9]+"); } - if(filesze[2] == "MB"){var filesze = filesze[1] * 1024;}else{var filesze = filesze[2].match("[0-9]+");} - if(supext.search(hrs.match("http\:\/\/.*\\.([a-z0-9]+)")[1]) !== -1){ - if(filesze <= maxsze){ - if(srx.search("oreno\\.imouto") >= 0){ - //this regex tends to be a bit picky with tags -_-;; - var hrs=hrs.match("(http\:\/\/[a-z0-9]+\.[a-z]+\.[a-z]\/[a-z0-9]+\/[a-z0-9]+)\/[a-z0-9A-Z%_-]+(\.[a-zA-Z0-9]+)"); - var hrs=hrs[1]+hrs[2]; //this should bypass hotlink protection - }else if(srx.search("konachan\\.com") >= 0){ - //konachan affixs konachan.com to the start of the tags, this requires different regex - var hrs=hrs.match("(http\:\/\/[a-z0-9]+\.[a-z]+\.[a-z]\/[a-z0-9]+\/[a-z0-9]+)\/[a-z0-9A-Z%_]+\.[a-zA-Z0-9%_-]+(\.[a-z0-9A-Z]+)") - var hrs=hrs[1]+hrs[2]; + if(supext.search(highres_url.match("http\:\/\/.*\\.([a-z0-9]+)")[1]) !== -1) { + if(filesize <= maxsize) { + if(source.search("oreno\\.imouto") >= 0) { + // this regex tends to be a bit picky with tags -_-;; + var highres_url = highres_url.match("(http\:\/\/[a-z0-9]+\.[a-z]+\.[a-z]\/[a-z0-9]+\/[a-z0-9]+)\/[a-z0-9A-Z%_-]+(\.[a-zA-Z0-9]+)"); + var highres_url = highres_url[1]+highres_url[2]; // this should bypass hotlink protection } - location.href=ste+hrs+"&tags="+tag+"&rating="+rtg+"&source="+srx; - }else{alert(toobig);} - }else{alert(notsup);} - }else{ - if(supext.search("swf") !== -1){ - location.href=ste+document.getElementsByName("movie")[0].value+"&tags="+tag+"&rating="+rtg+"&source="+srx; - }else{alert(notsup);} + else if(source.search("konachan\\.com") >= 0) { + // konachan affixs konachan.com to the start of the tags, this requires different regex + var highres_url = highres_url.match("(http\:\/\/[a-z0-9]+\.[a-z]+\.[a-z]\/[a-z0-9]+\/[a-z0-9]+)\/[a-z0-9A-Z%_]+\.[a-zA-Z0-9%_-]+(\.[a-z0-9A-Z]+)") + var highres_url = highres_url[1]+highres_url[2]; + } + location.href = ste+highres_url+"&tags="+tag+"&rating="+rating+"&source="+source; + } + else{ + alert(toobig); + } + } + else{ + alert(notsup); + } + } + else { + if(supext.search("swf") !== -1) { + location.href = ste+document.getElementsByName("movie")[0].value+"&tags="+tag+"&rating="+rating+"&source="+source; + } + else{ + alert(notsup); + } } } -/* Shimmie -One problem with shimmie is each theme does not show the same info as other themes (I.E only the danbooru & lite themes show statistics) -Shimmie doesn't seem to have any way to grab tags via id unless you have the ability to edit tags. -Have to go the round about way of checking the title for tags. -This crazy way of checking "should" work with older releases though (Seems to work with 2009~ ver) */ -else if(document.getElementsByTagName("title")[0].innerHTML.search("Image [0-9.-]+\: ")==0){ - if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementsByTagName("title")[0].innerHTML.match("Image [0-9.-]+\: (.*)")[1];} - //TODO: Make rating show in statistics. - var srx="http://" + document.location.hostname + document.location.href.match("\/post\/view\/[0-9]+"); - /*TODO: Make file size show on all themes (Only seems to show in lite/Danbooru themes.)*/ - if(tag.search(/\bflash\b/)==-1){ + +/* + * Shimmie + * + * One problem with shimmie is each theme does not show the same info + * as other themes (I.E only the danbooru & lite themes show statistics) + * Shimmie doesn't seem to have any way to grab tags via id unless you + * have the ability to edit tags. + * + * Have to go the round about way of checking the title for tags. + * This crazy way of checking "should" work with older releases though + * (Seems to work with 2009~ ver) + */ +else if(document.getElementsByTagName("title")[0].innerHTML.search("Image [0-9.-]+\: ") == 0) { + if(typeof tag !=="ftp://ftp." && chk !==1) { + var tag = document.getElementsByTagName("title")[0].innerHTML.match("Image [0-9.-]+\: (.*)")[1]; + } + + // TODO: Make rating show in statistics. + var source = "http://" + document.location.hostname + document.location.href.match("\/post\/view\/[0-9]+"); + + // TODO: Make file size show on all themes + // (Only seems to show in lite/Danbooru themes.) + if(tag.search(/\bflash\b/) == -1) { var img = document.getElementById("main_image").src; - if(supext.search(img.match(".*\\.([a-z0-9]+)")[1]) !== -1){ - location.href=ste+img+"&tags="+tag+"&source="+srx; - }else{alert(notsup);} - }else{ + if(supext.search(img.match(".*\\.([a-z0-9]+)")[1]) !== -1) { + location.href = ste+img+"&tags="+tag+"&source="+source; + } + else{ + alert(notsup); + } + } + else{ var mov = document.location.hostname+document.getElementsByName("movie")[0].value; - if(supext.search("swf") !== -1){ - location.href=ste+mov+"&tags="+tag+"&source="+srx; - }else{alert(notsup);} + if(supext.search("swf") !== -1) { + location.href = ste+mov+"&tags="+tag+"&source="+source; + } + else{ + alert(notsup); + } } } -// Gelbooru -else if(document.getElementById("tags") !== null){ - if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementById("tags").value;} - var rtg=document.getElementById("stats").innerHTML.match("
  • Rating: (.*)<\/li>")[1]; - //Can't seem to grab source due to url containing a & - //var srx="http://" + document.location.hostname + document.location.href.match("\/index\.php?page=post&s=view\\&id=.*"); - var gmi=document.getElementById("image").src.match(".*img[0-9]+\.gelbooru\.com\/\/images\/[0-9]+\/[a-z0-9]+\.[a-z0-9]+")[0]; - //Since Gelbooru does not allow flash, no need to search for flash tag. - //Gelbooru doesn't show file size in statistics either... + +/* + * Gelbooru + */ +else if(document.getElementById("tags") !== null) { + if (typeof tag !=="ftp://ftp." && chk !==1) { + var tag = document.getElementById("tags").value; + } + + var rating = document.getElementById("stats").innerHTML.match("
  • Rating: (.*)<\/li>")[1]; + + // Can't seem to grab source due to url containing a & + // var source="http://" + document.location.hostname + document.location.href.match("\/index\.php?page=post&s=view\\&id=.*"); + var gmi = document.getElementById("image").src.match(".*img[0-9]+\.gelbooru\.com\/\/images\/[0-9]+\/[a-z0-9]+\.[a-z0-9]+")[0]; + + // Since Gelbooru does not allow flash, no need to search for flash tag. + // Gelbooru doesn't show file size in statistics either... if(supext.search(gmi.match("http\:\/\/.*\\.([a-z0-9]+)")[1]) !== -1){ - location.href=ste+gmi+"&tags="+tag+"&rating="+rtg;//+"&source="+srx; - }else{alert(notsup);} + location.href = ste+gmi+"&tags="+tag+"&rating="+rating;//+"&source="+source; + } + else{ + alert(notsup); + } } diff --git a/ext/upload/theme.php b/ext/upload/theme.php index 8c3dca71..48160967 100644 --- a/ext/upload/theme.php +++ b/ext/upload/theme.php @@ -141,7 +141,7 @@ class UploadTheme extends Themelet { if(file_exists("ext/handle_svg")){$supported_ext .= " svg";} $title = "Booru to " . $config->get_string('title'); //CA=0: Ask to use current or new tags | CA=1: Always use current tags | CA=2: Always use new tags - $html .= '

    '. + $html .= '

    '. $title . ' (Click when looking at an image page. Works on sites running Shimmie/Danbooru/Gelbooru. (This also grabs the tags/rating/source!))'; }