Skip to content

Commit 01570a6

Browse files
Adicionado cadastro de imagems no módulo produtos
1 parent 64a6118 commit 01570a6

File tree

4 files changed

+209
-4
lines changed

4 files changed

+209
-4
lines changed

app/Http/Controllers/Admin/Products/ContentsController.php

+66
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,13 @@
66
use App\Http\Controllers\Controller;
77
use App\Models\Admin\Products\Categorys;
88
use App\Models\Admin\Products\Contents;
9+
use App\Libraries\UploadHandler;
910

1011
class ContentsController extends Controller
1112
{
13+
const UPLOAD_PATH = 'products/';
14+
const UPLOAD_ROUTE = 'admin.products.contents.upload';
15+
1216
/**
1317
* Display a listing of the resource.
1418
*
@@ -59,6 +63,14 @@ public function store(Request $request)
5963

6064
$content->save();
6165

66+
$user = \Auth::User();
67+
$path_from = self::UPLOAD_PATH.'temp-'.$user->id.'/';
68+
$path_to = self::UPLOAD_PATH.$content->id;
69+
70+
if (\Storage::disk('uploads')->exists($path_from)) {
71+
\Storage::disk('uploads')->move($path_from, $path_to);
72+
}
73+
6274
\Session::flash('success', 'O produto foi criado com sucesso!');
6375

6476
return redirect()->route('admin.products.contents.list')->withInput();
@@ -127,6 +139,60 @@ public function destroy(Request $request)
127139
Contents::destroy($request->contents);
128140
\Session::flash('success', 'O(s) produto(s) foram removido(s) com sucesso!');
129141

142+
// Precisamos remover as imagens desse ID também
143+
// tem que ser um foreach porque é um array de galerias
144+
foreach ($request->contents as $id) {
145+
// Checamos se o diretório existe
146+
$path = self::UPLOAD_PATH.$id;
147+
148+
// Deletamos o diretório da imagem
149+
if (\Storage::disk('uploads')->exists($path)) {
150+
\Storage::disk('uploads')->deleteDirectory($path);
151+
}
152+
}
153+
130154
return redirect()->route('admin.products.contents.list');
131155
}
156+
157+
/**
158+
* Faz o envio ou carrrega as imagens de um diretório.
159+
*
160+
* @param int $id
161+
* @return \Illuminate\Http\Response
162+
*/
163+
public function upload(Request $request, $id = null)
164+
{
165+
$user = \Auth::User();
166+
167+
$path = 'temp-'.$user->id;
168+
169+
if (is_numeric($id)) {
170+
$path = $id;
171+
}
172+
173+
$config = [
174+
'script_url' => route(self::UPLOAD_ROUTE,$path),
175+
'upload_dir' => base_path().'/public/uploads/'.self::UPLOAD_PATH.$path.'/',
176+
'upload_url' => url('/').'/uploads/'.self::UPLOAD_PATH.$path.'/',
177+
'delete_type' => 'GET',
178+
];
179+
180+
181+
// Deletamos a imagem por GET
182+
if (isset($request->file)) {
183+
$file = self::UPLOAD_PATH.$path.'/'.$request->file;
184+
if (\Storage::disk('uploads')->has($file)) {
185+
\Storage::disk('uploads')->delete($file);
186+
}
187+
188+
$thumb = self::UPLOAD_PATH.$path.'/thumbnail/'.$request->file;
189+
if (\Storage::disk('uploads')->has($thumb)) {
190+
\Storage::disk('uploads')->delete($thumb);
191+
}
192+
}
193+
194+
new UploadHandler($config);
195+
196+
return view('admin._inc.fileupload.empty');
197+
}
132198
}

app/Http/Routes/Admin/products.php

+5
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@
7373
'as' => 'destroy',
7474
'uses' => 'Admin\Products\ContentsController@destroy',
7575
]);
76+
77+
Route::any('upload/{id?}', [
78+
'as' => 'upload',
79+
'uses' => 'Admin\Products\ContentsController@upload',
80+
]);
7681
});
7782

