That would be useful, wouldn't it? ;-)

I'll put one together.

On Fri, Jan 22, 2010 at 9:37 AM, Dan Wilson <[email protected]> wrote:
> Do you have a sample application I can install to see this in action?
>
> DW
>
> On Fri, Jan 22, 2010 at 9:34 AM, Bob Silverberg <[email protected]>
> wrote:
>>
>> Hey folks,
>>
>> I've committed the new proof of concept code for scaffolding to the
>> newScaffolding branch. Some of us have been discussing the design on
>> Google Wave, but I thought I'd share a summary of what's been done
>> here, in case anyone else is interested. As always, if you want to
>> follow and/or contribute to the discussion please let me know and I'll
>> add you to the Wave. If you haven't been following some of this will
>> make very little sense to you. If you don't care about what we're
>> looking at in terms of a new approach to customizable scaffolding,
>> stop reading now. ;-)
>>
>> Here's a summary of the changes (copied from the Google Wave):
>>
>> ormAdapters:
>> - getOrmName() method now exists in ormAdapters. The name is set via
>> the CS config for the adapters.
>> - ormName is not available to objectMetadata inside the scaffolding beans.
>> - UDFs for getSourceValue() and getSelectedList() have been added,
>> calls to which are currently being written to the GTs as input to
>> custom tag attributes.
>>
>> Scaffolding beans:
>> - I've created two new scaffolding beans to replace Edit.cfc
>> - Each of them make use of the following custom tags:
>>  - <cf_scaffold_property> is used to generate form controls for
>> individual properties
>>  - <cf_scaffold_manytoone> is used to generate form controls for
>> many-to-one relationships (a select box)
>>  - <cf_scaffold_manytomany> is used to generate form controls for
>> one-to-many and many-to-many relationships (a set of check boxes).
>> Note that I think that this really only makes sense for a
>> many-to-many, not a one-to-many, but the current behaviour does it for
>> both.
>> - Edit_New.cfc implements the new custom tag scheme duplicating the
>> same output as the current Edit.cfc
>> - Edit_cfU.cfc implements the new custom tag scheme approximating the
>> same output as the current Edit.cfc, but utilizing the cfUniform
>> custom tag library.
>>
>> Custom tags:
>> - There are two versions of each of the new custom tags.
>> - For example, there is a scaffold_property.cfm and a
>> scaffold_property_mg.cfm.
>> - scaffold_property_mg.cfm generates the code that resembles the
>> current scaffolding ouput.
>> - scaffold_property.cfm generates the code that uses cfUniform.
>> - These exist with different names just for the purposes of testing.
>> The idea I had was that the scaffolding bean will always contain a
>> call to cf_scaffold_property, and a developer will customize the
>> behavior by providing a new version of the cf_scaffold_property custom
>> tag. So in many cases a user will be able to change the ultimate
>> scaffolding output simply by providing a new custom tag, without
>> having to edit the bean at all.
>> - Note that the only reason that there are two new edit beans:
>> Edit_New.cfc and Edit_cfU.cfc is to address the issue that cfU
>> requires all of its tags to be nested between an opening and closing
>> tag. I couldn't find a way to embed the call to cfU's opening and
>> closing tags inside another custom tag, so I had to write them to the
>> GT. If anyone has an idea on how to get that working I'd love to hear
>> it.
>> - In order for the GT to use the appropriate custom tag we'd probably
>> have to use import and namespaces, as Dennis discusses above. That
>> would mean that the bean would have to generate a custom tag call
>> using the correct namespace, so I guess that would have to be a
>> configuration option somewhere.
>>
>> Overall I think it's working quite well, and I'm happy with the
>> results. Please note that the proof of concept is just designed to
>> test out this idea of implementing scaffolding - the actual output may
>> not be working 100% properly, but the generation and rendering of the
>> displays is working.
>>
>> What's next?
>> - A review of the code by members of the team to determine whether MG
>> is interested in adopting this approach, or something similar would be
>> appreciated.
>> - Some of the code in the AbstractORMAdapter could be refactored out
>> into each individual adapter.
>> - Implement the ormHelper idea so that the GTs are calling methods in
>> an ormHelper, rather than event.getModelGlue().getOrmAdapter() as is
>> being done now.
>> - Implement the custom tag integration idea involving writing out
>> import statements based on configuration settings. Deal with the
>> namespace issue at the same time.
>> - Move the cftemplate code out of the scaffolding beans.
>> - Test, test, test. New beans will need to be tested against all of the
>> orms.
>>
>> Cheers,
>> Bob
>>
>> --
>> Bob Silverberg
>> www.silverwareconsulting.com
>>
>> Hands-on ColdFusion ORM Training @ cf.Objective() 2010
>> www.ColdFusionOrmTraining.com
>>
>> --
>> Model-Glue Sites:
>> Home Page: http://www.model-glue.com
>> Documentation: http://docs.model-glue.com
>> Bug Tracker: http://bugs.model-glue.com
>> Blog: http://www.model-glue.com/blog
>>
>> You received this message because you are subscribed to the Google
>> Groups "model-glue" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/model-glue?hl=en
>
>
> --
> “Come to the edge, he said. They said: We are afraid. Come to the edge, he
> said. They came. He pushed them and they flew.”
>
> Guillaume Apollinaire quotes
>
> --
> Model-Glue Sites:
> Home Page: http://www.model-glue.com
> Documentation: http://docs.model-glue.com
> Bug Tracker: http://bugs.model-glue.com
> Blog: http://www.model-glue.com/blog
>
> You received this message because you are subscribed to the Google
> Groups "model-glue" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/model-glue?hl=en



-- 
Bob Silverberg
www.silverwareconsulting.com

Hands-on ColdFusion ORM Training @ cf.Objective() 2010
www.ColdFusionOrmTraining.com

-- 
Model-Glue Sites:
Home Page: http://www.model-glue.com
Documentation: http://docs.model-glue.com
Bug Tracker: http://bugs.model-glue.com
Blog: http://www.model-glue.com/blog

You received this message because you are subscribed to the Google
Groups "model-glue" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/model-glue?hl=en

Reply via email to