Jforrester has uploaded a new change for review.
https://gerrit.wikimedia.org/r/95724
Change subject: Let users set __NOINDEX__ & __INDEX__ status
......................................................................
Let users set __NOINDEX__ & __INDEX__ status
Add a trinary option to the page settings pane of the meta dialog that lets
users set the page to have __INDEX__, __NOINDEX__ or neither (and so have
the default behaviour).
Change-Id: I30d483b5b6c3df7ee56a52c744bbdc610a01873d
---
M VisualEditor.i18n.php
M VisualEditor.php
A modules/ve-mw/dm/metaitems/ve.dm.MWIndexDisableMetaItem.js
A modules/ve-mw/dm/metaitems/ve.dm.MWIndexForceMetaItem.js
M modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js
5 files changed, 178 insertions(+), 4 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/24/95724/1
diff --git a/VisualEditor.i18n.php b/VisualEditor.i18n.php
index 3b04d14..163db25 100644
--- a/VisualEditor.i18n.php
+++ b/VisualEditor.i18n.php
@@ -82,6 +82,10 @@
'visualeditor-dialog-meta-languages-link-label' => 'Linked page',
'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.',
'visualeditor-dialog-meta-languages-section' => 'Languages',
+ 'visualeditor-dialog-meta-settings-index-default' => 'Like other pages
in this namespace',
+ 'visualeditor-dialog-meta-settings-index-disable' => 'No',
+ 'visualeditor-dialog-meta-settings-index-force' => 'Yes',
+ 'visualeditor-dialog-meta-settings-index-label' => 'Let this page be
indexed by search engines',
'visualeditor-dialog-meta-settings-label' => 'Page settings',
'visualeditor-dialog-meta-settings-noeditsection-label' => 'Disable
section edit links next to each heading on this page.',
'visualeditor-dialog-meta-settings-redirect-label' => 'Redirect this
page to',
@@ -436,6 +440,10 @@
* {{msg-mw|Visualeditor-referencelist-missingref}}',
'visualeditor-dialog-meta-languages-section' => 'Label for the language
links dialog section.
{{Identical|Language}}',
+ 'visualeditor-dialog-meta-settings-index-default' => 'Label for the
option to have default indexing behaviour.',
+ 'visualeditor-dialog-meta-settings-index-disable' => 'Label for the
option for indexing to be forced off.',
+ 'visualeditor-dialog-meta-settings-index-force' => 'Label for the
option for indexing to be forced on.',
+ 'visualeditor-dialog-meta-settings-index-label' => 'Prompt to let the
user set the indexing behaviour.',
'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-redirect-label' => 'Prompt for the
checkbox to let the user redirect the page.',
diff --git a/VisualEditor.php b/VisualEditor.php
index 0d3ee18..eee14a5 100644
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -436,7 +436,10 @@
've-mw/dm/metaitems/ve.dm.MWAlienMetaItem.js',
've-mw/dm/metaitems/ve.dm.MWCategoryMetaItem.js',
've-mw/dm/metaitems/ve.dm.MWDefaultSortMetaItem.js',
+ 've-mw/dm/metaitems/ve.dm.MWIndexDisableMetaItem.js',
+ 've-mw/dm/metaitems/ve.dm.MWIndexForceMetaItem.js',
've-mw/dm/metaitems/ve.dm.MWLanguageMetaItem.js',
+ 've-mw/dm/metaitems/ve.dm.MWNoEditSectionMetaItem.js',
've-mw/dm/metaitems/ve.dm.MWNoEditSectionMetaItem.js',
've-mw/dm/metaitems/ve.dm.MWRedirectMetaItem.js',
've-mw/dm/metaitems/ve.dm.MWStaticRedirectMetaItem.js',
@@ -653,6 +656,10 @@
'visualeditor-dialog-meta-languages-link-label',
'visualeditor-dialog-meta-languages-readonlynote',
'visualeditor-dialog-meta-languages-section',
+ 'visualeditor-dialog-meta-settings-index-default',
+ 'visualeditor-dialog-meta-settings-index-disable',
+ 'visualeditor-dialog-meta-settings-index-force',
+ 'visualeditor-dialog-meta-settings-index-label',
'visualeditor-dialog-meta-settings-label',
'visualeditor-dialog-meta-settings-noeditsection-label',
'visualeditor-dialog-meta-settings-redirect-label',
diff --git a/modules/ve-mw/dm/metaitems/ve.dm.MWIndexDisableMetaItem.js
b/modules/ve-mw/dm/metaitems/ve.dm.MWIndexDisableMetaItem.js
new file mode 100644
index 0000000..de35133
--- /dev/null
+++ b/modules/ve-mw/dm/metaitems/ve.dm.MWIndexDisableMetaItem.js
@@ -0,0 +1,47 @@
+/*!
+ * VisualEditor DataModel MWIndexDisableMetaItem class.
+ *
+ * @copyright 2011-2013 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( element ) {
+ // Parent constructor
+ ve.dm.MetaItem.call( this, element );
+};
+
+/* 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 );
diff --git a/modules/ve-mw/dm/metaitems/ve.dm.MWIndexForceMetaItem.js
b/modules/ve-mw/dm/metaitems/ve.dm.MWIndexForceMetaItem.js
new file mode 100644
index 0000000..69b67a6
--- /dev/null
+++ b/modules/ve-mw/dm/metaitems/ve.dm.MWIndexForceMetaItem.js
@@ -0,0 +1,47 @@
+/*!
+ * VisualEditor DataModel MWIndexForceMetaItem class.
+ *
+ * @copyright 2011-2013 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( element ) {
+ // Parent constructor
+ ve.dm.MetaItem.call( this, element );
+};
+
+/* 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 );
diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js
b/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js
index b645cfd..0aaa104 100644
--- a/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js
+++ b/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js
@@ -26,6 +26,7 @@
this.defaultSortKeyChanged = false;
this.redirectTargetInputChanged = false;
this.tocOptionChanged = false;
+ this.indexOptionChanged = false;
this.fallbackDefaultSortKey = mw.config.get( 'wgTitle' );
// Events
@@ -119,7 +120,12 @@
this.tocOptionChanged = true;
};
-
+/**
+ * Handle indexing display change events.
+ */
+ve.ui.MWMetaDialog.prototype.onIndexOptionChange = function () {
+ this.indexOptionChanged = true;
+};
/**
* Inserts new category into meta list
@@ -337,6 +343,15 @@
};
/**
+ * Get indexing options
+ *
+ * @returns {Object[]} Indexing option, if any
+ */
+ve.ui.MWMetaDialog.prototype.getIndexOptionItems = function () {
+ return this.metaList.getItemsInGroup( 'mwIndex' );
+};
+
+/**
* Get the no edit section item
*
* @returns {Object|null} Redirect target, if any
@@ -435,6 +450,22 @@
'$': this.$,
'label': ve.msg(
'visualeditor-dialog-meta-settings-noeditsection-label' )
} );
+ this.indexOptionSelector = new OO.ui.SelectWidget( { '$': this.$ } );
+ this.indexOptionWidgets = {
+ 'default': new OO.ui.OptionWidget(
+ 'default',
+ { 'label': ve.msg (
'visualeditor-dialog-meta-settings-index-default' ) }
+ ),
+ 'mwIndexForce': new OO.ui.OptionWidget(
+ 'mwIndexForce',
+ { 'label': ve.msg (
'visualeditor-dialog-meta-settings-index-force' ) }
+ ),
+ 'mwIndexDisable': new OO.ui.OptionWidget(
+ 'mwIndexDisable',
+ { 'label': ve.msg (
'visualeditor-dialog-meta-settings-index-disable' ) }
+ )
+ };
+ this.indexOptionSelector.addItems( ve.getObjectValues(
this.indexOptionWidgets ) );
// General items
this.applyButton = new OO.ui.PushButtonWidget( {
@@ -453,6 +484,7 @@
this.enableStaticRedirectInput.connect( this, { 'change':
'onEnableStaticRedirectChange' } );
this.redirectTargetInput.connect( this, { 'change':
'onRedirectTargetChange' } );
this.tocOptionSelector.connect( this, { 'select': 'onTOCOptionChange' }
);
+ this.indexOptionSelector.connect( this, { 'select':
'onIndexOptionChange' } );
this.applyButton.connect( this, { 'click': [ 'close', { 'action':
'apply' } ] } );
@@ -534,7 +566,11 @@
.text( ve.msg(
'visualeditor-dialog-meta-settings-toc-label' ) ),
this.tocOptionSelector.$element,
- this.disableSectionEditLinksInput.$element
+ this.disableSectionEditLinksInput.$element,
+
+ this.$( '<span>' )
+ .text( ve.msg(
'visualeditor-dialog-meta-settings-index-label' ) ),
+ this.indexOptionSelector.$element
);
};
@@ -549,12 +585,22 @@
data = data || {};
var surfaceModel = this.surface.getModel(),
+
+ // Category items
categoryWidget = this.categoryWidget,
defaultSortKeyItem = this.getDefaultSortKeyItem(),
+
+ // Redirect items
redirectTargetItem = this.getRedirectTargetItem(),
redirectStatic = this.getRedirectStaticItem(),
+
+ // Table of Contents items
tocOptions = this.getTOCOptionItems(),
- tocType = tocOptions[0] && tocOptions[0].element.type ||
'default';
+ tocType = tocOptions[0] && tocOptions[0].element.type ||
'default',
+
+ // Indexing items
+ indexOptions = this.getIndexOptionItems(),
+ indexType = indexOptions[0] && indexOptions[0].element.type ||
'default';
if ( data.page && this.pagedOutlineLayout.getPage( data.page ) ) {
this.pagedOutlineLayout.setPage( data.page );
@@ -585,6 +631,9 @@
this.tocOptionChanged = false;
this.disableSectionEditLinksInput.setValue(
this.getDisableSectionEditLinksItem() );
+
+ this.indexOptionSelector.selectItem( this.indexOptionWidgets[indexType]
);
+ this.indexOptionChanged = false;
// Force all previous transactions to be separate from this history
state
surfaceModel.breakpoint();
@@ -623,7 +672,12 @@
// Disable section edit links items
currentDisableSectionEditLinksItem =
this.getDisableSectionEditLinksItem(),
- newDisableSectionEditState =
this.disableSectionEditLinksInput.getValue();
+ newDisableSectionEditState =
this.disableSectionEditLinksInput.getValue(),
+
+ // Indexing items
+ currentIndexItemsIndex,
+ currentIndexItems = this.getIndexOptionItems(),
+ newIndexOptionData = this.indexOptionSelector.getSelectedItem();
// Place transactions made while dialog was open in a common history
state
hasTransactions = surfaceModel.breakpoint();
@@ -694,6 +748,17 @@
currentDisableSectionEditLinksItem.remove();
}
+ if ( this.indexOptionChanged ) {
+ if ( currentIndexItems ) {
+ for ( currentIndexItemsIndex = currentIndexItems.length
- 1; currentIndexItemsIndex >= 0; currentIndexItemsIndex-- ) {
+ this.metaList.removeMeta(
currentIndexItems[currentIndexItemsIndex] );
+ } }
+ if ( newIndexOptionData && newIndexOptionData.data !==
'default' ) {
+ // At this point, newIndexOptionData.data is either
'mwIndexForce' or 'mwIndexForce'
+ this.insertMetaListItem( { 'type' :
newIndexOptionData.data } );
+ }
+ }
+
// Return to normal tracking behavior
surfaceModel.startHistoryTracking();
--
To view, visit https://gerrit.wikimedia.org/r/95724
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I30d483b5b6c3df7ee56a52c744bbdc610a01873d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Jforrester <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits