Regular merge with master

This commit is contained in:
prashant-webkul 2018-12-07 15:44:03 +05:30
commit 1e05840c7d
107 changed files with 1161 additions and 492 deletions

View File

@ -1,23 +1,5 @@
<?php
return [
'flatrate' => [
'code' => 'flatrate',
'title' => 'Flat Rate',
'description' => 'This is a flat rate',
'active' => true,
'default_rate' => '10',
'type' => 'per_unit',
'class' => 'Webkul\Shipping\Carriers\FlatRate',
],
return [
'free' => [
'code' => 'free',
'title' => 'Free Shipping',
'description' => 'This is a free shipping',
'active' => true,
'class' => 'Webkul\Shipping\Carriers\Free',
]
];
?>
];

4
config/core.php Normal file
View File

@ -0,0 +1,4 @@
<?php
return [
];

View File

@ -1,34 +1,6 @@
<?php
return [
'cashondelivery' => [
'code' => 'cashondelivery',
'title' => 'Cash On Delivery',
'description' => 'Cash On Delivery',
'class' => 'Webkul\Payment\Payment\CashOnDelivery',
'order_status' => 'pending',
'active' => true
],
'moneytransfer' => [
'code' => 'moneytransfer',
'title' => 'Money Transfer',
'description' => 'Money Transfer',
'class' => 'Webkul\Payment\Payment\MoneyTransfer',
'order_status' => 'pending',
'active' => true
],
'paypal_standard' => [
'code' => 'paypal_standard',
'title' => 'Paypal Standard',
'description' => 'Paypal Standard',
'class' => 'Webkul\Paypal\Payment\Standard',
'order_status' => 'pending_payment',
'sandbox' => true,
'active' => true,
'business_account' => 'test@webkul.com'
]
];
?>

View File

