DesktopArticleTarget.init: Support '&editintro=…' in edit links

Support gadgets adding '&editintro=…' to the default edit link.
It was already supported when opening the link in a new window, or
following an external link, or when clicking a section edit link.

Also, clean up these parameters when leaving the editor. This also
applies to 'preload', 'preloadparams', 'preloadtitle', 'summary'.

KNOWN BUG: Only works the first time the editor is loaded on the page.
Afterwards, DesktopArticleTarget.init lets DesktopArticleTarget handle
initialization, and it ignores extra parameters. I made a few attempts
at fixing this, but I only broke it further. I don't understand why
the history handling code even works. Maybe I'll come back to this.

Bug: T56029
Change-Id: I38fcde573f728250aaa125b391815e7fac7df362
This commit is contained in:
Bartosz Dziewoński 2023-05-29 02:12:08 +02:00 committed by Bartosz Dziewoński
parent 53217d24e0
commit 872679aeec
2 changed files with 11 additions and 4 deletions

View file

@ -1170,6 +1170,13 @@ ve.init.mw.DesktopArticleTarget.prototype.restorePage = function () {
url.searchParams.delete( 'oldid' );
}
// Remove parameters which are only intended for the editor, not for read mode
url.searchParams.delete( 'editintro' );
url.searchParams.delete( 'preload' );
url.searchParams.delete( 'preloadparams[]' );
url.searchParams.delete( 'preloadtitle' );
url.searchParams.delete( 'summary' );
// If there are any other query parameters left, re-use that URL object.
// Otherwise use the canonical style view URL (T44553, T102363).
var keys = [];

View file

@ -645,10 +645,10 @@
// way to do this. See also similar code in the DesktopArticleTarget constructor.
history.replaceState( { tag: 'visualeditor' }, '', url );
// Set action=edit or veaction=edit/editsource
history.pushState( { tag: 'visualeditor' }, '', mode === 'source' ? veEditSourceUrl : veEditUrl );
// Use linkUrl to preserve parameters like 'editintro' (T56029)
history.pushState( { tag: 'visualeditor' }, '', linkUrl || ( mode === 'source' ? veEditSourceUrl : veEditUrl ) );
// Update URL instance
url = veEditUrl;
url = linkUrl || veEditUrl;
}
activateTarget( mode, section, undefined, modified );
@ -1282,7 +1282,7 @@
// back button from breaking when used to exit VE. FIXME: there should be a better
// way to do this. See also similar code in the DesktopArticleTarget constructor.
history.replaceState( { tag: 'visualeditor' }, '', url );
// Use linkUrl
// Use linkUrl to preserve the 'section' parameter and others like 'editintro' (T56029)
history.pushState( { tag: 'visualeditor' }, '', linkUrl );
}
// Update URL instance