MediaWiki:ListDeleteRequests.js

Aus Wikivoyage

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
// <nowiki>
( function ( mw, $ ) {

	// check whether mediawiki and jquery is defined
	if ( typeof ( mw ) == 'object' && typeof ( $ ) == 'function' ) {

	// check Pagename
	var pageName =	mw.config.get ( 'wgPageName' );
	var groups = mw.config.get ( 'wgUserGroups' );

	// working only on page: Wikivoyage:Löschanträge
	if ( pageName === 'Wikivoyage:Löschanträge' ) {
	
			// URL of the API
			var apiURL = 'https:' + mw.config.get ( 'wgServer' ) + mw.config.get ( 'wgScriptPath' ) + '/api.php';
			
			// removing edit buttons on sections
			$('.mw-editsection').remove();

			// saving the overdue articles
			var overdueList = [];
			
			// List of pages not to be listed
			var notOnList = [];
			notOnList['Kategorie:Aktuelle Löschanträge/Antragsseiten'] = 'no';
			notOnList['Kategorie:Überfällige Löschanträge/Antragsseiten'] = 'no';
			
			// Getting list of overdue deletion requests
			$.ajax({
				url: apiURL,
				data: {
					format : 'json',
					action : 'query',
					list : 'categorymembers',
					cmlimit : '500',
					cmtitle : 'Kategorie:Überfällige Löschanträge'
					},
				method : 'POST',
				dataType: 'json',
				
				error: function() {
					// Error: Pages not created
					
				},
				success: function(data) {
					// List the articles
					var entry = '';
					var discussion = '';
					for ( var i = 0; i < data.query.categorymembers.length; i++ ) {
						
						// Check if not in exclude list
						if ( !(data.query.categorymembers[i].title in notOnList) ) {

							// Activating the heading and list
							$('#voy-list-overdue-delete-requests-heading-'+data.query.categorymembers[i].ns).css('display','block');
							$('#voy-list-overdue-delete-requests-'+data.query.categorymembers[i].ns).css('display','block');
	
							// saving the page name
							overdueList[data.query.categorymembers[i].title] = 0;
	
							// Generating the entry
							entry = 
									'<li data-title="'+data.query.categorymembers[i].title+'" class="voy-list-delete-requests-item voy-list-delete-requests-item-classic">'+
									'<span class="voy-list-delete-requests-entry">'+
									'<a href="/wiki/'+encodeURI(data.query.categorymembers[i].title)+'" title="'+data.query.categorymembers[i].title+'">'+data.query.categorymembers[i].title+'</a>'+
									'</span>';
	
							// Generating Link to Discussion site
							if ( data.query.categorymembers[i].ns === 0 ) {
								discussion = 'Diskussion:'+data.query.categorymembers[i].title;
							} else if ( data.query.categorymembers[i].ns === 3 ) {
								discussion = data.query.categorymembers[i].title.replace( /Benutzer Diskussion(:.*)/ig, 'Benutzer$1' );
							} else {
								discussion = data.query.categorymembers[i].title.replace( /([^:]+)(:.*)/ig, '$1 Diskussion$2' );
							}
							// Adding link to discussion site and delete request
							entry = entry + '<span class="voy-list-delete-requests-entry-links">'+'(';
							if ( data.query.categorymembers[i].ns === 3 ) {
								entry = entry +'<a href="/wiki/'+encodeURI(discussion)+'" title="Benutzerseite zu '+data.query.categorymembers[i].title+'">Benutzerseite</a>';
							} else {
								entry = entry +'<a href="/wiki/'+encodeURI(discussion)+'" title="Diskussionsseite von '+data.query.categorymembers[i].title+'">Diskussion</a>';
							}
							entry = entry + ', '+
											'<a href="/wiki/'+encodeURI('Spezial:Linkliste/'+data.query.categorymembers[i].title)+'" title="Auf diese Seiten verlinkt '+data.query.categorymembers[i].title+'">Verlinkungen</a>';
							entry = entry + ', '+
											'<a href="/wiki/'+encodeURI('Wikivoyage:Löschanträge/'+data.query.categorymembers[i].title)+'" title="Löschantrag für '+data.query.categorymembers[i].title+'">Löschantrag</a>'+
											') (';
							if ( groups.indexOf('sysop') === -1 ) {
								entry = entry + '<a href="https://de.wikivoyage.org/w/index.php?title='+encodeURI(data.query.categorymembers[i].title)+'&action=edit" title="'+data.query.categorymembers[i].title+' bearbeiten">Seite bearbeiten</a>';
							} else {
								entry = entry + '<a href="https://de.wikivoyage.org/w/index.php?title='+encodeURI(data.query.categorymembers[i].title)+'&action=delete" title="'+data.query.categorymembers[i].title+' löschen">Seite löschen</a>, '+
												'<a href="https://de.wikivoyage.org/w/index.php?title='+encodeURI(data.query.categorymembers[i].title)+'&action=edit" title="'+data.query.categorymembers[i].title+' bearbeiten">Seite bearbeiten</a>';
							}
							entry = entry + ')'+
											'</span>'+
											'<span class="voy-list-delete-requests-entry-duration"></span>'+
											'<br /><p class="voy-list-delete-requests-entry-reason">&nbsp;</p>'+
											'</li>';
							$('#voy-list-overdue-delete-requests-'+data.query.categorymembers[i].ns).append(entry);
						} // check if not in exclude list
					} // loop on result list
					
					// Getting list of current deletion requests
					$.ajax({
						url: apiURL,
						data: {
							format : 'json',
							action : 'query',
							list : 'categorymembers',
							cmlimit : '500',
							cmtitle : 'Kategorie:Aktuelle Löschanträge'
							},
						method : 'POST',
						dataType: 'json',
						
						error: function() {
							// Error: Pages not created
							
						},
						success: function(data) {

							// List the articles
							var entry = '';
							var discussion = '';
							for ( var i = 0; i < data.query.categorymembers.length; i++ ) {

								// Adding entry only when not in overdue and exclude list
								if ( !(data.query.categorymembers[i].title in overdueList) && !(data.query.categorymembers[i].title in notOnList) ) {

									// List the item here
									$('#voy-list-current-delete-requests-heading-'+data.query.categorymembers[i].ns).css('display','block');
									$('#voy-list-current-delete-requests-'+data.query.categorymembers[i].ns).css('display','block');
									entry = 
											'<li data-title="'+data.query.categorymembers[i].title+'" class="voy-list-delete-requests-item voy-list-delete-requests-item-classic">'+
											'<span class="voy-list-delete-requests-entry">'+
											'<a href="/wiki/'+encodeURI(data.query.categorymembers[i].title)+'" title="'+data.query.categorymembers[i].title+'">'+data.query.categorymembers[i].title+'</a>'+
											'</span>';

									// Generating Link to Discussion site
									if ( data.query.categorymembers[i].ns === 0 ) {
										discussion = 'Diskussion:'+data.query.categorymembers[i].title;
									} else if ( data.query.categorymembers[i].ns === 3 ) {
										discussion = data.query.categorymembers[i].title.replace( /Benutzer Diskussion(:.*)/ig, 'Benutzer$1' );
									} else {
										discussion = data.query.categorymembers[i].title.replace( /([^:]+)(:.*)/ig, '$1 Diskussion$2' );
									}

									// Adding link to discussion site and delete request
									entry = entry +
													'<span class="voy-list-delete-requests-entry-links">'+
													'('+
													'<a href="/wiki/'+encodeURI(discussion)+'" title="Diskussionsseite von '+data.query.categorymembers[i].title+'">Diskussion</a>'+
													', '+
													'<a href="/wiki/'+encodeURI('Spezial:Linkliste/'+data.query.categorymembers[i].title)+'" title="Auf diese Seiten verlinkt '+data.query.categorymembers[i].title+'">Verlinkungen</a>'+
													', '+
													'<a href="/wiki/'+encodeURI('Wikivoyage:Löschanträge/'+data.query.categorymembers[i].title)+'" title="Löschantrag für '+data.query.categorymembers[i].title+'">Löschantrag</a>'+
													') (';
									if ( groups.indexOf('sysop') === -1 ) {
										entry = entry + '<a href="https://de.wikivoyage.org/w/index.php?title='+encodeURI(data.query.categorymembers[i].title)+'&action=edit" title="'+data.query.categorymembers[i].title+' bearbeiten">Seite bearbeiten</a>';
									} else {
										entry = entry + '<a href="https://de.wikivoyage.org/w/index.php?title='+encodeURI(data.query.categorymembers[i].title)+'&action=delete" title="'+data.query.categorymembers[i].title+' löschen">Seite löschen</a>, '+
														'<a href="https://de.wikivoyage.org/w/index.php?title='+encodeURI(data.query.categorymembers[i].title)+'&action=edit" title="'+data.query.categorymembers[i].title+' bearbeiten">Seite bearbeiten</a>';
									}
									entry = entry + ')'+
													'</span>'+
													'<span class="voy-list-delete-requests-entry-duration"></span>'+
													'<br /><p class="voy-list-delete-requests-entry-reason">&nbsp;</p>'+
													'</li>';

									$('#voy-list-current-delete-requests-'+data.query.categorymembers[i].ns).append(entry);
								}
							}

						// Getting the reasons
						$('li.voy-list-delete-requests-item-classic').each(function() {
							var pageTitle = $(this).attr('data-title');
							$.ajax({
							url: apiURL,
							data: {
								format : 'json',
								action : 'parse',
								page : pageTitle
							},
							type: 'POST',
							dataType: 'json',
							error: function() {
							},
							success: function(data) {
								console.log(pageTitle);
								var match = data.parse.text['*'].match( /<span id="wv-delete-request-reason" data-duration="(.*?)">(.*?)<\/span>/ims );
								$('li[data-title="'+pageTitle+'"] span.voy-list-delete-requests-entry-duration').html(match[1]);
								$('li[data-title="'+pageTitle+'"] p.voy-list-delete-requests-entry-reason').html(match[2]);
							}
							});
						}); // $('li.voy-list-delete-requests-item-classic').each(function(){})

						}
					});
					
				}
			});
			
			// Getting list of quick deletion requests
	    	$.ajax({
				url: apiURL,
				data: {
					format : 'json',
					action : 'query',
					list : 'categorymembers',
					cmlimit : '500',
					cmtitle : 'Kategorie:Schnelllöschen'
					},
				method : 'POST',
				dataType: 'json',
				
				error: function() {
					// Error: Pages not created
					
				},
				success: function(data) {
							
					// List the articles
					var entry = '';
					var discussion = '';
					for ( var i = 0; i < data.query.categorymembers.length; i++ ) {
						$('#voy-list-quick-delete-requests-heading-'+data.query.categorymembers[i].ns).css('display','block');
						$('#voy-list-quick-delete-requests-'+data.query.categorymembers[i].ns).css('display','block');
						$('#voy-list-quick-delete-requests-'+data.query.categorymembers[i].ns).append('<li data-title="'+data.query.categorymembers[i].title+'" class="voy-list-delete-requests-item voy-list-delete-requests-item-quick"><a href="/wiki/'+encodeURI(data.query.categorymembers[i].title)+'" title="'+data.query.categorymembers[i].title+'">'+data.query.categorymembers[i].title+'</a></li>');
					}
				}
			});
			
			// Getting list of copyright violations
	    	$.ajax({
				url: apiURL,
				data: {
					format : 'json',
					action : 'query',
					list : 'categorymembers',
					cmlimit : '500',
					cmtitle : 'Kategorie:URV'
					},
				method : 'POST',
				dataType: 'json',
				
				error: function() {
					// Error: Pages not created
					
				},
				success: function(data) {
					// List the articles
					for ( var i = 0; i < data.query.categorymembers.length; i++ ) {
						$('#voy-list-urv ul').append('<li data-title="'+data.query.categorymembers[i].title+'" class="voy-list-delete-requests-item voy-list-delete-requests-item-classic"><a href="/wiki/'+encodeURI(data.query.categorymembers[i].title)+'" title="'+data.query.categorymembers[i].title+'">'+data.query.categorymembers[i].title+'</a></li>');
					}
				}
			});
			

	   } // if ( pageName === 'Wikivoyage:Löschanträge' )

	} // if ( typeof ( mw ) == 'object' && typeof ( $ ) == 'function' ) {

} ( mediaWiki, jQuery ) );
// </nowiki>