@ -18,7 +18,6 @@
"vue": "^2.1.10"
},
"dependencies": {
"vee-validate": "2.0.0-rc.26",
"flatpickr": "^4.4.6"
"vee-validate": "2.0.0-rc.26"
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
{
"/js/admin.js": "/js/admin.js?id=1d3c0ea423bffae501e9",
"/js/admin.js": "/js/admin.js?id=c70dacdf945a32e04b77",
"/css/admin.css": "/css/admin.css?id=201f91bc553baa11139f"
}

View File

@ -11,16 +11,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class AttributeDataGrid
{
/**
* The Data Grid implementation.
*
* @var AttributeDataGrid
* for countries
*/
/**
* The Data Grid implementation for Attributes
*/
public function createAttributeDataGrid()
{

View File

@ -5,23 +5,18 @@ namespace Webkul\Admin\DataGrids;
use Illuminate\View\View;
use Webkul\Ui\DataGrid\Facades\DataGrid;
/**
* Attributes Family DataGrid
*
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class AttributeFamilyDataGrid
{
/**
* The Data Grid implementation.
*
* @var CountryComposer
* for countries
*/
/**
* The Data Grid implementation for Attribute Families
*/
public function createAttributeFamilyDataGrid()
{

View File

@ -12,16 +12,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class CategoryDataGrid
{
/**
* The Data Grid implementation.
*
* @var AttributeDataGrid
* for countries
*/
/**
* The Data Grid implementation for category
*/
public function createCategoryDataGrid()
{

View File

@ -12,16 +12,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class ChannelDataGrid
{
/**
* The Data Grid implementation.
*
* @var CountryComposer
* for countries
*/
/**
* The Data Grid implementation for channel
*/
public function createChannelsDataGrid()
{

View File

@ -12,16 +12,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class CountryDataGrid
{
/**
* The Data Grid implementation.
*
* @var CountryComposer
* for countries
*/
/**
* The Data Grid implementation for countries
*/
public function createCountryDataGrid()
{

View File

@ -11,16 +11,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class CurrencyDataGrid
{
/**
* The Data Grid implementation.
*
* @var CurrenciesDataGrid
* for countries
*/
/**
* The Data Grid implementation for currencies
*/
public function createCurrencyDataGrid()
{

View File

@ -13,13 +13,10 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
*/
class CustomerDataGrid
{
/**
* The CustomerDataGrid
* implementation.
*
* @var CustomerDataGrid
*/
/**
* The CustomerDataGrid implementation.
*/
public function createCustomerDataGrid()
{
@ -104,7 +101,12 @@ class CustomerDataGrid
'alias' => 'Email',
'type' => 'string',
'label' => 'Email',
],
], [
'column' => 'cg.name',
'alias' => 'CustomerGroupName',
'type' => 'string',
'label' => 'Group Name',
]
],
//don't use aliasing in case of searchables
@ -139,10 +141,10 @@ class CustomerDataGrid
}
public function render()
public function render($pagination = true)
{
return $this->createCustomerDataGrid()->render();
return $this->createCustomerDataGrid()->render($pagination);
}
}

View File

@ -11,14 +11,11 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Rahul Shukla <rahulshukla.symfony517@webkul.com>
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class CustomerGroupDataGrid
{
/**
* The Customer Group Data
* Grid implementation.
*
* @var CustomerGroupDataGrid
* The Customer Group Data Grid implementation.
*/
public function createCustomerGroupDataGrid()
{
@ -56,8 +53,7 @@ class CustomerGroupDataGrid
'route' => 'admin.groups.edit',
'confirm_text' => 'Do you really want to edit this record?',
'icon' => 'icon pencil-lg-icon',
],
[
], [
'type' => 'Delete',
'route' => 'admin.groups.delete',
'confirm_text' => 'Do you really want to delete this record?',
@ -117,6 +113,7 @@ class CustomerGroupDataGrid
'label' => 'Name'
]
],
'operators' => [
'eq' => "=",
'lt' => "<",
@ -135,7 +132,6 @@ class CustomerGroupDataGrid
}
public function render() {
return $this->createCustomerGroupDataGrid()->render();
}
}

View File

@ -12,17 +12,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Rahul Shukla <rahulshukla.symfony517@webkul.com> @rahul-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class CustomerReviewDataGrid
{
/**
* The ProductReviewDataGrid
* implementation.
*
* @var CustomerReviewsDataGrid
* for Reviews
*/
/**
* The ProductReviewDataGrid implementation for Product Reviews
*/
public function createCustomerReviewDataGrid()
{

View File

@ -11,17 +11,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class ExchangeRatesDataGrid
{
/**
* The Data Grid implementation.
*
* @var ExchangeRatesDataGrid
* for Exchange Rates
* The Data Grid implementation for Exchange Rates
*/
public function createExchangeRatesDataGrid()
{

View File

@ -11,16 +11,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class InventorySourcesDataGrid
{
/**
* The Data Grid implementation.
*
* @var InventorySourcesDataGrid
* for Inventory Sources
*/
/**
* The Data Grid implementation for Inventory Sources
*/
public function createInventorySourcesDataGrid()
{
return DataGrid::make([

View File

@ -11,16 +11,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class LocalesDataGrid
{
/**
* The Data Grid implementation.
*
* @var CountryDataGrid
* for countries
*/
/**
* The Data Grid implementation for countries
*/
public function createCountryDataGrid()
{

View File

@ -11,14 +11,11 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class NewsLetterDataGrid
{
/**
* The Data Grid implementation.
*
* @var newsletterDataGrid
* for orders
* The Data Grid implementation for orders
*/
public function newsLetterDataGrid()
{

View File

@ -6,30 +6,25 @@ use Illuminate\View\View;
use Webkul\Ui\DataGrid\Facades\DataGrid;
/**
* orderDataGrid
* OrderDataGrid
*
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class OrderDataGrid
{
/**
* The Data Grid implementation.
*
* @var orderDataGrid
* for orders
* The Data Grid implementation for orders
*/
public function createOrderDataGrid()
{
return DataGrid::make([
return DataGrid::make([
'name' => 'orders',
'table' => 'orders as or',
'select' => 'or.id',
'perpage' => 10,
'aliased' => false,
//True in case of joins else aliasing key required on all cases
'aliased' => false, //True in case of joins else aliasing key required on all cases
'massoperations' =>[
// [
@ -47,19 +42,12 @@ class OrderDataGrid
// 'confirm_text' => 'Do you really want to view this record?',
'icon' => 'icon eye-icon',
'icon-alt' => 'View'
],
// [
// 'type' => 'Delete',
// 'route' => route('admin.datagrid.delete'),
// 'confirm_text' => 'Do you really want to do this?',
// 'icon' => 'icon trash-icon',
// ],
]
],
'join' => [],
//use aliasing on secodary columns if join is performed
'columns' => [
[
'name' => 'or.id',
@ -94,7 +82,7 @@ class OrderDataGrid
], [
'name' => 'or.created_at',
'alias' => 'createdat',
'type' => 'string',
'type' => 'datetime',
'label' => 'Order Date',
'sortable' => true,
], [
@ -140,10 +128,15 @@ class OrderDataGrid
'alias' => 'orstatus',
'type' => 'string',
'label' => 'Status'
], [
'column' => 'or.created_at',
'alias' => 'createdat',
'type' => 'datetime',
'label' => 'Order Date',
],
],
//don't use aliasing in case of searchables
//don't use aliasing in case of searchables
'searchable' => [
[
'column' => 'or.id',
@ -172,8 +165,8 @@ class OrderDataGrid
]);
}
public function render()
public function render($pagination = true)
{
return $this->createOrderDataGrid()->render();
return $this->createOrderDataGrid()->render($pagination);
}
}

View File

@ -11,14 +11,11 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class OrderInvoicesDataGrid
{
/**
* The Order invoices Data Grid implementation.
*
* @var OrderInvoicesDataGrid
* for invoices of orders
* The Order invoices Data Grid implementation for invoices of orders
*/
public function createOrderInvoicesDataGrid()
{
@ -133,8 +130,8 @@ class OrderInvoicesDataGrid
]);
}
public function render()
public function render($pagination = true)
{
return $this->createOrderInvoicesDataGrid()->render();
return $this->createOrderInvoicesDataGrid()->render($pagination);
}
}

View File

@ -12,14 +12,11 @@ use DB;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class OrderShipmentsDataGrid
{
/**
* The Order Shipments Data Grid implementation.
*
* @var OrderShipmentsDataGrid
* for shipments of orders
* The Order Shipments Data Grid implementation for shipments of orders
*/
public function createOrderShipmentsDataGrid()
{
@ -134,8 +131,8 @@ class OrderShipmentsDataGrid
]);
}
public function render()
public function render($pagination = true)
{
return $this->createOrderShipmentsDataGrid()->render();
return $this->createOrderShipmentsDataGrid()->render($pagination);
}
}

View File

@ -15,11 +15,10 @@ use Webkul\Product\Repositories\ProductRepository;
*/
class ProductDataGrid
{
/**
* The Data Grid implementation @var ProductDataGrid
* for Products
*/
/**
* The Data Grid implementation for Products
*/
public function createProductDataGrid()
{
return DataGrid::make([
@ -195,4 +194,11 @@ class ProductDataGrid
{
return $this->createProductDataGrid()->render();
}
public function export()
{
$paginate = false;
return $this->createProductDataGrid()->render($paginate);
}
}

View File

@ -11,17 +11,11 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class RolesDataGrid
{
/**
* The Data Grid implementation.
*
* @var RolesDataGrid
* for Roles
* The Data Grid implementation for Roles
*/
public function createRolesDataGrid()
{

View File

@ -11,16 +11,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class SliderDataGrid
{
/**
* The Data Grid implementation.
*
* @var SliderDataGrid
* for Sliders
*/
/**
* The Data Grid implementation for Sliders
*/
public function createSliderDataGrid()
{

View File

@ -14,11 +14,9 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
class TaxCategoryDataGrid
{
/**
* The Tax Category Data
* Grid implementation.
*
* @var TaxCategoryDataGrid
* The Tax Category Data Grid implementation.
*/
public function createTaxCategoryDataGrid()
{

View File

@ -11,14 +11,11 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class TaxRateDataGrid
{
/**
* The Tax Category Data
* Grid implementation.
*
* @var TaxRateDataGrid
* The Tax Category Data Grid implementation.
*/
public function createTaxRateDataGrid()
{

View File

@ -11,16 +11,12 @@ use Webkul\Ui\DataGrid\Facades\DataGrid;
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class UserDataGrid
{
/**
* The Data Grid implementation.
*
* @var UserDataGrid
* for admin users
*/
/**
* The Data Grid implementation for admin users
*/
public function createUserDataGrid()
{

View File

@ -34,20 +34,17 @@ class DataGridExport implements FromView, ShouldAutoSize
$this->gridData = $gridData;
}
/**
* function to create a blade view for export.
*
*/
public function view(): View
{
$results = $this->gridData->render();
$header = [];
foreach($results->columns as $col) {
$header[] = $col->label;
}
$pagination = false;
return view('admin::export.export', [
'results' => $this->gridData->render()->results,
'columns' => $this->gridData->render()->columns,
'header' => $header
'results' => $this->gridData->render($pagination)->results,
'columns' => $this->gridData->render($pagination)->columns,
]);
}
}

View File

@ -4,6 +4,7 @@ namespace Webkul\Admin\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Webkul\Admin\Facades\Configuration;
use Webkul\Core\Repositories\CoreConfigRepository as CoreConfig;
/**
@ -52,4 +53,18 @@ class ConfigurationController extends Controller
{
return view($this->_config['view']);
}
/**
* Store a newly created resource in storage.
*
* @return \Illuminate\Http\Response
*/
public function store()
{
$data = request()->all();
session()->flash('success', 'Shipping Method is created successfully');
return redirect()->route($this->_config['redirect']);
}
}

View File

@ -9,10 +9,6 @@ use Webkul\Customer\Repositories\CustomerRepository as Customer;
use Webkul\Customer\Repositories\CustomerGroupRepository as CustomerGroup;
use Webkul\Core\Repositories\ChannelRepository as Channel;
use Webkul\Admin\DataGrids\CustomerDataGrid as CustomerDataGrid;
use Webkul\Admin\Exports\DataGridExport;
use Excel;
/**
* Customer controlller
*
@ -49,23 +45,15 @@ class CustomerController extends Controller
*/
protected $channel;
/**
* CustomerDataGrid object
*
* @var array
*/
protected $customerDataGrid;
/**
* Create a new controller instance.
*
* @param Webkul\Customer\Repositories\CustomerRepository as customer;
* @param Webkul\Customer\Repositories\CustomerGroupRepository as customerGroup;
* @param Webkul\Core\Repositories\ChannelRepository as Channel;
* @param Webkul\Admin\DataGrids\CustomerDataGrid as customerDataGrid;
* @return void
*/
public function __construct(Customer $customer, CustomerGroup $customerGroup, Channel $channel, CustomerDataGrid $customerDataGrid)
public function __construct(Customer $customer, CustomerGroup $customerGroup, Channel $channel)
{
$this->_config = request('_config');
@ -77,8 +65,6 @@ class CustomerController extends Controller
$this->channel = $channel;
$this->customerDataGrid = $customerDataGrid;
}
/**
@ -190,15 +176,4 @@ class CustomerController extends Controller
return redirect()->back();
}
/**
* function to export datagrid
*
*/
public function export()
{
$data = $this->customerDataGrid;
return Excel::download(new DataGridExport($data), 'customers.xlsx');
}
}

View File

@ -0,0 +1,45 @@
<?php
namespace Webkul\Admin\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Webkul\Admin\Http\Controllers\Controller;
use Webkul\Admin\Exports\DataGridExport;
use Excel;
/**
* Export controlller
*
* @author Rahul Shukla <rahulshukla.symfony517@webkul.com>
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class ExportController extends Controller
{
/**
* Create a new controller instance.
*
*/
public function __construct()
{
$this->middleware('admin');
}
/**
* function for export datagrid
*
* @return \Illuminate\Http\Response
*/
public function export()
{
$results = unserialize(request()->all()['gridData']);
$file_name = class_basename($results);
if(request()->all()['format'] == 'csv') {
return Excel::download(new DataGridExport($results), $file_name.'.csv');
}else {
return Excel::download(new DataGridExport($results), $file_name.'.xlsx');
}
}
}

View File

@ -63,17 +63,21 @@ Route::group(['middleware' => ['web']], function () {
Route::get('customers/delete/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@destroy')->name('admin.customer.delete');
//DataGrid Export
Route::get('customer-export', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@export')->name('admin.customer.export');
Route::get('reviews', 'Webkul\Product\Http\Controllers\ReviewController@index')->defaults('_config',[
'view' => 'admin::customers.review.index'
])->name('admin.customer.review.index');
//Customers Management Routes
Route::get('configuration/sales/general', 'Webkul\Admin\Http\Controllers\ConfigurationController@index')->defaults('_config', [
'view' => 'admin::configuration.sales.general'
])->name('admin.configuration.sales.general');
//Shipping Methods Routes
Route::get('configuration/sales/shipping-methods', 'Webkul\Admin\Http\Controllers\ConfigurationController@index')->defaults('_config', [
'view' => 'admin::configuration.sales.shipping-method'
])->name('admin.configuration.sales.shipping_methods');
Route::post('configuration/sales/shipping-methods', 'Webkul\Admin\Http\Controllers\ConfigurationController@store')->defaults('_config', [
'redirect' => 'admin.configuration.sales.shipping_methods'
])->name('admin.configuration.sales.shipping_methods.store');
// Reviews Routes
Route::get('reviews/edit/{id}', 'Webkul\Product\Http\Controllers\ReviewController@edit')->defaults('_config',[
@ -577,6 +581,10 @@ Route::group(['middleware' => ['web']], function () {
Route::get('/tax-rates/delete/{id}', 'Webkul\Tax\Http\Controllers\TaxRateController@destroy')->name('admin.tax-rates.delete');
//tax rate ends
//DataGrid Export
Route::post('admin/export', 'Webkul\Admin\Http\Controllers\ExportController@export')->name('admin.datagrid.export');
});
});
});

View File

@ -8,6 +8,9 @@ use Illuminate\Support\Facades\Blade;
use Webkul\Admin\Providers\EventServiceProvider;
use Illuminate\Contracts\Debug\ExceptionHandler;
use Webkul\Admin\Exceptions\Handler;
use Illuminate\Foundation\AliasLoader;
use Webkul\Admin\Facades\Configuration as ConfigurationFacade;
use Webkul\Admin\Configuration;
class AdminServiceProvider extends ServiceProvider
{
@ -38,15 +41,6 @@ class AdminServiceProvider extends ServiceProvider
);
}
/**
* Register services.
*
* @return void
*/
public function register()
{
}
/**
* Bind the the data to the views
*

View File

@ -115,19 +115,19 @@ class EventServiceProvider extends ServiceProvider
'sort' => 1,
'icon-class' => '',
],
// [
// 'key' => 'configuration.sales',
// 'name' => 'Sales',
// 'route' => 'admin.configuration.sales.general',
// 'sort' => 1,
// 'icon-class' => '',
// ], [
// 'key' => 'configuration.sales.general',
// 'name' => 'General',
// 'route' => 'admin.configuration.sales.general',
// 'sort' => 1,
// 'icon-class' => '',
// ],
[
'key' => 'configuration.sales',
'name' => 'Sales',
'route' => 'admin.configuration.sales.shipping_methods',
'sort' => 1,
'icon-class' => '',
], [
'key' => 'configuration.sales.shipping_method',
'name' => 'Shipping Methods',
'route' => 'admin.configuration.sales.shipping_methods',
'sort' => 1,
'icon-class' => '',
],
[
'key' => 'settings',
'name' => 'Settings',

View File

@ -5,10 +5,6 @@ require("./bootstrap");
Vue.use(VeeValidate);
Vue.component("datetime", require("./components/datetime"));
Vue.component("date", require("./components/date"));
require('flatpickr/dist/flatpickr.css');
$(document).ready(function () {
Vue.config.ignoredElements = [
'option-wrapper',

View File

@ -350,9 +350,12 @@ return [
],
'sales' => [
'general' => [
'title' => 'General',
'save-btn-title' => 'Save'
'shipping-method' => [
'title' => 'Shipping Methods',
'save-btn-title' => 'Save',
'description' => 'Description',
'active' => 'Active',
'status' => 'Status'
]
]
],
@ -540,8 +543,7 @@ return [
'channel_name' => 'Channel Name',
'state' => 'State',
'select-state' => 'Select a region, state or province.',
'country' => 'Country',
'export' => 'Export'
'country' => 'Country'
],
'reviews' => [
'title' => 'Reviews',
@ -588,5 +590,11 @@ return [
'title' => 'Unauthorized Error',
'message' => 'The request has not been applied because it lacks valid authentication credentials for the target resource.'
],
],
'export' => [
'export' => 'Export',
'format' => 'Select Format',
'download' => 'Download'
]
];

View File

@ -103,6 +103,7 @@
<select class="control" id="validation" name="validation">
<option value=""></option>
<option value="numeric">{{ __('admin::app.catalog.attributes.number') }}</option>
<option value="decimal">{{ __('admin::app.catalog.attributes.decimal') }}</option>
<option value="email">{{ __('admin::app.catalog.attributes.email') }}</option>
<option value="url">{{ __('admin::app.catalog.attributes.url') }}</option>
</select>
@ -114,14 +115,6 @@
<accordian :title="'{{ __('admin::app.catalog.attributes.configuration') }}'" :active="true">
<div slot="body">
<div class="control-group">
<label for="status">{{ __('admin::app.catalog.attributes.status') }}</label>
<select class="control" id="status" name="status">
<option value="1">{{ __('admin::app.catalog.attributes.yes') }}</option>
<option value="0">{{ __('admin::app.catalog.attributes.no') }}</option>
</select>
</div>
<div class="control-group">
<label for="value_per_locale">{{ __('admin::app.catalog.attributes.value_per_locale') }}</label>
<select class="control" id="value_per_locale" name="value_per_locale">

View File

@ -124,7 +124,7 @@
</div>
<div class="control-group">
<?php $selectedValidation = old('input_validation') ?: $attribute->input_validation ?>
<?php $selectedValidation = old('validation') ?: $attribute->validation ?>
<label for="validation">{{ __('admin::app.catalog.attributes.input_validation') }}</label>
<select class="control" id="validation" name="validation">
<option value=""></option>
@ -148,18 +148,6 @@
<accordian :title="'{{ __('admin::app.catalog.attributes.configuration') }}'" :active="true">
<div slot="body">
<div class="control-group">
<label for="status">{{ __('admin::app.catalog.attributes.status') }}</label>
<select class="control" id="status" name="status">
<option value="1" {{ $attribute->status ? 'selected' : '' }}>
{{ __('admin::app.catalog.attributes.yes') }}
</option>
<option value="0" {{ $attribute->status ? '' : 'selected' }}>
{{ __('admin::app.catalog.attributes.no') }}
</option>
</select>
</div>
<div class="control-group">
<label for="value_per_locale">{{ __('admin::app.catalog.attributes.value_per_locale') }}</label>

View File

@ -62,8 +62,7 @@
<div class="control-group" :class="[errors.has('description') ? 'has-error' : '']">
<label for="description" class="required">{{ __('admin::app.catalog.categories.description') }}</label>
<textarea v-validate="'required'" class="control" id="description" name="description" data-vv-as="&quot;{{ __('admin::app.catalog.categories.description') }}&quot;">
{{ old('description') }}</textarea>
<textarea v-validate="'required'" class="control" id="description" name="description" data-vv-as="&quot;{{ __('admin::app.catalog.categories.description') }}&quot;">{{ old('description') }}</textarea>
<span class="control-error" v-if="errors.has('description')">@{{ errors.first('description') }}</span>
</div>

View File

@ -75,9 +75,7 @@
<div class="control-group" :class="[errors.has('{{$locale}}[description]') ? 'has-error' : '']">
<label for="description" class="required">{{ __('admin::app.catalog.categories.description') }}</label>
<textarea v-validate="'required'" class="control" id="description" name="{{$locale}}[description]" data-vv-as="&quot;{{ __('admin::app.catalog.categories.description') }}&quot;">
{{ old($locale)['description'] ?: $category->translate($locale)['description'] }}
</textarea>
<textarea v-validate="'required'" class="control" id="description" name="{{$locale}}[description]" data-vv-as="&quot;{{ __('admin::app.catalog.categories.description') }}&quot;">{{ old($locale)['description'] ?: $category->translate($locale)['description'] }}</textarea>
<span class="control-error" v-if="errors.has('{{$locale}}[description]')">@{{ errors.first('{!!$locale!!}[description]') }}</span>
</div>

View File

@ -21,19 +21,19 @@
</div>
<div class="page-content">
<div class="form-container">
@csrf()
<accordian :title="'{{ __('admin::app.catalog.families.general') }}'" :active="true">
<div slot="body">
<div class="control-group" :class="[errors.has('code') ? 'has-error' : '']">
<label for="code" class="required">{{ __('admin::app.catalog.families.code') }}</label>
<input type="text" v-validate="'required'" class="control" id="code" name="code" value="{{ old('code') }}" data-vv-as="&quot;{{ __('admin::app.catalog.families.code') }}&quot;" v-code/>
<span class="control-error" v-if="errors.has('code')">@{{ errors.first('code') }}</span>
</div>
<div class="control-group" :class="[errors.has('name') ? 'has-error' : '']">
<label for="name" class="required">{{ __('admin::app.catalog.families.name') }}</label>
<input type="text" v-validate="'required'" class="control" id="name" name="name" value="{{ old('name') }}" data-vv-as="&quot;{{ __('admin::app.catalog.families.name') }}&quot;"/>
@ -66,6 +66,7 @@
<group-form></group-form>
</div>
</modal>
@stop
@push('scripts')
@ -173,7 +174,7 @@
</div>
</accordian>
</script>
<script>
var groups = @json($attributeFamily ? $attributeFamily->attribute_groups : []);
var custom_attributes = @json($custom_attributes);
@ -216,7 +217,7 @@
groups.push(this.group);
groups = this.sortGroups();
this.group = {'groupName': '', 'position': '', 'is_user_defined': 1, 'custom_attributes': []};
this.$parent.closeModal();
@ -273,7 +274,7 @@
addAttributes (groupIndex, attributeIds) {
attributeIds.forEach(function(attributeId) {
var attribute = this.custom_attributes.filter(attribute => attribute.id == attributeId)
this.groups[groupIndex].custom_attributes.push(attribute[0]);
let index = this.custom_attributes.indexOf(attribute[0])
@ -321,7 +322,7 @@
$(e.target).prev().find('li input').each(function() {
var attributeId = $(this).val();
if($(this).is(':checked')) {
attributeIds.push(attributeId);
@ -340,4 +341,4 @@
}
});
</script>
@endpush
@endpush

View File

@ -71,10 +71,14 @@
$disabled = true;
} else {
if($attribute->is_required) {
if ($attribute->is_required) {
array_push($validations, 'required');
}
if ($attribute->type == 'price') {
array_push($validations, 'decimal');
}
array_push($validations, $attribute->validation);
}

View File

@ -0,0 +1,25 @@
<select v-validate="'{{$validations}}'" class="control" id="{{ $name }}" name="{{ $name }}" data-vv-as="&quot;{{ $field['name'] }}&quot;" >
@foreach($field['options'] as $option)
<?php
if($option['value']) {
$value = 1;
}else {
$value = 0;
}
$selectedOption = core()->getConfigData($name) ?? '';
?>
<option value="{{ $value }}" {{ $value == $selectedOption ? 'selected' : ''}}>
{{ $option['title'] }}
</option>
@endforeach
</select>

View File

@ -0,0 +1,8 @@
<input type="text" v-validate="'{{$validations}}'" class="control" id="{{ $name }}" name="{{ $name }}" value="{{ old($name) ?: core()->getConfigData($name) }}" data-vv-as="&quot;{{ $field['name'] }}&quot;">

View File

@ -0,0 +1 @@
<textarea v-validate="'{{$validations}}'" class="control" id="{{ $name }}" name="{{ $name }}" data-vv-as="&quot;{{ $field['name'] }}&quot;">{{ old($name) ?: core()->getConfigData($name) }}</textarea>

View File

@ -1,33 +0,0 @@
@extends('admin::layouts.content')
@section('page_title')
{{ __('admin::app.configuration.sales.general.title') }}
@stop
@section('content')
<div class="content">
<form method="POST" action="" @submit.prevent="onSubmit">
<div class="page-header">
<div class="page-title">
<h1>
{{ __('admin::app.configuration.sales.general.title') }}
</h1>
</div>
<div class="page-action">
<button type="submit" class="btn btn-lg btn-primary">
{{ __('admin::app.configuration.sales.general.save-btn-title') }}
</button>
</div>
</div>
<div class="page-content">
<div class="form-container">
</div>
</div>
</form>
</div>
@stop

View File

@ -0,0 +1,141 @@
@extends('admin::layouts.content')
@section('page_title')
{{ __('admin::app.configuration.sales.shipping-method.title') }}
@stop
@section('content')
<div class="content">
<?php $locale = request()->get('locale') ?: app()->getLocale(); ?>
<?php $channel = request()->get('channel') ?: core()->getDefaultChannelCode(); ?>
<form method="POST" action="" @submit.prevent="onSubmit" enctype="multipart/form-data">
<div class="page-header">
<div class="page-title">
<h1>
{{ __('admin::app.configuration.sales.shipping-method.title') }}
</h1>
<div class="control-group">
<select class="control" id="channel-switcher" name="channel">
@foreach(core()->getAllChannels() as $channelModel)
<option value="{{ $channelModel->code }}" {{ ($channelModel->code) == $channel ? 'selected' : '' }}>
{{ $channelModel->name }}
</option>
@endforeach
</select>
</div>
<div class="control-group">
<select class="control" id="locale-switcher" name="locale">
@foreach(core()->getAllLocales() as $localeModel)
<option value="{{ $localeModel->code }}" {{ ($localeModel->code) == $locale ? 'selected' : '' }}>
{{ $localeModel->name }}
</option>
@endforeach
</select>
</div>
</div>
<div class="page-action">
<button type="submit" class="btn btn-lg btn-primary">
{{ __('admin::app.configuration.sales.shipping-method.save-btn-title') }}
</button>
</div>
</div>
<div class="page-content">
<div class="form-container">
@csrf()
@foreach (config('core.carriers') as $method => $carrier)
<accordian :title="'{{ __(config('carriers.' . $method . '.title')) }}'" :active="true">
<div slot="body">
@foreach ($carrier as $field)
<?php
$validations = [];
$disabled = false;
if (isset($field['validation'])) {
array_push($validations, $field['validation']);
} else {
$disabled = true;
}
$validations = implode('|', array_filter($validations));
?>
@if (view()->exists($typeView = 'admin::configuration.sales.field-types.' . $field['type']))
<?php
$name = 'carriers' . '.' . $method . '.' . $field['name'];
?>
<div class="control-group {{ $field['type'] }}" :class="[errors.has('{{ $name }}') ? 'has-error' : '']">
<label for="{{ $name }}" {{ $disabled == false ? 'class=required' : '' }}>
{{ $field['title'] }}
<?php
$channel_locale = [];
if(isset($field['channel_based']) && $field['channel_based'])
{
array_push($channel_locale, $channel);
}
if(isset($field['locale_based']) && $field['locale_based']) {
array_push($channel_locale, $locale);
}
?>
@if(count($channel_locale))
<span class="locale">[{{ implode(' - ', $channel_locale) }}]</span>
@endif
</label>
<?php
$configData = core()->getConfigData($name, current($channel_locale), next($channel_locale));
?>
@include ($typeView)
<span class="control-error" v-if="errors.has('{{ $name }}')">@{{ errors.first('{!! $name !!}') }}</span>
</div>
@endif
@endforeach
</div>
</accordian>
@endforeach
</div>
</div>
</form>
</div>
@stop
@push('scripts')
<script>
$(document).ready(function () {
$('#channel-switcher, #locale-switcher').on('change', function (e) {
$('#channel-switcher').val()
var query = '?channel=' + $('#channel-switcher').val() + '&locale=' + $('#locale-switcher').val();
window.location.href = "{{ route('admin.configuration.sales.shipping_methods') }}" + query;
})
});
</script>
@endpush

View File

@ -23,7 +23,6 @@
</div>
<div class="page-content">
<div class="form-container">
@csrf()
@ -36,8 +35,8 @@
</div>
</div>
</div>
</form>
</div>
@stop

View File

@ -12,13 +12,16 @@
<h1>{{ __('admin::app.customers.customers.title') }}</h1>
</div>
<div class="page-action">
<div class="export" style="display: inline-flex; cursor: pointer; position: absolute; right: 13%">
<i class="export-icon"></i>
<span @click="showModal('downloadDataGrid')" style="margin-top: 8px; margin-left: 5px">
{{ __('admin::app.export.export') }}
</span>
</div>
<a href="{{ route('admin.customer.create') }}" class="btn btn-lg btn-primary">
{{ __('admin::app.customers.customers.add-title') }}
</a>
<a href="{{ route('admin.customer.export') }}" class="btn btn-lg btn-primary">
{{ __('admin::app.customers.customers.export') }}
</a>
</div>
</div>
@ -29,5 +32,56 @@
</div>
</div>
<modal id="downloadDataGrid" :is-open="modalIds.downloadDataGrid">
<h3 slot="header">{{ __('admin::app.export.download') }}</h3>
<div slot="body">
<export-form></export-form>
</div>
</modal>
@stop
@push('scripts')
<script type="text/x-template" id="export-form-template">
<form method="POST" action="{{ route('admin.datagrid.export') }}">
<div class="page-content">
<div class="form-container">
@csrf()
<input type="hidden" name="gridData" value="{{serialize($customer)}}">
<div class="control-group">
<label for="format" class="required">
{{ __('admin::app.export.format') }}
</label>
<select name="format" class="control" v-validate="'required'">
<option value="xls">XLS</option>
<option value="csv">CSV</option>
</select>
</div>
</div>
</div>
<button type="submit" class="btn btn-lg btn-primary" @click="closeModal">
{{ __('admin::app.export.export') }}
</button>
</form>
</script>
<script>
Vue.component('export-form', {
template: '#export-form-template',
methods: {
closeModal () {
this.$parent.closeModal();
}
}
});
</script>
@endpush

View File

@ -18,7 +18,7 @@
</div>
<div class="page-content">
<div class="dashboard-stats">
<div class="dashboard-card">
@ -34,19 +34,19 @@
<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>
</div>
</div>
<div class="dashboard-card">
<div class="title">
{{ __('admin::app.dashboard.total-orders') }}
@ -60,18 +60,18 @@
<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>
</div>
</div>
<div class="dashboard-card">
<div class="title">
@ -86,18 +86,18 @@
<span class="icon graph-down-icon"></span>
{{ __('admin::app.dashboard.decreased', [
'progress' => -number_format($statistics['total_sales']['progress'], 1)
])
])
}}
@else
<span class="icon graph-up-icon"></span>
{{ __('admin::app.dashboard.increased', [
'progress' => number_format($statistics['total_sales']['progress'], 1)
])
])
}}
@endif
</span>
</div>
</div>
</div>
<div class="dashboard-card">
<div class="title">
@ -112,19 +112,19 @@
<span class="icon graph-down-icon"></span>
{{ __('admin::app.dashboard.decreased', [
'progress' => -number_format($statistics['avg_sales']['progress'], 1)
])
])
}}
@else
<span class="icon graph-up-icon"></span>
{{ __('admin::app.dashboard.increased', [
'progress' => number_format($statistics['avg_sales']['progress'], 1)
])
])
}}
@endif
</span>
</div>
</div>
</div>
</div>
<div class="graph-stats">
@ -138,7 +138,7 @@
<div class="card-info">
<canvas id="myChart" style="width: 100%; height: 87%"></canvas>
</div>
</div>
</div>
@ -153,7 +153,7 @@
<ul>
@foreach ($statistics['top_selling_categories'] as $item)
<li>
<a href="{{ route('admin.catalog.categories.edit', $item->category_id) }}">
<div class="description">
@ -171,7 +171,7 @@
<span class="icon angle-right-icon"></span>
</a>
</li>
@endforeach
</ul>
@ -204,7 +204,7 @@
<ul>
@foreach ($statistics['top_selling_products'] as $item)
<li>
<a href="{{ route('admin.catalog.products.edit', $item->product_id) }}">
<div class="product image">
@ -226,7 +226,7 @@
<span class="icon angle-right-icon"></span>
</a>
</li>
@endforeach
</ul>
@ -273,7 +273,7 @@
&nbsp;.&nbsp;
{{ __('admin::app.dashboard.revenue', [
'total' => core()->formatBasePrice($item->total_base_grand_total)
])
])
}}
</div>
</div>
@ -334,7 +334,7 @@
<span class="icon angle-right-icon"></span>
</a>
</li>
@endforeach
</ul>
@ -367,7 +367,7 @@
<div class="control-group date">
<date @onChange="applyFilter('start', $event)"><input type="text" class="control" id="start_date" value="{{ $startDate->format('Y-m-d') }}" placeholder="{{ __('admin::app.dashboard.from') }}" v-model="start"/></date>
</div>
<div class="control-group date">
<date @onChange="applyFilter('end', $event)"><input type="text" class="control" id="end_date" value="{{ $endDate->format('Y-m-d') }}" placeholder="{{ __('admin::app.dashboard.to') }}" v-model="end"/></date>
</div>
@ -392,7 +392,7 @@
}
}
});
$(document).ready(function () {
var ctx = document.getElementById("myChart").getContext('2d');

View File

@ -1,8 +1,8 @@
<table>
<thead>
<tr>
@foreach($header as $col)
<th> {{ $col}} </th>
@foreach ($columns as $column)
<th>{{ $column->label }}</th>
@endforeach
</tr>
</thead>

View File

@ -1,7 +1,9 @@
<div class="navbar-top">
<div class="navbar-top-left">
<div class="brand-logo">
<img src="{{ asset('vendor/webkul/ui/assets/images/logo.png') }}" alt="Bagisto"/>
<a href="{{ route('admin.dashboard.index') }}">
<img src="{{ asset('vendor/webkul/ui/assets/images/logo.png') }}" alt="Bagisto"/>
</a>
</div>
</div>

View File

@ -12,6 +12,12 @@
</div>
<div class="page-action">
<div class="export" style="display: flex; cursor: pointer">
<i class="export-icon"></i>
<span @click="showModal('downloadDataGrid')" style="margin-top: 8px;margin-right: 5px; margin-left: 5px">
{{ __('admin::app.export.export') }}
</span>
</div>
</div>
</div>
@ -20,4 +26,56 @@
{!! $orderInvoicesGrid->render() !!}
</div>
</div>
@stop
<modal id="downloadDataGrid" :is-open="modalIds.downloadDataGrid">
<h3 slot="header">{{ __('admin::app.export.download') }}</h3>
<div slot="body">
<export-form></export-form>
</div>
</modal>
@stop
@push('scripts')
<script type="text/x-template" id="export-form-template">
<form method="POST" action="{{ route('admin.datagrid.export') }}">
<div class="page-content">
<div class="form-container">
@csrf()
<input type="hidden" name="gridData" value="{{serialize($orderInvoicesGrid)}}">
<div class="control-group">
<label for="format" class="required">
{{ __('admin::app.export.format') }}
</label>
<select name="format" class="control" v-validate="'required'">
<option value="xls">XLS</option>
<option value="csv">CSV</option>
</select>
</div>
</div>
</div>
<button type="submit" class="btn btn-lg btn-primary" @click="closeModal">
{{ __('admin::app.export.export') }}
</button>
</form>
</script>
<script>
Vue.component('export-form', {
template: '#export-form-template',
methods: {
closeModal () {
this.$parent.closeModal();
}
}
});
</script>
@endpush

View File

@ -12,6 +12,12 @@
</div>
<div class="page-action">
<div class="export" style="display: flex; cursor: pointer">
<i class="export-icon"></i>
<span @click="showModal('downloadDataGrid')" style="margin-top: 8px;margin-right: 5px; margin-left: 5px">
{{ __('admin::app.export.export') }}
</span>
</div>
</div>
</div>
@ -20,4 +26,56 @@
{!! $orderGrid->render() !!}
</div>
</div>
@stop
<modal id="downloadDataGrid" :is-open="modalIds.downloadDataGrid">
<h3 slot="header">{{ __('admin::app.export.download') }}</h3>
<div slot="body">
<export-form></export-form>
</div>
</modal>
@stop
@push('scripts')
<script type="text/x-template" id="export-form-template">
<form method="POST" action="{{ route('admin.datagrid.export') }}">
<div class="page-content">
<div class="form-container">
@csrf()
<input type="hidden" name="gridData" value="{{serialize($orderGrid)}}">
<div class="control-group">
<label for="format" class="required">
{{ __('admin::app.export.format') }}
</label>
<select name="format" class="control" v-validate="'required'">
<option value="xls">XLS</option>
<option value="csv">CSV</option>
</select>
</div>
</div>
</div>
<button type="submit" class="btn btn-lg btn-primary" @click="closeModal">
{{ __('admin::app.export.export') }}
</button>
</form>
</script>
<script>
Vue.component('export-form', {
template: '#export-form-template',
methods: {
closeModal () {
this.$parent.closeModal();
}
}
});
</script>
@endpush

View File

@ -12,6 +12,12 @@
</div>
<div class="page-action">
<div class="export" style="display: flex; cursor: pointer">
<i class="export-icon"></i>
<span @click="showModal('downloadDataGrid')" style="margin-top: 8px;margin-right: 5px; margin-left: 5px">
{{ __('admin::app.export.export') }}
</span>
</div>
</div>
</div>
@ -20,4 +26,56 @@
{!! $orderShipmentsGrid->render() !!}
</div>
</div>
@stop
<modal id="downloadDataGrid" :is-open="modalIds.downloadDataGrid">
<h3 slot="header">{{ __('admin::app.export.download') }}</h3>
<div slot="body">
<export-form></export-form>
</div>
</modal>
@stop
@push('scripts')
<script type="text/x-template" id="export-form-template">
<form method="POST" action="{{ route('admin.datagrid.export') }}">
<div class="page-content">
<div class="form-container">
@csrf()
<input type="hidden" name="gridData" value="{{serialize($orderShipmentsGrid)}}">
<div class="control-group">
<label for="format" class="required">
{{ __('admin::app.export.format') }}
</label>
<select name="format" class="control" v-validate="'required'">
<option value="xls">XLS</option>
<option value="csv">CSV</option>
</select>
</div>
</div>
</div>
<button type="submit" class="btn btn-lg btn-primary" @click="closeModal">
{{ __('admin::app.export.export') }}
</button>
</form>
</script>
<script>
Vue.component('export-form', {
template: '#export-form-template',
methods: {
closeModal () {
this.$parent.closeModal();
}
}
});
</script>
@endpush

View File

@ -121,16 +121,12 @@
<div class="control-group">
<label for="home_page_content">{{ __('admin::app.settings.channels.home_page_content') }}</label>
<textarea class="control" id="home_page_content" name="home_page_content">
{{ old('home_page_content') }}
</textarea>
<textarea class="control" id="home_page_content" name="home_page_content">{{ old('home_page_content') }}</textarea>
</div>
<div class="control-group">
<label for="footer_content">{{ __('admin::app.settings.channels.footer_content') }}</label>
<textarea class="control" id="footer_content" name="footer_content">
{{ old('footer_content') }}
</textarea>
<textarea class="control" id="footer_content" name="footer_content">{{ old('footer_content') }}</textarea>
</div>
<div class="control-group">

View File

@ -130,16 +130,12 @@
<div class="control-group">
<label for="home_page_content">{{ __('admin::app.settings.channels.home_page_content') }}</label>
<textarea class="control" id="home_page_content" name="home_page_content">
{{ old('home_page_content') ?: $channel->home_page_content }}
</textarea>
<textarea class="control" id="home_page_content" name="home_page_content">{{ old('home_page_content') ?: $channel->home_page_content }}</textarea>
</div>
<div class="control-group">
<label for="footer_content">{{ __('admin::app.settings.channels.footer_content') }}</label>
<textarea class="control" id="footer_content" name="footer_content">
{{ old('footer_content') ?: $channel->footer_content }}
</textarea>
<textarea class="control" id="footer_content" name="footer_content">{{ old('footer_content') ?: $channel->footer_content }}</textarea>
</div>
<div class="control-group">

View File

@ -50,13 +50,15 @@
<div class="control-group" :class="[errors.has('target_currency') ? 'has-error' : '']">
<select v-validate="'required'" class="control" name="target_currency" data-vv-as="&quot;{{ __('admin::app.settings.exchange_rates.target_currency') }}&quot;">
@foreach($currencies as $currency)
<option value="{{ $currency->id }}">{{ $currency->name }}</option>
@if(is_null($currency->CurrencyExchangeRate))
<option value="{{ $currency->id }}">{{ $currency->name }}</option>
@endif
@endforeach
</select>
</select>
<span class="control-error" v-if="errors.has('target_currency')">@{{ errors.first('target_currency') }}</span>
</div>
</td>
<td>
<div class="control-group" :class="[errors.has('rate') ? 'has-error' : '']">
<input v-validate="'required'" class="control" id="rate" name="rate" data-vv-as="&quot;{{ __('admin::app.settings.exchange_rates.rate') }}&quot;" value="{{ old('rate') }}"/>

View File

@ -82,7 +82,7 @@
<div class="control-group" :class="[errors.has('contact_email') ? 'has-error' : '']">
<label for="contact_email" class="required">{{ __('admin::app.settings.inventory_sources.contact_email') }}</label>
<input class="control" v-validate="'required'" class="required" id="contact_email" name="contact_email" data-vv-as="&quot;{{ __('admin::app.settings.inventory_sources.contact_email') }}&quot;" value="{{ old('contact_email') }}"/>
<input class="control" v-validate="'required|email'" class="required" id="contact_email" name="contact_email" data-vv-as="&quot;{{ __('admin::app.settings.inventory_sources.contact_email') }}&quot;" value="{{ old('contact_email') }}"/>
<span class="control-error" v-if="errors.has('contact_email')">@{{ errors.first('contact_email') }}</span>
</div>

View File

@ -83,7 +83,7 @@
<div class="control-group" :class="[errors.has('contact_email') ? 'has-error' : '']">
<label for="contact_email" class="required">{{ __('admin::app.settings.inventory_sources.contact_email') }}</label>
<input class="control" v-validate="'required'" id="contact_email" name="contact_email" data-vv-as="&quot;{{ __('admin::app.settings.inventory_sources.contact_email') }}&quot;" value="{{ old('contact_email') ?: $inventorySource->symbol }}"/>
<input class="control" v-validate="'required|email'" id="contact_email" name="contact_email" data-vv-as="&quot;{{ __('admin::app.settings.inventory_sources.contact_email') }}&quot;" value="{{ old('contact_email') ?: $inventorySource->contact_email }}"/>
<span class="control-error" v-if="errors.has('contact_email')">@{{ errors.first('contact_email') }}</span>
</div>

View File

@ -50,9 +50,7 @@
<div class="control-group" :class="[errors.has('description') ? 'has-error' : '']">
<label for="description" class="required">{{ __('admin::app.settings.tax-categories.description') }}</label>
<textarea v-validate="'required'" class="control" id="description" name="description" data-vv-as="&quot;{{ __('admin::app.configuration.tax-categories.description') }}&quot;">
{{ $taxCategory->description }}
</textarea>
<textarea v-validate="'required'" class="control" id="description" name="description" data-vv-as="&quot;{{ __('admin::app.configuration.tax-categories.description') }}&quot;">{{ $taxCategory->description }}</textarea>
<div class="control-group" :class="[errors.has('taxrates[]') ? 'has-error' : '']">
<label for="taxrates" class="required">{{ __('admin::app.settings.tax-categories.select-taxrates') }}</label>

View File

@ -34,9 +34,7 @@
<div class="control-group">
<label for="description">{{ __('admin::app.users.roles.description') }}</label>
<textarea class="control" id="description" name="description">
{{ old('description') }}
</textarea>
<textarea class="control" id="description" name="description">{{ old('description') }}</textarea>
</div>
</div>
</accordian>

View File

@ -36,9 +36,7 @@
<div class="control-group">
<label for="description">{{ __('admin::app.users.roles.description') }}</label>
<textarea class="control" id="description" name="description">
{{ old('description') ?: $role->description }}
</textarea>
<textarea class="control" id="description" name="description">{{ old('description') ?: $role->description }}</textarea>
</div>
</div>
</accordian>

View File

@ -37,7 +37,7 @@ class AttributeTableSeeder extends Seeder
['id' => '19','code' => 'width','admin_name' => 'Width','type' => 'text','validation' => NULL,'position' => '19','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now],
['id' => '20','code' => 'height','admin_name' => 'Height','type' => 'text','validation' => NULL,'position' => '20','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now],
['id' => '21','code' => 'depth','admin_name' => 'Depth','type' => 'text','validation' => NULL,'position' => '21','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now],
['id' => '22','code' => 'weight','admin_name' => 'Weight','type' => 'text','validation' => NULL,'position' => '22','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now],
['id' => '22','code' => 'weight','admin_name' => 'Weight','type' => 'text','validation' => 'decimal','position' => '22','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now],
['id' => '23','code' => 'color','admin_name' => 'Color','type' => 'select','validation' => NULL,'position' => '23','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '1','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now],
['id' => '24','code' => 'size','admin_name' => 'Size','type' => 'select','validation' => NULL,'position' => '24','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '1','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now]
]);

View File

@ -10,7 +10,7 @@ class Attribute extends TranslatableModel
{
public $translatedAttributes = ['name'];
protected $fillable = ['code', 'admin_name', 'type', 'position', 'is_required', 'is_unique', 'value_per_locale', 'value_per_channel', 'is_filterable', 'is_configurable', 'is_visible_on_front', 'is_user_defined'];
protected $fillable = ['code', 'admin_name', 'type', 'position', 'is_required', 'is_unique', 'validation', 'value_per_locale', 'value_per_channel', 'is_filterable', 'is_configurable', 'is_visible_on_front', 'is_user_defined'];
protected $with = ['options'];

View File

@ -9,6 +9,7 @@ use Webkul\Core\Repositories\CountryRepository;
use Webkul\Core\Repositories\CountryStateRepository;
use Webkul\Core\Repositories\ChannelRepository;
use Webkul\Core\Repositories\LocaleRepository;
use Webkul\Core\Repositories\CoreConfigRepository;
use Illuminate\Support\Facades\Config;
class Core
@ -55,6 +56,13 @@ class Core
*/
protected $localeRepository;
/**
* CoreConfigRepository class
*
* @var mixed
*/
protected $coreConfigRepository;
/**
* Create a new instance.
*
@ -64,6 +72,7 @@ class Core
* @param Webkul\Core\Repositories\CountryRepository $countryRepository
* @param Webkul\Core\Repositories\CountryStateRepository $countryStateRepository
* @param Webkul\Core\Repositories\LocaleRepository $localeRepository
* @param Webkul\Core\Repositories\CoreConfigRepository $coreConfigRepository
* @return void
*/
public function __construct(
@ -72,7 +81,8 @@ class Core
ExchangeRateRepository $exchangeRateRepository,
CountryRepository $countryRepository,
CountryStateRepository $countryStateRepository,
LocaleRepository $localeRepository
LocaleRepository $localeRepository,
CoreConfigRepository $coreConfigRepository
)
{
$this->channelRepository = $channelRepository;
@ -86,6 +96,8 @@ class Core
$this->countryStateRepository = $countryStateRepository;
$this->localeRepository = $localeRepository;
$this->coreConfigRepository = $coreConfigRepository;
}
/**
@ -468,13 +480,24 @@ class Core
*
* @return mixed
*/
public function getConfigData($field, $channelId = null)
public function getConfigData($field, $channel = null, $locale = null)
{
if (null === $channelId) {
$channelId = $this->getCurrentChannel()->id;
if (null === $channel) {
$channel = request()->get('channel') ?: ($this->getCurrentChannelCode() ?: $this->getDefaultChannelCode());
}
return Config::get($field);
if (null === $locale) {
$locale = request()->get('locale') ?: app()->getLocale();
}
$coreConfigValue = $this->coreConfigRepository->findOneWhere([
'code' => $field
]);
if(!$coreConfigValue)
return Config::get($field);
return $coreConfigValue->value;
}
/**

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class DropForeignKeyCoreConfigTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('core_config', function (Blueprint $table) {
$table->dropForeign('core_config_channel_id_foreign');
$table->renameColumn('channel_id', 'channel_code');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('core_config', function (Blueprint $table) {
$table->dropForeign('core_config_channel_id_foreign');
$table->renameColumn('channel_id', 'channel_code');
});
}
}

View File

@ -0,0 +1,36 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AlterCoreConfigTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('core_config', function (Blueprint $table) {
$table->string('channel_code')->nullable()->change();
$table->string('locale_code')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('core_config', function (Blueprint $table) {
$table->string('channel_code')->nullable()->change();
$table->string('locale_code')->nullable();
$table->timestamps();
});
}
}

View File

@ -71,7 +71,7 @@ class ExchangeRateController extends Controller
*/
public function create()
{
$currencies = $this->currency->all();
$currencies = $this->currency->with('CurrencyExchangeRate')->all();
return view($this->_config['view'], compact('currencies'));
}

View File

@ -6,4 +6,17 @@ use Illuminate\Database\Eloquent\Model;
class CoreConfig extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $table = 'core_config';
protected $fillable = [
'code', 'value','channel_code','locale_code'
];
protected $hidden = ['token'];
}

View File

@ -3,6 +3,7 @@
namespace Webkul\Core\Models;
use Illuminate\Database\Eloquent\Model;
use Webkul\Core\Models\CurrencyExchangeRate;
class Currency extends Model
{
@ -14,4 +15,12 @@ class Currency extends Model
protected $fillable = [
'code', 'name'
];
/**
* Get the currency_exchange associated with the currency.
*/
public function CurrencyExchangeRate()
{
return $this->hasOne(CurrencyExchangeRate::class, 'target_currency');
}
}

View File

@ -65,6 +65,8 @@ class RegistrationController extends Controller
$data['is_verified'] = 0;
$data['customer_group_id'] = 1;
$verificationData['email'] = $data['email'];
$verificationData['token'] = md5(uniqid(rand(), true));
$data['token'] = $verificationData['token'];

View File

@ -72,7 +72,7 @@ class InventorySourceController extends Controller
'code' => ['required', 'unique:inventory_sources,code', new \Webkul\Core\Contracts\Validations\Code],
'name' => 'required',
'contact_name' => 'required',
'contact_email' => 'required',
'contact_email' => 'required|email',
'contact_number' => 'required',
'street' => 'required',
'country' => 'required',
@ -81,7 +81,11 @@ class InventorySourceController extends Controller
'postcode' => 'required'
]);
$this->inventorySource->create(request()->all());
$data = request()->all();
$data['status'] = !isset($data['status']) ? 0 : 1;
$this->inventorySource->create($data);
session()->flash('success', 'Inventory source created successfully.');
@ -114,7 +118,7 @@ class InventorySourceController extends Controller
'code' => ['required', 'unique:inventory_sources,code,' . $id, new \Webkul\Core\Contracts\Validations\Code],
'name' => 'required',
'contact_name' => 'required',
'contact_email' => 'required',
'contact_email' => 'required|email',
'contact_number' => 'required',
'street' => 'required',
'country' => 'required',
@ -123,7 +127,11 @@ class InventorySourceController extends Controller
'postcode' => 'required'
]);
$this->inventorySource->update(request()->all(), $id);
$data = request()->all();
$data['status'] = !isset($data['status']) ? 0 : 1;
$this->inventorySource->update($data, $id);
session()->flash('success', 'Inventory source updated successfully.');

View File

@ -0,0 +1,31 @@
<?php
return [
'cashondelivery' => [
'code' => 'cashondelivery',
'title' => 'Cash On Delivery',
'description' => 'Cash On Delivery',
'class' => 'Webkul\Payment\Payment\CashOnDelivery',
'order_status' => 'pending',
'active' => true
],
'moneytransfer' => [
'code' => 'moneytransfer',
'title' => 'Money Transfer',
'description' => 'Money Transfer',
'class' => 'Webkul\Payment\Payment\MoneyTransfer',
'order_status' => 'pending',
'active' => true
],
'paypal_standard' => [
'code' => 'paypal_standard',
'title' => 'Paypal Standard',
'description' => 'Paypal Standard',
'class' => 'Webkul\Paypal\Payment\Standard',
'order_status' => 'pending_payment',
'sandbox' => true,
'active' => true,
'business_account' => 'test@webkul.com'
]
];

View File

@ -28,6 +28,10 @@ class PaymentServiceProvider extends ServiceProvider
public function register()
{
$this->registerFacades();
$this->mergeConfigFrom(
dirname(__DIR__) . '/Config/paymentmethods.php', 'paymentmethods'
);
}
/**
* Register Bouncer as a singleton.

View File

@ -0,0 +1,59 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProductFlatTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('product_flat', function (Blueprint $table) {
$table->increments('id');
$table->string('sku');
$table->string('name')->nullable();
$table->string('description')->nullable();
$table->string('url_key')->nullable();
$table->boolean('new')->nullable();
$table->boolean('featured')->nullable();
$table->boolean('visibility')->nullable();
$table->boolean('status')->nullable();
$table->string('thumbnail')->nullable();
$table->decimal('price', 12, 4)->nullable();
$table->decimal('cost', 12, 4)->nullable();
$table->boolean('special_price')->nullable();
$table->date('special_price_from')->nullable();
$table->date('special_price_to')->nullable();
$table->decimal('weight', 12, 4)->nullable();
$table->integer('color')->nullable();
$table->string('color_label')->nullable();
$table->integer('size')->nullable();
$table->integer('size_label')->nullable();
$table->date('created_at')->nullable();
$table->string('locale')->nullable();
$table->string('channel')->nullable();
$table->integer('product_id')->unsigned();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('product_flat');
}
}

View File

@ -83,24 +83,28 @@ class ProductForm extends FormRequest
$attributes = $product->attribute_family->custom_attributes;
foreach ($attributes as $attribute) {
if($attribute->code == 'sku')
if ($attribute->code == 'sku')
continue;
if($product->type == 'configurable' && in_array($attribute->code, ['price', 'cost', 'special_price', 'special_price_from', 'special_price_to', 'width', 'height', 'depth', 'weight']))
if ($product->type == 'configurable' && in_array($attribute->code, ['price', 'cost', 'special_price', 'special_price_from', 'special_price_to', 'width', 'height', 'depth', 'weight']))
continue;
$validations = [];
if($attribute->is_required) {
if ($attribute->is_required) {
array_push($validations, 'required');
} else {
array_push($validations, 'nullable');
}
if($attribute->type == 'text' && $attribute->validation) {
if ($attribute->type == 'text' && $attribute->validation) {
array_push($validations, $attribute->validation);
}
if($attribute->is_unique) {
if ($attribute->type == 'price') {
array_push($validations, 'decimal');
}
if ($attribute->is_unique) {
array_push($validations, function ($field, $value, $fail) use ($inputs, $attribute) {
$column = ProductAttributeValue::$attributeTypeFields[$attribute->type];

View File

@ -93,7 +93,7 @@ class InvoiceRepository extends Repository
$invoice = $this->model->create([
'order_id' => $order->id,
'total_qty' => $totalQty,
'status' => 'paid',
'state' => 'paid',
'base_currency_code' => $order->base_currency_code,
'channel_currency_code' => $order->channel_currency_code,
'order_currency_code' => $order->order_currency_code,
@ -111,7 +111,6 @@ class InvoiceRepository extends Repository
$invoiceItem = $this->invoiceItem->create([
'invoice_id' => $invoice->id,
'order_item_id' => $orderItem->id,
'state' => 'paid',
'name' => $orderItem->name,
'sku' => $orderItem->sku,
'qty' => $qty,

View File

@ -0,0 +1,21 @@
<?php
return [
'flatrate' => [
'code' => 'flatrate',
'title' => 'Flat Rate',
'description' => 'This is a flat rate',
'active' => true,
'default_rate' => '10',
'type' => 'per_unit',
'class' => 'Webkul\Shipping\Carriers\FlatRate',
],
'free' => [
'code' => 'free',
'title' => 'Free Shipping',
'description' => 'This is a free shipping',
'active' => true,
'class' => 'Webkul\Shipping\Carriers\Free',
]
];

View File

@ -0,0 +1,66 @@
<?php
return [
'carriers' => [
'free' => [
[
'name' => 'title',
'title' => 'Title',
'type' => 'text',
'validation' => 'required',
'channel_based' => false,
'locale_based' => true
], [
'name' => 'description',
'title' => 'Description',
'type' => 'textarea',
'channel_based' => false,
'locale_based' => true
], [
'name' => 'active',
'title' => 'Status',
'type' => 'select',
'options' => [
[
'title' => 'Active',
'value' => true
], [
'title' => 'Inactive',
'value' => false
]
],
'validation' => 'required'
]
],
'flatrate' => [
[
'name' => 'title',
'title' => 'Title',
'type' => 'text',
'validation' => 'required',
'channel_based' => true,
'locale_based' => true
], [
'name' => 'description',
'title' => 'Description',
'type' => 'textarea',
'channel_based' => true,
'locale_based' => false
], [
'name' => 'active',
'title' => 'Status',
'type' => 'select',
'options' => [
[
'title' => 'Active',
'value' => true
], [
'title' => 'Inactive',
'value' => false
]
],
'validation' => 'required'
]
]
]
];

View File

@ -29,7 +29,10 @@ class ShippingServiceProvider extends ServiceProvider
public function register()
{
$this->registerFacades();
$this->registerConfig();
}
/**
* Register Bouncer as a singleton.
*
@ -44,4 +47,20 @@ class ShippingServiceProvider extends ServiceProvider
return new Shipping();
});
}
/**
* Register package config.
*
* @return void
*/
protected function registerConfig()
{
$this->mergeConfigFrom(
dirname(__DIR__) . '/Config/carriers.php', 'carriers'
);
$this->mergeConfigFrom(
dirname(__DIR__) . '/Config/fields.php', 'core'
);
}
}

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,4 +1,16 @@
{
<<<<<<< HEAD
"/js/shop.js": "/js/shop.js?id=ec33679ba3719e48cea6",
"/css/shop.css": "/css/shop.css?id=0f78d361a01660ffd946"
}
}
=======
<<<<<<< HEAD
"/js/shop.js": "/js/shop.js?id=c7fe085a512d913b6670",
"/css/shop.css": "/css/shop.css?id=77c5b3c611d7a0e05d7e"
}
=======
"/js/shop.js": "/js/shop.js?id=c6ba9f43bd31f175a665",
"/css/shop.css": "/css/shop.css?id=637386a2fb6b1de9c4c4"
}
>>>>>>> 5f5249abe4a1447708683968edd5ea610d7d25dc
>>>>>>> e4530c0965b2c02ec2930313f2ec652a09f49cff

View File

@ -367,6 +367,7 @@ input {
.product-card {
position: relative;
padding: 15px;
.product-image {
max-height: 350px;
@ -2822,6 +2823,16 @@ section.review {
}
.menu-block {
margin-bottom: 30px;
&:last-child {
margin-bottom: 0;
}
.menu-block-title {
padding-bottom: 10px;
font-size: 18px;
}
.menubar {
border: 1px solid $border-color;

View File

@ -279,7 +279,7 @@ return [
'newest-first' => 'Newest First',
'oldest-first' => 'Oldest First',
'cheapest-first' => 'Cheapest First',
'expansive-first' => 'Expansive First',
'expensive-first' => 'Expensive First',
'show' => 'Show',
'pager-info' => 'Showing :showing of :total Items',
'description' => 'Description',

View File

@ -54,7 +54,7 @@
</span>
<span>
<a href="{{ route('address.delete', $address->id) }}">
<a href="{{ route('address.delete', $address->id) }}" onclick="deleteAddress('Do you really want to do this?')">
{{ __('shop::app.customer.account.address.index.delete') }}
</a>
</span>
@ -79,3 +79,12 @@
</div>
</div>
@endsection
@push('scripts')
<script>
function deleteAddress(message){
if(!confirm(message))
event.preventDefault();
}
</script>
@endpush

View File

@ -62,6 +62,10 @@
<span class="badge badge-md badge-info">Closed</span>
@elseif($order->status == "pending")
<span class="badge badge-md badge-warning">Pending</span>
@elseif($order->status == "pending_payment")
<span class="badge badge-md badge-warning">Pending Payment</span>
@elseif($order->status == "fraud")
<span class="badge badge-md badge-danger">Fraud</span>
@endif
</td>
</tr>

View File

@ -27,10 +27,10 @@
@foreach($reviews as $review)
<div class="account-item-card mt-15 mb-15">
<div class="media-info">
<?php $image = $productImageHelper->getGalleryImages($review->product); ?>
<?php $image = $productImageHelper->getProductBaseImage($review->product); ?>
<a href="{{ url()->to('/').'/products/'.$review->product->url_key }}" title="{{ $review->product->name }}">
<img class="media" src="{{ $image[0]['small_image_url'] }}"/>
<img class="media" src="{{ $image['small_image_url'] }}"/>
</a>
<div class="info">
@ -59,7 +59,7 @@
<div class="horizontal-rule mb-10 mt-10"></div>
@endforeach
@else
<div class="empty">
<div class="empty mt-15">
{{ __('customer::app.reviews.empty') }}
</div>
@endif

View File

@ -157,7 +157,7 @@
if(thumbList && productHeroImage){
for(let i=0 ; i < thumbFrame.length ; i++){
for(let i=0; i < thumbFrame.length ; i++) {
thumbFrame[i].style.height = (productHeroImage.offsetHeight/4) + "px";
thumbFrame[i].style.width = (productHeroImage.offsetHeight/4)+ "px";
}
@ -170,7 +170,7 @@
window.onresize = function() {
if(thumbList && productHeroImage){
for(let i=0 ; i < thumbFrame.length ; i++){
for(let i=0; i < thumbFrame.length; i++) {
thumbFrame[i].style.height = (productHeroImage.offsetHeight/4) + "px";
thumbFrame[i].style.width = (productHeroImage.offsetHeight/4)+ "px";
}

View File

@ -16,7 +16,7 @@
<tr>
<td>{{ $attribute['label'] }}</td>
<td> - {{ $attribute['value'] }}</td>
<td>{{ $attribute['value'] }}</td>
</tr>
@endforeach

View File

@ -15,6 +15,7 @@
"laravel-mix": "^2.1",
"laravel-mix-merge-manifest": "^0.1.1",
"jquery": "^3.2",
"vue": "^2.1.10"
"vue": "^2.1.10",
"flatpickr": "^4.4.6"
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50 (54983) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Export</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Export" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g transform="translate(1.000000, 6.000000)" stroke="#979797" stroke-width="2">
<path d="M19,5.5 C19,2.78076172 19,0.947428385 19,0 L0,0 L0,20 L19,20 L19,14.5" id="Path-2"></path>
<path d="M8,10 L28.068125,10" id="Path-3"></path>
<polyline id="Path-4" points="26 5.18359375 29.9388428 10.1218262 26 14.894043"></polyline>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 881 B

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
{
"/js/ui.js": "/js/ui.js?id=b25a07d206dd0b89048f",
"/css/ui.css": "/css/ui.css?id=2a7f04ed7d926eaab910"
"/js/ui.js": "/js/ui.js?id=1fdce572fb02cd8c7dad",
"/css/ui.css": "/css/ui.css?id=ea20e89bc6f85a06baad"
}

View File

@ -654,7 +654,7 @@ class DataGrid
}
}
private function getDbQueryResults()
private function getDbQueryResults($pagination = true)
{
$parsed = $this->parse();
@ -778,9 +778,10 @@ class DataGrid
*
* @return view
*/
public function render()
public function render($pagination = true)
{
$this->getDbQueryResults();
$this->getDbQueryResults($pagination);
return view('ui::datagrid.index', [
'css' => $this->css,

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50 (54983) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Export</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Export" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g transform="translate(1.000000, 6.000000)" stroke="#979797" stroke-width="2">
<path d="M19,5.5 C19,2.78076172 19,0.947428385 19,0 L0,0 L0,20 L19,20 L19,14.5" id="Path-2"></path>
<path d="M8,10 L28.068125,10" id="Path-3"></path>
<polyline id="Path-4" points="26 5.18359375 29.9388428 10.1218262 26 14.894043"></polyline>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 881 B

View File

@ -14,3 +14,7 @@ Vue.component("image-item", require("./components/image/image-item"));
Vue.directive("slugify", require("./directives/slugify"));
Vue.directive("code", require("./directives/code"));
Vue.directive("alert", require("./directives/alert"));
Vue.component("datetime", require("./components/datetime"));
Vue.component("date", require("./components/date"));
require('flatpickr/dist/flatpickr.css');

Some files were not shown because too many files have changed in this diff Show More