Skip to content

Commit

Permalink
[#2618] Add resources.rst
Browse files Browse the repository at this point in the history
  • Loading branch information
tobes committed Aug 20, 2012
1 parent 2e8f224 commit 054164f
Showing 1 changed file with 157 additions and 0 deletions.
157 changes: 157 additions & 0 deletions doc/resources.rst
@@ -0,0 +1,157 @@
Resources
=========

.. Note::
Resources are only supported in the new Jinja2 style templates in Ckan 2.0
and above.

Resources are .css and .js files that may be included in an html page.
Resources are included in the page by using the
`{% resource [full resource name] %}` tag. Resources are grouped into libraries
and the full resource name consists of <library name>/<resource name>. It is
important to note that these resources will be added to the page as defined by
the resources not in the location of the `{% resource %}` tag. Duplicate
resources will not be added and any dependencies will be included as well as
the resources adding in the correct order (see below for details).

Libraries can be added to Ckan from extensions using the toolkit helper
function `add_resource(path, name)` where path is the path to the resource
directory relative to the file calling the function and name is the name of the
library. Resources will the be created for the library for any .js and .css
files found in the directory or it's subfolders. The resource name being the
name of the file including any path needed to get to it from the resource
directory. For greater control of the creation a resource.config file can be
created and placed in the resource directory (see below for details).

In debug mode resources are served un minified and unbundled (each resource is
served separately). In non-debug mode the files are served minified and bundled
(where allowed).

.. Note::
.js and .css resources must be supplied as un-minified files. Minified
files will be created. It is advised to include a .gitignore file to
prevent minified files being added to the repository.

resource.config
---------------

This file is used to define the resources in a directory and is sub folders.
Here is an example file. The general layout of the file and allowed syntax is
the same as for the .ini config file.

::
[main]
dont_bundle = jquery.js

force_top = html5.js

order = jquery.js jed.js

[IE conditional]

lte IE 8 = html5.js block_html5_shim
IE 7 = font-awesome/css/font-awesome-ie7.css
others = html5.js

[custom render order]

block_html5_shim = 1
html5.js = 2
select2/select2.css = 9

[inline scripts]

block_html5_shim =
var html5 = {shivMethods: false};

[depends]

vendor = jquery.js

[groups]

vendor =
jed.js
html5.js
select2/select2.js
select2/select2.css
bootstrap/js/bootstrap-transition.js
bootstrap/js/bootstrap-modal.js
bootstrap/js/bootstrap-alert.js
bootstrap/js/bootstrap-tab.js
bootstrap/js/bootstrap-button.js
font-awesome/css/font-awesome-ie7.css


[main]
~~~~~~

This can contain the following values

force_top
~~~~~~~~~

The resources listed will be placed in the head of the page. This is only relevant
to .js files which will by default will be added to the bottom of the page.

dont_bundle
~~~~~~~~~~~

Bundeling resources causes them to be served to the browser as a single
resource to prevent multiple requests to the server. The resources listed will
not be bundled. By default items will be bundled where possible. Note that
.css files can only be bundled if they are in the same directory.

order
~~~~~

This is used to make sure that resources are created in the order specified. It
should not generally be needed but is available if there are problems.


[IE conditional]
~~~~~~~~~~~~~~~~

This allows IE conditionals to be wrapped around resources eg
`<!--[if IE lte 8]--><script src="my_script.js"></script><![end if]-->`

The condition is supplied followed by a list of resources that need that condition.

others
~~~~~~

This is a special condition that means that the resource will also be available
for none IE browsers.

[custom render order]
~~~~~~~~~~~~~~~~~~~~~

By default resources have a render order this is 10 for .css and 20 for .js
resources. Sometimes we need to add resources before or after they would be
included an example being the html5shim.js that needs including before .css
resources. By providing a custom render order for the resource it's placement
can be altered. Lower numbered resources are rendered earlier. Note that
resources rendered in the head will still be placed before ones rendered in the
body.

[inline scripts]
~~~~~~~~~~~~~~~~

It is possible to define inline scripts in the resource.config file this can be
helpful in some situations but is probably best avoided if possible.

[depends]
~~~~~~~~~

Some times one resource depends on another eg many scripts need jquery.js
included in the page before them. External resource libraries will
automatically depend on the core ckan JavaScript modules so do not need to
specify this.

[groups]
~~~~~~~~

Groups of resources can be specified this allows the group to be included by
just using it's name rather than having to specify each resource individuality
when requesting them. Groups can be referred to in many places in the
resource.config file eg. [depends]

0 comments on commit 054164f

Please sign in to comment.