Merge branch 'elektronika' of https://gitlab.com/merdan.m/elektronika into elektronika
This commit is contained in:
commit
b2009e8958
|
|
@ -1,15 +1,16 @@
|
|||
APP_NAME=Bagisto
|
||||
APP_ENV=local
|
||||
APP_VERSION=1.4.2
|
||||
APP_VERSION=1.4.3
|
||||
APP_KEY=
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost
|
||||
APP_ADMIN_URL=admin
|
||||
APP_TIMEZONE=Asia/Kolkata
|
||||
APP_LOCALE=en
|
||||
LOG_CHANNEL=stack
|
||||
APP_CURRENCY=USD
|
||||
|
||||
LOG_CHANNEL=stack
|
||||
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=3306
|
||||
|
|
|
|||
|
|
@ -2,6 +2,99 @@
|
|||
|
||||
This changelog consists of the bug & security fixes and new features being included in the releases listed below.
|
||||
|
||||
## **v1.4.3 (20th of April 2022)** - *Release*
|
||||
|
||||
* #6213 [feature] - Command For Bagisto Publish
|
||||
|
||||
* #6197 [feature] - Link to frontend from admin product list or product detail page
|
||||
|
||||
* #6190 [feature] - Give option to enable WYSIWYG editor in configuration
|
||||
|
||||
* #5376 [feature] - There should be an option to remove all cart items at once
|
||||
|
||||
* #6294 [enhancement] - The mouse property should be a pointer when the admin is trying to mark all notifications as read.
|
||||
|
||||
* #6289 [enhancement] - Improvement on products listing
|
||||
|
||||
* #6285 [enhancement] - The dashboard cards are not clickable
|
||||
|
||||
* #6283 [enhancement] - When the user is trying to view the mini cart then Product Quantity Looks like as a minus value
|
||||
|
||||
* #6269 [enhancement] - The mouse property should be a pointer when the customer is trying to change the app currency & locale
|
||||
|
||||
* #6259 [enhancement] - The color of View All Notifications should be blue on the mouseover in admin panel
|
||||
|
||||
* #6243 [enhancement] - The mouse property should be a pointer when the admin is trying to drag the product image while editing any product
|
||||
|
||||
* #6241 [enhancement] - There should be checkboxes inside the status dropdown if the user is trying to filter orders with multiple statuses
|
||||
|
||||
* #6229 [enhancement] - The mouse property should be a pointer when the user is trying to sort the table by tables header.
|
||||
|
||||
* #6217 [enhancement] - There should be an asterisk icon for the required fields if the user is trying to book the product.
|
||||
|
||||
* #6213 [enhancement] - Command For Bagisto Publish
|
||||
|
||||
* #6208 [enhancement] - The product status should be Highlighted in product list page
|
||||
|
||||
* #5967 [enhancement] - There should be an option to copy the product's share link.
|
||||
|
||||
* #5960 [enhancement] - There should be an option for a sitemap generator. .
|
||||
|
||||
* #5559 [enhancement] - There should be the currency icon inside the currency dropdown
|
||||
|
||||
* #5530 [enhancement] - there should be an cross icon in blisss theme so that customer can delete product from cart
|
||||
|
||||
* #5397 [enhancement] - The filter dropdown should be according to the selected value.
|
||||
|
||||
* #5354 [enhancement] - The Input validation's dropdown should be according to attribute type.
|
||||
|
||||
* #2718 [enhancement] - Show error message "No booking available" if booking is not available for selected date. Booking
|
||||
|
||||
* #2308 [enhancement] - Existing groups in the attribute families are not translatable yet.
|
||||
|
||||
* #6290 [fixed] - Cancel already shipped order results in incorrect pending inventory amount
|
||||
|
||||
* #6279 [fixed] - The currency icon is overriding on the currency dropdown when the app locale is Arabic.
|
||||
|
||||
* #6270 [fixed] - The enter key is not working if the admin is trying to apply the filter by pressing the enter key
|
||||
|
||||
* #6267 [fixed] - There should not be an exception if the admin is trying to view order after deleting the customer of same order Admin
|
||||
|
||||
* #6266 [fixed] - The admin is not able to view the bookings in the calendar view.
|
||||
|
||||
* #6261 [fixed] - The filter options should be under the filter button. when the customer is trying to filter order in Arabic locale
|
||||
|
||||
* #6260 [fixed] - The upload image option should be slightly on the right side. when the customer is adding a review for any product.
|
||||
|
||||
* #6256 [fixed] - There should not be any extra space between add to cart and the by now button.
|
||||
|
||||
* #6253 [fixed] - The page should be redirected to the particular order's page if the customer is clicking on the order id after placing the order.
|
||||
|
||||
* #6250 [fixed] - The admin is not able to view the customer's review if the customer is creating a review with the moustache syntax Like: {{ url(' ') }}
|
||||
|
||||
* #6246 [fixed] - The products are not listing when url key is null
|
||||
|
||||
* #6244 [fixed] - There is an exception when the customer is changing the app currency on the product view page.
|
||||
|
||||
* #6228 [fixed] - There should not be a blank value in the items per page dropdown. on customer orders page
|
||||
|
||||
* #6206 [fixed] - The border of calendar icon is not showing in dark mode, when the admin is trying to view booking in calendar view.
|
||||
|
||||
* #6205 [fixed] - The flash message should be according to the selected locale if the admin trying to create a Shipment.
|
||||
|
||||
* #6204 [fixed] - The carousel arrow icons [ previous and next ] should work properly in the Arabic locale.
|
||||
|
||||
* #6202 [fixed] - There should be some space between the input box and labels if the user is trying to book an appointment for any booking product.
|
||||
|
||||
* #6196 [fixed] - The admin should be able to delete the users.
|
||||
|
||||
* #6195 [fixed] - Mini Cart sub total is not updating after removing the cart's item.
|
||||
|
||||
* #6192 [fixed] - The shopping cart goes empty after removing an item from the mini cart.
|
||||
|
||||
* #5772 [fixed] - issue in french lanugage in navigation bar
|
||||
|
||||
* #5067 [fixed] - Products is_wishlisted attribute is always false on API
|
||||
|
||||
|
||||
## **v1.4.2 (31st of March 2022)** - *Release*
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ Take advantage of two of the hottest frameworks used in this project -- Laravel
|
|||
* **For MySQL users**: 5.7.23 or higher.
|
||||
* **For MariaDB users**: 10.2.7 or Higher.
|
||||
* **Node**: 8.11.3 LTS or higher.
|
||||
* **Composer**: 1.6.5 or higher.
|
||||
* **Composer**: 2.3.5 or higher.
|
||||
|
||||
### Installation and Configuration
|
||||
|
||||
|
|
|
|||
|
|
@ -153,12 +153,12 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/bagisto/rest-api.git",
|
||||
"reference": "03d7284867327c9db2412260e9113982fa7c07f1"
|
||||
"reference": "8f679061530ca31d85bff7fff0a19a3e4368216e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/bagisto/rest-api/zipball/03d7284867327c9db2412260e9113982fa7c07f1",
|
||||
"reference": "03d7284867327c9db2412260e9113982fa7c07f1",
|
||||
"url": "https://api.github.com/repos/bagisto/rest-api/zipball/8f679061530ca31d85bff7fff0a19a3e4368216e",
|
||||
"reference": "8f679061530ca31d85bff7fff0a19a3e4368216e",
|
||||
"shasum": ""
|
||||
},
|
||||
"default-branch": true,
|
||||
|
|
@ -189,7 +189,7 @@
|
|||
"issues": "https://github.com/bagisto/rest-api/issues",
|
||||
"source": "https://github.com/bagisto/rest-api/tree/master"
|
||||
},
|
||||
"time": "2022-01-21T11:21:50+00:00"
|
||||
"time": "2022-04-07T09:23:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "bagistobrasil/bagisto-product-social-share",
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/js/admin.js": "/js/admin.js?id=1dddbb0d655216b79be5",
|
||||
"/css/admin.css": "/css/admin.css?id=d35081df99f6ce2df4ff"
|
||||
"/js/admin.js": "/js/admin.js?id=551bdd2fab3e31a7d5b1",
|
||||
"/css/admin.css": "/css/admin.css?id=0a408f23127642584bbc"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ class OrderDataGrid extends DataGrid
|
|||
$this->addColumn([
|
||||
'index' => 'status',
|
||||
'label' => trans('admin::app.datagrid.status'),
|
||||
'type' => 'string',
|
||||
'type' => 'checkbox',
|
||||
'options' => [
|
||||
'processing' => trans('shop::app.customer.account.order.index.processing'),
|
||||
'completed' => trans('shop::app.customer.account.order.index.completed'),
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ class ProductDataGrid extends DataGrid
|
|||
'products.type as product_type',
|
||||
'product_flat.status',
|
||||
'product_flat.price',
|
||||
'product_flat.url_key',
|
||||
'attribute_families.name as attribute_family',
|
||||
DB::raw('SUM(' . DB::getTablePrefix() . 'product_inventories.qty) as quantity')
|
||||
);
|
||||
|
|
@ -166,6 +167,13 @@ class ProductDataGrid extends DataGrid
|
|||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'filterable' => true,
|
||||
'closure' => function ($row) {
|
||||
if (! empty($row->url_key)) {
|
||||
return "<a href='" . route('shop.productOrCategory.index', $row->url_key) . "' target='_blank'>" . $row->product_name . "</a>";
|
||||
}
|
||||
|
||||
return $row->product_name;
|
||||
},
|
||||
]);
|
||||
|
||||
$this->addColumn([
|
||||
|
|
|
|||
|
|
@ -1,48 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Admin\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Webkul\Core\Repositories\LocaleRepository;
|
||||
|
||||
class Locale
|
||||
{
|
||||
/**
|
||||
* Create a new middleware instance.
|
||||
*
|
||||
* @param \Webkul\Core\Repositories\LocaleRepository $localeRepository
|
||||
*/
|
||||
public function __construct(protected LocaleRepository $localeRepository)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$locale = request()->get('admin_locale');
|
||||
|
||||
if ($locale) {
|
||||
if ($this->localeRepository->findOneByField('code', $locale)) {
|
||||
app()->setLocale($locale);
|
||||
|
||||
session()->put('admin_locale', $locale);
|
||||
}
|
||||
} else {
|
||||
if ($locale = session()->get('admin_locale')) {
|
||||
app()->setLocale($locale);
|
||||
} else {
|
||||
app()->setLocale(app()->getLocale());
|
||||
}
|
||||
}
|
||||
|
||||
unset($request['admin_locale']);
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
|
|
@ -28,8 +28,6 @@ class AdminServiceProvider extends ServiceProvider
|
|||
|
||||
$this->registerACL();
|
||||
|
||||
$router->aliasMiddleware('admin_locale', Locale::class);
|
||||
|
||||
$this->app->register(EventServiceProvider::class);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -769,6 +769,7 @@ body {
|
|||
color: $read-all-text-color;
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#notif-title {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
@import 'colors';
|
||||
$toggleSize: 31px;
|
||||
$toggleMargin: -25px 10px;
|
||||
$toggleLine: 2px;
|
||||
|
|
|
|||
|
|
@ -286,6 +286,9 @@ return [
|
|||
'confirm-password' => 'تأكيد كلمة المرور',
|
||||
'back-link-title' => 'العودة للتوقيع',
|
||||
'submit-btn-title' => 'بريد إلكتروني كلمة مرور إعادة تعيين وصلة',
|
||||
'passwords' => [
|
||||
'throttled' => 'تحذير: لقد طلبت إعادة تعيين كلمة المرور مؤخرًا ، يرجى التحقق من بريدك الإلكتروني.',
|
||||
]
|
||||
],
|
||||
|
||||
'reset-password' => [
|
||||
|
|
@ -685,6 +688,8 @@ return [
|
|||
'name' => 'اسم',
|
||||
'groups' => 'المجموعات',
|
||||
'add-group-title' => 'أضف المجموعة',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'موضع',
|
||||
'attribute-code' => 'الشفرة',
|
||||
'type' => 'النوع',
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -286,6 +286,9 @@ return [
|
|||
'confirm-password' => 'Passwort bestätigen',
|
||||
'back-link-title' => 'Zurück zur Anmeldung',
|
||||
'submit-btn-title' => 'E-Mail zum Zurücksetzen des Passworts senden',
|
||||
'passwords' => [
|
||||
'throttled' => 'Warnung: Sie haben das Zurücksetzen des Passworts kürzlich angefordert, bitte überprüfen Sie Ihre E-Mails.',
|
||||
]
|
||||
],
|
||||
'reset-password' =>
|
||||
[
|
||||
|
|
@ -676,6 +679,8 @@ return [
|
|||
'name' => 'Name',
|
||||
'groups' => 'Gruppen',
|
||||
'add-group-title' => 'Gruppe hinzufügen',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'Position',
|
||||
'attribute-code' => 'Code',
|
||||
'type' => 'Typ',
|
||||
|
|
|
|||
|
|
@ -288,6 +288,9 @@ return [
|
|||
'confirm-password' => 'Confirm Password',
|
||||
'back-link-title' => 'Back to Sign In',
|
||||
'submit-btn-title' => 'Send Password Reset Email',
|
||||
'passwords' => [
|
||||
'throttled' => 'Warning: You have requested password reset recently, please check your email.',
|
||||
]
|
||||
],
|
||||
|
||||
'reset-password' => [
|
||||
|
|
@ -688,6 +691,8 @@ return [
|
|||
'name' => 'Name',
|
||||
'groups' => 'Groups',
|
||||
'add-group-title' => 'Add Group',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'Position',
|
||||
'attribute-code' => 'Code',
|
||||
'type' => 'Type',
|
||||
|
|
|
|||
|
|
@ -690,6 +690,8 @@ return [
|
|||
'name' => 'Nombre',
|
||||
'groups' => 'Grupos',
|
||||
'add-group-title' => 'Agregar grupo',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'Posición',
|
||||
'attribute-code' => 'Código',
|
||||
'type' => 'Tipo',
|
||||
|
|
|
|||
|
|
@ -673,6 +673,8 @@ return [
|
|||
'name' => 'نام',
|
||||
'groups' => 'گروه ها',
|
||||
'add-group-title' => 'افزودن گروه',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'موقعیت',
|
||||
'attribute-code' => 'کد',
|
||||
'type' => 'نوع',
|
||||
|
|
|
|||
|
|
@ -288,6 +288,9 @@ return [
|
|||
'confirm-password' => 'Confirmez le mot de passe',
|
||||
'back-link-title' => 'Retour à la connexion',
|
||||
'submit-btn-title' => 'Envoyer un e-mail de réinitialisation du mot de passe',
|
||||
'passwords' => [
|
||||
'throttled' => 'Avertissement : Vous avez récemment demandé la réinitialisation de votre mot de passe, veuillez vérifier votre messagerie.',
|
||||
]
|
||||
],
|
||||
|
||||
'reset-password' => [
|
||||
|
|
@ -689,6 +692,8 @@ return [
|
|||
'name' => 'Nom',
|
||||
'groups' => 'Groupes',
|
||||
'add-group-title' => 'Ajouter un groupe',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'Positionner',
|
||||
'attribute-code' => 'Code',
|
||||
'type' => 'Taper',
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -688,6 +688,8 @@ return [
|
|||
'name' => 'नाम',
|
||||
'groups' => 'समूह',
|
||||
'add-group-title' => 'समूह जोड़ें',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'स्थान',
|
||||
'attribute-code' => 'कोड',
|
||||
'type' => 'प्रकार',
|
||||
|
|
|
|||
|
|
@ -283,6 +283,9 @@ return [
|
|||
'confirm-password' => 'Conferma Password',
|
||||
'back-link-title' => 'Torna a Login',
|
||||
'submit-btn-title' => 'Invia Email Recupera Password',
|
||||
'passwords' => [
|
||||
'throttled' => 'Avvertenza: hai richiesto di recente la reimpostazione della password, controlla la tua email.',
|
||||
]
|
||||
],
|
||||
|
||||
'reset-password' => [
|
||||
|
|
@ -673,6 +676,8 @@ return [
|
|||
'name' => 'Nome',
|
||||
'groups' => 'Gruppi',
|
||||
'add-group-title' => 'Aggiungi Gruppo',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'Posizione',
|
||||
'attribute-code' => 'Codice',
|
||||
'type' => 'Tipo',
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -672,6 +672,8 @@ return [
|
|||
'name' => 'Naam',
|
||||
'groups' => 'Groepen',
|
||||
'add-group-title' => 'Add Group',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'Position',
|
||||
'attribute-code' => 'Code',
|
||||
'type' => 'Type',
|
||||
|
|
|
|||
|
|
@ -672,6 +672,8 @@ return [
|
|||
'name' => 'Nazwa',
|
||||
'groups' => 'Grupy',
|
||||
'add-group-title' => 'Dodaj grupę',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'Pozycja',
|
||||
'attribute-code' => 'Kod',
|
||||
'type' => 'Rodzaj',
|
||||
|
|
|
|||
|
|
@ -671,6 +671,8 @@ return [
|
|||
'name' => 'Nome',
|
||||
'groups' => 'Grupos',
|
||||
'add-group-title' => 'Add Grupo',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'Posição',
|
||||
'attribute-code' => 'Código',
|
||||
'type' => 'Tipo',
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -678,6 +678,8 @@ return [
|
|||
'name' => 'Tanımı',
|
||||
'groups' => 'Gruplar',
|
||||
'add-group-title' => 'Grup Ekle',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => 'Konum',
|
||||
'attribute-code' => 'Nitelik Kodu',
|
||||
'type' => 'Tipi',
|
||||
|
|
|
|||
|
|
@ -673,6 +673,8 @@ return [
|
|||
'name' => '名称',
|
||||
'groups' => '客户群',
|
||||
'add-group-title' => '添加群',
|
||||
'edit-group-title' => 'Edit Group',
|
||||
'update-group-title' => 'Update Group',
|
||||
'position' => '位置',
|
||||
'attribute-code' => '代码',
|
||||
'type' => '类型',
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@
|
|||
} else {
|
||||
imageInput.value = '';
|
||||
|
||||
alert('{{ __('admin::app.account.image_upload_message') }}');
|
||||
alert('{{ __('admin::app.account.image-upload-message') }}');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -370,6 +370,12 @@
|
|||
} else {
|
||||
$('#enable_wysiwyg').parents('.control-group').addClass('hide');
|
||||
}
|
||||
|
||||
if (['text'].indexOf($(e.target).val()) > -1) {
|
||||
$('#validation').parents('.control-group').removeClass('hide');
|
||||
} else {
|
||||
$('#validation').parents('.control-group').addClass('hide');
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -184,25 +184,27 @@
|
|||
<input type="hidden" name="is_unique" value="{{ $attribute->is_unique }}"/>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<?php $selectedValidation = old('validation') ?: $attribute->validation ?>
|
||||
<label for="validation">{{ __('admin::app.catalog.attributes.input_validation') }}</label>
|
||||
<select class="control" id="validation" name="validation" {{ ! $attribute->is_user_defined ? 'disabled' : '' }}>
|
||||
<option value=""></option>
|
||||
<option value="numeric" {{ $selectedValidation == 'numeric' ? 'selected' : '' }}>
|
||||
{{ __('admin::app.catalog.attributes.number') }}
|
||||
</option>
|
||||
<option value="decimal" {{ $selectedValidation == 'decimal' ? 'selected' : '' }}>
|
||||
{{ __('admin::app.catalog.attributes.decimal') }}
|
||||
</option>
|
||||
<option value="email" {{ $selectedValidation == 'email' ? 'selected' : '' }}>
|
||||
{{ __('admin::app.catalog.attributes.email') }}
|
||||
</option>
|
||||
<option value="url" {{ $selectedValidation == 'url' ? 'selected' : '' }}>
|
||||
{{ __('admin::app.catalog.attributes.url') }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
@if ($attribute->type == 'text')
|
||||
<div class="control-group">
|
||||
<?php $selectedValidation = old('validation') ?: $attribute->validation ?>
|
||||
<label for="validation">{{ __('admin::app.catalog.attributes.input_validation') }}</label>
|
||||
<select class="control" id="validation" name="validation" {{ ! $attribute->is_user_defined ? 'disabled' : '' }}>
|
||||
<option value=""></option>
|
||||
<option value="numeric" {{ $selectedValidation == 'numeric' ? 'selected' : '' }}>
|
||||
{{ __('admin::app.catalog.attributes.number') }}
|
||||
</option>
|
||||
<option value="decimal" {{ $selectedValidation == 'decimal' ? 'selected' : '' }}>
|
||||
{{ __('admin::app.catalog.attributes.decimal') }}
|
||||
</option>
|
||||
<option value="email" {{ $selectedValidation == 'email' ? 'selected' : '' }}>
|
||||
{{ __('admin::app.catalog.attributes.email') }}
|
||||
</option>
|
||||
<option value="url" {{ $selectedValidation == 'url' ? 'selected' : '' }}>
|
||||
{{ __('admin::app.catalog.attributes.url') }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.validations.controls.after', ['attribute' => $attribute]) !!}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -61,10 +61,6 @@
|
|||
<accordian title="{{ __('admin::app.catalog.families.groups') }}" :active="true">
|
||||
<div slot="body">
|
||||
|
||||
<button type="button" style="margin-bottom : 20px" class="btn btn-md btn-primary" @click="showModal('addGroup')">
|
||||
{{ __('admin::app.catalog.families.add-group-title') }}
|
||||
</button>
|
||||
|
||||
{!! view_render_event('bagisto.admin.catalog.family.create_form_accordian.groups.controls.before') !!}
|
||||
|
||||
<group-list></group-list>
|
||||
|
|
@ -81,63 +77,108 @@
|
|||
</form>
|
||||
</div>
|
||||
|
||||
<modal id="addGroup" :is-open="modalIds.addGroup">
|
||||
<h3 slot="header">{{ __('admin::app.catalog.families.add-group-title') }}</h3>
|
||||
|
||||
<div slot="body">
|
||||
<group-form></group-form>
|
||||
</div>
|
||||
</modal>
|
||||
|
||||
@stop
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script type="text/x-template" id="group-form-template">
|
||||
<form method="POST" action="{{ route('admin.catalog.families.store') }}" data-vv-scope="add-group-form" @submit.prevent="addGroup('add-group-form')">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<div class="control-group" :class="[errors.has('add-group-form.groupName') ? 'has-error' : '']">
|
||||
<label for="groupName" class="required">{{ __('admin::app.catalog.families.name') }}</label>
|
||||
<input type="text" v-validate="'required'" v-model="group.groupName" class="control" id="groupName" name="groupName" data-vv-as=""{{ __('admin::app.catalog.families.name') }}""/>
|
||||
<span class="control-error" v-if="errors.has('add-group-form.groupName')">@{{ errors.first('add-group-form.groupName') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('add-group-form.position') ? 'has-error' : '']">
|
||||
<label for="position" class="required">{{ __('admin::app.catalog.families.position') }}</label>
|
||||
<input type="text" v-validate="'required|numeric'" v-model="group.position" class="control" id="position" name="position" data-vv-as=""{{ __('admin::app.catalog.families.position') }}""/>
|
||||
<span class="control-error" v-if="errors.has('add-group-form.position')">@{{ errors.first('add-group-form.position') }}</span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.catalog.families.add-group-title') }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</script>
|
||||
|
||||
<script type="text/x-template" id="group-list-template">
|
||||
<div>
|
||||
<group-item v-for='(group, index) in groups' :group="group" :custom_attributes="custom_attributes" :key="index" :index="index" @onRemoveGroup="removeGroup($event)" @onAttributeAdd="addAttributes(index, $event)" @onAttributeRemove="removeAttribute(index, $event)"></group-item>
|
||||
<button type="button" style="margin-bottom : 20px" class="btn btn-md btn-primary" @click="$root.showModal('addGroupForm')">
|
||||
{{ __('admin::app.catalog.families.add-group-title') }}
|
||||
</button>
|
||||
|
||||
<modal id="addGroupForm" :is-open="$root.modalIds.addGroupForm">
|
||||
<h3 slot="header">{{ __('admin::app.catalog.families.add-group-title') }}</h3>
|
||||
|
||||
<div slot="body">
|
||||
<form method="POST" data-vv-scope="add-group-form" @submit.prevent="addGroup('add-group-form')">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<div class="control-group" :class="[errors.has('add-group-form.name') ? 'has-error' : '']">
|
||||
<label for="name" class="required">{{ __('admin::app.catalog.families.name') }}</label>
|
||||
<input type="text" v-validate="'required'" v-model="group.name" class="control" id="name" name="name" data-vv-as=""{{ __('admin::app.catalog.families.name') }}""/>
|
||||
<span class="control-error" v-if="errors.has('add-group-form.name')">@{{ errors.first('add-group-form.name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('add-group-form.position') ? 'has-error' : '']">
|
||||
<label for="position" class="required">{{ __('admin::app.catalog.families.position') }}</label>
|
||||
<input type="text" v-validate="'required|numeric'" v-model="group.position" class="control" id="position" name="position" data-vv-as=""{{ __('admin::app.catalog.families.position') }}""/>
|
||||
<span class="control-error" v-if="errors.has('add-group-form.position')">@{{ errors.first('add-group-form.position') }}</span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.catalog.families.add-group-title') }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</modal>
|
||||
|
||||
<modal id="editGroupForm" :is-open="$root.modalIds.editGroupForm">
|
||||
<h3 slot="header">{{ __('admin::app.catalog.families.edit-group-title') }}</h3>
|
||||
|
||||
<div slot="body">
|
||||
<form method="POST" data-vv-scope="edit-group-form" @submit.prevent="updateGroup('edit-group-form')">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
<div class="control-group" :class="[errors.has('edit-group-form.name') ? 'has-error' : '']">
|
||||
<label for="name" class="required">{{ __('admin::app.catalog.families.name') }}</label>
|
||||
<input type="text" v-validate="'required'" v-model="editGroup.name" class="control" id="name" name="name" data-vv-as=""{{ __('admin::app.catalog.families.name') }}""/>
|
||||
<span class="control-error" v-if="errors.has('edit-group-form.name')">@{{ errors.first('edit-group-form.name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('edit-group-form.position') ? 'has-error' : '']">
|
||||
<label for="position" class="required">{{ __('admin::app.catalog.families.position') }}</label>
|
||||
<input type="text" v-validate="'required|numeric'" v-model="editGroup.position" class="control" id="position" name="position" data-vv-as=""{{ __('admin::app.catalog.families.position') }}""/>
|
||||
<span class="control-error" v-if="errors.has('edit-group-form.position')">@{{ errors.first('edit-group-form.position') }}</span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.catalog.families.update-group-title') }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</modal>
|
||||
|
||||
<group-item
|
||||
v-for='(group, index) in groups'
|
||||
:group="group"
|
||||
:custom_attributes="custom_attributes"
|
||||
:key="index"
|
||||
:index="index"
|
||||
@onRemoveGroup="removeGroup($event)"
|
||||
@onEditGroup="openEditGroupModal($event)"
|
||||
@onAttributeAdd="addAttributes(index, $event)"
|
||||
@onAttributeRemove="removeAttribute(index, $event)"
|
||||
></group-item>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/x-template" id="group-item-template">
|
||||
<accordian :title="group.groupName" :active="true">
|
||||
<accordian :title="group.name" :active="true">
|
||||
<div slot="header">
|
||||
<i class="icon expand-icon left"></i>
|
||||
<h1>@{{ group.name ? group.name : group.groupName }}</h1>
|
||||
|
||||
<h1>@{{ group.name }}</h1>
|
||||
|
||||
<i class="icon trash-icon" @click="removeGroup()" v-if="group.is_user_defined"></i>
|
||||
|
||||
<span class="icon pencil-lg-icon" @click="editGroup()"></span>
|
||||
</div>
|
||||
|
||||
<div slot="body">
|
||||
<input type="hidden" :name="[groupInputName + '[name]']" :value="group.name ? group.name : group.groupName"/>
|
||||
<input type="hidden" :name="[groupInputName + '[name]']" :value="group.name"/>
|
||||
<input type="hidden" :name="[groupInputName + '[position]']" :value="group.position"/>
|
||||
<input type="hidden" :name="[groupInputName + '[is_user_defined]']" :value="group.is_user_defined"/>
|
||||
|
||||
|
|
@ -201,71 +242,28 @@
|
|||
var groups = @json($attributeFamily ? $attributeFamily->attribute_groups : []);
|
||||
var custom_attributes = @json($custom_attributes);
|
||||
|
||||
Vue.component('group-form', {
|
||||
|
||||
data: function () {
|
||||
return {
|
||||
group: {
|
||||
'groupName': '',
|
||||
'position': '',
|
||||
'is_user_defined': 1,
|
||||
'custom_attributes': []
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
template: '#group-form-template',
|
||||
|
||||
methods: {
|
||||
addGroup: function (formScope) {
|
||||
var this_this = this;
|
||||
|
||||
this.$validator.validateAll(formScope).then(function (result) {
|
||||
if (result) {
|
||||
|
||||
var filteredGroups = groups.filter(function(group) {
|
||||
return this_this.group.groupName.trim() === (group.name ? group.name.trim() : group.groupName.trim())
|
||||
})
|
||||
|
||||
if (filteredGroups.length) {
|
||||
const field = this.$validator.fields.find({ name: 'groupName', scope: 'add-group-form' });
|
||||
|
||||
if (field) {
|
||||
this.$validator.errors.add({
|
||||
id: field.id,
|
||||
field: 'groupName',
|
||||
msg: "{{ __('admin::app.catalog.families.group-exist-error') }}",
|
||||
scope: 'add-group-form',
|
||||
});
|
||||
}
|
||||
} else {
|
||||
groups.push(this_this.group);
|
||||
|
||||
groups = this_this.sortGroups();
|
||||
|
||||
this.group = {'groupName': '', 'position': '', 'is_user_defined': 1, 'custom_attributes': []};
|
||||
|
||||
this_this.$parent.closeModal();
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
sortGroups: function () {
|
||||
return groups.sort(function(a, b) {
|
||||
return a.position - b.position;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Vue.component('group-list', {
|
||||
|
||||
template: '#group-list-template',
|
||||
|
||||
data: function() {
|
||||
return {
|
||||
group: {
|
||||
'name': '',
|
||||
'position': '',
|
||||
'is_user_defined': 1,
|
||||
'custom_attributes': []
|
||||
},
|
||||
|
||||
editGroup: {
|
||||
'name': '',
|
||||
'position': '',
|
||||
'is_user_defined': 1,
|
||||
'custom_attributes': []
|
||||
},
|
||||
|
||||
groups: groups,
|
||||
|
||||
custom_attributes: custom_attributes
|
||||
}
|
||||
},
|
||||
|
|
@ -286,6 +284,88 @@
|
|||
},
|
||||
|
||||
methods: {
|
||||
addGroup: function (formScope) {
|
||||
var self = this;
|
||||
|
||||
this.$validator.validateAll(formScope).then(function (result) {
|
||||
if (result) {
|
||||
|
||||
var filteredGroups = groups.filter(function(group) {
|
||||
return self.group.name.trim() === group.name.trim()
|
||||
})
|
||||
|
||||
if (filteredGroups.length) {
|
||||
const field = self.$validator.fields.find({ name: 'name', scope: 'add-group-form' });
|
||||
|
||||
if (field) {
|
||||
self.$validator.errors.add({
|
||||
id: field.id,
|
||||
field: 'name',
|
||||
msg: "{{ __('admin::app.catalog.families.group-exist-error') }}",
|
||||
scope: 'add-group-form',
|
||||
});
|
||||
}
|
||||
} else {
|
||||
groups.push(self.group);
|
||||
|
||||
groups = self.sortGroups();
|
||||
|
||||
this.group = {'name': '', 'position': '', 'is_user_defined': 1, 'custom_attributes': []};
|
||||
|
||||
self.$set(self.$root.modalIds, 'addGroupForm', false);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
updateGroup: function(formScope) {
|
||||
var self = this;
|
||||
|
||||
this.$validator.validateAll(formScope).then(function (result) {
|
||||
if (result) {
|
||||
|
||||
var filteredGroups = groups.filter(function(group) {
|
||||
return self.editGroup.name.trim() === group.name.trim()
|
||||
})
|
||||
|
||||
if (filteredGroups.length > 1) {
|
||||
const field = self.$validator.fields.find({ name: 'name', scope: 'edit-group-form' });
|
||||
|
||||
if (field) {
|
||||
self.$validator.errors.add({
|
||||
id: field.id,
|
||||
field: 'name',
|
||||
msg: "{{ __('admin::app.catalog.families.group-exist-error') }}",
|
||||
scope: 'edit-group-form',
|
||||
});
|
||||
}
|
||||
} else {
|
||||
let index = groups.indexOf(self.editGroup)
|
||||
|
||||
groups[index] = self.editGroup;
|
||||
|
||||
groups = self.sortGroups();
|
||||
|
||||
this.editGroup = {'name': '', 'position': '', 'is_user_defined': 1, 'custom_attributes': []};
|
||||
|
||||
self.$set(self.$root.modalIds, 'editGroupForm', false);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
sortGroups: function () {
|
||||
return groups.sort(function(a, b) {
|
||||
return a.position - b.position;
|
||||
});
|
||||
},
|
||||
|
||||
openEditGroupModal: function (group) {
|
||||
this.editGroup = group;
|
||||
|
||||
this.$root.showModal('editGroupForm')
|
||||
},
|
||||
|
||||
removeGroup: function (group) {
|
||||
group.custom_attributes.forEach(function(attribute) {
|
||||
this.custom_attributes.push(attribute);
|
||||
|
|
@ -342,6 +422,10 @@
|
|||
},
|
||||
|
||||
methods: {
|
||||
editGroup: function() {
|
||||
this.$emit('onEditGroup', this.group)
|
||||
},
|
||||
|
||||
removeGroup: function () {
|
||||
this.$emit('onRemoveGroup', this.group)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -64,10 +64,6 @@
|
|||
|
||||
{!! view_render_event('bagisto.admin.catalog.family.edit_form_accordian.groups.controls.before', ['attributeFamily' => $attributeFamily]) !!}
|
||||
|
||||
<button type="button" style="margin-bottom : 20px" class="btn btn-md btn-primary" @click="showModal('addGroup')">
|
||||
{{ __('admin::app.catalog.families.add-group-title') }}
|
||||
</button>
|
||||
|
||||
<group-list></group-list>
|
||||
|
||||
{!! view_render_event('bagisto.admin.catalog.family.edit_form_accordian.groups.controls.before', ['attributeFamily' => $attributeFamily]) !!}
|
||||
|
|
@ -81,63 +77,106 @@
|
|||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<modal id="addGroup" :is-open="modalIds.addGroup">
|
||||
<h3 slot="header">{{ __('admin::app.catalog.families.add-group-title') }}</h3>
|
||||
|
||||
<div slot="body">
|
||||
<group-form></group-form>
|
||||
</div>
|
||||
</modal>
|
||||
@stop
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script type="text/x-template" id="group-form-template">
|
||||
<form method="POST" action="{{ route('admin.catalog.families.store') }}" data-vv-scope="add-group-form" @submit.prevent="addGroup('add-group-form')">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<div class="control-group" :class="[errors.has('add-group-form.groupName') ? 'has-error' : '']">
|
||||
<label for="groupName" class="required">{{ __('admin::app.catalog.families.name') }}</label>
|
||||
<input type="text" v-validate="'required'" v-model="group.groupName" class="control" id="groupName" name="groupName" data-vv-as=""{{ __('admin::app.catalog.families.name') }}""/>
|
||||
<span class="control-error" v-if="errors.has('add-group-form.groupName')">@{{ errors.first('add-group-form.groupName') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('add-group-form.position') ? 'has-error' : '']">
|
||||
<label for="position" class="required">{{ __('admin::app.catalog.families.position') }}</label>
|
||||
<input type="text" v-validate="'required|numeric'" v-model="group.position" class="control" id="position" name="position" data-vv-as=""{{ __('admin::app.catalog.families.position') }}""/>
|
||||
<span class="control-error" v-if="errors.has('add-group-form.position')">@{{ errors.first('add-group-form.position') }}</span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.catalog.families.add-group-title') }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</script>
|
||||
|
||||
<script type="text/x-template" id="group-list-template">
|
||||
<div style="margin-top: 20px">
|
||||
<group-item v-for='(group, index) in groups' :group="group" :custom_attributes="custom_attributes" :key="index" :index="index" @onRemoveGroup="removeGroup($event)" @onAttributeAdd="addAttributes(index, $event)" @onAttributeRemove="removeAttribute(index, $event)"></group-item>
|
||||
<button type="button" style="margin-bottom : 20px" class="btn btn-md btn-primary" @click="showModal('addGroupForm')">
|
||||
{{ __('admin::app.catalog.families.add-group-title') }}
|
||||
</button>
|
||||
|
||||
<modal id="addGroupForm" :is-open="$root.modalIds.addGroupForm">
|
||||
<h3 slot="header">{{ __('admin::app.catalog.families.add-group-title') }}</h3>
|
||||
|
||||
<div slot="body">
|
||||
<form method="POST" data-vv-scope="add-group-form" @submit.prevent="addGroup('add-group-form')">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
<div class="control-group" :class="[errors.has('add-group-form.name') ? 'has-error' : '']">
|
||||
<label for="name" class="required">{{ __('admin::app.catalog.families.name') }}</label>
|
||||
<input type="text" v-validate="'required'" v-model="group.name" class="control" id="name" name="name" data-vv-as=""{{ __('admin::app.catalog.families.name') }}""/>
|
||||
<span class="control-error" v-if="errors.has('add-group-form.name')">@{{ errors.first('add-group-form.name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('add-group-form.position') ? 'has-error' : '']">
|
||||
<label for="position" class="required">{{ __('admin::app.catalog.families.position') }}</label>
|
||||
<input type="text" v-validate="'required|numeric'" v-model="group.position" class="control" id="position" name="position" data-vv-as=""{{ __('admin::app.catalog.families.position') }}""/>
|
||||
<span class="control-error" v-if="errors.has('add-group-form.position')">@{{ errors.first('add-group-form.position') }}</span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.catalog.families.add-group-title') }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</modal>
|
||||
|
||||
<modal id="editGroupForm" :is-open="$root.modalIds.editGroupForm">
|
||||
<h3 slot="header">{{ __('admin::app.catalog.families.edit-group-title') }}</h3>
|
||||
|
||||
<div slot="body">
|
||||
<form method="POST" data-vv-scope="edit-group-form" @submit.prevent="updateGroup('edit-group-form')">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
<div class="control-group" :class="[errors.has('edit-group-form.name') ? 'has-error' : '']">
|
||||
<label for="name" class="required">{{ __('admin::app.catalog.families.name') }}</label>
|
||||
<input type="text" v-validate="'required'" v-model="editGroup.name" class="control" id="name" name="name" data-vv-as=""{{ __('admin::app.catalog.families.name') }}""/>
|
||||
<span class="control-error" v-if="errors.has('edit-group-form.name')">@{{ errors.first('edit-group-form.name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('edit-group-form.position') ? 'has-error' : '']">
|
||||
<label for="position" class="required">{{ __('admin::app.catalog.families.position') }}</label>
|
||||
<input type="text" v-validate="'required|numeric'" v-model="editGroup.position" class="control" id="position" name="position" data-vv-as=""{{ __('admin::app.catalog.families.position') }}""/>
|
||||
<span class="control-error" v-if="errors.has('edit-group-form.position')">@{{ errors.first('edit-group-form.position') }}</span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.catalog.families.update-group-title') }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</modal>
|
||||
|
||||
<group-item
|
||||
v-for='(group, index) in groups'
|
||||
:group="group"
|
||||
:custom_attributes="custom_attributes"
|
||||
:key="index"
|
||||
:index="index"
|
||||
@onRemoveGroup="removeGroup($event)"
|
||||
@onEditGroup="openEditGroupModal($event)"
|
||||
@onAttributeAdd="addAttributes(index, $event)"
|
||||
@onAttributeRemove="removeAttribute(index, $event)"
|
||||
></group-item>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/x-template" id="group-item-template">
|
||||
<accordian :title="group.groupName" :active="true">
|
||||
<accordian :title="group.name" :active="true">
|
||||
<div slot="header">
|
||||
<i class="icon expand-icon left"></i>
|
||||
<h1>@{{ group.name ? group.name : group.groupName }}</h1>
|
||||
|
||||
<h1>@{{ group.name }}</h1>
|
||||
|
||||
<i class="icon trash-icon" @click="removeGroup()" v-if="group.is_user_defined"></i>
|
||||
|
||||
<span class="icon pencil-lg-icon" @click="editGroup()"></span>
|
||||
</div>
|
||||
|
||||
<div slot="body">
|
||||
<input type="hidden" :name="[groupInputName + '[name]']" :value="group.name ? group.name : group.groupName"/>
|
||||
<input type="hidden" :name="[groupInputName + '[name]']" :value="group.name"/>
|
||||
<input type="hidden":name="[groupInputName + '[position]']" :value="group.position"/>
|
||||
|
||||
<div class="table" v-if="group.custom_attributes.length" style="margin-bottom: 20px;">
|
||||
|
|
@ -200,70 +239,27 @@
|
|||
var groups = @json($attributeFamily->attribute_groups);
|
||||
var custom_attributes = @json($custom_attributes);
|
||||
|
||||
Vue.component('group-form', {
|
||||
|
||||
data: function() {
|
||||
return {
|
||||
group: {
|
||||
'groupName': '',
|
||||
'position': '',
|
||||
'custom_attributes': []
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
template: '#group-form-template',
|
||||
|
||||
methods: {
|
||||
addGroup: function (formScope) {
|
||||
var this_this = this;
|
||||
|
||||
this.$validator.validateAll(formScope).then(function (result) {
|
||||
if (result) {
|
||||
|
||||
var filteredGroups = groups.filter(function(group) {
|
||||
return this_this.group.groupName.trim() === (group.name ? group.name.trim() : group.groupName.trim())
|
||||
})
|
||||
|
||||
if (filteredGroups.length) {
|
||||
const field = this.$validator.fields.find({ name: 'groupName', scope: 'add-group-form' });
|
||||
|
||||
if (field) {
|
||||
this.$validator.errors.add({
|
||||
id: field.id,
|
||||
field: 'groupName',
|
||||
msg: "{{ __('admin::app.catalog.families.group-exist-error') }}",
|
||||
scope: 'add-group-form',
|
||||
});
|
||||
}
|
||||
} else {
|
||||
groups.push(this_this.group);
|
||||
|
||||
groups = this_this.sortGroups();
|
||||
|
||||
this.group = {'groupName': '', 'position': '', 'is_user_defined': 1, 'custom_attributes': []};
|
||||
|
||||
this_this.$parent.closeModal();
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
sortGroups: function () {
|
||||
return groups.sort(function(a, b) {
|
||||
return a.position - b.position;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Vue.component('group-list', {
|
||||
|
||||
template: '#group-list-template',
|
||||
|
||||
data: function() {
|
||||
return {
|
||||
group: {
|
||||
'name': '',
|
||||
'position': '',
|
||||
'custom_attributes': []
|
||||
},
|
||||
|
||||
editGroup: {
|
||||
'name': '',
|
||||
'position': '',
|
||||
'is_user_defined': 1,
|
||||
'custom_attributes': []
|
||||
},
|
||||
|
||||
groups: groups,
|
||||
|
||||
custom_attributes: custom_attributes
|
||||
}
|
||||
},
|
||||
|
|
@ -286,6 +282,88 @@
|
|||
},
|
||||
|
||||
methods: {
|
||||
addGroup: function (formScope) {
|
||||
var this_this = this;
|
||||
|
||||
this.$validator.validateAll(formScope).then(function (result) {
|
||||
if (result) {
|
||||
|
||||
var filteredGroups = groups.filter(function(group) {
|
||||
return this_this.group.name.trim() === group.name.trim()
|
||||
})
|
||||
|
||||
if (filteredGroups.length) {
|
||||
const field = this.$validator.fields.find({ name: 'name', scope: 'add-group-form' });
|
||||
|
||||
if (field) {
|
||||
this.$validator.errors.add({
|
||||
id: field.id,
|
||||
field: 'name',
|
||||
msg: "{{ __('admin::app.catalog.families.group-exist-error') }}",
|
||||
scope: 'add-group-form',
|
||||
});
|
||||
}
|
||||
} else {
|
||||
groups.push(this_this.group);
|
||||
|
||||
groups = this_this.sortGroups();
|
||||
|
||||
this.group = {'name': '', 'position': '', 'is_user_defined': 1, 'custom_attributes': []};
|
||||
|
||||
self.$set(self.$root.modalIds, 'addGroupForm', false);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
updateGroup: function(formScope) {
|
||||
var self = this;
|
||||
|
||||
this.$validator.validateAll(formScope).then(function (result) {
|
||||
if (result) {
|
||||
|
||||
var filteredGroups = groups.filter(function(group) {
|
||||
return self.editGroup.name.trim() === group.name.trim()
|
||||
})
|
||||
|
||||
if (filteredGroups.length > 1) {
|
||||
const field = self.$validator.fields.find({ name: 'name', scope: 'edit-group-form' });
|
||||
|
||||
if (field) {
|
||||
self.$validator.errors.add({
|
||||
id: field.id,
|
||||
field: 'name',
|
||||
msg: "{{ __('admin::app.catalog.families.group-exist-error') }}",
|
||||
scope: 'edit-group-form',
|
||||
});
|
||||
}
|
||||
} else {
|
||||
let index = groups.indexOf(self.editGroup)
|
||||
|
||||
groups[index] = self.editGroup;
|
||||
|
||||
groups = self.sortGroups();
|
||||
|
||||
this.editGroup = {'name': '', 'position': '', 'is_user_defined': 1, 'custom_attributes': []};
|
||||
|
||||
self.$set(self.$root.modalIds, 'editGroupForm', false);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
sortGroups: function () {
|
||||
return groups.sort(function(a, b) {
|
||||
return a.position - b.position;
|
||||
});
|
||||
},
|
||||
|
||||
openEditGroupModal: function (group) {
|
||||
this.editGroup = group;
|
||||
|
||||
this.$root.showModal('editGroupForm')
|
||||
},
|
||||
|
||||
removeGroup: function (group) {
|
||||
group.custom_attributes.forEach(function(attribute) {
|
||||
this.custom_attributes.push(attribute);
|
||||
|
|
@ -347,6 +425,10 @@
|
|||
},
|
||||
|
||||
methods: {
|
||||
editGroup: function() {
|
||||
this.$emit('onEditGroup', this.group)
|
||||
},
|
||||
|
||||
removeGroup: function () {
|
||||
this.$emit('onRemoveGroup', this.group)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
v-for='(image, index) in items'
|
||||
:key='image.id'
|
||||
:image="image"
|
||||
class="draggable"
|
||||
@onRemoveImage="removeImage($event)"
|
||||
@onImageSelected="imageSelected($event)">
|
||||
</product-image-item>
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@
|
|||
@endif
|
||||
|
||||
@if (isset($field['info']))
|
||||
<span class="control-info mt-10">{{ trans($field['info']) }}</span>
|
||||
<span class="control-info mt-10">{{!! trans($field['info']) !!}}</span>
|
||||
@endif
|
||||
|
||||
<span class="control-error" @if ($field['type'] == 'multiselect') v-if="errors.has('{{ $name }}[]')" @else v-if="errors.has('{{ $name }}')" @endif>
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<div class="control-group">
|
||||
<label for="name" >{{ __('admin::app.customers.reviews.comment') }}</label>
|
||||
<textarea class="control" disabled> {{ $review->comment }}</textarea>
|
||||
<textarea class="control" disabled v-text='"{{ $review->comment }}"'> </textarea>
|
||||
</div>
|
||||
|
||||
@if (count($review->images) > 0)
|
||||
|
|
|
|||
|
|
@ -28,52 +28,54 @@
|
|||
<div class="title">
|
||||
{{ __('admin::app.dashboard.total-customers') }}
|
||||
</div>
|
||||
<a href="{{ route('admin.customer.index') }}">
|
||||
<div class="data">
|
||||
{{ $statistics['total_customers']['current'] }}
|
||||
|
||||
<div class="data">
|
||||
{{ $statistics['total_customers']['current'] }}
|
||||
|
||||
<span class="progress">
|
||||
@if ($statistics['total_customers']['progress'] < 0)
|
||||
<span class="icon graph-down-icon"></span>
|
||||
{{ __('admin::app.dashboard.decreased', [
|
||||
'progress' => -number_format($statistics['total_customers']['progress'], 1)
|
||||
])
|
||||
}}
|
||||
@else
|
||||
<span class="icon graph-up-icon"></span>
|
||||
{{ __('admin::app.dashboard.increased', [
|
||||
'progress' => number_format($statistics['total_customers']['progress'], 1)
|
||||
])
|
||||
}}
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
<span class="progress">
|
||||
@if ($statistics['total_customers']['progress'] < 0)
|
||||
<span class="icon graph-down-icon"></span>
|
||||
{{ __('admin::app.dashboard.decreased', [
|
||||
'progress' => -number_format($statistics['total_customers']['progress'], 1)
|
||||
])
|
||||
}}
|
||||
@else
|
||||
<span class="icon graph-up-icon"></span>
|
||||
{{ __('admin::app.dashboard.increased', [
|
||||
'progress' => number_format($statistics['total_customers']['progress'], 1)
|
||||
])
|
||||
}}
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card">
|
||||
<div class="title">
|
||||
{{ __('admin::app.dashboard.total-orders') }}
|
||||
</div>
|
||||
<a href="{{ route('admin.sales.orders.index') }}">
|
||||
<div class="data">
|
||||
{{ $statistics['total_orders']['current'] }}
|
||||
|
||||
<div class="data">
|
||||
{{ $statistics['total_orders']['current'] }}
|
||||
|
||||
<span class="progress">
|
||||
@if ($statistics['total_orders']['progress'] < 0)
|
||||
<span class="icon graph-down-icon"></span>
|
||||
{{ __('admin::app.dashboard.decreased', [
|
||||
'progress' => -number_format($statistics['total_orders']['progress'], 1)
|
||||
])
|
||||
}}
|
||||
@else
|
||||
<span class="icon graph-up-icon"></span>
|
||||
{{ __('admin::app.dashboard.increased', [
|
||||
'progress' => number_format($statistics['total_orders']['progress'], 1)
|
||||
])
|
||||
}}
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
<span class="progress">
|
||||
@if ($statistics['total_orders']['progress'] < 0)
|
||||
<span class="icon graph-down-icon"></span>
|
||||
{{ __('admin::app.dashboard.decreased', [
|
||||
'progress' => -number_format($statistics['total_orders']['progress'], 1)
|
||||
])
|
||||
}}
|
||||
@else
|
||||
<span class="icon graph-up-icon"></span>
|
||||
{{ __('admin::app.dashboard.increased', [
|
||||
'progress' => number_format($statistics['total_orders']['progress'], 1)
|
||||
])
|
||||
}}
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card">
|
||||
|
|
|
|||
|
|
@ -9,10 +9,6 @@
|
|||
$tree->items = core()->sortItems($tree->items);
|
||||
|
||||
$config = $tree;
|
||||
|
||||
$allLocales = core()->getAllLocales()->pluck('name', 'code');
|
||||
|
||||
$currentLocaleCode = core()->getRequestedLocaleCode('admin_locale');
|
||||
@endphp
|
||||
|
||||
<mobile-nav></mobile-nav>
|
||||
|
|
@ -30,7 +26,7 @@
|
|||
<div class="profile-info-icon">
|
||||
<span style="">{{ substr(auth()->guard('admin')->user()->name, 0, 1) }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="profile-info-desc">
|
||||
<div class="name">
|
||||
{{ auth()->guard('admin')->user()->name }}
|
||||
|
|
@ -46,7 +42,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-items">
|
||||
<div class="nav-items">
|
||||
@foreach ($menu->items as $menuItem)
|
||||
<div class="nav-item {{ $menu->getActive($menuItem) }}">
|
||||
<a class="nav-tab-name" href="{{ $menuItem['key'] == 'dashboard' ? $menuItem['url'] : '#' }}">
|
||||
|
|
@ -68,7 +64,7 @@
|
|||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</ul>
|
||||
@endif
|
||||
@else
|
||||
<ul>
|
||||
|
|
@ -78,28 +74,11 @@
|
|||
<span style="margin-left:47px">{{ isset($item['name']) ? trans($item['name']) : '' }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
<div class="nav-item">
|
||||
<a class="nav-tab-name">
|
||||
<span class="icon-menu icon locale-icon"
|
||||
style="margin-right:10px; display: inline-block;vertical-align: middle;transform: scale(0.8);"></span>
|
||||
<span class="menu-label"> {{ __('admin::app.datagrid.locale') }} {{ $allLocales[$currentLocaleCode] }}</span>
|
||||
<span class="icon arrow-icon"></span>
|
||||
</a>
|
||||
<ul>
|
||||
@foreach ($allLocales as $code => $name)
|
||||
<li class="navbar-child">
|
||||
<a href="{{ url()->current() . '?' . http_build_query(array_merge(request()->all(), ['admin_locale' => $code])) }}">
|
||||
<span style="margin-left:47px"> {{ $name }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
<div class="nav-item">
|
||||
<a class="nav-tab-name">
|
||||
<span class="icon-menu icon accounts-icon"
|
||||
|
|
@ -107,9 +86,9 @@
|
|||
<span class="menu-label">{{ __('admin::app.layouts.account-title') }}</span>
|
||||
<span class="icon arrow-icon"></span>
|
||||
</a>
|
||||
<ul>
|
||||
<li class="navbar-child">
|
||||
<a>
|
||||
<ul>
|
||||
<li class="navbar-child">
|
||||
<a>
|
||||
<span style="display:flex;justify-content:space-between;height:20px">
|
||||
<div style="margin-top:12px;margin-left:47px">
|
||||
<span>{{ __('admin::app.layouts.mode') }}</span>
|
||||
|
|
@ -117,10 +96,10 @@
|
|||
<dark style="margin-left:13%"></dark>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
<li class="navbar-child">
|
||||
<a href="{{ route('admin.account.edit') }}">
|
||||
<a href="{{ route('admin.account.edit') }}">
|
||||
<span style="margin-left:47px">{{ __('admin::app.layouts.my-account') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
|
|
@ -128,10 +107,10 @@
|
|||
<a href="{{ route('admin.session.destroy') }}">
|
||||
<span style="margin-left:47px">{{ __('admin::app.layouts.logout') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
|
@ -149,10 +128,10 @@
|
|||
|
||||
mounted(){
|
||||
const nav = document.querySelector(".nav-container");
|
||||
|
||||
|
||||
if (nav) {
|
||||
const toggle = nav.querySelector(".nav-toggle");
|
||||
|
||||
|
||||
if (toggle) {
|
||||
toggle.addEventListener("click", () => {
|
||||
if (nav.classList.contains("is-active")) {
|
||||
|
|
@ -162,7 +141,7 @@
|
|||
nav.classList.add("is-active");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
nav.addEventListener("blur", () => {
|
||||
nav.classList.remove("is-active");
|
||||
});
|
||||
|
|
@ -177,7 +156,7 @@
|
|||
navItem.parentElement.children[1].classList.toggle("display-block");
|
||||
navItem.children[2].classList.toggle("rotate-arrow-icon");
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
},
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
$config = $tree;
|
||||
|
||||
$allLocales = core()->getAllLocales()->pluck('name', 'code');
|
||||
|
||||
$currentLocaleCode = core()->getRequestedLocaleCode('admin_locale');
|
||||
@endphp
|
||||
|
||||
<div class="navbar-left" v-bind:class="{'open': isMenuOpen}">
|
||||
|
|
@ -26,10 +24,10 @@
|
|||
<span class="menu-label">{{ trans($menuItem['name']) }}</span>
|
||||
|
||||
@if(count($menuItem['children']) || $menuItem['key'] == 'configuration' )
|
||||
<span
|
||||
<span
|
||||
class="icon arrow-icon {{ $menu->getActive($menuItem) == 'active' ? 'rotate-arrow-icon' : '' }} {{ ( core()->getCurrentLocale() && core()->getCurrentLocale()->direction == 'rtl' ) ? 'arrow-icon-right' :'arrow-icon-left' }}"
|
||||
></span>
|
||||
|
||||
|
||||
@endif
|
||||
</a>
|
||||
@if ($menuItem['key'] != 'configuration')
|
||||
|
|
@ -48,7 +46,7 @@
|
|||
<ul class="sub-menubar">
|
||||
@foreach ($config->items as $key => $item)
|
||||
<li class="sub-menu-item {{ $item['key'] == request()->route('slug') ? 'active' : '' }}">
|
||||
<a href="{{ route('admin.configuration.index', $item['key']) }}">
|
||||
<a href="{{ route('admin.configuration.index', $item['key']) }}">
|
||||
<span class="menu-label"> {{ isset($item['name']) ? trans($item['name']) : '' }}</span>
|
||||
</a>
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@
|
|||
'processing' => trans('admin::app.notification.order-status-messages.processing')
|
||||
];
|
||||
$allLocales = core()->getAllLocales()->pluck('name', 'code');
|
||||
|
||||
$currentLocaleCode = core()->getRequestedLocaleCode('admin_locale');
|
||||
@endphp
|
||||
|
||||
<div class="navbar-top">
|
||||
|
|
@ -65,29 +63,6 @@
|
|||
|
||||
</notification>
|
||||
|
||||
<div class="profile-info">
|
||||
|
||||
<div class="dropdown-toggle">
|
||||
|
||||
<i class="icon locale-icon"></i>
|
||||
</div>
|
||||
|
||||
<div class="dropdown-list bottom-right">
|
||||
<div class="dropdown-container">
|
||||
<ul>
|
||||
@foreach ($allLocales as $code => $name)
|
||||
<li>
|
||||
<a href="{{ url()->current() . '?' . http_build_query(array_merge(request()->all(), ['admin_locale' => $code])) }}"
|
||||
style="{{ $code == $currentLocaleCode ? 'color:blue' : '' }}">
|
||||
{{ $name }}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="profile-info">
|
||||
<div class="dropdown-toggle">
|
||||
<div style="display: inline-block; vertical-align: middle;">
|
||||
|
|
|
|||
|
|
@ -107,41 +107,45 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
|
||||
<accordian title="{{ __('admin::app.sales.orders.address') }}" :active="true">
|
||||
<div slot="body">
|
||||
<div class="sale">
|
||||
<div class="sale-section">
|
||||
<div class="secton-title">
|
||||
<span>{{ __('admin::app.sales.orders.billing-address') }}</span>
|
||||
</div>
|
||||
@if ($order->billing_address || $order->shipping_address)
|
||||
<accordian title="{{ __('admin::app.sales.orders.address') }}" :active="true">
|
||||
<div slot="body">
|
||||
<div class="sale">
|
||||
@if ($order->billing_address)
|
||||
<div class="sale-section">
|
||||
<div class="secton-title">
|
||||
<span>{{ __('admin::app.sales.orders.billing-address') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->billing_address])
|
||||
@include ('admin::sales.address', ['address' => $order->billing_address])
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($order->shipping_address)
|
||||
<div class="sale-section">
|
||||
<div class="secton-title">
|
||||
<span>{{ __('admin::app.sales.orders.shipping-address') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->shipping_address])
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@if ($order->shipping_address)
|
||||
<div class="sale-section">
|
||||
<div class="secton-title">
|
||||
<span>{{ __('admin::app.sales.orders.shipping-address') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->shipping_address])
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
</div>
|
||||
</accordian>
|
||||
@endif
|
||||
|
||||
<accordian title="{{ __('admin::app.sales.orders.payment-and-shipping') }}" :active="true">
|
||||
<div slot="body">
|
||||
|
|
@ -273,7 +277,7 @@
|
|||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
|
|
|
|||
|
|
@ -499,7 +499,7 @@
|
|||
<td>#{{ $invoice->increment_id ?? $invoice->id }}</td>
|
||||
<td>{{ $invoice->created_at }}</td>
|
||||
<td>#{{ $invoice->order->increment_id }}</td>
|
||||
<td>{{ $invoice->address->name }}</td>
|
||||
<td>{{ $order->customer_full_name }}</td>
|
||||
<td>{{ $invoice->status_label }}</td>
|
||||
<td>{{ core()->formatBasePrice($invoice->base_grand_total) }}</td>
|
||||
<td class="action">
|
||||
|
|
|
|||
|
|
@ -106,42 +106,46 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
|
||||
<accordian title="{{ __('admin::app.sales.orders.address') }}" :active="true">
|
||||
<div slot="body">
|
||||
<div class="sale">
|
||||
<div class="sale-section">
|
||||
<div class="secton-title">
|
||||
<span>{{ __('admin::app.sales.orders.billing-address') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->billing_address])
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if ($order->shipping_address)
|
||||
<div class="sale-section">
|
||||
<div class="secton-title">
|
||||
<span>{{ __('admin::app.sales.orders.shipping-address') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->shipping_address])
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
|
||||
@if ($order->billing_address || $order->shipping_address)
|
||||
<accordian title="{{ __('admin::app.sales.orders.address') }}" :active="true">
|
||||
<div slot="body">
|
||||
<div class="sale">
|
||||
@if ($order->billing_address)
|
||||
<div class="sale-section">
|
||||
<div class="secton-title">
|
||||
<span>{{ __('admin::app.sales.orders.billing-address') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->billing_address])
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($order->shipping_address)
|
||||
<div class="sale-section">
|
||||
<div class="secton-title">
|
||||
<span>{{ __('admin::app.sales.orders.shipping-address') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->shipping_address])
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
@endif
|
||||
|
||||
<accordian title="{{ __('admin::app.sales.orders.payment-and-shipping') }}" :active="true">
|
||||
<div slot="body">
|
||||
<div class="sale">
|
||||
|
|
@ -340,7 +344,7 @@
|
|||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ use Webkul\User\Http\Controllers\SessionController;
|
|||
/**
|
||||
* Auth routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web'], 'prefix' => config('app.admin_url')], function () {
|
||||
/**
|
||||
* Redirect route.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ use Webkul\Product\Http\Controllers\ProductController;
|
|||
/**
|
||||
* Catalog routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::prefix('catalog')->group(function () {
|
||||
/**
|
||||
* Sync route.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ use Webkul\CMS\Http\Controllers\Admin\PageController;
|
|||
/**
|
||||
* CMS routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::prefix('cms')->group(function () {
|
||||
Route::get('/', [PageController::class, 'index'])->defaults('_config', [
|
||||
'view' => 'admin::cms.index',
|
||||
|
|
@ -36,4 +36,4 @@ Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => conf
|
|||
'redirect' => 'admin.cms.index',
|
||||
])->name('admin.cms.mass-delete');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ use Webkul\Admin\Http\Controllers\ConfigurationController;
|
|||
/**
|
||||
* Configuration routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::get('configuration/{slug?}/{slug2?}', [ConfigurationController::class, 'index'])->defaults('_config', [
|
||||
'view' => 'admin::configuration.index',
|
||||
])->name('admin.configuration.index');
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ use Webkul\Product\Http\Controllers\ReviewController;
|
|||
/**
|
||||
* Customers routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_url')], function () {
|
||||
/**
|
||||
* Customer management routes.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ use Webkul\Sitemap\Http\Controllers\Admin\SitemapController;
|
|||
/**
|
||||
* Marketing routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::prefix('promotions')->group(function () {
|
||||
/**
|
||||
* Cart rules routes.
|
||||
|
|
@ -173,7 +173,6 @@ Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => conf
|
|||
'redirect' => 'admin.customers.subscribers.index',
|
||||
])->name('admin.customers.subscribers.update');
|
||||
|
||||
|
||||
/**
|
||||
* Cart rules routes.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ use Webkul\Notification\Http\Controllers\Admin\NotificationController;
|
|||
/**
|
||||
* Notification routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::get('notifications', [NotificationController::class, 'index'])->defaults('_config', [
|
||||
'view' => 'admin::notifications.index',
|
||||
])->name('admin.notification.index');
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ use Webkul\User\Http\Controllers\SessionController;
|
|||
/**
|
||||
* Extra routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_url')], function () {
|
||||
/**
|
||||
* Tinymce file upload handler.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ use Webkul\Admin\Http\Controllers\Sales\TransactionController;
|
|||
/**
|
||||
* Sales routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::prefix('sales')->group(function () {
|
||||
/**
|
||||
* Orders routes.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ use Webkul\User\Http\Controllers\UserController;
|
|||
/**
|
||||
* Settings routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_url')], function () {
|
||||
/**
|
||||
* Roles routes.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
|
|
@ -1,25 +1,24 @@
|
|||
{
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "npm run development",
|
||||
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"watch-poll": "cross-env npm run watch -- --watch-poll --progress",
|
||||
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"prod": "npm run production",
|
||||
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"cross-env": "^6.0.3",
|
||||
"laravel-mix": "^5.0.0",
|
||||
"laravel-mix-merge-manifest": "^0.1.2",
|
||||
"sass": "^1.25.0",
|
||||
"sass-loader": "^8.0.2",
|
||||
"vue": "^2.6.12",
|
||||
"vue-loader": "^15.9.6",
|
||||
"vue-template-compiler": "^2.6.12"
|
||||
},
|
||||
"dependencies": {
|
||||
"vue-cal": "^3.10.1"
|
||||
}
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "npm run development",
|
||||
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"watch-poll": "cross-env npm run watch -- --watch-poll --progress",
|
||||
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"prod": "npm run production",
|
||||
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"cross-env": "^6.0.3",
|
||||
"laravel-mix": "^5.0.0",
|
||||
"laravel-mix-merge-manifest": "^0.1.2",
|
||||
"sass": "^1.25.0",
|
||||
"sass-loader": "^8.0.2",
|
||||
"vue": "^2.6.14",
|
||||
"vue-template-compiler": "^2.6.12"
|
||||
},
|
||||
"dependencies": {
|
||||
"vue-cal": "^3.10.1"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"/css/default-booking.css": "/css/default-booking.css?id=76de1f2b8e064c1e9043",
|
||||
"/css/velocity-booking.css": "/css/velocity-booking.css?id=481d94b621e06671752a",
|
||||
"/js/admin-booking.js": "/js/admin-booking.js?id=5cc56229ce47cbecd1be",
|
||||
"/js/admin-booking.js": "/js/admin-booking.js?id=c063601e89b1bdc6f82b",
|
||||
"/css/admin-booking.css": "/css/admin-booking.css?id=02be5e2fa5a499045cbe"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
/**
|
||||
* Sales routes.
|
||||
*/
|
||||
Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_url')], function () {
|
||||
Route::prefix('sales')->group(function () {
|
||||
/**
|
||||
* Booking routes.
|
||||
|
|
@ -14,4 +14,4 @@ Route::group(['middleware' => ['web', 'admin', 'admin_locale'], 'prefix' => conf
|
|||
|
||||
Route::get('/bookings/get', [Webkul\BookingProduct\Http\Controllers\Admin\BookingController::class, 'get'])->name('admin.sales.bookings.get');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -48,9 +48,9 @@ return [
|
|||
'price' => 'السعر',
|
||||
'quantity' => 'كمية',
|
||||
'description' => 'وصف',
|
||||
'special-price' => 'Special Price',
|
||||
'special-price-from' => 'Valid From',
|
||||
'special-price-to' => 'Valid Until',
|
||||
'special-price' => 'سعر خاص',
|
||||
'special-price-from' => 'صالح من تاريخ',
|
||||
'special-price-to' => 'صالح حتى',
|
||||
'charged-per' => 'اتهم لكل',
|
||||
'guest' => 'زائر',
|
||||
'table' => 'الطاولة',
|
||||
|
|
@ -64,7 +64,7 @@ return [
|
|||
'status' => 'الحالة',
|
||||
'open' => 'افتح',
|
||||
'close' => 'غلق',
|
||||
'time-error' => 'The to time must be greater than the from time.'
|
||||
'time-error' => 'يجب أن يكون وقت إلى وقت أكبر من وقت من وقت.'
|
||||
]
|
||||
],
|
||||
|
||||
|
|
@ -101,6 +101,7 @@ return [
|
|||
'book-an-appointment' => 'حجز موعد',
|
||||
'date' => 'تاريخ',
|
||||
'slot' => 'فتحة',
|
||||
'no-slots-available' => 'لا توجد فترات زمنية متاحة',
|
||||
'rent-an-item' => 'استئجار عنصر',
|
||||
'choose-rent-option' => 'اختر خيار الإيجار',
|
||||
'daily-basis' => 'الأساس اليومي',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,142 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Booking Information',
|
||||
'booking-type' => 'Booking Type',
|
||||
'default' => 'Default',
|
||||
'appointment-booking' => 'Appointment Booking',
|
||||
'event-booking' => 'Event Booking',
|
||||
'rental-booking' => 'Rental Booking',
|
||||
'table-booking' => 'Table Booking',
|
||||
'slot-duration' => 'Slot Duration (Mins)',
|
||||
'break-time' => 'Break Time b/w Slots (Mins)',
|
||||
'available-every-week' => 'Available Every Week',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'available-from' => 'Available From',
|
||||
'available-to' => 'Available To',
|
||||
'same-slot-all-days' => 'Same Slot All Days',
|
||||
'slot-has-quantity' => 'Slot has Quantity',
|
||||
'slots' => 'Slots',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'qty' => 'Qty',
|
||||
'add-slot' => 'Add Slot',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'renting-type' => 'Renting Type',
|
||||
'daily' => 'Daily Basis',
|
||||
'hourly' => 'Hourly Basis',
|
||||
'daily-hourly' => 'Both (Daily and Hourly Basis)',
|
||||
'daily-price' => 'Daily Price',
|
||||
'hourly-price' => 'Hourly Price',
|
||||
'location' => 'Location',
|
||||
'show-location' => 'Show Location',
|
||||
'event-start-date' => 'Event Start Date',
|
||||
'event-end-date' => 'Event End Date',
|
||||
'tickets' => 'Tickets',
|
||||
'add-ticket' => 'Add Ticket',
|
||||
'name' => 'Name',
|
||||
'price' => 'Price',
|
||||
'quantity' => 'Quantity',
|
||||
'description' => 'Description',
|
||||
'special-price' => 'Special Price',
|
||||
'special-price-from' => 'Valid From',
|
||||
'special-price-to' => 'Valid Until',
|
||||
'charged-per' => 'Charged Per',
|
||||
'guest' => 'Guest',
|
||||
'table' => 'Table',
|
||||
'prevent-scheduling-before' => 'Prevent Scheduling Before',
|
||||
'guest-limit' => 'Guest Limit Per Table',
|
||||
'guest-capacity' => 'Guest Capacity',
|
||||
'type' => 'Type',
|
||||
'many-bookings-for-one-day' => 'Many Bookings for One Day',
|
||||
'one-booking-for-many-days' => 'One Booking for Many Days',
|
||||
'day' => 'Day',
|
||||
'status' => 'Status',
|
||||
'open' => 'Open',
|
||||
'close' => 'Close',
|
||||
'time-error' => 'The to time must be greater than the from time.'
|
||||
]
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'bookings' => [
|
||||
'title' => 'Bookings',
|
||||
]
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'from' => 'From',
|
||||
'to' => 'To'
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'booking-information' => 'Booking Information',
|
||||
'location' => 'Location',
|
||||
'contact' => 'Contact',
|
||||
'email' => 'Email',
|
||||
'slot-duration' => 'Slot Duration',
|
||||
'slot-duration-in-minutes' => ':minutes Minutes',
|
||||
'today-availability' => 'Today Availability',
|
||||
'slots-for-all-days' => 'Show for all days',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'closed' => 'Closed',
|
||||
'book-an-appointment' => 'Book an Appointment',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Rent an Item',
|
||||
'choose-rent-option' => 'Choose Rent Option',
|
||||
'daily-basis' => 'Daily Basis',
|
||||
'hourly-basis' => 'Hourly Basis',
|
||||
'select-time-slot'=> 'Select time slot',
|
||||
'select-slot' => 'Select Slot',
|
||||
'select-date' => 'Select date',
|
||||
'select-rent-time' => 'Select Rent Time',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'book-a-table' => 'Book a Table',
|
||||
'special-notes' => 'Special Request/Notes',
|
||||
'event-on' => 'Event On',
|
||||
'book-your-ticket' => 'Book Your Ticket',
|
||||
'per-ticket-price' => ':price Per Ticket',
|
||||
'number-of-tickets' => 'Number of Tickets',
|
||||
'total-tickets' => 'Total Tickets',
|
||||
'base-price' => 'Base Price',
|
||||
'total-price' => 'Total Price',
|
||||
'base-price-info' => '(This will be apply to each type of ticket for each quantity)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Rent Type',
|
||||
'daily' => 'Daily',
|
||||
'hourly' => 'Hourly',
|
||||
'event-ticket' => 'Event Ticket',
|
||||
'event-from' => 'Event From',
|
||||
'event-till' => 'Event Till',
|
||||
'rent-type' => 'Rent Type',
|
||||
'rent-from' => 'Rent From',
|
||||
'rent-till' => 'Rent Till',
|
||||
'booking-from' => 'Booking From',
|
||||
'booking-till' => 'Booking Till',
|
||||
'special-note' => 'Special Request/Notes',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,142 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Booking Information',
|
||||
'booking-type' => 'Booking Type',
|
||||
'default' => 'Default',
|
||||
'appointment-booking' => 'Appointment Booking',
|
||||
'event-booking' => 'Event Booking',
|
||||
'rental-booking' => 'Rental Booking',
|
||||
'table-booking' => 'Table Booking',
|
||||
'slot-duration' => 'Slot Duration (Mins)',
|
||||
'break-time' => 'Break Time b/w Slots (Mins)',
|
||||
'available-every-week' => 'Available Every Week',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'available-from' => 'Available From',
|
||||
'available-to' => 'Available To',
|
||||
'same-slot-all-days' => 'Same Slot All Days',
|
||||
'slot-has-quantity' => 'Slot has Quantity',
|
||||
'slots' => 'Slots',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'qty' => 'Qty',
|
||||
'add-slot' => 'Add Slot',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'renting-type' => 'Renting Type',
|
||||
'daily' => 'Daily Basis',
|
||||
'hourly' => 'Hourly Basis',
|
||||
'daily-hourly' => 'Both (Daily and Hourly Basis)',
|
||||
'daily-price' => 'Daily Price',
|
||||
'hourly-price' => 'Hourly Price',
|
||||
'location' => 'Location',
|
||||
'show-location' => 'Show Location',
|
||||
'event-start-date' => 'Event Start Date',
|
||||
'event-end-date' => 'Event End Date',
|
||||
'tickets' => 'Tickets',
|
||||
'add-ticket' => 'Add Ticket',
|
||||
'name' => 'Name',
|
||||
'price' => 'Price',
|
||||
'quantity' => 'Quantity',
|
||||
'description' => 'Description',
|
||||
'special-price' => 'Special Price',
|
||||
'special-price-from' => 'Valid From',
|
||||
'special-price-to' => 'Valid Until',
|
||||
'charged-per' => 'Charged Per',
|
||||
'guest' => 'Guest',
|
||||
'table' => 'Table',
|
||||
'prevent-scheduling-before' => 'Prevent Scheduling Before',
|
||||
'guest-limit' => 'Guest Limit Per Table',
|
||||
'guest-capacity' => 'Guest Capacity',
|
||||
'type' => 'Type',
|
||||
'many-bookings-for-one-day' => 'Many Bookings for One Day',
|
||||
'one-booking-for-many-days' => 'One Booking for Many Days',
|
||||
'day' => 'Day',
|
||||
'status' => 'Status',
|
||||
'open' => 'Open',
|
||||
'close' => 'Close',
|
||||
'time-error' => 'The to time must be greater than the from time.'
|
||||
]
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'bookings' => [
|
||||
'title' => 'Bookings',
|
||||
]
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'from' => 'From',
|
||||
'to' => 'To'
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'booking-information' => 'Booking Information',
|
||||
'location' => 'Location',
|
||||
'contact' => 'Contact',
|
||||
'email' => 'Email',
|
||||
'slot-duration' => 'Slot Duration',
|
||||
'slot-duration-in-minutes' => ':minutes Minutes',
|
||||
'today-availability' => 'Today Availability',
|
||||
'slots-for-all-days' => 'Show for all days',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'closed' => 'Closed',
|
||||
'book-an-appointment' => 'Book an Appointment',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Rent an Item',
|
||||
'choose-rent-option' => 'Choose Rent Option',
|
||||
'daily-basis' => 'Daily Basis',
|
||||
'hourly-basis' => 'Hourly Basis',
|
||||
'select-time-slot'=> 'Select time slot',
|
||||
'select-slot' => 'Select Slot',
|
||||
'select-date' => 'Select date',
|
||||
'select-rent-time' => 'Select Rent Time',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'book-a-table' => 'Book a Table',
|
||||
'special-notes' => 'Special Request/Notes',
|
||||
'event-on' => 'Event On',
|
||||
'book-your-ticket' => 'Book Your Ticket',
|
||||
'per-ticket-price' => ':price Per Ticket',
|
||||
'number-of-tickets' => 'Number of Tickets',
|
||||
'total-tickets' => 'Total Tickets',
|
||||
'base-price' => 'Base Price',
|
||||
'total-price' => 'Total Price',
|
||||
'base-price-info' => '(This will be apply to each type of ticket for each quantity)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Rent Type',
|
||||
'daily' => 'Daily',
|
||||
'hourly' => 'Hourly',
|
||||
'event-ticket' => 'Event Ticket',
|
||||
'event-from' => 'Event From',
|
||||
'event-till' => 'Event Till',
|
||||
'rent-type' => 'Rent Type',
|
||||
'rent-from' => 'Rent From',
|
||||
'rent-till' => 'Rent Till',
|
||||
'booking-from' => 'Booking From',
|
||||
'booking-till' => 'Booking Till',
|
||||
'special-note' => 'Special Request/Notes',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -101,6 +101,7 @@ return [
|
|||
'book-an-appointment' => 'Book an Appointment',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Rent an Item',
|
||||
'choose-rent-option' => 'Choose Rent Option',
|
||||
'daily-basis' => 'Daily Basis',
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ return [
|
|||
'book-an-appointment' => 'Reservar una Cita',
|
||||
'date' => 'Fecha',
|
||||
'slot' => 'Horario',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Alquilar un Artículo',
|
||||
'choose-rent-option' => 'Elija la Opción de Alquiler',
|
||||
'daily-basis' => 'Diariamente',
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ return [
|
|||
'book-an-appointment' => 'قرار ملاقات را رزرو کنید',
|
||||
'date' => 'تاریخ',
|
||||
'slot' => 'اسلات',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'اجاره یک مورد',
|
||||
'choose-rent-option' => 'گزینه اجاره را انتخاب کنید',
|
||||
'daily-basis' => 'به صورت روزانه',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,142 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Booking Information',
|
||||
'booking-type' => 'Booking Type',
|
||||
'default' => 'Default',
|
||||
'appointment-booking' => 'Appointment Booking',
|
||||
'event-booking' => 'Event Booking',
|
||||
'rental-booking' => 'Rental Booking',
|
||||
'table-booking' => 'Table Booking',
|
||||
'slot-duration' => 'Slot Duration (Mins)',
|
||||
'break-time' => 'Break Time b/w Slots (Mins)',
|
||||
'available-every-week' => 'Available Every Week',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'available-from' => 'Available From',
|
||||
'available-to' => 'Available To',
|
||||
'same-slot-all-days' => 'Same Slot All Days',
|
||||
'slot-has-quantity' => 'Slot has Quantity',
|
||||
'slots' => 'Slots',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'qty' => 'Qty',
|
||||
'add-slot' => 'Add Slot',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'renting-type' => 'Renting Type',
|
||||
'daily' => 'Daily Basis',
|
||||
'hourly' => 'Hourly Basis',
|
||||
'daily-hourly' => 'Both (Daily and Hourly Basis)',
|
||||
'daily-price' => 'Daily Price',
|
||||
'hourly-price' => 'Hourly Price',
|
||||
'location' => 'Location',
|
||||
'show-location' => 'Show Location',
|
||||
'event-start-date' => 'Event Start Date',
|
||||
'event-end-date' => 'Event End Date',
|
||||
'tickets' => 'Tickets',
|
||||
'add-ticket' => 'Add Ticket',
|
||||
'name' => 'Name',
|
||||
'price' => 'Price',
|
||||
'quantity' => 'Quantity',
|
||||
'description' => 'Description',
|
||||
'special-price' => 'Special Price',
|
||||
'special-price-from' => 'Valid From',
|
||||
'special-price-to' => 'Valid Until',
|
||||
'charged-per' => 'Charged Per',
|
||||
'guest' => 'Guest',
|
||||
'table' => 'Table',
|
||||
'prevent-scheduling-before' => 'Prevent Scheduling Before',
|
||||
'guest-limit' => 'Guest Limit Per Table',
|
||||
'guest-capacity' => 'Guest Capacity',
|
||||
'type' => 'Type',
|
||||
'many-bookings-for-one-day' => 'Many Bookings for One Day',
|
||||
'one-booking-for-many-days' => 'One Booking for Many Days',
|
||||
'day' => 'Day',
|
||||
'status' => 'Status',
|
||||
'open' => 'Open',
|
||||
'close' => 'Close',
|
||||
'time-error' => 'The to time must be greater than the from time.'
|
||||
]
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'bookings' => [
|
||||
'title' => 'Bookings',
|
||||
]
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'from' => 'From',
|
||||
'to' => 'To'
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'booking-information' => 'Booking Information',
|
||||
'location' => 'Location',
|
||||
'contact' => 'Contact',
|
||||
'email' => 'Email',
|
||||
'slot-duration' => 'Slot Duration',
|
||||
'slot-duration-in-minutes' => ':minutes Minutes',
|
||||
'today-availability' => 'Today Availability',
|
||||
'slots-for-all-days' => 'Show for all days',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'closed' => 'Closed',
|
||||
'book-an-appointment' => 'Book an Appointment',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Rent an Item',
|
||||
'choose-rent-option' => 'Choose Rent Option',
|
||||
'daily-basis' => 'Daily Basis',
|
||||
'hourly-basis' => 'Hourly Basis',
|
||||
'select-time-slot'=> 'Select time slot',
|
||||
'select-slot' => 'Select Slot',
|
||||
'select-date' => 'Select date',
|
||||
'select-rent-time' => 'Select Rent Time',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'book-a-table' => 'Book a Table',
|
||||
'special-notes' => 'Special Request/Notes',
|
||||
'event-on' => 'Event On',
|
||||
'book-your-ticket' => 'Book Your Ticket',
|
||||
'per-ticket-price' => ':price Per Ticket',
|
||||
'number-of-tickets' => 'Number of Tickets',
|
||||
'total-tickets' => 'Total Tickets',
|
||||
'base-price' => 'Base Price',
|
||||
'total-price' => 'Total Price',
|
||||
'base-price-info' => '(This will be apply to each type of ticket for each quantity)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Rent Type',
|
||||
'daily' => 'Daily',
|
||||
'hourly' => 'Hourly',
|
||||
'event-ticket' => 'Event Ticket',
|
||||
'event-from' => 'Event From',
|
||||
'event-till' => 'Event Till',
|
||||
'rent-type' => 'Rent Type',
|
||||
'rent-from' => 'Rent From',
|
||||
'rent-till' => 'Rent Till',
|
||||
'booking-from' => 'Booking From',
|
||||
'booking-till' => 'Booking Till',
|
||||
'special-note' => 'Special Request/Notes',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,142 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Booking Information',
|
||||
'booking-type' => 'Booking Type',
|
||||
'default' => 'Default',
|
||||
'appointment-booking' => 'Appointment Booking',
|
||||
'event-booking' => 'Event Booking',
|
||||
'rental-booking' => 'Rental Booking',
|
||||
'table-booking' => 'Table Booking',
|
||||
'slot-duration' => 'Slot Duration (Mins)',
|
||||
'break-time' => 'Break Time b/w Slots (Mins)',
|
||||
'available-every-week' => 'Available Every Week',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'available-from' => 'Available From',
|
||||
'available-to' => 'Available To',
|
||||
'same-slot-all-days' => 'Same Slot All Days',
|
||||
'slot-has-quantity' => 'Slot has Quantity',
|
||||
'slots' => 'Slots',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'qty' => 'Qty',
|
||||
'add-slot' => 'Add Slot',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'renting-type' => 'Renting Type',
|
||||
'daily' => 'Daily Basis',
|
||||
'hourly' => 'Hourly Basis',
|
||||
'daily-hourly' => 'Both (Daily and Hourly Basis)',
|
||||
'daily-price' => 'Daily Price',
|
||||
'hourly-price' => 'Hourly Price',
|
||||
'location' => 'Location',
|
||||
'show-location' => 'Show Location',
|
||||
'event-start-date' => 'Event Start Date',
|
||||
'event-end-date' => 'Event End Date',
|
||||
'tickets' => 'Tickets',
|
||||
'add-ticket' => 'Add Ticket',
|
||||
'name' => 'Name',
|
||||
'price' => 'Price',
|
||||
'quantity' => 'Quantity',
|
||||
'description' => 'Description',
|
||||
'special-price' => 'Special Price',
|
||||
'special-price-from' => 'Valid From',
|
||||
'special-price-to' => 'Valid Until',
|
||||
'charged-per' => 'Charged Per',
|
||||
'guest' => 'Guest',
|
||||
'table' => 'Table',
|
||||
'prevent-scheduling-before' => 'Prevent Scheduling Before',
|
||||
'guest-limit' => 'Guest Limit Per Table',
|
||||
'guest-capacity' => 'Guest Capacity',
|
||||
'type' => 'Type',
|
||||
'many-bookings-for-one-day' => 'Many Bookings for One Day',
|
||||
'one-booking-for-many-days' => 'One Booking for Many Days',
|
||||
'day' => 'Day',
|
||||
'status' => 'Status',
|
||||
'open' => 'Open',
|
||||
'close' => 'Close',
|
||||
'time-error' => 'The to time must be greater than the from time.'
|
||||
]
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'bookings' => [
|
||||
'title' => 'Bookings',
|
||||
]
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'from' => 'From',
|
||||
'to' => 'To'
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'booking-information' => 'Booking Information',
|
||||
'location' => 'Location',
|
||||
'contact' => 'Contact',
|
||||
'email' => 'Email',
|
||||
'slot-duration' => 'Slot Duration',
|
||||
'slot-duration-in-minutes' => ':minutes Minutes',
|
||||
'today-availability' => 'Today Availability',
|
||||
'slots-for-all-days' => 'Show for all days',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'closed' => 'Closed',
|
||||
'book-an-appointment' => 'Book an Appointment',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Rent an Item',
|
||||
'choose-rent-option' => 'Choose Rent Option',
|
||||
'daily-basis' => 'Daily Basis',
|
||||
'hourly-basis' => 'Hourly Basis',
|
||||
'select-time-slot'=> 'Select time slot',
|
||||
'select-slot' => 'Select Slot',
|
||||
'select-date' => 'Select date',
|
||||
'select-rent-time' => 'Select Rent Time',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'book-a-table' => 'Book a Table',
|
||||
'special-notes' => 'Special Request/Notes',
|
||||
'event-on' => 'Event On',
|
||||
'book-your-ticket' => 'Book Your Ticket',
|
||||
'per-ticket-price' => ':price Per Ticket',
|
||||
'number-of-tickets' => 'Number of Tickets',
|
||||
'total-tickets' => 'Total Tickets',
|
||||
'base-price' => 'Base Price',
|
||||
'total-price' => 'Total Price',
|
||||
'base-price-info' => '(This will be apply to each type of ticket for each quantity)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Rent Type',
|
||||
'daily' => 'Daily',
|
||||
'hourly' => 'Hourly',
|
||||
'event-ticket' => 'Event Ticket',
|
||||
'event-from' => 'Event From',
|
||||
'event-till' => 'Event Till',
|
||||
'rent-type' => 'Rent Type',
|
||||
'rent-from' => 'Rent From',
|
||||
'rent-till' => 'Rent Till',
|
||||
'booking-from' => 'Booking From',
|
||||
'booking-till' => 'Booking Till',
|
||||
'special-note' => 'Special Request/Notes',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -101,6 +101,7 @@ return [
|
|||
'book-an-appointment' => 'एक अपॉइंटमेंट बुक करें',
|
||||
'date' => 'तारीख',
|
||||
'slot' => 'स्लॉट',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'एक वस्तु किराए पर लें',
|
||||
'choose-rent-option' => 'किराया विकल्प चुनें',
|
||||
'daily-basis' => 'दैनिक आधार पर',
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ return [
|
|||
'same-slot-all-days' => 'Stesso Slot tutti i giorni',
|
||||
'slot-has-quantity' => 'Slot ha quantità',
|
||||
'slots' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'from' => 'Da',
|
||||
'to' => 'A',
|
||||
'qty' => 'Qtà',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,142 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Booking Information',
|
||||
'booking-type' => 'Booking Type',
|
||||
'default' => 'Default',
|
||||
'appointment-booking' => 'Appointment Booking',
|
||||
'event-booking' => 'Event Booking',
|
||||
'rental-booking' => 'Rental Booking',
|
||||
'table-booking' => 'Table Booking',
|
||||
'slot-duration' => 'Slot Duration (Mins)',
|
||||
'break-time' => 'Break Time b/w Slots (Mins)',
|
||||
'available-every-week' => 'Available Every Week',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'available-from' => 'Available From',
|
||||
'available-to' => 'Available To',
|
||||
'same-slot-all-days' => 'Same Slot All Days',
|
||||
'slot-has-quantity' => 'Slot has Quantity',
|
||||
'slots' => 'Slots',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'qty' => 'Qty',
|
||||
'add-slot' => 'Add Slot',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'renting-type' => 'Renting Type',
|
||||
'daily' => 'Daily Basis',
|
||||
'hourly' => 'Hourly Basis',
|
||||
'daily-hourly' => 'Both (Daily and Hourly Basis)',
|
||||
'daily-price' => 'Daily Price',
|
||||
'hourly-price' => 'Hourly Price',
|
||||
'location' => 'Location',
|
||||
'show-location' => 'Show Location',
|
||||
'event-start-date' => 'Event Start Date',
|
||||
'event-end-date' => 'Event End Date',
|
||||
'tickets' => 'Tickets',
|
||||
'add-ticket' => 'Add Ticket',
|
||||
'name' => 'Name',
|
||||
'price' => 'Price',
|
||||
'quantity' => 'Quantity',
|
||||
'description' => 'Description',
|
||||
'special-price' => 'Special Price',
|
||||
'special-price-from' => 'Valid From',
|
||||
'special-price-to' => 'Valid Until',
|
||||
'charged-per' => 'Charged Per',
|
||||
'guest' => 'Guest',
|
||||
'table' => 'Table',
|
||||
'prevent-scheduling-before' => 'Prevent Scheduling Before',
|
||||
'guest-limit' => 'Guest Limit Per Table',
|
||||
'guest-capacity' => 'Guest Capacity',
|
||||
'type' => 'Type',
|
||||
'many-bookings-for-one-day' => 'Many Bookings for One Day',
|
||||
'one-booking-for-many-days' => 'One Booking for Many Days',
|
||||
'day' => 'Day',
|
||||
'status' => 'Status',
|
||||
'open' => 'Open',
|
||||
'close' => 'Close',
|
||||
'time-error' => 'The to time must be greater than the from time.'
|
||||
]
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'bookings' => [
|
||||
'title' => 'Bookings',
|
||||
]
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'from' => 'From',
|
||||
'to' => 'To'
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'booking-information' => 'Booking Information',
|
||||
'location' => 'Location',
|
||||
'contact' => 'Contact',
|
||||
'email' => 'Email',
|
||||
'slot-duration' => 'Slot Duration',
|
||||
'slot-duration-in-minutes' => ':minutes Minutes',
|
||||
'today-availability' => 'Today Availability',
|
||||
'slots-for-all-days' => 'Show for all days',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'closed' => 'Closed',
|
||||
'book-an-appointment' => 'Book an Appointment',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Rent an Item',
|
||||
'choose-rent-option' => 'Choose Rent Option',
|
||||
'daily-basis' => 'Daily Basis',
|
||||
'hourly-basis' => 'Hourly Basis',
|
||||
'select-time-slot'=> 'Select time slot',
|
||||
'select-slot' => 'Select Slot',
|
||||
'select-date' => 'Select date',
|
||||
'select-rent-time' => 'Select Rent Time',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'book-a-table' => 'Book a Table',
|
||||
'special-notes' => 'Special Request/Notes',
|
||||
'event-on' => 'Event On',
|
||||
'book-your-ticket' => 'Book Your Ticket',
|
||||
'per-ticket-price' => ':price Per Ticket',
|
||||
'number-of-tickets' => 'Number of Tickets',
|
||||
'total-tickets' => 'Total Tickets',
|
||||
'base-price' => 'Base Price',
|
||||
'total-price' => 'Total Price',
|
||||
'base-price-info' => '(This will be apply to each type of ticket for each quantity)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Rent Type',
|
||||
'daily' => 'Daily',
|
||||
'hourly' => 'Hourly',
|
||||
'event-ticket' => 'Event Ticket',
|
||||
'event-from' => 'Event From',
|
||||
'event-till' => 'Event Till',
|
||||
'rent-type' => 'Rent Type',
|
||||
'rent-from' => 'Rent From',
|
||||
'rent-till' => 'Rent Till',
|
||||
'booking-from' => 'Booking From',
|
||||
'booking-till' => 'Booking Till',
|
||||
'special-note' => 'Special Request/Notes',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -101,6 +101,7 @@ return [
|
|||
'book-an-appointment' => 'Een afspraak maken',
|
||||
'date' => 'Datum',
|
||||
'slot' => 'Sleuf',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Huur een item',
|
||||
'choose-rent-option' => 'Kies Huuroptie',
|
||||
'daily-basis' => 'Dagelijks',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,142 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Booking Information',
|
||||
'booking-type' => 'Booking Type',
|
||||
'default' => 'Default',
|
||||
'appointment-booking' => 'Appointment Booking',
|
||||
'event-booking' => 'Event Booking',
|
||||
'rental-booking' => 'Rental Booking',
|
||||
'table-booking' => 'Table Booking',
|
||||
'slot-duration' => 'Slot Duration (Mins)',
|
||||
'break-time' => 'Break Time b/w Slots (Mins)',
|
||||
'available-every-week' => 'Available Every Week',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'available-from' => 'Available From',
|
||||
'available-to' => 'Available To',
|
||||
'same-slot-all-days' => 'Same Slot All Days',
|
||||
'slot-has-quantity' => 'Slot has Quantity',
|
||||
'slots' => 'Slots',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'qty' => 'Qty',
|
||||
'add-slot' => 'Add Slot',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'renting-type' => 'Renting Type',
|
||||
'daily' => 'Daily Basis',
|
||||
'hourly' => 'Hourly Basis',
|
||||
'daily-hourly' => 'Both (Daily and Hourly Basis)',
|
||||
'daily-price' => 'Daily Price',
|
||||
'hourly-price' => 'Hourly Price',
|
||||
'location' => 'Location',
|
||||
'show-location' => 'Show Location',
|
||||
'event-start-date' => 'Event Start Date',
|
||||
'event-end-date' => 'Event End Date',
|
||||
'tickets' => 'Tickets',
|
||||
'add-ticket' => 'Add Ticket',
|
||||
'name' => 'Name',
|
||||
'price' => 'Price',
|
||||
'quantity' => 'Quantity',
|
||||
'description' => 'Description',
|
||||
'special-price' => 'Special Price',
|
||||
'special-price-from' => 'Valid From',
|
||||
'special-price-to' => 'Valid Until',
|
||||
'charged-per' => 'Charged Per',
|
||||
'guest' => 'Guest',
|
||||
'table' => 'Table',
|
||||
'prevent-scheduling-before' => 'Prevent Scheduling Before',
|
||||
'guest-limit' => 'Guest Limit Per Table',
|
||||
'guest-capacity' => 'Guest Capacity',
|
||||
'type' => 'Type',
|
||||
'many-bookings-for-one-day' => 'Many Bookings for One Day',
|
||||
'one-booking-for-many-days' => 'One Booking for Many Days',
|
||||
'day' => 'Day',
|
||||
'status' => 'Status',
|
||||
'open' => 'Open',
|
||||
'close' => 'Close',
|
||||
'time-error' => 'The to time must be greater than the from time.'
|
||||
]
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'bookings' => [
|
||||
'title' => 'Bookings',
|
||||
]
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'from' => 'From',
|
||||
'to' => 'To'
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'booking-information' => 'Booking Information',
|
||||
'location' => 'Location',
|
||||
'contact' => 'Contact',
|
||||
'email' => 'Email',
|
||||
'slot-duration' => 'Slot Duration',
|
||||
'slot-duration-in-minutes' => ':minutes Minutes',
|
||||
'today-availability' => 'Today Availability',
|
||||
'slots-for-all-days' => 'Show for all days',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'closed' => 'Closed',
|
||||
'book-an-appointment' => 'Book an Appointment',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Rent an Item',
|
||||
'choose-rent-option' => 'Choose Rent Option',
|
||||
'daily-basis' => 'Daily Basis',
|
||||
'hourly-basis' => 'Hourly Basis',
|
||||
'select-time-slot'=> 'Select time slot',
|
||||
'select-slot' => 'Select Slot',
|
||||
'select-date' => 'Select date',
|
||||
'select-rent-time' => 'Select Rent Time',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'book-a-table' => 'Book a Table',
|
||||
'special-notes' => 'Special Request/Notes',
|
||||
'event-on' => 'Event On',
|
||||
'book-your-ticket' => 'Book Your Ticket',
|
||||
'per-ticket-price' => ':price Per Ticket',
|
||||
'number-of-tickets' => 'Number of Tickets',
|
||||
'total-tickets' => 'Total Tickets',
|
||||
'base-price' => 'Base Price',
|
||||
'total-price' => 'Total Price',
|
||||
'base-price-info' => '(This will be apply to each type of ticket for each quantity)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Rent Type',
|
||||
'daily' => 'Daily',
|
||||
'hourly' => 'Hourly',
|
||||
'event-ticket' => 'Event Ticket',
|
||||
'event-from' => 'Event From',
|
||||
'event-till' => 'Event Till',
|
||||
'rent-type' => 'Rent Type',
|
||||
'rent-from' => 'Rent From',
|
||||
'rent-till' => 'Rent Till',
|
||||
'booking-from' => 'Booking From',
|
||||
'booking-till' => 'Booking Till',
|
||||
'special-note' => 'Special Request/Notes',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -101,6 +101,7 @@ return [
|
|||
'book-an-appointment' => 'Marque uma consulta',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Alugar um item',
|
||||
'choose-rent-option' => 'Escolha a opção de aluguel',
|
||||
'daily-basis' => 'Diariamente',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,142 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Booking Information',
|
||||
'booking-type' => 'Booking Type',
|
||||
'default' => 'Default',
|
||||
'appointment-booking' => 'Appointment Booking',
|
||||
'event-booking' => 'Event Booking',
|
||||
'rental-booking' => 'Rental Booking',
|
||||
'table-booking' => 'Table Booking',
|
||||
'slot-duration' => 'Slot Duration (Mins)',
|
||||
'break-time' => 'Break Time b/w Slots (Mins)',
|
||||
'available-every-week' => 'Available Every Week',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'available-from' => 'Available From',
|
||||
'available-to' => 'Available To',
|
||||
'same-slot-all-days' => 'Same Slot All Days',
|
||||
'slot-has-quantity' => 'Slot has Quantity',
|
||||
'slots' => 'Slots',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'qty' => 'Qty',
|
||||
'add-slot' => 'Add Slot',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'renting-type' => 'Renting Type',
|
||||
'daily' => 'Daily Basis',
|
||||
'hourly' => 'Hourly Basis',
|
||||
'daily-hourly' => 'Both (Daily and Hourly Basis)',
|
||||
'daily-price' => 'Daily Price',
|
||||
'hourly-price' => 'Hourly Price',
|
||||
'location' => 'Location',
|
||||
'show-location' => 'Show Location',
|
||||
'event-start-date' => 'Event Start Date',
|
||||
'event-end-date' => 'Event End Date',
|
||||
'tickets' => 'Tickets',
|
||||
'add-ticket' => 'Add Ticket',
|
||||
'name' => 'Name',
|
||||
'price' => 'Price',
|
||||
'quantity' => 'Quantity',
|
||||
'description' => 'Description',
|
||||
'special-price' => 'Special Price',
|
||||
'special-price-from' => 'Valid From',
|
||||
'special-price-to' => 'Valid Until',
|
||||
'charged-per' => 'Charged Per',
|
||||
'guest' => 'Guest',
|
||||
'table' => 'Table',
|
||||
'prevent-scheduling-before' => 'Prevent Scheduling Before',
|
||||
'guest-limit' => 'Guest Limit Per Table',
|
||||
'guest-capacity' => 'Guest Capacity',
|
||||
'type' => 'Type',
|
||||
'many-bookings-for-one-day' => 'Many Bookings for One Day',
|
||||
'one-booking-for-many-days' => 'One Booking for Many Days',
|
||||
'day' => 'Day',
|
||||
'status' => 'Status',
|
||||
'open' => 'Open',
|
||||
'close' => 'Close',
|
||||
'time-error' => 'The to time must be greater than the from time.'
|
||||
]
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'bookings' => [
|
||||
'title' => 'Bookings',
|
||||
]
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'from' => 'From',
|
||||
'to' => 'To'
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'booking-information' => 'Booking Information',
|
||||
'location' => 'Location',
|
||||
'contact' => 'Contact',
|
||||
'email' => 'Email',
|
||||
'slot-duration' => 'Slot Duration',
|
||||
'slot-duration-in-minutes' => ':minutes Minutes',
|
||||
'today-availability' => 'Today Availability',
|
||||
'slots-for-all-days' => 'Show for all days',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'closed' => 'Closed',
|
||||
'book-an-appointment' => 'Book an Appointment',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Rent an Item',
|
||||
'choose-rent-option' => 'Choose Rent Option',
|
||||
'daily-basis' => 'Daily Basis',
|
||||
'hourly-basis' => 'Hourly Basis',
|
||||
'select-time-slot'=> 'Select time slot',
|
||||
'select-slot' => 'Select Slot',
|
||||
'select-date' => 'Select date',
|
||||
'select-rent-time' => 'Select Rent Time',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'book-a-table' => 'Book a Table',
|
||||
'special-notes' => 'Special Request/Notes',
|
||||
'event-on' => 'Event On',
|
||||
'book-your-ticket' => 'Book Your Ticket',
|
||||
'per-ticket-price' => ':price Per Ticket',
|
||||
'number-of-tickets' => 'Number of Tickets',
|
||||
'total-tickets' => 'Total Tickets',
|
||||
'base-price' => 'Base Price',
|
||||
'total-price' => 'Total Price',
|
||||
'base-price-info' => '(This will be apply to each type of ticket for each quantity)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Rent Type',
|
||||
'daily' => 'Daily',
|
||||
'hourly' => 'Hourly',
|
||||
'event-ticket' => 'Event Ticket',
|
||||
'event-from' => 'Event From',
|
||||
'event-till' => 'Event Till',
|
||||
'rent-type' => 'Rent Type',
|
||||
'rent-from' => 'Rent From',
|
||||
'rent-till' => 'Rent Till',
|
||||
'booking-from' => 'Booking From',
|
||||
'booking-till' => 'Booking Till',
|
||||
'special-note' => 'Special Request/Notes',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,142 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Booking Information',
|
||||
'booking-type' => 'Booking Type',
|
||||
'default' => 'Default',
|
||||
'appointment-booking' => 'Appointment Booking',
|
||||
'event-booking' => 'Event Booking',
|
||||
'rental-booking' => 'Rental Booking',
|
||||
'table-booking' => 'Table Booking',
|
||||
'slot-duration' => 'Slot Duration (Mins)',
|
||||
'break-time' => 'Break Time b/w Slots (Mins)',
|
||||
'available-every-week' => 'Available Every Week',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'available-from' => 'Available From',
|
||||
'available-to' => 'Available To',
|
||||
'same-slot-all-days' => 'Same Slot All Days',
|
||||
'slot-has-quantity' => 'Slot has Quantity',
|
||||
'slots' => 'Slots',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'qty' => 'Qty',
|
||||
'add-slot' => 'Add Slot',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'renting-type' => 'Renting Type',
|
||||
'daily' => 'Daily Basis',
|
||||
'hourly' => 'Hourly Basis',
|
||||
'daily-hourly' => 'Both (Daily and Hourly Basis)',
|
||||
'daily-price' => 'Daily Price',
|
||||
'hourly-price' => 'Hourly Price',
|
||||
'location' => 'Location',
|
||||
'show-location' => 'Show Location',
|
||||
'event-start-date' => 'Event Start Date',
|
||||
'event-end-date' => 'Event End Date',
|
||||
'tickets' => 'Tickets',
|
||||
'add-ticket' => 'Add Ticket',
|
||||
'name' => 'Name',
|
||||
'price' => 'Price',
|
||||
'quantity' => 'Quantity',
|
||||
'description' => 'Description',
|
||||
'special-price' => 'Special Price',
|
||||
'special-price-from' => 'Valid From',
|
||||
'special-price-to' => 'Valid Until',
|
||||
'charged-per' => 'Charged Per',
|
||||
'guest' => 'Guest',
|
||||
'table' => 'Table',
|
||||
'prevent-scheduling-before' => 'Prevent Scheduling Before',
|
||||
'guest-limit' => 'Guest Limit Per Table',
|
||||
'guest-capacity' => 'Guest Capacity',
|
||||
'type' => 'Type',
|
||||
'many-bookings-for-one-day' => 'Many Bookings for One Day',
|
||||
'one-booking-for-many-days' => 'One Booking for Many Days',
|
||||
'day' => 'Day',
|
||||
'status' => 'Status',
|
||||
'open' => 'Open',
|
||||
'close' => 'Close',
|
||||
'time-error' => 'The to time must be greater than the from time.'
|
||||
]
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'bookings' => [
|
||||
'title' => 'Bookings',
|
||||
]
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'from' => 'From',
|
||||
'to' => 'To'
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'booking-information' => 'Booking Information',
|
||||
'location' => 'Location',
|
||||
'contact' => 'Contact',
|
||||
'email' => 'Email',
|
||||
'slot-duration' => 'Slot Duration',
|
||||
'slot-duration-in-minutes' => ':minutes Minutes',
|
||||
'today-availability' => 'Today Availability',
|
||||
'slots-for-all-days' => 'Show for all days',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'Monday',
|
||||
'tuesday' => 'Tuesday',
|
||||
'wednesday' => 'Wednesday',
|
||||
'thursday' => 'Thursday',
|
||||
'friday' => 'Friday',
|
||||
'saturday' => 'Saturday',
|
||||
'closed' => 'Closed',
|
||||
'book-an-appointment' => 'Book an Appointment',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Rent an Item',
|
||||
'choose-rent-option' => 'Choose Rent Option',
|
||||
'daily-basis' => 'Daily Basis',
|
||||
'hourly-basis' => 'Hourly Basis',
|
||||
'select-time-slot'=> 'Select time slot',
|
||||
'select-slot' => 'Select Slot',
|
||||
'select-date' => 'Select date',
|
||||
'select-rent-time' => 'Select Rent Time',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'book-a-table' => 'Book a Table',
|
||||
'special-notes' => 'Special Request/Notes',
|
||||
'event-on' => 'Event On',
|
||||
'book-your-ticket' => 'Book Your Ticket',
|
||||
'per-ticket-price' => ':price Per Ticket',
|
||||
'number-of-tickets' => 'Number of Tickets',
|
||||
'total-tickets' => 'Total Tickets',
|
||||
'base-price' => 'Base Price',
|
||||
'total-price' => 'Total Price',
|
||||
'base-price-info' => '(This will be apply to each type of ticket for each quantity)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Rent Type',
|
||||
'daily' => 'Daily',
|
||||
'hourly' => 'Hourly',
|
||||
'event-ticket' => 'Event Ticket',
|
||||
'event-from' => 'Event From',
|
||||
'event-till' => 'Event Till',
|
||||
'rent-type' => 'Rent Type',
|
||||
'rent-from' => 'Rent From',
|
||||
'rent-till' => 'Rent Till',
|
||||
'booking-from' => 'Booking From',
|
||||
'booking-till' => 'Booking Till',
|
||||
'special-note' => 'Special Request/Notes',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -101,6 +101,7 @@ return [
|
|||
'book-an-appointment' => 'Randevu Al',
|
||||
'date' => 'Tarih',
|
||||
'slot' => 'Slot',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => 'Eşya Kiralama',
|
||||
'choose-rent-option' => 'Kiralama Seçeneğini Seçin',
|
||||
'daily-basis' => 'Günlük Bazında',
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ return [
|
|||
'book-an-appointment' => '预约',
|
||||
'date' => '日期',
|
||||
'slot' => '插槽',
|
||||
'no-slots-available' => 'No slots available',
|
||||
'rent-an-item' => '租一个项目',
|
||||
'choose-rent-option' => '选择租金选项',
|
||||
'daily-basis' => '每日基础',
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@
|
|||
<div class="control-group slots" :class="[errors.has('booking[slot]') ? 'has-error' : '']">
|
||||
<select v-validate="'required'" name="booking[slot]" class="control" data-vv-as=""{{ __('bookingproduct::app.shop.products.slot') }}"">
|
||||
<option v-for="slot in slots" :value="slot.timestamp">@{{ slot.from + ' - ' + slot.to }}</option>
|
||||
|
||||
<option value="" v-if="! slots.length">{{ __('bookingproduct::app.shop.products.no-slots-available') }}</option>
|
||||
</select>
|
||||
|
||||
<span class="control-error" v-if="errors.has('booking[slot]')">@{{ errors.first('booking[slot]') }}</span>
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@
|
|||
<div class="form-group slots" :class="[errors.has('booking[slot]') ? 'has-error' : '']">
|
||||
<select v-validate="'required'" name="booking[slot]" class="form-style" data-vv-as=""{{ __('bookingproduct::app.shop.products.slot') }}"">
|
||||
<option v-for="slot in slots" :value="slot.timestamp">@{{ slot.from + ' - ' + slot.to }}</option>
|
||||
|
||||
<option value="" v-if="! slots.length">{{ __('bookingproduct::app.shop.products.no-slots-available') }}</option>
|
||||
</select>
|
||||
|
||||
<span class="control-error" v-if="errors.has('booking[slot]')">@{{ errors.first('booking[slot]') }}</span>
|
||||
|
|
|
|||
|
|
@ -1,34 +1,45 @@
|
|||
const mix = require("laravel-mix");
|
||||
const mix = require('laravel-mix');
|
||||
|
||||
if (mix == 'undefined') {
|
||||
const { mix } = require("laravel-mix");
|
||||
const { mix } = require('laravel-mix');
|
||||
}
|
||||
|
||||
require("laravel-mix-merge-manifest");
|
||||
require('laravel-mix-merge-manifest');
|
||||
|
||||
let publicPath = '../../../public/themes/default/assets';
|
||||
|
||||
if (mix.inProduction()) {
|
||||
var publicPath = 'publishable/assets';
|
||||
} else {
|
||||
var publicPath = "../../../public/themes/default/assets";
|
||||
publicPath = 'publishable/assets';
|
||||
}
|
||||
|
||||
mix.setPublicPath(publicPath).mergeManifest();
|
||||
mix.disableNotifications();
|
||||
|
||||
mix.js(__dirname + "/src/Resources/assets/js/app.js", "js/admin-booking.js")
|
||||
.copyDirectory(__dirname + "/src/Resources/assets/images", publicPath + "/images")
|
||||
.sass(__dirname + "/src/Resources/assets/sass/admin.scss", "css/admin-booking.css")
|
||||
.sass(__dirname + "/src/Resources/assets/sass/default.scss", "css/default-booking.css")
|
||||
.sass(__dirname + "/src/Resources/assets/sass/velocity.scss", "css/velocity-booking.css")
|
||||
mix.js(__dirname + '/src/Resources/assets/js/app.js', 'js/admin-booking.js')
|
||||
.copyDirectory(
|
||||
__dirname + '/src/Resources/assets/images',
|
||||
publicPath + '/images'
|
||||
)
|
||||
.sass(
|
||||
__dirname + '/src/Resources/assets/sass/admin.scss',
|
||||
'css/admin-booking.css'
|
||||
)
|
||||
.sass(
|
||||
__dirname + '/src/Resources/assets/sass/default.scss',
|
||||
'css/default-booking.css'
|
||||
)
|
||||
.sass(
|
||||
__dirname + '/src/Resources/assets/sass/velocity.scss',
|
||||
'css/velocity-booking.css'
|
||||
)
|
||||
.options({
|
||||
processCssUrls: false
|
||||
processCssUrls: false,
|
||||
});
|
||||
|
||||
|
||||
if (! mix.inProduction()) {
|
||||
if (!mix.inProduction()) {
|
||||
mix.sourceMaps();
|
||||
}
|
||||
|
||||
if (mix.inProduction()) {
|
||||
mix.version();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -294,6 +294,40 @@ class Cart
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all items from cart.
|
||||
*
|
||||
* @return \Webkul\Checkout\Models\Cart|null
|
||||
*/
|
||||
public function removeAllItems(): ?CartModel
|
||||
{
|
||||
$cart = $this->getCart();
|
||||
|
||||
Event::dispatch('checkout.cart.delete.all.before', $cart);
|
||||
|
||||
if (! $cart) {
|
||||
return $cart;
|
||||
}
|
||||
|
||||
foreach ($cart->items as $item) {
|
||||
$this->cartItemRepository->delete($item->id);
|
||||
|
||||
if ($cart->items->count() == 0) {
|
||||
$this->cartRepository->delete($cart->id);
|
||||
|
||||
if (session()->has('cart')) {
|
||||
session()->forget('cart');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$cart->save();
|
||||
|
||||
Event::dispatch('checkout.cart.delete.all.after', $cart);
|
||||
|
||||
return $cart;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove cart items, whose product is inactive.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -68,8 +68,7 @@ class Core
|
|||
protected LocaleRepository $localeRepository,
|
||||
protected CustomerGroupRepository $customerGroupRepository,
|
||||
protected CoreConfigRepository $coreConfigRepository
|
||||
)
|
||||
{
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -246,7 +245,7 @@ class Core
|
|||
|
||||
return $data = [
|
||||
'channel' => $channel,
|
||||
'locales' => $channel->locales()->orderBy('name')->get()
|
||||
'locales' => $channel->locales()->orderBy('name')->get(),
|
||||
];
|
||||
}
|
||||
|
||||
|
|
@ -598,11 +597,13 @@ class Core
|
|||
/**
|
||||
* Return currency symbol from currency code.
|
||||
*
|
||||
* @param float $price
|
||||
* @param string|\Webkul\Core\Contracts\Currency $currency
|
||||
* @return string
|
||||
*/
|
||||
public function currencySymbol($code)
|
||||
public function currencySymbol($currency)
|
||||
{
|
||||
$code = $currency instanceof \Webkul\Core\Contracts\Currency ? $currency->code : $currency;
|
||||
|
||||
$formatter = new \NumberFormatter('ru_RU@currency=' . $code, \NumberFormatter::CURRENCY);
|
||||
|
||||
return $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
|
||||
|
|
@ -1206,7 +1207,7 @@ class Core
|
|||
* @param array $array2
|
||||
* @return array
|
||||
*/
|
||||
protected function arrayMerge(array &$array1, array &$array2)
|
||||
protected function arrayMerge(array&$array1, array&$array2)
|
||||
{
|
||||
$merged = $array1;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Product\Database\Factories;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Webkul\Product\Models\Product;
|
||||
use Webkul\Product\Models\ProductOrderedInventory;
|
||||
|
||||
class ProductOrderedInventoryFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* The name of the factory's corresponding model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $model = ProductOrderedInventory::class;
|
||||
|
||||
/**
|
||||
* Define the model's default state.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
'qty' => $this->faker->numberBetween(100, 200),
|
||||
'product_id' => Product::factory(),
|
||||
'channel_id' => 1,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -2,15 +2,29 @@
|
|||
|
||||
namespace Webkul\Product\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Webkul\Inventory\Models\InventorySourceProxy;
|
||||
use Webkul\Core\Models\ChannelProxy;
|
||||
use Webkul\Product\Contracts\ProductOrderedInventory as ProductOrderedInventoryContract;
|
||||
use Webkul\Product\Database\Factories\ProductOrderedInventoryFactory;
|
||||
|
||||
class ProductOrderedInventory extends Model implements ProductOrderedInventoryContract
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
/**
|
||||
* Timestamps.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* Fillables.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fillable = [
|
||||
'qty',
|
||||
'product_id',
|
||||
|
|
@ -19,6 +33,8 @@ class ProductOrderedInventory extends Model implements ProductOrderedInventoryCo
|
|||
|
||||
/**
|
||||
* Get the channel owns the inventory.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function channel()
|
||||
{
|
||||
|
|
@ -27,9 +43,21 @@ class ProductOrderedInventory extends Model implements ProductOrderedInventoryCo
|
|||
|
||||
/**
|
||||
* Get the product that owns the product inventory.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->belongsTo(ProductProxy::modelClass());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new factory instance for the model.
|
||||
*
|
||||
* @return Factory
|
||||
*/
|
||||
protected static function newFactory(): Factory
|
||||
{
|
||||
return ProductOrderedInventoryFactory::new ();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -674,12 +674,12 @@ abstract class AbstractType
|
|||
{
|
||||
return [
|
||||
'regular_price' => [
|
||||
'price' => core()->convertPrice($this->evaluatePrice($this->product->price)),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($this->product->price)),
|
||||
'price' => core()->convertPrice($this->evaluatePrice($regularPrice = $this->product->price)),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($regularPrice)),
|
||||
],
|
||||
'final_price' => [
|
||||
'price' => core()->convertPrice($this->evaluatePrice($this->getMinimalPrice())),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($this->getMinimalPrice())),
|
||||
'price' => core()->convertPrice($this->evaluatePrice($minimalPrice = $this->getMinimalPrice())),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($minimalPrice)),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -340,23 +340,23 @@ class Bundle extends AbstractType
|
|||
return [
|
||||
'from' => [
|
||||
'regular_price' => [
|
||||
'price' => core()->convertPrice($this->evaluatePrice($this->getRegularMinimalPrice())),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($this->getRegularMinimalPrice())),
|
||||
'price' => core()->convertPrice($this->evaluatePrice($regularMinimalPrice = $this->getRegularMinimalPrice())),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($regularMinimalPrice)),
|
||||
],
|
||||
'final_price' => [
|
||||
'price' => core()->convertPrice($this->evaluatePrice($this->getMinimalPrice())),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($this->getMinimalPrice())),
|
||||
'price' => core()->convertPrice($this->evaluatePrice($minimalPrice = $this->getMinimalPrice())),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($minimalPrice)),
|
||||
],
|
||||
],
|
||||
|
||||
'to' => [
|
||||
'regular_price' => [
|
||||
'price' => core()->convertPrice($this->evaluatePrice($this->getRegularMaximamPrice())),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($this->getRegularMaximamPrice())),
|
||||
'price' => core()->convertPrice($this->evaluatePrice($regularMaximumPrice = $this->getRegularMaximamPrice())),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($regularMaximumPrice)),
|
||||
],
|
||||
'final_price' => [
|
||||
'price' => core()->convertPrice($this->evaluatePrice($this->getMaximamPrice())),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($this->getMaximamPrice())),
|
||||
'price' => core()->convertPrice($this->evaluatePrice($maximumPrice = $this->getMaximamPrice())),
|
||||
'formated_price' => core()->currency($this->evaluatePrice($maximumPrice)),
|
||||
],
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -552,14 +552,16 @@ class Configurable extends AbstractType
|
|||
*/
|
||||
public function getProductPrices()
|
||||
{
|
||||
$haveOffer = $this->haveOffer();
|
||||
|
||||
return [
|
||||
'regular_price' => [
|
||||
'formated_price' => $this->haveOffer()
|
||||
? core()->currency($this->evaluatePrice($this->getOfferPrice()))
|
||||
: core()->currency($this->evaluatePrice($this->getMinimalPrice())),
|
||||
'price' => $this->haveOffer()
|
||||
? $this->evaluatePrice($this->getOfferPrice())
|
||||
: $this->evaluatePrice($this->getMinimalPrice()),
|
||||
'formated_price' => $haveOffer
|
||||
? core()->currency($this->evaluatePrice($offerPrice = $this->getOfferPrice()))
|
||||
: core()->currency($this->evaluatePrice($minimalPrice = $this->getMinimalPrice())),
|
||||
'price' => $haveOffer
|
||||
? $this->evaluatePrice($offerPrice)
|
||||
: $this->evaluatePrice($minimalPrice),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace Webkul\Sales\Repositories;
|
||||
|
||||
use Illuminate\Container\Container as App;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Webkul\Core\Eloquent\Repository;
|
||||
use Webkul\Sales\Contracts\OrderItem;
|
||||
|
|
@ -11,16 +9,18 @@ use Webkul\Sales\Contracts\OrderItem;
|
|||
class OrderItemRepository extends Repository
|
||||
{
|
||||
/**
|
||||
* Specify Model class name
|
||||
* Specify model class name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function model()
|
||||
public function model()
|
||||
{
|
||||
return OrderItem::class;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \Webkul\Sales\Contracts\OrderItem
|
||||
*/
|
||||
|
|
@ -37,6 +37,8 @@ class OrderItemRepository extends Repository
|
|||
}
|
||||
|
||||
/**
|
||||
* Collect totals.
|
||||
*
|
||||
* @param \Webkul\Sales\Contracts\OrderItem $orderItem
|
||||
* @return \Webkul\Sales\Contracts\OrderItem
|
||||
*/
|
||||
|
|
@ -96,6 +98,8 @@ class OrderItemRepository extends Repository
|
|||
}
|
||||
|
||||
/**
|
||||
* Manage inventory.
|
||||
*
|
||||
* @param \Webkul\Sales\Contracts\OrderItem $orderItem
|
||||
* @return void
|
||||
*/
|
||||
|
|
@ -125,14 +129,14 @@ class OrderItemRepository extends Repository
|
|||
if (isset($item->qty_ordered)) {
|
||||
$qty = $item->qty_ordered;
|
||||
} else {
|
||||
Log::info('OrderItem has no qty_ordered', ['orderItem' => $item, 'product' => $item->product]);
|
||||
Log::info('OrderItem has no `qty_ordered`.', ['orderItem' => $item, 'product' => $item->product]);
|
||||
if (isset($item->parent->qty_ordered)) {
|
||||
$qty = $item->parent->qty_ordered;
|
||||
} else {
|
||||
Log::info('OrderItem has no parent with qty_ordered', [
|
||||
Log::info('OrderItem has no parent with `qty_ordered`', [
|
||||
'orderItem' => $item,
|
||||
'parent' => $item->parent,
|
||||
'product' => $item->product
|
||||
'parent' => $item->parent,
|
||||
'product' => $item->product,
|
||||
]);
|
||||
$qty = 1;
|
||||
}
|
||||
|
|
@ -154,26 +158,14 @@ class OrderItemRepository extends Repository
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns qty to product inventory after order cancelation
|
||||
* Returns qty to product inventory after order cancellation.
|
||||
*
|
||||
* @param \Webkul\Sales\Contracts\OrderItem $orderItem
|
||||
* @return void
|
||||
*/
|
||||
public function returnQtyToProductInventory($orderItem)
|
||||
{
|
||||
$orderedInventory = $orderItem->product->ordered_inventories()
|
||||
->where('channel_id', $orderItem->order->channel->id)
|
||||
->first();
|
||||
|
||||
if (! $orderedInventory) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (($qty = $orderedInventory->qty - ($orderItem->qty_ordered ? $orderItem->qty_to_cancel : $orderItem->parent->qty_ordered)) < 0) {
|
||||
$qty = 0;
|
||||
}
|
||||
|
||||
$orderedInventory->update(['qty' => $qty]);
|
||||
$this->updateProductOrderedInventories($orderItem);
|
||||
|
||||
if ($orderItem->getTypeInstance()->isStockable()) {
|
||||
$shipmentItems = $orderItem->parent ? $orderItem->parent->shipment_items : $orderItem->shipment_items;
|
||||
|
|
@ -182,20 +174,55 @@ class OrderItemRepository extends Repository
|
|||
foreach ($shipmentItems as $shipmentItem) {
|
||||
if ($orderItem->parent) {
|
||||
$shippedQty = $orderItem->qty_ordered
|
||||
? ($orderItem->qty_ordered / $orderItem->parent->qty_ordered) * $shipmentItem->qty
|
||||
: $orderItem->parent->qty_ordered;
|
||||
? ($orderItem->qty_ordered / $orderItem->parent->qty_ordered) * $shipmentItem->qty
|
||||
: $orderItem->parent->qty_ordered;
|
||||
} else {
|
||||
$shippedQty = $shipmentItem->qty;
|
||||
}
|
||||
|
||||
|
||||
$inventory = $orderItem->product->inventories()
|
||||
// ->where('vendor_id', $data['vendor_id'])
|
||||
->where('inventory_source_id', $shipmentItem->shipment->inventory_source_id)
|
||||
->first();
|
||||
|
||||
$inventory->update(['qty' => $inventory->qty + $shippedQty]);
|
||||
->where('inventory_source_id', $shipmentItem->shipment->inventory_source_id)
|
||||
->first();
|
||||
|
||||
$inventory->update(['qty' => $inventory->qty + $shippedQty]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update product ordered quantity.
|
||||
*
|
||||
* @param \Webkul\Sales\Contracts\OrderItem $orderItem
|
||||
* @return void
|
||||
*/
|
||||
public function updateProductOrderedInventories($orderItem)
|
||||
{
|
||||
$orderedInventory = $orderItem->product->ordered_inventories()
|
||||
->where('channel_id', $orderItem->order->channel->id)
|
||||
->first();
|
||||
|
||||
if (! $orderedInventory) {
|
||||
return;
|
||||
}
|
||||
|
||||
$qty = (
|
||||
$orderedInventory->qty +
|
||||
(
|
||||
isset($orderItem->qty_shipped)
|
||||
? $orderItem->qty_shipped
|
||||
: $orderItem->parent->qty_shipped
|
||||
)
|
||||
) - (
|
||||
isset($orderItem->qty_ordered)
|
||||
? $orderItem->qty_ordered
|
||||
: $orderItem->parent->qty_ordered
|
||||
);
|
||||
|
||||
if ($qty < 0) {
|
||||
$qty = 0;
|
||||
}
|
||||
|
||||
$orderedInventory->update(['qty' => $qty]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,9 +74,13 @@ class OrderRepository extends Repository
|
|||
$order->payment()->create($data['payment']);
|
||||
|
||||
if (isset($data['shipping_address'])) {
|
||||
unset($data['shipping_address']['customer_id']);
|
||||
|
||||
$order->addresses()->create($data['shipping_address']);
|
||||
}
|
||||
|
||||
unset($data['billing_address']['customer_id']);
|
||||
|
||||
$order->addresses()->create($data['billing_address']);
|
||||
|
||||
foreach ($data['items'] as $item) {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -10,8 +10,8 @@
|
|||
*/
|
||||
|
||||
/*!
|
||||
* Vue.js v2.6.14
|
||||
* (c) 2014-2021 Evan You
|
||||
* Vue.js v2.6.12
|
||||
* (c) 2014-2020 Evan You
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/js/shop.js": "/js/shop.js?id=60b6b9cbe8e20c7ab585",
|
||||
"/css/shop.css": "/css/shop.css?id=1c6f9a98eb7c9d2aa0c4"
|
||||
"/js/shop.js": "/js/shop.js?id=34684ef2b5b3c24817b4",
|
||||
"/css/shop.css": "/css/shop.css?id=9afe3747b802b3fd1aa9"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ class OrderDataGrid extends DataGrid
|
|||
$this->addColumn([
|
||||
'index' => 'status',
|
||||
'label' => trans('shop::app.customer.account.order.index.status'),
|
||||
'type' => 'string',
|
||||
'type' => 'checkbox',
|
||||
'options' => [
|
||||
'processing' => trans('shop::app.customer.account.order.index.processing'),
|
||||
'completed' => trans('shop::app.customer.account.order.index.completed'),
|
||||
|
|
|
|||
|
|
@ -105,6 +105,22 @@ class CartController extends Controller
|
|||
return redirect()->back();
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the item from the cart if it exists.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function removeAllItems()
|
||||
{
|
||||
$result = Cart::removeAllItems();
|
||||
|
||||
if ($result) {
|
||||
session()->flash('success', trans('shop::app.checkout.cart.item.success-all-remove'));
|
||||
}
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the quantity of the items present in the cart.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -152,14 +152,14 @@ input {
|
|||
/**
|
||||
* Show the indicator (dot/circle) when checked.
|
||||
*/
|
||||
.radio-container input:checked~.checkmark:after {
|
||||
.radio-container input:checked ~ .checkmark:after {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the indicator.
|
||||
*/
|
||||
.radio-container input:disabled~.checkmark {
|
||||
.radio-container input:disabled ~ .checkmark {
|
||||
display: block;
|
||||
border: 2px solid $radio-button-disabled;
|
||||
}
|
||||
|
|
@ -223,12 +223,11 @@ input {
|
|||
background-image: url('../images/checkbox.svg') !important;
|
||||
}
|
||||
|
||||
input:checked+.checkbox-view {
|
||||
input:checked + .checkbox-view {
|
||||
background-image: url('../images/checkbox-checked.svg') !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* if not very important use bootstrap 4 float-left and float-right class */
|
||||
.pull-right {
|
||||
float: right !important;
|
||||
}
|
||||
|
|
@ -237,8 +236,6 @@ input {
|
|||
float: left !important;
|
||||
}
|
||||
|
||||
/* if not very important use bootstrap 4 float-left and float-right class */
|
||||
|
||||
/**
|
||||
* Wishlist icon hover properties.
|
||||
*/
|
||||
|
|
@ -1000,7 +997,7 @@ section.slider-block {
|
|||
|
||||
div.right-content {
|
||||
.right-content-menu {
|
||||
>li {
|
||||
> li {
|
||||
display: inline-block;
|
||||
border-right: 2px solid $border-color;
|
||||
padding: 0 15px;
|
||||
|
|
@ -1071,7 +1068,7 @@ section.slider-block {
|
|||
margin-top: 5px;
|
||||
}
|
||||
|
||||
ul>li {
|
||||
ul > li {
|
||||
padding: 5px 10px 5px 0px !important;
|
||||
}
|
||||
}
|
||||
|
|
@ -1091,7 +1088,7 @@ section.slider-block {
|
|||
column-gap: 10px;
|
||||
grid-template-columns: auto auto;
|
||||
|
||||
.btn {
|
||||
.btn {
|
||||
word-break: break-all;
|
||||
text-align: center;
|
||||
}
|
||||
|
|
@ -1110,24 +1107,24 @@ section.slider-block {
|
|||
color: $font-dark;
|
||||
}
|
||||
|
||||
.dropdown-cart>.dropdown-header {
|
||||
.dropdown-cart > .dropdown-header {
|
||||
width: 100%;
|
||||
padding: 8px 16px;
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
|
||||
.dropdown-cart>.dropdown-header p {
|
||||
.dropdown-cart > .dropdown-header p {
|
||||
display: inline;
|
||||
line-height: 25px;
|
||||
}
|
||||
|
||||
.dropdown-cart>.dropdown-header i {
|
||||
.dropdown-cart > .dropdown-header i {
|
||||
float: right;
|
||||
height: 22px;
|
||||
width: 22px;
|
||||
}
|
||||
|
||||
.dropdown-cart>.dropdown-header p.heading {
|
||||
.dropdown-cart > .dropdown-header p.heading {
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
|
|
@ -1238,7 +1235,7 @@ section.slider-block {
|
|||
position: relative;
|
||||
}
|
||||
|
||||
.nav li>.icon {
|
||||
.nav li > .icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
|
@ -1251,17 +1248,17 @@ section.slider-block {
|
|||
position: relative;
|
||||
}
|
||||
|
||||
.nav>li {
|
||||
.nav > li {
|
||||
float: left;
|
||||
margin-right: 1px;
|
||||
height: 45px;
|
||||
}
|
||||
|
||||
.nav>li>a {
|
||||
.nav > li > a {
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
.nav>li>a .icon {
|
||||
.nav > li > a .icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
|
@ -1293,34 +1290,34 @@ section.slider-block {
|
|||
left: -99999em;
|
||||
}
|
||||
|
||||
.nav>li:hover {
|
||||
.nav > li:hover {
|
||||
background-color: $background-color;
|
||||
}
|
||||
|
||||
.nav>li:hover>ul {
|
||||
.nav > li:hover > ul {
|
||||
left: auto;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.nav>li li:hover {
|
||||
.nav > li li:hover {
|
||||
background-color: $background-color;
|
||||
}
|
||||
|
||||
.nav>li li:hover>ul {
|
||||
.nav > li li:hover > ul {
|
||||
left: 100%;
|
||||
margin-left: 1px;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
.nav>li:hover>a:first-child:nth-last-child(2):before {
|
||||
.nav > li:hover > a:first-child:nth-last-child(2):before {
|
||||
margin-top: -5px;
|
||||
}
|
||||
|
||||
.nav li li>a:first-child:nth-last-child(2):before {
|
||||
.nav li li > a:first-child:nth-last-child(2):before {
|
||||
margin-top: -5px;
|
||||
}
|
||||
|
||||
.nav li li:hover>a:first-child:nth-last-child(2):before {
|
||||
.nav li li:hover > a:first-child:nth-last-child(2):before {
|
||||
right: 10px;
|
||||
}
|
||||
}
|
||||
|
|
@ -1371,7 +1368,7 @@ section.slider-block {
|
|||
}
|
||||
|
||||
.right-content-menu {
|
||||
>li {
|
||||
> li {
|
||||
border-right: none;
|
||||
padding: 0 2px;
|
||||
|
||||
|
|
@ -1411,11 +1408,11 @@ section.slider-block {
|
|||
height: auto;
|
||||
}
|
||||
|
||||
.nav>li {
|
||||
.nav > li {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.nav li>.icon {
|
||||
.nav li > .icon {
|
||||
float: right;
|
||||
display: block;
|
||||
}
|
||||
|
|
@ -1429,7 +1426,7 @@ section.slider-block {
|
|||
width: 16px;
|
||||
}
|
||||
|
||||
.nav li a>.icon {
|
||||
.nav li a > .icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
|
@ -1439,7 +1436,7 @@ section.slider-block {
|
|||
box-shadow: none;
|
||||
}
|
||||
|
||||
.nav>li li:hover>ul {
|
||||
.nav > li li:hover > ul {
|
||||
margin-left: 0px;
|
||||
top: 0px;
|
||||
}
|
||||
|
|
@ -2081,7 +2078,7 @@ section.product-detail {
|
|||
margin-top: 0;
|
||||
|
||||
&.required:after {
|
||||
content: "*";
|
||||
content: '*';
|
||||
color: #fc6868;
|
||||
font-weight: 700;
|
||||
display: inline-block;
|
||||
|
|
@ -2353,8 +2350,8 @@ section.product-detail {
|
|||
background: rgb(242, 242, 242);
|
||||
}
|
||||
|
||||
input:checked+span,
|
||||
input:checked+img {
|
||||
input:checked + span,
|
||||
input:checked + img {
|
||||
border: 1px solid $font-dark;
|
||||
}
|
||||
|
||||
|
|
@ -2379,7 +2376,6 @@ section.product-detail {
|
|||
*/
|
||||
.accordian,
|
||||
accordian {
|
||||
|
||||
.accordian-header,
|
||||
div[slot*='header'] {
|
||||
font-size: 16px !important;
|
||||
|
|
@ -3229,7 +3225,6 @@ section.cart {
|
|||
.checkout-process {
|
||||
.col-main {
|
||||
.step-content {
|
||||
|
||||
.address,
|
||||
.order-description {
|
||||
display: flex;
|
||||
|
|
@ -3589,7 +3584,7 @@ ol.breadcrumb {
|
|||
li.breadcrumb-item {
|
||||
display: inline-block;
|
||||
|
||||
&+.breadcrumb-item::before {
|
||||
& + .breadcrumb-item::before {
|
||||
display: inline-block;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
|
|
@ -3813,7 +3808,7 @@ ol.breadcrumb {
|
|||
border: 0;
|
||||
display: none;
|
||||
|
||||
>li {
|
||||
> li {
|
||||
margin-left: 0;
|
||||
width: 100%;
|
||||
|
||||
|
|
@ -3822,7 +3817,7 @@ ol.breadcrumb {
|
|||
}
|
||||
}
|
||||
|
||||
>li:last-child {
|
||||
> li:last-child {
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
}
|
||||
|
|
@ -4074,7 +4069,6 @@ ol.breadcrumb {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
.show-wishlist {
|
||||
z-index: -1 !important;
|
||||
}
|
||||
|
|
@ -4178,7 +4172,7 @@ ol.breadcrumb {
|
|||
|
||||
div.right-content {
|
||||
.right-content-menu {
|
||||
>li {
|
||||
> li {
|
||||
border-right: 2px solid $border-color;
|
||||
padding: 0 15px 0 15px;
|
||||
|
||||
|
|
@ -4220,7 +4214,7 @@ ol.breadcrumb {
|
|||
}
|
||||
|
||||
.header-bottom {
|
||||
.nav>li {
|
||||
.nav > li {
|
||||
float: right;
|
||||
margin-right: 0px;
|
||||
margin-left: 1px;
|
||||
|
|
@ -4230,11 +4224,11 @@ ol.breadcrumb {
|
|||
padding: 0.8em 0.5em 0.8em 0.3em !important;
|
||||
}
|
||||
|
||||
.nav li a>.icon {
|
||||
.nav li a > .icon {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.nav>li li:hover>ul {
|
||||
.nav > li li:hover > ul {
|
||||
left: unset !important;
|
||||
right: 100% !important;
|
||||
}
|
||||
|
|
@ -4273,7 +4267,7 @@ ol.breadcrumb {
|
|||
right: auto;
|
||||
}
|
||||
|
||||
>li {
|
||||
> li {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
|
@ -4285,11 +4279,11 @@ ol.breadcrumb {
|
|||
}
|
||||
|
||||
.header-bottom {
|
||||
.nav>li {
|
||||
.nav > li {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.nav li>.icon {
|
||||
.nav li > .icon {
|
||||
float: left;
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
|
@ -4390,7 +4384,10 @@ ol.breadcrumb {
|
|||
}
|
||||
|
||||
@media only screen and (max-width: 720px) {
|
||||
section.product-detail div.layouter .form-container div.product-image-group {
|
||||
section.product-detail
|
||||
div.layouter
|
||||
.form-container
|
||||
div.product-image-group {
|
||||
margin-right: 0px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
|
@ -4564,7 +4561,6 @@ ol.breadcrumb {
|
|||
|
||||
.order-description,
|
||||
.address {
|
||||
|
||||
.pull-left,
|
||||
.billing-address {
|
||||
float: right !important;
|
||||
|
|
@ -4686,7 +4682,7 @@ ol.breadcrumb {
|
|||
}
|
||||
|
||||
.menubar {
|
||||
>li {
|
||||
> li {
|
||||
margin-right: 0%;
|
||||
}
|
||||
}
|
||||
|
|
@ -4697,7 +4693,13 @@ ol.breadcrumb {
|
|||
/**
|
||||
* Footer start.
|
||||
*/
|
||||
.footer .footer-content .footer-list-container .list-container .list-group li span.icon {
|
||||
.footer
|
||||
.footer-content
|
||||
.footer-list-container
|
||||
.list-container
|
||||
.list-group
|
||||
li
|
||||
span.icon {
|
||||
margin-left: 5px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
|
@ -4742,6 +4744,16 @@ ol.breadcrumb {
|
|||
left: 0;
|
||||
right: 476px !important;
|
||||
}
|
||||
|
||||
.control-group {
|
||||
&.date,
|
||||
&.datetime {
|
||||
&::after {
|
||||
margin-right: -34px;
|
||||
right: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -4905,16 +4917,16 @@ body {
|
|||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.desc>p {
|
||||
.desc > p {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.comparison-component>h1 {
|
||||
.comparison-component > h1 {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 372px) {
|
||||
.comparison-component>h1 {
|
||||
.comparison-component > h1 {
|
||||
line-height: 30px;
|
||||
}
|
||||
}
|
||||
|
|
@ -4926,7 +4938,7 @@ body {
|
|||
background-color: black;
|
||||
}
|
||||
|
||||
.action>div {
|
||||
.action > div {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
|
|
@ -4957,9 +4969,9 @@ body {
|
|||
}
|
||||
|
||||
.icon-position {
|
||||
margin-left: -30px;
|
||||
cursor: pointer;
|
||||
margin-left: -30px;
|
||||
cursor: pointer;
|
||||
vertical-align: sub;
|
||||
position: absolute;
|
||||
margin-top: 15px;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,8 +104,8 @@ return [
|
|||
'confirm-remove-all' => 'Are you sure you want to delete all compare items?',
|
||||
'already_added' => 'تمت إضافة العنصر بالفعل لمقارنة القائمة',
|
||||
'empty-text' => 'ليس لديك أي عناصر في قائمة المقارنة الخاصة بك',
|
||||
'product_image' => 'Product Image',
|
||||
'actions' => 'Actions',
|
||||
'product_image' => 'صورة المنتج',
|
||||
'actions' => 'أجراءات',
|
||||
],
|
||||
|
||||
'signup-text' => [
|
||||
|
|
@ -350,7 +350,7 @@ return [
|
|||
'page-title' => 'العملاء - قائمة الامنيات',
|
||||
'title' => 'قائمة الأمنيات',
|
||||
'deleteall' => 'احذف الكل',
|
||||
'confirm-delete-all' => 'Are you sure you want to delete all wishlist?',
|
||||
'confirm-delete-all' => 'هل أنت متأكد أنك تريد حذف كل قائمة الرغبات?',
|
||||
'moveall' => 'نقل الكل إلى عربة التوسق',
|
||||
'move-to-cart' => 'نقل إلى عربة التسوق',
|
||||
'error' => 'لا يمكن إضافة المنتج إلى قائمة الأمنيات ، الرجاء المحاولة لاحقا',
|
||||
|
|
@ -368,20 +368,20 @@ return [
|
|||
'remove-fail' => 'لا يمكن حذف العنصر من قائمة الأماني ، الرجاء المحاولة لاحقا',
|
||||
'empty' => 'ليس لديك أي عناصر في قائمة الأمنيات',
|
||||
'remove-all-success' => 'كل الأشياء من قائمة أمانيك قد أزيلت',
|
||||
'save' => 'Save',
|
||||
'share' => 'Share',
|
||||
'share-wishlist' => 'Share Wishlist',
|
||||
'wishlist-sharing' => 'Wishlist Sharing',
|
||||
'shared-link' => 'Shared Link',
|
||||
'copy' => 'Copy',
|
||||
'visibility' => 'Visibility',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'enable' => 'Enable',
|
||||
'disable' => 'Disable',
|
||||
'customer-name' => ':name\'s Shared Wishlist',
|
||||
'enable-wishlist-info' => 'Enable wishlist sharing to get the link.',
|
||||
'update-message' => 'Shared wishlist settings updated successfully',
|
||||
'save' => 'يحفظ',
|
||||
'share' => 'شارك',
|
||||
'share-wishlist' => 'مشاركة قائمة الرغبات',
|
||||
'wishlist-sharing' => 'تقاسم قائمة الرغبات',
|
||||
'shared-link' => 'رابط مشترك',
|
||||
'copy' => 'ينسخ',
|
||||
'visibility' => 'الرؤية',
|
||||
'public' => 'عام',
|
||||
'private' => 'نشر',
|
||||
'enable' => 'ممكن',
|
||||
'disable' => 'إبطال',
|
||||
'customer-name' => ':name\'س قائمة الرغبات المشتركة',
|
||||
'enable-wishlist-info' => 'قم بتمكين مشاركة قائمة الرغبات للحصول على الرابط.',
|
||||
'update-message' => 'تم تحديث إعدادات قائمة الرغبات المشتركة بنجاح',
|
||||
],
|
||||
|
||||
'downloadable_products' => [
|
||||
|
|
@ -396,7 +396,7 @@ return [
|
|||
'remaining-downloads' => 'التنزيلات المتبقية',
|
||||
'unlimited' => 'غير محدود',
|
||||
'download-error' => 'انتهت صلاحية رابط التنزيل.',
|
||||
'payment-error' => 'Payment has not been done for this download.',
|
||||
'payment-error' => 'لم يتم السداد لهذا التحميل.',
|
||||
],
|
||||
|
||||
'review' => [
|
||||
|
|
@ -473,9 +473,9 @@ return [
|
|||
'available-for-order' => 'متوفر لطلب الشراء',
|
||||
'settings' => 'Settings',
|
||||
'compare_options' => 'قارن الخيارات',
|
||||
'wishlist-options' => 'Wishlist Options',
|
||||
'offers' => 'Buy :qty for :price each and save :discount%',
|
||||
'tax-inclusive' => 'Inclusive of all taxes',
|
||||
'wishlist-options' => 'خيارات قائمة الرغبات',
|
||||
'offers' => 'Buy :qty ل :price كل وحفظ :discount%',
|
||||
'tax-inclusive' => 'شاملة لجميع الضرائب',
|
||||
],
|
||||
|
||||
// 'reviews' => [
|
||||
|
|
@ -503,6 +503,8 @@ return [
|
|||
'continue-registration' => 'متابعة التسجيل',
|
||||
'proceed-to-checkout' => 'انتقل إلى الخروج',
|
||||
'remove' => 'احذف',
|
||||
'remove-all-items' => 'قم بإزالة كافة العناصر',
|
||||
'confirm-action' => 'هل تريد تأكيد هذا الإجراء؟',
|
||||
'remove-link' => 'احذف',
|
||||
'move-to-wishlist' => 'انقل إلى قائمة الأمنيات',
|
||||
'move-to-wishlist-success' => 'نقل العنصر إلى قائمة الأمنيات',
|
||||
|
|
@ -521,8 +523,9 @@ return [
|
|||
'success' => 'تم بنجاح إضافة العنصر إلى العربة',
|
||||
'success-remove' => 'تم إزالة العنصر بنجاح من العربة',
|
||||
'error-add' => 'لا يمكن إضافة العنصر إلى العربة ، رجاء حاول مرة أخرى ',
|
||||
'inactive' => 'An item is inactive and was removed from cart',
|
||||
'inactive-add' => 'Inactive item cannot be added to cart',
|
||||
'success-all-remove' => 'تمت إزالة جميع العناصر بنجاح من سلة التسوق.',
|
||||
'inactive' => 'عنصر غير نشط وتمت إزالته من سلة التسوق',
|
||||
'inactive-add' => 'لا يمكن إضافة عنصر غير نشط إلى سلة التسوق',
|
||||
],
|
||||
'quantity-error' => 'الكمية المطلوبة غير متوفرة',
|
||||
'cart-subtotal' => 'المجموع الفرعي للمشتريات',
|
||||
|
|
@ -530,14 +533,14 @@ return [
|
|||
'partial-cart-update' => 'تم تحديث بعض المنتجات.',
|
||||
'link-missing' => '',
|
||||
'event' => [
|
||||
'expired' => 'This event has been expired.',
|
||||
'expired' => 'انتهت صلاحية هذا الحدث.',
|
||||
],
|
||||
'minimum-order-message' => 'الحد الأدنى لمبلغ الطلب هو :amount',
|
||||
'suspended-account-message' => 'Your account has been suspended.',
|
||||
'check-shipping-address' => 'Please check shipping address.',
|
||||
'check-billing-address' => 'Please check billing address.',
|
||||
'specify-shipping-method' => 'Please specify shipping method.',
|
||||
'specify-payment-method' => 'Please specify payment method.',
|
||||
'suspended-account-message' => 'تم تعليق حسابك.',
|
||||
'check-shipping-address' => 'يرجى التحقق من عنوان الشحن.',
|
||||
'check-billing-address' => 'يرجى التحقق من عنوان الفواتير.',
|
||||
'specify-shipping-method' => 'الرجاء تحديد طريقة الشحن.',
|
||||
'specify-payment-method' => 'الرجاء تحديد طريقة الدفع.',
|
||||
],
|
||||
|
||||
'onepage' => [
|
||||
|
|
@ -680,10 +683,10 @@ return [
|
|||
'subject' => '#:order_id فاتورة لطلبك',
|
||||
'summary' => 'موجز الفاتورة',
|
||||
'reminder' => [
|
||||
'subject' => 'Invoice reminder',
|
||||
'your-invoice-is-overdue' => 'Your invoice :invoice is overdue by :time.',
|
||||
'please-make-your-payment-as-soon-as-possible' => 'Please make your payment as soon as possible.',
|
||||
'if-you-ve-already-paid-just-disregard-this-email' => 'If you\'ve already paid, just disregard this email.',
|
||||
'subject' => 'تذكير الفاتورة',
|
||||
'your-invoice-is-overdue' => 'فاتورتك :invoice فات موعده :time.',
|
||||
'please-make-your-payment-as-soon-as-possible' => 'يرجى إجراء الدفع في أسرع وقت ممكن.',
|
||||
'if-you-ve-already-paid-just-disregard-this-email' => 'إذا كنت قد دفعت بالفعل ، فقط تجاهل هذا البريد الإلكتروني.',
|
||||
],
|
||||
],
|
||||
|
||||
|
|
|
|||
|
|
@ -501,6 +501,8 @@ return [
|
|||
'proceed-to-checkout' => 'Zur Kasse',
|
||||
'remove' => 'Entfernen',
|
||||
'remove-link' => 'Entfernen',
|
||||
'remove-all-items' => 'Remove all items',
|
||||
'confirm-action' => 'Confirm this action?',
|
||||
'move-to-wishlist' => 'Zur Wunschliste verschieben',
|
||||
'move-to-wishlist-success' => 'Artikel wurde erfolgreich auf die Wunschliste verschoben.',
|
||||
'move-to-wishlist-error' => 'Das Objekt kann nicht auf die Wunschliste verschoben werden. Bitte versuchen Sie es später erneut.',
|
||||
|
|
@ -517,6 +519,7 @@ return [
|
|||
'error_remove' => 'Keine Artikel aus dem Warenkorb zu entfernen',
|
||||
'success' => 'Artikel wurde erfolgreich zum Warenkorb hinzugefügt',
|
||||
'success-remove' => 'Artikel wurde erfolgreich aus dem Warenkorb entfernt',
|
||||
'success-all-remove' => 'All items is successfully removed from the cart.',
|
||||
'error-add' => 'Artikel kann nicht zum Warenkorb hinzugefügt werden. Bitte versuchen Sie es später erneut',
|
||||
'inactive' => 'Ein Artikel ist inaktiv und wurde aus dem Warenkorb entfernt.',
|
||||
'inactive-add' => 'Ein inaktiver Artikel kann nicht zum Warenkorb hinzugefügt werde.',
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue