Procházet zdrojové kódy

文章可以添加LOGO,修正帮助中心

admin před 7 roky
rodič
revize
35c66b2dcc

+ 56 - 9
app/Http/Controllers/AdminController.php

@@ -891,17 +891,42 @@ class AdminController extends Controller
     public function addArticle(Request $request)
     {
         if ($request->method() == 'POST') {
+            // LOGO
+            $logo = '';
+            if ($request->hasFile('logo')) {
+                $file = $request->file('logo');
+                $fileType = $file->getClientOriginalExtension();
+
+                // 验证文件合法性
+                if (!in_array($fileType, ['jpg', 'png', 'jpeg', 'bmp'])) {
+                    Session::flash('errorMsg', 'LOGO不合法');
+
+                    return Redirect::back()->withInput();
+                }
+
+                $logoName = date('YmdHis') . mt_rand(1000, 2000) . '.' . $fileType;
+                $move = $file->move(base_path() . '/public/upload/image/', $logoName);
+                $logo = $move ? '/upload/image/' . $logoName : '';
+            }
+
             $article = new Article();
             $article->title = $request->get('title');
             $article->type = $request->get('type', 1);
-            $article->author = $request->get('author');
+            $article->author = '管理员';
             $article->summary = $request->get('summary');
-            $article->content = $request->get('content');
+            $article->logo = $logo;
+            $article->content = $request->get('editorValue');
             $article->is_del = 0;
             $article->sort = $request->get('sort', 0);
             $article->save();
 
-            return Response::json(['status' => 'success', 'data' => '', 'message' => '添加成功']);
+            if ($article->id) {
+                Session::flash('successMsg', '添加成功');
+            } else {
+                Session::flash('errorMsg', '添加失败');
+            }
+
+            return Redirect::to('admin/articleList');
         } else {
             return Response::view('admin.addArticle');
         }
@@ -915,26 +940,48 @@ class AdminController extends Controller
         if ($request->method() == 'POST') {
             $title = $request->get('title');
             $type = $request->get('type');
-            $author = $request->get('author');
             $summary = $request->get('summary');
-            $content = $request->get('content');
+            $content = $request->get('editorValue');
             $sort = $request->get('sort');
 
+            // 商品LOGO
+            $logo = '';
+            if ($request->hasFile('logo')) {
+                $file = $request->file('logo');
+                $fileType = $file->getClientOriginalExtension();
+
+                // 验证文件合法性
+                if (!in_array($fileType, ['jpg', 'png', 'jpeg', 'bmp'])) {
+                    Session::flash('errorMsg', 'LOGO不合法');
+
+                    return Redirect::back()->withInput();
+                }
+
+                $logoName = date('YmdHis') . mt_rand(1000, 2000) . '.' . $fileType;
+                $move = $file->move(base_path() . '/public/upload/image/', $logoName);
+                $logo = $move ? '/upload/image/' . $logoName : '';
+            }
+
             $data = [
-                'title'   => $title,
                 'type'    => $type,
-                'author'  => $author,
+                'title'   => $title,
                 'summary' => $summary,
                 'content' => $content,
                 'sort'    => $sort
             ];
 
+            if ($logo) {
+                $data['logo'] = $logo;
+            }
+
             $ret = Article::query()->where('id', $id)->update($data);
             if ($ret) {
-                return Response::json(['status' => 'success', 'data' => '', 'message' => '编辑成功']);
+                Session::flash('successMsg', '编辑成功');
             } else {
-                return Response::json(['status' => 'fail', 'data' => '', 'message' => '编辑失败']);
+                Session::flash('errorMsg', '编辑失败');
             }
+
+            return Redirect::to('admin/editArticle?id=' . $id);
         } else {
             $view['article'] = Article::query()->where('id', $id)->first();
 

+ 2 - 2
app/Http/Controllers/CouponController.php

@@ -68,8 +68,8 @@ class CouponController extends Controller
                 }
 
                 $logoName = date('YmdHis') . mt_rand(1000, 2000) . '.' . $fileType;
-                $move = $file->move(base_path() . '/public/upload/image/coupon/', $logoName);
-                $logo = $move ? '/upload/image/coupon/' . $logoName : '';
+                $move = $file->move(base_path() . '/public/upload/image/', $logoName);
+                $logo = $move ? '/upload/image/' . $logoName : '';
             }
 
             DB::beginTransaction();

