Helper/CopyScript: Difference between revisions
From Karteria DWRP Wiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
<code> // ==UserScript== | <code> | ||
// ==UserScript== | |||
// @name FAQ Copy | // @name FAQ Copy | ||
// @namespace http://tampermonkey.net/ | // @namespace http://tampermonkey.net/ | ||
Revision as of 00:01, 18 December 2025
// ==UserScript==
// @name FAQ Copy
// @namespace http://tampermonkey.net/
// @version 2025-12-15
// @description Formats comments for the Karteria player wiki https://karteria.blossom.blue
// @author icie
// @match https://*.dreamwidth.org/*.html*
// @icon https://www.google.com/s2/favicons?sz=64&domain=dreamwidth.org
// @grant none
// ==/UserScript==
(function() {
//var $=$;
function addJQuery(callback) {
var script = document.createElement("script");
script.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js");
script.addEventListener('load', function() {
var script = document.createElement("script");
script.textContent = "window.$=jQuery.noConflict(true);(" + callback.toString() + ")();";
document.body.appendChild(script);
}, false);
document.body.appendChild(script);
}
function processAsk(faqText, comment) {
var content = $(comment).find(".comment-content");
processContent(content);
faqText.answercontent = $(content).html();
faqText.askcontent = $(comment).find(".comment-content").html();
faqText.dateasked = $(comment).find(".header .datetime").text().match(/(\d{4}\-\d{2}\-\d{2})/)[0];
faqText.askedby = $(comment).find(".header .comment-poster").text().trim();
faqText.link = $(comment).find(".header .commentpermalink a").prop("href");
console.log(faqText.link);
// console.log(JSON.stringify(faqText));
return faqText;
}
function processContent(content){
var htm = $(content).html().replace("|", "{{!}}");
content.html(htm);
content.find(".ljuser").each(function (){
var x = $(this).text();
$(this).after("{{DWUser|"+x+"}}");
// console.log("x: "+x);
$(this).remove();
});
var details = content.find("details");
// console.log("contentjs: " +$(content).html());
details.each(function (){
console.log("details:"+$(this).html());
var summary = $(this).find("summary").first();
console.log("summary:"+$(summary).html());
if(summary.length > 0){
summary.each(function (){
var x = $(this).html();
$(this).after("<div style='font-weight:bold' class='mw-collapsible-header' >"+x+"</div><div class='mw-collapsible-content'>");
console.log("summary: "+x);
$(this).remove();
});
var x = $(this).html();
console.log("summary here:" + x);
console.log("res: <div class='toccolours mw-collapsible mw-collapsed' style='width:400px; overflow:auto;'>"+x+"</div></div>");
$(this).after("<div class='toccolours mw-collapsible mw-collapsed' style='width:400px; overflow:auto;'>"+x+"</div></div>");
$(this).remove();
} else {
var y = $(this).html();
$(this).after("<div class='toccolours mw-collapsible mw-collapsed' style='width:400px; overflow:auto;'>"+y+"</div>");
$(this).remove();
}
});
}
function processAnswer(faqText, comment) {
var content = $(comment).find(".comment-content");
processContent(content);
faqText.answercontent = $(content).html();
faqText.dateanswered = $(comment).find(".header .datetime").text().match(/(\d{4}\-\d{2}\-\d{2})/)[0];
return faqText;
}
function buildText(faqText) {
var processedText = `{{Question
|QuestionFaqPage=<em>No results</em>
|Link=` + faqText.link + `
|Topics=
|AskedBy=` + faqText.askedby + `
|DateAsked=` + faqText.dateasked + `
|QuestionText=` + faqText.askcontent + `
|DateAnswered=` + faqText.dateanswered + `
|AnswerText=` + faqText.answercontent + `
}}`;
return processedText;
}
function fillFAQBox() {
var comments = $(".comment:has(.faq-input:has(:checked))");
var faqText = {};
var l = document.URL;
faqText["faqpageurl"] = l.match(/https:\/\/(?:.+)\.dreamwidth\.org\/(?:\d+).html/)[0];
if ($(comments).length > 1) {
faqText = processAsk(faqText, $(comments).eq(0));
faqText = processAnswer(faqText, $(comments).eq(1));
$(comments).find(".faq-input :checked").prop('checked', false);
var toAdd = $("<textarea></textarea>").text(buildText(faqText));
$("#floatbox").html("").html(toAdd).find("textarea").select();
}
}
function main() {
var comments = $(".comment-poster");
comments.prepend("<div class='faq-input'><input type='checkbox' class='faq-ask' name=ask /></div>");
// console.log("hereeee");
$(comments).find(".faq-ask").click(fillFAQBox);
// console.log("here 2");
var floatDiv = $("<div id='floatbox'></div>").css({
"position": "fixed",
"bottom": "0",
"right": "0",
"border": "3px solid #73AD21"
});
$("#comments").append(floatDiv);
}
if (window.jQuery) {
// console.log("jq loaded");
main();
} else {
// console.log("jq not loaded");
addJQuery(main);
}
})();
//console.log("HEREEWRFLS");