You are here

function feeds_tamper_ui_add_plugin_form in Feeds Tamper 7

Same name and namespace in other branches
  1. 6 feeds_tamper_ui/feeds_tamper_ui.admin.inc \feeds_tamper_ui_add_plugin_form()

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
Implements hook_menu().

File

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

Code

function feeds_tamper_ui_add_plugin_form($form, &$form_state, $importer, $source) {

  // Set importer and source for use in validate and submit.
  $form_state['importer'] = $importer;
  $form_state['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);
  }
  $machine_name = key(reset($plugins));
  if (!empty($form_state['values']['plugin_id'])) {
    $machine_name = $form_state['values']['plugin_id'];
  }

  // Add css.
  $form['#attached']['css'][] = drupal_get_path('module', 'feeds_tamper_ui') . '/feeds_tamper_ui.css';
  $plugin = feeds_tamper_get_plugin($machine_name);
  $form['plugin_id'] = array(
    '#title' => t('The plugin to add'),
    '#type' => 'select',
    '#options' => $plugins,
    '#default_value' => '',
    '#tree' => TRUE,
    '#ajax' => array(
      'callback' => 'feeds_tamper_ajax_callback',
      'wrapper' => 'feeds-tamper-plugin',
      'progress' => 'none',
    ),
  );
  $form['update'] = array(
    '#type' => 'submit',
    '#limit_validation_errors' => array(
      array(
        'plugin_id',
      ),
    ),
    '#submit' => array(
      'feeds_tamper_ui_add_plugin_form_submit',
    ),
    '#value' => t('Choose'),
    '#attributes' => array(
      'class' => array(
        'no-js',
      ),
    ),
  );
  $form['plugin']['#prefix'] = '<div class="clear-fix" id="feeds-tamper-plugin">';
  $form['plugin']['#suffix'] = '</div>';
  $form['plugin']['description'] = array(
    '#title' => t('Description'),
    '#type' => 'textfield',
    '#default_value' => $plugin['default description'] ? t($plugin['default description']) : t($plugin['name']),
    '#required' => TRUE,
    '#description' => t('A useful description of what this plugin is doing.'),
  );
  $form['plugin']['id'] = array(
    '#title' => t('Machine name'),
    '#type' => 'machine_name',
    '#maxlength' => 32,
    '#machine_name' => array(
      'exists' => 'feeds_tamper_machine_name_callback',
      'source' => array(
        'plugin',
        'description',
      ),
    ),
    '#default_value' => $machine_name,
  );
  $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_state);
  $form['add'] = array(
    '#type' => 'submit',
    '#value' => t('Add'),
  );
  return $form;
}