[Radiant] How to convert a Behavior to a Page Type in a Radiant Extension package (Mental)

BJ Clark scidept at gmail.com
Tue Jan 23 23:48:35 CST 2007


Loren,
Thanks for posting this.
BJ Clark

On 1/23/07, Loren Johnson <loren_johnson at yahoo.com> wrote:
>
>
> ROUGH STEPS TO CONVERTING A BEHAVIOR TO A PAGE TYPE PACKAGED AS A RADIANT
> EXTENSION
>
> I've ported all my own behaviors to Page Types packaged in Extensions within
> the last day so my mind is fresh on the topic, however this is by no means a
> comprehensive or even wholly accurate guide.
>
> Use at your own risk (SEE ALSO NOTE AT BOTTOM).:
>
>
> 1. Rename the folder of your Behavior and DON'T name it end with Extension
> then move the folder from plugins to extensions so:
>
> # move
> /vendor/plugins/comments_behavior
> # to
> /vendor/extensions/comments
>
> 2. Delete the init.rb file and create a new file called
> "your_extension_name_extension.rb" and fill it with this
> general:
>
> class CommentableExtension < Radiant::Extension
>   version "0.1"
>   description "Blah blah blah which will appear as the description of this
> Extension under the Extensions list in the Mental / new Radiant."
>   url "http://www.fn-group.com/"
>
>
>   # Happens when the enabled checkbox is check and saved in the admin
> Extensions list
>   def activate
>     # These are Page type classes which were converted from behaviors as
> detailed below
>      CommentBucket
>      Commentable
>   end
>
>
>   # The opposite
>   def deactivate
>   end
> end
>
>
> 3. Classes already in the lib directory are auto-loaded and no longer need
> to be explicitly required. In fact the explicit requiring of the classes in
> the lib directory seems to break things, but no need to worry they're
> already available.
>
> 4.  Rename your class appropriately, at least taking off "Behavior" from the
> end of name if it's there, then inherit from Page not Behavior::Base, so:
>
> class CommentableBehavior < Behavior::Base   # becomes
> class Commentable < Page # Isn't that neat. We're just adding right onto the
> page.
>
> 5.   Comment out or delete the register line, this is no longer needed in a
> Page type and will in fact break things if it's not removed:
>
>
> register "Commentable" # becomes
> # register "Commentable"
>
> 6.   Remove the  "define_tags do ... end" enclosure. It's no longer needed.
> Nifty Page types will know what to do with all those "tag "" do |tag|"s
>
> 7. If you have disabled the page caching in your behavior change:
>
> def cache_page?
>    false
> end
>
> #to
>
> def cache?
>    false
> end
>
> 8. Search and replace "@page" with "self" ...
>
> 9. Encapsulate existing comments in "desc %{ what your tag does here ... }"
> headers on the line above a tag definition to get a description to show-up
> in the new "Available Tags" link in the Admin interface.
>
> 10. Restart the web server for your Radiant app, look for errors in
> log/mongrel.log (or later in log/production.log) -- repeat.
>
>
> NOTE
> If you were creating an Extension from scratch you get this framework by
> using "script/generate extension YourExtensionName" ...)
>
> This guide in no way demonstrates the power or architecture of the new
> Radiant Extensions which go beyond the scope of behavior and can include,
> among other things an admin interface, custom models, views and routes
>
>
>
> Loren Johnson
> www.fn-group.com
>
>
>
> _______________________________________________
> Radiant mailing list
> Post:   Radiant at lists.radiantcms.org
> Search: http://radiantcms.org/mailing-list/search/
> Site:
> http://lists.radiantcms.org/mailman/listinfo/radiant
>
>



More information about the Radiant mailing list