Page MenuHomePhabricator

Refactor duplicated code into a utility module
Open, Needs TriagePublic

Description

ext.pageTriage.defaultTagsOptions.js
Match - 2 instances

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:78,88
linkrot: {
        label: mw.msg( 'pagetriage-tags-linkrot-label' ),
        tag: 'linkrot',
        desc: mw.msg( 'pagetriage-tags-linkrot-desc' ),
        params: {
                date: param.date
        },
        position: 'top',
        dest: 'sources',
        multiple: true
},

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:381,390
linkrot: {
        label: mw.msg( 'pagetriage-tags-linkrot-label' ),
        tag: 'linkrot',
        desc: mw.msg( 'pagetriage-tags-linkrot-desc' ),
        params: {
                date: param.date
        },
        position: 'top',
        multiple: true
},

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:100,114
        multiple: true
},

morefootnotes: {
        label: mw.msg( 'pagetriage-tags-morefootnotes-label' ),
        tag: 'more footnotes',
        desc: mw.msg( 'pagetriage-tags-morefootnotes-desc' ),
        params: {
                date: param.date,
                blp: $.extend( true, {}, param.blp )
        },
        position: 'top',
        dest: 'sources',
        multiple: true
},

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:412,425
        multiple: true
},

morefootnotes: {
        label: mw.msg( 'pagetriage-tags-morefootnotes-label' ),
        tag: 'more footnotes',
        desc: mw.msg( 'pagetriage-tags-morefootnotes-desc' ),
        params: {
                date: param.date,
                blp: $.extend( true, {}, param.blp )
        },
        position: 'top',
        multiple: true
},

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:113,126
        multiple: true
},

refimprove: {
        label: mw.msg( 'pagetriage-tags-refimprove-label' ),
        tag: 'refimprove',
        desc: mw.msg( 'pagetriage-tags-refimprove-desc' ),
        params: {
                date: param.date
        },
        position: 'top',
        dest: 'sources',
        multiple: true
},

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:424,436
        multiple: true
},

refimprove: {
        label: mw.msg( 'pagetriage-tags-refimprove-label' ),
        tag: 'refimprove',
        desc: mw.msg( 'pagetriage-tags-refimprove-desc' ),
        params: {
                date: param.date
        },
        position: 'top',
        multiple: true
},

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:125,138
        multiple: true
},

unreferenced: {
        label: mw.msg( 'pagetriage-tags-unreferenced-label' ),
        tag: 'unreferenced',
        desc: mw.msg( 'pagetriage-tags-unreferenced-desc' ),
        params: {
                date: param.date
        },
        position: 'top',
        dest: 'sources',
        multiple: true
},

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:457,469
        multiple: true
},

unreferenced: {
        label: mw.msg( 'pagetriage-tags-unreferenced-label' ),
        tag: 'unreferenced',
        desc: mw.msg( 'pagetriage-tags-unreferenced-desc' ),
        params: {
                date: param.date
        },
        position: 'top',
        multiple: true
},

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:150,160
uncategorised: {
        label: mw.msg( 'pagetriage-tags-uncategorised-label' ),
        tag: 'uncategorised',
        desc: mw.msg( 'pagetriage-tags-uncategorised-desc' ),
        params: {
                date: param.date
        },
        position: 'categories',
        dest: 'metadata',
        multiple: false
}

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:283,292
uncategorised: {
        label: mw.msg( 'pagetriage-tags-uncategorised-label' ),
        tag: 'uncategorised',
        desc: mw.msg( 'pagetriage-tags-uncategorised-desc' ),
        params: {
                date: param.date
        },
        position: 'categories',
        multiple: false
}

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:87,101
        multiple: true
},

copyedit: {
        label: mw.msg( 'pagetriage-tags-copyedit-label' ),
        tag: 'copy edit',
        desc: mw.msg( 'pagetriage-tags-copyedit-desc' ),
        params: {
                date: param.date,
                'for': $.extend( true, {}, param.for )
        },
        position: 'top',
        dest: 'cleanup',
        multiple: true
},

./modules/ext.pageTriage.defaultTagsOptions/ext.pageTriage.defaultTagsOptions.js:176,189
        multiple: true
},

copyedit: {
        label: mw.msg( 'pagetriage-tags-copyedit-label' ),
        tag: 'copy edit',
        desc: mw.msg( 'pagetriage-tags-copyedit-desc' ),
        params: {
                date: param.date,
                'for': $.extend( true, {}, param.for )
        },
        position: 'top',
        multiple: true
},

above done in 894242

ext.pageTriage.listControlNav.js
Match - 2 instances

