CRM-16570 - Fix nesting one menu item into another
authorColeman Watts <coleman@civicrm.org>
Thu, 11 Jun 2015 16:25:21 +0000 (12:25 -0400)
committerColeman Watts <coleman@civicrm.org>
Thu, 11 Jun 2015 16:25:21 +0000 (12:25 -0400)
CRM/Core/BAO/Navigation.php

index d02f1ec3ecaed345d4f7946d6e61efd093ee4b46..135fa1cf5b850d019fe1ee89829fa32ac30a1088 100644 (file)
@@ -748,13 +748,19 @@ ORDER BY parent_id, weight";
 
     // this means node is moved to last position, so you need to get the weight of last element + 1
     if (!$newWeight) {
-      $lastPosition = $position - 1;
-      $sql = "SELECT weight from civicrm_navigation WHERE {$parentClause} ORDER BY weight LIMIT %1, 1";
-      $params = array(1 => array($lastPosition, 'Positive'));
-      $newWeight = CRM_Core_DAO::singleValueQuery($sql, $params);
-
-      // since last node increment + 1
-      $newWeight = $newWeight + 1;
+      // If this is not the first item being added to a parent
+      if ($position) {
+        $lastPosition = $position - 1;
+        $sql = "SELECT weight from civicrm_navigation WHERE {$parentClause} ORDER BY weight LIMIT %1, 1";
+        $params = array(1 => array($lastPosition, 'Positive'));
+        $newWeight = CRM_Core_DAO::singleValueQuery($sql, $params);
+
+        // since last node increment + 1
+        $newWeight = $newWeight + 1;
+      }
+      else {
+        $newWeight = '0';
+      }
 
       // since this is a last node we don't need to increment other nodes
       $incrementOtherNodes = FALSE;