Merge "dm.metaitems: Turn grouped metas into variadic ones"

This commit is contained in:
jenkins-bot 2017-04-11 23:13:57 +00:00 committed by Gerrit Code Review
commit b278907870
13 changed files with 206 additions and 325 deletions

View file

@ -1537,19 +1537,17 @@
"modules/ve-mw/dm/metaitems/ve.dm.MWDefaultSortMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWDefaultSortMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWHiddenCategoryMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWHiddenCategoryMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWIndexDisableMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWFlaggedMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWIndexForceMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWIndexMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWNewSectionEditMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWTOCMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWLanguageMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWLanguageMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWNewSectionEditDisableMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWNewSectionEditForceMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWNoContentConvertMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWNoContentConvertMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWNoEditSectionMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWNoEditSectionMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWNoGalleryMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWNoGalleryMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWNoTitleConvertMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWNoTitleConvertMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWRedirectMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWRedirectMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWStaticRedirectMetaItem.js", "modules/ve-mw/dm/metaitems/ve.dm.MWStaticRedirectMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWTOCDisableMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWTOCForceMetaItem.js",
"modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js", "modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js",
"modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js", "modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js",
"modules/ve-mw/ui/widgets/ve.ui.MWCategoryItemWidget.js", "modules/ve-mw/ui/widgets/ve.ui.MWCategoryItemWidget.js",

View file

@ -0,0 +1,57 @@
/*!
* VisualEditor DataModel MWFlaggedMetaItem class.
*
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel flagged meta item abstract (for pairs of meta items).
*
* @class
* @abstract
* @extends ve.dm.MetaItem
* @constructor
* @param {Object} [element] Reference to element in meta-linmod
*/
ve.dm.MWFlaggedMetaItem = function VeDmMWFlaggedMetaItem() {
// Parent constructor
ve.dm.MWFlaggedMetaItem.super.apply( this, arguments );
};
/* Inheritance */
OO.inheritClass( ve.dm.MWFlaggedMetaItem, ve.dm.MetaItem );
/* Static Properties */
/* No name/group/matchRdfaTypes, as this is not a valid meta item, just an abstract class. */
ve.dm.MWFlaggedMetaItem.static.matchTagNames = [ 'meta' ];
ve.dm.MWFlaggedMetaItem.static.toDataElement = function ( domElements ) {
var type = domElements[ 0 ].getAttribute( 'property' );
if ( !type || this.matchRdfaTypes.indexOf( type ) === -1 ) {
// Fallback to first match if somehow unset
type = this.matchRdfaTypes[ 0 ];
}
return { type: this.name, attributes: { type: type } };
};
ve.dm.MWFlaggedMetaItem.static.toDomElements = function ( dataElement, doc ) {
var meta = doc.createElement( 'meta' ),
type = OO.getProp( dataElement, 'attributes', 'property' );
if ( !type || this.matchRdfaTypes.indexOf( type ) === -1 ) {
// Fallback to first item if somehow unset
type = this.matchRdfaTypes[ 0 ];
}
meta.setAttribute( 'property', type );
return [ meta ];
};
/* No registration, as this is not a valid meta item, just an abstract class. */

View file

@ -1,47 +0,0 @@
/*!
* VisualEditor DataModel MWIndexDisableMetaItem class.
*
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel disable index meta item (for __NOINDEX__).
*
* @class
* @extends ve.dm.MetaItem
* @constructor
* @param {Object} element Reference to element in meta-linmod
*/
ve.dm.MWIndexDisableMetaItem = function VeDmMWIndexDisableMetaItem() {
// Parent constructor
ve.dm.MWIndexDisableMetaItem.super.apply( this, arguments );
};
/* Inheritance */
OO.inheritClass( ve.dm.MWIndexDisableMetaItem, ve.dm.MetaItem );
/* Static Properties */
ve.dm.MWIndexDisableMetaItem.static.name = 'mwIndexDisable';
ve.dm.MWIndexDisableMetaItem.static.group = 'mwIndex';
ve.dm.MWIndexDisableMetaItem.static.matchTagNames = [ 'meta' ];
ve.dm.MWIndexDisableMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/noindex' ];
ve.dm.MWIndexDisableMetaItem.static.toDataElement = function () {
return { type: this.name };
};
ve.dm.MWIndexDisableMetaItem.static.toDomElements = function ( dataElement, doc ) {
var meta = doc.createElement( 'meta' );
meta.setAttribute( 'property', 'mw:PageProp/noindex' );
return [ meta ];
};
/* Registration */
ve.dm.modelRegistry.register( ve.dm.MWIndexDisableMetaItem );