+ 4 - 4
app/Http/Controllers/ShopController.php

@@ -87,8 +87,8 @@ class ShopController extends Controller
                 }
 
                 $logoName = date('YmdHis') . mt_rand(1000, 2000) . '.' . $fileType;
-                $move = $file->move(base_path() . '/public/upload/image/goods/', $logoName);
-                $logo = $move ? '/upload/image/goods/' . $logoName : '';
+                $move = $file->move(base_path() . '/public/upload/image/', $logoName);
+                $logo = $move ? '/upload/image/' . $logoName : '';
             }
 
             DB::beginTransaction();
@@ -191,8 +191,8 @@ class ShopController extends Controller
                 }
 
                 $logoName = date('YmdHis') . mt_rand(1000, 2000) . '.' . $fileType;
-                $move = $file->move(base_path() . '/public/upload/image/goods/', $logoName);
-                $logo = $move ? '/upload/image/goods/' . $logoName : '';
+                $move = $file->move(base_path() . '/public/upload/image/', $logoName);
+                $logo = $move ? '/upload/image/' . $logoName : '';
             }
 
             DB::beginTransaction();

+ 58 - 31
resources/views/admin/addArticle.blade.php

@@ -1,5 +1,6 @@
 @extends('admin.layouts')
 @section('css')
+    <link href="/assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.css" rel="stylesheet" type="text/css" />
 @endsection
 @section('content')
     <!-- BEGIN CONTENT BODY -->
@@ -7,6 +8,12 @@
         <!-- BEGIN PAGE BASE CONTENT -->
         <div class="row">
             <div class="col-md-12">
+                @if (Session::has('successMsg'))
+                    <div class="alert alert-success">
+                        <button class="close" data-close="alert"></button>
+                        {{Session::get('successMsg')}}
+                    </div>
+                @endif
                 @if (Session::has('errorMsg'))
                     <div class="alert alert-danger">
                         <button class="close" data-close="alert"></button>
@@ -23,10 +30,10 @@
                     </div>
                     <div class="portlet-body form">
                         <!-- BEGIN FORM-->
-                        <form action="{{url('admin/addArticle')}}" method="post" enctype="multipart/form-data" class="form-horizontal" onsubmit="return do_submit();">
+                        <form action="{{url('admin/addArticle')}}" method="post" enctype="multipart/form-data" class="form-horizontal">
                             <div class="form-body">
                                 <div class="form-group">
-                                    <label for="type" class="control-label col-md-1">类型</label>
+                                    <label for="type" class="control-label col-md-2">类型</label>
                                     <div class="col-md-6">
                                         <div class="mt-radio-inline">
                                             <label class="mt-radio">
@@ -41,27 +48,46 @@
                                     </div>
                                 </div>
                                 <div class="form-group">
-                                    <label class="control-label col-md-1">标题</label>
+                                    <label class="control-label col-md-2">标题</label>
                                     <div class="col-md-6">
                                         <input type="text" class="form-control" name="title" id="title" placeholder="" autofocus required>
                                         <input type="hidden" name="_token" value="{{csrf_token()}}">
                                     </div>
                                 </div>
                                 <div class="form-group">
-                                    <label class="control-label col-md-1">简介</label>
+                                    <label class="control-label col-md-2">简介</label>
                                     <div class="col-md-6">
                                         <input type="text" class="form-control" name="summary" id="summary" placeholder="">
                                     </div>
                                 </div>
                                 <div class="form-group">
-                                    <label class="control-label col-md-1">排序</label>
+                                    <label class="control-label col-md-2">排序</label>
                                     <div class="col-md-6">
                                         <input type="text" class="form-control" name="sort" id="sort" value="0" required />
                                         <span class="help-block"> 值越高显示时越靠前 </span>
                                     </div>
                                 </div>
                                 <div class="form-group">
