From 5671f2d2bfbce67d162f2e78cb692f6743f05491 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Mon, 26 Sep 2022 17:22:32 +0800 Subject: [PATCH] add plugin show page --- .../Http/Controllers/MarketingController.php | 14 ++++++++ beike/Admin/Routes/admin.php | 1 + beike/Admin/Services/MarketingService.php | 6 ++++ plugins/HeaderMenu/Bootstrap.php | 35 +++++++++++++++++++ .../Controllers/MenusController.php | 24 +++++++++++++ .../Views/latest_products.blade.php | 21 +++++++++++ plugins/HeaderMenu/config.json | 12 +++++++ plugins/HeaderMenu/routes.php | 15 ++++++++ .../views/pages/marketing/show.blade.php | 12 +++++++ 9 files changed, 140 insertions(+) create mode 100644 plugins/HeaderMenu/Bootstrap.php create mode 100644 plugins/HeaderMenu/Controllers/MenusController.php create mode 100644 plugins/HeaderMenu/Views/latest_products.blade.php create mode 100644 plugins/HeaderMenu/config.json create mode 100644 plugins/HeaderMenu/routes.php create mode 100644 resources/beike/admin/views/pages/marketing/show.blade.php diff --git a/beike/Admin/Http/Controllers/MarketingController.php b/beike/Admin/Http/Controllers/MarketingController.php index edf5912c..92a1311e 100644 --- a/beike/Admin/Http/Controllers/MarketingController.php +++ b/beike/Admin/Http/Controllers/MarketingController.php @@ -37,6 +37,20 @@ class MarketingController } + /** + * 获取单个插件详情 + */ + public function show(Request $request) + { + $code = $request->code; + $plugin = MarketingService::getPlugin($code); + $data = [ + 'plugin' => $plugin, + ]; + return view('admin::pages.marketing.show', $data); + } + + /** * 下载插件安装包到本地 */ diff --git a/beike/Admin/Routes/admin.php b/beike/Admin/Routes/admin.php index b3f26a03..e5725b69 100644 --- a/beike/Admin/Routes/admin.php +++ b/beike/Admin/Routes/admin.php @@ -142,6 +142,7 @@ Route::prefix($adminName) // 插件市场 Route::middleware('can:marketing_index')->get('marketing', [Controllers\MarketingController::class, 'index'])->name('marketing.index'); + Route::middleware('can:marketing_show')->get('marketing/{code}', [Controllers\MarketingController::class, 'show'])->name('marketing.show'); Route::middleware('can:marketing_download')->get('marketing/{code}/download', [Controllers\MarketingController::class, 'download'])->name('marketing.download'); diff --git a/beike/Admin/Services/MarketingService.php b/beike/Admin/Services/MarketingService.php index a1f5be95..6f8fc5fb 100644 --- a/beike/Admin/Services/MarketingService.php +++ b/beike/Admin/Services/MarketingService.php @@ -20,4 +20,10 @@ class MarketingService $url = config('beike.api_url') . '/api/plugins'; return Http::get($url)->json(); } + + public static function getPlugin($code) + { + $url = config('beike.api_url') . '/api/plugins/' . $code; + return Http::get($url)->json(); + } } diff --git a/plugins/HeaderMenu/Bootstrap.php b/plugins/HeaderMenu/Bootstrap.php new file mode 100644 index 00000000..d066e2a2 --- /dev/null +++ b/plugins/HeaderMenu/Bootstrap.php @@ -0,0 +1,35 @@ + + * @created 2022-07-20 15:35:59 + * @modified 2022-07-20 15:35:59 + */ + +namespace Plugin\HeaderMenu; + +class Bootstrap +{ + public function boot() + { + add_filter('header.categories', function ($data) { + $data[] = [ + 'name' => '插件链接', + 'url' => shop_route('home.index'), + 'children' => [ + [ + "name" => "最新商品", + "url" => plugin_route('latest_products'), + ], [ + "name" => "百度", + "url" => "https://www.baidu.com", + ] + ], + ]; + return $data; + }); + } +} diff --git a/plugins/HeaderMenu/Controllers/MenusController.php b/plugins/HeaderMenu/Controllers/MenusController.php new file mode 100644 index 00000000..477e4c9e --- /dev/null +++ b/plugins/HeaderMenu/Controllers/MenusController.php @@ -0,0 +1,24 @@ + + * @created 2022-07-21 10:00:25 + * @modified 2022-07-21 10:00:25 + */ + +namespace Plugin\HeaderMenu\Controllers; + +use Beike\Repositories\ProductRepo; +use Beike\Shop\Http\Controllers\Controller; + +class MenusController extends Controller +{ + public function latestProducts() + { + $products = ProductRepo::getBuilder()->orderByDesc('updated_at')->paginate(40); + return view("HeaderMenu::latest_products", ['products' => $products]); + } +} diff --git a/plugins/HeaderMenu/Views/latest_products.blade.php b/plugins/HeaderMenu/Views/latest_products.blade.php new file mode 100644 index 00000000..f4c42b44 --- /dev/null +++ b/plugins/HeaderMenu/Views/latest_products.blade.php @@ -0,0 +1,21 @@ +@extends('layout.master') + +@section('content') +
+ +
+ @foreach ($products as $product) +
@include('shared.product')
+ @endforeach +
+ + {{ $products->links('shared/pagination/bootstrap-4') }} + +
+ +@endsection diff --git a/plugins/HeaderMenu/config.json b/plugins/HeaderMenu/config.json new file mode 100644 index 00000000..76c5491f --- /dev/null +++ b/plugins/HeaderMenu/config.json @@ -0,0 +1,12 @@ +{ + "code": "header_menu", + "name": "首页菜单Demo", + "description": "修改首页菜单插件", + "type": "view", + "version": "v1.0.0", + "icon": "https://via.placeholder.com/100x100.png/aabbcc?text=MENU", + "author": { + "name": "成都光大网络科技有限公司", + "email": "yangjin@opencart.cn" + } +} diff --git a/plugins/HeaderMenu/routes.php b/plugins/HeaderMenu/routes.php new file mode 100644 index 00000000..d31228e2 --- /dev/null +++ b/plugins/HeaderMenu/routes.php @@ -0,0 +1,15 @@ + + * @created 2022-07-21 09:35:05 + * @modified 2022-07-21 09:35:05 + */ + +use Illuminate\Support\Facades\Route; + +Route::get('/latest_products', '\Plugin\HeaderMenu\Controllers\MenusController@latestProducts')->name('plugin.latest_products'); + diff --git a/resources/beike/admin/views/pages/marketing/show.blade.php b/resources/beike/admin/views/pages/marketing/show.blade.php new file mode 100644 index 00000000..7a69a811 --- /dev/null +++ b/resources/beike/admin/views/pages/marketing/show.blade.php @@ -0,0 +1,12 @@ +@extends('admin::layouts.master') + +@section('title', __('admin/marketing.marketing_list')) + +@section('content') + @dump($plugin) +@endsection + +@push('footer') + +@endpush