./modules/ext.pageTriage.views.list/ext.pageTriage.listControlNav.js:16,27
if ( mw.config.get( 'wgPageTriageStickyControlNav' ) ) {
	this.setWaypoint(); // create scrolling waypoint

	// reset the width when the window is resized
	$( window ).on( 'resize', _.debounce( that.setWidth, 80 ) );

	// when the list view is updated, refresh the stats and see if
	// we need to change the float state of the navbar
	this.eventBus.bind( 'articleListChange', function () {
		that.setPosition();
	} );
}

./modules/ext.pageTriage.views.list/ext.pageTriage.listStatsNav.js:13,24
if ( mw.config.get( 'wgPageTriageStickyStatsNav' ) ) {
	this.setWaypoint(); // create scrolling waypoint

	// reset the width when the window is resized
	$( window ).on( 'resize', _.debounce( that.setWidth, 80 ) );

	// when the list view is updated, see if we need to change the
	// float state of the navbar
	this.eventBus.bind( 'articleListChange', function () {
		that.setPosition();
	} );
}
ext.pageTriage.listView.js
Match - 2 instances

./modules/ext.pageTriage.views.list/ext.pageTriage.listView.js:78,89
const lastArticle = articles.last( 1 );
if ( 0 in lastArticle ) {
	articles.apiParams.offset = lastArticle[ 0 ].attributes.creation_date_utc;
	articles.apiParams.pageoffset = lastArticle[ 0 ].attributes.pageid;
} else {
	articles.apiParams.offset = 0;
	articles.apiParams.pageoffset = 0;
}

