Page MenuHomePhabricator

wgWikibaseItemId should be available on the edit page
Open, Needs TriagePublic

Description

E.g. it can be used on the Main Page: https://en.wikipedia.org/wiki/Main_Page

mw.config.get( 'wgWikibaseItemId' )
> "Q5296"

But can't be used on the edit page: https://en.wikipedia.org/w/index.php?title=Main_Page&action=edit

mw.config.get( 'wgWikibaseItemId' )
> null

Event Timeline

Hoping to give additional visibility to this problem, I've documented this variable here:

https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#Page_specific_(Wikibase)

I've found where this variable is defined:

Wikbase repository / client/ClientHooks.php:

/**
 * Add the connected item prefixed id as a JS config variable, for gadgets etc.
 *
 * @param OutputPage $out
 * @param Skin $skin
 */
public static function onBeforePageDisplayAddJsConfig( OutputPage $out, Skin $skin ) {
    $prefixedId = $out->getProperty( 'wikibase_item' );

    if ( $prefixedId !== null ) {
        $out->addJsConfigVars( 'wgWikibaseItemId', $prefixedId );
    }
}

That method is attached to the [BeforePageDisplay](https://www.mediawiki.org/wiki/Manual:Hooks/BeforePageDisplay) hook, as far I can see:

Wikibase repository / client/WikibaseClient.php:

$wgHooks['BeforePageDisplay'][] = '\Wikibase\ClientHooks::onBeforePageDisplayAddJsConfig';

So I think that the problem is that it should be hooked also to one other hook listed here: Manual:Hooks.

The most notable hook I think it's [AlternateEdit](https://www.mediawiki.org/wiki/Manual:Hooks/AlternateEdit) which description is:

This hook gets called at the beginning of &action=edit, before any user permissions are checked or any edit checking is performed.

Wellverywell subscribed.

It also is undefined on diff pages.

I'm also interested might it be related to the bug that ULS languages aren't shown on diff pages?