Common.js: Difference between revisions
No edit summary |
No edit summary |
||
| Line 139: | Line 139: | ||
// Fetch the raw text of your specific shorts list page via MediaWiki API | // Fetch the raw text of your specific shorts list page via MediaWiki API | ||
$.ajax({ | $.ajax({ | ||
url: | url: 'https://vanipedia.org/w/api.php', // Corrected absolute path for Vanipedia API | ||
data: { | data: { | ||
action: 'query', | action: 'query', | ||
| Line 153: | Line 153: | ||
var pages = data.query.pages; | var pages = data.query.pages; | ||
var pageId = Object.keys(pages)[0]; | var pageId = Object.keys(pages)[0]; | ||
if (pageId === "-1") { | |||
$('#vanipedia-random-short-video').html('<div style="padding:40px 0; text-align:center; color:#c0392b;">List page not found.</div>'); | |||
return; | |||
} | |||
var rawWikiText = pages[pageId].revisions[0]['*']; | var rawWikiText = pages[pageId].revisions[0]['*']; | ||
| Line 159: | Line 165: | ||
var validShorts = []; | var validShorts = []; | ||
// Parse out | // Parse out lines that look like: File:Short_X.png|Title|link=https://... | ||
for (var i = 0; i < lines.length; i++) { | for (var i = 0; i < lines.length; i++) { | ||
var line = lines[i].trim(); | var line = lines[i].trim(); | ||
if (line.indexOf('File:') === 0 && line.indexOf('link=') !== -1) { | if (line.indexOf('File:') === 0 && line.toLowerCase().indexOf('link=') !== -1) { | ||
validShorts.push(line); | validShorts.push(line); | ||
} | } | ||
| Line 168: | Line 174: | ||
if (validShorts.length === 0) { | if (validShorts.length === 0) { | ||
$('#vanipedia-random-short-video').html('No shorts | $('#vanipedia-random-short-video').html('<div style="padding:40px 0; text-align:center; color:#e67e22;">No shorts lines recognized.</div>'); | ||
return; | return; | ||
} | } | ||
| Line 174: | Line 180: | ||
// Pick one video from the list completely at random | // Pick one video from the list completely at random | ||
var randomLine = validShorts[Math.floor(Math.random() * validShorts.length)]; | var randomLine = validShorts[Math.floor(Math.random() * validShorts.length)]; | ||
var parts = randomLine.split('|'); | |||
var title = "YouTube Short"; // fallback title | var title = "YouTube Short"; // fallback title | ||
var videoId = ""; | var videoId = ""; | ||
| Line 183: | Line 188: | ||
for (var j = 0; j < parts.length; j++) { | for (var j = 0; j < parts.length; j++) { | ||
var part = parts[j].trim(); | var part = parts[j].trim(); | ||
if (part.indexOf('link=') === 0) { | if (part.toLowerCase().indexOf('link=') === 0) { | ||
var url = part.substring(5).trim(); // Remove 'link=' | |||
var url = part. | |||
// Highly reliable extraction pattern for /shorts/ or standard watch URLs | |||
if (url.indexOf('/shorts/') !== -1) { | if (url.indexOf('/shorts/') !== -1) { | ||
videoId = url.split('/shorts/')[1].split('?')[0].split(' | videoId = url.split('/shorts/')[1].split('?')[0].split('#')[0]; | ||
} else if (url.indexOf('v=') !== -1) { | } else if (url.indexOf('v=') !== -1) { | ||
videoId = url.split('v=')[1].split('&')[0]; | videoId = url.split('v=')[1].split('&')[0].split('#')[0]; | ||
} else { | } else { | ||
videoId = url.substring(url.lastIndexOf('/') + 1); | videoId = url.substring(url.lastIndexOf('/') + 1).split('?')[0]; | ||
} | } | ||
} else if (part.indexOf('File:') !== 0) { | } else if (part.indexOf('File:') !== 0) { | ||
title = part; // | title = part; // Capture the text parameter | ||
} | } | ||
} | } | ||
if (videoId) { | if (videoId && videoId.length > 3) { | ||
// | // Inject clean embedded player iframe | ||
var embedUrl = 'https://youtube.com' + videoId; | var embedUrl = 'https://youtube.com' + videoId; | ||
$('#vanipedia-random-short-video').html('<iframe width="260" height="260" src="' + embedUrl + '" frameborder="0" allowfullscreen style="border-radius:10px;"></iframe>'); | $('#vanipedia-random-short-video').html('<iframe width="260" height="260" src="' + embedUrl + '" frameborder="0" allowfullscreen style="border-radius:10px; border:none;"></iframe>'); | ||
$('#vanipedia-random-short-title').text(title); | $('#vanipedia-random-short-title').text(title); | ||
} else { | } else { | ||
$('#vanipedia-random-short-video').html('Error parsing video ID.'); | $('#vanipedia-random-short-video').html('<div style="padding:40px 0; text-align:center; color:#c0392b;">Error parsing video ID.</div>'); | ||
} | } | ||
} catch (e) { | } catch (e) { | ||
console.error("Error loading random shorts list:", e); | console.error("Error loading random shorts list:", e); | ||
$('#vanipedia-random-short-video').html('Failed to | $('#vanipedia-random-short-video').html('<div style="padding:40px 0; text-align:center; color:#c0392b;">Failed to parse list data.</div>'); | ||
} | } | ||
}, | }, | ||
error: function() { | error: function() { | ||
$('#vanipedia-random-short-video').html(' | // Friendly error UI if browser blocks or network fails | ||
$('#vanipedia-random-short-video').html('<div style="padding:40px 0; text-align:center; color:#c0392b;">Network API connection error.</div>'); | |||
} | } | ||
}); | }); | ||
} | } | ||
}); | }); | ||
Revision as of 09:04, 19 May 2026
/* Any JavaScript here will be loaded for all users on every page load. */
if (mw.config.get('wgPageName' ) === 'Krishna_says_in_Bhagavad-gita') {
/* switch tooltip texts from content-div to label-div */
const v_labels = Array.from(document.getElementsByClassName("tabs-label"));
const v_content = Array.from(document.getElementsByClassName("tabs-content"));
for (var i = 0; i < v_labels.length; i++) {
v_labels[i].title = v_content[i].title;
v_content[i].title = "";
}
/* adjust wikitables */
var arr = Array.from(document.getElementsByClassName("wikitable"));
for (var t = 0; t < arr.length; t++) {
/* insert THEAD in wikitable */
var thead = document.createElement("thead");
thead.style.display = "block";
var wtbl = arr[t];
wtbl.insertBefore(thead, wtbl.firstChild);
/* move first row of TBODY to THEAD */
thead.appendChild(wtbl.rows[0]);
/* make TBODY scrollable */
var tbody = wtbl.tBodies[0];
tbody.style.display = "block";
tbody.style.overflowY = "auto";
tbody.style.maxHeight = "500px";
for (var r = 0; r < wtbl.rows.length; r++) {
var row = wtbl.rows[r];
/* adjust column widths and hide from-until columns */
row.cells[0].classList = "cw_0";
row.cells[1].classList = "cw_150";
row.cells[2].classList = "cw_500";
/* mark the text */
if (r == 0) continue;
var v_text = row.cells[2].textContent;
var v_html = ""; var v_from = 0;
var marks = JSON.parse(row.cells[0].textContent.replaceAll("O", "[").replaceAll("C", "]"));
for (var m = 0; m < marks.length; m++) {
v_html +=
v_text.substr(v_from,marks[m][0]-v_from) + "<mark>" +
v_text.substr(marks[m][0],marks[m][1]-marks[m][0]+1) + "</mark>";
v_from = marks[m][1]+1;
}
v_html += v_text.substr(v_from);
row.cells[2].innerHTML = v_html;
}
}
}
// install Google Search
// document.write('<script type="text/javascript" src="'
// + 'http://vanipedia.org/w/index.php?title=MediaWiki:GoogleSearch.js'
// + '&action=raw&ctype=text/javascript"></' + 'script>');
// install JQuery
//document.write('<script type="text/javascript" src="'
//+ 'http://vanipedia.org/w/index.php?title=MediaWiki:JQuery.js'
//+ '&action=raw&ctype=text/javascript"></' + 'script>');
// install WikEd toolbar and Vanify
//document.write('<script type="text/javascript" src="'
//+ 'http://vanipedia.org/w/index.php?title=MediaWiki:Vaniquotes.js'
//+ '&action=raw&ctype=text/javascript"></' + 'script>');
// install Replace
//document.write('<script type="text/javascript" src="'
//+ 'http://vanipedia.org/w/index.php?title=MediaWiki:TextboxReplace.js'
//+ '&action=raw&ctype=text/javascript"></' + 'script>');
// install Unify
//document.write('<script type="text/javascript" src="'
//+ 'http://vanipedia.org/w/index.php?title=MediaWiki:Unify.js'
//+ '&action=raw&ctype=text/javascript"></' + 'script>');
// install Vanify
//document.write('<script type="text/javascript" src="'
//+ 'http://vanipedia.org/w/index.php?title=MediaWiki:Vanify.js'
//+ '&action=raw&ctype=text/javascript"></' + 'script>');
// install Vani_suggest for diacritics auto-suggest pulldown on the search bar
//document.write('<script type="text/javascript" src="'
//+ 'http://vanipedia.org/w/index.php?title=MediaWiki:Vani_suggest.js'
//+ '&action=raw&ctype=text/javascript"></' + 'script>');
// install previous/next links for video categories in all languages
//document.write('<script type="text/javascript" src="/navcat/navcat.js"></' + 'script>');
// Buttons
//addOnloadHook(function() {
//if (document.editform) {
//addPortletLink("p-cactions", "javascript:Unify()", "unify", "ca-unify", "Convert Balarama fonts to Unicode", "");
// addPortletLink("p-cactions", "javascript:Vanify()", "vanify", "ca-vanify", "Corrects vani markup", "");
// addPortletLink('p-cactions', 'javascript:format()', 'format', 'ca-format', 'Format article', '');
//addPortletLink('p-cactions', 'javascript:wpTextboxReplace()', 'Replace', 'ca-replace', 'Replaces text in the edit window', 'R');
//}
//});
// end Buttons
// --- VANIPEDIA DARK MODE TOGGLE (Kasya) ---
$(document).ready(function() {
// Create the floating button
var toggleBtn = $('<button id="dark-mode-toggle" title="Toggle Dark Mode" style="position:fixed; bottom:25px; right:25px; z-index:9999; width:45px; height:45px; border-radius:50%; background:#2c3e50; color:#f1c40f; font-size:20px; border:none; box-shadow:0 4px 10px rgba(0,0,0,0.3); cursor:pointer; display:flex; align-items:center; justify-content:center; transition: transform 0.2s;">🌙</button>');
$('body').append(toggleBtn);
// Hover effect for the button
toggleBtn.hover(
function() { $(this).css('transform', 'scale(1.1)'); },
function() { $(this).css('transform', 'scale(1.0)'); }
);
// Check if the user previously selected dark mode
if (localStorage.getItem('vanipedia-theme') === 'dark') {
$('html').addClass('dark-theme');
toggleBtn.text('🔆').css('background', '#f1c40f').css('color', '#2c3e50');
}
// Click event handler
toggleBtn.click(function() {
$('html').toggleClass('dark-theme');
if ($('html').hasClass('dark-theme')) {
localStorage.setItem('vanipedia-theme', 'dark');
toggleBtn.text('🔆').css('background', '#f1c40f').css('color', '#2c3e50');
} else {
localStorage.setItem('vanipedia-theme', 'light');
toggleBtn.text('☽').css('background', '#2c3e50').css('color', '#f1c40f');
}
});
});
// --- Random YT Shorts (Kasya) ---
$(document).ready(function() {
// Only run if the random short box is actually present on the current page
if ($('#vanipedia-random-short-video').length) {
// Fetch the raw text of your specific shorts list page via MediaWiki API
$.ajax({
url: 'https://vanipedia.org/w/api.php', // Corrected absolute path for Vanipedia API
data: {
action: 'query',
prop: 'revisions',
titles: 'VanimediaMayapur_YouTube_SHORTS_List',
rvprop: 'content',
format: 'json',
origin: window.location.origin
},
dataType: 'json',
success: function(data) {
try {
var pages = data.query.pages;
var pageId = Object.keys(pages)[0];
if (pageId === "-1") {
$('#vanipedia-random-short-video').html('<div style="padding:40px 0; text-align:center; color:#c0392b;">List page not found.</div>');
return;
}
var rawWikiText = pages[pageId].revisions[0]['*'];
// Isolate the gallery lines
var lines = rawWikiText.split('\n');
var validShorts = [];
// Parse out lines that look like: File:Short_X.png|Title|link=https://...
for (var i = 0; i < lines.length; i++) {
var line = lines[i].trim();
if (line.indexOf('File:') === 0 && line.toLowerCase().indexOf('link=') !== -1) {
validShorts.push(line);
}
}
if (validShorts.length === 0) {
$('#vanipedia-random-short-video').html('<div style="padding:40px 0; text-align:center; color:#e67e22;">No shorts lines recognized.</div>');
return;
}
// Pick one video from the list completely at random
var randomLine = validShorts[Math.floor(Math.random() * validShorts.length)];
var parts = randomLine.split('|');
var title = "YouTube Short"; // fallback title
var videoId = "";
// Extract Title and Link components dynamically
for (var j = 0; j < parts.length; j++) {
var part = parts[j].trim();
if (part.toLowerCase().indexOf('link=') === 0) {
var url = part.substring(5).trim(); // Remove 'link='
// Highly reliable extraction pattern for /shorts/ or standard watch URLs
if (url.indexOf('/shorts/') !== -1) {
videoId = url.split('/shorts/')[1].split('?')[0].split('#')[0];
} else if (url.indexOf('v=') !== -1) {
videoId = url.split('v=')[1].split('&')[0].split('#')[0];
} else {
videoId = url.substring(url.lastIndexOf('/') + 1).split('?')[0];
}
} else if (part.indexOf('File:') !== 0) {
title = part; // Capture the text parameter
}
}
if (videoId && videoId.length > 3) {
// Inject clean embedded player iframe
var embedUrl = 'https://youtube.com' + videoId;
$('#vanipedia-random-short-video').html('<iframe width="260" height="260" src="' + embedUrl + '" frameborder="0" allowfullscreen style="border-radius:10px; border:none;"></iframe>');
$('#vanipedia-random-short-title').text(title);
} else {
$('#vanipedia-random-short-video').html('<div style="padding:40px 0; text-align:center; color:#c0392b;">Error parsing video ID.</div>');
}
} catch (e) {
console.error("Error loading random shorts list:", e);
$('#vanipedia-random-short-video').html('<div style="padding:40px 0; text-align:center; color:#c0392b;">Failed to parse list data.</div>');
}
},
error: function() {
// Friendly error UI if browser blocks or network fails
$('#vanipedia-random-short-video').html('<div style="padding:40px 0; text-align:center; color:#c0392b;">Network API connection error.</div>');
}
});
}
});