| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 | <?php/** * @file Rules theme functions *//** * Themes a tree of rule elements in a draggable table. * * @ingroup themeable */function theme_rules_elements($variables) {  $form = $variables['element'];  $form['#theme'] = 'table';  $form['#header'] = array(t('Elements'), t('Weight'), t('Operations'));  $form['#attributes']['id'] = 'rules-' . drupal_html_id($form['#caption']) . '-id';  foreach (element_children($form) as $element_id) {    $element = &$form[$element_id];    // Add special classes to be used for tabledrag.js.    $element['parent_id']['#attributes']['class'] = array('rules-parent-id');    $element['element_id']['#attributes']['class'] = array('rules-element-id');    $element['weight']['#attributes']['class'] = array('rules-element-weight');    $row = array();    $row[] = theme('indentation', array('size' => $element['#depth'])) . drupal_render($element['label']);    $row[] = drupal_render($element['weight']) . drupal_render($element['parent_id']) . drupal_render($element['element_id']);    $row[] = array('class' => 'rules-operations', 'data' => $element['operations']);    $row = array('data' => $row) + $element['#attributes'];    $row['class'][] = 'draggable';    if (!$element['#container']) {      $row['class'][] = 'tabledrag-leaf';    }    $form['#rows'][] = $row;  }  if (!empty($form['#rows'])) {    drupal_add_tabledrag($form['#attributes']['id'], 'match', 'parent', 'rules-parent-id', 'rules-parent-id', 'rules-element-id', TRUE, 10);    drupal_add_tabledrag($form['#attributes']['id'], 'order', 'sibling', 'rules-element-weight');  }  else {    $form['#rows'][] = array(array('data' => t('None'), 'colspan' => 3));  }  if (!empty($form['#add'])) {    $row = array();    $row[] = array('data' => $form['#add'], 'colspan' => 3);    $form['#rows'][] = array('data' => $row, 'class' => array('rules-elements-add'));  }  // Add a wrapping div.  return '<div class="rules-elements-table">' . drupal_render($form) . '</div>';}/** * Themes the rules form for editing the used variables. * * @see RulesPluginUI::getVariableForm() * @ingroup themeable */function theme_rules_ui_variable_form($variables) {  $elements = $variables['element'];  $table['#theme'] = 'table';  $table['#header'] = array(t('Data type'), t('Label'), t('Machine name'), t('Usage'), array('data' => t('Weight'), 'class' => array('tabledrag-hide')));  $table['#attributes']['id'] = 'rules-' . drupal_html_id($elements['#title']) . '-id';  foreach (element_children($elements['items']) as $key) {    $element = &$elements['items'][$key];    // Add special classes to be used for tabledrag.js.    $element['weight']['#attributes']['class'] = array('rules-element-weight');    $row = array();    $row[] = array('data' => $element['type']);    $row[] = array('data' => $element['label']);    $row[] = array('data' => $element['name']);    $row[] = array('data' => $element['usage']);    $row[] = array('data' => $element['weight']);    $row = array('data' => $row) + $element['#attributes'];    $row['class'][] = 'draggable';    $table['#rows'][] = $row;  }  $elements['items']['#printed'] = TRUE;  if (!empty($table['#rows'])) {    drupal_add_tabledrag($table['#attributes']['id'], 'order', 'sibling', 'rules-element-weight');  }  // Theme it like a form item, but with the description above the content.  $attributes['class'][] = 'form-item';  $attributes['class'][] = 'rules-variables-form';  $output = '<div' . drupal_attributes($attributes) . '>' . "\n";  $output .= theme('form_element_label', $variables);  if (!empty($elements['#description'])) {    $output .= ' <div class="description">' . $elements['#description'] . "</div>\n";  }  $output .= ' ' . drupal_render($table) . "\n";  // Add in any further children elements.  foreach (element_children($elements, TRUE) as $key) {    $output .= drupal_render($elements[$key]);  }  $output .= "</div>\n";  return $output;}/** * Themes a view of multiple configuration items. * @ingroup themeable */function theme_rules_content_group($variables) {  $element = $variables['element'];  $output = array();  foreach (element_children($element) as $key) {    $output[] = drupal_render($element[$key]);  }  $output = array_filter($output);  $heading = !empty($element['#caption']) ? "<span class='rules-content-heading'>" . $element['#caption'] . ': </span>' : '';  if (!empty($output)) {    $element['#attributes']['class'][] = 'rules-element-content-group';    return '<div' . drupal_attributes($element['#attributes']) . '>' . $heading . implode(', ', $output) . '</div>';  }}/** * Themes the view of a single parameter configuration. * @ingroup themeable */function theme_rules_parameter_configuration($variables) {  $element = $variables['element'];  $content = drupal_render_children($element);  // Add the full content to the span's title, but don't use drupal_attributes  // for that as this would invoke check_plain() again.  $title = strip_tags($content);  $element['#attributes']['class'][] = 'rules-parameter-configuration';  $attributes = drupal_attributes($element['#attributes']) . " title='$title'";  $label_attributes['class'][] = 'rules-parameter-label';  if (!empty($element['#info']['description'])) {    $label_attributes['title'] = $element['#info']['description'];  }  $label_attributes = drupal_attributes($label_attributes);  $output = "<span $label_attributes>" . check_plain($element['#info']['label']) . ': </span>';  $output .= "<span $attributes>" . truncate_utf8($content, 30, TRUE, TRUE) . "</span>";  return $output;}/** * Themes info about variables. * @ingroup themeable */function theme_rules_variable_view($variables) {  $element = $variables['element'];  $label_attributes['class'][] = 'rules-variable-label';  $label_attributes['title'] = '';  if (!empty($element['#info']['description'])) {    $label_attributes['title'] = $element['#info']['description'] . ' ';  }  $label_attributes['title'] .= t('Data type: !type', array('!type' => $element['#info']['type']));  $label_attributes = drupal_attributes($label_attributes);  $output = check_plain($element['#info']['label']);  $output .= ' (' . check_plain($element['#name']) . ')';  return "<span $label_attributes>" . $output . '</span>';}/** * Themes help for using the data selector. * @ingroup themeable */function theme_rules_data_selector_help($variables) {  $variables_info = $variables['variables'];  $param_info = $variables['parameter'];  $render = array(    '#type' => 'fieldset',    '#title' => t('Data selectors'),    '#pre_render' => array(),    '#attributes' => array(),  );  // Make it manually collapsible as we cannot use #collapsible without the  // FAPI element processor.  $render['#attached']['js'][] = 'misc/collapse.js';  $render['#attributes']['class'][] = 'collapsible';  $render['#attributes']['class'][] = 'collapsed';  $render['table'] = array(    '#theme' => 'table',    '#header' => array(t('Selector'), t('Label'), t('Description')),  );  foreach (RulesData::matchingDataSelector($variables_info, $param_info) as $selector => $info) {    $info += array('label' => '', 'description' => '');    $render['table']['#rows'][] = array(check_plain($selector), check_plain(drupal_ucfirst($info['label'])), check_plain($info['description']));  }  return drupal_render($render);}/** * Themes the rules log debug output. * @ingroup themeable */function theme_rules_log($variables) {  $element = $variables['element'];  drupal_add_css(drupal_get_path('module', 'rules') . '/ui/rules.ui.css');  // Add jquery ui core css and functions, which are needed for the icons.  drupal_add_library('system', 'ui');  drupal_add_js(drupal_get_path('module', 'rules') . '/ui/rules.debug.js');  $output = '<div class="rules-debug-log">';  $output .= '<h3 class="rules-debug-log-head">';  $output .= '<span class="rules-debug-open-main rules-debug-collapsible-link">';  $output .= '<span unselectable="on" class="ui-icon ui-icon-triangle-1-e rules-debug-icon-open"> </span>';  $output .= t('Rules evaluation log');  $output .= '</span>';  $output .= '</span>';  $output .= '<span class="rules-debug-open-all rules-debug-collapsible-link">-' . t('Open all') . '-<span>';  $output .= '</h3>';  $output .= '<div>';  $output .= $element['#children'];  $output .= '</div>';  $output .= '</div>';  return $output;}/** * Theme rules debug log elements. * @ingroup themeable */function theme_rules_debug_element($variables) {  $output = '<div class="rules-debug-block">';  $output .= '<div class="rules-debug-log-head rules-debug-open rules-debug-collapsible-link">"';  $output .= '<span unselectable="on" class="ui-icon ui-icon-triangle-1-e rules-debug-icon-open"> </span>';  $output .= $variables['head'];  if (isset($variables['link'])) {    $output .= ' ' . $variables['link'];  }  $output .= '</div>';  $output .= $variables['log'];  $output .= '</div>';  return $output;}/** * Themes rules autocomplete forms. * @ingroup themeable */function theme_rules_autocomplete($variables) {  $element = $variables['element'];  drupal_add_js(drupal_get_path('module', 'rules') . '/ui/rules.autocomplete.js');  drupal_add_library('system', 'ui.autocomplete');  drupal_add_library('system', 'ui.button');  $element['#attributes']['type'] = 'text';  element_set_attributes($element, array('id', 'name', 'value', 'size', 'maxlength'));  _form_set_class($element, array('form-text', 'rules-autocomplete'));  $id = $element['#attributes']['id'];  $id_button = drupal_html_id($id . '-button');  $js_vars['rules_autocomplete'][$id] = array(    'inputId' => $id,    'source' => url($element['#autocomplete_path'], array('absolute' => TRUE)),  );  drupal_add_js($js_vars, 'setting');  $output = '<div class="rules-autocomplete">';  $output .= '<input' . drupal_attributes($element['#attributes']) . ' />';  $output .= '</div>';  return $output;}/** * General theme function for displaying settings related help. * @ingroup themeable */function theme_rules_settings_help($variables) {  $text = $variables['text'];  $heading = $variables['heading'];  return "<p class=\"rules-settings-help\"><strong>$heading:</strong> $text</p>";}
 |