- // ==UserScript==
- // @name BroniesNL Customizer
- // @namespace Ossie/BroniesNL/Customizer
- // @description Een user script om de interface (achtergrond, banner en kleur accenten) van Bronies.nl aan te passen en enkele problemen met het forum op te lossen.
- // @include http://www.bronies.nl/*
- // @include https://www.bronies.nl/*
- // @include http://bronies.nl/*
- // @include https://bronies.nl/*
- // @exclude /\w*(gif|jpg|jpeg|png)/
- // @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
- // @require //cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js
- // @version 2.5
- // @grant GM_getValue
- // @grant GM_setValue
- // ==/UserScript==
-
- var settings = {"background":"Official","cusback":"","banner":"Official","cusban":"","theme":"Normal","noimages":0,"limitimages":1,"bettertime":1};
- loadSettings();
-
- var darkmod = [['body','color','#ddd'],['h2, h3','color','#ccc'],['.forumheader, .forumheader2, .forumheader3, .forumheader4, .fcaption, .finfobar', 'background-color','rgba(16,16,16,0.8)'],['.forumheader, .forumheader2, .forumheader3, .forumheader4, .fcaption, .finfobar', 'border','1px solid #2c65a4'],['#wrapper .smalltext','color','#ddd'],['#wrapper','border-radius','4px'],['.smalltext','color','#ddd'],['a:link, a:visited','color','#3f9aef'],['a:hover','color','#86bcef'],['#navigation','background-color',''],['.indent','background-color','rgba(0,0,0,0.1)'],['#wrapper','background','rgba(16,16,16,0.7)'],['.defaultform','background','rgba(255,255,255,0.1)'],['.npbutton','background','rgb(255,255,255)'],['#footer','background','url()'],['code span','color','#ddd']];
- var whitemod = [['body','color','#111'],['h2, h3','color','#222'],['.forumheader, .forumheader2, .forumheader3, .forumheader4, .fcaption, .finfobar', 'background-color','rgba(255,255,255,0.8)'],['.forumheader, .forumheader2, .forumheader3, .forumheader4, .fcaption, .finfobar', 'border','1px solid #AAA'],['#wrapper .smalltext','color','#111'],['#wrapper','border-radius','4px'],['.smalltext','color','#111'],['a:link, a:visited','color','#3f7aef'],['a:hover','color','#86bcef'],['#navigation','background-color',''],['.indent','background-color','rgb(255,255,255)'],['#wrapper','background','rgba(255,255,255,0.5)'],['.defaultform','background','rgba(255,255,255,0.4)'],['.npbutton','background','rgb(255,255,255)'],['#footer','background','url()']];
- var normal = [['body','color',''],['.forumheader, .forumheader2, .forumheader3, .forumheader4, .fcaption, .finfobar', 'background-color',''],['.forumheader, .forumheader2, .forumheader3, .forumheader4, .fcaption, .finfobar', 'border',''],['#wrapper .smalltext','color',''],['#wrapper','border-radius',''],['.smalltext','color',''],['a:link, a:visited','color',''],['a:hover','color',''],['#navigation','background-color',''],['.indent','background-color',''],['#wrapper','background',''],['.defaultform','background',''],['.npbutton','background',''],['#footer','background','']];
-
- var themes = ["Dark Mod", "White Mod", "Normal"];
- var backgrounds = {"Dark Mod":"http://i.imgur.com/rc4ARbY.jpg","Official":"http://www.bronies.nl/e107_themes/leaf/images/background_mlp2.jpg","None - White":"http://i.imgur.com/GHpkydG.png","None - Grey":"http://i.imgur.com/8KvYUOS.png","None - Black":"http://i.imgur.com/7gMwArd.png"};
- var banners = {"Dark Mod":"http://i.imgur.com/QKNikxE.jpg","Official":"http://www.bronies.nl/e107_themes/leaf/images/01_header.png","Original":"http://i.imgur.com/Hiu5h1P.png","Rainbow Dash":"http://i.imgur.com/zIDVEHs.png","Luna/Zecora/Chrysalis":"http://i.imgur.com/JBfkwiX.png","Discord":"http://i.imgur.com/L3p8owm.jpg","None":""};
-
- var optionsbutton = '<img class="customizerbutton" src="http://i.imgur.com/W3b3Sbv.png" style="position:absolute;right:0px;top:0px;z-index:1000;"></img>';
-
- //0
- var sback = '';
- for(back in backgrounds){
- var sel = settings["background"] == back ? 'selected="selected"' : '';
- sback += '<option value="'+back+'" '+sel+'>'+back+'</option>';
- }
-
- //2
- var sban = '';
- for(ban in banners){
- var sel = settings["banner"] == ban ? 'selected="selected"' : '';
- sban += '<option value="'+ban+'" '+sel+'>'+ban+'</option>';
- }
-
- //4
- var st = '';
- for(t in themes){
- var sel = settings["theme"] == themes[t] ? 'selected="selected"' : '';
- st += '<option value="'+themes[t]+'" '+sel+'>'+themes[t]+'</option>';
- }
-
- //5
- var sni = settings["noimages"] ? 'checked="yes"' : '';
- var sli = settings["limitimages"] ? 'checked="yes"' : '';
- var sbt = settings["bettertime"] ? 'checked="yes"' : '';
-
- var options = format('<div class="customizeroptions" style="color:#FFF;text-align:left;display:none;position:absolute;right:0px;top:0px;z-index:999;background:rgba(50,50,50,0.6);border:1px solid rgba(150,150,150,0.5);padding:20px;">\
- <span>Background:</span>\
- <select name="cbackground" id="cbackground">{0}</select><BR>\
- <span>Custom Background:</span>\
- <input type="text" name="cusback" id="cusback" value="{1}"/><br><br>\
- <span>Banner:</span>\
- <select name="cbanner" id="cbanner">{2}</select><BR>\
- <span>Custom Banner:</span>\
- <input type="text" name="cusban" id="cusban" value="{3}"/><br><br>\
- <span>Theme:</span><select name="ctheme" id="ctheme">{4}</select><BR>\
- <input type="checkbox" name="cnoimages" id="cnoimages" {5}> Disable Images<br>\
- <input type="checkbox" name="climitimages" id="climitimages" {6}> Limit Images<br>\
- <input type="checkbox" name="cbettertime" id="cbettertime" {7}> Show Thread Age<br>\
- <button class="savesettings" value="Save">Save</button></div>',sback, settings["cusback"], sban, settings["cusban"], st, sni, sli, sbt);
-
- showSettingsButton();
- applyTheme();
- applyBackground();
- applyBanner();
- fixImages();
- fixButtons();
- fixSpoiler();
- if(settings["bettertime"]) {
- betterTime();
- }
- if(settings["limitimages"]) {
- limitImages();
- }
- if(settings["noimages"]) {
- noImages();
- }
-
- $(document).keydown(function(e) {
- if(!e.ctrlKey && e.altKey && e.keyCode >= 49 && e.keyCode <= 56){
- var value = e.keyCode - 48;
- if($('#post').length != 0) {
- $('#post').insertAtCaret('[img width='+value+'00][/img]');
- //$('#post').setCaret($('#post').getCursorPosition()-6);
- } else if(document.location.href.indexOf('/forum_viewtopic.php') != -1) {
- $('.forumheader3 form p .tbox').insertAtCaret('[img width='+value+'00][/img]');
- //$('#post').setCaret($('#post').getCursorPosition()-6);
- }
- }
- });
-
- $('.customizeroptions span').css('width','130px').css('display','inline-block');
- $('.customizerbutton').click(showSettings);
- $('.savesettings').click(saveSettings);
-
- function showSettingsButton() {
- $('body').append(optionsbutton).append(options);
- }
-
- function showSettings(event) {
- if($('.customizeroptions').is(":visible")) {
- $('.customizeroptions').hide();
- } else {
- $('.customizeroptions').show();
- }
- }
-
- function loadSettings() {
- var set = GM_getValue('settings');
- if(set != null) settings = JSON.parse(set);
- }
-
- function saveSettings(event) {
- settings["background"] = $('#cbackground').find(":selected").text();
- settings["cusback"] = $('#cusback').val() != null && $('#cusback').val() != '' ? $('#cusback').val() : '';
- settings["banner"] = $('#cbanner').find(":selected").text();
- settings["cusban"] = $('#cusban').val() != null && $('#cusban').val() != '' ? $('#cusban').val() : '';
- settings["theme"] = $('#ctheme').find(":selected").text();
- settings["noimages"] = $('#cnoimages').prop('checked');
- settings["limitimages"] = $('#climitimages').prop('checked');
- settings["bettertime"] = $('#cbettertime').prop('checked');
- GM_setValue('settings',JSON.stringify(settings));
- applyBackground();
- applyBanner();
- applyTheme();
- if(settings["noimages"]) {
- noImages();
- }
- }
-
- function applyTheme() {
- switch(settings["theme"]) {
- case("Dark Mod"):
- theme = darkmod;
- break;
- case("White Mod"):
- theme = whitemod;
- break;
- case("Normal"):
- theme = normal;
- break;
- }
-
- for(i = 0; i < theme.length; i++) {
- $(theme[i][0]).css(theme[i][1],theme[i][2]);
- }
-
- }
-
- function applyBackground() {
- var w = backgrounds[settings["background"]];
- if(settings["cusback"] != null && settings["cusback"] != "") w = settings["cusback"];
- $('body').css('background-image','url("'+w+'")');
- }
-
- function applyBanner() {
- var b = banners[settings["banner"]];
- if(settings["cusban"] != null && settings["cusban"] != "") b = settings["cusban"];
- $('#header').css('background','url("'+b+'") no-repeat scroll 0% 0% transparent');
- }
-
- function fixImages() {
- $('.forumheader2 img').each(function(index) {
- if($(this).attr('src').indexOf('nonew') != -1) {
- $(this).attr('src','http://i.imgur.com/yWQc5MT.png');
- } else if($(this).attr('src').indexOf('new.') != -1) {
- $(this).attr('src','http://i.imgur.com/FMUM9N9.png');
- }
- });
-
- $('.forumheader3 img').each(function(index) {
- if($(this).attr('src').indexOf('/nonew.png') != -1) {
- $(this).attr('src','http://i.imgur.com/yWQc5MT.png');
- } else if($(this).attr('src').indexOf('/new.png') != -1) {
- $(this).attr('src','http://i.imgur.com/FMUM9N9.png');
- } else if($(this).attr('src').indexOf('/sticky.png') != -1) {
- $(this).attr('src','http://i.imgur.com/h4cXlGk.png');
- } else if($(this).attr('src').indexOf('/announce.png') != -1) {
- $(this).attr('src','http://i.imgur.com/AnbFb3V.png');
- } else if($(this).attr('src').indexOf('/nonew_popular.png') != -1) {
- $(this).attr('src','http://i.imgur.com/8KxcQS7.png');
- } else if($(this).attr('src').indexOf('/new_popular.png') != -1) {
- $(this).attr('src','http://i.imgur.com/1J9BC2e.png');
- } else if($(this).attr('src').indexOf('/sticky_closed.png') != -1) {
- $(this).attr('src','http://i.imgur.com/GFh26F5.png');
- } else if($(this).attr('src').indexOf('/closed.png') != -1) {
- $(this).attr('src','http://i.imgur.com/SRLivKT.png');
- } else if($(this).attr('src').indexOf('/nonew_small.png') != -1) {
- $(this).attr('src','http://i.imgur.com/yWQc5MT.png');
- } else if($(this).attr('src').indexOf('/new_small.png') != -1) {
- $(this).attr('src','http://i.imgur.com/FMUM9N9.png');
- } else if($(this).attr('src').indexOf('/sticky_small.png') != -1) {
- $(this).attr('src','http://i.imgur.com/h4cXlGk.png');
- } else if($(this).attr('src').indexOf('/announce_small.png') != -1) {
- $(this).attr('src','http://i.imgur.com/AnbFb3V.png');
- } else if($(this).attr('src').indexOf('/nonew_popular_small.png') != -1) {
- $(this).attr('src','http://i.imgur.com/8KxcQS7.png');
- } else if($(this).attr('src').indexOf('/new_popular_small.png') != -1) {
- $(this).attr('src','http://i.imgur.com/1J9BC2e.png');
- } else if($(this).attr('src').indexOf('/sticky_closed_small.png') != -1) {
- $(this).attr('src','http://i.imgur.com/GFh26F5.png');
- } else if($(this).attr('src').indexOf('/closed_small.png') != -1) {
- $(this).attr('src','http://i.imgur.com/SRLivKT.png');
- } else if($(this).attr('src').indexOf('/e.png') != -1) {
- $(this).attr('src','http://i.imgur.com/5On2eOu.png');
- }
- });
-
- $('.forumheader3 img').each(function(index) {
- var src = $(this).attr('src');
- if(src.indexOf('lev1.') != -1) src = 'http://i.imgur.com/NT2kb0S.png';
- else if(src.indexOf('lev2') != -1) src = 'http://i.imgur.com/hDHNQSa.png';
- else if(src.indexOf('lev3') != -1) src = 'http://i.imgur.com/S83Bn9u.png';
- else if(src.indexOf('lev4') != -1) src = 'http://i.imgur.com/ESAMXeC.png';
- else if(src.indexOf('lev5') != -1) src = 'http://i.imgur.com/v8yUi3S.png';
- else if(src.indexOf('lev6') != -1) src = 'http://i.imgur.com/rqfI3dR.png';
- else if(src.indexOf('lev7') != -1) src = 'http://i.imgur.com/MJhubYv.png';
- else if(src.indexOf('lev8') != -1) src = 'http://i.imgur.com/jCy7qZR.png';
- else if(src.indexOf('lev9') != -1) src = 'http://i.imgur.com/pKd6f15.png';
- else if(src.indexOf('lev10') != -1) src = 'http://i.imgur.com/HM4MyzB.png';
- $(this).attr('src',src);
- });
-
- $('table tbody tr td a img').each(function(index) {
- if($(this).attr('src').indexOf('reply.') != -1) {
- $(this).attr('src','http://i.imgur.com/ppch3ZE.png');
- } else if($(this).attr('src').indexOf('newthread.') != -1) {
- $(this).attr('src','http://i.imgur.com/lpuuHS9.png');
- }
- });
- }
-
- function fixButtons() {
- $('#navigation ul li a')
- .css('top','32px')
- .css('background','rgba(255,255,255,0.3)')
- .css('border','1px solid rgba(127,127,127,0.7)')
- .css('width','102px')
- .css('height','23px')
- .css('line-height','23px');
- $('.nav1_onpage a, .nav2_onpage a, .nav3_onpage a, .nav4_onpage a, .nav5_onpage a')
- .css('top','32px')
- .css('background','rgba(255,255,255,0.4)')
- .css('border','1px solid rgba(127,127,127,0.7)')
- .css('width','102px')
- .css('height','23px')
- .css('line-height','23px')
- .css('margin','0px');
- }
-
- function betterTime() {
- var now = new Date();
- if(document.location.href.indexOf('/forum.php') != -1) {
- $('.forumheader3 .smallblacktext').each(function(index) {
- var t = $(this).text();
- console.log('1');
- if(t.indexOf('Edited') == -1) {
- console.log('2');
- if(t.indexOf(':') != -1) {
- var d = Date.parseExact(t.substring(4,t.indexOf(':')+5),'MMM dd yyyy, hh:mmtt');
- console.log(t.substring(4,t.indexOf(':')+5));
- var dif = Math.floor(Math.abs(now - d)/1000/60);
- if(dif>100800) dif = ">10w";
- else if(dif>1440) dif = Math.floor(dif/1440) + "d";
- else if(dif>60) dif = Math.floor(dif/60) + "h";
- else dif = dif + "m";
- $(this).html($(this).html() + " ("+dif+")");
- }
- }
- });
- }
- if(document.location.href.indexOf('viewforum') != -1) {
- $('.forumheader3').each(function(index) {
- if ( $(this).children().length != 2 ) { return; }
- var t = $(this).text();
- if(t.indexOf(':') != -1 && t.indexOf('Goto page:') == -1 && $(this).html().indexOf('mediumtext') == -1 && $(this).html().indexOf('smalltext') == -1) {
- var d = Date.parseExact(t.substring(t.length - 20),'MMM dd yyyy, hh:mmtt');
- console.log(t.substring(t.length - 20));
- var dif = Math.floor(Math.abs(now - d)/1000/60);
- if(dif>100800) dif = ">10w";
- else if(dif>1440) dif = Math.floor(dif/1440) + "d";
- else if(dif>60) dif = Math.floor(dif/60) + "h";
- else dif = dif + "m";
- var h = $(this).html();
- var p = h.indexOf('</a>')+4;
- $(this).html(h.substr(0,p) + " ("+dif+")" + h.substr(p));
- }
- });
- }
- }
-
- function limitImages() {
- if(document.location.href.indexOf('viewtopic') != -1) {
- $('.forumheader3 img').each(function(index) {
- $(this).css('max-width',800);
- });
- }
- }
-
- function fixSpoiler() {
- $('#dataform .forumheader2 img').each(function(index) {
- if($(this).attr('src').indexOf('/spoiler.png') != -1) {
- $(this).attr('onclick',"addtext('[spoiler][/spoiler]')");
- }
- });
- }
-
- function noImages() {
- if(document.location.href.indexOf('viewforum') != -1) {
- $('img:not(.customizerbutton,table tbody tr td a img, .forumheader2 img, .forumheader3 img)').remove();
- } else {
- $('img:not(.customizerbutton,table tbody tr td a img, .forumheader2 img)').remove();
- }
- $('.smalltext img').remove();
- $('h2, h3, .contentbody').css('background','url()');
- $('embed').attr('src','');
- }
-
- function format() {
- var s = arguments[0];
- for (var i = 0; i < arguments.length - 1; i++) {
- var reg = new RegExp("\\{" + i + "\\}", "gm");
- s = s.replace(reg, arguments[i + 1]);
- }
- return s;
- }
-
- jQuery.fn.extend({
- insertAtCaret: function(myValue){
- return this.each(function(i) {
- if (this.selectionStart || this.selectionStart == '0') {
- var startPos = this.selectionStart;
- var endPos = this.selectionEnd;
- var scrollTop = this.scrollTop;
- this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
- this.focus();
- this.selectionStart = startPos + myValue.length;
- this.selectionEnd = startPos + myValue.length;
- this.scrollTop = scrollTop;
- } else {
- this.value += myValue;
- this.focus();
- }
- })
- }
- });
-
- $.fn.setCaret = function(pos) {
- return this.each(function() {
- if (this.setSelectionRange) {
- this.focus();
- this.setSelectionRange(pos, pos);
- } else if (this.createTextRange) {
- var range = this.createTextRange();
- range.collapse(true);
- range.moveEnd('character', pos);
- range.moveStart('character', pos);
- range.select();
- }
- });
- };
-
- (function ($, undefined) {
- $.fn.getCursorPosition = function() {
- var el = $(this).get(0);
- var pos = 0;
- if('selectionStart' in el) {
- pos = el.selectionStart;
- } else if('selection' in document) {
- el.focus();
- var Sel = document.selection.createRange();
- var SelLength = document.selection.createRange().text.length;
- Sel.moveStart('character', -el.value.length);
- pos = Sel.text.length - SelLength;
- }
- return pos;
- }
- })(jQuery);