Dynasty Thingifier

Adds post links and quote stuff to Dynasty forums

Från och med 2015-08-23. Se den senaste versionen.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name        Dynasty Thingifier
// @namespace   Alice Cheshire
// @include     http://dynasty-scans.com/*
// @version     1.3.4.3
// @require     http://code.jquery.com/jquery-2.1.4.min.js
// @description Adds post links and quote stuff to Dynasty forums
// @grant		GM_setValue
// @grant		GM_getValue
// @grant		GM_deleteValue
// @grant		GM_listValue
// @run-at document-end
// ==/UserScript==
varinit();
checkpostpage();
genmenu();
menuclicks();
cleardata();
configload();
setuserid();

if (window.isuserpostsurl.match(/http:\/\/dynasty-scans.com\/forum\/posts\?user_id=\d+/)) {
	window.isuserpostsurl = window.isuserpostsurl.replace(/\d+/, ""); //Replaces the user id in the url
}
for (i = 0; i < window.postcount; i++){
	var id = window.postids[i].toString(); //Temporarily store the post id under the key of 'i' into a variable to use in our next bit
	if(window.isuserpostsurl !== "http://dynasty-scans.com/forum/posts?user_id=") { 
		$(".time").eq(i).replaceWith("<div class=\"span5 time\"><a href=\"" + window.pageurl + "#" + id + "\">" + $(".time").eq(i).text() + "</a></div>"); //If we're not on the user posts page then we turn all post timestamps on a page into an anchor link
	}
}
$('a').hover(function(e) { //When we click a link run this code
	if ($(e.target).text() == "Quote") { //Make sure that the clicked link is the quote button
		var quoteid = $(e.target).parents(); //Gets all the parent elements of our link
		quoteid = quoteid[4]; //Selects the fourth parent which is the .forum_post parent of the link
		quoteid = $(quoteid).attr('id'); //Gets the id of the .forum_post parent
		quoteid = "#" + quoteid; //Adds a url anchor sign to the id
		quoteid = quoteid.toString(); //Converts it to a string to make sure it cooperates
		GM_setValue("quoteid", window.pageurl + quoteid);
		var quotename = $(quoteid).find(".user").text(); //Retrieve the quoted user's name
		quotename = quotename.replace(/Staff|Moderator|Uploader/, ""); //For staff, mods, and uploaders find and remove their title
		quotename = $.trim(quotename); //Trim the whitespace/newlines off the beginning and end
		GM_setValue("quotename", quotename);
		console.log("Quote id: " + GM_getValue("quoteid") + ", Quote name: " + GMgetValue("quotename"));
	} else { /*This is where code would run if we were doing anything for clicking other links*/ }
});

