您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Puts old forums back into Facepunch
当前为
// ==UserScript== // @name FP Custom Forums // @namespace http://fpcf.spiderschwe.in // @version 1.1 // @description Puts old forums back into Facepunch // @author DrTaxi // @match http://facepunch.com/* // @grant none // ==/UserScript== var fpcf_uri = "http://fpcf.spiderschwe.in"; var fpcf_thread_created = false; function insertNotice(notice) { notice = $("<div class='notice'>" + notice + "</div>"); $("#content_inner").prepend(notice); } function replaceBreadcrumb(data) { navbit_fp = $(".navbit").first().next(); navbit_fp.text("> " + data.category); forumlink = navbit_fp.next().html("> <a></a>").find("a").first(); forumlink.attr("href", fpcf_uri + "/forum/" + data.slug + "/1"); forumlink.text(data.name); } // thanks http://stackoverflow.com/questions/2090551/parse-query-string-in-javascript function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split('&'); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split('='); if (decodeURIComponent(pair[0]) == variable) { return decodeURIComponent(pair[1]); } } } $(document).ready(function(){ $.ajax({ type: 'get', url: fpcf_uri + "/api/version", dataType: 'json', beforeSend: function(xhr) { xhr.withCredentials=true; }, success: function(data, textStatus, XMLHttpRequest) { if(XMLHttpRequest.status == 200 && data > 1) { localStorage.setItem("fpcf-current-version", data); insertNotice("<b>A new version of FPCF is available</b>. <a href='"+fpcf_uri+"'>Go here for more information.</a>"); } } }); if(window.location.pathname == "/showthread.php" && localStorage.getItem("fpcf-posticon") !== null) { if($(".nodecontrols:first > a").first().next().attr("name") != 1 || $(".username:first").text().trim() != $("#navbar-login > a").text().trim() || $(".navbit:first").next().next().find("a").text().trim() != "General Discussion") { // no more reliable way to check whether this is your freshly created thread insertNotice("<b>FPCF thread was not created</b>"); } else { fpcf_thread_created = true; $.ajax({ type: 'post', url: fpcf_uri + "/api/create_thread", dataType: 'json', beforeSend: function(xhr) { xhr.withCredentials=true; }, data: JSON.stringify({ id: vB_Editor['vB_Editor_QR'].config.vbulletin.parentcontentid, user_id: vB_Editor['vB_Editor_QR'].config.vbulletin.userid, user_name: $(".username:first").text().trim(), name: $("#lastelement").text().trim(), posticon: localStorage.getItem("fpcf-posticon"), slug: localStorage.getItem("fpcf-slug"), first_post_id: $(".postcontainer").first().attr("id").substring(5) }), success: function(data, textStatus, XMLHttpRequest) { if(XMLHttpRequest.status == 200) { insertNotice("FPCF thread created."); replaceBreadcrumb(data); } else { insertNotice("<b style='color: red'>FPCF thread creation failed!</b>"); } }, error:function (xhr, ajaxOptions, thrownError){ insertNotice("<b style='color: red'>FPCF thread creation failed!</b>"); } }); } localStorage.removeItem("fpcf-posticon"); localStorage.removeItem("fpcf-slug"); } if(window.location.pathname == "/" || window.location.pathname == "/forum.php") { $.ajax({ type: 'get', url: fpcf_uri + "/api/boards", dataType: 'json', beforeSend: function(xhr) { xhr.withCredentials=true; }, success: function(data, textStatus, XMLHttpRequest){ if(XMLHttpRequest.status == 200) { // babbys first templating engine cat_template = $("<table class=\"forums\" cellpadding=\"6\">\r\n\t<thead>\r\n\t\t<tr class=\"forumhead foruminfo L1\" style=\"background-color: #74C365\">\r\n\t\t\t<td>\r\n\t\t\t\t<h2 class=\"fpcf-categoryname\"></h2>\r\n\t\t\t</td>\r\n\t\t\t<td class=\"last_post_column\">\r\n \r\n\t\t\t</td>\r\n\r\n\t\t</tr>\r\n\t\t\r\n\t</thead>\r\n\t\r\n\t<tbody class=\"forumbit_nopost L1\">\r\n\t\t<!-- Title strecher row -->\r\n\t\t<tr><td></td>\r\n<td class=\"last_post_column\"></td></tr>\r\n\t</tbody>\r\n\t\r\n\r\n</table>"); forum_template = $("\r\n\t\t<tr class=\"forumbit_post L2\">\r\n\t<td class=\"foruminfo\" style=\"background-position: 6px center;background-repeat: no-repeat;padding-left: 29px;\">\r\n\t\t<div class=\"forumdata\">\r\n\t\t\t<h2 class=\"forumtitle\"><a class=\"fpcf-forumname\"></a></h2>\r\n\t\t\t<p class=\"forumdescription\"></p>\r\n\t\t\t\r\n\t\t\t\r\n\t\t</div>\r\n\t</td>\r\n\r\n\t<td class=\"alt forumlastpost last_post_column\">\r\n\t\t\r\n\t\r\n\r\n\t\t<div class=\"LastPostAvatar\">\r\n<a class=\"fpcf-lastposterlink\"><img src=\"/p.gif\" width=\"100%\" height=\"100%\"></a>\r\n</div>\r\n\t\r\n\t<p class=\"lastposttitle\">\r\n\t\r\n\t\r\n\t<a class=\"threadtitle\"></a>\r\n\t</p>\r\n\r\n\t<p class=\"lastpostdate\"></p>\r\n\r\n\t</td>\r\n\r\n</tr>"); for(i = 0; i < data.length; i++) { cat = cat_template.clone(); cat_tbody = cat.find("tbody").first(); cat.find(".fpcf-categoryname").first().text(data[i].name); for(j = 0; j < data[i].forums.length; j++) { forumdata = data[i].forums[j]; forum = forum_template.clone(); forum.find(".foruminfo").first().css("background-image", "url('"+forumdata.icon+"')"); forum.find(".fpcf-forumname").first().attr("href", fpcf_uri+"/forum/"+forumdata.slug+"/1"); forum.find(".fpcf-forumname").first().text(forumdata.name); forum.find(".forumdescription").first().text(forumdata.description); if(forumdata.last_post !== null) { forum.find(".LastPostAvatar").first().css("background-image", "url('/image.php?u="+forumdata.last_post.poster_id+"')"); forum.find(".fpcf-lastposterlink").first().attr("href", "/members/"+forumdata.last_post.poster_id); forum.find(".fpcf-lastposterlink").first().find("img").first().attr("alt", forumdata.last_post.poster_name); forum.find(".fpcf-lastposterlink").first().find("img").first().attr("title", forumdata.last_post.poster_name); forum.find(".threadtitle").first().attr("href", "showthread.php?t="+forumdata.last_post.thread_id+"&goto=newpost&fpcf="+forumdata.slug); forum.find(".threadtitle").first().attr("title", forumdata.last_post.thread_name); forum.find(".threadtitle").first().text(forumdata.last_post.thread_name); forum.find(".lastpostdate").first().html(forumdata.last_post.time + " <a href='showthread.php?t="+forumdata.last_post.thread_id+"&p="+forumdata.last_post.post_id+"&fpcf="+forumdata.slug+"#post"+forumdata.last_post.post_id+"'><img src='fp/vb/buttons/lastpost.gif' alt='Go to last post' title='Go to last post'></a>") } forum.appendTo(cat_tbody); } if(data[i].is_right) { cat.appendTo($(".FrontPageForums").last()); } else { cat.appendTo($(".FrontPageForums").first()); } } } else { insertNotice("FPCF boards list failed to load."); } }, error:function (xhr, ajaxOptions, thrownError){ insertNotice("FPCF boards list failed to load."); } }); } else if(window.location.pathname == "/newthread.php" && getQueryVariable("f") == 6 && window.location.search.indexOf("fpcf") > -1) { form = $(".vbform").first(); form.attr("action", form.attr("action") + "&fpcf=" + getQueryVariable("fpcf")); $("[name='sbutton']").click(function(e) { localStorage.setItem("fpcf-posticon", "http://facepunch.com" + $("#display_posticon").attr("src")); localStorage.setItem("fpcf-slug", getQueryVariable("fpcf")); }); $("<style>.button { background: #74C365 !important; }</style>").appendTo("head"); insertNotice("<b>You are technically posting in General Discussion.</b> GD rules apply. Make sure your thread title makes sense to GD readers."); $.ajax({ type: 'get', url: fpcf_uri + "/api/board/" + getQueryVariable("fpcf"), dataType: 'json', beforeSend: function(xhr) { xhr.withCredentials=true; }, success: function(data, textStatus, XMLHttpRequest) { if(XMLHttpRequest.status == 200) { $(".rfloat").first().text("Forum: " + data.name); data.slug = getQueryVariable("fpcf"); replaceBreadcrumb(data); } else { insertNotice("<b style='color: red'>Error finding FPCF forum.</b> Your thread will probably not appear in FPCF."); } }, error:function (xhr, ajaxOptions, thrownError){ insertNotice("<b style='color: red'>Error finding FPCF forum.</b> Your thread will probably not appear in FPCF."); } }); } else if(window.location.pathname == "/showthread.php" && !fpcf_thread_created && $(".navbit:last > a").text() == "General Discussion") { $.ajax({ type: 'get', url: fpcf_uri + "/api/read_thread/" + vB_Editor['vB_Editor_QR'].config.vbulletin.parentcontentid + "/" + $(".postcontainer").last().attr("id").substring(5), dataType: 'json', beforeSend: function(xhr) { xhr.withCredentials=true; }, success: function(data, textStatus, XMLHttpRequest) { if(XMLHttpRequest.status == 200) { replaceBreadcrumb(data); } } }); } else if(window.location.pathname == "/forumdisplay.php" && getQueryVariable("f") == 6) { threads = []; $(".threadbit").each(function(){ threads.push($(this).attr("id").substring(7)) }); $.ajax({ type: 'post', url: fpcf_uri + "/api/gd_threads", dataType: 'json', beforeSend: function(xhr) { xhr.withCredentials=true; }, data: JSON.stringify(threads), success: function(data, textStatus, XMLHttpRequest) { if(XMLHttpRequest.status == 200) { for(i = 0; i < data.length; i++) { $("#thread_" + data[i]).remove(); } insertNotice("As you're in General Discussion, FPCF threads have been removed from view. (Count: " + data.length + ")"); } else { insertNotice("Failed to remove FPCF threads."); } } }); } });