James Avery wrote a post, “Modals or No more popups” inquiring about modal solutions. I really do not have an opinion on the different options :), but his post reminded me of a rule set for myself while working on Graffiti: Never use Popups unless they are absolutely positively needed.
This rule was influenced by Robert Hoekman’s excellent, "_"designing the obvious":http://www.amazon.com/exec/obidos/redirect?path=ASIN/032145345X&link_code=as2&camp=1789&tag=scottwater-20&creative=9325_".
This behavior is just plain rude. It’s not the user’s job to jump through every little hoop an application comes up with. It’s the job of the software to what the user wants.
In the past, I have primarily used a popup to confirm the deletion of content. I started to think about how many times I accidentally clicked delete and did not actually want to delete anything. I am sure this has happened, but it is probably one in a very large number. Still, I know I would be not very happy if I accidentally deleted a post (like this one :).
The solution (and one that Hoekman shows as well via GMail) for Graffiti was to enable content to be undeleted. To support this, we added a simple bit field (IsDeleted) to some of our content tables (Posts and Comments). When something is deleted, instead of actually removing it from the table, we set IsDeleted to false. With this in place, we can enable users to delete without any kind of confirmation. When we query the data, we exclude the IsDeleted records (in most cases) then give users the option to undelete the record later if the need arises.
Here are a quick video (if you view this via RSS you might need to click through):
On a similar note, SubSonic has excellent support for IsDeleted.