44
55use App \Http \Controllers \Controller ;
66use ctf0 \SimpleMenu \Models \Menu ;
7+ use ctf0 \SimpleMenu \Models \Page ;
78use Illuminate \Http \Request ;
9+ use Illuminate \Support \Facades \DB ;
810
911class MenusController extends Controller
1012{
1113 /**
12- * Display a listing of Permission .
14+ * Display a listing of Menu .
1315 *
1416 * @return \Illuminate\Http\Response
1517 */
@@ -21,7 +23,7 @@ public function index()
2123 }
2224
2325 /**
24- * Show the form for creating new Permission .
26+ * Show the form for creating new Menu .
2527 *
2628 * @return \Illuminate\Http\Response
2729 */
@@ -31,7 +33,7 @@ public function create()
3133 }
3234
3335 /**
34- * Store a newly created Permission in storage.
36+ * Store a newly created Menu in storage.
3537 *
3638 * @param \App\Http\Requests\StoreMenusRequest $request
3739 *
@@ -49,21 +51,21 @@ public function store(Request $request)
4951 }
5052
5153 /**
52- * Show the form for editing Permission .
54+ * Show the form for editing Menu .
5355 *
5456 * @param int $id
5557 *
5658 * @return \Illuminate\Http\Response
5759 */
5860 public function edit ($ id )
5961 {
60- $ menu = Menu::findOrFail ($ id );
62+ $ menu = Menu::findOrFail ($ id );
6163
6264 return view ('SimpleMenu::pages. ' .config ('simpleMenu.framework ' ).'.menus.edit ' , compact ('menu ' ));
6365 }
6466
6567 /**
66- * Update Permission in storage.
68+ * Update Menu in storage.
6769 *
6870 * @param \App\Http\Requests\UpdateMenusRequest $request
6971 * @param int $id
@@ -76,13 +78,21 @@ public function update(Request $request, $id)
7678 'name ' => 'required|unique:menus,name, ' .$ id ,
7779 ]);
7880
79- Menu::findOrFail ($ id )->update ($ request ->all ());
81+ // update menu pages order
82+ foreach (json_decode ($ request ->saveList ) as $ item ) {
83+ DB ::table ('menu_page ' )->where ('page_id ' , $ item ->id )->update (['order ' =>$ item ->order ]);
84+ }
8085
81- return redirect ()->route ('admin.menus.index ' );
86+ Menu::findOrFail ($ id )->update ($ request ->except ('saveList ' ));
87+
88+ // todo
89+ // page nest list
90+
91+ return back ();
8292 }
8393
8494 /**
85- * Remove Permission from storage.
95+ * Remove Menu from storage.
8696 *
8797 * @param int $id
8898 *
@@ -94,4 +104,36 @@ public function destroy($id)
94104
95105 return redirect ()->route ('admin.menus.index ' );
96106 }
107+
108+ /* helpers */
109+
110+ /**
111+ * remove page from menu with ajax.
112+ *
113+ * @param [type] $id [description]
114+ * @param Request $request [description]
115+ *
116+ * @return [type] [description]
117+ */
118+ public function removePage ($ id , Request $ request )
119+ {
120+ if (Menu::find ($ id )->pages ()->detach ($ request ->page_id )) {
121+ Menu::find ($ id )->touch ();
122+ return response ()->json (['done ' =>true ]);
123+ }
124+ }
125+
126+ /**
127+ * get all menu pages for sorting with vuejs.
128+ *
129+ * @param Menu $id [description]
130+ *
131+ * @return [type] [description]
132+ */
133+ public function getPages (Menu $ id )
134+ {
135+ $ pages = $ id ->pages ()->orderBy ('pivot_order ' , 'asc ' )->where ('url-> ' .app ()->getLocale (), '!= ' , '' )->get ();
136+
137+ return response ()->json (['data ' => $ pages ]);
138+ }
97139}
0 commit comments