This commit is contained in:
shubhammehrotra.symfony@webkul.com 2019-12-30 20:18:35 +05:30
parent baae82b633
commit 408c9af744
26 changed files with 338 additions and 109 deletions

View File

@ -227,6 +227,7 @@ return [
Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
//Webkul packages
Webkul\Velocity\Providers\VelocityServiceProvider::class,
Webkul\Theme\Providers\ThemeServiceProvider::class,
Webkul\User\Providers\UserServiceProvider::class,
Webkul\Admin\Providers\AdminServiceProvider::class,
@ -246,8 +247,7 @@ return [
Webkul\Tax\Providers\TaxServiceProvider::class,
Webkul\API\Providers\APIServiceProvider::class,
Webkul\Discount\Providers\DiscountServiceProvider::class,
Webkul\CMS\Providers\CMSServiceProvider::class,
Webkul\Velocity\Providers\VelocityServiceProvider::class
Webkul\CMS\Providers\CMSServiceProvider::class
],
/*

View File

@ -273,7 +273,7 @@ class ProductRepository extends Repository
*
* @return Collection
*/
public function getFeaturedProducts()
public function getFeaturedProducts($count = 4)
{
$results = app(ProductFlatRepository::class)->scopeQuery(function($query) {
$channel = request()->get('channel') ?: (core()->getCurrentChannelCode() ?: core()->getDefaultChannelCode());
@ -288,7 +288,7 @@ class ProductRepository extends Repository
->where('product_flat.channel', $channel)
->where('product_flat.locale', $locale)
->orderBy('product_id', 'desc');
})->paginate(4);
})->paginate($count);
return $results;
}

View File

@ -1726,7 +1726,8 @@
border: none;
color: white;
font-size: 14px;
padding: 3px 10px;
font-weight: 600;
padding: 6px 14px;
position: absolute;
border-radius: 12px;
}

View File

