[Radiant] Radiant Core Dev: Page Controller

Jacob Burkhart igotimac at gmail.com
Fri Jun 1 10:04:07 CDT 2007


Hey,

I just read this post:
http://www.therailsway.com/2007/6/1/railsconf-recap-skinny-controllers

And it made me think immediately of the old handle_new_or_edit_post in
page_controller
http://dev.radiantcms.org/radiant/browser/trunk/radiant/app/controllers/admin/page_controller.rb?rev=57


But now I go and look at the latest version, and I see it's been
cleaned up a bit, and there a new AbstractModelController seperating
the logic a bit.

http://dev.radiantcms.org/radiant/browser/trunk/radiant/app/controllers/admin/page_controller.rb
and
http://dev.radiantcms.org/radiant/browser/trunk/radiant/app/controllers/admin/abstract_model_controller.rb


But still... you have a lot of logic in the controllers.  And a lot of
that logic, if moved to the model, would be a lot easier to override
and modify in extensions.

For instance, I'd like to see all the part-creating/arranging logic
moved into the Page model.

96	      parts_to_update = {}
97	      (params[:part]||{}).each {|k,v| parts_to_update[v[:name]] = v }
98	
99	      parts_to_remove = []
100	      @page.parts.each do |part|
101	        if(attrs = parts_to_update.delete(part.name))
102	          part.attributes = part.attributes.merge(attrs)
103	        else
104	          parts_to_remove << part
105	        end
106	      end
107	      parts_to_update.values.each do |attrs|
108	        @page.parts.build(attrs)
109	      end
110	      if result = @page.save
111	        new_parts = @page.parts - parts_to_remove
112	        new_parts.each { |part| part.save }
113	        @page.parts = new_parts
114	      end

So, my question to the core devs is... how open would you be to patch
coming from me, that addresses some of these things.

I must admit, my agenda is based on making my own extensions more
elegantly integrated with Radiant.  But I'm hoping to appeal to any
skinny-controller philosophy-followers as well.

thoughts?

Jacob



More information about the Radiant mailing list