Helper/CopyScript

From Karteria DWRP Wiki
Jump to navigationJump to search
// ==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");