Author: ornicar2
Date: 2010-02-04 00:13:47 +0100 (Thu, 04 Feb 2010)
New Revision: 27520
Modified:
plugins/diemPlugin/trunk/dmCorePlugin/config/dm/config.yml
plugins/diemPlugin/trunk/dmCorePlugin/data/skeleton/config/dm/config.yml
plugins/diemPlugin/trunk/dmCorePlugin/lib/response/asset/compressor/dmJavascriptCompressor.php
plugins/diemPlugin/trunk/dmCorePlugin/lib/response/dmWebResponse.php
plugins/diemPlugin/trunk/dmCorePlugin/lib/view/html/layout/dmCoreLayoutHelper.php
Log:
[Diem]
- made possible to include javascript libraries in the <head> section. It
degrades performances but some symfony plugins write javascript code directly
into HTML, and need jQuery to be loaded before. See the "head_inclusion" option
in config/dm/config.yml
Modified: plugins/diemPlugin/trunk/dmCorePlugin/config/dm/config.yml
===================================================================
--- plugins/diemPlugin/trunk/dmCorePlugin/config/dm/config.yml 2010-02-03
22:14:52 UTC (rev 27519)
+++ plugins/diemPlugin/trunk/dmCorePlugin/config/dm/config.yml 2010-02-03
23:13:47 UTC (rev 27520)
@@ -9,8 +9,12 @@
js:
compress: true # (RECOMMENDED) Performance : Minifies
javascripts and put them into a single compressed file
cdn: # use cdn to load libraries
- enabled: false # Will use cdn to load javascript
libraries faster
+ enabled: false # Will use cdn to load javascript
libraries
lib.jquery:
'http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'
+ head_inclusion: [ ] # If you want some libraries to be
included in the <head> section,
+ # declare them here. This degrades
performances but is required
+ # by some symfony plugins that embed
jQuery code.
+ # example: [ lib.jquery ]
css:
compress: true # (RECOMMENDED) Performance : Minifies
stylesheets and put them into a single compressed file
Modified:
plugins/diemPlugin/trunk/dmCorePlugin/data/skeleton/config/dm/config.yml
===================================================================
--- plugins/diemPlugin/trunk/dmCorePlugin/data/skeleton/config/dm/config.yml
2010-02-03 22:14:52 UTC (rev 27519)
+++ plugins/diemPlugin/trunk/dmCorePlugin/data/skeleton/config/dm/config.yml
2010-02-03 23:13:47 UTC (rev 27520)
@@ -10,6 +10,10 @@
compress: true # (RECOMMENDED) Performance : Minifies
javascripts and put them into a single compressed file
cdn:
enabled: false # (RECOMMENDED) uses google cdn to
load jQuery
+ head_inclusion: [ ] # If you want some libraries to be
included in the <head> section,
+ # declare them here. This degrades
performances but is required
+ # by some symfony plugins that embed
jQuery code.
+ # example: [ lib.jquery ]
css:
compress: true # (RECOMMENDED) Performance : Minifies
stylesheets and put them into a single compressed file
Modified:
plugins/diemPlugin/trunk/dmCorePlugin/lib/response/asset/compressor/dmJavascriptCompressor.php
===================================================================
---
plugins/diemPlugin/trunk/dmCorePlugin/lib/response/asset/compressor/dmJavascriptCompressor.php
2010-02-03 22:14:52 UTC (rev 27519)
+++
plugins/diemPlugin/trunk/dmCorePlugin/lib/response/asset/compressor/dmJavascriptCompressor.php
2010-02-03 23:13:47 UTC (rev 27520)
@@ -10,6 +10,20 @@
));
}
+ public function preProcess()
+ {
+ parent::preProcess();
+
+ // remove head included javascripts from compression
+ foreach($this->assets as $webPath => $options)
+ {
+ if (isset($options['head_inclusion']))
+ {
+ unset($this->assets[$webPath]);
+ }
+ }
+ }
+
public function addToBlackList($fileName)
{
$this->mergeOption('black_list', (array) $fileName);
Modified: plugins/diemPlugin/trunk/dmCorePlugin/lib/response/dmWebResponse.php
===================================================================
--- plugins/diemPlugin/trunk/dmCorePlugin/lib/response/dmWebResponse.php
2010-02-03 22:14:52 UTC (rev 27519)
+++ plugins/diemPlugin/trunk/dmCorePlugin/lib/response/dmWebResponse.php
2010-02-03 23:13:47 UTC (rev 27520)
@@ -182,6 +182,11 @@
{
return $this;
}
+
+ if(in_array($asset, sfConfig::get('dm_js_head_inclusion')))
+ {
+ $options['head_inclusion'] = true;
+ }
$this->validatePosition($position);
@@ -228,6 +233,27 @@
return $this;
}
+
+ public function getHeadJavascripts()
+ {
+ $headInclusion = sfConfig::get('dm_js_head_inclusion');
+
+ if(empty($headInclusion))
+ {
+ return array();
+ }
+
+ $javascripts = array();
+ foreach($this->getJavascripts() as $webPath => $options)
+ {
+ if (isset($options['head_inclusion']))
+ {
+ $javascripts[$webPath] = $options;
+ }
+ }
+
+ return $javascripts;
+ }
/*
* Means that request has been sent by a human, and the application will
send html for a browser.
Modified:
plugins/diemPlugin/trunk/dmCorePlugin/lib/view/html/layout/dmCoreLayoutHelper.php
===================================================================
---
plugins/diemPlugin/trunk/dmCorePlugin/lib/view/html/layout/dmCoreLayoutHelper.php
2010-02-03 22:14:52 UTC (rev 27519)
+++
plugins/diemPlugin/trunk/dmCorePlugin/lib/view/html/layout/dmCoreLayoutHelper.php
2010-02-03 23:13:47 UTC (rev 27520)
@@ -28,7 +28,8 @@
$this->renderMetas().
$this->renderStylesheets().
$this->renderFavicon().
- $this->renderIeHtml5Fix();
+ $this->renderIeHtml5Fix().
+ $this->renderHeadJavascripts();
}
public function renderBodyTag()
@@ -172,6 +173,29 @@
return $html;
}
+
+ /*
+ * JavaScript libs declared in dm_js_head_inclusion
+ * are declared in the <head> section
+ */
+ public function renderHeadJavascripts()
+ {
+ $javascripts =
$this->serviceContainer->getService('response')->getHeadJavascripts();
+ if(empty($javascripts))
+ {
+ return '';
+ }
+
+ $relativeUrlRoot =
dmArray::get($this->serviceContainer->getParameter('request.context'),
'relative_url_root');
+
+ $html = '';
+ foreach($javascripts as $file => $options)
+ {
+ $html .= '<script type="text/javascript" src="'.($file{0} === '/' ?
$relativeUrlRoot.$file : $file).'"></script>';
+ }
+
+ return $html;
+ }
public function renderJavascripts()
{
@@ -181,7 +205,7 @@
*/
$javascripts = $this->dispatcher->filter(
new sfEvent($this, 'dm.layout.filter_javascripts'),
- $this->getService('response')->getJavascripts()
+ $this->serviceContainer->getService('response')->getJavascripts()
)->getReturnValue();
sfConfig::set('symfony.asset.javascripts_included', true);
--
You received this message because you are subscribed to the Google Groups
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/symfony-svn?hl=en.