MegaApuTurkUltra

scratch_forum.user.js

Oct 8th, 2014
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         Scratchy Forums
  3. // @namespace    http://aputurk.tk/
  4. // @version      0.1
  5. // @description  Adds some awesome features to Scratch forums
  6. // @author       MegaApuTurkUltra
  7. // @match        http://scratch.mit.edu/*
  8. // @grant        none
  9. // ==/UserScript==
  10.  
  11. $(document).ready(function(){
  12.     sMessages = ["Support!", "Support as per this", "No support", "No support as per this", false];
  13.     if(typeof localStorage != 'undefined' && typeof localStorage.sMessages != 'undefined'){
  14.         sMessages = JSON.parse(localStorage.sMessages);
  15.     }
  16.    
  17.     var dlg = $("<div title='Support Messages ' style='background:#eee'></div>");
  18.     dlg.append("Support:<br/> <textarea id='supportm'></textarea><br/>");
  19.     dlg.append("Support as per:<br/> <textarea id='supporta'></textarea><br/>");
  20.     dlg.append("No support:<br/> <textarea id='nsupportm'></textarea><br/>");
  21.     dlg.append("No support as per:<br/> <textarea id='nsupporta'></textarea><br/>");
  22.     dlg.append("<label for='autosub'>Auto submit:</label><input type='checkbox' id='autosub' /><br/>");
  23.     dlg.append($("<button id='supportmsub'>Save</button>").button().click(function(){
  24.         dlg.dialog("close");
  25.         sMessages[0]=$("#supportm").val();
  26.         sMessages[1]=$("#supporta").val();
  27.         sMessages[2]=$("#nsupportm").val();
  28.         sMessages[3]=$("#nsupporta").val();
  29.         sMessages[4]=$("#autosub").is(":checked");
  30.         localStorage.sMessages = JSON.stringify(sMessages);
  31.     }));
  32.     dlg.appendTo($(document.body));
  33.     dlg.dialog({modal:true,autoOpen:false});
  34.    
  35.     var edit = $("<a href='javascript:void(0)'>Edit Support Messages</a>");
  36.     $("<li></li>").append(edit).insertBefore($(".user-nav .logout"));
  37.     edit.click(function(){
  38.         $("#supportm").val(sMessages[0]);
  39.         $("#supporta").val(sMessages[1]);
  40.         $("#nsupportm").val(sMessages[2]);
  41.         $("#nsupporta").val(sMessages[3]);
  42.         if(sMessages[4]){
  43.             $("#autosub").attr("checked", "checked");
  44.         } else {
  45.             $("#autosub").removeAttr("checked");
  46.         }
  47.         dlg.dialog("open");
  48.     });
  49.    
  50.     var myTopix = $("<a href='/discuss/search/?action=show_user&show_as=topics'>My Topics</a>");
  51.     $("<li></li>").append(myTopix).insertBefore($(".user-nav .logout"));
  52.    
  53.     if(location.href.indexOf("discuss/search/?")>-1 && location.href.indexOf("action=show_user") > -1){
  54.         $(".tclcon a, .tcr a").each(function(){
  55.            $(this).attr("href", $(this).attr("href")+"unread/");
  56.         });
  57.     }
  58.    
  59.     if($(".linkst li").eq(1).text().toLowerCase().indexOf("suggestions")>-1){
  60.     $(".blockpost.roweven.firstpost").each(function(){
  61.         var id=Math.floor(Math.random()*10000000);
  62.         var form = $("<form></form>");
  63.         var support = $("<label></label><input type='radio' />");
  64.         support.eq(0).attr("for", "s"+id+"1").text("| Support ").css({"background":"none","border":"none","padding":"0","margin":"0","color":"green"});
  65.         support.eq(1).attr("id", "s"+id+"1").addClass('support').attr("name", "r"+id).css("vertical-align","middle");
  66.         var nsupport = $("<label></label><input type='radio' />");
  67.         nsupport.eq(0).attr("for", "s"+id+"2").text("| No Support ").css({"background":"none","border":"none","padding":"0","margin":"0","color":"red"});
  68.         nsupport.eq(1).attr("id", "s"+id+"2").addClass('nsupport').attr("name", "r"+id).css("vertical-align","middle");
  69.         var asper = $("<label></label><input type='checkbox' />");
  70.         asper.eq(0).attr("for", "ap"+id).text("| As per this ").css({"background":"none","border":"none","padding":"0","margin":"0","font-weight":"bold"});
  71.         asper.eq(1).attr("id", "ap"+id).attr("name", "ap"+id).addClass("asper").css("vertical-align","middle");
  72.         var btnSubmit = $("<a href='javascript:void(0)'>Go &gt;</a>").attr("id", "btn"+id);
  73.         id = $(this).attr("id").substr(1);
  74.         username = $(this).find(".username").text();
  75.         btnSubmit.click(function(){
  76.             var text = "";
  77.             var area=$("#id_body");
  78.             area.val("");
  79.             sbtn = $(this);
  80.             $.ajax("/discuss/post/"+id+"/source/").done(function(data){
  81.                 var support = sbtn.parent().find(".support").is(":checked");
  82.                 var nsupport = sbtn.parent().find(".nsupport").is(":checked");
  83.                 var asper = sbtn.parent().find(".asper").is(":checked");
  84.                 console.log([support, nsupport, asper]);
  85.                 tinitial = asper ? "[quote="+username+"]"+data+"[/quote]\n": "";
  86.                 tsup = support ? (asper ? sMessages[1]:sMessages[0])+"\n" : (nsupport ? (asper ? sMessages[3]:sMessages[2])+"\n": "");
  87.                 area.val(tinitial+tsup+prompt("Enter extra reason or hit enter to continue"));
  88.                 location.hash="";
  89.                 location.hash="postarea";
  90.                 if(sMessages[4]){
  91.                     $("#post .form-submit button").trigger("click");
  92.                 }
  93.             });
  94.         });
  95.         $(this).find(".postfootright ul").append($("<li></li>").append(support).append(nsupport).append(asper).append("&nbsp;|&nbsp;").append(btnSubmit));
  96.     });
  97.     $("#post").prepend($("<a name='postarea' style='height:0px'></a>"));
  98.     }
  99. });
Advertisement
Add Comment
Please, Sign In to add comment