/**
* Check if a given namespace is a talk namespace
+ *
+ * See MWNamespace::isTalk in PHP
+ *
* @param {number} namespaceId Namespace ID
* @return {boolean} Namespace is a talk namespace
*/
return !!( namespaceId > NS_MAIN && namespaceId % 2 );
};
+ /**
+ * Check if signature buttons should be shown in a given namespace
+ *
+ * See MWNamespace::wantSignatures in PHP
+ *
+ * @param {number} namespaceId Namespace ID
+ * @return {boolean} Namespace is a signature namespace
+ */
+ Title.wantSignaturesNamespace = function ( namespaceId ) {
+ return this.isTalkNamespace( namespaceId ) ||
+ mw.config.get( 'wgExtraSignatureNamespaces' ).indexOf( namespaceId ) !== -1;
+ };
+
/**
* Whether this title exists on the wiki.
*
assert.strictEqual( title.getFragment(), null, 'getTalkPage does not copy the fragment' );
} );
+ QUnit.test( 'wantSignaturesNamespace', function ( assert ) {
+ var namespaces = mw.config.values.wgExtraSignatureNamespaces;
+
+ mw.config.values.wgExtraSignatureNamespaces = [];
+ assert.strictEqual( mw.Title.wantSignaturesNamespace( 0 ), false, 'Main namespace has no signatures' );
+ assert.strictEqual( mw.Title.wantSignaturesNamespace( 1 ), true, 'Talk namespace no signatures' );
+ assert.strictEqual( mw.Title.wantSignaturesNamespace( 2 ), false, 'NS2 has no signatures' );
+ assert.strictEqual( mw.Title.wantSignaturesNamespace( 3 ), true, 'NS3 has signatures' );
+
+ mw.config.values.wgExtraSignatureNamespaces = [ 0 ];
+ assert.strictEqual( mw.Title.wantSignaturesNamespace( 0 ), true, 'Main namespace has signatures when explicitly defined' );
+
+ // Restore
+ mw.config.values.wgExtraSignatureNamespaces = namespaces;
+ } );
+
QUnit.test( 'Throw error on invalid title', function ( assert ) {
assert.throws( function () {
return new mw.Title( '' );