Index: rules_forms/rules_forms.admin.inc =================================================================== --- rules_forms/rules_forms.admin.inc (revision 0) +++ rules_forms/rules_forms.admin.inc (revision 0) @@ -0,0 +1,44 @@ + 'checkboxes', + '#title' => t('Form IDs that will provide events'), + '#default_value' => variable_get('rules_forms_events', array()), + '#options' => drupal_map_assoc($form_ids), + '#description' => t('Check form IDs that will fire events for usage with Rules.'), + ); + $form['enable_form_id_message'] = array( + '#type' => 'checkbox', + '#title' => t('Enable form ID hint message'), + '#default_value' => variable_get('rules_forms_display_id', 0), + '#description' => t('If checked, there will be a message on each form to indicate the form ID. Only visible for Rules admins.'), + ); + $form['submit'] = array('#type' => 'submit', '#value' => t('Save')); + return $form; +} + +/** + * Submit handler + */ +function rules_forms_admin_events_submit($form_id, $form_values) { + $form_events = $form_values['values']['form_events']; + variable_set('rules_forms_events', $form_events); + $form_id_msg = $form_values['values']['enable_form_id_message']; + variable_set('rules_forms_display_id', $form_id_msg); + drupal_set_message(t('The settings have been saved.')); +} \ No newline at end of file Index: rules_forms/rules_forms.rules.inc =================================================================== --- rules_forms/rules_forms.rules.inc (revision 0) +++ rules_forms/rules_forms.rules.inc (revision 0) @@ -0,0 +1,83 @@ + $value) { + $events[$form_id .'_form_built'] = array( + 'label' => t('@form is being built', array('@form' => $form_id)), + 'module' => 'Forms', + 'arguments' => rules_forms_events_arguments(t('form built')), + ); + } + return $events; +} + +/** + * Returns some arguments suitable for hook form alter. + */ +function rules_forms_events_arguments($form_label) { + return array( + 'form' => array( + 'type' => 'form', + 'label' => $form_label, + ), + 'form_state' => array( + 'type' => 'form_state', + 'label' => $form_label .' state', + ), + 'form_id' => array( + 'type' => 'string', + 'label' => t('Form ID'), + ), + ) + rules_events_global_user_argument(); +} + +/** + * Implementation of hook_rules_data_type_info(). + */ +function rules_forms_rules_data_type_info() { + return array( + 'form' => array( + 'label' => t('form'), + 'class' => 'rules_data_type_form', + 'savable' => FALSE, + 'identifiable' => FALSE, + 'module' => 'Forms', + ), + 'form_state' => array( + 'label' => t('form_state'), + 'class' => 'rules_data_type_form_state', + 'savable' => FALSE, + 'identifiable' => FALSE, + 'module' => 'Forms', + ), + ); +} + +/** + * Defines the form data type. + */ +class rules_data_type_form extends rules_data_type {} + +/** + * Defines the form_state data type. + */ +class rules_data_type_form_state extends rules_data_type {} + +/** + * @} + */ \ No newline at end of file Index: rules_forms/rules_forms.module =================================================================== --- rules_forms/rules_forms.module (revision 0) +++ rules_forms/rules_forms.module (revision 0) @@ -0,0 +1,54 @@ +'. t('Overview of all forms on the site that can be enabled to trigger form events.') .'

'; + } +} + +/** + * Implementation of hook_menu(). + */ +function rules_forms_menu() { + $items = array(); + $items[RULES_ADMIN_FORMS_PATH] = array( + 'title' => 'Form events', + 'description' => 'Configure Rules forms events.', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('rules_forms_admin_events'), + 'access arguments' => array('administer rules'), + 'type' => MENU_NORMAL_ITEM, + 'weight' => 6, + 'file' => 'rules_forms.admin.inc', + ); + return $items; +} + +/** + * Implementation of hook_form_alter(). + */ +function rules_forms_form_alter($form, &$form_state, $form_id) { + $form_events = variable_get('rules_forms_events', array()); + // Fire event if form is enabled + if (in_array($form_id, $form_events)) { + rules_invoke_event($form_id .'_form_built', $form, $form_state, $form_id); + } + // Display form ID message if enabled for Rules admins + if (user_access('administer rules') && variable_get('rules_forms_display_id', 0)) { + drupal_set_message(t('Form ID: %id', array('%id' => $form_id))); + } +} \ No newline at end of file Index: rules_forms/rules_forms.info =================================================================== --- rules_forms/rules_forms.info (revision 0) +++ rules_forms/rules_forms.info (revision 0) @@ -0,0 +1,6 @@ +; $Id$ +name = Rules Forms support +description = Provides events, conditions and actions for forms. +dependencies[] = rules +package = Rules +core = 6.x \ No newline at end of file