Merge "mw: Remove 'Report problem' feature"

This commit is contained in:
jenkins-bot 2013-06-07 23:23:29 +00:00 committed by Gerrit Code Review
commit 7a75f74ab2
5 changed files with 4 additions and 147 deletions

View file

@ -78,15 +78,12 @@ class VisualEditorHooks {
* Adds extra variables to the global config * Adds extra variables to the global config
*/ */
public static function onResourceLoaderGetConfigVars( array &$vars ) { public static function onResourceLoaderGetConfigVars( array &$vars ) {
global $wgVisualEditorEnableSectionEditLinks, $wgVisualEditorParsoidProblemReportURL, global $wgVisualEditorEnableSectionEditLinks,
$wgVisualEditorParsoidURL, $wgVisualEditorEnableExperimentalCode, $wgVisualEditorParsoidURL, $wgVisualEditorEnableExperimentalCode,
$wgVisualEditorTabLayout; $wgVisualEditorTabLayout;
$vars['wgVisualEditorConfig'] = array( $vars['wgVisualEditorConfig'] = array(
'enableSectionEditLinks' => $wgVisualEditorEnableSectionEditLinks, 'enableSectionEditLinks' => $wgVisualEditorEnableSectionEditLinks,
'reportProblemURL' => $wgVisualEditorParsoidProblemReportURL !== null ?
$wgVisualEditorParsoidProblemReportURL :
"$wgVisualEditorParsoidURL/_bugs/",
'enableExperimentalCode' => $wgVisualEditorEnableExperimentalCode, 'enableExperimentalCode' => $wgVisualEditorEnableExperimentalCode,
'tabLayout' => $wgVisualEditorTabLayout, 'tabLayout' => $wgVisualEditorTabLayout,
); );

View file

@ -41,9 +41,7 @@ $messages['en'] = array(
'visualeditor-savedialog-title-conflict' => 'Conflict', 'visualeditor-savedialog-title-conflict' => 'Conflict',
'visualeditor-savedialog-title-nochanges' => 'No changes', 'visualeditor-savedialog-title-nochanges' => 'No changes',
'visualeditor-savedialog-title-review' => 'Review your changes', 'visualeditor-savedialog-title-review' => 'Review your changes',
'visualeditor-savedialog-title-report' => 'Report a problem with the editing system',
'visualeditor-savedialog-title-save' => 'Save your changes', 'visualeditor-savedialog-title-save' => 'Save your changes',
'visualeditor-savedialog-label-review-wrong' => 'Report a bug',
'visualeditor-savedialog-label-review-good' => 'Return to save form', 'visualeditor-savedialog-label-review-good' => 'Return to save form',
'visualeditor-savedialog-label-report' => 'Report problem', 'visualeditor-savedialog-label-report' => 'Report problem',
'visualeditor-savedialog-label-resolve-conflict' => 'Resolve conflict', 'visualeditor-savedialog-label-resolve-conflict' => 'Resolve conflict',

View file

@ -18,9 +18,6 @@ $wgVisualEditorParsoidURL = 'http://localhost:8000';
$wgVisualEditorParsoidPrefix = 'localhost'; $wgVisualEditorParsoidPrefix = 'localhost';
// Timeout for HTTP requests to Parsoid in seconds // Timeout for HTTP requests to Parsoid in seconds
$wgVisualEditorParsoidTimeout = 100; $wgVisualEditorParsoidTimeout = 100;
// URL to post reports from the "Report problem" dialog to
// Defaults to "$wgVisualEditorParsoidURL/_bugs/" if null
$wgVisualEditorParsoidProblemReportURL = null;
// Namespaces to enable VisualEditor in // Namespaces to enable VisualEditor in
$wgVisualEditorNamespaces = array( NS_MAIN ); $wgVisualEditorNamespaces = array( NS_MAIN );
// Whether to use change tagging for VisualEditor edits // Whether to use change tagging for VisualEditor edits
@ -179,9 +176,7 @@ $wgResourceModules += array(
'visualeditor-savedialog-title-conflict', 'visualeditor-savedialog-title-conflict',
'visualeditor-savedialog-title-nochanges', 'visualeditor-savedialog-title-nochanges',
'visualeditor-savedialog-title-review', 'visualeditor-savedialog-title-review',
'visualeditor-savedialog-title-report',
'visualeditor-savedialog-title-save', 'visualeditor-savedialog-title-save',
'visualeditor-savedialog-label-review-wrong',
'visualeditor-savedialog-label-review-good', 'visualeditor-savedialog-label-review-good',
'visualeditor-savedialog-label-report', 'visualeditor-savedialog-label-report',
'visualeditor-savedialog-label-resolve-conflict', 'visualeditor-savedialog-label-resolve-conflict',

View file

@ -37,9 +37,7 @@ ve.init.mw.ViewPageTarget = function VeInitMwViewPageTarget() {
this.toolbarSaveButton = null; this.toolbarSaveButton = null;
this.saveDialogSlideHistory = []; this.saveDialogSlideHistory = [];
this.saveDialogSaveButton = null; this.saveDialogSaveButton = null;
this.saveDialogReviewWrongButton = null;
this.saveDialogReviewGoodButton = null; this.saveDialogReviewGoodButton = null;
this.saveDialogReportButton = null;
this.$toolbarEditNotices = $( '<div>' ).addClass( this.$toolbarEditNotices = $( '<div>' ).addClass(
've-init-mw-viewPageTarget-toolbar-editNotices' 've-init-mw-viewPageTarget-toolbar-editNotices'
@ -219,20 +217,6 @@ ve.init.mw.ViewPageTarget.saveDialogTemplate = '\
</div>\ </div>\
<div style="clear: both;"></div>\ <div style="clear: both;"></div>\
</div>\ </div>\
<div class="ve-init-mw-viewPageTarget-saveDialog-slide ve-init-mw-viewPageTarget-saveDialog-slide-report">\
<div class="ve-init-mw-viewPageTarget-saveDialog-report">\
<textarea name="problem" class="ve-init-mw-viewPageTarget-saveDialog-problem"\
id="ve-init-mw-viewPageTarget-saveDialog-problem" type="text"\
rows="4"></textarea>\
</div>\
<div class="ve-init-mw-viewPageTarget-saveDialog-actions">\
<div class="ve-init-mw-viewPageTarget-saveDialog-working"></div>\
</div>\
<div style="clear: both;"></div>\
<div class="ve-init-mw-viewPageTarget-saveDialog-foot">\
<p class="ve-init-mw-viewPageTarget-saveDialog-report-notice"></p>\
</div>\
</div>\
<div class="ve-init-mw-viewPageTarget-saveDialog-slide ve-init-mw-viewPageTarget-saveDialog-slide-conflict">\ <div class="ve-init-mw-viewPageTarget-saveDialog-slide ve-init-mw-viewPageTarget-saveDialog-slide-conflict">\
<div class="ve-init-mw-viewPageTarget-saveDialog-conflict">\ <div class="ve-init-mw-viewPageTarget-saveDialog-conflict">\
</div>\ </div>\
@ -443,9 +427,6 @@ ve.init.mw.ViewPageTarget.prototype.onShowChanges = function ( diffHtml ) {
// Invalidate the viewer diff on next change // Invalidate the viewer diff on next change
this.surface.getModel().connect( this, { 'transact': 'onSurfaceModelTransact' } ); this.surface.getModel().connect( this, { 'transact': 'onSurfaceModelTransact' } );
// Store the diff for reporting purposes
this.diffHtml = diffHtml;
mw.loader.using( 'mediawiki.action.history.diff', ve.bind( function () { mw.loader.using( 'mediawiki.action.history.diff', ve.bind( function () {
this.$saveDialog this.$saveDialog
.find( '.ve-init-mw-viewPageTarget-saveDialog-viewer' ) .find( '.ve-init-mw-viewPageTarget-saveDialog-viewer' )
@ -453,7 +434,6 @@ ve.init.mw.ViewPageTarget.prototype.onShowChanges = function ( diffHtml ) {
this.$saveDialogLoadingIcon.hide(); this.$saveDialogLoadingIcon.hide();
this.saveDialogReviewGoodButton.setDisabled( false ); this.saveDialogReviewGoodButton.setDisabled( false );
this.saveDialogReviewWrongButton.setDisabled( false );
}, this ), ve.bind( function () { }, this ), ve.bind( function () {
this.onSaveError( null, 'Module load failed' ); this.onSaveError( null, 'Module load failed' );
@ -476,7 +456,6 @@ ve.init.mw.ViewPageTarget.prototype.onSerialize = function ( wikitext ) {
this.$saveDialogLoadingIcon.hide(); this.$saveDialogLoadingIcon.hide();
this.saveDialogReviewGoodButton.setDisabled( false ); this.saveDialogReviewGoodButton.setDisabled( false );
this.saveDialogReviewWrongButton.setDisabled( false );
}; };
/** /**
@ -489,7 +468,6 @@ ve.init.mw.ViewPageTarget.prototype.onSerialize = function ( wikitext ) {
ve.init.mw.ViewPageTarget.prototype.onShowChangesError = function ( jqXHR, status ) { ve.init.mw.ViewPageTarget.prototype.onShowChangesError = function ( jqXHR, status ) {
alert( ve.msg( 'visualeditor-differror', status ) ); alert( ve.msg( 'visualeditor-differror', status ) );
this.$saveDialogLoadingIcon.hide(); this.$saveDialogLoadingIcon.hide();
this.saveDialogReviewWrongButton.setDisabled( false );
}; };
/** /**
@ -502,7 +480,6 @@ ve.init.mw.ViewPageTarget.prototype.onShowChangesError = function ( jqXHR, statu
ve.init.mw.ViewPageTarget.prototype.onSerializeError = function ( jqXHR, status ) { ve.init.mw.ViewPageTarget.prototype.onSerializeError = function ( jqXHR, status ) {
alert( ve.msg( 'visualeditor-serializeerror', status ) ); alert( ve.msg( 'visualeditor-serializeerror', status ) );
this.$saveDialogLoadingIcon.hide(); this.$saveDialogLoadingIcon.hide();
this.saveDialogReviewWrongButton.setDisabled( false );
}; };
/** /**
@ -692,15 +669,6 @@ ve.init.mw.ViewPageTarget.prototype.onSaveDialogSaveButtonClick = function () {
} }
}; };
/**
* Handle clicks on the review "Wrong" button in the save dialog.
*
* @method
*/
ve.init.mw.ViewPageTarget.prototype.onSaveDialogReviewWrongButtonClick = function () {
this.swapSaveDialog( 'report' );
};
/** /**
* Handle clicks on the review "Good" button in the save dialog. * Handle clicks on the review "Good" button in the save dialog.
* *
@ -710,18 +678,6 @@ ve.init.mw.ViewPageTarget.prototype.onSaveDialogReviewGoodButtonClick = function
this.swapSaveDialog( 'save' ); this.swapSaveDialog( 'save' );
}; };
/**
* Handle clicks on the report a problem button in the save dialog.
*
* @method
*/
ve.init.mw.ViewPageTarget.prototype.onSaveDialogReportButtonClick = function () {
this.reportProblem( $( '#ve-init-mw-viewPageTarget-saveDialog-problem' ).val() );
this.resetSaveDialog();
this.hideSaveDialog();
mw.notify( ve.msg( 'visualeditor-notification-reported' ) );
};
/** /**
* Handle clicks on the resolve conflict button in the conflict dialog. * Handle clicks on the resolve conflict button in the conflict dialog.
* *
@ -1132,13 +1088,6 @@ ve.init.mw.ViewPageTarget.prototype.setupSaveDialog = function () {
} ); } );
this.saveDialogReviewButton.connect( this, { 'click': 'onSaveDialogReviewButtonClick' } ); this.saveDialogReviewButton.connect( this, { 'click': 'onSaveDialogReviewButtonClick' } );
this.saveDialogReviewWrongButton = new ve.ui.ButtonWidget( {
'label': ve.msg( 'visualeditor-savedialog-label-review-wrong' )
} );
this.saveDialogReviewWrongButton.connect(
this, { 'click': 'onSaveDialogReviewWrongButtonClick' }
);
this.saveDialogReviewGoodButton = new ve.ui.ButtonWidget( { this.saveDialogReviewGoodButton = new ve.ui.ButtonWidget( {
'label': ve.msg( 'visualeditor-savedialog-label-review-good' ), 'label': ve.msg( 'visualeditor-savedialog-label-review-good' ),
'flags': ['constructive'] 'flags': ['constructive']
@ -1147,12 +1096,6 @@ ve.init.mw.ViewPageTarget.prototype.setupSaveDialog = function () {
this, { 'click': 'onSaveDialogReviewGoodButtonClick' } this, { 'click': 'onSaveDialogReviewGoodButtonClick' }
); );
this.saveDialogReportButton = new ve.ui.ButtonWidget( {
'label': ve.msg( 'visualeditor-savedialog-label-report' ),
'flags': ['constructive']
} );
this.saveDialogReportButton.connect( this, { 'click': 'onSaveDialogReportButtonClick' } );
this.saveDialogResolveConflictButton = new ve.ui.ButtonWidget( { this.saveDialogResolveConflictButton = new ve.ui.ButtonWidget( {
'label': ve.msg( 'visualeditor-savedialog-label-resolve-conflict' ), 'label': ve.msg( 'visualeditor-savedialog-label-resolve-conflict' ),
'flags': ['constructive'] 'flags': ['constructive']
@ -1175,11 +1118,6 @@ ve.init.mw.ViewPageTarget.prototype.setupSaveDialog = function () {
.prepend( viewPage.saveDialogReviewGoodButton.$ ) .prepend( viewPage.saveDialogReviewGoodButton.$ )
.end() .end()
.end() .end()
.find( '.ve-init-mw-viewPageTarget-saveDialog-slide-report' )
.find( '.ve-init-mw-viewPageTarget-saveDialog-actions' )
.prepend( viewPage.saveDialogReportButton.$ )
.end()
.end()
.find( '.ve-init-mw-viewPageTarget-saveDialog-slide-conflict' ) .find( '.ve-init-mw-viewPageTarget-saveDialog-slide-conflict' )
.find( '.ve-init-mw-viewPageTarget-saveDialog-actions' ) .find( '.ve-init-mw-viewPageTarget-saveDialog-actions' )
.prepend( viewPage.saveDialogResolveConflictButton.$ ) .prepend( viewPage.saveDialogResolveConflictButton.$ )
@ -1240,27 +1178,6 @@ ve.init.mw.ViewPageTarget.prototype.setupSaveDialog = function () {
.find( '.ve-init-mw-viewPageTarget-saveDialog-watchList-label' ) .find( '.ve-init-mw-viewPageTarget-saveDialog-watchList-label' )
.html( ve.init.platform.getParsedMessage( 'watchthis' ) ) .html( ve.init.platform.getParsedMessage( 'watchthis' ) )
.end() .end()
.find( '#ve-init-mw-viewPageTarget-saveDialog-problem' )
.attr( {
'placeholder': ve.msg( 'visualeditor-problem' )
} )
.placeholder()
.on( {
'focus': function () {
$(this).parent().addClass(
've-init-mw-viewPageTarget-saveDialog-report-focused'
);
},
'blur': function () {
$(this).parent().removeClass(
've-init-mw-viewPageTarget-saveDialog-report-focused'
);
}
} )
.end()
.find( '.ve-init-mw-viewPageTarget-saveDialog-report-notice' )
.html( ve.init.platform.getParsedMessage( 'visualeditor-report-notice' ) )
.end()
.find( '.ve-init-mw-viewPageTarget-saveDialog-license' ) .find( '.ve-init-mw-viewPageTarget-saveDialog-license' )
.html( ve.init.platform.getParsedMessage( 'copyrightwarning' ) ) .html( ve.init.platform.getParsedMessage( 'copyrightwarning' ) )
.end() .end()
@ -1366,9 +1283,6 @@ ve.init.mw.ViewPageTarget.prototype.resetSaveDialog = function () {
.find( '#ve-init-mw-viewPageTarget-saveDialog-editSummary' ) .find( '#ve-init-mw-viewPageTarget-saveDialog-editSummary' )
.val( '' ) .val( '' )
.end() .end()
.find( '#ve-init-mw-viewPageTarget-saveDialog-problem' )
.val( '' )
.end()
.find( '#ve-init-mw-viewPageTarget-saveDialog-minorEdit' ) .find( '#ve-init-mw-viewPageTarget-saveDialog-minorEdit' )
.prop( 'checked', false ) .prop( 'checked', false )
.end() .end()
@ -1381,7 +1295,7 @@ ve.init.mw.ViewPageTarget.prototype.resetSaveDialog = function () {
* Swap state in the save dialog. * Swap state in the save dialog.
* *
* @method * @method
* @param {string} slide One of 'save', 'review', 'report', 'conflict' or 'nochanges' * @param {string} slide One of 'save', 'review', 'conflict' or 'nochanges'
* @param {Object} [options] * @param {Object} [options]
* @param {boolean} [options.fromHistory] Whether this swap was triggered from interaction * @param {boolean} [options.fromHistory] Whether this swap was triggered from interaction
* with the slide history (e.g. surpresses pushing of target slide in the history again). * with the slide history (e.g. surpresses pushing of target slide in the history again).
@ -1392,7 +1306,7 @@ ve.init.mw.ViewPageTarget.prototype.swapSaveDialog = function ( slide, options )
var $slide, $viewer, var $slide, $viewer,
doc = this.surface.getModel().getDocument(); doc = this.surface.getModel().getDocument();
if ( ve.indexOf( slide, [ 'save', 'review', 'report', 'conflict', 'nochanges' ] ) === -1 ) { if ( ve.indexOf( slide, [ 'save', 'review', 'conflict', 'nochanges' ] ) === -1 ) {
throw new Error( 'Unknown saveDialog slide: ' + slide ); throw new Error( 'Unknown saveDialog slide: ' + slide );
} }
@ -1412,7 +1326,6 @@ ve.init.mw.ViewPageTarget.prototype.swapSaveDialog = function ( slide, options )
// Update title to one of: // Update title to one of:
// - visualeditor-savedialog-title-save // - visualeditor-savedialog-title-save
// - visualeditor-savedialog-title-review // - visualeditor-savedialog-title-review
// - visualeditor-savedialog-title-report
// - visualeditor-savedialog-title-conflict // - visualeditor-savedialog-title-conflict
// - visualeditor-savedialog-title-nochanges // - visualeditor-savedialog-title-nochanges
.find( '.ve-init-mw-viewPageTarget-saveDialog-title' ) .find( '.ve-init-mw-viewPageTarget-saveDialog-title' )
@ -1427,7 +1340,6 @@ ve.init.mw.ViewPageTarget.prototype.swapSaveDialog = function ( slide, options )
$viewer = $slide.find( '.ve-init-mw-viewPageTarget-saveDialog-viewer' ); $viewer = $slide.find( '.ve-init-mw-viewPageTarget-saveDialog-viewer' );
if ( !$viewer.find( 'table, pre' ).length ) { if ( !$viewer.find( 'table, pre' ).length ) {
this.saveDialogReviewGoodButton.setDisabled( true ); this.saveDialogReviewGoodButton.setDisabled( true );
this.saveDialogReviewWrongButton.setDisabled( true );
this.$saveDialogLoadingIcon.show(); this.$saveDialogLoadingIcon.show();
if ( this.pageExists ) { if ( this.pageExists ) {
// Has no callback, handled via target.onShowChanges // Has no callback, handled via target.onShowChanges
@ -1452,7 +1364,7 @@ ve.init.mw.ViewPageTarget.prototype.swapSaveDialog = function ( slide, options )
// Show the target slide // Show the target slide
$slide.show(); $slide.show();
if ( slide === 'save' || slide === 'report' ) { if ( slide === 'save' ) {
setTimeout( function () { setTimeout( function () {
$slide.find( 'textarea' ).eq( 0 ).focus(); $slide.find( 'textarea' ).eq( 0 ).focus();
} ); } );

View file

@ -702,48 +702,3 @@ ve.init.mw.Target.prototype.serialize = function ( doc, callback ) {
} ); } );
return true; return true;
}; };
/**
* Send a problem report to the Parsoid API.
*
* @method
* @param {string} message
*/
ve.init.mw.Target.prototype.reportProblem = function ( message ) {
// Gather reporting information
var now = new Date(),
doc = this.surface.getModel().getDocument(),
editedData = doc.getFullData(),
store = doc.getStore(),
internalList = doc.getInternalList(),
report = {
'title': this.pageName,
'oldid': this.oldid,
'timestamp': now.getTime() + 60000 * now.getTimezoneOffset(),
'message': message,
'diff': this.diffHtml,
'originalHtml': this.originalHtml,
'originalData':
// originalHtml only has the body's HTML for now, see TODO comment in
// ve.init.mw.ViewPageTarget.prototype.setupSurface
// FIXME: need to expand this data before sending it, see bug 47319
ve.dm.converter.getDataFromDom(
ve.createDocumentFromHtml( '<body>' + this.originalHtml + '</body>' ),
store, internalList
).getData(),
'editedData': editedData,
'editedHtml': this.getHtml(
ve.dm.converter.getDomFromData( editedData, store, internalList )
),
'store': doc.data.getUsedStoreValues(),
'wiki': mw.config.get( 'wgDBname' )
};
$.post(
mw.config.get( 'wgVisualEditorConfig' ).reportProblemURL,
{ 'data': JSON.stringify( ve.copyObject( report, ve.convertDomElements ) ) },
function () {
// This space intentionally left blank
},
'text'
);
};