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.