@ -7,12 +7,18 @@ return [
'route' => 'velocity.admin.content.index',
'sort' => 5,
'icon-class' => 'velocity-icon',
], [
], [
'key' => 'velocity.header',
'name' => 'velocity::app.admin.layouts.header-content',
'route' => 'velocity.admin.content.index',
'sort' => 1,
'icon-class' => '',
], [
'key' => 'velocity.meta-data',
'name' => 'velocity::app.admin.layouts.meta-data',
'route' => 'velocity.admin.meta-data',
'sort' => 2,
'icon-class' => '',
], [
'key' => 'velocity.header.content',
'name' => 'velocity::app.admin.layouts.cms-pages',

View File

@ -0,0 +1,7 @@
<?php
namespace Webkul\Velocity\Contracts;
interface VelocityMetadata
{
}

View File

@ -0,0 +1,37 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateVelocityMetaData extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('velocity_meta_data', function (Blueprint $table) {
$table->increments('id');
$table->text('home_page_content');
$table->text('footer_left_content');
$table->text('footer_middle_content');
$table->boolean('slider');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('velocity_meta_data');
}
}

View File

@ -0,0 +1,26 @@
<?php
namespace Webkul\Velocity\Database\Seeders;
use DB;
use Illuminate\Database\Seeder;
class VelocityMetaDataSeeder extends Seeder
{
public function run()
{
DB::table('velocity_meta_data')->delete();
DB::table('velocity_meta_data')->insert([
'id' => 1,
'home_page_content' => "<p>@include('shop::home.advertisements.advertisement-one')@include('shop::home.featured-products') @include('shop::home.advertisements.advertisement-two') @include('shop::home.new-products') @include('shop::home.advertisements.advertisement-three')</p>",
'footer_left_content' => trans('velocity::app.admin.meta-data.footer-left-raw-content'),
'footer_middle_content' => '<div class="col-4 footer-ct-content"><div class="row"><div class="col-6"><ul type="none"><li><a href="">About Us</a></li><li><a href="">Customer Service</a></li><li><a href="">Whats New</a></li><li><a href="">Contact Us </a></li></div><div class="col-6"><ul type="none"><li><a href="">Order and Returns</a></li><li><a href="">Payment Policy</a></li><li><a href="">Shipping Policy</a></li><li><a href="">Privacy and Cookies Policy</a></li></div></div></div>',
'slider' => 1,
]);
}
}

View File

@ -2,9 +2,11 @@
namespace Webkul\Velocity\Helpers;
use DB;
use Webkul\Product\Helpers\Review;
use Webkul\Product\Models\Product as ProductModel;
use Webkul\Velocity\Repositories\OrderBrandsRepository;
use Webkul\Velocity\Repositories\VelocityMetadataRepository;
use Webkul\Attribute\Repositories\AttributeOptionRepository;
use Webkul\Product\Repositories\ProductRepository as ProductRepository;
@ -46,12 +48,21 @@ class Helper extends Review
*/
protected $attributeOption;
/**
* VelocityMetadata object
*
* @var object
*/
protected $velocityMetadata;
public function __construct(
VelocityMetadataRepository $velocityMetadata,
OrderBrandsRepository $orderBrandsRepository,
ProductRepository $productRepository,
ProductModel $productModel,
AttributeOptionRepository $attributeOption
) {
$this->velocityMetadata = $velocityMetadata;
$this->productModel = $productModel;
$this->attributeOption = $attributeOption;
$this->productRepository = $productRepository;
@ -133,7 +144,7 @@ class Helper extends Review
public function getCountRating($product)
{
$reviews = $product->reviews()->where('status', 'approved')
->select('rating', \DB::raw('count(*) as total'))
->select('rating', DB::raw('count(*) as total'))
->groupBy('rating')
->orderBy('rating','desc')
->get();
@ -158,5 +169,16 @@ class Helper extends Review
return $percentage;
}
public function getVelocityMetaData()
{
$metaData = $this->velocityMetadata->get();
if (! ($metaData && ($metaData = $metaData[0]))) {
$metaData = null;
}
return $metaData;
}
}

View File

@ -2,6 +2,9 @@
namespace Webkul\Velocity\Http\Controllers\Admin;
use DB;
use Webkul\Velocity\Repositories\MetadataRepository;
/**
* Category Controller
*
@ -11,13 +14,32 @@ namespace Webkul\Velocity\Http\Controllers\Admin;
class ConfigurationController extends Controller
{
public function __contruct()
/**
* MetadataRepository object
*
* @var Object
*/
protected $metaDataRepository;
/**
* Create a new controller instance.
*
* @param \Webkul\Velocity\Repositories\MetadataRepository $metaDataRepository
*/
public function __construct ()
{
dd("called");
$this->_config = request('_config');
}
public function storeMetaData()
{
dd("called");
$metaData = DB::table('velocity_meta_data')->get();
if (! ($metaData && ($metaData = $metaData[0]))) {
$metaData = null;
}
return view($this->_config['view'], compact('metaData'));
}
}

View File

