diff --git a/VisualEditor.php b/VisualEditor.php index 744a721a00..7342bec76f 100644 --- a/VisualEditor.php +++ b/VisualEditor.php @@ -290,6 +290,7 @@ $wgResourceModules += array( 've/dm/metaitems/ve.dm.AlienMetaItem.js', 've/dm/metaitems/ve.dm.MWAlienMetaItem.js', 've/dm/metaitems/ve.dm.MWCategoryMetaItem.js', + 've/dm/metaitems/ve.dm.MWDefaultSortMetaItem.js', 've/dm/metaitems/ve.dm.MWLanguageMetaItem.js', // ce diff --git a/demos/ve/index.php b/demos/ve/index.php index 43218f4de7..52f4767e93 100644 --- a/demos/ve/index.php +++ b/demos/ve/index.php @@ -178,6 +178,7 @@ $html = file_get_contents( $page ); + diff --git a/modules/ve/dm/metaitems/ve.dm.MWDefaultSortMetaItem.js b/modules/ve/dm/metaitems/ve.dm.MWDefaultSortMetaItem.js new file mode 100644 index 0000000000..80b857e17b --- /dev/null +++ b/modules/ve/dm/metaitems/ve.dm.MWDefaultSortMetaItem.js @@ -0,0 +1,54 @@ +/*! + * VisualEditor DataModel MWDefaultSortMetaItem class. + * + * @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt + * @license The MIT License (MIT); see LICENSE.txt + */ + +/** + * DataModel category default sort meta item. + * + * @class + * @extends ve.dm.MetaItem + * @constructor + * @param {Object} element Reference to element in meta-linmod + */ +ve.dm.MWDefaultSortMetaItem = function VeDmMWDefaultSortMetaItem( element ) { + // Parent constructor + ve.dm.MetaItem.call( this, element ); +}; + +/* Inheritance */ + +ve.inheritClass( ve.dm.MWDefaultSortMetaItem, ve.dm.MetaItem ); + +/* Static Properties */ + +ve.dm.MWDefaultSortMetaItem.static.name = 'MWdefaultSort'; + +ve.dm.MWDefaultSortMetaItem.static.group = 'MWdefaultSort'; + +ve.dm.MWDefaultSortMetaItem.static.matchTagNames = [ 'meta' ]; + +ve.dm.MWDefaultSortMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/categorydefaultsort' ]; + +ve.dm.MWDefaultSortMetaItem.static.toDataElement = function ( domElements ) { + var content = domElements[0].getAttribute( 'content' ); + return { + 'type': this.name, + 'attributes': { + 'content': content + } + }; +}; + +ve.dm.MWDefaultSortMetaItem.static.toDomElements = function ( dataElement, doc ) { + var meta = doc.createElement( 'meta' ); + meta.setAttribute( 'property', 'mw:PageProp/categorydefaultsort' ); + meta.setAttribute( 'content', dataElement.attributes.content ); + return [ meta ]; +}; + +/* Registration */ + +ve.dm.modelRegistry.register( ve.dm.MWDefaultSortMetaItem ); diff --git a/modules/ve/test/dm/ve.dm.example.js b/modules/ve/test/dm/ve.dm.example.js index 7002ba653d..9fa018eaaa 100644 --- a/modules/ve/test/dm/ve.dm.example.js +++ b/modules/ve/test/dm/ve.dm.example.js @@ -2487,6 +2487,20 @@ ve.dm.example.domToDataCases = { 'table with caption, head, foot and body': { 'html': ve.dm.example.complexTableHtml, 'data': ve.dm.example.complexTable + }, + 'category default sort key': { + 'html': '', + 'data': [ + { + 'type': 'MWdefaultSort', + 'attributes': { + 'content': 'foo', + 'html/0/content': 'foo', + 'html/0/property': 'mw:PageProp/categorydefaultsort' + } + }, + { 'type': '/MWdefaultSort' } + ] } }; diff --git a/modules/ve/test/index.php b/modules/ve/test/index.php index 6fdc970480..fd6d15b68a 100644 --- a/modules/ve/test/index.php +++ b/modules/ve/test/index.php @@ -121,6 +121,7 @@ +