Jump to content

MediaWiki:Common.js: Difference between revisions

From A Modern Way To Be Known
No edit summary
Tag: Reverted
No edit summary
Tags: Manual revert Reverted
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
mw.loader.using('mediawiki.util', function () {
mw.loader.using('mediawiki.util').then(function () {
  function initAutoScroll() {
    const container = document.getElementById('scrollable-articles');
    if (!container) return;


    if (container.dataset.autoScrollInitialized) return;
  window.addEventListener('load', function () {
    container.dataset.autoScrollInitialized = 'true';


     if (!container.dataset.duplicated) {
     if (mw.config.get('wgNamespaceNumber') !== 0) return;
      const originalChildren = Array.from(container.children);
      originalChildren.forEach(child => {
        const clone = child.cloneNode(true);
        container.appendChild(clone);
      });
      container.dataset.originalWidth = container.scrollWidth / 2;
      container.dataset.duplicated = 'true';
    }


     let scrollSpeed = window.innerWidth < 500 ? 0.3 : 0.5;
     // Prevent duplicates
     let requestId;
     if (document.getElementById('bw-entity-schema')) return;


     function autoScroll() {
     const infobox = document.querySelector('table.infobox');
      container.scrollLeft += scrollSpeed;
    if (!infobox) return;
      const originalWidth = parseFloat(container.dataset.originalWidth);


       if (container.scrollLeft >= originalWidth) {
    const metaDesc =
        container.scrollLeft -= originalWidth;
       document.querySelector('meta[name="description"]')?.content || "";
      }


      requestId = requestAnimationFrame(autoScroll);
    const pageTitle = mw.config.get('wgTitle');
      container._autoScrollRequestId = requestId;
    const pageUrl = location.href;
    }


     if (container._autoScrollRequestId) {
     const text = infobox.innerText.toLowerCase();
      cancelAnimationFrame(container._autoScrollRequestId);
     let schema = null;
     }


     function pauseScroll() {
     /* ---------- COMPANY ---------- */
       if (container._autoScrollRequestId) {
    if (text.includes('industry') || text.includes('founded')) {
         cancelAnimationFrame(container._autoScrollRequestId);
       schema = {
         container._autoScrollRequestId = null;
         "@context": "https://schema.org",
       }
        "@type": "Organization",
    }
        "name": pageTitle,
        "url": pageUrl,
         "description": metaDesc
       };


    function resumeScroll() {
      const logo = infobox.querySelector('img')?.src;
       if (!container._autoScrollRequestId) {
       if (logo) schema.logo = logo;
        autoScroll();
      }
     }
     }


     container.removeEventListener('mouseenter', pauseScroll);
     /* ---------- PERSON ---------- */
    container.removeEventListener('mouseleave', resumeScroll);
    else if (text.includes('born')) {
      schema = {
        "@context": "https://schema.org",
        "@type": "Person",
        "name": pageTitle,
        "url": pageUrl,
        "description": metaDesc
      };


    container.addEventListener('mouseenter', pauseScroll);
      const image = infobox.querySelector('img')?.src;
    container.addEventListener('mouseleave', resumeScroll);
       if (image) schema.image = image;
 
    autoScroll();
  }
 
  if (document.readyState === 'complete' || document.readyState === 'interactive') {
    initAutoScroll();
  } else {
    document.addEventListener('DOMContentLoaded', initAutoScroll);
  }
 
  mw.hook('wikipage.content').add(initAutoScroll);
});
 
// Hide 'View source' tab using JS fallback
$(document).ready(function () {
  $('#ca-viewsource').hide();
});
 
$(document).ready(function () {
  // Auto-tag NeedsReview
  if (mw.config.get("wgAction") === "edit" || mw.config.get("wgAction") === "submit") {
    var userGroups = mw.config.get("wgUserGroups") || [];
 
    if (userGroups.includes("user") && !userGroups.includes("approver") && !userGroups.includes("sysop")) {
      var $wpTextbox1 = $("#wpTextbox1");
 
       if ($wpTextbox1.length) {
        var currentText = $wpTextbox1.val();
 
        // Add NeedsReview if not present
        if (!currentText.includes("{{NeedsReview}}")) {
          currentText = "{{NeedsReview}}\n" + currentText;
        }
 
        // Add Notability if it's a new page and not already added
        var isNewPage = mw.config.get("wgIsArticle") === false;
        if (isNewPage && !currentText.includes("{{Notability")) {
          currentText = "{{Notability|reason=Please add reliable sources.|by=" + mw.config.get("wgUserName") + "|date=" + new Date().toLocaleString('default', { month: 'long', year: 'numeric' }) + "}}\n" + currentText;
        }
 
        // Set updated text
        $wpTextbox1.val(currentText);
      }
     }
     }
  }


  // Meta description injection (SEO)
    if (!schema) return;
  var desc = $('meta[name="knowlepedia-desc"]').attr("content");
  if (desc) {
    $('head').append('<meta name="description" content="' + desc + '">');
  }
});


    const script = document.createElement('script');
    script.type = 'application/ld+json';
    script.id = 'bw-entity-schema';
    script.text = JSON.stringify(schema);


    document.body.appendChild(script);


  });


mw.loader.using('mediawiki.util').then(function () {
  var schema = {
    "@context": "https://schema.org",
    "@type": "Person",
    "name": "Gaurav Singh Chouhan",
    "image": "https://commons.wikimedia.org/wiki/Special:FilePath/Gaurav_Singh_Chouhan.jpg",
    "url": "https://knowlepedia.org/wiki/Gaurav_Singh_Chouhan",
    "sameAs": [
      "https://www.imdb.com/name/nm14658047/",
      "https://www.instagram.com/mrgauravchouhan",
      "https://www.linkedin.com/in/mrgauravchouhan",
      "https://x.com/mrgauravchouhan",
      "https://www.timesofmalwa.in/2025/06/gaurav-singh-chouhan.html"
    ],
    "birthDate": "1999-07-21",
    "jobTitle": "Writer, Law Student, Motivational Speaker",
    "alumniOf": "Chaudhary Charan Singh University",
    "nationality": "Indian",
    "description": "Gaurav Singh Chouhan is an Indian writer, motivational speaker, and BA LLB student, known for his public talks and biography 'From Pen to Purpose.'"
  };
  var script = document.createElement('script');
  script.type = 'application/ld+json';
  script.text = JSON.stringify(schema);
  document.head.appendChild(script);
});
$(document).ready(function () {
  if (mw.config.get('wgNamespaceNumber') === 2 && mw.config.get('wgTitle').endsWith('/Dashboard')) {
    mw.util.addPortletLink('p-personal', mw.config.get('wgServer') + '/wiki/User:' + mw.config.get('wgUserName') + '/Dashboard', '🛠 Dashboard');
  }
});
// Show lock icon for protected pages
$(function () {
  if (mw.config.get("wgIsProtected")) {
    $("<span>")
      .addClass("mw-protected-icon")
      .css({
        float: "right",
        marginLeft: "10px",
        fontSize: "16px"
      })
      .html("🔒")
      .prependTo(".mw-first-heading");
  }
});
// === Google Analytics 4 (GA4) - gtag ===
(function () {
  var s = document.createElement('script');
  s.async = true;
  s.src = 'https://www.googletagmanager.com/gtag/js?id=G-BQD14XDBB1';
  document.head.appendChild(s);
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  window.gtag = window.gtag || gtag;
  gtag('js', new Date());
  gtag('config', 'G-BQD14XDBB1');
})();
mw.loader.using('mediawiki.util').then(function () {
  if (
    mw.config.get('wgNamespaceNumber') === 0 &&
    mw.config.get('wgTitle') === 'Trilok_Media'
  ) {
    var orgSchema = {
      "@context": "https://schema.org",
      "@type": "Organization",
      "name": "Trilok Media",
      "alternateName": "Trilok Media Agency",
      "description": "Trilok Media is an Indian digital marketing and public relations agency providing SEO, online reputation management, media coverage, and brand visibility solutions.",
      "foundingDate": "2022",
      "founders": [
        { "@type": "Person", "name": "Trilok Singh", "jobTitle": "Founder" },
        { "@type": "Person", "name": "Kumkum Singh Chauhan", "jobTitle": "Co-Founder" }
      ],
      "url": "https://trilokmedia.in",
      "logo": "https://trilokmedia.in/logo.png",
      "address": {
        "@type": "PostalAddress",
        "addressCountry": "IN"
      },
      "areaServed": "India",
      "sameAs": [
        "https://www.facebook.com/trilokmedia.in/",
        "https://www.instagram.com/trilokmedia.in/",
        "https://www.linkedin.com/company/trilok-media/",
        "https://x.com/trilokmedia_in"
      ]
    };
    var script = document.createElement('script');
    script.type = 'application/ld+json';
    script.text = JSON.stringify(orgSchema);
    document.head.appendChild(script);
  }
});
});

