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.MWDisplayTitleMetaItem.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.MWIndexForceMetaItem.js",
"modules/ve-mw/dm/metaitems/ve.dm.MWFlaggedMetaItem.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.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.MWNoEditSectionMetaItem.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.MWRedirectMetaItem.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.MWCategoryPopupWidget.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()
.addItems( [
new OO.ui.ButtonOptionWidget( {
data: 'mwIndexForce',
data: 'mw:PageProp/index',
label: ve.msg( 'visualeditor-dialog-meta-settings-index-force' )
} ),
new OO.ui.ButtonOptionWidget( {
@ -47,7 +47,7 @@ ve.ui.MWAdvancedSettingsPage = function VeUiMWAdvancedSettingsPage( name, config
label: ve.msg( 'visualeditor-dialog-meta-settings-index-default' )
} ),
new OO.ui.ButtonOptionWidget( {
data: 'mwIndexDisable',
data: 'mw:PageProp/noindex',
label: ve.msg( 'visualeditor-dialog-meta-settings-index-disable' )
} )
] )
@ -65,7 +65,7 @@ ve.ui.MWAdvancedSettingsPage = function VeUiMWAdvancedSettingsPage( name, config
new OO.ui.ButtonSelectWidget()
.addItems( [
new OO.ui.ButtonOptionWidget( {
data: 'mwNewSectionEditForce',
data: 'mw:PageProp/newsectionlink',
label: ve.msg( 'visualeditor-dialog-meta-settings-newsectioneditlink-force' )
} ),
new OO.ui.ButtonOptionWidget( {
@ -73,7 +73,7 @@ ve.ui.MWAdvancedSettingsPage = function VeUiMWAdvancedSettingsPage( name, config
label: ve.msg( 'visualeditor-dialog-meta-settings-newsectioneditlink-default' )
} ),
new OO.ui.ButtonOptionWidget( {
data: 'mwNewSectionEditDisable',
data: 'mw:PageProp/nonewsectionlink',
label: ve.msg( 'visualeditor-dialog-meta-settings-newsectioneditlink-disable' )
} )
] )
@ -207,14 +207,14 @@ ve.ui.MWAdvancedSettingsPage.prototype.setup = function ( metaList ) {
// Indexing items
indexingField = this.indexing.getField();
indexingOption = this.getMetaItem( 'mwIndex' );
indexingType = indexingOption && indexingOption.element.type || 'default';
indexingType = indexingOption.getAttribute( 'property' ) || 'default';
indexingField.selectItemByData( indexingType );
this.indexingOptionTouched = false;
// New section edit link items
newSectionEditField = this.newEditSectionLink.getField();
newSectionEditLinkOption = this.getMetaItem( 'mwNewSectionEdit' );
newSectionEditLinkType = newSectionEditLinkOption && newSectionEditLinkOption.element.type || 'default';
newSectionEditLinkType = newSectionEditLinkOption.getAttribute( 'property' ) || 'default';
newSectionEditField.selectItemByData( newSectionEditLinkType );
this.newSectionEditLinkOptionTouched = false;
@ -240,9 +240,9 @@ ve.ui.MWAdvancedSettingsPage.prototype.setup = function ( metaList ) {
* @param {Object} [data] Dialog tear down data
*/
ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
var currentIndexingItem, newIndexingData,
currentNewSectionEditLinkItem, newNewSectionEditLinkOptionData,
currentDisplayTitleItem, newDisplayTitle, newDisplayTitleItemData,
var currentIndexingItem, newIndexingData, newIndexingItem,
currentNewSectionEditLinkItem, newNewSectionEditLinkData, newNewSectionEditLinkItem,
currentDisplayTitleItem, newDisplayTitle, newDisplayTitleItem,
advancedSettingsPage = this;
// Data initialization
@ -262,14 +262,13 @@ ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
currentIndexingItem.remove();
}
} else {
newIndexingItem = { type: 'mwIndex', attributes: { property: newIndexingData.data } };
if ( !currentIndexingItem ) {
this.metaList.insertMeta( { type: newIndexingData.data } );
} else if ( currentIndexingItem.element.type !== newIndexingData.data ) {
this.metaList.insertMeta( newIndexingItem );
} else if ( currentIndexingItem.getAttribute( 'property' ) !== newIndexingData.data ) {
currentIndexingItem.replaceWith(
ve.extendObject( true, {},
currentIndexingItem.getElement(),
{ type: newIndexingData.data }
)
ve.extendObject( true, {}, currentIndexingItem.getElement(), newIndexingItem )
);
}
}
@ -277,23 +276,22 @@ ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
// New section edit link items
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
if ( this.newSectionEditLinkOptionTouched ) {
if ( newNewSectionEditLinkOptionData.data === 'default' ) {
if ( newNewSectionEditLinkData.data === 'default' ) {
if ( currentNewSectionEditLinkItem ) {
currentNewSectionEditLinkItem.remove();
}
} else {
newNewSectionEditLinkItem = { type: 'mwNewSectionEdit', attributes: { property: newNewSectionEditLinkData.data } };
if ( !currentNewSectionEditLinkItem ) {
this.metaList.insertMeta( { type: newNewSectionEditLinkOptionData.data } );
} else if ( currentNewSectionEditLinkItem.element.type !== newNewSectionEditLinkOptionData.data ) {
this.metaList.insertMeta( newNewSectionEditLinkItem );
} else if ( currentNewSectionEditLinkItem.getAttribute( 'property' ) !== newNewSectionEditLinkData.data ) {
currentNewSectionEditLinkItem.replaceWith(
ve.extendObject( true, {},
currentNewSectionEditLinkItem.getElement(),
{ type: newNewSectionEditLinkOptionData.data }
)
ve.extendObject( true, {}, currentNewSectionEditLinkItem.getElement(), newNewSectionEditLinkItem )
);
}
}
@ -305,7 +303,7 @@ ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
if ( newDisplayTitle === mw.Title.newFromText( mw.config.get( 'wgPageName' ) ).getPrefixedText() ) {
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
if ( this.displayTitleTouched ) {
@ -316,7 +314,7 @@ ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
currentDisplayTitleItem.replaceWith(
ve.extendObject( true, {},
currentDisplayTitleItem.getElement(),
newDisplayTitleItemData
newDisplayTitleItem
) );
}
} else {
@ -327,7 +325,7 @@ ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
if ( newDisplayTitle ) {
// 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
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( [
new OO.ui.ButtonOptionWidget( {
data: 'mwTOCForce',
data: 'mw:PageProp/forcetoc',
label: ve.msg( 'visualeditor-dialog-meta-settings-toc-force' )
} ),
new OO.ui.ButtonOptionWidget( {
@ -51,7 +51,7 @@ ve.ui.MWSettingsPage = function VeUiMWSettingsPage( name, config ) {
label: ve.msg( 'visualeditor-dialog-meta-settings-toc-default' )
} ),
new OO.ui.ButtonOptionWidget( {
data: 'mwTOCDisable',
data: 'mw:PageProp/notoc',
label: ve.msg( 'visualeditor-dialog-meta-settings-toc-disable' )
} )
] )
@ -264,8 +264,7 @@ ve.ui.MWSettingsPage.prototype.setup = function ( metaList ) {
// Table of Contents items
tableOfContentsMetaItem = this.getMetaItem( 'mwTOC' );
tableOfContentsField = this.tableOfContents.getField();
tableOfContentsMode = tableOfContentsMetaItem &&
tableOfContentsMetaItem.getType() || 'default';
tableOfContentsMode = tableOfContentsMetaItem.getAttribute( 'property' ) || 'default';
tableOfContentsField.selectItemByData( tableOfContentsMode );
this.tableOfContentsTouched = false;
@ -293,7 +292,7 @@ ve.ui.MWSettingsPage.prototype.setup = function ( metaList ) {
* @param {Object} [data] Dialog tear down data
*/
ve.ui.MWSettingsPage.prototype.teardown = function ( data ) {
var tableOfContentsMetaItem, tableOfContentsSelectedItem, tableOfContentsValue,
var currentTableOfContents, newTableOfContentsData, newTableOfContentsItem,
currentRedirectTargetItem, newRedirectData, newRedirectItemData,
currentStaticRedirectItem, newStaticRedirectState,
settingsPage = this;
@ -305,9 +304,8 @@ ve.ui.MWSettingsPage.prototype.teardown = function ( data ) {
}
// Table of Contents items
tableOfContentsMetaItem = this.getMetaItem( 'mwTOC' );
tableOfContentsSelectedItem = this.tableOfContents.getField().getSelectedItem();
tableOfContentsValue = tableOfContentsSelectedItem && tableOfContentsSelectedItem.getData();
currentTableOfContents = this.getMetaItem( 'mwTOC' );
newTableOfContentsData = this.tableOfContents.getField().getSelectedItem();
// Redirect items
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
if ( this.tableOfContentsTouched ) {
if ( tableOfContentsValue === 'default' ) {
if ( tableOfContentsMetaItem ) {
tableOfContentsMetaItem.remove();
if ( newTableOfContentsData.data === 'default' ) {
if ( currentTableOfContents ) {
currentTableOfContents.remove();
}
} else {
if ( !tableOfContentsMetaItem ) {
this.metaList.insertMeta( { type: tableOfContentsValue } );
} else if ( tableOfContentsMetaItem.getType() !== tableOfContentsValue ) {
tableOfContentsMetaItem.replaceWith(
ve.extendObject( true, {},
tableOfContentsMetaItem.getElement(),
{ type: tableOfContentsValue }
)
newTableOfContentsItem = { type: 'mwTOC', attributes: { property: newTableOfContentsData.data } };
if ( !currentTableOfContents ) {
this.metaList.insertMeta( newTableOfContentsItem );
} else if ( currentTableOfContents.getAttribute( 'property' ) !== newTableOfContentsData.data ) {
currentTableOfContents.replaceWith(
ve.extendObject( true, {}, currentTableOfContents.getElement(), newTableOfContentsItem )
);
}
}