Created
February 22, 2012 23:33
-
-
Save pascalduez/1888373 to your computer and use it in GitHub Desktop.
Drupal 7 - Add a cancel button on node forms
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Implements hook_form_alter(). | |
*/ | |
function modulename_form_alter(&$form, &$form_state, $form_id) { | |
// You might want to filter by content type. | |
if ($form_id == 'ctype_node_form') { | |
// Add a cancel button. | |
$form['actions']['cancel'] = array( | |
'#type' => 'submit', | |
'#value' => t('Cancel'), | |
'#access' => TRUE, | |
'#weight' => 15, | |
'#submit' => array('modulename_form_cancel', 'node_form_submit_build_node'), | |
'#limit_validation_errors' => array(), | |
); | |
} | |
} | |
/** | |
* Custom cancel button callback. | |
*/ | |
function modulename_form_cancel($form, &$form_state) { | |
$url = $_GET['destination'] ? $_GET['destination'] : 'choose/your/path'; | |
drupal_goto($url); | |
} |
function modulename_form_alter(&$form, &$form_state, $form_id) {
// You might want to filter by content type.
if ($form_id == 'ctype_node_form') {
if (!isset($form_state['ajax'])){
// Add a cancel button.
$form['actions']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#access' => TRUE,
'#weight' => 15,
'#submit' => array('modulename_form_cancel', 'node_form_submit_build_node'),
'#limit_validation_errors' => array(),
);
}
else {
$form['actions']['cancel'] = array(
'#weight' => 15,
'#markup' => l(t('Cancel'), '#',
array(
'attributes' => array(
'class' => 'ctools-close-modal button'
),
'external' => TRUE
)
)
);
}
}
}
/**
* Custom cancel button callback.
*/
function modulename_form_cancell($form, &$form_state) {
$fallback_destinaton = 'choose/your/path';
// If edit, use the node itself as fallback.
if (!empty($form['#node'])) {
if (!empty($form['#node']->nid)) {
$nid = $form['#node']->nid;
$node = node_load($nid);
$node_uri = node_uri($node);
$fallback_destinaton = $node_uri['path'];
}
}
// Go to destination or fallback.
$url = isset($_GET['destination']) ? $_GET['destination'] : $fallback_destinaton;
drupal_goto($url);
}
Would it be possible for me to repurpose your code to be able to place a button next to a field in content form that I've created?
Essentially, I'd like the button to be able to generate a random MD5 hash value and place it in the adjacent text field? Thanks!
dS.
Thanks a ton !!!! That was very helpful
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi,
If you use the node form on a modal pop up the cancel button is giving an ajax error. Did you try something like this?