Jump to content

User:Ricky81682/common.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/* User:Σ/Testing facility/Archiver */
importScript( 'User:Σ/Testing facility/Archiver.js' ); // Backlink: [[User:Σ/Testing facility/Archiver]]

importScript('User:Mr. Stradivarius/gadgets/Draftify.js'); // Linkback: [[User:Mr. Stradivarius/gadgets/Draftify.js]]

//<nowiki>
( function ( $, mw ) {
    mw.loader.load( "jquery.chosen" );
    mw.loader.load( "mediawiki.ui.input", "text/css" );
    
    if ( mw.config.get( "wgNamespaceNumber" ) !== 118 ) return;
    
    const WIKIPROJECT_LIST = "User:Theo's Little Bot/afchwikiproject.js";
    
    var portletLink = mw.util.addPortletLink('p-cactions', '#', 'Sort (draft)', 'pt-draftsort', 'Manage WikiProject tags');
    $( portletLink ).click( function ( e ) {
        e.preventDefault();
        
        // If it's already there, don't duplicate
        if ( $( "#draft-sorter" ).length ) return;
        
        // Construct the form
        var form = $( "<div>" )
            .append( $( "<span>" )
                .text( "Loading form..." )
                .css( "color", "gray" ) );
        $.getJSON( mw.config.get( 'wgServer' ) + "/w/index.php?title=" +
                   WIKIPROJECT_LIST + "&action=raw&ctype=text/javascript", null, function ( data ) {
            var select = $( "<select>" )
                .attr( "id", "draft-sorter-form" )
                .attr( "multiple", "multiple" );
            $.each( data, function ( name, template ) {
            	select.append( $( "<option>" )
            	    .attr( "value", template )
            	    .text( name ) );
            } );
            form.hide();
            form.empty();
            form.append( $( "<span>" )
                .text( "Tag WikiProjects: " )
                .css( {
                	"font-size": "115%",
                	"font-weight": "bold"
                } ) );
            form.append( select );
            form.append( $( "<button>" )
                .text( "Submit" )
                .addClass( "mw-ui-button" )
                .addClass( "mw-ui-constructive" )
                .addClass( "mw-ui-big" )
                .css( "margin-left", "0.25em" )
                .click( submit ) );
            form.append( $( "<button>" )
                        .addClass( "mw-ui-button mw-ui-destructive mw-ui-quiet" )
                        .text( "Cancel" )
                        .click( function ( e ) {
                                $( "#draft-sorter" ).remove();
                        } ) );
            form.show();
            $( select ).chosen( {
            	"placeholder_text_multiple": "Select some WikiProjects"
            } );
        } );
        
        // Insert the form into the "ombox" we're putting on the page
        $( "<table>" )
            .insertAfter( "#jump-to-nav" )
            .attr( "id", "draft-sorter" )
            .addClass( "ombox" )
            .append( $( "<tbody>" )
                .append( $( "<tr>" )
                    .append( $( "<td>" )
                        .addClass( "mbox-image" )
                        .append( $( "<img>" )
                            .css( "padding", "5px" )
                            .attr( {
                            	"src": "https://upload.wikimedia.org/wikipedia/commons/f/f9/Curation_tool_tag_icon.svg",
                            	"alt": "Tag icon",
                            	"width": "75",
                            	"height": "75"
                            } ) ) )
                    .append( $( "<td>" )
                        .addClass( "mbox-text" )
                        .append( form ) ) ) );
                        
        // The submission function
        var submit = function () {
        	var newTags = $( "#draft-sorter-form").val();
        	console.log( newTags );
        	$( "#draft-sorter tbody tr td.mbox-text" ).empty();
        	var statusList = $( "<ul>" )
        	    .appendTo( "#draft-sorter tbody tr td.mbox-text" )
        	    .append( $( "<li>" ).text( "Saving " + newTags.length + " new tags." ) );
        	var showStatus = function ( status ) {
        		return $( "<li>" )
        		    .text( status )
        		    .appendTo( statusList );
        	};
        	var newText = "";
        	newTags.forEach( function ( element ) {
        		newText += "{{" + element + "|grade=|importance=|class=draft}}";
        	} );
        	$.ajax( {
                url: mw.util.wikiScript( 'api' ),
                type: 'POST',
                dataType: 'json',
                data: {
                    format: 'json',
                    action: 'edit',
                    title: "Draft talk:" + mw.config.get( 'wgTitle' ),
                    summary: "Tagging drafts (draft-sorter.js)",
                    token: mw.user.tokens.get( 'editToken' ),
                    prependtext: newText
                }
        	} ).done( function ( data ) {
        		if ( data && data.edit && data.edit.result && data.edit.result === "Success" ) {
        			showStatus( "Edit saved successfully! (" )
                        .append( $( "<a>" )
                            .text( "reload" )
                            .attr( "href", "#" )
                            .click( function () { document.location.reload( true ); } ) )
                        .append( ")" );
        		} else {
        			showStatus( "Couldn't save due to error: " + JSON.stringify( data ) );
        		}
        	} ).fail( function ( error ) {
        		showStatus( "Couldn't save due to error: " + JSON.stringify( error ) );
        	} );
        };
    } );
}( jQuery, mediaWiki ) );
//</nowiki>