@@ -59,7 +59,7 @@ public function store(Request $request)
5959 */
6060 public function edit ($ id )
6161 {
62- $ menu = Menu::findOrFail ($ id );
62+ $ menu = Menu::findOrFail ($ id );
6363
6464 return view ('SimpleMenu::admin. ' .config ('simpleMenu.framework ' ).'.menus.edit ' , compact ('menu ' ));
6565 }
@@ -78,11 +78,14 @@ public function update(Request $request, $id)
7878 'name ' => 'required|unique:menus,name, ' .$ id ,
7979 ]);
8080
81+ $ menu = Menu::findOrFail ($ id );
82+
8183 foreach (json_decode ($ request ->saveList ) as $ item ) {
84+ $ menu ->pages ()->sync ($ item ->id , false );
8285 DB ::table ('menu_page ' )->where ('page_id ' , $ item ->id )->update (['order ' =>$ item ->order ]);
8386 }
8487
85- Menu:: findOrFail ( $ id ) ->update ($ request ->except ('saveList ' ));
88+ $ menu ->update ($ request ->except ('saveList ' ));
8689
8790 // todo
8891 // page nest list
@@ -105,26 +108,47 @@ public function destroy($id)
105108 }
106109
107110 /**
108- * remove page from menu with ajax.
111+ * get all menu pages for vuejs.
112+ *
113+ * @param Menu $id [description]
109114 *
110- * @param mixed $id
115+ * @return [type] [description]
111116 */
112- public function removePage ( $ id , Request $ request )
117+ public function getMenuPages ( Menu $ id )
113118 {
114- if (Menu::find ($ id )->pages ()->detach ($ request ->page_id )) {
115- Menu::find ($ id )->touch ();
119+ $ pages = $ id ->pages ()->orderBy ('pivot_order ' , 'asc ' )->get ();
116120
117- return response ()->json (['done ' =>true ]);
118- }
121+ $ pages ->map (function ($ item ) {
122+ if (count ($ childs = $ item ->getDescendants ()->toHierarchy ())) {
123+ $ item ['children ' ] = $ childs ;
124+ }
125+ });
126+
127+ $ allPages = Page::all ()->diff ($ pages );
128+
129+ $ allPages ->map (function ($ item ) {
130+ if (count ($ childs = $ item ->getDescendants ()->toHierarchy ())) {
131+ $ item ['children ' ] = $ childs ;
132+ }
133+ });
134+
135+ return response ()->json (compact ('pages ' , 'allPages ' ));
119136 }
120137
121138 /**
122- * get all menu pages for sorting with vuejs.
139+ * remove page from menu with ajax.
140+ *
141+ * @param [type] $id [description]
142+ * @param Request $request [description]
143+ *
144+ * @return [type] [description]
123145 */
124- public function getPages ( Menu $ id )
146+ public function removePage ( $ id, Request $ request )
125147 {
126- $ pages = $ id ->pages ()->orderBy ('pivot_order ' , 'asc ' )->where ('url-> ' .app ()->getLocale (), '!= ' , '' )->get ();
148+ if (Menu::find ($ id )->pages ()->detach ($ request ->page_id )) {
149+ Menu::find ($ id )->touch ();
127150
128- return response ()->json (['data ' => $ pages ]);
151+ return response ()->json (['done ' =>true ]);
152+ }
129153 }
130154}
0 commit comments