View file

@ -1,47 +0,0 @@
/*!
* VisualEditor DataModel MWIndexForceMetaItem class.
*
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel force index meta item (for __INDEX__).
*
* @class
* @extends ve.dm.MetaItem
* @constructor
* @param {Object} element Reference to element in meta-linmod
*/
ve.dm.MWIndexForceMetaItem = function VeDmMWIndexForceMetaItem() {
// Parent constructor
ve.dm.MWIndexForceMetaItem.super.apply( this, arguments );
};
/* Inheritance */
OO.inheritClass( ve.dm.MWIndexForceMetaItem, ve.dm.MetaItem );
/* Static Properties */
ve.dm.MWIndexForceMetaItem.static.name = 'mwIndexForce';
ve.dm.MWIndexForceMetaItem.static.group = 'mwIndex';
ve.dm.MWIndexForceMetaItem.static.matchTagNames = [ 'meta' ];
ve.dm.MWIndexForceMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/index' ];
ve.dm.MWIndexForceMetaItem.static.toDataElement = function () {
return { type: this.name };
};
ve.dm.MWIndexForceMetaItem.static.toDomElements = function ( dataElement, doc ) {
var meta = doc.createElement( 'meta' );
meta.setAttribute( 'property', 'mw:PageProp/index' );
return [ meta ];
};
/* Registration */
ve.dm.modelRegistry.register( ve.dm.MWIndexForceMetaItem );

View file

@ -0,0 +1,35 @@
/*!
* VisualEditor DataModel MWIndexMetaItem class.
*
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel index meta item (for __INDEX__ and __NOINDEX__).
*
* @class
* @extends ve.dm.MWFlaggedMetaItem
* @constructor
* @param {Object} [element] Reference to element in meta-linmod
*/
ve.dm.MWIndexMetaItem = function VeDmMWIndexMetaItem() {
// Parent constructor
ve.dm.MWIndexMetaItem.super.apply( this, arguments );
};
/* Inheritance */
OO.inheritClass( ve.dm.MWIndexMetaItem, ve.dm.MWFlaggedMetaItem );
/* Static Properties */
ve.dm.MWIndexMetaItem.static.name = 'mwIndex';
ve.dm.MWIndexMetaItem.static.group = 'mwIndex';
ve.dm.MWIndexMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/index', 'mw:PageProp/noindex' ];
/* Registration */
ve.dm.modelRegistry.register( ve.dm.MWIndexMetaItem );

View file

@ -1,47 +0,0 @@
/*!
* VisualEditor DataModel MWNewSectionEditDisableMetaItem class.
*
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel disable new section edit link meta item (for __NONEWSECTIONLINK__).
*
* @class
* @extends ve.dm.MetaItem
* @constructor
* @param {Object} element Reference to element in meta-linmod
*/
ve.dm.MWNewSectionEditDisableMetaItem = function VeDmMWNewSectionEditDisableMetaItem() {
// Parent constructor
ve.dm.MWNewSectionEditDisableMetaItem.super.apply( this, arguments );
};
/* Inheritance */
OO.inheritClass( ve.dm.MWNewSectionEditDisableMetaItem, ve.dm.MetaItem );
/* Static Properties */
ve.dm.MWNewSectionEditDisableMetaItem.static.name = 'mwNewSectionEditDisable';
ve.dm.MWNewSectionEditDisableMetaItem.static.group = 'mwNewSectionEdit';
ve.dm.MWNewSectionEditDisableMetaItem.static.matchTagNames = [ 'meta' ];
ve.dm.MWNewSectionEditDisableMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/nonewsectionlink' ];
ve.dm.MWNewSectionEditDisableMetaItem.static.toDataElement = function () {
return { type: this.name };
};
ve.dm.MWNewSectionEditDisableMetaItem.static.toDomElements = function ( dataElement, doc ) {
var meta = doc.createElement( 'meta' );
meta.setAttribute( 'property', 'mw:PageProp/nonewsectionlink' );
return [ meta ];
};
/* Registration */
ve.dm.modelRegistry.register( ve.dm.MWNewSectionEditDisableMetaItem );

