The Ortus BlogBox

"Ortus: A rise, beginning, coming into being, born, the origin!"

 

 

Category Filtering: 'plugins'

 

ColdBox 4.0 Removed Plugins

Brad Wood
Feb 26, 2015

 

ColdBox Plugins have graduated to become just models. The plugins convention has been removed and all references to plugin injection or DSL's are gone. You must now place all your plugins in your models directory and request them via getInstance() or getModel() calls.


Plugins are an old ColdBox convention but their baggage doesn't really serve a purpose now that we have modules for easy packaging of libraries and WireBox for easy creation of CFCs. Neither of those existed back when Plugins were birthed. It's time to say goodbye to the concept of plugins, but all their functionality will still be here, just with a slightly different (and more standardized) way of creating them.

ColdBox MVC, Modules, Plugins, Tips & Tricks 0

The Storages Module

Curt Gratz
Feb 23, 2015

 

If you have been following our series here on ColdBox 4.0, you are probably sensing a theme.  

Another major change in ColdBox 4.0 was the removal of plugins as a thing.  They were just model objects anyway and we had treated them as such within the framework for some time.   However, because of that, we needed to do something with some of our various "core" plugins.  So sticking with our aforementioned theme, many of them were converted into modules.  

We decided that we could bundle a few of our old "core" plugins that had similar functionality together into one module.  The Storages Module.  This module consists of what was the

  • Session Storage Plugin
  • Application Storage Plugin
  • Client Storage Plugin
  • Cluster Storage Plugin
  • Cookie Storage Plugin

To install The Storages Module using command box simply use the following command.

box install cbstorages

If you have existing calls to the old plugins such as 

getPlugin( 'SessionStorage' )
getPlugin( 'ApplicationStorage' )
getPlugin( 'CookieStorage' )
etc...

Then after you install the module you can replace those with

getInstance( 'sessionStorage@cbstorages' )
getInstance( 'applicationStorage@cbstorages' )
getInstance( 'cookieStorage@cbstorages' )
etc...

We didn't make any changes to the API of the objects so everything should work as always after that.

Now...Module all the things...

ColdBox MVC, Modules, Plugins, Tips & Tricks 0

ColdBox Validation is Now a Module

Scott Coldwell
Jan 28, 2015

 

The new modular approach of ColdBox 4.0 means much of its built-in functionality has been moved to separate, installable modules. One of the many new modules introduced with ColdBox 4.0 is the Validation Module. To install, simply fire up CommandBox.

ColdBox MVC, ForgeBox, Modules, Plugins, Tips & Tricks 1

Coldbox CBDW2013 Online Training is Available!

Luis Majano
Oct 02, 2013

 

We are very excited to announce our second online course available for both ColdBox and ContenBox Modular CMS thanks to our annual conference CBDW2013: http://www.udemy.com/coldbox-platform-developer-week-2013/.  This course covers over 50 lectures and over 30 hours of video content.  This is definitely an ultimate training tool for you or your organization and it definitely helps us pay the bills :)

CacheBox, ColdBox Lite, ColdBox MVC, Community, ContentBox CMS, Couchbase, DevBox, Events, ForgeBox, Media, MockBox, Modules, News, ORM, Plugins, Presentations, Training 0

JSMin Compressor v1.7 Released!

Luis Majano
Mar 02, 2012

 

JSMin Compressor is a plugin that interfaces with our own flavor of JSMin to minify css and js files.  It can also compress several files of the same type into a single include, that can be cached in your ColdBox applications.  This release fixes our java parser to compress more complicated CSS3 notations correctly.

Using our compressor can be as easy as this:

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

CodeDepot, ColdBox MVC, Community, Plugins, Releases 0

ColdBox Amazon S3 Support and Explorer v1.4 Released

Luis Majano
Jan 17, 2011

 

