Highlighta forumtrådar

Highlighta forumtrådar

Jag märkte precis att man kan kryssa i rutan längst till höger av en tråd och då får tråden i en gulaktig nyans. Efter ett litet tags browsande så försvinner tyvärr markeringen och jag saknar det direkt! Finns det någon möjlighet att man kan få trådar markerade på ett mer lättfunnet sätt genom att t.ex ändra färg på bakgrunden? Det går att följa trådar och antingen få en notifikation eller kolla till vänster för att hitta trådarna men det här gör det mycket enklare att hitta trådar man tycker är intressanta!

Här har jag tagit en printscreen hur det ser ut när man markerar tråden

Tjena @ClintBeastwood! Tanken med kryssrutorna är inte att markeringarna ska sparas permanent, utan att man ska kunna följa/avfölja/markera flera trådar som lästa på samma gång.

Tyvärr går det inte att med CSS selektera ut följda trådar; annars hade man mycket enkelt kunnat applicera den gula bakgrunden på alla sådana åtminstone. Däremot går det att göra det med JavaScript. Här är ett userscript som gör alla följda trådar gulmarkerade, som du kan använda om du vill:

Klicka för mer information

// ==UserScript== // @name Highlight Followed Threads // @author Simon Alling // @include /^https?:\/\/(www\.)?sweclockers\.com\/forum\// // @run-at document-end // ==/UserScript== const RUN_ON = /\/forum\/(\d+\-[^\/]*|aktiva|obesvarade|foljda|skapade|lasta)$/; const SELECTOR_TR = "tr.forumThread"; const SELECTOR_ICON = ".threadStatus"; const CLASS_SELECTED = "isSelected"; const ICONS_FOLLOWED = [32, 96, 33, 97, 40, 104, 41, 105]; const ICON_CLASS = number => "icon-" + number; const iconToRowMap = new Map(); if (RUN_ON.test(document.location.pathname)) { main(); } function main() { const observer = new MutationObserver(mutationHandler); const trs = document.querySelectorAll(SELECTOR_TR); for (const tr of trs) { const icon = tr.querySelector(SELECTOR_ICON); iconToRowMap.set(icon, tr); observer.observe(icon, { attributes: true }); } } function mutationHandler(mutations, observer) { for (const mutation of mutations) { if (mutation.type === "attributes") { const icon = mutation.target; if (ICONS_FOLLOWED.some(n => icon.classList.contains(ICON_CLASS(n)))) { iconToRowMap.get(icon).classList.add(CLASS_SELECTED); } } } }

Visa mer

Om man vill skulle man alternativt kunna skriva ett script som ger kryssrutorna den funktionalitet du efterfrågar. De sparas idag i sessionStorage under nyckeln "tanuki.storage". Om man som i exemplet markerar tråden om Epic Games blir värdet följande:

{"forum.threads":{"meta":{"lastWrite":1568293958097},"value":{"1569096":1569096}}}

lastWrite lär användas för att avgöra när datan ska raderas. Det man kanske kan göra är att lägga en event listener på kryssrutorna som då kopierar datan från sessionStorage till localStorage; sedan kollar man i början av varje sidladdning om sessionStorage-värdet har raderats och återställer det i så fall från localStorage.

Som vanligt är det säkert inte fullt så enkelt i verkligheten, och det vore en ganska hackig modifikation, men det borde vara fullt möjligt iallafall.

Skrivet av Alling:

Tjena @ClintBeastwood! Tanken med kryssrutorna är inte att markeringarna ska sparas permanent, utan att man ska kunna följa/avfölja/markera flera trådar som lästa på samma gång.

Tyvärr går det inte att med CSS selektera ut följda trådar; annars hade man mycket enkelt kunnat applicera den gula bakgrunden på alla sådana åtminstone. Däremot går det att göra det med JavaScript. Här är ett userscript som gör alla följda trådar gulmarkerade, som du kan använda om du vill:

Klicka för mer information

// ==UserScript== // @name Highlight Followed Threads // @author Simon Alling // @include /^https?:\/\/(www\.)?sweclockers\.com\/forum\// // @run-at document-end // ==/UserScript== const RUN_ON = /\/forum\/(\d+\-[^\/]*|aktiva|obesvarade|foljda|skapade|lasta)$/; const SELECTOR_TR = "tr.forumThread"; const SELECTOR_ICON = ".threadStatus"; const CLASS_SELECTED = "isSelected"; const ICONS_FOLLOWED = [32, 96, 33, 97, 40, 104, 41, 105]; const ICON_CLASS = number => "icon-" + number; const iconToRowMap = new Map(); if (RUN_ON.test(document.location.pathname)) { main(); } function main() { const observer = new MutationObserver(mutationHandler); const trs = document.querySelectorAll(SELECTOR_TR); for (const tr of trs) { const icon = tr.querySelector(SELECTOR_ICON); iconToRowMap.set(icon, tr); observer.observe(icon, { attributes: true }); } } function mutationHandler(mutations, observer) { for (const mutation of mutations) { if (mutation.type === "attributes") { const icon = mutation.target; if (ICONS_FOLLOWED.some(n => icon.classList.contains(ICON_CLASS(n)))) { iconToRowMap.get(icon).classList.add(CLASS_SELECTED); } } } }

Visa mer

Om man vill skulle man alternativt kunna skriva ett script som ger kryssrutorna den funktionalitet du efterfrågar. De sparas idag i sessionStorage under nyckeln "tanuki.storage". Om man som i exemplet markerar tråden om Epic Games blir värdet följande:

