You are here

function feeds_tamper_ui_add_plugin_form in Feeds Tamper 6

Same name and namespace in other branches
  1. 7 feeds_tamper_ui/feeds_tamper_ui.admin.inc \feeds_tamper_ui_add_plugin_form()
1 string reference to 'feeds_tamper_ui_add_plugin_form'
feeds_tamper_ui_menu in feeds_tamper_ui/feeds_tamper_ui.module
Implementation of hook_menu().

File

feeds_tamper_ui/feeds_tamper_ui.admin.inc, line 258
Forms and their accompanying validation and submit functions for Feeds Tamper UI.

Code

function feeds_tamper_ui_add_plugin_form(&$form_state, $importer, $source) {
  $source = rawurldecode($source);

  // Add css.
  drupal_add_css(drupal_get_path('module', 'feeds_tamper_ui') . '/feeds_tamper_ui.css');

  // Steal Feeds JS for machine_name goodness.
  drupal_add_js(drupal_get_path('module', 'feeds_ui') . '/feeds_ui.js');

  // Workaround some bug unserializing $_SESSION stuff. Most likely related to
  // ajax.
  // @todo Fix this properly.
  if (get_class($importer) == '__PHP_Incomplete_Class') {
    foreach ($importer as $key => $value) {
      if ($key == 'id') {
        $id = $value;
        break;
      }
    }
    $importer = feeds_importer($id);
  }

  // Set breadcrumb.
  $crumb = drupal_get_breadcrumb();
  $crumb[] = l(t('Tamper plugins: @importer', array(
    '@importer' => $importer->config['name'],
  )), FEEDS_TAMPER_UI_BASE . '/list/' . $importer->id);
  drupal_set_breadcrumb($crumb);

  // Set importer and source for use in validate and submit.
  $form_state['storage']['importer'] = $importer;
  $form_state['storage']['source'] = $source;

  // Build plugin select list.
  $feeds_tamper_plugins = feeds_tamper_get_plugins();
  $plugins = array();
  foreach ($feeds_tamper_plugins as $plugin_id => $plugin) {
    $plugins[t($plugin['category'])][$plugin_id] = t($plugin['name']);
  }
  ksort($plugins);
  foreach ($plugins as &$p) {
    asort($p);
  }
  $form = array();
  $machine_name = key(reset($plugins));
  if (!empty($form_state['values']['plugin_id'])) {
    $machine_name = $form_state['values']['plugin_id'];
  }
  $plugin = feeds_tamper_get_plugin($machine_name);
  $form['plugin_id'] = array(
    '#title' => t('The plugin to add'),
    '#type' => 'select',
    '#options' => $plugins,
    '#default_value' => $machine_name,
    '#ahah' => array(
      'path' => 'feeds_tamper/js',
      'wrapper' => 'plugin-wrapper',
    ),
  );
  $form['update'] = array(
    '#type' => 'submit',
    '#value' => t('Choose'),
    '#submit' => array(
      'feeds_tamper_ui_ajax_submit',
    ),
    '#attributes' => array(
      'class' => 'no-js',
    ),
    '#submit' => array(
      'feeds_tamper_ui_ajax_submit',
    ),
  );
  $form['plugin']['description'] = array(
    '#title' => t('Description'),
    '#type' => 'textfield',
    '#default_value' => !empty($plugin['default description']) ? t($plugin['default description']) : t($plugin['name']),
    '#required' => TRUE,
    '#description' => t('A useful description of what this plugin is doing.'),
    '#attributes' => array(
      'class' => 'feed-name',
    ),
  );
  $form['plugin']['id'] = array(
    '#title' => t('Machine name'),
    '#type' => 'textfield',
    '#default_value' => feeds_tamper_make_machine($form['plugin']['description']['#default_value']),
    '#maxlength' => 32,
    '#attributes' => array(
      'class' => 'feed-id',
    ),
    // For Feeds JS.
    '#required' => TRUE,
  );

  // Ajax wrapper.
  $form['plugin']['#prefix'] = '<div id="plugin-wrapper">';
  $form['plugin']['#suffix'] = '</div>';
  $form['plugin']['settings'] = array(
    '#title' => t('Configure @name', array(
      '@name' => $plugin['name'],
    )),
    '#type' => 'fieldset',
    '#tree' => TRUE,
  );
  $form['plugin']['settings'] += $plugin['form']($importer, $source, array());
  $form['add'] = array(
    '#type' => 'submit',
    '#value' => t('Add'),
  );
  return $form;
}