function heartbeat_rules_default_action_form in Heartbeat 6.3
Same name and namespace in other branches
- 6.4 modules/heartbeat_rules/hrules.rules.inc \heartbeat_rules_default_action_form()
Action drupal message configuration form.
File
- ./
heartbeat.rules.inc, line 116
Code
function heartbeat_rules_default_action_form($settings, &$form, $form_state) {
// Ahah is in the form, so cache it
$form['#cache'] = TRUE;
// Add the default empty values to the settings hash
$settings += array(
'uid_param' => '',
'uid_target_param' => '',
'nid_target_param' => '',
'message_id_param' => '',
'variables_param' => '',
);
$form['settings']['uid_param'] = array(
'#type' => 'textfield',
'#size' => '15',
'#maxsize' => '25',
'#title' => t('User'),
'#default_value' => $settings['uid_param'],
'#description' => t('The user doing the activity. Think well about who is the acting user for content related events. Is it the currently logged-in user or the author of the content.'),
'#weight' => -5,
);
$form['settings']['uid_target_param'] = array(
'#type' => 'textfield',
'#size' => '15',
'#maxsize' => '25',
'#title' => t('User target'),
'#default_value' => $settings['uid_target_param'],
'#description' => t('The user target of the activity'),
'#weight' => -4,
);
$form['settings']['nid_target_param'] = array(
'#type' => 'textfield',
'#size' => '15',
'#maxsize' => '25',
'#title' => t('Node target'),
'#default_value' => $settings['nid_target_param'],
'#description' => t('The node target of the activity'),
'#weight' => -3,
);
$messages = heartbeat_messages('all', false, false);
$options = array(
0 => t('No message selected'),
);
foreach ($messages as $message) {
$options[$message['message_id']] = $message['description'];
}
// Choose a message and addin ahah behavior to show variables
$form['settings']['message_id_param'] = array(
'#type' => 'select',
'#title' => t('Choose a message'),
'#default_value' => empty($settings['message_id_param']) ? 0 : $settings['message_id_param'],
'#options' => $options,
'#weight' => -2,
'#description' => t('The message'),
'#submit' => array(
'heartbeat_rules_action_message_id_submit',
),
// If no javascript action.
'#ahah' => array(
'path' => 'heartbeat/heartbeat_activity_rules_default/js',
'wrapper' => 'message-variables',
'event' => 'change',
'method' => 'replace',
'effect' => 'fade',
),
);
// Add a wrapper for the variables section.
$form['settings']['message_id_wrapper'] = array(
'#type' => 'markup',
'#weight' => -1,
'#prefix' => '<div class="clear-block" id="heartbeat-wrapper"><div id="message-variables">',
'#suffix' => '</div></div>',
'#value' => '',
);
// Show variables if message_id_param is set
//dsm($form_state);
if (!empty($form_state['values']['settings']['message_id_param'])) {
// With the message id, we fetch the whole message
$heartbeat_message_id = $form_state['values']['settings']['message_id_param'];
$message = heartbeat_load_message($heartbeat_message_id);
$defined_variables = heartbeat_match_variables($message->message);
// If words are found as match to a heartbeat message variable,
// variables are needed in the message
if (count($defined_variables['words']) > 0) {
// Add the textarea where all the magic variables go into
$description = t('Variables are supported to build heartbeat messages at all time from a log.<br />
The syntax you must use for this is simple. You give your variable you want to use,
prefixed by @ or #. (# is for variables that need to be pretranslated)
<br />Assign your variable to a token available from the token replacement list,
and assign it with the "=".<br /><strong>Note! One variable assignment per line and no colons as assignment because colons are in the tokens as well.</strong>');
$default_values = heartbeat_variables_compare($settings, $form_state['values']['variables_param'], $defined_variables['words']);
// Container for just the message variables
$form['settings']['variables_param'] = array(
'#type' => 'textarea',
'#title' => t('Assign a token to each of these variables used in the selected message'),
'#suffix' => '<small>' . $description . '</small>',
'#default_value' => $default_values,
'#cols' => 60,
'#rows' => 5,
'#prefix' => t('<strong>Message</strong>: <em>@message</em>', array(
'@message' => $message->message,
)),
'#required' => TRUE,
);
}
}
else {
$form['settings']['message_id_wrapper']['variables_info'] = array(
'#type' => 'markup',
'#value' => t('Variables in the chosen message will appear here. Assign them to a token, available for this type of event.'),
);
}
}