Differenze tra le versioni di "Utente:Ricordisamoa/PDC.js"

possibilità di cancellare pagina di discussione
(sicurezza in PdcDialog.prototype.initialize)
(possibilità di cancellare pagina di discussione)
*
* @param {string} titolo - Il titolo della pagina da cancellare
* @param {string} proceduramotivazione - IlLa titolomotivazione della procedura di cancellazione
* @param {string} modalità - La modalità della procedura di cancellazione
* @return {jQuery.Promise}
*/
PdcAgent.prototype.cancellaPagina = function ( titolo, procedura, modalitàmotivazione ) {
return this.api.postWithToken( 'csrf', {
action: 'delete',
formatversion: 2,
title: titolo,
reason: this.l10nMsg( 'baseSummary', motivazione )
// simpleDeletedReason, consensualeDeletedReason, votazioneDeletedReason
reason: this.l10nMsg( 'baseSummary', this.l10nMsg( modalità + 'DeletedReason', procedura ) )
} );
};
votazioneKeptTemplate: '\n\n{{subst:FineVoto|mantenuta}} --~~~~',
votazioneKeptSummary: 'notifica dell\'avvenuto mantenimento in seguito a votazione',
deletedTalkReason: '([[WP:IMMEDIATA|C10]]) Discussione di pagina cancellata: [[$1]]',
 
// [[Template:Cronologia valutazioni/man]]
'toolbox-close-delete-no': 'No',
'toolbox-close-cancel': 'Annulla',
'toolbox-close-deletetalk': 'Cancellare la pagina di discussione?',
'toolbox-close-deletetalk-yes': 'Sì',
'toolbox-close-deletetalk-no': 'No',
'toolbox-close-option-protect': 'Proteggi questa procedura',
'toolbox-close-kept-wait': 'Notifica dell\'avvenuto mantenimento della pagina in corso...',
'toolbox-close-delete-wait': 'Cancellazione della pagina in corso...',
'toolbox-close-delete-error': 'Errore durante la cancellazione della pagina',
'toolbox-close-deletetalk-wait': 'Cancellazione della pagina di discussione in corso...',
'toolbox-close-deletetalk-error': 'Errore durante la cancellazione della pagina di discussione',
'toolbox-close-notice-wait': 'Notifica dell\'avvenuta cancellazione della pagina in corso...',
'toolbox-close-notice-error': 'Errore durante la notifica dell\'avvenuta cancellazione',
} )
.on( 'click', this.onVoteStartButtonClick.bind( this ) );
};
 
/**
* Genera il pulsante per rispondere "sì" alla cancellazione della pagina di discussione.
*
* @private
* @return {OO.ui.ButtonWidget}
*/
SysopButtons.prototype.getCloseDeleteTalkYesButton = function () {
return new OO.ui.ButtonWidget( {
label: this.agent.msg( 'toolbox-close-deletetalk-yes' ),
flags: [ 'destructive' ]
} );
};
 
/**
* Genera il pulsante per rispondere "no" alla cancellazione della pagina di discussione.
*
* @private
* @return {OO.ui.ButtonWidget}
*/
SysopButtons.prototype.getCloseDeleteTalkNoButton = function () {
return new OO.ui.ButtonWidget( {
label: this.agent.msg( 'toolbox-close-deletetalk-no' ),
flags: [ 'constructive' ]
} );
};
 
/**
* Chiede all'utente se cancellare la pagina di discussione.
*
* @private
* @return {jQuery.Promise}
*/
SysopButtons.prototype.askDeleteTalk = function ( titolo ) {
var self = this,
deferred = $.Deferred();
 
$( '<div>' )
.append( [
// Cancellare la pagina?
self.agent.msg( 'toolbox-close-deletetalk' ),
'<br>',
// Sì
self.getCloseDeleteTalkYesButton().$element.on( 'click', function () {
var motivazione = self.agent.l10nMsg( 'deletedTalkReason', self.stato.procedura );
self.switchButtons.bind( true );
self.progressHandler.showMessage( self.agent.msg( 'toolbox-close-deletetalk-wait' ) );
self.agent.cancellaPagina( titolo, motivazione ).then( deferred.resolve, deferred.reject );
} ),
// No
self.getCloseDeleteTalkNoButton().$element.on( 'click', function () {
self.switchButtons.bind( true );
deferred.resolve();
} )
] )
.insertAfter( self.switchButtons() );
 
return deferred;
};
 
/**
* Controlla l'esistenza dell'eventuale pagina di discussione e, in caso positivo, chiede all'utente se cancellarla.
*
* @private
* @return {jQuery.Promise}
*/
SysopButtons.prototype.maybeDeleteTalkPage = function () {
var self = this,
titolo = self.agent.ottieniTitoloDiscussione( self.stato.pagina );
 
if ( titolo === null ) {
return $.Deferred().resolve();
}
 
return self.agent.controllaEsistenzaPagina( titolo )
.then( function ( exists ) {
if ( exists ) {
return self.askDeleteTalk( titolo );
}
return $.Deferred().resolve();
} );
};
 
SysopButtons.prototype.onCloseDeleteYesButtonClick = function () {
var self = this,
modalità = self.getModeId();,
// simpleDeletedReason, consensualeDeletedReason, votazioneDeletedReason
motivazione = self.agent.l10nMsg( modalità + 'DeletedReason', self.stato.procedura );
 
self.progressHandler.setActions( 45 );
self.progressHandler.showMessage( self.agent.msg( 'toolbox-close-delete-wait' ) );
self.agent.cancellaPagina( self.stato.pagina, self.stato.procedura, modalitàmotivazione )
.done( function () {
self.progressHandler.tick();
self.progressHandler.showMessage( self.agent.msg( 'toolbox-close-notice-wait' ) );
self.maybeDeleteTalkPage()
self.agent.terminaProcedura( self.stato.procedura, 'Deleted', modalità )
.done( function () {
self.progressHandler.tick();
self.progressHandler.showMessage( self.agent.msg( 'toolbox-close-protectnotice-wait' ) );
self.agent.proteggiPaginaterminaProcedura( self.stato.procedura, 'Deleted', modalità )
.done( function () {
self.progressHandler.tick();
self.progressHandler.showMessage( self.agent.msg( 'toolbox-purgeclose-protect-wait' ) );
self.agent.purgaPaginaproteggiPagina( self.stato.procedura )
.done( function () {
self.progressHandler.tick();
self.progressHandler.showMessage( self.agent.msg( 'toolbox-purge-wait' ) );
window.location.reload();
self.agent.purgaPagina( self.stato.procedura )
.done( function () {
self.progressHandler.tick();
window.location.reload();
} );
} )
.fail( function ( code, info ) {
self.progressHandler.showError( self.agent.errorMsg( 'toolbox-close-protect-error', info ) );
} );
} )
.fail( function ( code, info ) {
self.progressHandler.showError( self.agent.errorMsg( 'toolbox-close-protectnotice-error', info ) );
} );
} )
.fail( function ( code, info ) {
self.progressHandler.showError( self.agent.errorMsg( 'toolbox-close-noticedeletetalk-error', info ) );
} );
} )