پرش به محتوا

مدیاویکی:Common.js: تفاوت میان نسخه‌ها

۱۲٬۶۱۹ بایت اضافه‌شده ،  ‏۱ نوامبر ۲۰۲۳
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
برچسب: برگردانده‌شده
خط ۴: خط ۴:
         $('#reflist-notes').before('<h2>یادداشت‌ها</h2>');
         $('#reflist-notes').before('<h2>یادداشت‌ها</h2>');
     }
     }
});
});/*!
* Live edit preview.
*/
( function () {
 
var parsedMessages = require( './mediawiki.action.edit.preview.parsedMessages.json' ),
api = new mw.Api(),
$diffNode;
 
/**
* Parse preview response
*
* @ignore
* @param {Object} response Response data
*/
function showPreviewNotes( response ) {
var arrow, $previewHeader, $editform;
 
$editform = $( '#editform' );
 
arrow = $( document.body ).css( 'direction' ) === 'rtl' ? '←' : '→';
$previewHeader = $( '<div>' )
.addClass( 'previewnote' )
.append( $( '<h2>' )
.attr( 'id', 'mw-previewheader' )
.text( mw.msg( 'preview' ) )
)
.append( $( '<div>' )
.addClass( 'mw-message-box-warning mw-message-box' )
.html( parsedMessages.previewnote )
.append( ' ' )
.append( $( '<span>' )
.addClass( 'mw-continue-editing' )
.append( $( '<a>' )
.attr( 'href', '#' + $editform.attr( 'id' ) )
.text( arrow + ' ' + mw.msg( 'continue-editing' ) )
)
)
);
response.parse.parsewarningshtml.forEach( function ( warning ) {
$previewHeader.find( '.mw-message-box-warning' ).append( $( '<p>' ).append( warning ) );
} );
 
$( '#wikiPreview' ).prepend( $previewHeader );
}
 
/**
* @ignore
* @param {jQuery.Event} e
*/
function doLivePreview( e ) {
var isDiff, $editform, $textbox, preview, $wikiPreview;
 
preview = require( 'mediawiki.page.preview' );
isDiff = ( e.target.name === 'wpDiff' );
$wikiPreview = $( '#wikiPreview' );
$editform = $( '#editform' );
$textbox = $editform.find( '#wpTextbox1' );
 
if ( $textbox.length === 0 ) {
return;
}
 
e.preventDefault();
 
// Not shown during normal preview, to be removed if present
$( '.mw-newarticletext, .mw-message-box-error' ).remove();
 
// Show #wikiPreview if it's hidden to be able to scroll to it.
// (If it is hidden, it's also empty, so nothing changes in the rendering.)
$wikiPreview.show();
 
// Jump to where the preview will appear
$wikiPreview[ 0 ].scrollIntoView();
 
var $spinner = $( '.mw-spinner-preview' );
if ( $spinner.length === 0 ) {
$spinner = $.createSpinner( {
size: 'large',
type: 'block'
} )
.addClass( 'mw-spinner-preview' )
.css( 'margin-top', '1em' );
$wikiPreview.before( $spinner );
}
 
preview.doPreview( {
showDiff: isDiff,
spinnerNode: $spinner
} ).done( function ( response ) {
if ( !isDiff ) {
showPreviewNotes( response[ 0 ] );
}
} ).fail( function ( code, result ) {
// This just shows the error for whatever request failed first
var $errorMsg = api.getErrorMessage( result ),
$errorBox = $( '<div>' )
.addClass( 'mw-message-box-error mw-message-box' )
.append( $( '<strong>' ).text( mw.msg( 'previewerrortext' ) ) )
.append( $errorMsg );
$wikiPreview.hide().before( $errorBox );
$diffNode.hide();
} );
}
 
$( function () {
var selector;
 
// Enable only live diff on user .js/.css pages, as there's no sensible way of
// "previewing" the scripts or styles without reloading the page.
if ( $( '#mw-userjsyoucanpreview, #mw-usercssyoucanpreview, #mw-userjspreview, #mw-usercsspreview' ).length ) {
selector = '#wpDiff';
} else {
selector = '#wpPreview, #wpDiff';
}
 
// The following elements can change in a preview but are not output
// by the server when they're empty until the preview response.
// TODO: Make the server output these always (in a hidden state), so we don't
// have to fish and (hopefully) put them in the right place (since skins
// can change where they are output).
// FIXME: This is prone to breaking any time Vector's HTML for portals change.
 
if ( !document.getElementById( 'p-lang' ) && document.getElementById( 'p-tb' ) && ( mw.config.get( 'skin' ) === 'vector' || mw.config.get( 'skin' ) === 'vector-2022' ) ) {
$( '.portal' ).last().after(
$( '<nav>' )
.attr( {
class: 'mw-portlet mw-portlet-lang vector-menu vector-menu-portal portal',
id: 'p-lang',
role: 'navigation',
'aria-labelledby': 'p-lang-label'
} )
.append(
$( '<label>' )
.attr( {
id: 'p-lang-label',
class: 'vector-menu-heading'
} )
.append(
$( '<span>' )
.addClass( 'vector-menu-heading-label' )
.text( mw.msg( 'otherlanguages' ) )
)
)
.append(
$( '<div>' )
.addClass( 'body vector-menu-content' )
.append( $( '<ul>' ).addClass( 'vector-menu-content-list' ) )
)
);
}
 
if ( !$( '.mw-summary-preview' ).length ) {
$( '#wpSummaryWidget' ).after(
$( '<div>' ).addClass( 'mw-summary-preview' )
);
}
 
if ( !document.getElementById( 'wikiDiff' ) && document.getElementById( 'wikiPreview' ) ) {
var alignStart, rtlDir;
rtlDir = $( '#wpTextbox1' ).attr( 'dir' ) === 'rtl';
alignStart = rtlDir ? 'right' : 'left';
$diffNode = $( '<div>' )
.hide()
.attr( 'id', 'wikiDiff' )
// The following classes are used here:
// * diff-editfont-monospace
// * diff-editfont-sans-serif
// * diff-editfont-serif
.addClass( 'diff-editfont-' + mw.user.options.get( 'editfont' ) )
// The following classes are used here:
// * diff-contentalign-left
// * diff-contentalign-right
.addClass( 'diff-contentalign-' + alignStart )
.append(
$( '<table>' ).addClass( 'diff' ).append(
$( '<col>' ).addClass( 'diff-marker' ),
$( '<col>' ).addClass( 'diff-content' ),
$( '<col>' ).addClass( 'diff-marker' ),
$( '<col>' ).addClass( 'diff-content' ),
$( '<thead>' ).append(
$( '<tr>' ).addClass( 'diff-title' ).append(
$( '<td>' )
.attr( 'colspan', 2 )
.addClass( 'diff-otitle diff-side-deleted' )
.text( mw.msg( 'currentrev' ) ),
$( '<td>' )
.attr( 'colspan', 2 )
.addClass( 'diff-ntitle diff-side-added' )
.text( mw.msg( 'yourtext' ) )
)
),
$( '<tbody>' )
)
);
$( '#wikiPreview' ).after( $diffNode );
}
 
// This should be moved down to '#editform', but is kept on the body for now
// because the LiquidThreads extension is re-using this module with only half
// the EditPage (doesn't include #editform presumably, T57463).
$( document.body ).on( 'click', selector, doLivePreview );
} );
 
}() );
/*!
* Live edit preview.
*/
( function () {
 
var parsedMessages = require( './mediawiki.action.edit.preview.parsedMessages.json' ),
api = new mw.Api(),
$diffNode;
 
/**
* Parse preview response
*
* @ignore
* @param {Object} response Response data
*/
function showPreviewNotes( response ) {
var arrow, $previewHeader, $editform;
 
$editform = $( '#editform' );
 
arrow = $( document.body ).css( 'direction' ) === 'rtl' ? '←' : '→';
$previewHeader = $( '<div>' )
.addClass( 'previewnote' )
.append( $( '<h2>' )
.attr( 'id', 'mw-previewheader' )
.text( mw.msg( 'preview' ) )
)
.append( $( '<div>' )
.addClass( 'mw-message-box-warning mw-message-box' )
.html( parsedMessages.previewnote )
.append( ' ' )
.append( $( '<span>' )
.addClass( 'mw-continue-editing' )
.append( $( '<a>' )
.attr( 'href', '#' + $editform.attr( 'id' ) )
.text( arrow + ' ' + mw.msg( 'continue-editing' ) )
)
)
);
response.parse.parsewarningshtml.forEach( function ( warning ) {
$previewHeader.find( '.mw-message-box-warning' ).append( $( '<p>' ).append( warning ) );
} );
 
$( '#wikiPreview' ).prepend( $previewHeader );
}
 
/**
* @ignore
* @param {jQuery.Event} e
*/
function doLivePreview( e ) {
var isDiff, $editform, $textbox, preview, $wikiPreview;
 
preview = require( 'mediawiki.page.preview' );
isDiff = ( e.target.name === 'wpDiff' );
$wikiPreview = $( '#wikiPreview' );
$editform = $( '#editform' );
$textbox = $editform.find( '#wpTextbox1' );
 
if ( $textbox.length === 0 ) {
return;
}
 
e.preventDefault();
 
// Not shown during normal preview, to be removed if present
$( '.mw-newarticletext, .mw-message-box-error' ).remove();
 
// Show #wikiPreview if it's hidden to be able to scroll to it.
// (If it is hidden, it's also empty, so nothing changes in the rendering.)
$wikiPreview.show();
 
// Jump to where the preview will appear
$wikiPreview[ 0 ].scrollIntoView();
 
var $spinner = $( '.mw-spinner-preview' );
if ( $spinner.length === 0 ) {
$spinner = $.createSpinner( {
size: 'large',
type: 'block'
} )
.addClass( 'mw-spinner-preview' )
.css( 'margin-top', '1em' );
$wikiPreview.before( $spinner );
}
 
preview.doPreview( {
showDiff: isDiff,
spinnerNode: $spinner
} ).done( function ( response ) {
if ( !isDiff ) {
showPreviewNotes( response[ 0 ] );
}
} ).fail( function ( code, result ) {
// This just shows the error for whatever request failed first
var $errorMsg = api.getErrorMessage( result ),
$errorBox = $( '<div>' )
.addClass( 'mw-message-box-error mw-message-box' )
.append( $( '<strong>' ).text( mw.msg( 'previewerrortext' ) ) )
.append( $errorMsg );
$wikiPreview.hide().before( $errorBox );
$diffNode.hide();
} );
}
 
$( function () {
var selector;
 
// Enable only live diff on user .js/.css pages, as there's no sensible way of
// "previewing" the scripts or styles without reloading the page.
if ( $( '#mw-userjsyoucanpreview, #mw-usercssyoucanpreview, #mw-userjspreview, #mw-usercsspreview' ).length ) {
selector = '#wpDiff';
} else {
selector = '#wpPreview, #wpDiff';
}
 
// The following elements can change in a preview but are not output
// by the server when they're empty until the preview response.
// TODO: Make the server output these always (in a hidden state), so we don't
// have to fish and (hopefully) put them in the right place (since skins
// can change where they are output).
// FIXME: This is prone to breaking any time Vector's HTML for portals change.
 
if ( !document.getElementById( 'p-lang' ) && document.getElementById( 'p-tb' ) && ( mw.config.get( 'skin' ) === 'vector' || mw.config.get( 'skin' ) === 'vector-2022' ) ) {
$( '.portal' ).last().after(
$( '<nav>' )
.attr( {
class: 'mw-portlet mw-portlet-lang vector-menu vector-menu-portal portal',
id: 'p-lang',
role: 'navigation',
'aria-labelledby': 'p-lang-label'
} )
.append(
$( '<label>' )
.attr( {
id: 'p-lang-label',
class: 'vector-menu-heading'
} )
.append(
$( '<span>' )
.addClass( 'vector-menu-heading-label' )
.text( mw.msg( 'otherlanguages' ) )
)
)
.append(
$( '<div>' )
.addClass( 'body vector-menu-content' )
.append( $( '<ul>' ).addClass( 'vector-menu-content-list' ) )
)
);
}
 
if ( !$( '.mw-summary-preview' ).length ) {
$( '#wpSummaryWidget' ).after(
$( '<div>' ).addClass( 'mw-summary-preview' )
);
}
 
if ( !document.getElementById( 'wikiDiff' ) && document.getElementById( 'wikiPreview' ) ) {
var alignStart, rtlDir;
rtlDir = $( '#wpTextbox1' ).attr( 'dir' ) === 'rtl';
alignStart = rtlDir ? 'right' : 'left';
$diffNode = $( '<div>' )
.hide()
.attr( 'id', 'wikiDiff' )
// The following classes are used here:
// * diff-editfont-monospace
// * diff-editfont-sans-serif
// * diff-editfont-serif
.addClass( 'diff-editfont-' + mw.user.options.get( 'editfont' ) )
// The following classes are used here:
// * diff-contentalign-left
// * diff-contentalign-right
.addClass( 'diff-contentalign-' + alignStart )
.append(
$( '<table>' ).addClass( 'diff' ).append(
$( '<col>' ).addClass( 'diff-marker' ),
$( '<col>' ).addClass( 'diff-content' ),
$( '<col>' ).addClass( 'diff-marker' ),
$( '<col>' ).addClass( 'diff-content' ),
$( '<thead>' ).append(
$( '<tr>' ).addClass( 'diff-title' ).append(
$( '<td>' )
.attr( 'colspan', 2 )
.addClass( 'diff-otitle diff-side-deleted' )
.text( mw.msg( 'currentrev' ) ),
$( '<td>' )
.attr( 'colspan', 2 )
.addClass( 'diff-ntitle diff-side-added' )
.text( mw.msg( 'yourtext' ) )
)
),
$( '<tbody>' )
)
);
$( '#wikiPreview' ).after( $diffNode );
}
 
// This should be moved down to '#editform', but is kept on the body for now
// because the LiquidThreads extension is re-using this module with only half
// the EditPage (doesn't include #editform presumably, T57463).
$( document.body ).on( 'click', selector, doLivePreview );
} );
 
}() );


/* تنظیمات پاپ آپ ها  
/* تنظیمات پاپ آپ ها