7883
// --------------------------------------------------------------------------------------------

resources/views/admin/products/contents/create.blade.php

+69-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22

33
@section('title', 'Cadastro de Conteúdo | Produtos ', @parent)
44

5+
@section('stylesheet')
6+
7+
@parent
8+
9+
<!-- Blueimp Jquery File Upload -->
10+
<link href="{!! asset('assets/components/blueimp-file-upload/css/jquery.fileupload.css') !!}" rel="stylesheet">
11+
<link href="{!! asset('assets/components/blueimp-file-upload/css/jquery.fileupload-ui.css') !!}" rel="stylesheet">
12+
13+
@show
14+
515
@section('actions')
616
<a href="{{ route('admin.products.contents.list') }}" class="btn btn-default"><i class="fa fa-angle-left"></i> Voltar</a>
717
@endsection
@@ -14,10 +24,11 @@
1424

1525
<ul class="nav nav-tabs">
1626
<li class="active"><a data-toggle="tab" href="#tab-conteudo"> Conteúdo</a></li>
27+
<li><a data-toggle="tab" href="#tab-imagens"> Imagens</a></li>
1728
<li><a data-toggle="tab" href="#tab-seo"> SEO</a></li>
1829
</ul>
1930

20-
<form action="{{ route('admin.products.contents.store') }}" method="post">
31+
<form action="{{ route('admin.products.contents.store') }}" class="fileupload" method="post" nctype="multipart/form-data">
2132
<div class="tab-content">
2233

2334
<div id="tab-conteudo" class="tab-pane active">
@@ -61,6 +72,12 @@
6172
</div>
6273
</div>
6374

75+
<div id="tab-imagens" class="tab-pane">
76+
<div class="panel-body">
77+
@include('admin._inc.fileupload.buttons')
78+
</div>
79+
</div>
80+
6481
<div id="tab-seo" class="tab-pane">
6582
<div class="panel-body">
6683
<fieldset class="form-horizontal">
@@ -87,4 +104,54 @@
87104

88105
</div>
89106

90-
@endsection
107+
@endsection
108+
109+
110+
111+
@section('javascript')
112+
113+
@parent
114+
115+
@include('admin._inc.fileupload.upload')
116+
@include('admin._inc.fileupload.download')
117+
118+
<!-- Blueimp Jquery File Upload -->
119+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/vendor/jquery.ui.widget.js') !!}"></script>
120+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-tmpl/js/tmpl.min.js') !!}"></script>
121+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-load-image/js/load-image.all.min.js') !!}"></script>
122+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-canvas-to-blob/js/canvas-to-blob.min.js') !!}"></script>
123+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.iframe-transport.js') !!}"></script>
124+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload.js') !!}"></script>
125+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-process.js') !!}"></script>
126+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-image.js') !!}"></script>
127+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-audio.js') !!}"></script>
128+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-video.js') !!}"></script>
129+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-validate.js') !!}"></script>
130+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-ui.js') !!}"></script>
131+
132+
<script type="text/javascript">
133+
134+
// Initialize the jQuery File Upload widget:
135+
$('.fileupload').fileupload({
136+
autoUpload: true,
137+
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|bmp)$/i,
138+
maxFileSize: 10240000, // 10 MB
139+
url: '{{ route('admin.products.contents.upload') }}',
140+
});
141+
142+
// Load existing files:
143+
$('.fileupload').addClass('fileupload-processing');
144+
145+
$.ajax({
146+
url: $('.fileupload').fileupload('option', 'url'),
147+
dataType: 'json',
148+
context: $('.fileupload')[0]
149+
}).always(function () {
150+
$(this).removeClass('fileupload-processing');
151+
}).done(function (result) {
152+
$(this).fileupload('option', 'done').call(this, $.Event('done'), {result: result});
153+
});
154+
155+
</script>
156+
157+
@stop

