[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/audio/ -> audio.admin.inc (source)

   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  }


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