/** * {@inheritdoc} */ public function filterDump(AssetInterface $asset) { if (preg_match('/jquery_plugins_overrides\\.js$/', $asset->getSourcePath())) { $content = ''; foreach (AssetRegistry::getAssets() as $module) { if ($module instanceof JavascriptModule && $module->getJqueryPlugins()) { $name = $module->getModuleName(); foreach ($module->getJqueryPlugins() as $method) { $script = <<<JAVASCRIPT //Override {$name} plugin to load with RequireJs \$.fn.{$method} = function () { var element = \$(this); var args = arguments; require(['{$name}'], function (module) { return element.each(function () { \$.fn.{$method}.apply(element,args); }); }); return element; }; JAVASCRIPT; $content .= $script; } $asset->setContent($content); } } } }
/** * {@inheritdoc} */ public function filterDump(AssetInterface $asset) { if (preg_match('/require_js_config\\.js$/', $asset->getSourcePath())) { $config = ['baseUrl' => '/', 'waitSeconds' => false, 'paths' => [], 'shim' => []]; foreach (AssetRegistry::getAssets() as $module) { if ($module instanceof JavascriptModule) { $path = array_key_value($this->config, 'cdn') && $module->getCdn() ? $module->getCdn() : $module->getPath(); $config['paths'][$module->getModuleName()] = preg_replace('/\\.js$/', '', $path); if ($module->getDependencies()) { $config['shim'][$module->getModuleName()]['deps'] = $module->getDependencies(); } if ($module->getExports()) { $config['shim'][$module->getModuleName()]['exports'] = $module->getExports(); } if ($module->getInit()) { $config['shim'][$module->getModuleName()]['init'] = '{function}' . $module->getInit() . '{/function}'; } } } $configJson = json_encode($config, JSON_UNESCAPED_SLASHES); $configJs = str_replace(['"{function}', '{/function}"', '\\"'], ['function(){', '}', '"'], $configJson); $content = <<<EOS require.config({$configJs}); EOS; $asset->setContent($content); } }
/** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $assets = AssetRegistry::getAssets(); $table = new Table($output); $table->setHeaders(['Name', 'Assets', 'RequireJS']); $names = array_keys($assets); $lastName = array_pop($names); foreach ($assets as $name => $namedAsset) { if ($namedAsset instanceof AssetBundle) { foreach ($namedAsset->getAssets() as $index => $asset) { $table->addRow([$name, $asset->getPath()]); $name = ''; } } else { $table->addRow([$namedAsset->getName(), $namedAsset->getPath(), $namedAsset instanceof JavascriptModule ? $namedAsset->getModuleName() : '']); } if ($name !== $lastName) { $table->addRow(new TableSeparator()); } } $table->render(); }