Index: node_gallery.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/node_gallery/node_gallery.info,v
retrieving revision 1.4.2.2
diff -u -r1.4.2.2 node_gallery.info
--- node_gallery.info	4 Feb 2010 05:09:47 -0000	1.4.2.2
+++ node_gallery.info	21 Jul 2010 05:02:24 -0000
@@ -6,7 +6,6 @@
 dependencies[] = imagecache
 dependencies[] = imagefield
 dependencies[] = views
-dependencies[] = views_bulk_operations
 package = Node Gallery
 
 ; Information added by drupal.org packaging script on 2009-03-18
Index: node_gallery.pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/node_gallery/node_gallery.pages.inc,v
retrieving revision 1.12.2.36
diff -u -r1.12.2.36 node_gallery.pages.inc
--- node_gallery.pages.inc	15 Jun 2010 13:20:46 -0000	1.12.2.36
+++ node_gallery.pages.inc	21 Jul 2010 05:02:24 -0000
@@ -86,26 +86,299 @@
 
 /**
  * Displays the content for our "Manage Images" tab, which is a VBO view.
+ * @param $form_state
+ *   Drupal $form_state array
  * @param $gallery
  *   A populated node gallery object.
  *   
  * @return
- *   HTML Output
+ *   FAPI array
  */
-function node_gallery_manage_images($gallery) {
+function node_gallery_manage_images_form($form_state, $gallery) {
   global $user;
+  global $pager_page_array, $pager_total;
+  // @todo: We should include some help text with a link to the admin page where the user can select the display fields.
+  
+  $element = 0;
+  
+  $pager_page_array = (isset($_GET['page']) ? explode(',', $_GET['page']) : array());
+  
+  if (empty($pager_page_array[$element])) {
+    $pager_page_array[$element] = 0;
+  }
+  
+  $relationship = node_gallery_get_relationship($gallery->type);
   
   drupal_set_breadcrumb(array(
     l(t('Home'), NULL),
     l(t('Galleries'), 'galleries'),
-    l(t('!user\'s Galleries', array('!user' => $gallery->name)), 'galleries/' . $gallery->uid),
+    l(t('!user\'s Galleries', array('!user' => $gallery->name)), 'galleries/'. $gallery->uid),
     l($gallery->title, 'node/'. $gallery->nid)
     ));
    
-  // @todo: we should be able to programmatically set some options on the view, such as number of images, imagefield_name, etc.
-  return views_embed_view(MANAGE_IMAGES_VIEW_NAME, 'default', $gallery->nid);
+  $form = array(
+    '#theme' => 'node_gallery_manage_images_form',
+    '#cache' => TRUE,
+  );
+  
+  if (user_access('administer nodes') || user_access('edit any '. $gallery->type .' content') || user_access('administer node gallery')) {    
+    $gallery_list = node_gallery_get_gallery_list($gallery->type);
+  }
+  else {
+    $gallery_list = node_gallery_get_gallery_list($gallery->type, $user->uid);
+  }
+
+  $form['#description'] = t('Hello, world.');
+  $form['#thumb_imagecache'] = 'node-gallery-admin-thumbnail';
+  $form['#gallery'] = $gallery;
+   
+  $images = node_gallery_get_image_list($gallery->nid);
+  $chunks = array_chunk($images, variable_get('node_gallery_manage_images_per_page', 20));
+  $pager_total[$element] = count($chunks);
+  $images = $chunks[$pager_page_array[$element]];
+  
+  if (!empty($images)) {
+    $count = 0;
+    $form['images']['#tree'] = TRUE;
+    foreach ($images as $nid) {
+      $count++;
+      if ($count % 50 == 0) {
+        // Make sure we don't run out of memory by clearing the cache.  
+        $image = node_load(NULL, NULL, TRUE);
+      }
+      $image = node_load($nid);
+      $options[$nid] = '';
+      $form['images'][$nid]['remove'] = array('#type' => 'checkbox', '#default_value' => $file->remove);
+      $form['images'][$nid]['gid'] = array('#type' => 'select', '#title' => 'Gallery', '#default_value' => $gallery->nid, '#options' => $gallery_list);
+      $form['images'][$nid]['edit_form'] = node_gallery_image_item_edit_form($form_state['values']['images'][$nid]['edit_form'], $image, $relationship);
+      //Some CCK widgets need to have #field_info populated
+      if (!isset($form['#field_info'])){
+        $form['#field_info'] = $form['images'][$nid]['edit_form']['#field_info'];
+      };    
+    }
+  }
+ 
+  $cover_nid = $gallery->cover_image;
+  $form['is_cover'] = array(
+    '#type' => 'radios',
+    '#default_value' => $cover_nid,
+    '#options' => $options,
+  );
+  
+  // @todo: Would using a pager here benefit anything?  If so, does it break the sort order still?
+  /* Using the pager appears to break the order of images
+  */
+  $form['pager'] = array(
+    '#value' => theme('pager', NULL, variable_get('node_gallery_manage_images_per_page', 20), $element),
+  );
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Save'),
+    '#weight' => 20,
+    //need this because this form is used in image upload ahah also.
+    '#submit' => array('node_gallery_manage_images_submit'),
+    '#validate' => array('node_gallery_manage_images_validate'),
+  );
+  return $form;
+}
+
+function node_gallery_manage_images_validate($form, &$form_state) {
+  if (!empty($form_state['values']['images'])) {
+    foreach ($form_state['values']['images'] as $nid => $image_form_state) {
+      node_validate($image_form_state['edit_form'], $form['images'][$nid]['edit_form']);
+    }    
+  }
+}
+
+function node_gallery_manage_images_submit(&$form, &$form_state) {
+  $relationship = node_gallery_get_relationship($form['#gallery']->type);
+  $compare_fields = array('gid');
+  foreach ($relationship['settings']['manage_images_fields'] as $k => $f) {
+    if ($f) {
+      $compare_fields[] = ($k == 'body_field') ? 'body' : $k;
+    }
+  }
+  
+  if ($form_state['values']['is_cover'] != $form['#gallery']->cover_image) {
+    // The user selected a new cover image for the gallery.
+    // Build an object with the necessary attributes and update the gallery record.
+    $image = new stdClass;
+    $image->nid = $form_state['values']['is_cover'];
+    $image->is_cover = 1;
+    $image->gid = $form['#gallery']->nid;
+    node_gallery_set_gallery_cover_image($image);
+  }
+  
+  foreach ($form_state['values']['images'] as $nid => $form_values) {
+    $image_node = $form_values['edit_form'];
+    unset($form_values['edit_form']);
+    $image_node = (object)array_merge($image_node, $form_values);
+    
+    if ($form_values['remove']) {
+      $op_images['delete'][] = $image_node->nid;
+    }
+    else {
+      if (node_gallery_images_check_update($form['images'][$image_node->nid]['edit_form']['#node'], $image_node, $compare_fields)) {
+        $op_images['update'][] = $image_node;
+      }
+    }
+  }
+  
+  while (!empty($op_images['update'])) {
+    $node = array_shift($op_images['update']);
+    $operations[] = array('node_gallery_batch_node_save', array($node));
+  }
+  while (!empty($op_images['delete'])) {
+    $nid = array_shift($op_images['delete']);
+    $operations[] = array('node_gallery_image_delete_process', array($nid));
+  }
+  if (!empty($operations)) {
+    $batch = array(
+      'operations' => $operations,
+      'finished' => 'node_gallery_image_process_finished',
+      'title' => t("Modifying Images"),
+      'init_message' => t("Images modification process is starting."),
+      'progress_message' => t('Processed @current out of @total.'),
+      'error_message' => t('Images modification has encountered an error.'),
+    );
+    
+    batch_set($batch);
+    //For memory management, we wipe the values from the form since it's all on the $operations array now
+    $tmp = $form_state['values']['form_build_id'];
+    $form_state = array();
+    $form_state['values']['form_build_id'] = $tmp;
+    $form = array();
+  }
+  $form_state['redirect'] = 'node/'. $image_node->gid;
 }
 
