Forum: Radiant CMS How to convert a Behavior to a Page Type in a Radiant Extens

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Loren J. (Guest)
on 2007-01-23 15:25
(Received via mailing list)
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 J.
www.fn-group.com
BJ Clark (Guest)
on 2007-01-24 07:49
(Received via mailing list)
Loren,
Thanks for posting this.
BJ Clark
This topic is locked and can not be replied to.