From ca31946d1a6bcf45c8e35967d6da8657dd6b2841 Mon Sep 17 00:00:00 2001
From: Cameron <e107inc@gmail.com>
Date: Mon, 3 Apr 2023 16:27:42 -0700
Subject: [PATCH] Issue #4940 - Flex panel changes not sticking.

---
 e107_admin/includes/flexpanel.php   | 16 +++++++++++-----
 e107_web/js/core/admin.flexpanel.js |  4 +++-
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/e107_admin/includes/flexpanel.php b/e107_admin/includes/flexpanel.php
index cabdb9b10..c215e6bbe 100644
--- a/e107_admin/includes/flexpanel.php
+++ b/e107_admin/includes/flexpanel.php
@@ -26,21 +26,25 @@ define('FLEXPANEL_ENABLED', $flepanelEnabled);
 // Save rearranged menus to user.
 if(e_AJAX_REQUEST)
 {
+
 	if(FLEXPANEL_ENABLED && varset($_POST['core-flexpanel-order'], false))
 	{
 		// If "Apply dashboard preferences to all administrators" is checked.
+//print_r($_POST);
 		if($adminPref == 1)
 		{
+
 			e107::getConfig()
 				->setPosted('core-flexpanel-order', $_POST['core-flexpanel-order'])
-				->save();
+				->save(true,true);
+
 		}
 		else
 		{
-			e107::getUser()
+			$result = e107::getUser()
 				->getConfig()
 				->set('core-flexpanel-order', $_POST['core-flexpanel-order'])
-				->save();
+				->save(true,true);
 		}
 		exit;
 	}
@@ -56,7 +60,7 @@ e107_require_once(e_ADMIN . 'includes/infopanel.php');
 class adminstyle_flexpanel extends adminstyle_infopanel
 {
 
-	private $iconlist = array();
+	private $iconlist;
 
 	/**
 	 * Constructor.
@@ -342,7 +346,9 @@ class adminstyle_flexpanel extends adminstyle_infopanel
 
 		if(!empty($user_pref['core-flexpanel-order'][$id]))
 		{
-			return $user_pref['core-flexpanel-order'][$id];
+			$arr = $user_pref['core-flexpanel-order'][$id];
+
+			return ['area' => $arr['area'], 'weight' => (int) $arr['weight']];
 		}
 
 		$default = array(
diff --git a/e107_web/js/core/admin.flexpanel.js b/e107_web/js/core/admin.flexpanel.js
index 327fa922a..def196f39 100644
--- a/e107_web/js/core/admin.flexpanel.js
+++ b/e107_web/js/core/admin.flexpanel.js
@@ -100,7 +100,9 @@ var e107 = e107 || {'settings': {}, 'behaviors': {}};
 			}
 		});
 		
-		$.post(window.location.href, {'core-flexpanel-order': NewOrder});
+		$.post(window.location.href, {'core-flexpanel-order': NewOrder}).done(function( data ) {
+             console.log(data);
+        });
 	};
 
 	e107.callbacks.flexPanelEmptyPanels = function ()