+/**
+ * Check if we need to update this image;
+ *
+ * @param unknown_type $old_image
+ * @param unknown_type $new_image
+ * @param unknown_type $compare_fields
+ * @return unknown
+ */
+function node_gallery_images_check_update($old_image, $new_image, $compare_fields) {
+  
+  $new_image = node_submit($new_image);
+  foreach ($compare_fields as $f) {
+    //a hack for cck field validate;
+    if (module_exists('content')) {
+      if (is_array($new_image->{$f})) {
+        foreach ($new_image->{$f} as &$ff) {
+          if (is_array($ff)) {
+            unset($ff['_error_element']);
+          }
+        }
+      }
+    }
+    if ($f == 'taxonomy') {
+      // Convert the form values to object attributes
+      $new_image->taxonomy = taxonomy_preview_terms($new_image);
+    }
+    if ($new_image->{$f} != $old_image->{$f}) {
+      return TRUE;
+    }
+  }
+  return FALSE;
+}
+
+
+function node_gallery_image_item_edit_form($form_values, $image, $relationship) {
+  
+  module_load_include('inc', 'node', 'node.pages');
+  $form_state = array('values' => $form_values);
+  // Setting this prevents the image_fupload overrides from happening in hook_form_alter()
+  $form_state['values']['called_from_manage_images_form'] = 1;
+  
+  $display_fields = $relationship['settings']['manage_images_fields'];
+  $form = drupal_retrieve_form($image->type .'_node_form', $form_state, $image);
+  drupal_prepare_form($image->type ."_node_form", $form, $form_state);
+  $item_form = array();
+  $display_fields['#field_info'] = '#field_info'; //this should be merged with parent form to optionwidget to work
+  $display_fields['#node'] = '#node'; 
+  
+  foreach (array_values($display_fields) as $field_name) {
+    if (!empty($field_name)) {
+      //$item_form[$field_name] = (array)get_image_form_item_recursive($form, $field_name);
+      $item_form[$field_name] = $form[$field_name]; 
+    }
+  }
+  $item_form += (array)node_gallery_get_image_form_value_items($form);
+  node_gallery_set_image_form_default_values($item_form, $image, $relationship);
+  
+  return $item_form;
+}
+
+function node_gallery_get_image_form_value_items($form) {
+  if ($children = element_children($form)) {
+    foreach ($children as $child) {
+      //todo: didn't recursive;
+      if ($form[$child]['#type'] == 'value' || $form[$child]['#type'] == 'hidden') {
+        $value_forms[$child] = $form[$child];
+      }
+    }
+  }
+  elseif ($form['#type'] == 'value' || $form['#type'] == 'hidden') {
+    $value_forms[key($form)] = $form;
+  }
+  
+  return $value_forms;
+}
+
+function node_gallery_set_image_form_default_values(&$form, $image, $relationship) {
+  global $user;
+
+  if (empty($form['title'])) {
+    $form['title'] = array(
+      '#type' => 'hidden',
+      '#value' => $image->{$relationship['imagefield_name']}[0]['filepath'],
+    );
+  }
+  else {
+    $form['title']['#default_value'] = empty($form['title']['#default_value']) ? $image->{$relationship['imagefield_name']}[0]['filepath'] : $form['title']['#default_value'];
+  }
+  
+  if (!empty($form['body_field'])) {
+    $form['body'] = $form['body_field']['body'];
+    $form['body']['#rows'] = 3;
+    unset($form['body_field']);
+  }
+  
+  if (!empty($form['changed']) && empty($form['changed']['#value'])) {
+    $form['changed']['#value'] = time();
+  }
+  /* This allowed admins to overwrite the username when editing an image.
+   * this feature was disabled as it was unexpected behaviour #550994 */
+  if (user_access('administer nodes')) {
+    $form['name'] = array(
+      '#type' => 'value',
+      '#value' => $image->name ? $image->name : $user->name,
+    );
+  }
+  /* if (empty($form['name']) || empty($form['name']['#value'])) {
+    $form['name'] = array(
+      '#type' => 'value',
+      '#value' => $user->name,
+    );
+  } */
+  if (!empty($form['uid']) && empty($form['uid']['#value'])) {
+    $form['uid']['#value'] = $user->uid;
+  }
+  /* @todo: do we need this?
+  $image_comment = variable_get('comment_'. $relationship['image_type'], COMMENT_NODE_READ_WRITE);
+  $gallery_comment = variable_get('comment_'. $relationship['gallery_type'], COMMENT_NODE_READ_WRITE);
+  $form['comment'] = array(
+    '#type' => 'value',
+    '#value' => $config['image_comment'] == 'image' ? $image_comment : $gallery_comment,
+  );
+  */
+}
+
+
+
  /**
  * Form function for the "Sort Images" tab.
  * @param $gallery
Index: node_gallery.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/node_gallery/node_gallery.admin.inc,v
retrieving revision 1.11.2.25
diff -u -r1.11.2.25 node_gallery.admin.inc
--- node_gallery.admin.inc	15 Jun 2010 13:20:46 -0000	1.11.2.25
+++ node_gallery.admin.inc	21 Jul 2010 05:02:23 -0000
@@ -98,6 +98,12 @@
     $form['node_gallery_jquery_ui_integration']['#default_value'] = FALSE;
     $form['node_gallery_jquery_ui_integration']['#description'] = t('You need to download and install the <a href="@jquery_ui_url">jquery_ui module</a> to enable this option.', array('@jquery_ui_url' => url('http://drupal.org/project/jquery_ui')));
   }
+  $form['node_gallery_manage_images_per_page'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Enter the number of images displayed on each manage images page'),
+    '#default_value' => variable_get('node_gallery_manage_images_per_page', 20),
+    '#description' => t('If this number is exceeded, a pager will be displayed below each corresponding manage images page.'),
+  );
   $form = system_settings_form($form);
   // We prepend our callback to the submit callback so we can rebuild the content type if needed.
   array_unshift($form['#submit'], 'node_gallery_image_fupload_toggle_submit');
@@ -194,6 +200,26 @@
     );
   }
   else {
+    $image_type = content_types($form_state['storage']['image_type']);
+    if (module_exists('taxonomy') && taxonomy_get_vocabularies($image_type['type'])) {
+      $image_type['extra']['taxonomy'] = array(
+        'label' => t('Taxonomy'),
+        'description' => t('Taxonomy module form.'),
+        'weight' => -3
+      );
+    }
+    //non-cck fields
+    foreach ($image_type['extra'] as $name => $field) {
+      if ($name != 'menu' && $name != 'attachments') {
+        $image_type_fields[$name] = $field['label'];
+      }
+    }
+    //cck fields
+    foreach ($image_type['fields'] as $name => $field) {
+      $image_type_fields[$name] = $field['widget']['label'];
+    }
+    
+    
     if (empty($imagecaches)) {
       foreach (imagecache_presets() as $id => $imagecache) {
         $imagecaches[$imagecache['presetname']] = $imagecache['presetname'];
@@ -227,6 +253,13 @@
       '#options' => $options_imagefields,
       '#default_value' => (isset($relationship['imagefield_name']) && !empty($relationship['imagefield_name'])) ? $relationship['imagefield_name'] : 'field_node_gallery_image',
     );
+    $form['node_gallery_relationship_settings']['manage_images_fields'] = array(
+      '#type' => 'checkboxes',
+      '#title' => t('Manage Images Fields'),
+      '#options' => $image_type_fields,
+      '#description' => t('Specify which fields should be displayed on the Manage Images tabs of a gallery node.'),
+      '#default_value' => empty($relationship['settings']['manage_images_fields']) ? array('title' => 'Title') : $relationship['settings']['manage_images_fields'],
+    );
     $viewdisplays = node_gallery_build_views_select();
   
     $form['node_gallery_gallery_view'] = array(
@@ -390,7 +423,7 @@
   }
   $existing = node_gallery_get_relationship($r->gallery_type);
   $settings = isset($existing['settings']) ? $existing['settings'] : array();
-  $valid_settings=array('view_gallery_full_image_display', 'view_gallery_teaser_view_image_display', 'display_navigator', 'node_images_page_fragment', 'teaser_display_type', 'gallery_display_type');
+  $valid_settings = array('view_gallery_full_image_display', 'view_gallery_teaser_view_image_display', 'display_navigator', 'node_images_page_fragment', 'teaser_display_type', 'gallery_display_type', 'manage_images_fields');
   foreach ((array)$form_state['values'] as $k => $v) {
     if (in_array($k, $valid_settings)) {
       $settings[$k] = $v;
Index: node_gallery.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/node_gallery/node_gallery.inc,v
retrieving revision 1.2.2.51
diff -u -r1.2.2.51 node_gallery.inc
--- node_gallery.inc	21 Jul 2010 02:57:02 -0000	1.2.2.51
+++ node_gallery.inc	21 Jul 2010 05:02:24 -0000
@@ -568,6 +568,9 @@
  *   A path to start pruning from.
  */
 function node_gallery_clean_empty_dirs($dirname) {
+  if (empty($dirname)) {
+    return;
+  }
   // Recursively delete parent directories that are empty, up to the 'files' directory.
   $files = file_scan_directory($dirname, '.*', array('.', '..'), 0, FALSE);
   if (count($files) > 0 || $dirname == file_directory_path()) {
Index: node_gallery.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/node_gallery/node_gallery.module,v
retrieving revision 1.18.2.84
diff -u -r1.18.2.84 node_gallery.module
--- node_gallery.module	11 Jul 2010 03:27:43 -0000	1.18.2.84
+++ node_gallery.module	21 Jul 2010 05:02:24 -0000
@@ -22,6 +22,7 @@
 define("NODE_GALLERY_PERM_ADMIN_GALLERY", 'administer node gallery');
 define("NODE_GALLERY_PERM_VIEW_GALLERY", 'view node gallery');
 
+define("NODE_GALLERY_BATCH_CHUNK_SIZE", 5);
 define("NODE_GALLERY_IMAGE_PAGER_ELEMENT", 2);
 
 define("NODE_GALLERY_VIEW_TEASER", 'teaser');
@@ -123,8 +124,8 @@
   );
   $items['node/%node_gallery_gallery/images'] = array(
     'title' => 'Manage Images',
-    'page callback' => 'node_gallery_manage_images',
-    'page arguments' => array(1),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('node_gallery_manage_images_form', 1),
     'access callback' => 'node_gallery_user_access',
     'access arguments' => array('edit image', 1),
     'file' => 'node_gallery.pages.inc',
@@ -235,6 +236,9 @@
     'gallery_meta' => array(
       'arguments' => array('gallery' => NULL),
   ),
+    'node_gallery_manage_images_form' => array(
+      'arguments' => array('form' => NULL),
+  ),
     'gallery_edit_images_form' => array(
       'arguments' => array('form' => NULL),
   ),
@@ -299,7 +303,7 @@
         '#weight' => -3,
         '#default_value' => $image->is_cover ? $image->is_cover : 0,
       );
-      $widget_type = node_gallery_get_current_widget_type($form['type']['#value']);
+      $widget_type = empty($form_state['values']['called_from_manage_images_form']) ? node_gallery_get_current_widget_type($form['type']['#value']) : NULL;
       
       // Is our widget set to fupload?
       if ($widget_type == 'image_fupload_imagefield_widget') {
@@ -406,7 +410,7 @@
   switch ($op) {
     case 'load':
       if (in_array($node->type, (array)node_gallery_get_types('gallery'))) {
-        $node->cover_image_nid = node_gallery_get_cover_nid($node);
+        $node->cover_image = node_gallery_get_cover_nid($node);
       }
       if (in_array($node->type, (array)node_gallery_get_types('image'))) {
         node_gallery_load_image($node);
@@ -476,6 +480,9 @@
           $node->gid = $gallerynids[$i2g[$node->type]][$randindex];
           // devel generate always checks the "promote to front page" box.
           $node->promote = 0;
+          // remove any extra images devel_generate adds to our image node
+          $relationship = node_gallery_get_relationship(NULL, $node->type);
+          $node->{$relationship['imagefield_name']} = array_slice($node->{$relationship['imagefield_name']}, 0, 1);
         }
         break;
       }
@@ -593,12 +600,12 @@
         $nids = $imagenids;
         unset($imagenids);
       }
-      $operations[] = array('image_delete_process', array($nids));
+      $operations[] = array('node_gallery_image_delete_process', array($nids));
     }
     if (!empty($operations)) {
       $batch = array(
         'operations' => $operations,
-        'finished' => 'image_process_finished',
+        'finished' => 'node_gallery_image_process_finished',
         'title' => t('Processing Gallery Delete.'),
         'init_message' => t('Gallery deletion is cascading to image deletions.'),
         'progress_message' => t('Processing image deletions.'),
@@ -617,19 +624,29 @@
 
 /**
  * Deletes batches of images for batch API.
- * 
+ * _node_gallery_delete
  * @param $imagenids
  *   Array of nids to delete.
  * @param $context
  *   Array provided by batch API.
  */
-function image_delete_process($imagenids, &$context) {
+function node_gallery_image_delete_process($imagenids, &$context) {
   if (!isset($context['sandbox']['progress'])) {
     $context['sandbox']['progress'] = 0;
     $context['sandbox']['max'] = count($imagenids);
   }
-  while (!empty($imagenids)) {
-    $nid = array_shift($imagenids);
+  if (!isset($context['sandbox']['imagenids'])) {
+    if(is_array($imagenids)) {
+      $context['sandbox']['imagenids'] = $imagenids;
+    }
+    else {
+      $context['sandbox']['imagenids'] = array($imagenids);
+    }
+  }
+  $count = 0;
+  while (!empty($context['sandbox']['imagenids']) && $count <= NODE_GALLERY_BATCH_CHUNK_SIZE) {
+    $count++;
+    $nid = array_shift($context['sandbox']['imagenids']);
     node_delete($nid);
     $context['sandbox']['progress']++;
   }
@@ -643,6 +660,37 @@
   }
 }
 
+function node_gallery_batch_node_save($nodes, &$context) {
+  if (!isset($context['sandbox']['progress'])) {
+    $context['sandbox']['progress'] = 0;
+    $context['sandbox']['max'] = count($nodes);
+  }
+  if (!isset($context['sandbox']['nodes'])) {
+    if(is_array($nodes)) {
+      $context['sandbox']['nodes'] = $nodes;
+    }
+    else {
+      $context['sandbox']['nodes'] = array($nodes);
+    }
+  }
+  $count = 0;
+  while (!empty($context['sandbox']['nodes']) && $count <= NODE_GALLERY_BATCH_CHUNK_SIZE) {
+    $count++;
+    $node = array_shift($context['sandbox']['nodes']);
+    $node = (object)array_merge((array)node_load($node->nid), (array)$node);
+    node_save_action($node);
+    $context['sandbox']['progress']++;
+  }
+  // Let the batch engine know how close we are to completion.
+  if ($context['sandbox']['progress'] == $context['sandbox']['max']) {
+    // Done!
+    $context['finished'] = 1;
+  }
+  else {
+    $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
+  }
+}
+
 /**
  * Used as a finished callback for batch API deletion of images.
  * 
@@ -653,9 +701,9 @@
  * @param $operations
  *   Array provided by batch API.
  */
-function image_process_finished($success, $results, $operations) {
+function node_gallery_image_process_finished($success, $results, $operations) {
   if ($success) {
-    drupal_set_message(t('Image deletion complete.'));
+    drupal_set_message(t('Image modifications complete.'));
   }
   else {
     // An error occurred.
Index: theme/theme.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/node_gallery/theme/theme.inc,v
retrieving revision 1.2.2.15
diff -u -r1.2.2.15 theme.inc
--- theme/theme.inc	15 Jun 2010 13:20:46 -0000	1.2.2.15
+++ theme/theme.inc	21 Jul 2010 05:02:24 -0000
@@ -125,25 +125,24 @@
   return theme('imagecache', $imagecache, $image->{$relationship['imagefield_name']}[0]['filepath'], $image->title, $image->title);
 }
 
-function theme_gallery_edit_images_form($form) {
-  drupal_add_tabledrag('upload-attachments', 'order', 'sibling', 'upload-weight');
-  
+function theme_node_gallery_manage_images_form($form) {
+  // get fieldname to retrieve the filepath for the thumbnail without loading the node
+  $relationship = node_gallery_get_relationship($form['#gallery']->type);
+  $field_name = $relationship['imagefield_name'];
   $thumb_imagecache = $form['#thumb_imagecache'];
-  $header = array('', t('Delete'), t('Thumbnail'), t('Edit'), t('Weight'), t('Cover'));
-  foreach (element_children($form['files']) as $key) {
-    // Add class to group weight fields for drag and drop.
-    $form['files'][$key]['weight']['#attributes']['class'] = 'upload-weight';
+  $header = array('', t('Delete'), t('Thumbnail'), t('Edit'), t('Cover'));
+  foreach (element_children($form['images']) as $nid) {
+    $element = &$form['images'][$nid];
+    $filepath = node_gallery_get_image_filepath($element['edit_form']['nid']['#value'], $field_name);
 
     $row = array('');
-    $row[] = drupal_render($form['files'][$key]['remove']);
-    $row[] = '<span class="gallery-upload-thumb">'. theme('imagecache', $thumb_imagecache, 
-      $form['files'][$key]['filepath']['#value'], $form['files'][$key]['filename']['#value'], $form['files'][$key]['filename']['#value']) .'</span>';
-    $row[] = drupal_render($form['files'][$key]['edit_form']) . drupal_render($form['files'][$key]['gid']);
-    $row[] = drupal_render($form['files'][$key]['weight']);
+    $row[] = drupal_render($element['remove']);
+    $row[] = '<span class="gallery-upload-thumb">'. theme('imagecache', 'node-gallery-admin-thumbnail', $filepath) .'</span>';
+    $row[] = drupal_render($element['edit_form']) . drupal_render($element['gid']);
     if ($form['is_cover']) {
-      $row[] = drupal_render($form['is_cover'][$key]);
+      $row[] = drupal_render($form['is_cover'][$nid]);
     }
-    $rows[] = array('data' => $row, 'class' => 'draggable');
+    $rows[] = array('data' => $row);
   }
   $output = theme('table', $header, $rows, array('id' => 'upload-attachments'));
   $output .= drupal_render($form);
Index: views2inc/node_gallery.views_default.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/node_gallery/views2inc/Attic/node_gallery.views_default.inc,v
retrieving revision 1.1.2.19
diff -u -r1.1.2.19 node_gallery.views_default.inc
--- views2inc/node_gallery.views_default.inc	11 Jul 2010 04:32:34 -0000	1.1.2.19
+++ views2inc/node_gallery.views_default.inc	21 Jul 2010 05:02:24 -0000
@@ -1265,379 +1265,6 @@
   ));
   $views[$view->name] = $view;
 
-  /*
-   * View 'node_gallery_manage_images'
-   */
-  $view = new view;
-  $view->name = 'node_gallery_manage_images';
-  $view->description = 'View, edit, sort and delete your gallery\'s content.';
-  $view->tag = 'node_gallery';
-  $view->view_php = '';
-  $view->base_table = 'node';
-  $view->is_cacheable = FALSE;
-  $view->api_version = 2;
-  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
-  $handler = $view->new_display('default', 'Defaults', 'default');
-  $handler->override_option('fields', array(
-    'field_node_gallery_image_fid' => array(
-      'label' => '',
-      'alter' => array(
-        'alter_text' => 0,
-        'text' => '',
-        'make_link' => 0,
-        'path' => '',
-        'link_class' => '',
-        'alt' => '',
-        'prefix' => '',
-        'suffix' => '',
-        'target' => '',
-        'help' => '',
-        'trim' => 0,
-        'max_length' => '',
-        'word_boundary' => 0,
-        'ellipsis' => 1,
-        'strip_tags' => 0,
-        'html' => 0,
-      ),
-      'empty' => '',
-      'hide_empty' => 0,
-      'empty_zero' => 0,
-      'link_to_node' => 0,
-      'label_type' => 'none',
-      'format' => 'node-gallery-thumbnail_default',
-      'multiple' => array(
-        'group' => TRUE,
-        'multiple_number' => '',
-        'multiple_from' => '',
-        'multiple_reversed' => FALSE,
-      ),
-      'exclude' => 0,
-      'id' => 'field_node_gallery_image_fid',
-      'table' => 'node_data_field_node_gallery_image',
-      'field' => 'field_node_gallery_image_fid',
-      'relationship' => 'none',
-    ),
-    'title' => array(
-      'label' => 'Title',
-      'alter' => array(
-        'alter_text' => 0,
-        'text' => '',
-        'make_link' => 0,
-        'path' => '',
-        'link_class' => '',
-        'alt' => '',
-        'prefix' => '',
-        'suffix' => '',
-        'target' => '',
-        'help' => '',
-        'trim' => 1,
-        'max_length' => '50',
-        'word_boundary' => 0,
-        'ellipsis' => 1,
-        'strip_tags' => 0,
-        'html' => 0,
-      ),
-      'empty' => '',
-      'hide_empty' => 0,
-      'empty_zero' => 0,
-      'link_to_node' => 1,
-      'exclude' => 0,
-      'id' => 'title',
-      'table' => 'node',
-      'field' => 'title',
-      'relationship' => 'none',
-      'override' => array(
-        'button' => 'Override',
-      ),
-    ),
-    'timestamp' => array(
-      'label' => 'New?',
-      'alter' => array(
-        'alter_text' => 0,
-        'text' => '',
-        'make_link' => 0,
-        'path' => '',
-        'link_class' => '',
-        'alt' => '',
-        'prefix' => '',
-        'suffix' => '',
-        'target' => '',
-        'help' => '',
-        'trim' => 0,
-        'max_length' => '',
-        'word_boundary' => 0,
-        'ellipsis' => 1,
-        'strip_tags' => 0,
-        'html' => 0,
-      ),
-      'empty' => '',
-      'hide_empty' => 0,
-      'empty_zero' => 0,
-      'link_to_node' => 0,
-      'comments' => 0,
-      'exclude' => 0,
-      'id' => 'timestamp',
-      'table' => 'history_user',
-      'field' => 'timestamp',
-      'override' => array(
-        'button' => 'Override',
-      ),
-      'relationship' => 'none',
-    ),
-    'name' => array(
-      'label' => 'Author',
-      'link_to_user' => 1,
-      'exclude' => 0,
-      'id' => 'name',
-      'table' => 'users',
-      'field' => 'name',
-      'override' => array(
-        'button' => 'Override',
-      ),
-      'relationship' => 'none',
-    ),
-    'status' => array(
-      'label' => 'Published',
-      'type' => 'yes-no',
-      'not' => 0,
-      'exclude' => 0,
-      'id' => 'status',
-      'table' => 'node',
-      'field' => 'status',
-      'override' => array(
-        'button' => 'Override',
-      ),
-      'relationship' => 'none',
-    ),
-    'edit_node' => array(
-      'label' => 'Edit',
-      'text' => '',
-      'exclude' => 0,
-      'id' => 'edit_node',
-      'table' => 'node',
-      'field' => 'edit_node',
-      'override' => array(
-        'button' => 'Override',
-      ),
-      'relationship' => 'none',
-    ),
-  ));
-  $handler->override_option('sorts', array(
-    'weight' => array(
-      'order' => 'ASC',
-      'id' => 'weight',
-      'table' => 'node_gallery_images',
-      'field' => 'weight',
-      'relationship' => 'none',
-    ),
-    'created' => array(
-      'order' => 'DESC',
-      'granularity' => 'second',
-      'id' => 'created',
-      'table' => 'node',
-      'field' => 'created',
-      'relationship' => 'none',
-    ),
-  ));
-  $handler->override_option('arguments', array(
-    'gid' => array(
-      'default_action' => 'not found',
-      'style_plugin' => 'default_summary',
-      'style_options' => array(
-        'count' => 1,
-        'override' => 0,
-        'items_per_page' => '25',
-      ),
-      'wildcard' => 'all',
-      'wildcard_substitution' => 'All Galleries',
-      'title' => 'Manage Images for Gallery: %1',
-      'breadcrumb' => '',
-      'default_argument_type' => 'fixed',
-      'default_argument' => '',
-      'validate_type' => 'node',
-      'validate_fail' => 'not found',
-      'break_phrase' => 0,
-      'not' => 0,
-      'id' => 'gid',
-      'table' => 'node_gallery_images',
-      'field' => 'gid',
-      'validate_user_argument_type' => 'uid',
-      'validate_user_roles' => array(
-        '2' => 0,
-      ),
-      'relationship' => 'none',
-      'default_options_div_prefix' => '',
-      'default_argument_user' => 0,
-      'default_argument_fixed' => '',
-      'default_argument_php' => '',
-      'validate_argument_node_type' => array(
-        'node_gallery_gallery' => 'node_gallery_gallery',
-        'node_gallery_image' => 0,
-        'page' => 0,
-        'story' => 0,
-      ),
-      'validate_argument_node_access' => 1,
-      'validate_argument_nid_type' => 'nid',
-      'validate_argument_vocabulary' => array(),
-      'validate_argument_type' => 'tid',
-      'validate_argument_transform' => 0,
-      'validate_user_restrict_roles' => 0,
-      'validate_argument_php' => '',
-      'override' => array(
-        'button' => 'Override',
-      ),
-    ),
-  ));
-  $handler->override_option('filters', array(
-    'title' => array(
-      'operator' => 'contains',
-      'value' => '',
-      'group' => '0',
-      'exposed' => TRUE,
-      'expose' => array(
-        'use_operator' => 0,
-        'operator' => 'title_op',
-        'identifier' => 'title',
-        'label' => 'Title contains',
-        'optional' => 1,
-        'remember' => 0,
-      ),
-      'case' => 0,
-      'id' => 'title',
-      'table' => 'node',
-      'field' => 'title',
-      'override' => array(
-        'button' => 'Override',
-      ),
-      'relationship' => 'none',
-    ),
-    'status' => array(
-      'operator' => '=',
-      'value' => 'All',
-      'group' => '0',
-      'exposed' => TRUE,
-      'expose' => array(
-        'operator' => '',
-        'identifier' => 'status',
-        'label' => 'Published',
-        'optional' => 1,
-        'remember' => 0,
-      ),
-      'id' => 'status',
-      'table' => 'node',
-      'field' => 'status',
-      'override' => array(
-        'button' => 'Override',
-      ),
-      'relationship' => 'none',
-    ),
-    'uid' => array(
-      'operator' => 'in',
-      'value' => '',
-      'group' => '0',
-      'exposed' => TRUE,
-      'expose' => array(
-        'use_operator' => 0,
-        'operator' => 'uid_op',
-        'identifier' => 'uid',
-        'label' => 'Author',
-        'optional' => 1,
-        'remember' => 0,
-        'reduce' => 0,
-      ),
-      'id' => 'uid',
-      'table' => 'users',
-      'field' => 'uid',
-      'relationship' => 'none',
-    ),
-  ));
-  $handler->override_option('access', array(
-    'type' => 'none',
-  ));
-  $handler->override_option('cache', array(
-    'type' => 'none',
-  ));
-  $handler->override_option('title', 'Content');
-  $handler->override_option('empty', 'There are no gallery images satisfying the filter settings. Try changing them to get some results.');
-  $handler->override_option('empty_format', '1');
-  $handler->override_option('items_per_page', 0);
-  $handler->override_option('use_pager', '0');
-  $handler->override_option('style_plugin', 'bulk');
-  $handler->override_option('style_options', array(
-    'grouping' => '',
-    'override' => 1,
-    'sticky' => 0,
-    'order' => 'asc',
-    'columns' => array(
-      'field_node_gallery_image_fid' => 'field_node_gallery_image_fid',
-      'title' => 'title',
-      'timestamp' => 'title',
-      'name' => 'name',
-      'status' => 'status',
-      'edit_node' => 'edit_node',
-    ),
-    'info' => array(
-      'field_node_gallery_image_fid' => array(
-        'separator' => '',
-      ),
-      'title' => array(
-        'sortable' => 1,
-        'separator' => '&nbsp;',
-      ),
-      'timestamp' => array(
-        'separator' => '',
-      ),
-      'name' => array(
-        'sortable' => 1,
-        'separator' => '',
-      ),
-      'status' => array(
-        'sortable' => 0,
-        'separator' => '',
-      ),
-      'edit_node' => array(
-        'separator' => '',
-      ),
-    ),
-    'default' => '-1',
-    'execution_type' => '2',
-    'display_type' => '0',
-    'hide_select_all' => 0,
-    'skip_confirmation' => 1,
-    'display_result' => 0,
-    'merge_single_action' => 0,
-    'selected_operations' => array(
-      'node_gallery_change_image_weight_action' => 'node_gallery_change_image_weight_action',
-      'node_gallery_change_gallery_action' => 'node_gallery_change_gallery_action',
-      'node_assign_owner_action' => 'node_assign_owner_action',
-      'views_bulk_operations_delete_node_action' => 'views_bulk_operations_delete_node_action',
-      'views_bulk_operations_script_action' => 'views_bulk_operations_script_action',
-      'views_bulk_operations_fields_action' => 'views_bulk_operations_fields_action',
-      'views_bulk_operations_taxonomy_action' => 'views_bulk_operations_taxonomy_action',
-      'node_publish_action' => 'node_publish_action',
-      'node_gallery_set_as_cover_action' => 'node_gallery_set_as_cover_action',
-      'node_unpublish_action' => 'node_unpublish_action',
-      'node_mass_update:a27b9efabcd054685a549378b174ad11' => 0,
-      'system_message_action' => 0,
-      'node_make_sticky_action' => 0,
-      'node_make_unsticky_action' => 0,
-      'node_mass_update:c4d3b28efb86fd703619a50b74d43794' => 0,
-      'views_bulk_operations_argument_selector_action' => 0,
-      'node_promote_action' => 0,
-      'node_mass_update:14de7d028b4bffdf2b4a266562ca18ac' => 0,
-      'node_mass_update:9c585624b9b3af0b4687d5f97f35e047' => 0,
-      'system_goto_action' => 0,
-      'node_unpromote_action' => 0,
-      'node_mass_update:8ce21b08bb8e773d10018b484fe4815e' => 0,
-      'node_save_action' => 0,
-      'system_send_email_action' => 0,
-      'node_mass_update:0ccad85c1ebe4c9ceada1aa64293b080' => 0,
-      'node_unpublish_by_keyword_action' => 0,
-      'pathauto_node_operations_update' => 0,
-    ),
-  ));
-  $views[$view->name] = $view;
-
   $view = new view;
   $view->name = 'node_gallery_gallery_sort_views';
   $view->description = 'Views of images meant for sorting images.';
