Entries Tagged as 'Plugins'

ColdBox JSMin Compressor

Plugins , ForgeBox , Releases 1 Comment »
Thanks to Henrik Joreteg we have now our very own ColdBox JSMin Compressor for js/css assets.  This plugin is a cool java/coldfusion integration and will compress your css and js assets on the fly and produce compressed versions of your assets.  It will also cache them and concatenate multiple assets into a single js/css file for even more optimizations. How easy?

<head>
#getMyPlugin("JSMin").minify('includes/js/myscripts.js','includes/js/jquery.js')#
#getMyPlugin("JSMin").minify('includes/css/site.css','includes/css/boxes.css')#
</head>


So thanks Henrik, we now have ColdBox JSMin and what would a plugin be without documentation :) http://wiki.coldbox.org/wiki/Projects:JSMin-Compressor.cfm

Using the ColdBox Paging Carrousel Plugin

Plugins , ForgeBox , Tutorials , Tips & Tricks 2 Comments »


Let's learn how to use the paging carrousel plugin for ColdBox found in the ForgeBox directory.  First of all, download the plugin and drop in your custom plugins folder.


Settings setup

Make sure that you setup the following settings in your application:

PagingMaxRows - The maximum number of rows to show per page. Defaults to 10
PagingBandGap - The gap to use in the paging carrousel. Defaults to 5

You can also override the settings on the plugin, by using the appropriate setter methods in the plugin.

Handler setup

In your handler event, my case 'forgeservice.entries' you will setup the paging boundaries and the data call using these boundaries.  In my case, I have a model object that received the starting row and the maximum number of rows to return.  The paging plugin assumes there will be an incoming request collection variables called "page".  You do not need to param it or default it as the plugin does this for you.  All you have to do is construct a nice link with a page holder once you render the paging carrousel.  So to start just get the boundaries from the plugin:

// Get the paging boundaries, make sure there will be a "page" incoming variable, we use it to page.
rc.pageBoundaries = getMyPlugin("Paging").getBoundaries();

The previous call returns a structure with a startRow and maxRow element according to your settings and the page your are on.  You can use this information to present information back to the user like, showing records X to Y, etc.

// Call your model object for data
rc.entries = forgeService.getEntries(orderBy=rc.orderBy,
                                                            typeSlug=rc.typeSlug,
                                                            startrow=rc.pageBoundaries.startRow,
                                                            maxrows=getMyPlugin("Paging").getPagingMaxRows());     
      

The next tricky part is to get the total count with no paging on it.  I have another method that does this for me, but this can be done in any approach you prefer.

// Get total entries count
rc.entriesTotal = forgeService.getEntriesTotal(typeSlug=rc.typeSlug);

View Setup
That's it for the handler code, now let's render the paging carrousel.  For this make sure you have the correct css setup for it.  The following are what is needed for the paging css:

.pagingTabs - The div container
.pagingTabsTotals - The totals
.pagingTabsCarrousel - The carrousel

Here is my sample css: /* Paging */
.pagingTabs{
font-size: .8em;
text-align: left;
margin: 20px 10px 15px 10px;
}
.pagingTabs a{
color: #000;
padding: 2px 4px;
background-color: #fff;
border: 1px solid #ccc;
margin-left: 2px;
}
.pagingTabs a:hover{
color: #000;
background-color: #FCF9C3;
border: 1px solid black;
}
.pagingTabs a.selected{
color: #000;
background-color: #FCF9C3;
border: 1px solid #AF3D15;
}
.pagingTabsCarrousel{
margin-top:5px;
}


Now I can render it in my views:


#getMyPlugin("paging").renderit(foundRows=rc.entriesTotal,link=event.buildLink('forgebox/page/@page@')#


That's it! I tell the paging plugin what is the link to attach to my carrousel and then pass a placeholder variable for my page: @page@.  This renders the carrousel and correct links.


ColdBox Amazon S3 Support

Plugins , CodeDepot , Releases 1 Comment »
We have a new project called Amazon-S3 Explorer which can explore your Amazon S3 account.  We also have an S3 plugin that can be used in any application. It interfaces with S3 via REST and it can handle pretty much any operation on Amazon.  Below you can see some screenshots of our S3 explorer.  You can get the source from our codedepot SVN, you can download the latest release from here, or you can download our entire project pack from our downloads section.

We are still restructuring our code depot respository layout, but soon you will find our major extensions to be laid out in our codedepot folder, with projects in incubation and the sorts.  Thanks to our plugin architecture, we can really extend the core with extra functionality with much ease.










A ColdBox plugin for ValidateThis!

Plugins , Community , News 1 Comment »
Bob Silverberg just announced the availability of a ColdBox plugin for interacting with his Validate This! framework!  I highly encourage you to test drive Validate This as it is truly an awesome validation framework.  He not only did the plugin but adapted a sample application to work with it.

So if you are still trying to determine validation and want an easy and great solution, give ValidateThis a shot!  Here are some links for you:


GroovyLoader 2.0 Released

Plugins , Interceptors , News , Releases 1 Comment »
After some great conversations in the ColdBox forums, I got inspired and whipped up our next version of our GroovyLoader project, part of our projects pack that you can find in our extras download.  This version includes several updates like it sports a new interceptor called GroovyStarter that you can configure in your coldbox.xml and the entire groovy environment will wrap itself and become available in any coldbox app.  Not only that, but now you can also add any amount of java library locations and the plugin will java load them at startup into your application.  These libraries can be Spring, Hibernate, Apache Commons, etc.  And to top it off, we also added the ability to groovy load one or more paths to the loader.  Before you had to configure the groovy class path to one single location where groovy scripts/classes could be found.  Now you can do as many as you like and the loader will try to find it in any of those locations.  Pretty Snazzy!! Finally, what good is a project without documentation, so we now have the project fully documented: http://ortus.svnrepository.com/coldbox/trac.cgi/wiki/cbGroovyLoader For those that do not know what you can do with ColdBox's GroovyLoader project, here is a simple list:
  • script in groovy in any part of the coldbox lifecycle using <groovy:script> tags
  • binding of variables between the groovy language and coldbox
  • ability to load groovy scripts
  • ability to load groovy classes with complex relationships
  • ability to load java libraries alongside groovy classes
  • no need to tweak the server or configure the server for operation
  • much more...
Look how hard it is to add groovy language support to a ColdBox App: <!-- Groovy Starter: Creates & configures the GroovyLoader -->
<Interceptor class="${AppMapping}.plugins.GroovyLoader.GroovyStarter">
<!-- Paths that hold groovy libs -->
<Property name="groovyLibPaths">/${AppMapping}/model/groovy</Property>
<!-- Paths that hold jar's for us to load automagically -->
<Property name="javalibPaths">/${AppMapping}/model/lib</Property>
</Interceptor>