Esempio n. 1
0
 /**
  * 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);
 }
Esempio n. 2
0
 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;
 }