<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://wikilectio.it/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js</id>
	<title>MediaWiki:Common.js - Cronologia</title>
	<link rel="self" type="application/atom+xml" href="https://wikilectio.it/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js"/>
	<link rel="alternate" type="text/html" href="https://wikilectio.it/index.php?title=MediaWiki:Common.js&amp;action=history"/>
	<updated>2026-04-20T18:31:18Z</updated>
	<subtitle>Cronologia della pagina su questo sito</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wikilectio.it/index.php?title=MediaWiki:Common.js&amp;diff=170&amp;oldid=prev</id>
		<title>Tostho: creazione pagina</title>
		<link rel="alternate" type="text/html" href="https://wikilectio.it/index.php?title=MediaWiki:Common.js&amp;diff=170&amp;oldid=prev"/>
		<updated>2025-09-07T22:45:33Z</updated>

		<summary type="html">&lt;p&gt;creazione pagina&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti. */&lt;br /&gt;
&lt;br /&gt;
/* ===== Auto evidenziazione &amp;quot;Punti oscuri&amp;quot; ===== */&lt;br /&gt;
(function() {&lt;br /&gt;
  if (mw.config.get(&amp;#039;wgAction&amp;#039;) !== &amp;#039;view&amp;#039;) return;&lt;br /&gt;
&lt;br /&gt;
  function getMarkers() {&lt;br /&gt;
    var q = document.getElementById(&amp;#039;po-queue&amp;#039;);&lt;br /&gt;
    if (!q) return [];&lt;br /&gt;
    return Array.prototype.slice.call(q.querySelectorAll(&amp;#039;.po-item&amp;#039;))&lt;br /&gt;
      .map(function(el){ &lt;br /&gt;
        var t = (el.getAttribute(&amp;#039;data-po-text&amp;#039;) || &amp;#039;&amp;#039;).trim();&lt;br /&gt;
        var title = (el.getAttribute(&amp;#039;data-po-title&amp;#039;) || &amp;#039;&amp;#039;).trim();&lt;br /&gt;
        return t ? {text: t, title: title} : null;&lt;br /&gt;
      })&lt;br /&gt;
      .filter(Boolean);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Trova e avvolge la prima occorrenza testuale di &amp;quot;needle&amp;quot; in un container con class po-highlight&lt;br /&gt;
  function highlightFirst(container, needle) {&lt;br /&gt;
    if (!needle || needle.length &amp;lt; 3) return false; // evita match troppo corti&lt;br /&gt;
    // Normalizza spazi multipli&lt;br /&gt;
    needle = needle.replace(/\s+/g, &amp;#039; &amp;#039;).trim();&lt;br /&gt;
&lt;br /&gt;
    var walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT, {&lt;br /&gt;
      acceptNode: function(node) {&lt;br /&gt;
        if (!node.nodeValue) return NodeFilter.FILTER_REJECT;&lt;br /&gt;
        // ignora testo troppo corto&lt;br /&gt;
        if (node.nodeValue.trim().length &amp;lt; 3) return NodeFilter.FILTER_REJECT;&lt;br /&gt;
        return NodeFilter.FILTER_ACCEPT;&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    var node;&lt;br /&gt;
    while ((node = walker.nextNode())) {&lt;br /&gt;
      var hay = node.nodeValue.replace(/\s+/g, &amp;#039; &amp;#039;);&lt;br /&gt;
      var idx = hay.indexOf(needle);&lt;br /&gt;
      if (idx !== -1) {&lt;br /&gt;
        var range = document.createRange();&lt;br /&gt;
        // Per calcolare offset originali, rimappiamo gli indici ignorando la normalizzazione&lt;br /&gt;
        // Approccio semplice: usiamo la stringa originale e cerchiamo senza normalizzare&lt;br /&gt;
        var raw = node.nodeValue;&lt;br /&gt;
        var rawIdx = raw.indexOf(needle);&lt;br /&gt;
        if (rawIdx === -1) {&lt;br /&gt;
          // fallback: prova una ricerca case-insensitive&lt;br /&gt;
          var lowerIdx = raw.toLowerCase().indexOf(needle.toLowerCase());&lt;br /&gt;
          if (lowerIdx === -1) continue;&lt;br /&gt;
          rawIdx = lowerIdx;&lt;br /&gt;
        }&lt;br /&gt;
        range.setStart(node, rawIdx);&lt;br /&gt;
        range.setEnd(node, rawIdx + needle.length);&lt;br /&gt;
&lt;br /&gt;
        var span = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
        span.className = &amp;#039;po-highlight&amp;#039;;&lt;br /&gt;
        range.surroundContents(span);&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function addToggle() {&lt;br /&gt;
    var content = document.getElementById(&amp;#039;mw-content-text&amp;#039;);&lt;br /&gt;
    if (!content) return;&lt;br /&gt;
    var bar = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
    bar.style = &amp;#039;margin:0 0 .6rem 0; display:flex; gap:.5rem; align-items:center; font-size:.9em;&amp;#039;;&lt;br /&gt;
    var btn = document.createElement(&amp;#039;button&amp;#039;);&lt;br /&gt;
    btn.textContent = &amp;#039;Mostra/Nascondi evidenziazioni&amp;#039;;&lt;br /&gt;
    btn.className = &amp;#039;po-toggle&amp;#039;;&lt;br /&gt;
    btn.onclick = function() {&lt;br /&gt;
      var on = document.body.getAttribute(&amp;#039;data-po-on&amp;#039;) === &amp;#039;1&amp;#039;;&lt;br /&gt;
      document.body.setAttribute(&amp;#039;data-po-on&amp;#039;, on ? &amp;#039;0&amp;#039; : &amp;#039;1&amp;#039;);&lt;br /&gt;
    };&lt;br /&gt;
    bar.appendChild(btn);&lt;br /&gt;
    // Inserisci prima del primo paragrafo&lt;br /&gt;
    var first = content.querySelector(&amp;#039;:scope &amp;gt; *&amp;#039;);&lt;br /&gt;
    content.insertBefore(bar, first);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function run() {&lt;br /&gt;
    var markers = getMarkers();&lt;br /&gt;
    if (!markers.length) return; // niente da evidenziare&lt;br /&gt;
    var container = document.getElementById(&amp;#039;mw-content-text&amp;#039;);&lt;br /&gt;
    if (!container) return;&lt;br /&gt;
&lt;br /&gt;
    // Applica evidenziazioni&lt;br /&gt;
    markers.forEach(function(m) {&lt;br /&gt;
      highlightFirst(container, m.text);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // Attiva toggle&lt;br /&gt;
    addToggle();&lt;br /&gt;
    document.body.setAttribute(&amp;#039;data-po-on&amp;#039;, &amp;#039;1&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Esegui dopo caricamento DOM&lt;br /&gt;
  if (document.readyState === &amp;#039;loading&amp;#039;) {&lt;br /&gt;
    document.addEventListener(&amp;#039;DOMContentLoaded&amp;#039;, run);&lt;br /&gt;
  } else {&lt;br /&gt;
    run();&lt;br /&gt;
  }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Tostho</name></author>
	</entry>
</feed>