[ANN] Radiant 0.6.4 - Gem Shaper Release

Looks like it’s time for another release of Radiant:

http://radiantcms.org/download/

This release contains a few major changes as well as numerous bug-fixes
and
enhancements. Included in the release are Rails 1.2.5, Prototype 1.6 and
script.aculo.us 1.8. Significant refactorings have been done to the
admin UI Javascripts, thanks to Mislav Marohnic. The release also
provides
better support for MS SQL Server via Rails ticket/patch #8886 and
stricter
XHTML compatibility.

WHAT IS RADIANT CMS?

Radiant is a no-fluff content management system made for designers and
programmers and is ideal for use on small teams. It is similar to
Movable Type or Textpattern, but is much more than a blogging engine.

Radiant features:

  • An elegant user interface
  • The ability to arrange pages in a hierarchy
  • Flexible templating with layouts, snippets, page parts, and a
    custom tagging language (Radius: http://radius.rubyforge.org)
  • A dynamic extension system
  • A simple user management/permissions system
  • Support for Markdown and Textile as well as traditional HTML
    (it’s easy to create other filters)
  • Operates in two modes: dev and production depending on the URL
  • A caching system which expires pages every 5 minutes
  • Built using Ruby on Rails (which means that extending Radiant is
    as easy as any other Rails application)
  • Licensed under the MIT-License
  • And much more…

There’s even a live demo over on the project Web site:

http://radiantcms.org/demo/

WHAT’S NEW IN THIS RELEASE?

  • Extract Archive pages into a core extension. Add automatic testing of
    core
    extensions from default test task. [Sean C.]
  • Add <r:if_children /> and <r:unless_children /> tags. [Andrew N.]
  • Add HTML labels to role checkboxes in user edit template. [zilkey]
  • Cleanup whitespace and line-endings in environment.rb. [Bjorn Maeland]
  • Fix various SQL Server issues via Rails ticket #8886. [Mark G.]
  • Refactor locals from _node.rhtml into Admin::NodeHelper. [Sean C.]
  • Fix XHTML validation errors in view templates. [Bjorn Maeland]
  • Update Prototype and script.aculo.us to 1.6 and 1.8 releases. [Sean
    Cribbs]
  • Fix edge case in tabcontrol.js where tab label is incorrect. [Sean
    Cribbs]
  • Remove duplication in admin.js. [Sean C.]
  • Factor TimeZone stuff out of Radiant::Config into a module, fix
    failing tests.
    [Sean C.]
  • Add has_part?, inherits_part?, and has_or_inherits_part? methods to
    Page.
    [ana]
  • Allow setting of local timezone via Radiant::Config and
    auto-adjustment of times
    in admin UI and <r:date /> tag. [Bodhi Philpot]
  • Update to latest Prototype and script.aculo.us and refactor and
    extract inline
    Javascript into external files. [Mislav Marohnic]
  • Narrow scope of exception to only throw on missing fixture files,
    allowing
    invalid yaml errors through. [Daniel S.]
  • Added tests to ensure that response_cache stays within the cache dir.
    [Daniel S.]
  • Add assert_requires_login to LoginTestHelper. [Sean C.]
  • Make sure tag binding stack is popped when an exception occurs.
    [[email protected]]
  • Clean up some apparent cruft in page.rb [Daniel S.]
  • Add logout method to LoginTestHelper. [Sean C.]
  • Run single extension tests with rake test:extensions
    EXT=<extension_name>
    [Brian Skahan]
  • Update Javascript libraries to Prototype 1.6.0_rc1 and script.aculo.us
    1.8.0_pre1. [Mislav Marohnic]
  • Fixed <r:attempted_url /> tag to escape the uri [Daniel S.]
  • Allow parts to be accessed by name from Page#part before they are
    saved.
    [Sean C.]
  • Disambiguate namespace of ActionMailer::Part. [Sean C.]
  • Fix namespacing problem with ActionController::RoutingError. [Sean
    Cribbs]
  • Update Rails to 1.2.5. [John L.]
  • Ensured that the request and response are passed along to other pages
    that
    are rendered within the same context. [John L.]
  • Added <r:if_dev /> and <r:unless_dev /> tags. [Peter B.]
  • Removed session stringification patch in test helper. [Sean C.]
  • Update Rails to 1.2.4. [Sean C.]
  • Add extensions paths to the standard $LOAD_PATH so requires work
    properly.
    [Sean C.]
  • Fixed some loading issues for plugins that are included in extensions.
    [Sean C.]

INSTALLATION

We’ve worked hard to make it easy to install Radiant. For starters you
can download it with Ruby Gems:

% gem install --include-dependencies radiant

Once the Radiant gem is installed you have access to the radiant
command. The radiant command is similar to the rails command (if you
are from the Rails world. It’s how you generate a new Radiant project
for a website. So cd to the directory where you would like your
instance to be installed and type:

% radiant -d [mysql|postgres|sqlite3] .

Next, edit config/database.yml to taste. Then run the rake bootstrap
task:

% rake production db:bootstrap

And start up the test server:

% script/server -e production

Finally, hit the /admin/ URL and you should be off to the races. See the
README file in the release for additional details.

If you are interested in other download options, visit the download
page: http://radiantcms.org/download/.

UPGRADING FROM 0.6.x

  1. Update the Radiant gem:

    % gem update radiant

  2. Change the RADIANT_GEM_VERSION constant in config/environment.rb
    to “0.6.4”.

  3. Run the update rake task:

    rake radiant:update

  4. Migrate the database (only necessary if upgrading from 0.6.2 or
    earlier):

    rake production db:migrate

  5. Restart the server

UPGRADING FROM 0.5.x

The upgrade process changed significantly from last release, so listen
up! To upgrade an existing installation, BACKUP YOUR DATABASE, update
the gem, and create a new Radiant project using the instructions above.
Then point Radiant to the right database by editing config/database.yml
and execute the following command in your project directory:

% rake db:migrate

If you have problems during the upgrade, please let us know.

CONTRIBUTORS

Radiant wouldn’t be possible without the help of some fine people. The
following people have made contributions to this release:

Andrew N. zilkey Mark G.
Bjorn Maeland ana Bodhi Philpot
[email protected] Brian Skahan Mislav Marohnic
Daniel S. John L. Peter B.
Sean C.

Thanks guys! If you’d like to hop on the development band wagon head on
over to our dev site (http://dev.radiantcms.org/).

SUPPORT

The best place to get support is definitely on the Radiant mailing list.
There’s a crowd of people there who have been hanging around for many
moons now. Newbie questions are welcome! To sign up, go to:

http://radiantcms.org/mailing-list/

The Radiant mailing list is also accessible via Ruby forum:

http://www.ruby-forum.com/forum/21

Enjoy!


Sean C.
for the Radiant CMS Dev Team
http://radiantcms.org

Mark,

Actually, the issue is the reorder extension. It overrides _node.rhtml
(and other views, too) which was refactored (and simplified) in 0.6.4.
I will try to take a pass at it this coming week. In the meantime, you
can probably uninstall it and have your site still working. Of course,
if you’re of the mind to fix it, patches are welcome!

Sean

Like an idiot I first posted this to the dev list. Sorry to those
that received it there.

I just updated, and my back end broke (thank god for cacheing!). I
have a bunch of extensions installed, but it looks like page
attachments is the issue. I also have:
Markdown Filter
Textile Filter
Forms
Page Attachments
Reorder
Search
Archive

Please advise. For the sake of saving emails back and forth, here are
the logs:

Processing SiteController#show_page (for 75.166.110.128 at 2007-11-10
19:07:23) [GET]
Parameters: {“url”=>[“about_us”, “sergio-lopez-pugh”, “images”,
“loading.gif”], “action”=>“show_page”, “controller”=>“site”}
Completed in 0.29625 (3 reqs/sec) | DB: 0.04725 (15%) | 404 Not Found
[http://www.lazotpcglobal.com/about_us/sergio-lopez-pugh/images/loading.gif
]

Processing WelcomeController#index (for 75.166.110.128 at 2007-11-10
19:07:33) [GET]
Session ID: c5a24f542d33f2a7dc12d3f9f4849971
Parameters: {“action”=>“index”, “controller”=>“admin/welcome”}
Redirected to http://www.lazotpcglobal.com/admin/pages
Completed in 0.00205 (487 reqs/sec) | DB: 0.00060 (29%) | 302 Found
[http://www.lazotpcglobal.com/admin
]

Processing PageController#index (for 75.166.110.128 at 2007-11-10
19:07:33) [GET]
Session ID: c5a24f542d33f2a7dc12d3f9f4849971
Parameters: {“action”=>“index”, “controller”=>“admin/page”}
Rendering within layouts/application
Rendering admin/page/index

