why.xingtongworld.com项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

331 lines
11 KiB

<?php
// +----------------------------------------------------------------------
// | YFCMF [ WE CAN DO IT MORE SIMPLE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2015-2016 http://www.rainfer.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: rainfer <81818832@qq.com>
// +----------------------------------------------------------------------
namespace app\admin\controller;
use think\Db;
use app\admin\model\Menu as MenuModel;
use app\admin\model\Options as OptionsModel;
class Menu extends Base
{
public function _initialize()
{
parent::_initialize();
}
/**
* 前台菜单列表
*/
public function news_menu_list()
{
$menu_l=input('menu_l');
$where=array();
if(!empty($menu_l)){
$where['menu_l']=array('eq',$menu_l);
}
if(!config('lang_switch_on')){
$where['menu_l']= $this->lang;
}
$menu_model=new MenuModel;
$menus=$menu_model->where($where)->order('menu_l Desc,listorder')->select();
//$menus=get_menu_model($menus);
$show='';
$arr = menu_left($menus,'id','parentid');
$this->assign('arr',$arr);
$this->assign('menu_l',$menu_l);
$this->assign('page',$show);
if(request()->isAjax()){
return $this->fetch('ajax_news_menu_list');
}else{
return $this->fetch();
}
}
/**
* 前台菜单添加显示
*/
public function news_menu_add()
{
$parentid=input('id',0);
//id不为0,取lang
$menu_l='';
$menu_model=new MenuModel;
if($parentid){
$menu_l=$menu_model->where('id',$parentid)->value('menu_l');
}
$where=array();
if(!empty($menu_l)){
$where['menu_l']=array('eq',$menu_l);
}
if(!config('lang_switch_on')){
$where['menu_l']= $this->lang;
}
$options_model=new OptionsModel;
$tpls=$options_model->tpls($this->lang);
$model='';//Db::name('model')->select();
$this->assign('model',$model);
$menu_text=$menu_model->where($where)->order('menu_l Desc,listorder')->select();
$menu_text = menu_left($menu_text,'id','parentid');
$this->assign('menu_text',$menu_text);
$this->assign('parentid',$parentid);
$this->assign('menu_l',$menu_l);
$this->assign('tpls',$tpls);
return $this->fetch();
}
/**
* 前台菜单添加操作
*/
public function news_menu_runadd()
{
$lang_list=input('lang_list');
if(empty($lang_list)) $lang_list=input('menu_l',$this->lang);
if (!request()->isAjax()){
$this->error('提交方式不正确',url('admin/Menu/news_menu_list',array('menu_l'=>$lang_list)));
}else{
//处理图片
$img_url='';
$file = request()->file('file0');
if($file){
if(config('storage.storage_open')){
//七牛
$upload = \Qiniu::instance();
$info = $upload->upload();
$error = $upload->getError();
if ($info) {
$img_url= config('storage.domain').$info[0]['key'];
}else{
$this->error($error,url('admin/Menu/news_menu_list',array('menu_l'=>$lang_list)));
}
}else{
$validate=config('upload_validate');
$info = $file->validate($validate)->rule('uniqid')->move(ROOT_PATH . config('upload_path') . DS . date('Y-m-d'));
if($info) {
$img_url=config('upload_path'). '/' . date('Y-m-d') . '/' . $info->getFilename();
//写入数据库
$data['uptime']=time();
$data['filesize']=$info->getSize();
$data['path']=$img_url;
Db::name('plug_files')->insert($data);
}else{
$this->error($file->getError(),url('admin/Menu/news_menu_list',array('menu_l'=>$lang_list)));
}
}
}
//处理语言
$parentid=input('parentid',0,'intval');
if($parentid){
$menu_l=Db::name('menu')->where('id',$parentid)->value('menu_l');
}else{
$menu_l=input('menu_l',$this->lang);
}
//构建数组
$data=array(
'menu_name'=>input('menu_name'),
'menu_l'=>$menu_l,
'menu_enname'=>input('menu_enname'),
'menu_type'=>input('menu_type'),
'menu_modelid'=>input('menu_modelid',0,'intval'),
'parentid'=>$parentid,
'menu_listtpl'=>input('menu_listtpl'),
'menu_newstpl'=>input('menu_newstpl'),
'menu_address'=>input('menu_address'),
'menu_open'=>input('menu_open',0),
'top'=>input('top',1),
'listorder'=>input('listorder'),
'menu_seo_title'=>input('menu_seo_title'),
'menu_seo_key'=>input('menu_seo_key'),
'menu_seo_des'=>input('menu_seo_des'),
'menu_target'=>input('menu_target'),
'menu_content'=>htmlspecialchars_decode(input('menu_content')),
'menu_img'=>$img_url,
);
$rst=MenuModel::create($data);
$menu_model=new MenuModel;
if($rst!==false){
$arr=MenuModel::get(input('parentid'));
if(input('menu_type')==3 && $arr['menu_type']==3){
$menu_model->where(array('id'=>input('parentid')))->setField('menu_type',1);
}
cache('site_nav_main',null);
$this->success('菜单添加成功',url('admin/Menu/news_menu_list',array('menu_l'=>$lang_list)));
}else{
$this->error('菜单添加失败',url('admin/Menu/news_menu_list',array('menu_l'=>$lang_list)));
}
}
}
/**
* 前台菜单编辑显示
*/
public function news_menu_edit()
{
$menu=MenuModel::get(input('id'));
$options_model=new OptionsModel;
$tpls=$options_model->tpls($this->lang);
$model='';//Db::name('model')->select();
$this->assign('model',$model);
$where=array();
$where['menu_l']=array('eq',$menu['menu_l']);
if(!config('lang_switch_on')){
$where['menu_l']= $this->lang;
}
$menu_text=Db::name('menu')->where($where)->order('menu_l Desc,listorder')->select();
$menu_text = menu_left($menu_text,'id','parentid');
$this->assign('menu_text',$menu_text);
$this->assign('menu',$menu);
$this->assign('tpls',$tpls);
return $this->fetch();
}
/**
* 前台菜单编辑操作
*/
public function news_menu_runedit()
{
$lang_list=input('lang_list');
if(empty($lang_list)) $lang_list=input('menu_l',$this->lang);
if (!request()->isAjax()){
$this->error('提交方式不正确',url('admin/Menu/news_menu_list',array('menu_l'=>$lang_list)));
}else{
$checkpic=input('checkpic');
$oldcheckpic=input('oldcheckpic');
$img_url='';
if ($checkpic!=$oldcheckpic){
$file = request()->file('file0');
if($file){
if(config('storage.storage_open')){
//七牛
$upload = \Qiniu::instance();
$info = $upload->upload();
$error = $upload->getError();
if ($info) {
$img_url= config('storage.domain').$info[0]['key'];
}else{
$this->error($error,url('admin/Menu/news_menu_list',array('menu_l'=>$lang_list)));//否则就是上传错误,显示错误原因
}
}else{
$validate=config('upload_validate');
$info = $file->validate($validate)->rule('uniqid')->move(ROOT_PATH . config('upload_path') . DS . date('Y-m-d'));
if($info) {
$img_url=config('upload_path'). '/' . date('Y-m-d') . '/' . $info->getFilename();
//写入数据库
$data['uptime']=time();
$data['filesize']=$info->getSize();
$data['path']=$img_url;
Db::name('plug_files')->insert($data);
}else{
$this->error($file->getError(),url('admin/Menu/news_menu_list',array('menu_l'=>$lang_list)));
}
}
}
}
//处理语言
$parentid=input('parentid',0,'intval');
if($parentid){
$menu_l=Db::name('menu')->where('id',$parentid)->value('menu_l');
}else{
$menu_l=input('menu_l',$this->lang);
}
$data=array(
'id'=>input('id'),
'menu_name'=>input('menu_name'),
'menu_enname'=>input('menu_enname'),
'menu_type'=>input('menu_type'),
'menu_modelid'=>input('menu_modelid',0,'intval'),
'parentid'=>$parentid,
'menu_l'=>$menu_l,
'menu_listtpl'=>input('menu_listtpl'),
'menu_newstpl'=>input('menu_newstpl'),
'menu_address'=>input('menu_address'),
'menu_open'=>input('menu_open',0),
'top'=>input('top',1),
'listorder'=>input('listorder'),
'menu_seo_title'=>input('menu_seo_title'),
'menu_seo_key'=>input('menu_seo_key'),
'menu_seo_des'=>input('menu_seo_des'),
'menu_target'=>input('menu_target'),
'menu_content'=>htmlspecialchars_decode(input('menu_content')),
);
if ($checkpic!=$oldcheckpic){
$data['menu_img']=$img_url;
}
$rst=MenuModel::update($data);
if($rst!==false){
cache('site_nav_main',null);
cache('site_nav',null);
$this->success('菜单修改成功',url('admin/Menu/news_menu_list',array('menu_l'=>$lang_list)));
}else{
$this->error('菜单修改失败',url('admin/Menu/news_menu_list',array('menu_l'=>$lang_list)));
}
}
}
/**
* 前台菜单删除
*/
public function news_menu_del()
{
$lang_list=input('lang_list');
$id=input('id');
$arr=MenuModel::get($id);
$model_id=$arr['menu_modelid'];
$parentid=$arr['parentid'];
$parent_arr=MenuModel::get($parentid);
$ids=get_menu_byid($id,1,2);//返回含自身id及子菜单id数组
$rst=MenuModel::destroy($ids);
$menu_model=new MenuModel;
//处理父级
if($rst!==false){
//判断其父菜单是否还存在子菜单,如无子菜单,且父菜单类型为1
if($parentid && $parent_arr['menu_type']==1){
$child=$menu_model->where(array('parentid'=>$parentid))->select();
if(empty($child)){
$menu_model->where(array('id'=>$parentid))->update(['menu_type'=>3,'menu_modelid'=>$model_id]);
}
}
cache('site_nav_main',null);
$this->success('菜单删除成功',url('admin/Menu/news_menu_list',['menu_l'=>$lang_list]));
}else{
$this -> error("菜单删除失败!",url('admin/Menu/news_menu_list',['menu_l'=>$lang_list]));
}
}
/**
* 前台菜单排序
*/
public function news_menu_order(){
$lang_list=input('lang_list');
if (!request()->isAjax()){
$this->error('提交方式不正确',url('admin/Menu/news_menu_list',['menu_l'=>$lang_list]));
}else{
$list=[];
foreach (input('post.') as $id => $sort){
$list[]=['id'=>$id,'listorder'=>$sort];
}
$menu_model=new MenuModel;
$menu_model->saveAll($list);
cache('site_nav_main',null);
$this->success('排序更新成功',url('admin/Menu/news_menu_list',['menu_l'=>$lang_list]));
}
}
/**
* 前台菜单开启/禁止
*/
public function news_menu_state()
{
$id=input('x');
$menu_model=new MenuModel;
$status=$menu_model->where(array('id'=>$id))->value('menu_open');//判断当前状态情况
if($status==1){
$statedata = array('menu_open'=>0);
$menu_model->where(array('id'=>$id))->setField($statedata);
cache('site_nav_main',null);
$this->success('状态禁止');
}else{
$statedata = array('menu_open'=>1);
$menu_model->where(array('id'=>$id))->setField($statedata);
cache('site_nav_main',null);
$this->success('状态开启');
}
}
}