You are here

class RulesConditionalCaseUI in Conditional Rules 8

Same name and namespace in other branches
  1. 7 includes/rules_conditional.ui.inc \RulesConditionalCaseUI

UI for supporting option lists in the case value.

Hierarchy

Expanded class hierarchy of RulesConditionalCaseUI

1 string reference to 'RulesConditionalCaseUI'
rules_conditional_rules_plugin_info in ./rules_conditional.rules.inc
Implements hook_rules_plugin_info().

File

includes/rules_conditional.ui.inc, line 138
Plugin UI implementation.

View source
class RulesConditionalCaseUI extends RulesConditionalPluginUI {
  public function form(&$form, &$form_state, $options = array(), $iterator = NULL) {

    // TODO Remove when http://drupal.org/node/1676998 is fixed.
    $baseCount = count(explode('/', RulesPluginUI::$basePath));
    $op = arg($baseCount + 2);
    if ($op == 'add') {

      // Redirect to extended path.
      $pathAddPredicate = RulesPluginUI::path($this->element
        ->root()->name, 'add-case', $this->element
        ->parentElement(), $this->element
        ->plugin());
      drupal_goto($pathAddPredicate);
    }
    $options['init'] = FALSE;
    parent::form($form, $form_state, $options, $iterator);
  }
  protected function getParameterForm($name, $info, $settings, &$mode) {
    $form = parent::getParameterForm($name, $info, $settings, $mode);
    if ($name == 'value' && $mode == 'input') {
      $labels = $this
        ->getValueOptionLabels();
      if (isset($labels)) {
        $form['settings']['value']['#type'] = 'select';
        $form['settings']['value']['#options'] = $labels;
        $form['settings']['value']['#empty_value'] = '';
      }
    }
    return $form;
  }
  public function buildContent() {
    $content = parent::buildContent();

    // Use option label for text.
    if (isset($this->element->settings['value'])) {
      $value = $this->element->settings['value'];
      $labels = $this
        ->getValueOptionLabels();
      $content['label']['#markup'] = t('@plugin: @case', array(
        '@plugin' => $this->element
          ->label(),
        '@case' => isset($labels[$value]) ? $labels[$value] : $value,
      ));
      unset($content['description']['parameter']['value']);
    }
    return $content;
  }
  public function getValueOptionLabels() {
    $parent = $this->element
      ->parentElement();
    if (isset($parent->settings['data:select'])) {
      $dataSelector = $parent->settings['data:select'];
      if ($wrapper = $this->element
        ->applyDataSelector($dataSelector)) {
        $dataInfo = $wrapper
          ->info();
        if (!empty($dataInfo['options list'])) {
          return $wrapper
            ->optionsList('view');
        }
      }
    }
  }

}

Members