Skip to content

Commit

Permalink
feature:2114
Browse files Browse the repository at this point in the history
footer_script can use multiple required scripts (like combine_script).
automaticaly load know scripts.

git-svn-id: http://piwigo.org/svn/trunk@9580 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information
patdenice committed Mar 9, 2011
1 parent 639fd15 commit a9a05f3
Showing 1 changed file with 30 additions and 7 deletions.
37 changes: 30 additions & 7 deletions include/template.class.php
Expand Up @@ -658,7 +658,10 @@ function block_footer_script($params, $content, &$smarty, &$repeat)
$content = trim($content);
if ( !empty($content) )
{ // second call
$this->scriptLoader->add_inline( $content, @$params['require'] );
$this->scriptLoader->add_inline(
$content,
empty($params['require']) ? array() : explode(',', $params['require'])
);
}
}

Expand Down Expand Up @@ -934,11 +937,14 @@ function add_inline($code, $require)
{
if(!empty($require))
{
if(!isset($this->registered_scripts[$require]))
fatal_error("inline script not found require $require");
$s = $this->registered_scripts[$require];
if($s->load_mode==2)
$s->load_mode=1; // until now the implementation does not allow executing inline script depending on another async script
foreach ($require as $id)
{
if(!isset($this->registered_scripts[$id]))
$this->load_known_required_script($id, 1) or fatal_error("inline script not found require $id");
$s = $this->registered_scripts[$id];
if($s->load_mode==2)
$s->load_mode=1; // until now the implementation does not allow executing inline script depending on another async script
}
}
$this->inline_scripts[] = $code;
}
Expand Down Expand Up @@ -974,6 +980,13 @@ function add($id, $load_mode, $require, $path, $version=0)
foreach (self::$ui_core_dependencies as $script_id => $required_ids)
$this->add($script_id, $load_mode, $required_ids, null, $version);
}

// Try to load undefined required script
foreach ($script->precedents as $script_id)
{
if (! isset( $this->registered_scripts[$script_id] ) )
$this->load_known_required_script($script_id, $load_mode);
}
}

function did_head()
Expand Down Expand Up @@ -1113,7 +1126,7 @@ private static function fill_well_known($id, $script)
$required_ids = array('jquery', 'jquery.effects');

if ( empty($script->path) )
$script->path = dirname(self::$known_paths['jquery.ui'])."/$id.min.js";
$script->path = dirname(self::$known_paths['jquery.effects'])."/$id.min.js";
}

foreach ($required_ids as $required_id)
Expand All @@ -1124,6 +1137,16 @@ private static function fill_well_known($id, $script)
}
}

private function load_known_required_script($id, $load_mode)
{
if ( isset(self::$known_paths[$id]) or strncmp($id, 'jquery.ui.', 10)==0 or strncmp($id, 'jquery.effetcs.', 15)==0 )
{
$this->add($id, $load_mode, array(), null);
return true;
}
return false;
}

private function compute_script_topological_order($script_id, $recursion_limiter=0)
{
if (!isset($this->registered_scripts[$script_id]))
Expand Down

0 comments on commit a9a05f3

Please sign in to comment.