Index: draggableviews.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/draggableviews/draggableviews.inc,v
retrieving revision 1.7.2.10
diff -u -p -r1.7.2.10 draggableviews.inc
--- draggableviews.inc	9 Feb 2009 14:27:56 -0000	1.7.2.10
+++ draggableviews.inc	15 Feb 2009 23:48:21 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: draggableviews.inc,v 1.7.2.10 2009/02/09 14:27:56 sevi Exp $
+// $Id: draggableviews.inc,v 1.7.2.7 2009/01/22 16:05:57 sevi Exp $
 
 /**
  * @file
@@ -21,7 +21,6 @@ function draggableviews_view_draggableta
   return $form;
 }
 
-
 /**
  * Implementing hook_submit
  */
@@ -137,6 +136,8 @@ 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 ($handler = _draggableviews_init_handler($field, $view)) {
@@ -389,6 +390,23 @@ function _draggableviews_rebuild_hierarc
   $info['input'] = array();
   $input         = &$info['input'];
 
+  // If the items to display per page are limitated, we have to make sure that
+  // there's no hidden node with an order value that refers to the current page.
+  // 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->pager['items_per_page'] = 0;
+    $view->execute();
+
+    // get info array
+    $temp_info = _draggableviews_info($view);
+
+    // assign ascending numbers and save hierarchy
+    _draggableviews_number_serially($temp_info);
+    _draggableviews_save_hierarchy($temp_info);
+  }
+
   // Build an input-array to simulate the form data we would receive on submit
 
   // loop through all nodes
@@ -669,6 +687,32 @@ function _draggableviews_filter_fields($
   return $available_fields;
 }
 