View file

@ -1,47 +0,0 @@
/*!
* VisualEditor DataModel MWNewSectionEditForceMetaItem class.
*
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel force new section edit link meta item (for __NEWSECTIONLINK__).
*
* @class
* @extends ve.dm.MetaItem
* @constructor
* @param {Object} element Reference to element in meta-linmod
*/
ve.dm.MWNewSectionEditForceMetaItem = function VeDmMWNewSectionEditForceMetaItem() {
// Parent constructor
ve.dm.MWNewSectionEditForceMetaItem.super.apply( this, arguments );
};
/* Inheritance */
OO.inheritClass( ve.dm.MWNewSectionEditForceMetaItem, ve.dm.MetaItem );
/* Static Properties */
ve.dm.MWNewSectionEditForceMetaItem.static.name = 'mwNewSectionEditForce';
ve.dm.MWNewSectionEditForceMetaItem.static.group = 'mwNewSectionEdit';
ve.dm.MWNewSectionEditForceMetaItem.static.matchTagNames = [ 'meta' ];
ve.dm.MWNewSectionEditForceMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/newsectionlink' ];
ve.dm.MWNewSectionEditForceMetaItem.static.toDataElement = function () {
return { type: this.name };
};
ve.dm.MWNewSectionEditForceMetaItem.static.toDomElements = function ( dataElement, doc ) {
var meta = doc.createElement( 'meta' );
meta.setAttribute( 'property', 'mw:PageProp/newsectionlink' );
return [ meta ];
};
/* Registration */
ve.dm.modelRegistry.register( ve.dm.MWNewSectionEditForceMetaItem );

View file

@ -0,0 +1,35 @@
/*!
* VisualEditor DataModel MWNewSectionEditMetaItem class.
*
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel new section edit link meta item (for __NEWSECTIONLINK__ and __NONEWSECTIONLINK__).
*
* @class
* @extends ve.dm.MWFlaggedMetaItem
* @constructor
* @param {Object} [element] Reference to element in meta-linmod
*/
ve.dm.MWNewSectionEditMetaItem = function VeDmMWNewSectionEditMetaItem() {
// Parent constructor
ve.dm.MWNewSectionEditMetaItem.super.apply( this, arguments );
};
/* Inheritance */
OO.inheritClass( ve.dm.MWNewSectionEditMetaItem, ve.dm.MWFlaggedMetaItem );
/* Static Properties */
ve.dm.MWNewSectionEditMetaItem.static.name = 'mwNewSectionEdit';
ve.dm.MWNewSectionEditMetaItem.static.group = 'mwNewSectionEdit';
ve.dm.MWNewSectionEditMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/newsectionlink', 'mw:PageProp/nonewsectionlink' ];
/* Registration */
ve.dm.modelRegistry.register( ve.dm.MWNewSectionEditMetaItem );

View file

@ -1,43 +0,0 @@
/*!
* VisualEditor DataModel MWTOCDisableMetaItem class.
*
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel disable TOC meta item.
*
* @class
* @extends ve.dm.MetaItem
* @constructor
* @param {Object} element Reference to element in meta-linmod
*/
ve.dm.MWTOCDisableMetaItem = function VeDmMWTOCDisableMetaItem() {
// Parent constructor
ve.dm.MWTOCDisableMetaItem.super.apply( this, arguments );
};
/* Inheritance */
OO.inheritClass( ve.dm.MWTOCDisableMetaItem, ve.dm.MetaItem );
/* Static Properties */
ve.dm.MWTOCDisableMetaItem.static.name = 'mwTOCDisable';
ve.dm.MWTOCDisableMetaItem.static.group = 'mwTOC';
ve.dm.MWTOCDisableMetaItem.static.matchTagNames = [ 'meta' ];
ve.dm.MWTOCDisableMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/notoc' ];
ve.dm.MWTOCDisableMetaItem.static.toDomElements = function ( dataElement, doc ) {
var meta = doc.createElement( 'meta' );
meta.setAttribute( 'property', 'mw:PageProp/notoc' );
return [ meta ];
};
/* Registration */
ve.dm.modelRegistry.register( ve.dm.MWTOCDisableMetaItem );

View file

