| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
1 <?php 2 // $Id: audio.admin.inc,v 1.4 2009/11/25 19:29:47 drewish Exp $ 3 4 /** 5 * Settings form. 6 */ 7 function audio_admin_settings() { 8 $form['audio_default_title_format'] = array( 9 '#type' => 'textfield', 10 '#title' => t('Default node title format'), 11 '#maxlength' => 128, 12 '#default_value' => variable_get('audio_default_title_format', '[audio-tag-title-raw] by [audio-tag-artist-raw]'), 13 '#description' => t("The audio node's title can use the file's metadata as variables. This will be used as the default title for all new audio nodes. By using the tokens listed below, you can automatically create titles from things like a song's artist or title. <strong>Note:</strong> the node title is escaped so it is safe to use the -raw tokens."), 14 ); 15 $form['audio_teaser_format'] = array( 16 '#type' => 'textfield', 17 '#title' => t('Node teaser format'), 18 '#maxlength' => 128, 19 '#default_value' => variable_get('audio_teaser_format', '[audio-player]<br />[audio-length]'), 20 '#description' => t("Use this setting to customize the teasers for audio nodes. Using the tokens listed below you can select what information about the file will be displayed. <strong>Note: the teaser is not escaped so it is unsafe to use the -raw tokens.</strong>"), 21 ); 22 $form['token_help'] = array( 23 '#title' => t('List of available tokens'), 24 '#type' => 'fieldset', 25 '#collapsible' => TRUE, 26 '#collapsed' => TRUE, 27 '#description' => t('This is a list of the tokens that can be used in the titles and teasers of audio nodes.'), 28 'help' => array('#value' => theme('token_help', 'node')), 29 ); 30 $form['audio_allowed_extensions'] = array( 31 '#type' => 'textfield', 32 '#title' => t('Permitted audio file extensions'), 33 '#maxlength' => 128, 34 '#default_value' => variable_get('audio_allowed_extensions', 'mp3 wav ogg'), 35 '#description' => t('Audio file extensions that users can upload. Separate extensions with a space and do not include a leading dot.'), 36 ); 37 $form['audio_default_downloadable'] = array( 38 '#type' => 'checkbox', 39 '#title' => t("Downloadable by default"), 40 '#default_value' => variable_get('audio_default_downloadable', 1), 41 '#description' => t('Check this to make downloadable the default setting for new audio nodes. You should be aware that even when audio is not marked as downloadable, clever users can still download it, this just makes the work harder. '), 42 ); 43 44 return system_settings_form($form); 45 } 46 47 function audio_admin_settings_validate($form, &$form_state) { 48 // Ensure they don't try to slip raw tokens in. 49 if (preg_match("/\[.*?\-raw\s*?\]/i", $form_state['values']['audio_teaser_format'])) { 50 form_set_error('audio_teaser_format', t('Raw tokens are not allowed.')); 51 } 52 } 53 54 /** 55 * The ID3 tag settings page. 56 */ 57 function audio_admin_settings_metadata() { 58 $settings = audio_get_tag_settings(); 59 $form['audio_tag_settings'] = array( 60 '#tree' => TRUE, 61 '#theme' => 'audio_admin_settings_metadata_table', 62 ); 63 foreach ($settings as $tag => $setting) { 64 $form['audio_tag_settings'][$tag]['name'] = array( 65 '#type' => 'item', 66 '#value' => filter_xss($tag) 67 ); 68 $form['audio_tag_settings'][$tag]['autocomplete'] = array( 69 '#type' => 'checkbox', 70 '#default_value' => $setting['autocomplete'] 71 ); 72 $form['audio_tag_settings'][$tag]['required'] = array( 73 '#type' => 'checkbox', 74 '#default_value' => $setting['required'], 75 ); 76 $form['audio_tag_settings'][$tag]['hidden'] = array( 77 '#type' => 'checkbox', 78 '#default_value' => $setting['hidden'], 79 ); 80 $form['audio_tag_settings'][$tag]['browsable'] = array( 81 '#type' => 'checkbox', 82 '#default_value' => $setting['browsable'], 83 ); 84 $form['audio_tag_settings'][$tag]['writetofile'] = array( 85 '#type' => 'checkbox', 86 '#default_value' => $setting['writetofile'], 87 ); 88 $form['audio_tag_settings'][$tag]['weight'] = array( 89 '#type' => 'weight', 90 '#default_value' => $setting['weight'] 91 ); 92 $form['audio_tag_settings'][$tag]['delete'] = array( 93 '#type' => 'checkbox', 94 '#default_value' => FALSE, 95 ); 96 } 97 98 // Add in a row for a new tag. 99 $form['audio_tag_settings']['new']['name'] = array( 100 '#type' => 'textfield', 101 '#size' => 15, 102 '#maxlength' => 45, 103 ); 104 $form['audio_tag_settings']['new']['autocomplete'] = array( 105 '#type' => 'checkbox', 106 '#default_value' => TRUE, 107 ); 108 $form['audio_tag_settings']['new']['required'] = array( 109 '#type' => 'checkbox', 110 '#default_value' => FALSE, 111 ); 112 $form['audio_tag_settings']['new']['hidden'] = array( 113 '#type' => 'checkbox', 114 '#default_value' => FALSE, 115 ); 116 $form['audio_tag_settings']['new']['browsable'] = array( 117 '#type' => 'checkbox', 118 '#default_value' => TRUE, 119 ); 120 $form['audio_tag_settings']['new']['writetofile'] = array( 121 '#type' => 'checkbox', 122 '#default_value' => FALSE, 123 ); 124 $form['audio_tag_settings']['new']['weight'] = array( 125 '#type' => 'weight', 126 '#default_value' => 10, 127 ); 128 $form['audio_tag_settings']['new']['delete'] = array( 129 '#type' => 'value', 130 '#value' => FALSE, 131 ); 132 133 $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration') ); 134 $form['buttons']['reset'] = array('#type' => 'submit', '#value' => t('Reset to defaults') ); 135 136 return $form; 137 } 138 139 /** 140 * Save the ID3 tag settings, we can't use system_settings_form_submit() as the 141 * form callback because it wouldn't call theme_audio_settings(). 142 */ 143 function audio_admin_settings_metadata_submit($form, $form_state) { 144 $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; 145 146 if ($op == t('Reset to defaults')) { 147 variable_del('audio_tag_settings'); 148 drupal_set_message(t('The configuration options have been reset to their default values.')); 149 } 150 else { 151 // Remove any deleted tags. 152 foreach ($form_state['values']['audio_tag_settings'] as $name => $field) { 153 if ($form_state['values']['audio_tag_settings'][$name]['delete']) { 154 unset($form_state['values']['audio_tag_settings'][$name]); 155 } 156 } 157 // If there's a new tag, add it in. 158 if ($form_state['values']['audio_tag_settings']['new']['name']) { 159 $name = $form_state['values']['audio_tag_settings']['new']['name']; 160 $form_state['values']['audio_tag_settings'][$name] = $form_state['values']['audio_tag_settings']['new']; 161 } 162 unset($form_state['values']['audio_tag_settings']['new']); 163 164 // Sort by the weight and then by name of the tag. I'm sure there's a 165 // better way to do this... 166 foreach ($form_state['values']['audio_tag_settings'] as $tag => $settings) { 167 $weights[$tag] = $settings['weight']; 168 $names[$tag] = $tag; 169 } 170 array_multisort($weights, SORT_ASC, SORT_NUMERIC, $names, SORT_ASC, SORT_STRING); 171 $audio_tag_settings = array(); 172 foreach ($names as $tag) { 173 $audio_tag_settings[$tag] = $form_state['values']['audio_tag_settings'][$tag]; 174 } 175 176 // ...and save it. 177 variable_set('audio_tag_settings', $audio_tag_settings); 178 179 drupal_set_message(t('The configuration options have been saved.')); 180 } 181 } 182 183 /** 184 * Format the id3tags settings form as a table. 185 */ 186 function theme_audio_admin_settings_metadata_table($form_element) { 187 $rows = array(); 188 foreach (element_children($form_element) as $key) { 189 $form_element[$key]['weight']['#attributes']['class'] = 'metadata-tag-weight'; 190 191 $rows[] = array( 192 'data' => array( 193 drupal_render($form_element[$key]['name']), 194 drupal_render($form_element[$key]['autocomplete']), 195 drupal_render($form_element[$key]['required']), 196 drupal_render($form_element[$key]['hidden']), 197 drupal_render($form_element[$key]['browsable']), 198 drupal_render($form_element[$key]['writetofile']), 199 drupal_render($form_element[$key]['weight']), 200 drupal_render($form_element[$key]['delete']), 201 ), 202 'class' => 'draggable', 203 ); 204 } 205 $header = array(t('Tag'), t('Autocompleted'), t('Required'), t('Hidden'), t('Browsable'), 206 t('Written to file'), t('Weight'), t('Delete')); 207 208 $output = ''; 209 if (count($rows)) { 210 drupal_add_tabledrag('audio-settings-metadata', 'order', 'sibling', 'metadata-tag-weight'); 211 $output .= theme('table', $header, $rows, array('id' => 'audio-settings-metadata')); 212 } 213 $output .= drupal_render($form_element); 214 return $output; 215 } 216 217 /** 218 * Form for player settings. 219 */ 220 function audio_admin_settings_players() { 221 $form['player_settings']['#theme'] = 'audio_admin_settings_players'; 222 223 $options = array(); 224 foreach (audio_get_players('formats') as $format => $players) { 225 foreach ($players as $id => $player) { 226 $options[$id] = ''; // Put no label on options. 227 $form['player_settings']['players'][$format][$id]['title'] = array( 228 '#type' => 'item', 229 '#title' => t('Title'), 230 '#value' => $player['title'], 231 ); 232 $form['player_settings']['players'][$format][$id]['description'] = array( 233 '#type' => 'item', 234 '#title' => t('Description'), 235 '#value' => $player['description'], 236 ); 237 $form['player_settings']['players'][$format][$id]['url'] = array( 238 '#type' => 'item', 239 '#title' => t('URL'), 240 '#value' => $player['url'], 241 ); 242 $form['player_settings']['players'][$format][$id]['preview'] = array( 243 '#type' => 'item', 244 '#title' => t('URL'), 245 '#value' => drupal_get_path('module', $player['module']) .'/'. $player['preview'], 246 ); 247 } 248 $form['player_settings']['audio_player_'. $format] = array( 249 '#type' => 'radios', 250 '#title' => t('Player'), 251 '#default_value' => variable_get('audio_player_'. $format, '1pixelout'), 252 '#options' => $options, 253 ); 254 } 255 return system_settings_form($form); 256 } 257 258 function theme_audio_admin_settings_players($form_element) { 259 $output = ''; 260 $header = array(t('Selection'), t('Player'), t('Description'), t('Homepage')); 261 foreach (element_children($form_element['players']) as $format) { 262 $output .= '<h2>'. t('%format files', array('%format' => $format)) .'</h2>'; 263 $rows = array(); 264 foreach (element_children($form_element['players'][$format]) as $name) { 265 $rows[] = array( 266 array('data' => drupal_render($form_element['audio_player_'. $format][$name]), 'align' => 'center'), 267 check_plain($form_element['players'][$format][$name]['title']['#value']) .'<br />'. 268 theme('image', $form_element['players'][$format][$name]['preview']['#value'], 'preview', 'preview'), 269 check_plain($form_element['players'][$format][$name]['description']['#value']), 270 l(t('Link'), $form_element['players'][$format][$name]['url']['#value']), 271 ); 272 unset($form_element['players'][$format][$name]['title']); 273 unset($form_element['players'][$format][$name]['description']); 274 unset($form_element['players'][$format][$name]['url']); 275 unset($form_element['players'][$format][$name]['preview']); 276 } 277 $output .= theme('table', $header, $rows); 278 } 279 return $output . drupal_render($form); 280 }
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 |