Index: draggableviews.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/draggableviews/draggableviews.inc,v
retrieving revision 1.7.2.11
diff -u -p -r1.7.2.11 draggableviews.inc
--- draggableviews.inc	16 Feb 2009 00:00:05 -0000	1.7.2.11
+++ draggableviews.inc	20 Feb 2009 17:02:03 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: draggableviews.inc,v 1.7.2.11 2009/02/16 00:00:05 sevi Exp $
+// $Id: draggableviews.inc,v 1.7.2.7 2009/01/22 16:05:57 sevi Exp $
 
 /**
  * @file
@@ -137,9 +137,14 @@ function _draggableviews_info(&$view, $p
   // build information array
   $info = array();
   $info['view'] = $view;
-  
+
   if ($prepare_fields && isset($options['tabledrag_order'])) {
     foreach ($options['tabledrag_order'] as $field) {
+      if (!isset($fields[$field['field']])) {
+        drupal_set_message(t('Draggableviews: field <i>') . $field['field'] . t('</i> could not be found (..afterwards removed from Fields section?). Check your settings.'), 'error');
+        unset($info['order']);
+        return $info;
+      }
       if ($handler = _draggableviews_init_handler($field, $view)) {
         $info['order']['fields'][] = array(
           'handler' => $handler,
@@ -395,16 +400,21 @@ function _draggableviews_rebuild_hierarc
   // This can be achieved by simply assigning ascending order values.
   if ($info['view']->pager['items_per_page'] > 0) {
     // load full view and assign ascending numbers
-    $view = views_get_view($info['view']->name);
+    $view = $info['view']->clone_view();
     $view->pager['items_per_page'] = 0;
+    $view->executed = FALSE;
     $view->execute();
 
-    // get info array
-    $temp_info = _draggableviews_info($view);
+    // We preserve the old info array and just change the view object which contains
+    // the results. We're not allowed to build an info array from scratch because there
+    // could be a difference between current settings and saved settings view (preview mode).
+    $temp_info = $info;
+    $temp_info['view'] = $view;
 
     // assign ascending numbers and save hierarchy
     _draggableviews_number_serially($temp_info);
     _draggableviews_save_hierarchy($temp_info);
+    return true;
   }
 
   // Build an input-array to simulate the form data we would receive on submit
@@ -714,6 +724,10 @@ function _draggableviews_number_serially
  * Imlpementing hook_views_pre_render
  */
 function draggableviews_views_pre_render(&$view) {
+  // clear theming registry to force drupal to call hook_theme
+  // @todo: This is not the best place to do this
+  drupal_rebuild_theme_registry();
+
   $info = _draggableviews_info($view);
 
   if (!isset($info['order'])) return;
@@ -725,10 +739,12 @@ function draggableviews_views_pre_render
     _draggableviews_save_hierarchy($info);
     $view->executed = FALSE;
     $view->execute();
+    return;
   }
 
   // analyze structure (also calculates depths)
