header('友情链接') ->description(' ') ->body(view('admin.content.link')->with(['grid'=>$this->grid()])); } /** * Show interface. * * @param mixed $id * @param Content $content * @return Content */ public function show($id, Content $content) { return $content ->header('友情链接') ->description(' ') ->body($this->detail($id)); } /** * Edit interface. * * @param mixed $id * @param Content $content * @return Content */ public function edit($id, Content $content) { return $content ->header('友情链接') ->description(' ') ->body($this->editForm($id)->edit($id)); } /** * Create interface. * * @param Content $content * @return Content */ public function create(Content $content) { return $content ->header('友情链接') ->description(' ') ->body($this->form()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid(new Link); $grid->model()->when(get_subsite_id()>0, function ($query) { $query->where('subsite_id', get_subsite_id()); })->orderBy('list_order', 'desc')->orderBy('created_at', 'desc'); $grid->link_title('链接标题')->display(function () { $link_url = $this->link_url; $note = $this->note; $link_logo = $this->link_logo; $note_html = ''; if ($note) { $note_html = ''; } $logo_html = ''; if ($link_logo) { //判断是否是图片 if (preg_match('/^http/', $this->link_logo)) { $logo_html = ''; } else { $logo_html = ''; } } $html = ''.$this->link_title.''.' '.$note_html.$logo_html; return $html; })->width(200); $grid->link_url('链接地址')->display(function () { return ''.$this->link_url.''; })->width(300); $states = [ '1' => ['text' => '是'], '0' => ['text' => '否'], ]; $grid->is_display('是否显示')->switch($states); $grid->list_order('顺序'); $grid->show_category()->category_name('位置'); if(get_subsite_open()){ $grid->subsite_id('所属分站')->display(function () { $subsites = Cache::get('subsites_list'); if (array_has($subsites, $this->subsite_id)) { return $subsites[$this->subsite_id]['sitename']; } return ''; }); } $grid->created_at('添加时间'); //新增按钮 if (userAdmin::user()->can('content_link_list_create')) { $grid->disableCreateButton(false); } //批量删除 if (userAdmin::user()->can('content_link_list_delete')) { $grid->tools(function ($tools) { $tools->batch(function ($batch) { $batch->disableDelete(false); }); }); } else { $grid->disableRowSelector(); } $grid->actions(function ($actions) { if (userAdmin::user()->can('content_link_list_edit')) { if ($actions->row['subsite_id']== get_subsite_id() || get_subsite_id()==0) { $actions->disableEdit(false); } } if (userAdmin::user()->can('content_link_list_delete')) { if ($actions->row['subsite_id']== get_subsite_id() || get_subsite_id()==0) { $actions->disableDelete(false); } } }); $grid->filter(function (Filter $filter) { $filter->disableIdFilter(); $subsites = Subsite::where(array('effective'=>1))->orderBy('order', 'asc')->get()->pluck('sitename', 'id')->toArray(); if ($subsites) { $subsites = array('' => '不限', '0' => '总站') + $subsites; $filter->equal('subsite_id', '所属分站')->select($subsites); } $cate_option = LinkCategory::all()->pluck('category_name', 'id'); $filter->equal('type_id', '链接位置')->select($cate_option); $filter->like('link_title', '链接标题'); $filter->like('link_url', '链接地址'); }); return $grid; } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail($id) { $show = new Show(Link::findOrFail($id)); $show->id('ID'); $show->is_display('是否显示')->as(function ($is_display) { return $is_display?'是':'否'; }); $show->link_title('链接名称'); $show->link_url('链接地址'); $show->type_id('链接分类')->as(function ($type_id) { $cate_info = LinkCategory::where(array('id'=>$type_id))->first(); return $cate_info?$cate_info->category_name:' '; }); $show->list_order('显示顺序'); $show->link_logo('链接LOGO')->image(); if(get_subsite_open()){ $show->subsite_id('所属分站')->as(function ($subsite_id) { if ($subsite_id) { $Subsite = Subsite::findOrFail($subsite_id); return $Subsite->sitename; } return '总站'; }); } $show->note('备注信息'); $show->created_at('添加时间'); $show->updated_at('更新时间'); return $show; } /** * Make a form builder. * * @return Form */ protected function form() { $form = new ValidateForm(new Link); $display_option = [ 'on' => ['value' => 1, 'text' => '是', 'color' => 'success'], 'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'], ]; $form->switch('is_display', '是否显示')->states($display_option)->default('1')->setMustMark(); $form->text('link_title', '链接名称')->rules('required|max:50', array('required'=>'链接名称不能为空。','max'=>'链接名称长度不能大于50。'))->setWidth(4)->setMustMark(); $form->url('link_url', '链接地址')->rules('required|max:250', array('required'=>'链接地址不能为空。','max'=>'链接地址长度不能大于250。'))->setWidth(4)->help('(请输入包含http://或https://的完整链接)')->setMustMark(); $cate_option = LinkCategory::all()->pluck('category_name', 'id'); $form->select('type_id', '链接分类')->options($cate_option)->rules('required', array('required'=>'请选择链接分类。'))->setWidth(4)->setMustMark(); $form->number('list_order', '显示顺序')->min(0)->default(0)->rules('required', array('required'=>'显示顺序不能为空。'))->attribute('maxlength', '10')->help('(数字越大越靠前)')->setMustMark(); $form->image('link_logo', '链接LOGO')->uniqueName()->setWidth(4) ->rules('mimes:gif,jpeg,bmp,png', array('mimes'=>'链接LOGO文件格式不正确。')) ->help('(允许格式为gif/jpg/bmp/png)'); $form->url('logo_url', '或LOGO地址')->help('(请输入包含http://或https://的完整链接,上传链接LOGO或者填写LOGO地址满足一项即可)'); /*if (get_subsite_id()==0) { $subsites = Subsite::where(array('effective'=>1))->orderBy('order', 'asc')->get()->pluck('sitename', 'id'); if ($subsites) { $form->multipleSelect('relate_subsites', '同步分站')->options($subsites); } } else { $form->hidden('relate_subsites'); }*/ if (get_subsite_id()==0) { $subsites = Subsite::where(array('effective'=>1))->orderBy('order', 'asc')->get()->pluck('sitename', 'id'); } else { $subsites = Subsite::where(array(array('effective','=',1),array('id','<>', get_subsite_id())))->orderBy('order', 'asc')->get()->pluck('sitename', 'id')->toArray(); $subsites['0']= '总站'; $subsites = collect($subsites); } if ($subsites->isNotEmpty() && get_subsite_id()==0) { $form->multipleSelect('relate_subsites', '同步分站')->options($subsites); } else { $form->hidden('relate_subsites'); } $form->ignore(['relate_subsites']); $form->hidden('subsite_id')->value(get_subsite_id()); //$form->ignore(['up_file']); $form->ignore(['logo_url']); $form->textarea('note', '备注信息')->rows(3)->help('(备注不在前台显示,只作为管理员的备忘标记)'); $form->saved(function (Form $form) { //如果没有上传logo,判断是否 $logo_url = \Illuminate\Support\Facades\Request::input('logo_url'); if (!$form->model()->link_logo && $logo_url) { $form->model()->link_logo = $logo_url; $form->model()->save(); } $subsites = \Illuminate\Support\Facades\Request::input('relate_subsites'); if (empty($subsites)) { $subsites = []; } $subsites = array_merge(array(get_subsite_id()), $subsites); /*if (get_subsite_id() == 0) { $subsites = array_merge(array(get_subsite_id()), $subsites); } else { $subsites = array(get_subsite_id()); }*/ $set_data = array(); foreach ($subsites as $k => $v) { if ($v !== null) { $set_data[] = array( 'link_id' => $form->model()->id, 'subsite_id'=> $v ); } } SubsiteLink::insert($set_data); }); $form->footer(function ($footer) { $footer->disableViewCheck(); $footer->disableEditingCheck(); $footer->disableCreatingCheck(); $footer->disableReset(); }); return $form; } protected function editForm($id) { $form = new ValidateForm(new Link); //获取友情链接详情 $info = Link::find($id); $display_option = [ 'on' => ['value' => 1, 'text' => '是', 'color' => 'success'], 'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'], ]; $form->switch('is_display', '是否显示')->states($display_option)->setMustMark(); $form->text('link_title', '链接名称')->rules('required|max:50', array('required'=>'链接名称不能为空。','max'=>'链接名称长度不能大于50。'))->setWidth(4)->setMustMark(); $form->url('link_url', '链接地址')->rules('required|max:250', array('required'=>'链接地址不能为空。','max'=>'链接地址长度不能大于250。'))->setWidth(4)->help('(请输入包含http://或https://的完整链接)')->setMustMark(); $cate_option = LinkCategory::all()->pluck('category_name', 'id'); $form->select('type_id', '链接分类')->options($cate_option)->rules('required', array('required'=>'请选择链接分类。'))->setWidth(4)->setMustMark(); $form->number('list_order', '显示顺序')->min(0)->default(0)->rules('required', array('required'=>'显示顺序不能为空。'))->attribute('maxlength', '10')->help('(数字越大越靠前)')->setMustMark(); $form->image('link_logo', '链接LOGO')->uniqueName()->setWidth(4)->rules('mimes:gif,jpeg,bmp,png', array('mimes'=>'链接LOGO文件格式不正确。'))->help('(允许格式为gif/jpg/bmp/png)');; $form->url('logo_url', '或LOGO地址')->help('(请输入包含http://或https://的完整链接,上传链接LOGO或者填写LOGO地址满足一项即可)'); /*if (get_subsite_id()==0 && $info->subsite_id == get_subsite_id()) { $subsites = Subsite::where(array('effective'=>1))->orderBy('order', 'asc')->get()->pluck('sitename', 'id'); if ($subsites) { $relations = SubsiteLink::where(array('link_id'=>$id))->get()->pluck('subsite_id')->toArray(); $form->multipleSelect('relate_subsites', '同步分站')->options($subsites)->default($relations); } } else { $form->hidden('relate_subsites'); }*/ if ($info->subsite_id==0) { $subsites = Subsite::where(array('effective'=>1))->orderBy('order', 'asc')->get()->pluck('sitename', 'id'); } else { $subsites = Subsite::where(array(array('effective','=',1),array('id','<>', $info->subsite_id)))->orderBy('order', 'asc')->get()->pluck('sitename', 'id')->toArray(); $subsites['0']= '总站'; $subsites = collect($subsites); } if ($subsites->isNotEmpty() && get_subsite_id()==0) { $relations = SubsiteLink::where(array('link_id'=>$id))->get()->pluck('subsite_id')->toArray(); $form->multipleSelect('relate_subsites', '同步分站')->options($subsites)->default($relations); } else { $form->hidden('relate_subsites'); } $form->ignore(['relate_subsites']); $form->hidden('subsite_id')->value(get_subsite_id()); $form->ignore(['logo_url']); $form->textarea('note', '备注信息')->rows(3)->help('(备注不在前台显示,只作为管理员的备忘标记)'); $form->saved(function (Form $form) { $logo_url = \Illuminate\Support\Facades\Request::input('logo_url'); if (!$form->model()->link_logo && $logo_url) { $form->model()->link_logo = $logo_url; $form->model()->save(); } $subsites = \Illuminate\Support\Facades\Request::input('relate_subsites'); if (empty($subsites)) { $subsites = []; } $subsites = array_merge(array($form->model()->subsite_id), $subsites); SubsiteLink::where('link_id', $form->model()->id)->delete(); $set_data = array(); foreach ($subsites as $k => $v) { if ($v !== null) { $set_data[] = array( 'link_id' => $form->model()->id, 'subsite_id'=> $v ); } } SubsiteLink::insert($set_data); }); $form->footer(function ($footer) { $footer->disableViewCheck(); $footer->disableEditingCheck(); $footer->disableCreatingCheck(); $footer->disableReset(); }); $form->tools(function (Form\Tools $tools) { $tools->disableDelete(); $tools->disableView(); }); return $form; } public function update($id) { return $this->editForm($id)->update($id); } public function destroy($id) { $ids = array(); if ($id) { $ids = explode(',', $id); } if (get_subsite_id() == 0) { $filter_id = $id; } else { $seletctors = Link::where(array('subsite_id'=>get_subsite_id()))->whereIn('id', $ids)->get()->pluck('id')->toarray(); if ($seletctors) { $filter_id = implode(',', $seletctors); } else { $filter_id = ''; } } if ($filter_id) { if ($this->form()->destroy($filter_id)) { $data = [ 'status' => true, 'message' => trans('admin.delete_succeeded'), ]; } else { $data = [ 'status' => false, 'message' => trans('admin.delete_failed'), ]; } } else { $data = [ 'status' => false, 'message' => '不能删除其它分站数据!', ]; } return response()->json($data); } }