product_details.blade.php 73 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127
  1. @extends('frontend.layouts.app')
  2. @section('meta_title'){{ $detailedProduct->meta_title }}@stop
  3. @section('meta_description'){{ $detailedProduct->meta_description }}@stop
  4. @section('meta_keywords'){{ $detailedProduct->tags }}@stop
  5. @section('meta')
  6. <!-- Schema.org markup for Google+ -->
  7. <meta itemprop="name" content="{{ $detailedProduct->meta_title }}">
  8. <meta itemprop="description" content="{{ $detailedProduct->meta_description }}">
  9. <meta itemprop="image" content="{{ uploaded_asset($detailedProduct->meta_img) }}">
  10. <!-- Twitter Card data -->
  11. <meta name="twitter:card" content="product">
  12. <meta name="twitter:site" content="@publisher_handle">
  13. <meta name="twitter:title" content="{{ $detailedProduct->meta_title }}">
  14. <meta name="twitter:description" content="{{ $detailedProduct->meta_description }}">
  15. <meta name="twitter:creator" content="@author_handle">
  16. <meta name="twitter:image" content="{{ uploaded_asset($detailedProduct->meta_img) }}">
  17. <meta name="twitter:data1" content="{{ single_price($detailedProduct->unit_price) }}">
  18. <meta name="twitter:label1" content="Price">
  19. <!-- Open Graph data -->
  20. <meta property="og:title" content="{{ $detailedProduct->meta_title }}" />
  21. <meta property="og:type" content="og:product" />
  22. <meta property="og:url" content="{{ route('product', $detailedProduct->slug) }}" />
  23. <meta property="og:image" content="{{ uploaded_asset($detailedProduct->meta_img) }}" />
  24. <meta property="og:description" content="{{ $detailedProduct->meta_description }}" />
  25. <meta property="og:site_name" content="{{ get_setting('meta_title') }}" />
  26. <meta property="og:price:amount" content="{{ single_price($detailedProduct->unit_price) }}" />
  27. <meta property="product:price:currency"
  28. content="{{ \App\Models\Currency::findOrFail(get_setting('system_default_currency'))->code }}" />
  29. <meta property="fb:app_id" content="{{ env('FACEBOOK_PIXEL_ID') }}">
  30. @endsection
  31. @section('content')
  32. <section class="mb-4 pt-3">
  33. <div class="container">
  34. <div class="bg-white shadow-sm rounded p-3">
  35. <div class="row">
  36. <div class="col-xl-5 col-lg-6 mb-4">
  37. <div class="sticky-top z-3 row gutters-10">
  38. @php
  39. $photos = explode(',', $detailedProduct->photos);
  40. @endphp
  41. <div class="col order-1 order-md-2">
  42. <div class="aiz-carousel product-gallery" data-nav-for='.product-gallery-thumb'
  43. data-fade='true' data-auto-height='true'>
  44. @foreach ($photos as $key => $photo)
  45. <div class="carousel-box img-zoom rounded">
  46. <img class="img-fluid lazyload"
  47. src="{{ static_asset('assets/img/placeholder.jpg') }}"
  48. data-src="{{ uploaded_asset($photo) }}"
  49. onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
  50. </div>
  51. @endforeach
  52. @foreach ($detailedProduct->stocks as $key => $stock)
  53. @if ($stock->image != null)
  54. <div class="carousel-box img-zoom rounded">
  55. <img class="img-fluid lazyload"
  56. src="{{ static_asset('assets/img/placeholder.jpg') }}"
  57. data-src="{{ uploaded_asset($stock->image) }}"
  58. onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
  59. </div>
  60. @endif
  61. @endforeach
  62. </div>
  63. </div>
  64. <div class="col-12 col-md-auto w-md-80px order-2 order-md-1 mt-3 mt-md-0">
  65. <div class="aiz-carousel product-gallery-thumb" data-items='5'
  66. data-nav-for='.product-gallery' data-vertical='true' data-vertical-sm='false'
  67. data-focus-select='true' data-arrows='true'>
  68. @foreach ($photos as $key => $photo)
  69. <div class="carousel-box c-pointer border p-1 rounded">
  70. <img class="lazyload mw-100 size-50px mx-auto"
  71. src="{{ static_asset('assets/img/placeholder.jpg') }}"
  72. data-src="{{ uploaded_asset($photo) }}"
  73. onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
  74. </div>
  75. @endforeach
  76. @foreach ($detailedProduct->stocks as $key => $stock)
  77. @if ($stock->image != null)
  78. <div class="carousel-box c-pointer border p-1 rounded"
  79. data-variation="{{ $stock->variant }}">
  80. <img class="lazyload mw-100 size-50px mx-auto"
  81. src="{{ static_asset('assets/img/placeholder.jpg') }}"
  82. data-src="{{ uploaded_asset($stock->image) }}"
  83. onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
  84. </div>
  85. @endif
  86. @endforeach
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. <div class="col-xl-7 col-lg-6">
  92. <div class="text-left">
  93. <h1 class="mb-2 fs-20 fw-600">
  94. {{ $detailedProduct->getTranslation('name') }}
  95. </h1>
  96. <div class="row align-items-center">
  97. <div class="col-12">
  98. @php
  99. $total = 0;
  100. $total += $detailedProduct->reviews->count();
  101. @endphp
  102. <span class="rating">
  103. {{ renderStarRating($detailedProduct->rating) }}
  104. </span>
  105. <span class="ml-1 opacity-50">({{ $total }}
  106. {{ translate('reviews') }})</span>
  107. </div>
  108. @if ($detailedProduct->est_shipping_days)
  109. <div class="col-auto ml">
  110. <small class="mr-2 opacity-50">{{ translate('Estimate Shipping Time') }}:
  111. </small>{{ $detailedProduct->est_shipping_days }} {{ translate('Days') }}
  112. </div>
  113. <!-\u6b63\u7248\u0071\u0071\u0034\u0039\u0035\u0032\u0020\u0038\u0038\u0038\u0037->
  114. @endif
  115. </div>
  116. <hr>
  117. <div class="row align-items-center">
  118. <div class="col-auto">
  119. <small class="mr-2 opacity-50">{{ translate('Sold by') }}: </small><br>
  120. @if ($detailedProduct->added_by == 'seller' && get_setting('vendor_system_activation') == 1)
  121. <a href="{{ route('shop.visit', $detailedProduct->user->shop->slug) }}"
  122. class="text-reset">{{ $detailedProduct->user->shop->name }}</a>
  123. @else
  124. {{ translate('Inhouse product') }}
  125. @endif
  126. </div>
  127. @if (get_setting('conversation_system') == 1)
  128. <div class="col-auto">
  129. <button class="btn btn-sm btn-soft-primary"
  130. onclick="show_chat_modal()">{{ translate('Message Seller') }}</button>
  131. </div>
  132. @endif
  133. @if ($detailedProduct->user->shop && $detailedProduct->user->shop->online_ervice)
  134. <a target="_blank" href="{{$detailedProduct->user->shop->online_ervice}}" class="col-auto" style="padding-right: 0px;">
  135. <button class="btn btn-sm btn-soft-primary" >{{ translate('Online Service') }}</button>
  136. </a>
  137. @endif
  138. @if ($detailedProduct->brand != null)
  139. <div class="col-auto">
  140. <a href="{{ route('products.brand', $detailedProduct->brand->slug) }}">
  141. <img src="{{ uploaded_asset($detailedProduct->brand->logo) }}"
  142. alt="{{ $detailedProduct->brand->getTranslation('name') }}"
  143. height="30">
  144. </a>
  145. </div>
  146. @endif
  147. </div>
  148. <hr>
  149. @if ($detailedProduct->wholesale_product)
  150. <table class="table mb-0">
  151. <thead>
  152. <tr>
  153. <th>{{ translate('Min Qty') }}</th>
  154. <th>{{ translate('Max Qty') }}</th>
  155. <th>{{ translate('Unit Price') }}</th>
  156. </tr>
  157. </thead>
  158. <tbody>
  159. @foreach ($detailedProduct->stocks->first()->wholesalePrices as $wholesalePrice)
  160. <tr>
  161. <td>{{ $wholesalePrice->min_qty }}</td>
  162. <td>{{ $wholesalePrice->max_qty }}</td>
  163. <td>{{ single_price($wholesalePrice->price) }}</td>
  164. </tr>
  165. @endforeach
  166. </tbody>
  167. </table>
  168. @else
  169. @if (home_price($detailedProduct) != home_discounted_price($detailedProduct))
  170. <div class="row no-gutters mt-3">
  171. <div class="col-sm-2">
  172. <div class="opacity-50 my-2">{{ translate('Price') }}:</div>
  173. </div>
  174. <div class="col-sm-10">
  175. <div class="fs-20 opacity-60">
  176. <del>
  177. {{ home_price($detailedProduct) }}
  178. @if ($detailedProduct->unit != null)
  179. <span>/{{ $detailedProduct->getTranslation('unit') }}</span>
  180. @endif
  181. </del>
  182. </div>
  183. </div>
  184. </div>
  185. <div class="row no-gutters my-2">
  186. <div class="col-sm-2">
  187. <div class="opacity-50">{{ translate('Discount Price') }}:</div>
  188. </div>
  189. <div class="col-sm-10">
  190. <div class="">
  191. <strong class="h2 fw-600 text-primary">
  192. {{ home_discounted_price($detailedProduct) }}
  193. </strong>
  194. @if ($detailedProduct->unit != null)
  195. <span
  196. class="opacity-70">/{{ $detailedProduct->getTranslation('unit') }}</span>
  197. @endif
  198. </div>
  199. </div>
  200. </div>
  201. @else
  202. <div class="row no-gutters mt-3">
  203. <div class="col-sm-2">
  204. <div class="opacity-50 my-2">{{ translate('Price') }}:</div>
  205. </div>
  206. <div class="col-sm-10">
  207. <div class="">
  208. <strong class="h2 fw-600 text-primary">
  209. {{ home_discounted_price($detailedProduct) }}
  210. </strong>
  211. @if ($detailedProduct->unit != null)
  212. <span
  213. class="opacity-70">/{{ $detailedProduct->getTranslation('unit') }}</span>
  214. @endif
  215. </div>
  216. </div>
  217. </div>
  218. @endif
  219. @endif
  220. @if (addon_is_activated('club_point') && $detailedProduct->earn_point > 0)
  221. <div class="row no-gutters mt-4">
  222. <div class="col-sm-2">
  223. <div class="opacity-50 my-2">{{ translate('Club Point') }}:</div>
  224. </div>
  225. <div class="col-sm-10">
  226. <div
  227. class="d-inline-block rounded px-2 bg-soft-primary border-soft-primary border">
  228. <span class="strong-700">{{ $detailedProduct->earn_point }}</span>
  229. </div>
  230. </div>
  231. </div>
  232. @endif
  233. <hr>
  234. <form id="option-choice-form">
  235. @csrf
  236. <input type="hidden" name="id" value="{{ $detailedProduct->id }}">
  237. @if ($detailedProduct->choice_options != null)
  238. @foreach (json_decode($detailedProduct->choice_options) as $key => $choice)
  239. <div class="row no-gutters">
  240. <div class="col-sm-2">
  241. <div class="opacity-50 my-2">
  242. {{ \App\Models\Attribute::find($choice->attribute_id)->getTranslation('name') }}:
  243. </div>
  244. </div>
  245. <div class="col-sm-10">
  246. <div class="aiz-radio-inline">
  247. @foreach ($choice->values as $key => $value)
  248. <label class="aiz-megabox pl-0 mr-2">
  249. <input type="radio"
  250. name="attribute_id_{{ $choice->attribute_id }}"
  251. value="{{ $value }}"
  252. @if ($key == 0) checked @endif>
  253. <span
  254. class="aiz-megabox-elem rounded d-flex align-items-center justify-content-center py-2 px-3 mb-2">
  255. {{ $value }}
  256. </span>
  257. </label>
  258. @endforeach
  259. </div>
  260. </div>
  261. </div>
  262. @endforeach
  263. @endif
  264. @if (count(json_decode($detailedProduct->colors)) > 0)
  265. <div class="row no-gutters">
  266. <div class="col-sm-2">
  267. <div class="opacity-50 my-2">{{ translate('Color') }}:</div>
  268. </div>
  269. <div class="col-sm-10">
  270. <div class="aiz-radio-inline">
  271. @foreach (json_decode($detailedProduct->colors) as $key => $color)
  272. <label class="aiz-megabox pl-0 mr-2" data-toggle="tooltip"
  273. data-title="{{ \App\Models\Color::where('code', $color)->first()->name }}">
  274. <input type="radio" name="color"
  275. value="{{ \App\Models\Color::where('code', $color)->first()->name }}"
  276. @if ($key == 0) checked @endif>
  277. <span
  278. class="aiz-megabox-elem rounded d-flex align-items-center justify-content-center p-1 mb-2">
  279. <span class="size-30px d-inline-block rounded"
  280. style="background: {{ $color }};"></span>
  281. </span>
  282. </label>
  283. @endforeach
  284. </div>
  285. </div>
  286. </div>
  287. <hr>
  288. @endif
  289. <!-- Quantity + Add to cart -->
  290. <div class="row no-gutters">
  291. <div class="col-sm-2">
  292. <div class="opacity-50 my-2">{{ translate('Quantity') }}:</div>
  293. </div>
  294. <div class="col-sm-10">
  295. <div class="product-quantity d-flex align-items-center">
  296. <div class="row no-gutters align-items-center aiz-plus-minus mr-3"
  297. style="width: 130px;">
  298. <button class="btn col-auto btn-icon btn-sm btn-circle btn-light"
  299. type="button" data-type="minus" data-field="quantity"
  300. disabled="">
  301. <i class="las la-minus"></i>
  302. </button>
  303. <input type="number" name="quantity"
  304. class="col border-0 text-center flex-grow-1 fs-16 input-number"
  305. placeholder="1" value="{{ $detailedProduct->min_qty }}"
  306. min="{{ $detailedProduct->min_qty }}" max="10"
  307. lang="en" onchange="getVariantPrice()">
  308. <button class="btn col-auto btn-icon btn-sm btn-circle btn-light"
  309. type="button" data-type="plus" data-field="quantity">
  310. <i class="las la-plus"></i>
  311. </button>
  312. </div>
  313. @php
  314. $qty = 0;
  315. foreach ($detailedProduct->stocks as $key => $stock) {
  316. $qty += $stock->qty;
  317. }
  318. @endphp
  319. <div class="avialable-amount opacity-60">
  320. @if ($detailedProduct->stock_visibility_state == 'quantity')
  321. (<span id="available-quantity">{{ $qty }}</span>
  322. {{ translate('available') }})
  323. @elseif($detailedProduct->stock_visibility_state == 'text' && $qty >= 1)
  324. (<span id="available-quantity">{{ translate('In Stock') }}</span>)
  325. @endif
  326. </div>
  327. </div>
  328. </div>
  329. </div>
  330. <hr>
  331. <div class="row no-gutters pb-3 d-none" id="chosen_price_div">
  332. <div class="col-sm-2">
  333. <div class="opacity-50 my-2">{{ translate('Total Price') }}:</div>
  334. </div>
  335. <div class="col-sm-10">
  336. <div class="product-price">
  337. <strong id="chosen_price" class="h4 fw-600 text-primary">
  338. </strong>
  339. </div>
  340. </div>
  341. </div>
  342. </form>
  343. <div class="mt-3">
  344. @if ($detailedProduct->external_link != null)
  345. <a type="button" class="btn btn-primary buy-now fw-600"
  346. href="{{ $detailedProduct->external_link }}">
  347. <i class="la la-share"></i> {{ translate($detailedProduct->external_link_btn) }}
  348. </a>
  349. @else
  350. <button type="button" class="btn btn-soft-primary mr-2 add-to-cart fw-600"
  351. onclick="addToCart()">
  352. <i class="las la-shopping-bag"></i>
  353. <span class="d-none d-md-inline-block"> {{ translate('Add to cart') }}</span>
  354. </button>
  355. <button type="button" class="btn btn-primary buy-now fw-600" onclick="buyNow()">
  356. <i class="la la-shopping-cart"></i> {{ translate('Buy Now') }}
  357. </button>
  358. @endif
  359. <button type="button" class="btn btn-secondary out-of-stock fw-600 d-none" disabled>
  360. <i class="la la-cart-arrow-down"></i> {{ translate('Out of Stock') }}
  361. </button>
  362. </div>
  363. <div class="d-table width-100 mt-3">
  364. <div class="d-table-cell">
  365. <!-- Add to wishlist button -->
  366. <button type="button" class="btn pl-0 btn-link fw-600"
  367. onclick="addToWishList({{ $detailedProduct->id }})">
  368. {{ translate('Add to wishlist') }}
  369. </button>
  370. <!-- Add to compare button -->
  371. <button type="button" class="btn btn-link btn-icon-left fw-600"
  372. onclick="addToCompare({{ $detailedProduct->id }})">
  373. {{ translate('Add to compare') }}
  374. </button>
  375. @if (Auth::check() && addon_is_activated('affiliate_system') && (\App\Models\AffiliateOption::where('type', 'product_sharing')->first()->status || \App\Models\AffiliateOption::where('type', 'category_wise_affiliate')->first()->status) && Auth::user()->affiliate_user != null && Auth::user()->affiliate_user->status)
  376. @php
  377. if (Auth::check()) {
  378. if (Auth::user()->referral_code == null) {
  379. Auth::user()->referral_code = substr(Auth::user()->id . Str::random(10), 0, 10);
  380. Auth::user()->save();
  381. }
  382. $referral_code = Auth::user()->referral_code;
  383. $referral_code_url = URL::to('/product') . '/' . $detailedProduct->slug . "?product_referral_code=$referral_code";
  384. }
  385. @endphp
  386. <div>
  387. <button type=button id="ref-cpurl-btn" class="btn btn-sm btn-secondary"
  388. data-attrcpy="{{ translate('Copied') }}"
  389. onclick="CopyToClipboard(this)"
  390. data-url="{{ $referral_code_url }}">{{ translate('Copy the Promote Link') }}</button>
  391. </div>
  392. @endif
  393. </div>
  394. </div>
  395. @php
  396. $refund_sticker = get_setting('refund_sticker');
  397. @endphp
  398. @if (addon_is_activated('refund_request'))
  399. <div class="row no-gutters mt-3">
  400. <div class="col-2">
  401. <div class="opacity-50 mt-2">{{ translate('Refund') }}:</div>
  402. </div>
  403. <div class="col-10">
  404. <a href="{{ route('returnpolicy') }}" target="_blank">
  405. @if ($refund_sticker != null)
  406. <img src="{{ uploaded_asset($refund_sticker) }}" height="36">
  407. @else
  408. <img src="{{ static_asset('assets/img/refund-sticker.jpg') }}"
  409. height="36">
  410. @endif
  411. </a>
  412. <a href="{{ route('returnpolicy') }}" class="ml-2"
  413. target="_blank">{{ translate('View Policy') }}</a>
  414. </div>
  415. </div>
  416. @endif
  417. <div class="row no-gutters mt-4">
  418. <div class="col-sm-2">
  419. <div class="opacity-50 my-2">{{ translate('Share') }}:</div>
  420. </div>
  421. <div class="col-sm-10">
  422. <div class="aiz-share"></div>
  423. </div>
  424. </div>
  425. </div>
  426. </div>
  427. </div>
  428. </div>
  429. </div>
  430. </section>
  431. <section class="mb-4">
  432. <div class="container">
  433. <div class="row gutters-10">
  434. <div class="col-xl-3 order-1 order-xl-0">
  435. @if ($detailedProduct->added_by == 'seller' && $detailedProduct->user->shop != null)
  436. <div class="bg-white shadow-sm mb-3">
  437. <div class="position-relative p-3 text-left">
  438. @if ($detailedProduct->user->shop->verification_status)
  439. <div class="absolute-top-right p-2 bg-white z-1">
  440. <svg version="1.1" xmlns="http://www.w3.org/2000/svg"
  441. xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
  442. viewBox="0 0 287.5 442.2" width="22" height="34">
  443. <polygon style="fill:#F8B517;"
  444. points="223.4,442.2 143.8,376.7 64.1,442.2 64.1,215.3 223.4,215.3 " />
  445. <circle style="fill:#FBD303;" cx="143.8" cy="143.8"
  446. r="143.8" />
  447. <circle style="fill:#F8B517;" cx="143.8" cy="143.8"
  448. r="93.6" />
  449. <polygon style="fill:#FCFCFD;"
  450. points="143.8,55.9 163.4,116.6 227.5,116.6 175.6,154.3 195.6,215.3 143.8,177.7 91.9,215.3 111.9,154.3
  451. 60,116.6 124.1,116.6 " />
  452. </svg>
  453. </div>
  454. @endif
  455. <div class="opacity-50 fs-12 border-bottom">{{ translate('Sold by') }}</div>
  456. <a href="{{ route('shop.visit', $detailedProduct->user->shop->slug) }}"
  457. class="text-reset d-block fw-600">
  458. {{ $detailedProduct->user->shop->name }}
  459. @if ($detailedProduct->user->shop->verification_status == 1)
  460. <span class="ml-2"><i class="fa fa-check-circle"
  461. style="color:green"></i></span>
  462. @else
  463. <span class="ml-2"><i class="fa fa-times-circle" style="color:red"></i></span>
  464. @endif
  465. </a>
  466. <div class="location opacity-70">{{ $detailedProduct->user->shop->address }}</div>
  467. <div class="text-center border rounded p-2 mt-3">
  468. <div class="rating">
  469. @if ($total > 0)
  470. {{ renderStarRating($detailedProduct->user->shop->rating) }}
  471. @else
  472. {{ renderStarRating(0) }}
  473. @endif
  474. </div>
  475. <div class="opacity-60 fs-12">({{ count($lists) }}
  476. {{ translate('customer reviews') }})</div>
  477. </div>
  478. </div>
  479. <div class="row no-gutters align-items-center border-top">
  480. <div class="col">
  481. <a href="{{ route('shop.visit', $detailedProduct->user->shop->slug) }}"
  482. class="d-block btn btn-soft-primary rounded-0">{{ translate('Visit Store') }}</a>
  483. </div>
  484. <div class="col">
  485. <ul class="social list-inline mb-0">
  486. <li class="list-inline-item mr-0">
  487. <a href="{{ $detailedProduct->user->shop->facebook }}" class="facebook"
  488. target="_blank">
  489. <i class="lab la-facebook-f opacity-60"></i>
  490. </a>
  491. </li>
  492. <li class="list-inline-item mr-0">
  493. <a href="{{ $detailedProduct->user->shop->google }}" class="google"
  494. target="_blank">
  495. <i class="lab la-google opacity-60"></i>
  496. </a>
  497. </li>
  498. <li class="list-inline-item mr-0">
  499. <a href="{{ $detailedProduct->user->shop->twitter }}" class="twitter"
  500. target="_blank">
  501. <i class="lab la-twitter opacity-60"></i>
  502. </a>
  503. </li>
  504. <li class="list-inline-item">
  505. <a href="{{ $detailedProduct->user->shop->youtube }}" class="youtube"
  506. target="_blank">
  507. <i class="lab la-youtube opacity-60"></i>
  508. </a>
  509. </li>
  510. </ul>
  511. </div>
  512. </div>
  513. </div>
  514. @endif
  515. <div class="bg-white rounded shadow-sm mb-3">
  516. <div class="p-3 border-bottom fs-16 fw-600">
  517. {{ translate('Top Selling Products') }}
  518. </div>
  519. <div class="p-3">
  520. <ul class="list-group list-group-flush">
  521. @foreach ( filter_products(\App\Models\Product::query()->from("products as p")->where('user_id', $detailedProduct->user_id)->orderBy('num_of_sale', 'desc'))->limit(6)->get()
  522. as $key => $top_product)
  523. <li class="py-3 px-0 list-group-item border-light">
  524. <div class="row gutters-10 align-items-center">
  525. <div class="col-5">
  526. <a href="{{ route('product', $top_product->slug) }}"
  527. class="d-block text-reset">
  528. <img class="img-fit lazyload h-xxl-110px h-xl-80px h-120px"
  529. src="{{ static_asset('assets/img/placeholder.jpg') }}"
  530. data-src="{{ uploaded_asset($top_product->thumbnail_img) }}"
  531. alt="{{ $top_product->getTranslation('name') }}"
  532. onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
  533. </a>
  534. </div>
  535. <div class="col-7 text-left">
  536. <h4 class="fs-13 text-truncate-2">
  537. <a href="{{ route('product', $top_product->slug) }}"
  538. class="d-block text-reset">{{ $top_product->getTranslation('name') }}</a>
  539. </h4>
  540. <div class="rating rating-sm mt-1">
  541. {{ renderStarRating($top_product->rating) }}
  542. </div>
  543. <div class="mt-2">
  544. <span
  545. class="fs-17 fw-600 text-primary">{{ home_discounted_base_price($top_product) }}</span>
  546. </div>
  547. </div>
  548. </div>
  549. </li>
  550. @endforeach
  551. </ul>
  552. </div>
  553. </div>
  554. </div>
  555. <div class="col-xl-9 order-0 order-xl-1">
  556. <div class="bg-white mb-3 shadow-sm rounded">
  557. <div class="nav border-bottom aiz-nav-tabs">
  558. <a href="#tab_default_1" data-toggle="tab"
  559. class="p-3 fs-16 fw-600 text-reset active show">{{ translate('Description') }}</a>
  560. @if ($detailedProduct->video_link != null)
  561. <a href="#tab_default_2" data-toggle="tab"
  562. class="p-3 fs-16 fw-600 text-reset">{{ translate('Video') }}</a>
  563. @endif
  564. @if ($detailedProduct->pdf != null)
  565. <a href="#tab_default_3" data-toggle="tab"
  566. class="p-3 fs-16 fw-600 text-reset">{{ translate('Downloads') }}</a>
  567. @endif
  568. <a href="#tab_default_4" data-toggle="tab"
  569. class="p-3 fs-16 fw-600 text-reset">{{ translate('Reviews') }}</a>
  570. </div>
  571. <div class="tab-content pt-0">
  572. <div class="tab-pane fade active show" id="tab_default_1">
  573. <div class="p-4">
  574. <div class="mw-100 overflow-hidden text-left aiz-editor-data">
  575. <?php echo $detailedProduct->getTranslation('description'); ?>
  576. </div>
  577. </div>
  578. </div>
  579. <div class="tab-pane fade" id="tab_default_2">
  580. <div class="p-4">
  581. <div class="embed-responsive embed-responsive-16by9">
  582. @if ($detailedProduct->video_provider == 'youtube' && isset(explode('=', $detailedProduct->video_link)[1]))
  583. <iframe class="embed-responsive-item"
  584. src="https://www.youtube.com/embed/{{ get_url_params($detailedProduct->video_link, 'v') }}"></iframe>
  585. @elseif ($detailedProduct->video_provider == 'dailymotion' && isset(explode('video/', $detailedProduct->video_link)[1]))
  586. <iframe class="embed-responsive-item"
  587. src="https://www.dailymotion.com/embed/video/{{ explode('video/', $detailedProduct->video_link)[1] }}"></iframe>
  588. @elseif ($detailedProduct->video_provider == 'vimeo' && isset(explode('vimeo.com/', $detailedProduct->video_link)[1]))
  589. <iframe
  590. src="https://player.vimeo.com/video/{{ explode('vimeo.com/', $detailedProduct->video_link)[1] }}"
  591. width="500" height="281" frameborder="0" webkitallowfullscreen
  592. mozallowfullscreen allowfullscreen></iframe>
  593. @endif
  594. </div>
  595. </div>
  596. </div>
  597. <div class="tab-pane fade" id="tab_default_3">
  598. <div class="p-4 text-center ">
  599. <a href="{{ uploaded_asset($detailedProduct->pdf) }}"
  600. class="btn btn-primary">{{ translate('Download') }}</a>
  601. </div>
  602. </div>
  603. <div class="tab-pane fade" id="tab_default_4">
  604. <div class="p-4">
  605. <ul class="list-group list-group-flush">
  606. @foreach ($lists as $key => $review)
  607. <li class="media list-group-item d-flex">
  608. <span class="avatar avatar-md mr-3">
  609. @if ($review['author_portrait']!='')
  610. <img class="lazyload" src="https://s-cf-tw.shopeesz.com/file/<?=$review['author_portrait']?>" >
  611. @else
  612. <img class="lazyload" src="https://xiapi.xiapibuy.com/deo/shopee/shopee-mobilemall-live-sg/f88abc3256846ba9a4af91621bc3f9c4.png" >
  613. @endif
  614. </span>
  615. <div class="media-body text-left">
  616. <div class="d-flex justify-content-between">
  617. <h3 class="fs-15 fw-600 mb-0">
  618. <?=$review['author_username']?>
  619. </h3>
  620. <span class="rating rating-sm">
  621. @for ($i = 0; $i < $review['rating_star']; $i++)
  622. <i class="las la-star active"></i>
  623. @endfor
  624. @for ($i = 0; $i < 5 - $review['rating_star']; $i++)
  625. <i class="las la-star"></i>
  626. @endfor
  627. </span>
  628. </div>
  629. <div class="opacity-60 mb-2">
  630. <?=$review['comment']?></div>
  631. <p class="comment-text">
  632. <?=date('Y-m-d H:i:s',$review['mtime'])?>
  633. </p>
  634. </div>
  635. </li>
  636. @endforeach
  637. @foreach ($detailedProduct->reviews as $key => $review)
  638. @if ($review->user != null)
  639. <li class="media list-group-item d-flex">
  640. <span class="avatar avatar-md mr-3">
  641. <img class="lazyload"
  642. src="{{ static_asset('assets/img/placeholder.jpg') }}"
  643. onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';"
  644. @if ($review->user->avatar_original != null) data-src="{{ uploaded_asset($review->user->avatar_original) }}"
  645. @else
  646. data-src="{{ static_asset('assets/img/placeholder.jpg') }}" @endif>
  647. </span>
  648. <div class="media-body text-left">
  649. <div class="d-flex justify-content-between">
  650. <h3 class="fs-15 fw-600 mb-0">{{ $review->user->name }}
  651. </h3>
  652. <span class="rating rating-sm">
  653. @for ($i = 0; $i < $review->rating; $i++)
  654. <i class="las la-star active"></i>
  655. @endfor
  656. @for ($i = 0; $i < 5 - $review->rating; $i++)
  657. <i class="las la-star"></i>
  658. @endfor
  659. </span>
  660. </div>
  661. <div class="opacity-60 mb-2">
  662. {{ date('d-m-Y', strtotime($review->created_at)) }}</div>
  663. <p class="comment-text">
  664. {{ $review->comment }}
  665. </p>
  666. </div>
  667. </li>
  668. @endif
  669. @endforeach
  670. </ul>
  671. @if (count($lists) <= 0)
  672. <div class="text-center fs-18 opacity-70">
  673. {{ translate('There have been no reviews for this product yet.') }}
  674. </div>
  675. @endif
  676. <!--\u76d7\u7248\u9632\u62a4\u0020\u0020\u0071\u0069\u0020\u0065\u0020\u0034\u0039\u0035\u0032\u0020\u0038\u0038\u0038\u0037-->
  677. </div>
  678. </div>
  679. </div>
  680. </div>
  681. <div class="bg-white rounded shadow-sm">
  682. <div class="border-bottom p-3">
  683. <h3 class="fs-16 fw-600 mb-0">
  684. <span class="mr-4">{{ translate('Related products') }}</span>
  685. </h3>
  686. </div>
  687. <div class="p-3">
  688. <div class="aiz-carousel gutters-5 half-outside-arrow" data-items="5" data-xl-items="3"
  689. data-lg-items="4" data-md-items="3" data-sm-items="2" data-xs-items="2"
  690. data-arrows='true' data-infinite='true'>
  691. @foreach ( filter_products(\App\Models\Product::query()->from("products as p")->where('category_id', $detailedProduct->category_id)->where('id', '!=', $detailedProduct->id))->limit(10)->get()
  692. as $key => $related_product)
  693. <div class="carousel-box">
  694. <div
  695. class="aiz-card-box border border-light rounded hov-shadow-md my-2 has-transition">
  696. <div class="">
  697. <a href="{{ route('product', $related_product->slug) }}"
  698. class="d-block">
  699. <img class="img-fit lazyload mx-auto h-140px h-md-210px"
  700. src="{{ static_asset('assets/img/placeholder.jpg') }}"
  701. data-src="{{ uploaded_asset($related_product->thumbnail_img) }}"
  702. alt="{{ $related_product->getTranslation('name') }}"
  703. onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
  704. </a>
  705. </div>
  706. <div class="p-md-3 p-2 text-left">
  707. <div class="fs-15">
  708. @if (home_base_price($related_product) != home_discounted_base_price($related_product))
  709. <del
  710. class="fw-600 opacity-50 mr-1">{{ home_base_price($related_product) }}</del>
  711. @endif
  712. <span
  713. class="fw-700 text-primary">{{ home_discounted_base_price($related_product) }}</span>
  714. </div>
  715. <div class="rating rating-sm mt-1">
  716. {{ renderStarRating($related_product->rating) }}
  717. </div>
  718. <h3 class="fw-600 fs-13 text-truncate-2 lh-1-4 mb-0 h-35px">
  719. <a href="{{ route('product', $related_product->slug) }}"
  720. class="d-block text-reset">{{ $related_product->getTranslation('name') }}</a>
  721. </h3>
  722. @if (addon_is_activated('club_point'))
  723. <div
  724. class="rounded px-2 mt-2 bg-soft-primary border-soft-primary border">
  725. {{ translate('Club Point') }}:
  726. <span
  727. class="fw-700 float-right">{{ $related_product->earn_point }}</span>
  728. </div>
  729. @endif
  730. </div>
  731. </div>
  732. </div>
  733. @endforeach
  734. </div>
  735. </div>
  736. </div>
  737. {{-- Product Query --}}
  738. @if(get_setting('product_query_activation') == 1)
  739. <div class="bg-white rounded shadow-sm mt-3">
  740. <div class="border-bottom p-3">
  741. <h3 class="fs-18 fw-600 mb-0">
  742. <span>{{ translate(' Product Queries ') }} ({{ $total_query }})</span>
  743. </h3>
  744. </div>
  745. @guest
  746. <p class="fs-14 fw-400 mb-0 ml-3 mt-2"><a
  747. href="{{ route('user.login') }}">{{ translate('Login') }}</a> or <a class="mr-1"
  748. href="{{ route('user.registration') }}">{{ translate('Register ') }}</a>{{ translate(' to submit your questions to seller') }}
  749. </p>
  750. @endguest
  751. @auth
  752. <div class="query form p-3">
  753. @if ($errors->any())
  754. <div class="alert alert-danger">
  755. <ul>
  756. @foreach ($errors->all() as $error)
  757. <li>{{ $error }}</li>
  758. @endforeach
  759. </ul>
  760. </div>
  761. @endif
  762. <form action="{{ route('product-queries.store') }}" method="POST">
  763. @csrf
  764. <input type="hidden" name="product" value="{{ $detailedProduct->id }}">
  765. <div class="form-group">
  766. <textarea class="form-control" rows="3" cols="40" name="question"
  767. placeholder="Write your question here..." style="resize: none;"></textarea>
  768. </div>
  769. <button type="submit" class="btn btn-primary">Submit</button>
  770. </form>
  771. </div>
  772. @php
  773. $own_product_queries = Auth::user()->product_queries->where('product_id',$detailedProduct->id);
  774. @endphp
  775. @if ($own_product_queries->count() > 0)
  776. <div class="question-area my-4 mb-0 ml-3">
  777. <div class="border-bottom py-3">
  778. <h3 class="fs-18 fw-600 mb-0">
  779. <span class="mr-4">{{ translate('My Questions') }}</span>
  780. </h3>
  781. </div>
  782. @foreach ($own_product_queries as $product_query)
  783. <div class="produc-queries border-bottom">
  784. <div class="query d-flex my-4">
  785. <span class="mt-1"><svg xmlns="http://www.w3.org/2000/svg" width="24.994"
  786. height="24.981" viewBox="0 0 24.994 24.981">
  787. <g id="Group_23909" data-name="Group 23909"
  788. transform="translate(18392.496 11044.037)">
  789. <path id="Subtraction_90" data-name="Subtraction 90"
  790. d="M1830.569-117.742a.4.4,0,0,1-.158-.035.423.423,0,0,1-.252-.446c0-.84,0-1.692,0-2.516v-2.2a5.481,5.481,0,0,1-2.391-.745,5.331,5.331,0,0,1-2.749-4.711c-.034-2.365-.018-4.769,0-7.094l0-.649a5.539,5.539,0,0,1,4.694-5.513,5.842,5.842,0,0,1,.921-.065q3.865,0,7.73,0l5.035,0a5.539,5.539,0,0,1,5.591,5.57c.01,2.577.01,5.166,0,7.693a5.54,5.54,0,0,1-4.842,5.506,6.5,6.5,0,0,1-.823.046l-3.225,0c-1.454,0-2.753,0-3.97,0a.555.555,0,0,0-.435.182c-1.205,1.214-2.435,2.445-3.623,3.636l-.062.062-1.005,1.007-.037.037-.069.069A.464.464,0,0,1,1830.569-117.742Zm7.37-11.235h0l1.914,1.521.817-.754-1.621-1.273a3.517,3.517,0,0,0,1.172-1.487,5.633,5.633,0,0,0,.418-2.267v-.58a5.629,5.629,0,0,0-.448-2.323,3.443,3.443,0,0,0-1.282-1.525,3.538,3.538,0,0,0-1.93-.53,3.473,3.473,0,0,0-1.905.534,3.482,3.482,0,0,0-1.288,1.537,5.582,5.582,0,0,0-.454,2.314v.654a5.405,5.405,0,0,0,.471,2.261,3.492,3.492,0,0,0,1.287,1.5,3.492,3.492,0,0,0,1.9.527,3.911,3.911,0,0,0,.947-.112Zm-.948-.9a2.122,2.122,0,0,1-1.812-.9,4.125,4.125,0,0,1-.652-2.457v-.667a4.008,4.008,0,0,1,.671-2.4,2.118,2.118,0,0,1,1.78-.863,2.138,2.138,0,0,1,1.824.869,4.145,4.145,0,0,1,.639,2.473v.673a4.07,4.07,0,0,1-.655,2.423A2.125,2.125,0,0,1,1836.991-129.881Z"
  791. transform="translate(-20217 -10901.814)" fill="#e62e04"
  792. stroke="rgba(0,0,0,0)" stroke-miterlimit="10"
  793. stroke-width="1" />
  794. </g>
  795. </svg></span>
  796. <div class="ml-3">
  797. <div class="fs-14">{{ strip_tags($product_query->question) }}</div>
  798. <span class="text-secondary">{{ $product_query->user->name }} </span>
  799. </div>
  800. </div>
  801. <div class="answer d-flex my-4">
  802. <span class="mt-1"> <svg xmlns="http://www.w3.org/2000/svg" width="24.99"
  803. height="24.98" viewBox="0 0 24.99 24.98">
  804. <g id="Group_23908" data-name="Group 23908"
  805. transform="translate(17952.169 11072.5)">
  806. <path id="Subtraction_89" data-name="Subtraction 89"
  807. d="M2162.9-146.2a.4.4,0,0,1-.159-.035.423.423,0,0,1-.251-.446q0-.979,0-1.958V-151.4a5.478,5.478,0,0,1-2.39-.744,5.335,5.335,0,0,1-2.75-4.712c-.034-2.355-.018-4.75,0-7.065l0-.678a5.54,5.54,0,0,1,4.7-5.513,5.639,5.639,0,0,1,.92-.064c2.527,0,5.029,0,7.437,0l5.329,0a5.538,5.538,0,0,1,5.591,5.57c.01,2.708.01,5.224,0,7.692a5.539,5.539,0,0,1-4.843,5.506,6,6,0,0,1-.822.046l-3.234,0c-1.358,0-2.691,0-3.96,0a.556.556,0,0,0-.436.182c-1.173,1.182-2.357,2.367-3.5,3.514l-1.189,1.192-.047.048-.058.059A.462.462,0,0,1,2162.9-146.2Zm5.115-12.835h3.559l.812,2.223h1.149l-3.25-8.494h-.98l-3.244,8.494h1.155l.8-2.222Zm3.226-.915h-2.888l1.441-3.974,1.447,3.972Z"
  808. transform="translate(-20109 -10901.815)" fill="#f7941d"
  809. stroke="rgba(0,0,0,0)" stroke-miterlimit="10"
  810. stroke-width="1" />
  811. </g>
  812. </svg></span>
  813. <div class="ml-3">
  814. <div class="fs-14">
  815. {{ strip_tags($product_query->reply ? $product_query->reply : translate('Seller did not respond yet')) }}
  816. </div>
  817. <span class=" text-secondary">
  818. {{ $product_query->product->user->name }} </span>
  819. </div>
  820. </div>
  821. </div>
  822. @endforeach
  823. </div>
  824. @endif
  825. @endauth
  826. <div class="pagination-area my-4 mb-0 ml-3">
  827. @include('frontend.partials.product_query_pagination')
  828. </div>
  829. </div>
  830. @endif
  831. {{-- End of Product Query --}}
  832. </div>
  833. </div>
  834. </div>
  835. </section>
  836. @endsection
  837. @section('modal')
  838. <div class="modal fade" id="chat_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
  839. aria-hidden="true">
  840. <div class="modal-dialog modal-dialog-centered modal-dialog-zoom product-modal" id="modal-size" role="document">
  841. <div class="modal-content position-relative">
  842. <div class="modal-header">
  843. <h5 class="modal-title fw-600 h5">{{ translate('Any query about this product') }}</h5>
  844. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  845. <span aria-hidden="true">&times;</span>
  846. </button>
  847. </div>
  848. <form class="" action="{{ route('conversations.store') }}" method="POST"
  849. enctype="multipart/form-data">
  850. @csrf
  851. <input type="hidden" name="product_id" value="{{ $detailedProduct->id }}">
  852. <div class="modal-body gry-bg px-3 pt-3">
  853. <div class="form-group">
  854. <input type="text" class="form-control mb-3" name="title"
  855. value="{{ $detailedProduct->name }}" placeholder="{{ translate('Product Name') }}"
  856. required>
  857. </div>
  858. <div class="form-group">
  859. <textarea class="form-control" rows="8" name="message" required
  860. placeholder="{{ translate('Your Question') }}">{{ route('product', $detailedProduct->slug) }}</textarea>
  861. </div>
  862. </div>
  863. <div class="modal-footer">
  864. <button type="button" class="btn btn-outline-primary fw-600"
  865. data-dismiss="modal">{{ translate('Cancel') }}</button>
  866. <button type="submit" class="btn btn-primary fw-600">{{ translate('Send') }}</button>
  867. </div>
  868. </form>
  869. </div>
  870. </div>
  871. </div>
  872. <!-- Modal -->
  873. <div class="modal fade" id="login_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
  874. aria-hidden="true">
  875. <div class="modal-dialog modal-dialog-zoom" role="document">
  876. <div class="modal-content">
  877. <div class="modal-header">
  878. <h6 class="modal-title fw-600">{{ translate('Login') }}</h6>
  879. <button type="button" class="close" data-dismiss="modal">
  880. <span aria-hidden="true"></span>
  881. </button>
  882. </div>
  883. <div class="modal-body">
  884. <div class="p-3">
  885. <form class="form-default" role="form" action="{{ route('cart.login.submit') }}"
  886. method="POST">
  887. @csrf
  888. <div class="form-group">
  889. @if (addon_is_activated('otp_system'))
  890. <input type="text"
  891. class="form-control h-auto form-control-lg {{ $errors->has('email') ? ' is-invalid' : '' }}"
  892. value="{{ old('email') }}" placeholder="{{ translate('Email Or Phone') }}"
  893. name="email" id="email">
  894. @else
  895. <input type="email"
  896. class="form-control h-auto form-control-lg {{ $errors->has('email') ? ' is-invalid' : '' }}"
  897. value="{{ old('email') }}" placeholder="{{ translate('Email') }}"
  898. name="email">
  899. @endif
  900. @if (addon_is_activated('otp_system'))
  901. <span class="opacity-60">{{ translate('Use country code before number') }}</span>
  902. @endif
  903. </div>
  904. <div class="form-group">
  905. <input type="password" name="password" class="form-control h-auto form-control-lg"
  906. placeholder="{{ translate('Password') }}">
  907. </div>
  908. <div class="row mb-2">
  909. <div class="col-6">
  910. <label class="aiz-checkbox">
  911. <input type="checkbox" name="remember" {{ old('remember') ? 'checked' : '' }}>
  912. <span class=opacity-60>{{ translate('Remember Me') }}</span>
  913. <span class="aiz-square-check"></span>
  914. </label>
  915. </div>
  916. <div class="col-6 text-right">
  917. <a href="{{ route('password.request') }}"
  918. class="text-reset opacity-60 fs-14">{{ translate('Forgot password?') }}</a>
  919. </div>
  920. </div>
  921. <div class="mb-5">
  922. <button type="submit"
  923. class="btn btn-primary btn-block fw-600">{{ translate('Login') }}</button>
  924. </div>
  925. </form>
  926. <div class="text-center mb-3">
  927. <p class="text-muted mb-0">{{ translate('Dont have an account?') }}</p>
  928. <a href="{{ route('user.registration') }}">{{ translate('Register Now') }}</a>
  929. </div>
  930. @if (get_setting('google_login') == 1 || get_setting('facebook_login') == 1 || get_setting('twitter_login') == 1)
  931. <div class="separator mb-3">
  932. <span class="bg-white px-3 opacity-60">{{ translate('Or Login With') }}</span>
  933. </div>
  934. <ul class="list-inline social colored text-center mb-5">
  935. @if (get_setting('facebook_login') == 1)
  936. <li class="list-inline-item">
  937. <a href="{{ route('social.login', ['provider' => 'facebook']) }}"
  938. class="facebook">
  939. <i class="lab la-facebook-f"></i>
  940. </a>
  941. </li>
  942. @endif
  943. @if (get_setting('google_login') == 1)
  944. <li class="list-inline-item">
  945. <a href="{{ route('social.login', ['provider' => 'google']) }}"
  946. class="google">
  947. <i class="lab la-google"></i>
  948. </a>
  949. </li>
  950. @endif
  951. @if (get_setting('twitter_login') == 1)
  952. <li class="list-inline-item">
  953. <a href="{{ route('social.login', ['provider' => 'twitter']) }}"
  954. class="twitter">
  955. <i class="lab la-twitter"></i>
  956. </a>
  957. </li>
  958. @endif
  959. </ul>
  960. @endif
  961. </div>
  962. </div>
  963. </div>
  964. </div>
  965. </div>
  966. @endsection
  967. @section('script')
  968. <script type="text/javascript">
  969. $(document).ready(function() {
  970. getVariantPrice();
  971. @if ($detailedProduct->source=="alibaba")
  972. imgReplace();
  973. @endif
  974. });
  975. function imgReplace(){
  976. $("#tab_default_1 img").each(function(index,element){
  977. var src = $(element).attr('data-src')
  978. if(src != undefined){
  979. $(element).attr('src', src)
  980. }
  981. })
  982. }
  983. function CopyToClipboard(e) {
  984. var url = $(e).data('url');
  985. var $temp = $("<input>");
  986. $("body").append($temp);
  987. $temp.val(url).select();
  988. try {
  989. document.execCommand("copy");
  990. AIZ.plugins.notify('success', '{{ translate('Link copied to clipboard') }}');
  991. } catch (err) {
  992. AIZ.plugins.notify('danger', '{{ translate('Oops, unable to copy') }}');
  993. }
  994. $temp.remove();
  995. // if (document.selection) {
  996. // var range = document.body.createTextRange();
  997. // range.moveToElementText(document.getElementById(containerid));
  998. // range.select().createTextRange();
  999. // document.execCommand("Copy");
  1000. // } else if (window.getSelection) {
  1001. // var range = document.createRange();
  1002. // document.getElementById(containerid).style.display = "block";
  1003. // range.selectNode(document.getElementById(containerid));
  1004. // window.getSelection().addRange(range);
  1005. // document.execCommand("Copy");
  1006. // document.getElementById(containerid).style.display = "none";
  1007. // }
  1008. // AIZ.plugins.notify('success', 'Copied');
  1009. }
  1010. function show_chat_modal() {
  1011. @if (Auth::check())
  1012. $('#chat_modal').modal('show');
  1013. @else
  1014. $('#login_modal').modal('show');
  1015. @endif
  1016. }
  1017. // Pagination using ajax
  1018. $(window).on('hashchange', function() {
  1019. if (window.location.hash) {
  1020. var page = window.location.hash.replace('#', '');
  1021. if (page == Number.NaN || page <= 0) {
  1022. return false;
  1023. } else {
  1024. getQuestions(page);
  1025. }
  1026. }
  1027. });
  1028. $(document).ready(function() {
  1029. $(document).on('click', '.pagination a', function(e) {
  1030. getQuestions($(this).attr('href').split('page=')[1]);
  1031. e.preventDefault();
  1032. });
  1033. });
  1034. function getQuestions(page) {
  1035. $.ajax({
  1036. url: '?page=' + page,
  1037. dataType: 'json',
  1038. }).done(function(data) {
  1039. $('.pagination-area').html(data);
  1040. location.hash = page;
  1041. }).fail(function() {
  1042. alert('Something went worng! Questions could not be loaded.');
  1043. });
  1044. }
  1045. // Pagination end
  1046. </script>
  1047. @endsection