You are here

function skinr_rule_edit in Skinr 6.2

Menu callback; displays the edit form for a skinr rule.

2 string references to 'skinr_rule_edit'
skinr_skinr_config in modules/skinr.skinr.inc
Implementation of hook_skinr_config().
skinr_ui_menu in ./skinr_ui.module
Implementation of hook_menu().

File

./skinr_ui.rules.inc, line 53
Admin page callbacks for the skinr module.

Code

function skinr_rule_edit(&$form_state, $rid = NULL) {
  $form = array(
    '#attributes' => array(
      'class' => 'skinr-form',
    ),
  );
  $form['rule'] = array(
    '#type' => 'fieldset',
    '#title' => t('Skinr rule visibility'),
    '#collapsible' => TRUE,
    '#weight' => -1,
  );
  if (isset($form_state['values'])) {
    $rule = array(
      'title' => $form_state['values']['title'],
      'roles' => $form_state['values']['roles'],
      'visibility' => $form_state['values']['visibility'],
      'pages' => $form_state['values']['pages'],
    );
  }
  elseif (!is_null($rid) && ($rule = skinr_rule_load($rid))) {
    $rule = (array) $rule;
    $form['rule']['rid'] = array(
      '#type' => 'hidden',
      '#value' => $rid,
    );
  }
  else {
    $rule = array(
      'title' => '',
      'roles' => array(),
      'visibility' => 0,
      'pages' => '',
    );
  }
  $form['rule']['title'] = array(
    '#type' => 'textfield',
    '#title' => t('Title'),
    '#default_value' => $rule['title'],
    '#description' => t('Descriptive title for this rule; used by administrators.'),
    '#required' => TRUE,
  );

  // Inject the page level form elements here.
  $form['rule']['roles'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Show for specific roles'),
    '#default_value' => $rule['roles'],
    '#options' => user_roles(),
    '#description' => t('Show only for the selected role(s). If you select no roles, it will be visible to all users.'),
  );

  // Set up options and description.
  $options = array(
    0 => t('Show on every page except the listed pages.'),
    1 => t('Show on only the listed pages.'),
  );
  $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>',
  ));

  // Add the PHP specific stuff, if user has access.
  if (user_access('use PHP for visibility')) {
    $options[2] = t('Show if the following PHP code returns <code>TRUE</code> (PHP-mode, experts only).');
    $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 ?>',
    ));
  }
  $form['rule']['visibility'] = array(
    '#type' => 'radios',
    '#title' => t('Show on specific pages'),
    '#options' => $options,
    '#default_value' => $rule['visibility'],
    '#required' => TRUE,
  );
  $form['rule']['pages'] = array(
    '#type' => 'textarea',
    '#title' => t('Pages'),
    '#default_value' => $rule['pages'],
    '#description' => $description,
  );
  $form['buttons']['save'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  if (isset($rule['rid'])) {
    $form['buttons']['delete'] = array(
      '#type' => 'submit',
      '#value' => t('Delete'),
      '#submit' => array(
        'skinr_rule_delete_submit',
      ),
    );
  }
  return $form;
}