ActionView::TemplateError (undefined method `page_icon’ for #<#<Class:
0xb7654494>:0xb765446c>) on line #12 of vendor/extensions/reorder/app/
views/admin/page/_node.rhtml:
9:
10: expander = children ? image((expanded ? “collapse” :
“expand”), :class => “expander”, :alt => ‘toggle children’, :title =>
‘’, :align => ‘center’) : “”
11:
12: icon = page_icon(page)
13:
14: title = %{#{ page.title }}
15:

 /home/28030/containers/rails/tpc/vendor/extensions/reorder/app/

views/admin/page/_node.rhtml:12:in
_run_rhtml_47vendor47extensions47reorder47app47views47admin47page47_node46rhtml ' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_view/base.rb:326:insend’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_view/base.rb:326:in compile_and_render_template' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_view/base.rb:301:in render_template’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_view/base.rb:260:in render_file' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_view/base.rb:275:in render’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_view/partials.rb:59:in render_partial' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/benchmarking.rb:30:in benchmark’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_view/partials.rb:58:in render_partial' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_view/base.rb:287:in render’
#{RAILS_ROOT}/vendor/radiant/app/helpers/admin/page_helper.rb:
4:in render_node' /home/28030/containers/rails/tpc/vendor/extensions/reorder/app/ views/admin/page/index.rhtml:14:in
_run_rhtml_47vendor47extensions47reorder47app47views47admin47page47index46rhtml

#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_view/base.rb:326:in send' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_view/base.rb:326:in compile_and_render_template’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_view/base.rb:301:in render_template' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_view/base.rb:260:in render_file’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/base.rb:806:in render_file' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/base.rb:711:in render_with_no_layout’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/layout.rb:247:in render_without_benchmark' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/benchmarking.rb:50:in render’
/usr/lib/ruby/1.8/benchmark.rb:293:in measure' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/benchmarking.rb:50:in render’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/base.rb:1096:in perform_action_without_filters' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/filters.rb:632:in call_filter’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/filters.rb:634:in call_filter' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/filters.rb:638:in call_filter’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/filters.rb:438:in call' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/filters.rb:637:in call_filter’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/filters.rb:638:in call_filter' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/filters.rb:438:in call’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/filters.rb:637:in call_filter' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/filters.rb:638:in call_filter’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/filters.rb:438:in call' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/filters.rb:637:in call_filter’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/filters.rb:619:in perform_action_without_benchmark' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/benchmarking.rb:66:in perform_action_without_rescue’
/usr/lib/ruby/1.8/benchmark.rb:293:in measure' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/benchmarking.rb:66:in perform_action_without_rescue’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/rescue.rb:83:in perform_action' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/base.rb:430:in send’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/base.rb:430:in process_without_filters' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/filters.rb:624:in process_without_session_management_support’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/session_management.rb:114:in process_without_test' #{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/ action_controller/test_process.rb:15:in process’
#{RAILS_ROOT}/vendor/radiant/vendor/rails/actionpack/lib/
action_controller/base.rb:330:in process' #{RAILS_ROOT}/vendor/radiant/vendor/rails/railties/lib/ dispatcher.rb:41:in dispatch’
/home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/
mongrel/rails.rb:78:in process' /home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/ mongrel/rails.rb:76:in synchronize’
/home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/
mongrel/rails.rb:76:in process' /home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/ mongrel.rb:618:in process_client’
/home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/
mongrel.rb:617:in each' /home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/ mongrel.rb:617:in process_client’
/home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/
mongrel.rb:736:in run' /home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/ mongrel.rb:736:in initialize’
/home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/
mongrel.rb:736:in new' /home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/ mongrel.rb:736:in run’
/home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/
mongrel.rb:720:in initialize' /home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/ mongrel.rb:720:in new’
/home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/
mongrel.rb:720:in run' /home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/ mongrel/configurator.rb:271:in run’
/home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/
mongrel/configurator.rb:270:in each' /home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/ mongrel/configurator.rb:270:in run’
/home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/bin/
mongrel_rails:127:in run' /home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/lib/ mongrel/command.rb:211:in run’
/home/28030/data/rubygems/gems/gems/mongrel-1.0.1-i386-linux/bin/
mongrel_rails:243

Never mind. I figured it out. Just removed it from the extensions
directory, and removed it from the database. Very easy. I’m sure
their is a remove migration command, but I was lucky on this one. And
your right, now page attachments is working perfeclty.
-Mark

I wish I had the skill set to write the patch. Is there an uninstall
command I should know about?
-Mark