? 744660-44_full_batching.patch ? 744660-45_full_batching.patch ? 849986-4_clean_batching.patch ? 850652-1_column_names.patch ? 850998-1_nice_upload.patch ? libraries/simplepie.inc Index: feeds.css =================================================================== RCS file: feeds.css diff -N feeds.css --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ feeds.css 11 Jul 2010 16:05:25 -0000 @@ -0,0 +1,8 @@ +/* $Id$ */ + +#edit-feeds-FeedsFileFetcher-upload-wrapper .file-info { + float: left; + width: 200px; + border-right: 1px solid #ddd; + margin-right: 10px; + } Index: feeds.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/feeds/feeds.module,v retrieving revision 1.48 diff -u -p -r1.48 feeds.module --- feeds.module 11 Jul 2010 01:10:52 -0000 1.48 +++ feeds.module 11 Jul 2010 16:05:25 -0000 @@ -154,6 +154,9 @@ function feeds_theme() { 'feeds_info' => array( 'file' => 'feeds.pages.inc', ), + 'feeds_upload' => array( + 'file' => 'feeds.pages.inc', + ), ); } Index: feeds.pages.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/feeds/feeds.pages.inc,v retrieving revision 1.18 diff -u -p -r1.18 feeds.pages.inc --- feeds.pages.inc 4 May 2010 21:24:58 -0000 1.18 +++ feeds.pages.inc 11 Jul 2010 16:05:25 -0000 @@ -152,3 +152,32 @@ function feeds_fetcher_callback($importe } drupal_access_denied(); } + +/** + * Theme upload widget. + */ +function theme_feeds_upload($element) { + drupal_add_css(drupal_get_path('module', 'feeds') .'/feeds.css'); + _form_set_class($element, array('form-file')); + $output = ''; + if (!empty($element['#file_info'])) { + $info = $element['#file_info']; + $output .= '
'; + $output .= '
'; + $output .= l(basename($info['path']), $info['path']); + $output .= '
'; + $output .= '
'; + $output .= format_size($info['size']); + $output .= '
'; + if ($info['mime']) { + $output .= '
'; + $output .= check_plain($info['mime']); + $output .= '
'; + } + $output .= '
'; + } + $output .= '
'; + $output .= '\n"; + $output .= '
'; + return theme('form_element', $element, $output); +} Index: plugins/FeedsFileFetcher.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/feeds/plugins/FeedsFileFetcher.inc,v retrieving revision 1.10 diff -u -p -r1.10 FeedsFileFetcher.inc --- plugins/FeedsFileFetcher.inc 11 Jul 2010 13:54:35 -0000 1.10 +++ plugins/FeedsFileFetcher.inc 11 Jul 2010 16:05:25 -0000 @@ -53,17 +53,28 @@ class FeedsFileFetcher extends FeedsFetc * Source form. */ public function sourceForm($source_config) { - $form = array(); + $form = $info = array(); + if (!empty($source_config['source'])) { + $info = array( + 'path' => $source_config['source'], + 'size' => filesize(realpath($source_config['source'])), + ); + if (module_exists('mimedetect')) { + $info['mime'] = mimedetect_mime(realpath($source_config['source'])); + } + } $form['source'] = array( - '#type' => 'textfield', + '#type' => empty($this->config['direct']) ? 'value' : 'textfield', '#title' => t('File'), '#description' => t('Specify a file in the site\'s file system path or upload a file below.'), - '#default_value' => isset($source_config['source']) ? $source_config['source'] : '', + '#default_value' => empty($source_config['source']) ? '' : $source_config['source'], ); $form['upload'] = array( '#type' => 'file', - '#title' => t('Upload'), - '#description' => t('Choose a file from your local computer.'), + '#title' => empty($this->config['direct']) ? t('File') : NULL, + '#description' => empty($source_config['source']) ? t('Select the file to be imported from your local system.') : t('Select a different file to be imported from your local system.'), + '#theme' => 'feeds_upload', + '#file_info' => $info, ); return $form; } @@ -91,4 +102,27 @@ class FeedsFileFetcher extends FeedsFetc form_set_error('feeds][source', t('File needs to point to a file in your Drupal file system path.')); } } + + /** + * Override parent::configDefaults(). + */ + public function configDefaults() { + return array( + 'direct' => FALSE, + ); + } + + /** + * Override parent::configForm(). + */ + public function configForm(&$form_state) { + $form = array(); + $form['direct'] = array( + '#type' =>'checkbox', + '#title' => t('Supply path to file directly'), + '#description' => t('For experts. If checked users can specify a path to a file when importing rather than uploading a file. This is useful when files to be imported are already present on server.'), + '#default_value' => $this->config['direct'], + ); + return $form; + } }