make bookmarklet.js easier to read
This commit is contained in:
		
							parent
							
								
									8b62ad281a
								
							
						
					
					
						commit
						b17fe7e7bd
					
				@ -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("<li>Rating: (.*) <span")[1];
 | 
			
		||||
	}else{
 | 
			
		||||
		var rtg=document.getElementById("stats").innerHTML.match("<li>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("<li>Rating: (.*) <span")[1];
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
		var rating = document.getElementById("stats").innerHTML.match("<li>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("<li>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("<li>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);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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 .= '<p><a href="javascript:var ste="'. $link . $delimiter .'url="; var supext="'.$supported_ext.'"; var maxsze="'.$max_kb.'"; var CA=0; void(document.body.appendChild(document.createElement("script")).src="'.make_http(get_base_href())."/ext/upload/bookmarklet.js".'")">'.
 | 
			
		||||
			$html .= '<p><a href="javascript:var ste="'. $link . $delimiter .'url="; var supext="'.$supported_ext.'"; var maxsize="'.$max_kb.'"; var CA=0; void(document.body.appendChild(document.createElement("script")).src="'.make_http(get_base_href())."/ext/upload/bookmarklet.js".'")">'.
 | 
			
		||||
				$title . '</a> (Click when looking at an image page. Works on sites running Shimmie/Danbooru/Gelbooru. (This also grabs the tags/rating/source!))';
 | 
			
		||||
			}
 | 
			
		||||
				
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user