@ -5,65 +5,68 @@ Route::group(['middleware' => ['web']], function () {
Route::prefix('admin/velocity')->group(function () {
Route::group(['middleware' => ['admin']], function () {
// Content Pages Route
Route::get('/content', 'ContentControlleradsasdasd@index')->defaults('_config', [
'view' => 'velocity::admin.content.index'
])->name('velocity.admin.content.index');
Route::get('/content/search', 'ContentController@search')->name('velocity.admin.content.search');
Route::namespace('Webkul\Velocity\Http\Controllers\Admin')->group(function () {
// Content Pages Route
Route::get('/content', 'ContentController@index')->defaults('_config', [
'view' => 'velocity::admin.content.index'
])->name('velocity.admin.content.index');
Route::get('/content/create', 'ContentController@create')->defaults('_config',[
'view' => 'velocity::admin.content.create'
])->name('velocity.admin.content.create');
Route::get('/content/search', 'ContentController@search')->name('velocity.admin.content.search');
Route::post('/content/create', 'ContentController@store')->defaults('_config',[
'redirect' => 'velocity.admin.content.index'
])->name('velocity.admin.content.store');
Route::get('/content/create', 'ContentController@create')->defaults('_config',[
'view' => 'velocity::admin.content.create'
])->name('velocity.admin.content.create');
Route::get('/content/edit/{id}', 'ContentController@edit')->defaults('_config',[
'view' => 'velocity::admin.content.edit'
])->name('velocity.admin.content.edit');
Route::post('/content/create', 'ContentController@store')->defaults('_config',[
'redirect' => 'velocity.admin.content.index'
])->name('velocity.admin.content.store');
Route::put('/content/edit/{id}', 'ContentController@update')->defaults('_config', [
'redirect' => 'velocity.admin.content.index'
])->name('velocity.admin.content.update');
Route::get('/content/edit/{id}', 'ContentController@edit')->defaults('_config',[
'view' => 'velocity::admin.content.edit'
])->name('velocity.admin.content.edit');
Route::post('/content/delete/{id}', 'ContentController@destroy')->name('velocity.admin.content.delete');
Route::put('/content/edit/{id}', 'ContentController@update')->defaults('_config', [
'redirect' => 'velocity.admin.content.index'
])->name('velocity.admin.content.update');
Route::post('/content/masssdelete', 'ContentController@massDestroy')->defaults('_config', [
'redirect' => 'velocity.admin.content.index'
])->name('velocity.admin.content.mass-delete');
Route::post('/content/delete/{id}', 'ContentController@destroy')->name('velocity.admin.content.delete');
// Main Category Route
Route::get('/category', 'CategoryController@index')->defaults('_config', [
'view' => 'velocity::admin.category.index'
])->name('velocity.admin.category.index');
Route::post('/content/masssdelete', 'ContentController@massDestroy')->defaults('_config', [
'redirect' => 'velocity.admin.content.index'
])->name('velocity.admin.content.mass-delete');
Route::get('/category/create', 'CategoryController@create')->defaults('_config',[
'view' => 'velocity::admin.category.create'
])->name('velocity.admin.category.create');
// Main Category Route
Route::get('/category', 'CategoryController@index')->defaults('_config', [
'view' => 'velocity::admin.category.index'
])->name('velocity.admin.category.index');
Route::post('/category/create', 'CategoryController@store')->defaults('_config',[
'redirect' => 'velocity.admin.category.index'
])->name('velocity.admin.category.store');
Route::get('/category/create', 'CategoryController@create')->defaults('_config',[
'view' => 'velocity::admin.category.create'
])->name('velocity.admin.category.create');
Route::get('/category/edit/{id}', 'CategoryController@edit')->defaults('_config',[
'view' => 'velocity::admin.category.edit'
])->name('velocity.admin.category.edit');
Route::post('/category/create', 'CategoryController@store')->defaults('_config',[
'redirect' => 'velocity.admin.category.index'
])->name('velocity.admin.category.store');
Route::put('/category/edit/{id}', 'CategoryController@update')->defaults('_config', [
'redirect' => 'velocity.admin.category.index'
])->name('velocity.admin.category.update');
Route::get('/category/edit/{id}', 'CategoryController@edit')->defaults('_config',[
'view' => 'velocity::admin.category.edit'
])->name('velocity.admin.category.edit');
Route::post('/category/delete/{id}', 'CategoryController@destroy')->name('velocity.admin.category.delete');
Route::put('/category/edit/{id}', 'CategoryController@update')->defaults('_config', [
'redirect' => 'velocity.admin.category.index'
])->name('velocity.admin.category.update');
Route::post('/category/masssdelete', 'CategoryController@massDestroy')->defaults('_config', [
'redirect' => 'velocity.admin.category.index'
])->name('velocity.admin.category.mass-delete');
Route::post('/category/delete/{id}', 'CategoryController@destroy')->name('velocity.admin.category.delete');
Route::post('/meta-data', 'ConfigurationController@storeMetaData')->defaults('_config', [
'view' => 'velocity.admin.meta-data'
])->name('velocity.admin.category.mass-delete');
Route::post('/category/masssdelete', 'CategoryController@massDestroy')->defaults('_config', [
'redirect' => 'velocity.admin.category.index'
])->name('velocity.admin.category.mass-delete');
Route::get('/meta-data', 'ConfigurationController@storeMetaData')->defaults('_config', [
'view' => 'velocity::admin.meta-info.meta-data'
])->name('velocity.admin.meta-data');
});
});
});

View File

@ -0,0 +1,11 @@
<?php
namespace Webkul\Velocity\Models;
use Illuminate\Database\Eloquent\Model;
use Webkul\Velocity\Contracts\VelocityMetadata as VelocityMetadataContract;
class VelocityMetadata extends Model implements VelocityMetadataContract
{
protected $table = 'velocity_meta_data';
}

View File

@ -0,0 +1,9 @@
<?php
namespace Webkul\Velocity\Models;
use Konekt\Concord\Proxies\ModelProxy;
class VelocityMetadataProxy extends ModelProxy
{
}

View File

@ -26,13 +26,11 @@ class VelocityServiceProvider extends ServiceProvider
public function boot(Router $router)
{
include __DIR__ . '/../Http/helpers.php';
include __DIR__ . '/../Http/admin-routes.php';
$this->app->register(EventServiceProvider::class);
$this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations');
$this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'velocity');
$this->publishes([
@ -40,14 +38,17 @@ class VelocityServiceProvider extends ServiceProvider
], 'public');
$this->publishes([
__DIR__ . '/../Resources/views/' => resource_path('themes/velocity/views'),
dirname(__DIR__) . '/Resources/views/admin/settings/channels/edit.blade.php' => base_path('resources/views/vendor/admin/settings/channels/edit.blade.php')
]);
$this->publishes([
__DIR__ . '/../Resources/views/' => resource_path('themes/velocity/views'),
]);
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'velocity');
$velocityHelper = app('Webkul\Velocity\Helpers\Helper');
$velocityMetaData = $velocityHelper->getVelocityMetaData();
view()->share('velocityMetaData', $velocityMetaData);
}
/**

View File

@ -0,0 +1,18 @@
<?php
namespace Webkul\Velocity\Repositories;
use Webkul\Core\Eloquent\Repository;
class VelocityMetadataRepository extends Repository
{
/**
* Specify Model class name
*
* @return mixed
*/
function model()
{
return 'Webkul\Velocity\Models\VelocityMetadata';
}
}

