. See OutputPage. * * @ingroup ResourceLoader * @internal */ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule { protected $origin = self::ORIGIN_CORE_INDIVIDUAL; protected $targets = [ 'desktop', 'mobile' ]; /** * @param ResourceLoaderContext|null $context * @return string[] List of module names */ public function getDependencies( ResourceLoaderContext $context = null ) { return [ 'user.defaults' ]; } /** * @param ResourceLoaderContext $context * @return string JavaScript code */ public function getScript( ResourceLoaderContext $context ) { $user = $context->getUserObj(); $tokens = [ 'patrolToken' => $user->getEditToken( 'patrol' ), 'watchToken' => $user->getEditToken( 'watch' ), 'csrfToken' => $user->getEditToken(), ]; $script = 'mw.user.tokens.set(' . $context->encodeJson( $tokens ) . ');'; $options = $user->getOptions( User::GETOPTIONS_EXCLUDE_DEFAULTS ); // Optimisation: Only output this function call if the user has non-default settings. if ( $options ) { $script .= 'mw.user.options.set(' . $context->encodeJson( $options ) . ');'; } // Use FILTER_NOMIN annotation to prevent needless minification and caching (T84960). return ResourceLoader::FILTER_NOMIN . $script; } /** * @return bool */ public function supportsURLLoading() { return false; } /** * @return string */ public function getGroup() { return 'private'; } }