mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-09-24 10:48:42 +00:00
Let users set __NOEDITSECTION__ status
Adds a checkbox to the page settings pane of the meta dialog that lets users set or unset the __NOEDITSECTION__ flag on the page. Change-Id: If1eca58e28d214021f5f5582856e595d4d0fbc43
This commit is contained in:
parent
0fadc2bc77
commit
707f7c93a5
|
@ -524,6 +524,7 @@ $wgResourceModules += array(
|
|||
'modules/ve-mw/dm/metaitems/ve.dm.MWCategoryMetaItem.js',
|
||||
'modules/ve-mw/dm/metaitems/ve.dm.MWDefaultSortMetaItem.js',
|
||||
'modules/ve-mw/dm/metaitems/ve.dm.MWLanguageMetaItem.js',
|
||||
'modules/ve-mw/dm/metaitems/ve.dm.MWNoEditSectionMetaItem.js',
|
||||
'modules/ve-mw/dm/metaitems/ve.dm.MWTransclusionMetaItem.js',
|
||||
'modules/ve-mw/dm/metaitems/ve.dm.MWTOCDisableMetaItem.js',
|
||||
'modules/ve-mw/dm/metaitems/ve.dm.MWTOCForceMetaItem.js',
|
||||
|
@ -646,6 +647,7 @@ $wgResourceModules += array(
|
|||
'visualeditor-dialog-meta-languages-readonlynote',
|
||||
'visualeditor-dialog-meta-languages-section',
|
||||
'visualeditor-dialog-meta-settings-label',
|
||||
'visualeditor-dialog-meta-settings-noeditsection-label',
|
||||
'visualeditor-dialog-meta-settings-section',
|
||||
'visualeditor-dialog-meta-settings-toc-default',
|
||||
'visualeditor-dialog-meta-settings-toc-disable',
|
||||
|
|
47
modules/ve-mw/dm/metaitems/ve.dm.MWNoEditSectionMetaItem.js
Normal file
47
modules/ve-mw/dm/metaitems/ve.dm.MWNoEditSectionMetaItem.js
Normal file
|
@ -0,0 +1,47 @@
|
|||
/*!
|
||||
* VisualEditor DataModel MWNoEditSectionMetaItem class.
|
||||
*
|
||||
* @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
|
||||
* @license The MIT License (MIT); see LICENSE.txt
|
||||
*/
|
||||
|
||||
/**
|
||||
* DataModel disable section edit links meta item.
|
||||
*
|
||||
* @class
|
||||
* @extends ve.dm.MetaItem
|
||||
* @constructor
|
||||
* @param {Object} element Reference to element in meta-linmod
|
||||
*/
|
||||
ve.dm.MWNoEditSectionMetaItem = function VeDmMWNoEditSectionMetaItem( element ) {
|
||||
// Parent constructor
|
||||
ve.dm.MetaItem.call( this, element );
|
||||
};
|
||||
|
||||
/* Inheritance */
|
||||
|
||||
OO.inheritClass( ve.dm.MWNoEditSectionMetaItem, ve.dm.MetaItem );
|
||||
|
||||
/* Static Properties */
|
||||
|
||||
ve.dm.MWNoEditSectionMetaItem.static.name = 'mwNoEditSection';
|
||||
|
||||
ve.dm.MWNoEditSectionMetaItem.static.group = 'mwNoEditSection';
|
||||
|
||||
ve.dm.MWNoEditSectionMetaItem.static.matchTagNames = [ 'meta' ];
|
||||
|
||||
ve.dm.MWNoEditSectionMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/noeditsection' ];
|
||||
|
||||
ve.dm.MWNoEditSectionMetaItem.static.toDataElement = function () {
|
||||
return { 'type': this.name };
|
||||
};
|
||||
|
||||
ve.dm.MWNoEditSectionMetaItem.static.toDomElements = function ( dataElement, doc ) {
|
||||
var meta = doc.createElement( 'meta' );
|
||||
meta.setAttribute( 'property', 'mw:PageProp/noeditsection' );
|
||||
return [ meta ];
|
||||
};
|
||||
|
||||
/* Registration */
|
||||
|
||||
ve.dm.modelRegistry.register( ve.dm.MWNoEditSectionMetaItem );
|
|
@ -32,7 +32,7 @@ ve.dm.MWTOCDisableMetaItem.static.matchTagNames = [ 'meta' ];
|
|||
|
||||
ve.dm.MWTOCDisableMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/notoc' ];
|
||||
|
||||
ve.dm.MWTOCDisableMetaItem.static.toDataElement = function ( ) {
|
||||
ve.dm.MWTOCDisableMetaItem.static.toDataElement = function () {
|
||||
return { 'type': this.name };
|
||||
};
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ ve.dm.MWTOCForceMetaItem.static.matchTagNames = [ 'meta' ];
|
|||
|
||||
ve.dm.MWTOCForceMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/forcetoc' ];
|
||||
|
||||
ve.dm.MWTOCForceMetaItem.static.toDataElement = function ( ) {
|
||||
ve.dm.MWTOCForceMetaItem.static.toDataElement = function () {
|
||||
return { 'type': this.name };
|
||||
};
|
||||
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
"visualeditor-dialog-meta-languages-readonlynote": "This is a list of pages in other languages that are linked to this one; for now, it can only be edited in source mode or on Wikidata.",
|
||||
"visualeditor-dialog-meta-languages-section": "Languages",
|
||||
"visualeditor-dialog-meta-settings-label": "Page settings",
|
||||
"visualeditor-dialog-meta-settings-noeditsection-label": "Disable the edit links next to each heading on this page.",
|
||||
"visualeditor-dialog-meta-settings-section": "Page settings",
|
||||
"visualeditor-dialog-meta-settings-toc-default": "Show if needed",
|
||||
"visualeditor-dialog-meta-settings-toc-disable": "Never show",
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
"visualeditor-dialog-meta-languages-readonlynote": "Text of a note informing users that the language links cannot yet be edited.\n\nSee also:\n* {{msg-mw|Visualeditor-referencelist-missingref}}",
|
||||
"visualeditor-dialog-meta-languages-section": "Label for the language links dialog section.\n{{Identical|Language}}",
|
||||
"visualeditor-dialog-meta-settings-label": "Title for the page settings dialog section",
|
||||
"visualeditor-dialog-meta-settings-noeditsection-label": "Prompt for the checkbox to let the user disable section edit links on the page.",
|
||||
"visualeditor-dialog-meta-settings-section": "Label for the page settings dialog section.",
|
||||
"visualeditor-dialog-meta-settings-toc-default": "Label for the default TOC behaviour option.",
|
||||
"visualeditor-dialog-meta-settings-toc-disable": "Label for the TOC behaviour option to never show.",
|
||||
|
|
|
@ -33,6 +33,10 @@ ve.ui.MWSettingsPage = function VeUiMWSettingsPage( surface, name, config ) {
|
|||
'label': ve.msg( 'visualeditor-dialog-meta-settings-label' ),
|
||||
'icon': 'settings'
|
||||
} );
|
||||
|
||||
// Initialization
|
||||
|
||||
// Table of Contents items
|
||||
this.tocOptionSelector = new OO.ui.SelectWidget( { '$': this.$ } );
|
||||
this.tocOptionWidgets = {
|
||||
'default': new OO.ui.OptionWidget(
|
||||
|
@ -49,18 +53,20 @@ ve.ui.MWSettingsPage = function VeUiMWSettingsPage( surface, name, config ) {
|
|||
)
|
||||
};
|
||||
this.tocOptionSelector.addItems( ve.getObjectValues( this.tocOptionWidgets ) );
|
||||
|
||||
// Events
|
||||
this.tocOptionSelector.connect( this, {
|
||||
'select': 'onTOCOptionChange'
|
||||
} );
|
||||
|
||||
// Initialization
|
||||
this.settingsFieldset.$element.append(
|
||||
this.$( '<span>' )
|
||||
.text( ve.msg( 'visualeditor-dialog-meta-settings-toc-label' ) ),
|
||||
this.tocOptionSelector.$element
|
||||
);
|
||||
this.tocOptionSelector.connect( this, { 'select': 'onTOCOptionChange' } );
|
||||
|
||||
// Disable section edit links items
|
||||
this.disableSectionEditLinksInput = new OO.ui.CheckboxWidget( {
|
||||
'$': this.$,
|
||||
'label': ve.msg( 'visualeditor-dialog-meta-settings-noeditsection-label' )
|
||||
} );
|
||||
this.settingsFieldset.$element.append( this.disableSectionEditLinksInput.$element );
|
||||
|
||||
this.$element.append( this.settingsFieldset.$element );
|
||||
};
|
||||
|
||||
|
@ -88,6 +94,15 @@ ve.ui.MWSettingsPage.prototype.getTOCOptionItem = function () {
|
|||
return this.metaList.getItemsInGroup( 'mwTOC' )[0] || null;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the section edit link disabling item
|
||||
*
|
||||
* @returns {Object|null} Section edit link disabling meta item, if any
|
||||
*/
|
||||
ve.ui.MWSettingsPage.prototype.getDisableSectionEditLinksItem = function () {
|
||||
return this.metaList.getItemsInGroup( 'mwNoEditSection' )[0] || null;
|
||||
};
|
||||
|
||||
/**
|
||||
* Setup settings page.
|
||||
*
|
||||
|
@ -97,8 +112,12 @@ ve.ui.MWSettingsPage.prototype.setup = function () {
|
|||
var tocOption = this.getTOCOptionItem(),
|
||||
tocType = tocOption && tocOption.element.type || 'default';
|
||||
|
||||
// Table of Contents items
|
||||
this.tocOptionSelector.selectItem( this.tocOptionWidgets[tocType] );
|
||||
this.tocOptionTouched = false;
|
||||
|
||||
// Disable section edit links items
|
||||
this.disableSectionEditLinksInput.setValue( !!this.getDisableSectionEditLinksItem() );
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -110,8 +129,13 @@ ve.ui.MWSettingsPage.prototype.teardown = function ( data ) {
|
|||
// Data initialisation
|
||||
data = data || {};
|
||||
|
||||
var currentTOCItem = this.getTOCOptionItem(),
|
||||
newTOCData = this.tocOptionSelector.getSelectedItem();
|
||||
var // Table of Contents items
|
||||
currentTOCItem = this.getTOCOptionItem(),
|
||||
newTOCData = this.tocOptionSelector.getSelectedItem(),
|
||||
|
||||
// Disable section edit links items
|
||||
currentDisableSectionEditLinksItem = this.getDisableSectionEditLinksItem(),
|
||||
newDisableSectionEditState = this.disableSectionEditLinksInput.getValue();
|
||||
|
||||
// Alter the TOC option flag iff it's been touched & is actually different
|
||||
if ( this.tocOptionTouched ) {
|
||||
|
@ -132,4 +156,12 @@ ve.ui.MWSettingsPage.prototype.teardown = function ( data ) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Disable section edit links items
|
||||
if ( currentDisableSectionEditLinksItem && !newDisableSectionEditState ) {
|
||||
currentDisableSectionEditLinksItem.remove();
|
||||
}
|
||||
if ( !currentDisableSectionEditLinksItem && newDisableSectionEditState ) {
|
||||
this.metaList.insertMeta( { 'type': 'mwNoEditSection' } );
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue