MDL-32652 - Make block drag-drop work throughout Moodle
authorPaul Nicholls <paul.nicholls@canterbury.ac.nz>
Tue, 15 Jan 2013 00:08:25 +0000 (13:08 +1300)
committerPaul Nicholls <paul.nicholls@canterbury.ac.nz>
Tue, 29 Jan 2013 01:57:28 +0000 (14:57 +1300)
commit606554d5b0ff9859b5458627f6ca8574b88bf21b
treedc5b597fa6565af79826c099fcfc0faee03c15a7
parentb3778a0dec34e49bf5def212e0cc18a39fd3f609
MDL-32652 - Make block drag-drop work throughout Moodle

The central "content" region on My Home / user profile pages also needs to
be initialised in lib/ajax/blocks.php in order to allow blocks to be
dropped into that region successfully.  Some tweaks were also necessary in
order to correct the "content" region's structure in order for drag-drop
to function on this region on these pages.

Non-standard block regions (including the central "content" region
used by My Home and user profile pages) were causing the temporary empty
block region used as a drop target to sometimes appear in the wrong place.

The call to init_requirements_data (which includes the block drag-drop JS)
happens at a late enough stage in page generation that we can simply
pass the context ID through to the JS, so that it can be sent as part of
the AJAX request.  This prevents lib/ajax/blocks.php from having to try
to guess the context from the other bits of information it receives, so
block drag-drop should now work everywhere without issues.
course/lib.php
lib/ajax/blocks.php
lib/outputrequirementslib.php
lib/yui/blocks/blocks.js
user/profile.php