mcurry / asset Goto Github PK
View Code? Open in Web Editor NEWCakePHP Plugin - Automatically combine and compress CSS and JS files.
CakePHP Plugin - Automatically combine and compress CSS and JS files.
/* * Asset Packer CakePHP Plugin * Copyright (c) 2010 Matt Curry * www.PseudoCoder.com * http://github.com/mcurry/asset * * @author Matt Curry <[email protected]> * @license MIT * */ /* Notes */ * JavaScript packing only works with PHP5. If you're using PHP4 the scripts will still be merged into one file, but not packed. * A sample .htaccess file is included in the zip. Rename it and drop it in output dirs for improved performance. /* Instructions */ 1. You'll need a working version of CakePHP installed. This is running on 1.3.4 stable. 2. Download jsmin 1.1.0 or later and put it in vendors/jsmin. 3. Download CSSTidy 1.3 or later and put the contents in vendors/csstidy. 4. Download the plugin to /app/plugins/asset. 5. Include the helper in any controller that will need it. Most likely you will put it in AppController so that it's available to all your controllers: var $helpers = array('Asset.asset'); 6. In your layout and views include Javascript files as you normally would when using the $scripts_for_layout approach: $javascript->link('jquery', false); 7. Similarly include your css with the inline option set to false: $html->css('style', null, null, false); 8. Then in your layout file, in the head section, instead of using $scripts_for_layout call the helper: echo $asset->scripts_for_layout(); /* Options */ Options are set when including the helper. var $helpers = array('Asset.asset' => array('optionName' => 'optionValue')); * debug, default: false Cake debug = 0 packed js/css returned. $this->options['md5FileName']options['debug'] doesn't do anything. Cake debug > 0, $this->options['md5FileName']options['debug'] = false essentially turns the helper off. js/css not packed. Good for debugging your js/css files. Cake debug > 0, $this->options['md5FileName']options['debug'] = true packed js/css returned. Good for debugging this helper. * checkTs, default: false there is a *minimal* perfomance hit associated with looking up the filemtimes if you clean out your cached dir (as set below) on builds then you don't need this. * md5FileName, default: false the packed files are named by stringing together all the individual file names this can generate really long names, so by setting this option to true the long name is md5'd, producing a resonable length file name. * searchPaths, default: array() Additional paths for searching for css/js * cachePaths, default: array('css' => 'ccss', 'js' => 'cjs') Paths for storing the compressed files, relative to your webroot * cssCompression, default: high_compression default, low_compression, high_compression, highest_compression * fixCssImg, default: false replace relative img paths in css files with full http://... /* Tips */ * Remember to set the inline option to false for JS and CSS in your layout if you want them to be packed with the view scripts. * Setting DEBUG on will cause this helper to output the scripts the same way $scripts_for_layout would, effectifly turning it off while testing. * If you get a JavaScript error with a packed version of a file it's most likely missing a semi-colon somewhere. * Order is important. If you include script1 then script2 on one view and script2 then script1 on another, they will generate separate packed versions and will be treated by the browser as separate scripts.
This warning appears when no parameter is not passed in the variable helper.
var $helpers = array('Asset.asset');
Warning (2): array_merge() [http://php.net/function.array-merge]: Argument #2 is not an array [APP/plugins/asset/views/helpers/asset.php, line 66]
Not sure the right way to submit a patch, but I patched the asset helper to allow putting css in the head and js/codeblock at the bottom (before ) when debug is > 0.
patch.diff:
https://gist.github.com/736338
thanks for this (and other) great plugins you've done.
Can you create new methods in the helper that will allow one to echo out css and js individually? I'd like to be able to move my minimized/combined JS to the bottom of my html and keep the css minimized/combined in the . Currently you can only echo them out together.
I'd be willing to take a shot at writing the code if you like.
csstidy convert attribute values with php floatval function
if the current locale uses comma as decimal separator (or any other character instead of period) the resulting css file gets broken.
I'm using default installation of the plugin. Layout has
echo $asset->scripts_for_layout(array('js','codeblock'));
An elment is using
echo $this->Javascript->codeBlock($jsCode, array('inline' => 'false'));
But the code isn't echoed out to the layout.
When I tried with debug 0, the scripts that are included using $this->Javascript->link()
also doesn't get printed out..
Am I doing something wrong?
the plugin seems to not be able to pick up assets that are in a theme folder (located at /app/views/themed/nameOfTheme/webroot/css) when used with cakePHP 1.3
If I try to add script after calling $asset->scripts_for_layout()
the script won't be added.
ie.
in my layout I echo the css file inside head tag and I add scripts later in body page.
<html>
<head>
<?php echo $asset->scripts_for_layout('css');?>
</head>
<body>
this element add scriptblocks to view
<?php $this->element('banner');?>
<?php echo $asset->scripts_for_layout('codeblock');?>
</body>
</html>
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.