edit.blade.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. @extends('layouts.admin.app')
  2. @section('content')
  3. <!-- Main content -->
  4. <section class="content">
  5. @include('layouts.errors-and-messages')
  6. <div class="box">
  7. <form action="{{ route('admin.products.update', $product->id) }}" method="post" class="form" enctype="multipart/form-data">
  8. <div class="box-body">
  9. <div class="row">
  10. {{ csrf_field() }}
  11. <input type="hidden" name="_method" value="put">
  12. <div class="col-md-12">
  13. <!-- Nav tabs -->
  14. <ul class="nav nav-tabs" role="tablist" id="tablist">
  15. <li role="presentation" @if(!request()->has('combination')) class="active" @endif><a href="#info" aria-controls="home" role="tab" data-toggle="tab">Info</a></li>
  16. <li role="presentation" @if(request()->has('combination')) class="active" @endif><a href="#combinations" aria-controls="profile" role="tab" data-toggle="tab">Combinations</a></li>
  17. </ul>
  18. <!-- Tab panes -->
  19. <div class="tab-content" id="tabcontent">
  20. <div role="tabpanel" class="tab-pane @if(!request()->has('combination')) active @endif" id="info">
  21. <div class="row">
  22. <div class="col-md-8">
  23. <h2>{{ ucfirst($product->name) }}</h2>
  24. <div class="form-group">
  25. <label for="sku">SKU <span class="text-danger">*</span></label>
  26. <input type="text" name="sku" id="sku" placeholder="xxxxx" class="form-control" value="{!! $product->sku !!}">
  27. </div>
  28. <div class="form-group">
  29. <label for="name">Name <span class="text-danger">*</span></label>
  30. <input type="text" name="name" id="name" placeholder="Name" class="form-control" value="{!! $product->name !!}">
  31. </div>
  32. <div class="form-group">
  33. <label for="description">Description </label>
  34. <textarea class="form-control ckeditor" name="description" id="description" rows="5" placeholder="Description">{!! $product->description !!}</textarea>
  35. </div>
  36. <div class="form-group">
  37. <div class="col-md-3">
  38. <div class="row">
  39. <img src="{{ $product->cover }}" alt="" class="img-responsive img-thumbnail">
  40. </div>
  41. </div>
  42. </div>
  43. <div class="row"></div>
  44. <div class="form-group">
  45. <label for="cover">Cover </label>
  46. <input type="file" name="cover" id="cover" class="form-control">
  47. </div>
  48. <div class="form-group">
  49. @foreach($images as $image)
  50. <div class="col-md-3">
  51. <div class="row">
  52. <img src="{{ asset("storage/$image->src") }}" alt="" class="img-responsive img-thumbnail"> <br /> <br>
  53. <a onclick="return confirm('Are you sure?')" href="{{ route('admin.product.remove.thumb', ['src' => $image->src]) }}" class="btn btn-danger btn-sm btn-block">Remove?</a><br />
  54. </div>
  55. </div>
  56. @endforeach
  57. </div>
  58. <div class="row"></div>
  59. <div class="form-group">
  60. <label for="image">Images </label>
  61. <input type="file" name="image[]" id="image" class="form-control" multiple>
  62. <span class="text-warning">You can use ctr (cmd) to select multiple images</span>
  63. </div>
  64. <div class="form-group">
  65. <label for="quantity">Quantity <span class="text-danger">*</span></label>
  66. @if($productAttributes->isEmpty())
  67. <input
  68. type="text"
  69. name="quantity"
  70. id="quantity"
  71. placeholder="Quantity"
  72. class="form-control"
  73. value="{!! $product->quantity !!}"
  74. >
  75. @else
  76. <input type="hidden" name="quantity" value="{{ $qty }}">
  77. <input type="text" value="{{ $qty }}" class="form-control" disabled>
  78. @endif
  79. @if(!$productAttributes->isEmpty())<span class="text-danger">Note: Quantity is disabled. Total quantity is calculated by the sum of all the combinations.</span> @endif
  80. </div>
  81. <div class="form-group">
  82. <label for="price">Price</label>
  83. @if($productAttributes->isEmpty())
  84. <div class="input-group">
  85. <span class="input-group-addon">{{ config('cart.currency') }}</span>
  86. <input type="text" name="price" id="price" placeholder="Price" class="form-control" value="{!! $product->price !!}">
  87. </div>
  88. @else
  89. <input type="hidden" name="price" value="{!! $product->price !!}">
  90. <div class="input-group">
  91. <span class="input-group-addon">{{ config('cart.currency') }}</span>
  92. <input type="text" id="price" placeholder="Price" class="form-control" value="{!! $product->price !!}" disabled>
  93. </div>
  94. @endif
  95. @if(!$productAttributes->isEmpty())<span class="text-danger">Note: Price is disabled. Price is derived based on the combination.</span> @endif
  96. </div>
  97. <div class="form-group">
  98. <label for="sale_price">Sale Price</label>
  99. <div class="input-group">
  100. <span class="input-group-addon">{{ config('cart.currency') }}</span>
  101. <input type="text" name="sale_price" id="sale_price" placeholder="Sale Price" class="form-control" value="{{ $product->sale_price }}">
  102. </div>
  103. </div>
  104. @if(!$brands->isEmpty())
  105. <div class="form-group">
  106. <label for="brand_id">Brand </label>
  107. <select name="brand_id" id="brand_id" class="form-control select2">
  108. <option value=""></option>
  109. @foreach($brands as $brand)
  110. <option @if($brand->id == $product->brand_id) selected="selected" @endif value="{{ $brand->id }}">{{ $brand->name }}</option>
  111. @endforeach
  112. </select>
  113. </div>
  114. @endif
  115. <div class="form-group">
  116. @include('admin.shared.status-select', ['status' => $product->status])
  117. </div>
  118. @include('admin.shared.attribute-select', [compact('default_weight')])
  119. <!-- /.box-body -->
  120. </div>
  121. <div class="col-md-4">
  122. <h2>Categories</h2>
  123. @include('admin.shared.categories', ['categories' => $categories, 'ids' => $product])
  124. </div>
  125. </div>
  126. <div class="row">
  127. <div class="box-footer">
  128. <div class="btn-group">
  129. <a href="{{ route('admin.products.index') }}" class="btn btn-default btn-sm">Back</a>
  130. <button type="submit" class="btn btn-primary btn-sm">Update</button>
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. <div role="tabpanel" class="tab-pane @if(request()->has('combination')) active @endif" id="combinations">
  136. <div class="row">
  137. <div class="col-md-4">
  138. @include('admin.products.create-attributes', compact('attributes'))
  139. </div>
  140. <div class="col-md-8">
  141. @include('admin.products.attributes', compact('productAttributes'))
  142. </div>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. </div>
  149. </form>
  150. </div>
  151. <!-- /.box -->
  152. </section>
  153. <!-- /.content -->
  154. @endsection
  155. @section('css')
  156. <style type="text/css">
  157. label.checkbox-inline {
  158. padding: 10px 5px;
  159. display: block;
  160. margin-bottom: 5px;
  161. }
  162. label.checkbox-inline > input[type="checkbox"] {
  163. margin-left: 10px;
  164. }
  165. ul.attribute-lists > li > label:hover {
  166. background: #3c8dbc;
  167. color: #fff;
  168. }
  169. ul.attribute-lists > li {
  170. background: #eee;
  171. }
  172. ul.attribute-lists > li:hover {
  173. background: #ccc;
  174. }
  175. ul.attribute-lists > li {
  176. margin-bottom: 15px;
  177. padding: 15px;
  178. }
  179. </style>
  180. @endsection
  181. @section('js')
  182. <script type="text/javascript">
  183. function backToInfoTab() {
  184. $('#tablist > li:first-child').addClass('active');
  185. $('#tablist > li:last-child').removeClass('active');
  186. $('#tabcontent > div:first-child').addClass('active');
  187. $('#tabcontent > div:last-child').removeClass('active');
  188. }
  189. $(document).ready(function () {
  190. const checkbox = $('input.attribute');
  191. $(checkbox).on('change', function () {
  192. const attributeId = $(this).val();
  193. if ($(this).is(':checked')) {
  194. $('#attributeValue' + attributeId).attr('disabled', false);
  195. } else {
  196. $('#attributeValue' + attributeId).attr('disabled', true);
  197. }
  198. const count = checkbox.filter(':checked').length;
  199. if (count > 0) {
  200. $('#productAttributeQuantity').attr('disabled', false);
  201. $('#productAttributePrice').attr('disabled', false);
  202. $('#salePrice').attr('disabled', false);
  203. $('#default').attr('disabled', false);
  204. $('#createCombinationBtn').attr('disabled', false);
  205. $('#combination').attr('disabled', false);
  206. } else {
  207. $('#productAttributeQuantity').attr('disabled', true);
  208. $('#productAttributePrice').attr('disabled', true);
  209. $('#salePrice').attr('disabled', true);
  210. $('#default').attr('disabled', true);
  211. $('#createCombinationBtn').attr('disabled', true);
  212. $('#combination').attr('disabled', true);
  213. }
  214. });
  215. });
  216. </script>
  217. @endsection