Revision as of 19:33, 17 December 2025

mw.loader.using('mediawiki.util', function () {

  window.addEventListener('load', function () {

    if (mw.config.get('wgNamespaceNumber') !== 0) return;

    // Prevent duplicates
    if (document.getElementById('bw-entity-schema')) return;

    const infobox = document.querySelector('table.infobox');
    if (!infobox) return;

    const metaDesc =
      document.querySelector('meta[name="description"]')?.content || "";

    const pageTitle = mw.config.get('wgTitle');
    const pageUrl = location.href;

    const text = infobox.innerText.toLowerCase();
    let schema = null;

    /* ---------- COMPANY ---------- */
    if (text.includes('industry') || text.includes('founded')) {
      schema = {
        "@context": "https://schema.org",
        "@type": "Organization",
        "name": pageTitle,
        "url": pageUrl,
        "description": metaDesc
      };

      const logo = infobox.querySelector('img')?.src;
      if (logo) schema.logo = logo;
    }

    /* ---------- PERSON ---------- */
    else if (text.includes('born')) {
      schema = {
        "@context": "https://schema.org",
        "@type": "Person",
        "name": pageTitle,
        "url": pageUrl,
        "description": metaDesc
      };

      const image = infobox.querySelector('img')?.src;
      if (image) schema.image = image;
    }

    if (!schema) return;

    const script = document.createElement('script');
    script.type = 'application/ld+json';
    script.id = 'bw-entity-schema';
    script.text = JSON.stringify(schema);

    document.body.appendChild(script);

  });

});