resources/views/admin/products/contents/edit.blade.php

+69-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22

33
@section('title', 'Editar conteúdo | Produtos ' , @parent)
44

5+
@section('stylesheet')
6+
7+
@parent
8+
9+
<!-- Blueimp Jquery File Upload -->
10+
<link href="{!! asset('assets/components/blueimp-file-upload/css/jquery.fileupload.css') !!}" rel="stylesheet">
11+
<link href="{!! asset('assets/components/blueimp-file-upload/css/jquery.fileupload-ui.css') !!}" rel="stylesheet">
12+
13+
@show
14+
515
@section('actions')
616
<a href="{{ route('admin.products.contents.list') }}" class="btn btn-default"><i class="fa fa-angle-left"></i> Voltar</a>
717
@endsection
@@ -14,10 +24,11 @@
1424

1525
<ul class="nav nav-tabs">
1626
<li class="active"><a data-toggle="tab" href="#tab-conteudo"> Conteúdo</a></li>
27+
<li><a data-toggle="tab" href="#tab-imagens"> Imagens</a></li>
1728
<li><a data-toggle="tab" href="#tab-seo"> SEO</a></li>
1829
</ul>
1930

20-
<form action="{{ route('admin.products.contents.update', $content->id) }}" method="post">
31+
<form action="{{ route('admin.products.contents.update', $content->id) }}" class="fileupload" method="post" enctype="multipart/form-data">
2132
<div class="tab-content">
2233

2334
<div id="tab-conteudo" class="tab-pane active">
@@ -61,6 +72,12 @@
6172
</div>
6273
</div>
6374

75+
<div id="tab-imagens" class="tab-pane">
76+
<div class="panel-body">
77+
@include('admin._inc.fileupload.buttons')
78+
</div>
79+
</div>
80+
6481
<div id="tab-seo" class="tab-pane">
6582
<div class="panel-body">
6683
<fieldset class="form-horizontal">
@@ -87,4 +104,54 @@
87104

88105
</div>
89106

90-
@endsection
107+
@endsection
108+
109+
110+
111+
@section('javascript')
112+
113+
@parent
114+
115+
@include('admin._inc.fileupload.upload')
116+
@include('admin._inc.fileupload.download')
117+
118+
<!-- Blueimp Jquery File Upload -->
119+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/vendor/jquery.ui.widget.js') !!}"></script>
120+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-tmpl/js/tmpl.min.js') !!}"></script>
121+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-load-image/js/load-image.all.min.js') !!}"></script>
122+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-canvas-to-blob/js/canvas-to-blob.min.js') !!}"></script>
123+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.iframe-transport.js') !!}"></script>
124+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload.js') !!}"></script>
125+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-process.js') !!}"></script>
126+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-image.js') !!}"></script>
127+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-audio.js') !!}"></script>
128+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-video.js') !!}"></script>
129+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-validate.js') !!}"></script>
130+
<script type="text/javascript" src="{!! asset('assets/components/blueimp-file-upload/js/jquery.fileupload-ui.js') !!}"></script>
131+
132+
<script type="text/javascript">
133+
134+
// Initialize the jQuery File Upload widget:
135+
$('.fileupload').fileupload({
136+
autoUpload: true,
137+
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|bmp)$/i,
138+
maxFileSize: 10240000, // 10 MB
139+
url: '{{ route('admin.products.contents.upload',$content->id) }}' ,
140+
});
141+
142+
// Load existing files:
143+
$('.fileupload').addClass('fileupload-processing');
144+
145+
$.ajax({
146+
url: $('.fileupload').fileupload('option', 'url'),
147+
dataType: 'json',
148+
context: $('.fileupload')[0]
149+
}).always(function () {
150+
$(this).removeClass('fileupload-processing');
151+
}).done(function (result) {
152+
$(this).fileupload('option', 'done').call(this, $.Event('done'), {result: result});
153+
});
154+
155+
</script>
156+
157+
@stop

0 commit comments

Comments
 (0)