User:Gregbard/assessortags.js

importScript('User:AzaToth/morebits.js'); //See User:Drilnoth/assessortags.js/doc for details. //Greatly based off of User:Ioeth/friendlytag.js. // // If assessortagsConfig aint exist. if( typeof( assessortagsConfig ) == 'undefined' ) { assessortagsConfig = {}; } /** assessortagsConfig.summaryAd ( string ) If ad should be added or not to summary, default " using AssessorTags" */ if( typeof( assessortagsConfig.summaryAd ) == 'undefined' ) { assessortagsConfig.summaryAd = " using AssessorTags"; } /** assessortagsConfig.groupByDefault ( boolean ) */ if( typeof( assessortagsConfig.groupByDefault ) == 'undefined' ) { assessortagsConfig.groupByDefault = true; } /** assessortagsConfig.groupingBanner ( choice between WikiProjectBanners and WikiProjectBannerShell ) */ if( typeof( assessortagsConfig.groupingBanner ) == 'undefined' ) { assessortagsConfig.groupingBanner = "WikiProjectBannerShell"; } /** assessortagsConfig.markTaggedPagesAsMinor ( boolean ) */ if( typeof( assessortagsConfig.markTaggedPagesAsMinor ) == 'undefined' ) { assessortagsConfig.markTaggedPagesAsMinor = true; } function assessortags { var wgNamespaceNumber = mw.config.get('wgNamespaceNumber'); if( wgNamespaceNumber == 1 || wgNamespaceNumber == 5 || wgNamespaceNumber == 7 || wgNamespaceNumber == 11 || wgNamespaceNumber == 13 ||wgNamespaceNumber == 15 || wgNamespaceNumber == 101 ) mw.util.addPortletLink( 'p-cactions', "javascript:assessortags.callback", "wikiprojects", "ca-wikiprojecttags", "Add WikiProject banners", ""); } $(assessortags); assessortags.callback = function assessortagsCallback { var Window = new SimpleWindow( 400, 500 ); var form = new QuickForm( assessortags.callback.evaluate ); {       Window.setTitle( "WikiProject tagging" ); form.append( {               type: 'checkbox',                list: [                    {                        label: 'Group into ',                        value: 'group',                        name: 'group',                        tooltip: 'If adding two or more banners and this box is checked, all newly added banners will be grouped into a single  template.',                        checked: assessortagsConfig.groupByDefault                    }                ]            }        ); form.append( { type:'submit' } ); if( typeof( assessortagsConfig.customBannerList ) == 'object' ) { form.append( { type:'header', label:'Custom' } ); form.append( { type: 'checkbox', name: 'custom', list: assessortagsConfig.customBannerList } ); form.append( { type:'submit' } ); }       form.append( { type:'header', label:'WikiProject banners (topical)' } ); form.append( { type:'checkbox', name: 'main', list: assessortags.mainList } ); form.append( { type:'header', label:'WikiProject banners (other)' } ); form.append( { type:'checkbox', name: 'second', list: assessortags.secondList } ); }   form.append( { type:'submit' } ); var result = form.render; Window.setContent( result ); Window.display; } assessortags.mainList = [ {       label: 'Albums', value: 'Album', subgroup: { name: 'album', type: 'checkbox', list: [ {                   label: "Needs immediate attention", value: "|attention=yes" },               {                    label: "Needs an infobox", value: "|needs-infobox=yes" }           ]        }    },    {        label: 'Biography', value: 'WPBiography', subgroup: { name: 'biography', type: 'checkbox', list: [ {                   label: "Actors and Filmmakers WikiProject", value: "|filmbio-work-group=yes" },               {                    label: "Arts and Entertainment work group", value: "|a&e-work-group=yes" },               {                    label: "British Royalty WikiProject", value: "|british-royalty=yes" },               {                    label: "Military work group", value: "|military-work-group=yes" },               {                    label: "Musicians WikiProject", value: "|musician-work-group=yes" },               {                    label: "Peerage and Baronetage WikiProject", value: "|peerage-work-group=yes" },               {                    label: "Politics and Government work group", value: "|politician-work-group=yes" },               {                    label: "Royalty WikiProject", value: "|royalty-work-group=yes" },               {                    label: "Science and Academia work group", value: "|s&a-work-group=yes" },               {                    label: "Sports and Games work group", value: "|sports-work-group=yes" },               {                    label: "Living: Yes", value: "|living=yes", tooltip: 'Check box if person is alive, otherwise check box below.' },               {                    label: "Living: No", value: "|living=no", tooltip: 'Check box if person is no longer alive, otherwise check box above.' },               {                    label: "Needs immediate attention", value: "|attention=yes" },               {                    label: "Needs an infobox", value: "|needs-infobox=yes" },               {                    label: "Needs persondata", value: "|needs-persondata=yes" },               {                    label: "Needs an image", value: "|needs-photo=yes" },               {                    label: "Active politician", value: "|activepol=yes" }           ]        }    },    {        label: 'Books', value: 'WPBooks', subgroup: { name: 'books', type: 'checkbox', list: [ {                   label: "Needs an infobox", value: "|needs-infobox=yes" },               {                    label: "Needs an image", value: "|needs-infobox-cover=yes" }           ]        }    },    {        label: 'Computing', value: 'WikiProject Computing', subgroup: { name: 'computing', type: 'checkbox', list: [ {                   label: "Amiga WikiProject", value: "|amiga=yes" },               {                    label: "Computer and Information Security task force", value: "|security=yes" },               {                    label: "Computer Hardware task force", value: "|hardware=yes" },               {                    label: "Computer Networking WikiProject", value: "|network=yes" },               {                    label: "Early Computers task force", value: "|early-comp=yes" },               {                    label: "Malware WikiProject", value: "|malware=yes" },               {                    label: "Websites WikiProject", value: "|websites=yes" },               {                    label: "Needs immediate attention", value: "|attention=yes" },               {                    label: "Needs an infobox", value: "|needs-infobox=yes" },               {                    label: "Needs an image", value: "|image-needed=yes" }           ]        }    },    {        label: 'Dungeons & Dragons', value: 'D&D', subgroup: { name: 'dungeonsanddragons', type: 'checkbox', list: [ {                   label: "Dragonlance task force", value: "|Dragonlance=yes" },               {                    label: "Forgotten Realms task force", value: "|Realms=yes" },               {                    label: "Greyhawk task force", value: "|Greyhawk=yes" },               {                    label: "Needs immediate attention", value: "|attention=yes" },               {                    label: "Needs general cleanup", value: "|cleanup=yes" },               {                    label: "Needs rewrite to be out-of-universe", value: "|fiction=yes" },               {                    label: "Good target for articles to be merged to", value: "|merge=yes" }           ]        }    },    {        label: 'Films', value: 'Film', subgroup: { name: 'films', type: 'checkbox', list: [ {                   label: "American Cinema task force", value: "|American-task-force=yes" },               {                    label: "Argentine Cinema task force", value: "|Argentine-task-force=yes" },               {                    label: "Australian Cinema task force", value: "|Australian-task-force=yes" },               {                    label: "Film Awards task force", value: "|Awards-task-force=yes" },               {                    label: "Baltic Cinema task force", value: "|Baltic-task-force=yes" },               {                    label: "British Cinema task force", value: "|British-task-force=yes" },               {                    label: "Canadian Cinema task force", value: "|Canadian-task-force=yes" },               {                    label: "Chinese Cinema task force", value: "|Chinese-task-force=yes" },               {                    label: "Film Festivals task force", value: "|Festival-task-force=yes" },               {                    label: "Filmmaking task force", value: "|Filmmaking-task-force=yes" },               {                    label: "French Cinema task force", value: "|French-task-force=yes" },               {                    label: "German Cinema task force", value: "|German-task-force=yes" },               {                    label: "Indian Cinema task force", value: "|Indian-task-force=yes" },               {                    label: "Italian Cinema task force", value: "|Italian-task-force=yes" },               {                    label: "Japanese Cinema task force", value: "|Japanese-task-force=yes" },               {                    label: "Korean Cinema task force", value: "|Korean-task-force=yes" },               {                    label: "New Zealand Cinema task force", value: "|NZ-task-force=yes" },               {                    label: "Nordic Cinema task force", value: "|Nordic-task-force=yes" },               {                    label: "Persian Cinema task force", value: "|Persian-task-force=yes" },               {                    label: "Southeast Asian Cinema task force", value: "|Southeast-task-force=yes" },               {                    label: "Soviet and Post-Soviet Cinema task force", value: "|Soviet-task-force=yes" },               {                    label: "Spanish Cinema task force", value: "|Spanish-task-force=yes" },               {                    label: "War Films task force", value: "|War-task-force=yes" },               {                    label: "Needs a plot summary", value: "|needs-plot=yes" },               {                    label: "Needs more information about cast", value: "|needs-cast=yes" },               {                    label: "Needs an infobox", value: "|needs-infobox=yes" },               {                    label: "Needs an image", value: "|needs-image=yes" }           ]        }    },    {        label: 'LGBT Studies', value: 'LGBTProject' },   {        label: 'Military History', value: 'WPMILHIST', subgroup: { name: 'milhist', type: 'checkbox', list: [ {                   label: "No applicable task force", value: "|no-task-force=yes" },               {                    label: "African Military History task force", value: "|African=yes" },               {                    label: "American Civil War task force", value: "|ACW=yes" },               {                    label: "American Revolutionary War task force", value: "|ARW=yes" },               {                    label: "Australian Military History task force", value: "|Australian=yes" },               {                    label: "Aviation, Military task force", value: "|Aviation=yes" },               {                    label: "Balkan Military History task force", value: "|Balkan=yes" },               {                    label: "Baltic Military History task force", value: "|Baltic=yes" },               {                    label: "Biography task force", value: "|Biography=yes" },               {                    label: "British Military History task force", value: "|British=yes" },               {                    label: "Canadian Military History task force", value: "|Canadian=yes" },               {                    label: "Chinese Military History task force", value: "|Chinese=yes" },               {                    label: "Classical Warfare task force", value: "|Classical=yes" },               {                    label: "Crusades task force", value: "|Crusades=yes" },               {                    label: "Dutch Military History task force", value: "|Dutch=yes" },               {                    label: "Early Modern Warfare task force", value: "|Early-Modern=yes" },               {                    label: "Films, War task force", value: "|Films=yes" },               {                    label: "French Military History task force", value: "|French=yes" },               {                    label: "Fortifications task force", value: "|Fortifications=yes" },               {                    label: "German Military History task force", value: "|German=yes" },               {                    label: "Historiography, Military task force", value: "|Historiography=yes" },               {                    label: "Indian Military History task force", value: "|Indian=yes" },               {                    label: "Intelligence task force", value: "|Intel=yes" },               {                    label: "Italian Military History task force", value: "|Italian=yes" },               {                    label: "Japanese Military History task force", value: "|Japanese=yes" },               {                    label: "Korean Military History task force", value: "|Korean=yes" },               {                    label: "Land Vehicles, Military task force", value: "|Land-vehicles=yes" },               {                    label: "Lebanese Military History task force", value: "|Lebanese=yes" },               {                    label: "Maritime Warfare task force", value: "|Maritime=yes" },               {                    label: "Medieval Warfare task force", value: "|Medieval=yes" },               {                    label: "Memorials and Cemeteries, Military task force", value: "|Memorials=yes" },               {                    label: "Middle Eastern Military History task force", value: "|Middle-Eastern=yes" },               {                    label: "Muslim Military History, Early task force", value: "|Muslim=yes" },               {                    label: "Napoleonic Era task force", value: "|Napoleonic=yes" },               {                    label: "National Militaries task force", value: "|National=yes" },               {                    label: "New Zealand Military History task force", value: "|New-Zealand=yes" },               {                    label: "Nordic Military History task force", value: "|Nordic=yes" },               {                    label: "Ottoman Military History task force", value: "|Ottoman=yes" },               {                    label: "Polish Military History task force", value: "|Polish=yes" },               {                    label: "Romanian Military History task force", value: "|Romanian=yes" },               {                    label: "Russian Military History task force", value: "|Russian=yes" },               {                    label: "Science, Military task force", value: "|Science=yes" },               {                    label: "South American Military History task force", value: "|South-American=yes" },               {                    label: "Southeast Asian Military History task force", value: "|Southeast-Asian=yes" },               {                    label: "Spanish Military History task force", value: "|Spanish=yes" },               {                    label: "Taiwanese Military History task force", value: "|Taiwanese=yes" },               {                    label: "Technology and Engineering, Military task force", value: "|Technology=yes" },               {                    label: "United States Military History task force", value: "|US=yes" },               {                    label: "Weaponry task force", value: "|Weaponry=yes" },               {                    label: "World War I task force", value: "|WWI=yes" },               {                    label: "World War II task force", value: "|WWII=yes" }           ]        }    },    {        label: 'Mississippi', value: 'WikiProject Mississippi', subgroup: { name: 'mississippi', type: 'checkbox', list: [ {                   label: "Needs immediate attention", value: "|attention=yes" },               {                    label: "Needs picture", value: "|needs-picture=yes" },               {                    label: "Needs reassessment", value: "|reassess=yes" },               {                    label: "Candidate for merging", value: "|merge=yes" },               {                    label: "Needs an infobox", value: "|needs-infobox=yes" }           ]        }    },    {        label: 'Philosophy', value: 'WikiProject Philosophy', subgroup: { name: 'philosophy', type: 'checkbox', list: [ { label: 'Philosophers', value: '|philosopher=yes' }, { label: 'Literature', value: '|literature=yes' }, { label: 'Aesthetics', value: '|aesthetics=yes'}, { label: 'Epistemology', value: '|epistemology=yes'}, { label: 'Ethics', value: '|ethics=yes' }, { label: 'Logic', value: '|logic=yes' }, { label: 'Metaphysics', value: '|metaphysics=yes' },               { label: 'Social', value: '|social=yes' }, { label: 'Analytic', value: '|analytic=yes' }, { label: 'Continental', value: '|continental=yes' }, { label: 'Eastern', value: '|eastern=yes' }, { label: 'Ancient', value: '|ancient=yes' }, { label: 'Medieval', value: '|medieval=yes' }, { label: 'Modern', value: '|modern=yes' }, { label: 'Contemporary', value: '|contemporary=yes' }, { label: 'Language', value: '|language=yes' }, { label: 'Mind', value: '|mind=yes' }, { label: 'Religion', value: '|religion=yes' }, { label: 'Continental', value: '|continental=yes' }, { label: 'High importance', value: '|importance=high'}, { label: 'Mid importance', value: '|importance=mid'}, { label: 'Low importance', value: '|importance=low'}, { label: 'Stub class', value: '|class=stub'}, { label: 'Start class', value: '|class=start'}, { label: 'C class', value: '|class=C'}, ]       }    },    {        label: 'Russia', value: 'WikiProject Russia', subgroup: { name: 'russia', type: 'checkbox', list: [ {                   label: "Needs immediate attention", value: "|attention=yes" }           ]        }    },    {        label: 'Simpsons, The', value: 'WikiProject The Simpsons' },   {        label: 'Songs', value: 'Songs', subgroup: { name: 'songs', type: 'checkbox', list: [ {                   label: "Needs immediate attention", value: "|attention=yes" },               {                    label: "Needs an infobox", value: "|needs-infobox=yes" }           ]        }    },    {        label: 'Soviet Union', value: 'WikiProject Soviet Union', subgroup: { name: 'soviet', type: 'checkbox', list: [ {                   label: "Needs immediate attention", value: "|attention=yes" },               {                    label: "Needs an infobox", value: "|needs-infobox=yes" }           ]        }    },    {        label: 'Vital Articles', value: 'Vital', tooltip: 'Articles must be listed at WP:VA/E to be added to this project.', subgroup: { name: 'vital', type: 'checkbox', list: [ {                   label: "Needs immediate attention", value: "|attention=yes" }           ]        }    } ]; assessortags.secondList = [ {       label: 'Disambiguation', value: 'DisambigProject' } ]; assessortags.callbacks = { main: function( self ) { var form = self.responseXML.getElementById( 'editform' ); var tagRe, text = , summaryText = ; //Is the summaryText still needed? var tags = new Array, groupableTags = new Array; //Is the groupableTags really still needed? Removing it fowls stuff up, but it seems like it should be removable // Check for preexisting tags Status.info( 'Info', 'Looking for banners already on page' ); for( var i = 0; i < self.params.tags.length; i++ ) { tagRe = new RegExp( '(\\{\\{' + self.params.tags[i] + '(\\||\\}\\}))', 'im' ); if( !tagRe.exec( form.wpTextbox1.value ) ) { tags = tags.concat( self.params.tags[i] ); } else { Status.info( 'Info', 'Found \{\{' + self.params.tags[i]                   + '\}\} on the article already...excluding' ); }       }        if( self.params.group && tags.length >= 2 ) { Status.info( 'Info', 'Adding banners to top of page' ); Status.info( 'Info', 'Grouping banners into \{\{' + assessortagsConfig.groupingBanner + '\}\}' ); groupableTags.sort; text += '\{\{' + assessortagsConfig.groupingBanner + '|1=' + '\n'; for( var i = 0; i < tags.length; i++ ) { text += '\{\{' + tags[i]; if( tags[i] == 'D&D' ) { text += self.params.dungeonsanddragonsSubcategory.join(""); } else if( tags[i] == 'WPBiography' ) { text += self.params.biographySubcategory.join(""); } else if( tags[i] == 'Film' ) { text += self.params.filmsSubcategory.join(""); } else if( tags[i] == 'WikiProject Computing' ) { text += self.params.computingSubcategory.join(""); } else if( tags[i] == 'WPBooks' ) { text += self.params.booksSubcategory.join(""); } else if( tags[i] == 'Vital' ) { text += self.params.vitalSubcategory.join(""); } else if( tags[i] == 'WPMILHIST' ) { text += self.params.milhistSubcategory.join(""); } else if( tags[i] == 'WikiProject Mississippi' ) { text += self.params.mississippiSubcategory.join(""); } else if( tags[i] == 'WikiProject Russia' ) { text += self.params.russiaSubcategory.join(""); } else if( tags[i] == 'WikiProject Soviet Union' ) { text += self.params.sovietSubcategory.join(""); } else if( tags[i] == 'Album' ) { text += self.params.albumSubcategory.join(""); } else if( tags[i] == 'Songs' ) { text += self.params.songsSubcategory.join(""); }               text += '\}\}\n'; }           text += '\}\}\n'; } else { tags = tags.concat( groupableTags ); }       if( self.params.group && tags.length < 2 ) { Status.info( 'Info', 'Adding banners to top of page' ); tags.sort; for( var i = 0; i < tags.length; i++ ) { text += '\{\{' + tags[i]; if( tags[i] == 'D&D' ) { text += self.params.dungeonsanddragonsSubcategory.join(""); } else if( tags[i] == 'WPBiography' ) { text += self.params.biographySubcategory.join(""); } else if( tags[i] == 'Film' ) { text += self.params.filmsSubcategory.join(""); } else if( tags[i] == 'WikiProject Computing' ) { text += self.params.computingSubcategory.join(""); } else if( tags[i] == 'WPBooks' ) { text += self.params.booksSubcategory.join(""); } else if( tags[i] == 'Vital' ) { text += self.params.vitalSubcategory.join(""); } else if( tags[i] == 'WPMILHIST' ) { text += self.params.milhistSubcategory.join(""); } else if( tags[i] == 'WikiProject Mississippi' ) { text += self.params.mississippiSubcategory.join(""); } else if( tags[i] == 'WikiProject Russia' ) { text += self.params.russiaSubcategory.join(""); } else if( tags[i] == 'WikiProject Soviet Union' ) { text += self.params.sovietSubcategory.join(""); } else if( tags[i] == 'Album' ) { text += self.params.albumSubcategory.join(""); } else if( tags[i] == 'Songs' ) { text += self.params.songsSubcategory.join(""); }               text += '\}\}\n'; }        }        text += form.wpTextbox1.value; summaryText += 'Added WikiProject banners to page' + assessortagsConfig.summaryAd; var postData = { 'wpMinoredit': assessortagsConfig.markTaggedPagesAsMinor ? 1 : undefined, 'wpStarttime': form.wpStarttime.value, 'wpEdittime': form.wpEdittime.value, 'wpAutoSummary': form.wpAutoSummary.value, 'wpEditToken': form.wpEditToken.value, 'wpSummary': summaryText, 'wpTextbox1': text };       self.post( postData ); } } assessortags.callback.evaluate = function assessortagsCallbackEvaluate(e) { var form = e.target; {if( typeof( assessortagsConfig.customBannerList ) == 'object' ) { var tags = form.getChecked( 'main' ).concat( form.getChecked( 'second' ) ).concat( form.getChecked( 'custom' ) ); } else { var tags = form.getChecked( 'main' ).concat( form.getChecked( 'second' ) ); }       var albumSubcategory = form.getChecked( 'main.album' ); var biographySubcategory = form.getChecked( 'main.biography' ); var booksSubcategory = form.getChecked( 'main.books' ); var computingSubcategory = form.getChecked( 'main.computing' ); var dungeonsanddragonsSubcategory = form.getChecked( 'main.dungeonsanddragons' ); var filmsSubcategory = form.getChecked( 'main.films' ); var milhistSubcategory = form.getChecked( 'main.milhist' ); var mississippiSubcategory = form.getChecked( 'main.mississippi' ); var russiaSubcategory = form.getChecked( 'main.russia' ); var songsSubcategory = form.getChecked( 'main.songs' ); var sovietSubcategory = form.getChecked( 'main.soviet' ); var vitalSubcategory = form.getChecked( 'main.vital' ); }   var params; if( tags.length == 0 ) { alert( 'Please select at least one banner.' ); return; }   params = { tags: tags, group: form.group.checked, albumSubcategory: albumSubcategory ? albumSubcategory : null, biographySubcategory: biographySubcategory ? biographySubcategory : null, booksSubcategory: booksSubcategory ? booksSubcategory : null, computingSubcategory: computingSubcategory ? computingSubcategory : null, dungeonsanddragonsSubcategory: dungeonsanddragonsSubcategory ? dungeonsanddragonsSubcategory : null, filmsSubcategory: filmsSubcategory ? filmsSubcategory : null, milhistSubcategory: milhistSubcategory ? milhistSubcategory : null, mississippiSubcategory: mississippiSubcategory ? mississippiSubcategory : null, russiaSubcategory: russiaSubcategory ? russiaSubcategory : null, songsSubcategory: songsSubcategory ? songsSubcategory : null, sovietSubcategory: sovietSubcategory ? sovietSubcategory : null, vitalSubcategory: vitalSubcategory ? vitalSubcategory : null, rcid: QueryString.exists( 'rcid' ) ? QueryString.get( 'rcid' ) : '' }   Status.init( form ); var query = { 'title': wgPageName, 'action': 'submit' };   Wikipedia.actionCompleted.redirect = wgPageName; Wikipedia.actionCompleted.notice = "Tagging complete, reloading article"; var wikipedia_wiki = new Wikipedia.wiki( 'Article modification', query, assessortags.callbacks.main ); wikipedia_wiki.params = params; wikipedia_wiki.get; } //