{"forum.threads":{"meta":{"lastWrite":1568293958097},"value":{"1569096":1569096}}}

lastWrite lär användas för att avgöra när datan ska raderas. Det man kanske kan göra är att lägga en event listener på kryssrutorna som då kopierar datan från sessionStorage till localStorage; sedan kollar man i början av varje sidladdning om sessionStorage-värdet har raderats och återställer det i så fall från localStorage.

Som vanligt är det säkert inte fullt så enkelt i verkligheten, och det vore en ganska hackig modifikation, men det borde vara fullt möjligt iallafall.

En step by step hur man gör med det där javaskriptet? Låtsas att du pratar med en bäbis för det är ungefär på den nivån jag är på när det gäller sånt. Att det visar trådar man följer skulle vara gott nog!

Skrivet av ClintBeastwood:

En step by step hur man gör med det där javaskriptet? Låtsas att du pratar med en bäbis för det är ungefär på den nivån jag är på när det gäller sånt. Att det visar trådar man följer skulle vara gott nog!

Du behöver ett webbläsartillägg som kan köra userscripts. Jag föreslår Violentmonkey, men det finns även t ex Tampermonkey och Greasemonkey. När du har Violentmonkey installerat ska det synas en liten ikon med en apa uppe till höger i webbläsaren. Klicka på den och sedan +, så ska det öppnas en ny flik med lite kod i, typ så:

// ==UserScript==
// @name New Script
// @namespace Violentmonkey Scripts
// @match https://www.sweclockers.com/
// @grant none
// ==/UserScript==

Ta bort den koden och klistra in koden ovan istället. Var noggrann med att kopiera hela koden och inget extra; erfarenheten säger att det är väldigt lätt att få med för mycket eller för lite när man kopierar från en webbsida så.

När du klistrat in koden, tryck Ctrl + S eller klicka på Save för att spara. Nu bör det fungera. (Det går alltid att klicka på apan för att se vilka script som är aktiva på den nuvarande sidan.)

Skrivet av Alling:

Du behöver ett webbläsartillägg som kan köra userscripts. Jag föreslår Violentmonkey, men det finns även t ex Tampermonkey och Greasemonkey. När du har Violentmonkey installerat ska det synas en liten ikon med en apa uppe till höger i webbläsaren. Klicka på den och sedan +, så ska det öppnas en ny flik med lite kod i, typ så:

// ==UserScript==
// @name New Script
// @namespace Violentmonkey Scripts
// @match https://www.sweclockers.com/
// @grant none
// ==/UserScript==

Ta bort den koden och klistra in koden ovan istället. Var noggrann med att kopiera hela koden och inget extra; erfarenheten säger att det är väldigt lätt att få med för mycket eller för lite när man kopierar från en webbsida så.

När du klistrat in koden, tryck Ctrl + S eller klicka på Save för att spara. Nu bör det fungera. (Det går alltid att klicka på apan för att se vilka script som är aktiva på den nuvarande sidan.)

Tack tack tack! Du är grym!!

Skrivet av ClintBeastwood:

Jag märkte precis att man kan kryssa i rutan längst till höger av en tråd och då får tråden i en gulaktig nyans. Efter ett litet tags browsande så försvinner tyvärr markeringen och jag saknar det direkt! Finns det någon möjlighet att man kan få trådar markerade på ett mer lättfunnet sätt genom att t.ex ändra färg på bakgrunden? Det går att följa trådar och antingen få en notifikation eller kolla till vänster för att hitta trådarna men det här gör det mycket enklare att hitta trådar man tycker är intressanta!

Här har jag tagit en printscreen hur det ser ut när man markerar tråden
https://forumbilder.com/images/2019/09/11/swec.jpg

Hej,

Nu såg jag att du förvisso fått hjälp att uppnå detta med externa script, men skulle ändå vilja lyfta frågan just vad du vill komma åt. Är det ha några trådar som "favoritmarkerade" och enkelt se dom i forumöverblicken eller finns det något annat här du vill få ut?

Mvh // Anton

Skrivet av Klorixx:

Hej,

Nu såg jag att du förvisso fått hjälp att uppnå detta med externa script, men skulle ändå vilja lyfta frågan just vad du vill komma åt. Är det ha några trådar som "favoritmarkerade" och enkelt se dom i forumöverblicken eller finns det något annat här du vill få ut?

Mvh // Anton

Det var att kunna ha vissa trådar som stack ut och att endast följa tråden gjorde ändå att man fick anstränga sig för att se vilka det var. Scriptet jag fick hjälp med gjorde exakt vad jag ville. Nu samlas dom dessutom i "följda trådar" så det blir i stort sett som en prenumeration på ett ämne vilket är nice!

Skrivet av ClintBeastwood:

Det var att kunna ha vissa trådar som stack ut och att endast följa tråden gjorde ändå att man fick anstränga sig för att se vilka det var. Scriptet jag fick hjälp med gjorde exakt vad jag ville. Nu samlas dom dessutom i "följda trådar" så det blir i stort sett som en prenumeration på ett ämne vilket är nice!

Ja följa trådar har ju alltid gått att göra för att få dom samlade under fliken följda trådar. Det går ju även att ställa in under inställningarna om man vill följa trådar automatiskt vartefter man skriver i dom

Skrivet av Klorixx:

Ja följa trådar har ju alltid gått att göra för att få dom samlade under fliken följda trådar. Det går ju även att ställa in under inställningarna om man vill följa trådar automatiskt vartefter man skriver i dom

Främst var jag ute efter att markera trådar så att man lättare hittade dom, att få dom alla samlade samtidigt var en bonus.