-                                    <label class="control-label col-md-1">内容</label>
+                                    <label class="control-label col-md-2">LOGO</label>
+                                    <div class="col-md-6">
+                                        <div class="fileinput fileinput-new" data-provides="fileinput">
+                                            <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">
+                                                <img src="/assets/images/noimage.png" alt="" /> </div>
+                                            <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"> </div>
+                                            <div>
+                                                <span class="btn default btn-file">
+                                                    <span class="fileinput-new"> 选择 </span>
+                                                    <span class="fileinput-exists"> 更换 </span>
+                                                    <input type="file" name="logo" id="logo">
+                                                </span>
+                                                <a href="javascript:;" class="btn red fileinput-exists" data-dismiss="fileinput"> 移除 </a>
+                                            </div>
+                                        </div>
+                                        <span class="help-block"> 推荐尺寸:100x75 </span>
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                    <label class="control-label col-md-2">内容</label>
                                     <div class="col-md-10">
                                         <script id="editor" type="text/plain" style="height:400px;"></script>
                                     </div>
@@ -69,7 +95,7 @@
                             </div>
                             <div class="form-actions">
                                 <div class="row">
-                                    <div class="col-md-12">
+                                    <div class="col-md-offset-2 col-md-10">
                                         <button type="submit" class="btn green">提 交</button>
                                     </div>
                                 </div>
@@ -86,6 +112,7 @@
     <!-- END CONTENT BODY -->
 @endsection
 @section('script')
+    <script src="/assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.js" type="text/javascript"></script>
     <script src="/js/ueditor/ueditor.config.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/ueditor/ueditor.all.js" type="text/javascript" charset="utf-8"></script>
 
@@ -102,31 +129,31 @@
         });
 
         // ajax同步提交
-        function do_submit() {
-            var _token = '{{csrf_token()}}';
-            var title = $('#title').val();
-            var type = $("input:radio[name='type']:checked").val();
-            var author = $('#author').val();
-            var summary = $('#summary').val();
-            var content = UE.getEditor('editor').getContent();
-            var sort = $('#sort').val();
+        {{--function do_submit() {--}}
+            {{--var _token = '{{csrf_token()}}';--}}
+            {{--var title = $('#title').val();--}}
+            {{--var type = $("input:radio[name='type']:checked").val();--}}
+            {{--var author = $('#author').val();--}}
+            {{--var summary = $('#summary').val();--}}
+            {{--var content = UE.getEditor('editor').getContent();--}}
+            {{--var sort = $('#sort').val();--}}
 
-            $.ajax({
-                type: "POST",
-                url: "{{url('admin/addArticle')}}",
-                async: false,
-                data: {_token:_token, title: title, type:type, author:author, summary:summary, content:content, sort:sort},
-                dataType: 'json',
-                success: function (ret) {
-                    layer.msg(ret.message, {time:1000}, function() {
-                        if (ret.status == 'success') {
-                            window.location.href = '{{url('admin/articleList')}}';
-                        }
-                    });
-                }
-            });
+            {{--$.ajax({--}}
+                {{--type: "POST",--}}
+                {{--url: "{{url('admin/addArticle')}}",--}}
+                {{--async: false,--}}
+                {{--data: {_token:_token, title: title, type:type, author:author, summary:summary, content:content, sort:sort},--}}
+                {{--dataType: 'json',--}}
+                {{--success: function (ret) {--}}
+                    {{--layer.msg(ret.message, {time:1000}, function() {--}}
+                        {{--if (ret.status == 'success') {--}}
+                            {{--window.location.href = '{{url('admin/articleList')}}';--}}
+                        {{--}--}}
+                    {{--});--}}
+                {{--}--}}
+            {{--});--}}
 
-            return false;
-        }
+            {{--return false;--}}
+        {{--}--}}
     </script>
 @endsection

+ 63 - 36
resources/views/admin/editArticle.blade.php

@@ -1,5 +1,6 @@
 @extends('admin.layouts')
 @section('css')
+    <link href="/assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.css" rel="stylesheet" type="text/css" />
 @endsection
 @section('content')
     <!-- BEGIN CONTENT BODY -->
@@ -7,6 +8,12 @@
         <!-- BEGIN PAGE BASE CONTENT -->
         <div class="row">
             <div class="col-md-12">
+                @if (Session::has('successMsg'))
+                    <div class="alert alert-success">
+                        <button class="close" data-close="alert"></button>
+                        {{Session::get('successMsg')}}
+                    </div>
+                @endif
                 @if (Session::has('errorMsg'))
                     <div class="alert alert-danger">
                         <button class="close" data-close="alert"></button>
@@ -23,10 +30,10 @@
                     </div>
                     <div class="portlet-body form">
                         <!-- BEGIN FORM-->
