| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Mar 24 11:18:33 2011 | Cross-referenced by PHPXref 0.7 |