Commit 771685d1 by Francisco Salazar

subcategorias, tags y requests

parent 46eb1e35
......@@ -53,10 +53,12 @@ class ShopServiceProvider extends ServiceProvider
{
$this->app->make('Onestartup\Shop\Controller\AdminProductController');
$this->app->make('Onestartup\Shop\Controller\CategoryController');
$this->app->make('Onestartup\Shop\Controller\SubCategoryController');
$this->app->make('Onestartup\Shop\Controller\ProductController');
$this->app->make('Onestartup\Shop\Controller\CartController');
$this->app->make('Onestartup\Shop\Controller\ShippingPriceController');
$this->app->make('Onestartup\Shop\Controller\ExtraFieldController');
$this->app->make('Onestartup\Shop\Controller\TagCatalogController');
$this->mergeConfigFrom( __DIR__.'/config/shop.php', 'shop');
}
......
......@@ -7,6 +7,7 @@ use App\Http\Requests;
use App\Http\Controllers\Controller;
use Yajra\Datatables\Datatables;
use Onestartup\Shop\Model\ProductCategoryShop as Category;
use Onestartup\Shop\Model\ProductSubCategoryShop as SubCategory;
use Onestartup\Shop\Model\ProductImageShop as Gallery;
use Onestartup\Shop\Model\ProductShop as Product;
use Onestartup\Shop\Model\ExtraField as Extra;
......@@ -22,6 +23,7 @@ use Onestartup\Shop\DataTables\StockDataTable;
use Onestartup\Shop\Model\SaleShop as Sale;
use Onestartup\Shop\Model\OrderTracking as Tracking;
use Onestartup\Shop\Model\ConfiguracionFactura as Config;
use Onestartup\Shop\Model\ProductTag as TagCatalog;
use Onestartup\Shop\Libs\Util;
use Onestartup\Shop\Requests\RequestProduct;
......@@ -29,6 +31,7 @@ use Onestartup\Shop\Requests\RequestProductInfo;
use Onestartup\Shop\Requests\RequestGallery;
use Onestartup\Shop\Requests\RequestConfigFactura;
use Onestartup\Shop\Payment\MP;
use PayPal\Api\Amount;
use PayPal\Api\Refund;
......@@ -61,9 +64,13 @@ class AdminProductController extends Controller
$categories = Category::pluck('name', 'id');
$categoria_sat = CategoriaSat::pluck('nombre', 'id');
$extras = Extra::where('active', true)->orderBy('variable', 'asc')->get();
$tags = TagCatalog::pluck('description', 'id');
$subcategories = [];
return view('shop::product.create')
->with('tags', $tags)
->with('categories', $categories)
->with('subcategories', $subcategories)
->with('categoria_sat', $categoria_sat)
->with('extras', $extras);
}
......@@ -77,6 +84,8 @@ class AdminProductController extends Controller
{
$product = new Product($request->all());
\Auth::user()->productsShop()->save($product);
$product->tags()->sync($request->tags);
if (isset($request->cover)) {
......@@ -86,12 +95,9 @@ class AdminProductController extends Controller
$ubicacion_donde_guarda ='shop/products/cover/'.$nombre_file;
\Storage::disk('local')->put($ubicacion_donde_guarda, \File::get($file));
$product->cover = $ubicacion_donde_guarda;
$product->save();
}
\Auth::user()->productsShop()->save($product);
return redirect()
->route('admin.shop.product.edit', $product->id)
->with('message_success', "Producto guardado correctamente, continua agregando las imagenes correspondientes");
......@@ -107,6 +113,8 @@ class AdminProductController extends Controller
$categories = Category::pluck('name', 'id');
$categoria_sat = CategoriaSat::pluck('nombre', 'id');
$extras = Extra::where('active', true)->orderBy('variable', 'asc')->get();
$tags = TagCatalog::pluck('description', 'id');
$subcategories = SubCategory::where("category_id", $product->category_id)->pluck('name', 'id');
if ($product->infoSale != null) {
$info = $product->infoSale;
......@@ -118,7 +126,9 @@ class AdminProductController extends Controller
return view('shop::product.edit')
->with("tags", $tags)
->with('categories', $categories)
->with('subcategories', $subcategories)
->with('categoria_sat', $categoria_sat)
->with('product', $product)
->with('info', $info)
......@@ -134,6 +144,8 @@ class AdminProductController extends Controller
{
$product = Product::find($id);
$product->fill($request->all());
$product->save();
$product->tags()->sync($request->tags);
if (isset($request->cover)) {
......@@ -143,11 +155,9 @@ class AdminProductController extends Controller
$ubicacion_donde_guarda ='shop/products/cover/'.$nombre_file;
\Storage::disk('local')->put($ubicacion_donde_guarda, \File::get($file));
$product->cover = $ubicacion_donde_guarda;
$product->save();
}
$product->save();
return redirect()
->back()
->with('message_info', 'Información actualizada correctamente');
......
......@@ -40,6 +40,8 @@ use Onestartup\Shop\Libs\Util;
use Onestartup\Shop\Model\VariableExtra as Variable;
use Onestartup\Shop\Model\ExtraSaleInfo;
use Onestartup\Shop\Requests\RequestClient;
class CartController extends Controller
{
......@@ -184,7 +186,7 @@ public function shipping()
->with('shipping', $shipping);
}
public function storeClient(Request $request)
public function storeClient(RequestClient $request)
{
$client = new Client();
$addres = new Addres();
......
<?php
namespace Onestartup\Shop\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Onestartup\Shop\Model\ProductCategoryShop as Category;
use Onestartup\Shop\Model\ProductSubCategoryShop as SubCategory;
use Onestartup\Shop\Requests\RequestSubCategory;
class SubCategoryController extends Controller{
public function index(Request $request, $category_id){
$category = Category::find($category_id);
if($request->ajax()){
return $subcategories = $category->subcategories()->get();
}
$subcategories = $category->subcategories()->paginate(30);
return view("shop::subcategory.index")
->with("subcategories", $subcategories)
->with("category", $category);
}
public function edit($category_id, $id){
$category = Category::find($category_id);
$subcategory = SubCategory::where("category_id", $category_id)->find($id);
return view("shop::subcategory.edit")
->with("subcategory", $subcategory)
->with("category", $category);
}
public function store(RequestSubCategory $request, $category_id){
$subcategory = new SubCategory($request->all());
$subcategory->category_id = $category_id;
$subcategory->save();
if (isset($request->portada)) {
$file = $request->file('portada');
$nombre = $file->getClientOriginalName();
$nombre_file = str_replace(' ', '_', $nombre);
$ubicacion_donde_guarda ='shop/subcategories/' . $subcategory->id . '/' .$nombre_file;
\Storage::disk('local')->put($ubicacion_donde_guarda, \File::get($file));
$subcategory->cover = $ubicacion_donde_guarda;
$subcategory->save();
}
return redirect()
->back()
->with('message_success', 'Subcategoría añadida correctamente.');
}
public function update(RequestSubCategory $request, $category_id, $id){
$subcategory = SubCategory::where("category_id", $category_id)->find($id);
$subcategory->fill($request->all());
$subcategory->save();
if (isset($request->portada) && $request->portada != null ) {
$file = $request->file('portada');
$nombre = $file->getClientOriginalName();
$nombre_file = str_replace(' ', '_', $nombre);
$ubicacion_donde_guarda ='product/subcategories/'. $subcategory->id . '/'. $nombre_file;
\Storage::disk('local')->put($ubicacion_donde_guarda, \File::get($file));
$subcategory->cover = $ubicacion_donde_guarda;
$subcategory->save();
}
return redirect()
->back()
->with('message_success', 'Subcategoría actualizada correctamente.');
}
public function destroy($category_id, $id){
$subcategory = SubCategory::where("category_id", $category_id)->find($id);
$subcategory->delete();
return redirect()
->back()
->with('message_danger', 'Subcategoría eliminada correctamente.');
}
public function deleteCover($id)
{
$category = SubCategory::find($id);
$category->cover = null;
$category->save();
return redirect()
->back()
->with('message_success', 'Imagen eliminada correctamente.');
}
}
\ No newline at end of file
<?php
namespace Onestartup\Shop\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Yajra\Datatables\Datatables;
use Onestartup\Shop\Model\ProductTag as TagCatalog;
use Onestartup\Shop\Requests\RequestTags;
class TagCatalogController extends Controller
{
/**
* Display a listing of the resource.
* @return Response
*/
public function index()
{
$tags = TagCatalog::paginate(25);
return view('shop::tags.index')
->with('tags', $tags);
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Response
*/
public function store(RequestTags $request)
{
$tag = new TagCatalog($request->all());
$tag->save();
return redirect()
->back()
->with('message_success', 'Categoria añadida correctamente');
}
/**
* Show the form for editing the specified resource.
* @return Response
*/
public function edit($id)
{
$tag = TagCatalog::find($id);
return view('shop::tags.edit')
->with('tag', $tag);
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Response
*/
public function update(RequestTags $request, $id)
{
$tag = TagCatalog::find($id);
$tag->fill($request->all());
$tag->save();
return redirect()
->back()
->with('message_success', 'Tag actualizado correctamente');
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function destroy($id)
{
$tag = TagCatalog::find($id);
$tag->delete();
return redirect()
->back()
->with('message_danger', 'Tag eliminado correctamente');
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProductSubcategoriesShopTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('product_subcategories_shop', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 355);
$table->string('description', 455)->nullable();
$table->string('cover', 455)->nullable();
$table->boolean('active')->default(true);
$table->string('slug')->nullable();
$table->integer('category_id')->unsigned();
$table->foreign('category_id')
->references('id')
->on('product_categories_shop')
->onDelete('cascade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('product_subcategories_shop');
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddSubcategoryToProductShopTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('products_shop', function($table) {
$table->integer('subcategory_id')->unsigned()->nullable();
$table->foreign('subcategory_id')->references('id')->on('product_subcategories_shop')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('products_shop', function($table) {
$table->dropForeign(['subcategory_id']);
$table->dropColumn('subcategory_id');
});
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProductTagsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('product_tags', function (Blueprint $table) {
$table->increments('id');
$table->string('description');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('product_tags');
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProductProductTagsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('product_product_tags', function (Blueprint $table) {
$table->increments('id');
$table->integer('product_id')->unsigned();
$table->integer('tag_id')->unsigned();
$table->foreign('product_id')->references('id')->on('products_shop')->onDelete('cascade');
$table->foreign('tag_id')->references('id')->on('product_tags')->onDelete('cascade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('product_product_tags');
}
}
......@@ -19,4 +19,8 @@ class ProductCategoryShop extends Model
{
return $this->hasMany('Onestartup\Shop\Model\ProductShop', 'category_id');
}
public function subcategories(){
return $this->hasMany('Onestartup\Shop\Model\ProductSubCategoryShop', 'category_id');
}
}
<?php
namespace Onestartup\Shop\Model;
use Illuminate\Database\Eloquent\Model;
class ProductProductTag extends Model
{
protected $table = 'product_product_tags';
protected $fillable = ['product_id', 'tag_id'];
public function products(){
$this->belongsTo("Onestartup\Shop\Model\ProductShop");
}
public function tags(){
$this->belongsTo("Onestartup\Shop\Model\ProductTag");
}
}
......@@ -31,8 +31,6 @@ class ProductShop extends Model
'extra8',
'extra9',
'extra10',
];
public function category()
......@@ -64,4 +62,8 @@ class ProductShop extends Model
{
return $this->belongsTo('Onestartup\Shop\Model\CategoriaSat', 'category_sat_id');
}
public function tags(){
return $this->belongsToMany('Onestartup\Shop\Model\ProductTag', 'product_product_tags', 'product_id', 'tag_id');
}
}
<?php
namespace Onestartup\Shop\Model;
use Illuminate\Database\Eloquent\Model;
class ProductSubCategoryShop extends Model
{
protected $table = 'product_subcategories_shop';
protected $fillable = [
'name',
'description',
'cover',
'active',
'slug',
'category_id'
];
public function category()
{
return $this->belongsTo('Onestartup\Shop\Model\ProductCategoryShop', 'category_id');
}
public function products(){
return $this->hasMany('Onestartup\Shop\Model\ProductShop', 'subcategory_id');
}
}
<?php
namespace Onestartup\Shop\Model;
use Illuminate\Database\Eloquent\Model;
class ProductTag extends Model
{
protected $table = 'product_tags';
protected $fillable = ["description"];
public function tags(){
return $this->belongsToMany('Onestartup\Shop\Model\ProductShop', 'product_product_tags', 'tag_id', 'product_id');
}
}
<?php
namespace Onestartup\Shop\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RequestClient extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|max:455',
'lastname' => 'required|max:455',
'email'=> 'required|email|max:455',
'phone' => 'required|max:255',
'home_delivery' => 'required|boolean',
'facturacion' => 'required|max:255',
//Envio
'cp' => "required_if:home_delivery,1|max:255",
'calle' => "required_if:home_delivery,1|max:255",
'numero' => "required_if:home_delivery,1|max:255",
'colonia' => "required_if:home_delivery,1|max:255",
'ciudad' => "required_if:home_delivery,1|max:255",
'estado' => "required_if:home_delivery,1|max:255",
//Adicional
'extra1' => 'max:455',
'extra2' => 'max:455',
'extra3' => 'max:455',
'extra4' => 'max:455',
'extra5' => 'max:455',
'extra6' => 'max:455',
'extra7' => 'max:455',
'extra8' => 'max:455',
'extra9' => 'max:455',
'extra10' => 'max:455',
];
}
}
\ No newline at end of file
......@@ -35,6 +35,7 @@ class RequestProduct extends FormRequest
'active' => 'required|boolean',
'publication_date' => 'required',
'category_id' => 'required|integer',
//'tags.*' => '',
'extra1' => 'max:455',
'extra2' => 'max:455',
'extra3' => 'max:455',
......
<?php
namespace Onestartup\Shop\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RequestSubCategory extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
if ($this->get("_method") == "PUT" || $this->get("_method") == "PATCH"){
$slug = 'required|max:255|unique:product_subcategories_shop,slug,'.$this->route("subcategory");
}else{
$slug = 'required|max:255|unique:product_subcategories_shop,slug';
}
return [
'name' => 'required|max:355',
'slug' => $slug,
'description'=> 'max:455',
'active' => 'required|boolean',
'portada' => 'image'
];
}
}
\ No newline at end of file
<?php
namespace Onestartup\Shop\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RequestTags extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'description' => 'required|max:255',
];
}
}
\ No newline at end of file
......@@ -4,6 +4,14 @@ Route::group(['middleware' => ['web', 'auth', 'is_admin']], function(){
Route::resource('admin/shop/product', 'Onestartup\Shop\Controller\AdminProductController', ['as'=>'admin.shop']);
Route::resource('admin/shop/category', 'Onestartup\Shop\Controller\CategoryController', ['as'=>'admin.shop']);
Route::resource('admin/shop/category/{category_id}/subcategory', 'Onestartup\Shop\Controller\SubCategoryController', ['as'=>'admin.shop', 'except' => ['show', 'create']]);
Route::delete('delete/cover/subcategory/shop/{id}', 'Onestartup\Shop\Controller\SubCategoryController@deleteCover')
->name('delete.cover.subcategory.shop');
Route::resource('admin/shop/tag', 'Onestartup\Shop\Controller\TagCatalogController', ['as'=>'admin.shop']);
Route::resource('admin/shop/coupon', 'Onestartup\Shop\Controller\DiscountCouponController', ['as'=>'admin.shop']);
Route::resource('admin/shop/categoriasat', 'Onestartup\Shop\Controller\CategorySatController', ['as'=>'admin.shop']);
......
......@@ -7,7 +7,7 @@
<a href="{{route('admin-shop-client.orders')}}">Tienda</a>
</li>
<li class="breadcrumb-item active">
Listado de categorias
Listado de categorías
</li>
@endsection
@section('content')
......@@ -16,7 +16,7 @@
<div class='box'>
<div class='box-header dark'>
<h2>
Agregar nueva categoria
Agregar nueva categoría
<span></span>
<a aria-expanded='false' class='btn btn-xs btn-danger button-ml' data-toggle='collapse' href='#agregarCategoria'>
Cancelar
......@@ -41,7 +41,7 @@
<div class='box'>
<div class='box-header dark'>
<h2>
Listado de Categorias de productos de la tienda
Listado de Categorías de productos de la tienda
<span>
<a aria-expanded='false' class='btn btn-xs btn-info button-ml' data-toggle='collapse' href='#agregarCategoria'>
<i class='fas fa-plus'></i>
......@@ -58,6 +58,7 @@
<th>Categoría</th>
<th>Descripción</th>
<th>Productos</th>
<th>Subcategorias</th>
<th></th>
</tr>
@foreach ($categories as $category)
......@@ -71,8 +72,13 @@
</p>
</td>
<td> {{$category->description}}</td>
<td> {{$category->products->count()}}</td>
<td class="text-center"> {{$category->products->count()}}</td>
<td class="text-center"> {{$category->subcategories->count()}}</td>
<td class="text-center">
<a class='btn btn-xs btn-success button-mb' href="{{route('admin.shop.subcategory.index', $category->id)}}">
<i class='fas fa-plus icon-special-size'></i>
Subcategorías
</a>
{!! Form::open(['route'=> ['admin.shop.category.destroy',$category->id],'method'=>'DELETE'])!!}
<button class='btn btn-danger btn-xs button-mb' onclick="return confirm('¿Estás seguro de eliminar este elemento?');" type='submit'>
<i class='fas fa-trash-alt icon-special-size'></i>
......
......@@ -51,11 +51,53 @@
CKEDITOR.replace('description', options);
CKEDITOR.replace('features', options);
CKEDITOR.replace('specifications', options);
$('#tags').select2();
$("#publication_date").datepicker({
dateFormat: "yy-mm-dd"
});
</script>
<script>
$(document).ready(function() {
var category = $("#category_id").val();
$.ajax({
type: "GET",
url: "/admin/shop/category/" + category + "/subcategory",
success: function(data)
{
$("#subcategory_id").html("");
$("#subcategory_id").append('<option value="" selected disabled>Selecciona una subcategoría</option>');
$.each( data, function( key, value ) {
$("#subcategory_id").append('<option value=' + value.id + '>' + value.name + '</option>');
});
},
error: function(data){
console.log("error");
}
});
});
$("#category_id").change(function() {
var category = $("#category_id").val();
$.ajax({
type: "GET",
url: "/admin/shop/category/" + category + "/subcategory",
success: function(data)
{
$("#subcategory_id").html("");
$("#subcategory_id").append('<option value="" selected disabled>Selecciona una subcategoría</option>');
$.each( data, function( key, value ) {
$("#subcategory_id").append('<option value=' + value.id + '>' + value.name + '</option>');
});
},
error: function(data){
console.log("error");
}
});
});
</script>
@if($extras->count() > 0)
@foreach($extras as $extra)
......
......@@ -169,6 +169,7 @@
$("#publication_date").datepicker({
dateFormat: "yy-mm-dd"
});
$('#tags').select2();
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.4.0/min/dropzone.min.js"></script>
......@@ -219,6 +220,26 @@
</script>
<script>
$("#category_id").change(function() {
var category = $("#category_id").val();
$.ajax({
type: "GET",
url: "/admin/shop/category/" + category + "/subcategory",
success: function(data)
{
$("#subcategory_id").html("");
$.each( data, function( key, value ) {
$("#subcategory_id").append('<option value=' + value.id + '>' + value.name + '</option>');
});
},
error: function(data){
console.log("error");
}
});
});
</script>
@if($extras->count() > 0)
@foreach($extras as $extra)
......
......@@ -46,14 +46,12 @@
{!! Form::file('cover', null, ["class"=>"form-control", "required"=>"required"]) !!}
</div>
</div>
<div class="col-md-6">
<div class="form-group">
{!! Form::label('publication_date', 'Fecha de publicación', ['class'=>'control-label'])!!}
{!! Form::text('publication_date', isset($product) ? null: date('Y-m-d'), ["class"=>"form-control", "required"=>"required", "id"=>"publication_date"]) !!}
<div class="form-group" >
{!! Form::label('subcategory_id', 'Subcategoría', ['class'=>'control-label'])!!}
{!! Form::select('subcategory_id', $subcategories, null, ["class"=>"form-control", "placeholder"=>"Selecciona una subcategoría"]) !!}
</div>
</div>
</div>
</div>
<div class="row">
......@@ -63,9 +61,24 @@
{!! Form::select('category_sat_id', $categoria_sat, null, ["class"=>"form-control", 'placeholder'=>'Elije una categoria']) !!}
</div>
</div>
<div class="col-md-6">
<div class="form-group">
{!! Form::label('tags', 'Etiquetas', ['class'=>'control-label'])!!}
{!! Form::select('tags[]', $tags, null, ["class"=>"form-control", "id"=>"tags", "multiple"=>"multiple"]) !!}
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
{!! Form::label('publication_date', 'Fecha de publicación', ['class'=>'control-label'])!!}
{!! Form::text('publication_date', isset($product) ? null: date('Y-m-d'), ["class"=>"form-control", "required"=>"required", "id"=>"publication_date"]) !!}
</div>
</div>
</div>
<div class="row">
@if($extras->count() > 0)
@foreach($extras as $extra)
......
......@@ -48,9 +48,9 @@ setlocale(LC_MONETARY, 'en_US');
</table>
</section>
{!! Form::model($client, ['route'=>'cart.store.client','method'=>'POST']) !!}
<section>
<h4>Datos del comprador</h4>
{!! Form::model($client, ['route'=>'cart.store.client','method'=>'POST']) !!}
<h4>Datos del comprador</h4>
@include('shop-public::forms.fields-client')
</section>
......@@ -68,7 +68,7 @@ setlocale(LC_MONETARY, 'en_US');
{!! Form::text('extra1', null, ['class'=>'form-control', 'required'=>'required']) !!}
</div>
<div>
{!! Form::label('extra2', 'Hora de envio', ['class'=>'']) !!}
{!! Form::label('extra2', 'Hora de envío', ['class'=>'']) !!}
{!! Form::text('extra2', null, ['class'=>'form-control', 'required'=>'required']) !!}
</div>
<div>
......@@ -101,6 +101,12 @@ setlocale(LC_MONETARY, 'en_US');
$('#delivery').hide();
$("#delivery :input").prop('required',null);
}
})
});
$(document).ready(function(){
if ($("#home_delivery").val() == 1){
$('#delivery').show();
$("#delivery :input").prop('required','required');
}
});
</script>
@endsection
\ No newline at end of file
@extends('crm-admin::main-layout')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{route('home')}}">Home</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.shop.product.index')}}">Productos</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.shop.category.index')}}">Categorías</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.shop.category.edit', $category->id)}}"> {{$category->name}}</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.shop.subcategory.index', $category->id)}}"> Subcategorías de {{$category->name}}</a>
</li>
<li class="breadcrumb-item active">
Subcategoria: {{$subcategory->name}}
</li>
@endsection
@section('content')
<div class='row'>
<div class='col-md-12'>
<div class='box'>
<div class='box-header dark'>
<h2>Actualizar información</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
{!! Form::model($subcategory,['route'=> ['admin.shop.subcategory.update',$category->id, $subcategory->id],"method"=>"PUT", 'enctype'=>'multipart/form-data']) !!}
@include('shop::subcategory.fields')
</div>
</div>
<div class='dker p-a text-right'>
<div class='col-md-12'>
<a class='btn danger' href="{{route('admin.product.subcategory.index', $category->id)}}">Cancelar</a>
{!! Form::submit('Actualizar información', ['class'=>'btn dark']) !!}
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
<!-- .modal nuevo contrato -->
<div class='modal fade' data-backdrop='true' id='ver'>
<div class='modal-dialog modal-lg'>
<div class='modal-content box-shadow-z3'>
<div class='modal-body text-center p-lg'>
@if ($subcategory->cover == null)
<h4> No hay imagen asignada</h4>
@else
<img class='image-modal-preview' src="{{asset('storage/'.$subcategory->cover)}}">
@endif
</div>
<div class='modal-footer'>
<button class='btn dark p-x-md' data-dismiss='modal' type='button'>Cerrar</button>
@if($subcategory->cover != null)
{!! Form::open(['route'=> ['delete.cover.subcategory.shop', $subcategory->id ],'method'=>'DELETE'])!!}
<button class='btn btn-danger button-mb' onclick="return confirm('¿Estás seguro de eliminar este elemento?');" type='submit'>
<i class='fas fa-trash-alt icon-special-size'>
Eliminar
</i>
</button>
{!! Form::close()!!}
@endif
</div>
</div>
<!-- /.modal-content -->
</div>
</div>
@endsection
<div class="form-group">
{!! Form::label('name', 'Nombre *') !!}
{!! Form::text('name', null, ["class"=>"form-control", "required"=>"required", "placeholder"=>"Coloque aquí el nombre de la categoría", "id"=>"first"]) !!}
</div>
<div class="form-group">
{!! Form::label('slug', 'URL Slug *') !!}
{!! Form::text('slug', null, ["class"=>"form-control", "required"=>"required", "placeholder"=>"Coloque aquí la liga o URL de la categoría", "id"=>"second"]) !!}
</div>
<div class="form-group">
{!! Form::label('description', 'Resumen') !!}
{!! Form::text('description', null, ["class"=>"form-control", "placeholder"=>"Coloque la información descriptiva de la categoría"]) !!}
</div>
<div class="form-group">
{!! Form::label('active', 'Estado') !!}
{!! Form::select('active', [true=>'Activo', false=>'Inactivo'], null, ["class"=>"form-control", "required"=>"required"]) !!}
</div>
<div class="form-group">
{!! Form::label('portada', 'Imagén de portada') !!}
@if (isset($subcategory))
<span>
<a class="btn btn-xs accent" data-target="#ver" data-toggle="modal" href="#" ui-toggle-class="fade-up-big">
Ver actual
<i class="fa fa-eye"></i>
</a>
</span>
@endif
<br>
{!! Form::file('portada', null, ["class"=>"form-control"]) !!}
</div>
\ No newline at end of file
@extends('crm-admin::main-layout')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{route('home')}}">Home</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.shop.product.index')}}">Productos</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.shop.category.index')}}"> Categorías</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.shop.category.edit', $category->id)}}"> Categoría: {{$category->name}}</a>
</li>
<li class="breadcrumb-item active">
Listado de subcategorias
</li>
@endsection
@section('content')
<div class='row'>
<div class='col-md-12 collapse' id='agregarCategoria'>
<div class='box'>
<div class='box-header dark'>
<h2>
Agregar nueva subcategoría
<span></span>
<a aria-expanded='false' class='btn btn-xs btn-danger button-ml' data-toggle='collapse' href='#agregarCategoria'>
Cancelar
</a>
</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
{!! Form::open(['route'=> ['admin.shop.subcategory.store', $category->id],'method'=>'POST', 'enctype'=>'multipart/form-data']) !!}
@include('product::subcategory.fields')
<div class='form-group'>
<button class='btn btn-primary' type='submit'>
Registrar
</button>
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
<div class='col-md-12'>
<div class='box'>
<div class='box-header dark'>
<h2>
<b>{{$category->name}}:</b> Listado de subcategorías
<span>
<a aria-expanded='false' class='btn btn-xs btn-info button-ml' data-toggle='collapse' href='#agregarCategoria'>
<i class='fas fa-plus'></i>
Agregar Nueva Subcategoría
</a>
</span>
</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
<table class='table'>
<tr>
<th>#</th>
<th>Subcategoría</th>
<th>Descripción</th>
<th></th>
</tr>
@foreach ($subcategories as $subcategory)
<tr>
<td> {{$subcategory->id}}</td>
<td>
<p> {{$subcategory->name}}</p>
<p>
URL Slug:
<b> {{$subcategory->slug}}</b>
</p>
</td>
<td> {{$subcategory->description}}</td>
<td class="text-center">
{!! Form::open(['route'=> ['admin.shop.subcategory.destroy',$category->id,$subcategory->id],'method'=>'DELETE'])!!}
<button class='btn btn-danger btn-xs button-mb' onclick="return confirm('¿Estás seguro de eliminar este elemento?');" type='submit'>
<i class='fas fa-trash-alt icon-special-size'></i>
Eliminar
</button>
{!! Form::close()!!}
<a class='btn btn-xs accent' href="{{route('admin.shop.subcategory.edit', [$category->id, $subcategory->id])}}">
<i class='fas fa-edit icon-special-size'></i>
Editar
</a>
</td>
@endforeach
</tr>
</table>
</div>
</div>
<div class='dker p-a text-right'>
{{ $subcategories->links() }}
</div>
</div>
</div>
</div>
@endsection
\ No newline at end of file
@extends('crm-admin::main-layout')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{route('home')}}">Home</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin-shop-client.orders')}}">Tienda</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.shop.tag.index')}}">Tags</a>
</li>
<li class="breadcrumb-item active">
{{$tag->description}}
</li>
@endsection
@section('content')
<div class='row'>
<div class='col-md-12'>
<div class='box'>
<div class='box-header dark'>
<h2>Actualizar información</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
{!! Form::model($tag,['route'=> ['admin.shop.tag.update',$tag->id],"method"=>"PUT", 'enctype'=>'multipart/form-data']) !!}
@include('shop::tags.fields')
</div>
</div>
<div class='dker p-a text-right'>
<div class='col-md-12'>
<a class='btn danger' href="{{route('admin.shop.tag.index')}}">Cancelar</a>
{!! Form::submit('Actualizar información', ['class'=>'btn dark']) !!}
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
@endsection
\ No newline at end of file
<div class="form-group">
{!! Form::label('description', 'Descripción *') !!}
{!! Form::text('description', null, ["class"=>"form-control", "required"=>"required", "placeholder"=>"Coloque aquí el nombre del tag"]) !!}
</div>
@extends('crm-admin::main-layout')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{route('home')}}">Home</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin-shop-client.orders')}}">Tienda</a>
</li>
<li class="breadcrumb-item active">
Tags
</li>
@endsection
@section('content')
<div class='row'>
<div class='col-md-12 collapse' id='agregarTag'>
<div class='box'>
<div class='box-header dark'>
<h2>
Agregar nuevo tag
<span></span>
<a aria-expanded='false' class='btn btn-xs btn-danger button-ml' data-toggle='collapse' href='#agregarTag'>
Cancelar
</a>
</h2>
</div>
<div class='box-body'>
<div class='col-md-6 offset-3'>
{!! Form::open(['route'=> 'admin.shop.tag.store','method'=>'POST']) !!}
@include('shop::tags.fields')
<br>
<div class='form-group'>
<button class='btn btn-primary' type='submit'>
Registrar
</button>
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
<div class='col-md-12'>
<div class='box'>
<div class='box-header dark'>
<h2>
Listado de tags
<span>
<a aria-expanded='false' class='btn btn-xs btn-info button-ml' data-toggle='collapse' href='#agregarTag'>
<i class='fas fa-plus'></i>
Agregar tags
</a>
</span>
</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
<table class='table'>
<tr>
<th>#</th>
<th>Tag</th>
<th></th>
</tr>
@foreach ($tags as $tag)
<tr>
<td> {{$tag->id}}</td>
<td> {{$tag->description}}</td>
<td class="text-center">
{!! Form::open(['route'=> ['admin.shop.tag.destroy',$tag->id],'method'=>'DELETE'])!!}
<button class='btn btn-danger btn-xs button-mb' onclick="return confirm('¿Estás seguro de eliminar este elemento?');" type='submit'>
<i class='fas fa-trash-alt icon-special-size'></i>
Eliminar
</button>
{!! Form::close()!!}
<a class='btn btn-xs accent' href="{{route('admin.shop.tag.edit', $tag->id)}}">
<i class='fas fa-edit icon-special-size'></i>
Editar
</a>
</td>
@endforeach
</tr>
</table>
</div>
</div>
<div class='dker p-a text-right'>
{{ $tags->links() }}
</div>
</div>
</div>
</div>
@endsection
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment