Ankit Agarwal / Dan Poltawski / Damyon Wiese,
I've pushed a second commit to my Github repo (same branch) which gets as close as possible to making block drag/drop work on user profile pages. Note that there's still a small edge case that doesn't work - administrators moving blocks inherited from the system context on other users' profiles. Users (including admins) can move them on their own profile pages, though, and if an admin really desperately needs to move a system block on another user's profile, they can still click the button to edit the block instance config and move it that way. Alternatively, they can use the "login as" functionality to become the user in question, in which case it will also work just fine. There simply isn't sufficient information being passed through in the AJAX call in order to determine the correct context in this tiny edge case - and I don't have the time (or the inclination) to completely rewrite the block moving system at the moment, so I'm hoping that you're willing to accept this one small issue (we could create a new issue in the tracker for it, if you like) given that there are a few workarounds for it.
Note that this commit also fixes an issue whereby the drop target that's added for an otherwise empty pre/post block region to end up in the wrong place if there are custom regions (such as the central "content" block region on user profile / My Home pages). It also adds a couple of divs around the "content" block region on the user profile page, because there wasn't sufficient structure to do the ID/class tweaks with JS as I did with My Home pages - but since this is only being integrated into master, I don't imagine that a minor page structure change like this is an issue - if there are any themes for which this causes display issues, they'll have plenty of time to deal with it before 2.5 is released.
CSS.REGIONMAIN ("region-main") is used as part of the selector that identifies the central block region on the My Home page, so that the relevant classes and IDs can be applied to make it actually work for block drag/drop. CSS.REGIONCONTENT ("region-content") is also used as part of this process, as it's not only a class name that needs to be applied to an inner div (hence its prior existence in blocks.js) but also an ID that's required because the central block region is called "content" (it's been set up by calling $PAGE->blocks->add_region('content');) - block regions need to have their ID set to "region-" followed by the region name. I hope that makes some sense to you - it's a bit tricky to explain unless you understand how block regions and the block drag/drop code work...