-                        <form action="{{url('admin/editArticle')}}" method="post" enctype="multipart/form-data" class="form-horizontal" onsubmit="return do_submit();">
+                        <form action="{{url('admin/editArticle')}}" method="post" enctype="multipart/form-data" class="form-horizontal">
                             <div class="form-body">
                                 <div class="form-group">
-                                    <label for="type" class="control-label col-md-1">类型</label>
+                                    <label for="type" class="control-label col-md-2">类型</label>
                                     <div class="col-md-6">
                                         <div class="mt-radio-inline">
                                             <label class="mt-radio">
@@ -41,33 +48,52 @@
                                     </div>
                                 </div>
                                 <div class="form-group">
-                                    <label class="control-label col-md-1">标题</label>
+                                    <label class="control-label col-md-2">标题</label>
                                     <div class="col-md-6">
                                         <input type="text" class="form-control" name="title" value="{{$article->title}}" id="title" placeholder="" autofocus required>
+                                        <input type="hidden" name="id" value="{{$article->id}}">
                                         <input type="hidden" name="_token" value="{{csrf_token()}}">
                                     </div>
                                 </div>
                                 <div class="form-group">
-                                    <label class="control-label col-md-1">简介</label>
+                                    <label class="control-label col-md-2">简介</label>
                                     <div class="col-md-6">
                                         <input type="text" class="form-control" name="summary" value="{{$article->summary}}" id="summary" placeholder="">
                                     </div>
                                 </div>
                                 <div class="form-group">
-                                    <label class="control-label col-md-1">作者</label>
+                                    <label class="control-label col-md-2">排序</label>
                                     <div class="col-md-6">
-                                        <input type="text" class="form-control" name="author" value="{{$article->author}}" id="author" placeholder="" required>
+                                        <input type="text" class="form-control" name="sort" value="{{$article->sort}}" id="sort" required />
+                                        <span class="help-block"> 值越高显示时越靠前 </span>
                                     </div>
                                 </div>
                                 <div class="form-group">
-                                    <label class="control-label col-md-1">排序</label>
+                                    <label class="control-label col-md-2">LOGO</label>
                                     <div class="col-md-6">
-                                        <input type="text" class="form-control" name="sort" value="{{$article->sort}}" id="sort" required />
-                                        <span class="help-block"> 值越高显示时越靠前 </span>
+                                        <div class="fileinput fileinput-new" data-provides="fileinput">
+                                            <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">
+                                                @if($article->logo)
+                                                    <img src="{{$article->logo}}" alt="" />
+                                                @else
+                                                    <img src="/assets/images/noimage.png" alt="" />
+                                                @endif
+                                            </div>
+                                            <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"> </div>
+                                            <div>
+                                                <span class="btn default btn-file">
+                                                    <span class="fileinput-new"> 选择 </span>
+                                                    <span class="fileinput-exists"> 更换 </span>
+                                                    <input type="file" name="logo" id="logo">
+                                                </span>
+                                                <a href="javascript:;" class="btn red fileinput-exists" data-dismiss="fileinput"> 移除 </a>
+                                            </div>
+                                        </div>
+                                        <span class="help-block"> 推荐尺寸:100x75 </span>
                                     </div>
                                 </div>
                                 <div class="form-group">
-                                    <label class="control-label col-md-1">内容</label>
+                                    <label class="control-label col-md-2">内容</label>
                                     <div class="col-md-10">
                                         <script id="editor" type="text/plain" style="height:400px;">{!! $article->content !!}</script>
                                     </div>
@@ -75,7 +101,7 @@
                             </div>
                             <div class="form-actions">
                                 <div class="row">
-                                    <div class="col-md-12">
+                                    <div class="col-md-offset-2 col-md-10">
                                         <button type="submit" class="btn green">提 交</button>
                                     </div>
                                 </div>
@@ -92,6 +118,7 @@
     <!-- END CONTENT BODY -->
 @endsection
 @section('script')
+    <script src="/assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.js" type="text/javascript"></script>
     <script src="/js/ueditor/ueditor.config.js" type="text/javascript" charset="utf-8"></script>
     <script src="/js/ueditor/ueditor.all.js" type="text/javascript" charset="utf-8"></script>
 
@@ -108,32 +135,32 @@
         });
 
         // ajax同步提交
