/** * AjaxAddScript hook * Adds scripts */ public static function addResources($out) { global $wgExtensionAssetsPath, $wgJsMimeType; global $wgUsabilityInitiativeResourceMode; global $wgEnableJS2system, $wgEditToolbarRunTests; global $wgStyleVersion; wfRunHooks('UsabilityInitiativeLoadModules'); if (!self::$doOutput) { return true; } // Default to raw $mode = $wgUsabilityInitiativeResourceMode; // Just an alias if (!isset(self::$scriptFiles['base_sets'][$mode])) { $mode = 'raw'; } // Include base-set of scripts self::$scripts = array_merge(self::$scriptFiles['base_sets'][$mode], self::$scriptFiles['modules'][$mode], self::$scripts); // Provide enough support to make things work, even when js2 is not // in use (eventually it will be standard, but right now it's not) if (!$wgEnableJS2system) { $out->includeJQuery(); } // Include base-set of styles self::$styles = array_merge(self::$styleFiles['base_sets'][$mode], self::$styles); if ($wgEditToolbarRunTests) { // Include client side tests self::$scripts = array_merge(self::$scripts, self::$scriptFiles['tests']); } // Loops over each script foreach (self::$scripts as $script) { // Add javascript to document if ($script['src'][0] == '/') { // Path is relative to $wgScriptPath global $wgScriptPath; $src = "{$wgScriptPath}{$script['src']}"; } else { // Path is relative to $wgExtensionAssetsPath $src = "{$wgExtensionAssetsPath}/UsabilityInitiative/{$script['src']}"; } $version = isset($script['version']) ? $script['version'] : $wgStyleVersion; $out->addScriptFile($src, $version); } // Transforms messages into javascript object members foreach (self::$messages as $i => $message) { $escapedMessageValue = Xml::escapeJsString(wfMsg($message)); $escapedMessageKey = Xml::escapeJsString($message); self::$messages[$i] = "'{$escapedMessageKey}':'{$escapedMessageValue}'"; } // Add javascript to document if (count(self::$messages) > 0) { $out->addScript(Xml::tags('script', array('type' => $wgJsMimeType), 'mw.usability.addMessages({' . implode(',', self::$messages) . '});')); } // Loops over each style foreach (self::$styles as $style) { // Add css for various styles $out->addLink(array('rel' => 'stylesheet', 'type' => 'text/css', 'href' => $wgExtensionAssetsPath . "/UsabilityInitiative/" . "{$style['src']}?{$style['version']}")); } return true; }