/** * Test: * - {@link ClientLibRegistry::getMap} * - {@link ClientLibRegistry::register} */ public function testRegister() { $libId = 'OAT/test'; // verify test lib does not exist $map = ClientLibRegistry::getRegistry()->getMap(); $this->assertFalse(empty($map)); $this->assertFalse(isset($map[$libId])); ClientLibRegistry::getRegistry()->register($libId, Template::js('fakePath/views/js/', 'tao')); $map = ClientLibRegistry::getRegistry()->getMap(); $this->assertInternalType('array', $map); $this->assertTrue(isset($map[$libId])); $this->assertEquals('js/fakePath/views/js/', $map[$libId]['path']); return $libId; }
/** * Removes unnescessary API references * * @param Resource $item */ protected function replaceDeprecatedApis($xhtml) { $dom = new DOMDocument('1.0', TAO_DEFAULT_ENCODING); if (!$dom->loadHTML($xhtml)) { throw new taoItems_models_classes_ItemModelException("An error occured while loading the XML content of the rendered item."); } $found = 0; $deprecatedApis = array('taoApi', 'wfApi'); foreach ($deprecatedApis as $pattern) { $found += taoItems_helpers_Xhtml::removeScriptElements($dom, '/' . $pattern . '/i'); } if ($found > 0) { common_Logger::i('found ' . $found . ' references to deprecated APIs, replacing with legacy API'); $taoItemsExt = common_ext_ExtensionsManager::singleton()->getExtensionById('taoItems'); $legacyApiSrc = Template::js('legacyApi/taoLegacyApi.min.js', 'taoItems'); taoItems_helpers_Xhtml::addScriptElement($dom, $legacyApiSrc); } return $dom->saveHTML(); }
protected function getUserScripts() { $userScripts = array(); $userScriptConfig = \common_ext_ExtensionsManager::singleton()->getExtensionById('taoQtiItem')->getConfig('userScripts'); if (is_array($userScriptConfig)) { foreach ($userScriptConfig as $data) { $userScripts[] = Template::js($data['src'], $data['extension']); } } return $userScripts; }
/** * Build script element for AMD loader * * @return string */ public static function getAmdLoader() { if (\common_session_SessionManager::isAnonymous()) { $amdLoader = array('src' => Template::js('lib/require.js', 'tao'), 'data-main' => TAOBASE_WWW . 'js/login', 'data-config' => get_data('client_config_url')); } else { if (\tao_helpers_Mode::is('production')) { $amdLoader = array('src' => Template::js('main.min.js', 'tao'), 'data-config' => get_data('client_config_url')); } else { $amdLoader = array('src' => Template::js('lib/require.js', 'tao'), 'data-config' => get_data('client_config_url'), 'data-main' => TAOBASE_WWW . 'js/main'); } } $amdScript = '<script id="amd-loader" '; foreach ($amdLoader as $attr => $value) { $amdScript .= $attr . '="' . $value . '" '; } return trim($amdScript) . '></script>'; }
/** * Create the AMD loader for the current context. * It will load login's modules for anonymous session. * Loads the bundle mode in production and the dynamic mode in debug. * * @param string $bundle the bundle URL * @param string $controller the controller module id * @param array $params additional parameters * @return string the script tag */ public static function getAmdLoader($bundle = null, $controller = null, $params = null) { $bundleMode = \tao_helpers_Mode::is('production'); $configUrl = get_data('client_config_url'); $requireJsUrl = Template::js('lib/require.js', 'tao'); $bootstrapUrl = Template::js('loader/bootstrap', 'tao'); $loader = new AmdLoader($configUrl, $requireJsUrl, $bootstrapUrl); if (\common_session_SessionManager::isAnonymous()) { $controller = 'controller/login'; $bundle = Template::js('loader/login.min.js', 'tao'); } if ($bundleMode) { return $loader->getBundleLoader($bundle, $controller, $params); } return $loader->getDynamicLoader($controller, $params); }