Advertisement
Denkoko

bbb

Jun 17th, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.73 KB | None | 0 0
  1. $('<link id="chanfavicon" href="https://implyingrigged.info/favicon.ico" type="image/x-icon" rel="shortcut icon" />')
  2. .appendTo("head");
  3. $('.navbar-brand').attr('href','https://implyingrigged.info/wiki/Main_Page');
  4. $('.navbar-brand').text('Implying Rigged');
  5. $('head').append('<script type="text/javascript" src="https://implyingrigged.info/cytube/NND.js">');
  6. $('head').append('<script type="text/javascript" src="https://implyingrigged.info/cytube/4cc/teamcolor.js">');
  7. //$('head').append('<script type="text/javascript" src="https://implyingrigged.info/cytube/anon.js">');
  8. $('head').append('<script type="text/javascript" src="https://implyingrigged.info/cytube/emotememory.js">');
  9. $( document ).ready(function() {
  10. /* Navbar */ {
  11. //Options/Account
  12. $('.dropdown-toggle').each(function(){
  13. if ($(this).text() == 'Account'){
  14. var name = $('#welcome').text().replace('Welcome, ', '');
  15. $('#welcome').text('Welcome, ');
  16. $('#welcome').append('<a class="dropdown-toggle" href="#" data-toggle="dropdown">' + name + ' <b class="caret"></b></a>');
  17. $('#welcome').addClass('dropdown');
  18. $(this).parent().find('.dropdown-menu').detach().appendTo('#welcome');
  19. $(this).parent().remove();
  20. } else if ($(this).text() == 'Layout'){
  21. $(this).html($(this).html().replace('Layout','⚙</b>'));
  22. $(this).parent().attr('ID','settingsMenu');
  23. $('li a').each(function(){
  24. if($(this).text() == 'Options'){
  25. $(this).text('User Settings').detach().appendTo('#settingsMenu .dropdown-menu').wrap('<li></li>');
  26. }
  27. });
  28. $('#showchansettings').detach().appendTo('#settingsMenu .dropdown-menu').wrap('<li></li>');
  29. }
  30. });
  31.  
  32. //Team select style toggle
  33. var teamToggleButton = $('<button id="toggleTeamSelStyle" class="btn" data-toggle="button" aria-pressed="false">Team Selector: <span class="glyphicon glyphicon-list"></span><span class="glyphicon glyphicon-th"></span><span> List</span><span> Grid</span></button>')
  34. .appendTo('#settingsMenu .dropdown-menu')
  35. .wrap('<li></li>')
  36. .click(function(event){
  37. event.stopPropagation();
  38. $(this).button('toggle');
  39. var gridMode = $(this).hasClass('active');
  40. setOpt(CHANNEL.name + "_SELECTTEAM_GRID", gridMode);
  41. if(gridMode)
  42. $('#selectteam').addClass('grid');
  43. else
  44. $('#selectteam').removeClass('grid');
  45. });
  46. //Bigger Emotes
  47. $('<button id="btn_emoteSize" class="btn">Emote Size: <span>Small</span><span>Big</span></button>')
  48. .appendTo('#settingsMenu .dropdown-menu')
  49. .wrap('<li></li>')
  50. .click(function(event){
  51. event.stopPropagation();
  52. $(this).button('toggle');
  53. var bigEmotes = $(this).hasClass('active');
  54. setOpt(CHANNEL.name + "_BIG_EMOTES", bigEmotes);
  55. if(bigEmotes)
  56. $('#messagebuffer').addClass('bigEmotes');
  57. else
  58. $('#messagebuffer').removeClass('bigEmotes');
  59. });
  60. if(getOrDefault(CHANNEL.name + "_BIG_EMOTES", false))
  61. $('#btn_emoteSize').click();
  62.  
  63. //Playlist
  64. $('body').append('<span id="pnl_options" style="position:absolute;display:none;left:0;top:30px;padding-top:10px;width:100%;background:rgba(0,0,0,0.5);z-index:2;"></span>');
  65. $('#rightcontrols').detach().appendTo('#pnl_options');
  66. $('#playlistrow').detach().appendTo('#pnl_options');
  67. $('#nav-collapsible ul:first-child').append('<li><a id="btn_playList" class="pointer">Playlist</a></li>');
  68. $('#btn_playList').click(function(){
  69. if ($('#pnl_options').css('display')=='none'){
  70. $('#pnl_options').slideDown();
  71. } else {
  72. $('#pnl_options').slideUp();
  73. }
  74. });
  75. //Match Schedule
  76. $('#nav-collapsible ul:first-child').append("<li class='dropdown'><a class='dropdown-toggle' href='#' data-toggle='dropdown' aria-expanded='false'>Match Schedule<b class='caret'></b></a><ul class='dropdown-menu' id='matchSchedule'><li>Times in UTC</li></ul></li>");
  77. for(var i = 1; i <= 24; i++){
  78. if (i == 1){
  79. $('#matchSchedule').append('<li id="day1"></li>');
  80. } else if (i == 9) {
  81. $('#matchSchedule').append('<li id="day2"></li>');
  82. } else if (i == 17){
  83. $('#matchSchedule').append('<li id="day3"></li>');
  84. }
  85. $('#matchSchedule').append('<li id="match' + i + '"></li>');
  86. }
  87. $('#matchSchedule').append("<li><a style='background:grey' href='https://implyingrigged.info/wiki/2019_4chan_Winter_Cup'>Cup Page</a></li>");
  88. //Other shit
  89. $('#nav-collapsible ul:first-child').append("<li class='dropdown'><a target='_blank' href='https://implyingrigged.info/gametips/'>Submit a Gametip</a></li>");
  90. $('#nav-collapsible ul:first-child').append('<li><a href="https://www.youtube.com/c/The4chanCup?sub_confirmation=1" target="_blank">Get notifications when LIV</a></li>');
  91. $('#nav-collapsible ul:first-child').append('<li><a href="https://www.youtube.com/c/The4chanCup" target="_blank"><img src="https://s.ytimg.com/yts/img/favicon-vfl8qSV2F.ico"/></a></li>');
  92. $('#nav-collapsible ul:first-child').append('<li><a href="https://boards.4channel.org/vg/catalog#s=4ccg" target="_blank"><img src="https://s.4cdn.org/image/favicon.ico"/></a></li>');
  93. }
  94.  
  95. $('#userlisttoggle').click();
  96. //Moving controls around
  97. $('#videowrap').append("<span id='vidchatcontrols' style='float:right'>");
  98. $('#newpollbtn').detach().prependTo('#vidchatcontrols');
  99. $('#pollwrap').detach().appendTo('#videowrap');
  100. $('<div id="emotebtndiv"></div>');
  101. $('#emotelistbtn').detach().insertBefore('#chatline').wrap('<div id="emotebtndiv"></div>').text(':^)').attr('title', 'Emote List');
  102. $('#leftcontrols').remove();
  103.  
  104.  
  105.  
  106. var previousMessage = "";
  107.  
  108. //Overwriting the chat functions
  109. $('#chatline').off();
  110. $("#chatline").keydown(function(e) {
  111. if (13 != e.keyCode) {
  112. if (9 == e.keyCode) {
  113. try {
  114. chatTabComplete(e.target)
  115. } catch (e) {
  116. console.error(e)
  117. }
  118. return e.preventDefault(),
  119. !1
  120. }
  121. return 38 == e.keyCode ? (CHATHISTIDX == CHATHIST.length && CHATHIST.push($("#chatline").val()),
  122. 0 < CHATHISTIDX && (CHATHISTIDX--,
  123. $("#chatline").val(CHATHIST[CHATHISTIDX])),
  124. e.preventDefault(),
  125. !1) : 40 == e.keyCode ? (CHATHISTIDX < CHATHIST.length - 1 && (CHATHISTIDX++,
  126. $("#chatline").val(CHATHIST[CHATHISTIDX])),
  127. e.preventDefault(),
  128. !1) : void 0
  129. }
  130. if (!CHATTHROTTLE) {
  131. var t = $("#chatline").val();
  132. if (t.trim() && $('#chatline').val().trim() != previousMessage) {
  133. var a = {};
  134. USEROPTS.adminhat && 255 <= CLIENT.rank ? t = "/a " + t : USEROPTS.modhat && CLIENT.rank >= Rank.Moderator && (a.modflair = CLIENT.rank),
  135. 2 <= CLIENT.rank && 0 === t.indexOf("/m ") && (a.modflair = CLIENT.rank,
  136. t = t.substring(3));
  137. var o = t.replace(/\s/g, "");
  138. if (CLIENT.rank < 2){
  139. t = t.replace(':pic','');
  140. }
  141. if (/skettifactory/.test(o) && "skettifactory" !== CHANNEL.name.toLowerCase())
  142. return Callbacks.kick({
  143. reason: "spam detected (skettifactory)"
  144. }),
  145. void socket.disconnect();
  146. if (/synchtube\.ru/.test(o))
  147. return Callbacks.kick({
  148. reason: "spam detected (synchtube.ru)"
  149. }),
  150. void socket.disconnect();
  151. previousMessage = t.trim();
  152. if (TEAMCOLOR){
  153. t = t + ' -team' + TEAMCOLOR + '-';
  154. a.modflair = 'b';
  155. }
  156. var emotes = t.match(/(:[^:]+:)/g);
  157. //emoteMammory(emotes);
  158. socket.emit("chatMsg", {
  159. msg: t,
  160. meta: a
  161. }),
  162. CHATHIST.push($("#chatline").val()),
  163. CHATHISTIDX = CHATHIST.length,
  164. $("#chatline").val("")
  165. } else {
  166. $("#chatline").val("");
  167. }
  168. }
  169. });
  170. formatChatMessage = function(data, last) {
  171. //editing this to look like the original cytube again -t. scoops
  172.  
  173. // Backwards compat
  174. if (!data.meta || data.msgclass) {
  175. data.meta = {
  176. addClass: data.msgclass,
  177. addClassToNameAndTimestamp: data.msgclass
  178. };
  179. }
  180. // Determine whether to show the username or not
  181. var skip = data.username === last.name;
  182. if(data.meta.addClass === "server-whisper")
  183. skip = true;
  184. // Prevent impersonation by abuse of the bold filter
  185. if(data.msg.match(/^\s*<strong>\w+\s*:\s*<\/strong>\s*/))
  186. skip = false;
  187. if (data.meta.forceShowName)
  188. skip = false;
  189.  
  190. data.msg = stripImages(data.msg);
  191. data.msg = execEmotes(data.msg);
  192.  
  193.  
  194.  
  195. last.name = data.username;
  196.  
  197. //4CC Team Colors
  198. var teamClass = data.msg.match(/(-team.+-)/gi);
  199. if (teamClass){
  200. teamClass = teamClass[0].replace(new RegExp('-','g'),'');
  201. } else {
  202. teamClass = '';
  203. }
  204. if ($('#btn_anon').hasClass('label-success')){
  205. teamClass += ' anon';
  206. }
  207.  
  208. var div = $("<div/>");
  209. /* drink is a special case because the entire container gets the class, not
  210. just the message */
  211. if (data.meta.addClass === "drink") {
  212. div.addClass("drink");
  213. data.meta.addClass = "";
  214. }
  215.  
  216. // Add timestamps (unless disabled)
  217. if (USEROPTS.show_timestamps) {
  218. var time = $("<span/>").addClass("timestamp").appendTo(div);
  219. var timestamp = new Date(data.time).toTimeString().split(" ")[0];
  220. time.text("["+timestamp+"] ");
  221. if (data.meta.addClass && data.meta.addClassToNameAndTimestamp) {
  222. time.addClass(data.meta.addClass);
  223. }
  224. }
  225.  
  226. // Add username
  227. var name = $("<span/>");
  228. if (!skip) {
  229. name.appendTo(div);
  230. }
  231. $("<strong/>").addClass("username " + teamClass).text(data.username + ": ").appendTo(name);
  232. if (data.meta.modflair) {
  233. name.addClass(getNameColor(data.meta.modflair));
  234. }
  235. if (data.meta.addClass && data.meta.addClassToNameAndTimestamp) {
  236. name.addClass(data.meta.addClass);
  237. }
  238. if (data.meta.superadminflair) {
  239. name.addClass("label")
  240. .addClass(data.meta.superadminflair.labelclass);
  241. $("<span/>").addClass(data.meta.superadminflair.icon)
  242. .addClass("glyphicon")
  243. .css("margin-right", "3px")
  244. .prependTo(name);
  245. }
  246.  
  247. // Add the message itself
  248. var message = $("<span/>").appendTo(div);
  249. message[0].innerHTML = data.msg;
  250.  
  251. // For /me the username is part of the message
  252. if (data.meta.action) {
  253. name.remove();
  254. message[0].innerHTML = data.username + " " + data.msg;
  255. }
  256. if (data.meta.addClass) {
  257. message.addClass(data.meta.addClass);
  258. }
  259. if (data.meta.shadow) {
  260. div.addClass("chat-shadow");
  261. }
  262.  
  263. //convert image embeds that are actually videos to video embeds
  264. chatImageToVideo(div);
  265.  
  266. return div;
  267. };
  268.  
  269. //convert videos already in chat
  270. chatImageToVideo($("#messagebuffer"));
  271. });
  272.  
  273. function chatImageToVideo(div){
  274. //convert image embeds that are actually videos to video embeds
  275. var videoFileTypes = [ ".webm", ".mp4" ];
  276. div.find("a>img")
  277. .each(function(index, img){
  278. if(videoFileTypes.some(function(ext){ return img.src.endsWith(ext); })){
  279. var toReplace = $(img).parent("a[href='" + img.src + "']");
  280. if(toReplace.length == 0)
  281. toReplace = $(img);
  282. toReplace.replaceWith("<video autoplay loop muted src=\"" + img.src + "\">" + img.src + "</video>");
  283. }
  284. });
  285. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement