Module Development - Alternative to the "Are You Sure?" Screen

There have been several times where I've had to write a custom module that enables the site admin to make some major changes to their site. With changes like these, I want the site admin to be super-duper sure they know what they're doing, so while sometimes I use Drupal's built-in Confirm Form function, I sometimes decide to take a less-intrusive approach.

One alternative that I recently used is to force the user to check an extra box in order for the site-altering code to be run. In this most recent case, the action was tied to a node update via hook_nodeapi(). I added a single on/off checkbox to the content type and then used hook_form_alter() to ensure that the checkbox is always presented to the user as un-checked.


function mymodule_form_alter(&$form, $form_state, $form_id) {
if ('superpowerful_node_form' == $form_id) {
// Always force the user to check the "update site" box for safety...
$form['field_updatesite']['#default_value'][0]['value'] = 0;
}
}

Then, in the hook_nodeapi() code, I make sure the box is checked before proceeding with the site-altering code.


function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
if ($node->type == 'superpowerful') {
switch ($op) {
case 'insert':
case 'update':
if ($node->field_updatesite[0]['value']) {
// do lots of stuff here...
}
else {
drupal_set_message('Since the "Update Site" checkbox was not checked, the site was not updated.');
}
break;
}
}
}

Nothing is fool-proof, but my clients seem to appreciate the one less click and page load.

Comments

[...] Module Development - Alternative to the "Are You Sure?" Screen | DrupalEasy drupaleasy.com/quicktips/module-development-alternative-are-you-sure-screen – view page – cached There have been several times where I've had to write a custom module that enables the site admin to make some major changes to their site. With chang..., There have been several times where I've had to write a custom module that enables the site admin to make some major changes to their site. With changes like these, I want the site admin to be super-duper sure they know what they're doing, so while — From the page [...]

Add new comment

The content of this field is kept private and will not be shown publicly.