/** * Add one or more components to the page. Output the <script> and/or <style> immediately * @param string $names comma separated list of components * */ static function GetComponents($names = '') { includeFile('combine.php'); $scripts = gp_combine::ScriptInfo($names); gpOutput::CombineFiles($scripts['css'], 'css', false); gpOutput::CombineFiles($scripts['js'], 'js', false); }
static function ScriptInfo($components, $dependencies = true) { global $config; static $root_call = true; if (is_string($components)) { $components = explode(',', strtolower($components)); $components = array_unique($components); } self::$scripts['colorbox-css']['file'] = '/include/thirdparty/colorbox139/' . $config['colorbox_style'] . '/colorbox.css'; $all_scripts = array(); //get all scripts foreach ($components as $component) { if (!array_key_exists($component, self::$scripts)) { $all_scripts[$component] = false; continue; } $script_info = self::$scripts[$component]; if ($dependencies && isset($script_info['requires'])) { $is_root_call = $root_call; $root_call = false; $all_scripts += gp_combine::ScriptInfo($script_info['requires']); $root_call = $is_root_call; } $all_scripts[$component] = self::$scripts[$component]; } if (!$root_call) { return $all_scripts; } $all_scripts = array_filter($all_scripts); $first_scripts = array(); //make sure jquery is the first if (array_key_exists('jquery', $all_scripts)) { $first_scripts['jquery'] = $all_scripts['jquery']; } // move any bootstrap components to front to prevent conflicts // hack for conflict between jquery ui button and bootstrap button foreach ($all_scripts as $key => $script) { if (!array_key_exists('package', $script)) { continue; } if ($script['package'] == 'bootstrap' || $script['package'] == 'bootstrap3') { $first_scripts[$key] = $script; } } $all_scripts = $first_scripts + $all_scripts; //remove any excludes $excludes = array(); foreach ($all_scripts as $key => $script) { if (empty($script['exclude'])) { continue; } if (!is_array($script['exclude'])) { $script['exclude'] = explode(',', $script['exclude']); } $excludes = array_merge($excludes, $script['exclude']); } $all_scripts = array_diff_key($all_scripts, array_flip($excludes)); //return an organized array for the root call $return = array('js' => array(), 'css' => array()); foreach ($all_scripts as $key => $script) { if (empty($script['file'])) { continue; } if (gpdebug && !empty($script['dev'])) { $script['file'] = $script['dev']; } if (empty($script['type'])) { $script['type'] = pathinfo($script['file'], PATHINFO_EXTENSION); } if ($script['type'] == 'less') { $script['type'] = 'css'; } $return[$script['type']][$key] = $script; } return $return; }