[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/skinr/ -> skinr_ui.rules.inc (source)

   1  <?php
   2  // $Id: skinr_ui.rules.inc,v 1.1.2.4 2010/05/14 12:04:45 moonray Exp $
   3  
   4  /**
   5   * @file
   6   * Admin page callbacks for the skinr module.
   7   */
   8  
   9  /**
  10   * Menu callback; displays the skinr rules listing.
  11   */
  12  function skinr_rules() {
  13    $output = '';
  14  
  15    $headers = array(t('Title'), t('Skinr ID'), array('data' => t('Operations'), 'colspan' => 2));
  16  
  17    $rules = skinr_rule_load();
  18    $rows = array();
  19    foreach ($rules as $rule) {
  20      $row = array(
  21        check_plain($rule->title),
  22        check_plain($rule->rid),
  23        l(t('edit'), 'admin/build/skinr/rules/edit/'. $rule->rid),
  24        l(t('delete'), 'admin/build/skinr/rules/delete/'. $rule->rid),
  25      );
  26      $rows[] = $row;
  27    }
  28  
  29    $link = l(t('Create a new rule'), 'admin/build/skinr/rules/add');
  30    $row = array();
  31    if (empty($rows)) {
  32      $row[] = array(
  33        'data' => t('No rules have been set up yet. !url.', array('!url' => $link)),
  34        'colspan' => 3,
  35      );
  36    }
  37    else {
  38      $row[] = array(
  39        'data' => t('!url.', array('!url' => $link)),
  40        'colspan' => 3,
  41      );
  42    }
  43    $rows[] = $row;
  44  
  45    $output .= theme('table', $headers, $rows);
  46    $output .= drupal_render($form);
  47  
  48    return $output;
  49  }
  50  
  51  /**
  52   * Menu callback; displays the edit form for a skinr rule.
  53   */
  54  function skinr_rule_edit(&$form_state, $rid = NULL) {
  55    $form = array(
  56      '#attributes' => array('class' => 'skinr-form'),
  57    );
  58  
  59    $form['rule'] = array(
  60      '#type' => 'fieldset',
  61      '#title' => t('Skinr rule visibility'),
  62      '#collapsible' => TRUE,
  63      '#weight' => -1,
  64    );
  65  
  66    if (isset($form_state['values'])) {
  67      $rule = array(
  68        'title' => $form_state['values']['title'],
  69        'roles' => $form_state['values']['roles'],
  70        'visibility' => $form_state['values']['visibility'],
  71        'pages' => $form_state['values']['pages'],
  72      );
  73    }
  74    elseif(!is_null($rid) && $rule = skinr_rule_load($rid)) {
  75      $rule = (array) $rule;
  76      $form['rule']['rid'] = array(
  77        '#type' => 'hidden',
  78        '#value' => $rid,
  79      );
  80    }
  81    else {
  82      $rule = array(
  83        'title' => '',
  84        'roles' => array(),
  85        'visibility' => 0,
  86        'pages' => '',
  87      );
  88    }
  89  
  90    $form['rule']['title'] = array(
  91      '#type' => 'textfield',
  92      '#title' => t('Title'),
  93      '#default_value' => $rule['title'],
  94      '#description' => t('Descriptive title for this rule; used by administrators.'),
  95      '#required' => TRUE,
  96    );
  97  
  98    // Inject the page level form elements here.
  99    $form['rule']['roles'] = array(
 100      '#type' => 'checkboxes',
 101      '#title' => t('Show for specific roles'),
 102      '#default_value' => $rule['roles'],
 103      '#options' => user_roles(),
 104      '#description' => t('Show only for the selected role(s). If you select no roles, it will be visible to all users.'),
 105    );
 106  
 107    // Set up options and description.
 108    $options = array(0 => t('Show on every page except the listed pages.'), 1 => t('Show on only the listed pages.'));
 109    $description = t("Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are %blog for the blog page and %blog-wildcard for every personal blog. %front is the front page.", array('%blog' => 'blog', '%blog-wildcard' => 'blog/*', '%front' => '<front>'));
 110  
 111    // Add the PHP specific stuff, if user has access.
 112    if (user_access('use PHP for visibility')) {
 113      $options[2] = t('Show if the following PHP code returns <code>TRUE</code> (PHP-mode, experts only).');
 114      $description .= ' '. t('If the PHP-mode is chosen, enter PHP code between %php. Note that executing incorrect PHP-code can break your Drupal site.', array('%php' => '<?php ?>'));
 115    }
 116    $form['rule']['visibility'] = array(
 117      '#type' => 'radios',
 118      '#title' => t('Show on specific pages'),
 119      '#options' => $options,
 120      '#default_value' => $rule['visibility'],
 121      '#required' => TRUE,
 122    );
 123    $form['rule']['pages'] = array(
 124      '#type' => 'textarea',
 125      '#title' => t('Pages'),
 126      '#default_value' => $rule['pages'],
 127      '#description' => $description,
 128    );
 129  
 130    $form['buttons']['save'] = array(
 131      '#type' => 'submit',
 132      '#value' => t('Save'),
 133    );
 134    if (isset($rule['rid'])) {
 135      $form['buttons']['delete'] = array(
 136        '#type' => 'submit',
 137        '#value' => t('Delete'),
 138        '#submit' => array('skinr_rule_delete_submit'),
 139      );
 140    }
 141  
 142    return $form;
 143  }
 144  
 145  function skinr_rule_edit_submit($form, &$form_state) {
 146    $rule = new stdClass();
 147    $rule->rid = !empty($form_state['values']['rid']) ? $form_state['values']['rid'] : NULL;
 148    $rule->title = $form_state['values']['title'];
 149    $rule->roles = $form_state['values']['roles'];
 150    $rule->visibility = $form_state['values']['visibility'];
 151    $rule->pages = $form_state['values']['pages'];
 152  
 153    skinr_rule_save($rule);
 154  
 155    $form_state['redirect'] = 'admin/build/skinr/rules';
 156  }
 157  
 158  function skinr_rule_delete_submit($form, &$form_state) {
 159    $destination = '';
 160    if (isset($_REQUEST['destination'])) {
 161      $destination = drupal_get_destination();
 162      unset($_REQUEST['destination']);
 163    }
 164    $form_state['redirect'] = array('admin/build/skinr/rules/delete/'. $form_state['values']['rid'], $destination);
 165  }
 166  
 167  /**
 168   * Menu callback; displays the delete confirmation for a skinr page rule.
 169   */
 170  function skinr_rule_delete_confirm(&$form_state, $rid) {
 171    $form['rid'] = array(
 172      '#type' => 'value',
 173      '#value' => $rid,
 174    );
 175  
 176    $rule = skinr_rule_load($rid);
 177    return confirm_form($form,
 178      t('Are you sure you want to delete %title?', array('%title' => $rule->title)),
 179      isset($_GET['destination']) ? $_GET['destination'] : 'admin/build/skinr/rules',
 180      t('This action cannot be undone.'),
 181      t('Delete'),
 182      t('Cancel')
 183    );
 184  }
 185  
 186  function skinr_rule_delete_confirm_submit($form, &$form_state) {
 187    if ($form_state['values']['confirm']) {
 188      skinr_rule_delete($form_state['values']['rid']);
 189    }
 190  
 191    $form_state['redirect'] = 'admin/build/skinr/rules';
 192  }


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7