function feeds_tamper_ui_add_plugin_form in Feeds Tamper 6
Same name and namespace in other branches
- 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;
}