MediaWiki:Common.js: Difference between revisions
Appearance
No edit summary |
No edit summary |
||
| Line 37: | Line 37: | ||
} | } | ||
}); | }); | ||
}); | |||
// ── Verse copy & download ──────────────────────────────────────── | |||
$(document).ready(function () { | |||
// Copy verse text | |||
$(document).on('click', '.copy-verse-btn', function () { | |||
var $btn = $(this); | |||
var line1 = $btn.data('line1') || ''; | |||
var line2 = $btn.data('line2') || ''; | |||
var text = line2 ? line1 + '\n' + line2 : line1; | |||
if (navigator.clipboard && window.isSecureContext) { | |||
navigator.clipboard.writeText(text).then(function () { | |||
$btn.addClass('copied').text('✓'); | |||
setTimeout(function () { $btn.removeClass('copied').text('⧉'); }, 1800); | |||
}); | |||
} else { | |||
var $t = $('<textarea>').val(text).appendTo('body'); | |||
$t[0].select(); | |||
document.execCommand('copy'); | |||
$t.remove(); | |||
$btn.addClass('copied').text('✓'); | |||
setTimeout(function () { $btn.removeClass('copied').text('⧉'); }, 1800); | |||
} | |||
}); | |||
// Download verse as .txt | |||
$(document).on('click', '.download-verse-btn', function () { | |||
var $btn = $(this); | |||
var id = $btn.data('verse-id') || 'verse'; | |||
var line1 = $btn.data('line1') || ''; | |||
var line2 = $btn.data('line2') || ''; | |||
var text = line2 ? line1 + '\n' + line2 : line1; | |||
var blob = new Blob([ text ], { type: 'text/plain;charset=utf-8' }); | |||
var url = URL.createObjectURL(blob); | |||
var $a = $('<a>').attr({ href: url, download: id + '.txt' }).appendTo('body'); | |||
$a[0].click(); | |||
$a.remove(); | |||
URL.revokeObjectURL(url); | |||
$btn.text('✓'); | |||
setTimeout(function () { $btn.text('↓'); }, 1800); | |||
}); | |||
}); | }); | ||
Revision as of 06:57, 25 March 2026
/* Any JavaScript here will be loaded for all users on every page load. */
mw.hook( 'wikipage.content' ).add( function ( $content ) {
$content.find( '.commentary-toggle' ).on( 'click', function () {
var verseId = $( this ).attr( 'data-verse' );
var $block = $( '#' + CSS.escape( verseId ) );
var $bodies = $block.find( '.commentary-body' );
var isHidden = $bodies.first().hasClass( 'commentary-hidden' );
$bodies.toggleClass( 'commentary-hidden', !isHidden );
$( this ).toggleClass( 'commentary-toggle-active', isHidden );
} );
} );
// CopyID button handler
$(document).ready(function () {
$(document).on('click', '.copy-id-btn', function () {
var btn = $(this);
var id = btn.data('copyid');
if (!id) return;
// Use Clipboard API with fallback
if (navigator.clipboard && window.isSecureContext) {
navigator.clipboard.writeText(id).then(function () {
btn.addClass('copied').text('✓');
setTimeout(function () {
btn.removeClass('copied').text('⧉');
}, 1800);
});
} else {
// Fallback for non-HTTPS or older browsers
var temp = $('<textarea>').val(id).appendTo('body');
temp[0].select();
document.execCommand('copy');
temp.remove();
btn.addClass('copied').text('✓');
setTimeout(function () {
btn.removeClass('copied').text('⧉');
}, 1800);
}
});
});
// ── Verse copy & download ────────────────────────────────────────
$(document).ready(function () {
// Copy verse text
$(document).on('click', '.copy-verse-btn', function () {
var $btn = $(this);
var line1 = $btn.data('line1') || '';
var line2 = $btn.data('line2') || '';
var text = line2 ? line1 + '\n' + line2 : line1;
if (navigator.clipboard && window.isSecureContext) {
navigator.clipboard.writeText(text).then(function () {
$btn.addClass('copied').text('✓');
setTimeout(function () { $btn.removeClass('copied').text('⧉'); }, 1800);
});
} else {
var $t = $('<textarea>').val(text).appendTo('body');
$t[0].select();
document.execCommand('copy');
$t.remove();
$btn.addClass('copied').text('✓');
setTimeout(function () { $btn.removeClass('copied').text('⧉'); }, 1800);
}
});
// Download verse as .txt
$(document).on('click', '.download-verse-btn', function () {
var $btn = $(this);
var id = $btn.data('verse-id') || 'verse';
var line1 = $btn.data('line1') || '';
var line2 = $btn.data('line2') || '';
var text = line2 ? line1 + '\n' + line2 : line1;
var blob = new Blob([ text ], { type: 'text/plain;charset=utf-8' });
var url = URL.createObjectURL(blob);
var $a = $('<a>').attr({ href: url, download: id + '.txt' }).appendTo('body');
$a[0].click();
$a.remove();
URL.revokeObjectURL(url);
$btn.text('✓');
setTimeout(function () { $btn.text('↓'); }, 1800);
});
});