1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060 |
- <?php
- namespace 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);
- }
- }
|