COnflict resloved
This commit is contained in:
commit
b0a12d85a3
|
|
@ -29,10 +29,10 @@ class AttributeDataGrid
|
|||
'name' => 'Attributes',
|
||||
'table' => 'attributes',
|
||||
'select' => 'id',
|
||||
'perpage' => 10,
|
||||
'aliased' => false, //use this with false as default and true in case of joins
|
||||
'perpage' => 5,
|
||||
'aliased' => true,
|
||||
|
||||
'massoperations' =>[
|
||||
'massoperations' => [
|
||||
[
|
||||
'route' => route('admin.datagrid.delete'),
|
||||
'method' => 'DELETE',
|
||||
|
|
@ -55,20 +55,11 @@ class AttributeDataGrid
|
|||
],
|
||||
],
|
||||
|
||||
'join' => [
|
||||
// [
|
||||
// 'join' => 'leftjoin',
|
||||
// 'table' => 'roles as r',
|
||||
// 'primaryKey' => 'u.role_id',
|
||||
// 'condition' => '=',
|
||||
// 'secondaryKey' => 'r.id',
|
||||
// ]
|
||||
],
|
||||
'join' => [],
|
||||
|
||||
//use aliasing on secodary columns if join is performed
|
||||
|
||||
'columns' => [
|
||||
|
||||
[
|
||||
'name' => 'id',
|
||||
'alias' => 'attributeId',
|
||||
|
|
@ -95,73 +86,106 @@ class AttributeDataGrid
|
|||
'alias' => 'attributeType',
|
||||
'type' => 'string',
|
||||
'label' => 'Type',
|
||||
'sortable' => true,
|
||||
'sortable' => false,
|
||||
],
|
||||
[
|
||||
'name' => 'is_required',
|
||||
'alias' => 'attributeIsRequired',
|
||||
'type' => 'string',
|
||||
'label' => 'Required',
|
||||
'sortable' => true,
|
||||
'sortable' => false,
|
||||
'wrapper' => function ($value) {
|
||||
if($value == 0)
|
||||
return "False";
|
||||
else
|
||||
return "True";
|
||||
},
|
||||
],
|
||||
[
|
||||
'name' => 'is_unique',
|
||||
'alias' => 'attributeIsUnique',
|
||||
'type' => 'string',
|
||||
'label' => 'Unique',
|
||||
'sortable' => true,
|
||||
'sortable' => false,
|
||||
'wrapper' => function ($value) {
|
||||
if($value == 0)
|
||||
return "False";
|
||||
else
|
||||
return "True";
|
||||
},
|
||||
],
|
||||
[
|
||||
'name' => 'value_per_locale',
|
||||
'alias' => 'attributeValuePerLocale',
|
||||
'type' => 'string',
|
||||
'label' => 'ValuePerLocale',
|
||||
'sortable' => true,
|
||||
'sortable' => false,
|
||||
'wrapper' => function ($value) {
|
||||
if($value == 0)
|
||||
return "False";
|
||||
else
|
||||
return "True";
|
||||
},
|
||||
],
|
||||
[
|
||||
'name' => 'value_per_channel',
|
||||
'alias' => 'attributeValuePerChannel',
|
||||
'type' => 'string',
|
||||
'label' => 'ValuePerChannel',
|
||||
'sortable' => true,
|
||||
'sortable' => false,
|
||||
'wrapper' => function ($value) {
|
||||
if($value == 0)
|
||||
return "False";
|
||||
else
|
||||
return "True";
|
||||
},
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
'filterable' => [
|
||||
// [
|
||||
// 'column' => 'id',
|
||||
// 'alias' => 'attribute_family_id',
|
||||
// 'type' => 'number',
|
||||
// 'label' => 'ID',
|
||||
// ],
|
||||
// [
|
||||
// 'column' => 'code',
|
||||
// 'alias' => 'attribute_family_code',
|
||||
// 'type' => 'string',
|
||||
// 'label' => 'Code',
|
||||
// ],
|
||||
// [
|
||||
// 'column' => 'name',
|
||||
// 'alias' => 'attribute_family_name',
|
||||
// 'type' => 'string',
|
||||
// 'label' => 'Name',
|
||||
// ],
|
||||
[
|
||||
'column' => 'id',
|
||||
'alias' => 'attributeId',
|
||||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
],
|
||||
[
|
||||
'column' => 'code',
|
||||
'alias' => 'attributeCode',
|
||||
'type' => 'string',
|
||||
'label' => 'Code',
|
||||
],
|
||||
[
|
||||
'column' => 'admin_name',
|
||||
'alias' => 'attributeAdminName',
|
||||
'type' => 'string',
|
||||
'label' => 'AdminName',
|
||||
],
|
||||
[
|
||||
'column' => 'type',
|
||||
'alias' => 'attributeType',
|
||||
'type' => 'string',
|
||||
'label' => 'Type',
|
||||
],
|
||||
],
|
||||
|
||||
//don't use aliasing in case of searchables
|
||||
|
||||
'searchable' => [
|
||||
// [
|
||||
// 'column' => 'name',
|
||||
// 'type' => 'string',
|
||||
// 'label' => 'Name',
|
||||
// ],
|
||||
// [
|
||||
// 'column' => 'code',
|
||||
// 'type' => 'string',
|
||||
// 'label' => 'Code',
|
||||
// ],
|
||||
[
|
||||
'column' => 'code',
|
||||
'alias' => 'attributeCode',
|
||||
'type' => 'string',
|
||||
],
|
||||
[
|
||||
'column' => 'admin_name',
|
||||
'alias' => 'attributeAdminName',
|
||||
'type' => 'string',
|
||||
],
|
||||
[
|
||||
'column' => 'type',
|
||||
'alias' => 'attributeType',
|
||||
'type' => 'string',
|
||||
],
|
||||
],
|
||||
|
||||
//list of viable operators that will be used
|
||||
|
|
@ -176,16 +200,14 @@ class AttributeDataGrid
|
|||
'like' => "like",
|
||||
'nlike' => "not like",
|
||||
],
|
||||
// 'css' => []
|
||||
|
||||
// 'css' => []
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
|
||||
return $this->createAttributeDataGrid()->render();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -69,7 +69,6 @@ class CategoryDataGrid
|
|||
'condition' => '=',
|
||||
'secondaryKey' => 'cta.category_id',
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
//use aliasing on secodary columns if join is performed
|
||||
|
|
@ -105,44 +104,56 @@ class CategoryDataGrid
|
|||
'type' => 'string',
|
||||
'label' => 'Visible in Menu',
|
||||
'sortable' => true,
|
||||
'wrapper' => function ($value) {
|
||||
if($value == 0)
|
||||
return "False";
|
||||
else
|
||||
return "True";
|
||||
},
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
'filterable' => [
|
||||
// [
|
||||
// 'column' => 'id',
|
||||
// 'alias' => 'attribute_family_id',
|
||||
// 'type' => 'number',
|
||||
// 'label' => 'ID',
|
||||
// ],
|
||||
// [
|
||||
// 'column' => 'code',
|
||||
// 'alias' => 'attribute_family_code',
|
||||
// 'type' => 'string',
|
||||
// 'label' => 'Code',
|
||||
// ],
|
||||
// [
|
||||
// 'column' => 'name',
|
||||
// 'alias' => 'attribute_family_name',
|
||||
// 'type' => 'string',
|
||||
// 'label' => 'Name',
|
||||
// ],
|
||||
[
|
||||
'column' => 'cat.id',
|
||||
'alias' => 'catID',
|
||||
'type' => 'number',
|
||||
'label' => 'Category ID',
|
||||
], [
|
||||
'column' => 'ct.name',
|
||||
'alias' => 'catName',
|
||||
'type' => 'string',
|
||||
'label' => 'Category Name',
|
||||
], [
|
||||
'column' => 'cta.name',
|
||||
'alias' => 'parentName',
|
||||
'type' => 'string',
|
||||
'label' => 'Parent Name',
|
||||
], [
|
||||
'column' => 'cat.status',
|
||||
'alias' => 'catStatus',
|
||||
'type' => 'string',
|
||||
'label' => 'Visible in Menu',
|
||||
],
|
||||
],
|
||||
|
||||
//don't use aliasing in case of searchables
|
||||
|
||||
'searchable' => [
|
||||
// [
|
||||
// 'column' => 'name',
|
||||
// 'type' => 'string',
|
||||
// 'label' => 'Name',
|
||||
// ],
|
||||
// [
|
||||
// 'column' => 'code',
|
||||
// 'type' => 'string',
|
||||
// 'label' => 'Code',
|
||||
// ],
|
||||
[
|
||||
'column' => 'cat.id',
|
||||
'type' => 'number',
|
||||
'label' => 'Category ID',
|
||||
], [
|
||||
'column' => 'ct.name',
|
||||
'type' => 'string',
|
||||
'label' => 'Category Name',
|
||||
], [
|
||||
'column' => 'cat.status',
|
||||
'type' => 'string',
|
||||
'label' => 'Visible in Menu',
|
||||
]
|
||||
],
|
||||
|
||||
//list of viable operators that will be used
|
||||
|
|
@ -158,14 +169,11 @@ class CategoryDataGrid
|
|||
'nlike' => "not like",
|
||||
],
|
||||
// 'css' => []
|
||||
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
|
||||
return $this->createCategoryDataGrid()->render();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,14 +30,14 @@ class CustomerDataGrid
|
|||
'table' => 'customers',
|
||||
'select' => 'id',
|
||||
'perpage' => 10,
|
||||
'aliased' => false, //use this with false as default and true in case of joins
|
||||
'aliased' => true, //use this with false as default and true in case of joins
|
||||
|
||||
'massoperations' =>[
|
||||
[
|
||||
'route' => route('admin.datagrid.delete'),
|
||||
'method' => 'DELETE',
|
||||
'label' => 'Delete',
|
||||
'type' => 'button',
|
||||
'type' => 'button', //select || button only
|
||||
],
|
||||
],
|
||||
|
||||
|
|
@ -56,53 +56,45 @@ class CustomerDataGrid
|
|||
],
|
||||
|
||||
'join' => [
|
||||
// [
|
||||
// 'join' => 'leftjoin',
|
||||
// 'table' => 'roles as r',
|
||||
// 'primaryKey' => 'u.role_id',
|
||||
// 'condition' => '=',
|
||||
// 'secondaryKey' => 'r.id',
|
||||
// ]
|
||||
|
||||
],
|
||||
|
||||
//use aliasing on secodary columns if join is performed
|
||||
|
||||
'columns' => [
|
||||
|
||||
[
|
||||
'name' => 'id',
|
||||
'alias' => 'customerId',
|
||||
'alias' => 'ID',
|
||||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
'label' => 'Customer ID',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
'name' => 'first_name',
|
||||
'alias' => 'customerFirstName',
|
||||
'alias' => 'FirstName',
|
||||
'type' => 'string',
|
||||
'label' => 'Name',
|
||||
'sortable' => true,
|
||||
'label' => 'Customer First Name',
|
||||
'sortable' => false,
|
||||
],
|
||||
[
|
||||
'name' => 'email',
|
||||
'alias' => 'customerEmail',
|
||||
'alias' => 'Email',
|
||||
'type' => 'string',
|
||||
'label' => 'Email',
|
||||
'sortable' => true,
|
||||
'label' => 'Customer E-Mail',
|
||||
'sortable' => false,
|
||||
],
|
||||
[
|
||||
'name' => 'phone',
|
||||
'alias' => 'customerPhone',
|
||||
'alias' => 'Phone',
|
||||
'type' => 'number',
|
||||
'label' => 'Phone',
|
||||
'label' => 'Customer Phone',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
'name' => 'customer_group_id',
|
||||
'alias' => 'customerGroupId',
|
||||
'alias' => 'CustomerGroupId',
|
||||
'type' => 'number',
|
||||
'label' => 'Customer Group',
|
||||
'sortable' => true,
|
||||
'sortable' => false,
|
||||
],
|
||||
],
|
||||
|
||||
|
|
@ -111,49 +103,31 @@ class CustomerDataGrid
|
|||
'filterable' => [
|
||||
|
||||
[
|
||||
'name' => 'id',
|
||||
'alias' => 'customerId',
|
||||
'column' => 'id',
|
||||
'alias' => 'ID',
|
||||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
'label' => 'Customer ID',
|
||||
],
|
||||
[
|
||||
'name' => 'first_name',
|
||||
'alias' => 'customerFirstName',
|
||||
'column' => 'first_name',
|
||||
'alias' => 'FirstName',
|
||||
'type' => 'string',
|
||||
'label' => 'Name',
|
||||
],
|
||||
[
|
||||
'name' => 'email',
|
||||
'alias' => 'customerEmail',
|
||||
'type' => 'string',
|
||||
'label' => 'Email',
|
||||
],
|
||||
[
|
||||
'name' => 'phone',
|
||||
'alias' => 'customerPhone',
|
||||
'type' => 'number',
|
||||
'label' => 'Phone',
|
||||
],
|
||||
[
|
||||
'name' => 'customer_group_id',
|
||||
'alias' => 'customerGroupId',
|
||||
'type' => 'string',
|
||||
'label' => 'Customer Group',
|
||||
],
|
||||
'label' => 'Customer First Name',
|
||||
]
|
||||
],
|
||||
|
||||
//don't use aliasing in case of searchables
|
||||
|
||||
'searchable' => [
|
||||
[
|
||||
'column' => 'first_name',
|
||||
'column' => 'FirstName',
|
||||
'type' => 'string',
|
||||
'label' => 'Title',
|
||||
'label' => 'Customer First Name',
|
||||
],
|
||||
[
|
||||
'column' => 'email',
|
||||
'type' => 'string',
|
||||
'label' => 'Rating',
|
||||
'label' => 'Customer E-Mail',
|
||||
],
|
||||
],
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ class CustomerReviewDataGrid
|
|||
* The CustomerReviewDataGrid
|
||||
* implementation.
|
||||
*
|
||||
* @var ReviewsDataGrid
|
||||
* @var CustomerReviewsDataGrid
|
||||
* for Reviews
|
||||
*/
|
||||
|
||||
|
|
@ -57,13 +57,6 @@ class CustomerReviewDataGrid
|
|||
],
|
||||
|
||||
'join' => [
|
||||
// [
|
||||
// 'join' => 'leftjoin',
|
||||
// 'table' => 'roles as r',
|
||||
// 'primaryKey' => 'u.role_id',
|
||||
// 'condition' => '=',
|
||||
// 'secondaryKey' => 'r.id',
|
||||
// ]
|
||||
],
|
||||
|
||||
//use aliasing on secodary columns if join is performed
|
||||
|
|
@ -76,67 +69,51 @@ class CustomerReviewDataGrid
|
|||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'name' => 'title',
|
||||
'alias' => 'titleName',
|
||||
'type' => 'string',
|
||||
'label' => 'Title',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
'name' => 'rating',
|
||||
'alias' => 'productRating',
|
||||
'type' => 'number',
|
||||
'label' => 'Rating',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'name' => 'comment',
|
||||
'alias' => 'productComment',
|
||||
'type' => 'string',
|
||||
'label' => 'Comment',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'name' => 'status',
|
||||
'alias' => 'reviewStatus',
|
||||
'type' => 'number',
|
||||
'label' => 'Status',
|
||||
'sortable' => true,
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
//don't use aliasing in case of filters
|
||||
|
||||
'filterable' => [
|
||||
[
|
||||
'name' => 'id',
|
||||
'column' => 'id',
|
||||
'alias' => 'reviewId',
|
||||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
],
|
||||
[
|
||||
'name' => 'title',
|
||||
], [
|
||||
'column' => 'title',
|
||||
'alias' => 'titleName',
|
||||
'type' => 'string',
|
||||
'label' => 'Title',
|
||||
],
|
||||
[
|
||||
'name' => 'rating',
|
||||
], [
|
||||
'column' => 'rating',
|
||||
'alias' => 'productRating',
|
||||
'type' => 'number',
|
||||
'label' => 'Rating',
|
||||
],
|
||||
[
|
||||
'name' => 'comment',
|
||||
], [
|
||||
'column' => 'comment',
|
||||
'alias' => 'productComment',
|
||||
'type' => 'string',
|
||||
'label' => 'Comment',
|
||||
],
|
||||
[
|
||||
'name' => 'status',
|
||||
], [
|
||||
'column' => 'status',
|
||||
'alias' => 'reviewStatus',
|
||||
'type' => 'string',
|
||||
'label' => 'Status',
|
||||
|
|
@ -144,14 +121,12 @@ class CustomerReviewDataGrid
|
|||
],
|
||||
|
||||
//don't use aliasing in case of searchables
|
||||
|
||||
'searchable' => [
|
||||
[
|
||||
'column' => 'title',
|
||||
'type' => 'string',
|
||||
'label' => 'Title',
|
||||
],
|
||||
[
|
||||
], [
|
||||
'column' => 'rating',
|
||||
'type' => 'number',
|
||||
'label' => 'Rating',
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@ class InventorySourcesDataGrid
|
|||
],
|
||||
|
||||
//use aliasing on secodary columns if join is performed
|
||||
|
||||
'columns' => [
|
||||
|
||||
[
|
||||
|
|
@ -73,34 +72,36 @@ class InventorySourcesDataGrid
|
|||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'name' => 'code',
|
||||
'alias' => 'inventoryCode',
|
||||
'type' => 'string',
|
||||
'label' => 'Code',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
'sortable' => false,
|
||||
], [
|
||||
'name' => 'name',
|
||||
'alias' => 'inventoryName',
|
||||
'type' => 'string',
|
||||
'label' => 'Name',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
'sortable' => false,
|
||||
], [
|
||||
'name' => 'priority',
|
||||
'alias' => 'inventoryPriority',
|
||||
'type' => 'string',
|
||||
'label' => 'Priority',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'name' => 'status',
|
||||
'alias' => 'inventoryStatus',
|
||||
'type' => 'string',
|
||||
'label' => 'Status',
|
||||
'sortable' => true,
|
||||
'wrapper' => function ($value) {
|
||||
if($value == 0)
|
||||
return "In Active";
|
||||
else
|
||||
return "Active";
|
||||
},
|
||||
],
|
||||
|
||||
],
|
||||
|
|
|
|||
|
|
@ -0,0 +1,179 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Admin\DataGrids;
|
||||
|
||||
use Illuminate\View\View;
|
||||
use Webkul\Ui\DataGrid\Facades\DataGrid;
|
||||
|
||||
/**
|
||||
* Order DataGrid
|
||||
*
|
||||
* @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 AttributeDataGrid
|
||||
* for countries
|
||||
*/
|
||||
|
||||
public function createCategoryDataGrid()
|
||||
{
|
||||
|
||||
return DataGrid::make([
|
||||
'name' => 'Orders',
|
||||
'table' => 'orders as ord',
|
||||
'select' => 'ord.id',
|
||||
'perpage' => 5,
|
||||
'aliased' => true, //use this with false as default and true in case of joins
|
||||
|
||||
'massoperations' =>[
|
||||
[
|
||||
'route' => route('admin.datagrid.delete'),
|
||||
'method' => 'DELETE',
|
||||
'label' => 'Delete',
|
||||
'type' => 'button',
|
||||
],
|
||||
],
|
||||
|
||||
'actions' => [
|
||||
[
|
||||
'type' => 'Edit',
|
||||
'route' => route('admin.datagrid.delete'),
|
||||
'confirm_text' => 'Do you really want to do this?',
|
||||
'icon' => 'icon pencil-lg-icon',
|
||||
], [
|
||||
'type' => 'Delete',
|
||||
'route' => route('admin.datagrid.delete'),
|
||||
'confirm_text' => 'Do you really want to do this?',
|
||||
'icon' => 'icon trash-icon',
|
||||
],
|
||||
],
|
||||
|
||||
'join' => [
|
||||
[
|
||||
'join' => 'leftjoin',
|
||||
'table' => 'category_translations as ct',
|
||||
'primaryKey' => 'cat.id',
|
||||
'condition' => '=',
|
||||
'secondaryKey' => 'ct.category_id',
|
||||
], [
|
||||
'join' => 'leftjoin',
|
||||
'table' => 'category_translations as cta',
|
||||
'primaryKey' => 'cat.parent_id',
|
||||
'condition' => '=',
|
||||
'secondaryKey' => 'cta.category_id',
|
||||
],
|
||||
],
|
||||
|
||||
//use aliasing on secodary columns if join is performed
|
||||
|
||||
'columns' => [
|
||||
[
|
||||
'name' => 'cat.id',
|
||||
'alias' => 'catID',
|
||||
'type' => 'number',
|
||||
'label' => 'Category ID',
|
||||
'sortable' => true,
|
||||
], [
|
||||
'name' => 'ct.name',
|
||||
'alias' => 'catName',
|
||||
'type' => 'string',
|
||||
'label' => 'Category Name',
|
||||
'sortable' => false,
|
||||
], [
|
||||
'name' => 'cat.position',
|
||||
'alias' => 'catPosition',
|
||||
'type' => 'string',
|
||||
'label' => 'Category Position',
|
||||
'sortable' => false,
|
||||
], [
|
||||
'name' => 'cta.name',
|
||||
'alias' => 'parentName',
|
||||
'type' => 'string',
|
||||
'label' => 'Parent Name',
|
||||
'sortable' => true,
|
||||
], [
|
||||
'name' => 'cat.status',
|
||||
'alias' => 'catStatus',
|
||||
'type' => 'string',
|
||||
'label' => 'Visible in Menu',
|
||||
'sortable' => true,
|
||||
'wrapper' => function ($value) {
|
||||
if($value == 0)
|
||||
return "False";
|
||||
else
|
||||
return "True";
|
||||
},
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
'filterable' => [
|
||||
[
|
||||
'column' => 'cat.id',
|
||||
'alias' => 'catID',
|
||||
'type' => 'number',
|
||||
'label' => 'Category ID',
|
||||
], [
|
||||
'column' => 'ct.name',
|
||||
'alias' => 'catName',
|
||||
'type' => 'string',
|
||||
'label' => 'Category Name',
|
||||
], [
|
||||
'column' => 'cta.name',
|
||||
'alias' => 'parentName',
|
||||
'type' => 'string',
|
||||
'label' => 'Parent Name',
|
||||
], [
|
||||
'column' => 'cat.status',
|
||||
'alias' => 'catStatus',
|
||||
'type' => 'string',
|
||||
'label' => 'Visible in Menu',
|
||||
],
|
||||
],
|
||||
|
||||
//don't use aliasing in case of searchables
|
||||
|
||||
'searchable' => [
|
||||
[
|
||||
'column' => 'cat.id',
|
||||
'type' => 'number',
|
||||
'label' => 'Category ID',
|
||||
], [
|
||||
'column' => 'ct.name',
|
||||
'type' => 'string',
|
||||
'label' => 'Category Name',
|
||||
], [
|
||||
'column' => 'cat.status',
|
||||
'type' => 'string',
|
||||
'label' => 'Visible in Menu',
|
||||
]
|
||||
],
|
||||
|
||||
//list of viable operators that will be used
|
||||
'operators' => [
|
||||
'eq' => "=",
|
||||
'lt' => "<",
|
||||
'gt' => ">",
|
||||
'lte' => "<=",
|
||||
'gte' => ">=",
|
||||
'neqs' => "<>",
|
||||
'neqn' => "!=",
|
||||
'like' => "like",
|
||||
'nlike' => "not like",
|
||||
],
|
||||
// 'css' => []
|
||||
]);
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
return $this->createCategoryDataGrid()->render();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -129,25 +129,25 @@ class ProductDataGrid
|
|||
'filterable' => [
|
||||
//column, type, and label
|
||||
[
|
||||
'name' => 'prods.id',
|
||||
'column' => 'prods.id',
|
||||
'alias' => 'productID',
|
||||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
],
|
||||
[
|
||||
'name' => 'prods.sku',
|
||||
'column' => 'prods.sku',
|
||||
'alias' => 'productCode',
|
||||
'type' => 'string',
|
||||
'label' => 'SKU',
|
||||
],
|
||||
[
|
||||
'name' => 'attfam.name',
|
||||
'column' => 'attfam.name',
|
||||
'alias' => 'FamilyName',
|
||||
'type' => 'string',
|
||||
'label' => 'Family Name',
|
||||
],
|
||||
[
|
||||
'name' => 'pi.qty',
|
||||
'column' => 'pi.qty',
|
||||
'alias' => 'ProductQuantity',
|
||||
'type' => 'number',
|
||||
'label' => 'Product Quatity',
|
||||
|
|
|
|||
|
|
@ -67,28 +67,25 @@ class SliderDataGrid
|
|||
//use aliasing on secodary columns if join is performed
|
||||
|
||||
'columns' => [
|
||||
|
||||
[
|
||||
'name' => 's.id',
|
||||
'alias' => 'sliderId',
|
||||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'name' => 's.title',
|
||||
'alias' => 'sliderTitle',
|
||||
'type' => 'string',
|
||||
'label' => 'title',
|
||||
],
|
||||
[
|
||||
'sortable' => false
|
||||
], [
|
||||
'name' => 's.channel_id',
|
||||
'alias' => 'channelId',
|
||||
'type' => 'string',
|
||||
'label' => 'Channel ID',
|
||||
'sortable' => true,
|
||||
],
|
||||
[
|
||||
'sortable' => false,
|
||||
], [
|
||||
'name' => 'c.name',
|
||||
'alias' => 'channelName',
|
||||
'type' => 'string',
|
||||
|
|
@ -98,41 +95,31 @@ class SliderDataGrid
|
|||
],
|
||||
|
||||
//don't use aliasing in case of filters
|
||||
|
||||
'filterable' => [
|
||||
[
|
||||
'column' => 'id',
|
||||
'alias' => 'locale_id',
|
||||
'column' => 's.id',
|
||||
'alias' => 'sliderId',
|
||||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
],
|
||||
[
|
||||
'column' => 'code',
|
||||
'alias' => 'locale_code',
|
||||
'label' => 'ID'
|
||||
], [
|
||||
'column' => 's.title',
|
||||
'alias' => 'SliderTitle',
|
||||
'type' => 'string',
|
||||
'label' => 'Code',
|
||||
],
|
||||
[
|
||||
'column' => 'name',
|
||||
'alias' => 'locale_name',
|
||||
'type' => 'string',
|
||||
'label' => 'Name',
|
||||
'label' => 'Slider Title'
|
||||
],
|
||||
],
|
||||
|
||||
//don't use aliasing in case of searchables
|
||||
|
||||
'searchable' => [
|
||||
// [
|
||||
// 'column' => 'name',
|
||||
// 'type' => 'string',
|
||||
// 'label' => 'Name',
|
||||
// ],
|
||||
// [
|
||||
// 'column' => 'code',
|
||||
// 'type' => 'string',
|
||||
// 'label' => 'Code',
|
||||
// ],
|
||||
[
|
||||
'column' => 's.id',
|
||||
'type' => 'number',
|
||||
'label' => 'ID'
|
||||
], [
|
||||
'column' => 's.title',
|
||||
'type' => 'string',
|
||||
'label' => 'Slider Title'
|
||||
]
|
||||
],
|
||||
|
||||
//list of viable operators that will be used
|
||||
|
|
@ -148,9 +135,7 @@ class SliderDataGrid
|
|||
'nlike' => "not like",
|
||||
],
|
||||
// 'css' => []
|
||||
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public function render()
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ class TaxRateDataGrid
|
|||
{
|
||||
|
||||
return DataGrid::make([
|
||||
|
||||
'name' => 'Tax Rates',
|
||||
'table' => 'tax_rates as tr',
|
||||
'select' => 'tr.id',
|
||||
|
|
@ -64,21 +63,13 @@ class TaxRateDataGrid
|
|||
'icon' => 'icon trash-icon',
|
||||
],
|
||||
],
|
||||
'join' => [
|
||||
// [
|
||||
// 'join' => 'leftjoin',
|
||||
// 'table' => 'roles as r',
|
||||
// 'primaryKey' => 'u.role_id',
|
||||
// 'condition' => '=',
|
||||
// 'secondaryKey' => 'r.id',
|
||||
// ]
|
||||
],
|
||||
'join' => [],
|
||||
|
||||
//use aliasing on secodary columns if join is performed
|
||||
'columns' => [
|
||||
[
|
||||
'name' => 'tr.id',
|
||||
'alias' => 'ID',
|
||||
'alias' => 'id',
|
||||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
'sortable' => true,
|
||||
|
|
@ -90,7 +81,7 @@ class TaxRateDataGrid
|
|||
'label' => 'Identifier',
|
||||
'sortable' => true,
|
||||
// 'wrapper' => function ($value, $object) {
|
||||
// return '<a class="color-red">' . $object->Name . '</a>';
|
||||
// return '<a class="color-red">' . $object->identifier . '</a>';
|
||||
// },
|
||||
],
|
||||
[
|
||||
|
|
@ -119,32 +110,27 @@ class TaxRateDataGrid
|
|||
//don't use aliasing in case of filters
|
||||
'filterable' => [
|
||||
[
|
||||
'name' => 'tr.id',
|
||||
'column' => 'tr.id',
|
||||
'alias' => 'ID',
|
||||
'type' => 'number',
|
||||
'label' => 'ID',
|
||||
],
|
||||
[
|
||||
'name' => 'tr.identifier',
|
||||
], [
|
||||
'column' => 'tr.identifier',
|
||||
'alias' => 'identifier',
|
||||
'type' => 'string',
|
||||
'label' => 'Identifier',
|
||||
],
|
||||
[
|
||||
'name' => 'tr.state',
|
||||
], [
|
||||
'column' => 'tr.state',
|
||||
'alias' => 'state',
|
||||
'type' => 'string',
|
||||
'label' => 'State',
|
||||
],
|
||||
[
|
||||
'name' => 'tr.country',
|
||||
], [
|
||||
'column' => 'tr.country',
|
||||
'alias' => 'country',
|
||||
'type' => 'string',
|
||||
'label' => 'Country',
|
||||
],
|
||||
|
||||
[
|
||||
'name' => 'tr.tax_rate',
|
||||
], [
|
||||
'column' => 'tr.tax_rate',
|
||||
'alias' => 'tax_rate',
|
||||
'type' => 'number',
|
||||
'label' => 'Tax Rate',
|
||||
|
|
@ -157,22 +143,6 @@ class TaxRateDataGrid
|
|||
'type' => 'string',
|
||||
'label' => 'Identifier',
|
||||
],
|
||||
[
|
||||
'column' => 'tr.state',
|
||||
'type' => 'string',
|
||||
'label' => 'State',
|
||||
],
|
||||
[
|
||||
'column' => 'tr.country',
|
||||
'type' => 'string',
|
||||
'label' => 'Country',
|
||||
],
|
||||
|
||||
[
|
||||
'column' => 'tr.tax_rate',
|
||||
'type' => 'number',
|
||||
'label' => 'Tax Rate',
|
||||
],
|
||||
],
|
||||
'operators' => [
|
||||
'eq' => "=",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Admin\Exceptions;
|
||||
|
||||
use Exception;
|
||||
use Illuminate\Auth\AuthenticationException;
|
||||
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
||||
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
|
||||
class Handler extends ExceptionHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* Render an exception into an HTTP response.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Exception $exception
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function render($request, Exception $exception)
|
||||
{
|
||||
|
||||
if ($exception instanceof HttpException) {
|
||||
$statusCode = $exception->getStatusCode();
|
||||
|
||||
if(strpos($_SERVER['REQUEST_URI'], 'admin') !== false){
|
||||
return response(view('admin::errors.'.$statusCode, [
|
||||
'msg' => $exception->getMessage(),
|
||||
'code' => $statusCode
|
||||
]), $statusCode);
|
||||
}else {
|
||||
return response(view('shop::errors.'.$statusCode, [
|
||||
'msg' => $exception->getMessage(),
|
||||
'code' => $statusCode
|
||||
]), $statusCode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return parent::render($request, $exception);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Core\Http\Controllers;
|
||||
namespace Webkul\Admin\Http\Controllers\Customer;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
|
@ -40,32 +40,32 @@ Route::group(['middleware' => ['web']], function () {
|
|||
Route::get('dashboard', 'Webkul\Admin\Http\Controllers\DashboardController@index')->name('admin.dashboard.index');
|
||||
|
||||
//Customers Management Routes
|
||||
|
||||
Route::get('customers', 'Webkul\Core\Http\Controllers\CustomerController@index')->defaults('_config', [
|
||||
Route::get('customer', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@index')->defaults('_config', [
|
||||
'view' => 'admin::customers.index'
|
||||
])->name('admin.customer.index');
|
||||
|
||||
Route::get('customers/orders', 'Webkul\Core\Http\Controllers\CustomerController@index')->defaults('_config',[
|
||||
Route::get('customer/orders', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@index')->defaults('_config',[
|
||||
'view' => 'admin::customers.orders.index'
|
||||
])->name('admin.customer.orders.index');
|
||||
|
||||
Route::get('customers/create', 'Webkul\Core\Http\Controllers\CustomerController@create')->defaults('_config',[
|
||||
Route::get('customer/create', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@create')->defaults('_config',[
|
||||
'view' => 'admin::customers.create'
|
||||
])->name('admin.customer.create');
|
||||
|
||||
Route::post('customers/create', 'Webkul\Core\Http\Controllers\CustomerController@store')->defaults('_config',[
|
||||
Route::post('customer/create', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@store')->defaults('_config',[
|
||||
'redirect' => 'admin.customer.index'
|
||||
])->name('admin.customer.store');
|
||||
|
||||
Route::get('customers/edit/{id}', 'Webkul\Core\Http\Controllers\CustomerController@edit')->defaults('_config',[
|
||||
Route::get('customer/edit/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@edit')->defaults('_config',[
|
||||
'view' => 'admin::customers.edit'
|
||||
])->name('admin.customer.edit');
|
||||
|
||||
Route::put('customers/edit/{id}', 'Webkul\Core\Http\Controllers\CustomerController@update')->defaults('_config', [
|
||||
Route::put('customer/edit/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@update')->defaults('_config', [
|
||||
'redirect' => 'admin.customer.index'
|
||||
])->name('admin.customer.update');
|
||||
|
||||
Route::get('customers/delete/{id}', 'Webkul\Core\Http\Controllers\CustomerController@destroy')->name('admin.customer.delete');
|
||||
Route::get('customers/delete/{id}', 'Webkul\Admin\Http\Controllers\CustomerController@destroy')->name('admin.customer.delete');
|
||||
|
||||
|
||||
Route::get('reviews', 'Webkul\Product\Http\Controllers\ReviewController@index')->defaults('_config',[
|
||||
'view' => 'admin::customers.review.index'
|
||||
|
|
@ -79,6 +79,7 @@ Route::group(['middleware' => ['web']], function () {
|
|||
'redirect' => 'admin.customer.review.index'
|
||||
])->name('admin.customer.review.update');
|
||||
|
||||
|
||||
// Sales Routes
|
||||
Route::prefix('sales')->group(function () {
|
||||
// Sales Order Routes
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ use Illuminate\Support\ServiceProvider;
|
|||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use Webkul\Admin\Providers\EventServiceProvider;
|
||||
use Illuminate\Contracts\Debug\ExceptionHandler;
|
||||
use Webkul\Admin\Exceptions\Handler;
|
||||
|
||||
class AdminServiceProvider extends ServiceProvider
|
||||
{
|
||||
|
|
@ -29,6 +31,11 @@ class AdminServiceProvider extends ServiceProvider
|
|||
$this->composeView();
|
||||
|
||||
$this->app->register(EventServiceProvider::class);
|
||||
|
||||
$this->app->bind(
|
||||
ExceptionHandler::class,
|
||||
Handler::class
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
|
||||
@section('content')
|
||||
<div class="content">
|
||||
|
||||
<form method="POST" action="{{ route('admin.catalog.categories.store') }}" @submit.prevent="onSubmit">
|
||||
|
||||
<form method="POST" action="{{ route('admin.catalog.categories.store') }}" @submit.prevent="onSubmit" enctype="multipart/form-data">
|
||||
|
||||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
|
|
@ -108,7 +108,7 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
</div>
|
||||
@stop
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
@extends('admin::layouts.content')
|
||||
|
||||
@section('page_title')
|
||||
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<div class="error-container" style="width: 100%; display: flex; justify-content: center;">
|
||||
|
||||
<div class="wrapper" style="display: flex; height: 60vh; width: 100%;
|
||||
justify-content: start; align-items: center;">
|
||||
|
||||
<div class="error-box" style="width: 50%">
|
||||
|
||||
<div class="error-title" style="font-size: 100px;color: #5E5E5E"> {{ $code }}</div>
|
||||
|
||||
<div class="error-messgae" style="font-size: 24px;color: #5E5E5E">Page Not Found</div>
|
||||
|
||||
<div class="error-description" style="margin-top: 20px;margin-bottom: 20px;color: #242424">The Page you are looking for doesnt exist or have secrately escaped;head backm to home and make a fresh move again.</div>
|
||||
|
||||
<a href="{{ route('admin.dashboard.index') }}">GO TO HOME</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="error-graphic icon-404" style="margin-left: 10% ;"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@stop
|
||||
|
|
@ -1,13 +1,30 @@
|
|||
@extends('admin::layouts.content')
|
||||
|
||||
@section('page_title')
|
||||
{{ __('admin::app.catalog.categories.edit-title') }}
|
||||
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<div class="content">
|
||||
<div class="error-container" style="width: 100%; display: flex; justify-content: center;">
|
||||
|
||||
<div class="wrapper" style="display: flex; height: 60vh; width: 100%;
|
||||
justify-content: start; align-items: center;">
|
||||
|
||||
<div class="error-box" style="width: 50%">
|
||||
|
||||
<div class="error-title" style="font-size: 100px;color: #5E5E5E"> {{ $code }}</div>
|
||||
|
||||
<div class="error-messgae" style="font-size: 24px;color: #5E5E5E">Page Not Found</div>
|
||||
|
||||
<div class="error-description" style="margin-top: 20px;margin-bottom: 20px;color: #242424">The Page you are looking for doesnt exist or have secrately escaped;head backm to home and make a fresh move again.</div>
|
||||
|
||||
<a href="{{ route('admin.dashboard.index') }}">GO TO HOME</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="error-graphic icon-404" style="margin-left: 10% ;"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@stop
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
@extends('admin::layouts.content')
|
||||
|
||||
@section('page_title')
|
||||
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<div class="error-container" style="width: 100%; display: flex; justify-content: center;">
|
||||
|
||||
<div class="wrapper" style="display: flex; height: 60vh; width: 100%;
|
||||
justify-content: start; align-items: center;">
|
||||
|
||||
<div class="error-box" style="width: 50%">
|
||||
|
||||
<div class="error-title" style="font-size: 100px;color: #5E5E5E"> {{ $code }}</div>
|
||||
|
||||
<div class="error-messgae" style="font-size: 24px;color: #5E5E5E">Page Not Found</div>
|
||||
|
||||
<div class="error-description" style="margin-top: 20px;margin-bottom: 20px;color: #242424">The Page you are looking for doesnt exist or have secrately escaped;head backm to home and make a fresh move again.</div>
|
||||
|
||||
<a href="{{ route('admin.dashboard.index') }}">GO TO HOME</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="error-graphic icon-404" style="margin-left: 10% ;"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@stop
|
||||
|
|
@ -13,14 +13,14 @@
|
|||
@yield('head')
|
||||
|
||||
@yield('css')
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
|
||||
<flash-wrapper ref='flashes'></flash-wrapper>
|
||||
|
||||
|
||||
@include ('admin::layouts.nav-top')
|
||||
|
||||
@include ('admin::layouts.nav-left')
|
||||
|
|
@ -44,8 +44,10 @@
|
|||
@endif
|
||||
|
||||
window.serverErrors = [];
|
||||
@if (count($errors))
|
||||
window.serverErrors = @json($errors->getMessages());
|
||||
@if(isset($errors))
|
||||
@if (count($errors))
|
||||
window.serverErrors = @json($errors->getMessages());
|
||||
@endif
|
||||
@endif
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<div class="dropdown-toggle">
|
||||
<div style="display: inline-block; vertical-align: middle;">
|
||||
<span class="name">
|
||||
{{ auth()->guard('admin')->user()->name }}
|
||||
{{-- {{ auth()->guard('admin')->user()->name }} --}}
|
||||
</span>
|
||||
|
||||
<span class="role">
|
||||
|
|
|
|||
|
|
@ -11,5 +11,5 @@ class Category extends TranslatableModel
|
|||
|
||||
public $translatedAttributes = ['name', 'description', 'slug', 'meta_title', 'meta_description', 'meta_keywords'];
|
||||
|
||||
protected $fillable = ['position', 'status', 'parent_id'];
|
||||
protected $fillable = ['position', 'status', 'parent_id','image'];
|
||||
}
|
||||
|
|
@ -107,8 +107,6 @@ class Cart {
|
|||
{
|
||||
$product = $this->product->findOneByField('id', $productId);
|
||||
|
||||
// dd($product);
|
||||
|
||||
//Check if the product's information is proper or not.
|
||||
if(!isset($data['product']) || !isset($data['quantity'])) {
|
||||
session()->flash('error', trans('shop::app.checkout.cart.integrity.missing_fields'));
|
||||
|
|
@ -961,4 +959,24 @@ class Cart {
|
|||
|
||||
return $finalData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move to Cart
|
||||
*
|
||||
* Move a wishlist item to cart
|
||||
*/
|
||||
public function moveToCart($productId) {
|
||||
$data = [
|
||||
'product' => $productId,
|
||||
'quantity' => 1,
|
||||
];
|
||||
|
||||
$result = $this->add($productId, $data);
|
||||
|
||||
if($result instanceof Collection || $result == true) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,7 +5,9 @@ namespace Webkul\Customer\Http\Controllers;
|
|||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Webkul\Customer\Repositories\CustomerRepository;
|
||||
use Webkul\Product\Repositories\ProductRepository;
|
||||
use Webkul\Customer\Repositories\WishlistRepository;
|
||||
use Cart;
|
||||
use Auth;
|
||||
|
||||
/**
|
||||
|
|
@ -26,13 +28,15 @@ class WishlistController extends Controller
|
|||
|
||||
protected $wishlist;
|
||||
|
||||
protected $product;
|
||||
|
||||
/**
|
||||
* Initializes the required repository instances.
|
||||
*
|
||||
* @param $customer
|
||||
* @param $wishlist
|
||||
*/
|
||||
public function __construct(CustomerRepository $customer, WishlistRepository $wishlist)
|
||||
public function __construct(CustomerRepository $customer, WishlistRepository $wishlist, ProductRepository $product)
|
||||
{
|
||||
$this->middleware('customer');
|
||||
|
||||
|
|
@ -41,6 +45,8 @@ class WishlistController extends Controller
|
|||
$this->customer = $customer;
|
||||
|
||||
$this->wishlist = $wishlist;
|
||||
|
||||
$this->product = $product;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -67,6 +73,15 @@ class WishlistController extends Controller
|
|||
* @param integer $itemId
|
||||
*/
|
||||
public function add($itemId) {
|
||||
$product = $this->product->findOneByField('id', $itemId);
|
||||
|
||||
if($product->type == "configurable") {
|
||||
$slug = $product->url_key;
|
||||
|
||||
session()->flash('warning', trans('customer::app.wishlist.select-options'));
|
||||
|
||||
return redirect()->route('shop.products.index', $slug);
|
||||
}
|
||||
|
||||
$data = [
|
||||
'channel_id' => core()->getCurrentChannel()->id,
|
||||
|
|
@ -111,12 +126,45 @@ class WishlistController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the configurable product
|
||||
* to the wishlist.
|
||||
*
|
||||
* @return response
|
||||
*/
|
||||
public function addconfigurable($urlkey) {
|
||||
dd($urlkey);
|
||||
session()->flash('warning', trans('Select options before adding to wishlist'));
|
||||
return redirect()->route('shop.products.index', $urlkey);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to move item from wishlist to cart.
|
||||
*
|
||||
* @param integer $itemId
|
||||
*/
|
||||
public function moveToCart() {
|
||||
dd('adding item to wishlist');
|
||||
public function moveAll() {
|
||||
Cart::moveAllToCart();
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to move item from wishlist to cart.
|
||||
*
|
||||
* @param integer $itemId
|
||||
*/
|
||||
public function move($productId) {
|
||||
$result = Cart::moveToCart($productId);
|
||||
|
||||
$wishlist = $this->wishlist->findWhere(['customer_id' => auth()->guard('customer')->user()->id, 'product_id' => $productId]);
|
||||
|
||||
if($this->wishlist->delete($wishlist[0]->id)) {
|
||||
session()->flash('success', 'Item Moved To Cart Successfully');
|
||||
|
||||
return redirect()->back();
|
||||
} else {
|
||||
session()->flash('error', 'Item Cannot Be Moved To Cart Successfully');
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ return [
|
|||
'already' => 'Item Already Present In Your Wishlist',
|
||||
'removed' => 'Item Successfully Added To Wishlist',
|
||||
'remove-fail' => 'Item Cannot Be Removed From Wishlist',
|
||||
'empty' => 'You Don\'t Have Any Items In Your Wishlist'
|
||||
'empty' => 'You Don\'t Have Any Items In Your Wishlist',
|
||||
'select-options' => 'Need To Select Options Before Adding To Wishlist'
|
||||
],
|
||||
];
|
||||
|
|
@ -7,7 +7,7 @@ class Review extends AbstractProduct
|
|||
/**
|
||||
* Returns the product's avg rating
|
||||
*
|
||||
* @param Product $product
|
||||
* @param Product $product
|
||||
* @return float
|
||||
*/
|
||||
public function getReviews($product)
|
||||
|
|
@ -18,7 +18,7 @@ class Review extends AbstractProduct
|
|||
/**
|
||||
* Returns the product's avg rating
|
||||
*
|
||||
* @param Product $product
|
||||
* @param Product $product
|
||||
* @return float
|
||||
*/
|
||||
public function getAverageRating($product)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
|
||||
Route::group(['middleware' => ['web']], function () {
|
||||
|
||||
Route::get('/', 'Webkul\Shop\Http\Controllers\HomeController@index')->defaults('_config', [
|
||||
'view' => 'shop::home.index'
|
||||
])->name('shop.home.index');
|
||||
|
|
@ -119,6 +120,10 @@ Route::group(['middleware' => ['web']], function () {
|
|||
|
||||
Route::get('wishlist/remove/{id}', 'Webkul\Customer\Http\Controllers\WishlistController@remove')->name('customer.wishlist.remove');
|
||||
|
||||
Route::get('wishlist/move/{id}', 'Webkul\Customer\Http\Controllers\WishlistController@move')->name('customer.wishlist.move');
|
||||
|
||||
Route::get('wishlist/moveall', 'Webkul\Customer\Http\Controllers\WishlistController@moveAll')->name('customer.wishlist.moveall');
|
||||
|
||||
//customer account
|
||||
Route::prefix('account')->group(function () {
|
||||
|
||||
|
|
@ -163,7 +168,6 @@ Route::group(['middleware' => ['web']], function () {
|
|||
Route::post('address/edit', 'Webkul\Customer\Http\Controllers\AddressController@edit')->defaults('_config', [
|
||||
'redirect' => 'customer.address.index'
|
||||
])->name('customer.address.edit');
|
||||
|
||||
/* Routes for Addresses ends here */
|
||||
|
||||
/* Wishlist route */
|
||||
|
|
@ -188,5 +192,4 @@ Route::group(['middleware' => ['web']], function () {
|
|||
});
|
||||
});
|
||||
//customer routes end here
|
||||
|
||||
});
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ class ShopServiceProvider extends ServiceProvider
|
|||
|
||||
Event::listen('customer.menu.build', function ($menu) {
|
||||
$menu->add('profile', 'Profile', 'customer.profile.index', 1);
|
||||
|
||||
|
||||
$menu->add('orders', 'Orders', 'customer.orders.index', 2);
|
||||
|
||||
$menu->add('address', 'Address', 'customer.address.index', 3);
|
||||
|
|
@ -88,4 +88,4 @@ class ShopServiceProvider extends ServiceProvider
|
|||
$menu->add('wishlist', 'Wishlist', 'customer.wishlist.index', 5);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?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>Artboard</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Artboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round">
|
||||
<path d="M9.06852618,23.2496556 L22.5678375,9.75034436" id="Line-2" stroke="#242424" stroke-width="3"></path>
|
||||
<path d="M9.06852618,9.75034436 L22.5678375,23.2496556" id="Line-2" stroke="#242424" stroke-width="3"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 708 B |
|
|
@ -4,7 +4,7 @@
|
|||
<a :href="url+'/categories/'+this.item['translations'][0].slug">{{ this.item['translations'][0].name }} <i class="icon dropdown-right-icon"
|
||||
v-if="haveChildren && item.parent_id != null"></i></a>
|
||||
|
||||
<i :class="[show ? 'icon arrow-down-icon mt-15' : 'icon dropdown-right-icon mt-15']"
|
||||
<i :class="[show ? 'icon icon-arrow-down mt-15' : 'icon dropdown-right-icon mt-15']"
|
||||
v-if="haveChildren" @click="showOrHide"></i>
|
||||
|
||||
<ul v-if="haveChildren && show">
|
||||
|
|
|
|||
|
|
@ -426,6 +426,7 @@ section.slider-block {
|
|||
}
|
||||
ul.right-responsive {
|
||||
display: none;
|
||||
cursor: pointer;
|
||||
|
||||
li {
|
||||
margin-right : 5px;
|
||||
|
|
@ -481,7 +482,7 @@ section.slider-block {
|
|||
}
|
||||
|
||||
.nav a:first-child{
|
||||
margin-left: 20px;
|
||||
// margin-left: 20px;
|
||||
}
|
||||
|
||||
.nav li > .icon{
|
||||
|
|
@ -666,6 +667,10 @@ section.slider-block {
|
|||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
|
||||
.nav li ul {
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.nav li:first-child {
|
||||
border-top: 1px solid $border-color;
|
||||
}
|
||||
|
|
@ -674,6 +679,7 @@ section.slider-block {
|
|||
float:none;
|
||||
height: 45px;
|
||||
display: none;
|
||||
border: none;
|
||||
|
||||
img {
|
||||
margin-right:6px;
|
||||
|
|
@ -888,23 +894,6 @@ section.product-detail {
|
|||
height: 650px;
|
||||
max-width: 604px;
|
||||
|
||||
.loader {
|
||||
border: 16px solid $border-color;
|
||||
border-top: 16px solid $brand-color;
|
||||
border-radius: 50%;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
animation: spin 2s linear infinite;
|
||||
margin-left: 20%;
|
||||
position: absolute;
|
||||
margin-top: 200px;
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
div {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
|
@ -1658,62 +1647,52 @@ section.review {
|
|||
|
||||
.review-layouter {
|
||||
display: flex;
|
||||
flex-flow: row;
|
||||
margin-top: 20px;
|
||||
flex-direction: row;
|
||||
|
||||
.product-info {
|
||||
|
||||
.image {
|
||||
border:1px solid red;
|
||||
|
||||
.product-image {
|
||||
img {
|
||||
display: block;
|
||||
height: 280px;
|
||||
width: 280px;
|
||||
}
|
||||
}
|
||||
|
||||
.heading {
|
||||
.product-name {
|
||||
margin-top: 20px;
|
||||
|
||||
span {
|
||||
font-size: 24px;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.price {
|
||||
.product-price {
|
||||
margin-top: 10px;
|
||||
|
||||
.pro-price {
|
||||
font-size: 24px;
|
||||
color: $disc-price;
|
||||
|
||||
}
|
||||
|
||||
.pro-price-not {
|
||||
margin-left: 10px;
|
||||
color: $disc-price-pro;
|
||||
|
||||
}
|
||||
|
||||
.offer {
|
||||
margin-left: 10px;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.review-info {
|
||||
.review-form {
|
||||
margin-left: 20px;
|
||||
width: 49%;
|
||||
|
||||
.heading {
|
||||
margin-top: 10px;
|
||||
|
||||
span {
|
||||
|
||||
}
|
||||
|
||||
.btn.btn-primary.right {
|
||||
float: right;
|
||||
margin-top: -10px;
|
||||
|
|
@ -2071,4 +2050,4 @@ section.review {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,57 @@
|
|||
.product-card {
|
||||
|
||||
.product-image {
|
||||
max-height: 350px;
|
||||
max-width: 280px;
|
||||
margin-bottom: 10px;
|
||||
background: #F2F2F2;
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.product-name {
|
||||
margin-bottom: 14px;
|
||||
width: 100%;
|
||||
color: $font-color;
|
||||
|
||||
a {
|
||||
color: $font-color;
|
||||
}
|
||||
}
|
||||
|
||||
.product-description {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.product-ratings {
|
||||
width: 100%;
|
||||
|
||||
.icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.cart-wish-wrap {
|
||||
display: inline-flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
height: 40px;
|
||||
|
||||
.addtocart {
|
||||
margin-right: 10px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.add-to-wishlist {
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// product card, requires no changes for responsiveness.
|
||||
.product-grid-4 {
|
||||
display: grid;
|
||||
|
|
@ -43,55 +97,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.product-card {
|
||||
|
||||
.product-image {
|
||||
max-height: 350px;
|
||||
max-width: 280px;
|
||||
margin-bottom: 10px;
|
||||
background: #F2F2F2;
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.product-name {
|
||||
margin-bottom: 14px;
|
||||
width: 100%;
|
||||
color: $font-color;
|
||||
|
||||
a {
|
||||
color: $font-color;
|
||||
}
|
||||
}
|
||||
|
||||
.product-description {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.product-ratings {
|
||||
width: 100%;
|
||||
|
||||
.icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.cart-fav-seg {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
|
||||
.addtocart {
|
||||
margin-right: 10px;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//wishlist icon hover properties
|
||||
.add-to-wishlist {
|
||||
|
|
@ -140,7 +145,7 @@
|
|||
text-align: left;
|
||||
}
|
||||
|
||||
.account-edit {
|
||||
.account-action {
|
||||
font-size: 17px;
|
||||
margin-top: 1%;
|
||||
color: $brand-color;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
width: 24px;
|
||||
height: 24px;
|
||||
margin-left:auto;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.grid-view-icon {
|
||||
|
|
|
|||
|
|
@ -169,6 +169,7 @@ body {
|
|||
}
|
||||
|
||||
.sort-filter {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
|
@ -196,21 +197,6 @@ body {
|
|||
|
||||
}
|
||||
|
||||
// @media only screen and (max-width: 660px) {
|
||||
// .product-grid-3 {
|
||||
// grid-template-columns: 48.5% 48.5%;
|
||||
// grid-column-gap: 20px;
|
||||
// }
|
||||
// }
|
||||
|
||||
// @media only screen and (max-width: 480px) {
|
||||
// .product-grid-3 {
|
||||
// grid-template-columns: 47.5% 47.5%;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
//layered filter wrapper styles
|
||||
.layered-filter-wrapper {
|
||||
width: 25%;
|
||||
|
|
@ -299,7 +285,6 @@ body {
|
|||
}
|
||||
|
||||
.responsive-layred-filter {
|
||||
@extend .layered-filter-wrapper;
|
||||
width: 100%;
|
||||
float: none;
|
||||
padding-right: 0px;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,13 @@ return [
|
|||
]
|
||||
],
|
||||
|
||||
'reviews' => [
|
||||
'add-review-page-title' => 'Add Review',
|
||||
'write-review' => 'Write a review',
|
||||
'review-title' => 'Give Your Review a Title',
|
||||
'empty' => 'You Haven\'t Reviewed Any Product Yet'
|
||||
],
|
||||
|
||||
'customer' => [
|
||||
'signup-text' => [
|
||||
'account_exists' => 'Already have an account',
|
||||
|
|
@ -191,7 +198,11 @@ return [
|
|||
'wishlist' => [
|
||||
'title' => 'Wishlist',
|
||||
'deleteall' => 'Delete All',
|
||||
'moveall' => 'Move All Products To Cart'
|
||||
'moveall' => 'Move All Products To Cart',
|
||||
'move-to-cart' => 'Move To Cart',
|
||||
'empty' => 'You Have No Items In Your Wishlist',
|
||||
'add' => 'Item Successfully Added To Wishlist',
|
||||
'remove' => 'Item Successfully Removed From Wishlist'
|
||||
],
|
||||
|
||||
'checkout' => [
|
||||
|
|
|
|||
|
|
@ -13,14 +13,17 @@
|
|||
<div class="account-layout">
|
||||
|
||||
<div class="account-head">
|
||||
<span class="back-icon"><a href="{{ route('customer.account.index') }}"><i class="icon icon-menu-back"></i></a></span>
|
||||
<span class="account-heading">{{ __('shop::app.customer.account.address.index.title') }}</span>
|
||||
|
||||
@if(!$address->isEmpty())
|
||||
<span class="account-edit">
|
||||
<span class="account-action">
|
||||
<a href="{{ route('customer.address.edit') }}">
|
||||
{{ __('shop::app.customer.account.address.index.edit') }}
|
||||
</a>
|
||||
</span>
|
||||
@else
|
||||
<span></span>
|
||||
@endif
|
||||
<div class="horizontal-rule"></div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@
|
|||
@include('shop::customers.account.partials.sidemenu')
|
||||
|
||||
<div class="account-layout">
|
||||
<div class="account-head mb-10">
|
||||
<div class="account-head mb-15">
|
||||
{{-- <span class="back-icon"><a href="{{ route('customer.account.index') }}"><i class="icon icon-menu-back"></i></a></span> --}}
|
||||
<div class="account-heading">{{ __('shop::app.customer.account.address.create.title') }}</div>
|
||||
</div>
|
||||
<form method="post" action="{{ route('customer.address.create') }}" @submit.prevent="onSubmit">
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<div class="account-layout">
|
||||
|
||||
<div class="account-head mb-10">
|
||||
<div class="account-head mb-15">
|
||||
<div class="account-heading">{{ __('shop::app.customer.account.address.edit.title') }}</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,3 +5,29 @@
|
|||
<h1>Account Index Page</h1>
|
||||
</div>
|
||||
@endsection
|
||||
@push('scripts')
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
var sideMenuTitle = document.getElementById("responsive-side-menu");
|
||||
var downIcon = document.getElementById("down-icon");
|
||||
var accountSideMenu = document.getElementsByClassName("account-side-menu");
|
||||
|
||||
sideMenuTitle.addEventListener("click", function(){
|
||||
if(downIcon.className == 'icon icon-arrow-down right'){
|
||||
for(let i=0 ; i < accountSideMenu.length ; i++){
|
||||
accountSideMenu[i].style.display="block";
|
||||
}
|
||||
|
||||
downIcon.classList.remove("icon","icon-arrow-down","right");
|
||||
downIcon.classList.add("icon","icon-arrow-up","right");
|
||||
}else{
|
||||
for(let i=0 ; i < accountSideMenu.length ; i++){
|
||||
accountSideMenu[i].style.display="none";
|
||||
}
|
||||
|
||||
downIcon.classList.remove("icon","icon-arrow-up","right");
|
||||
downIcon.classList.add("icon","icon-arrow-down","right");
|
||||
}
|
||||
});
|
||||
});
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
<div class="responsive-side-menu" id="responsive-side-menu">
|
||||
Menu
|
||||
<i class="icon icon-arrow-down right" id="down-icon"></i>
|
||||
</div>
|
||||
|
||||
<ul class="account-side-menu">
|
||||
@foreach($menu->items as $menuItem)
|
||||
|
||||
<li class="menu-item {{ $menu->getActive($menuItem) }}">
|
||||
<a href="{{ $menuItem['url'] }}">
|
||||
{{ $menuItem['name'] }}
|
||||
|
|
@ -8,41 +12,5 @@
|
|||
|
||||
<i class="icon angle-right-icon"></i>
|
||||
</li>
|
||||
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script>
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
var sideMenuTitle = document.getElementById("side-menu-title");
|
||||
var downIcon = document.getElementById("down-icon");
|
||||
var accountSideMenu = document.getElementsByClassName("account-side-menu");
|
||||
|
||||
sideMenuTitle.addEventListener("click", function(){
|
||||
if(downIcon.className == 'icon icon-arrow-down right'){
|
||||
for(let i=0 ; i < accountSideMenu.length ; i++){
|
||||
accountSideMenu[i].style.display="block";
|
||||
}
|
||||
downIcon.classList.remove("icon","icon-arrow-down","right");
|
||||
downIcon.classList.add("icon","icon-arrow-up","right");
|
||||
}else{
|
||||
for(let i=0 ; i < accountSideMenu.length ; i++){
|
||||
accountSideMenu[i].style.display="none";
|
||||
}
|
||||
downIcon.classList.remove("icon","icon-arrow-up","right");
|
||||
downIcon.classList.add("icon","icon-arrow-down","right");
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
@endpush
|
||||
|
||||
|
||||
</ul>
|
||||
|
|
@ -12,7 +12,11 @@
|
|||
<div class="account-layout">
|
||||
|
||||
<div class="account-head mb-10">
|
||||
<div class="account-heading">{{ __('shop::app.customer.account.profile.edit-profile.title') }}</div>
|
||||
<span class="back-icon"><a href="{{ route('customer.account.index') }}"><i class="icon icon-menu-back"></i></a></span>
|
||||
|
||||
<span class="account-heading">{{ __('shop::app.customer.account.profile.edit-profile.title') }}</span>
|
||||
|
||||
<span></span>
|
||||
</div>
|
||||
|
||||
<form method="post" action="{{ route('customer.profile.edit') }}">
|
||||
|
|
|
|||
|
|
@ -12,11 +12,11 @@
|
|||
|
||||
<div class="account-head">
|
||||
|
||||
{{-- <span class="back-icon"><a href="{{ route('customer.account.index') }}"><i class="icon icon-menu-back"></i></a></span> --}}
|
||||
<span class="back-icon"><a href="{{ route('customer.account.index') }}"><i class="icon icon-menu-back"></i></a></span>
|
||||
|
||||
<span class="account-heading">{{ __('shop::app.customer.account.profile.index.title') }}</span>
|
||||
|
||||
<span class="account-edit">
|
||||
<span class="account-action">
|
||||
<a href="{{ route('customer.profile.edit') }}">{{ __('shop::app.customer.account.profile.index.edit') }}</a>
|
||||
</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@
|
|||
<div class="account-layout">
|
||||
|
||||
<div class="account-head">
|
||||
<span class="back-icon"><a href="{{ route('customer.account.index') }}"><i class="icon icon-menu-back"></i></a></span>
|
||||
<span class="account-heading">{{ __('shop::app.customer.account.review.index.title') }}</span>
|
||||
<span></span>
|
||||
<div class="horizontal-rule"></div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -6,59 +6,41 @@
|
|||
@include('shop::customers.account.partials.sidemenu')
|
||||
|
||||
<div class="account-layout">
|
||||
|
||||
<div class="account-head">
|
||||
<span class="account-heading">Reviews</span>
|
||||
<div class="horizontal-rule"></div>
|
||||
</div>
|
||||
|
||||
<div class="account-items-list">
|
||||
{{-- <div class="account-item-card mt-15 mb-15">
|
||||
<div class="media-info">
|
||||
@php
|
||||
$image = $productImageHelper->getProductBaseImage($item);
|
||||
@endphp
|
||||
<img class="media" src="{{ $image['small_image_url'] }}" />
|
||||
@if(count($reviews))
|
||||
@foreach($reviews as $review)
|
||||
<div class="account-item-card mt-15 mb-15">
|
||||
<div class="media-info">
|
||||
<?php $image = $productImageHelper->getGalleryImages($review->product); ?>
|
||||
<img class="media" src="{{ $image[0]['small_image_url'] }}" />
|
||||
|
||||
<div class="info mt-20">
|
||||
<div class="product-name">{{$item->name}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info mt-20">
|
||||
<div class="product-name">{{$review->product->name}}</div>
|
||||
|
||||
<div class="operations">
|
||||
<a class="mb-50" href="{{ route('customer.wishlist.remove', $item->id) }}"><span class="icon trash-icon"></span></a>
|
||||
<div>
|
||||
@for($i=0 ; $i < $review->rating ; $i++)
|
||||
<span class="icon star-icon"></span>
|
||||
@endfor
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary btn-md">Move To Cart</button>
|
||||
</div>
|
||||
</div> --}}
|
||||
@foreach($reviews as $review)
|
||||
<div class="account-item-card mt-15 mb-15">
|
||||
<div class="media-info">
|
||||
<?php $image = $productImageHelper->getGalleryImages($review->product); ?>
|
||||
<img class="media" src="{{ $image[0]['small_image_url'] }}" />
|
||||
|
||||
<div class="info mt-20">
|
||||
<div class="product-name">{{$review->product->name}}</div>
|
||||
|
||||
<div>
|
||||
@for($i=0 ; $i < $review->rating ; $i++)
|
||||
<span class="icon star-icon"></span>
|
||||
@endfor
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{{ $review->comment }}
|
||||
<div>
|
||||
{{ $review->comment }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="operations">
|
||||
|
||||
<div class="horizontal-rule mb-10 mt-10"></div>
|
||||
@endforeach
|
||||
@else
|
||||
<div class="empty">
|
||||
{{ __('customer::app.reviews.empty') }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="horizontal-rule mb-10 mt-10"></div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -9,11 +9,12 @@
|
|||
|
||||
<div class="account-layout">
|
||||
|
||||
<div class="account-head">
|
||||
<div class="account-head mb-15">
|
||||
<span class="account-heading">{{ __('shop::app.wishlist.title') }}</span>
|
||||
|
||||
<span class="account-heading">{{ __('shop::app.wishlist.title') }}</span>
|
||||
@if(count($items))
|
||||
<div class="account-edit">
|
||||
<div class="account-action">
|
||||
<a href="" style="margin-right: 15px;">{{ __('shop::app.wishlist.deleteall') }}</a>
|
||||
<a href="">{{ __('shop::app.wishlist.moveall') }}</a>
|
||||
</div>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
<div class="operations">
|
||||
<a class="mb-50" href="{{ route('customer.wishlist.remove', $item->id) }}"><span class="icon trash-icon"></span></a>
|
||||
|
||||
<button class="btn btn-primary btn-md">Move To Cart</button>
|
||||
<a href="{{ route('customer.wishlist.move', $item->id) }}" class="btn btn-primary btn-md">{{ __('shop::app.wishlist.move-to-cart') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="horizontal-rule mb-10 mt-10"></div>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
@extends('shop::layouts.master')
|
||||
@section('content-wrapper')
|
||||
<div class="error-container" style="width: 100%; display: flex; justify-content: center;">
|
||||
<div class="wrapper" style="display: flex; height: 100vh; width: 80vw;
|
||||
justify-content: space-between; align-items: center;">
|
||||
<div class="error-box">
|
||||
<div class="error-title">404</div>
|
||||
<div class="error-messgae">Page Not Found</div>
|
||||
<div class="error-description"></div>
|
||||
<a href="url()->to('/')">GO TO HOME</a>
|
||||
{{-- pass the content dynamically --}}
|
||||
Show the exception here or error message here.
|
||||
</div>
|
||||
|
||||
<div class="error-graphic" style="height: 236px; width: 255px; border: 1px solid red; background-image: url('.{{ asset('images.error') }}.')">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
@extends('shop::layouts.master')
|
||||
|
||||
@section('content-wrapper')
|
||||
|
||||
<div class="error-container" style="width: 100%; display: flex; justify-content: center;">
|
||||
|
||||
<div class="wrapper" style="display: flex; height: 60vh; width: 100%;
|
||||
justify-content: start; align-items: center;">
|
||||
|
||||
<div class="error-box" style="width: 50%">
|
||||
|
||||
<div class="error-title" style="font-size: 100px;color: #5E5E5E"> {{ $code }} </div>
|
||||
|
||||
<div class="error-messgae" style="font-size: 24px;color: #5E5E5E">Page Not Found</div>
|
||||
|
||||
<div class="error-description" style="margin-top: 20px;margin-bottom: 20px;color: #242424">The Page you are looking for doesnt exist or have secrately escaped;head backm to home and make a fresh move again.</div>
|
||||
|
||||
<a href="{{ route('shop.home.index') }}">GO TO HOME</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="error-graphic icon-404" style="margin-left: 10% ;"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
@extends('shop::layouts.master')
|
||||
|
||||
@section('content-wrapper')
|
||||
|
||||
<div class="error-container" style="width: 100%; display: flex; justify-content: center;">
|
||||
|
||||
<div class="wrapper" style="display: flex; height: 60vh; width: 100%;
|
||||
justify-content: start; align-items: center;">
|
||||
|
||||
<div class="error-box" style="width: 50%">
|
||||
|
||||
<div class="error-title" style="font-size: 100px;color: #5E5E5E"> {{ $code }}</div>
|
||||
|
||||
<div class="error-messgae" style="font-size: 24px;color: #5E5E5E">Page Not Found</div>
|
||||
|
||||
<div class="error-description" style="margin-top: 20px;margin-bottom: 20px;color: #242424">The Page you are looking for doesnt exist or have secrately escaped;head backm to home and make a fresh move again.</div>
|
||||
|
||||
<a href="{{ route('shop.home.index') }}">GO TO HOME</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="error-graphic icon-404" style="margin-left: 10% ;"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
@extends('shop::layouts.master')
|
||||
|
||||
@section('content-wrapper')
|
||||
|
||||
<div class="error-container" style="width: 100%; display: flex; justify-content: center;">
|
||||
|
||||
<div class="wrapper" style="display: flex; height: 60vh; width: 100%;
|
||||
justify-content: start; align-items: center;">
|
||||
|
||||
<div class="error-box" style="width: 50%">
|
||||
|
||||
<div class="error-title" style="font-size: 100px;color: #5E5E5E"> {{ $code }} </div>
|
||||
|
||||
<div class="error-messgae" style="font-size: 24px;color: #5E5E5E">Page Not Found</div>
|
||||
|
||||
<div class="error-description" style="margin-top: 20px;margin-bottom: 20px;color: #242424">The Page you are looking for doesnt exist or have secrately escaped;head backm to home and make a fresh move again.</div>
|
||||
|
||||
<a href="{{ route('shop.home.index') }}">GO TO HOME</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="error-graphic icon-404" style="margin-left: 10% ;"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -1,22 +1,11 @@
|
|||
@inject('rateHelper' , 'Webkul\Shipping\Helper\Rate')
|
||||
|
||||
|
||||
<div>
|
||||
|
||||
@foreach($rateHelper->collectRates() as $key=>$count)
|
||||
|
||||
<div class="shipping-method">
|
||||
|
||||
<input type="radio" name="price"> ${{ core()->currency($count) }} <span> {{ $key }} </span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="shipping-method">
|
||||
<input type="radio" name="price"> ${{ core()->currency($count) }} <span> {{ $key }} </span>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<style>
|
||||
span {
|
||||
margin-left: 10px;
|
||||
|
|
|
|||
|
|
@ -244,17 +244,17 @@
|
|||
@include('shop::layouts.header.nav-menu.navmenu')
|
||||
</div>
|
||||
|
||||
<div class="search-responsive">
|
||||
<div class="search-responsive mt-10">
|
||||
<div class="search-content">
|
||||
<i class="icon icon-search mt-10"></i>
|
||||
<input class="search mt-5">
|
||||
<i class="icon icon-menu-back right mt-10"></i>
|
||||
</div>
|
||||
|
||||
<div class="search-content">
|
||||
{{-- <div class="search-content">
|
||||
<i class="icon icon-search mt-10"></i>
|
||||
<span class="suggestion mt-15">Designer sarees</span>
|
||||
</div>
|
||||
</div> --}}
|
||||
</div>
|
||||
|
||||
<div class="responsive-nav">
|
||||
|
|
@ -262,79 +262,46 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
window.onload = function() {
|
||||
var hamMenu = document.getElementById("hammenu");
|
||||
var search = document.getElementById("search");
|
||||
var searchResponsive = document.getElementsByClassName('search-responsive')[0];
|
||||
var sortLimit = document.getElementsByClassName('reponsive-sorter-limiter')[0];
|
||||
var layerFilter = document.getElementsByClassName('responsive-layred-filter')[0];
|
||||
var navResponsive = document.getElementsByClassName('responsive-nav')[0];
|
||||
var thumbList = document.getElementsByClassName('thumb-list')[0];
|
||||
|
||||
<script>
|
||||
search.addEventListener("click", header);
|
||||
hamMenu.addEventListener("click", header);
|
||||
|
||||
window.onload = function() {
|
||||
var hamMenu = document.getElementById("hammenu");
|
||||
var search = document.getElementById("search");
|
||||
|
||||
var searchResponsive = document.getElementsByClassName('search-responsive')[0];
|
||||
var sortLimit = document.getElementsByClassName('reponsive-sorter-limiter')[0];
|
||||
var layerFilter = document.getElementsByClassName('responsive-layred-filter')[0];
|
||||
var navResponsive = document.getElementsByClassName('responsive-nav')[0];
|
||||
var thumbList = document.getElementsByClassName('thumb-list')[0];
|
||||
var thumbFrame = document.getElementsByClassName('thumb-frame');
|
||||
var productHeroImage = document.getElementsByClassName('product-hero-image')[0];
|
||||
|
||||
search.addEventListener("click", header);
|
||||
hamMenu.addEventListener("click", header);
|
||||
|
||||
// activate on window resize
|
||||
window.addEventListener('resize', function(){
|
||||
if(window.innerWidth > 720){
|
||||
searchResponsive.style.display = 'none';
|
||||
navResponsive.style.display = 'none';
|
||||
if(layerFilter && sortLimit){
|
||||
layerFilter.style.display ="none";
|
||||
sortLimit.style.display ="none";
|
||||
// for header responsive icon
|
||||
function header(){
|
||||
var className = document.getElementById(this.id).className;
|
||||
if(className === 'icon icon-search' ){
|
||||
search.classList.remove("icon-search");
|
||||
search.classList.add("icon-menu-close");
|
||||
hamMenu.classList.remove("icon-menu-close");
|
||||
hamMenu.classList.add("icon-menu");
|
||||
searchResponsive.style.display = 'block';
|
||||
navResponsive.style.display = 'none';
|
||||
}else if(className === 'icon icon-menu'){
|
||||
hamMenu.classList.remove("icon-menu");
|
||||
hamMenu.classList.add("icon-menu-close");
|
||||
search.classList.remove("icon-menu-close");
|
||||
search.classList.add("icon-search");
|
||||
searchResponsive.style.display = 'none';
|
||||
navResponsive.style.display = 'block';
|
||||
}else{
|
||||
search.classList.remove("icon-menu-close");
|
||||
search.classList.add("icon-search");
|
||||
hamMenu.classList.remove("icon-menu-close");
|
||||
hamMenu.classList.add("icon-menu");
|
||||
searchResponsive.style.display = 'none';
|
||||
navResponsive.style.display = 'none';
|
||||
}
|
||||
}
|
||||
if(window.innerWidth < 1313 && window.innerWidth > 720){
|
||||
if(thumbList){
|
||||
thumbList.style.maxHeight = productHeroImage.offsetHeight + "px";
|
||||
for(let i=0 ; i < thumbFrame.length ; i++){
|
||||
thumbFrame[i].style.height = (productHeroImage.offsetHeight/4) + "px";
|
||||
}
|
||||
}
|
||||
}else {
|
||||
for(let i=0 ; i < thumbFrame.length ; i++){
|
||||
thumbFrame[i].style.height = 120 + "px";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// for header responsive icon
|
||||
function header(){
|
||||
var className = document.getElementById(this.id).className;
|
||||
if(className === 'icon icon-search' ){
|
||||
search.classList.remove("icon-search");
|
||||
search.classList.add("icon-menu-close");
|
||||
hamMenu.classList.remove("icon-menu-close");
|
||||
hamMenu.classList.add("icon-menu");
|
||||
searchResponsive.style.display = 'block';
|
||||
navResponsive.style.display = 'none';
|
||||
}else if(className === 'icon icon-menu'){
|
||||
hamMenu.classList.remove("icon-menu");
|
||||
hamMenu.classList.add("icon-menu-close");
|
||||
search.classList.remove("icon-menu-close");
|
||||
search.classList.add("icon-search");
|
||||
searchResponsive.style.display = 'none';
|
||||
navResponsive.style.display = 'block';
|
||||
}else{
|
||||
search.classList.remove("icon-menu-close");
|
||||
search.classList.add("icon-search");
|
||||
hamMenu.classList.remove("icon-menu-close");
|
||||
hamMenu.classList.add("icon-menu");
|
||||
searchResponsive.style.display = 'none';
|
||||
navResponsive.style.display = 'none';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
|
|
@ -39,19 +39,26 @@
|
|||
@include('shop::layouts.footer.footer')
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.flashMessages = [];
|
||||
|
||||
@if($success = session('success'))
|
||||
window.flashMessages = [{'type': 'alert-success', 'message': "{{ $success }}" }];
|
||||
@elseif($warning = session('warning'))
|
||||
window.flashMessages = [{'type': 'alert-warning', 'message': "{{ $warning }}" }];
|
||||
@elseif($warning = session('info'))
|
||||
window.flashMessages = [{'type': 'alert-info', 'message': "{{ $info }}" }
|
||||
];
|
||||
@elseif($error = session('error'))
|
||||
window.flashMessages = [{'type': 'alert-error', 'message': "{{ $error }}" }];
|
||||
window.flashMessages = [{'type': 'alert-error', 'message': "{{ $error }}" }
|
||||
];
|
||||
@endif
|
||||
|
||||
window.serverErrors = [];
|
||||
@if (count($errors))
|
||||
window.serverErrors = @json($errors->getMessages());
|
||||
@if(isset($errors))
|
||||
@if (count($errors))
|
||||
window.serverErrors = @json($errors->getMessages());
|
||||
@endif
|
||||
@endif
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -3,16 +3,13 @@
|
|||
@section('content-wrapper')
|
||||
|
||||
@inject ('productRepository', 'Webkul\Product\Repositories\ProductRepository')
|
||||
|
||||
<div class="main">
|
||||
|
||||
<div class="category-container">
|
||||
@include ('shop::products.list.layered-navigation')
|
||||
|
||||
<div class="category-block">
|
||||
|
||||
<div class="hero-image mb-35">
|
||||
<img src="https://images.pexels.com/photos/428338/pexels-photo-428338.jpeg?cs=srgb&dl=adolescent-casual-cute-428338.jpg&fm=jpg" />
|
||||
<img src="https://images.pexels.com/photos/428338/pexels-photo-428338.jpeg?cs=srgb&dl=adolescent-casual-cute-428338.jpg&fm=jpg" />
|
||||
</div>
|
||||
|
||||
<?php $products = $productRepository->findAllByCategory($category->id); ?>
|
||||
|
|
@ -23,84 +20,72 @@
|
|||
|
||||
@if ($toolbarHelper->getCurrentMode() == 'grid')
|
||||
<div class="product-grid-3">
|
||||
|
||||
@foreach ($products as $product)
|
||||
|
||||
@include ('shop::products.list.card', ['product' => $product])
|
||||
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
@else
|
||||
<div class="product-list">
|
||||
|
||||
@foreach ($products as $product)
|
||||
|
||||
@include ('shop::products.list.card', ['product' => $product])
|
||||
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="bottom-toolbar">
|
||||
|
||||
{{ $products->appends(request()->input())->links() }}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stop
|
||||
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var sort = document.getElementById("sort");
|
||||
var filter = document.getElementById("filter");
|
||||
var sortLimit = document.getElementsByClassName('reponsive-sorter-limiter')[0];
|
||||
var layerFilter = document.getElementsByClassName('responsive-layred-filter')[0];
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
var sort = document.getElementById("sort");
|
||||
var filter = document.getElementById("filter");
|
||||
var sortLimit = document.getElementsByClassName('reponsive-sorter-limiter')[0];
|
||||
var layerFilter = document.getElementsByClassName('responsive-layred-filter')[0];
|
||||
|
||||
if(sort && filter){
|
||||
sort.addEventListener("click", sortFilter);
|
||||
filter.addEventListener("click", sortFilter);
|
||||
}
|
||||
|
||||
function sortFilter(){
|
||||
var className = document.getElementById(this.id).className;
|
||||
|
||||
if(className === 'icon sort-icon' ){
|
||||
sort.classList.remove("sort-icon");
|
||||
sort.classList.add("icon-menu-close");
|
||||
filter.classList.remove("icon-menu-close");
|
||||
filter.classList.add("filter-icon");
|
||||
sortLimit.style.display ="flex";
|
||||
sortLimit.style.justifyContent="space-between";
|
||||
layerFilter.style.display ="none";
|
||||
}else if(className === 'icon filter-icon'){
|
||||
filter.classList.remove("filter-icon");
|
||||
filter.classList.add("icon-menu-close");
|
||||
sort.classList.remove("icon-menu-close");
|
||||
sort.classList.add("sort-icon");
|
||||
layerFilter.style.display ="block";
|
||||
sortLimit.style.display ="none";
|
||||
}else{
|
||||
sort.classList.remove("icon-menu-close");
|
||||
sort.classList.add("sort-icon");
|
||||
filter.classList.remove("icon-menu-close");
|
||||
filter.classList.add("filter-icon");
|
||||
sortLimit.style.display ="none";
|
||||
layerFilter.style.display ="none";
|
||||
if(sort && filter){
|
||||
sort.addEventListener("click", sortFilter);
|
||||
filter.addEventListener("click", sortFilter);
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
@endpush
|
||||
function sortFilter(){
|
||||
var className = document.getElementById(this.id).className;
|
||||
|
||||
if(className === 'icon sort-icon'){
|
||||
sort.classList.remove("sort-icon");
|
||||
sort.classList.add("icon-menu-close-adj");
|
||||
|
||||
filter.classList.remove("icon-menu-close-adj");
|
||||
filter.classList.add("filter-icon");
|
||||
|
||||
sortLimit.style.display ="flex";
|
||||
sortLimit.style.justifyContent="space-between";
|
||||
layerFilter.style.display ="none";
|
||||
}else if(className === 'icon filter-icon'){
|
||||
filter.classList.remove("filter-icon");
|
||||
filter.classList.add("icon-menu-close-adj");
|
||||
|
||||
sort.classList.remove("icon-menu-close-adj");
|
||||
sort.classList.add("sort-icon");
|
||||
|
||||
layerFilter.style.display ="block";
|
||||
sortLimit.style.display ="none";
|
||||
}else{
|
||||
sort.classList.remove("icon-menu-close-adj");
|
||||
sort.classList.add("sort-icon");
|
||||
|
||||
filter.classList.remove("icon-menu-close-adj");
|
||||
filter.classList.add("filter-icon");
|
||||
|
||||
sortLimit.style.display ="none";
|
||||
layerFilter.style.display ="none";
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
@ -33,15 +33,18 @@
|
|||
@else
|
||||
@if($product->type == "configurable")
|
||||
<a href="{{ route('cart.add.configurable', $product->url_key) }}" class="btn btn-lg btn-primary addtocart">{{ __('shop::app.home.product-card.add-to-cart') }}</a>
|
||||
@else
|
||||
<form action="{{route('cart.add', $product->id)}}" method="POST">
|
||||
@csrf
|
||||
<input type="hidden" name="product" value="{{ $product->id }}">
|
||||
<input type="hidden" name="quantity" value="1">
|
||||
<input type="hidden" value="false" name="is_configurable">
|
||||
<button class="btn btn-lg btn-primary addtocart">{{ __('shop::app.home.product-card.add-to-cart') }}</button>
|
||||
</form>
|
||||
@include('shop::products.wishlist')
|
||||
@else
|
||||
<div class="cart-wish-wrap">
|
||||
<form action="{{route('cart.add', $product->id)}}" method="POST">
|
||||
@csrf
|
||||
<input type="hidden" name="product" value="{{ $product->id }}">
|
||||
<input type="hidden" name="quantity" value="1">
|
||||
<input type="hidden" value="false" name="is_configurable">
|
||||
<button class="btn btn-lg btn-primary addtocart">{{ __('shop::app.home.product-card.add-to-cart') }}</button>
|
||||
</form>
|
||||
@include('shop::products.wishlist')
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,26 +1,25 @@
|
|||
@extends('shop::layouts.master')
|
||||
|
||||
@section('page_title')
|
||||
{{ __('shop::app.reviews.add-review-page-title') }} - {{ $product->name }}
|
||||
@endsection
|
||||
@section('content-wrapper')
|
||||
<section class="review">
|
||||
|
||||
<div class="category-breadcrumbs">
|
||||
{{-- <div class="category-breadcrumbs">
|
||||
<span class="breadcrumb">Home</span> > <span class="breadcrumb">Men</span> > <span class="breadcrumb">Slit Open Jeans</span>
|
||||
</div>
|
||||
|
||||
<div class="review-layouter">
|
||||
</div> --}}
|
||||
|
||||
<div class="review-layouter mb-20">
|
||||
<div class="product-info">
|
||||
|
||||
<div class="image">
|
||||
<div class="product-image">
|
||||
<img src="{{ bagisto_asset('images/jeans_big.jpg') }}" />
|
||||
</div>
|
||||
|
||||
<div class="heading">
|
||||
<div class="product-name">
|
||||
<span>{{ $product->name }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="price">
|
||||
<div class="product-price">
|
||||
|
||||
@inject ('priceHelper', 'Webkul\Product\Helpers\Price')
|
||||
|
||||
|
|
@ -34,37 +33,37 @@
|
|||
@endif
|
||||
@endif
|
||||
|
||||
<span class="pro-price-not">
|
||||
{{-- <span class="pro-price-not">
|
||||
<strike> $45.00 </strike>
|
||||
</span>
|
||||
|
||||
<span class="offer"> 10% Off </span>
|
||||
|
||||
<span class="offer"> 10% Off </span> --}}
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="review-info">
|
||||
|
||||
<div class="review-form">
|
||||
<form method="POST" action="{{ route('shop.reviews.store', $product->id ) }}">
|
||||
@csrf
|
||||
|
||||
<div class="heading">
|
||||
<span> Write a review </span>
|
||||
<span>{{ __('shop::app.reviews.write-review') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="rating">
|
||||
<span> {{ __('admin::app.customers.reviews.rating') }} </span>
|
||||
</div>
|
||||
|
||||
<div class="stars">
|
||||
<label class="star star-5" for="star-5" onclick="calculateRating(id)" id="1"></label>
|
||||
|
||||
<label class="star star-4" for="star-4" onclick="calculateRating(id)" id="2"></label>
|
||||
|
||||
<label class="star star-3" for="star-3" onclick="calculateRating(id)" id="3"></label>
|
||||
|
||||
<label class="star star-2" for="star-2" onclick="calculateRating(id)" id="4"></label>
|
||||
|
||||
<label class="star star-1" for="star-1" onclick="calculateRating(id)" id="5"></label>
|
||||
|
||||
<input type="name" name="title" class="form-control" placeholder="title">
|
||||
<input type="name" name="title" class="form-control" placeholder="{{ __('shop::app.reviews.review-title') }}">
|
||||
|
||||
<input type="hidden" id="rating" name="rating">
|
||||
|
||||
|
|
|
|||
|
|
@ -65,15 +65,13 @@
|
|||
</accordian>
|
||||
|
||||
@include ('shop::products.view.attributes')
|
||||
|
||||
|
||||
@include ('shop::products.view.reviews')
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@include ('shop::products.view.up-sells')
|
||||
</section>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
|
|
@ -94,21 +92,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
var thumbList = document.getElementsByClassName('thumb-list')[0];
|
||||
var thumbFrame = document.getElementsByClassName('thumb-frame');
|
||||
var productHeroImage = document.getElementsByClassName('product-hero-image')[0];
|
||||
|
||||
// for product page resize image
|
||||
if(thumbList && productHeroImage){
|
||||
thumbList.style.maxHeight = productHeroImage.offsetHeight + "px";
|
||||
for(let i=0 ; i < thumbFrame.length ; i++){
|
||||
thumbFrame[i].style.height = (productHeroImage.offsetHeight/4) + "px";
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<div class="product-image-group">
|
||||
|
||||
<div class="loader" id="loader">
|
||||
<div class="cp-spinner cp-round" id="loader">
|
||||
</div>
|
||||
|
||||
<product-gallery></product-gallery>
|
||||
|
|
|
|||
|
|
@ -70,4 +70,10 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
@if(!is_null($customer))
|
||||
<a href="{{ route('shop.reviews.create', $product->url_key) }}" class="btn btn-lg btn-primary">
|
||||
{{ __('shop::app.products.write-review-btn') }}
|
||||
</a>
|
||||
@endif
|
||||
@endif
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
@auth('customer')
|
||||
<a class="add-to-wishlist" href="{{ route('customer.wishlist.add', $product->id) }}">
|
||||
<span class="icon wishlist-icon"></span>
|
||||
</a>
|
||||
<a class="add-to-wishlist" href="{{ route('customer.wishlist.add', $product->id) }}">
|
||||
<span class="icon wishlist-icon"></span>
|
||||
</a>
|
||||
@endauth
|
||||
|
|
|
|||
|
|
@ -596,7 +596,7 @@ class DataGrid
|
|||
array_values($value)[0]
|
||||
);
|
||||
} else {
|
||||
throw new \Exception('Multiple Sort keys Found, Please Resolve the URL Manually.');
|
||||
throw new \Exception('Multiple Sort keys Found, Please Resolve the URL Manually');
|
||||
}
|
||||
} elseif ($key=="search") {
|
||||
|
||||
|
|
@ -689,7 +689,6 @@ class DataGrid
|
|||
$parsed = $this->parse();
|
||||
|
||||
if ($this->aliased==true) {
|
||||
|
||||
//flags
|
||||
$table_alias = false;
|
||||
$join_table_alias = false;
|
||||
|
|
@ -710,7 +709,7 @@ class DataGrid
|
|||
//check whether exploded string still has same table name
|
||||
if ($exploded[0]==$this->table) {
|
||||
$table_alias = false;
|
||||
} else { // (isset($exploded))
|
||||
} else {
|
||||
$table_alias = true;
|
||||
$table_name = trim($exploded[0]);
|
||||
$table_alias = trim($exploded[1]);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ class UiServiceProvider extends ServiceProvider
|
|||
__DIR__ . '/../../publishable/assets' => public_path('vendor/webkul/ui/assets'),
|
||||
], 'public');
|
||||
|
||||
$this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'ui');
|
||||
|
||||
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'ui');
|
||||
|
||||
Paginator::defaultView('ui::partials.pagination');
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="254px" height="236px" viewBox="0 0 254 236" 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>404-image</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Desktop" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.5">
|
||||
<g id="404-page" transform="translate(-960.000000, -288.000000)">
|
||||
<g id="404-image" transform="translate(961.000000, 289.000000)">
|
||||
<polyline id="Path-3" stroke="#242424" stroke-width="3" points="0.626953125 0.990234375 34.3359375 26.4658203 34.6796875 73.1640625 34.3359375 186.773437 160.960938 215.992187 210.71875 130.375 34.3359375 72.71875"></polyline>
|
||||
<g id="Group" transform="translate(46.000000, 190.000000)" fill="#FFFFFF" stroke="#242424" stroke-width="3">
|
||||
<circle id="Oval" cx="22.5" cy="22.5" r="21"></circle>
|
||||
<circle id="Oval" cx="23" cy="23" r="5.5"></circle>
|
||||
</g>
|
||||
<g id="Group" transform="translate(208.000000, 163.000000)" fill="#FFFFFF" stroke="#242424" stroke-width="3">
|
||||
<circle id="Oval" cx="22.5" cy="22.5" r="21"></circle>
|
||||
<circle id="Oval" cx="23" cy="23" r="5.5"></circle>
|
||||
</g>
|
||||
<path d="M178,205 L182,205 L182,208 L178,208 L178,205 Z M185,205 L206,205 L206,208 L185,208 L185,205 Z" id="Combined-Shape" fill="#242424" transform="translate(192.000000, 206.500000) rotate(-23.000000) translate(-192.000000, -206.500000) "></path>
|
||||
<path d="M172.473165,218.350993 L176.473165,218.350993 L176.473165,221.350993 L172.473165,221.350993 L172.473165,218.350993 Z M179.473165,218.350993 L200.473165,218.350993 L200.473165,221.350993 L179.473165,221.350993 L179.473165,218.350993 Z" id="Combined-Shape" fill="#242424" transform="translate(186.473165, 219.850993) rotate(-23.000000) translate(-186.473165, -219.850993) "></path>
|
||||
<path d="M198.610065,126.237911 L222.219028,78.9333292 L163.963322,59.4411726 L147.719875,109.950161 L198.610065,126.237911 Z" id="Path-4" stroke="#242424" stroke-width="3"></path>
|
||||
<polyline id="Path-5" stroke="#242424" stroke-width="3" points="131.557617 105.489258 134.746094 71.9423828 157.437808 79.0096878"></polyline>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="10px" height="14px" viewBox="0 0 10 14" 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-Sort-Down</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
|
||||
<g id="Settings-Users-Roles" transform="translate(-451.000000, -218.000000)" stroke="#979797">
|
||||
<g id="Paper" transform="translate(344.000000, 145.000000)">
|
||||
<g id="Table" transform="translate(0.000000, 61.000000)">
|
||||
<g id="Strip-Head">
|
||||
<g id="Icon-Sort-Up" transform="translate(103.000000, 10.000000)">
|
||||
<g id="Icon-Sort-Down" transform="translate(9.000000, 9.000000) scale(1, -1) rotate(90.000000) translate(-9.000000, -9.000000) translate(3.000000, 5.000000)">
|
||||
<path d="M1.13686838e-12,4 L10.068125,4" id="Path-3" stroke-width="2"></path>
|
||||
<polyline id="Path-4" stroke-width="2" points="8 0 12 4.08548298 8 8"></polyline>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
|
|
@ -0,0 +1,11 @@
|
|||
<?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>Artboard</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Artboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round">
|
||||
<path d="M9.06852618,23.2496556 L22.5678375,9.75034436" id="Line-2" stroke="#242424" stroke-width="3"></path>
|
||||
<path d="M9.06852618,9.75034436 L22.5678375,23.2496556" id="Line-2" stroke="#242424" stroke-width="3"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 708 B |
Binary file not shown.
|
After Width: | Height: | Size: 106 B |
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="alert" v-bind:class="flash.type">
|
||||
<span class="icon white-cross-sm-icon" @click="remove"></span>
|
||||
<p>{{ flash.message }}</p>
|
||||
<p>{{ flash.message }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
$font-color: #3a3a3a;
|
||||
$brand-color: #0041FF;
|
||||
$info-color: #204d74;
|
||||
$danger-color: #FC6868;
|
||||
$success-color: #4CAF50;
|
||||
$warning-color: #FFC107;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// Icon scss
|
||||
@import "icons";
|
||||
@import "variables";
|
||||
@import "components";
|
||||
@import "mixins";
|
||||
@import "animations";
|
||||
|
||||
|
|
@ -521,6 +522,10 @@ h2 {
|
|||
background: $danger-color;
|
||||
}
|
||||
|
||||
&.alert-info {
|
||||
background: $info-color;
|
||||
}
|
||||
|
||||
&.alert-success {
|
||||
background: $success-color;
|
||||
}
|
||||
|
|
@ -675,263 +680,6 @@ h2 {
|
|||
}
|
||||
}
|
||||
|
||||
/* Data grid css starts here */
|
||||
.grid-container {
|
||||
user-select: none;
|
||||
|
||||
.filter-wrapper {
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
|
||||
.filter-row-one,
|
||||
.filter-row-two {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
.filter-row-one {
|
||||
height: 40px;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.search-filter {
|
||||
.control {
|
||||
font-family: "montserrat", sans-serif;
|
||||
padding-left: 5px;
|
||||
width: 380px;
|
||||
height: 36px;
|
||||
border: 2px solid $control-border-color;
|
||||
border-radius: 3px;
|
||||
border-right: 0px;
|
||||
border-top-right-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.ic-wrapper {
|
||||
display: block;
|
||||
height: 36px;
|
||||
width: 36px;
|
||||
border: 2px solid $control-border-color;
|
||||
border-left: none;
|
||||
border-radius: 2px;
|
||||
|
||||
.search-icon {
|
||||
margin-left: 4px;
|
||||
margin-top: 4px;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-filters {
|
||||
display: inline-flex;
|
||||
|
||||
.more-filters {
|
||||
margin-right: 5px;
|
||||
|
||||
.dropdown-toggle {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-family: "montserrat", sans-serif;
|
||||
padding-left: 5px;
|
||||
height: 36px;
|
||||
width: 150px;
|
||||
border: 2px solid $control-border-color;
|
||||
border-radius: 2px;
|
||||
background-color: $color-white;
|
||||
color: $filter-toggle-color;
|
||||
font-size: 14px;
|
||||
|
||||
.dropdown-header {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.arrow-down-icon {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.dropdown-list {
|
||||
.dropdown-container {
|
||||
ul {
|
||||
li.filter-column-dropdown {
|
||||
.filter-column-select {
|
||||
width: 100%;
|
||||
background: $color-white;
|
||||
border: 2px solid $control-border-color;
|
||||
border-radius: 3px;
|
||||
height: 36px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
-webkit-transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
padding: 0px 5px;
|
||||
font-family: "montserrat", sans-serif;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
li {
|
||||
select {
|
||||
background: $color-white;
|
||||
border: 2px solid $control-border-color;
|
||||
border-radius: 3px;
|
||||
height: 36px;
|
||||
max-width: 100%;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
-webkit-transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
padding: 0px 5px;
|
||||
font-family: "montserrat", sans-serif;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
input {
|
||||
background: #fff;
|
||||
border: 2px solid #c7c7c7;
|
||||
border-radius: 3px;
|
||||
height: 36px;
|
||||
max-width: 100%;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
-webkit-transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
padding: 0px 5px;
|
||||
font-family: "montserrat", sans-serif;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
.filter-condition-dropdown-string {
|
||||
display: none;
|
||||
}
|
||||
.filter-condition-dropdown-number {
|
||||
display: none;
|
||||
}
|
||||
.filter-condition-dropdown-datetime {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.filter-response-string {
|
||||
display: none;
|
||||
}
|
||||
.filter-response-boolean {
|
||||
display: none;
|
||||
}
|
||||
.filter-response-datetime {
|
||||
display: none;
|
||||
}
|
||||
.filter-response-number {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.filter-row-two {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
|
||||
.filter-one {
|
||||
margin-right: 10px;
|
||||
|
||||
.filter-name {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.filter-value {
|
||||
display: inline-flex;
|
||||
background: #e7e7e7;
|
||||
padding-left: 5px;
|
||||
color: $color-black-shade;
|
||||
vertical-align: middle;
|
||||
|
||||
.f-value {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.cross-icon {
|
||||
margin: 5px;
|
||||
height: 18px !important;
|
||||
width: 18px !important;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.table {
|
||||
thead {
|
||||
.mass-action-wrapper {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
|
||||
.massaction-remove {
|
||||
margin-top: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
form {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.selected-items {
|
||||
margin-right: 15px;
|
||||
}
|
||||
}
|
||||
tr {
|
||||
th.grid_head {
|
||||
cursor:pointer;
|
||||
|
||||
.sort-down-icon {
|
||||
margin-left: 5px;
|
||||
margin-top: -3px;
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
th {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tbody {
|
||||
td.action {
|
||||
a:first-child {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pagination {
|
||||
margin-top:20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* DataGrid css ends in here */
|
||||
|
||||
.modal-open {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
|
@ -1069,4 +817,54 @@ h2 {
|
|||
background-image: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//css for loader
|
||||
.cp-spinner {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
margin-left: 18.5%;
|
||||
margin-top: 15%;
|
||||
}
|
||||
|
||||
.cp-round:before {
|
||||
border-radius: 50%;
|
||||
content: " ";
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
border-top: solid 6px #bababa;
|
||||
border-right: solid 6px #bababa;
|
||||
border-bottom: solid 6px #bababa;
|
||||
border-left: solid 6px #bababa;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.cp-round:after {
|
||||
border-radius: 50%;
|
||||
content: " ";
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
border-top: solid 6px $brand-color;
|
||||
border-right: solid 6px transparent;
|
||||
border-bottom: solid 6px transparent;
|
||||
border-left: solid 6px transparent;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
animation: spin 1s ease-in-out infinite;
|
||||
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
|
|
@ -0,0 +1,257 @@
|
|||
/* Data grid css starts here */
|
||||
.grid-container {
|
||||
user-select: none;
|
||||
|
||||
.filter-wrapper {
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
|
||||
.filter-row-one,
|
||||
.filter-row-two {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
.filter-row-one {
|
||||
height: 40px;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.search-filter {
|
||||
.control {
|
||||
font-family: "montserrat", sans-serif;
|
||||
padding-left: 10px;
|
||||
width: 380px;
|
||||
height: 36px;
|
||||
border: 2px solid $control-border-color;
|
||||
border-radius: 3px;
|
||||
border-right: 0px;
|
||||
border-top-right-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.ic-wrapper {
|
||||
display: block;
|
||||
height: 36px;
|
||||
width: 36px;
|
||||
border: 2px solid $control-border-color;
|
||||
border-left: none;
|
||||
border-radius: 2px;
|
||||
|
||||
.search-icon {
|
||||
margin-left: 4px;
|
||||
margin-top: 4px;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-filters {
|
||||
display: inline-flex;
|
||||
|
||||
.more-filters {
|
||||
margin-right: 5px;
|
||||
|
||||
.dropdown-toggle {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-family: "montserrat", sans-serif;
|
||||
padding-left: 5px;
|
||||
height: 36px;
|
||||
width: 150px;
|
||||
border: 2px solid $control-border-color;
|
||||
border-radius: 2px;
|
||||
background-color: $color-white;
|
||||
color: $filter-toggle-color;
|
||||
font-size: 14px;
|
||||
|
||||
.dropdown-header {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.arrow-down-icon {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.dropdown-list {
|
||||
.dropdown-container {
|
||||
ul {
|
||||
li.filter-column-dropdown {
|
||||
.filter-column-select {
|
||||
width: 100%;
|
||||
background: $color-white;
|
||||
border: 2px solid $control-border-color;
|
||||
border-radius: 3px;
|
||||
height: 36px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
-webkit-transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
padding: 0px 5px;
|
||||
font-family: "montserrat", sans-serif;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
li {
|
||||
select {
|
||||
background: $color-white;
|
||||
border: 2px solid $control-border-color;
|
||||
border-radius: 3px;
|
||||
height: 36px;
|
||||
max-width: 100%;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
-webkit-transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
padding: 0px 5px;
|
||||
font-family: "montserrat", sans-serif;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
input {
|
||||
background: #fff;
|
||||
border: 2px solid #c7c7c7;
|
||||
border-radius: 3px;
|
||||
height: 36px;
|
||||
max-width: 100%;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
-webkit-transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition: 0.2s
|
||||
cubic-bezier(0.4, 0, 0.2, 1);
|
||||
padding: 0px 5px;
|
||||
font-family: "montserrat", sans-serif;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
.filter-condition-dropdown-string {
|
||||
display: none;
|
||||
}
|
||||
.filter-condition-dropdown-number {
|
||||
display: none;
|
||||
}
|
||||
.filter-condition-dropdown-datetime {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.filter-response-string {
|
||||
display: none;
|
||||
}
|
||||
.filter-response-boolean {
|
||||
display: none;
|
||||
}
|
||||
.filter-response-datetime {
|
||||
display: none;
|
||||
}
|
||||
.filter-response-number {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.filter-row-two {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
|
||||
.filter-one {
|
||||
margin-right: 10px;
|
||||
|
||||
.filter-name {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.filter-value {
|
||||
display: inline-flex;
|
||||
background: #e7e7e7;
|
||||
padding-left: 5px;
|
||||
color: $color-black-shade;
|
||||
vertical-align: middle;
|
||||
|
||||
.f-value {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.cross-icon {
|
||||
margin: 5px;
|
||||
height: 18px !important;
|
||||
width: 18px !important;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.table {
|
||||
thead {
|
||||
.mass-action-wrapper {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
|
||||
.massaction-remove {
|
||||
margin-top: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
form {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.selected-items {
|
||||
margin-right: 15px;
|
||||
}
|
||||
}
|
||||
tr {
|
||||
th.grid_head {
|
||||
|
||||
.sort-down-icon, .sort-up-icon {
|
||||
margin-left: 5px;
|
||||
margin-top: -3px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
th.grid_head.sortable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
th {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tbody {
|
||||
td.action {
|
||||
a:first-child {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pagination {
|
||||
margin-top:20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* DataGrid css ends in here */
|
||||
|
|
@ -256,3 +256,9 @@
|
|||
background-image: url("../images/Expand-Light-On.svg");
|
||||
}
|
||||
}
|
||||
|
||||
.icon-404 {
|
||||
background-image: url("../images/404-image.svg");
|
||||
width: 255px;
|
||||
height: 255px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
.color-red {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.color-default {
|
||||
color: $font-color;
|
||||
}
|
||||
|
||||
.color-brand {
|
||||
color: $brand-color;
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
return [
|
||||
'datagrid' => [
|
||||
'actions' => 'Actions'
|
||||
]
|
||||
];
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
<div class="{{ $css->filter }}filter-wrapper">
|
||||
{{-- for loading the filters from another file --}}
|
||||
<div class="filter-row-one">
|
||||
<div class="search-filter" style="display: inline-flex; align-items: center;">
|
||||
<input type="search" class="control search-field" placeholder="Search Users" value="" />
|
||||
|
|
@ -24,7 +23,8 @@
|
|||
<div class="more-filters">
|
||||
<div class="dropdown-toggle">
|
||||
<div class="dropdown-header">
|
||||
<span class="name">Filter</span> {{-- <span class="role">Filter</span> --}}
|
||||
<span class="name">Filter</span>
|
||||
{{-- <span class="role">Filter</span> --}}
|
||||
<i class="icon arrow-down-icon active"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,73 +1,53 @@
|
|||
<div class="grid-container {{-- $css->datagrid --}}">
|
||||
|
||||
<div class="grid-container">
|
||||
{{-- For loading the filters from includes directory file --}}
|
||||
@include('ui::datagrid.filters.default')
|
||||
@include('ui::datagrid.filters')
|
||||
|
||||
{{-- for generating the table and its content --}}
|
||||
@include('ui::datagrid.table.default')
|
||||
@include('ui::datagrid.table')
|
||||
|
||||
{{-- Section for datagrid javascript --}}
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
|
||||
var columns = @json($columns); //referential
|
||||
|
||||
var allFilters = [];
|
||||
|
||||
var search_value;
|
||||
|
||||
var filter_column;
|
||||
|
||||
var filter_condition;
|
||||
|
||||
var filter_range;
|
||||
|
||||
var count_filters = parseInt(0);
|
||||
|
||||
var url;
|
||||
|
||||
var array_start = '[';
|
||||
|
||||
var array_end = ']';
|
||||
|
||||
var typeValue;
|
||||
|
||||
var selectedColumn = '';
|
||||
|
||||
var myURL = document.location;
|
||||
|
||||
let params;
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
params = (new URL(document.location)).search;
|
||||
|
||||
if(params.length>0) {
|
||||
|
||||
if(params.length > 0) {
|
||||
if(allFilters.length == 0) {
|
||||
//call reverse url function
|
||||
arrayFromUrl(params.slice(1,params.length));
|
||||
arrayFromUrl(params.slice(1, params.length));
|
||||
}
|
||||
}
|
||||
|
||||
$('.search-btn').click(function() {
|
||||
|
||||
search_value = $(".search-field").val();
|
||||
formURL('search','all', search_value, params); //format for search
|
||||
formURL('search', 'all', search_value, params); //format for search
|
||||
});
|
||||
|
||||
//controls for header when sorting is done
|
||||
$('.grid_head').on('click', function() {
|
||||
|
||||
var column = $(this).data('column-name');
|
||||
|
||||
var currentSort = $(this).data('column-sort');
|
||||
|
||||
if(currentSort == "asc")
|
||||
formURL("sort",column,"desc",params);
|
||||
|
||||
else if(currentSort == "desc")
|
||||
formURL("sort",column,"asc",params);
|
||||
if(currentSort == "asc") {
|
||||
formURL("sort", column, "desc", params);
|
||||
}
|
||||
else if(currentSort == "desc") {
|
||||
formURL("sort", column, "asc", params);
|
||||
}
|
||||
});
|
||||
|
||||
$('select.filter-column-select').change(function() {
|
||||
|
|
@ -80,32 +60,22 @@
|
|||
if(typeValue == 'string') {
|
||||
//default behaviour for strings
|
||||
$('.filter-condition-dropdown-number').css('display','none');
|
||||
|
||||
$('.filter-condition-dropdown-datetime').css('display','none');
|
||||
|
||||
$('.filter-response-number').css('display','none');
|
||||
|
||||
$('.filter-response-datetime').css('display','none');
|
||||
|
||||
$('.filter-response-boolean').css('display','none');
|
||||
|
||||
//show the two wanted
|
||||
$('.filter-condition-dropdown-string').css('display','inherit');
|
||||
|
||||
$('.filter-response-string').css('display','inherit');
|
||||
}
|
||||
else if(typeValue == 'boolean') {
|
||||
//hide unwanted
|
||||
$('.filter-condition-dropdown-string').css('display','none');
|
||||
|
||||
$('.filter-condition-dropdown-number').css('display','none');
|
||||
|
||||
$('.filter-condition-dropdown-datetime').css('display','none');
|
||||
|
||||
$('.filter-response-string').css('display','none');
|
||||
|
||||
$('.filter-response-number').css('display','none');
|
||||
|
||||
$('.filter-response-datetime').css('display','none');
|
||||
|
||||
//only true or false for that column is needed as input
|
||||
|
|
@ -114,37 +84,26 @@
|
|||
else if(typeValue == 'datetime') {
|
||||
//hide unwanted
|
||||
$('.filter-condition-dropdown-string').css('display','none');
|
||||
|
||||
$('.filter-condition-dropdown-number').css('display','none');
|
||||
|
||||
$('.filter-response-string').css('display','none');
|
||||
|
||||
$('.filter-response-number').css('display','none');
|
||||
|
||||
$('.filter-response-boolean').css('display','none');
|
||||
|
||||
//show what is wanted
|
||||
$('.filter-condition-dropdown-datetime').css('display','inherit');
|
||||
|
||||
$('.filter-response-datetime').css('display','inherit');
|
||||
}
|
||||
else if(typeValue == 'number') {
|
||||
//hide unwanted
|
||||
$('.filter-condition-dropdown-string').css('display','none');
|
||||
|
||||
$('.filter-condition-dropdown-datetime').css('display','none');
|
||||
|
||||
$('.filter-response-string').css('display','none');
|
||||
|
||||
$('.filter-response-datetime').css('display','none');
|
||||
|
||||
$('.filter-response-boolean').css('display','none');
|
||||
|
||||
//show what is wanted
|
||||
$('.filter-condition-dropdown-number').css('display','inherit');
|
||||
|
||||
$('.filter-response-number').css('display','inherit');
|
||||
|
||||
}
|
||||
|
||||
$('.apply-filter').on('click',function() {
|
||||
|
|
@ -152,26 +111,19 @@
|
|||
params = (new URL(document.location)).search;
|
||||
|
||||
if(typeValue == 'number') {
|
||||
|
||||
var conditionUsed = $('.filter-condition-dropdown-number').find(':selected').val();
|
||||
|
||||
var response = $('.response-number').val();
|
||||
|
||||
formURL(selectedColumn,conditionUsed,response,params,col_label);
|
||||
}
|
||||
if(typeValue == 'string') {
|
||||
|
||||
var conditionUsed = $('.filter-condition-dropdown-string').find(':selected').val();
|
||||
|
||||
var response = $('.response-string').val();
|
||||
|
||||
formURL(selectedColumn,conditionUsed,response,params,col_label);
|
||||
|
||||
}
|
||||
if(typeValue == 'datetime') {
|
||||
|
||||
var conditionUsed = $('.filter-condition-dropdown-datetime').find(':selected').val();
|
||||
|
||||
var response = $('.response-datetime').val();
|
||||
|
||||
formURL(selectedColumn,conditionUsed,response,params,col_label);
|
||||
|
|
@ -217,22 +169,17 @@
|
|||
});
|
||||
|
||||
$('.mass-action').css('display','');
|
||||
|
||||
$('.table-grid-header').css('display','none');
|
||||
// $('.selected-items').html(id.toString());
|
||||
|
||||
$('#indexes').val(id);
|
||||
}
|
||||
else if($("input[id=mastercheckbox]").prop('checked') == false) {
|
||||
|
||||
$('.indexers').each(function(){ this.checked = false; });
|
||||
|
||||
id = [];
|
||||
|
||||
$('.mass-action').css('display','none');
|
||||
|
||||
$('.table-grid-header').css('display','');
|
||||
|
||||
$('#indexes').val('');
|
||||
}
|
||||
});
|
||||
|
|
@ -269,25 +216,18 @@
|
|||
}
|
||||
|
||||
if(id.length>0) {
|
||||
|
||||
$('.mass-action').css('display','');
|
||||
|
||||
$('.table-grid-header').css('display','none');
|
||||
|
||||
$('#indexes').val(id);
|
||||
|
||||
}else if(id.length == 0) {
|
||||
|
||||
$('.mass-action').css('display','none');
|
||||
|
||||
$('.table-grid-header').css('display','');
|
||||
|
||||
$('#indexes').val('');
|
||||
|
||||
if($('#mastercheckbox').prop('checked')) {
|
||||
|
||||
$('#mastercheckbox').prop('checked',false);
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -296,10 +236,8 @@
|
|||
|
||||
//make the url from the array and redirect
|
||||
function makeURL(repetition = false) {
|
||||
|
||||
if(allFilters.length>0 && repetition == false)
|
||||
{
|
||||
|
||||
for(i=0;i<allFilters.length;i++) {
|
||||
if(i==0){
|
||||
url = '?' + allFilters[i].column + '[' + allFilters[i].cond + ']' + '=' + allFilters[i].val;
|
||||
|
|
@ -310,27 +248,22 @@
|
|||
document.location = url;
|
||||
|
||||
} else if(allFilters.length>0 && repetition == true) {
|
||||
|
||||
//this is the case when the filter is being repeated on a single column with different condition and value
|
||||
for(i=0;i<allFilters.length;i++) {
|
||||
|
||||
if(i==0){
|
||||
if(i==0) {
|
||||
url = '?' + allFilters[i].column + '[' + allFilters[i].cond + ']' + '=' + allFilters[i].val;
|
||||
}
|
||||
else
|
||||
else {
|
||||
url = url + '&' + allFilters[i].column + '[' + allFilters[i].cond + ']' + '=' + allFilters[i].val;
|
||||
}
|
||||
}
|
||||
|
||||
document.location = url;
|
||||
|
||||
} else {
|
||||
|
||||
var uri = window.location.href.toString();
|
||||
|
||||
var clean_uri = uri.substring(0, uri.indexOf("?"));
|
||||
|
||||
document.location = clean_uri;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -338,72 +271,63 @@
|
|||
function arrayFromUrl(urlstring) {
|
||||
|
||||
var obj={};
|
||||
|
||||
t = urlstring.slice(0,urlstring.length);
|
||||
|
||||
splitted = [];
|
||||
|
||||
moreSplitted = [];
|
||||
|
||||
splitted = t.split('&');
|
||||
|
||||
for(i=0;i<splitted.length;i++) {
|
||||
|
||||
moreSplitted.push(splitted[i].split('='));
|
||||
|
||||
}
|
||||
for(i=0;i<moreSplitted.length;i++) {
|
||||
|
||||
col = moreSplitted[i][0].replace(']','').split('[')[0];
|
||||
|
||||
cond = moreSplitted[i][0].replace(']','').split('[')[1]
|
||||
|
||||
val = moreSplitted[i][1];
|
||||
|
||||
obj.column = col;
|
||||
|
||||
obj.cond = cond;
|
||||
|
||||
obj.val = val;
|
||||
|
||||
if(col!=undefined && cond!=undefined && val!=undefined)
|
||||
allFilters.push(obj);
|
||||
|
||||
obj = {};
|
||||
|
||||
}
|
||||
makeTags();
|
||||
}
|
||||
|
||||
//use the label to prevent the display of column name on the body
|
||||
//Use the label to prevent the display of column name on the body
|
||||
function makeTags() {
|
||||
|
||||
var filterRepeat = 0;
|
||||
|
||||
if(allFilters.length!=0)
|
||||
for(var i = 0;i<allFilters.length;i++) {
|
||||
|
||||
if(allFilters[i].column == "sort") {
|
||||
|
||||
col_label_tag = $('li[data-name="'+allFilters[i].cond+'"]').text();
|
||||
|
||||
var filter_card = '<span class="filter-one" id="'+ i +'"><span class="filter-name">'+ col_label_tag +'</span><span class="filter-value"><span class="f-value">'+ allFilters[i].val +'</span><span class="icon cross-icon remove-filter"></span></span></span>';
|
||||
|
||||
sorted_col = allFilters[i].cond;
|
||||
|
||||
var apply_on_column = $('th[data-column-name="'+sorted_col+'"]').children('.icon');
|
||||
|
||||
if(allFilters[i].val == "asc") {
|
||||
apply_on_column.addClass('sort-down-icon');
|
||||
} else {
|
||||
apply_on_column.addClass('sort-up-icon');
|
||||
}
|
||||
|
||||
$('.filter-row-two').append(filter_card);
|
||||
|
||||
} else if(allFilters[i].column == "search") {
|
||||
|
||||
col_label_tag = "Search";
|
||||
|
||||
var filter_card = '<span class="filter-one" id="'+ i +'"><span class="filter-name">'+ col_label_tag +'</span><span class="filter-value"><span class="f-value">'+ allFilters[i].val +'</span><span class="icon cross-icon remove-filter"></span></span></span>';
|
||||
$('.filter-row-two').append(filter_card);
|
||||
|
||||
} else {
|
||||
|
||||
col_label_tag = $('li[data-name="'+allFilters[i].column+'"]').text().trim();
|
||||
|
||||
var filter_card = '<span class="filter-one" id="'+ i +'"><span class="filter-name">'+ col_label_tag +'</span><span class="filter-value"><span class="f-value">'+ allFilters[i].val +'</span><span class="icon cross-icon remove-filter"></span></span></span>';
|
||||
$('.filter-row-two').append(filter_card);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -414,13 +338,11 @@
|
|||
|
||||
/* validate the conditions here and do the replacements and
|
||||
push here in the all filters array */
|
||||
|
||||
var obj1 = {};
|
||||
|
||||
console.log(allFilters.length);
|
||||
|
||||
if(column == "" || condition == "" || response == "") {
|
||||
|
||||
alert("Some of the required field is null, please check column, condition and value properly.");
|
||||
|
||||
return false;
|
||||
|
|
@ -441,11 +363,9 @@
|
|||
|
||||
return false;
|
||||
} else if(allFilters[j].column == column) {
|
||||
|
||||
filter_repeated = 1;
|
||||
|
||||
allFilters[j].cond = condition;
|
||||
|
||||
allFilters[j].val = response;
|
||||
|
||||
makeURL(true);
|
||||
|
|
@ -454,84 +374,55 @@
|
|||
if(filter_repeated == 0) {
|
||||
|
||||
obj1.column = column;
|
||||
|
||||
obj1.cond = condition;
|
||||
|
||||
obj1.val = response;
|
||||
|
||||
obj1.label = clabel;
|
||||
|
||||
allFilters.push(obj1);
|
||||
|
||||
obj1 = {};
|
||||
|
||||
makeURL();
|
||||
}
|
||||
}
|
||||
if(column == "sort") {
|
||||
|
||||
sort_exists = 0;
|
||||
|
||||
for(j=0;j<allFilters.length;j++) {
|
||||
|
||||
if(allFilters[j].column == "sort") {
|
||||
|
||||
if(allFilters[j].column==column && allFilters[j].cond==condition && allFilters[j].val==response) {
|
||||
|
||||
if(response=="asc") {
|
||||
|
||||
allFilters[j].column = column;
|
||||
|
||||
allFilters[j].cond = condition;
|
||||
|
||||
allFilters[j].val = "desc";
|
||||
|
||||
allFilters[j].label = clabel;
|
||||
|
||||
makeURL();
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
allFilters[j].column = column;
|
||||
|
||||
allFilters[j].cond = condition;
|
||||
|
||||
allFilters[j].val = "asc";
|
||||
|
||||
allFilters[j].label = clabel;
|
||||
|
||||
makeURL();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
allFilters[j].column = column;
|
||||
|
||||
allFilters[j].cond = condition;
|
||||
|
||||
allFilters[j].val = response;
|
||||
|
||||
allFilters[j].label = clabel;
|
||||
|
||||
makeURL();
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
if(column == "search") {
|
||||
|
||||
search_found = 0;
|
||||
|
||||
for(j=0;j<allFilters.length;j++) {
|
||||
|
||||
if(allFilters[j].column == "search") {
|
||||
|
||||
allFilters[j].column = column;
|
||||
allFilters[j].cond = condition;
|
||||
allFilters[j].val = response;
|
||||
|
|
@ -539,13 +430,11 @@
|
|||
makeURL();
|
||||
}
|
||||
}
|
||||
|
||||
for(j=0;j<allFilters.length;j++) {
|
||||
if(allFilters[j].column == "search") {
|
||||
search_found = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(search_found == 0) {
|
||||
obj1.column = column;
|
||||
obj1.cond = condition;
|
||||
|
|
@ -557,27 +446,21 @@
|
|||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
obj1.column = column;
|
||||
|
||||
obj1.cond = condition;
|
||||
|
||||
obj1.val = response;
|
||||
|
||||
obj1.label = clabel;
|
||||
|
||||
allFilters.push(obj1);
|
||||
|
||||
obj1 = {};
|
||||
|
||||
makeURL();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
function confirm_click(message){
|
||||
if (confirm(message)) {
|
||||
|
||||
//do the action required
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
<div class="pagination">
|
||||
{{ $results->links() }}
|
||||
</div>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<div class="table">
|
||||
<table class="{{ $css->table }}">
|
||||
@include('ui::datagrid.table.head')
|
||||
@include('ui::datagrid.table.body')
|
||||
</table>
|
||||
@include('ui::datagrid.pagination')
|
||||
</div>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<tbody class="{{ $css->tbody }}">
|
||||
@if(count($results) == 0)
|
||||
<tr>
|
||||
<td colspan="{{ count($columns)+1 }}" style="text-align: center;">
|
||||
No Records Found.
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@foreach ($results as $result)
|
||||
<tr>
|
||||
|
||||
<td class="">
|
||||
<span class="checkbox">
|
||||
<input type="checkbox" class="indexers" id="{{ $result->id }}" name="checkbox[]">
|
||||
<label class="checkbox-view" for="checkbox1"></label>
|
||||
</span>
|
||||
</td>
|
||||
@foreach ($columns as $column)
|
||||
<td class="">{!! $column->render($result) !!}</td>
|
||||
@endforeach
|
||||
|
||||
<td class="action">
|
||||
@foreach($actions as $action)
|
||||
<a @if($action['type'] == "Edit") href="{{ url()->current().'/edit/'.$result->id }}" @elseif($action['type']=="Delete") href="{{ url()->current().'/delete/'.$result->id }}" @endif class="Action-{{ $action['type'] }}" id="{{ $result->id }}" onclick="return confirm_click('{{ $action['confirm_text'] }}');">
|
||||
<i class="{{ $action['icon'] }}"></i>
|
||||
</a>
|
||||
@endforeach
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
|
|
@ -1,162 +0,0 @@
|
|||
<div class="table">
|
||||
|
||||
<table class="{{ $css->table }}">
|
||||
|
||||
<thead>
|
||||
|
||||
<tr class="mass-action" style="display: none; height:63px;">
|
||||
|
||||
<th colspan="{{ count($columns)+1 }}">
|
||||
|
||||
<div class="mass-action-wrapper">
|
||||
|
||||
<span class="massaction-remove">
|
||||
<span class="icon checkbox-dash-icon"></span>
|
||||
</span>
|
||||
|
||||
@foreach($massoperations as $massoperation)
|
||||
|
||||
@if($massoperation['type'] == "button")
|
||||
|
||||
<form onsubmit="return confirm('Are You Sure?');"
|
||||
@if(strtoupper($massoperation[ 'method'])=="GET" || strtoupper($massoperation['method'])=="POST" )
|
||||
method="{{ strtoupper($massoperation['method']) }}"
|
||||
@else
|
||||
method="POST"
|
||||
@endif
|
||||
|
||||
action="{{ $massoperation['route'] }}">
|
||||
|
||||
{{ csrf_field() }}
|
||||
|
||||
@if(strtoupper($massoperation['method'])!= "GET" && strtoupper($massoperation['method'])!= "POST")
|
||||
|
||||
@method($massoperation['method'])
|
||||
|
||||
@endif
|
||||
|
||||
<input type="hidden" id="indexes" name="indexes" value="">
|
||||
|
||||
<input class="btn btn-primary btn-sm" type="submit" value="Delete">
|
||||
|
||||
</form>
|
||||
|
||||
@elseif($massoperation['type'] == "select")
|
||||
|
||||
<form
|
||||
@if(strtoupper($massoperation[ 'method'])=="GET" || strtoupper($massoperation[ 'method'])=="POST" )
|
||||
|
||||
method="{{ strtoupper($massoperation['method']) }}"
|
||||
|
||||
@else
|
||||
method="POST"
|
||||
|
||||
@endif
|
||||
|
||||
action="{{ $massoperation['route'] }}">
|
||||
{{ csrf_field() }}
|
||||
@if(strtoupper($massoperation['method'])!= "GET" && strtoupper($massoperation['method'])!= "POST")
|
||||
|
||||
@method($massoperation['method'])
|
||||
|
||||
@endif
|
||||
|
||||
<input type="hidden" id="indexes" name="indexes" value="">
|
||||
|
||||
<select name="choices">
|
||||
|
||||
@foreach($massoperation['options'] as $option)
|
||||
|
||||
<option>{{ $option }}</option>
|
||||
|
||||
@endforeach
|
||||
|
||||
</select>
|
||||
|
||||
<input class="btn btn-primary btn-sm" type="submit" value="Submit">
|
||||
|
||||
</form>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr class="table-grid-header">
|
||||
<th>
|
||||
<span class="checkbox">
|
||||
<input type="checkbox" id="mastercheckbox">
|
||||
<label class="checkbox-view" for="checkbox"></label>
|
||||
</span>
|
||||
</th>
|
||||
@foreach ($columns as $column)
|
||||
@if($column->sortable == "true")
|
||||
<th class="grid_head"
|
||||
@if(strpos($column->alias, ' as '))
|
||||
<?php $exploded_name = explode(' as ',$column->name); ?>
|
||||
data-column-name="{{ $exploded_name[0] }}"
|
||||
@else
|
||||
data-column-name="{{ $column->alias }}"
|
||||
@endif
|
||||
|
||||
data-column-label="{{ $column->label }}"
|
||||
data-column-sort="asc">{!! $column->sorting() !!}<span class="icon sort-down-icon"></span>
|
||||
</th>
|
||||
@else
|
||||
<th class="grid_head" data-column-name="{{ $column->alias }}" data-column-label="{{ $column->label }}">{!! $column->sorting() !!}</th>
|
||||
@endif
|
||||
@endforeach
|
||||
{{-- @if(isset($attribute_columns))
|
||||
@foreach($attribute_columns as $key => $value)
|
||||
<th>
|
||||
{{ $value }}
|
||||
</th>
|
||||
@endforeach
|
||||
@endif --}}
|
||||
<th>
|
||||
Actions
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="{{ $css->tbody }}">
|
||||
@if(count($results) == 0)
|
||||
<tr>
|
||||
<td colspan="{{ count($columns)+1 }}" style="text-align: center;">
|
||||
No Records Found.
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@foreach ($results as $result)
|
||||
<tr>
|
||||
|
||||
<td class="">
|
||||
<span class="checkbox">
|
||||
<input type="checkbox" class="indexers" id="{{ $result->id }}" name="checkbox[]">
|
||||
<label class="checkbox-view" for="checkbox1"></label>
|
||||
</span>
|
||||
</td>
|
||||
@foreach ($columns as $column)
|
||||
<td class="">{!! $column->render($result) !!}</td>
|
||||
@endforeach
|
||||
|
||||
{{-- @if(isset($attribute_columns))
|
||||
@foreach ($attribute_columns as $atc)
|
||||
<td>{{ $result->{$atc} }}</td>
|
||||
@endforeach
|
||||
@endif --}}
|
||||
|
||||
<td class="action">
|
||||
@foreach($actions as $action)
|
||||
<a @if($action['type'] == "Edit") href="{{ url()->current().'/edit/'.$result->id }}" @elseif($action['type']=="Delete") href="{{ url()->current().'/delete/'.$result->id }}" @endif class="Action-{{ $action['type'] }}" id="{{ $result->id }}" onclick="return confirm_click('{{ $action['confirm_text'] }}');">
|
||||
<i class="{{ $action['icon'] }}"></i>
|
||||
</a>
|
||||
@endforeach
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="pagination">
|
||||
{{ $results->links() }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
<thead>
|
||||
<tr class="mass-action" style="display: none; height:63px;">
|
||||
<th colspan="{{ count($columns)+1 }}">
|
||||
<div class="mass-action-wrapper">
|
||||
|
||||
<span class="massaction-remove">
|
||||
<span class="icon checkbox-dash-icon"></span>
|
||||
</span>
|
||||
|
||||
{{-- Mass operation implementation --}}
|
||||
@foreach($massoperations as $massoperation)
|
||||
@if($massoperation['type'] == "button")
|
||||
|
||||
<form onsubmit="return confirm('Are You Sure?');"
|
||||
@if(strtoupper($massoperation[ 'method'])=="GET" || strtoupper($massoperation['method'])=="POST" )
|
||||
method="{{ strtoupper($massoperation['method']) }}"
|
||||
@else
|
||||
method="POST"
|
||||
@endif
|
||||
|
||||
action="{{ $massoperation['route'] }}">
|
||||
|
||||
{{ csrf_field() }}
|
||||
|
||||
@if(strtoupper($massoperation['method'])!= "GET" && strtoupper($massoperation['method'])!= "POST")
|
||||
|
||||
@method($massoperation['method'])
|
||||
|
||||
@endif
|
||||
|
||||
<input type="hidden" id="indexes" name="indexes" value="">
|
||||
|
||||
<input class="btn btn-primary btn-sm" type="submit" value="Delete">
|
||||
|
||||
</form>
|
||||
|
||||
@elseif($massoperation['type'] == "select")
|
||||
|
||||
<form
|
||||
@if(strtoupper($massoperation[ 'method'])=="GET" || strtoupper($massoperation[ 'method'])=="POST" )
|
||||
|
||||
method="{{ strtoupper($massoperation['method']) }}"
|
||||
|
||||
@else
|
||||
method="POST"
|
||||
|
||||
@endif
|
||||
|
||||
action="{{ $massoperation['route'] }}">
|
||||
{{ csrf_field() }}
|
||||
@if(strtoupper($massoperation['method'])!= "GET" && strtoupper($massoperation['method'])!= "POST")
|
||||
|
||||
@method($massoperation['method'])
|
||||
|
||||
@endif
|
||||
|
||||
<input type="hidden" id="indexes" name="indexes" value="">
|
||||
|
||||
<select name="choices">
|
||||
@foreach($massoperation['options'] as $option)
|
||||
<option>{{ $option }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<input class="btn btn-primary btn-sm" type="submit" value="Submit">
|
||||
</form>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr class="table-grid-header">
|
||||
<th>
|
||||
<span class="checkbox">
|
||||
<input type="checkbox" id="mastercheckbox">
|
||||
<label class="checkbox-view" for="checkbox"></label>
|
||||
</span>
|
||||
</th>
|
||||
@foreach ($columns as $column)
|
||||
@if($column->sortable == "true")
|
||||
<th class="grid_head sortable"
|
||||
@if(strpos($column->alias, ' as '))
|
||||
<?php $exploded_name = explode(' as ',$column->name); ?>
|
||||
data-column-name="{{ $exploded_name[0] }}"
|
||||
@else
|
||||
data-column-name="{{ $column->alias }}"
|
||||
@endif
|
||||
|
||||
data-column-label="{{ $column->label }}"
|
||||
data-column-sort="asc">
|
||||
{!! $column->sorting() !!}<span class="icon"></span>
|
||||
</th>
|
||||
@else
|
||||
<th class="grid_head"
|
||||
data-column-name="{{ $column->alias }}"
|
||||
data-column-label="{{ $column->label }}">
|
||||
{!! $column->sorting() !!}
|
||||
</th>
|
||||
@endif
|
||||
@endforeach
|
||||
<th>
|
||||
{{ __('ui::app.datagrid.actions') }}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -15,8 +15,16 @@
|
|||
background-image: URL("../images/icon-menu-close.svg");
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
<<<<<<< HEAD
|
||||
margin-left: auto;
|
||||
margin-bottom: 2px;
|
||||
=======
|
||||
}
|
||||
|
||||
.icon-menu-close-adj {
|
||||
background-image: URL("../images/cross-icon-adj.svg");
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
>>>>>>> 0bd7d8353108a3306bfa60977477735224974f5d
|
||||
}
|
||||
|
||||
.grid-view-icon {
|
||||
|
|
@ -121,6 +129,63 @@
|
|||
height: 18px;
|
||||
}
|
||||
|
||||
.product-card .product-image {
|
||||
max-height: 350px;
|
||||
max-width: 280px;
|
||||
margin-bottom: 10px;
|
||||
background: #F2F2F2;
|
||||
}
|
||||
|
||||
.product-card .product-image img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.product-card .product-name {
|
||||
margin-bottom: 14px;
|
||||
width: 100%;
|
||||
color: #242424;
|
||||
}
|
||||
|
||||
.product-card .product-name a {
|
||||
color: #242424;
|
||||
}
|
||||
|
||||
.product-card .product-description {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.product-card .product-ratings {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.product-card .product-ratings .icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.product-card .cart-wish-wrap {
|
||||
display: -webkit-inline-box;
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
-webkit-box-pack: start;
|
||||
-ms-flex-pack: start;
|
||||
justify-content: flex-start;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.product-card .cart-wish-wrap .addtocart {
|
||||
margin-right: 10px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.product-card .cart-wish-wrap .add-to-wishlist {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.product-grid-4 {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(235px, 1fr));
|
||||
|
|
@ -163,56 +228,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.product-card .product-image {
|
||||
max-height: 350px;
|
||||
max-width: 280px;
|
||||
margin-bottom: 10px;
|
||||
background: #F2F2F2;
|
||||
}
|
||||
|
||||
.product-card .product-image img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.product-card .product-name {
|
||||
margin-bottom: 14px;
|
||||
width: 100%;
|
||||
color: #242424;
|
||||
}
|
||||
|
||||
.product-card .product-name a {
|
||||
color: #242424;
|
||||
}
|
||||
|
||||
.product-card .product-description {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.product-card .product-ratings {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.product-card .product-ratings .icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.product-card .cart-fav-seg {
|
||||
display: -webkit-inline-box;
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.product-card .cart-fav-seg .addtocart {
|
||||
margin-right: 10px;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.add-to-wishlist .wishlist-icon:hover {
|
||||
background-image: url("../images/wishadd.svg");
|
||||
}
|
||||
|
|
@ -251,7 +266,7 @@
|
|||
text-align: left;
|
||||
}
|
||||
|
||||
.account-head .account-edit {
|
||||
.account-head .account-action {
|
||||
font-size: 17px;
|
||||
margin-top: 1%;
|
||||
color: #0031F0;
|
||||
|
|
@ -468,7 +483,7 @@ body {
|
|||
}
|
||||
|
||||
@media only screen and (max-width: 840px) {
|
||||
.layered-filter-wrapper, .responsive-layred-filter {
|
||||
.layered-filter-wrapper {
|
||||
display: none;
|
||||
}
|
||||
.main .category-block {
|
||||
|
|
@ -490,6 +505,7 @@ body {
|
|||
display: none;
|
||||
}
|
||||
.main .category-block .top-toolbar .pager .view-mode .sort-filter {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
|
@ -508,38 +524,38 @@ body {
|
|||
}
|
||||
}
|
||||
|
||||
.layered-filter-wrapper, .responsive-layred-filter {
|
||||
.layered-filter-wrapper {
|
||||
width: 25%;
|
||||
float: left;
|
||||
padding-right: 20px;
|
||||
min-height: 1px;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-title, .responsive-layred-filter .filter-title {
|
||||
.layered-filter-wrapper .filter-title {
|
||||
border-bottom: 1px solid #E8E8E8;
|
||||
color: #242424;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item, .responsive-layred-filter .filter-attributes .filter-attributes-item {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item {
|
||||
border-bottom: 1px solid #E8E8E8;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-title, .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-title {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-title {
|
||||
padding: 10px 40px 0 10px;
|
||||
color: #5E5E5E;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-title .remove-filter-link, .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-title .remove-filter-link {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-title .remove-filter-link {
|
||||
font-weight: 400;
|
||||
color: #0031F0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-title .icon, .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-title .icon {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-title .icon {
|
||||
background-image: url("../images/arrow-down.svg") !important;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
|
|
@ -548,45 +564,45 @@ body {
|
|||
top: 14px;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content, .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content {
|
||||
padding: 10px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items, .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content ol.items {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none none;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item, .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item {
|
||||
padding: 8px 0;
|
||||
color: #5E5E5E;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox, .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox .checkbox-view, .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox .checkbox-view {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox .checkbox-view {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
background-image: url("../images/checkbox.svg");
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox input:checked + .checkbox-view, .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox input:checked + .checkbox-view {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox input:checked + .checkbox-view {
|
||||
background-image: url("../images/checkbox-checked.svg");
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content .price-range-wrapper, .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content .price-range-wrapper {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content .price-range-wrapper {
|
||||
margin-top: 21px;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item.active .filter-attributes-content, .responsive-layred-filter .filter-attributes .filter-attributes-item.active .filter-attributes-content {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item.active .filter-attributes-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item.active .filter-attributes-title .icon, .responsive-layred-filter .filter-attributes .filter-attributes-item.active .filter-attributes-title .icon {
|
||||
.layered-filter-wrapper .filter-attributes .filter-attributes-item.active .filter-attributes-title .icon {
|
||||
background-image: url("../images//arrow-up.svg") !important;
|
||||
}
|
||||
|
||||
|
|
@ -1099,6 +1115,7 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
|
|||
|
||||
.header .header-top ul.right-responsive {
|
||||
display: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.header .header-top ul.right-responsive li {
|
||||
|
|
@ -1155,10 +1172,6 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
|
|||
position: relative;
|
||||
}
|
||||
|
||||
.header .header-bottom .nav a:first-child {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.header .header-bottom .nav li > .icon {
|
||||
display: none;
|
||||
}
|
||||
|
|
@ -1334,6 +1347,9 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
|
|||
.responsive-nav .nav > li {
|
||||
border-bottom: 1px solid #E8E8E8;
|
||||
}
|
||||
.responsive-nav .nav li ul {
|
||||
padding-left: 30px;
|
||||
}
|
||||
.responsive-nav .nav li:first-child {
|
||||
border-top: 1px solid #E8E8E8;
|
||||
}
|
||||
|
|
@ -1341,6 +1357,7 @@ section.slider-block div.slider-content div.slider-control .light-right-icon {
|
|||
float: none;
|
||||
height: 45px;
|
||||
display: none;
|
||||
border: none;
|
||||
}
|
||||
.responsive-nav .nav > li:last-child img {
|
||||
margin-right: 6px;
|
||||
|
|
@ -1556,41 +1573,6 @@ section.product-detail div.layouter form div.product-image-group {
|
|||
max-width: 604px;
|
||||
}
|
||||
|
||||
section.product-detail div.layouter form div.product-image-group .loader {
|
||||
border: 16px solid #E8E8E8;
|
||||
border-top: 16px solid #0031F0;
|
||||
border-radius: 50%;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
-webkit-animation: spin 2s linear infinite;
|
||||
animation: spin 2s linear infinite;
|
||||
margin-left: 20%;
|
||||
position: absolute;
|
||||
margin-top: 200px;
|
||||
}
|
||||
|
||||
@-webkit-keyframes spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
section.product-detail div.layouter form div.product-image-group div {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
|
|
@ -2358,94 +2340,90 @@ section.review .review-layouter {
|
|||
display: flex;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-flow: row;
|
||||
flex-flow: row;
|
||||
margin-top: 20px;
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
section.review .review-layouter .product-info .image {
|
||||
border: 1px solid red;
|
||||
}
|
||||
|
||||
section.review .review-layouter .product-info .image img {
|
||||
section.review .review-layouter .product-info .product-image img {
|
||||
display: block;
|
||||
height: 280px;
|
||||
width: 280px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .product-info .heading {
|
||||
section.review .review-layouter .product-info .product-name {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .product-info .heading span {
|
||||
section.review .review-layouter .product-info .product-name span {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .product-info .price {
|
||||
section.review .review-layouter .product-info .product-price {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .product-info .price .pro-price {
|
||||
section.review .review-layouter .product-info .product-price .pro-price {
|
||||
font-size: 24px;
|
||||
color: #FF6472;
|
||||
}
|
||||
|
||||
section.review .review-layouter .product-info .price .pro-price-not {
|
||||
section.review .review-layouter .product-info .product-price .pro-price-not {
|
||||
margin-left: 10px;
|
||||
color: #A5A5A5;
|
||||
}
|
||||
|
||||
section.review .review-layouter .product-info .price .offer {
|
||||
section.review .review-layouter .product-info .product-price .offer {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info {
|
||||
section.review .review-layouter .review-form {
|
||||
margin-left: 20px;
|
||||
width: 49%;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .heading {
|
||||
section.review .review-layouter .review-form .heading {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .heading .btn.btn-primary.right {
|
||||
section.review .review-layouter .review-form .heading .btn.btn-primary.right {
|
||||
float: right;
|
||||
margin-top: -10px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .rating {
|
||||
section.review .review-layouter .review-form .rating {
|
||||
margin-top: 25px;
|
||||
color: #A5A5A5;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .rating span {
|
||||
section.review .review-layouter .review-form .rating span {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .stars {
|
||||
section.review .review-layouter .review-form .stars {
|
||||
width: 270px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .stars label.star {
|
||||
section.review .review-layouter .review-form .stars label.star {
|
||||
font-size: 36px;
|
||||
color: #d4d4d4;
|
||||
-webkit-transition: all .2s;
|
||||
transition: all .2s;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .stars label.star:before {
|
||||
section.review .review-layouter .review-form .stars label.star:before {
|
||||
content: '\2605';
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .write-review {
|
||||
section.review .review-layouter .review-form .write-review {
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .write-review .control-group {
|
||||
section.review .review-layouter .review-form .write-review .control-group {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .write-review .control-group textarea {
|
||||
section.review .review-layouter .review-form .write-review .control-group textarea {
|
||||
margin-top: 5px;
|
||||
border: 2px solid #E8E8E8;
|
||||
border-radius: 3px;
|
||||
|
|
@ -2453,11 +2431,11 @@ section.review .review-layouter .review-info .write-review .control-group textar
|
|||
height: 120px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .submit-button {
|
||||
section.review .review-layouter .review-form .submit-button {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .submit-button button {
|
||||
section.review .review-layouter .review-form .submit-button button {
|
||||
background: #0031F0;
|
||||
font-size: 14px;
|
||||
color: #F2F2F2;
|
||||
|
|
@ -2467,7 +2445,7 @@ section.review .review-layouter .review-info .submit-button button {
|
|||
border: none;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .review-detail {
|
||||
section.review .review-layouter .review-form .review-detail {
|
||||
height: 150px;
|
||||
border: 1px solid firebrick;
|
||||
margin-top: 30px;
|
||||
|
|
@ -2480,18 +2458,18 @@ section.review .review-layouter .review-info .review-detail {
|
|||
flex-direction: row;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .review-detail .rating-review {
|
||||
section.review .review-layouter .review-form .review-detail .rating-review {
|
||||
margin-top: 40px;
|
||||
margin-left: 20px;
|
||||
width: 48%;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .review-detail .rating-review .avg-rating-count span {
|
||||
section.review .review-layouter .review-form .review-detail .rating-review .avg-rating-count span {
|
||||
font-size: 34px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
section.review .review-layouter .review-info .review-detail .rating-calculate .progress-only {
|
||||
section.review .review-layouter .review-form .review-detail .rating-calculate .progress-only {
|
||||
width: 20px;
|
||||
border: 1px solid blue;
|
||||
}
|
||||
|
|
@ -2639,8 +2617,13 @@ section.review .review-layouter .review-info .review-detail .rating-calculate .p
|
|||
color: #0031F0;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
.account-content .responsive-side-menu {
|
||||
display: none;
|
||||
=======
|
||||
.account-content .account-side-menu li.active .icon {
|
||||
display: inline-block;
|
||||
>>>>>>> 0bd7d8353108a3306bfa60977477735224974f5d
|
||||
}
|
||||
|
||||
.account-content .account-layout {
|
||||
|
|
@ -2648,8 +2631,83 @@ section.review .review-layouter .review-info .review-detail .rating-calculate .p
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
.account-content .account-layout .back-icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 770px) {
|
||||
.account-content {
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
}
|
||||
.account-content .account-side-menu {
|
||||
display: none;
|
||||
width: 100%;
|
||||
border: none;
|
||||
}
|
||||
.account-content .account-side-menu li {
|
||||
margin-left: 0%;
|
||||
width: 100%;
|
||||
}
|
||||
.account-content .account-side-menu li a {
|
||||
color: #242424;
|
||||
}
|
||||
.account-content .responsive-side-menu {
|
||||
cursor: pointer;
|
||||
padding-top: 13px;
|
||||
display: block;
|
||||
height: 46px;
|
||||
border-bottom: 1px solid #E8E8E8;
|
||||
border-top: 1px solid #E8E8E8;
|
||||
}
|
||||
.account-content .responsive-side-menu .right {
|
||||
float: right;
|
||||
}
|
||||
.account-content .account-layout {
|
||||
margin-left: 0%;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.account-content .account-layout .account-head {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-pack: justify;
|
||||
-ms-flex-pack: justify;
|
||||
justify-content: space-between;
|
||||
border-bottom: 1px solid #E8E8E8;
|
||||
border-top: 1px solid #E8E8E8;
|
||||
height: 46px;
|
||||
}
|
||||
.account-content .account-layout .account-head .back-icon {
|
||||
display: block;
|
||||
}
|
||||
.account-content .account-layout .account-head span {
|
||||
margin-top: 12px;
|
||||
font-size: 18px;
|
||||
}
|
||||
.account-content .account-layout .account-head .horizontal-rule {
|
||||
display: none;
|
||||
}
|
||||
.account-content .account-layout .account-table-content {
|
||||
margin-top: 2%;
|
||||
}
|
||||
.account-content .account-layout .account-table-content table tbody tr {
|
||||
display: grid;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.account-content .account-items-list, .account-content .edit-form {
|
||||
margin-top: 20px;
|
||||
}
|
||||
.account-content .control-group .control {
|
||||
width: 100%;
|
||||
}
|
||||
=======
|
||||
.account-content .account-layout .account-head {
|
||||
margin-bottom: 20px;
|
||||
>>>>>>> 0bd7d8353108a3306bfa60977477735224974f5d
|
||||
}
|
||||
|
||||
.account-table-content {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue