Merge branch 'master' of https://github.com/bagisto/bagisto into elektronika
|
|
@ -2,6 +2,470 @@
|
|||
|
||||
This changelog consists of the bug & security fixes and new features being included in the releases listed below.
|
||||
|
||||
## **v1.4.0 (16th of March 2022)** - *Release*
|
||||
|
||||
* #5654 [feature] -Only unread notification should be shown in the notification modal box.
|
||||
|
||||
* #4787 [feature] - Unable to upload profile picture
|
||||
|
||||
* #4653 [feature] - Making billing address informations optional
|
||||
|
||||
* #4356 [feature] - Guest Checkout sucess add register
|
||||
|
||||
* #5921 [enhancement] -Notification should be received without page refresh.
|
||||
|
||||
* #5817 [enhancement] -The wishlist and the compare option should be inside the account section
|
||||
|
||||
* #5671 [enhancement] -By default the first submenu should be open, when the admin is clicking on any tab
|
||||
|
||||
* #5537 [enhancement] -New admin theme - RTL menu
|
||||
|
||||
* #5525 [enhancement] -Send a duplicate of the invoice to the customer
|
||||
|
||||
* #5490 [enhancement] -The address should be horizontal format
|
||||
|
||||
* #5404 [enhancement] -The Add image button should not be present when the user is trying to edit the profile
|
||||
|
||||
* #5396 [enhancement] -The currency icon should be shown properly
|
||||
|
||||
* #5395 [enhancement] -The user panel should be responsive on phone-view
|
||||
|
||||
* #5384 [enhancement] -There should be a confirmation alert before deleting all items from Wishlist and Compare
|
||||
|
||||
* #5300 [enhancement] -Suspend customers
|
||||
|
||||
* #5292 [enhancement] -Some data grids are missing ProvideDataGridPlus trait
|
||||
|
||||
* #5267 [enhancement] -Send reminders for overdue invoices
|
||||
|
||||
* #5219 [enhancement] -Issue in multi select data in every datagrid
|
||||
|
||||
* #5165 [enhancement] -Write All Factories In Laravel 8 Pattern
|
||||
|
||||
* #5158 [enhancement] -Breadcrumb Feature
|
||||
|
||||
* #5143 [enhancement] -Rest API Enhancement In Sanctum
|
||||
|
||||
* #5064 [enhancement] -Multi factor authentication
|
||||
|
||||
* #4834 [enhancement] -Requesting to load attributes via ajax
|
||||
|
||||
* #4772 [enhancement] -Ability to drag product image to reorder them in bagisto admin dashboard
|
||||
|
||||
* #4653 [enhancement] -Making billing address informations optional
|
||||
|
||||
* #2918 [enhancement] -Overview of sold booking products in Admin panel
|
||||
|
||||
* #2009 [enhancement] -Using AWS S3 for storage
|
||||
|
||||
* #1243 [enhancement] -Implement a feature to share Wishlist
|
||||
|
||||
* #5968 [enhancement] -The wishlist and compare option should not be in multiple times
|
||||
|
||||
* #1238 [enhancement] -Give configuration for converting textarea to wysiwyg editor or not for browser compatibility.
|
||||
|
||||
* #6019 [fixed] -There should not any UI issue if the admin is trying to update products by mass action.
|
||||
|
||||
* #6010 [fixed] -There should not be any UI issue when the user is trying to write a review for the product in mobile view.
|
||||
|
||||
* #6008 [fixed] -There is a UI issue on the Bills theme when the user is trying to log in.
|
||||
|
||||
* #6006 [fixed] -There is a UI issue if the admin is trying to update products by mass action.
|
||||
|
||||
* #5995 [fixed] -The filters should work properly. if the user is trying to filter the products by the color filter
|
||||
|
||||
* #5985 [fixed] -There should be a warning message on the checkout page, for the required field if the user is clicking outside of the required input field
|
||||
|
||||
* #5980 [fixed] - There is a UI issue if the user is trying to filter products by category
|
||||
|
||||
* #5966 [fixed] - The product quantity should be visible on the cart page
|
||||
|
||||
* #5965 [fixed] - Maximum Password length is 18 characters in velocity theme, which is way too short to be secure
|
||||
|
||||
* #5941 [fixed] - UI Issue at the Profile Section -> Empty space below address
|
||||
|
||||
* #5939 [fixed] - The selected date and time should be visible if the admin trying to add Tickets for a booking product
|
||||
|
||||
* #5938 [fixed] - There is a UI issue on forget password page
|
||||
|
||||
* #5932 [fixed] - There should not be any extra space on the product view page
|
||||
|
||||
* #5931 [fixed] - The product must be added to the wishlist which the user wants to add
|
||||
|
||||
* #5929 [fixed] - The notification text should be clickable
|
||||
|
||||
* #5926 [fixed] - There is a UI in the header section on mobile view
|
||||
|
||||
* #5919 [fixed] - There is a UI issue on the orders page
|
||||
|
||||
* #5915 [fixed] - There is a translation issue in notification pages.
|
||||
|
||||
* #5913 [fixed] - The user is able to edit the product without permission for the same
|
||||
|
||||
* #5908 [fixed] - The Success message should be according to the selected locale
|
||||
|
||||
* #5907 [fixed] - There is a UI issue on the checkout page
|
||||
|
||||
* #5904 [fixed] - There is a UI issue on the Tax Rates page
|
||||
|
||||
* #5903 [fixed] - There is a UI issue on the notification page
|
||||
|
||||
* #5899 [fixed] - The text color of the count should be white in mobile view
|
||||
|
||||
* #5898 [fixed] - The success/warning messages should be shown properly
|
||||
|
||||
* #5885 [fixed] - There are many translation issues on the Arabic locale
|
||||
|
||||
* #5865 [fixed] - There is a translation issue when the admin is trying to create a product.
|
||||
|
||||
* #5855 [fixed] - The categories name should be shown in all locales
|
||||
|
||||
* #5841 [fixed] - There is a translation issue on the Notification page.
|
||||
|
||||
* #5839 [fixed] - There should not be any UI issue while adding the product.
|
||||
|
||||
* #5830 [fixed] - There should be no exception if the user is trying to log in
|
||||
|
||||
* #5828 [fixed] - The Channel filter is not working properly on the product list page.
|
||||
|
||||
* #5820 [fixed] - The user is not able to update the review by mass action.
|
||||
|
||||
* #5809 [fixed] - Ui issue when admin try to click on search order in notification in mobile view
|
||||
|
||||
* #5808 [fixed] - proper allignment of images when admin try to upload in arabic language
|
||||
|
||||
* #5805 [fixed] - Navigation alligment when we try to edit checkbox and select attribute in mobile view
|
||||
|
||||
* #5804 [fixed] - When I create product bullets in the edit I am experienced those UL get dropped and they are left out in the customer view
|
||||
|
||||
* #5803 [fixed] - Alligment issue when we make a configurable product in delete and edit button.
|
||||
|
||||
* #5802 [fixed] - Ui issue comes when we click on add link in downloadable product
|
||||
|
||||
* #5799 [fixed] - Ui issues in arabic language when we try to add booking product.
|
||||
|
||||
* #5797 [fixed] - There should be proper space when customer is try to add address.
|
||||
|
||||
* #5791 [fixed] - There should be gab between edit and delete option in addresss page in velocity.
|
||||
|
||||
* #5790 [fixed] - Issue in orders page in velocity in arabic language
|
||||
|
||||
* #5789 [fixed] - Alligment should be done properly in arabic in wishlist page
|
||||
|
||||
* #5788 [fixed] - When we are try to delete the sliders wrong notifications show
|
||||
|
||||
* #5785 [fixed] - Calender icon is not properly visible in arabic
|
||||
|
||||
* #5778 [fixed] - issue in arbaic language of alligment in mobile view
|
||||
|
||||
* #5775 [fixed] - translations not working in navigation in admin panel
|
||||
|
||||
* #5774 [fixed] - Admin - Address index view not found
|
||||
|
||||
* #5772 [fixed] - issue in french lanugage in navigation bar
|
||||
|
||||
* #5770 [fixed] - Layout shifting in admin ui
|
||||
|
||||
* #5768 [fixed] - Zoomlens in product page overlap sidebar category menu
|
||||
|
||||
* #5764 [fixed] - not able to select options in LTR ENGLISH
|
||||
|
||||
* #5762 [fixed] - not able to add slider images in velocity theme
|
||||
|
||||
* #5761 [fixed] - email spelling wrong in notifications emails
|
||||
|
||||
* #5755 [fixed] - there should be a space between update quantities in mobile view in admin panel
|
||||
|
||||
* #5754 [fixed] - not get any mail when we make new intventory sources in admin panel
|
||||
|
||||
* #5752 [fixed] - in mobile view wishlist option is not there in checkout page
|
||||
|
||||
* #5746 [fixed] - update button alligment should done in velocity theme.
|
||||
|
||||
* #5736 [fixed] - remove button should be with wishlist in mobile view in simple product
|
||||
|
||||
* #5735 [fixed] - alligment should be done proper in velocity in mobile view of remove icon
|
||||
|
||||
* #5730 [fixed] - there is an option to increase quanity when user is try to booked product in both themes.
|
||||
|
||||
* #5729 [fixed] - ui issue when we are try to book only booking product in bliss theme in checkout page (mobile view ).
|
||||
|
||||
* #5728 [fixed] - user is not able to update quanity in checkout cart page in veloicity theme
|
||||
|
||||
* #5727 [fixed] - ui issue when guest is place an order (mobile view ) in velocity
|
||||
|
||||
* #5722 [fixed] - when we disable status paypal from admin panel it show error in console
|
||||
|
||||
* #5719 [fixed] - ui issue when we try to make booking product in admin panel in mobile view
|
||||
|
||||
* #5718 [fixed] - alligment issue in blisss theme in downloadable product section (mobile view)
|
||||
|
||||
* #5717 [fixed] - ui issue in admin panel when we try to edit cms pages (mobile view )
|
||||
|
||||
* #5709 [fixed] - Wrong error messages when uploading video
|
||||
|
||||
* #5708 [fixed] - proper alligment should be done in order page (mobile view)
|
||||
|
||||
* #5707 [fixed] - ui issue in configuration part of admin (mobile view)
|
||||
|
||||
* #5706 [fixed] - there should be an option of wishlist button in blisss theme in front panel
|
||||
|
||||
* #5705 [fixed] - ui issue in compare similar items in compare page (mobile view)
|
||||
|
||||
* #5704 [fixed] - alligment issue in velocity theme in mobile view
|
||||
|
||||
* #5703 [fixed] - star ratings alligment should be in same line in mobile view
|
||||
|
||||
* #5696 [fixed] - dropdown buttons is not working properly in admin panel
|
||||
|
||||
* #5695 [fixed] - ui issue when there is only 1 downloadable product in view shopping cart (mobile view)
|
||||
|
||||
* #5694 [fixed] - star ratings and reviews alligment should be in same line in blisss theme in mobile view
|
||||
|
||||
* #5687 [fixed] - there should be no option for downloadable product for increasing the quanity in velocity theme
|
||||
|
||||
* #5684 [fixed] - reimporting exported tax rate csv results in state field missing error
|
||||
|
||||
* #5670 [fixed] - user not able to redirect to cms pages in blisss theme
|
||||
|
||||
* #5663 [fixed] - The user should be able to download the downloadable product
|
||||
|
||||
* #5661 [fixed] - ui issue in customer order view page in blisss theme in mobile view
|
||||
|
||||
* #5659 [fixed] - delete button in customer profile should be properly allign (bliss theme) in mobile view
|
||||
|
||||
* #5657 [fixed] - proper alligment should be done in bliss theme when we write reviews (mobile view)
|
||||
|
||||
* #5650 [fixed] - There is a UI issue in cart page on phone view
|
||||
|
||||
* #5648 [fixed] - there should not be any blank space in payment method
|
||||
|
||||
* #5636 [fixed] - ui issue when we search any product in bliss theme
|
||||
|
||||
* #5635 [fixed] - issue when we click on search icon in blisss theme in mobile view
|
||||
|
||||
* #5633 [fixed] - alligment issue after you place an order in mobile view
|
||||
|
||||
* #5625 [fixed] - issue in side bar in mobile view when we open any cms pages in velocity
|
||||
|
||||
* #5624 [fixed] - in mobile view order id and all other items is not visible when we have not done any order
|
||||
|
||||
* #5621 [fixed] - There should not be any UI issue in the user panel.
|
||||
|
||||
* #5620 [fixed] - there should be enhacement in button colour so that it should be according to mode
|
||||
|
||||
* #5619 [fixed] - images in review is not compatiable in mobile view
|
||||
|
||||
* #5617 [fixed] - there should be an enhacement so that languages is not with locale heading
|
||||
|
||||
* #5616 [fixed] - there should be dark colour in pending in reviews so that it should be more readable when we changes the mode
|
||||
|
||||
* #5615 [fixed] - ui issue in order page in search bar in velocity theme
|
||||
|
||||
* #5613 [fixed] - ui issue in customer address edit in admin panel
|
||||
|
||||
* #5609 [fixed] - ui issue in catelog in mobile view
|
||||
|
||||
* #5608 [fixed] - slider should not overide in catelog rule and cart rule in condition part in mobile view
|
||||
|
||||
* #5603 [fixed] - notification box should be mobile compatible
|
||||
|
||||
* #5602 [fixed] - ui issue in tax rates in mobile view
|
||||
|
||||
* #5601 [fixed] - ui issue in exchange rate in mobile view
|
||||
|
||||
* #5591 [fixed] - there is a space between add category button and text box filter in mobile view
|
||||
|
||||
* #5585 [fixed] - filters should not attach with heading in category
|
||||
|
||||
* #5581 [fixed] - there should be logo of admin in dekstop view like mobile view
|
||||
|
||||
* #5579 [fixed] - velocity in list should be left alligment
|
||||
|
||||
* #5571 [fixed] - there should be an icon of calender in velocity profile page of customer
|
||||
|
||||
* #5569 [fixed] - There should be meaningful data inside the order dropdown
|
||||
|
||||
* #5556 [fixed] - Deprecation Warning: Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.
|
||||
|
||||
* #5555 [fixed] - darkmode dropdown list
|
||||
|
||||
* #5552 [fixed] - there should not be any blank space in attribute family
|
||||
|
||||
* #5545 [fixed] - navigation sliders not work properly
|
||||
|
||||
* #5540 [fixed] - There is a UI issue in the admin panel
|
||||
|
||||
* #5539 [fixed] - The Login user should not be able to update self status.
|
||||
|
||||
* #5538 [fixed] - There should not be any translation issue in the notification section
|
||||
|
||||
* #5531 [fixed] - there should be not any blank space in gender it may contain select gender
|
||||
|
||||
* #5529 [fixed] - when we hover over bell icon tooltip is not showing
|
||||
|
||||
* #5526 [fixed] - There are multiple flash messages if we are clicking on the mark as read inside the notification.
|
||||
|
||||
* #5524 [fixed] - Dashboard text is not readable when light mode is enabled
|
||||
|
||||
* #5523 [fixed] - Notifications dropdown size
|
||||
|
||||
* #5522 [fixed] - icons are missing in top right navbar
|
||||
|
||||
* #5521 [fixed] - Default logo is not visible
|
||||
|
||||
* #5516 [fixed] - The size of the product images should not increase when the user is removing items from compare list
|
||||
|
||||
* #5513 [fixed] - Admin package the manifest.php files are missing
|
||||
|
||||
* #5511 [fixed] - UI issue in product list page.
|
||||
|
||||
* #5510 [fixed] - The counting is not updating automatically when the user is trying to add or remove an item from comparison.
|
||||
|
||||
* #5505 [fixed] - maintance mode is not working in admin panel
|
||||
|
||||
* #5503 [fixed] - validation not working in inventory page
|
||||
|
||||
* #5501 [fixed] - There is a warning message if the user is trying to add the address.
|
||||
|
||||
* #5497 [fixed] - If the admin user is changing the permission of other user's then the user should be logging out with a message
|
||||
|
||||
* #5493 [fixed] - The page should be redirected to the product-view page if the user is clicking on the product image/name
|
||||
|
||||
* #5491 [fixed] - The user should be able to update quantity using the + icon.
|
||||
|
||||
* #5485 [fixed] - ui issue in address bar in mobile view
|
||||
|
||||
* #5484 [fixed] - The user should be able to add a new address.
|
||||
|
||||
* #5483 [fixed] - languages logo is not visible in mobile view
|
||||
|
||||
* #5478 [fixed] - alligment not fixed in mobile view in velocity order page
|
||||
|
||||
* #5474 [fixed] - The filters should work properly. if the admin is trying to filter the sliders
|
||||
|
||||
* #5473 [fixed] - There cart option should not multiple times in the account section.
|
||||
|
||||
* #5471 [fixed] - The user should be able to view the modules/plugins menu in mobile view also. if the user adds any module.
|
||||
|
||||
* #5470 [fixed] - there should be less spacing in compare section
|
||||
|
||||
* #5468 [fixed] - There is a UI issue in Compare Similar Items section
|
||||
|
||||
* #5466 [fixed] - text alligment in order page of velocity
|
||||
|
||||
* #5462 [fixed] - ui issue when we try to ship wrong quantity products
|
||||
|
||||
* #5461 [fixed] - ui issue when we add product in compare.
|
||||
|
||||
* #5460 [fixed] - UI issue when we add product in wishlist in blisss theme
|
||||
|
||||
* #5451 [fixed] - Possibility to order infinite configurable products (product_ordered_inventories and / or order_items not correctly updated at order)
|
||||
|
||||
* #5450 [fixed] - The CMS image should reflect on the shop if the admin is adding any image on CMS
|
||||
|
||||
* #5445 [fixed] - There should be a confirmation alert before deleting items from the Wishlist
|
||||
|
||||
* #5444 [fixed] - The admin is able to create Invoice/ship orders with 00 quantities.
|
||||
|
||||
* #5443 [fixed] - The message should be correct when the admin is trying to delete system attributes
|
||||
|
||||
* #5440 [fixed] - There should be an option if the user is trying to enter the product quantity before updating the cart.
|
||||
|
||||
* #5436 [fixed] - The discount Amount should be correct in the invoice.
|
||||
|
||||
* #5435 [fixed] - There should be a warning message if the user is trying to create an invoice with invalid quantity.
|
||||
|
||||
* #5430 [fixed] - ProductFlat getAttribute($key) throws Undefined property if value of $key is NULL in product_flat table
|
||||
|
||||
* #5429 [fixed] - php artisan route:list error target class onepagecontroller does not exist (current master branch)
|
||||
|
||||
* #5428 [fixed] - There should not be an exception if the admin is trying to refund the order.
|
||||
|
||||
* #5424 [fixed] - The item should not move to the wishlist if the user is canceling the action.
|
||||
|
||||
* #5423 [fixed] - The user should not be able to edit the record while the input field is giving a warning.
|
||||
|
||||
* #5409 [fixed] - The user should be able to view the reviews
|
||||
|
||||
* #5408 [fixed] - There should not be any exception if the user is trying to delete their reviews.
|
||||
|
||||
* #5406 [fixed] - The user should be able to edit the address.
|
||||
|
||||
* #5405 [fixed] - The success message should be correct when the user is adding items to the cart
|
||||
|
||||
* #5398 [fixed] - The User should not be able to add the same product to the wishlist multiple times.
|
||||
|
||||
* #5389 [fixed] - There should be the proper alignment of filter's
|
||||
|
||||
* #5381 [fixed] - Validation required for coupon code
|
||||
|
||||
* #5377 [fixed] - There should not be an exception When user is moving a product to a wishlist that is already in wishlist
|
||||
|
||||
* #5366 [fixed] - There should be a warning message when the user is applying the same filter again and again.
|
||||
|
||||
* #5365 [fixed] - Issue in price filter for configurable type product
|
||||
|
||||
* #5353 [fixed] - Shipping::rates protected variable is not cleared on Shipping::removeAllShippingRates()
|
||||
|
||||
* #5350 [fixed] - The product price should be correct after exporting to excel.
|
||||
|
||||
* #5347 [fixed] - Images are coming out to be same at the cross sell products.
|
||||
|
||||
* #5342 [fixed] - admin (RTL) - menu not apears
|
||||
|
||||
* #5328 [fixed] - SKU is still visible at the adding new product when it is disabled.
|
||||
|
||||
* #5325 [fixed] - Delete profile modal content data visible and then suddenly hide
|
||||
|
||||
* #5316 [fixed] - In Front end Order details, Order id is having a lot of space.
|
||||
|
||||
* #5315 [fixed] - Quantity issue in product shipment.
|
||||
|
||||
* #5312 [fixed] - Issue in sub-category for mobile view
|
||||
|
||||
* #5311 [fixed] - Total weight is null in shipment table
|
||||
|
||||
* #5307 [fixed] - Flat Rate calculation type in admin configurations
|
||||
|
||||
* #5305 [fixed] - Cart Set Shipping API
|
||||
|
||||
* #5289 [fixed] - Quantity should be updated on ' Shopping Cart ' page
|
||||
|
||||
* #5261 [fixed] - Side filter is getting detached from the category product listing in mobile
|
||||
|
||||
* #5259 [fixed] - Responsive issue in user Profile - Velocity
|
||||
|
||||
* #5233 [fixed] - Issue if create product for multiple channel
|
||||
|
||||
* #5232 [fixed] - App config.php has bad reference to ProductGrid::class
|
||||
|
||||
* #5226 [fixed] - Not able to send the products to wishlist from compare page if the product is not on the first position
|
||||
|
||||
* #5210 [fixed] - UI Issue in search bar in order section at customer's end.
|
||||
|
||||
* #5209 [fixed] - There is no way to access Admin panel if there is only one admin and he try to modify the role of Administrator and allow limited access.
|
||||
|
||||
* #5208 [fixed] - UI Issue in bliss theme - Product View Page
|
||||
|
||||
* #5200 [fixed] - getting API error after opening categories named category
|
||||
|
||||
* #5198 [fixed] - Wrong phpdoc reference in Webkul\Core\Core to CustomerGroupRepository
|
||||
|
||||
* #5197 [fixed] - There is no way to log out for 2nd user of Admin if he himself modify his roles and remove some or all privileges.
|
||||
|
||||
* #5194 [fixed] - Getting exception when exporting a product from the admin panel
|
||||
|
||||
* #5191 [fixed] - Issue is in checkbox type attribute
|
||||
|
||||
* #5180 [fixed] - Some code appears in starting when clicking on the any product edit page
|
||||
|
||||
* #5179 [fixed] - Cart items get increased when navigating away from the buy now functionality
|
||||
|
||||
* #5178 [fixed] - API for customers to cancel order
|
||||
|
||||
* #5047 [fixed] - Order status gets complete when shipment is generated in case of pending invoice
|
||||
|
||||
## **v1.3.3 (27th of September 2021)** - *Release*
|
||||
|
||||
* #5008 [feature] - Image upload option with editor.
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ return [
|
|||
*/
|
||||
|
||||
'failed' => [
|
||||
'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
|
||||
'database' => env('DB_CONNECTION', 'mysql'),
|
||||
'table' => 'failed_jobs',
|
||||
],
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateFailedJobsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('failed_jobs', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('uuid')->unique();
|
||||
$table->text('connection');
|
||||
$table->text('queue');
|
||||
$table->longText('payload');
|
||||
$table->longText('exception');
|
||||
$table->timestamp('failed_at')->useCurrent();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('failed_jobs');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12Z" fill="#FFFFFF"/>
|
||||
<path d="M16 10L12 14L8 10" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 355 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12Z" fill="#FFFFFF"/>
|
||||
<path d="M16 13L12 9L8 13" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 354 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_2:540)">
|
||||
<path d="M12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0Z" fill="#FFFFFF"/>
|
||||
<path d="M13.5 17.5L8.5 12.5L13.5 7.5" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_2:540">
|
||||
<rect width="24" height="24" fill="#000000"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 505 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_2:543)">
|
||||
<path d="M12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0Z" fill="#FFFFFF"/>
|
||||
<path d="M10.5 17.5L15.5 12.5L10.5 7.5" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_2:543">
|
||||
<rect width="24" height="24" fill="#000000"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 506 B |
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/js/admin.js": "/js/admin.js?id=7d73f64f6f160ecd8a23",
|
||||
"/css/admin.css": "/css/admin.css?id=c541338bb74772040a29"
|
||||
"/css/admin.css": "/css/admin.css?id=5fc68c20019f02de7af3"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -166,7 +166,6 @@ class CategoryDataGrid extends DataGrid
|
|||
'route' => 'admin.catalog.categories.delete',
|
||||
'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'product']),
|
||||
'icon' => 'icon trash-icon',
|
||||
'function' => 'deleteCategory(event, "delete")'
|
||||
]);
|
||||
|
||||
$this->addMassAction([
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12Z" fill="#FFFFFF"/>
|
||||
<path d="M16 10L12 14L8 10" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 355 B |
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12Z" fill="#FFFFFF"/>
|
||||
<path d="M16 13L12 9L8 13" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 354 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_2:540)">
|
||||
<path d="M12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0Z" fill="#FFFFFF"/>
|
||||
<path d="M13.5 17.5L8.5 12.5L13.5 7.5" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_2:540">
|
||||
<rect width="24" height="24" fill="#000000"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 505 B |
|
|
@ -0,0 +1,11 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_2:543)">
|
||||
<path d="M12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0Z" fill="#FFFFFF"/>
|
||||
<path d="M10.5 17.5L15.5 12.5L10.5 7.5" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_2:543">
|
||||
<rect width="24" height="24" fill="#000000"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 506 B |
|
|
@ -43,7 +43,7 @@
|
|||
ul.menubar {
|
||||
li.menu-item {
|
||||
|
||||
>a {
|
||||
> a {
|
||||
padding: 5px 2px;
|
||||
display: block;
|
||||
color: $black;
|
||||
|
|
@ -302,6 +302,14 @@
|
|||
color: $font-color;
|
||||
border-top: solid 1px $border-color;
|
||||
border-bottom: solid 1px $border-color;
|
||||
|
||||
.accordian-up-icon {
|
||||
background-image: url(../images/Accordion-Dark-Arrow-Up.svg);
|
||||
}
|
||||
|
||||
.accordian-down-icon {
|
||||
background-image: url(../images/Accordion-Dark-Arrow-Up.svg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -403,6 +411,13 @@
|
|||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
&.btn-primary {
|
||||
background: $white;
|
||||
color: $black;
|
||||
}
|
||||
}
|
||||
|
||||
.control-container {
|
||||
.control {
|
||||
background: $black;
|
||||
|
|
@ -754,12 +769,25 @@
|
|||
}
|
||||
|
||||
.control-group input:checked+.slider {
|
||||
background-color: $dark-mode-switch-background !important;
|
||||
background-color: $dark-mode-left-menubar-active-background-color !important;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-left {
|
||||
.menubar-bottom {
|
||||
background-color: $dark-bg;
|
||||
|
||||
.accordian-left-icon {
|
||||
background-image: url(../images/dark-chevron-left.svg);
|
||||
}
|
||||
|
||||
.accordian-right-icon {
|
||||
background-image: url(../images/dark-chevron-right.svg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.rtl.dark-mode {
|
||||
|
||||
.navbar-left {
|
||||
background-color: $dark-bg;
|
||||
border-right: 1px solid $dark-bg;
|
||||
|
|
@ -767,7 +795,7 @@
|
|||
ul.menubar {
|
||||
li.menu-item {
|
||||
|
||||
>a {
|
||||
> a {
|
||||
padding: 5px 2px;
|
||||
display: block;
|
||||
color: $black;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ body {
|
|||
}
|
||||
|
||||
.padding-container-navbar-expand {
|
||||
padding-left: 200px !important;
|
||||
padding-left: 210px !important;
|
||||
}
|
||||
|
||||
.rtl {
|
||||
|
|
@ -24,7 +24,7 @@ body {
|
|||
}
|
||||
|
||||
.padding-container-navbar-expand {
|
||||
padding-right: 200px !important;
|
||||
padding-right: 210px !important;
|
||||
padding-left: 0px !important;
|
||||
}
|
||||
}
|
||||
|
|
@ -217,11 +217,13 @@ body {
|
|||
> a {
|
||||
color: $black;
|
||||
width: 100%;
|
||||
display: block;
|
||||
|
||||
.icon {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
transform: scale(0.7);
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.menu-label {
|
||||
|
|
@ -307,7 +309,8 @@ body {
|
|||
position: fixed;
|
||||
bottom: 0;
|
||||
background-color: $white;
|
||||
width: 56px;
|
||||
width: 55px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&.open {
|
||||
|
|
@ -444,6 +447,16 @@ body {
|
|||
.locale {
|
||||
float: right;
|
||||
color: $role-text-color;
|
||||
position: relative;
|
||||
right: 30%;
|
||||
}
|
||||
}
|
||||
|
||||
&.have-wysiwyg {
|
||||
label {
|
||||
.locale {
|
||||
position: unset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -201,6 +201,8 @@
|
|||
|
||||
.control-group label .locale {
|
||||
float: left;
|
||||
right: unset;
|
||||
left: 30%;
|
||||
}
|
||||
|
||||
.multiselect {
|
||||
|
|
|
|||
|
|
@ -91,16 +91,16 @@ return [
|
|||
'orders' => 'Siparişler',
|
||||
'shipments' => 'Teslimatlar',
|
||||
'invoices' => 'Faturalar',
|
||||
'refunds' => 'Refunds',
|
||||
'refunds' => 'Geri Ödemeler',
|
||||
'catalog' => 'Katalog',
|
||||
'products' => 'Ürünler',
|
||||
'copy' => 'Copy',
|
||||
'copy' => 'Kopyala',
|
||||
'categories' => 'Kategoriler',
|
||||
'attributes' => 'Nitelikler',
|
||||
'attribute-families' => 'Nitelik Grupları',
|
||||
'customers' => 'Müşteriler',
|
||||
'addresses' => 'Addresses',
|
||||
'note' => 'Note',
|
||||
'addresses' => 'Adresler',
|
||||
'note' => 'Not',
|
||||
'groups' => 'Gruplar',
|
||||
'reviews' => 'İncelemeler',
|
||||
'newsletter-subscriptions' => 'Bülten Üyelikleri',
|
||||
|
|
@ -117,13 +117,13 @@ return [
|
|||
'taxes' => 'Vergi',
|
||||
'tax-categories' => 'Vergi Grupları',
|
||||
'tax-rates' => 'Vergi Oranları',
|
||||
'view' => 'View',
|
||||
'view' => 'Görüntüle',
|
||||
'edit' => 'Düzenle',
|
||||
'create' => 'Oluştur',
|
||||
'delete' => 'Sil',
|
||||
'mass-delete' => 'Mass Delete',
|
||||
'mass-update' => 'Mass Update',
|
||||
'marketing' => 'Marketing',
|
||||
'mass-delete' => 'Toplu Silme',
|
||||
'mass-update' => 'Toplu Güncelleme',
|
||||
'marketing' => 'Pazarlama',
|
||||
'promotions' => 'Promosyonlar',
|
||||
'cart-rules' => 'Alışveriş Sepeti Kuralları',
|
||||
'catalog-rules' => 'Katalog Kuralları',
|
||||
|
|
@ -211,7 +211,7 @@ return [
|
|||
'state' => 'Şehir',
|
||||
'country' => 'Ülke',
|
||||
'tax-rate' => 'Oran',
|
||||
'role' => 'Rpş',
|
||||
'role' => 'Rol',
|
||||
'sub-total' => 'Ara Toplam',
|
||||
'no-of-products' => 'Ürün Adeti',
|
||||
'attribute-family' => 'Nitelik Grubu',
|
||||
|
|
@ -242,8 +242,8 @@ return [
|
|||
'rtl' => 'RTL',
|
||||
'ltr' => 'LTR',
|
||||
'update-status' => 'Durum Güncelle',
|
||||
'transaction-id' => 'Transaction Id',
|
||||
'transaction-date' => 'Transaction Date',
|
||||
'transaction-id' => 'İşlem Id',
|
||||
'transaction-date' => 'İşlem Tarihi',
|
||||
],
|
||||
|
||||
'account' => [
|
||||
|
|
@ -396,7 +396,7 @@ return [
|
|||
'notify-customer' => 'Müşteriyi Bilgilendir',
|
||||
'customer-notified' => ':date | Müşteri <b>Bilgilendirildi</b>',
|
||||
'customer-not-notified' => ':date | Müşteri <b>Bilgilendirilmedi</b>',
|
||||
'transactions' => 'Transactions',
|
||||
'transactions' => 'İşlemler',
|
||||
],
|
||||
|
||||
'invoices' => [
|
||||
|
|
@ -412,9 +412,9 @@ return [
|
|||
'action' => 'Eylem',
|
||||
'add-title' => 'Fatura Oluştur',
|
||||
'save-btn-title' => 'Fatura Kaydet',
|
||||
'send-duplicate-invoice' => 'Send Duplicate Invoice',
|
||||
'send' => 'Send',
|
||||
'invoice-sent' => 'Invoice sent successfully!',
|
||||
'send-duplicate-invoice' => 'Çift Fatura Gönder',
|
||||
'send' => 'Gönder',
|
||||
'invoice-sent' => 'Fatura başarıyla gönderildi!',
|
||||
'qty' => 'Miktar',
|
||||
'qty-ordered' => 'Sipariş Miktarı',
|
||||
'qty-to-invoice' => 'Fatura Edilen Miktar',
|
||||
|
|
@ -423,12 +423,12 @@ return [
|
|||
'ship-to' => 'Teslim Edilen',
|
||||
'print' => 'Yazdır',
|
||||
'order-date' => 'Sipariş Tarihi',
|
||||
'invalid-qty' => 'We found an invalid quantity to invoice items.',
|
||||
'invalid-qty' => 'Öğeleri faturalamak için geçersiz bir miktar bulduk.',
|
||||
'creation-error' => 'Fatura oluşturulmasına izin verilmedi.',
|
||||
'product-error' => 'Fatura oluşturulması için ürün ekleyiniz.',
|
||||
'status-overdue' => 'Overdue',
|
||||
'status-pending' => 'Pending Payment',
|
||||
'status-paid' => 'Paid',
|
||||
'status-overdue' => 'Vadesi Geçmiş',
|
||||
'status-pending' => 'Bekleyen Ödeme',
|
||||
'status-paid' => 'Ödendi',
|
||||
],
|
||||
|
||||
'shipments' => [
|
||||
|
|
@ -483,24 +483,24 @@ return [
|
|||
],
|
||||
|
||||
'transactions' => [
|
||||
'title' => 'Transactions',
|
||||
'create-title' => 'Add transaction',
|
||||
'title' => 'İşlemler',
|
||||
'create-title' => 'İşlem ekle',
|
||||
'id' => 'Id',
|
||||
'transaction-id' => 'Transaction Id',
|
||||
'payment-method' => 'Payment method',
|
||||
'transaction-amount' => 'Transaction amount',
|
||||
'action' => 'Action',
|
||||
'view-title' => 'Transaction #:transaction_id',
|
||||
'transaction-data' => 'Transaction Data',
|
||||
'order-id' => 'Order Id',
|
||||
'invoice-id' => 'Invoice Id',
|
||||
'status' => 'Status',
|
||||
'created-at' => 'Created At',
|
||||
'transaction-details' => 'Transaction Details',
|
||||
'transaction-id' => 'İşlem Id',
|
||||
'payment-method' => 'Ödeme şekli',
|
||||
'transaction-amount' => 'İşlem tutarı',
|
||||
'action' => 'Aksiyon',
|
||||
'view-title' => 'İşlem #:transaction_id',
|
||||
'transaction-data' => 'İşlem Tarihi',
|
||||
'order-id' => 'Sipariş Id',
|
||||
'invoice-id' => 'Fatura Id',
|
||||
'status' => 'Durum',
|
||||
'created-at' => 'Oluşturulma Tarihi',
|
||||
'transaction-details' => 'Ödeme Detayları',
|
||||
'response' => [
|
||||
'invoice-missing' => 'This invoice id does not exist',
|
||||
'transaction-saved' => 'The transaction has been saved',
|
||||
'already-paid' => 'This invoice has already been paid',
|
||||
'invoice-missing' => 'Bu fatura kimliği mevcut değil',
|
||||
'transaction-saved' => 'İşlem kaydedildi',
|
||||
'already-paid' => 'Bu fatura zaten ödendi',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
|
@ -520,10 +520,10 @@ return [
|
|||
'bundle' => 'demet',
|
||||
'downloadable' => 'indirilebilir',
|
||||
'grouped' => 'gruplandırılmış',
|
||||
'virtual' => 'gerçek',
|
||||
'virtual' => 'gerçek',
|
||||
'configurable' => 'yapılandırılabilir',
|
||||
|
||||
],
|
||||
],
|
||||
'simple' => 'Basit',
|
||||
'configurable' => 'Ayarlanabilir',
|
||||
'familiy' => 'Nitelik Grubu',
|
||||
|
|
@ -584,15 +584,15 @@ return [
|
|||
'multiselect' => 'Çoklu Seçim',
|
||||
'new-option' => 'Yeni Seçenek',
|
||||
'is-default' => 'Varsayılan',
|
||||
'remove-image-btn-title' => 'Remove Image',
|
||||
'videos' => 'Videos',
|
||||
'remove-image-btn-title' => 'Resmi Kaldır',
|
||||
'videos' => 'Videolar',
|
||||
'video' => 'Video',
|
||||
'add-video-btn-title' => 'Add Video',
|
||||
'remove-video-btn-title' => 'Remove Video',
|
||||
'not-support-video' => 'Your browser does not support the video tag.',
|
||||
'save' => 'Save',
|
||||
'cancel' => 'Cancel',
|
||||
'saved-inventory-message' => 'Product inventory saved successfully.',
|
||||
'add-video-btn-title' => 'Video Ekle',
|
||||
'remove-video-btn-title' => 'Video Kaldır',
|
||||
'not-support-video' => 'Tarayıcınız video etiketini desteklemiyor.',
|
||||
'save' => 'Kaydet',
|
||||
'cancel' => 'İptal',
|
||||
'saved-inventory-message' => 'Ürün envanteri başarıyla kaydedildi.',
|
||||
],
|
||||
|
||||
'attributes' => [
|
||||
|
|
@ -649,7 +649,7 @@ return [
|
|||
'is_comparable' => 'Nitelik kıyaslanabilir',
|
||||
'default_null_option' => 'Varsayılan boş seçenek oluştur',
|
||||
'validation-messages' => [
|
||||
'max-size' => 'The image size must be less than 600 KB',
|
||||
'max-size' => 'Resim boyutu 600 KB\'den küçük olmalıdır',
|
||||
],
|
||||
],
|
||||
'families' => [
|
||||
|
|
@ -871,9 +871,9 @@ return [
|
|||
'seo-title' => 'Meta Başlık',
|
||||
'seo-description' => 'Meta Açıklama',
|
||||
'seo-keywords' => 'Meta Anahtar Kelimeler',
|
||||
'maintenance-mode' => 'Maintenance Mode',
|
||||
'maintenance-mode-text' => 'Message',
|
||||
'allowed-ips' => 'Allowed IPs',
|
||||
'maintenance-mode' => 'Bakım Modu',
|
||||
'maintenance-mode-text' => 'İleti',
|
||||
'allowed-ips' => 'İzin verilen IP\'ler',
|
||||
],
|
||||
|
||||
'sliders' => [
|
||||
|
|
@ -892,8 +892,8 @@ return [
|
|||
'update-fail' => 'Slider güncellenemez.',
|
||||
'delete-success' => 'Slider başarıyla silindi.',
|
||||
'delete-fail' => 'Slider silinirken hata oluştu.',
|
||||
'expired-at' => 'Expire Date',
|
||||
'sort-order' => 'Sort Order',
|
||||
'expired-at' => 'Son kullanma tarihi',
|
||||
'sort-order' => 'Sıralama düzeni',
|
||||
],
|
||||
|
||||
'tax-categories' => [
|
||||
|
|
@ -1028,9 +1028,9 @@ return [
|
|||
'status' => 'Durum',
|
||||
'active' => 'Aktif',
|
||||
'inactive' => 'Pasif',
|
||||
'is-suspended' => 'Is Suspended',
|
||||
'suspend' => 'Suspend',
|
||||
'suspended' => 'Suspended',
|
||||
'is-suspended' => 'Askıya Alındı',
|
||||
'suspend' => 'Askıya al',
|
||||
'suspended' => 'Askıya alındı',
|
||||
],
|
||||
|
||||
'reviews' => [
|
||||
|
|
@ -1194,63 +1194,63 @@ return [
|
|||
|
||||
'marketing' => [
|
||||
'templates' => [
|
||||
'title' => 'Email Templates',
|
||||
'add-title' => 'Add Email Template',
|
||||
'edit-title' => 'Edit Email Template',
|
||||
'save-btn-title' => 'Save',
|
||||
'general' => 'General',
|
||||
'name' => 'Name',
|
||||
'status' => 'Status',
|
||||
'active' => 'Active',
|
||||
'inactive' => 'Inactive',
|
||||
'draft' => 'Draft',
|
||||
'content' => 'Content',
|
||||
'create-success' => 'Email template created successfully.',
|
||||
'update-success' => 'Email template updated successfully.',
|
||||
'delete-success' => 'Email template deleted successfully',
|
||||
'title' => 'E-posta Şablonları',
|
||||
'add-title' => 'E-posta Şablonu Ekle',
|
||||
'edit-title' => 'E-posta Şablonunu Düzenle',
|
||||
'save-btn-title' => 'Kaydet',
|
||||
'general' => 'Genel',
|
||||
'name' => 'İsim',
|
||||
'status' => 'Durum',
|
||||
'active' => 'Aktif',
|
||||
'inactive' => 'Pasif',
|
||||
'draft' => 'Taslak',
|
||||
'content' => 'İçerik',
|
||||
'create-success' => 'E-posta şablonu başarıyla oluşturuldu.',
|
||||
'update-success' => 'E-posta şablonu başarıyla güncellendi.',
|
||||
'delete-success' => 'E-posta şablonu başarıyla silindi.',
|
||||
],
|
||||
|
||||
'campaigns' => [
|
||||
'title' => 'Campaigns',
|
||||
'add-title' => 'Add Campaign',
|
||||
'edit-title' => 'Edit Campaign',
|
||||
'save-btn-title' => 'Save',
|
||||
'general' => 'General',
|
||||
'name' => 'Name',
|
||||
'status' => 'Status',
|
||||
'active' => 'Active',
|
||||
'inactive' => 'Inactive',
|
||||
'subject' => 'Subject',
|
||||
'email-template' => 'Email Template',
|
||||
'audience' => 'Audience',
|
||||
'channel' => 'Channel',
|
||||
'customer-group' => 'Customer Group',
|
||||
'schedule' => 'Schedule',
|
||||
'schedule-type' => 'Schedule Type',
|
||||
'once' => 'Once',
|
||||
'events' => 'Events',
|
||||
'schedule-date' => 'Schedule Date',
|
||||
'spooling' => 'Spooling',
|
||||
'event' => 'Event',
|
||||
'birthday' => 'Birthday',
|
||||
'create-success' => 'Campaign created successfully.',
|
||||
'update-success' => 'Campaign updated successfully.',
|
||||
'delete-success' => 'Campaign deleted successfully',
|
||||
'title' => 'Kampanyalar',
|
||||
'add-title' => 'Kampanya Ekle',
|
||||
'edit-title' => 'Kampanyayı Düzenle',
|
||||
'save-btn-title' => 'Kaydet',
|
||||
'general' => 'Genel',
|
||||
'name' => 'İsim',
|
||||
'status' => 'Durum',
|
||||
'active' => 'Aktif',
|
||||
'inactive' => 'Pasif',
|
||||
'subject' => 'Konu',
|
||||
'email-template' => 'E-posta şablonu',
|
||||
'audience' => 'Kitle',
|
||||
'channel' => 'Kanal',
|
||||
'customer-group' => 'Müşteri Grubu',
|
||||
'schedule' => 'Takvim',
|
||||
'schedule-type' => 'Zamanlama türü',
|
||||
'once' => 'Bir kez',
|
||||
'events' => 'Etkinlikler',
|
||||
'schedule-date' => 'Program Tarihi',
|
||||
'spooling' => 'Biriktir',
|
||||
'event' => 'Etkinlik',
|
||||
'birthday' => 'Doğum Günü',
|
||||
'create-success' => 'Kampanya başarıyla oluşturuldu.',
|
||||
'update-success' => 'Kampanya başarıyla güncellendi.',
|
||||
'delete-success' => 'Kampanya başarıyla silindi.',
|
||||
],
|
||||
|
||||
'events' => [
|
||||
'title' => 'Events',
|
||||
'add-title' => 'Add Event',
|
||||
'edit-title' => 'Edit Event',
|
||||
'save-btn-title' => 'Save',
|
||||
'general' => 'General',
|
||||
'name' => 'Name',
|
||||
'description' => 'Description',
|
||||
'date' => 'Date',
|
||||
'create-success' => 'Event created successfully.',
|
||||
'update-success' => 'Event updated successfully.',
|
||||
'delete-success' => 'Event deleted successfully.',
|
||||
'edit-error' => 'Can not edit this event.',
|
||||
'title' => 'Etkinlikler',
|
||||
'add-title' => 'Etkinlik Ekle',
|
||||
'edit-title' => 'Etkinliği Düzenle',
|
||||
'save-btn-title' => 'Kaydet',
|
||||
'general' => 'Genel',
|
||||
'name' => 'İsim',
|
||||
'description' => 'Açıklama',
|
||||
'date' => 'Tarih',
|
||||
'create-success' => 'Etkinlik başarıyla oluşturuldu.',
|
||||
'update-success' => 'Etkinlik başarıyla güncellendi.',
|
||||
'delete-success' => 'Etkinlik başarıyla silindi.',
|
||||
'edit-error' => 'Bu etkinlik düzenlenemiyor.',
|
||||
],
|
||||
],
|
||||
|
||||
|
|
@ -1287,7 +1287,7 @@ return [
|
|||
'tinymce' => [
|
||||
'http-error' => 'HTTP error.',
|
||||
'invalid-json' => 'Invalid JSON.',
|
||||
'upload-failed' => 'Image upload failed due to a XHR Transport error.',
|
||||
'upload-failed' => 'XHR Aktarım hatası nedeniyle resim yükleme başarısız oldu.',
|
||||
],
|
||||
],
|
||||
|
||||
|
|
@ -1336,16 +1336,16 @@ return [
|
|||
'delete-success' => 'CMS sayfası başarıyla silindi.',
|
||||
'delete-failure' => 'CMS sayfası silinirken hata oluştu!',
|
||||
'preview' => 'Önizleme',
|
||||
'one-col' => '<div class="mt-10">Use class: <b>"static-container one-column"</b> for one column layout.</div>',
|
||||
'two-col' => '<div class="mt-10">Use class: <b>"static-container two-column"</b> for two column layout.</div>',
|
||||
'three-col' => '<div class="mt-10">Use class: <b>"static-container three-column"</b> for three column layout.</div>',
|
||||
'one-col' => '<div class="mt-10">Bir sütun düzeni için <b>"static-container one-column"</b> sınıfını kullanın.</div>',
|
||||
'two-col' => '<div class="mt-10">İki sütun düzeni için <b>"static-container two-column"</b> sınıfı kullanın.</div>',
|
||||
'three-col' => '<div class="mt-10">Üç sütun düzeni için <b>"static-container three-column"</b> sınıfı kullanın.</div>',
|
||||
'helper-classes' => 'Yardımcı Sınıflar',
|
||||
],
|
||||
],
|
||||
|
||||
'response' => [
|
||||
'being-used' => ':name isimli kaynak :source isimli kaynakta kullanılıyor.',
|
||||
'cannot-change' => 'Cannot change the :name.',
|
||||
'cannot-change' => ':name değiştirilemez.',
|
||||
'cannot-delete-default' => 'Varsayılan kanal silinemez.',
|
||||
'create-success' => ':name başarıyla oluşturuldu.',
|
||||
'update-success' => ':name başarıyla güncellendi.',
|
||||
|
|
@ -1364,12 +1364,12 @@ return [
|
|||
'cancel-error' => ':name iptal edilemez.',
|
||||
'already-taken' => ':name daha önceden girilmiş.',
|
||||
'order-pending' => 'Bu hesaba ait işlem bekleyen siparişler bulunduğundan hesap silinemez.',
|
||||
'something-went-wrong' => 'Something went wrong!',
|
||||
'something-went-wrong' => 'Bir şeyler yanlış gitti!',
|
||||
],
|
||||
|
||||
'validations' => [
|
||||
'slug-being-used' => 'This slug is getting used in either categories or products.',
|
||||
'slug-reserved' => 'This slug is reserved.',
|
||||
'slug-being-used' => 'Bu slug ya kategorilerde ya da ürünlerde kullanılıyor.',
|
||||
'slug-reserved' => 'Bu slug saklıdır.',
|
||||
],
|
||||
|
||||
'footer' => [
|
||||
|
|
@ -1397,10 +1397,10 @@ return [
|
|||
],
|
||||
'system' => [
|
||||
'catalog' => 'Katalog',
|
||||
'homepage' => 'Homepage configuration',
|
||||
'allow-no-of-new-product-homepage' => 'Allowed No of New Product in Homepage',
|
||||
'allow-no-of-featured-product-homepage' => 'Allowed No of Featured Product in Homepage',
|
||||
'allow-out-of-stock-items' => 'Allow out of stock items',
|
||||
'homepage' => 'Ana sayfa yapılandırması',
|
||||
'allow-no-of-new-product-homepage' => 'Ana Sayfada İzin Verilen Yeni Ürün Sayısı',
|
||||
'allow-no-of-featured-product-homepage' => 'Ana Sayfada İzin Verilen Öne Çıkan Ürün Sayısı',
|
||||
'allow-out-of-stock-items' => 'Stokta olmayan ürünlere izin ver',
|
||||
'products' => 'Ürünler',
|
||||
'guest-checkout' => 'Ziyaretçi Satışı',
|
||||
'allow-guest-checkout' => 'Ziyaretçi Alımına İzin Ver',
|
||||
|
|
@ -1411,8 +1411,8 @@ return [
|
|||
'stock-options' => 'Stok Seçenekleri',
|
||||
'allow-backorders' => 'Stok Dışı Siparişe İzin Ver',
|
||||
'customer' => 'Müşteri',
|
||||
'wishlist' => 'Wishlist',
|
||||
'wishlist-share' => 'Enable Sharing',
|
||||
'wishlist' => 'İstek Listesi',
|
||||
'wishlist-share' => 'Paylaşımı Etkinleştir',
|
||||
'settings' => 'Ayarlar',
|
||||
'address' => 'Adres',
|
||||
'street-lines' => 'Sokak Adresi Satır Sayısı',
|
||||
|
|
@ -1427,7 +1427,7 @@ return [
|
|||
'state' => 'Şehir',
|
||||
'zip' => 'Posta Kodu',
|
||||
'city' => 'İlçe',
|
||||
'information' => 'Information',
|
||||
'information' => 'Bilgi',
|
||||
'street-address' => 'Sokak Adresi',
|
||||
'title' => 'Başlık',
|
||||
'description' => 'Açıklama',
|
||||
|
|
@ -1454,13 +1454,13 @@ return [
|
|||
'weight-unit' => 'Ağırlık Birimi',
|
||||
'email-settings' => 'Mail Ayarları',
|
||||
'email-sender-name' => 'Mail Gönderici Adı',
|
||||
'email-sender-name-tip' => 'This name will be displayed in the customers inbox',
|
||||
'email-sender-name-tip' => 'Bu ad, müşterilerin gelen kutusunda görüntülenecektir.',
|
||||
'shop-email-from' => 'Mağaza Mail Adresi [Mail gönderimleri için]',
|
||||
'shop-email-from-tip' => 'The email address of this channel to send emails to your customers',
|
||||
'shop-email-from-tip' => 'Müşterilerinize e-posta göndermek için bu kanalın e-posta adresi',
|
||||
'admin-name' => 'Yönetici Adı',
|
||||
'admin-name-tip' => 'This name will be displayed in all admin emails',
|
||||
'admin-name-tip' => 'Bu ad, tüm yönetici e-postalarında görüntülenecektir.',
|
||||
'admin-email' => 'Yönetici Mail Adresi',
|
||||
'admin-email-tip' => 'The email address of the admin for this channel to receive emails',
|
||||
'admin-email-tip' => 'E-postaları almak için bu kanalın yöneticisinin e-posta adresi',
|
||||
'admin-page-limit' => 'Sayfa Başına Varsayılan İçerik (Yönetici)',
|
||||
'design' => 'Tasarım',
|
||||
'admin-logo' => 'Panel Logo',
|
||||
|
|
@ -1489,9 +1489,9 @@ return [
|
|||
'invoice-slip-design' => 'Fatura Tasarımı',
|
||||
'logo' => 'logo',
|
||||
'default' => 'Varsayılan',
|
||||
'invoice-reminders' => 'Invoice Reminders',
|
||||
'maximum-limit-of-reminders' => 'Maximum limit of reminders',
|
||||
'interval-between-reminders' => 'Interval between reminders',
|
||||
'invoice-reminders' => 'Fatura Hatırlatıcıları',
|
||||
'maximum-limit-of-reminders' => 'Maksimum hatırlatıcı sınırı',
|
||||
'interval-between-reminders' => 'Hatırlatıcılar arasındaki aralık',
|
||||
'sandbox' => 'Havuz',
|
||||
'all-channels' => 'Tümü',
|
||||
'all-locales' => 'Tümü',
|
||||
|
|
@ -1525,29 +1525,29 @@ return [
|
|||
'vat-number' => 'KDV Numarası',
|
||||
'contact-number' => 'İletişim numarası',
|
||||
'bank-details' => 'Banka detayları',
|
||||
'mailing-address' => 'Send Check to',
|
||||
'instructions' => 'Instructions',
|
||||
'custom-scripts' => 'Custom Scripts',
|
||||
'custom-css' => 'Custom CSS',
|
||||
'custom-javascript' => 'Custom Javascript',
|
||||
'mailing-address' => 'Çek Gönder',
|
||||
'instructions' => 'Talimatlar',
|
||||
'custom-scripts' => 'Özel Komut Dosyaları',
|
||||
'custom-css' => 'Özel CSS',
|
||||
'custom-javascript' => 'Özel Javascript',
|
||||
'paypal-smart-button' => 'PayPal',
|
||||
'client-id' => 'Client Id',
|
||||
'client-id-info' => 'Use "sb" for testing.',
|
||||
'client-secret' => 'Client Secret',
|
||||
'client-secret-info' => 'Add your secret key here',
|
||||
'accepted-currencies' => 'Accepted currencies',
|
||||
'accepted-currencies-info' => 'Add currency code comma seperated e.g. USD,INR,...',
|
||||
'buy-now-button-display' => 'Allow customers to directly buy products',
|
||||
'width' => 'Width',
|
||||
'height' => 'Height',
|
||||
'cache-small-image' => 'Small Image',
|
||||
'cache-medium-image' => 'Medium Image',
|
||||
'cache-large-image' => 'Large Image',
|
||||
'generate-invoice' => 'Automatically generate the invoice after placing an order',
|
||||
'set-invoice-status' => 'Set the invoice status after creating the invoice to',
|
||||
'set-order-status' => 'Set the order status after creating the invoice to',
|
||||
'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled',
|
||||
'records-found' => 'Record(s) found',
|
||||
'client-secret-info' => 'Gizli anahtarınızı buraya ekleyin',
|
||||
'accepted-currencies' => 'Kabul edilen para birimleri',
|
||||
'accepted-currencies-info' => 'Para birimi kodunu virgülle ayırarak ekleyin, ör. USD, INR,...',
|
||||
'buy-now-button-display' => 'Müşterilerin ürünleri doğrudan satın almasına izin verin',
|
||||
'width' => 'Genişlik',
|
||||
'height' => 'Yükseklik',
|
||||
'cache-small-image' => 'Küçük Resim',
|
||||
'cache-medium-image' => 'Orta Resim',
|
||||
'cache-large-image' => 'Büyük Resim',
|
||||
'generate-invoice' => 'Sipariş verdikten sonra faturayı otomatik olarak oluşturun',
|
||||
'set-invoice-status' => 'Faturayı oluşturduktan sonra fatura durumunu şu şekilde ayarlayın:',
|
||||
'set-order-status' => 'Faturayı oluşturduktan sonra sipariş durumunu ayarlayın.',
|
||||
'generate-invoice-applicable' => 'Otomatik fatura oluştur etkinse geçerlidir',
|
||||
'records-found' => 'Kayıt(lar) bulundu',
|
||||
],
|
||||
],
|
||||
|
||||
|
|
|
|||
|
|
@ -1548,7 +1548,53 @@ return [
|
|||
'generate-invoice' => '下单后自动生成发票',
|
||||
'set-invoice-status' => '创建发票后设置发票状态为',
|
||||
'set-order-status' => '将创建发票后的订单状态设置为',
|
||||
'generate-invoice-applicable' => '适用于启用自动生成发票的情况'
|
||||
]
|
||||
]
|
||||
'generate-invoice-applicable' => '适用于启用自动生成发票的情况',
|
||||
'records-found' => '找到记录',
|
||||
'logo-size' => '图像分辨率应该是 112px X 41px',
|
||||
'favicon-size' => '图像分辨率应该是 16px X 16px',
|
||||
'invoice-logo-size' => '图像分辨率应该是 192px X 50px',
|
||||
],
|
||||
],
|
||||
'api' => [
|
||||
'system' => [
|
||||
'api' => 'API',
|
||||
'basic-configuration' => '基本配置',
|
||||
'customer-configuration' => '客户配置',
|
||||
'username' => '用户名',
|
||||
'password' => '密码',
|
||||
'login-after-register' => '注册后登录',
|
||||
'info-login' => '信息: 顾客 注册API后必须登录.',
|
||||
],
|
||||
'auth' => [
|
||||
'invalid-auth' => '警告:您无权使用 API。',
|
||||
'required-token' => '警告:令牌参数是必需的。',
|
||||
'invalid-store' => '警告:您请求的商店无效。',
|
||||
'login-required' => '警告:需要客户登录才能将产品添加到比较列表。',
|
||||
'resource-not-found' => '警告: 已请求:resource 在记录中找不到.',
|
||||
],
|
||||
],
|
||||
|
||||
'notification' => [
|
||||
'notification-title' => '通知',
|
||||
'title-plural' => '通知',
|
||||
'status' => [
|
||||
'all' => 'All',
|
||||
'pending' => 'Pending',
|
||||
'processing' => 'Processing',
|
||||
'canceled' => 'Canceled',
|
||||
'closed' => 'Closed',
|
||||
'completed' => 'Completed',
|
||||
],
|
||||
'view-all' => '查看所有通知',
|
||||
'no-record' => '没有找到记录',
|
||||
'read-all' => '标记为已读',
|
||||
'notification-marked-success' => '通知标记成功',
|
||||
'order-status-messages' => [
|
||||
'completed' => '订单完成',
|
||||
'closed' => '订单已关闭',
|
||||
'canceled' => '订单取消',
|
||||
'pending' => '订单待处理',
|
||||
'processing' => '订单处理',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
@php
|
||||
$locale = core()->getRequestedLocaleCode();
|
||||
$locale = core()->getRequestedLocaleCode();
|
||||
@endphp
|
||||
|
||||
@extends('admin::layouts.content')
|
||||
|
|
@ -12,11 +12,14 @@
|
|||
<div class="content">
|
||||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
<h1>{{ __('admin::app.catalog.categories.title') }}</h1>
|
||||
<h1>{{ __('admin::app.catalog.categories.title') }}</h1>
|
||||
</div>
|
||||
|
||||
<div class="page-action">
|
||||
<a href="{{ route('admin.catalog.categories.create') }}" class="btn btn-lg btn-primary">
|
||||
<a
|
||||
href="{{ route('admin.catalog.categories.create') }}"
|
||||
class="btn btn-lg btn-primary"
|
||||
>
|
||||
{{ __('admin::app.catalog.categories.add-title') }}
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -34,7 +37,7 @@
|
|||
|
||||
@push('scripts')
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$(document).ready(function() {
|
||||
$("input[type='checkbox']").change(deleteCategory);
|
||||
});
|
||||
|
||||
|
|
@ -60,13 +63,13 @@
|
|||
|
||||
if (indexes) {
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : '{{ route("admin.catalog.categories.product.count") }}',
|
||||
data : {
|
||||
_token: '{{csrf_token()}}',
|
||||
type: 'POST',
|
||||
url: '{{ route('admin.catalog.categories.product.count') }}',
|
||||
data: {
|
||||
_token: '{{ csrf_token() }}',
|
||||
indexes: indexes
|
||||
},
|
||||
success:function(data) {
|
||||
success: function(data) {
|
||||
$("input[type='checkbox']").attr('disabled', false);
|
||||
if (data.product_count > 0) {
|
||||
let message = "{{ trans('ui::app.datagrid.massaction.delete-category-product') }}";
|
||||
|
|
@ -74,7 +77,7 @@
|
|||
if (type == 'delete') {
|
||||
doAction(e, message);
|
||||
} else {
|
||||
$('form').attr('onsubmit', 'return confirm("'+message+'")');
|
||||
$('form').attr('onsubmit', 'return confirm("' + message + '")');
|
||||
}
|
||||
} else {
|
||||
let message = "{{ __('ui::app.datagrid.click_on_action') }}";
|
||||
|
|
@ -82,7 +85,7 @@
|
|||
if (type == 'delete') {
|
||||
doAction(e, message);
|
||||
} else {
|
||||
$('form').attr('onsubmit', 'return confirm("'+message+'")');
|
||||
$('form').attr('onsubmit', 'return confirm("' + message + '")');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -92,41 +95,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Do action function. Not directly calling the datagrid components.
|
||||
* Instead taking a copy and using in this scope.
|
||||
*/
|
||||
function doAction (e, message, type) {
|
||||
let element = e.currentTarget;
|
||||
|
||||
if (message) {
|
||||
element = e.target.parentElement;
|
||||
}
|
||||
|
||||
message = message || '{{ __('ui::app.datagrid.massaction.delete') }}';
|
||||
|
||||
if (confirm(message)) {
|
||||
axios.post(element.getAttribute('data-action'), {
|
||||
_token: element.getAttribute('data-token'),
|
||||
_method: element.getAttribute('data-method')
|
||||
}).then(function (response) {
|
||||
this.result = response;
|
||||
|
||||
if (response.data.redirect) {
|
||||
window.location.href = response.data.redirect;
|
||||
} else {
|
||||
location.reload();
|
||||
}
|
||||
}).catch(function (error) {
|
||||
location.reload();
|
||||
});
|
||||
|
||||
e.preventDefault();
|
||||
} else {
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload page.
|
||||
*/
|
||||
|
|
@ -138,4 +106,4 @@
|
|||
window.location.href = url.href;
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@
|
|||
|
||||
@if (view()->exists($typeView = 'admin::catalog.products.field-types.' . $attribute->type))
|
||||
|
||||
<div class="control-group {{ $attribute->type }}"
|
||||
<div class="control-group {{ $attribute->type }} {{ $attribute->enable_wysiwyg ? 'have-wysiwyg' : '' }}"
|
||||
@if ($attribute->type == 'multiselect') :class="[errors.has('{{ $attribute->code }}[]') ? 'has-error' : '']"
|
||||
@else :class="[errors.has('{{ $attribute->code }}') ? 'has-error' : '']" @endif>
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,6 @@
|
|||
<script>
|
||||
|
||||
$(document).ready(function () {
|
||||
|
||||
$(".menubar-anchor").click(function() {
|
||||
if ( $(this).parent().attr('class') == 'menu-item active' ) {
|
||||
$(this).parent().removeClass('active');
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
</div>
|
||||
|
||||
<notification
|
||||
notif-title="{{ __('admin::app.notification.notification-title') }}"
|
||||
notif-title="{{ __('admin::app.notification.notification-title', ['read' => 0]) }}"
|
||||
get-notification-url="{{ route('admin.notification.get-notification') }}"
|
||||
view-all="{{ route('admin.notification.index') }}"
|
||||
order-view-url="{{ \URL::to('/') }}/admin/viewed-notifications/"
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
.page-item .pagination-page-nav .active .page-link{
|
||||
.page-item .pagination-page-nav .active .page-link {
|
||||
color:#fff !important;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,140 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Rezervasyon Bilgileri',
|
||||
'booking-type' => 'Rezervasyon Türü',
|
||||
'default' => 'Varsayılan',
|
||||
'appointment-booking' => 'Randevu Rezervasyonu',
|
||||
'event-booking' => 'Etkinlik Rezervasyonu',
|
||||
'rental-booking' => 'Kiralık Rezervasyon',
|
||||
'table-booking' => 'Masa Rezervasyonu',
|
||||
'slot-duration' => 'Slot Süresi (Dk)',
|
||||
'break-time' => 'Mola Süresi s/b Slot (Dk)',
|
||||
'available-every-week' => 'Her Hafta Mevcut',
|
||||
'yes' => 'Evet',
|
||||
'no' => 'Hayır',
|
||||
'available-from' => 'Mevcut',
|
||||
'available-to' => 'Mevcut',
|
||||
'same-slot-all-days' => 'Tüm Günler Aynı Slot',
|
||||
'slot-has-quantity' => 'Slot Miktarı var',
|
||||
'slots' => 'Slotlar',
|
||||
'from' => 'İtibaren',
|
||||
'to' => 'İle',
|
||||
'qty' => 'Miktar',
|
||||
'add-slot' => 'Slot Ekle',
|
||||
'sunday' => 'Pazar',
|
||||
'monday' => 'Pazartesi',
|
||||
'tuesday' => 'Salı',
|
||||
'wednesday' => 'Çarşamba',
|
||||
'thursday' => 'Perşembe',
|
||||
'friday' => 'Cuma',
|
||||
'saturday' => 'Cumartesi',
|
||||
'renting-type' => 'Kiralama Türü',
|
||||
'daily' => 'Günlük Bazında',
|
||||
'hourly' => 'Saatlik Bazında',
|
||||
'daily-hourly' => 'Her ikisi (Günlük ve Saatlik)',
|
||||
'daily-price' => 'Günlük Fiyat',
|
||||
'hourly-price' => 'Saatlik Fiyat',
|
||||
'location' => 'Konum',
|
||||
'show-location' => 'Konumu Göster',
|
||||
'event-start-date' => 'Etkinlik Başlangıç Tarihi',
|
||||
'event-end-date' => 'Etkinlik Bitiş Tarihi',
|
||||
'tickets' => 'Biletler',
|
||||
'add-ticket' => 'Bilet Ekle',
|
||||
'name' => 'İsim',
|
||||
'price' => 'Fiyat',
|
||||
'quantity' => 'Miktar',
|
||||
'description' => 'Açıklama',
|
||||
'special-price' => 'Özel Fiyat',
|
||||
'special-price-from' => 'Kadar Geçerli',
|
||||
'special-price-to' => 'Geçerlilik Tarihi',
|
||||
'charged-per' => 'Ücretli',
|
||||
'guest' => 'Misafir',
|
||||
'table' => 'Masa',
|
||||
'prevent-scheduling-before' => 'Önceden Planlamayı Önle',
|
||||
'guest-limit' => 'Masa Başına Misafir Limiti',
|
||||
'guest-capacity' => 'Misafir Kapasitesi',
|
||||
'type' => 'Tür',
|
||||
'many-bookings-for-one-day' => 'Bir Gün İçin Birçok Rezervasyon',
|
||||
'one-booking-for-many-days' => 'Birçok Gün İçin Bir Rezervasyon',
|
||||
'day' => 'Gün',
|
||||
'status' => 'Durum',
|
||||
'open' => 'Açık',
|
||||
'close' => 'Kapalı',
|
||||
'time-error' => 'Gidiş zamanı, başlangıç zamanından daha büyük olmalıdır.'
|
||||
]
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'bookings' => [
|
||||
'title' => 'Rezervasyonlar',
|
||||
]
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'from' => 'İtibaren',
|
||||
'to' => 'İle'
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'location' => 'Konum',
|
||||
'contact' => 'İletişim',
|
||||
'email' => 'Email',
|
||||
'slot-duration' => 'Slot Süresi',
|
||||
'slot-duration-in-minutes' => ':minutes Dakika',
|
||||
'today-availability' => 'Bugün Kullanılabilirlik',
|
||||
'slots-for-all-days' => 'Tüm günler için göster',
|
||||
'sunday' => 'Pazar',
|
||||
'monday' => 'Pazartesi',
|
||||
'tuesday' => 'Salı',
|
||||
'wednesday' => 'Çarşamba',
|
||||
'thursday' => 'Perşembe',
|
||||
'friday' => 'Cuma',
|
||||
'saturday' => 'Cumartesi',
|
||||
'closed' => 'Kapalı',
|
||||
'book-an-appointment' => 'Randevu Al',
|
||||
'date' => 'Tarih',
|
||||
'slot' => 'Slot',
|
||||
'rent-an-item' => 'Eşya Kiralama',
|
||||
'choose-rent-option' => 'Kiralama Seçeneğini Seçin',
|
||||
'daily-basis' => 'Günlük Bazında',
|
||||
'hourly-basis' => 'Saatlik Bazında',
|
||||
'select-time-slot'=> 'Zaman aralığı seçin',
|
||||
'select-slot' => 'Slot Seç',
|
||||
'select-date' => 'Tarih Seç',
|
||||
'select-rent-time' => 'Kiralama Süresini Seçin',
|
||||
'from' => 'İtibaren',
|
||||
'to' => 'İle',
|
||||
'book-a-table' => 'Bir masa rezervasyonu',
|
||||
'special-notes' => 'Özel İstek/Notlar',
|
||||
'event-on' => 'Etkinlik Açık',
|
||||
'book-your-ticket' => 'Biletinizi Ayırtın',
|
||||
'per-ticket-price' => 'Bilet Başına :price',
|
||||
'number-of-tickets' => 'Bilet Sayısı',
|
||||
'total-tickets' => 'Toplam Biletler',
|
||||
'base-price' => 'Taban Fiyat',
|
||||
'total-price' => 'Toplam Fiyat',
|
||||
'base-price-info' => '(Bu, her miktar için her bilet türü için geçerli olacaktır.)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Kira Türü',
|
||||
'daily' => 'Günlük',
|
||||
'hourly' => 'Saatlik',
|
||||
'event-ticket' => 'Etkinlik Bileti',
|
||||
'event-from' => 'Etkinlik Kimden',
|
||||
'event-till' => 'Etkinlik Sonu',
|
||||
'rent-type' => 'Kira Türü',
|
||||
'rent-from' => 'Kiralık',
|
||||
'rent-till' => 'Kiraya Kadar',
|
||||
'booking-from' => 'Rezervasyon',
|
||||
'booking-till' => 'Rezervasyon',
|
||||
'special-note' => 'Özel İstek/Notlar',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -89,7 +89,7 @@
|
|||
<td>
|
||||
<div class="control-group" :class="[errors.has('booking[slots][' + index + '][to]') ? 'has-error' : '']">
|
||||
<time-component>
|
||||
<input type="text" v-validate="parseInt(slots.many[index].status) ? 'required': ''" :name="'booking[slots][' + index + '][to]'" class="control" v-model="slots.many[index].to" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.to') }}"">
|
||||
<input type="text" v-validate="parseInt(slots.many[index].status) ? {required: true, time_min: slots.many[index].from } : ''" :name="'booking[slots][' + index + '][to]'" class="control" v-model="slots.many[index].to" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.to') }}"">
|
||||
</time-component>
|
||||
|
||||
<span class="control-error" v-if="errors.has('booking[slots][' + index + '][to]')">
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ use Webkul\Customer\Mail\RegistrationEmail;
|
|||
use Webkul\Customer\Mail\VerificationEmail;
|
||||
use Webkul\Customer\Repositories\CustomerGroupRepository;
|
||||
use Webkul\Customer\Repositories\CustomerRepository;
|
||||
use Webkul\Sales\Models\Order;
|
||||
use Webkul\Shop\Mail\SubscriptionEmail;
|
||||
|
||||
class RegistrationController extends Controller
|
||||
|
|
@ -57,8 +56,7 @@ class RegistrationController extends Controller
|
|||
CustomerRepository $customerRepository,
|
||||
CustomerGroupRepository $customerGroupRepository,
|
||||
SubscribersListRepository $subscriptionRepository
|
||||
)
|
||||
{
|
||||
) {
|
||||
$this->_config = request('_config');
|
||||
|
||||
$this->customerRepository = $customerRepository;
|
||||
|
|
@ -89,11 +87,11 @@ class RegistrationController extends Controller
|
|||
$request->validated();
|
||||
|
||||
$data = array_merge(request()->input(), [
|
||||
'password' => bcrypt(request()->input('password')),
|
||||
'api_token' => Str::random(80),
|
||||
'is_verified' => core()->getConfigData('customer.settings.email.verification') ? 0 : 1,
|
||||
'customer_group_id' => $this->customerGroupRepository->findOneWhere(['code' => 'general'])->id,
|
||||
'token' => md5(uniqid(rand(), true)),
|
||||
'password' => bcrypt(request()->input('password')),
|
||||
'api_token' => Str::random(80),
|
||||
'is_verified' => core()->getConfigData('customer.settings.email.verification') ? 0 : 1,
|
||||
'customer_group_id' => $this->customerGroupRepository->findOneWhere(['code' => 'general'])->id,
|
||||
'token' => md5(uniqid(rand(), true)),
|
||||
'subscribed_to_news_letter' => isset(request()->input()['is_subscribed']) ? 1 : 0,
|
||||
]);
|
||||
|
||||
|
|
@ -130,7 +128,7 @@ class RegistrationController extends Controller
|
|||
'email' => $data['email'],
|
||||
'token' => $token,
|
||||
]));
|
||||
} catch (\Exception $e) { }
|
||||
} catch (\Exception $e) {}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -179,9 +177,9 @@ class RegistrationController extends Controller
|
|||
$customer = $this->customerRepository->findOneByField('token', $token);
|
||||
|
||||
if ($customer) {
|
||||
$customer->update(['is_verified' => 1, 'token' => 'NULL']);
|
||||
$this->customerRepository->update(['is_verified' => 1, 'token' => 'NULL'], $customer->id);
|
||||
|
||||
Order::where('customer_email', $customer->email)->update(['customer_id' => $customer->id]);
|
||||
$this->customerRepository->syncNewRegisteredCustomerInformations($customer);
|
||||
|
||||
session()->flash('success', trans('shop::app.customer.signup-form.verified'));
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ namespace Webkul\Customer\Repositories;
|
|||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Webkul\Core\Eloquent\Repository;
|
||||
use Webkul\Sales\Models\Order;
|
||||
|
||||
class CustomerRepository extends Repository
|
||||
{
|
||||
|
|
@ -119,4 +120,45 @@ class CustomerRepository extends Repository
|
|||
$customer->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sync new registered customer data.
|
||||
*
|
||||
* @param \Webkul\Customer\Contracts\Customer $customer
|
||||
* @return mixed
|
||||
*/
|
||||
public function syncNewRegisteredCustomerInformations($customer)
|
||||
{
|
||||
/**
|
||||
* Setting registered customer to orders.
|
||||
*/
|
||||
Order::where('customer_email', $customer->email)->update([
|
||||
'is_guest' => 0,
|
||||
'customer_id' => $customer->id,
|
||||
'customer_type' => \Webkul\Customer\Models\Customer::class,
|
||||
]);
|
||||
|
||||
/**
|
||||
* Grabbing orders by `customer_id`.
|
||||
*/
|
||||
$orders = Order::where('customer_id', $customer->id)->get();
|
||||
|
||||
/**
|
||||
* Setting registered customer to associated order's relations.
|
||||
*/
|
||||
$orders->each(function ($order) use ($customer) {
|
||||
$order->addresses()->update([
|
||||
'customer_id' => $customer->id,
|
||||
]);
|
||||
|
||||
$order->shipments()->update([
|
||||
'customer_id' => $customer->id,
|
||||
'customer_type' => \Webkul\Customer\Models\Customer::class,
|
||||
]);
|
||||
|
||||
$order->downloadable_link_purchased()->update([
|
||||
'customer_id' => $customer->id,
|
||||
]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'wishlist' => [
|
||||
'success' => 'Öğe Başarıyla İstek Listesine Eklendi',
|
||||
'failure' => 'Öğe İstek Listesine Eklenemiyor',
|
||||
'already' => 'Ürün İstek Listenizde Zaten Mevcut',
|
||||
'removed' => 'Öğe İstek Listesinden Başarıyla Kaldırıldı',
|
||||
'remove-fail' => 'Öğe İstek Listesinden Kaldırılamıyor',
|
||||
'empty' => 'İstek Listenizde Hiç Ürün Yok',
|
||||
'select-options' => 'İstek Listesine Eklemeden Önce Seçenekleri Seçmeniz Gerekiyor',
|
||||
'remove-all-success' => 'İstek Listenizdeki Tüm Öğeler Kaldırıldı',
|
||||
],
|
||||
|
||||
'reviews' => [
|
||||
'empty' => 'Henüz hiçbir ürünü incelemediniz',
|
||||
],
|
||||
|
||||
'forget_password' => [
|
||||
'reset_link_sent' => 'Şifre sıfırlama bağlantınızı e-posta ile gönderdik.',
|
||||
'email_not_exist' => "Bu e-posta adresine sahip bir kullanıcı bulamıyoruz",
|
||||
],
|
||||
|
||||
'admin' => [
|
||||
'system' => [
|
||||
'captcha' => [
|
||||
'title' => 'Captcha',
|
||||
'credentials' => 'Kimlik Bilgileri',
|
||||
'site-key' => 'Site Key',
|
||||
'secret-key' => 'Secret Key',
|
||||
'status' => 'Durum',
|
||||
|
||||
'validations' => [
|
||||
'required' => 'Lütfen CAPTCHA\'yı seçin',
|
||||
'captcha' => 'Bir şeyler yanlış gitti! Lütfen tekrar deneyin.',
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"/js/notification-app.js": "/js/notification-app.js"
|
||||
}
|
||||
|
|
@ -2,27 +2,16 @@
|
|||
|
||||
namespace Webkul\Notification\Events;
|
||||
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Broadcasting\Channel;
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Broadcasting\InteractsWithSockets;
|
||||
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class CreateOrderNotification implements ShouldBroadcast
|
||||
{
|
||||
use Dispatchable, InteractsWithSockets, SerializesModels;
|
||||
|
||||
|
||||
/**
|
||||
* Create a new event instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the channels the event should broadcast on.
|
||||
*
|
||||
|
|
@ -33,7 +22,13 @@ class CreateOrderNotification implements ShouldBroadcast
|
|||
return new Channel('notification');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Seperate queue.
|
||||
*
|
||||
* Command: `php artisan queue:work --queue=broadcastable`
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function broadcastQueue()
|
||||
{
|
||||
return 'broadcastable';
|
||||
|
|
@ -42,7 +37,7 @@ class CreateOrderNotification implements ShouldBroadcast
|
|||
/**
|
||||
* Get the channels the event should broadcast as.
|
||||
*
|
||||
* @return broadcast name
|
||||
* @return string
|
||||
*/
|
||||
public function broadcastAs()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
namespace Webkul\Notification\Events;
|
||||
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Broadcasting\Channel;
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Broadcasting\InteractsWithSockets;
|
||||
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class UpdateOrderNotification implements ShouldBroadcast
|
||||
{
|
||||
|
|
@ -34,7 +34,7 @@ class UpdateOrderNotification implements ShouldBroadcast
|
|||
return new Channel('notification');
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Broadcast with data.
|
||||
*
|
||||
* @return array
|
||||
|
|
@ -44,16 +44,25 @@ class UpdateOrderNotification implements ShouldBroadcast
|
|||
return $this->data;
|
||||
}
|
||||
|
||||
public function broadcastQueue () {
|
||||
/**
|
||||
* Seperate queue.
|
||||
*
|
||||
* Command: `php artisan queue:work --queue=broadcastable`
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function broadcastQueue()
|
||||
{
|
||||
return 'broadcastable';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the channels the event should broadcast as.
|
||||
*
|
||||
* @return broadcast name
|
||||
* @return string
|
||||
*/
|
||||
public function broadcastAs () {
|
||||
public function broadcastAs()
|
||||
{
|
||||
return 'update-notification';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ class NotificationController extends Controller
|
|||
*/
|
||||
protected $_config;
|
||||
|
||||
|
||||
/**
|
||||
* NotificationRepository
|
||||
*
|
||||
|
|
@ -55,21 +54,19 @@ class NotificationController extends Controller
|
|||
{
|
||||
$params = request()->all();
|
||||
|
||||
$searchResults = [];
|
||||
|
||||
if(isset($params) && isset($params['page'])){
|
||||
if (isset($params['page'])) {
|
||||
unset($params['page']);
|
||||
}
|
||||
|
||||
if(isset($params) && $params != NULL){
|
||||
if (count($params)) {
|
||||
$searchResults = $this->notificationRepository->getParamsData($params);
|
||||
}else{
|
||||
} else {
|
||||
$searchResults = $this->notificationRepository->with('order')->latest()->paginate(10);
|
||||
}
|
||||
|
||||
return [
|
||||
'search_results' => $searchResults,
|
||||
'total_unread' => $this->notificationRepository->where('read',0)->count()
|
||||
'total_unread' => $this->notificationRepository->where('read', 0)->count(),
|
||||
];
|
||||
}
|
||||
|
||||
|
|
@ -78,10 +75,12 @@ class NotificationController extends Controller
|
|||
*
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function viewedNotifications($orderId){
|
||||
public function viewedNotifications($orderId)
|
||||
{
|
||||
|
||||
if($notification = $this->notificationRepository->where('order_id',$orderId)->first()){
|
||||
if ($notification = $this->notificationRepository->where('order_id', $orderId)->first()) {
|
||||
$notification->read = 1;
|
||||
|
||||
$notification->save();
|
||||
|
||||
return redirect()->route('admin.sales.orders.view',$orderId);
|
||||
|
|
@ -95,20 +94,20 @@ class NotificationController extends Controller
|
|||
*
|
||||
* @return array
|
||||
*/
|
||||
public function readAllNotifications(){
|
||||
|
||||
$this->notificationRepository->where('read',0)->update(['read' => 1]);
|
||||
public function readAllNotifications()
|
||||
{
|
||||
$this->notificationRepository->where('read', 0)->update(['read' => 1]);
|
||||
|
||||
$params = [
|
||||
"limit" => 5,
|
||||
"read" => 0
|
||||
"read" => 0
|
||||
];
|
||||
|
||||
$searchResults = $this->notificationRepository->getParamsData($params);
|
||||
|
||||
return [
|
||||
'search_results' => $searchResults,
|
||||
'total_unread' => $this->notificationRepository->where('read',0)->count(),
|
||||
'search_results' => $searchResults,
|
||||
'total_unread' => $this->notificationRepository->where('read', 0)->count(),
|
||||
'success_message' => trans('admin::app.notification.notification-marked-success')
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ class Order
|
|||
protected $notificationRepository;
|
||||
|
||||
/**
|
||||
* Create a new event instance.
|
||||
* Create a new listener instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
|
@ -33,7 +33,7 @@ class Order
|
|||
*/
|
||||
public function createOrder($order)
|
||||
{
|
||||
$this->notificationRepository->create(['type' => 'order','order_id' => $order->id]);
|
||||
$this->notificationRepository->create(['type' => 'order', 'order_id' => $order->id]);
|
||||
|
||||
event(new CreateOrderNotification);
|
||||
}
|
||||
|
|
@ -45,9 +45,9 @@ class Order
|
|||
*/
|
||||
public function updateOrder($order)
|
||||
{
|
||||
$orderArray =[
|
||||
'id' => $order->id,
|
||||
'status' => $order->status
|
||||
$orderArray = [
|
||||
'id' => $order->id,
|
||||
'status' => $order->status,
|
||||
];
|
||||
|
||||
event(new UpdateOrderNotification($orderArray));
|
||||
|
|
|
|||
|
|
@ -23,22 +23,24 @@ class NotificationRepository extends Repository
|
|||
*/
|
||||
public function getParamsData($params)
|
||||
{
|
||||
if(isset($params['id']) && isset($params['status'])){
|
||||
return $params['status'] != 'All' ? $this->model->where(function($qry)use ($params){
|
||||
if (isset($params['id']) && isset($params['status'])) {
|
||||
return $params['status'] != 'All' ? $this->model->where(function($qry) use ($params) {
|
||||
$qry->whereHas('order',function ($q) use ($params) {
|
||||
$q->where(['status' => $params['status']]);
|
||||
});
|
||||
})->where('order_id',$params['id'])->with('order')->paginate(10) : $this->model->where('order_id',$params['id'])->with('order')->paginate(10) ;
|
||||
}elseif (isset($params['status'])) {
|
||||
return $params['status'] != 'All' ? $this->model->where(function($qry)use ($params){
|
||||
})->where('order_id', $params['id'])->with('order')->paginate(10) : $this->model->where('order_id', $params['id'])->with('order')->paginate(10) ;
|
||||
} else if (isset($params['status'])) {
|
||||
return $params['status'] != 'All' ? $this->model->where(function($qry) use ($params) {
|
||||
$qry->whereHas('order',function ($q) use ($params) {
|
||||
$q->where(['status' => $params['status']]);
|
||||
});
|
||||
})->with('order')->paginate(10): $this->model->with('order')->latest()->paginate(10);
|
||||
}elseif(isset($params['limit'])){
|
||||
} else if(isset($params['read']) && isset($params['limit'])) {
|
||||
return $this->model->where('read', $params['read'])->limit($params['limit'])->with('order')->latest()->paginate($params['limit']);
|
||||
} else if(isset($params['limit'])) {
|
||||
return $this->model->limit($params['limit'])->with('order')->latest()->paginate($params['limit']);
|
||||
}elseif(isset($params['id'])){
|
||||
return $this->model->where('order_id',$params['id'])->with('order')->paginate(10);
|
||||
} else if(isset($params['id'])) {
|
||||
return $this->model->where('order_id', $params['id'])->with('order')->paginate(10);
|
||||
}
|
||||
|
||||
return [];
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ use Illuminate\Support\Facades\Storage;
|
|||
use Illuminate\Support\Str;
|
||||
use Webkul\Attribute\Models\Attribute;
|
||||
use Webkul\Attribute\Repositories\AttributeRepository;
|
||||
use Webkul\Checkout\Facades\Cart;
|
||||
use Webkul\Core\Eloquent\Repository;
|
||||
use Webkul\Product\Models\Product;
|
||||
use Webkul\Product\Models\ProductAttributeValueProxy;
|
||||
|
|
@ -198,7 +197,6 @@ class ProductRepository extends Repository
|
|||
$qb = $query->distinct()
|
||||
->select('product_flat.*')
|
||||
->leftJoin('product_categories', 'product_categories.product_id', '=', 'product_flat.product_id')
|
||||
->leftJoin('product_attribute_values', 'product_attribute_values.product_id', '=', 'product_flat.product_id')
|
||||
->where('product_flat.channel', $channel)
|
||||
->where('product_flat.locale', $locale)
|
||||
->whereNotNull('product_flat.url_key');
|
||||
|
|
@ -266,14 +264,16 @@ class ProductRepository extends Repository
|
|||
}
|
||||
}
|
||||
|
||||
$this->variantJoin($qb);
|
||||
|
||||
$qb
|
||||
->leftJoin('catalog_rule_product_prices', 'catalog_rule_product_prices.product_id', '=', 'product_flat.product_id')
|
||||
->leftJoin('product_customer_group_prices', 'product_customer_group_prices.product_id', '=', 'product_flat.product_id')
|
||||
->leftJoin('catalog_rule_product_prices', 'catalog_rule_product_prices.product_id', '=', 'variants.product_id')
|
||||
->leftJoin('product_customer_group_prices', 'product_customer_group_prices.product_id', '=', 'variants.product_id')
|
||||
->where(function ($qb) use ($priceRange, $customerGroupId) {
|
||||
$qb->where(function ($qb) use ($priceRange) {
|
||||
$qb
|
||||
->where('product_flat.min_price', '>=', core()->convertToBasePrice($priceRange[0]))
|
||||
->where('product_flat.min_price', '<=', core()->convertToBasePrice(end($priceRange)));
|
||||
->where('variants.min_price', '>=', core()->convertToBasePrice($priceRange[0]))
|
||||
->where('variants.min_price', '<=', core()->convertToBasePrice(end($priceRange)));
|
||||
})
|
||||
->orWhere(function ($qb) use ($priceRange) {
|
||||
$qb
|
||||
|
|
@ -296,6 +296,8 @@ class ProductRepository extends Repository
|
|||
));
|
||||
|
||||
if (count($attributeFilters) > 0) {
|
||||
$this->variantJoin($qb);
|
||||
|
||||
$qb->where(function ($filterQuery) use ($attributeFilters) {
|
||||
foreach ($attributeFilters as $attribute) {
|
||||
$filterQuery->orWhere(function ($attributeQuery) use ($attribute) {
|
||||
|
|
@ -329,7 +331,7 @@ class ProductRepository extends Repository
|
|||
|
||||
# this is key! if a product has been filtered down to the same number of attributes that we filtered on,
|
||||
# we know that it has matched all of the requested filters.
|
||||
$qb->groupBy('product_flat.id');
|
||||
$qb->groupBy('variants.id');
|
||||
$qb->havingRaw('COUNT(*) = ' . count($attributeFilters));
|
||||
}
|
||||
|
||||
|
|
@ -606,6 +608,25 @@ class ProductRepository extends Repository
|
|||
return $copiedProduct;
|
||||
}
|
||||
|
||||
/**
|
||||
* Variant join.
|
||||
*
|
||||
* @param mixed $query
|
||||
* @return void
|
||||
*/
|
||||
private function variantJoin($query)
|
||||
{
|
||||
static $alreadyJoined = false;
|
||||
|
||||
if (! $alreadyJoined) {
|
||||
$alreadyJoined = true;
|
||||
|
||||
$query
|
||||
->join('product_flat as variants', 'product_flat.id', '=', DB::raw('COALESCE(' . DB::getTablePrefix() . 'variants.parent_id, ' . DB::getTablePrefix() . 'variants.id)'))
|
||||
->leftJoin('product_attribute_values', 'product_attribute_values.product_id', '=', 'variants.product_id');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get default sort by option.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -3,15 +3,15 @@
|
|||
namespace Webkul\Sales\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Webkul\Checkout\Models\CartProxy;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
use Webkul\Checkout\Models\CartProxy;
|
||||
use Webkul\Sales\Contracts\Order as OrderContract;
|
||||
use Webkul\Sales\Database\Factories\OrderFactory;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
class Order extends Model implements OrderContract
|
||||
{
|
||||
|
|
@ -44,13 +44,13 @@ class Order extends Model implements OrderContract
|
|||
];
|
||||
|
||||
protected $statusLabel = [
|
||||
self::STATUS_PENDING => 'Pending',
|
||||
self::STATUS_PENDING => 'Pending',
|
||||
self::STATUS_PENDING_PAYMENT => 'Pending Payment',
|
||||
self::STATUS_PROCESSING => 'Processing',
|
||||
self::STATUS_COMPLETED => 'Completed',
|
||||
self::STATUS_CANCELED => 'Canceled',
|
||||
self::STATUS_CLOSED => 'Closed',
|
||||
self::STATUS_FRAUD => 'Fraud',
|
||||
self::STATUS_PROCESSING => 'Processing',
|
||||
self::STATUS_COMPLETED => 'Completed',
|
||||
self::STATUS_CANCELED => 'Canceled',
|
||||
self::STATUS_CLOSED => 'Closed',
|
||||
self::STATUS_FRAUD => 'Fraud',
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
@ -99,7 +99,7 @@ class Order extends Model implements OrderContract
|
|||
public function items(): HasMany
|
||||
{
|
||||
return $this->hasMany(OrderItemProxy::modelClass())
|
||||
->whereNull('parent_id');
|
||||
->whereNull('parent_id');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -118,6 +118,14 @@ class Order extends Model implements OrderContract
|
|||
return $this->hasMany(OrderItemProxy::modelClass());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the order record associated with the item.
|
||||
*/
|
||||
public function downloadable_link_purchased()
|
||||
{
|
||||
return $this->hasMany(DownloadableLinkPurchasedProxy::modelClass());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the order shipments record associated with the order.
|
||||
*/
|
||||
|
|
@ -180,7 +188,7 @@ class Order extends Model implements OrderContract
|
|||
public function billing_address(): HasMany
|
||||
{
|
||||
return $this->addresses()
|
||||
->where('address_type', OrderAddress::ADDRESS_TYPE_BILLING);
|
||||
->where('address_type', OrderAddress::ADDRESS_TYPE_BILLING);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -189,7 +197,7 @@ class Order extends Model implements OrderContract
|
|||
public function getBillingAddressAttribute()
|
||||
{
|
||||
return $this->billing_address()
|
||||
->first();
|
||||
->first();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -198,7 +206,7 @@ class Order extends Model implements OrderContract
|
|||
public function shipping_address(): HasMany
|
||||
{
|
||||
return $this->addresses()
|
||||
->where('address_type', OrderAddress::ADDRESS_TYPE_SHIPPING);
|
||||
->where('address_type', OrderAddress::ADDRESS_TYPE_SHIPPING);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -207,7 +215,7 @@ class Order extends Model implements OrderContract
|
|||
public function getShippingAddressAttribute()
|
||||
{
|
||||
return $this->shipping_address()
|
||||
->first();
|
||||
->first();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -227,7 +235,7 @@ class Order extends Model implements OrderContract
|
|||
{
|
||||
foreach ($this->items as $item) {
|
||||
if ($item->getTypeInstance()
|
||||
->isStockable()) {
|
||||
->isStockable()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -283,8 +291,8 @@ class Order extends Model implements OrderContract
|
|||
public function hasOpenInvoice(): bool
|
||||
{
|
||||
$pendingInvoice = $this->invoices()->where('state', 'pending')
|
||||
->orWhere('state', 'pending_payment')
|
||||
->first();
|
||||
->orWhere('state', 'pending_payment')
|
||||
->first();
|
||||
|
||||
if ($pendingInvoice) {
|
||||
return true;
|
||||
|
|
@ -313,7 +321,7 @@ class Order extends Model implements OrderContract
|
|||
}
|
||||
|
||||
$pendingInvoice = $this->invoices->where('state', 'pending')
|
||||
->first();
|
||||
->first();
|
||||
if ($pendingInvoice) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -339,7 +347,7 @@ class Order extends Model implements OrderContract
|
|||
}
|
||||
|
||||
$pendingInvoice = $this->invoices->where('state', 'pending')
|
||||
->first();
|
||||
->first();
|
||||
if ($pendingInvoice) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -351,7 +359,7 @@ class Order extends Model implements OrderContract
|
|||
}
|
||||
|
||||
if ($this->base_grand_total_invoiced - $this->base_grand_total_refunded - $this->refunds()
|
||||
->sum('base_adjustment_fee') > 0) {
|
||||
->sum('base_adjustment_fee') > 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -365,6 +373,6 @@ class Order extends Model implements OrderContract
|
|||
*/
|
||||
protected static function newFactory(): Factory
|
||||
{
|
||||
return OrderFactory::new();
|
||||
return OrderFactory::new ();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/js/shop.js": "/js/shop.js?id=f4cfa6bfa7a408f0ce86",
|
||||
"/css/shop.css": "/css/shop.css?id=2e1191f8de843a86ba34"
|
||||
"/css/shop.css": "/css/shop.css?id=0198b96b5e7871291a68"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1082,6 +1082,19 @@ section.slider-block {
|
|||
.btn.btn-sm {
|
||||
padding: 9px 25px;
|
||||
}
|
||||
|
||||
.button-group {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 0;
|
||||
display: grid;
|
||||
column-gap: 10px;
|
||||
grid-template-columns: auto auto;
|
||||
|
||||
.btn {
|
||||
word-break: break-all;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cart-dropdown-container {
|
||||
|
|
@ -3274,6 +3287,7 @@ section.review {
|
|||
|
||||
.review-layouter {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
|
||||
.product-info {
|
||||
max-width: 25%;
|
||||
|
|
@ -3286,6 +3300,7 @@ section.review {
|
|||
img {
|
||||
height: 280px;
|
||||
width: 280px;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ return [
|
|||
'page-title' => 'Adres',
|
||||
'title' => 'Adres',
|
||||
'add' => 'Adres Ekle',
|
||||
'edit' => 'Düzenşe',
|
||||
'edit' => 'Düzenle',
|
||||
'empty' => 'Henüz kayıtlı adresiniz bulunmuyor. Eklemek için lütfen aşağıdaki linki tıklayınız.',
|
||||
'create' => 'Adres Ekle',
|
||||
'delete' => 'Sil',
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@
|
|||
<span style="font-size: 12px;">{{ __('shop::app.header.dropdown-text') }}</span>
|
||||
</div>
|
||||
|
||||
<div style="margin-top: 15px;">
|
||||
<div class="button-group">
|
||||
<a class="btn btn-primary btn-md" href="{{ route('customer.session.index') }}" style="color: #ffffff">
|
||||
{{ __('shop::app.header.sign-in') }}
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'system' => [
|
||||
'social-login' => 'Sosyal Medya Giriş',
|
||||
'enable-facebook' => 'Facebook Etkinleştir',
|
||||
'enable-twitter' => 'Twitter Etkinleştir',
|
||||
'enable-google' => 'Google Etkinleştir',
|
||||
'enable-linkedin' => 'LinkedIn Etkinleştir',
|
||||
'enable-github' => 'Github Etkinleştir'
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'customer' => [
|
||||
'login-form' => [
|
||||
'continue-with-facebook' => 'Facebook İle Devam Et',
|
||||
'continue-with-twitter' => 'Twitter İle Devam Et',
|
||||
'continue-with-google' => 'Google İle Devam Et',
|
||||
'continue-with-linkedin' => 'LinkedIn İle Devam Et',
|
||||
'continue-with-github' => 'Github İle Devam Et',
|
||||
'or' => 'Veya'
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -4,14 +4,14 @@ return [
|
|||
'admin' => [
|
||||
'system' => [
|
||||
'taxes' => [
|
||||
'taxes' => 'Taxes',
|
||||
'catalogue' => 'Catalog',
|
||||
'pricing' => 'Pricing',
|
||||
'tax-inclusive' => 'Tax inclusive',
|
||||
'default-location-calculation' => 'Default Location Calculation',
|
||||
'default-country' => 'Default Country',
|
||||
'default-state' => 'Default State',
|
||||
'default-post-code' => 'Default Post Code',
|
||||
'taxes' => 'Vergiler',
|
||||
'catalogue' => 'Katalog',
|
||||
'pricing' => 'Fiyatlandırma',
|
||||
'tax-inclusive' => 'Vergiler dahil',
|
||||
'default-location-calculation' => 'Varsayılan Konum Hesaplama',
|
||||
'default-country' => 'Varsayılan Ülke',
|
||||
'default-state' => 'Varsayılan durum',
|
||||
'default-post-code' => 'Varsayılan Posta Kodu',
|
||||
],
|
||||
]
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/js/ui.js": "/js/ui.js?id=2d3c7f7ecb9aecfd0d8b",
|
||||
"/css/ui.css": "/css/ui.css?id=e2aba6492905df892f66"
|
||||
"/js/ui.js": "/js/ui.js?id=818781c8aa26e3fd9f21",
|
||||
"/css/ui.css": "/css/ui.css?id=bd09631c82c50b02445f"
|
||||
}
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 264 B |
|
Before Width: | Height: | Size: 518 B |
|
Before Width: | Height: | Size: 513 B |
|
|
@ -599,7 +599,7 @@
|
|||
v-text="translations.submit"
|
||||
type="submit"
|
||||
class="btn btn-sm btn-primary"
|
||||
style="margin-left: 10px"
|
||||
style="margin-left: 10px; white-space: nowrap;"
|
||||
></button>
|
||||
</form>
|
||||
</div>
|
||||
|
|
@ -634,7 +634,7 @@
|
|||
v-for="(column, columnKey) in columns"
|
||||
v-text="column.label"
|
||||
class="grid_head"
|
||||
:class="{sortable: column.sortable}"
|
||||
:class="{ sortable: column.sortable }"
|
||||
:style="
|
||||
typeof column.width !== 'undefined' &&
|
||||
column.width
|
||||
|
|
@ -718,11 +718,7 @@
|
|||
"
|
||||
v-on:click="
|
||||
action.method != 'GET'
|
||||
? typeof action.function !==
|
||||
'undefined' &&
|
||||
action.function
|
||||
? action.function
|
||||
: doAction($event)
|
||||
? doAction($event)
|
||||
: {}
|
||||
"
|
||||
:data-method="action.method"
|
||||
|
|
@ -804,6 +800,7 @@ export default {
|
|||
|
||||
data: function() {
|
||||
return {
|
||||
id: btoa(this.src),
|
||||
url: this.src,
|
||||
isDataLoaded: false,
|
||||
dataGridIndex: 0,
|
||||
|
|
@ -854,6 +851,8 @@ export default {
|
|||
hitUrl: function() {
|
||||
let self = this;
|
||||
|
||||
this.analyzeDatagridsInfo();
|
||||
|
||||
axios
|
||||
.get(this.url)
|
||||
.then(function(response) {
|
||||
|
|
@ -872,6 +871,97 @@ export default {
|
|||
});
|
||||
},
|
||||
|
||||
analyzeDatagridsInfo: function() {
|
||||
if (!this.isDataLoaded && this.url === `${this.src}?v=1`) {
|
||||
let datagridInfo = this.getCurrentDatagridInfo();
|
||||
|
||||
if (datagridInfo) {
|
||||
this.filterCurrentDatagridFromDatagridsInfo();
|
||||
|
||||
this.url = datagridInfo.previousUrl;
|
||||
}
|
||||
} else {
|
||||
let datagridsInfo = this.getDatagridsInfo();
|
||||
|
||||
if (datagridsInfo && datagridsInfo.length > 0) {
|
||||
if (this.isCurrentDatagridInfoExists()) {
|
||||
datagridsInfo = datagridsInfo.map(datagrid => {
|
||||
if (datagrid.id === this.id) {
|
||||
return this.getDatagridsInfoDefaults();
|
||||
}
|
||||
|
||||
return datagrid;
|
||||
});
|
||||
} else {
|
||||
datagridsInfo.push(this.getDatagridsInfoDefaults());
|
||||
}
|
||||
} else {
|
||||
datagridsInfo = [this.getDatagridsInfoDefaults()];
|
||||
}
|
||||
|
||||
this.updateDatagridsInfo(datagridsInfo);
|
||||
}
|
||||
},
|
||||
|
||||
isCurrentDatagridInfoExists: function() {
|
||||
let datagridsInfo = this.getDatagridsInfo();
|
||||
|
||||
return !!datagridsInfo.find(({ id }) => id === this.id);
|
||||
},
|
||||
|
||||
getCurrentDatagridInfo: function() {
|
||||
let datagridsInfo = this.getDatagridsInfo();
|
||||
|
||||
return this.isCurrentDatagridInfoExists()
|
||||
? datagridsInfo.find(({ id }) => id === this.id)
|
||||
: null;
|
||||
},
|
||||
|
||||
getDatagridsInfoStorageKey: function() {
|
||||
return 'datagridsInfo';
|
||||
},
|
||||
|
||||
getDatagridsInfoDefaults: function() {
|
||||
return {
|
||||
id: this.id,
|
||||
previousUrl: this.url
|
||||
};
|
||||
},
|
||||
|
||||
getDatagridsInfo: function() {
|
||||
let storageInfo = localStorage.getItem(
|
||||
this.getDatagridsInfoStorageKey()
|
||||
);
|
||||
|
||||
return !this.isValidJsonString(storageInfo)
|
||||
? []
|
||||
: JSON.parse(storageInfo) ?? [];
|
||||
},
|
||||
|
||||
updateDatagridsInfo: function(info) {
|
||||
localStorage.setItem(
|
||||
this.getDatagridsInfoStorageKey(),
|
||||
JSON.stringify(info)
|
||||
);
|
||||
},
|
||||
|
||||
filterCurrentDatagridFromDatagridsInfo: function() {
|
||||
let datagridsInfo = this.getDatagridsInfo();
|
||||
|
||||
datagridsInfo = datagridsInfo.filter(({ id }) => id !== this.id);
|
||||
|
||||
this.updateDatagridsInfo(datagridsInfo);
|
||||
},
|
||||
|
||||
isValidJsonString: function(str) {
|
||||
try {
|
||||
JSON.parse(str);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
initDatagrid: function() {
|
||||
this.setParamsAndUrl();
|
||||
|
||||
|
|
@ -1581,7 +1671,8 @@ export default {
|
|||
|
||||
window.flashMessages.push({
|
||||
type: 'alert-error',
|
||||
message: response.data.message ?? 'Something went wrong!'
|
||||
message:
|
||||
response.data.message ?? 'Something went wrong!'
|
||||
});
|
||||
|
||||
self.$root.addFlashMessages();
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@
|
|||
}
|
||||
|
||||
.accordian-right-icon {
|
||||
background-image: url("../images/chevron-right.png");
|
||||
background-image: url("../images/chevron-right.svg");
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"/js/jquery-ez-plus.js": "/js/jquery-ez-plus.js?id=ba3c7cada62de152fd8fce211d0b1b70",
|
||||
"/js/velocity-core.js": "/js/velocity-core.js?id=73cc7c3501570ebe9151c72d954bd97d",
|
||||
"/js/velocity.js": "/js/velocity.js?id=8ee54dee47fe0c33e837a3c84d7dd270",
|
||||
"/js/velocity.js": "/js/velocity.js?id=7322a300b7abd91c0f4566dca15157d0",
|
||||
"/js/manifest.js": "/js/manifest.js?id=3cded37ef514b0fb89b10e7109801248",
|
||||
"/js/components.js": "/js/components.js?id=aa38c7c0c1db2c698155567aacf379d2",
|
||||
"/css/velocity.css": "/css/velocity.css?id=c3f8667508711413ddd1d34b655de727",
|
||||
"/js/components.js": "/js/components.js?id=13b9830a81895f01341599d02ece594b",
|
||||
"/css/velocity.css": "/css/velocity.css?id=b52d15b7e354ab4d33f797d00df3ab2a",
|
||||
"/css/velocity-admin.css": "/css/velocity-admin.css?id=b67a82956e53163b5e3ff45a44f9778f",
|
||||
"/images/icon-calendar.svg": "/images/icon-calendar.svg?id=870d0f733a58377422766f3152e15486",
|
||||
"/images/icon-camera.svg": "/images/icon-camera.svg?id=b2fd2f9e17e1ccee96e29f6c6cec91e8",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
|
||||
<div :class="`row mb15 col-12 ${rowClass}`">
|
||||
<div :class="`row mb15 col-12 carousel-products-header ${rowClass}`">
|
||||
<div class="col-4 no-padding" v-if="tabs || viewAll || scrollable">
|
||||
<h2 class="fs20 fw6">{{ headerHeading }}</h2>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
:dir="localeDirection"
|
||||
:id="id"
|
||||
:navigationEnabled="true"
|
||||
navigationPrevLabel="<span class='rango-arrow-left'></span>"
|
||||
navigationNextLabel="<span class='rango-arrow-right'></span>"
|
||||
:paginationEnabled="true"
|
||||
:perPage="parseInt(slidesPerPage)"
|
||||
:loop="loop == 'true' ? true : false"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
@mouseout="toggleSidebar('0', $event, 'mouseout')"
|
||||
@mouseover="toggleSidebar('0', $event, 'mouseover')"
|
||||
>
|
||||
<i class="rango-view-list text-down-4 align-vertical-top fs18"> </i>
|
||||
<i class="rango-view-list align-vertical-top fs18"> </i>
|
||||
|
||||
<span
|
||||
class="pl5"
|
||||
|
|
|
|||
|
|
@ -2,8 +2,10 @@
|
|||
<div :class="`dropdown ${cartItems.length > 0 ? '' : 'disable-active'}`">
|
||||
<div class="dropdown-toggle btn btn-link" id="mini-cart" :class="{'cursor-not-allowed': ! cartItems.length}">
|
||||
<div class="mini-cart-content">
|
||||
<i class="material-icons-outlined text-down-3">shopping_cart</i>
|
||||
<span class="badge" v-text="cartItems.length" v-if="cartItems.length != 0"></span>
|
||||
<i class="material-icons-outlined">shopping_cart</i>
|
||||
<div class="badge-container">
|
||||
<span class="badge" v-text="cartItems.length" v-if="cartItems.length != 0"></span>
|
||||
</div>
|
||||
<span class="fs18 fw6 cart-text" v-text="cartText"></span>
|
||||
</div>
|
||||
|
||||
|
|
@ -24,9 +26,9 @@
|
|||
v-for="(item, index) in cartItems"
|
||||
>
|
||||
<div class="col-3 product-image-container mr15">
|
||||
<a @click="removeProduct(item.id)">
|
||||
<span class="remove-item" @click="removeProduct(item.id)">
|
||||
<span class="rango-close"></span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
<a
|
||||
class="unset"
|
||||
|
|
@ -43,7 +45,7 @@
|
|||
<div class="col-9 no-padding card-body align-vertical-top">
|
||||
<div class="no-padding">
|
||||
<div
|
||||
class="fs16 text-nowrap fw6"
|
||||
class="fs16 text-nowrap fw6 product-name"
|
||||
v-html="item.name"
|
||||
></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
{{ product.new }}
|
||||
</div>
|
||||
|
||||
<div class="product-price fs16" v-html="product.priceHTML"></div>
|
||||
<div v-html="product.priceHTML"></div>
|
||||
|
||||
<div
|
||||
class="product-rating col-12 no-padding"
|
||||
|
|
|
|||
|
|
@ -10,20 +10,26 @@
|
|||
v-text="quantityText"
|
||||
></label>
|
||||
|
||||
<button type="button" class="decrease" @click="decreaseQty()">-</button>
|
||||
<div class="input-btn-group">
|
||||
<button type="button" class="decrease" @click="decreaseQty()">
|
||||
<i class="rango-minus"></i>
|
||||
</button>
|
||||
|
||||
<input
|
||||
ref="quantityChanger"
|
||||
:name="controlName"
|
||||
:model="qty"
|
||||
class="control"
|
||||
id="quantity-changer"
|
||||
v-validate="validations"
|
||||
:data-vv-as="`"${quantityText}"`"
|
||||
@keyup="setQty($event)"
|
||||
/>
|
||||
<input
|
||||
ref="quantityChanger"
|
||||
:name="controlName"
|
||||
:model="qty"
|
||||
class="control"
|
||||
id="quantity-changer"
|
||||
v-validate="validations"
|
||||
:data-vv-as="`"${quantityText}"`"
|
||||
@keyup="setQty($event)"
|
||||
/>
|
||||
|
||||
<button type="button" class="increase" @click="increaseQty()">+</button>
|
||||
<button type="button" class="increase" @click="increaseQty()">
|
||||
<i class="rango-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<span class="control-error" v-if="errors.has(controlName)">{{
|
||||
errors.first(controlName)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
:class="`sidebar ${addClass ? addClass : ''}`"
|
||||
v-if="slicedCategories && slicedCategories.length > 0"
|
||||
>
|
||||
<ul type="none">
|
||||
<ul type="none" style="margin-bottom: 0">
|
||||
<li
|
||||
:key="categoryIndex"
|
||||
:id="`category-${category.id}`"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,11 @@
|
|||
/*
|
||||
|
|
||||
| Added back again because in chrome this is not using and light house also saying not used.
|
||||
| But in mozilla all fonts are gone which creating problem.
|
||||
|
|
||||
*/
|
||||
@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600;700&display=swap');
|
||||
|
||||
/* main imports */
|
||||
@import 'main/rango';
|
||||
@import 'main/icons';
|
||||
|
|
@ -97,6 +105,10 @@ body {
|
|||
font-family: $font-family-pro;
|
||||
}
|
||||
|
||||
label {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.btn {
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
|
|
@ -224,6 +236,21 @@ body {
|
|||
.dropdown-list {
|
||||
top: 40px;
|
||||
right: 10px;
|
||||
|
||||
.modal-header {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 5px 20px 15px 20px;
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
.theme-btn {
|
||||
width: 50%;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -251,6 +278,7 @@ body {
|
|||
padding-left: 5px;
|
||||
position: relative;
|
||||
padding-right: 15px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
|
|
@ -380,13 +408,13 @@ body {
|
|||
|
||||
header {
|
||||
.logo {
|
||||
height: 50px;
|
||||
height: 46px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
#search-form {
|
||||
height: 40px;
|
||||
margin: 5px 0px;
|
||||
margin: 8px 0px;
|
||||
background: $white-color;
|
||||
|
||||
* {
|
||||
|
|
@ -467,53 +495,21 @@ header {
|
|||
}
|
||||
}
|
||||
|
||||
/* To Do: To avoid CLS reserve width for all locale */
|
||||
.mini-cart-container {
|
||||
height: 50px;
|
||||
padding: 5px 17px;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
|
||||
#mini-cart {
|
||||
.mini-cart-content {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
text-align: right;
|
||||
margin-right: 7px;
|
||||
letter-spacing: 0;
|
||||
position: relative;
|
||||
color: $font-color;
|
||||
display: inline-block;
|
||||
|
||||
i {
|
||||
+ span.cart-text {
|
||||
padding-left: 0px;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
}
|
||||
|
||||
.cart-text {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
+ .down-arrow-container {
|
||||
.rango-arrow-down {
|
||||
top: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.left-wrapper {
|
||||
float: right;
|
||||
|
||||
.compare-btn,
|
||||
.wishlist-btn {
|
||||
height: 50px;
|
||||
.wishlist-btn,
|
||||
.mini-cart-btn {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
padding: 10px 16px 6px 16px;
|
||||
margin: 16px;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
|
||||
&.mini-cart-btn {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
i {
|
||||
margin-right: 5px;
|
||||
|
|
@ -538,8 +534,39 @@ header {
|
|||
}
|
||||
|
||||
span {
|
||||
top: 2px;
|
||||
position: relative;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
#mini-cart {
|
||||
padding: 0;
|
||||
line-height: inherit;
|
||||
|
||||
.mini-cart-content {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
text-align: right;
|
||||
margin-right: 7px;
|
||||
letter-spacing: 0;
|
||||
position: relative;
|
||||
color: $font-color;
|
||||
display: inline-block;
|
||||
|
||||
i {
|
||||
+ span.cart-text {
|
||||
padding-left: 0px;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
}
|
||||
|
||||
+ .down-arrow-container {
|
||||
top: 0;
|
||||
|
||||
.rango-arrow-down {
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -920,14 +947,14 @@ i.within-circle {
|
|||
.form-style {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 34px;
|
||||
height: 36px;
|
||||
padding: 6px 12px;
|
||||
font-size: 14px;
|
||||
font-size: 16px;
|
||||
line-height: 1.42857143;
|
||||
color: #555;
|
||||
color: rgba(0, 0, 0, 0.83);
|
||||
background-color: #fff;
|
||||
background-image: none;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid #DCDCDC;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,14 @@
|
|||
|
||||
.accordian {
|
||||
.accordian-header {
|
||||
width: 100%;
|
||||
font-size: 18px;
|
||||
cursor: pointer;
|
||||
color: #3a3a3a;
|
||||
padding: 20px 0;
|
||||
display: inline-block;
|
||||
border-bottom: 1px solid #d3d3d3;
|
||||
|
||||
i.rango-arrow {
|
||||
float: right;
|
||||
font-size: 24px;
|
||||
|
|
@ -57,39 +65,24 @@
|
|||
}
|
||||
}
|
||||
|
||||
.accordian-content {
|
||||
width: 100%;
|
||||
display: none;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
&.active {
|
||||
.accordian-header {
|
||||
border-bottom: 0;
|
||||
|
||||
i.rango-arrow::before {
|
||||
content: "\E906";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.accordian {
|
||||
.accordian-header {
|
||||
width: 100%;
|
||||
font-size: 18px;
|
||||
cursor: pointer;
|
||||
color: #3a3a3a;
|
||||
margin-top: -1px;
|
||||
padding-bottom: 20px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.accordian-content {
|
||||
width: 100%;
|
||||
display: none;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
&.active {
|
||||
.accordian-header {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.accordian-content {
|
||||
display: inline-block;
|
||||
border-bottom: 1px solid #d3d3d3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -283,10 +283,15 @@
|
|||
.product-name,
|
||||
.product-rating {
|
||||
width: 15rem;
|
||||
margin-bottom: 2px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.product-price {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.sticker {
|
||||
|
|
@ -335,7 +340,7 @@
|
|||
|
||||
span {
|
||||
left: 32%;
|
||||
top: -26px;
|
||||
top: -28px;
|
||||
z-index: 1;
|
||||
font-size: 16px;
|
||||
color: #ffffff;
|
||||
|
|
@ -394,49 +399,63 @@
|
|||
.quantity {
|
||||
@extend .btn-group;
|
||||
|
||||
width: 100%;
|
||||
padding-bottom: 10px;
|
||||
font-size: 16px !important;
|
||||
|
||||
label {
|
||||
float: left;
|
||||
padding: 5px 15px 10px 0;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
@extend .btn;
|
||||
.input-btn-group {
|
||||
button {
|
||||
border: 1px solid #dcdcdc;
|
||||
padding: 7px;
|
||||
background: transparent;
|
||||
text-align: center;
|
||||
|
||||
height: 35px;
|
||||
border-radius: 2px;
|
||||
vertical-align: top;
|
||||
padding: 0 10px !important;
|
||||
font-size: 24px !important;
|
||||
font-weight: 600 !important;
|
||||
color: $black-color !important;
|
||||
background-color: $white-color;
|
||||
border: 1px solid $border-common !important;
|
||||
&.decrease {
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
&.increase {
|
||||
border-left: 0;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.rango-plus,
|
||||
.rango-minus {
|
||||
font-size: 20px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
border: 1px solid #dcdcdc;
|
||||
border-right: 0;
|
||||
border-left: 0;
|
||||
max-width: 50px;
|
||||
height: 38px;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
vertical-align: top;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
max-width: 50px;
|
||||
cursor: default;
|
||||
font-size: 16px !important;
|
||||
text-align: center;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
&.has-error {
|
||||
button {
|
||||
border-color: #fc6868;
|
||||
color: #fc6868;
|
||||
}
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: #f5f5f5 !important;
|
||||
}
|
||||
|
||||
button:active,
|
||||
button:focus,
|
||||
input:active,
|
||||
input:focus {
|
||||
outline: none !important;
|
||||
box-shadow: none !important;
|
||||
.control-error {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -448,7 +467,7 @@
|
|||
|
||||
.heading {
|
||||
width: 100%;
|
||||
margin-bottom: 35px;
|
||||
margin-bottom: 28px;
|
||||
display: inline-block;
|
||||
|
||||
h2 {
|
||||
|
|
@ -475,10 +494,6 @@
|
|||
form {
|
||||
> div {
|
||||
padding-bottom: 20px;
|
||||
|
||||
input {
|
||||
border: 1px solid $border-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -561,26 +576,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.mini-cart-container {
|
||||
#mini-cart {
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
text-decoration: unset;
|
||||
|
||||
.badge {
|
||||
@include border-radius(50%);
|
||||
|
||||
top: -2px;
|
||||
left: 15px;
|
||||
padding: 4px;
|
||||
min-width: 20px;
|
||||
position: absolute;
|
||||
color: $white-color;
|
||||
background: $button-primary-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-icon-custom::after {
|
||||
top: -5px;
|
||||
color: black;
|
||||
|
|
@ -597,11 +592,12 @@
|
|||
}
|
||||
|
||||
#cart-modal-content {
|
||||
top: 44px;
|
||||
top: 40px;
|
||||
z-index: 100;
|
||||
width: 350px;
|
||||
left: -265px;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
border-top: 4px solid #26a37c;
|
||||
|
||||
.close {
|
||||
top: 12px;
|
||||
|
|
@ -629,8 +625,14 @@
|
|||
border: 1px solid $border-light;
|
||||
}
|
||||
|
||||
label {
|
||||
float: left;
|
||||
margin-top: 7px;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 30px;
|
||||
width: 40px;
|
||||
height: 36px;
|
||||
text-align: center;
|
||||
font-weight: 500;
|
||||
border: 1px solid $border-light;
|
||||
|
|
@ -640,18 +642,20 @@
|
|||
float: right;
|
||||
}
|
||||
|
||||
.rango-close {
|
||||
.remove-item {
|
||||
top: -10px;
|
||||
left: -10px;
|
||||
padding: 0px 4px 3px 3px;
|
||||
font-size: 10px;
|
||||
max-height: 17px;
|
||||
line-height: 1.3rem;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
color: $white-color;
|
||||
background: $black-color;
|
||||
position: absolute;
|
||||
background: #111111;
|
||||
color: #ffffff;
|
||||
padding: 0px 4px;
|
||||
|
||||
.rango-close {
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -665,17 +669,17 @@
|
|||
}
|
||||
|
||||
.cart-details {
|
||||
padding: 40px 20px;
|
||||
padding: 40px 0px;
|
||||
|
||||
h1 {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.cart-details-header {
|
||||
h2 {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
h2 {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.cart-details-header {
|
||||
.cart-header {
|
||||
max-height: 45px;
|
||||
margin-bottom: 20px;
|
||||
|
|
@ -694,7 +698,9 @@
|
|||
|
||||
.product-quantity {
|
||||
.quantity {
|
||||
display: inline-flex;
|
||||
display: inline-block;
|
||||
width: unset;
|
||||
float: right;
|
||||
|
||||
label {
|
||||
display: none !important;
|
||||
|
|
@ -718,6 +724,7 @@
|
|||
> .row:last-child {
|
||||
padding-bottom: 20px;
|
||||
border-bottom: 2px solid $border-general;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.product-image-container {
|
||||
|
|
@ -746,6 +753,41 @@
|
|||
line-height: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.item-price {
|
||||
margin-top: 12px !important;
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.item-actions {
|
||||
margin-top: 12px !important;
|
||||
|
||||
.d-inline-block {
|
||||
float: left;
|
||||
|
||||
&:first-child {
|
||||
margin-right: 30px;
|
||||
}
|
||||
|
||||
.material-icons {
|
||||
float: left;
|
||||
margin-left: -2px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.rango-delete {
|
||||
margin-left: -2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.product-quantity {
|
||||
.quantity {
|
||||
position: relative;
|
||||
top: -8px;
|
||||
}
|
||||
}
|
||||
|
||||
.misc {
|
||||
|
|
@ -1007,11 +1049,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.accordian .accordian-header {
|
||||
padding: 10px 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.image-wrapper {
|
||||
width: 100%;
|
||||
margin-top: 10px;
|
||||
|
|
@ -1261,13 +1298,16 @@
|
|||
.checkout-process {
|
||||
padding: 40px 20px;
|
||||
|
||||
.col-lg-7 {
|
||||
.coupon-container,
|
||||
> div:not(:first-child) {
|
||||
margin-top: 20px;
|
||||
.accordian-header {
|
||||
h3 {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.coupon-container {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: 600;
|
||||
margin-bottom: 30px;
|
||||
|
|
@ -1374,7 +1414,9 @@
|
|||
}
|
||||
|
||||
label {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
input[type='text'],
|
||||
|
|
@ -1384,6 +1426,7 @@
|
|||
width: 100%;
|
||||
resize: none;
|
||||
font-size: 16px;
|
||||
height: 36px;
|
||||
padding: 5px 16px;
|
||||
border-radius: 1px;
|
||||
background: $button-text-color;
|
||||
|
|
@ -1532,17 +1575,23 @@
|
|||
}
|
||||
|
||||
.product-price {
|
||||
height: 72px;
|
||||
display: inline-block;
|
||||
|
||||
.price-label {
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.regular-price {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
margin-right: 10px;
|
||||
text-decoration: line-through;
|
||||
display: block;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.special-price {
|
||||
display: inline-block;
|
||||
margin-right: 10px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -1573,11 +1622,13 @@
|
|||
|
||||
span {
|
||||
&.price-label {
|
||||
font-size: 16px;
|
||||
font-size: 14px !important;
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
|
||||
&.final-price {
|
||||
font-size: 24px;
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1617,7 +1668,7 @@
|
|||
*/
|
||||
.sticky-header {
|
||||
top: 0px;
|
||||
height: 55px;
|
||||
height: 56px;
|
||||
z-index: 100;
|
||||
position: sticky;
|
||||
background: white;
|
||||
|
|
@ -1763,7 +1814,7 @@
|
|||
border-left: 1px solid $border-common;
|
||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19),
|
||||
0 6px 6px rgba(0, 0, 0, 0.23);
|
||||
overflow-y: auto;
|
||||
overflow-y: scroll;
|
||||
|
||||
li:nth-last-of-type(1) {
|
||||
margin-bottom: 10px;
|
||||
|
|
@ -1877,14 +1928,6 @@
|
|||
|
||||
.quantity {
|
||||
border-top: 0;
|
||||
padding-bottom: 0;
|
||||
|
||||
&.has-error {
|
||||
button {
|
||||
border-color: #fc6868;
|
||||
color: #fc6868;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.control-error {
|
||||
|
|
@ -2309,6 +2352,14 @@
|
|||
}
|
||||
}
|
||||
|
||||
.full-content-wrapper {
|
||||
.container-fluid {
|
||||
.row.carousel-products-header {
|
||||
padding-right: 75px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.carousel-products {
|
||||
+ .recently-viewed {
|
||||
top: -40px;
|
||||
|
|
@ -2324,6 +2375,24 @@
|
|||
.VueCarousel-slide {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.VueCarousel-navigation {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: -49px;
|
||||
|
||||
.VueCarousel-navigation-button {
|
||||
position: unset !important;
|
||||
transform: none !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
|
||||
|
||||
span {
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.vue-slider {
|
||||
|
|
@ -2473,6 +2542,11 @@
|
|||
}
|
||||
|
||||
@media only screen and (max-width: 720px) {
|
||||
.product-quantity {
|
||||
.input-btn-group {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
.cp-spinner {
|
||||
left: 50%;
|
||||
margin-left: -24px;
|
||||
|
|
|
|||
|
|
@ -247,8 +247,9 @@
|
|||
padding: 8px 12px;
|
||||
display: block;
|
||||
cursor: default;
|
||||
color: #a2a2a2;
|
||||
color: rgba(0, 0, 0, 0.53);
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
border-bottom: 1px solid #C1C2C3;
|
||||
}
|
||||
|
||||
|
|
@ -270,12 +271,9 @@
|
|||
list-style-type: none;
|
||||
|
||||
li {
|
||||
&:last-child {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
a {
|
||||
padding: 8px 12px;
|
||||
font-size: 16px;
|
||||
|
||||
&:link,
|
||||
&:active,
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@
|
|||
left: -2px;
|
||||
height: 38px;
|
||||
font-size: 18px;
|
||||
max-width: 110px;
|
||||
line-height: 10px;
|
||||
position: relative;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -470,9 +470,12 @@ header #search-form > *:focus {
|
|||
}
|
||||
|
||||
.main-category {
|
||||
padding: 8px 15px;
|
||||
padding: 10px 15px;
|
||||
border-top: 1px solid $border-common;
|
||||
border-bottom: 5px solid transparent;
|
||||
|
||||
.pl5 {
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
|
||||
.content-list {
|
||||
|
|
@ -499,7 +502,7 @@ header #search-form > *:focus {
|
|||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
padding: 8px 15px;
|
||||
padding: 11px 15px;
|
||||
letter-spacing: 0;
|
||||
position: relative;
|
||||
color: $white-color;
|
||||
|
|
@ -712,6 +715,7 @@ body::after {
|
|||
|
||||
.slider-container {
|
||||
min-height: 400px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.remove-padding-margin {
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
.mini-cart-container {
|
||||
.mini-cart-btn {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
|
@ -461,7 +461,7 @@
|
|||
.product-detail {
|
||||
#product-form {
|
||||
.form-container {
|
||||
.left {
|
||||
div.left {
|
||||
top: 0px;
|
||||
position: relative;
|
||||
margin-bottom: 20px;
|
||||
|
|
@ -851,12 +851,6 @@
|
|||
padding: 0;
|
||||
}
|
||||
|
||||
.accordian-header {
|
||||
h3 {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.billing-address {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,10 +8,6 @@
|
|||
@extend .fs16;
|
||||
|
||||
> div {
|
||||
@extend .mb20;
|
||||
|
||||
border-bottom: 1px solid $border-common;
|
||||
|
||||
&.attributes {
|
||||
.attribute {
|
||||
margin-bottom: 20px;
|
||||
|
|
@ -35,14 +31,20 @@
|
|||
.reviews {
|
||||
vertical-align: top;
|
||||
|
||||
.stars {
|
||||
vertical-align: middle;
|
||||
margin-bottom: -6px;
|
||||
}
|
||||
|
||||
> div {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
.info {
|
||||
@extend .mb15;
|
||||
margin-left: 0px;
|
||||
border-bottom: 1px solid #d3d3d3;
|
||||
|
||||
> h2,
|
||||
div {
|
||||
|
|
@ -50,11 +52,11 @@
|
|||
}
|
||||
|
||||
> * {
|
||||
margin-bottom: 10px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@extend .fw7;
|
||||
@extend .fw6;
|
||||
@extend .fs24;
|
||||
}
|
||||
|
||||
|
|
@ -68,12 +70,14 @@
|
|||
}
|
||||
|
||||
.availability {
|
||||
button {
|
||||
label {
|
||||
width: max-content;
|
||||
border: none;
|
||||
color: white;
|
||||
font-weight: 600;
|
||||
cursor: default;
|
||||
padding: 2px 11px;
|
||||
margin: 0;
|
||||
padding: 1px 8px 3px 8px;
|
||||
background: $button-danger;
|
||||
|
||||
&.active {
|
||||
|
|
@ -154,7 +158,7 @@
|
|||
}
|
||||
|
||||
.product-price {
|
||||
height: unset;
|
||||
line-height: 38px;
|
||||
|
||||
.price-from {
|
||||
.bundle-regular-price {
|
||||
|
|
@ -278,17 +282,18 @@
|
|||
}
|
||||
}
|
||||
|
||||
.layouter,
|
||||
#product-form {
|
||||
.layouter {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#product-form {
|
||||
height: 100%;
|
||||
|
||||
.form-container {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
|
||||
.left {
|
||||
div.left {
|
||||
top: 60px;
|
||||
padding: 0px;
|
||||
position: sticky;
|
||||
|
|
@ -354,14 +359,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.accordian {
|
||||
&.active {
|
||||
.accordian-header {
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
overflow: auto;
|
||||
ul,
|
||||
|
|
@ -372,13 +369,11 @@
|
|||
}
|
||||
|
||||
.accordian-content {
|
||||
div {
|
||||
overflow: auto;
|
||||
}
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.full-description {
|
||||
font-size: 14px;
|
||||
ul,
|
||||
ol {
|
||||
margin: revert;
|
||||
|
|
@ -387,6 +382,8 @@
|
|||
}
|
||||
|
||||
.full-specifications {
|
||||
width: 100%;
|
||||
|
||||
tr {
|
||||
td:first-child() {
|
||||
width: 100px;
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ body {
|
|||
}
|
||||
}
|
||||
|
||||
.mini-cart-container {
|
||||
.mini-cart-btn {
|
||||
#mini-cart {
|
||||
.badge {
|
||||
top: -8px;
|
||||
|
|
@ -103,7 +103,7 @@ body {
|
|||
}
|
||||
}
|
||||
|
||||
.main-content-wrapper .vc-header .mini-cart-container {
|
||||
.main-content-wrapper .vc-header .mini-cart-btn {
|
||||
#mini-cart {
|
||||
.badge {
|
||||
top: -6px;
|
||||
|
|
@ -177,15 +177,6 @@ body {
|
|||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
+ .account-modal {
|
||||
width: 100% !important;
|
||||
right: unset;
|
||||
|
||||
.modal-content {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.locale-icon {
|
||||
|
|
|
|||
|
|
@ -312,6 +312,7 @@
|
|||
.btn-add-to-cart:hover {
|
||||
border-color: $theme-dark-color !important;
|
||||
background-color: $theme-dark-color !important;
|
||||
text-decoration: none;
|
||||
|
||||
&.light {
|
||||
border: 1px solid rgba(0,0,0,0.12) !important;
|
||||
|
|
@ -611,7 +612,8 @@
|
|||
.product-image {
|
||||
@extend .bg-image;
|
||||
|
||||
height: 100%;
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
|
|
@ -621,7 +623,10 @@
|
|||
padding: 10px 0 !important;
|
||||
|
||||
.product-name {
|
||||
font-size: 18px;
|
||||
color: #000000;
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
|
|
@ -792,6 +797,10 @@ a {
|
|||
.VueCarousel-navigation-next {
|
||||
right: 12px;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 32px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -925,7 +934,7 @@ button[disabled] {
|
|||
width: 100%;
|
||||
height: 100%;
|
||||
position: fixed;
|
||||
background: rgba(256, 256, 256, 0.9);
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
z-index: 125;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,3 @@
|
|||
/*
|
||||
|
|
||||
| Added back again because in chrome this is not using and light house also saying not used.
|
||||
| But in mozilla all fonts are gone which creating problem.
|
||||
|
|
||||
*/
|
||||
@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap');
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Velocity Variables
|
||||
|
|
|
|||
|
|
@ -113,14 +113,14 @@ return [
|
|||
'general' => 'Genel',
|
||||
'add-image-btn-title' => 'Görsel Ekle',
|
||||
'footer-middle' => [
|
||||
'about-us' => 'About Us',
|
||||
'customer-service' => 'Customer Service',
|
||||
'whats-new' => 'What\'s New',
|
||||
'contact-us' => 'Contact Us',
|
||||
'order-and-returns' => 'Order and Returns',
|
||||
'payment-policy' => 'Payment Policy',
|
||||
'shipping-policy' => 'Shipping Policy',
|
||||
'privacy-and-cookies-policy' => 'Privacy and Cookies Policy'
|
||||
'about-us' => 'Hakkımızda',
|
||||
'customer-service' => 'Müşteri Servisi',
|
||||
'whats-new' => 'Yeni Neler Var',
|
||||
'contact-us' => 'Bize Ulaşın',
|
||||
'order-and-returns' => 'Sipariş ve İade',
|
||||
'payment-policy' => 'Ödeme Politikası',
|
||||
'shipping-policy' => 'Nakliye Politikası',
|
||||
'privacy-and-cookies-policy' => 'Gizlilik ve Çerez Politikası'
|
||||
]
|
||||
],
|
||||
'category' => [
|
||||
|
|
@ -262,7 +262,7 @@ return [
|
|||
'short-description' => 'Kısa Açıklamalar',
|
||||
'recently-viewed' => 'En Son Gezdiğiniz Ürünler',
|
||||
'be-first-review' => 'Bu ürüne ilk siz inceleme girin!',
|
||||
'tax-inclusive' => 'Inclusive of all taxes',
|
||||
'tax-inclusive' => 'Tüm vergiler dahildir',
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
|
|
|
|||
|
|
@ -12,19 +12,8 @@
|
|||
|
||||
@push('css')
|
||||
<style type="text/css">
|
||||
.quantity {
|
||||
width: unset;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.alert-wishlist {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 600px) {
|
||||
.rango-delete{
|
||||
.rango-delete {
|
||||
margin-top: 10px;
|
||||
margin-left: -10px !important;
|
||||
}
|
||||
|
|
@ -38,10 +27,10 @@
|
|||
<script type="text/x-template" id="cart-template">
|
||||
<div class="container">
|
||||
<section class="cart-details row no-margin col-12">
|
||||
<h2 class="cart-details-header fw6 col-12">{{ __('shop::app.checkout.cart.title') }}</h2>
|
||||
<h2 class="fw6 col-12">{{ __('shop::app.checkout.cart.title') }}</h2>
|
||||
|
||||
@if ($cart)
|
||||
<div class="cart-details-header col-lg-6 col-md-12">
|
||||
<div class="cart-details-header col-lg-7 col-md-12">
|
||||
<div class="row cart-header col-12 no-padding">
|
||||
<span class="col-8 fw6 fs16 pr0">
|
||||
{{ __('velocity::app.checkout.items') }}
|
||||
|
|
@ -108,7 +97,7 @@
|
|||
|
||||
@if (isset($item->additional['attributes']))
|
||||
@foreach ($item->additional['attributes'] as $attribute)
|
||||
<div class="row col-12 no-padding no-margin display-block">
|
||||
<div class="row col-12 no-padding no-margin display-block item-attribute">
|
||||
<label class="no-margin">
|
||||
{{ $attribute['attribute_name'] }}:
|
||||
</label>
|
||||
|
|
@ -119,7 +108,7 @@
|
|||
@endforeach
|
||||
@endif
|
||||
|
||||
<div class="row col-12 no-padding no-margin">
|
||||
<div class="row col-12 no-padding no-margin item-price">
|
||||
<div class="product-price">
|
||||
<span>{{ core()->currency($item->base_price) }}</span>
|
||||
</div>
|
||||
|
|
@ -131,18 +120,18 @@
|
|||
$showWishlist = core()->getConfigData('general.content.shop.wishlist_option') == "1" ? true : false;
|
||||
@endphp
|
||||
|
||||
<div class="no-padding col-12 cursor-pointer fs16">
|
||||
<div class="no-padding col-12 cursor-pointer fs16 item-actions">
|
||||
@auth('customer')
|
||||
@if ($showWishlist)
|
||||
@if ($item->parent_id != 'null' || $item->parent_id != null)
|
||||
<div class="alert-wishlist">
|
||||
<div class="d-inline-block">
|
||||
@include('shop::products.wishlist', [
|
||||
'route' => route('shop.movetowishlist', $item->id),
|
||||
'text' => "<span class='align-vertical-super'>$moveToWishlist</span>"
|
||||
])
|
||||
</div>
|
||||
@else
|
||||
<div class="alert-wishlist">
|
||||
<div class="d-inline-block">
|
||||
@include('shop::products.wishlist', [
|
||||
'route' => route('shop.movetowishlist', $item->child->id),
|
||||
'text' => "<span class='align-vertical-super'>$moveToWishlist</span>"
|
||||
|
|
@ -154,11 +143,7 @@
|
|||
|
||||
<div class="d-inline-block">
|
||||
<a
|
||||
class="unset
|
||||
@auth('customer')
|
||||
ml10
|
||||
@endauth
|
||||
"
|
||||
class="unset"
|
||||
href="{{ route('shop.checkout.cart.remove', ['id' => $item->id]) }}"
|
||||
@click="removeLink('{{ __('shop::app.checkout.cart.cart-remove-action') }}')">
|
||||
|
||||
|
|
@ -225,7 +210,7 @@
|
|||
{!! view_render_event('bagisto.shop.checkout.cart.summary.after', ['cart' => $cart]) !!}
|
||||
|
||||
@if ($cart)
|
||||
<div class="col-lg-4 col-md-12 offset-lg-2 row order-summary-container">
|
||||
<div class="col-lg-4 col-md-12 offset-lg-1 row order-summary-container">
|
||||
@include('shop::checkout.total.summary', ['cart' => $cart])
|
||||
|
||||
<coupon-component></coupon-component>
|
||||
|
|
@ -263,8 +248,9 @@
|
|||
|
||||
methods: {
|
||||
removeLink(message) {
|
||||
if (! confirm(message))
|
||||
if (! confirm(message)) {
|
||||
event.preventDefault();
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<div class="mini-cart-container">
|
||||
<a class="mini-cart-btn">
|
||||
<mini-cart
|
||||
is-tax-inclusive="{{ Webkul\Tax\Helpers\Tax::isTaxInclusive() }}"
|
||||
view-cart-route="{{ route('shop.checkout.cart.index') }}"
|
||||
|
|
@ -9,4 +9,4 @@
|
|||
checkout-text="{{ __('shop::app.minicart.checkout') }}"
|
||||
subtotal-text="{{ __('shop::app.checkout.cart.cart-subtotal') }}">
|
||||
</mini-cart>
|
||||
</div>
|
||||
</a>
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
{{-- this is default content if js is not loaded --}}
|
||||
<div class="main-category fs16 unselectable fw6 left">
|
||||
<i class="rango-view-list text-down-4 align-vertical-top fs18"></i>
|
||||
<i class="rango-view-list align-vertical-top fs18"></i>
|
||||
|
||||
<span class="pl5">{{ __('velocity::app.menu-navbar.text-category') }}</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
disabled="disabled"
|
||||
@endif>
|
||||
|
||||
@foreach (core()->getCurrentChannel()->locales as $locale)
|
||||
@foreach (core()->getCurrentChannel()->locales()->orderBy('name')->get() as $locale)
|
||||
@if (isset($searchQuery) && $searchQuery)
|
||||
<option
|
||||
value="?{{ $searchQuery }}&locale={{ $locale->code }}"
|
||||
|
|
|
|||
|
|
@ -24,8 +24,8 @@
|
|||
<label class="fs18 grey">{{ __('shop::app.header.title') }}</label>
|
||||
</div>
|
||||
|
||||
<div class="pl10 fs14">
|
||||
<p>{{ __('shop::app.header.dropdown-text') }}</p>
|
||||
<div class="fs14 content">
|
||||
<p class="no-margin">{{ __('shop::app.header.dropdown-text') }}</p>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@
|
|||
{{-- right-section --}}
|
||||
<div class="right col-lg-7 col-md-6">
|
||||
{{-- product-info-section --}}
|
||||
<div class="row info">
|
||||
<div class="info">
|
||||
<h2 class="col-12">{{ $product->name }}</h2>
|
||||
|
||||
@if ($total)
|
||||
|
|
@ -141,7 +141,27 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
<div class="product-actions">
|
||||
@include ('shop::products.view.configurable-options')
|
||||
|
||||
@include ('shop::products.view.downloadable')
|
||||
|
||||
@include ('shop::products.view.grouped-products')
|
||||
|
||||
@include ('shop::products.view.bundle-options')
|
||||
|
||||
{!! view_render_event('bagisto.shop.products.view.quantity.before', ['product' => $product]) !!}
|
||||
|
||||
@if ($product->getTypeInstance()->showQuantityBox())
|
||||
<div class="col-12">
|
||||
<quantity-changer quantity-text="{{ __('shop::app.products.quantity') }}"></quantity-changer>
|
||||
</div>
|
||||
@else
|
||||
<input type="hidden" name="quantity" value="1">
|
||||
@endif
|
||||
|
||||
{!! view_render_event('bagisto.shop.products.view.quantity.after', ['product' => $product]) !!}
|
||||
|
||||
<div class="col-12 product-actions">
|
||||
@if (core()->getConfigData('catalog.products.storefront.buy_now_button_display'))
|
||||
@include ('shop::products.buy-now', [
|
||||
'product' => $product,
|
||||
|
|
@ -158,38 +178,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.shop.products.view.short_description.before', ['product' => $product]) !!}
|
||||
|
||||
@if ($product->short_description)
|
||||
<div class="description">
|
||||
<h3 class="col-lg-12">{{ __('velocity::app.products.short-description') }}</h3>
|
||||
|
||||
{!! $product->short_description !!}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{!! view_render_event('bagisto.shop.products.view.short_description.after', ['product' => $product]) !!}
|
||||
|
||||
|
||||
{!! view_render_event('bagisto.shop.products.view.quantity.before', ['product' => $product]) !!}
|
||||
|
||||
@if ($product->getTypeInstance()->showQuantityBox())
|
||||
<div>
|
||||
<quantity-changer quantity-text="{{ __('shop::app.products.quantity') }}"></quantity-changer>
|
||||
</div>
|
||||
@else
|
||||
<input type="hidden" name="quantity" value="1">
|
||||
@endif
|
||||
|
||||
{!! view_render_event('bagisto.shop.products.view.quantity.after', ['product' => $product]) !!}
|
||||
|
||||
@include ('shop::products.view.configurable-options')
|
||||
|
||||
@include ('shop::products.view.downloadable')
|
||||
|
||||
@include ('shop::products.view.grouped-products')
|
||||
|
||||
@include ('shop::products.view.bundle-options')
|
||||
@include ('shop::products.view.short-description')
|
||||
|
||||
@include ('shop::products.view.attributes', [
|
||||
'active' => true
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
@push('scripts')
|
||||
<script type="text/x-template" id="bundle-option-list-template">
|
||||
<div class="bundle-options-wrapper">
|
||||
<div class="col-12 bundle-options-wrapper">
|
||||
<div class="bundle-option-list">
|
||||
<h3>{{ __('shop::app.products.customize-options') }}</h3>
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
@push('scripts')
|
||||
<script type="text/x-template" id="product-options-template">
|
||||
<div class="attributes" v-if="childAttributes.length > 0">
|
||||
<div class="col-12 attributes" v-if="childAttributes.length > 0">
|
||||
<input
|
||||
type="hidden"
|
||||
:value="selectedProductId"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
@if ($product->type == 'downloadable')
|
||||
{!! view_render_event('bagisto.shop.products.view.downloadable.before', ['product' => $product]) !!}
|
||||
|
||||
<div class="downloadable-container">
|
||||
<div class="col-12 downloadable-container">
|
||||
|
||||
@if ($product->downloadable_samples->count())
|
||||
<div class="sample-list">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
@if ($product->type == 'grouped')
|
||||
{!! view_render_event('bagisto.shop.products.view.grouped_products.before', ['product' => $product]) !!}
|
||||
|
||||
<div class="grouped-product-container">
|
||||
<div class="col-12 grouped-product-container">
|
||||
@if ($product->groupedProductsBySortOrder->count())
|
||||
<div class="grouped-product-list">
|
||||
<ul type="none">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
{!! view_render_event('bagisto.shop.products.view.short_description.before', ['product' => $product]) !!}
|
||||
|
||||
<accordian :title="'{{ __('shop::app.products.short-description') }}'" :active="true">
|
||||
<div slot="header">
|
||||
<h3 class="no-margin display-inbl">
|
||||
{{ __('velocity::app.products.short-description') }}
|
||||
</h3>
|
||||
|
||||
<i class="rango-arrow"></i>
|
||||
</div>
|
||||
|
||||
<div slot="body">
|
||||
<div class="full-short-description">
|
||||
{!! $product->short_description !!}
|
||||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
|
||||
{!! view_render_event('bagisto.shop.products.view.short_description.after', ['product' => $product]) !!}
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
{!! view_render_event('bagisto.shop.products.view.stock.before', ['product' => $product]) !!}
|
||||
|
||||
<div class="col-12 availability">
|
||||
<button
|
||||
type="button"
|
||||
<label
|
||||
class="{{! $product->haveSufficientQuantity(1) ? '' : 'active' }} disable-box-shadow">
|
||||
@if ( $product->haveSufficientQuantity(1) === true )
|
||||
{{ __('shop::app.products.in-stock') }}
|
||||
|
|
@ -11,7 +10,7 @@
|
|||
@else
|
||||
{{ __('shop::app.products.out-of-stock') }}
|
||||
@endif
|
||||
</button>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.shop.products.view.stock.after', ['product' => $product]) !!}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'Bu kimlik bilgileri kayıtlarımızla eşleşmiyor.',
|
||||
'throttle' => 'Çok fazla giriş denemesi. Lütfen :seconds içinde tekrar deneyin.',
|
||||
|
||||
];
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Önceki',
|
||||
'next' => 'Sonraki »',
|
||||
|
||||
];
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => 'Şifreler en az altı karakterden oluşmalı ve onayla eşleşmelidir.',
|
||||
'reset' => 'Şifreniz sıfırlandı!',
|
||||
'sent' => 'Şifre sıfırlama bağlantınızı e-posta ile gönderdik!',
|
||||
'token' => 'Bu parola sıfırlama belirteci geçersiz.',
|
||||
'user' => "Bu e-posta adresine sahip bir kullanıcı bulamıyoruz.",
|
||||
|
||||
];
|
||||
|
|
@ -0,0 +1,156 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => ':attribute kabul edilmelidir.',
|
||||
'active_url' => ':attribute geçerli bir URL değil.',
|
||||
'after' => ':attribute, :date \'den sonraki bir tarih olmalıdır.',
|
||||
'after_or_equal' => ':attribute, :date \'den sonraki veya buna eşit bir tarih olmalıdır.',
|
||||
'alpha' => ':attribute yalnızca harf içermelidir.',
|
||||
'alpha_dash' => ':attribute yalnızca harf, sayı, tire ve alt çizgi içermelidir.',
|
||||
'alpha_num' => ':attribute yalnızca harf ve rakamlardan oluşmalıdır.',
|
||||
'array' => ':attribute bir dizi olmalıdır.',
|
||||
'before' => ':attribute, :date \'den önceki bir tarih olmalıdır.',
|
||||
'before_or_equal' => ':attribute, :date tarihinden önce veya buna eşit bir tarih olmalıdır.',
|
||||
'between' => [
|
||||
'numeric' => ':attribute :min ve :max arasında olmalıdır.',
|
||||
'file' => ':attribute :min ve :max kilobaytlar arasında olmalıdır.',
|
||||
'string' => ':attribute :min ve :max karakterleri arasında olmalıdır.',
|
||||
'array' => ':attribute, :min ve :max öğeleri arasında olmalıdır.',
|
||||
],
|
||||
'boolean' => ':attribute alanı doğru veya yanlış olmalıdır.',
|
||||
'confirmed' => ':attribute onayı eşleşmiyor.',
|
||||
'current_password' => 'Şifre yanlış.',
|
||||
'date' => ':attribute geçerli bir tarih değil.',
|
||||
'date_equals' => ':attribute, :date değerine eşit bir tarih olmalıdır.',
|
||||
'date_format' => ':attribute, :format biçimiyle eşleşmiyor.',
|
||||
'different' => ':attribute ve :other farklı olmalıdır.',
|
||||
'digits' => ':attribute :digits rakamlardan oluşmalıdır.',
|
||||
'digits_between' => ':attribute :min ve :max basamakları arasında olmalıdır.',
|
||||
'dimensions' => ':attribute geçersiz resim boyutlarına sahip.',
|
||||
'distinct' => ':attribute alanı yinelenen bir değere sahip.',
|
||||
'email' => ':attribute geçerli bir e-posta adresi olmalıdır.',
|
||||
'ends_with' => ':attribute aşağıdakilerden biriyle bitmelidir: :values.',
|
||||
'exists' => 'Seçilen :attribute geçersiz.',
|
||||
'file' => ':attribute bir dosya olmalıdır.',
|
||||
'filled' => ':attribute alanının bir değeri olmalıdır.',
|
||||
'gt' => [
|
||||
'numeric' => ':attribute, :value değerinden büyük olmalıdır.',
|
||||
'file' => ':attribute, :value kilobayttan büyük olmalıdır.',
|
||||
'string' => ':attribute, :value karakterlerinden büyük olmalıdır.',
|
||||
'array' => ':attribute, :value öğelerinden daha fazlasına sahip olmalıdır.',
|
||||
],
|
||||
'gte' => [
|
||||
'numeric' => ':attribute, :value değerinden büyük veya ona eşit olmalıdır.',
|
||||
'file' => ':attribute, :value kilobayttan büyük veya ona eşit olmalıdır.',
|
||||
'string' => ':attribute, :value karakterlerinden büyük veya ona eşit olmalıdır.',
|
||||
'array' => ':attribute, :value öğelerine veya daha fazlasına sahip olmalıdır.',
|
||||
],
|
||||
'image' => ':attribute bir resim olmalıdır.',
|
||||
'in' => 'Seçilen :attribute geçersiz.',
|
||||
'in_array' => ':attribute alanı :other içinde mevcut değil.',
|
||||
'integer' => ':attribute bir tamsayı olmalıdır.',
|
||||
'ip' => ':attribute geçerli bir IP adresi olmalıdır.',
|
||||
'ipv4' => ':attribute geçerli bir IPv4 adresi olmalıdır.',
|
||||
'ipv6' => ':attribute geçerli bir IPv6 adresi olmalıdır.',
|
||||
'json' => ':attribute geçerli bir JSON dizesi olmalıdır.',
|
||||
'lt' => [
|
||||
'numeric' => ':attribute, :value değerinden küçük olmalıdır.',
|
||||
'file' => ':attribute, :value kilobayttan küçük olmalıdır.',
|
||||
'string' => ':attribute, :value karakterlerinden daha az olmalıdır.',
|
||||
'array' => ':attribute, :value öğelerinden daha azına sahip olmalıdır.',
|
||||
],
|
||||
'lte' => [
|
||||
'numeric' => ':attribute, :value değerinden küçük veya ona eşit olmalıdır.',
|
||||
'file' => ':attribute :value kilobayttan küçük veya ona eşit olmalıdır.',
|
||||
'string' => ':attribute, :value karakterlerinden küçük veya ona eşit olmalıdır.',
|
||||
'array' => ':attribute, :value öğelerinden daha fazlasına sahip olmamalıdır.',
|
||||
],
|
||||
'max' => [
|
||||
'numeric' => ':attribute :max değerinden büyük olmamalıdır.',
|
||||
'file' => ':attribute, :max kilobayttan büyük olmamalıdır.',
|
||||
'string' => ':attribute, :max karakterlerinden büyük olmamalıdır.',
|
||||
'array' => ':attribute öğesi, :max öğelerinden daha fazlasına sahip olmamalıdır.',
|
||||
],
|
||||
'mimes' => ':attribute, :values türünde bir dosya olmalıdır.',
|
||||
'mimetypes' => ':attribute, :values türünde bir dosya olmalıdır.',
|
||||
'min' => [
|
||||
'numeric' => ':attribute en az :min olmalıdır.',
|
||||
'file' => ':attribute en az :min kilobayt olmalıdır.',
|
||||
'string' => ':attribute en az :min karakter olmalıdır.',
|
||||
'array' => ':attribute en az :min öğelerine sahip olmalıdır.',
|
||||
],
|
||||
'multiple_of' => ':attribute, :value \'nun katı olmalıdır.',
|
||||
'not_in' => 'Seçilen :attribute geçersiz.',
|
||||
'not_regex' => ':attribute biçimi geçersiz.',
|
||||
'numeric' => ':attribute bir sayı olmalıdır.',
|
||||
'password' => 'Şifre yanlış.',
|
||||
'present' => ':attribute alanı mevcut olmalıdır.',
|
||||
'regex' => ':attribute biçimi geçersiz.',
|
||||
'required' => ':attribute alanı gereklidir.',
|
||||
'required_if' => ':attribute alanı, :other :value olduğunda gereklidir.',
|
||||
'required_unless' => ':attribute alanı, :other :values içinde olmadığı sürece gereklidir.',
|
||||
'required_with' => ':attribute alanı, :values mevcut olduğunda gereklidir.',
|
||||
'required_with_all' => ':attribute alanı, :değerler mevcut olduğunda gereklidir.',
|
||||
'required_without' => ':attribute alanı, :values olmadığında gereklidir.',
|
||||
'required_without_all' => ':attribute alanı, :values değerlerinin hiçbiri mevcut olmadığında gereklidir.',
|
||||
'prohibited' => ':attribute alanı yasaktır.',
|
||||
'prohibited_if' => ':attribute alanı :other :value olduğunda yasaktır.',
|
||||
'prohibited_unless' => ':attribute alanı, :other :values içinde olmadığı sürece yasaktır.',
|
||||
'same' => ':attribute ve :other eşleşmelidir.',
|
||||
'size' => [
|
||||
'numeric' => ':attribute :size olmalıdır.',
|
||||
'file' => ':attribute :size kilobayt olmalıdır.',
|
||||
'string' => ':attribute :size karakter olmalıdır.',
|
||||
'array' => ':attribute :size öğeleri içermelidir.',
|
||||
],
|
||||
'starts_with' => ':attribute aşağıdakilerden biriyle başlamalıdır: :values.',
|
||||
'string' => ':attribute bir dize olmalıdır.',
|
||||
'timezone' => ':attribute geçerli bir saat dilimi olmalıdır.',
|
||||
'unique' => ':attribute zaten alınmış.',
|
||||
'uploaded' => ':attribute yüklenemedi.',
|
||||
'url' => ':attribute geçerli bir URL olmalıdır.',
|
||||
'uuid' => ':attribute geçerli bir UUID olmalıdır.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||