nav_model = D("Common/Nav"); $this->navcat_model =D("Common/NavCat"); } // 导航菜单列表 public function index() { $cid=I('request.cid',0,'intval'); if(empty($cid)){ $navcat=$this->navcat_model->find(); $cid=$navcat['navcid']; } $result = $this->nav_model->where(array('cid'=>$cid))->order(array("listorder" => "ASC"))->select(); $tree = new \Tree(); $tree->icon = array('   │ ', '   ├─ ', '   └─ '); $tree->nbsp = '   '; foreach ($result as $r) { $r['str_manage'] = ' $r['id'],"cid"=>$r['cid'])) . '">'.L('ADD_SUB_NAV').' | $r['id'],"parentid"=>$r['parentid'],"cid"=>$r['cid'])) . '">'.L('EDIT').' | $r['id'])) . '">'.L('DELETE').' '; $r['status'] = $r['status'] ? L('DISPLAY') : L('HIDDEN'); $array[] = $r; } $tree->init($array); $str = " \$id \$spacer\$label \$status \$str_manage "; $categorys = $tree->get_tree(0, $str); $this->assign("categorys", $categorys); $cats=$this->navcat_model->select(); $this->assign("navcats",$cats); $this->assign("navcid",$cid); $this->display(); } // 导航菜单添加 public function add() { $cid=I('request.cid',0,'intval'); $result = $this->nav_model->where(array('cid'=>$cid))->order(array("listorder" => "ASC"))->select(); $tree = new \Tree(); $tree->icon = array(' │ ', ' ├─ ', ' └─ '); $tree->nbsp = ' '; $parentid=I("get.parentid",0,'intval'); foreach ($result as $r) { $r['str_manage'] = ' $r['id'], "menuid" => I("get.menuid"))) . '">添加子菜单 | $r['id'], "menuid" => I("get.menuid"))) . '">修改 | $r['id'], "menuid" => I("get.menuid"))) . '">删除 '; $r['status'] = $r['status'] ? "显示" : "隐藏"; $r['selected'] = $r['id']==$parentid?"selected":""; $array[] = $r; } $tree->init($array); $str=""; $nav_trees = $tree->get_tree(0, $str); $this->assign("nav_trees", $nav_trees); $cats=$this->navcat_model->select(); $this->assign("navcats",$cats); $navs= $this->_select(); foreach ($navs as $key=>$navdata){ $tree->init($navdata['items']); $tpl=""; $navs_html = $tree->get_tree(0, $tpl); $navs[$key]['html']=$navs_html; } $this->assign('navs', $navs); $this->assign("navcid",$cid); $this->display(); } // 导航菜单添加提交 public function add_post() { if (IS_POST) { $data=I("post."); if(isset($data['external_href'])){ $data['href']=$data['external_href']; unset($data['external_href']); }else{ $data['href']=base64_decode($data['href']); } if ($this->nav_model->create($data)!==false) { $result=$this->nav_model->add(); if ($result!==false) { $parentid=I('post.parentid',0,'intval'); if(empty($parentid)){ $data['path']="0-$result"; }else{ $parent=$this->nav_model->where(array('id'=>$parentid))->find(); $data['path']=$parent[path]."-$result"; } $data['id']=$result; $this->nav_model->save($data); F("site_nav_".intval($data['cid']),null); F("site_nav_main",null); $this->success("添加成功!", U("nav/index")); } else { $this->error("添加失败!"); } } else { $this->error($this->nav_model->getError()); } } } // 导航菜单编辑 public function edit() { $cid=I('request.cid',0,'intval');; $id=I("get.id",0,'intval'); $result = $this->nav_model->where("cid=$cid and id!=$id")->order(array("listorder" => "ASC"))->select(); $tree = new \Tree(); $tree->icon = array(' │ ', ' ├─ ', ' └─ '); $tree->nbsp = '       '; $parentid= I("get.parentid",0,'intval'); foreach ($result as $r) { $r['str_manage'] = ' $r['id'], "menuid" => I("get.menuid"))) . '">添加子菜单 | $r['id'], "menuid" => I("get.menuid"))) . '">修改 | $r['id'], "menuid" => I("get.menuid"))) . '">删除 '; $r['status'] = $r['status'] ? "显示" : "隐藏"; $r['selected'] = $r['id']==$parentid?"selected":""; $array[] = $r; } $tree->init($array); $str=""; $nav_trees = $tree->get_tree(0, $str); $this->assign("nav_trees", $nav_trees); $cats=$this->navcat_model->select(); $this->assign("navcats",$cats); $nav=$this->nav_model->where(array('id'=>$id))->find(); $nav['hrefold']=$nav['href']; $nav['href'] = base64_encode($nav['href']); $this->assign($nav); $navs= $this->_select(); foreach ($navs as $key=>$navdata){ $tree->init($navdata['items']); $tpl=""; $navs_html = $tree->get_tree(0, $tpl); $navs[$key]['html']=$navs_html; } $this->assign('navs', $navs); $this->assign("navcid",$cid); $this->display(); } // 导航菜单编辑提交 public function edit_post() { if (IS_POST) { $parentid=empty($_POST['parentid'])?"0":$_POST['parentid']; if(empty($parentid)){ $_POST['path']="0-".$_POST['id']; }else{ $parent=$this->nav_model->where("id=$parentid")->find(); $_POST['path']=$parent['path']."-".$_POST['id']; } $data=I("post."); if(isset($data['external_href'])){ $data['href']=$data['external_href']; unset($data['external_href']); }else{ $data['href']=base64_decode($data['href']); } if ($this->nav_model->create($data)!==false) { if ($this->nav_model->save() !== false) { F("site_nav_".intval($data['cid']),null); F("site_nav_main",null); $this->success("保存成功!", U("nav/index")); } else { $this->error("保存失败!"); } } else { $this->error($this->nav_model->getError()); } } } // 导航菜单排序 public function listorders() { $status = parent::_listorders($this->nav_model); if ($status) { $this->success("排序更新成功!"); } else { $this->error("排序更新失败!"); } } // 导航菜单删除 public function delete() { $id = I("get.id",0,'intval'); $count = $this->nav_model->where(array("parentid" => $id))->count(); if ($count > 0) { $this->error("该菜单下还有子菜单,无法删除!"); } if ($this->nav_model->delete($id)!==false) { $this->success("删除菜单成功!"); } else { $this->error("删除失败!"); } } /** * 获取所有应用可用的导航菜单 */ private function _select(){ $apps=sp_scan_dir(SPAPP."*"); $navs=array(); foreach ($apps as $a){ if(is_dir(SPAPP.$a)){ if(!(strpos($a, ".") === 0)){ $navfile=SPAPP.$a."/nav.php"; $app=$a; if(file_exists($navfile)){ $navgeturls=include $navfile; foreach ($navgeturls as $url){ $nav = R("$app/$url"); $navs[]=$nav; } } } } } return $navs; } }