rules_forms.admin.inc in Rules 6
Implements forms events management screen.
File
rules_forms/rules_forms.admin.incView source
<?php
/**
* @file
* Implements forms events management screen.
*/
/**
* Defines the forms events settings form
*/
function rules_forms_admin_events(&$form_state) {
$form = array();
$form['enable_form_activation_message'] = array(
'#type' => 'checkbox',
'#title' => t('Enable event activation messages on forms'),
'#default_value' => isset($_SESSION['rules_forms_message']) ? $_SESSION['rules_forms_message'] : FALSE,
'#description' => t('If checked, there will be a message on each form containing a link to activate events for the form. Only visible for your currently logged in user account.'),
);
$form['enable_form_element_ids'] = array(
'#type' => 'checkbox',
'#title' => t('Display form element IDs'),
'#default_value' => isset($_SESSION['rules_forms_element_ids']) ? $_SESSION['rules_forms_element_ids'] : FALSE,
'#description' => t('If checked, the identifier of every single form element will be displayed on event-activated forms. Only visible for your currently logged in user account.'),
);
$form['settings_submit'] = array(
'#type' => 'submit',
'#value' => t('Save settings'),
'#submit' => array(
'rules_forms_settings_submit',
),
);
$form_events = variable_get('rules_forms_events', array());
if (!empty($form_events)) {
$form['form_events'] = array(
'#type' => 'checkboxes',
'#title' => t('Forms where events are activated'),
'#options' => $form_events,
'#description' => t('Forms that currently invoke events. Select forms to deactivate events on them.'),
);
$form['events_deactivate'] = array(
'#type' => 'submit',
'#value' => t('Deactivate events'),
'#submit' => array(
'rules_forms_events_deactivate_submit',
),
);
}
else {
drupal_set_message('Enable the event activation messages below and go to the form you would like to activate events on.', 'status', FALSE);
}
return $form;
}
/**
* Submit handler to save settings.
*/
function rules_forms_settings_submit($form_id, $form_values) {
$_SESSION['rules_forms_message'] = (bool) $form_values['values']['enable_form_activation_message'];
$_SESSION['rules_forms_element_ids'] = (bool) $form_values['values']['enable_form_element_ids'];
drupal_set_message(t('The settings have been saved.'));
}
/**
* Submit handler to deactivate form events.
*/
function rules_forms_events_deactivate_submit($form_id, $form_values) {
$deactivate_events = array_filter($form_values['values']['form_events']);
$form_events = variable_get('rules_forms_events', array());
foreach ($deactivate_events as $key => $value) {
unset($form_events[$key]);
}
variable_set('rules_forms_events', $form_events);
drupal_set_message(t('The event settings have been saved.'));
}
/**
* Activation page for a form ID.
*/
function rules_forms_activate($form_id_activate) {
$form_events = variable_get('rules_forms_events', array());
if (isset($form_events[$form_id_activate])) {
return t('Events for %form_id have already been activated.', array(
'%form_id' => $form_id_activate,
));
}
return drupal_get_form('rules_forms_activate_form', $form_id_activate);
}
/**
* Confirmation form to activate events on a form.
*/
function rules_forms_activate_form(&$form_state, $form_id_activate) {
$default_form_label = drupal_ucfirst(str_replace('_', ' ', $form_id_activate));
$form = array(
'form_id_label' => array(
'#type' => 'textfield',
'#title' => t('Custom form label'),
'#default_value' => $default_form_label,
'#required' => TRUE,
'#description' => t('Enter a custom label to better recognize the form in the administration user interface.'),
),
);
$form_state['form_id_activate'] = $form_id_activate;
$path = array();
$path['path'] = isset($_GET['destination']) ? $_GET['destination'] : RULES_ADMIN_FORMS_PATH;
$title = t('Are you sure you want to activate events for %form?', array(
'%form' => $form_id_activate,
));
$msg = t('Once the activation is confirmed, events on this form can be used to trigger rules.');
return confirm_form($form, $title, $path, $msg, t('Activate'), t('Cancel'));
}
/**
* Submit handler for activation of a form.
*/
function rules_forms_activate_form_submit($form, &$form_state) {
$form_events = variable_get('rules_forms_events', array());
$form_events[$form_state['form_id_activate']] = $form_state['values']['form_id_label'];
variable_set('rules_forms_events', $form_events);
drupal_set_message(t("%form has been activated.", array(
'%form' => $form_state['form_id_activate'],
)));
$form_state['redirect'] = RULES_ADMIN_FORMS_PATH;
}
Functions
Name | Description |
---|---|
rules_forms_activate | Activation page for a form ID. |
rules_forms_activate_form | Confirmation form to activate events on a form. |
rules_forms_activate_form_submit | Submit handler for activation of a form. |
rules_forms_admin_events | Defines the forms events settings form |
rules_forms_events_deactivate_submit | Submit handler to deactivate form events. |
rules_forms_settings_submit | Submit handler to save settings. |