MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 1: Line 1:
console.log("BharatWiki Common.js loaded");
// TEST: Check if Common.js can inject schema
console.log("TEST: Common.js is running");


mw.loader.using('mediawiki.util', function () {
const testSchema = {
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "TEST SCHEMA – BharatWikipedia"
};


  if (mw.config.get('wgNamespaceNumber') !== 0) return;
const testScript = document.createElement('script');
 
testScript.type = 'application/ld+json';
  const infobox = document.querySelector('.infobox');
testScript.text = JSON.stringify(testSchema);
  if (!infobox) return;
document.head.appendChild(testScript);
 
  const metaDesc =
    document.querySelector('meta[name="description"]')?.content || "";
 
  const pageUrl = location.href;
  const pageTitle = mw.config.get('wgTitle');
 
  const categories = Array.from(
    document.querySelectorAll('#mw-normal-catlinks a')
  ).map(a => a.innerText.toLowerCase());
 
  let entityType = null;
 
  if (categories.some(c => c.includes('companies') || c.includes('agency'))) {
    entityType = "Organization";
  } else if (categories.some(c => c.includes('people') || c.includes('birth'))) {
    entityType = "Person";
  } else if (categories.some(c => c.includes('films') || c.includes('movies'))) {
    entityType = "Movie";
  } else if (categories.some(c => c.includes('places'))) {
    entityType = "Place";
  }
 
  if (!entityType) return;
 
  const image = infobox.querySelector('img')?.src || null;
 
  const schema = {
    "@context": "https://schema.org",
    "@type": "ProfilePage",
    "mainEntity": {
      "@type": entityType,
      "name": pageTitle,
      "url": pageUrl,
      "description": metaDesc
    }
  };
 
  if (image) {
    if (entityType === "Organization") {
      schema.mainEntity.logo = image;
    } else {
      schema.mainEntity.image = image;
    }
  }
 
  const script = document.createElement('script');
  script.type = 'application/ld+json';
  script.text = JSON.stringify(schema);
  document.head.appendChild(script);
 
});