| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060 | <?phpnamespace App\Admin\Controllers\Content;use App\Admin\Extensions\Field\Template;use App\Admin\Extensions\Form\ValueForm;use App\Http\Controllers\Controller;use App\Models\Ad;use App\Models\AdCategory;use App\Models\Subsite;use App\Models\SubsiteAd;use Encore\Admin\Controllers\HasResourceActions;use Encore\Admin\Facades\Admin;use Encore\Admin\Form;use Encore\Admin\Grid;use Encore\Admin\Grid\Filter;use Encore\Admin\Layout\Content;use Encore\Admin\Show;use Illuminate\Http\Request;use Illuminate\Support\Facades\Cache;//use Encore\Admin\Grid;class AdController extends Controller{    use HasResourceActions;    /**     * Index interface.     *     * @param Content $content     * @return Content     */    public function index(Content $content)    {        return $content            ->header('广告列表')            ->description(' ')            ->body(view('admin.content.ad_list')->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)    {        $info = Ad::find($id);        $form= new ValueForm();        $ad_info = Ad::findOrFail($id);        //$form->action('/admin/content/ads/update');        $form->action(route('admin.ad.update'));        $form->attribute('enctype', 'multipart/form-data');        $form->disablePjax();        $form->text('title', '广告标题')->default($ad_info->title)->help('(区分不同广告条目,并不在广告中显示)')->setWidth(4)->setMustMark();        $display_option = [            'on'  => ['value' => 1, 'text' => '是', 'color' => 'success'],            'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'],        ];        $form->switch('is_display', '显示状态')->states($display_option)->default($ad_info->is_display)->setMustMark();        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() && $info->subsite_id==0) {            $relations = SubsiteAd::where(array('ad_id'=>$id))->get()->pluck('subsite_id')->toArray();            $form->multipleSelect('relate_subsites', '同步分站')->options($subsites)->default($relations);        } else {            $form->hidden('relate_subsites');        }        $form->ignore(['relate_subsites']);        $cate_option = AdCategory::all()->pluck('category_name', 'id');        $form->select('category_id', '广告位')->options($cate_option)->default($ad_info->category_id)->setWidth(4)->attribute(['id' => 'sub_category'])->setMustMark();        $form->number('list_order', '显示顺序')->default($ad_info->list_order)->min(0)->help('(数字越大越靠前)')->setMustMark();        $form->date('started_at', '开始日期')            ->format('YYYY-MM-DD')            ->default($ad_info->started_at)            ->rules('required|date', array('required'=>'开始日期不能为空。', 'date'=>'开始日期格式不正确。'))            ->help('(设置广告起始日期,格式yyyy-mm-dd,留空为不限制起始日期)');        $form->date('ended_at', '结束日期')            ->format('YYYY-MM-DD')            ->default($ad_info->ended_at)            ->rules('required|date', array('required'=>'结束日期不能为空。', 'date'=>'结束日期格式不正确。'))            ->help('(设置广告结束日期,格式yyyy-mm-dd,留空为不限制结束日期)');        $form->textarea('note', '备注')->default($ad_info->note);        $form->html("<div id='change_field'></div>")->plain();        $form->hidden('alias')->value($ad_info->alias)->attribute('id', 'alias');        $form->hidden('theme')->value($ad_info->theme);        $form->hidden('type_id')->value($ad_info->type_id)->attribute('id', 'type_id');        $form->hidden('id')->value($ad_info->id);        $template=new Template();        $template->setTemplatesId("text_div");        if ($ad_info->type_id == '1') {            $template->text('content', '文字内容')->default($ad_info->content)->help('(文字广告的显示内容)')->setMustMark();            $template->url('url', '文字链接')->default($ad_info->url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');            $template->color('text_color', '文字颜色')->default($ad_info->text_color)->setMustMark();        } else {            $template->text('content', '文字内容')->help('(文字广告的显示内容)')->setMustMark();            $template->url('url', '文字链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');            $template->color('text_color', '文字颜色')->setMustMark();        }        $template->setTemplatesId("image_div");        if ($ad_info->type_id == '2') {            $img_file = null;            $img_url = null;            if (preg_match('/^http/', $ad_info->content)) {                $img_url = $ad_info->content;            } else {                $img_file = $ad_info->content;            }            $template->image('img_file', '本地上传')->uniqueName()->help('(允许格式为gif/jpg/bmp/png,文件大小1000KB)')->value($img_file)->setMustMark()->options(['layoutTemplates' => ['actionDelete'    => '']]);            $template->text('img_url', '或图片地址')->default($img_url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/img/baidu_logo.gif)');            $template->url('url', '图片链接')->default($ad_info->url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');            $template->text('explain', '图片说明文字')->default($ad_info->explain);            $template->number('uid', '会员UID')->default($ad_info->uid)->min(0)->help('(设置会员UID后,当鼠标移动到图片上将会显示相关的职位和企业信息)');        } else {            $template->image('img_file', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为gif/jpg/bmp/png,文件大小1000KB)')->setMustMark()->options(['layoutTemplates' => ['actionDelete'    => '']]);            $template->text('img_url', '或图片地址')->help('(请输入包含http://或https://的完整链接,如http://www.baidu.com/img/baidu_logo.gif)');            $template->url('url', '图片链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');            $template->text('explain', '图片说明文字');            $template->number('uid', '会员UID')->min(0)->help('(设置会员UID后,当鼠标移动到图片上将会显示相关的职位和企业信息)');        }        $template->setTemplatesId("code_div");        if ($ad_info->type_id == '3') {            $template->textarea('content', '代码')->default($ad_info->content)->rows(1)->help('(请直接输入需要展现的广告代码)')->setMustMark();        } else {            $template->textarea('content', '代码')->rows(1)->help('(请直接输入需要展现的广告代码)')->setMustMark();        }        $template->setTemplatesId("flash_div");        if ($ad_info->type_id == '4') {            $flash_file = null;            $flash_url = null;            if (preg_match('/^images\//', $ad_info->content)) {                $flash_file = $ad_info->content;            } else {                $flash_url = $ad_info->content;            }            $template->image('content', '本地上传')->default($flash_file)->uniqueName()->setWidth(3)->help('(允许格式为:swf,文件大小:1000KB)')->setMustMark()->options(['layoutTemplates' => ['actionDelete'    => '']]);            $template->url('url', '或者Flash地址')->default($flash_url)->help('(请输入包含http://或https://的完整链接,如: http://www.baidu.com/123.swf)');        } else {            $template->file('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为:swf,文件大小:1000KB)')->setMustMark()->options(['layoutTemplates' => ['actionDelete'    => '']]);            $template->url('url', '或者Flash地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)');        }        $template->setTemplatesId("vedio_div");        if ($ad_info->type_id == '5') {            $vedio_file = null;            $vedio_url = null;            if (preg_match('/^images\//', $ad_info->content)) {                $vedio_file = $ad_info->content;            } else {                $vedio_url = $ad_info->content;            }            $template->file('content', '本地上传')->default($vedio_file)->uniqueName()->setWidth(3)->help('(允许格式为swf/flv/f4v,文件大小5000KB,大文件FTP上传)')->setMustMark()->options(['layoutTemplates' => ['actionDelete'    => '']]);            $template->url('url', '或者视频地址')->default($vedio_url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)');        } else {            $template->file('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为swf/flv/f4v,文件大小5000KB,大文件FTP上传)')->setMustMark()->options(['layoutTemplates' => ['actionDelete'    => '']]);            $template->url('url', '或者视频地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)');        }        $form->disableReset();        $data['custom_form']=$form->render();        $data['temp']=$template->render();        $data['ad_info'] = $ad_info;        return $content                ->header('广告')                ->description(' ')                ->body(view('admin.content.ad_edit')->with($data));    }    public function update(Request $request)    {        $ad=Ad::findOrFail($request->input('id'));        $rules = array(            'title'        => 'required|max:50',            'is_display'  => 'required',            'category_id' => 'required',            'list_order'  => 'required|max:10',            'note'         => 'max:80'        );        $message = array(            'title.required'       => '广告标题不能为空。',            'title.max'             => '广告标题长度不能超过50。',            'is_display.required'  => '请选择显示状态。',            'category_id.required' => '请选择广告位。',            'list_order.required'  => '显示顺序不能为空。',            'list_order.max'        => '显示顺序长度不能大于10。',            'note.max'                => '备注长度不能超过80。'        );        if ($request->input('started_at')) {            $rules['started_at'] = 'date';            $message['started_at.date'] = '开始日期格式不正确。';        }        if ($request->input('ended_at')) {            $rules['ended_at'] = 'date|after_or_equal:started_at';            $message['ended_at.date'] = '结束日期格式不正确。';            $message['ended_at.after_or_equal'] = '结束日期不能早于开始日期。';        }        $type_id = $request->input('type_id');        if ($type_id=='1') {            $rules['content'] = 'required';            $rules['text_color'] = 'required';            $message['content.required'] = '文字内容不能为空。';            $message['text_color.required'] = '文字颜色不能为空。';        } else if ($type_id=='2') {            $rules['img_file'] = 'mimes:gif,jpeg,bmp,png|max:1024';            $rules['explain']  = 'max:80';            $rules['uid']      = 'nullable|numeric';            $message['img_file.mimes']              = '本地上传格式不正确。';            $message['img_file.max']                = '本地上传文件大小不能超过1M。';            $message['explain.max']                  = '图片说明文字长度不能大于80。';            /*$message['uid.required']                 = 'UID不能为空。';*/            $message['uid.numeric']                  = 'UID只能填写数字。';        } else if ($type_id=='3') {            $rules['content'] = 'required';            $message['content.required'] = '代码不能为空。';        } else if ($type_id=='4') {            $rules['content'] = 'mimes:swf';            $message['content.mimes']              = '本地上传格式不正确。';        } else if ($type_id=='5') {            $rules['content'] = 'mimes:swf,flv,f4v';            $message['content.mimes']             = '本地上传格式不正确。';        }        $request->validate($rules, $message);        $time = date('Y-m-d H:i:s', time());        $is_display =$request->input('is_display')=='on'?1:0;        $started_at = $request->input('started_at')?strtotime($request->input('started_at')):0;        $ended_at = $request->input('ended_at')?strtotime($request->input('ended_at')):0;        $type_id = $request->input('type_id');        $theme = $request->input('theme')?$request->input('theme'):'default';        $note = $request->input('note')?$request->input('note'):'';        $ad->theme         = $theme;        $ad->alias         = $request->input('alias');        $ad->is_display   = $request->input('is_display')=='on'?1:0;        $ad->category_id  = $request->input('category_id');        $ad->type_id      = $type_id;        $ad->title        = $request->input('title');        $ad->note         = $request->input('note')?$request->input('note'):'';        $ad->list_order  = $request->input('list_order');        $ad->started_at  = $request->input('started_at')?strtotime($request->input('started_at')):0;        $ad->ended_at    = $request->input('ended_at')?strtotime($request->input('ended_at')):0;        $ad->updated_at    = $time;        if ($type_id=='1') {   //文字广告            $ad->content     = $request->input('content');            $ad->url          = $request->input('url')?$request->input('url'):'';            $ad->text_color  = $request->input('text_color')?$request->input('text_color'): '#000000';            $ad->uid          = 0;        } else if ($type_id=='2') {  //图片广告            $img_file = $request->input('img_file');            $img_url = $request->input('img_url');            $url = $request->input('url')?$request->input('url'):'';            $explain = $request->input('explain');            $uid = $request->input('uid');            $up_file = null;            if ($request->hasFile('img_file')) {                $file = 'img_file';                $up_file=$request->$file->store(config('admin.upload.directory.image'), config('admin.upload.disk'));            }            $content = $up_file?$up_file:$img_url;            if ($content) {                $ad->content    = $content;            }            $ad->url         = $url;            $ad->text_color = '#000000';            $ad->uid         = $uid?$uid:0;            $ad->explain    = $explain;        } else if ($type_id=='3') {    //代码广告            $content = $request->input('content')?$request->input('content'):0;            if ($content) {                $ad->content    = $content;            }            $ad->uid         = 0;            $ad->text_color = '#000000';            $ad->url         = '';        } else if ($type_id=='4' || $type_id=='5') {  //flash广告 、视频广告            $url = $request->input('url')?$request->input('url'):'';            $up_file = null;            if ($request->hasFile('content')) {                $file = 'content';                $up_file=$request->$file->store(config('admin.upload.directory.file'), config('admin.upload.disk'));            }            $content = $up_file?$up_file:$url;            if ($content) {                $ad->content    = $content;            }            $ad->url         = '';            $ad->uid         = 0;            $ad->text_color = '#000000';        }        $set_data = array();        $subsites = $request->input('relate_subsites');        if (empty($subsites)) {            $subsites = [];        }        $subsites = array_merge(array($ad->subsite_id), $subsites);        foreach ($subsites as $k => $v) {            if ($v !== null) {                $set_data[] = array(                    'ad_id' => $ad->id,                    'subsite_id'=> $v                );            }        }        if ($ad->save()) {            if ($set_data) {                SubsiteAd::where('ad_id', $ad->id)->delete();                SubsiteAd::insert($set_data);            }            admin_toastr(trans('admin.save_succeeded'), 'success');            return redirect(admin_base_path().'/content/ad/index');        } else {            throw new \Exception(trans('admin.save_failed'));        }    }    public function updates(Request $request)    {        $rules = array(            'title'        => 'required|max:50',            'is_display'  => 'required',            'category_id' => 'required',            'list_order'  => 'required|max:10',            'note'         => 'max:80'        );        $message = array(            'title.required'       => '广告标题不能为空。',            'title.max'             => '广告标题长度不能超过50。',            'is_display.required'  => '请选择显示状态。',            'category_id.required' => '请选择广告位。',            'list_order.required'  => '显示顺序不能为空。',            'list_order.max'        => '显示顺序长度不能大于10。',            'note.max'                => '备注长度不能超过80。'        );        if ($request->input('started_at')) {            $rules['started_at'] = 'date';            $message['started_at.date'] = '开始日期格式不正确。';        }        if ($request->input('ended_at')) {            $rules['ended_at'] = 'date|after_or_equal:started_at';            $message['ended_at.date'] = '结束日期格式不正确。';            $message['ended_at.after_or_equal'] = '结束日期不能早于开始日期。';        }        $type_id = $request->input('type_id');        if ($type_id=='1') {            $rules['content'] = 'required';            $rules['text_color'] = 'required';            $message['content.required'] = '文字内容不能为空。';            $message['text_color.required'] = '文字颜色不能为空。';        } else if ($type_id=='2') {            $rules['img_file'] = 'required_without:img_url|mimes:gif,jpeg,bmp,png';            $rules['img_url']  = 'required_without:img_file';            $rules['explain']  = 'max:80';            $rules['uid']      = 'required|numeric';            $message['img_file.required_without'] = '本地上传或者图片地址填写一项。';            $message['img_file.mimes']              = '本地上传格式不正确。';            $message['img_url.required_without']   = '本地上传或者图片地址填写一项。';            $message['explain.max']                  = '图片说明文字长度不能大于80。';            $message['uid.required']                 = 'UID不能为空。';            $message['uid.numeric']                  = 'UID只能填写数字。';        } else if ($type_id=='3') {            $rules['content'] = 'required';            $message['content.required'] = '代码不能为空。';        } else if ($type_id=='4') {            $rules['content'] = 'required_without:url|mimes:swf';            $rules['url']      = 'required_without:content';            $message['content.required_without'] = '本地上传或者Flash地址填写一项。';            $message['content.mimes']              = '本地上传格式不正确。';            $message['url.required_without']      = '本地上传或者Flash地址填写一项。';        } else if ($type_id=='5') {            $rules['content'] = 'required_without:url|mimes:swf,flv,f4v';            $rules['url']     = 'required_without:content';            $message['content.required_without'] = '本地上传或者填写视频地址填写一项。';            $message['content.mimes']             = '本地上传格式不正确。';            $message['url.required_without']     = '本地上传或者填写视频地址填写一项。';        }        $request->validate($rules, $message);        $is_display =$request->input('is_display')=='on'?1:0;        $time = date('Y-m-d H:i:s', time());        $started_at = $request->input('started_at')?strtotime($request->input('started_at')):0;        $ended_at = $request->input('ended_at')?strtotime($request->input('ended_at')):0;        $type_id = $request->input('type_id');        $theme = $request->input('theme')?$request->input('theme'):'default';        $note = $request->input('note')?$request->input('note'):'';        $form_data = array(            'theme'        => $theme,            'alias'        => $request->input('alias'),            'is_display'  => $is_display,            'category_id' => $request->input('category_id'),            'type_id'      => $type_id,            'title'        => $request->input('title'),            'note'         => $note,            'list_order'  => $request->input('list_order'),            'started_at'  => $started_at,            'ended_at'    => $ended_at,            'updated_at'  => $time        );        if ($type_id=='1') {            //文字广告            $form_data['content']    = $request->input('content');            $form_data['url']         = $request->input('url');            $form_data['text_color'] = $request->input('text_color')?$request->input('text_color'): '#000000';            $form_data['uid']         = 0;        } else if ($type_id=='2') {            //图片广告            $img_file = $request->input('img_file');            $img_url = $request->input('img_url');            $url = $request->input('url');            $explain = $request->input('explain');            $uid = $request->input('uid');            $up_file = null;            if ($request->hasFile('img_file')) {                $file = 'img_file';                $up_file=$request->$file->store(config('admin.upload.directory.image'), config('admin.upload.disk'));            }            $content = $up_file?$up_file:$img_url;            $form_data['content']    = $content;            $form_data['url']         = $url;            $form_data['text_color'] = '#000000';            $form_data['uid']         = $uid;            $form_data['explain']     = $explain;        } else if ($type_id=='3') {            //代码广告            $content = $request->input('content')?$request->input('content'):0;            $form_data['content']    = $content;            $form_data['uid']         = 0;            $form_data['text_color'] = '#000000';            $form_data['url']         = '';        } else if ($type_id=='4' || $type_id=='5') {            //flash广告 、视频广告            $url = $request->input('url')?$request->input('url'):'';            $up_file = null;            if ($request->hasFile('content')) {                $file = 'content';                $up_file=$request->$file->store(config('admin.upload.directory.file'), config('admin.upload.disk'));            }            $content = $up_file?$up_file:$url;            $form_data['content']    = $content;            $form_data['url']         = '';            $form_data['uid']         = 0;            $form_data['text_color'] = '#000000';        }        if (Ad::where(array('id'=>$request->input('id')))->update($form_data)) {            admin_toastr(trans('admin.save_succeeded'), 'success');            return redirect(admin_base_path().'/content/ad/index');        } else {            throw new \Exception(trans('admin.save_failed'));        }    }    /**     * Create interface.     *     * @param Content $content     * @return Content     */    public function create(Content $content)    {        $form= new ValueForm();        $form->action(route('ad.index'));        $form->text('title', '广告标题')->help('(区分不同广告条目,并不在广告中显示)')->setWidth(4)->setMustMark();        $display_option = [            'on'  => ['value' => 1, 'text' => '是', 'color' => 'success'],            'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'],        ];        $form->switch('is_display', '显示状态')->states($display_option)->default('1')->setMustMark();        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());        $cate_option = AdCategory::all()->pluck('category_name', 'id');        $form->select('category_id', '广告位')->options($cate_option)             ->rules('required', array('required'=>'请选择广告位。'))             ->setWidth(4)->attribute(['id' => 'sub_category'])->setMustMark();        $form->number('list_order', '显示顺序')->min(0)->default(0)->help('(数字越大越靠前)')->setMustMark();        $form->date('started_at', '开始日期')            ->format('YYYY-MM-DD')            ->rules('required|date', array('required'=>'开始日期不能为空。', 'date'=>'开始日期格式不正确。'))            ->help('(设置广告起始日期,格式yyyy-mm-dd,留空为不限制起始日期)');        $form->date('ended_at', '结束日期')            ->format('YYYY-MM-DD')            ->rules('required|date', array('required'=>'结束日期不能为空。', 'date'=>'结束日期格式不正确。'))            ->help('(设置广告结束日期,格式yyyy-mm-dd,留空为不限制结束日期)');        $form->textarea('note', '备注');        $form->html("<div id='change_field'></div>")->plain();        $form->hidden('alias')->attribute('id', 'alias');        $form->hidden('theme')->value('default');        $form->hidden('type_id')->attribute('id', 'type_id');        $template=new Template();        $template->setTemplatesId("text_div");        $template->text('content', '文字内容')->help('(文字广告的显示内容)')->setMustMark();        $template->url('url', '文字链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');        $template->color('text_color', '文字颜色')->default('#000000')->setMustMark();        $template->setTemplatesId("image_div");        $template->image('img_file', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为gif/jpg/bmp/png,文件大小1000KB)')->setMustMark();        $template->text('img_url', '或图片地址')->help('(如/images/logo.gif 或 http://www.baidu.com/img/baidu_logo.gif)');        $template->url('url', '图片链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');        $template->text('explain', '图片说明文字');        $template->number('uid', '会员UID')->min(0)->default(0)                 ->help('(设置会员UID后,当鼠标移动到图片上将会显示相关的职位和企业信息)')                 ->attribute(array('maxlength'=>'10','onkeyup'=>'if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\D/g,\'\');','onbeforepaste'=>"clipboardData.setData('text',clipboardData.getData('text').replace(/\D/g,''))"));        $template->setTemplatesId("code_div");        $template->textarea('content', '代码')->rows(1)->help('(请直接输入需要展现的广告代码)')->setMustMark();        $template->setTemplatesId("flash_div");        $template->image('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为:swf,文件大小:1000KB)')->setMustMark();        $template->url('url', '或者Flash地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)');        $template->setTemplatesId("vedio_div");        $template->image('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为swf/flv/f4v,文件大小5000KB,大文件FTP上传)')->setMustMark();        $template->url('url', '或者视频地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)');        $form->disableReset();        $data['custom_form']=$form->render();        $data['temp']=$template->render();        return $content            ->header('广告')            ->description(' ')            ->body(view('admin.content.ad')->with($data));    }    public function changeCategory(Request $request)    {        $cate_option = AdCategory::all()->toArray();        return response()->json(array('data'=>$cate_option,'status'=>'1'));    }    public function store(Request $request)    {        $rules = array(            'title'        => 'required|max:50',            'is_display'  => 'required',            'category_id' => 'required',            'list_order'  => 'required|max:10',            'note'         => 'max:80'        );        $message = array(            'title.required'       => '广告标题不能为空。',            'title.max'             => '广告标题长度不能超过50。',            'is_display.required'  => '请选择显示状态。',            'category_id.required' => '请选择广告位。',            'list_order.required'  => '显示顺序不能为空。',            'list_order.max'        => '显示顺序长度不能大于10。',            'note.max'                => '备注长度不能超过80。'        );        if ($request->input('started_at')) {            $rules['started_at'] = 'date';            $message['started_at.date'] = '开始日期格式不正确。';        }        if ($request->input('ended_at')) {            $rules['ended_at'] = 'date|after_or_equal:started_at';            $message['ended_at.date'] = '结束日期格式不正确。';            $message['ended_at.after_or_equal'] = '结束日期不能早于开始日期。';        }        $type_id = $request->input('type_id');        if ($type_id=='1') {            $rules['content'] = 'required';            $rules['text_color'] = 'required';            $message['content.required'] = '文字内容不能为空。';            $message['text_color.required'] = '文字颜色不能为空。';        } else if ($type_id=='2') {            $rules['img_file'] = 'required_without:img_url|mimes:gif,jpeg,bmp,png|max:1024';            $rules['img_url']  = 'required_without:img_file';            $rules['explain']  = 'max:80';            $rules['uid']      = 'nullable|numeric';            $message['img_file.required_without'] = '本地上传或者图片地址填写一项。';            $message['img_file.mimes']              = '本地上传格式不正确。';            $message['img_file.max']              = '本地上传文件大小不能超过1M。';            $message['img_url.required_without']   = '本地上传或者图片地址填写一项。';            $message['explain.max']                  = '图片说明文字长度不能大于80。';            //$message['uid.required']                 = 'UID不能为空。';            $message['uid.numeric']                  = 'UID只能填写数字。';        } else if ($type_id=='3') {            $rules['content'] = 'required';            $message['content.required'] = '代码不能为空。';        } else if ($type_id=='4') {            $rules['content'] = 'required_without:url|mimes:swf';            $rules['url']      = 'required_without:content';            $message['content.required_without'] = '本地上传或者Flash地址填写一项。';            $message['content.mimes']              = '本地上传格式不正确。';            $message['url.required_without']      = '本地上传或者Flash地址填写一项。';        } else if ($type_id=='5') {            $rules['content'] = 'required_without:url|mimes:swf,flv,f4v';            $rules['url']     = 'required_without:content';            $message['content.required_without'] = '本地上传或者填写视频地址填写一项。';            $message['content.mimes']             = '本地上传格式不正确。';            $message['url.required_without']     = '本地上传或者填写视频地址填写一项。';        }        $request->validate($rules, $message);        $is_display = $request->input('is_display')=='on'?1:0;        $time = date('Y-m-d H:i:s', time());        $started_at = $request->input('started_at')?strtotime($request->input('started_at')):0;        $ended_at = $request->input('ended_at')?strtotime($request->input('ended_at')):0;        $subsite_id = $request->input('subsite_id');        $theme = $request->input('theme')?$request->input('theme'):'default';        $note = $request->input('note')?$request->input('note'):'';        $form_data = array(            'theme'        => $theme,            'alias'        => $request->input('alias'),            'is_display'  => $is_display,            'category_id' => $request->input('category_id'),            'type_id'      => $type_id,            'title'        => $request->input('title'),            'note'         => $note,            'list_order'  => $request->input('list_order'),            'started_at'  => $started_at,            'ended_at'    => $ended_at,            'subsite_id'  => $subsite_id,            'created_at'  => $time,            'updated_at'  => $time        );        if ($type_id=='1') {            //文字广告            $form_data['content']    = $request->input('content');            $form_data['url']         = $request->input('url')?$request->input('url'):'';            $form_data['text_color'] = $request->input('text_color')?$request->input('text_color'): '#000000';            $form_data['uid']         = 0;        } else if ($type_id=='2') {            //图片广告            $img_file = $request->input('img_file');            $img_url = $request->input('img_url');            $url = $request->input('url')?$request->input('url'):'';            $explain = $request->input('explain');            $uid = $request->input('uid', 0);            $up_file = null;            if ($request->hasFile('img_file')) {                $file = 'img_file';                $up_file=$request->$file->store(config('admin.upload.directory.image'), config('admin.upload.disk'));            }            $content = $up_file?$up_file:$img_url;            $form_data['content']    = $content;            $form_data['url']         = $url;            $form_data['text_color'] = '#000000';            $form_data['uid']         = $uid?$uid:0;            $form_data['explain']     = $explain;        } else if ($type_id=='3') {            //代码广告            $content = $request->input('content')?$request->input('content'):0;            $form_data['content']    = $content;            $form_data['uid']         = 0;            $form_data['text_color'] = '#000000';            $form_data['url']         = '';        } else if ($type_id=='4' || $type_id=='5') {            //flash广告 、视频广告            $url = $request->input('url')?$request->input('url'):'';            $up_file = null;            if ($request->hasFile('content')) {                $file = 'content';                $up_file=$request->$file->store(config('admin.upload.directory.file'), config('admin.upload.disk'));            }            $content = $up_file?$up_file:$url;            $form_data['content']    = $content;            $form_data['url']         = '';            $form_data['uid']         = 0;            $form_data['text_color'] = '#000000';        }        $subsites = $request->input('relate_subsites');        if(empty($subsites)){            $subsites = [];        }        if ($ad = Ad::create($form_data)) {            $set_data = array();            $set_data[] = array(                'ad_id'      => $ad->id,                'subsite_id' => get_subsite_id()            );            if ($subsites) {                foreach ($subsites as $k => $v) {                    if ($v) {                        $set_data[] = array(                            'ad_id'      => $ad->id,                            'subsite_id' => $v                        );                    }                }            }            if ($set_data) {                SubsiteAd::insert($set_data);            }            admin_toastr(trans('admin.save_succeeded'), 'success');            return redirect(admin_base_path().'/content/ad/index');        } else {            throw new \Exception(trans('admin.save_failed'));        }    }    /**     * Make a grid builder.     *     * @return Grid     */    protected function grid()    {        $grid = new Grid(new Ad);        $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->title('广告标题')->display(function () {            $logo_html = '';            if ($this->type_id == '2') {                //判断图片中是否包含http                if (preg_match('/^http/', $this->content)) {                    $logo_html = '<span class="vtip" title="<img src=\''.$this->content.'\'  height=120>">                            <img class="avatar small" src="'.$this->content.'" align="absmiddle" style="width: 22px;height: 22px;">                        </span>';                } else {                    $logo_html = '<span class="vtip" title="<img src=\''.upload_asset($this->content).'\'  height=120>">                            <img class="avatar small" src="'.upload_asset($this->content).'" align="absmiddle" style="width: 22px;height: 22px;">                        </span>';                }            }            return $logo_html.$this->title;        })->width(250);        $grid->show_category()->category_name('所属广告位')->width(200);        $grid->type_id('广告类型')->display(function () {            if ($this->type_id == '1') {                return '文字';            } else if ($this->type_id == '2') {                return '图片';            } else if ($this->type_id == '3') {                return '代码';            } else if ($this->type_id == '4') {                return 'Flash';            } else if ($this->type_id == '5') {                return '视频';            }        });        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->started_at('开始日期')->display(function () {            if (!$this->started_at) {                return date('Y-m-d', strtotime($this->created_at));            } else {                return $this->started_at;            }        });        $grid->ended_at('到期日期')->display(function () {            if ($this->ended_at>0 && strtotime($this->ended_at) <= strtotime(date('Y-m-d'))) {                return '<span style="color:#FF6600">已经到期</span>';            } else {                return $this->ended_at?$this->ended_at:'无限制';            }        });        $grid->is_display('状态')->display(function () {            return $this->is_display?'正常':'暂停';        });        $grid->list_order('排序');        //新增按钮        if (Admin::user()->can('content_ad_list_create')) {            $grid->disableCreateButton(false);        }        //批量删除        if (Admin::user()->can('content_ad_list_delete')) {            $grid->tools(function ($tools) {                $tools->batch(function ($batch) {                    $batch->disableDelete(false);                });            });        } else {            $grid->disableRowSelector();        }        $grid->actions(function ($actions) {            if (Admin::user()->can('content_ad_list_edit')) {                if ($actions->row['subsite_id']== get_subsite_id() || get_subsite_id()==0) {                    $actions->disableEdit(false);                }            }            if (Admin::user()->can('content_ad_list_delete')) {                if ($actions->row['subsite_id']== get_subsite_id() || get_subsite_id()==0) {                    $actions->disableDelete(false);                }            }        });        $grid->filter(function (Filter $filter) {            $filter->disableIdFilter();            $filter->column(2/3, function ($filter) {                $display_option = array(''=>'不限','1'=>'正常','0'=>'暂停');                $filter->equal('is_display', '显示状态')->radio($display_option);                $date1 = strtotime(date('Y-m-d', strtotime("+1 day")-1))-1;                $date3 = strtotime(date('Y-m-d', strtotime("+4 day")-1))-1;                $date7 = strtotime(date('Y-m-d', strtotime("+8 day")-1))-1;                $date_option = array(                    '' => '不限',                    $date1 => '已经到期',                    $date3 => '三天内',                    $date7 => '一周内'                );                $filter->where(function ($query) {                    $ended_at = "{$this->input}";                    $start = strtotime(date('Y-m-d', strtotime("+1 day")-1))-1;                    $start_time = 0;                    if ($ended_at > $start) {                        $start_time = strtotime(date('Y-m-d', time()))-1;                    }                    $query->whereRaw('ended_at > '.$start_time.' and ended_at < '."{$this->input}");                }, '到期时间', 'ended_at')->radio($date_option);                $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);                }                $cates = AdCategory::get(['id', 'category_name'])->toArray();                $pre_arr = array('id'=>'','category_name'=>'不限');                array_unshift($cates, $pre_arr);                $cates = collect($cates)->pluck('category_name', 'id');                $filter->equal('category_id', '广告位')->select($cates);                $filter->like('title', '广告标题');            });        });        return $grid;    }    public function getCategory(Request $request)    {        $subsite_id = $request->input('q');        $where = array();        if ($subsite_id === null) {            $where = array();        } else {            $where = array('subsite_id'=>$subsite_id);        }        $cates = AdCategory::where($where)->get(['id', 'category_name'])->toArray();        $pre_arr = array('id'=>'','category_name'=>'不限');        array_unshift($cates, $pre_arr);        return collect($cates);    }    /**     * Make a show builder.     *     * @param mixed $id     * @return Show     */    protected function detail($id)    {        $show = new Show(Ad::findOrFail($id));        $ad_info = Ad::findOrFail($id);        $show->id('ID');        $show->title('广告标题');        $show->is_display('显示状态')->as(function ($is_display) {            return $is_display?'正常':'暂停';        });        if(get_subsite_open()){            $show->subsite_id('所属分站')->as(function ($subsite_id) {                if ($subsite_id) {                    $Subsite = Subsite::findOrFail($subsite_id);                    return $Subsite->sitename;                }                return '总站';            });        }        $show->category_id('广告位')->as(function ($category_id) {            $cate_info = AdCategory::where(array('id'=>$category_id))->first();            if ($cate_info) {                return $cate_info->category_name;            } else {                return ' ';            }        });        $show->list_order('显示顺序');        $show->started_at('开始日期')->as(function ($started_at) {            return $started_at?$started_at:'无限制';        });        $show->ended_at('结束日期')->as(function ($ended_at) {            return $ended_at?$ended_at:'无限制';        });        $show->note('备注')->as(function ($note) {            return $note?$note:' ';        })->setEscape(false);        if ($ad_info->type_id=='1') {            $show->content('文字内容');            $show->url('文字链接')->as(function ($url) {                return $url?$url:' ';            })->setEscape(false);            $show->text_color('文字颜色')->as(function ($text_color) {                $html = '<i style="background-color: '.$text_color.';padding: 5px 15px;"></i>';                return $html;            })->setEscape(false);        } else if ($ad_info->type_id=='2') {            $show->content('图片')->image();            $show->url('图片链接')->as(function ($url) {                return $url?$url:' ';            })->setEscape(false);            $show->explain('图片说明文字')->as(function ($explain) {                return $explain?$explain:' ';            })->setEscape(false);            $show->uid('会员UID');        } else if ($ad_info->type_id=='3') {            $show->content('代码');        } else if ($ad_info->type_id=='4') {            $show->content('Flash地址')->image();        } else if ($ad_info->type_id=='5') {            $show->content('视频地址')->image();        }        $show->created_at('添加时间');        $show->updated_at('更新时间');        return $show;    }    /**     * Make a form builder.     *     * @return Form     */    protected function form()    {        $form = new Form(new Ad);        $form->text('title', '广告标题')->help('(区分不同广告条目,并不在广告中显示)');        $display_option = [            'on'  => ['value' => 1, 'text' => '是', 'color' => 'success'],            'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'],        ];        $form->switch('is_display', '显示状态')->states($display_option)->default('1');        $subsites = array_merge(array('0'=>'总站'), array( '1' => '定海', '2' => '普陀'));        $form->checkbox('subsite_id', '所属分站')->options($subsites)->default('0');        $cate_option = AdCategory::all()->pluck('category_name', 'id');        $form->select('category_id', '广告位')->options($cate_option)->setWidth(3);        $form->number('list_order', '显示顺序')->help('(数字越大越靠前)');        $form->date('started_at', '开始日期')             ->format('YYYY-MM-DD')             ->rules('required|date', array('required'=>'开始日期不能为空。', 'date'=>'开始日期格式不正确。'))             ->help('(设置广告起始日期,格式yyyy-mm-dd,留空为不限制起始日期)');        $form->date('ended_at', '结束日期')             ->format('YYYY-MM-DD')             ->rules('required|date', array('required'=>'结束日期不能为空。', 'date'=>'结束日期格式不正确。'))             ->help('(设置广告结束日期,格式yyyy-mm-dd,留空为不限制结束日期)');        $form->textarea('note', '备注');        return $form;    }    public function destroy($id)    {        $ids = array();        if ($id) {            $ids = explode(',', $id);        }        if (get_subsite_id() == 0) {            $filter_id = $id;        } else {            $seletctors = Ad::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);    }}
 |