Merge branch 'master' of https://github.com/bagisto/bagisto into sarga-v1

This commit is contained in:
merdan 2022-03-15 15:43:31 +05:00
commit 74cb937809
59 changed files with 1234 additions and 524 deletions

View File

@ -91,16 +91,16 @@ return [
'orders' => 'Siparişler',
'shipments' => 'Teslimatlar',
'invoices' => 'Faturalar',
'refunds' => 'Refunds',
'refunds' => 'Geri Ödemeler',
'catalog' => 'Katalog',
'products' => 'Ürünler',
'copy' => 'Copy',
'copy' => 'Kopyala',
'categories' => 'Kategoriler',
'attributes' => 'Nitelikler',
'attribute-families' => 'Nitelik Grupları',
'customers' => 'Müşteriler',
'addresses' => 'Addresses',
'note' => 'Note',
'addresses' => 'Adresler',
'note' => 'Not',
'groups' => 'Gruplar',
'reviews' => 'İncelemeler',
'newsletter-subscriptions' => 'Bülten Üyelikleri',
@ -117,13 +117,13 @@ return [
'taxes' => 'Vergi',
'tax-categories' => 'Vergi Grupları',
'tax-rates' => 'Vergi Oranları',
'view' => 'View',
'view' => 'Görüntüle',
'edit' => 'Düzenle',
'create' => 'Oluştur',
'delete' => 'Sil',
'mass-delete' => 'Mass Delete',
'mass-update' => 'Mass Update',
'marketing' => 'Marketing',
'mass-delete' => 'Toplu Silme',
'mass-update' => 'Toplu Güncelleme',
'marketing' => 'Pazarlama',
'promotions' => 'Promosyonlar',
'cart-rules' => 'Alışveriş Sepeti Kuralları',
'catalog-rules' => 'Katalog Kuralları',
@ -211,7 +211,7 @@ return [
'state' => 'Şehir',
'country' => 'Ülke',
'tax-rate' => 'Oran',
'role' => 'R',
'role' => 'Rol',
'sub-total' => 'Ara Toplam',
'no-of-products' => 'Ürün Adeti',
'attribute-family' => 'Nitelik Grubu',
@ -242,8 +242,8 @@ return [
'rtl' => 'RTL',
'ltr' => 'LTR',
'update-status' => 'Durum Güncelle',
'transaction-id' => 'Transaction Id',
'transaction-date' => 'Transaction Date',
'transaction-id' => 'İşlem Id',
'transaction-date' => 'İşlem Tarihi',
],
'account' => [
@ -396,7 +396,7 @@ return [
'notify-customer' => 'Müşteriyi Bilgilendir',
'customer-notified' => ':date | Müşteri <b>Bilgilendirildi</b>',
'customer-not-notified' => ':date | Müşteri <b>Bilgilendirilmedi</b>',
'transactions' => 'Transactions',
'transactions' => 'İşlemler',
],
'invoices' => [
@ -412,9 +412,9 @@ return [
'action' => 'Eylem',
'add-title' => 'Fatura Oluştur',
'save-btn-title' => 'Fatura Kaydet',
'send-duplicate-invoice' => 'Send Duplicate Invoice',
'send' => 'Send',
'invoice-sent' => 'Invoice sent successfully!',
'send-duplicate-invoice' => 'Çift Fatura Gönder',
'send' => 'Gönder',
'invoice-sent' => 'Fatura başarıyla gönderildi!',
'qty' => 'Miktar',
'qty-ordered' => 'Sipariş Miktarı',
'qty-to-invoice' => 'Fatura Edilen Miktar',
@ -423,12 +423,12 @@ return [
'ship-to' => 'Teslim Edilen',
'print' => 'Yazdır',
'order-date' => 'Sipariş Tarihi',
'invalid-qty' => 'We found an invalid quantity to invoice items.',
'invalid-qty' => 'Öğeleri faturalamak için geçersiz bir miktar bulduk.',
'creation-error' => 'Fatura oluşturulmasına izin verilmedi.',
'product-error' => 'Fatura oluşturulması için ürün ekleyiniz.',
'status-overdue' => 'Overdue',
'status-pending' => 'Pending Payment',
'status-paid' => 'Paid',
'status-overdue' => 'Vadesi Geçmiş',
'status-pending' => 'Bekleyen Ödeme',
'status-paid' => 'Ödendi',
],
'shipments' => [
@ -483,24 +483,24 @@ return [
],
'transactions' => [
'title' => 'Transactions',
'create-title' => 'Add transaction',
'title' => 'İşlemler',
'create-title' => 'İşlem ekle',
'id' => 'Id',
'transaction-id' => 'Transaction Id',
'payment-method' => 'Payment method',
'transaction-amount' => 'Transaction amount',
'action' => 'Action',
'view-title' => 'Transaction #:transaction_id',
'transaction-data' => 'Transaction Data',
'order-id' => 'Order Id',
'invoice-id' => 'Invoice Id',
'status' => 'Status',
'created-at' => 'Created At',
'transaction-details' => 'Transaction Details',
'transaction-id' => 'İşlem Id',
'payment-method' => 'Ödeme şekli',
'transaction-amount' => 'İşlem tutarı',
'action' => 'Aksiyon',
'view-title' => 'İşlem #:transaction_id',
'transaction-data' => 'İşlem Tarihi',
'order-id' => 'Sipariş Id',
'invoice-id' => 'Fatura Id',
'status' => 'Durum',
'created-at' => 'Oluşturulma Tarihi',
'transaction-details' => 'Ödeme Detayları',
'response' => [
'invoice-missing' => 'This invoice id does not exist',
'transaction-saved' => 'The transaction has been saved',
'already-paid' => 'This invoice has already been paid',
'invoice-missing' => 'Bu fatura kimliği mevcut değil',
'transaction-saved' => 'İşlem kaydedildi',
'already-paid' => 'Bu fatura zaten ödendi',
],
],
],
@ -520,10 +520,10 @@ return [
'bundle' => 'demet',
'downloadable' => 'indirilebilir',
'grouped' => 'gruplandırılmış',
'virtual' => 'gerçek',
'virtual' => 'gerçek',
'configurable' => 'yapılandırılabilir',
],
],
'simple' => 'Basit',
'configurable' => 'Ayarlanabilir',
'familiy' => 'Nitelik Grubu',
@ -584,15 +584,15 @@ return [
'multiselect' => 'Çoklu Seçim',
'new-option' => 'Yeni Seçenek',
'is-default' => 'Varsayılan',
'remove-image-btn-title' => 'Remove Image',
'videos' => 'Videos',
'remove-image-btn-title' => 'Resmi Kaldır',
'videos' => 'Videolar',
'video' => 'Video',
'add-video-btn-title' => 'Add Video',
'remove-video-btn-title' => 'Remove Video',
'not-support-video' => 'Your browser does not support the video tag.',
'save' => 'Save',
'cancel' => 'Cancel',
'saved-inventory-message' => 'Product inventory saved successfully.',
'add-video-btn-title' => 'Video Ekle',
'remove-video-btn-title' => 'Video Kaldır',
'not-support-video' => 'Tarayıcınız video etiketini desteklemiyor.',
'save' => 'Kaydet',
'cancel' => 'İptal',
'saved-inventory-message' => 'Ürün envanteri başarıyla kaydedildi.',
],
'attributes' => [
@ -649,7 +649,7 @@ return [
'is_comparable' => 'Nitelik kıyaslanabilir',
'default_null_option' => 'Varsayılan boş seçenek oluştur',
'validation-messages' => [
'max-size' => 'The image size must be less than 600 KB',
'max-size' => 'Resim boyutu 600 KB\'den küçük olmalıdır',
],
],
'families' => [
@ -871,9 +871,9 @@ return [
'seo-title' => 'Meta Başlık',
'seo-description' => 'Meta Açıklama',
'seo-keywords' => 'Meta Anahtar Kelimeler',
'maintenance-mode' => 'Maintenance Mode',
'maintenance-mode-text' => 'Message',
'allowed-ips' => 'Allowed IPs',
'maintenance-mode' => 'Bakım Modu',
'maintenance-mode-text' => 'İleti',
'allowed-ips' => 'İzin verilen IP\'ler',
],
'sliders' => [
@ -892,8 +892,8 @@ return [
'update-fail' => 'Slider güncellenemez.',
'delete-success' => 'Slider başarıyla silindi.',
'delete-fail' => 'Slider silinirken hata oluştu.',
'expired-at' => 'Expire Date',
'sort-order' => 'Sort Order',
'expired-at' => 'Son kullanma tarihi',
'sort-order' => 'Sıralama düzeni',
],
'tax-categories' => [
@ -1028,9 +1028,9 @@ return [
'status' => 'Durum',
'active' => 'Aktif',
'inactive' => 'Pasif',
'is-suspended' => 'Is Suspended',
'suspend' => 'Suspend',
'suspended' => 'Suspended',
'is-suspended' => 'Askıya Alındı',
'suspend' => 'Askıya al',
'suspended' => 'Askıya alındı',
],
'reviews' => [
@ -1194,63 +1194,63 @@ return [
'marketing' => [
'templates' => [
'title' => 'Email Templates',
'add-title' => 'Add Email Template',
'edit-title' => 'Edit Email Template',
'save-btn-title' => 'Save',
'general' => 'General',
'name' => 'Name',
'status' => 'Status',
'active' => 'Active',
'inactive' => 'Inactive',
'draft' => 'Draft',
'content' => 'Content',
'create-success' => 'Email template created successfully.',
'update-success' => 'Email template updated successfully.',
'delete-success' => 'Email template deleted successfully',
'title' => 'E-posta Şablonları',
'add-title' => 'E-posta Şablonu Ekle',
'edit-title' => 'E-posta Şablonunu Düzenle',
'save-btn-title' => 'Kaydet',
'general' => 'Genel',
'name' => 'İsim',
'status' => 'Durum',
'active' => 'Aktif',
'inactive' => 'Pasif',
'draft' => 'Taslak',
'content' => 'İçerik',
'create-success' => 'E-posta şablonu başarıyla oluşturuldu.',
'update-success' => 'E-posta şablonu başarıyla güncellendi.',
'delete-success' => 'E-posta şablonu başarıyla silindi.',
],
'campaigns' => [
'title' => 'Campaigns',
'add-title' => 'Add Campaign',
'edit-title' => 'Edit Campaign',
'save-btn-title' => 'Save',
'general' => 'General',
'name' => 'Name',
'status' => 'Status',
'active' => 'Active',
'inactive' => 'Inactive',
'subject' => 'Subject',
'email-template' => 'Email Template',
'audience' => 'Audience',
'channel' => 'Channel',
'customer-group' => 'Customer Group',
'schedule' => 'Schedule',
'schedule-type' => 'Schedule Type',
'once' => 'Once',
'events' => 'Events',
'schedule-date' => 'Schedule Date',
'spooling' => 'Spooling',
'event' => 'Event',
'birthday' => 'Birthday',
'create-success' => 'Campaign created successfully.',
'update-success' => 'Campaign updated successfully.',
'delete-success' => 'Campaign deleted successfully',
'title' => 'Kampanyalar',
'add-title' => 'Kampanya Ekle',
'edit-title' => 'Kampanyayı Düzenle',
'save-btn-title' => 'Kaydet',
'general' => 'Genel',
'name' => 'İsim',
'status' => 'Durum',
'active' => 'Aktif',
'inactive' => 'Pasif',
'subject' => 'Konu',
'email-template' => 'E-posta şablonu',
'audience' => 'Kitle',
'channel' => 'Kanal',
'customer-group' => 'Müşteri Grubu',
'schedule' => 'Takvim',
'schedule-type' => 'Zamanlama türü',
'once' => 'Bir kez',
'events' => 'Etkinlikler',
'schedule-date' => 'Program Tarihi',
'spooling' => 'Biriktir',
'event' => 'Etkinlik',
'birthday' => 'Doğum Günü',
'create-success' => 'Kampanya başarıyla oluşturuldu.',
'update-success' => 'Kampanya başarıyla güncellendi.',
'delete-success' => 'Kampanya başarıyla silindi.',
],
'events' => [
'title' => 'Events',
'add-title' => 'Add Event',
'edit-title' => 'Edit Event',
'save-btn-title' => 'Save',
'general' => 'General',
'name' => 'Name',
'description' => 'Description',
'date' => 'Date',
'create-success' => 'Event created successfully.',
'update-success' => 'Event updated successfully.',
'delete-success' => 'Event deleted successfully.',
'edit-error' => 'Can not edit this event.',
'title' => 'Etkinlikler',
'add-title' => 'Etkinlik Ekle',
'edit-title' => 'Etkinliği Düzenle',
'save-btn-title' => 'Kaydet',
'general' => 'Genel',
'name' => 'İsim',
'description' => 'ıklama',
'date' => 'Tarih',
'create-success' => 'Etkinlik başarıyla oluşturuldu.',
'update-success' => 'Etkinlik başarıyla güncellendi.',
'delete-success' => 'Etkinlik başarıyla silindi.',
'edit-error' => 'Bu etkinlik düzenlenemiyor.',
],
],
@ -1287,7 +1287,7 @@ return [
'tinymce' => [
'http-error' => 'HTTP error.',
'invalid-json' => 'Invalid JSON.',
'upload-failed' => 'Image upload failed due to a XHR Transport error.',
'upload-failed' => 'XHR Aktarım hatası nedeniyle resim yükleme başarısız oldu.',
],
],
@ -1336,16 +1336,16 @@ return [
'delete-success' => 'CMS sayfası başarıyla silindi.',
'delete-failure' => 'CMS sayfası silinirken hata oluştu!',
'preview' => 'Önizleme',
'one-col' => '<div class="mt-10">Use class: <b>"static-container one-column"</b> for one column layout.</div>',
'two-col' => '<div class="mt-10">Use class: <b>"static-container two-column"</b> for two column layout.</div>',
'three-col' => '<div class="mt-10">Use class: <b>"static-container three-column"</b> for three column layout.</div>',
'one-col' => '<div class="mt-10">Bir sütun düzeni için <b>"static-container one-column"</b> sınıfını kullanın.</div>',
'two-col' => '<div class="mt-10">İki sütun düzeni için <b>"static-container two-column"</b> sınıfı kullanın.</div>',
'three-col' => '<div class="mt-10">Üç sütun düzeni için <b>"static-container three-column"</b> sınıfı kullanın.</div>',
'helper-classes' => 'Yardımcı Sınıflar',
],
],
'response' => [
'being-used' => ':name isimli kaynak :source isimli kaynakta kullanılıyor.',
'cannot-change' => 'Cannot change the :name.',
'cannot-change' => ':name değiştirilemez.',
'cannot-delete-default' => 'Varsayılan kanal silinemez.',
'create-success' => ':name başarıyla oluşturuldu.',
'update-success' => ':name başarıyla güncellendi.',
@ -1364,12 +1364,12 @@ return [
'cancel-error' => ':name iptal edilemez.',
'already-taken' => ':name daha önceden girilmiş.',
'order-pending' => 'Bu hesaba ait işlem bekleyen siparişler bulunduğundan hesap silinemez.',
'something-went-wrong' => 'Something went wrong!',
'something-went-wrong' => 'Bir şeyler yanlış gitti!',
],
'validations' => [
'slug-being-used' => 'This slug is getting used in either categories or products.',
'slug-reserved' => 'This slug is reserved.',
'slug-being-used' => 'Bu slug ya kategorilerde ya da ürünlerde kullanılıyor.',
'slug-reserved' => 'Bu slug saklıdır.',
],
'footer' => [
@ -1397,10 +1397,10 @@ return [
],
'system' => [
'catalog' => 'Katalog',
'homepage' => 'Homepage configuration',
'allow-no-of-new-product-homepage' => 'Allowed No of New Product in Homepage',
'allow-no-of-featured-product-homepage' => 'Allowed No of Featured Product in Homepage',
'allow-out-of-stock-items' => 'Allow out of stock items',
'homepage' => 'Ana sayfa yapılandırması',
'allow-no-of-new-product-homepage' => 'Ana Sayfada İzin Verilen Yeni Ürün Sayısı',
'allow-no-of-featured-product-homepage' => 'Ana Sayfada İzin Verilen Öne Çıkan Ürün Sayısı',
'allow-out-of-stock-items' => 'Stokta olmayan ürünlere izin ver',
'products' => 'Ürünler',
'guest-checkout' => 'Ziyaretçi Satışı',
'allow-guest-checkout' => 'Ziyaretçi Alımına İzin Ver',
@ -1411,8 +1411,8 @@ return [
'stock-options' => 'Stok Seçenekleri',
'allow-backorders' => 'Stok Dışı Siparişe İzin Ver',
'customer' => 'Müşteri',
'wishlist' => 'Wishlist',
'wishlist-share' => 'Enable Sharing',
'wishlist' => 'İstek Listesi',
'wishlist-share' => 'Paylaşımı Etkinleştir',
'settings' => 'Ayarlar',
'address' => 'Adres',
'street-lines' => 'Sokak Adresi Satır Sayısı',
@ -1427,7 +1427,7 @@ return [
'state' => 'Şehir',
'zip' => 'Posta Kodu',
'city' => 'İlçe',
'information' => 'Information',
'information' => 'Bilgi',
'street-address' => 'Sokak Adresi',
'title' => 'Başlık',
'description' => 'Açıklama',
@ -1454,13 +1454,13 @@ return [
'weight-unit' => 'Ağırlık Birimi',
'email-settings' => 'Mail Ayarları',
'email-sender-name' => 'Mail Gönderici Adı',
'email-sender-name-tip' => 'This name will be displayed in the customers inbox',
'email-sender-name-tip' => 'Bu ad, müşterilerin gelen kutusunda görüntülenecektir.',
'shop-email-from' => 'Mağaza Mail Adresi [Mail gönderimleri için]',
'shop-email-from-tip' => 'The email address of this channel to send emails to your customers',
'shop-email-from-tip' => 'Müşterilerinize e-posta göndermek için bu kanalın e-posta adresi',
'admin-name' => 'Yönetici Adı',
'admin-name-tip' => 'This name will be displayed in all admin emails',
'admin-name-tip' => 'Bu ad, tüm yönetici e-postalarında görüntülenecektir.',
'admin-email' => 'Yönetici Mail Adresi',
'admin-email-tip' => 'The email address of the admin for this channel to receive emails',
'admin-email-tip' => 'E-postaları almak için bu kanalın yöneticisinin e-posta adresi',
'admin-page-limit' => 'Sayfa Başına Varsayılan İçerik (Yönetici)',
'design' => 'Tasarım',
'admin-logo' => 'Panel Logo',
@ -1489,9 +1489,9 @@ return [
'invoice-slip-design' => 'Fatura Tasarımı',
'logo' => 'logo',
'default' => 'Varsayılan',
'invoice-reminders' => 'Invoice Reminders',
'maximum-limit-of-reminders' => 'Maximum limit of reminders',
'interval-between-reminders' => 'Interval between reminders',
'invoice-reminders' => 'Fatura Hatırlatıcıları',
'maximum-limit-of-reminders' => 'Maksimum hatırlatıcı sınırı',
'interval-between-reminders' => 'Hatırlatıcılar arasındaki aralık',
'sandbox' => 'Havuz',
'all-channels' => 'Tümü',
'all-locales' => 'Tümü',
@ -1525,29 +1525,29 @@ return [
'vat-number' => 'KDV Numarası',
'contact-number' => 'İletişim numarası',
'bank-details' => 'Banka detayları',
'mailing-address' => 'Send Check to',
'instructions' => 'Instructions',
'custom-scripts' => 'Custom Scripts',
'custom-css' => 'Custom CSS',
'custom-javascript' => 'Custom Javascript',
'mailing-address' => 'Çek Gönder',
'instructions' => 'Talimatlar',
'custom-scripts' => 'Özel Komut Dosyaları',
'custom-css' => 'Özel CSS',
'custom-javascript' => 'Özel Javascript',
'paypal-smart-button' => 'PayPal',
'client-id' => 'Client Id',
'client-id-info' => 'Use "sb" for testing.',
'client-secret' => 'Client Secret',
'client-secret-info' => 'Add your secret key here',
'accepted-currencies' => 'Accepted currencies',
'accepted-currencies-info' => 'Add currency code comma seperated e.g. USD,INR,...',
'buy-now-button-display' => 'Allow customers to directly buy products',
'width' => 'Width',
'height' => 'Height',
'cache-small-image' => 'Small Image',
'cache-medium-image' => 'Medium Image',
'cache-large-image' => 'Large Image',
'generate-invoice' => 'Automatically generate the invoice after placing an order',
'set-invoice-status' => 'Set the invoice status after creating the invoice to',
'set-order-status' => 'Set the order status after creating the invoice to',
'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled',
'records-found' => 'Record(s) found',
'client-secret-info' => 'Gizli anahtarınızı buraya ekleyin',
'accepted-currencies' => 'Kabul edilen para birimleri',
'accepted-currencies-info' => 'Para birimi kodunu virgülle ayırarak ekleyin, ör. USD, INR,...',
'buy-now-button-display' => 'Müşterilerin ürünleri doğrudan satın almasına izin verin',
'width' => 'Genişlik',
'height' => 'Yükseklik',
'cache-small-image' => 'Küçük Resim',
'cache-medium-image' => 'Orta Resim',
'cache-large-image' => 'Büyük Resim',
'generate-invoice' => 'Sipariş verdikten sonra faturayı otomatik olarak oluşturun',
'set-invoice-status' => 'Faturayı oluşturduktan sonra fatura durumunu şu şekilde ayarlayın:',
'set-order-status' => 'Faturayı oluşturduktan sonra sipariş durumunu ayarlayın.',
'generate-invoice-applicable' => 'Otomatik fatura oluştur etkinse geçerlidir',
'records-found' => 'Kayıt(lar) bulundu',
],
],

View File

@ -1548,7 +1548,53 @@ return [
'generate-invoice' => '下单后自动生成发票',
'set-invoice-status' => '创建发票后设置发票状态为',
'set-order-status' => '将创建发票后的订单状态设置为',
'generate-invoice-applicable' => '适用于启用自动生成发票的情况'
]
]
'generate-invoice-applicable' => '适用于启用自动生成发票的情况',
'records-found' => '找到记录',
'logo-size' => '图像分辨率应该是 112px X 41px',
'favicon-size' => '图像分辨率应该是 16px X 16px',
'invoice-logo-size' => '图像分辨率应该是 192px X 50px',
],
],
'api' => [
'system' => [
'api' => 'API',
'basic-configuration' => '基本配置',
'customer-configuration' => '客户配置',
'username' => '用户名',
'password' => '密码',
'login-after-register' => '注册后登录',
'info-login' => '信息: 顾客 注册API后必须登录.',
],
'auth' => [
'invalid-auth' => '警告:您无权使用 API。',
'required-token' => '警告:令牌参数是必需的。',
'invalid-store' => '警告:您请求的商店无效。',
'login-required' => '警告:需要客户登录才能将产品添加到比较列表。',
'resource-not-found' => '警告: 已请求:resource 在记录中找不到.',
],
],
'notification' => [
'notification-title' => '通知',
'title-plural' => '通知',
'status' => [
'all' => 'All',
'pending' => 'Pending',
'processing' => 'Processing',
'canceled' => 'Canceled',
'closed' => 'Closed',
'completed' => 'Completed',
],
'view-all' => '查看所有通知',
'no-record' => '没有找到记录',
'read-all' => '标记为已读',
'notification-marked-success' => '通知标记成功',
'order-status-messages' => [
'completed' => '订单完成',
'closed' => '订单已关闭',
'canceled' => '订单取消',
'pending' => '订单待处理',
'processing' => '订单处理',
],
],
];

View File

@ -44,7 +44,7 @@
</div>
<notification
notif-title="{{ __('admin::app.notification.notification-title') }}"
notif-title="{{ __('admin::app.notification.notification-title', ['read' => 0]) }}"
get-notification-url="{{ route('admin.notification.get-notification') }}"
view-all="{{ route('admin.notification.index') }}"
order-view-url="{{ \URL::to('/') }}/admin/viewed-notifications/"

View File

@ -41,7 +41,7 @@
text-align: center;
}
.page-item .pagination-page-nav .active .page-link{
.page-item .pagination-page-nav .active .page-link {
color:#fff !important;
}
</style>

View File

@ -0,0 +1,140 @@
<?php
return [
'admin' => [
'catalog' => [
'products' => [
'booking' => 'Rezervasyon Bilgileri',
'booking-type' => 'Rezervasyon Türü',
'default' => 'Varsayılan',
'appointment-booking' => 'Randevu Rezervasyonu',
'event-booking' => 'Etkinlik Rezervasyonu',
'rental-booking' => 'Kiralık Rezervasyon',
'table-booking' => 'Masa Rezervasyonu',
'slot-duration' => 'Slot Süresi (Dk)',
'break-time' => 'Mola Süresi s/b Slot (Dk)',
'available-every-week' => 'Her Hafta Mevcut',
'yes' => 'Evet',
'no' => 'Hayır',
'available-from' => 'Mevcut',
'available-to' => 'Mevcut',
'same-slot-all-days' => 'Tüm Günler Aynı Slot',
'slot-has-quantity' => 'Slot Miktarı var',
'slots' => 'Slotlar',
'from' => 'İtibaren',
'to' => 'İle',
'qty' => 'Miktar',
'add-slot' => 'Slot Ekle',
'sunday' => 'Pazar',
'monday' => 'Pazartesi',
'tuesday' => 'Salı',
'wednesday' => 'Çarşamba',
'thursday' => 'Perşembe',
'friday' => 'Cuma',
'saturday' => 'Cumartesi',
'renting-type' => 'Kiralama Türü',
'daily' => 'Günlük Bazında',
'hourly' => 'Saatlik Bazında',
'daily-hourly' => 'Her ikisi (Günlük ve Saatlik)',
'daily-price' => 'Günlük Fiyat',
'hourly-price' => 'Saatlik Fiyat',
'location' => 'Konum',
'show-location' => 'Konumu Göster',
'event-start-date' => 'Etkinlik Başlangıç Tarihi',
'event-end-date' => 'Etkinlik Bitiş Tarihi',
'tickets' => 'Biletler',
'add-ticket' => 'Bilet Ekle',
'name' => 'İsim',
'price' => 'Fiyat',
'quantity' => 'Miktar',
'description' => 'Açıklama',
'special-price' => 'Özel Fiyat',
'special-price-from' => 'Kadar Geçerli',
'special-price-to' => 'Geçerlilik Tarihi',
'charged-per' => 'Ücretli',
'guest' => 'Misafir',
'table' => 'Masa',
'prevent-scheduling-before' => 'Önceden Planlamayı Önle',
'guest-limit' => 'Masa Başına Misafir Limiti',
'guest-capacity' => 'Misafir Kapasitesi',
'type' => 'Tür',
'many-bookings-for-one-day' => 'Bir Gün İçin Birçok Rezervasyon',
'one-booking-for-many-days' => 'Birçok Gün İçin Bir Rezervasyon',
'day' => 'Gün',
'status' => 'Durum',
'open' => 'Açık',
'close' => 'Kapalı',
'time-error' => 'Gidiş zamanı, başlangıç zamanından daha büyük olmalıdır.'
]
],
'sales' => [
'bookings' => [
'title' => 'Rezervasyonlar',
]
],
'datagrid' => [
'from' => 'İtibaren',
'to' => 'İle'
]
],
'shop' => [
'products' => [
'location' => 'Konum',
'contact' => 'İletişim',
'email' => 'Email',
'slot-duration' => 'Slot Süresi',
'slot-duration-in-minutes' => ':minutes Dakika',
'today-availability' => 'Bugün Kullanılabilirlik',
'slots-for-all-days' => 'Tüm günler için göster',
'sunday' => 'Pazar',
'monday' => 'Pazartesi',
'tuesday' => 'Salı',
'wednesday' => 'Çarşamba',
'thursday' => 'Perşembe',
'friday' => 'Cuma',
'saturday' => 'Cumartesi',
'closed' => 'Kapalı',
'book-an-appointment' => 'Randevu Al',
'date' => 'Tarih',
'slot' => 'Slot',
'rent-an-item' => 'Eşya Kiralama',
'choose-rent-option' => 'Kiralama Seçeneğini Seçin',
'daily-basis' => 'Günlük Bazında',
'hourly-basis' => 'Saatlik Bazında',
'select-time-slot'=> 'Zaman aralığı seçin',
'select-slot' => 'Slot Seç',
'select-date' => 'Tarih Seç',
'select-rent-time' => 'Kiralama Süresini Seçin',
'from' => 'İtibaren',
'to' => 'İle',
'book-a-table' => 'Bir masa rezervasyonu',
'special-notes' => 'Özel İstek/Notlar',
'event-on' => 'Etkinlik Açık',
'book-your-ticket' => 'Biletinizi Ayırtın',
'per-ticket-price' => 'Bilet Başına :price',
'number-of-tickets' => 'Bilet Sayısı',
'total-tickets' => 'Toplam Biletler',
'base-price' => 'Taban Fiyat',
'total-price' => 'Toplam Fiyat',
'base-price-info' => '(Bu, her miktar için her bilet türü için geçerli olacaktır.)'
],
'cart' => [
'renting_type' => 'Kira Türü',
'daily' => 'Günlük',
'hourly' => 'Saatlik',
'event-ticket' => 'Etkinlik Bileti',
'event-from' => 'Etkinlik Kimden',
'event-till' => 'Etkinlik Sonu',
'rent-type' => 'Kira Türü',
'rent-from' => 'Kiralık',
'rent-till' => 'Kiraya Kadar',
'booking-from' => 'Rezervasyon',
'booking-till' => 'Rezervasyon',
'special-note' => 'Özel İstek/Notlar',
]
]
];

View File

@ -12,7 +12,6 @@ use Webkul\Customer\Mail\RegistrationEmail;
use Webkul\Customer\Mail\VerificationEmail;
use Webkul\Customer\Repositories\CustomerGroupRepository;
use Webkul\Customer\Repositories\CustomerRepository;
use Webkul\Sales\Models\Order;
use Webkul\Shop\Mail\SubscriptionEmail;
class RegistrationController extends Controller
@ -57,8 +56,7 @@ class RegistrationController extends Controller
CustomerRepository $customerRepository,
CustomerGroupRepository $customerGroupRepository,
SubscribersListRepository $subscriptionRepository
)
{
) {
$this->_config = request('_config');
$this->customerRepository = $customerRepository;
@ -89,11 +87,11 @@ class RegistrationController extends Controller
$request->validated();
$data = array_merge(request()->input(), [
'password' => bcrypt(request()->input('password')),
'api_token' => Str::random(80),
'is_verified' => core()->getConfigData('customer.settings.email.verification') ? 0 : 1,
'customer_group_id' => $this->customerGroupRepository->findOneWhere(['code' => 'general'])->id,
'token' => md5(uniqid(rand(), true)),
'password' => bcrypt(request()->input('password')),
'api_token' => Str::random(80),
'is_verified' => core()->getConfigData('customer.settings.email.verification') ? 0 : 1,
'customer_group_id' => $this->customerGroupRepository->findOneWhere(['code' => 'general'])->id,
'token' => md5(uniqid(rand(), true)),
'subscribed_to_news_letter' => isset(request()->input()['is_subscribed']) ? 1 : 0,
]);
@ -130,7 +128,7 @@ class RegistrationController extends Controller
'email' => $data['email'],
'token' => $token,
]));
} catch (\Exception $e) { }
} catch (\Exception $e) {}
}
}
@ -179,9 +177,9 @@ class RegistrationController extends Controller
$customer = $this->customerRepository->findOneByField('token', $token);
if ($customer) {
$customer->update(['is_verified' => 1, 'token' => 'NULL']);
$this->customerRepository->update(['is_verified' => 1, 'token' => 'NULL'], $customer->id);
Order::where('customer_email', $customer->email)->update(['customer_id' => $customer->id]);
$this->customerRepository->syncNewRegisteredCustomerInformations($customer);
session()->flash('success', trans('shop::app.customer.signup-form.verified'));
} else {

View File

@ -5,6 +5,7 @@ namespace Webkul\Customer\Repositories;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Storage;
use Webkul\Core\Eloquent\Repository;
use Webkul\Sales\Models\Order;
class CustomerRepository extends Repository
{
@ -119,4 +120,45 @@ class CustomerRepository extends Repository
$customer->save();
}
}
/**
* Sync new registered customer data.
*
* @param \Webkul\Customer\Contracts\Customer $customer
* @return mixed
*/
public function syncNewRegisteredCustomerInformations($customer)
{
/**
* Setting registered customer to orders.
*/
Order::where('customer_email', $customer->email)->update([
'is_guest' => 0,
'customer_id' => $customer->id,
'customer_type' => \Webkul\Customer\Models\Customer::class,
]);
/**
* Grabbing orders by `customer_id`.
*/
$orders = Order::where('customer_id', $customer->id)->get();
/**
* Setting registered customer to associated order's relations.
*/
$orders->each(function ($order) use ($customer) {
$order->addresses()->update([
'customer_id' => $customer->id,
]);
$order->shipments()->update([
'customer_id' => $customer->id,
'customer_type' => \Webkul\Customer\Models\Customer::class,
]);
$order->downloadable_link_purchased()->update([
'customer_id' => $customer->id,
]);
});
}
}

View File

@ -0,0 +1,40 @@
<?php
return [
'wishlist' => [
'success' => 'Öğe Başarıyla İstek Listesine Eklendi',
'failure' => 'Öğe İstek Listesine Eklenemiyor',
'already' => 'Ürün İstek Listenizde Zaten Mevcut',
'removed' => 'Öğe İstek Listesinden Başarıyla Kaldırıldı',
'remove-fail' => 'Öğe İstek Listesinden Kaldırılamıyor',
'empty' => 'İstek Listenizde Hiç Ürün Yok',
'select-options' => 'İstek Listesine Eklemeden Önce Seçenekleri Seçmeniz Gerekiyor',
'remove-all-success' => 'İstek Listenizdeki Tüm Öğeler Kaldırıldı',
],
'reviews' => [
'empty' => 'Henüz hiçbir ürünü incelemediniz',
],
'forget_password' => [
'reset_link_sent' => 'Şifre sıfırlama bağlantınızı e-posta ile gönderdik.',
'email_not_exist' => "Bu e-posta adresine sahip bir kullanıcı bulamıyoruz",
],
'admin' => [
'system' => [
'captcha' => [
'title' => 'Captcha',
'credentials' => 'Kimlik Bilgileri',
'site-key' => 'Site Key',
'secret-key' => 'Secret Key',
'status' => 'Durum',
'validations' => [
'required' => 'Lütfen CAPTCHA\'yı seçin',
'captcha' => 'Bir şeyler yanlış gitti! Lütfen tekrar deneyin.',
]
],
],
],
];

View File

@ -1,3 +0,0 @@
{
"/js/notification-app.js": "/js/notification-app.js"
}

View File

@ -14,7 +14,6 @@ class NotificationController extends Controller
*/
protected $_config;
/**
* NotificationRepository
*
@ -55,21 +54,19 @@ class NotificationController extends Controller
{
$params = request()->all();
$searchResults = [];
if(isset($params) && isset($params['page'])){
if (isset($params['page'])) {
unset($params['page']);
}
if(isset($params) && $params != NULL){
if (count($params)) {
$searchResults = $this->notificationRepository->getParamsData($params);
}else{
} else {
$searchResults = $this->notificationRepository->with('order')->latest()->paginate(10);
}
return [
'search_results' => $searchResults,
'total_unread' => $this->notificationRepository->where('read',0)->count()
'total_unread' => $this->notificationRepository->where('read', 0)->count(),
];
}
@ -78,10 +75,12 @@ class NotificationController extends Controller
*
* @return \Illuminate\View\View
*/
public function viewedNotifications($orderId){
public function viewedNotifications($orderId)
{
if($notification = $this->notificationRepository->where('order_id',$orderId)->first()){
if ($notification = $this->notificationRepository->where('order_id', $orderId)->first()) {
$notification->read = 1;
$notification->save();
return redirect()->route('admin.sales.orders.view',$orderId);
@ -95,20 +94,20 @@ class NotificationController extends Controller
*
* @return array
*/
public function readAllNotifications(){
$this->notificationRepository->where('read',0)->update(['read' => 1]);
public function readAllNotifications()
{
$this->notificationRepository->where('read', 0)->update(['read' => 1]);
$params = [
"limit" => 5,
"read" => 0
"read" => 0
];
$searchResults = $this->notificationRepository->getParamsData($params);
return [
'search_results' => $searchResults,
'total_unread' => $this->notificationRepository->where('read',0)->count(),
'search_results' => $searchResults,
'total_unread' => $this->notificationRepository->where('read', 0)->count(),
'success_message' => trans('admin::app.notification.notification-marked-success')
];

View File

@ -17,7 +17,7 @@ class Order
protected $notificationRepository;
/**
* Create a new event instance.
* Create a new listener instance.
*
* @return void
*/
@ -33,7 +33,7 @@ class Order
*/
public function createOrder($order)
{
$this->notificationRepository->create(['type' => 'order','order_id' => $order->id]);
$this->notificationRepository->create(['type' => 'order', 'order_id' => $order->id]);
event(new CreateOrderNotification);
}
@ -45,9 +45,9 @@ class Order
*/
public function updateOrder($order)
{
$orderArray =[
'id' => $order->id,
'status' => $order->status
$orderArray = [
'id' => $order->id,
'status' => $order->status,
];
event(new UpdateOrderNotification($orderArray));

View File

@ -23,22 +23,24 @@ class NotificationRepository extends Repository
*/
public function getParamsData($params)
{
if(isset($params['id']) && isset($params['status'])){
return $params['status'] != 'All' ? $this->model->where(function($qry)use ($params){
if (isset($params['id']) && isset($params['status'])) {
return $params['status'] != 'All' ? $this->model->where(function($qry) use ($params) {
$qry->whereHas('order',function ($q) use ($params) {
$q->where(['status' => $params['status']]);
});
})->where('order_id',$params['id'])->with('order')->paginate(10) : $this->model->where('order_id',$params['id'])->with('order')->paginate(10) ;
}elseif (isset($params['status'])) {
return $params['status'] != 'All' ? $this->model->where(function($qry)use ($params){
})->where('order_id', $params['id'])->with('order')->paginate(10) : $this->model->where('order_id', $params['id'])->with('order')->paginate(10) ;
} else if (isset($params['status'])) {
return $params['status'] != 'All' ? $this->model->where(function($qry) use ($params) {
$qry->whereHas('order',function ($q) use ($params) {
$q->where(['status' => $params['status']]);
});
})->with('order')->paginate(10): $this->model->with('order')->latest()->paginate(10);
}elseif(isset($params['limit'])){
} else if(isset($params['read']) && isset($params['limit'])) {
return $this->model->where('read', $params['read'])->limit($params['limit'])->with('order')->latest()->paginate($params['limit']);
} else if(isset($params['limit'])) {
return $this->model->limit($params['limit'])->with('order')->latest()->paginate($params['limit']);
}elseif(isset($params['id'])){
return $this->model->where('order_id',$params['id'])->with('order')->paginate(10);
} else if(isset($params['id'])) {
return $this->model->where('order_id', $params['id'])->with('order')->paginate(10);
}
return [];

View File

@ -13,7 +13,6 @@ use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Webkul\Attribute\Models\Attribute;
use Webkul\Attribute\Repositories\AttributeRepository;
use Webkul\Checkout\Facades\Cart;
use Webkul\Core\Eloquent\Repository;
use Webkul\Product\Models\Product;
use Webkul\Product\Models\ProductAttributeValueProxy;
@ -198,7 +197,6 @@ class ProductRepository extends Repository
$qb = $query->distinct()
->select('product_flat.*')
->leftJoin('product_categories', 'product_categories.product_id', '=', 'product_flat.product_id')
->leftJoin('product_attribute_values', 'product_attribute_values.product_id', '=', 'product_flat.product_id')
->where('product_flat.channel', $channel)
->where('product_flat.locale', $locale)
->whereNotNull('product_flat.url_key');
@ -266,14 +264,16 @@ class ProductRepository extends Repository
}
}
$this->variantJoin($qb);
$qb
->leftJoin('catalog_rule_product_prices', 'catalog_rule_product_prices.product_id', '=', 'product_flat.product_id')
->leftJoin('product_customer_group_prices', 'product_customer_group_prices.product_id', '=', 'product_flat.product_id')
->leftJoin('catalog_rule_product_prices', 'catalog_rule_product_prices.product_id', '=', 'variants.product_id')
->leftJoin('product_customer_group_prices', 'product_customer_group_prices.product_id', '=', 'variants.product_id')
->where(function ($qb) use ($priceRange, $customerGroupId) {
$qb->where(function ($qb) use ($priceRange) {
$qb
->where('product_flat.min_price', '>=', core()->convertToBasePrice($priceRange[0]))
->where('product_flat.min_price', '<=', core()->convertToBasePrice(end($priceRange)));
->where('variants.min_price', '>=', core()->convertToBasePrice($priceRange[0]))
->where('variants.min_price', '<=', core()->convertToBasePrice(end($priceRange)));
})
->orWhere(function ($qb) use ($priceRange) {
$qb
@ -296,6 +296,8 @@ class ProductRepository extends Repository
));
if (count($attributeFilters) > 0) {
$this->variantJoin($qb);
$qb->where(function ($filterQuery) use ($attributeFilters) {
foreach ($attributeFilters as $attribute) {
$filterQuery->orWhere(function ($attributeQuery) use ($attribute) {
@ -329,7 +331,7 @@ class ProductRepository extends Repository
# this is key! if a product has been filtered down to the same number of attributes that we filtered on,
# we know that it has matched all of the requested filters.
$qb->groupBy('product_flat.id');
$qb->groupBy('variants.id');
$qb->havingRaw('COUNT(*) = ' . count($attributeFilters));
}
@ -606,6 +608,25 @@ class ProductRepository extends Repository
return $copiedProduct;
}
/**
* Variant join.
*
* @param mixed $query
* @return void
*/
private function variantJoin($query)
{
static $alreadyJoined = false;
if (! $alreadyJoined) {
$alreadyJoined = true;
$query
->join('product_flat as variants', 'product_flat.id', '=', DB::raw('COALESCE(' . DB::getTablePrefix() . 'variants.parent_id, ' . DB::getTablePrefix() . 'variants.id)'))
->leftJoin('product_attribute_values', 'product_attribute_values.product_id', '=', 'variants.product_id');
}
}
/**
* Get default sort by option.
*

View File

@ -3,15 +3,15 @@
namespace Webkul\Sales\Models;
use Illuminate\Database\Eloquent\Factories\Factory;
use Webkul\Checkout\Models\CartProxy;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Webkul\Checkout\Models\CartProxy;
use Webkul\Sales\Contracts\Order as OrderContract;
use Webkul\Sales\Database\Factories\OrderFactory;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Order extends Model implements OrderContract
{
@ -44,13 +44,13 @@ class Order extends Model implements OrderContract
];
protected $statusLabel = [
self::STATUS_PENDING => 'Pending',
self::STATUS_PENDING => 'Pending',
self::STATUS_PENDING_PAYMENT => 'Pending Payment',
self::STATUS_PROCESSING => 'Processing',
self::STATUS_COMPLETED => 'Completed',
self::STATUS_CANCELED => 'Canceled',
self::STATUS_CLOSED => 'Closed',
self::STATUS_FRAUD => 'Fraud',
self::STATUS_PROCESSING => 'Processing',
self::STATUS_COMPLETED => 'Completed',
self::STATUS_CANCELED => 'Canceled',
self::STATUS_CLOSED => 'Closed',
self::STATUS_FRAUD => 'Fraud',
];
/**
@ -99,7 +99,7 @@ class Order extends Model implements OrderContract
public function items(): HasMany
{
return $this->hasMany(OrderItemProxy::modelClass())
->whereNull('parent_id');
->whereNull('parent_id');
}
/**
@ -118,6 +118,14 @@ class Order extends Model implements OrderContract
return $this->hasMany(OrderItemProxy::modelClass());
}
/**
* Get the order record associated with the item.
*/
public function downloadable_link_purchased()
{
return $this->hasMany(DownloadableLinkPurchasedProxy::modelClass());
}
/**
* Get the order shipments record associated with the order.
*/
@ -180,7 +188,7 @@ class Order extends Model implements OrderContract
public function billing_address(): HasMany
{
return $this->addresses()
->where('address_type', OrderAddress::ADDRESS_TYPE_BILLING);
->where('address_type', OrderAddress::ADDRESS_TYPE_BILLING);
}
/**
@ -189,7 +197,7 @@ class Order extends Model implements OrderContract
public function getBillingAddressAttribute()
{
return $this->billing_address()
->first();
->first();
}
/**
@ -198,7 +206,7 @@ class Order extends Model implements OrderContract
public function shipping_address(): HasMany
{
return $this->addresses()
->where('address_type', OrderAddress::ADDRESS_TYPE_SHIPPING);
->where('address_type', OrderAddress::ADDRESS_TYPE_SHIPPING);
}
/**
@ -207,7 +215,7 @@ class Order extends Model implements OrderContract
public function getShippingAddressAttribute()
{
return $this->shipping_address()
->first();
->first();
}
/**
@ -227,7 +235,7 @@ class Order extends Model implements OrderContract
{
foreach ($this->items as $item) {
if ($item->getTypeInstance()
->isStockable()) {
->isStockable()) {
return true;
}
}
@ -283,8 +291,8 @@ class Order extends Model implements OrderContract
public function hasOpenInvoice(): bool
{
$pendingInvoice = $this->invoices()->where('state', 'pending')
->orWhere('state', 'pending_payment')
->first();
->orWhere('state', 'pending_payment')
->first();
if ($pendingInvoice) {
return true;
@ -313,7 +321,7 @@ class Order extends Model implements OrderContract
}
$pendingInvoice = $this->invoices->where('state', 'pending')
->first();
->first();
if ($pendingInvoice) {
return true;
}
@ -339,7 +347,7 @@ class Order extends Model implements OrderContract
}
$pendingInvoice = $this->invoices->where('state', 'pending')
->first();
->first();
if ($pendingInvoice) {
return false;
}
@ -351,7 +359,7 @@ class Order extends Model implements OrderContract
}
if ($this->base_grand_total_invoiced - $this->base_grand_total_refunded - $this->refunds()
->sum('base_adjustment_fee') > 0) {
->sum('base_adjustment_fee') > 0) {
return true;
}
@ -365,6 +373,6 @@ class Order extends Model implements OrderContract
*/
protected static function newFactory(): Factory
{
return OrderFactory::new();
return OrderFactory::new ();
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
{
"/js/shop.js": "/js/shop.js?id=f4cfa6bfa7a408f0ce86",
"/css/shop.css": "/css/shop.css?id=2e1191f8de843a86ba34"
"/css/shop.css": "/css/shop.css?id=0198b96b5e7871291a68"
}

View File

@ -1082,6 +1082,19 @@ section.slider-block {
.btn.btn-sm {
padding: 9px 25px;
}
.button-group {
margin-top: 15px;
margin-bottom: 0;
display: grid;
column-gap: 10px;
grid-template-columns: auto auto;
.btn {
word-break: break-all;
text-align: center;
}
}
}
.cart-dropdown-container {
@ -3274,6 +3287,7 @@ section.review {
.review-layouter {
display: flex;
width: 100%;
.product-info {
max-width: 25%;
@ -3286,6 +3300,7 @@ section.review {
img {
height: 280px;
width: 280px;
max-width: 100%;
}
}

View File

@ -219,7 +219,7 @@ return [
'page-title' => 'Adres',
'title' => 'Adres',
'add' => 'Adres Ekle',
'edit' => 'Düzenşe',
'edit' => 'Düzenle',
'empty' => 'Henüz kayıtlı adresiniz bulunmuyor. Eklemek için lütfen aşağıdaki linki tıklayınız.',
'create' => 'Adres Ekle',
'delete' => 'Sil',

View File

@ -118,7 +118,7 @@
<span style="font-size: 12px;">{{ __('shop::app.header.dropdown-text') }}</span>
</div>
<div style="margin-top: 15px;">
<div class="button-group">
<a class="btn btn-primary btn-md" href="{{ route('customer.session.index') }}" style="color: #ffffff">
{{ __('shop::app.header.sign-in') }}
</a>

View File

@ -0,0 +1,27 @@
<?php
return [
'admin' => [
'system' => [
'social-login' => 'Sosyal Medya Giriş',
'enable-facebook' => 'Facebook Etkinleştir',
'enable-twitter' => 'Twitter Etkinleştir',
'enable-google' => 'Google Etkinleştir',
'enable-linkedin' => 'LinkedIn Etkinleştir',
'enable-github' => 'Github Etkinleştir'
]
],
'shop' => [
'customer' => [
'login-form' => [
'continue-with-facebook' => 'Facebook İle Devam Et',
'continue-with-twitter' => 'Twitter İle Devam Et',
'continue-with-google' => 'Google İle Devam Et',
'continue-with-linkedin' => 'LinkedIn İle Devam Et',
'continue-with-github' => 'Github İle Devam Et',
'or' => 'Veya'
]
]
]
];

View File

@ -4,14 +4,14 @@ return [
'admin' => [
'system' => [
'taxes' => [
'taxes' => 'Taxes',
'catalogue' => 'Catalog',
'pricing' => 'Pricing',
'tax-inclusive' => 'Tax inclusive',
'default-location-calculation' => 'Default Location Calculation',
'default-country' => 'Default Country',
'default-state' => 'Default State',
'default-post-code' => 'Default Post Code',
'taxes' => 'Vergiler',
'catalogue' => 'Katalog',
'pricing' => 'Fiyatlandırma',
'tax-inclusive' => 'Vergiler dahil',
'default-location-calculation' => 'Varsayılan Konum Hesaplama',
'default-country' => 'Varsayılan Ülke',
'default-state' => 'Varsayılan durum',
'default-post-code' => 'Varsayılan Posta Kodu',
],
]
]

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
{
"/js/ui.js": "/js/ui.js?id=2d3c7f7ecb9aecfd0d8b",
"/js/ui.js": "/js/ui.js?id=72f4ff44ad3698911872",
"/css/ui.css": "/css/ui.css?id=e2aba6492905df892f66"
}

View File

@ -599,7 +599,7 @@
v-text="translations.submit"
type="submit"
class="btn btn-sm btn-primary"
style="margin-left: 10px"
style="margin-left: 10px; white-space: nowrap;"
></button>
</form>
</div>
@ -634,7 +634,7 @@
v-for="(column, columnKey) in columns"
v-text="column.label"
class="grid_head"
:class="{sortable: column.sortable}"
:class="{ sortable: column.sortable }"
:style="
typeof column.width !== 'undefined' &&
column.width
@ -804,6 +804,7 @@ export default {
data: function() {
return {
id: btoa(this.src),
url: this.src,
isDataLoaded: false,
dataGridIndex: 0,
@ -854,6 +855,8 @@ export default {
hitUrl: function() {
let self = this;
this.analyzeDatagridsInfo();
axios
.get(this.url)
.then(function(response) {
@ -872,6 +875,97 @@ export default {
});
},
analyzeDatagridsInfo: function() {
if (!this.isDataLoaded && this.url === `${this.src}?v=1`) {
let datagridInfo = this.getCurrentDatagridInfo();
if (datagridInfo) {
this.filterCurrentDatagridFromDatagridsInfo();
this.url = datagridInfo.previousUrl;
}
} else {
let datagridsInfo = this.getDatagridsInfo();
if (datagridsInfo && datagridsInfo.length > 0) {
if (this.isCurrentDatagridInfoExists()) {
datagridsInfo = datagridsInfo.map(datagrid => {
if (datagrid.id === this.id) {
return this.getDatagridsInfoDefaults();
}
return datagrid;
});
} else {
datagridsInfo.push(this.getDatagridsInfoDefaults());
}
} else {
datagridsInfo = [this.getDatagridsInfoDefaults()];
}
this.updateDatagridsInfo(datagridsInfo);
}
},
isCurrentDatagridInfoExists: function() {
let datagridsInfo = this.getDatagridsInfo();
return !!datagridsInfo.find(({ id }) => id === this.id);
},
getCurrentDatagridInfo: function() {
let datagridsInfo = this.getDatagridsInfo();
return this.isCurrentDatagridInfoExists()
? datagridsInfo.find(({ id }) => id === this.id)
: null;
},
getDatagridsInfoStorageKey: function() {
return 'datagridsInfo';
},
getDatagridsInfoDefaults: function() {
return {
id: this.id,
previousUrl: this.url
};
},
getDatagridsInfo: function() {
let storageInfo = localStorage.getItem(
this.getDatagridsInfoStorageKey()
);
return !this.isValidJsonString(storageInfo)
? []
: JSON.parse(storageInfo) ?? [];
},
updateDatagridsInfo: function(info) {
localStorage.setItem(
this.getDatagridsInfoStorageKey(),
JSON.stringify(info)
);
},
filterCurrentDatagridFromDatagridsInfo: function() {
let datagridsInfo = this.getDatagridsInfo();
datagridsInfo = datagridsInfo.filter(({ id }) => id !== this.id);
this.updateDatagridsInfo(datagridsInfo);
},
isValidJsonString: function(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
},
initDatagrid: function() {
this.setParamsAndUrl();
@ -1581,7 +1675,8 @@ export default {
window.flashMessages.push({
type: 'alert-error',
message: response.data.message ?? 'Something went wrong!'
message:
response.data.message ?? 'Something went wrong!'
});
self.$root.addFlashMessages();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,10 @@
{
"/js/jquery-ez-plus.js": "/js/jquery-ez-plus.js?id=ba3c7cada62de152fd8fce211d0b1b70",
"/js/velocity-core.js": "/js/velocity-core.js?id=73cc7c3501570ebe9151c72d954bd97d",
"/js/velocity.js": "/js/velocity.js?id=8ee54dee47fe0c33e837a3c84d7dd270",
"/js/velocity.js": "/js/velocity.js?id=ac985a4662e87e724291df2a253941e3",
"/js/manifest.js": "/js/manifest.js?id=3cded37ef514b0fb89b10e7109801248",
"/js/components.js": "/js/components.js?id=aa38c7c0c1db2c698155567aacf379d2",
"/css/velocity.css": "/css/velocity.css?id=c3f8667508711413ddd1d34b655de727",
"/js/components.js": "/js/components.js?id=f68dd472b8f0ef2f0199f62f49ba9d91",
"/css/velocity.css": "/css/velocity.css?id=45bc25fe8f8b1199764ae43cad033da4",
"/css/velocity-admin.css": "/css/velocity-admin.css?id=b67a82956e53163b5e3ff45a44f9778f",
"/images/icon-calendar.svg": "/images/icon-calendar.svg?id=870d0f733a58377422766f3152e15486",
"/images/icon-camera.svg": "/images/icon-camera.svg?id=b2fd2f9e17e1ccee96e29f6c6cec91e8",

View File

@ -4,6 +4,8 @@
:dir="localeDirection"
:id="id"
:navigationEnabled="true"
navigationPrevLabel="<span class='rango-arrow-left'></span>"
navigationNextLabel="<span class='rango-arrow-right'></span>"
:paginationEnabled="true"
:perPage="parseInt(slidesPerPage)"
:loop="loop == 'true' ? true : false"

View File

@ -11,7 +11,7 @@
@mouseout="toggleSidebar('0', $event, 'mouseout')"
@mouseover="toggleSidebar('0', $event, 'mouseover')"
>
<i class="rango-view-list text-down-4 align-vertical-top fs18"> </i>
<i class="rango-view-list align-vertical-top fs18"> </i>
<span
class="pl5"

View File

@ -2,8 +2,10 @@
<div :class="`dropdown ${cartItems.length > 0 ? '' : 'disable-active'}`">
<div class="dropdown-toggle btn btn-link" id="mini-cart" :class="{'cursor-not-allowed': ! cartItems.length}">
<div class="mini-cart-content">
<i class="material-icons-outlined text-down-3">shopping_cart</i>
<span class="badge" v-text="cartItems.length" v-if="cartItems.length != 0"></span>
<i class="material-icons-outlined">shopping_cart</i>
<div class="badge-container">
<span class="badge" v-text="cartItems.length" v-if="cartItems.length != 0"></span>
</div>
<span class="fs18 fw6 cart-text" v-text="cartText"></span>
</div>
@ -24,9 +26,9 @@
v-for="(item, index) in cartItems"
>
<div class="col-3 product-image-container mr15">
<a @click="removeProduct(item.id)">
<span class="remove-item" @click="removeProduct(item.id)">
<span class="rango-close"></span>
</a>
</span>
<a
class="unset"
@ -43,7 +45,7 @@
<div class="col-9 no-padding card-body align-vertical-top">
<div class="no-padding">
<div
class="fs16 text-nowrap fw6"
class="fs16 text-nowrap fw6 product-name"
v-html="item.name"
></div>

View File

@ -10,7 +10,9 @@
v-text="quantityText"
></label>
<button type="button" class="decrease" @click="decreaseQty()">-</button>
<button type="button" class="decrease" @click="decreaseQty()">
<i class="rango-minus"></i>
</button>
<input
ref="quantityChanger"
@ -23,7 +25,9 @@
@keyup="setQty($event)"
/>
<button type="button" class="increase" @click="increaseQty()">+</button>
<button type="button" class="increase" @click="increaseQty()">
<i class="rango-plus"></i>
</button>
<span class="control-error" v-if="errors.has(controlName)">{{
errors.first(controlName)

View File

@ -5,7 +5,7 @@
:class="`sidebar ${addClass ? addClass : ''}`"
v-if="slicedCategories && slicedCategories.length > 0"
>
<ul type="none">
<ul type="none" style="margin-bottom: 0">
<li
:key="categoryIndex"
:id="`category-${category.id}`"

View File

@ -1,3 +1,11 @@
/*
|
| Added back again because in chrome this is not using and light house also saying not used.
| But in mozilla all fonts are gone which creating problem.
|
*/
@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600;700&display=swap');
/* main imports */
@import 'main/rango';
@import 'main/icons';
@ -97,6 +105,10 @@ body {
font-family: $font-family-pro;
}
label {
margin: 0;
}
.btn {
&:hover {
text-decoration: none;
@ -380,13 +392,13 @@ body {
header {
.logo {
height: 50px;
height: 46px;
padding-left: 10px;
}
#search-form {
height: 40px;
margin: 5px 0px;
margin: 8px 0px;
background: $white-color;
* {
@ -467,53 +479,21 @@ header {
}
}
/* To Do: To avoid CLS reserve width for all locale */
.mini-cart-container {
height: 50px;
padding: 5px 17px;
display: inline-block;
cursor: pointer;
#mini-cart {
.mini-cart-content {
font-size: 16px;
font-weight: 600;
text-align: right;
margin-right: 7px;
letter-spacing: 0;
position: relative;
color: $font-color;
display: inline-block;
i {
+ span.cart-text {
padding-left: 0px;
vertical-align: text-bottom;
}
}
.cart-text {
padding-left: 5px;
}
+ .down-arrow-container {
.rango-arrow-down {
top: 8px;
}
}
}
}
}
.left-wrapper {
float: right;
.compare-btn,
.wishlist-btn {
height: 50px;
.wishlist-btn,
.mini-cart-btn {
font-size: 18px;
font-weight: 600;
padding: 10px 16px 6px 16px;
margin: 16px;
cursor: pointer;
display: inline-block;
&.mini-cart-btn {
margin-right: 0;
}
i {
margin-right: 5px;
@ -538,8 +518,39 @@ header {
}
span {
top: 2px;
position: relative;
padding-left: 0;
}
#mini-cart {
padding: 0;
line-height: inherit;
.mini-cart-content {
font-size: 16px;
font-weight: 600;
text-align: right;
margin-right: 7px;
letter-spacing: 0;
position: relative;
color: $font-color;
display: inline-block;
i {
+ span.cart-text {
padding-left: 0px;
vertical-align: text-bottom;
}
}
+ .down-arrow-container {
top: 0;
.rango-arrow-down {
top: 0;
}
}
}
}
}
}

View File

@ -47,6 +47,14 @@
.accordian {
.accordian-header {
width: 100%;
font-size: 18px;
cursor: pointer;
color: #3a3a3a;
padding: 20px 0;
display: inline-block;
border-bottom: 1px solid #d3d3d3;
i.rango-arrow {
float: right;
font-size: 24px;
@ -57,39 +65,24 @@
}
}
.accordian-content {
width: 100%;
display: none;
padding-bottom: 20px;
}
&.active {
.accordian-header {
border-bottom: 0;
i.rango-arrow::before {
content: "\E906";
}
}
}
}
.accordian {
.accordian-header {
width: 100%;
font-size: 18px;
cursor: pointer;
color: #3a3a3a;
margin-top: -1px;
padding-bottom: 20px;
display: inline-block;
}
.accordian-content {
width: 100%;
display: none;
padding-bottom: 10px;
}
&.active {
.accordian-header {
padding-bottom: 10px;
}
.accordian-content {
display: inline-block;
border-bottom: 1px solid #d3d3d3;
}
}
}

View File

@ -287,6 +287,10 @@
white-space: nowrap;
text-overflow: ellipsis;
}
.product-price {
height: 72px;
}
}
.sticker {
@ -394,50 +398,89 @@
.quantity {
@extend .btn-group;
width: 100%;
padding-bottom: 10px;
font-size: 16px !important;
label {
float: left;
padding: 5px 15px 10px 0;
}
button,
input {
@extend .btn;
button {
border: 1px solid #DCDCDC;
padding: 7px;
background: transparent;
text-align: center;
height: 35px;
border-radius: 2px;
vertical-align: top;
padding: 0 10px !important;
font-size: 24px !important;
font-weight: 600 !important;
color: $black-color !important;
background-color: $white-color;
border: 1px solid $border-common !important;
&.decrease {
border-right: 0;
}
&.increase {
border-left: 0;
}
&:hover,
&:active,
&:focus {
outline: none;
}
.rango-plus,
.rango-minus {
font-size: 20px;
vertical-align: middle;
}
}
input {
border: 1px solid #DCDCDC;
border-right: 0;
border-left: 0;
max-width: 50px;
cursor: default;
font-size: 16px !important;
text-align: center;
height: 38px;
margin-left: -5px;
margin-right: -5px;
vertical-align: top;
text-align: center;
font-size: 16px;
font-weight: 600;
}
button:hover {
background-color: #f5f5f5 !important;
}
button:active,
button:focus,
input:active,
input:focus {
outline: none !important;
box-shadow: none !important;
}
// button,
// input {
// @extend .btn;
// height: 35px;
// border-radius: 2px;
// vertical-align: top;
// padding: 0 10px !important;
// font-size: 24px !important;
// font-weight: 600 !important;
// color: $black-color !important;
// background-color: $white-color;
// border: 1px solid $border-common !important;
// }
// input {
// max-width: 50px;
// cursor: default;
// font-size: 16px !important;
// text-align: center;
// margin-left: -5px;
// margin-right: -5px;
// }
// button:hover {
// background-color: #f5f5f5 !important;
// }
// button:active,
// button:focus,
// input:active,
// input:focus {
// outline: none !important;
// box-shadow: none !important;
// }
}
.form-container {
@ -561,26 +604,6 @@
}
}
.mini-cart-container {
#mini-cart {
outline: none;
box-shadow: none;
text-decoration: unset;
.badge {
@include border-radius(50%);
top: -2px;
left: 15px;
padding: 4px;
min-width: 20px;
position: absolute;
color: $white-color;
background: $button-primary-bg;
}
}
}
.dropdown-icon-custom::after {
top: -5px;
color: black;
@ -597,11 +620,12 @@
}
#cart-modal-content {
top: 44px;
top: 40px;
z-index: 100;
width: 350px;
left: -265px;
right: 0;
position: absolute;
border-top: 4px solid #26A37C;
.close {
top: 12px;
@ -629,8 +653,14 @@
border: 1px solid $border-light;
}
label {
float: left;
margin-top: 7px;
}
input {
width: 30px;
width: 40px;
height: 36px;
text-align: center;
font-weight: 500;
border: 1px solid $border-light;
@ -640,18 +670,20 @@
float: right;
}
.rango-close {
.remove-item {
top: -10px;
left: -10px;
padding: 0px 4px 3px 3px;
font-size: 10px;
max-height: 17px;
line-height: 1.3rem;
text-align: center;
position: absolute;
border-radius: 50%;
color: $white-color;
background: $black-color;
position: absolute;
background: #111111;
color: #FFFFFF;
padding: 0px 4px;
.rango-close {
font-size: 12px;
font-weight: 600;
padding: 0;
}
}
}
@ -665,17 +697,17 @@
}
.cart-details {
padding: 40px 20px;
padding: 40px 0px;
h1 {
margin-bottom: 30px;
}
.cart-details-header {
h2 {
margin-bottom: 20px;
}
h1 {
margin-bottom: 25px;
}
.cart-details-header {
.cart-header {
max-height: 45px;
margin-bottom: 20px;
@ -695,6 +727,8 @@
.product-quantity {
.quantity {
display: inline-flex;
width: unset;
float: right;
label {
display: none !important;
@ -746,6 +780,37 @@
line-height: 20px;
}
}
.item-price {
margin-top: 12px !important;
font-size: 18px;
font-weight: 600;
}
.item-actions {
margin-top: 12px !important;
.d-inline-block {
float: left;
&:first-child {
margin-right: 30px;
}
.material-icons {
float: left;
margin-left: -2px;
margin-right: 5px;
}
}
}
}
.product-quantity {
.quantity {
position: relative;
top: -8px;
}
}
.misc {
@ -1007,11 +1072,6 @@
}
}
.accordian .accordian-header {
padding: 10px 0;
font-weight: 600;
}
.image-wrapper {
width: 100%;
margin-top: 10px;
@ -1532,8 +1592,6 @@
}
.product-price {
height: 72px;
.price-label {
margin-right: 6px;
}
@ -1577,7 +1635,7 @@
}
&.final-price {
font-size: 24px;
font-size: 30px;
}
}
}
@ -1617,7 +1675,7 @@
*/
.sticky-header {
top: 0px;
height: 55px;
height: 56px;
z-index: 100;
position: sticky;
background: white;
@ -1763,7 +1821,7 @@
border-left: 1px solid $border-common;
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19),
0 6px 6px rgba(0, 0, 0, 0.23);
overflow-y: auto;
overflow-y: scroll;
li:nth-last-of-type(1) {
margin-bottom: 10px;
@ -1877,7 +1935,6 @@
.quantity {
border-top: 0;
padding-bottom: 0;
&.has-error {
button {

View File

@ -247,8 +247,9 @@
padding: 8px 12px;
display: block;
cursor: default;
color: #a2a2a2;
color: rgba(0, 0, 0, 0.53);
font-size: 18px;
font-weight: 600;
border-bottom: 1px solid #C1C2C3;
}
@ -276,6 +277,7 @@
a {
padding: 8px 12px;
font-size: 16px;
&:link,
&:active,

View File

@ -24,7 +24,6 @@
left: -2px;
height: 38px;
font-size: 18px;
max-width: 110px;
line-height: 10px;
position: relative;
}

View File

@ -470,9 +470,12 @@ header #search-form > *:focus {
}
.main-category {
padding: 8px 15px;
padding: 10px 15px;
border-top: 1px solid $border-common;
border-bottom: 5px solid transparent;
.pl5 {
vertical-align: top;
}
}
.content-list {
@ -499,7 +502,7 @@ header #search-form > *:focus {
cursor: pointer;
font-size: 16px;
font-weight: 600;
padding: 8px 15px;
padding: 11px 15px;
letter-spacing: 0;
position: relative;
color: $white-color;
@ -712,6 +715,7 @@ body::after {
.slider-container {
min-height: 400px;
margin-bottom: 20px;
}
.remove-padding-margin {

View File

@ -388,7 +388,7 @@
}
}
.mini-cart-container {
.mini-cart-btn {
display: none;
}
@ -461,7 +461,7 @@
.product-detail {
#product-form {
.form-container {
.left {
div.left {
top: 0px;
position: relative;
margin-bottom: 20px;

View File

@ -8,10 +8,6 @@
@extend .fs16;
> div {
@extend .mb20;
border-bottom: 1px solid $border-common;
&.attributes {
.attribute {
margin-bottom: 20px;
@ -35,14 +31,20 @@
.reviews {
vertical-align: top;
.stars {
vertical-align: middle;
margin-bottom: -6px;
}
> div {
display: inline-block;
vertical-align: middle;
}
}
.info {
@extend .mb15;
margin-left: 0px;
border-bottom: 1px solid #d3d3d3;
> h2,
div {
@ -50,11 +52,11 @@
}
> * {
margin-bottom: 10px;
margin-bottom: 14px;
}
h2 {
@extend .fw7;
@extend .fw6;
@extend .fs24;
}
@ -68,12 +70,14 @@
}
.availability {
button {
label {
width: max-content;
border: none;
color: white;
font-weight: 600;
cursor: default;
padding: 2px 11px;
margin: 0;
padding: 1px 8px 3px 8px;
background: $button-danger;
&.active {
@ -154,7 +158,7 @@
}
.product-price {
height: unset;
line-height: 38px;
.price-from {
.bundle-regular-price {
@ -278,17 +282,18 @@
}
}
.layouter,
#product-form {
.layouter {
height: 100%;
}
#product-form {
height: 100%;
.form-container {
height: 100%;
position: relative;
.left {
div.left {
top: 60px;
padding: 0px;
position: sticky;
@ -354,14 +359,6 @@
}
}
.accordian {
&.active {
.accordian-header {
padding-bottom: 0px;
}
}
}
.description {
overflow: auto;
ul,
@ -372,13 +369,11 @@
}
.accordian-content {
div {
overflow: auto;
}
font-weight: 400;
font-size: 16px;
}
.full-description {
font-size: 14px;
ul,
ol {
margin: revert;
@ -387,6 +382,8 @@
}
.full-specifications {
width: 100%;
tr {
td:first-child() {
width: 100px;

View File

@ -56,7 +56,7 @@ body {
}
}
.mini-cart-container {
.mini-cart-btn {
#mini-cart {
.badge {
top: -8px;
@ -103,7 +103,7 @@ body {
}
}
.main-content-wrapper .vc-header .mini-cart-container {
.main-content-wrapper .vc-header .mini-cart-btn {
#mini-cart {
.badge {
top: -6px;

View File

@ -611,7 +611,8 @@
.product-image {
@extend .bg-image;
height: 100%;
width: 70px;
height: 70px;
background-position: center;
}
@ -621,7 +622,10 @@
padding: 10px 0 !important;
.product-name {
font-size: 18px;
color: #000000;
width: 100%;
margin-bottom: 10px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
@ -792,6 +796,10 @@ a {
.VueCarousel-navigation-next {
right: 12px;
}
span {
font-size: 32px;
}
}
}

View File

@ -1,11 +1,3 @@
/*
|
| Added back again because in chrome this is not using and light house also saying not used.
| But in mozilla all fonts are gone which creating problem.
|
*/
@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap');
/*
|--------------------------------------------------------------------------
| Velocity Variables

View File

@ -113,14 +113,14 @@ return [
'general' => 'Genel',
'add-image-btn-title' => 'Görsel Ekle',
'footer-middle' => [
'about-us' => 'About Us',
'customer-service' => 'Customer Service',
'whats-new' => 'What\'s New',
'contact-us' => 'Contact Us',
'order-and-returns' => 'Order and Returns',
'payment-policy' => 'Payment Policy',
'shipping-policy' => 'Shipping Policy',
'privacy-and-cookies-policy' => 'Privacy and Cookies Policy'
'about-us' => 'Hakkımızda',
'customer-service' => 'Müşteri Servisi',
'whats-new' => 'Yeni Neler Var',
'contact-us' => 'Bize Ulaşın',
'order-and-returns' => 'Sipariş ve İade',
'payment-policy' => 'Ödeme Politikası',
'shipping-policy' => 'Nakliye Politikası',
'privacy-and-cookies-policy' => 'Gizlilik ve Çerez Politikası'
]
],
'category' => [
@ -262,7 +262,7 @@ return [
'short-description' => 'Kısa Açıklamalar',
'recently-viewed' => 'En Son Gezdiğiniz Ürünler',
'be-first-review' => 'Bu ürüne ilk siz inceleme girin!',
'tax-inclusive' => 'Inclusive of all taxes',
'tax-inclusive' => 'Tüm vergiler dahildir',
],
'shop' => [

View File

@ -12,19 +12,8 @@
@push('css')
<style type="text/css">
.quantity {
width: unset;
float: right;
}
.alert-wishlist {
display: inline-block;
position: relative;
top: -2px;
}
@media only screen and (max-width: 600px) {
.rango-delete{
.rango-delete {
margin-top: 10px;
margin-left: -10px !important;
}
@ -38,10 +27,10 @@
<script type="text/x-template" id="cart-template">
<div class="container">
<section class="cart-details row no-margin col-12">
<h2 class="cart-details-header fw6 col-12">{{ __('shop::app.checkout.cart.title') }}</h2>
<h2 class="fw6 col-12">{{ __('shop::app.checkout.cart.title') }}</h2>
@if ($cart)
<div class="cart-details-header col-lg-6 col-md-12">
<div class="cart-details-header col-lg-7 col-md-12">
<div class="row cart-header col-12 no-padding">
<span class="col-8 fw6 fs16 pr0">
{{ __('velocity::app.checkout.items') }}
@ -108,7 +97,7 @@
@if (isset($item->additional['attributes']))
@foreach ($item->additional['attributes'] as $attribute)
<div class="row col-12 no-padding no-margin display-block">
<div class="row col-12 no-padding no-margin display-block item-attribute">
<label class="no-margin">
{{ $attribute['attribute_name'] }}:
</label>
@ -119,7 +108,7 @@
@endforeach
@endif
<div class="row col-12 no-padding no-margin">
<div class="row col-12 no-padding no-margin item-price">
<div class="product-price">
<span>{{ core()->currency($item->base_price) }}</span>
</div>
@ -131,18 +120,18 @@
$showWishlist = core()->getConfigData('general.content.shop.wishlist_option') == "1" ? true : false;
@endphp
<div class="no-padding col-12 cursor-pointer fs16">
<div class="no-padding col-12 cursor-pointer fs16 item-actions">
@auth('customer')
@if ($showWishlist)
@if ($item->parent_id != 'null' || $item->parent_id != null)
<div class="alert-wishlist">
<div class="d-inline-block">
@include('shop::products.wishlist', [
'route' => route('shop.movetowishlist', $item->id),
'text' => "<span class='align-vertical-super'>$moveToWishlist</span>"
])
</div>
@else
<div class="alert-wishlist">
<div class="d-inline-block">
@include('shop::products.wishlist', [
'route' => route('shop.movetowishlist', $item->child->id),
'text' => "<span class='align-vertical-super'>$moveToWishlist</span>"
@ -154,11 +143,7 @@
<div class="d-inline-block">
<a
class="unset
@auth('customer')
ml10
@endauth
"
class="unset"
href="{{ route('shop.checkout.cart.remove', ['id' => $item->id]) }}"
@click="removeLink('{{ __('shop::app.checkout.cart.cart-remove-action') }}')">
@ -225,7 +210,7 @@
{!! view_render_event('bagisto.shop.checkout.cart.summary.after', ['cart' => $cart]) !!}
@if ($cart)
<div class="col-lg-4 col-md-12 offset-lg-2 row order-summary-container">
<div class="col-lg-4 col-md-12 offset-lg-1 row order-summary-container">
@include('shop::checkout.total.summary', ['cart' => $cart])
<coupon-component></coupon-component>
@ -263,8 +248,9 @@
methods: {
removeLink(message) {
if (! confirm(message))
if (! confirm(message)) {
event.preventDefault();
}
}
}
})

View File

@ -1,4 +1,4 @@
<div class="mini-cart-container">
<a class="mini-cart-btn">
<mini-cart
is-tax-inclusive="{{ Webkul\Tax\Helpers\Tax::isTaxInclusive() }}"
view-cart-route="{{ route('shop.checkout.cart.index') }}"
@ -9,4 +9,4 @@
checkout-text="{{ __('shop::app.minicart.checkout') }}"
subtotal-text="{{ __('shop::app.checkout.cart.cart-subtotal') }}">
</mini-cart>
</div>
</a>

View File

@ -3,7 +3,7 @@
{{-- this is default content if js is not loaded --}}
<div class="main-category fs16 unselectable fw6 left">
<i class="rango-view-list text-down-4 align-vertical-top fs18"></i>
<i class="rango-view-list align-vertical-top fs18"></i>
<span class="pl5">{{ __('velocity::app.menu-navbar.text-category') }}</span>
</div>

View File

@ -100,7 +100,7 @@
{{-- right-section --}}
<div class="right col-lg-7 col-md-6">
{{-- product-info-section --}}
<div class="row info">
<div class="info">
<h2 class="col-12">{{ $product->name }}</h2>
@if ($total)
@ -141,7 +141,27 @@
</div>
@endif
<div class="product-actions">
@include ('shop::products.view.configurable-options')
@include ('shop::products.view.downloadable')
@include ('shop::products.view.grouped-products')
@include ('shop::products.view.bundle-options')
{!! view_render_event('bagisto.shop.products.view.quantity.before', ['product' => $product]) !!}
@if ($product->getTypeInstance()->showQuantityBox())
<div class="col-12">
<quantity-changer quantity-text="{{ __('shop::app.products.quantity') }}"></quantity-changer>
</div>
@else
<input type="hidden" name="quantity" value="1">
@endif
{!! view_render_event('bagisto.shop.products.view.quantity.after', ['product' => $product]) !!}
<div class="col-12 product-actions">
@if (core()->getConfigData('catalog.products.storefront.buy_now_button_display'))
@include ('shop::products.buy-now', [
'product' => $product,
@ -158,38 +178,7 @@
</div>
</div>
{!! view_render_event('bagisto.shop.products.view.short_description.before', ['product' => $product]) !!}
@if ($product->short_description)
<div class="description">
<h3 class="col-lg-12">{{ __('velocity::app.products.short-description') }}</h3>
{!! $product->short_description !!}
</div>
@endif
{!! view_render_event('bagisto.shop.products.view.short_description.after', ['product' => $product]) !!}
{!! view_render_event('bagisto.shop.products.view.quantity.before', ['product' => $product]) !!}
@if ($product->getTypeInstance()->showQuantityBox())
<div>
<quantity-changer quantity-text="{{ __('shop::app.products.quantity') }}"></quantity-changer>
</div>
@else
<input type="hidden" name="quantity" value="1">
@endif
{!! view_render_event('bagisto.shop.products.view.quantity.after', ['product' => $product]) !!}
@include ('shop::products.view.configurable-options')
@include ('shop::products.view.downloadable')
@include ('shop::products.view.grouped-products')
@include ('shop::products.view.bundle-options')
@include ('shop::products.view.short-description')
@include ('shop::products.view.attributes', [
'active' => true

View File

@ -18,7 +18,7 @@
@push('scripts')
<script type="text/x-template" id="bundle-option-list-template">
<div class="bundle-options-wrapper">
<div class="col-12 bundle-options-wrapper">
<div class="bundle-option-list">
<h3>{{ __('shop::app.products.customize-options') }}</h3>

View File

@ -16,7 +16,7 @@
@push('scripts')
<script type="text/x-template" id="product-options-template">
<div class="attributes" v-if="childAttributes.length > 0">
<div class="col-12 attributes" v-if="childAttributes.length > 0">
<input
type="hidden"
:value="selectedProductId"

View File

@ -1,7 +1,7 @@
@if ($product->type == 'downloadable')
{!! view_render_event('bagisto.shop.products.view.downloadable.before', ['product' => $product]) !!}
<div class="downloadable-container">
<div class="col-12 downloadable-container">
@if ($product->downloadable_samples->count())
<div class="sample-list">

View File

@ -1,7 +1,7 @@
@if ($product->type == 'grouped')
{!! view_render_event('bagisto.shop.products.view.grouped_products.before', ['product' => $product]) !!}
<div class="grouped-product-container">
<div class="col-12 grouped-product-container">
@if ($product->groupedProductsBySortOrder->count())
<div class="grouped-product-list">
<ul type="none">

View File

@ -0,0 +1,19 @@
{!! view_render_event('bagisto.shop.products.view.short_description.before', ['product' => $product]) !!}
<accordian :title="'{{ __('shop::app.products.short-description') }}'" :active="true">
<div slot="header">
<h3 class="no-margin display-inbl">
{{ __('velocity::app.products.short-description') }}
</h3>
<i class="rango-arrow"></i>
</div>
<div slot="body">
<div class="full-short-description">
{!! $product->short_description !!}
</div>
</div>
</accordian>
{!! view_render_event('bagisto.shop.products.view.short_description.after', ['product' => $product]) !!}

View File

@ -1,8 +1,7 @@
{!! view_render_event('bagisto.shop.products.view.stock.before', ['product' => $product]) !!}
<div class="col-12 availability">
<button
type="button"
<label
class="{{! $product->haveSufficientQuantity(1) ? '' : 'active' }} disable-box-shadow">
@if ( $product->haveSufficientQuantity(1) === true )
{{ __('shop::app.products.in-stock') }}
@ -11,7 +10,7 @@
@else
{{ __('shop::app.products.out-of-stock') }}
@endif
</button>
</label>
</div>
{!! view_render_event('bagisto.shop.products.view.stock.after', ['product' => $product]) !!}

View File

@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
'failed' => 'Bu kimlik bilgileri kayıtlarımızla eşleşmiyor.',
'throttle' => 'Çok fazla giriş denemesi. Lütfen :seconds içinde tekrar deneyin.',
];

View File

@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
'previous' => '&laquo; Önceki',
'next' => 'Sonraki &raquo;',
];

View File

@ -0,0 +1,22 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'password' => 'Şifreler en az altı karakterden oluşmalı ve onayla eşleşmelidir.',
'reset' => 'Şifreniz sıfırlandı!',
'sent' => 'Şifre sıfırlama bağlantınızı e-posta ile gönderdik!',
'token' => 'Bu parola sıfırlama belirteci geçersiz.',
'user' => "Bu e-posta adresine sahip bir kullanıcı bulamıyoruz.",
];

View File

@ -0,0 +1,156 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => ':attribute kabul edilmelidir.',
'active_url' => ':attribute geçerli bir URL değil.',
'after' => ':attribute, :date \'den sonraki bir tarih olmalıdır.',
'after_or_equal' => ':attribute, :date \'den sonraki veya buna eşit bir tarih olmalıdır.',
'alpha' => ':attribute yalnızca harf içermelidir.',
'alpha_dash' => ':attribute yalnızca harf, sayı, tire ve alt çizgi içermelidir.',
'alpha_num' => ':attribute yalnızca harf ve rakamlardan oluşmalıdır.',
'array' => ':attribute bir dizi olmalıdır.',
'before' => ':attribute, :date \'den önceki bir tarih olmalıdır.',
'before_or_equal' => ':attribute, :date tarihinden önce veya buna eşit bir tarih olmalıdır.',
'between' => [
'numeric' => ':attribute :min ve :max arasında olmalıdır.',
'file' => ':attribute :min ve :max kilobaytlar arasında olmalıdır.',
'string' => ':attribute :min ve :max karakterleri arasında olmalıdır.',
'array' => ':attribute, :min ve :max öğeleri arasında olmalıdır.',
],
'boolean' => ':attribute alanı doğru veya yanlış olmalıdır.',
'confirmed' => ':attribute onayı eşleşmiyor.',
'current_password' => 'Şifre yanlış.',
'date' => ':attribute geçerli bir tarih değil.',
'date_equals' => ':attribute, :date değerine eşit bir tarih olmalıdır.',
'date_format' => ':attribute, :format biçimiyle eşleşmiyor.',
'different' => ':attribute ve :other farklı olmalıdır.',
'digits' => ':attribute :digits rakamlardan oluşmalıdır.',
'digits_between' => ':attribute :min ve :max basamakları arasında olmalıdır.',
'dimensions' => ':attribute geçersiz resim boyutlarına sahip.',
'distinct' => ':attribute alanı yinelenen bir değere sahip.',
'email' => ':attribute geçerli bir e-posta adresi olmalıdır.',
'ends_with' => ':attribute aşağıdakilerden biriyle bitmelidir: :values.',
'exists' => 'Seçilen :attribute geçersiz.',
'file' => ':attribute bir dosya olmalıdır.',
'filled' => ':attribute alanının bir değeri olmalıdır.',
'gt' => [
'numeric' => ':attribute, :value değerinden büyük olmalıdır.',
'file' => ':attribute, :value kilobayttan büyük olmalıdır.',
'string' => ':attribute, :value karakterlerinden büyük olmalıdır.',
'array' => ':attribute, :value öğelerinden daha fazlasına sahip olmalıdır.',
],
'gte' => [
'numeric' => ':attribute, :value değerinden büyük veya ona eşit olmalıdır.',
'file' => ':attribute, :value kilobayttan büyük veya ona eşit olmalıdır.',
'string' => ':attribute, :value karakterlerinden büyük veya ona eşit olmalıdır.',
'array' => ':attribute, :value öğelerine veya daha fazlasına sahip olmalıdır.',
],
'image' => ':attribute bir resim olmalıdır.',
'in' => 'Seçilen :attribute geçersiz.',
'in_array' => ':attribute alanı :other içinde mevcut değil.',
'integer' => ':attribute bir tamsayı olmalıdır.',
'ip' => ':attribute geçerli bir IP adresi olmalıdır.',
'ipv4' => ':attribute geçerli bir IPv4 adresi olmalıdır.',
'ipv6' => ':attribute geçerli bir IPv6 adresi olmalıdır.',
'json' => ':attribute geçerli bir JSON dizesi olmalıdır.',
'lt' => [
'numeric' => ':attribute, :value değerinden küçük olmalıdır.',
'file' => ':attribute, :value kilobayttan küçük olmalıdır.',
'string' => ':attribute, :value karakterlerinden daha az olmalıdır.',
'array' => ':attribute, :value öğelerinden daha azına sahip olmalıdır.',
],
'lte' => [
'numeric' => ':attribute, :value değerinden küçük veya ona eşit olmalıdır.',
'file' => ':attribute :value kilobayttan küçük veya ona eşit olmalıdır.',
'string' => ':attribute, :value karakterlerinden küçük veya ona eşit olmalıdır.',
'array' => ':attribute, :value öğelerinden daha fazlasına sahip olmamalıdır.',
],
'max' => [
'numeric' => ':attribute :max değerinden büyük olmamalıdır.',
'file' => ':attribute, :max kilobayttan büyük olmamalıdır.',
'string' => ':attribute, :max karakterlerinden büyük olmamalıdır.',
'array' => ':attribute öğesi, :max öğelerinden daha fazlasına sahip olmamalıdır.',
],
'mimes' => ':attribute, :values türünde bir dosya olmalıdır.',
'mimetypes' => ':attribute, :values türünde bir dosya olmalıdır.',
'min' => [
'numeric' => ':attribute en az :min olmalıdır.',
'file' => ':attribute en az :min kilobayt olmalıdır.',
'string' => ':attribute en az :min karakter olmalıdır.',
'array' => ':attribute en az :min öğelerine sahip olmalıdır.',
],
'multiple_of' => ':attribute, :value \'nun katı olmalıdır.',
'not_in' => 'Seçilen :attribute geçersiz.',
'not_regex' => ':attribute biçimi geçersiz.',
'numeric' => ':attribute bir sayı olmalıdır.',
'password' => 'Şifre yanlış.',
'present' => ':attribute alanı mevcut olmalıdır.',
'regex' => ':attribute biçimi geçersiz.',
'required' => ':attribute alanı gereklidir.',
'required_if' => ':attribute alanı, :other :value olduğunda gereklidir.',
'required_unless' => ':attribute alanı, :other :values içinde olmadığı sürece gereklidir.',
'required_with' => ':attribute alanı, :values mevcut olduğunda gereklidir.',
'required_with_all' => ':attribute alanı, :değerler mevcut olduğunda gereklidir.',
'required_without' => ':attribute alanı, :values olmadığında gereklidir.',
'required_without_all' => ':attribute alanı, :values değerlerinin hiçbiri mevcut olmadığında gereklidir.',
'prohibited' => ':attribute alanı yasaktır.',
'prohibited_if' => ':attribute alanı :other :value olduğunda yasaktır.',
'prohibited_unless' => ':attribute alanı, :other :values içinde olmadığı sürece yasaktır.',
'same' => ':attribute ve :other eşleşmelidir.',
'size' => [
'numeric' => ':attribute :size olmalıdır.',
'file' => ':attribute :size kilobayt olmalıdır.',
'string' => ':attribute :size karakter olmalıdır.',
'array' => ':attribute :size öğeleri içermelidir.',
],
'starts_with' => ':attribute aşağıdakilerden biriyle başlamalıdır: :values.',
'string' => ':attribute bir dize olmalıdır.',
'timezone' => ':attribute geçerli bir saat dilimi olmalıdır.',
'unique' => ':attribute zaten alınmış.',
'uploaded' => ':attribute yüklenemedi.',
'url' => ':attribute geçerli bir URL olmalıdır.',
'uuid' => ':attribute geçerli bir UUID olmalıdır.',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/
'attributes' => [],
];