View File

@ -1021,7 +1021,8 @@
border: none;
color: white;
font-size: 14px;
padding: 3px 10px;
font-weight: 600;
padding: 6px 14px;
position: absolute;
border-radius: 12px;

View File

@ -43,6 +43,7 @@ return [
'velocity' => 'Velocity',
'header-content' => 'Header Content',
'cms-pages' => 'CMS Pages',
'meta-data' => 'Meta Data',
'category-menu' => 'Category Menu',
],
'contents' => [
@ -87,6 +88,14 @@ return [
'content-type' => 'Content Type',
]
],
'meta-data' => [
'title' => 'Velocity meta data',
'home-page-content' => 'Home Page Content',
'footer-left-content' => 'Footer Left Content',
'footer-left-raw-content' => 'We love to craft softwares and solve the real world problems with the binaries. We are highly committed to our goals. We invest our resources to create world class easy to use softwares and applications for the enterprise business with the top notch, on the edge technology expertise.',
'footer-middle-content' => 'Footer Middle Content',
'update-meta-data' => 'Update Meta Data',
],
'category' => [
'title' => 'Category Menu List',
'add-title' => 'Add Menu Content',

View File

@ -1,4 +1,4 @@
@extends('velocity::admin.layouts.content')
@extends('admin::layouts.content')
@section('page_title')
{{ __('velocity::app.admin.category.title') }}

View File

@ -1,4 +1,4 @@
@extends('velocity::admin.layouts.content')
@extends('admin::layouts.content')
@section('page_title')
{{ __('velocity::app.admin.contents.title') }}

View File

@ -1,17 +0,0 @@
@extends('velocity::admin.layouts.master')
@section('content-wrapper')
<div class="inner-section">
@include ('admin::layouts.nav-aside')
<div class="content-wrapper">
@include ('admin::layouts.tabs')
@yield('content')
</div>
</div>
@stop

View File

@ -1 +0,0 @@
@extends('admin::layouts.master')

View File

@ -0,0 +1,90 @@
@extends('admin::layouts.content')
@section('page_title')
{{ __('velocity::app.admin.meta-data.title') }}
@stop
@section('content')
<div class="content">
<div class="page-header">
<div class="page-title">
<h1>{{ __('velocity::app.admin.meta-data.title') }}</h1>
</div>
</div>
<form
action=""
method="POST"
@submit.prevent="onSubmit">
@php
$typeView = 'admin::catalog.products.field-types.boolean';
@endphp
{{-- @include ($typeView) --}}
<div class="control-group">
<label for="footer_content">
{{ __('velocity::app.admin.meta-data.home-page-content') }}
</label>
<textarea
class="control"
id="home_page_content"
name="home_page_content">
{{ $metaData->home_page_content}}
</textarea>
</div>
<div class="control-group">
<label for="footer_content">
{{ __('velocity::app.admin.meta-data.footer-left-content') }}
</label>
<textarea
class="control"
id="footer_left_content"
name="footer_left_content">
{{ $metaData->footer_left_content}}
</textarea>
</div>
<div class="control-group">
<label for="footer_content">
{{ __('velocity::app.admin.meta-data.footer-middle-content') }}
</label>
<textarea
class="control"
id="footer_middle_content"
name="footer_middle_content">
{{ $metaData->footer_middle_content}}
</textarea>
</div>
<button class="btn btn-lg btn-primary">
{{ __('velocity::app.admin.meta-data.update-meta-data') }}
</button>
</form>
</div>
@stop
@push('scripts')
<script src="{{ asset('vendor/webkul/admin/assets/js/tinyMCE/tinymce.min.js') }}">
</script>
<script type="text/javascript">
$(document).ready(function () {
tinymce.init({
height: 200,
width: "100%",
image_advtab: true,
valid_elements : '*[*]',
selector: 'textarea#home_page_content,textarea#footer_left_content,textarea#footer_middle_content',
plugins: 'image imagetools media wordcount save fullscreen code',
toolbar1: 'formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat | code',
});
});
</script>
@endpush

View File

@ -1,5 +1,5 @@
@php
$featuredProducts = app('Webkul\Product\Repositories\ProductRepository')->getFeaturedProducts();
$featuredProducts = app('Webkul\Product\Repositories\ProductRepository')->getFeaturedProducts(6);
$featuredProductsCount = $featuredProducts->count();

View File

@ -40,14 +40,16 @@
@endsection
@section('content-wrapper')
@include('shop::home.slider')
@if ($velocityMetaData->slider)
@include('shop::home.slider')
@endif
@endsection
@section('full-content-wrapper')
{!! view_render_event('bagisto.shop.home.content.before') !!}
{!! DbView::make($channel)->field('home_page_content')->with(['sliderData' => $sliderData])->render() !!}
{!! DbView::make($velocityMetaData)->field('home_page_content')->render() !!}
{{ view_render_event('bagisto.shop.home.content.after') }}

View File

@ -1,3 +1,6 @@
<div class="row footer-statics">
{!! DbView::make(core()->getCurrentChannel())->field('footer_content')->render() !!}
</div>
@include('velocity::layouts.footer.footer-links.footer-left')
@include('velocity::layouts.footer.footer-links.footer-middle')
@include('velocity::layouts.footer.footer-links.footer-right')
</div>

View File

@ -15,6 +15,6 @@
</div>
<p class="clr-dark fs14">
We love to craft softwares and solve the real world problems with the binaries. We are highly committed to our goals. We invest our resources to create world class easy to use softwares and applications for the enterprise business with the top notch, on the edge technology expertise.
{{ $velocityMetaData->footer_left_content }}
</p>
</div>

View File

@ -1,22 +1 @@
<div class="col-4 footer-ct-content">
<div class="row">
<div class="col-6">
<ul type="none">
<li><a href="">About Us</a></li>
<li><a href="">Customer Service</a></li>
<li><a href="">Whats New</a></li>
<li><a href="">Contact Us </a></li>
<li><a href="">Blog</a></li>
</ul>
</div>
<div class="col-6">
<ul type="none">
<li><a href="">Order and Returns</a></li>
<li><a href="">Payment Policy</a></li>
<li><a href="">Shipping Policy</a></li>
<li><a href="">Privacy and Cookies Policy</a></li>
</ul>
</div>
</div>
</div>
{!! $velocityMetaData->footer_middle_content !!}