const that = this;
// fetch more articles. we use a timeout to prevent double-loading.
setTimeout(

./modules/ext.pageTriage.views.list/ext.pageTriage.listView.js:127,137
const lastArticle = articles.last( 1 );
if ( 0 in lastArticle ) {
	articles.apiParams.offset = lastArticle[ 0 ].attributes.creation_date_utc;
	articles.apiParams.pageoffset = lastArticle[ 0 ].attributes.pageid;
} else {
	articles.apiParams.offset = 0;
	articles.apiParams.pageoffset = 0;
}

const that = this;
articles.fetch( {
ToolbarView.js
Match - 2 instances

./modules/ext.pageTriage.views.toolbar/ToolbarView.js:170,186
minimize: function ( savePref ) {
	const dir = $( 'body' ).css( 'direction' ),
		toolbarPosCss = dir === 'ltr' ?
			{
				left: 'auto',
				right: 0
			} :
			// For RTL, flip
			{
				left: 0,
				right: 'auto'
			};

	// hide the Open Page Curation link in the left menu
	$( this.openCurationToolbarSelector ).hide();
	// close any open tools by triggering showTool with empty tool param
	eventBus.trigger( 'showTool', '' );

./modules/ext.pageTriage.views.toolbar/ToolbarView.js:201,217
maximize: function ( savePref ) {
	const dir = $( 'body' ).css( 'direction' ),
		toolbarPosCss = dir === 'ltr' ?
			{
				left: 'auto',
				right: 0
			} :
			// For RTL, flip
			{
				left: 0,
				right: 'auto'
			};

	// hide the Open Page Curation link in the left menu
	$( this.openCurationToolbarSelector ).hide();
	// show the entire toolbar, in case it is hidden
	$( '#mwe-pt-toolbar' ).show();
delete.js
Match - 2 instances

./modules/ext.pageTriage.views.toolbar/delete.js:55,58
getLogPageTitle: function ( prefix ) {
	const date = new DateWrapper();
	return prefix + '/Log/' + date.getYear() + ' ' + date.getMonth() + ' ' + date.getDate();
}

./modules/ext.pageTriage.views.toolbar/delete.js:74,77
getLogPageTitle: function ( prefix ) {
	const date = new DateWrapper();
	return prefix + '/Log/' + date.getYear() + ' ' + date.getMonth() + ' ' + date.getDate();
}

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.views.toolbar/delete.js:98,103
initialize: function ( options ) {
	this.eventBus = options.eventBus;
	this.moduleConfig = options.moduleConfig || {};
	this.model.on( 'change', this.setIcon, this );
	this.reset();
},

./modules/ext.pageTriage.views.toolbar/mark.js:13,17
initialize: function ( options ) {
	this.eventBus = options.eventBus;
	this.moduleConfig = options.moduleConfig || {};
	this.model.on( 'change', this.setIcon, this );
	this.model.on( 'change', this.changeTooltip, this );

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.views.toolbar/delete.js:162,165
$( '#mwe-pt-delete-categories' ).find( 'div' ).each( function () {
	const cat = $( $( this ).html() ).attr( 'cat' );
	$( this ).on( 'click', function () {
		that.visibleParamsFormCount = 0;

./modules/ext.pageTriage.views.toolbar/tags.js:123,127
$( '#mwe-pt-categories' ).find( 'div' ).each( function () {
	const cat = $( $( this ).html() ).attr( 'cat' );
	$( this ).on( 'click',
		function () {
			$( this ).find( 'a' ).trigger( 'blur' );

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.views.toolbar/delete.js:444,472
const tag = this.selectedTag[ key ];

// no params, don't show the link
if ( $.isEmptyObject( tag.params ) ) {
	return;
}

let allParamsHidden = true,
	text = 'add';
// check if there is non-hidden param
for ( const param in tag.params ) {
	if ( tag.params[ param ].type !== 'hidden' ) {
		allParamsHidden = false;
		// see if any of the parameters have been filled out
		if ( tag.params[ param ].value ) {
			text = 'edit';
		}
	}
}
// all params are hidden, don't show the link
if ( allParamsHidden === true ) {
	return;
}

const link = mw.html.element(
	'a',
	{
		href: '#',
		id: 'mwe-pt-delete-params-' + key

./modules/ext.pageTriage.views.toolbar/tags.js:321,347
const tag = this.selectedTag[ cat ][ key ];
// no params, don't show the link
if ( $.isEmptyObject( tag.params ) ) {
	return;
}

let allParamsHidden = true,
	text = 'add';
// check if there is non-hidden param
for ( const param in tag.params ) {
	if ( tag.params[ param ].type !== 'hidden' ) {
		allParamsHidden = false;
		// see if any of the parameters have been filled out
		if ( tag.params[ param ].value ) {
			text = 'edit';
		}
	}
}
// all params are hidden, don't show the link
if ( allParamsHidden === true ) {
	return;
}

// Construct the link that activates the params form
const link = mw.html.element(
	'a',
	{ href: '#', id: 'mwe-pt-tag-params-' + key },

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.views.toolbar/delete.js:675,687
for ( const param in tagObj.params ) {
	if (
		tagObj.params[ param ].input === 'required' &&
		!tagObj.params[ param ].value
	) {
		that.handleError(
			mw.msg(
				'pagetriage-tags-param-missing-required',
				tagObj.tag
			) );
		return;
	}
}

./modules/ext.pageTriage.views.toolbar/tags.js:537,542
for ( const param in tagObj.params ) {
	if ( tagObj.params[ param ].input === 'required' && !tagObj.params[ param ].value ) {
		that.handleError( mw.msg( 'pagetriage-tags-param-missing-required', tagObj.tag ) );
		return;
	}
}

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.views.toolbar/delete.js:1121,1131
buildHTML: function ( name, obj, key ) {
	let html = '';

	switch ( obj.type ) {
		case 'hidden':
			html += mw.html.element(
				'input',
				{
					type: 'hidden',
					value: ( obj.value ) ? obj.value : '',
					id: 'mwe-pt-delete-params-' + key + '-' + name

./modules/ext.pageTriage.views.toolbar/tags.js:736,746
buildHTML: function ( name, obj, key ) {
	let html = '';

	switch ( obj.type ) {
		case 'hidden':
			html += mw.html.element(
				'input',
				{
					type: 'hidden',
					value: ( obj.value ) ? obj.value : '',
					id: 'mwe-pt-tag-params-' + key + '-' + name

------------------------------------------------------------

Match - 2 instances

./modules/ext.pageTriage.views.toolbar/delete.js:1150,1158
case 'text':
	/* falls through */
default:
	html += mw.html.escape( obj.label ) + ' ';
	html += mw.html.element(
		'input',
		{
			type: 'text',
			value: ( obj.value ) ? obj.value : '',

./modules/ext.pageTriage.views.toolbar/tags.js:789,797
case 'text':
	/* falls through */
default:
	html += mw.html.escape( obj.label ) + ' ';
	html += mw.html.element(
		'input',
		{
			type: 'text',
			value: obj.value || '',

Event Timeline

Change 894242 had a related patch set uploaded (by MPGuy2824; author: MPGuy2824):

[mediawiki/extensions/PageTriage@master] Refactor duplicate code in ext.pageTriage.defaultTagsOptions.js

https://gerrit.wikimedia.org/r/894242

Change 894242 merged by jenkins-bot:

[mediawiki/extensions/PageTriage@master] Refactor duplicate code in ext.pageTriage.defaultTagsOptions.js

https://gerrit.wikimedia.org/r/894242

Jdlrobson claimed this task.

Thank you!

MPGuy2824 updated the task description. (Show Details)
MPGuy2824 subscribed.

Reopening as 894242 only covered one file.