+/**
+ * Assign ascending numbers
+ *
+ * @param $nodes
+ *   the nodes array to number
+ */
+function _draggableviews_number_serially(&$info) {
+  // loop through all resulting nodes
+  $minimum_value = $info['order']['fields'][0]['handler']->get_minimum_value();
+  for ($i = 0; $i < count($info['view']->result); $i++) {
+    if (isset($info['order']['fields'])) {
+      // Assign ascending order values, skipping the minimum value.
+      $info['nodes'][$info['view']->result[$i]->nid]['order'][0] = $minimum_value + 1 + $i;
+    }
+
+    // set parent values
+    if (isset($info['hierarchy'])) {
+      // Bring all children down to the root level.
+      $info['nodes'][$info['view']->result[$i]->nid]['parent'] = 0;
+    }
+  }
+}
+
+/**
+ * Imlpementing hook_views_pre_render
+ */
 function draggableviews_views_pre_render(&$view) {
   $info = _draggableviews_info($view);
 
@@ -676,20 +720,8 @@ function draggableviews_views_pre_render
 
   // If click sort was used build order values manually
   if ($_GET['order']) {
-    // loop through all resulting nodes
-    for ($i = 0; $i < count($view->result); $i++) {
-      if (isset($info['order']['fields'])) {
-        // Assign ascending order values, skipping the minimum value.
-        $info['nodes'][$view->result[$i]->nid]['order'][0] = $info['order']['fields'][0]['handler']->get_minimum_value() + 1 + $i;
-      }
-
-      // set parent values
-      if (isset($info['hierarchy'])) {
-        // Bring all children down to the root level.
-        $info['nodes'][$view->result[$i]->nid]['parent'] = 0;
-      }
-    }
-
+    // assign ascending numbers
+    _draggableviews_number_serially($info);
     _draggableviews_save_hierarchy($info);
     $view->executed = FALSE;
     $view->execute();
@@ -705,7 +737,7 @@ function draggableviews_views_pre_render
       $view->execute();
     }
     else {
-      drupal_set_message('The struture is broken. It could not be repaired.', 'error');
+      drupal_set_message('The structure is broken. It could not be repaired.', 'error');
       // the structure could not be repaired
       return;
     }
Index: implementations/draggableviews_handler_native.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/draggableviews/implementations/Attic/draggableviews_handler_native.inc,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 draggableviews_handler_native.inc
--- implementations/draggableviews_handler_native.inc	11 Jan 2009 20:59:23 -0000	1.1.2.1
+++ implementations/draggableviews_handler_native.inc	15 Feb 2009 23:48:21 -0000
@@ -15,6 +15,7 @@ class draggableviews_handler_native {
   function init($field_name, &$view) {
     $this->field_name = $field_name;
     $this->view       = $view;
+    $this->pager      = $view->pager;
 
     $this->delta = $this->view->field[$field_name]->definition['draggableviews_delta'];
   }
@@ -28,7 +29,20 @@ class draggableviews_handler_native {
     if (!isset($attributes['class'])) $attributes['class'] = $field['field_name'];
 
     $options = array();
-    for ($i = 0; $i <= 40; $i++) $options[$i] = $i;
+
+    // if items per page are limitated show only the limited set of values.
+    // This makes nodes from a certain page independent from other pages (assumed that
+    // there's no hidden node with an order value that refers to the current page).
+    if ($this->pager['items_per_page'] > 0) {
+      $start = $this->pager['items_per_page'] * $this->pager['current_page'];
+      $end = $start + $this->pager['items_per_page'];
+    }
+    else {
+      $start = 0;
+      $end = count($this->view->result);
+    }
+
+    for ($i = $start; $i < $end; $i++) $options[$i] = $i;
 
     switch ($this->field->content_field['widget']['type']) {
       default:
Index: modules/draggableviews_cck/draggableviews_handler_cck.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/draggableviews/modules/draggableviews_cck/draggableviews_handler_cck.inc,v
retrieving revision 1.1.2.2
diff -u -p -r1.1.2.2 draggableviews_handler_cck.inc
--- modules/draggableviews_cck/draggableviews_handler_cck.inc	24 Jan 2009 15:00:27 -0000	1.1.2.2
+++ modules/draggableviews_cck/draggableviews_handler_cck.inc	15 Feb 2009 23:48:21 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: draggableviews_handler_cck.inc,v 1.1.2.2 2009/01/24 15:00:27 sevi Exp $
+// $Id: draggableviews_handler_cck.inc,v 1.1.2.1 2009/01/09 15:02:31 sevi Exp $
 
 /**
  * @file
@@ -11,6 +11,9 @@
  */
 class draggableviews_handler_cck {
   function init($field_name, &$view) {
+    $this->view            = $view;
+    $this->pager           = $view->pager;
+
     $this->field_name      = $field_name;
 
     $this->options         = $view->display['default']->display_options['style_options'];
@@ -64,6 +67,22 @@ class draggableviews_handler_cck {
 
   function get_form_element($value, $attributes = array()) {
     if (!isset($attributes['class'])) $attributes['class'] = $field['field_name'];
+    
+    $options = array();
+
+    // if items per page are limitated show only the limited set of values.
+    // This makes nodes from a certain page independent from other pages (assumed that
+    // there's no hidden node with an order value that refers to the current page).
+    if ($this->pager['items_per_page'] > 0) {
+      $start = $this->pager['items_per_page'] * $this->pager['current_page'];
+      $end = $start + $this->pager['items_per_page'];
+    }
+    else {
+      $start = 0;
+      $end = count($this->view->result);
+    }
+
+    for ($i = $start; $i < $end; $i++) $options[$i] = $i;
 
     switch ($this->field->content_field['widget']['type']) {
       case 'optionwidgets_select':
@@ -71,9 +90,7 @@ class draggableviews_handler_cck {
           '#type'  => 'select',
           '#name'  => $attributes['field_name'],
           '#value' => $value,
-          // slice out the first and the last element, so we make it possible
-          // that new nodes may appear on the very top or the very bottom
-          '#options' => array_slice($this->allowed_values, 1, -1, TRUE),
+          '#options' => $options,
           '#attributes' => array('class' => $attributes['class']),
         );
         break;
@@ -90,6 +107,6 @@ class draggableviews_handler_cck {
   }
 
   function get_minimum_value() {
-    return key($this->allowed_values);
+    return -1;
   }
 }
