NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name JVC - Recherche Topic // @version 1.1.0 // @description Permet de faire des recherches sur un topic // @author Mudada_ // @match http://www.jeuxvideo.com/forums/* // @require https://code.jquery.com/jquery-1.12.4.js // @require http://code.jquery.com/ui/1.12.1/jquery-ui.js // @license MIT // ==/UserScript== (function() { "use strict"; // Ajout du css de jQuery UI $("head").append ('<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/dark-hive/jquery-ui.min.css" rel="stylesheet" type="text/css">'); var stop = false, nbMatch; // Si on est sur un topic if($(".conteneur-messages-pagi").length){ // On ajoute un bouton de recherche en haut et en bas de la page $(".bloc-pre-right").prepend($("<span/>", { text: "Rechercher", class: "btn btn-actu-new-list-forum", style: "float: left; margin-right: 5px", click: function() { ShowSearchForm(undefined, "Message"); } })); // Sur chaque message on ajoute un bouton racourcis pour une recherche rapide $(".bloc-message-forum ").each(function(index, message){ var style = "width:16px;height:16px;background:#999999;color:#FAFAFA;opacity:0.33;line-height:18.57px;margin:0px;display:inline-block;padding-bottom:4px;border-radius:3px;overflow:hidden;padding-left:3px;cursor:pointer;"; $(message).find(".bloc-options-msg").prepend("<div id='rechercheSC" + index + "' style='" + style + "' title='Recherche'>R</div>"); $(message).find(".bloc-options-msg").prepend("<div id='pseudoSC" + index + "' style='" + style + "visibility: hidden;' title='Par pseudo'>P</div>"); $(message).find(".bloc-options-msg").prepend("<div id='citationSC" + index + "' style='" + style + "visibility: hidden;' title='Par citation'>C</div>"); (function(_index) { $("#rechercheSC" + _index).click(function() { if($("#pseudoSC" + _index).css("visibility") == "hidden"){ $("#pseudoSC" + _index).css("visibility", "visible"); $('#pseudoSC' + _index).position({ my: 'right top+3', at: 'left bottom', of: $('#rechercheSC' + _index) }); $("#citationSC" + _index).css("visibility", "visible"); $('#citationSC' + _index).position({ my: 'left top+3', at: 'right bottom', of: $('#rechercheSC' + _index) }); }else{ $("#pseudoSC" + _index).css("visibility", "hidden"); $("#citationSC" + _index).css("visibility", "hidden"); } }); $("#pseudoSC" + _index).click(function(){ var forumeur = $(message).find(".bloc-pseudo-msg").text().replace(/ /g, ''); console.log($(message)); var keywords = [forumeur]; ShowSearchForm(keywords, "Pseudo"); }); $("#citationSC" + _index).click(function(){ var date = $(message).find(".xXx.lien-jv").text(); var pseudo = $(message).find(".bloc-pseudo-msg").text(); var keyword = "Le" + date + pseudo + "aécrit:"; ShowSearchForm([keyword.replace(/ /g, '').replace(/(\r\n|\n|\r)/gm, "")], "Citation"); }); }(index)); }); } function ShowSearchForm(keywords, mode) { window.scrollTo(0, 0); var lastPage = GetLastPageNumber(); var range = [1, lastPage]; $("<div/>", { id: "backgroundRecherche", style: "position: fixed;top: 0; left: 0; width: 100%; height: 100%;background: #000; opacity: 0.6; filter: alpha(opacity=60); z-index: 1;" } ).prependTo($("body")); $("<div/>", { id: "divRechercheForm", class: "container container-content", style: "min-height: 0; padding: 0; margin-left: 15%; border-top-right-radius: 5px; border-top-left-radius: 5px; margin-top:50px; position:absolute; top: 500 px; left: 0px; z-index:2; width: 70%;" } ).append($("<h1/>", { text: "Recherche", style: "margin-top: 10px; border-bottom: 2px solid #989898; width: 100%; text-align: center; padding-bottom: 5px; color: orange;" } )).append($("<input/>", { id: "inputRecherche", type: "text", class: "txt-search", style: "width: 20%; margin-left: 7.5%; border: 0.0625rem solid #d0d0d9; height: 1.75rem; padding: 0.1875rem; float: left;" } )).append($("<select/>", { id: "selectRecherche", style: "width: 15%; height: 1.75rem;" } ).append( $("<option/>", { value: "Message", text: "Message" } )).append($("<option/>", { value: "Pseudo", text: "Pseudo" } ) ).append($("<option/>", { value: "Citation", text: "Citation" } ))).append($("<div/>", { id: "sliderRange", style: "width: 20%; display: inline-block; margin-left: 5%" })).append($("<span/>", { text: "Recherche", class: "btn btn-actu-new-list-forum", style: "width: 15%; margin-left: 3%", click: function() { stop = false; nbMatch = 0; $("#loadingRecherche").show(); $("#divRecherchePosts div").remove(); keywords = $("#inputRecherche").val().split(" ").filter(Boolean); var startPage = window.location.href; startPage = startPage.replace(/(\/forums\/[\d]*-[\d]*-[\d]*-)[\d]*(-.*)/, "$1" + range[0] + "$2"); ProcessSearch(startPage, keywords, $("#selectRecherche").val(), range[0], range[1]); } })).append($("<div/>", { id: "divRecherchePosts", style: "width: 100%; border-top: 2px solid #989898; margin-top : 15px; padding: 0 15px 0 15px;" }).append($("<p/>", { id: "pRecherche", style: "display: inline-block; font-size: 15px; width: 100%; text-align: center; color: orange; padding-top: 10px" }) )).prependTo($("body")); $("#sliderRange").after("<div style='display:inline-block; position: absolute' id='min'></div><div style='display:inline-block; position: absolute' id='max'></div>"); $("#sliderRange").slider({ range: true, min: 1, max: lastPage, values: [ 1, lastPage ], slide: function(event, ui) { range[0] = ui.values[0]; range[1] = ui.values[1]; var delay = function() { var handleIndex = $(ui.handle).index(); var label = handleIndex == 1 ? '#min' : '#max'; $(label).html(ui.value).position({ my: 'center top', at: 'center bottom', of: ui.handle, offset: "0, 10" }); }; setTimeout(delay, 5); } }); $('#min').html($('#sliderRange').slider('values', 0)).position({ my: 'center top', at: 'center bottom', of: $('#sliderRange span:eq(0)'), offset: "0, 10" }); $('#max').html($('#sliderRange').slider('values', 1)).position({ my: 'center top', at: 'center bottom', of: $('#sliderRange span:eq(1)'), offset: "0, 10" }); $("#backgroundRecherche").click(function() { stop = true; $("#divRechercheForm").remove(); $(this).remove(); }); if (keywords) { $("#inputRecherche").val(keywords[0]); } $("#selectRecherche").val(mode); } function ProcessSearch(page, keywords, mode, currPageNb, lastPageNb) { $.ajax({ url: page, type: 'GET' }).done(function(data) { if (mode === "Pseudo") { $(data).find(".bloc-message-forum").each(function(index, post) { var pseudo = $(this).find(".bloc-pseudo-msg").text().replace(/ /g, '').replace(/(\r\n|\n|\r)/gm, ""); if (keywords.includes(pseudo)) { nbMatch++; $("#divRecherchePosts").append($(this)); $("#divRecherchePosts .bloc-message-forum:last .bloc-header .bloc-date-msg").append("<p style='padding-left: 5px; float:right; color: green'>Page : " + currPageNb + " - Post : " + (index + 1) + "</p>"); } }); } else if (mode === "Message") { $(data).find(".bloc-message-forum").each(function(index, post) { var nbFind = 0; for (var i = 0; i < keywords.length; i++) { var message = $(this).find(".txt-msg.text-enrichi-forum").text().toLowerCase(); if (message.indexOf(keywords[i].toLowerCase()) > -1) { nbFind++; } } if (nbFind == keywords.length) { nbMatch++; $("#divRecherchePosts").append($(this)); $("#divRecherchePosts .bloc-message-forum:last .bloc-header .bloc-date-msg").append("<p style='padding-left: 5px; float:right; color: green'>Page : " + currPageNb + " - Post : " + (index + 1) + "</p>"); } }); } else if (mode === "Citation") { $(data).find(".bloc-message-forum").each(function(index, post) { var blockquote = $(this).find(".txt-msg.text-enrichi-forum blockquote:first").text().replace(/ /g, '').replace(/(\r\n|\n|\r)/gm, ""); if(blockquote.indexOf(keywords[0]) > -1 ){ nbMatch++; $(this).find(".img-shack").each((index, img) => { $(img).click(() => { window.open($(img).attr("alt"), ""); }) }); $("#divRecherchePosts").append($(this)); $("#divRecherchePosts .bloc-message-forum:last .bloc-header .bloc-date-msg").append("<p style='padding-left: 5px; float:right; color: green'>Page : " + currPageNb + " - Post : " + (index + 1) + "</p>"); } }); } $("#pRecherche").text(currPageNb + " / " + lastPageNb + " Match : " + nbMatch); currPageNb++; if (!stop && currPageNb <= lastPageNb) { var nextPage = $(data).find(".page-active:first").next().find("a").attr("href"); ProcessSearch(nextPage, keywords, mode, currPageNb, lastPageNb); }else{ $("#loadingRecherche").hide(); $("#pRecherche").text("Match : " + nbMatch); } }); } function GetLastPageNumber(){ var lastPage = $(".bloc-liste-num-page:first span:last"); return lastPage.text() === "»" ? lastPage.prev().text() : lastPage.text(); } })();