@ -1,43 +0,0 @@
/*!
* VisualEditor DataModel MWTOCForceMetaItem class.
*
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel force TOC meta item.
*
* @class
* @extends ve.dm.MetaItem
* @constructor
* @param {Object} element Reference to element in meta-linmod
*/
ve.dm.MWTOCForceMetaItem = function VeDmMWTOCForceMetaItem() {
// Parent constructor
ve.dm.MWTOCForceMetaItem.super.apply( this, arguments );
};
/* Inheritance */
OO.inheritClass( ve.dm.MWTOCForceMetaItem, ve.dm.MetaItem );
/* Static Properties */
ve.dm.MWTOCForceMetaItem.static.name = 'mwTOCForce';
ve.dm.MWTOCForceMetaItem.static.group = 'mwTOC';
ve.dm.MWTOCForceMetaItem.static.matchTagNames = [ 'meta' ];
ve.dm.MWTOCForceMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/forcetoc' ];
ve.dm.MWTOCForceMetaItem.static.toDomElements = function ( dataElement, doc ) {
var meta = doc.createElement( 'meta' );
meta.setAttribute( 'property', 'mw:PageProp/forcetoc' );
return [ meta ];
};
/* Registration */
ve.dm.modelRegistry.register( ve.dm.MWTOCForceMetaItem );

View file

@ -0,0 +1,35 @@
/*!
* VisualEditor DataModel MWTOCDisableMetaItem class.
*
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel TOC meta item (for __FORCETOC__ and __NOTOC__).
*
* @class
* @extends ve.dm.MWFlaggedMetaItem
* @constructor
* @param {Object} element Reference to element in meta-linmod
*/
ve.dm.MWTOCMetaItem = function VeDmMWTOCMetaItem() {
// Parent constructor
ve.dm.MWTOCMetaItem.super.apply( this, arguments );
};
/* Inheritance */
OO.inheritClass( ve.dm.MWTOCMetaItem, ve.dm.MWFlaggedMetaItem );
/* Static Properties */
ve.dm.MWTOCMetaItem.static.name = 'mwTOC';
ve.dm.MWTOCMetaItem.static.group = 'mwTOC';
ve.dm.MWTOCMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/forcetoc', 'mw:PageProp/notoc' ];
/* Registration */
ve.dm.modelRegistry.register( ve.dm.MWTOCMetaItem );

View file

