function RulesRuleUI::form

Overrides RulesActionContainerUI::form

1 call to RulesRuleUI::form()
RulesReactionRuleUI::form in ui/ui.plugins.inc
Implements RulesPluginUIInterface::form().
1 method overrides RulesRuleUI::form()
RulesReactionRuleUI::form in ui/ui.plugins.inc
Implements RulesPluginUIInterface::form().

File

ui/ui.plugins.inc, line 27

Class

RulesRuleUI
Rule specific UI.

Code

public function form(&$form, &$form_state, $options = array(), $iterator = NULL) {
    $form_state['rules_element'] = $this->rule;
    $label = $this->element
        ->label();
    // Automatically add a counter to unlabelled rules.
    if ($label == t('unlabeled') && !$this->element
        ->isRoot() && !empty($options['init'])) {
        $parent = $this->element
            ->parentElement();
        $label .= ' ' . count($parent->getIterator());
    }
    // Components have already a label. If used inside a rule-set add a label
    // though. It's called 'Name' in the UI though.
    if (!$this->element
        ->isRoot()) {
        $form['label'] = array(
            '#type' => 'textfield',
            '#title' => t('Name'),
            '#default_value' => empty($options['init']) ? $label : '',
            '#required' => TRUE,
            '#weight' => 5,
            '#description' => t('A human-readable name shortly describing the rule.'),
        );
    }
    $form += array(
        'conditions' => array(
            '#weight' => -5,
            '#tree' => TRUE,
        ),
    );
    $this->conditions
        ->form($form['conditions'], $form_state);
    unset($form['conditions']['negate']);
    // Add actions form.
    $iterator = new RecursiveIteratorIterator($this->rule
        ->actions(), RecursiveIteratorIterator::SELF_FIRST);
    parent::form($form, $form_state, $options, $iterator);
    // Hide nested elements during creation.
    $form['elements']['#access'] = empty($options['init']);
    $form['conditions']['elements']['#access'] = empty($options['init']);
    $form_state['redirect'] = RulesPluginUI::path($this->element
        ->root()->name, 'edit', $this->element);
    if (!empty($options['button'])) {
        $form['submit']['#value'] = t('Save changes');
    }
}