Drupal undelete - SoC 2007 proposal
Synopsis
My proposal is for a Drupal 'undelete' module: a module which provides node content- and node content admin- modules with a standard API for implementing operations for restoring deleted nodes, and therefore provides a Drupal site end-users and admins with a well-understood piece of functionality, through which common paradigms like a node 'trashbin' can be implemented. The ability to restore a previously deleted piece of content is a major advance for Drupal functionality-wise, and one much requested and desired. It will lay the groundwork and may even find time for natural extensions like 'un-edit', 'un-insert' – pieces of a general functionality for 'undoing' content operations, like that found in the Plone CMS. It will also be an advance architecture-wise, as it will stimulate activity and consensus in the Drupal developer community around ambiguous or only partially-specified pieces of Drupal architecture; like what defines a content 'operation', content 'delete', relations among content nodes, content operation 'transactions' across modules, content node data storage; down to a clearer idea of what an piece of Drupal content should look like in code. However, the module will not require changes in any way to the current Drupal core and node handling code, nor in any existing Drupal database objects. One overriding design principle for undelete is that it be implemented as an independent, self-contained module, which modules may choose to use and implement as additional functionality that does not require any changes to existing code – undelete will install only new database objects and code. It will not require rewrites of any existing PHP or SQL code and will not attempt to use hook_nodeapi to inject SQL code for modifying node data without knowledge of the node module. Although differing in several key approaches. The undelete module builds on the work being done on the Drupal 'delete'API' and 'trashbin' code by Chad Phillips, which has been in development (and debate) for more that 1 ½ years.