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

Reply via email to