diff --git a/ext/upload/bookmarklet.js b/ext/upload/bookmarklet.js index 5ca4cca0..05646134 100644 --- a/ext/upload/bookmarklet.js +++ b/ext/upload/bookmarklet.js @@ -1,16 +1,31 @@ /* Imageboard to Shimmie */ // This should work with "most" sites running Danbooru/Gelbooru/Shimmie +var maxsze = (maxsze.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 (confirm("OK = Use Current tags.\nCancel = Use new tags.")==true){}else{var tag=prompt("Enter Tags","");var chk=1;}; + // Danbooru if(document.getElementById("post_tags") !== null){ if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementById("post_tags").value;} - var rtg=document.documentElement.innerHTML.match("
  • Rating: (.*)<\/li>")[1]; + var rtg=document.getElementById("stats").innerHTML.match("
  • Rating: (.*)<\/li>")[1]; var srx="http://" + document.location.hostname + document.location.href.match("\/post\/show\/[0-9]+\/"); + var filesze=document.getElementById("stats").innerHTML.match("[0-9] \\(((?:\.*[0-9])) ([a-zA-Z]+)"); + if(filesze[2] == "MB"){var filesze = filesze[1] * 1024;}else{var filesze = filesze[2].match("[0-9]+");} if(tag.search(/\bflash\b/)==-1){ - location.href=ste+document.getElementById("highres").href+"&tags="+tag+"&rating="+rtg[1]+"&source="+srx; + if(supext.search(document.getElementById("highres").href.match("http\:\/\/.*\\.([a-z0-9]+)")[1]) !== -1){ + if(filesze <= maxsze){ + location.href=ste+document.getElementById("highres").href+"&tags="+tag+"&rating="+rtg[1]+"&source="+srx; + }else{alert(toobig);} + }else{alert(notsup);} }else{ - location.href=ste+document.getElementsByName("movie")[0].value+"&tags="+tag+"&rating="+rtg[1]+"&source="+srx; + if(supext.search(document.getElementById("highres").href.match("http\:\/\/.*\\.([a-z0-9]+)")[1]) !== -1){ + if(filesze <= maxsze){ + location.href=ste+document.getElementsByName("movie")[0].value+"&tags="+tag+"&rating="+rtg[1]+"&source="+srx; + }else{alert(toobig);} + }else{alert(notsup);} } } /* Shimmie @@ -21,23 +36,31 @@ else if(document.getElementsByTagName("title")[0].innerHTML.search("Image [0-9.- 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: Figure out regex for shortening file link. - I.E http://blah.net/_images/1234abcd/everysingletag.png > http://blah.net/_images/1234abcd.png - .match("WEBSITE.NET\/_images\/[A-Za-z0-9]+", "(\\.[a-z][a-z]+)")*/ + /*TODO: Figure out regex for shortening file link. I.E http://blah.net/_images/1234abcd/everysingletag.png > http://blah.net/_images/1234abcd.png*/ + /*TODO: Make file size show on all themes (Only seems to show in lite/Danbooru themes.)*/ if(tag.search(/\bflash\b/)==-1){ - location.href=ste+document.getElementById("main_image").src+"&tags="+tag+"&source="+srx; + 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{ - location.href=ste+document.location.hostname+document.getElementsByName("movie")[0].value+"&tags="+tag+"&source="+srx; + var mov = document.location.hostname+document.getElementsByName("movie")[0].value; + if(supext.search(mov.match(".*\\.([a-z0-9]+)")[1]) !== -1){ + location.href=ste+mov+"&tags="+tag+"&source="+srx; + }else{alert(notsup);} } } // Gelbooru else if(document.getElementById("tags") !== null){ - //Gelbooru has an annoying anti-hotlinking thing which doesn't seem to like the bookmarklet... + //Gelbooru has an annoying anti-hotlinking thing which doesn't seem to like the bookmarklet. if (typeof tag !=="ftp://ftp." && chk !==1){var tag=document.getElementById("tags").value;} - var rtg=document.documentElement.innerHTML.match("
  • Rating: (.*)<\/li>")[1]; + 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. - location.href=ste+gmi+"&tags="+tag+"&rating="+rtg[1];//+"&source="+srx; + //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[1];//+"&source="+srx; + }else{alert(notsup);} } diff --git a/ext/upload/theme.php b/ext/upload/theme.php index 6f83a0b2..ecdc64a5 100644 --- a/ext/upload/theme.php +++ b/ext/upload/theme.php @@ -146,9 +146,15 @@ class UploadTheme extends Themelet { It would also work with Gelbooru but unless someone can figure out how to bypass their hotlinking..meh. The bookmarklet is now also loaded via the .js file in this folder. */ + //Bookmarklet checks if shimmie supports ext. If not, won't upload to site/shows alert saying not supported. + $supported_ext = "jpg jpeg gif png"; + if(file_exists("ext/handle_flash")){$supported_ext .= " swf";} + if(file_exists("ext/handle_ico")){$supported_ext .= " ico ani cur";} + if(file_exists("ext/handle_mp3")){$supported_ext .= " mp3";} + if(file_exists("ext/handle_svg")){$supported_ext .= " svg";} $title = "Booru to " . $config->get_string('title'); - $html .= '

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

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