-  if (!_draggableviews_analyze_structure($info)) {
+  // don't analyze if view hasn't been saved yet
+  if (is_numeric($view->vid) && !_draggableviews_analyze_structure($info)) {
     // the structure is broken
     if (_draggableviews_rebuild_hierarchy($info)) {
       drupal_set_message('The structure was broken. It has been repaired successfully.');
Index: draggableviews_theme.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/draggableviews/draggableviews_theme.inc,v
retrieving revision 1.6.2.6
diff -u -p -r1.6.2.6 draggableviews_theme.inc
--- draggableviews_theme.inc	8 Feb 2009 17:28:12 -0000	1.6.2.6
+++ draggableviews_theme.inc	20 Feb 2009 17:02:04 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: draggableviews_theme.inc,v 1.6.2.6 2009/02/08 17:28:12 sevi Exp $
+// $Id: draggableviews_theme.inc,v 1.6.2.4 2009/01/09 15:02:30 sevi Exp $
 
 /**
  * @file
@@ -278,6 +278,12 @@ function template_preprocess_draggablevi
 
   $vars['view'] = $output;
 
-  // render submit form
-  $vars['submit_form'] = user_access('Allow Reordering') ? drupal_render($vars['form']) : '';
+  // Render submit form.
+  // Don't render if user has no access or view hasn't been saved yet.
+  if (is_numeric($view_obj->view->vid) && user_access('Allow Reordering')) {
+    $vars['submit_form'] =  drupal_render($vars['form']);
+  }
+  else {
+    $vars['submit_form'] = '';
+  }
 }
Index: draggableviews.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/draggableviews/draggableviews.module,v
retrieving revision 1.6.2.5
diff -u -p -r1.6.2.5 draggableviews.module
--- draggableviews.module	9 Feb 2009 14:26:25 -0000	1.6.2.5
+++ draggableviews.module	20 Feb 2009 17:02:04 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: draggableviews.module,v 1.6.2.5 2009/02/09 14:26:25 sevi Exp $
+// $Id: draggableviews.module,v 1.6.2.4 2009/01/22 16:10:39 sevi Exp $
 
 /**
  * @file
@@ -169,11 +169,19 @@ function draggableviews_theme() {
     'arguments' => array('form' => NULL),
   );
 
+  $array['draggableviews_view_draggabletable_form_new'] = array(
+    'template' => 'draggableviews-view-draggabletable-form',
+    'preprocess functions' => array(
+      'template_preprocess_draggableviews_view_draggabletable_form',
+    ),
+    'arguments' => array('form' => NULL),
+  );
+
   // register theme function for all views
   $views = views_get_all_views();
   foreach ($views AS $view) {
     if (!isset($view->disabled) || $view->disabled === FALSE) {
-      $array['draggableviews_view_draggabletable_form_'. $view->name] = array(
+      $array['draggableviews_view_draggabletable_form_'. $view->vid] = array(
         'template' => 'draggableviews-view-draggabletable-form',
         'preprocess functions' => array(
           'template_preprocess_draggableviews_view_draggabletable_form',
Index: views/draggableviews.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/draggableviews/views/draggableviews.views.inc,v
retrieving revision 1.1.2.2
diff -u -p -r1.1.2.2 draggableviews.views.inc
--- views/draggableviews.views.inc	9 Jan 2009 15:02:31 -0000	1.1.2.2
+++ views/draggableviews.views.inc	20 Feb 2009 17:02:04 -0000
@@ -104,7 +104,7 @@ function draggableviews_views_query_alte
       $query->table_queue['draggableviews_structure'. $i]['join']->extra[] = array(
           'field' => 'vid',
           'operator' => '=',
-          'value' => $view->vid,
+          'value' => is_numeric($view->vid) ? $view->vid : 0,
           'numeric' => TRUE,
       );
     }
Index: views/draggableviews_plugin_style_draggabletable.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/draggableviews/views/draggableviews_plugin_style_draggabletable.inc,v
retrieving revision 1.1.2.4
diff -u -p -r1.1.2.4 draggableviews_plugin_style_draggabletable.inc
--- views/draggableviews_plugin_style_draggabletable.inc	9 Feb 2009 14:25:52 -0000	1.1.2.4
+++ views/draggableviews_plugin_style_draggabletable.inc	20 Feb 2009 17:02:04 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: draggableviews_plugin_style_draggabletable.inc,v 1.1.2.4 2009/02/09 14:25:52 sevi Exp $
+// $Id: draggableviews_plugin_style_draggabletable.inc,v 1.1.2.3 2009/01/22 17:08:25 sevi Exp $
 
 /**
  * @file
@@ -210,7 +210,6 @@ class draggableviews_plugin_style_dragga
         '#default_value' => isset($current['tabledrag_expand']) ? $current['tabledrag_expand'] : array('expand_links'),
     );
 
-
     // Let extension modules alter the output
     foreach (module_implements('draggableviews_style_plugin_form_alter') as $module) {
       $function = $module .'_draggableviews_style_plugin_form_alter';
@@ -225,7 +224,7 @@ class draggableviews_plugin_style_dragga
     // We need to wrap around a form to make it possible to submit changes.
     // Due to the fact that multiple views can be shown on the same page we
     // need to use an unique form_id every time we call this function.
-    return drupal_get_form('draggableviews_view_draggabletable_form_'. $this->view->name, $this);
+    return drupal_get_form('draggableviews_view_draggabletable_form_'. $this->view->vid, $this);
   }
 }
 
