Advertisement
DaCurse

Fxp Block+

Oct 5th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const factoryDefaults = {
  2.   blocked: [],
  3.   dba: ''
  4. }
  5.  
  6. const Parser = new DOMParser();
  7. const Data = getLocalData();
  8.  
  9. function get_userid(username) {
  10.   return new Promise(async (res, rej) => {
  11.     let data = await $.get(`https://www.fxp.co.il/member.php?username=${username}`);
  12.     let doc = Parser.parseFromString(data, 'text/html');
  13.     try {
  14.       let uid = $(doc).find('.userprof_content>dl>dd>a').attr('href').substr(35);
  15.       res(uid);
  16.     } catch(ex) { rej('User doesn\'t exist'); }
  17.   });
  18. }
  19.  
  20. function get_username(userid) {
  21.   return new Promise(async (res, rej) => {
  22.     let data = await $.get(`https://www.fxp.co.il/member.php?u=${userid}`);
  23.     let doc = Parser.parseFromString(data, 'text/html');
  24.     let un = $(doc).find('.member_username').text().trim();
  25.     if(un === '') rej('User doesn\'t exist');
  26.     else res(un);
  27.   });
  28. }
  29.  
  30. function getLocalData() {
  31.   let data;
  32.   try {
  33.     data = JSON.parse(localStorage.fxpblockplus);
  34.   } catch(ex) {
  35.     data = factoryDefaults;
  36.   }
  37.   return data;
  38. }
  39.  
  40. function saveData() {
  41.   localStorage.fxpblockplus = JSON.stringify(Data);
  42. }
  43.  
  44. function menuOption() {
  45.   let option = $('#yui-gen0').children().last().prev();
  46.   let sepHtml = $('<div>').append(option.clone()).html();
  47.   option.before(sepHtml);
  48.   option.before('<div style="height: 15px;"><a href="javascript:" id="blockplus">הגדרות Block+</a></div>');
  49. }
  50.  
  51. function createMenu() {
  52.   let menuCss =
  53. `<style>
  54. #blockplus-menu {
  55.   width: 400px;
  56.   height: 350px;
  57.   z-index: 9999;
  58.   position: fixed;
  59.   top: 50%;
  60.   left: 50%;
  61.   transform: translate(-50%, -50%);
  62.   background-color: white;
  63. }
  64.  
  65. #blockplus-menu > div {
  66.   margin: 10px;
  67. }
  68.  
  69. #blocked-users {
  70.   width: 100%;
  71.   min-height: 200px;
  72.   margin-bottom: 5px;
  73. }
  74.  
  75. #blockplus-menu button {
  76.   padding: 5px 10px;
  77.   font-size: 12pt;
  78.   margin-bottom: 8px;
  79. }
  80.  
  81. #userblockname {
  82.   width: 83%;
  83.   height: 28px;
  84.   font-size: 14pt;
  85.   border: solid 1px #6b91ab;
  86.   outline: none;
  87. }
  88.  
  89. #adduser {
  90.   float: left;
  91. }
  92.  
  93. #remusers, #closeusers {
  94.   width: 100%;
  95. }
  96. </style>`;
  97.  
  98.   $('head').append(menuCss);
  99.  
  100.   let menuHtml =
  101. `<div id="blockplus-menu" style="display: none;">
  102.   <div>
  103.     <label for="blocked-users">משתמשים חסומים:</label>
  104.     <select multiple id="blocked-users">
  105.  
  106.     </select>
  107.     <input type="text" id="userblockname" />
  108.     <button id="adduser">הוסף</button><br/>
  109.     <button id="remusers" disabled>מחק בחירה</button>
  110.     <button id="closeusers" onclick="$('#blockplus-menu').hide()">סגור</button>
  111.   </div>
  112. </div>`
  113.  
  114.   $('body').append(menuHtml);
  115.   bindEvents();
  116.   refreshUsers();
  117.  
  118. }
  119.  
  120. function refreshUsers() {
  121.   $('#blocked-users').children().remove();
  122.   Data.blocked.forEach(async u => {
  123.     let username = await get_username(u);
  124.     $('#blocked-users').append(`<option>${username} - ${u}</option>`);
  125.   });
  126. }
  127.  
  128. function bindEvents() {
  129.   $('#blockplus').click(() => {
  130.     $('#blockplus-menu').show();
  131.     $('#yui-gen1').get(0).click();
  132.   });
  133.   $('#adduser').click(async () => {
  134.     $('#adduser').attr('disabled', true);
  135.     let username = $('#userblockname').val();
  136.     let userid;
  137.     try {
  138.       $('#userblockname').val('');
  139.        userid = await get_userid(username);
  140.     } catch(ex) {
  141.       alert('המשתמש הזה לא קיים או שהוא בבאן!');
  142.       $('#adduser').removeAttr('disabled');
  143.       return;
  144.     }
  145.     $('#adduser').removeAttr('disabled');
  146.     if(Data.blocked.includes(userid)) {
  147.       alert("המשתמש הזה כבר קיים ברשימת החסומים!");
  148.       return;
  149.     }
  150.     Data.blocked.push(userid);
  151.     refreshUsers();
  152.   });
  153.   $('#blocked-users').change(() => {
  154.     let users = $('#blocked-users').val();
  155.     (users !== null) ?
  156.       $('#remusers').removeAttr('disabled') :
  157.       $('#remusers').attr('disabled', true);
  158.   });
  159.   $('#remusers').click(() => {
  160.     let users = $('#blocked-users').val();
  161.     if(users !== null) {
  162.       let uids = [];
  163.       users.forEach(u => {
  164.         uids.push(u.split(' - ')[1]);
  165.       });
  166.       Data.blocked = Data.blocked.filter(u => {
  167.         return uids.indexOf(u) === -1;
  168.       });
  169.       refreshUsers();
  170.       $('#remusers').attr('disabled', true);
  171.     }
  172.   });
  173.   blockUsers();
  174. }
  175.  
  176. function blockUsers() {
  177.   let path = location.pathname;
  178.   if(path === "/forumdisplay.php") {
  179.     $('.threadbit').each((_, t) => {
  180.        let uid = $(t).find('.label a').attr('href');
  181.        Data.blocked.forEach(u => {
  182.          if(uid.includes(u)) {
  183.            $(t).remove();
  184.          }
  185.        });
  186.     });
  187.   }
  188. }
  189.  
  190. function Init() {
  191.   $(window).unload(() => {
  192.     saveData();
  193.   });
  194.   menuOption();
  195.   createMenu();
  196. }
  197.  
  198. $(Init);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement