/** * Adds JavaScript */ public static function addJS() { global $wgClickTrackingStyleVersion; // HACK: Only add scripts when they're really needed by not initializing UIH here //UsabilityInitiativeHooks::initialize(); UsabilityInitiativeHooks::addScript('ClickTracking/ClickTracking.js', $wgClickTrackingStyleVersion); UsabilityInitiativeHooks::addVariables(array('wgTrackingToken' => ClickTrackingHooks::get_session_id(), 'wgClickTrackingIsThrottled' => ClickTrackingHooks::isUserThrottled())); return true; }
/** * EditPage::showEditForm:initial hook * Adds the modules to the edit form */ public static function addModules(&$toolbar) { global $wgOut, $wgUser, $wgJsMimeType; global $wgWikiEditorModules, $wgUsabilityInitiativeResourceMode; // Modules $preferences = array(); $enabledModules = array(); $modules = $wgWikiEditorModules; $modules['global'] = true; foreach ($modules as $module => $enable) { if ($enable['global'] || $enable['user'] && isset(self::$modules[$module]['preferences']['enable']) && $wgUser->getOption(self::$modules[$module]['preferences']['enable']['key']) || $module == 'global') { if ($module !== 'global') { UsabilityInitiativeHooks::initialize(); } $enabledModules[$module] = true; // Messages if (isset(self::$modules[$module]['i18n'], self::$modules[$module]['messages'])) { wfLoadExtensionMessages(self::$modules[$module]['i18n']); UsabilityInitiativeHooks::addMessages(self::$modules[$module]['messages']); } // Variables if (isset(self::$modules[$module]['variables'])) { $variables = array(); foreach (self::$modules[$module]['variables'] as $variable) { global ${$variable}; $variables[$variable] = ${$variable}; } UsabilityInitiativeHooks::addVariables($variables); } // Preferences if (isset(self::$modules[$module]['preferences'])) { foreach (self::$modules[$module]['preferences'] as $name => $preference) { if (!isset($preferences[$module])) { $preferences[$module] = array(); } $preferences[$module][$name] = $wgUser->getOption($preference['key']); } } } else { $enabledModules[$module] = false; } } // Load global messages wfLoadExtensionMessages('WikiEditor'); UsabilityInitiativeHooks::addMessages(self::$messages); // Add all scripts foreach (self::$scripts[$wgUsabilityInitiativeResourceMode] as $script) { UsabilityInitiativeHooks::addScript(basename(dirname(__FILE__)) . '/' . $script['src'], $script['version']); } // Preferences (maybe the UsabilityInitiative class could do most of this for us?) $wgOut->addScript(Xml::tags('script', array('type' => $wgJsMimeType), 'var wgWikiEditorPreferences = ' . FormatJson::encode($preferences, true) . ";\n" . 'var wgWikiEditorEnabledModules = ' . FormatJson::encode($enabledModules, true) . ';')); return true; }
/** * BeforePageDisplay hook * Adds the modules to the edit form */ public static function addModules() { global $wgUser, $wgJsMimeType, $wgOut; global $wgVectorModules, $wgUsabilityInitiativeResourceMode; // Don't load Vector modules for non-Vector skins // They won't work but will throw unused JS in the client's face // Using instanceof to catch any skins subclassing Vector if (!$wgUser->getSkin() instanceof SkinVector) { return true; } // Modules $preferences = array(); $enabledModules = array(); foreach ($wgVectorModules as $module => $enable) { if ($enable['global'] || $enable['user'] && isset(self::$modules[$module]['preferences']['enable']) && $wgUser->getOption(self::$modules[$module]['preferences']['enable']['key'])) { UsabilityInitiativeHooks::initialize(); $enabledModules[$module] = true; // Messages if (isset(self::$modules[$module]['i18n'], self::$modules[$module]['messages'])) { wfLoadExtensionMessages(self::$modules[$module]['i18n']); UsabilityInitiativeHooks::addMessages(self::$modules[$module]['messages']); } // Variables if (isset(self::$modules[$module]['variables'])) { $variables = array(); foreach (self::$modules[$module]['variables'] as $variable) { global ${$variable}; $variables[$variable] = ${$variable}; } UsabilityInitiativeHooks::addVariables($variables); } // Preferences if (isset(self::$modules[$module]['preferences'])) { foreach (self::$modules[$module]['preferences'] as $name => $preference) { if (!isset($preferences[$module])) { $preferences[$module] = array(); } $preferences[$module][$name] = $wgUser->getOption($preference['key']); } } } else { $enabledModules[$module] = false; } } // Add all scripts foreach (self::$scripts[$wgUsabilityInitiativeResourceMode] as $script) { UsabilityInitiativeHooks::addScript(basename(dirname(__FILE__)) . '/' . $script['src'], $script['version']); } // Preferences (maybe the UsabilityInitiative class could do most of this for us?) $wgOut->addScript(Xml::tags('script', array('type' => $wgJsMimeType), 'var wgVectorPreferences = ' . FormatJson::encode($preferences, true) . ";\n" . 'var wgVectorEnabledModules = ' . FormatJson::encode($enabledModules, true) . ';')); return true; }