"മീഡിയവിക്കി:Common.js" എന്ന താളിന്റെ പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസം

No edit summary
No edit summary
വരി 17: വരി 17:


/* ============================================================
/* ============================================================
   Wikimedia Commons Gallery Loader (with per-image captions)
   Wikimedia Commons Gallery Loader (Template-based, MULTILINE SAFE)
   ============================================================ */
   ============================================================ */
mw.hook('wikipage.content').add(function ($content) {
mw.hook('wikipage.content').add(function ($content) {
വരി 24: വരി 24:
         var container = this;
         var container = this;


         var rawItems = container.dataset.items;
         var sources = container.querySelectorAll('.commons-gallery-source');
         if (!rawItems) return;
         if (!sources.length) return;


         var width = parseInt(container.dataset.imageWidth, 10) || 300;
         var width = 300;
 
        var items = rawItems.split('|').map(function (entry) {
            var parts = entry.split('::');
            return {
                filename: parts[0] ? parts[0].trim() : '',
                caption: parts[1] ? parts.slice(1).join('::').trim() : ''
            };
        }).filter(function (i) {
            return i.filename;
        });
 
        if (!items.length) return;


         var grid = document.createElement('div');
         var grid = document.createElement('div');
വരി 50: വരി 38:
         container.appendChild(grid);
         container.appendChild(grid);


         items.forEach(function (item) {
         sources.forEach(function (srcEl) {
 
            var filename = srcEl.dataset.file;
            var captionText = srcEl.dataset.caption || '';
 
            if (!filename) return;


             var apiUrl =
             var apiUrl =
വരി 59: വരി 52:
                 '&iiprop=url|extmetadata' +
                 '&iiprop=url|extmetadata' +
                 '&iiurlwidth=' + width +
                 '&iiurlwidth=' + width +
                 '&titles=File:' + encodeURIComponent(item.filename) +
                 '&titles=File:' + encodeURIComponent(filename) +
                 '&origin=*';
                 '&origin=*';


             fetch(apiUrl)
             fetch(apiUrl)
                 .then(function (r) {
                 .then(function (r) {
                     if (!r.ok) {
                     if (!r.ok) throw new Error('HTTP ' + r.status);
                        throw new Error('HTTP error ' + r.status);
                    }
                     return r.json();
                     return r.json();
                 })
                 })
                 .then(function (data) {
                 .then(function (data) {


                     if (!data || !data.query || !data.query.pages) {
                     if (!data || !data.query || !data.query.pages) return;
                        throw new Error('Invalid API response');
                    }


                     var page =
                     var page =
                         data.query.pages[Object.keys(data.query.pages)[0]];
                         data.query.pages[Object.keys(data.query.pages)[0]];


                     if (!page || !page.imageinfo || !page.imageinfo.length) {
                     if (!page || !page.imageinfo) return;
                        throw new Error('No imageinfo for ' + item.filename);
                    }


                     var info = page.imageinfo[0];
                     var info = page.imageinfo[0];
വരി 106: വരി 93:
                     var img = document.createElement('img');
                     var img = document.createElement('img');
                     img.src = imgUrl;
                     img.src = imgUrl;
                     img.alt = item.caption || item.filename;
                     img.alt = captionText || filename;
                     img.loading = 'lazy';
                     img.loading = 'lazy';
                     img.style.width = '100%';
                     img.style.width = '100%';
                     img.style.display = 'block';
                     img.style.display = 'block';


                     /* Data for lightbox */
                     /* Lightbox data */
                     img.dataset.fullsrc = info.url;
                     img.dataset.fullsrc = info.url;
                     img.dataset.caption =
                     img.dataset.caption =
                         (item.caption ? item.caption + '<br>' : '') +
                         (captionText ? captionText + '<br>' : '') +
                         '© ' + artist +
                         '© ' + artist +
                         (licenseUrl
                         (licenseUrl
വരി 128: വരി 115:


                     figcaption.innerHTML =
                     figcaption.innerHTML =
                         (item.caption ? item.caption + '<br>' : '') +
                         (captionText ? captionText + '<br>' : '') +
                         '© ' + artist +
                         '© ' + artist +
                         (licenseUrl
                         (licenseUrl
വരി 141: വരി 128:
                     console.warn(
                     console.warn(
                         'Commons gallery image failed:',
                         'Commons gallery image failed:',
                         item.filename,
                         filename,
                         err.message
                         err.message
                     );
                     );
                 });
                 });
        });
        /* Hide source placeholders */
        sources.forEach(function (el) {
            el.style.display = 'none';
         });
         });
     });
     });
"https://schoolwiki.in/മീഡിയവിക്കി:Common.js" എന്ന താളിൽനിന്ന് ശേഖരിച്ചത്