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@lists.radiantcms.org
Search: http://radiantcms.org/mailing-list/search/
Site: http://lists.radiantcms.org/mailman/listinfo/radiant