mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-09-25 11:16:51 +00:00
Merge "Use various RDFa types for links"
This commit is contained in:
commit
c4e7544f60
|
@ -47,8 +47,7 @@ WikiLinkHandler.prototype.onWikiLink = function ( token, frame, cb ) {
|
||||||
var normalizedHref = title.makeLink(),
|
var normalizedHref = title.makeLink(),
|
||||||
obj = new TagTk( 'a',
|
obj = new TagTk( 'a',
|
||||||
[
|
[
|
||||||
new KV( 'href', normalizedHref ),
|
new KV( 'href', normalizedHref )
|
||||||
new KV('rel', 'mw:WikiLink')
|
|
||||||
], token.dataAttribs
|
], token.dataAttribs
|
||||||
),
|
),
|
||||||
content = token.attribs.slice(2);
|
content = token.attribs.slice(2);
|
||||||
|
@ -66,10 +65,11 @@ WikiLinkHandler.prototype.onWikiLink = function ( token, frame, cb ) {
|
||||||
out.push( '|' );
|
out.push( '|' );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
obj.attribs.push( new KV('rel', 'mw:WikiLink') );
|
||||||
content = out;
|
content = out;
|
||||||
} else {
|
} else {
|
||||||
content = [ Util.decodeURI(href) ];
|
content = [ Util.decodeURI(href) ];
|
||||||
obj.dataAttribs.gc = 1;
|
obj.attribs.push( new KV('rel', 'mw:SimpleWikiLink') );
|
||||||
}
|
}
|
||||||
|
|
||||||
var tail = Util.lookupKV( token.attribs, 'tail' ).v;
|
var tail = Util.lookupKV( token.attribs, 'tail' ).v;
|
||||||
|
@ -371,9 +371,8 @@ ExternalLinkHandler.prototype.onUrlLink = function ( token, frame, cb ) {
|
||||||
new TagTk( 'a',
|
new TagTk( 'a',
|
||||||
[
|
[
|
||||||
new KV( 'href', href ),
|
new KV( 'href', href ),
|
||||||
new KV('rel', 'mw:ExtLink')
|
new KV('rel', 'mw:UrlLink')
|
||||||
],
|
] ),
|
||||||
{ stx: 'urllink' } ),
|
|
||||||
href,
|
href,
|
||||||
new EndTagTk( 'a' )
|
new EndTagTk( 'a' )
|
||||||
]
|
]
|
||||||
|
@ -386,7 +385,8 @@ ExternalLinkHandler.prototype.onUrlLink = function ( token, frame, cb ) {
|
||||||
ExternalLinkHandler.prototype.onExtLink = function ( token, manager, cb ) {
|
ExternalLinkHandler.prototype.onExtLink = function ( token, manager, cb ) {
|
||||||
var env = this.manager.env,
|
var env = this.manager.env,
|
||||||
href = Util.sanitizeURI(env.tokensToString( Util.lookupKV( token.attribs, 'href' ).v )),
|
href = Util.sanitizeURI(env.tokensToString( Util.lookupKV( token.attribs, 'href' ).v )),
|
||||||
content= Util.lookupKV( token.attribs, 'content' ).v;
|
content= Util.lookupKV( token.attribs, 'content' ).v,
|
||||||
|
rdfaType = 'mw:ExtLink';
|
||||||
//console.warn('extlink href: ' + href );
|
//console.warn('extlink href: ' + href );
|
||||||
//console.warn( 'content: ' + JSON.stringify( content, null, 2 ) );
|
//console.warn( 'content: ' + JSON.stringify( content, null, 2 ) );
|
||||||
// validate the href
|
// validate the href
|
||||||
|
@ -394,6 +394,7 @@ ExternalLinkHandler.prototype.onExtLink = function ( token, manager, cb ) {
|
||||||
if ( ! content.length ) {
|
if ( ! content.length ) {
|
||||||
content = ['[' + this.linkCount + ']'];
|
content = ['[' + this.linkCount + ']'];
|
||||||
this.linkCount++;
|
this.linkCount++;
|
||||||
|
rdfaType = 'mw:NumberedExtLink';
|
||||||
}
|
}
|
||||||
if ( content.length === 1 &&
|
if ( content.length === 1 &&
|
||||||
content[0].constructor === String &&
|
content[0].constructor === String &&
|
||||||
|
@ -417,7 +418,7 @@ ExternalLinkHandler.prototype.onExtLink = function ( token, manager, cb ) {
|
||||||
new TagTk ( 'a',
|
new TagTk ( 'a',
|
||||||
[
|
[
|
||||||
new KV('href', href),
|
new KV('href', href),
|
||||||
new KV('rel', 'mw:ExtLink')
|
new KV('rel', rdfaType)
|
||||||
],
|
],
|
||||||
token.dataAttribs
|
token.dataAttribs
|
||||||
)
|
)
|
||||||
|
|
|
@ -526,7 +526,7 @@ WSP._linkHandler = function( state, tokens ) {
|
||||||
var attribDict = env.KVtoHash( token.attribs );
|
var attribDict = env.KVtoHash( token.attribs );
|
||||||
if ( attribDict.rel && attribDict.href !== undefined ) {
|
if ( attribDict.rel && attribDict.href !== undefined ) {
|
||||||
var tokenData = token.dataAttribs;
|
var tokenData = token.dataAttribs;
|
||||||
if ( attribDict.rel === 'mw:WikiLink' ) {
|
if ( attribDict.rel === 'mw:WikiLink' || attribDict.rel === 'mw:SimpleWikiLink' ) {
|
||||||
var base = env.wgScriptPath;
|
var base = env.wgScriptPath;
|
||||||
var href = attribDict.href;
|
var href = attribDict.href;
|
||||||
var prefix = href.substr(0, base.length);
|
var prefix = href.substr(0, base.length);
|
||||||
|
@ -535,7 +535,11 @@ WSP._linkHandler = function( state, tokens ) {
|
||||||
|
|
||||||
var tail = tokenData.tail;
|
var tail = tokenData.tail;
|
||||||
if ( tail && tail.length ) {
|
if ( tail && tail.length ) {
|
||||||
target = tokenData.gc ? tokenData.sHref : target.replace( /_/g, ' ' );
|
if ( attribDict.rel === 'mw:SimpleWikiLink' ) {
|
||||||
|
target = tokenData.sHref;
|
||||||
|
} else {
|
||||||
|
target = target.replace( /_/g, ' ' );
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
tail = '';
|
tail = '';
|
||||||
var origLinkTgt = tokenData.sHref;
|
var origLinkTgt = tokenData.sHref;
|
||||||
|
@ -555,7 +559,7 @@ WSP._linkHandler = function( state, tokens ) {
|
||||||
// FIXME: Properly handle something like [[{{Foo}}]]s
|
// FIXME: Properly handle something like [[{{Foo}}]]s
|
||||||
target = env.tokensToString( target );
|
target = env.tokensToString( target );
|
||||||
|
|
||||||
if ( tokenData.gc ) {
|
if ( attribDict.rel === 'mw:SimpleWikiLink' ) {
|
||||||
return '[[' + target + ']]' + tail;
|
return '[[' + target + ']]' + tail;
|
||||||
} else {
|
} else {
|
||||||
var content = state.serializer.serializeTokens( tokens ).join('');
|
var content = state.serializer.serializeTokens( tokens ).join('');
|
||||||
|
@ -565,16 +569,13 @@ WSP._linkHandler = function( state, tokens ) {
|
||||||
return '[[' + target + '|' + content + ']]' + tail;
|
return '[[' + target + '|' + content + ']]' + tail;
|
||||||
}
|
}
|
||||||
} else if ( attribDict.rel === 'mw:ExtLink' ) {
|
} else if ( attribDict.rel === 'mw:ExtLink' ) {
|
||||||
// TODO: use data-{gen,sem,special} instead!
|
return '[' + attribDict.href + ' ' +
|
||||||
if ( tokenData.stx === 'urllink' ) {
|
state.serializer.serializeTokens( tokens ).join('') +
|
||||||
return attribDict.href;
|
']';
|
||||||
} else if ( tokenData.gc ) {
|
} else if ( attribDict.rel === 'mw:UrlLink' ) {
|
||||||
return '[' + attribDict.href + ']';
|
return attribDict.href;
|
||||||
} else {
|
} else if ( attribDict.rel === 'mw:NumberedExtLink' ) {
|
||||||
return '[' + attribDict.href + ' ' +
|
return '[' + attribDict.href + ']';
|
||||||
state.serializer.serializeTokens( tokens ).join('') +
|
|
||||||
']';
|
|
||||||
}
|
|
||||||
} else if ( attribDict.rel === 'mw:Image' ) {
|
} else if ( attribDict.rel === 'mw:Image' ) {
|
||||||
// simple source-based round-tripping for now..
|
// simple source-based round-tripping for now..
|
||||||
// TODO: properly implement!
|
// TODO: properly implement!
|
||||||
|
|
Loading…
Reference in a new issue