<strong>Timeline</strong>

Beta 2 should be out within a month or so.  It took about seven months to go from the first public release of Model-Glue to Model-Glue 1.0.  I'd rather get it right than do it fast.

<strong>GenericList Enhancements</strong>

The GenericList message is getting more powerful, without (much) additional complication.  

As it shipped in Beta 1, you were able to use the "criteria" argument to send a list of viewstate values to the underlying GetByFields() function in Reactor.

For example, if you had a list of content items, and you wanted to show only content records where Published=1, you'd make sure a viewstate value (like URL.Published) was equal to 1, and do this:

<div class="code"><FONT COLOR=NAVY>&lt;message name=<FONT COLOR=BLUE>"modelglue.genericList"</FONT>&gt;</FONT><br>
  <FONT COLOR=GREEN>&lt;argument name=<FONT COLOR=BLUE>"object"</FONT> value=<FONT COLOR=BLUE>"content"</FONT> /&gt;</FONT><br>
  <FONT COLOR=GREEN>&lt;argument name=<FONT COLOR=BLUE>"criteria"</FONT> value=<FONT COLOR=BLUE>"published"</FONT> /&gt;</FONT><br>
<FONT COLOR=NAVY>&lt;/message&gt;</FONT></div>

Then, by using url.published (or, better, a controller to force this), you'd only retrieved records from the content table where published = 1.

That's kind of gnarly, so now you can force values into criteria:

<div class="code"><FONT COLOR=NAVY>&lt;message name=<FONT COLOR=BLUE>"modelglue.genericList"</FONT>&gt;</FONT><br>
  <FONT COLOR=GREEN>&lt;argument name=<FONT COLOR=BLUE>"object"</FONT> value=<FONT COLOR=BLUE>"content"</FONT> /&gt;</FONT><br>
  <FONT COLOR=GREEN>&lt;argument name=<FONT COLOR=BLUE>"criteria"</FONT> value=<FONT COLOR=BLUE>"published=1"</FONT> /&gt;</FONT><br>
<FONT COLOR=NAVY>&lt;/message&gt;</FONT></div>

Additionally, you can specify a method on your gateway other than getByFields().  You could write a method called something like "getPublished" on ContentGateway.cfc that performed the retrieval, along with necessary joins, etc., and then instruct the generic list to use this method instead of getByFields():

<div class="code"><FONT COLOR=NAVY>&lt;message name=<FONT COLOR=BLUE>"modelglue.genericList"</FONT>&gt;</FONT><br>
  <FONT COLOR=GREEN>&lt;argument name=<FONT COLOR=BLUE>"object"</FONT> value=<FONT COLOR=BLUE>"content"</FONT> /&gt;</FONT><br>
  <FONT COLOR=GREEN>&lt;argument name=<FONT COLOR=BLUE>"gatewayMethod"</FONT> value=<FONT COLOR=BLUE>"getPublished"</FONT> /&gt;</FONT><br>
<FONT COLOR=NAVY>&lt;/message&gt;</FONT></div>

Lastly, the struct created through the Criteria argument will still be passed to your gateway method as its argument collection.  If you wanted to get only content written by URL.authorId, and you created an authorId argument on getPublished(), you could do this:

<div class="code"><FONT COLOR=NAVY>&lt;message name=<FONT COLOR=BLUE>"modelglue.genericList"</FONT>&gt;</FONT><br>
  <FONT COLOR=GREEN>&lt;argument name=<FONT COLOR=BLUE>"object"</FONT> value=<FONT COLOR=BLUE>"content"</FONT> /&gt;</FONT><br>
  <FONT COLOR=GREEN>&lt;argument name=<FONT COLOR=BLUE>"gatewayMethod"</FONT> value=<FONT COLOR=BLUE>"getPublished"</FONT> /&gt;</FONT><br>
  <FONT COLOR=GREEN>&lt;argument name=<FONT COLOR=BLUE>"criteria"</FONT> value=<FONT COLOR=BLUE>"authorId"</FONT> /&gt;</FONT><br>
<FONT COLOR=NAVY>&lt;/message&gt;</FONT></div>

<strong>ReactorAdapter / ReactorORMController Rewrite</strong>

Both the ReactorAdapter and the ReactorORMController have been rewritten, tossing a bunch of ancient gnarly code that was written to emulate things (like editing an Iterator) that Reactor now does automatically.

<strong>Scaffold Enhancements</strong>

Scaffolds have had a little bit of "polishing" applied.  Form controls that are currently in an error state now show their label in red, and the labels themselves apply some automatic capitalization rules to get better-looking text straight from the database.  It relies on camel-cased column names, but you can always override the results via the Dictionary file.  For example, "text" becomes "Text" and "firstName" becomes "First Name".