-
Notifications
You must be signed in to change notification settings - Fork 0
Based on the javascript_auto_include_plugin but allows to include all sorts of things, not just js
cristibalan/asset_auto_include
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
AssetAutoInclude ===================== == Resources script/plugin install git://github.com/evilchelu/asset_auto_include.git == Usage Add the following to the head of your template file <%= asset_auto_include_tags :javascript, {options} %> <%= asset_auto_include_tags :stylesheet, {options} %> Options: :auto_dir this can be set to change the location of the autoloaded files, it is 'auto' by default, it can be set to 'views' for compatibility with javascript_auto_include Javascript specific options: :method the ActionView::Helper::AssetTag to use, the default is 'javascript_include_tag' :extension the file extension for the javascript file, 'js' is the default :directory the directory for the javascript files, 'javascripts' is the default Stylesheet specific options: :method the ActionView::Helper::AssetTag to use, the default is 'stylesheet_link_tag' :extension the file extension for the stylesheet file, 'css' is the default :directory the directory for the stylesheet files, 'stylesheets' is the default :template_extension used for an alternate templating system, 'sass' is the default :template_directory used for an alternate templating sytem, 'stylesheets/sass' is the default Now each time the template is loaded asset files in the public/(javascripts|stylesheets)/ folder that correspond to the name of the current controller or view will be auto loaded. For example: /public /javascripts /auto /accounts show.js /public /stylesheets /auto users.css /users edit.css Assuming the above file structure loading each of the following urls would load: mydomain.com/accounts # no js files loaded mydomain.com/accounts/show/1 # loads auto/accounts/show.js mydomain.com/users # loads auto/users/users.css mydomain.com/users/1/edit # loads auto/users/users.css loads auto/users/edit.css There's also support for sass files. When using :stylesheet, the sass directory is also checked, along with the stylesheets directory. /public /stylesheets /sass /auto /posts view.sass Assuming the above file structure loading each of the following urls would load: mydomain.com/users/1 # loads auto/posts/view.css Namespace is supported so for the following /public /javascripts /auto admin.js /admin /dashboard index.js Assuming the above file structure loading each of the following urls would load: mydomain.com/admin/dashboard # loads auto/admin/dashboard/index.js and auto/admin.js You can also load a default .js or .css file. They should be located at /public /javascripts auto.js /public /stylesheets auto.css Now each time the template is loaded javascript files in the public/javascripts/views folder that correspond to the name of the current controller or view will be auto loaded. It's also possible for the same javascript file to be loaded by multiple views by adding the name of each view to the filename separated by the "-" character, e.g. to load a javascript file in the new and edit views create a file named new-edit.js. Any number of views can be strung together using this naming convention. For example: /public /javascripts /auto users.js /users edit.js roles.js /accounts show-new-edit-create.js show.js Assuming the above file structure loading each of the following urls would include: mydomain.com/users # includes users.js mydomain.com/users/edit/1 # includes users.js and edit.js mydomain.com/users/show/1 # includes users.js mydomain.com/roles # includes roles.js mydomain.com/accounts # no files included mydomain.com/accounts/show/1 # includes show.js and show-new-edit-create.js mydomain.com/accounts/new # includes show-new-edit-create.js mydomain.com/accounts/edit/1 # includes show-new-edit-create.js mydomain.com/accounts/create # includes show-new-edit-create.js Sometimes, it may be useful to dynamically add javascript files, based on logic or a particular view or partial. With JavascriptAutoInclude you can also manually include files to be loaded and they will be displayed with <%= javascript_auto_include_tag %>. These files should be in the javascript directory, not the autoloading views directory. To use the manually loading feature in a view, you can add <%= register_asset_auto_include 'manual', :javascript %> <%= register_asset_auto_include 'manual', :stylesheet %> The following will register a file for both js and css <%= register_asset_auto_include 'manual', :both %> <%= register_asset_auto_include 'manual' %> In a controller you can use AssetAutoInclude::register 'manual' #registers both javascript and stylesheet This would put <script src="/javascripts/manual.js"> in the <head>, after the javascript that is autoloaded from the views directory. It would also put <link href="/stylesheets/manual.css rel="stylesheet" type="text/css" /> in the <head> Registering from other plugins You can register a callback from AssetAutoInclude that will give another class the opportunity to manually add assets before the html is inserted. Include the following to the class def initialize AssetAutoInclude::register_callback(self) end You can optionally add a second param of either :javascript or :stylesheet to include just one of those asset in the callback You must also include a function in the class to handle the callback def auto_include_assets(asset_type, reset) def self.auto_include_assets(asset_type, reset) case asset_type when :javascript return 'klass' when :stylesheet return ['css_klass', 'no_klass'] end end end == Aknowledgements This plugin was originally based on the javascript_auto_include by Jamie Dyer. If you want the original plugin: http://github.com/kernow/javascript_auto_include/tree/master http://hosting.media72.co.uk/blog/2008/05/13/asset-auto-include-rails-plugin/
About
Based on the javascript_auto_include_plugin but allows to include all sorts of things, not just js
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published