You are here

function custom_formatters_formatter_export_form in Custom Formatters 6

1 call to custom_formatters_formatter_export_form()
custom_formatters_overview in ./custom_formatters.admin.inc
@file Contains administration functions for the Custom Formatters module.
1 string reference to 'custom_formatters_formatter_export_form'
custom_formatters_menu in ./custom_formatters.module
Implements hook_menu().

File

./custom_formatters.admin.inc, line 460
Contains administration functions for the Custom Formatters module.

Code

function custom_formatters_formatter_export_form($form_state, $formatters = array()) {
  if (empty($formatters)) {
    drupal_set_message(t('The specified formatter was not found'), 'error');
    drupal_goto('admin/build/formatters');
  }
  $form = array(
    '#tree' => TRUE,
  );
  if (is_array($formatters)) {
    $form['operation'] = array(
      '#type' => 'hidden',
      '#value' => 'export',
    );
    $form['formatters']['#tree'] = TRUE;
    foreach ($formatters as $formatter) {
      $formatters[$formatter] = custom_formatters_formatter($formatter);
      $form['formatters'][$formatter] = array(
        '#type' => 'hidden',
        '#value' => $formatter,
      );
    }
    $form['#submit'][] = 'custom_formatters_formatter_export_form_submit';
  }
  else {
    $formatters = array(
      $formatters->name => $formatters,
    );
  }

  // Cleanup formatters array.
  foreach ($formatters as &$formatter) {
    unset($formatter->source);
    if (isset($formatter->override)) {
      unset($formatter->override);
    }
  }
  $form['extra'] = array(
    '#type' => 'fieldset',
  );
  $form['extra']['module'] = array(
    '#type' => 'textfield',
    '#title' => t('Module name'),
    '#default_value' => !empty($form_state['storage']) ? $form_state['storage']['module'] : 'mymodule',
  );
  $form['extra']['mode'] = array(
    '#type' => 'select',
    '#title' => t('Export mode'),
    '#options' => array(
      'standard' => t('Standard CCK formatters'),
      'custom' => t('Custom formatters'),
    ),
    '#default_value' => !empty($form_state['storage']) ? $form_state['storage']['mode'] : 'standard',
    '#description' => '<strong>' . t('Standard CCK formatters') . ':</strong> ' . t('Uses the standard CCK formatters API (hook_theme(), hook_field_formatter_info(), etc) for a pure code export.') . '<br /><br />' . '<strong>' . t('Custom formatters') . ':</strong> ' . t('Uses a custom format (hook_custom_formatters_default()) to provide more control, in a similar fashion to Views.'),
  );
  $form['extra']['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Update',
  );
  $filename = drupal_strtolower(str_replace(' ', '_', $form['extra']['module']['#default_value']));
  $form['export']['output'] = array(
    '#type' => 'fieldset',
    '#title' => t('Export'),
    '#description' => t('Download !file.', array(
      '!file' => l($filename . (function_exists('gzencode') ? '.tgz' : '.tar'), 'admin/build/formatters/download/' . $form['extra']['mode']['#default_value'] . '/' . $filename . (function_exists('gzencode') ? '.tgz' : '.tar') . '?' . implode(',', array_keys($formatters))),
    )),
  );
  $info = theme('custom_formatters_export_info', $formatters, $form['extra']['module']['#default_value']);
  $form['export']['output']['info'] = array(
    '#type' => 'textarea',
    '#title' => "{$filename}.info",
    '#value' => $info,
    '#rows' => count(explode("\n", $info)),
  );
  $module = theme("custom_formatters_export_module", $formatters, $form['extra']['module']['#default_value'], $form['extra']['mode']['#default_value']);
  $form['export']['output']['module'] = array(
    '#type' => 'textarea',
    '#title' => "{$filename}.module",
    '#value' => $module,
    '#rows' => count(explode("\n", $module)),
  );
  return $form;
}