MediaWiki:QuickCreateUserPage/code.js

/** * Ajax User Page Creation * Attempts to create a user page if it does not already exist * * @author Grunny * @license GPLv2+ * @notes Modified from *       https://github.com/Wikia/app/blob/dev/extensions/wikia/QuickTools/modules/ext.createUserPage.js */ /*global jQuery, mediaWiki */ ( function( $, mw, window ) {	'use strict';

var QuickCreateUserPage = {

init: function { var $qcLink = $( ' ' ).attr( 'id', 'quick-cup' ).html( $( '' ).attr( 'title', QuickCreateUserPage.langMsg( 'button-tooltip', true ) )				.attr( 'style', 'cursor: pointer' ).text( QuickCreateUserPage.langMsg( 'button-link-text', true ) )				.click( QuickCreateUserPage.createUserPage ) ); if ( mw.config.get( 'skin' ) === 'oasis' ) { $( '.wds-global-navigation__user-menu .wds-list').find( 'li:first' ).prepend( $qcLink ); } else { $( '#column-one' ).find( '#p-personal > .pBody > ul' ).prepend( $qcLink ); }		},

langConfig: { //English en: { 'button-link-text': 'Create user page', 'button-tooltip': 'Create your user page on this wiki automagically', 'buttontalk-link-text': 'Create user talk page', 'buttontalk-tooltip': 'Create your user talk page on this wiki automagically', 'cup-reason': 'Creating user page', 'cup-success-text': 'Successfully created page!', 'cup-error-exists': 'Page already exists!', 'cup-error-failed': 'Creating page failed!' },			// Arabic ar: { 'button-link-text': 'إلى إنشاء صفحة المستخدم', 'button-tooltip': 'تلقائيا إنشاء الصفحة الخاصة بك', 'buttontalk-link-text': 'لإنشاء جدار من نقاش المستخدم', 'buttontalk-tooltip': 'تلقائيا إنشاء الحائط الخاص بك المستخدم', 'cup-reason': 'إنشاء صفحة المستخدم', 'cup-success-text': 'تم إنشاء الصفحة بنجاح!', 'cup-error-exists': 'الصفحة موجود بالفعل!', 'cup-error-failed': 'فشل في إنشاء صفحة!' },			// Belarusian be: { 'button-link-text': 'Стварыць старонку ўдзельніка', 'button-tooltip': 'Аўтаматычна стварыць сваю старонку ўдзельніка', 'buttontalk-link-text': 'Стварыць сцяну абмеркавання ўдзельніка', 'buttontalk-tooltip': 'Аўтаматычна стварыць сваю сцяну абмеркавання ўдзельніка', 'cup-reason': 'Стварэнне старонкі ўдзельніка', 'cup-success-text': 'Старонка паспяхова створана!', 'cup-error-exists': 'Старонка ўжо існуе!', 'cup-error-failed': 'Не атрымалася стварыць старонку!' },			// Catalan ca: { 'button-link-text': 'Crea la pàgina d\'usuari', 'button-tooltip': 'Crea la teva pàgina d\'usuari en aquest wiki', 'buttontalk-link-text': 'Crea la pàgina de discussió', 'buttontalk-tooltip': 'Crea la teva pàgina de discussió en aquest wiki', 'cup-reason': 'Creant pàgina d\'usuari', 'cup-success-text': 'Pàgina creada amb èxit!', 'cup-error-exists': 'Ja existeix la pàgina!', 'cup-error-failed': 'Error en crear la pàgina!' },			// German de: { 'button-link-text': 'Benutzerseite erstellen', 'button-tooltip': 'Erstelle deine Benutzerseite in diesem Wikia automatisch', 'buttontalk-link-text': 'Benutzer-Diskussionsseite erstellen', 'buttontalk-tooltip': 'Erstelle deine Benutzer-Diskussionsseite in diesem Wikia automatisch', 'cup-reason': 'Benutzerseite erstellt', 'cup-success-text': 'Erfolgreich erstellt worden!', 'cup-error-exists': 'Seite existiert bereits!', 'cup-error-failed': 'Erstellung fehlgeschlagen!' },			// Spanish es: { 'button-link-text': 'Crear página de usuario', 'button-tooltip': 'Crea tu página de usuario en este wiki', 'buttontalk-link-text': 'Crear página de discusión', 'buttontalk-tooltip': 'Crea tu página de discusión en este wiki', 'cup-reason': 'Creando página de usuario', 'cup-success-text': '¡Página creada exitosamente!', 'cup-error-exists': '¡Ya existe la página!', 'cup-error-failed': '¡Error al crear la página!' },			// French fr: { 'button-link-text': 'Créer page utilisateur', 'button-tooltip': 'Créer votre page utilisateur sur ce wiki automatiquement', 'buttontalk-link-text': 'Créer page de discussion utilisateur', 'buttontalk-tooltip': 'Créer votre page de discussion utilisateur sur ce wiki automatiquement', 'cup-reason': 'Création page utilisateur', 'cup-success-text': 'La création de la page a réussi !', 'cup-error-exists': 'La page existe déjà !', 'cup-error-failed': 'La création de la page a échoué !' },			// Galician gl: { 'button-link-text': 'Crear páxina de usuario', 'button-tooltip': 'Crea a túa páxina de usuario neste wiki', 'buttontalk-link-text': 'Crear páxina de discusión', 'buttontalk-tooltip': 'Crea a túa páxina de discusión neste wiki', 'cup-reason': 'Creando páxina de usuario', 'cup-success-text': 'Páxina creada con éxito!', 'cup-error-exists': 'Xa existe a páxina!', 'cup-error-failed': 'Erro ao crear a páxina!' },			// Manx gv: { 'button-link-text': 'Croo yn duillag ymmydeyr' },			// Hindi hi: { 'button-link-text': 'उपयोगकर्ता पेज बनाएँ', 'button-tooltip': 'स्वतः इस विकि पर अपने सदस्य पृष्ठ बनाएँ', 'buttontalk-link-text': 'वार्ता पृष्ठ बनाएँ', 'buttontalk-tooltip': 'स्वतः इस विकि पर अपनी वार्ता पृष्ठ बनाएँ', 'cup-reason': 'उपयोगकर्ता पेज बनाना', 'cup-success-text': 'सफलतापूर्वक पेज बनाया!', 'cup-error-exists': 'पृष्ठ पहले से मौजूद है!', 'cup-error-failed': 'बनाने पेज विफल रहा है!' },			// Сroatian hr: { 'button-link-text': 'Stvoriti stranicu sudionika', 'button-tooltip': 'Automatski kreirati svoju stranicu sudionika', 'buttontalk-link-text': 'Stvoriti zid rasprave sudionika', 'buttontalk-tooltip': 'Automatski stvoriti svoj zid rasprave sudionika', 'cup-reason': 'Izrada stranice sudionika', 'cup-success-text': 'Stranica je uspješno kreiran!', 'cup-error-exists': 'Stranica već postoji!', 'cup-error-failed': 'Nije uspio stvoriti stranicu!' },			// Hungarian hu: { 'button-link-text': 'Felhasználói lap létrehozása', 'button-tooltip': 'Felhasználói lap automatikus létrehozása ezen a wikin', 'buttontalk-link-text': 'Felhasználói vitalap létrehozása', 'buttontalk-tooltip': 'Felhasználói vitalap automatikus létrehozása ezen a wikin', 'cup-reason': 'Felhasználói lap létrehozása', 'cup-success-text': 'Siekrült létrehozni a lapot!', 'cup-error-exists': 'A lap már létezik!', 'cup-error-failed': 'Nem sikerült létrehozni a lapot!' },			// Italian it: { 'button-link-text': 'Crea pagina utente', 'button-tooltip': 'Crea la tua pagina utente su questa wiki', 'buttontalk-link-text': 'Crea pagina delle discussioni', 'buttontalk-tooltip': 'Crea la tua pagina delle discussioni su questa wiki', 'cup-reason': 'Creando pagina utente', 'cup-success-text': 'Pagina creata con successo!', 'cup-error-exists': 'Esiste già la pagina!', 'cup-error-failed': 'Errore creando la pagina!' },			// Kannada kn: { 'button-link-text': 'ಬಳಕೆದಾರ ಪುಟ ರಚಿಸಿ', 'button-tooltip': 'ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಈ ವಿಕಿ ನಿಮ್ಮ ಬಳಕೆದಾರ ಪುಟ ರಚಿಸಿ', 'buttontalk-link-text': 'ಚರ್ಚೆಪುಟ ಪುಟ ರಚಿಸಿ', 'buttontalk-tooltip': 'ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಈ ವಿಕಿ ನಿಮ್ಮ ಚರ್ಚೆಪುಟ ಪುಟ ರಚಿಸಿ', 'cup-reason': 'ಬಳಕೆದಾರ ಪುಟ ರಚಿಸಲಾಗುತ್ತಿದೆ', 'cup-success-text': 'ಯಶಸ್ವಿಯಾಗಿ ಪುಟ ದಾಖಲಿಸಿದವರು!', 'cup-error-exists': 'ಪುಟ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ!', 'cup-error-failed': 'ರಚಿಸುವುದು ಪುಟ ವಿಫಲವಾಗಿದೆ!' },			// Dutch nl: { 'button-link-text': 'Maak gebruikerspagina aan', 'button-tooltip': 'Maak gebruikerspagina op deze wiki automagisch aan', 'buttontalk-link-text': 'Maak gebruikersoverlegpagina aan', 'buttontalk-tooltip': 'Maak gebruikersoverlegspagina op deze wiki automagisch aan', 'cup-reason': 'Gebruikerspagina aanmaken', 'cup-success-text': 'Pagina succesvol aangemaakt!', 'cup-error-exists': 'Pagina bestaat al!', 'cup-error-failed': 'Pagina aanmaken mislukt!' },			// Occitan oc: { 'button-link-text': 'Crear pagina d\'utilizaire', 'button-tooltip': 'Crear ta pagina d\'utilizaire sus aqueste wiki', 'buttontalk-link-text': 'Crear pagina de discussion', 'buttontalk-tooltip': 'Crear ta pagina de discussion sus aqueste wiki', 'cup-reason': 'Creacion de la pagina d\'utilizaire', 'cup-success-text': 'Pagina creada amb capitada !', 'cup-error-exists': 'Existís ja la pagina !', 'cup-error-failed': 'Error amb la creacion de la pagina !' },			// Polish pl: { 'button-link-text': 'Utwórz stronę użytkownika', 'button-tooltip': 'Utwórz automatycznie stronę użytkownika na tej Wiki', 'buttontalk-link-text': 'Utwórz stronę dyskusji', 'buttontalk-tooltip': 'Utwórz automatycznie stronę dyskusji na tej Wiki', 'cup-reason': 'Tworzenie strony użytkownika', 'cup-success-text': 'Zakończono tworzenie strony!', 'cup-error-exists': 'Strona już istnieje', 'cup-error-failed': 'Niepowodzenie!' },			// European Portuguese pt: { 'button-link-text': 'Criar página de utilizador', 'button-tooltip': 'Cria a tua página de utilizador neste wiki', 'buttontalk-link-text': 'Criar página de discussão', 'buttontalk-tooltip': 'Cria a tua página de discussão neste wiki', 'cup-reason': 'Criando página de utilizador', 'cup-success-text': 'Página criada com sucesso!', 'cup-error-exists': 'Já existe a página!', 'cup-error-failed': 'Erro ao criar a página!' },			// Brazilian Portuguese 'pt-br': { 'button-link-text': 'Criar página de usuário', 'button-tooltip': 'Crie sua página de usuário nessa wiki', 'buttontalk-link-text': 'Criar página de discussão', 'buttontalk-tooltip': 'Crie sua página de discussão nessa wiki', 'cup-reason': 'Criando página de usuário', 'cup-success-text': 'Página criada com sucesso!', 'cup-error-exists': 'Já existe a página!', 'cup-error-failed': 'Erro ao criar a página!' },			// Romanian ro: { 'button-link-text': 'Crearea paginii de utilizator', 'button-tooltip': 'Creează-ţi pagina de utilizator pe acest wiki', 'buttontalk-link-text': 'Crearea paginii de discuţii', 'buttontalk-tooltip': 'Creează-ţi pagina de discuţii pe acest wiki', 'cup-reason': 'Creând pagina de utilizator', 'cup-success-text': 'Pagina a fost creată cu succes!', 'cup-error-exists': 'Deja există pagina!', 'cup-error-failed': 'Eroare creându-ţi pagina!' },			// Russian ru: { 'button-link-text': 'Создать страницу участника', 'button-tooltip': 'Автоматически создать свою страницу участника', 'buttontalk-link-text': 'Создать стену обсуждения участника', 'buttontalk-tooltip': 'Автоматически создать свою стену обсуждения участника', 'cup-reason': 'Создание страницы участника', 'cup-success-text': 'Страница успешно создана!', 'cup-error-exists': 'Страница уже существует!', 'cup-error-failed': 'Не удалось создать страницу!' },			// Serbian sr: { 'button-link-text': 'Направи корисничку страницу', 'button-tooltip': 'Аутоматски направи своју корисничку страницу', 'buttontalk-link-text': 'Направи страницу за разговор', 'buttontalk-tooltip': 'Аутоматски направи своју страницу за разговор', 'cup-reason': 'Прављење корисничке странице', 'cup-success-text': 'Страница успешно направљена!', 'cup-error-exists': 'Страница већ постоји!', 'cup-error-failed': 'Прављење странице неуспешно!' },			// Serbian (Literally the same as above but for sr-ec as I'm too lazy to add code to fix this) 'sr-ec': { 'button-link-text': 'Направи корисничку страницу', 'button-tooltip': 'Аутоматски направи своју корисничку страницу', 'buttontalk-link-text': 'Направи страницу за разговор', 'buttontalk-tooltip': 'Аутоматски направи своју страницу за разговор', 'cup-reason': 'Прављење корисничке странице', 'cup-success-text': 'Страница успешно направљена!', 'cup-error-exists': 'Страница већ постоји!', 'cup-error-failed': 'Прављење странице неуспешно!' },			// Serbian (Latin) 'sr-el': { 'button-link-text': 'Napravi korisničku stranicu', 'button-tooltip': 'Automatski napravi svoju korisničku stranicu', 'buttontalk-link-text': 'Napravi stranicu za razgovor', 'buttontalk-tooltip': 'Automatski napravi svoju stranicu za razgovor', 'cup-reason': 'Pravljenje korisničke stranice', 'cup-success-text': 'Stranica uspešno napravljena!', 'cup-error-exists': 'Stranica već postoji!', 'cup-error-failed': 'Pravljenje stranice neuspešno!' },			// Ukrainian uk: { 'button-link-text': 'Створити сторінку користувача', 'button-tooltip': 'Автоматично створити свою сторінку користувача', 'buttontalk-link-text': 'Створити стіну обговорення користувача', 'buttontalk-tooltip': 'Автоматично створити свою стіну обговорення користувача', 'cup-reason': 'Створення сторінки користувача', 'cup-success-text': 'Сторінку успішно створено!', 'cup-error-exists': 'Сторінка вже існує!', 'cup-error-failed': 'Не вдалося створити сторінку!' },			// Valencian val: { 'button-link-text': 'Crear pàgina d\'usuari', 'button-tooltip': 'Crea la tua pàgina d\'usuari en este wiki', 'buttontalk-link-text': 'Crear pàgina de discussió', 'buttontalk-tooltip': 'Crea la tua pàgina de discussió en este wiki', 'cup-reason': 'Creant pàgina d\'usuari', 'cup-success-text': '¡Pàgina creada exitosament!', 'cup-error-exists': '¡Ya existix la pàgina!', 'cup-error-failed': '¡Error creant la pàgina!' }		},

langMsg: function ( name, userLang ) { if ( userLang && mw.config.get( 'wgUserLanguage' ) in QuickCreateUserPage.langConfig && name in QuickCreateUserPage.langConfig[mw.config.get( 'wgUserLanguage' )] ) { return QuickCreateUserPage.langConfig[mw.config.get( 'wgUserLanguage' )][name]; }			if ( !userLang && mw.config.get( 'wgContentLanguage' ) in QuickCreateUserPage.langConfig && name in QuickCreateUserPage.langConfig[mw.config.get( 'wgContentLanguage' )] ) { return QuickCreateUserPage.langConfig[mw.config.get( 'wgContentLanguage' )][name]; }			return QuickCreateUserPage.langConfig.en[name]; },

createUserPage: function { var	userPageContent = window.qtUserPageTemplate || '', pageName = 'User:' + mw.config.get( 'wgUserName' ), overwriteUserPage = window.qtEnableUserPageOverwrite || false; if ( overwriteUserPage === true ) { QuickCreateUserPage.makeEdit( pageName, userPageContent ); return; }			$.getJSON( mw.util.wikiScript( 'api' ), {				action: 'query',				prop: 'revisions',				titles: pageName,				format: 'json'			} ).done( function ( data ) {				var	pageIds = Object.keys( data.query.pages ),					pageId = pageIds[0];				if ( pageId !== '-1' ) {					QuickCreateUserPage.showResult( 'error', 'cup-error-exists' );				} else {					QuickCreateUserPage.makeEdit( pageName, userPageContent );				}			} ); },

makeEdit: function( pageName, pageContent ) { $.ajax( {				type: 'POST',				url: mw.util.wikiScript( 'api' ),				dataType: 'json',				data: {					action: 'edit',					title: pageName,					summary: QuickCreateUserPage.langMsg( 'cup-reason', false ),					text: pageContent,					format: 'json',					token: mw.user.tokens.get( 'editToken' )				}			} ).done( function ( data ) {				if ( data.edit.result === 'Success' ) {					QuickCreateUserPage.showResult( 'ok', 'cup-success-text' );				} else {					QuickCreateUserPage.showResult( 'error', 'cup-error-failed' );				}			} ).fail( function ( data ) {				QuickCreateUserPage.showResult( 'error', 'cup-error-failed' );			} ); },

showResult: function( result, message ) { var resultClass = ( result === 'error' ? 'error' : 'confirm' ); new BannerNotification( QuickCreateUserPage.langMsg( message, true ), resultClass ).show; }	};

$( QuickCreateUserPage.init ); }( jQuery, mediaWiki, this ) );