//Checks if we're on the posting page
function checkpostpage() {
	var quoting = pageurl.replace(/http:\/\/dynasty-scans.com\/forum\//, "");
	quoting = quoting.replace(/\?.+/, "");
	if (quoting === "posts/new") {
		var post = GM_getValue("quoteid");
		var username = GM_getValue("quotename");
		console.log(post + "\n" + username);
		quote = "[" + username + "](" + post + ")";
		message = "\n" + document.getElementById('forum_post_message').value;
		document.getElementById('forum_post_message').value = quote + message;
	}
}

//Initializes our global variables
function varinit() {
	window.pageurl = document.location.toString(); //Stores the entire value of the address bar into a variable
	window.isuserpostsurl = window.pageurl; //Stores the address variable a second time for use in a different function
	window.postids = []; //Initializes a blank array for the postids
	window.postcount = 0;  //Counter to keep track of how many posts are on the current page
	window.pageurl = window.pageurl.replace(/(#.+)/, ""); //Removes any anchors from the stored url so we don't get issues with multiple anchors showing up
	$('.forum_post').each(function() {
 		window.postids.push(this.id); //For each element of the class forum_post push the element's id to our postids array
	});
	$('.time').each(function(i, obj) {
		window.postcount++; //This is where we actually count how many posts are on the page
	});
  	console.log("Line 81");
	var tmp;
	if (GM_getValue("youruserid", "Not set") === undefined) {
		tmp = "Not set";
	} else {
		tmp = GM_getValue("youruserid", "Not set");
	}
  	console.log("Your id: " + tmp);
	if (tmp.match(/\d+/)) {
		window.yourid = "http://dynasty-scans.com/forum/posts?user_id=" + GM_getValue("youruserid");
		window.useridset = true;
    	console.log("Your id: " + window.yourid + ", ID set? " + window.useridset);
	} else {
		window.yourid = "Your user id isn't set!";
		window.useridset = false;
		console.log(window.useridset);
  	}
	window.configmenustate = true;
}

function genmenu(){
	var menustructure = '\
		<style>\
			#thingifier * { padding: 0; margin: 0; }\
			#thingifier {\
				float: left;\
				position: fixed;\
				top: 45%;\
				z-index: 1000000;\
			}\
			#thingifier-options {\
				border: 1px solid black;\
				padding: 8px;\
				background: aliceblue;\
				border-bottom-right-radius: 6px;\
				border-left-width: 0;\
			}\
			#thingifier-options ul { list-style-type: none; margin-left: -4px;}\
			#thingifier-options ul > li {  vertical-align: middle; }\
			#thingifier ul li input { padding-right: 4px; }\
			#thingifier-font-size { width: 96px; }\
			#thingifier-toggle-button {\
				position: absolute;\
				top: 0;\
				left: calc(100% - 1px);\
				width: 24px;\
				height: 24px;\
				border: 1px solid black;\
				background-color: aliceblue;\
				color: red;\
				border-top-right-radius: 6px;\
				border-bottom-right-radius: 6px;\
				border-left-width: 0;\
			}\
			.spoilers-disabled {\
				background: #666 none repeat scroll 0% 0%;\
    			color: #fff;\
			}\
  			.navbar-fixed {\
    			position: fixed;\
    			z-index: 1000;\
    			width: 1210px;\
  			}\
  			.pull-right-fixed, .nav-collapse-fixed {\
    			float: right;\
  			}\
			.nav-padding {\
				height: 60px;\
				width: 1210px;\
			}\
		</style>\
    <div id=\"thingifier\">\
		<div id=\"thingifier-options\">\
			<ul>\
			<li><input type=\"checkbox\" id=\"thingifier-unhide-spoilers\"> Unhide spoilers</li>\
			<li><input type=\"checkbox\" id=\"thingifier-fixed-navbar\"> Fixed navbar</li>\
			<li><input type=\"checkbox\" id=\"thingifier-pagination\"> Add page selector to top of page</li>\
			<li><input type=\"checkbox\" id=\"thingifier-bbcode-buttons\" disabled=\"true\"> Add quick reply and post page bbcode buttons</li>\
			<li><input type=\"checkbox\" id=\"thingifier-quote-to-quickreply\" disabled=\"true\"> Quote to quick reply instead of new post page</li>\
			<li><input type=\"checkbox\" id=\"thingifier-quote-move-quickreply\" disabled=\"true\"> Move quick reply to under quoted post</li>\
			<li><input type=\"range\" id=\"thingifier-font-size\" min=\"1\" max=\"5\" disabled=\"true\"> Change font size</li>\
			<li><a href=\"' + window.yourid + '\" id=\"thingifier-ownposts\"> Your posts</a></li>\
			<li><input type="text" id="useridinput"><input type="button" value="Submit user id" id="useridsubmit"></li>\
			<li><input type=\"button\" id=\"thingifier-clear\" value=\"Clear stored data\"></li>\
			</ul>\
		</div>\
    <div id=\"thingified-toggle\">\
    <input type=\"button" id=\"thingifier-toggle-button\" value=\"X\">\
    </div></div>';
	$('body').prepend(menustructure);
	$('#useridinput').hide();
	$('#useridsubmit').hide();
	if (!window.useridset) {
		console.log("Checking if user id is set to prepare to replace menu, " + window.useridset);
		GM_deleteValue("youruserid");
		$('#thingifier-ownposts').hide();
		$('#useridinput').show();
		$('#useridsubmit').show();
		setuserid();
	} else {
		console.log("Checking if user id is set to prepare to replace menu, " + window.useridset);
	}
}
function setuserid() {
	GM_deleteValue("youruserid");
	console.log("setuserid function is being executed");
	$('input#useridsubmit').click(function () {
		console.log($("input#useridinput").val());
		if($("input#useridinput").val().match(/^\d+$/)) {
			console.log($("input#useridinput").val());
			GM_setValue("youruserid", $('input#useridinput').val());
			$('#useridinput').hide();
			$('#useridsubmit').hide();
			$('#thingifier-ownposts').show();
			$('#thingifier-ownposts').attr('href', "http://dynasty-scans.com/forum/posts?user_id=" + GM_getValue("youruserid"));
		} else {
			console.log($("input#useridinput").val());
			$("input#useridinput").val();
			$('input#useridinput').val("Invalid user id!");
		}
	});
}
function cleardata() {
	$('#thingifier-clear').click(function() {
		console.log("Clear button clicked");
		var x = window.confirm("Are you sure you want to clear your stored data?");
		if (x) {
			GM_deleteValue("youruserid");
			GM_deleteValue("quoteid");
			GM_deleteValue("quotename");
			GM_deleteValue("spoilers");
			GM_deleteValue("navbar");
			GM_deleteValue("pagination");
			console.log(GM_getValue("youruserid", "Not set"));
			console.log(GM_getValue("quoteid", "Not set"));
			console.log(GM_getValue("quotename", "Not set"));
			console.log(GM_getValue("spoilers", "Not set"));
			console.log(GM_getValue("navbar", "Not set"));
			console.log(GM_getValue("pagination", "Not set"));
			document.location.reload(true);
		} else {
			console.log("Decided against it");
		}
	});
}
function menuclicks() {
	$('#thingifier-toggle-button').click(function() {
		$("#thingifier-options").animate({width:'toggle', height:'toggle'},350);
		window.configmenustate ^= true;
		if (window.configmenustate) {
			$('#thingifier-toggle-button').val('▶');
		} else {
			$('#thingifier-toggle-button').val('◀');
		}
		GM_setValue("configmenustate", window.configmenustate);
	});
	$('#thingifier-unhide-spoilers').click(function() {
		if ($('#thingifier-unhide-spoilers').is(":checked")) {
			GM_setValue("spoilers", $('#thingifier-unhide-spoilers').is(":checked"));
			$('.spoilers').addClass('spoilers-disabled');
		} else {
			GM_setValue("spoilers", $('#thingifier-unhide-spoilers').is(":checked"));
			$('.spoilers').removeClass('spoilers-disabled');
		}
	});
	$('#thingifier-fixed-navbar').click(function() {
		if ($('#thingifier-fixed-navbar').is(":checked")) {
			GM_setValue("navbar", $('#thingifier-fixed-navbar').is(":checked"));
			$('.navbar').addClass('navbar-fixed');
			$("<div class=\"nav-padding\"></div>").insertAfter(".navbar");
		} else {
			GM_setValue("navbar", $('#thingifier-fixed-navbar').is(":checked"));
			$('.navbar').removeClass('navbar-fixed');
			$('div.nav-padding').remove();
		}
	});
	$('#thingifier-pagination').click(function() {
		if ($('#thingifier-pagination').is(":checked")) {
			GM_setValue("pagination", $('#thingifier-pagination').is(":checked"));
			$("div.pagination").wrap('<div class=\"tmp\">').parent().html();
			var tmp = $('div.tmp').html();
			$("div.pagination").unwrap();
			$('.posts').prepend(tmp);
		} else {
			GM_setValue("pagination", $('#thingifier-pagination').is(":checked"));
			$("div.pagination").first().remove();
		}
	});
}

function configload() {
	window.configmenustate = GM_getValue("configmenustate", 1);
	if (window.configmenustate) {
		$("#thingifier-options").animate({width:'toggle', height:'toggle'},0);
			$('#thingifier-toggle-button').val('▶');
		} else {
			$('#thingifier-toggle-button').val('◀');
		}
	window.configspoiler = GM_getValue("spoilers", false);
	if (window.configspoiler) {
		$('.spoilers').addClass('spoilers-disabled');
		$('#thingifier-unhide-spoilers').prop('checked', true);
	}
	window.confignavbar = GM_getValue("navbar", false);
	if (window.confignavbar ) {
		$('.navbar').addClass('navbar-fixed');
		$("<div class=\"nav-padding\"></div>").insertAfter(".navbar");
		$('#thingifier-fixed-navbar').prop('checked', true);
	}
	window.configpagination = GM_getValue("pagination", false);
	if (window.configpagination ) {
		$("div.pagination").wrap('<div class=\"tmp\">').parent().html();
		var tmp = $('div.tmp').html();
		$("div.pagination").unwrap();
		$('.posts').prepend(tmp);
		$('#thingifier-pagination').prop('checked', true);
	}
}