I really wanted to see this functionality but I all saw was talk so I
scratched my own itch. Code wise it is pretty clean but the UI is
functional but ugly. All the movements are via the page index page
with a little ajax for #3 and #4. It works on the “styled blog” test
site.
http://dev.radiantcms.org:9007/radiant/ticket/179
This adds five movements to pages:
Sorts
#1 Sort up in container
#2 Sort down in container
Reparenting
#3 Become a child of one of my parents siblings
#4 Become a child of one of my siblings
#5 Become a sibling of my parent
Sorting is via a sort attribute. On creation each page is assigned a
sort_id from a bottomless pool. Changes in the sort are via swaping
sort_id’s with the next page in the proper direction. The original
order of the sort presently used is maintained to some degree as the
sort attribute is assigned sequentially over time with has the same
effect of the ASC timestamp sort.
Reparenting is constrained to those movements that make sense. The
root node can not be preparented. moves that there is no where to
move to are also blocked at the UI level
Steps needed to use this:
run migrate to add column and add sort table
set sort id’s for existing pages " update pages set sort_id = id;"
wroks on postgresql and maintains the orginal sorting order
set the sequence used by the sort table to the id after the last
assigned one in the pages table. OR for other DB file the sort table
to the same point as pages table # put the icons inplace.
Issues/future work
The icons I used are ugly.
Does not stop reparenting to virtual pages.
Moves could be made to display via AJAX without refreshing page.