This is an update to our Amazon S3 support and S3 Explorer thanks greatly in part to my friend Alagukannan (http://blogs.alagukannan.com/).  Of course, this is hosted on ForgeBox, so get your forge on: http://coldbox.org/forgeBox.



This release sports ColdBox 3 support for both the plugin and the Explorer.  We have also added S3 folder support, so you can create sub-folders in any bucket, updated the interface and some nice fixes to URL encoding for private and read only files.  So stay tuned as we add more features to our explorer and S3 support.



So what are you waiting for, get your Amazon on!


CodeDepot, ColdBox MVC, Community, News, Plugins, Releases 0

Using the BaseORMService and VirtualEntityService Extras

Curt Gratz
Aug 25, 2010

 

I thought I would take a moment and explain some of the different ways you can use the BaseORMService and VirtualEntityService extras that are included in Coldbox 3.0 M5 and above.

Before I get into the different uses for each, lets define them both and hopefully that will help clarify the differences

Base ORM Service:

The BaseORMService is an amazing service layer tool that can be used in any project. The idea behind this support class is to provide a very good base service layer that can interact with hibernate and entities inspired by Spring's Hibernate Template support. It provides tons of methods for query executions, paging, transactions, session metadata, caching and much more. You can either use the class on its own or create more concrete service layers by inheriting from this class. We also have a virtual service layer that can be mapped to specific entities and create entity driven service layers virtually. ColdBox also offers several integrations to this class via plugins and the autowire DSL.

Virtual Entity Service:

The virtual entity service is another support class that can help you create virtual service layers that are bounded to a specific entity for convenience. This class inherits from our Base ORM Service and allows you to do everything the base class provides, except you do not need to specific which entityName you are working with. You can also use this class as a base class and template out its methods to more concrete usages.

BaseORMService/ORMService Plugin

So first, how might you use the Base ORM Service extra

First, you could use it to create a concrete service that has all the BaseORMService methods in it.  For example. UserService.cfc might look like this

import coldbox.system.orm.hibernate.*

component extends="BaseORMService"{

 

  public UserService function init(){

      super.init(useQueryCaching=true);

      return this;       

  }

 

}

 

Then you can call things like this

function list(event){
    var rc = event.getCollection();
    var UserService = getModel("UserService");

    //get a listing of all users with paging
    rc.users = UserService.list(entityName="User",sortBy="fname",offset=event.getValue("startrow",1),max=20);

    event.setView("user/list");
  }

 

Or any of the other available methods in the BaseORMSerivce.  Now with our UserService, we are free to add any of our own business logic to that service that is needed, but have a ton of really cool methods already available to us.

Another way to use the BaseORMService, and I think a simpler way if via the ORMService Plugin.  This plugin gives you access to all the methods in the BaseORMService.

Mainly, I don’t directly use the BaseORMService cfc.  I either create services based of the VirtualEntityService, via the AutowireDSL (which I will explain shortly), or use these features via the ORMService Plugin.

To use the ORMService plugin, we can modify our code above slightly and are ready to go.

function list(event){
    var rc = event.getCollection();

    //get a listing of all users with paging
    rc.users = getPlugin("ORMService").list(entityName="User",sortBy="fname",offset=event.getValue("startrow",1),max=20);

    event.setView("user/list");
  }

 

I find myself using the ORMService Plugin extensively, so I also always autowire it to my handler, making the code above even simpler.

// A handler
component{
  property name="ORMService" inject="coldbox:plugin:ORMService";

  function list(event){
    var rc = event.getCollection();

    //get a listing of all users with paging
    rc.users = ORMService.list(entityName="User",sortBy="fname",offset=event.getValue("startrow",1),max=20);

    event.setView("user/list");
  }
}

 

How easy is that.   Tons of functionality right at your fingertips.

VirtualEntityService /Autowire Entity DSL

Generally when creating a concrete service I want to base off of the BaseORMService, I extend the VirtualEntityService and initialize it using the name of the entity that the service concerns. 

Basically, the VirtualEntityService inherits from the BaseORMService and allows you to template out its methods to a specific entity for more concrete uses.  This eliminates the need to type entityName=”someEntity” in your calls, and anything that saves me typing, saves me time and is a GOOD thing.

So, if I was creating that same UserService from above using the VirtualEntityService, it would look like this.

import coldbox.system.orm.hibernate.*;
component extends="VirtualEntityService"{

  public any function init(){
      super.init( "User", true, "user.query.cache" );
      return this;
  }

  // Override or add methods as you see fit now.
}

 

Pretty cool huh?  Now my list function looks like this

function list(event){
    var rc = event.getCollection();
    var UserService = getModel("UserService");

    //get a listing of all users with paging
    rc.users = UserService .list(sortBy="fname",offset=event.getValue("startrow",1),max=20);
event.setView("user/list"); }

So, removing the entityName=”User” from the call, but if you had to call the service even 10 times, that’s a lot of typing saved.

 

Autowiring

There is also an autowiring DSL to quickly create services based on a specific entity that you can use if don’t need any additional methods or need to override any methods in your service layer.

Per the documentation

Type

Description

entityService

Inject a BaseORMService object for usage as a generic service layer

entityService:{entity}

Inject a VirtualEntityService object for usage as a service layer based off the name of the entity passed in.

 

// Generic ORM service layer
property name="genericService" inject="entityService";
// Virtual service layer based on the User entity
property name="userService" inject="entityService:User";

 

So, to implement our UserService and list function we have had in our examples we could have a handler like this

// A handler
component{
  property name="UserService" inject="entityService:User";
function list(event){ var rc = event.getCollection(); //get a listing of all users with paging rc.users = UserService.list(sortBy="fname",offset=event.getValue("startrow",1),max=20); event.setView("user/list"); } }

 

For more information on the BaseORMService and VirtualEntityService, here are some links to the complete documentation.

http://wiki.coldbox.org/wiki/Extras:BaseORMService.cfm

http://wiki.coldbox.org/wiki/Extras:VirtualEntityService.cfm

Hopefully this post helps you understand how you can use these AWESOME extras in your environment.


 

Alliance, ColdBox MVC, Plugins, Tips & Tricks, Training, Tutorials, Walkthroughs 0

ColdBox Plugins - A wealth of hidden treasure

Curt Gratz
May 28, 2010

 

Today I was getting ready to send a file from my app to the browser for the user to download.  I was all set to use cfcontent to do this, but knowing ColdBox I thought I would do a quick check to see if the framework had any nice convenience methods for me to use to make life easier and sure enough... sendFile() in the core Utilities plugin.

getPlugin("Utilities").sendFile(file="test.txt");

So, this post is just a quick word of advice.  Don't reinvent the wheel.  If you are doing something, anything common, check the docs and see if ColdBox can do it for you.  You will be amazed at whats available in the core plugin set already for you to use.  

Plug it In

Plug IT IN

Here are just a few I use commonly.

ORMService - generic ORM Service helper for Hibernate
QueryHelper - all sorts of goodies in here, sorting queries is one of my favorite. Or the querySim.
Validator - all sorts of standard validation methods here. checkEmail and checkIPAddress are my favorites.
FileUtils - This is a utilities library that are file related. Lots of fun methods here.
Utilities - A good mix of a variety of handy methods, like todays gem sendFile()

 

Alliance, ColdBox MVC, Plugins, Tips & Tricks 5

ColdBox Amazon S3 Support

Luis Majano
Mar 29, 2010

 

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 forgebox.

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.








CodeDepot, ColdBox MVC, Plugins, Releases 3

ColdBox JSMin Compressor

Luis Majano
Dec 23, 2009

 

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

ColdBox MVC, ForgeBox, Plugins, Releases 2
1 2 3 >>