Pertama yasa
//[[Benutzer:Schnark/js/letzteredit.js]] Program untuk melihat pengguna yang aktif mw.loader.load('https://de.wikipedia.org/w/index.php?title=Benutzer:Schnark/js/letzteredit.js&action=raw&ctype=text/javascript');
var variant = 'ban-x-pku';
mw.hook('wikipage.content').add(function () { var contentModel = mw.config.get('wgPageContentModel'); var action = mw.config.get('wgAction'); var title = mw.config.get('wgTitle');
if (contentModel === 'proofread-page') { fixProofreadPageCss(); if (action === 'view') { getTransliterationVariant(); addTransliteration(mw.config.get('wgPageName'), $('.pagetext .mw-parser-output'), 'appendTo', getTransliterateApi()); } else if (action === 'edit') { mw.loader.using('mediawiki.ForeignApi', function () { getTransliterationVariant(); transcriberEdit(title); }); } } else if (contentModel === 'proofread-index' && action === 'view') { mw.loader.using('mediawiki.ForeignApi', function () { getTransliterationVariant(); transcriberView(title); }); } else if (title.match(/^Ban\//) && action === 'view' && mw.config.get('wgCanonicalNamespace') === '') { fixPagenums(); fixMainCss(); getTransliterationVariant(); addTransliterationForPages(); } });
function transcriberLoad() { mw.loader.load('https://tools-static.wmflabs.org/palmleaf-transcriber/transcriber.css?v6', 'text/css'); mw.loader.load('https://tools-static.wmflabs.org/palmleaf-transcriber/transcriber.js?v16'); }
function transcriberEdit(title) { var filename, pagenum; var match = title.match(/^(.+)\/([0-9]+)$/); if (match) { filename = match[1]; pagenum = match[2] - 1; } else { filename = title; pagenum = 0; }
var iaFile = getIaFile(filename); var imageUrl = $('.prp-page-image img').attr('src'); if (!imageUrl) return;
var textbox = document.getElementById('wpTextbox1'); if (!textbox) return; textbox.style.fontFamily = "Noto Sans Balinese, Noto Serif Balinese, Vimala, monospace";
getCommonsData(filename, pagenum).then(function (data) { if (!data) return; var imageData = data.iiifImageData; window.transcriberData = { mode: 'edit', textbox: textbox, imageUrl: imageUrl, leaf: pagenum, iaFile: iaFile, iaId: data.iaId, iiifBaseUrl: 'https:\/\/iiif.archivelab.org\/iiif', iiifDimensions: imageData ? (imageData.all || imageData.pages[pagenum]) : null, script: 'bali', language: 'ban-bali', variant: variant }; transcriberLoad(); }); }
function transcriberView(filename) { var iaFile = getIaFile(filename); var pagenum = 0;
var wikipages = $('.prp-index-pagelist a').get().map(function (elt) { var href = elt.href; var match = href.match(/\/wiki\/(.+)$/); if (match) { return decodeURIComponent(match[1]); } match = href.match(/\btitle=(.+?)(?=&|$)/); if (match) { return decodeURIComponent(match[1]); } return null; });
getCommonsData(filename, pagenum).then(function (data) { if (!data) return; window.transcriberData = { mode: 'view', commonsFile: filename, wikipages: wikipages, iaFile: iaFile, iaId: data.iaId, leaf: pagenum, iiifBaseUrl: 'https:\/\/iiif.archivelab.org\/iiif', iiifImageData: data.iiifImageData, script: 'bali', language: 'ban-bali', variant: variant }; transcriberLoad(); }); }
function getIaFile(filename) { var match = filename.match(/^Bali-lontar-(.+)\.pdf$/i); return match ? match[1] : null; }
function getCommonsData(filename, pagenum) { var api = new mw.ForeignApi('https://commons.wikimedia.org/w/api.php'); return new Promise(function (resolve, reject) { api.get({ action: 'query', prop: 'iwlinks|revisions', titles: 'File:' + filename, rvprop: 'content', rvslots: '*', formatversion: 2, origin: '*' }, { xhrFields: { withCredentials: false } }).then(function (commonsRes) { var page = commonsRes.query.pages[0]; if (page.missing) { resolve(null); } else { var transcriberData = {}; page.iwlinks.some(function (link) { if (link.prefix === 'iarchive') { transcriberData.iaId = link.title; return true; // short circuit } return false; }); var match = page.revisions[0].slots.main.content.match(//); if (match) { transcriberData.iiifImageData = JSON.parse(match[1]); } resolve(transcriberData); } }).catch(reject); }); }
function getTransliterationVariant() { var userVariant = mw.user.options.get('variant-ban'); if (userVariant && userVariant !== 'ban') { variant = userVariant; } }
function getTransliterateApi() { return new mw.Api(); //return new mw.ForeignApi(transliterateApi); }
function addTransliteration(page, elt, where, api) { api.get({ action: 'parse', prop: 'text', text: '==== Auto-transliteration ====\n<span lang="ban"><langconvert from="ban-bali" to="' + variant + '">{{:' + page + '}}</langconvert></span>', contentmodel: 'wikitext', disablelimitreport: 1, disableeditsection: 1, formatversion: 2 }) .then(function (res) { if (!res.error) { var div = $(res.parse.text)[where](elt); } }); }
function fixPagenums() { $('.ws-noexport').attr('style', null).append('<br>'); }
function addTransliterationForPages() { var api = getTransliterateApi(); $('.ws-pagenum').each(function () { var page = this.getAttribute('title'); var startSpan = $(this).parents('.ws-noexport').first().parent(); var nextSpan = startSpan.nextAll("span:has('.ws-pagenum')").first(); if (nextSpan.length) { addTransliteration(page, nextSpan, 'insertBefore', api); } else { addTransliteration(page, startSpan.parent(), 'appendTo', api); } }); }
function fixProofreadPageCss() { var sheet = document.styleSheets[0]; sheet.insertRule('[lang="ban-Bali"] .pagetext { text-align: start !important; word-break: break-all !important; overflow-wrap: anywhere !important; }'); }
function fixMainCss() { var sheet = document.styleSheets[0]; sheet.insertRule('.mw-body-content [lang="ban-Bali"] p { word-break: break-all !important; overflow-wrap: anywhere !important; }');
}
Sang anganggé niki pamilet Kompetisi WikiPustaka 2022. |