-        function do_submit() {
-            var _token = '{{csrf_token()}}';
-            var id = '{{$article->id}}';
-            var title = $('#title').val();
-            var type = $("input:radio[name='type']:checked").val();
-            var author = $('#author').val();
-            var summary = $('#summary').val();
-            var sort = $('#sort').val();
-            var content = UE.getEditor('editor').getContent();
+        {{--function do_submit() {--}}
+            {{--var _token = '{{csrf_token()}}';--}}
+            {{--var id = '{{$article->id}}';--}}
+            {{--var title = $('#title').val();--}}
+            {{--var type = $("input:radio[name='type']:checked").val();--}}
+            {{--var author = $('#author').val();--}}
+            {{--var summary = $('#summary').val();--}}
+            {{--var sort = $('#sort').val();--}}
+            {{--var content = UE.getEditor('editor').getContent();--}}
 
-            $.ajax({
-                type: "POST",
-                url: "{{url('admin/editArticle')}}",
-                async: false,
-                data: {_token:_token, id:id, title: title, type:type, author:author, summary:summary, sort:sort, content:content},
-                dataType: 'json',
-                success: function (ret) {
-                    layer.msg(ret.message, {time:1000}, function() {
-                        if (ret.status == 'success') {
-                            window.location.href = '{{url('admin/articleList')}}';
-                        }
-                    });
-                }
-            });
+            {{--$.ajax({--}}
+                {{--type: "POST",--}}
+                {{--url: "{{url('admin/editArticle')}}",--}}
+                {{--async: false,--}}
+                {{--data: {_token:_token, id:id, title: title, type:type, author:author, summary:summary, sort:sort, content:content},--}}
+                {{--dataType: 'json',--}}
+                {{--success: function (ret) {--}}
+                    {{--layer.msg(ret.message, {time:1000}, function() {--}}
+                        {{--if (ret.status == 'success') {--}}
+                            {{--window.location.href = '{{url('admin/articleList')}}';--}}
+                        {{--}--}}
+                    {{--});--}}
+                {{--}--}}
+            {{--});--}}
 
-            return false;
-        }
+            {{--return false;--}}
+        {{--}--}}
     </script>
 @endsection

+ 1 - 1
resources/views/admin/system.blade.php

@@ -863,7 +863,7 @@
                                                 </div>
                                             </form>
                                         </div>
-					<div class="tab-pane" id="tab_9">
+                                        <div class="tab-pane" id="tab_9">
                                             <form action="#" method="post" class="form-horizontal">
                                                 <div class="portlet-body">
                                                     <div class="form-group">

+ 7 - 3
resources/views/user/help.blade.php

@@ -18,14 +18,18 @@
                                     <ul>
                                         @foreach($articleList as $key => $article)
                                             <li class="search-item clearfix">
-                                                <a href="javascriptt:;">
-                                                    <img src="{{asset('assets/images/what.png')}}">
+                                                <a href="javascript:;">
+                                                    @if($article->logo)
+                                                        <img src="{{url($article->logo)}}" style="max-width: 100px; max-height: 75px;">
+                                                    @else
+                                                        <img src="{{asset('assets/images/noimage.png')}}">
+                                                    @endif
                                                 </a>
                                                 <div class="search-content">
                                                     <h2 class="search-title">
                                                         <a href="{{url('article?id=') . $article->id}}">{{str_limit($article->title, 300)}}</a>
                                                     </h2>
-                                                    <p class="search-desc"> {{$article->summary}} </p>
+                                                    <p class="search-desc" style="font-size: 16px;"> {{$article->summary}} </p>
                                                 </div>
                                             </li>
                                         @endforeach

+ 1 - 0
sql/db.sql

@@ -376,6 +376,7 @@ CREATE TABLE `article` (
   `title` varchar(100) NOT NULL DEFAULT '' COMMENT '标题',
   `author` varchar(50) DEFAULT '' COMMENT '作者',
   `summary` varchar(255) DEFAULT '' COMMENT '简介',
+  `logo` varchar(255) DEFAULT '' COMMENT 'LOGO',
   `content` text COMMENT '内容',
   `type` tinyint(4) DEFAULT '1' COMMENT '类型:1-文章、2-公告',
   `is_del` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除',

+ 3 - 0
sql/update/20190104.sql

@@ -0,0 +1,3 @@
+-- 文章加入LOGO字段
+ALTER TABLE `article`
+	ADD COLUMN `logo` VARCHAR(255) NULL COMMENT 'LOGO' AFTER `summary`;