middleware('admin'); $this->contentSiteRepo = $contentSiteRepo; } /** * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index() { $data = [ 'models' => IQContentTree::all(), ]; return view('cms.travel_guide.tree', $data); } public function detail($id, $node_id = false, $section_id = false) { $model = IQContentTree::findOrFail($id); $tree_node = IQContentTreeNode::find($node_id); $area_section = false; $site_fields = false; if($section_id){ /* * $area_section = IQContentAreaSection::findOrFail($area_section_id); $site_fields = $this->contentSiteRepo->siteFieldPrepare($tree_node->iq_content_site, $area_section); */ } $data = [ 'model' => $model, 'site_fields' => $site_fields, 'tree_node' => $tree_node, 'id' => $id, 'section' => false, ]; return view('cms.travel_guide.tree-detail', $data); } public function repair($id=1){ die(); $model = IQContentTree::findOrFail($id); $travel_guide_pages = TravelPageGuide::getPageGuides($model->root_id); $page_parent_id = []; $pos = 1; $tree_node = new IQContentTreeNode(); foreach ($travel_guide_pages as $guide_page){ $slug = $guide_page->slug; if(TravelGuide::whereSlug($slug)->count()){ $slug = ""; } //make travel Guide $description = substr($guide_page->description, 0, 255); $description = substr($guide_page->description, 0, strrpos($description, " ")); $keywords = substr($guide_page->keywords, 0, 255); $keywords = substr($guide_page->keywords, 0, strrpos($keywords, " ")); $data = [ 'active' => $guide_page->status ? true : false, 'scope' => false, 'name' => $guide_page->title, 'slug' => $slug, 'text' => "page_id:".$guide_page->id, 'full_text' => $guide_page->content_new, 'keyword' => $guide_page->keyword, 'meta_title' => $guide_page->pagetitle, 'meta_description' => $description, 'meta_keywords' => $keywords, 'country_id' => $guide_page->country_id, 'box_image_url' => $guide_page->box_image_url, ]; $TravelGuide = TravelGuide::create($data); if(!isset($page_parent_id[$guide_page->parent_id])){ $page_parent_id[$guide_page->parent_id] = $tree_node->id; } if($guide_page->lvl == 1){ $pos = 0; $parent_id = null; }else{ $pos++; $parent_id = $page_parent_id[$guide_page->parent_id]; } $lvl = $guide_page->lvl-1; //make tree node $tree_data = [ 'tree_id' => $model->id, 'parent_id' => $parent_id, 'lvl' => $lvl, 'name' => $guide_page->title, 'identifier' => $guide_page->slug, 'settings' => "page_id:".$guide_page->id, 'pos' => $pos, 'active' => $guide_page->status ? true : false, ]; $tree_node = IQContentTreeNode::create($tree_data); IQContentSite::create(['tree_node_id'=>$tree_node->id, 'travel_guide_id'=>$TravelGuide->id]); if($guide_page->travel_guide_content_id > 0){ $TravelGuide = TravelGuide::find($guide_page->travel_guide_content_id); if($TravelGuide){ IQContentSite::create(['tree_node_id'=>$tree_node->id, 'travel_guide_id'=>$TravelGuide->id]); } } } die("--"); } public function store($id, $node_id = false, $area_section_id = false) { $data = Input::all(); //from ajax if(isset($data['action'])){ //set node active on off if($data['action'] == 'node-set-active'){ //$model = IQContentTree::findOrFail($id); $tree_node = IQContentTreeNode::findOrFail($node_id); if($tree_node->active){ $tree_node->active = false; }else{ $tree_node->active = true; } $tree_node->save(); return response()->json(['success' => 'tree-node-active', 'data'=>$tree_node->active], 200); } } //new sort / save nestable if(isset($data['nestable-output'])){ $model = IQContentTree::findOrFail($id); $model->updated_at = now(); $model->save(); $this->saveNestableOutput($model, json_decode($data['nestable-output'])); \Session()->flash('alert-save', '1'); return redirect(route('iq_content_tree_detail', [$model->id])); } if(isset($data['iq_content_site_field']) && is_array($data['iq_content_site_field'])){ $model = IQContentTree::findOrFail($id); $model->updated_at = now(); $model->save(); $this->contentSiteRepo->storeContentSideFields($data['iq_content_site_field']); \Session()->flash('alert-save', '1'); return redirect(route('iq_content_tree_detail', [$model->id, $node_id, $area_section_id])); } $rules = array( 'name' => 'required', ); $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return back()->withErrors($validator); } $data['user_id'] = \Auth::user()->id; $data['active'] = isset($data['active']) ? true : false; $data['search'] = isset($data['search']) ? true : false; if (isset($data['action'])) { switch ($data['action']) { case 'tree-content' : if($data['id'] == 0){ $model = IQContentTree::create($data); }else{ $model = IQContentTree::find($data['id']); $model->fill($data); $model->save(); } \Session()->flash('alert-save', '1'); return redirect(route('iq_content_tree_detail', [$model->id])); break; case 'tree-node' : $model = IQContentTree::findOrFail($id); $model->updated_at = now(); $model->save(); if($data['id'] == 0){ $tree_node = IQContentTreeNode::create($data); }else{ $tree_node = IQContentTreeNode::find($data['id']); $tree_node->fill($data); $tree_node->save(); } \Session()->flash('alert-save', '1'); return redirect(route('iq_content_tree_detail', [$model->id, $tree_node->id])); break; case 'tree-site-content' : /* if($data['id'] == 0){ $contentSite = IQContentSite::create($data); }else{ $contentSite = IQContentSite::find($data['id']); $contentSite->fill($data); $contentSite->save(); }*/ $model = IQContentTree::findOrFail($id); $model->updated_at = now(); $model->save(); $tree_node = IQContentTreeNode::findOrFail($node_id); $travel_guide = TravelGuide::findOrFail($data['travel_guide_id']); if(IQContentSite::whereTreeNodeId($tree_node->id)->whereTravelGuideId($travel_guide->id)->count() == 0){ IQContentSite::create(['tree_node_id'=>$tree_node->id, 'travel_guide_id'=>$travel_guide->id]); \Session()->flash('alert-save', '1'); }else{ \Session()->flash('alert-error', 'Eintrag schon vorhanden'); } return redirect(route('iq_content_tree_detail', [$id, $node_id])); break; case 'guide-tree-site' : $model = IQContentTree::findOrFail($id); $model->updated_at = now(); $model->save(); $tree_node = IQContentTreeNode::findOrFail($data['tree_node_id']); $travel_guide = TravelGuide::findOrFail($data['travel_guide_id']); if(IQContentSite::whereTreeNodeId($tree_node->id)->whereTravelGuideId($travel_guide->id)->count() == 0){ IQContentSite::create(['tree_node_id'=>$tree_node->id, 'travel_guide_id'=>$travel_guide->id]); \Session()->flash('alert-save', '1'); }else{ \Session()->flash('alert-error', 'Eintrag schon vorhanden'); } return redirect(route('cms_travel_guide_detail', [$travel_guide->id])); break; } } } public function removeSite($id, $node_id, $travel_guide_id, $r=false){ $model = IQContentTree::findOrFail($id); $tree_node = IQContentTreeNode::findOrFail($node_id); $tavel_guide = TravelGuide::findOrFail($travel_guide_id); $iq_content_site = IQContentSite::whereTreeNodeId($node_id)->whereTravelGuideId($travel_guide_id)->first(); $iq_content_site->delete(); \Session()->flash('alert-success', __('Seite aus Tree entfernt.')); if($r == "g"){ return redirect(route('cms_travel_guide_detail', [$travel_guide_id])); } return redirect(route('iq_content_tree_detail', [$id, $node_id])); } private function saveNestableOutput(IQContentTree $contentTree, $list, $pos=0, $lvl = 0, $parent_id = null){ foreach ($list as $item){ $tree_node = IQContentTreeNode::find($item->id); $tree_node->lvl = $lvl; $tree_node->parent_id = $parent_id; $tree_node->pos = $pos++; $tree_node->save(); if(isset($item->children)) { $this->saveNestableOutput($contentTree, $item->children, $pos, $lvl + 1, $tree_node->id); } } } }