Parse scripts, css, special files as GSP

  • Tags : javascript, css, gsp
  • Latest : 1.3
  • Last Updated: 08 January 2011
  • Grails version : *
  • Authors : null
1 vote
Dependency :
compile ":gsp-arse:1.3"

Documentation

Summary

Installation

Install it:
grails install-plugin gsp-arse

Then add a URL mapping to your projects UrlMappings.groovy file e.g.

"/resource/$path**"(controller: 'script', action: 'parse')
You can change "resource" to whatever you like.

Then change your references to point to that URL in your layouts/main.gsp, or any specific views like this:

<link rel="stylesheet" href="${resource(dir:'resource/css',file:'main.css')}" />
<script type="text/javascript" src="${resource(dir:'resource/js',file:'application.js')}?color=FA8DFF">
</script>

Description

GSParse

This plugin adds parsing of resource files (e.g. javascript, css) from the base path directory as GSP files so you can use tags and data binding. The primary motivation for this was providing a way to pass in relative paths to resources in Javascrip to access controllers for AJAX calls. For example you can do this in your Javascript:-

$(function() {
    $("#task").autocomplete('${g.createLink(controller: "task", action: "suggestTask")}', {
        max: ${max},
        width: 300
    });
});

The g.createLink tag is now relative to the url, so if the URL to your controller contains a /id, this js file will still work.

It also allows CSS to use and set variables, or use paths to resources easily. So for example you can do this:

body {
    background: url('${g.resource(dir: "image", file: "thing.png")}');
    color: #${color};
}

To use the GSP parsing for javascript you use the controller url with the file path add a URL Mapping like this to make the URLs pretty

"/resource/$path**"(controller: 'script', action: 'parse')
then just include something like this in your layout templates:

<script type="text/javascript" src="resource/js/application.js"></script>

The mime type is guessed for files with .js or .css endings otherwise set to text/plain. You can override the mimetype using the type parameter. The primary type is fixed as text.

Important: Version 1.1 now supports grails.mime.file.extensions, which parses the file extensions from URLs. When enabled it takes the file extension and mime type from response.format

e.g. resource/somewhere/application.blat?type=javascript

returns mime type text/javascript

"script/somewhere/myfile.blat?type=blat"

returns mime type text/blat

To set a parameter just add it to the URL. For example to set the color for the CSS example above add ?color=FFF to the url.

see http://nerderg.com/GSParse for more documentation.