From 2296c49bc3643ff49ec4b55d7e52e144037b878e Mon Sep 17 00:00:00 2001 From: Stephen Cameron Date: Thu, 5 Sep 2019 19:57:24 +0200 Subject: [PATCH] Responsive fixes and general code cleanup. Done #2769 @2.5 --- app/Models/Product.php | 37 +++++++------- app/Providers/AppServiceProvider.php | 4 ++ resources/js/components/CartItem.vue | 6 +-- resources/js/components/NumberInput.vue | 4 +- resources/styles/components/cart.styl | 6 +++ resources/styles/components/form.styl | 18 +++++-- resources/views/pages/cart.blade.php | 2 +- resources/views/partials/cart.blade.php | 4 +- resources/views/partials/form.blade.php | 59 +++++++++++++---------- resources/views/partials/header.blade.php | 1 + 10 files changed, 86 insertions(+), 55 deletions(-) diff --git a/app/Models/Product.php b/app/Models/Product.php index dbede64..995ad63 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -14,6 +14,7 @@ class Product extends CubistMagicPageModel protected static $_specifications = null; protected static $_productTypes = null; protected static $_specificationFields = null; + protected static $_cart_data; /** * @var array @@ -349,25 +350,27 @@ class Product extends CubistMagicPageModel */ public static function getCartData() { - - $cart_items = session('cart_items', []); - - $cart_data = []; - $products = self::with('media')->whereIn('id', array_keys($cart_items))->get(); - - foreach ($products as $product) { - $cart_data[] = [ - 'id' => $product->id, - 'name' => $product->name, - 'reference' => $product->reference, - 'category' => $product->type->name, - 'quantity' => $cart_items[$product->id], - 'image' => $product->image, - 'URL' => $product->url, - ]; + if (!self::$_cart_data) { + + $cart_items = session('cart_items', []); + + self::$_cart_data = []; + $products = self::with('media')->whereIn('id', array_keys($cart_items))->get(); + + foreach ($products as $product) { + self::$_cart_data[] = [ + 'id' => $product->id, + 'name' => $product->name, + 'reference' => $product->reference, + 'category' => $product->type->name, + 'quantity' => $cart_items[$product->id], + 'image' => $product->image, + 'URL' => $product->url, + ]; + } } - return $cart_data; + return self::$_cart_data; } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 7f873af..da285a9 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -6,6 +6,7 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\Blade; use Spatie\BladeX\Facades\BladeX; +use App\Models\Product; class AppServiceProvider extends ServiceProvider { @@ -31,6 +32,9 @@ class AppServiceProvider extends ServiceProvider $view_parts = explode('.', $view->getName()); $view_name = end($view_parts); View::share('view_name', $view_name); + + // Also share cart data with all views + View::share('cart_items', Product::getCartData()); }); try { diff --git a/resources/js/components/CartItem.vue b/resources/js/components/CartItem.vue index a172801..67d93fb 100644 --- a/resources/js/components/CartItem.vue +++ b/resources/js/components/CartItem.vue @@ -1,10 +1,10 @@