MediaWiki:Common.js: Skirtumas tarp puslapio versijų

Iš MCSlime.LT.
Pereiti į navigaciją Jump to search
SNėra keitimo santraukos
SNėra keitimo santraukos
 
(nerodomos 2 tarpinės versijos, sukurtos to paties naudotojo)
25 eilutė: 25 eilutė:
             tools: {
             tools: {
                 hline: {
                 hline: {
                     label: 'Horizontal line',
                     label: 'Spoiler',
                     type: 'button',
                     type: 'button',
                     icon: 'https://upload.wikimedia.org/wikipedia/commons/a/a4/H-line_icon.png',
                     icon: 'https://upload.wikimedia.org/wikipedia/commons/a/a4/H-line_icon.png',
31 eilutė: 31 eilutė:
                         type: 'encapsulate',
                         type: 'encapsulate',
                         options: {
                         options: {
                             pre: '----',
                             pre: '<div class="spoiler"><div class="spoiler-toggle">Rodyti turinį <span class="arrow">&#x25BC;</span></div><div class="content" style="display: none;">',
                             ownline: true
                             post: '</div></div>'
                         }
                         }
                     }
                     }
44 eilutė: 44 eilutė:
  */
  */
$('.spoiler-toggle').click(function() {
$('.spoiler-toggle').click(function() {
     var content = $(this).next('.content');
     var content = $(this).next('.spoiler-content');
     var arrow = $(this).find('.arrow');
     var arrow = $(this).find('.spoiler-arrow');
     content.toggle();
     content.toggle();


     if (content.is(':visible')) {
     if (content.is(':visible')) {
         $(this).html('Hide content <i class="fas fa-chevron-up arrow"></i>');
         $(this).html('Paslėpti turinį <i class="fas fa-chevron-up arrow"></i>');
     } else {
     } else {
         $(this).html('Show content <i class="fas fa-chevron-down arrow"></i>');
         $(this).html('Rodyti turinį <i class="fas fa-chevron-down arrow"></i>');
     }
     }
});
});

Dabartinė 15:10, 16 gegužės 2024 versija

/* Bet koks čia parašytas JavaScript bus rodomas kiekviename puslapyje kievienam naudotojui. */

/**
 * Instead of cluttering up the global scope with
 * variables, they should instead be set as a
 * property of this global variable
 *
 * E.g: Instead of
 *   myVar = 'blah';
 * use
 *   mcw.myVar = 'blah';
 */
var mcw = window.mcw = {};

window.mcw.baseURL = '/';
window.mcw.wikiURL = '/w';

if (['edit', 'submit'].indexOf(mw.config.get('wgAction')) !== -1) {
    // Add a hook handler.
    mw.hook('wikiEditor.toolbarReady').add(function($textarea) {
        // Configure a new toolbar entry on the given $textarea jQuery object.
        $textarea.wikiEditor('addToToolbar', {
            section: 'main',
            group: 'format',
            tools: {
                hline: {
                    label: 'Spoiler',
                    type: 'button',
                    icon: 'https://upload.wikimedia.org/wikipedia/commons/a/a4/H-line_icon.png',
                    action: {
                        type: 'encapsulate',
                        options: {
                            pre: '<div class="spoiler"><div class="spoiler-toggle">Rodyti turinį <span class="arrow">&#x25BC;</span></div><div class="content" style="display: none;">',
                            post: '</div></div>'
                        }
                    }
                }
            }
        });
    });
}
/**
 * Spoilers
 */
$('.spoiler-toggle').click(function() {
    var content = $(this).next('.spoiler-content');
    var arrow = $(this).find('.spoiler-arrow');
    content.toggle();

    if (content.is(':visible')) {
        $(this).html('Paslėpti turinį <i class="fas fa-chevron-up arrow"></i>');
    } else {
        $(this).html('Rodyti turinį <i class="fas fa-chevron-down arrow"></i>');
    }
});

/**
 * Creates minecraft style tooltips
 *
 * Replaces normal tooltips. Supports minecraft [[formatting codes]] (except k), and a description with line breaks (/).
 */
( function() {
	var escapeChars = { '\\&': '&#38;', '<': '&#60;', '>': '&#62;' };
	var escape = function( text ) {
		// "\" must be escaped first
		return text.replace( /\\\\/g, '&#92;' )
			.replace( /\\&|[<>]/g, function( char ) { return escapeChars[char]; } );
	};
	var $tooltip = $();
	var $win = $( window ), winWidth, winHeight, width, height;
	
	$( '#mw-content-text' ).on( {
		'mouseenter.minetip': function( e ) {
			$tooltip.remove();
			
			var $elem = $( this ), title = $elem.attr( 'data-minetip-title' );
			if ( title === undefined ) {
				title = $elem.attr( 'title' );
				if ( title !== undefined ) {
					title = $.trim( title.replace( /&/g, '\\&' ) );
					$elem.attr( 'data-minetip-title', title );
				}
			}
			
			// No title or title only contains formatting codes
			if ( title === undefined || title !== '' && title.replace( /&([0-9a-fl-or])/g, '' ) === '' ) {
				// Find deepest child title
				var childElem = $elem[0], childTitle;
				do {
					if ( childElem.hasAttribute( 'title' ) ) {
						childTitle = childElem.title;
					}
					childElem = childElem.firstChild;
				} while( childElem && childElem.nodeType === 1 );
				if ( childTitle === undefined ) {
					return;
				}
				
				// Append child title as title may contain formatting codes
				if ( !title ) {
					title = '';
				}
				title += $.trim( childTitle.replace( /&/g, '\\&' ) );
				
				// Set the retrieved title as data for future use
				$elem.attr( 'data-minetip-title', title );
			}
			
			if ( !$elem.data( 'minetip-ready' ) ) {
				// Remove title attributes so the native tooltip doesn't get in the way
				$elem.find( '[title]' ).addBack().removeAttr( 'title' );
				$elem.data( 'minetip-ready', true );
			}
			
			if ( title === '' ) {
				return;
			}
			
			var content = '<span class="minetip-title">' + escape( title ) + '&r</span>';
			
			var description = $.trim( $elem.attr( 'data-minetip-text' ) );
			if ( description ) {
				// Apply normal escaping plus "/"
				description = escape( description ).replace( /\\\//g, '&#47;' );
				content += '<span class="minetip-description">' + description.replace( /\//g, '<br>' ) + '&r</span>';
			}
			
			// Add classes for minecraft formatting codes
			while ( content.search( /&[0-9a-fl-o]/ ) > -1 ) {
				content = content.replace( /&([0-9a-fl-o])(.*?)(&r|$)/g, '<span class="format-$1">$2</span>&r' );
			}
			// Remove reset formatting
			content = content.replace( /&r/g, '' );
			
			$tooltip = $( '<div id="minetip-tooltip">' );
			$tooltip.html( content ).appendTo( 'body' );
			
			// Cache current window and tooltip size
			winWidth = $win.width();
			winHeight = $win.height();
			width = $tooltip.outerWidth( true );
			height = $tooltip.outerHeight( true );
			
			// Trigger a mouse movement to position the tooltip
			$elem.trigger( 'mousemove', e );
		},
		'mousemove.minetip': function( e, trigger ) {
			if ( !$tooltip.length ) {
				$( this ).trigger( 'mouseenter' );
				return;
			}
			
			// Get event data from remote trigger
			e = trigger || e;
			
			// Get mouse position and add default offsets
			var top = e.clientY - 34;
			var left = e.clientX + 14;
			
			// If going off the right of the screen, go to the left of the cursor
			if ( left + width > winWidth ) {
				left -= width + 36;
			}
			
			// If now going off to the left of the screen, resort to going above the cursor
			if ( left < 0 ) {
				left = 0;
				top -= height - 22;
				
				// Go below the cursor if too high
				if ( top < 0 ) {
					top += height + 47;
				}
			// Don't go off the top of the screen
			} else if ( top < 0 ) {
				top = 0;
			// Don't go off the bottom of the screen
			} else if ( top + height > winHeight ) {
				top = winHeight - height;
			}
			
			// Apply the positions
			$tooltip.css( { top: top, left: left } );
		},
		'mouseleave.minetip': function() {
			if ( !$tooltip.length ) {
				return;
			}
			
			$tooltip.remove();
			$tooltip = $();
		}
	}, '.minetip, .invslot-item' );
}() );