@ -39,7 +39,7 @@ ve.ui.MWAdvancedSettingsPage = function VeUiMWAdvancedSettingsPage( name, config
new OO.ui.ButtonSelectWidget() new OO.ui.ButtonSelectWidget()
.addItems( [ .addItems( [
new OO.ui.ButtonOptionWidget( { new OO.ui.ButtonOptionWidget( {
data: 'mwIndexForce', data: 'mw:PageProp/index',
label: ve.msg( 'visualeditor-dialog-meta-settings-index-force' ) label: ve.msg( 'visualeditor-dialog-meta-settings-index-force' )
} ), } ),
new OO.ui.ButtonOptionWidget( { new OO.ui.ButtonOptionWidget( {
@ -47,7 +47,7 @@ ve.ui.MWAdvancedSettingsPage = function VeUiMWAdvancedSettingsPage( name, config
label: ve.msg( 'visualeditor-dialog-meta-settings-index-default' ) label: ve.msg( 'visualeditor-dialog-meta-settings-index-default' )
} ), } ),
new OO.ui.ButtonOptionWidget( { new OO.ui.ButtonOptionWidget( {
data: 'mwIndexDisable', data: 'mw:PageProp/noindex',
label: ve.msg( 'visualeditor-dialog-meta-settings-index-disable' ) label: ve.msg( 'visualeditor-dialog-meta-settings-index-disable' )
} ) } )
] ) ] )
@ -65,7 +65,7 @@ ve.ui.MWAdvancedSettingsPage = function VeUiMWAdvancedSettingsPage( name, config
new OO.ui.ButtonSelectWidget() new OO.ui.ButtonSelectWidget()
.addItems( [ .addItems( [
new OO.ui.ButtonOptionWidget( { new OO.ui.ButtonOptionWidget( {
data: 'mwNewSectionEditForce', data: 'mw:PageProp/newsectionlink',
label: ve.msg( 'visualeditor-dialog-meta-settings-newsectioneditlink-force' ) label: ve.msg( 'visualeditor-dialog-meta-settings-newsectioneditlink-force' )
} ), } ),
new OO.ui.ButtonOptionWidget( { new OO.ui.ButtonOptionWidget( {
@ -73,7 +73,7 @@ ve.ui.MWAdvancedSettingsPage = function VeUiMWAdvancedSettingsPage( name, config
label: ve.msg( 'visualeditor-dialog-meta-settings-newsectioneditlink-default' ) label: ve.msg( 'visualeditor-dialog-meta-settings-newsectioneditlink-default' )
} ), } ),
new OO.ui.ButtonOptionWidget( { new OO.ui.ButtonOptionWidget( {
data: 'mwNewSectionEditDisable', data: 'mw:PageProp/nonewsectionlink',
label: ve.msg( 'visualeditor-dialog-meta-settings-newsectioneditlink-disable' ) label: ve.msg( 'visualeditor-dialog-meta-settings-newsectioneditlink-disable' )
} ) } )
] ) ] )
@ -207,14 +207,14 @@ ve.ui.MWAdvancedSettingsPage.prototype.setup = function ( metaList ) {
// Indexing items // Indexing items
indexingField = this.indexing.getField(); indexingField = this.indexing.getField();
indexingOption = this.getMetaItem( 'mwIndex' ); indexingOption = this.getMetaItem( 'mwIndex' );
indexingType = indexingOption && indexingOption.element.type || 'default'; indexingType = indexingOption.getAttribute( 'property' ) || 'default';
indexingField.selectItemByData( indexingType ); indexingField.selectItemByData( indexingType );
this.indexingOptionTouched = false; this.indexingOptionTouched = false;
// New section edit link items // New section edit link items
newSectionEditField = this.newEditSectionLink.getField(); newSectionEditField = this.newEditSectionLink.getField();
newSectionEditLinkOption = this.getMetaItem( 'mwNewSectionEdit' ); newSectionEditLinkOption = this.getMetaItem( 'mwNewSectionEdit' );
newSectionEditLinkType = newSectionEditLinkOption && newSectionEditLinkOption.element.type || 'default'; newSectionEditLinkType = newSectionEditLinkOption.getAttribute( 'property' ) || 'default';
newSectionEditField.selectItemByData( newSectionEditLinkType ); newSectionEditField.selectItemByData( newSectionEditLinkType );
this.newSectionEditLinkOptionTouched = false; this.newSectionEditLinkOptionTouched = false;
@ -240,9 +240,9 @@ ve.ui.MWAdvancedSettingsPage.prototype.setup = function ( metaList ) {
* @param {Object} [data] Dialog tear down data * @param {Object} [data] Dialog tear down data
*/ */
ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) { ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
var currentIndexingItem, newIndexingData, var currentIndexingItem, newIndexingData, newIndexingItem,
currentNewSectionEditLinkItem, newNewSectionEditLinkOptionData, currentNewSectionEditLinkItem, newNewSectionEditLinkData, newNewSectionEditLinkItem,
currentDisplayTitleItem, newDisplayTitle, newDisplayTitleItemData, currentDisplayTitleItem, newDisplayTitle, newDisplayTitleItem,
advancedSettingsPage = this; advancedSettingsPage = this;
// Data initialization // Data initialization
@ -262,14 +262,13 @@ ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
currentIndexingItem.remove(); currentIndexingItem.remove();
} }
} else { } else {
newIndexingItem = { type: 'mwIndex', attributes: { property: newIndexingData.data } };
if ( !currentIndexingItem ) { if ( !currentIndexingItem ) {
this.metaList.insertMeta( { type: newIndexingData.data } ); this.metaList.insertMeta( newIndexingItem );
} else if ( currentIndexingItem.element.type !== newIndexingData.data ) { } else if ( currentIndexingItem.getAttribute( 'property' ) !== newIndexingData.data ) {
currentIndexingItem.replaceWith( currentIndexingItem.replaceWith(
ve.extendObject( true, {}, ve.extendObject( true, {}, currentIndexingItem.getElement(), newIndexingItem )
currentIndexingItem.getElement(),
{ type: newIndexingData.data }
)
); );
} }
} }
@ -277,23 +276,22 @@ ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
// New section edit link items // New section edit link items
currentNewSectionEditLinkItem = this.getMetaItem( 'mwNewSectionEdit' ); currentNewSectionEditLinkItem = this.getMetaItem( 'mwNewSectionEdit' );
newNewSectionEditLinkOptionData = this.newEditSectionLink.getField().getSelectedItem(); newNewSectionEditLinkData = this.newEditSectionLink.getField().getSelectedItem();
// Alter the new section edit option flag iff it's been touched & is actually different // Alter the new section edit option flag iff it's been touched & is actually different
if ( this.newSectionEditLinkOptionTouched ) { if ( this.newSectionEditLinkOptionTouched ) {
if ( newNewSectionEditLinkOptionData.data === 'default' ) { if ( newNewSectionEditLinkData.data === 'default' ) {
if ( currentNewSectionEditLinkItem ) { if ( currentNewSectionEditLinkItem ) {
currentNewSectionEditLinkItem.remove(); currentNewSectionEditLinkItem.remove();
} }
} else { } else {
newNewSectionEditLinkItem = { type: 'mwNewSectionEdit', attributes: { property: newNewSectionEditLinkData.data } };
if ( !currentNewSectionEditLinkItem ) { if ( !currentNewSectionEditLinkItem ) {
this.metaList.insertMeta( { type: newNewSectionEditLinkOptionData.data } ); this.metaList.insertMeta( newNewSectionEditLinkItem );
} else if ( currentNewSectionEditLinkItem.element.type !== newNewSectionEditLinkOptionData.data ) { } else if ( currentNewSectionEditLinkItem.getAttribute( 'property' ) !== newNewSectionEditLinkData.data ) {
currentNewSectionEditLinkItem.replaceWith( currentNewSectionEditLinkItem.replaceWith(
ve.extendObject( true, {}, ve.extendObject( true, {}, currentNewSectionEditLinkItem.getElement(), newNewSectionEditLinkItem )
currentNewSectionEditLinkItem.getElement(),
{ type: newNewSectionEditLinkOptionData.data }
)
); );
} }
} }
@ -305,7 +303,7 @@ ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
if ( newDisplayTitle === mw.Title.newFromText( mw.config.get( 'wgPageName' ) ).getPrefixedText() ) { if ( newDisplayTitle === mw.Title.newFromText( mw.config.get( 'wgPageName' ) ).getPrefixedText() ) {
newDisplayTitle = ''; newDisplayTitle = '';
} }
newDisplayTitleItemData = { type: 'mwDisplayTitle', attributes: { content: newDisplayTitle } }; newDisplayTitleItem = { type: 'mwDisplayTitle', attributes: { content: newDisplayTitle } };
// Alter the display title flag iff it's been touched & is actually different // Alter the display title flag iff it's been touched & is actually different
if ( this.displayTitleTouched ) { if ( this.displayTitleTouched ) {
@ -316,7 +314,7 @@ ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
currentDisplayTitleItem.replaceWith( currentDisplayTitleItem.replaceWith(
ve.extendObject( true, {}, ve.extendObject( true, {},
currentDisplayTitleItem.getElement(), currentDisplayTitleItem.getElement(),
newDisplayTitleItemData newDisplayTitleItem
) ); ) );
} }
} else { } else {
@ -327,7 +325,7 @@ ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
if ( newDisplayTitle ) { if ( newDisplayTitle ) {
// There's no existing display title but there is a new one, so create // There's no existing display title but there is a new one, so create
// HACK: Putting this at index 0, offset 0 so that it works bug 61862 // HACK: Putting this at index 0, offset 0 so that it works bug 61862
this.metaList.insertMeta( newDisplayTitleItemData, 0, 0 ); this.metaList.insertMeta( newDisplayTitleItem, 0, 0 );
} }
} }
} }

