mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/DiscussionTools
synced 2024-11-24 00:13:36 +00:00
Include 'false' results in 'transcludedfrom' API response
Skipping them could result in incorrect handling when RESTBase HTML is outdated. When a result for a given comment is not found, display an error instead of assuming it is not transcluded. Bug: T262065 Change-Id: I14a7a0a25d5181b5c49bd5677f0c002dce5a3cb9
This commit is contained in:
parent
9b965c45b5
commit
7ad6328223
|
@ -52,14 +52,10 @@ class ApiDiscussionTools extends ApiBase {
|
||||||
$transcludedFrom = [];
|
$transcludedFrom = [];
|
||||||
foreach ( $comments as $comment ) {
|
foreach ( $comments as $comment ) {
|
||||||
$from = $comment->getTranscludedFrom();
|
$from = $comment->getTranscludedFrom();
|
||||||
// 'false' is the most likely result, so don't bother sending it,
|
$transcludedFrom[ $comment->getId() ] = $from;
|
||||||
// the client can just assume it if the key is missing
|
$legacyId = $comment->getLegacyId();
|
||||||
if ( $from !== false ) {
|
if ( $legacyId ) {
|
||||||
$transcludedFrom[ $comment->getId() ] = $from;
|
$transcludedFrom[ $legacyId ] = $from;
|
||||||
$legacyId = $comment->getLegacyId();
|
|
||||||
if ( $legacyId ) {
|
|
||||||
$transcludedFrom[ $legacyId ] = $from;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,14 @@ function checkCommentOnPage( pageName, oldId, commentId ) {
|
||||||
transcludedFrom = response.transcludedfrom;
|
transcludedFrom = response.transcludedfrom;
|
||||||
|
|
||||||
isTranscludedFrom = transcludedFrom[ commentId ];
|
isTranscludedFrom = transcludedFrom[ commentId ];
|
||||||
if ( isTranscludedFrom ) {
|
if ( isTranscludedFrom === undefined ) {
|
||||||
|
// The comment wasn't found when generating the "transcludedfrom" data,
|
||||||
|
// so we don't know where the reply should be posted. Just give up.
|
||||||
|
return $.Deferred().reject( 'discussiontools-commentid-notfound-transcludedfrom', { errors: [ {
|
||||||
|
code: 'discussiontools-commentid-notfound-transcludedfrom',
|
||||||
|
html: mw.message( 'discussiontools-error-comment-disappeared' ).parse()
|
||||||
|
} ] } ).promise();
|
||||||
|
} else if ( isTranscludedFrom ) {
|
||||||
mwTitle = isTranscludedFrom === true ? null : mw.Title.newFromText( isTranscludedFrom );
|
mwTitle = isTranscludedFrom === true ? null : mw.Title.newFromText( isTranscludedFrom );
|
||||||
// If this refers to a template rather than a subpage, we never want to edit it
|
// If this refers to a template rather than a subpage, we never want to edit it
|
||||||
follow = mwTitle && mwTitle.getNamespaceId() !== mw.config.get( 'wgNamespaceIds' ).template;
|
follow = mwTitle && mwTitle.getNamespaceId() !== mw.config.get( 'wgNamespaceIds' ).template;
|
||||||
|
|
Loading…
Reference in a new issue