
PK 
@extends('backend.layouts.master')
@section('main-content')
<style>
.image-container {
position: relative;
display: inline-block;
margin-right: 10px;
margin-bottom: 10px;
}
.delete-image-btn {
position: absolute;
top: -10px;
right: -10px;
border-radius: 50%;
padding: 0.15rem 0.35rem;
line-height: 1;
z-index: 10;
}
</style>
<div class="card">
<h5 class="card-header">Add Product</h5>
<div class="card-body">
<form method="post" action="{{route('product.store')}}" enctype="multipart/form-data">
{{csrf_field()}}
<div class="form-group">
<label for="inputTitle" class="col-form-label">Title <span class="text-danger">*</span></label>
<input id="inputTitle" type="text" name="title" placeholder="Enter title" value="{{old('title')}}" class="form-control">
@error('title')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group">
<label for="sku" class="col-form-label">SKU <span class="text-danger">*</span></label>
<input id="sku" type="text" name="sku" placeholder="Enter SKU or leave blank to auto-generate" value="{{old('sku')}}" class="form-control">
@error('sku')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group">
<label for="summary" class="col-form-label">Summary <span class="text-danger">*</span></label>
<textarea class="form-control" id="summary" name="summary">{{old('summary')}}</textarea>
@error('summary')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group">
<label for="description" class="col-form-label">Description</label>
<textarea class="form-control" id="description" name="description">{{old('description')}}</textarea>
@error('description')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group">
<label for="is_featured">Is Featured</label><br>
<input type="checkbox" name='is_featured' id='is_featured' value='1' {{old('is_featured') ? 'checked' : ''}}> Yes
</div>
<div class="form-group">
<label for="cat_id">Category <span class="text-danger">*</span></label>
<select name="cat_id" id="cat_id" class="form-control">
<option value="">--Select any category--</option>
@foreach($categories as $key=>$cat_data)
<option value='{{$cat_data->id}}' {{old('cat_id') == $cat_data->id ? 'selected' : ''}}>{{$cat_data->title}}</option>
@endforeach
</select>
@error('cat_id')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group d-none" id="child_cat_div">
<label for="child_cat_id">Sub Category</label>
<select name="child_cat_id" id="child_cat_id" class="form-control">
<option value="">--Select any category--</option>
</select>
</div>
<div class="form-group">
<label for="price" class="col-form-label">Price(NRS) <span class="text-danger">*</span></label>
<input id="price" type="number" name="price" placeholder="Enter price" value="{{old('price')}}" class="form-control">
@error('price')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group">
<label for="discount" class="col-form-label">Discount(%)</label>
<input id="discount" type="number" name="discount" min="0" max="100" placeholder="Enter discount" value="{{ old('discount', 0) }}" class="form-control">
@error('discount')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group" style="display: none;">
<label for="size">Size</label>
<select name="size[]" class="form-control selectpicker" multiple data-live-search="true">
<option value="">--Select any size--</option>
<option value="S" {{ (is_array(old('size')) && in_array('S', old('size'))) ? 'selected' : '' }}>Small (S)</option>
<option value="M" {{ (is_array(old('size')) && in_array('M', old('size'))) ? 'selected' : '' }}>Medium (M)</option>
<option value="L" {{ (is_array(old('size')) && in_array('L', old('size'))) ? 'selected' : '' }}>Large (L)</option>
<option value="XL" {{ (is_array(old('size')) && in_array('XL', old('size'))) ? 'selected' : '' }}>Extra Large (XL)</option>
</select>
</div>
<div class="form-group">
<label for="brand_id">Brand</label>
<select name="brand_id" class="form-control">
<option value="">--Select Brand--</option>
@foreach($brands as $brand)
<option value="{{$brand->id}}" {{old('brand_id') == $brand->id ? 'selected' : ''}}>{{$brand->title}}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="condition">Condition</label>
<select name="condition" class="form-control">
<option value="">--Select Condition--</option>
<option value="default" {{old('condition') == 'default' ? 'selected' : ''}}>Default</option>
<option value="new" {{old('condition') == 'new' ? 'selected' : ''}}>New</option>
<option value="hot" {{old('condition') == 'hot' ? 'selected' : ''}}>Hot</option>
</select>
</div>
<div class="form-group">
<label for="stock">Quantity <span class="text-danger">*</span></label>
<input id="quantity" type="number" name="stock" min="0" placeholder="Enter quantity" value="{{old('stock')}}" class="form-control">
@error('stock')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group">
<label for="inputPhoto" class="col-form-label">Photo <span class="text-danger">*</span></label>
<div class="input-group">
<span class="input-group-btn">
<a id="lfm" data-input="thumbnail" data-preview="holder" class="btn btn-primary text-white">
<i class="fas fa-image"></i> Choose
</a>
</span>
<input id="thumbnail" class="form-control" type="text" name="photo" value="{{old('photo')}}">
</div>
<div id="holder" style="margin-top:15px;max-height:100px; display: flex; flex-wrap: wrap; gap: 10px;">
@if(old('photo'))
@php
$photos = explode(',', old('photo'));
@endphp
@foreach($photos as $photo)
@if(trim($photo))
<div style="position: relative;">
<img src="{{ trim($photo) }}" style="height: 5rem; border: 1px solid #ddd; border-radius: 4px;">
<button type="button"
class="btn btn-sm btn-danger"
style="position: absolute; top: -10px; right: -10px; border-radius: 50%; padding: 0.15rem 0.35rem; line-height: 1;"
onclick="removeImage(this, '{{ trim($photo) }}')">
×
</button>
</div>
@endif
@endforeach
@endif
</div>
@error('photo')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group">
<label for="status" class="col-form-label">Status <span class="text-danger">*</span></label>
<select name="status" class="form-control">
<option value="active" {{old('status') == 'active' ? 'selected' : ''}}>Active</option>
<option value="inactive" {{old('status') == 'inactive' ? 'selected' : ''}}>Inactive</option>
</select>
@error('status')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group">
<label for="isGreat_deals" class="col-form-label">Great Deals <span class="text-danger">*</span></label>
<select name="isGreat_deals" class="form-control">
<option value="1" {{old('isGreat_deals') == '1' ? 'selected' : ''}}>Inactive</option>
<option value="2" {{old('isGreat_deals') == '2' ? 'selected' : ''}}>Active</option>
</select>
@error('isGreat_deals')
<span class="text-danger">{{$message}}</span>
@enderror
</div>
<div class="form-group mb-3">
<button type="reset" class="btn btn-warning">Reset</button>
<button class="btn btn-success" type="submit">Submit</button>
</div>
</form>
</div>
</div>
@endsection
@push('styles')
<link rel="stylesheet" href="{{asset('backend/summernote/summernote.min.css')}}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.1/css/bootstrap-select.css" />
@endpush
@push('scripts')
<script src="/vendor/laravel-filemanager/js/stand-alone-button.js"></script>
<script src="{{asset('backend/summernote/summernote.min.js')}}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.1/js/bootstrap-select.min.js"></script>
<script>
// Initialize file manager
$('#lfm').filemanager('image', {prefix: '/laravel-filemanager'});
// Function to remove image
function removeImage(button, imagePath) {
// Get current images from hidden input
let currentImages = $('#thumbnail').val();
let imagesArray = currentImages ? currentImages.split(',') : [];
// Remove the image from array
imagesArray = imagesArray.filter(img => img.trim() !== imagePath);
// Update hidden input
$('#thumbnail').val(imagesArray.join(','));
// Remove image container from DOM
$(button).parent().remove();
}
// Handle new image selection
$('#lfm').on('filemanager:selected', function(event, items) {
const currentValue = $('#thumbnail').val();
const newImages = items.map(item => item.url).join(',');
// Append new images to existing ones
$('#thumbnail').val(currentValue ? currentValue + ',' + newImages : newImages);
// Add new images to preview
items.forEach(item => {
$('#holder').append(`
<div style="position: relative;">
<img src="${item.url}" style="height: 5rem; border: 1px solid #ddd; border-radius: 4px;">
<button type="button"
class="btn btn-sm btn-danger"
style="position: absolute; top: -10px; right: -10px; border-radius: 50%; padding: 0.15rem 0.35rem; line-height: 1;"
onclick="removeImage(this, '${item.url}')">
×
</button>
</div>
`);
});
});
$(document).ready(function() {
$('#summary').summernote({
placeholder: "Write short description.....",
tabsize: 2,
height: 100
});
$('#description').summernote({
placeholder: "Write detail description.....",
tabsize: 2,
height: 150
});
// Handle image deletion
$(document).on('click', '.delete-image', function() {
const imagePath = $(this).data('image');
const currentValue = $('#thumbnail').val();
let imagesArray = currentValue ? currentValue.split(',') : [];
// Remove the image from array
imagesArray = imagesArray.filter(img => img.trim() !== imagePath);
// Update hidden input
$('#thumbnail').val(imagesArray.join(','));
// Remove image container from DOM
$(this).parent().remove();
});
// Handle new image selection
$('#lfm').on('filemanager:selected', function(event, items) {
const currentValue = $('#thumbnail').val();
const newImages = items.map(item => item.url).join(',');
// Append new images to existing ones
$('#thumbnail').val(currentValue ? currentValue + ',' + newImages : newImages);
// Add new images to preview
items.forEach(item => {
$('#holder').append(`
<div class="image-container" style="position: relative; display: inline-block; margin-right: 10px;">
<img src="${item.url}" style="height: 5rem; border: 1px solid #ddd; border-radius: 4px;">
<button type="button"
class="btn btn-sm btn-danger delete-image"
style="position: absolute; top: -10px; right: -10px; border-radius: 50%; padding: 0.15rem 0.35rem;"
data-image="${item.url}">
×
</button>
</div>
`);
});
});
});
$('#cat_id').change(function(){
var cat_id = $(this).val();
if(cat_id != null){
$.ajax({
url: "/admin/category/"+cat_id+"/child",
data: {
_token: "{{csrf_token()}}",
id: cat_id
},
type: "POST",
success: function(response) {
if(typeof(response) != 'object'){
response = $.parseJSON(response)
}
var html_option = "<option value=''>----Select sub category----</option>"
if(response.status){
var data = response.data;
if(response.data){
$('#child_cat_div').removeClass('d-none');
$.each(data, function(id, title){
html_option += "<option value='"+id+"'>"+title+"</option>"
});
}
}
else{
$('#child_cat_div').addClass('d-none');
}
$('#child_cat_id').html(html_option);
}
});
}
});
</script>
@endpush


PK 99