Arthur, Thanks for the tip on drag_order, it sounded great. It took me quite a bit of trial and error to get it working. It makes me realize that the combination of radiant versions, rails versions, and extension versions can really be a pain in the ass.
Just an opinion, it would seem that moving/reordering pages is a pretty core function of a CMS. It would be sensible to me to roll this drag_order extension into the 0.9 core gem. Anyway, here is the story of my struggle through getting drag_order working: ----------------- - Downloaded the latest TAR from GitHub, extracted - Ran rake radiant:extensions:drag_order:migrate -- failed. - Ran rake radiant:extensions:drag_order:update -- failed. - Ran rake radiant:extensions:drag_order:update -t -- failed, but see that the problem is the "require 'application'" on line two of drag_order_extension.rb. Change it to "application_controller" - Ran rake radiant:extensions:drag_order:update -t -- passed - Ran rake radiant:extensions:drag_order:migrate -t -- failed, error from DB that "Pages" table already has a position field (from the REORDER extension). Edit the migration to comment out the column creation lines, re-run, passed. - Restart the server - Here's what I see on the admin index page: http://img.skitch.com/20091129-x54ie7nrq27r1g8n8kk6piqp6g.jpg Working with extensions always makes me feel like a freaking noobie, ugh! I looked in vendor/extensions/drag_order/app/views/admin/page/ and everything is there. Though I wondered why "page" and not "pages" -- renamed the folder to "pages", restarted, and those error messages are gone. Here's what I see: http://img.skitch.com/20091129-pkk3m9n5iqsphw7i9253rsyhw1.jpg Sweet! Try it and --- uhhh --- nothing happens. Look at the HTML source and find this: <td class='drag_order'><img alt="Drag this icon to move the page" src="/images/admin/drag_order.png?1259505171" /></td> Looks reasonable, but there must be some Javascript missing. Look at the header area and see prototype, string, effects, tabcontrol, ruledtable, admin, sitemap, and lowpro javascripts. Nothing about drag_order, hmmm. Look in the file system and I see drag_order.js under public/javascripts/admin/, so the file is in the right place just not being included in the header. I really don't understand how plugins get loaded and such, but I see the include statements in /app/views/admin/pages/_header.html.haml. Clearly this file isn't getting picked up for some reason. As a first hack, I copy the two include lines to the _header.html.haml of the REORDER extension, since that one seems to be getting loaded. Copy the includes, restart, reload, and it looks good! I can drag the handle around and see the purple indicator. Drop a file, then boom: Application error from the URL "http://chavez.casimircreative.com/admin/pages/75/move_to/106/1". Ugh. Check out the log and this is what I see: Processing ApplicationController#move_to (for 76.106.40.99 at 2009-11-29 15:12:57) [GET] Parameters: {"rel"=>"106", "action"=>"move_to", "id"=>"75", "controller"=>"admin/page", "pos"=>"1"} NameError (uninitialized constant Admin::PageController): /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/rack/request_handler.rb:91:in `process_request' I already know there's something about Page versus Pages, so this isn't shocking. First I look in drag_order_extension.rb and find the "activate" and "deactivate" methods that must be responsible for telling Radiant about the extension's views, modules, and such. I should come back here to figure out why the _header wasn't being picked up. Moving on... I search in drag_order/lib/drag_order for any files containing the text "PageController" (from the error message). The only appears in "page_controller_extensions.rb", so I rename the file itself to "pages_controller_extensions.rb" and, inside the file, rename the module to DragOrder::PagesControllerExtensions. Reload and boom: uninitialized constant DragOrder::PageControllerExtensions error from the Radiant extension loader. Sounds reasonable. Looking at the initializer code radiant is calling that activate method that I saw in the drag_order_extension.rb file, so I'll go look at that. The lines that caught my eye before looked like "(Admin::PageController rescue Admin::PagesController)" which seemed unnecessary if my instance is using pages. So I do some simplifying and renaming to end up with this: def activate admin.page.index.add :sitemap_head, "drag_order_header" admin.page.index.add :node, "drag_order" admin.page.index.add :top, "header" Page.send :include, DragOrder::PageExtensions Admin::PagesController.send :helper, DragOrder::PageHelper Admin::PagesController.send :include, DragOrder::PagesControllerExtensions StandardTags.send :include, DragOrder::TagExtensions end I compare that to the activate method of the working REORDER extension and see that the top three lines are basically identical. I wonder why the partials aren't getting picked up. Maybe this whole method isn't getting executed?? Restart the server and see what happens... It loads. Try to do a drag & drop, and: Processing ApplicationController#move_to (for 76.106.40.99 at 2009-11-29 15:38:14) [GET] Parameters: {"rel"=>"106", "action"=>"move_to", "id"=>"75", "controller"=>"admin/page", "pos"=>"1"} NameError (uninitialized constant Admin::PageController): Maybe it's a routing problem? I reopen drag_order_extension.rb and look at the "define_routes" method. I change this line: map.with_options :controller => "admin/page" do |page| to this: map.with_options :controller => "admin/pages" do |page| Restart the server, drag and drop...HOLY CRAP IT WORKED! I at once love and hate the extension system. - Jeff On Sun, Nov 29, 2009 at 12:04 AM, Nate <[email protected]> wrote: > Arthur Gunn wrote: >> Hey Jeff, >> >> No insights into copy_move functionality, you could of course checkout >> a previous version, but I wonder why not use: >> http://github.com/bright4/radiant-drag-order >> >> Ajax copy, move and reorder all in one. >> > > Awesome find. I thought Sean's reorder extension had withered and died. > Nice to see that it was revived and updated. > > > ~Nate > _______________________________________________ > Radiant mailing list > Post: [email protected] > Search: http://radiantcms.org/mailing-list/search/ > Site: http://lists.radiantcms.org/mailman/listinfo/radiant > _______________________________________________ Radiant mailing list Post: [email protected] Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