View file

@ -43,7 +43,7 @@ ve.ui.MWSettingsPage = function VeUiMWSettingsPage( name, config ) {
} ) } )
.addItems( [ .addItems( [
new OO.ui.ButtonOptionWidget( { new OO.ui.ButtonOptionWidget( {
data: 'mwTOCForce', data: 'mw:PageProp/forcetoc',
label: ve.msg( 'visualeditor-dialog-meta-settings-toc-force' ) label: ve.msg( 'visualeditor-dialog-meta-settings-toc-force' )
} ), } ),
new OO.ui.ButtonOptionWidget( { new OO.ui.ButtonOptionWidget( {
@ -51,7 +51,7 @@ ve.ui.MWSettingsPage = function VeUiMWSettingsPage( name, config ) {
label: ve.msg( 'visualeditor-dialog-meta-settings-toc-default' ) label: ve.msg( 'visualeditor-dialog-meta-settings-toc-default' )
} ), } ),
new OO.ui.ButtonOptionWidget( { new OO.ui.ButtonOptionWidget( {
data: 'mwTOCDisable', data: 'mw:PageProp/notoc',
label: ve.msg( 'visualeditor-dialog-meta-settings-toc-disable' ) label: ve.msg( 'visualeditor-dialog-meta-settings-toc-disable' )
} ) } )
] ) ] )
@ -264,8 +264,7 @@ ve.ui.MWSettingsPage.prototype.setup = function ( metaList ) {
// Table of Contents items // Table of Contents items
tableOfContentsMetaItem = this.getMetaItem( 'mwTOC' ); tableOfContentsMetaItem = this.getMetaItem( 'mwTOC' );
tableOfContentsField = this.tableOfContents.getField(); tableOfContentsField = this.tableOfContents.getField();
tableOfContentsMode = tableOfContentsMetaItem && tableOfContentsMode = tableOfContentsMetaItem.getAttribute( 'property' ) || 'default';
tableOfContentsMetaItem.getType() || 'default';
tableOfContentsField.selectItemByData( tableOfContentsMode ); tableOfContentsField.selectItemByData( tableOfContentsMode );
this.tableOfContentsTouched = false; this.tableOfContentsTouched = false;
@ -293,7 +292,7 @@ ve.ui.MWSettingsPage.prototype.setup = function ( metaList ) {
* @param {Object} [data] Dialog tear down data * @param {Object} [data] Dialog tear down data
*/ */
ve.ui.MWSettingsPage.prototype.teardown = function ( data ) { ve.ui.MWSettingsPage.prototype.teardown = function ( data ) {
var tableOfContentsMetaItem, tableOfContentsSelectedItem, tableOfContentsValue, var currentTableOfContents, newTableOfContentsData, newTableOfContentsItem,
currentRedirectTargetItem, newRedirectData, newRedirectItemData, currentRedirectTargetItem, newRedirectData, newRedirectItemData,
currentStaticRedirectItem, newStaticRedirectState, currentStaticRedirectItem, newStaticRedirectState,
settingsPage = this; settingsPage = this;
@ -305,9 +304,8 @@ ve.ui.MWSettingsPage.prototype.teardown = function ( data ) {
} }
// Table of Contents items // Table of Contents items
tableOfContentsMetaItem = this.getMetaItem( 'mwTOC' ); currentTableOfContents = this.getMetaItem( 'mwTOC' );
tableOfContentsSelectedItem = this.tableOfContents.getField().getSelectedItem(); newTableOfContentsData = this.tableOfContents.getField().getSelectedItem();
tableOfContentsValue = tableOfContentsSelectedItem && tableOfContentsSelectedItem.getData();
// Redirect items // Redirect items
currentRedirectTargetItem = this.getMetaItem( 'mwRedirect' ); currentRedirectTargetItem = this.getMetaItem( 'mwRedirect' );
@ -319,19 +317,18 @@ ve.ui.MWSettingsPage.prototype.teardown = function ( data ) {
// Alter the TOC option flag iff it's been touched & is actually different // Alter the TOC option flag iff it's been touched & is actually different
if ( this.tableOfContentsTouched ) { if ( this.tableOfContentsTouched ) {
if ( tableOfContentsValue === 'default' ) { if ( newTableOfContentsData.data === 'default' ) {
if ( tableOfContentsMetaItem ) { if ( currentTableOfContents ) {
tableOfContentsMetaItem.remove(); currentTableOfContents.remove();
} }
} else { } else {
if ( !tableOfContentsMetaItem ) { newTableOfContentsItem = { type: 'mwTOC', attributes: { property: newTableOfContentsData.data } };
this.metaList.insertMeta( { type: tableOfContentsValue } );
} else if ( tableOfContentsMetaItem.getType() !== tableOfContentsValue ) { if ( !currentTableOfContents ) {
tableOfContentsMetaItem.replaceWith( this.metaList.insertMeta( newTableOfContentsItem );
ve.extendObject( true, {}, } else if ( currentTableOfContents.getAttribute( 'property' ) !== newTableOfContentsData.data ) {
tableOfContentsMetaItem.getElement(), currentTableOfContents.replaceWith(
{ type: tableOfContentsValue } ve.extendObject( true, {}, currentTableOfContents.getElement(), newTableOfContentsItem )
)
); );
} }
} }