function feed_import_fields_form in Feed Import 7.3
Fields edit form
1 string reference to 'feed_import_fields_form'
- feed_import_menu in ./
feed_import.module - Implements hook_menu().
File
- ./
feed_import.module, line 2014 - User interface, cron functions for feed_import module
Code
function feed_import_fields_form($form, &$form_state, $feed) {
// Set page title.
drupal_set_title(t('Edit fields - @name', array(
'@name' => $feed->name,
)), PASS_THROUGH);
$form['machine_name'] = array(
'#type' => 'value',
'#value' => $feed->machine_name,
);
// Set uniq path.
$form['uniq'] = array(
'#type' => 'textfield',
'#default_value' => $feed->settings['uniq_path'],
'#title' => t('Enter path to unique id'),
'#description' => t('Used to monitor items for updates.'),
);
// Fields list
$form['fields'] = array(
'#type' => 'container',
'#attributes' => array(
'id' => 'feed_import_path_fields',
),
'#tree' => TRUE,
);
$paths = $fields = array();
if (isset($form_state['#current_item'])) {
$fv =& $form_state['values']['fields'];
for ($i = 0; $i <= $form_state['#current_item']; $i++) {
if (!isset($fv['container_' . $i])) {
continue;
}
$field =& $fv['container_' . $i];
$fields[] = $field['field'];
$paths += feed_import_generate_path_item($i, $field);
unset($field);
}
unset($fv);
}
else {
$form_state['#current_item'] = -1;
foreach ($feed->settings['fields'] as &$field) {
$form_state['#current_item']++;
$fields[] = $field['field'];
$paths += feed_import_generate_path_item($form_state['#current_item'], $field, TRUE);
}
unset($field);
}
$cbk = isset($form_state['triggering_element']['#name']) ? $form_state['triggering_element']['#name'] : '';
if ($cbk == 'add_new_item') {
$fv =& $form_state['values'];
$form_state['#field_added'] = FALSE;
$field = $fv['add_new_item_mode'] ? 'add_new_item_field' : 'add_new_item_manual';
if ($field = drupal_strtolower($fv[$field])) {
$i = -1;
$exists = FALSE;
while (++$i <= $form_state['#current_item']) {
if (isset($fv['fields']['container_' . $i]['field']) && $fv['fields']['container_' . $i]['field'] == $field) {
$exists = TRUE;
break;
}
}
if (!$exists) {
$form_state['#field_added'] = TRUE;
$form_state['#current_item']++;
$paths += feed_import_generate_path_item($form_state['#current_item'], array(
'field' => $field,
'default_value' => '',
'default_action' => FeedImportProcessor::ACTION_DEFAULT_VALUE,
'update_mode' => FeedImportProcessor::UPDATE_COMBINE,
'paths' => '',
));
}
}
}
elseif (preg_match('/remove_container_([0-9]{1,9})/', $cbk, $match)) {
// Delete container.
unset($paths['container_' . $match[1]]);
}
// Add fields.
$form['fields'] += $paths;
unset($paths);
// Generate field options.
$opts = FeedImport::getEntityInfo($feed->entity);
$opts = array_merge($opts->properties, array_keys($opts->fields));
$opts = array_diff($opts, $fields);
$opts = array_combine($opts, $opts);
// Add new field mode.
$form['add_new_item_mode'] = array(
'#type' => 'checkbox',
'#title' => t('Use defined fields'),
'#default_value' => TRUE,
'#id' => 'add-new-item-mode',
);
// Add entity fields.
$form['add_new_item_field'] = array(
'#type' => 'select',
'#options' => $opts,
'#title' => t('Select defined field'),
'#description' => t('Select field name and click "' . t('Add field') . '" button'),
'#id' => 'add-new-item-field',
'#states' => array(
'visible' => array(
':input[name=add_new_item_mode]' => array(
'checked' => TRUE,
),
),
),
);
// Manual field.
$form['add_new_item_manual'] = array(
'#type' => 'textfield',
'#title' => t('Enter field name'),
'#description' => t('Write field name and click "@name" button', array(
'@name' => t('Add field'),
)),
'#id' => 'add-new-item-manual',
'#states' => array(
'visible' => array(
':input[name=add_new_item_mode]' => array(
'checked' => FALSE,
),
),
),
);
// Add new field button.
$form['add_new_item'] = array(
'#type' => 'button',
'#name' => 'add_new_item',
'#value' => t('Add field'),
'#inline' => TRUE,
'#ajax' => array(
'event' => 'click',
'callback' => 'feed_import_ajax_add_new_item',
'wrapper' => 'feed_import_path_fields',
'method' => 'append',
),
);
// Submit buttons.
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save feed'),
);
// Add js.
$form['#attached'] = array(
'js' => array(
drupal_get_path('module', 'feed_import') . '/feed_import.js' => array(
'type' => 'file',
),
),
);
return $form;
}