[WIP] Fix ergonomics rules

This commit is contained in:
Ludovic CANDELLIER
2020-03-30 00:48:17 +02:00
parent 36267139a1
commit cd9b6ea74c
106 changed files with 1392 additions and 747 deletions

View File

@@ -4,7 +4,7 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\User;
use App\Models\Core\Auth\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;

View File

@@ -1,87 +0,0 @@
<?php
namespace App\Http\Controllers\Shop\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Repositories\Categories;
class CategoryController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Category $category
* @return \Illuminate\Http\Response
*/
public function show(Category $category)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Category $category
* @return \Illuminate\Http\Response
*/
public function edit(Category $category)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Category $category
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Category $category)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Category $category
* @return \Illuminate\Http\Response
*/
public function destroy(Category $category)
{
//
}
}

View File

@@ -5,7 +5,7 @@ namespace App\Http\Controllers\Shop\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Repositories\Users;
use App\Repositories\Core\Auth\Users;
class DashboardController extends Controller
{
@@ -27,7 +27,6 @@ class DashboardController extends Controller
public function index()
{
$data = [];
$dashboard = 'dashboard_general';
if (Users::hasRole('admin')) {
$dashboard = 'dashboard';

View File

@@ -2,10 +2,11 @@
namespace App\Http\Controllers\Shop\Admin;
use App\Section;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Repositories\Shop\Sections;
class SectionController extends Controller
{
/**
@@ -13,9 +14,19 @@ class SectionController extends Controller
*
* @return \Illuminate\Http\Response
*/
public function index()
public function index(Request $request)
{
//
if ($request->ajax()) {
return self::getDatatable($request);
} else {
$data = [];
return view('Shop.Admin.Sections.list', $data);
}
}
public function getDatatable(Request $request)
{
return Sections::getTables($request->all());
}
/**
@@ -25,7 +36,8 @@ class SectionController extends Controller
*/
public function create()
{
//
$data = [];
return view('Shop.Admin.Sections.create', $data);
}
/**
@@ -36,39 +48,42 @@ class SectionController extends Controller
*/
public function store(Request $request)
{
//
$ret = Sections::store($request);
return redirect()->route('Shop.Admin.Sections.index');
}
/**
* Display the specified resource.
*
* @param \App\Section $Section
* @param \App\Customer $customer
* @return \Illuminate\Http\Response
*/
public function show(Section $Section)
public function show($id)
{
//
$data = Sections::get($id);
return view('Shop.Admin.Sections.view', $data);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Section $Section
* @param \App\Customer $customer
* @return \Illuminate\Http\Response
*/
public function edit(Section $Section)
public function edit($id)
{
//
$data = Sections::get($id);
return view('Shop.Admin.Sections.edit', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Section $Section
* @param \App\Customer $customer
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Section $Section)
public function update(Request $request)
{
//
}
@@ -76,11 +91,11 @@ class SectionController extends Controller
/**
* Remove the specified resource from storage.
*
* @param \App\Section $Section
* @param \App\Customer $customer
* @return \Illuminate\Http\Response
*/
public function destroy(Section $Section)
public function destroy($id)
{
//
return Sections::destroy($id);
}
}

View File

@@ -14,30 +14,19 @@ class SectionController extends Controller
*
* @return \Illuminate\Http\Response
*/
public function index()
public function index(Request $request)
{
//
if ($request->ajax()) {
return self::getDatatable($request);
} else {
$data = [];
return view('Shop.Sections.list', $data);
}
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
public function getDatatable(Request $request)
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
return Sections::getTables($request->all());
}
/**
@@ -48,40 +37,8 @@ class SectionController extends Controller
*/
public function show(Customer $customer)
{
//
$data = Sections::get($id);
return view('Shop.Admin.Sections.view', $data);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Customer $customer
* @return \Illuminate\Http\Response
*/
public function edit(Customer $customer)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Customer $customer
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Customer $customer)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Customer $customer
* @return \Illuminate\Http\Response
*/
public function destroy(Customer $customer)
{
//
}
}

View File

@@ -12,17 +12,18 @@ class Shop
$menu->add('Commerce', [ 'permission' => 'backend', 'icon' => 'cog' ])
->id('shop')
->activeIfRoute('shop')
->order(1);
$menu->addTo('shop', 'Commandes', [ 'route' => 'Shop.Admin.Orders.index', 'permission' => 'backend' ])
->activeIfRoute(['Shop.Admin.Orders.index'])->order(1);
$menu->addTo('shop', 'Factures', [ 'route' => 'Shop.Admin.Invoices.index', 'permission' => 'backend' ])
->activeIfRoute(['Shop.Admin.Invoices.index'])->order(2);
$menu->addTo('shop', 'Categories', [ 'route' => 'Shop.Admin.Products.index', 'permission' => 'backend' ])
->activeIfRoute(['Shop.Admin.Products.index'])->order(3);
$menu->addTo('shop', 'Categories', [ 'route' => 'Shop.Admin.Sections.index', 'permission' => 'backend' ])
->activeIfRoute(['Shop.Admin.Sections.index'])->order(1);
$menu->addTo('shop', 'Produits', [ 'route' => 'Shop.Admin.Products.index', 'permission' => 'backend' ])
->activeIfRoute(['Shop.Admin.Products.index'])->order(4);
->activeIfRoute(['Shop.Admin.Products.index'])->order(2);
$menu->addTo('shop', 'Commandes', [ 'route' => 'Shop.Admin.Orders.index', 'permission' => 'backend' ])
->activeIfRoute(['Shop.Admin.Orders.index'])->order(3);
$menu->addTo('shop', 'Factures', [ 'route' => 'Shop.Admin.Invoices.index', 'permission' => 'backend' ])
->activeIfRoute(['Shop.Admin.Invoices.index'])->order(4);
}

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Core\App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
@@ -12,12 +12,12 @@ class Application extends Model
public function pages()
{
return $this->hasMany('App\Models\Modules\ApplicationPage');
return $this->hasMany('App\Models\Core\App\ApplicationPage');
}
public function modules()
{
return $this->hasMany('App\Models\Modules\ApplicationModule');
return $this->hasMany('App\Models\Core\App\ApplicationModule');
}
public function scopeActive($query)

View File

@@ -1,5 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Core\App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
@@ -12,7 +13,7 @@ class ApplicationModule extends Model
public function application()
{
return $this->belongsTo('App\Models\Modules\Application');
return $this->belongsTo('App\Models\Core\App\Application');
}
public function permissions()

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Application;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
@@ -12,7 +12,7 @@ class ApplicationPage extends Model
public function application()
{
return $this->belongsTo('App\Models\Modules\Application');
return $this->belongsTo('App\Models\Core\App');
}
public function scopeActive($query)

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models\Auth;
namespace App\Models\Core\Auth;
use Laratrust\Models\LaratrustPermission;
@@ -29,12 +29,12 @@ class Permission extends LaratrustPermission
public function application()
{
return $this->belongsTo('App\Models\Application');
return $this->belongsTo('App\Models\Core\App\Application');
}
public function application_module()
{
return $this->belongsTo('App\Models\ApplicationModule');
return $this->belongsTo('App\Models\Core\App\ApplicationModule');
}
public function getDisplayNameAttribute($value)

View File

@@ -1,7 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Core\Auth;
/**
*

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models\Auth;
namespace App\Models\Core\Auth;
use Illuminate\Database\Eloquent\Model;
@@ -10,12 +10,12 @@ class PermissionRole extends Model
public function permission()
{
return $this->belongsTo('App\Permission');
return $this->belongsTo('App\Models\Core\Auth\Permission');
}
public function role()
{
return $this->belongsTo('App\Role');
return $this->belongsTo('App\Models\Core\Auth\Role');
}
public function scopeByPermission($query, $id)

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models\Auth;
namespace App\Models\Core\Auth;
use Illuminate\Database\Eloquent\Model;
@@ -10,17 +10,17 @@ class PermissionUser extends Model
public function permission()
{
return $this->belongsTo('App\Permission');
return $this->belongsTo('App\Models\Core\Auth\Permission');
}
public function user()
{
return $this->belongsTo('App\User');
return $this->belongsTo('App\Models\Core\Auth\User');
}
public function team()
{
return $this->belongsTo('App\Team');
return $this->belongsTo('App\Models\Core\Auth\Team');
}
public function scopeByUser($query, $id)

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models\Auth;
namespace App\Models\Core\Auth;
use Laratrust\Models\LaratrustRole;

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models\Auth;
namespace App\Models\Core\Auth;
use Illuminate\Database\Eloquent\Model;
@@ -11,12 +11,12 @@ class RoleUser extends Model
public function user()
{
return $this->belongsTo('App\User');
return $this->belongsTo('App\Models\Core\Auth\User');
}
public function team()
{
return $this->belongsTo('App\Team');
return $this->belongsTo('App\Models\Core\Auth\Team');
}
public function scopeByUser($query, $id)

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models\Auth;
namespace App\Models\Core\Auth;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
@@ -15,12 +15,7 @@ class Team extends LaratrustTeam
public function users()
{
return $this->hasMany('App\User');
}
public function society()
{
return $this->belongsTo('App\Models\Society');
return $this->hasMany('App\Models\Core\Auth\User');
}
public function scopeActive($query)
@@ -28,8 +23,4 @@ class Team extends LaratrustTeam
return $query->where('active', 1);
}
public function scopeBySociety($query, $id)
{
return $query->where('society_id', $id);
}
}

View File

@@ -1,6 +1,6 @@
<?php
namespace App;
namespace App\Models\Core\Auth;
use Illuminate\Database\Eloquent\Model;
@@ -11,12 +11,12 @@ class TeamUser extends Model
public function user()
{
return $this->belongsTo('App\User');
return $this->belongsTo('App\Models\Core\Auth\User');
}
public function team()
{
return $this->belongsTo('App\Team');
return $this->belongsTo('App\Models\Core\Auth\Team');
}
public function scopeByUser($query, $id)

View File

@@ -1,12 +1,13 @@
<?php
namespace App;
namespace App\Models\Core\Auth;
use Carbon\Carbon;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Yadahan\AuthenticationLog\AuthenticationLogable;
use Laratrust\Traits\LaratrustUserTrait;
use Mpociot\Teamwork\Traits\UserHasTeams;
use Sebastienheyd\Boilerplate\Notifications\NewUser as NewUserNotification;
@@ -55,6 +56,7 @@ class User extends Authenticatable
use LaratrustUserTrait;
use SoftDeletes;
use UserHasTeams;
use AuthenticationLogable;
/**
* The attributes that are mass assignable.
@@ -75,40 +77,21 @@ class User extends Authenticatable
'email_verified_at' => 'datetime',
];
public function user_detail()
public function teams()
{
return $this->hasOne('App\Models\UserDetail');
}
public function teams2()
{
return $this->hasManyThrough('App\Team', 'App\Models\TeamUser', 'user_id', 'id', 'id', 'team_id');
return $this->hasManyThrough('App\Models\Core\Auth\Team', 'App\Models\Core\Auth\TeamUser', 'user_id', 'id', 'id', 'team_id');
}
public function scopeByTeam($query, $id)
{
return $query->whereHas('teams2', function ($query) use ($id) {
return $query->whereHas('teams', function ($query) use ($id) {
$query->where('id', $id);
});
}
public function scopeByUniqueTeam($query)
{
return $query->has('teams2', '=', 1);
}
public function scopeBySociete($query, $id)
{
return $query->whereHas('teams2', function ($query) use ($id) {
$query->bySociete($id);
});
}
public function scopeByPartenaire($query, $id)
{
return $query->whereHas('teams2', function ($query) use ($id) {
$query->byPartenaire($id);
});
return $query->has('teams', '=', 1);
}
public function scopeActive($query)

View File

@@ -8,25 +8,16 @@ class Customer extends Model
{
protected $guarded = ['id'];
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function Invoices()
{
return $this->hasMany('App\Models\Shop\Invoice');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function Orders()
{
return $this->hasMany('App\Models\Shop\Order');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function User()
{
return $this->belongsTo('App\User');

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Models\Shop;
use Illuminate\Database\Eloquent\Model;
class CustomerAddress extends Model
{
protected $guarded = ['id'];
public function Customer()
{
return $this->belongsTo('App\Models\Shop\Customer');
}
public function Orders()
{
return $this->hasMany('App\Models\Shop\Order');
}
}

View File

@@ -8,19 +8,19 @@ class ProductPrice extends Model
{
protected $guarded = ['id'];
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function Product()
{
return $this->belongsTo('App\Models\Shop\Product');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function ProductAttribute()
{
return $this->belongsTo('App\Models\Shop\ProductAttribute');
}
public function scopeByProduct($query, $id)
{
return $query->where('product_id', $id);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Models\Shop;
use Illuminate\Database\Eloquent\Model;
class ProductSection extends Model
{
protected $guarded = ['id'];
public function Product()
{
return $this->belongsTo('App\Models\Shop\Product');
}
public function Section()
{
return $this->belongsTo('App\Models\Shop\Product');
}
public function scopeByProduct($query, $id)
{
return $query->where('product_id', $id);
}
public function scopeBySection($query, $id)
{
return $query->where('section_id', $id);
}
}

View File

@@ -4,13 +4,13 @@ namespace App\Models\Shop;
use Illuminate\Database\Eloquent\Model;
use Rinvex\Categories\Traits\Categorizable,
class Section extends Model
{
protected $guarded = ['id'];
use Categorizable;
protected $guarded = ['id'];
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function Products()
{
return $this->hasMany('App\Models\Shop\Product');

View File

@@ -2,7 +2,7 @@
namespace App\Repositories;
use App\Models\ApplicationPage;
use App\Models\Core\App\ApplicationPage;
use Illuminate\Support\Facades\Route;

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Repositories;
namespace App\Repositories\Core\App;
use Illuminate\Support\Facades\Route;

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Repositories\Core\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Laratrust\Traits\LaratrustUserTrait;
use Yajra\DataTables\DataTables;
use App\Models\Core\Auth\Permission;
class Permissions
{
public static function getModules()
{
return Permission::select('module')->distinct('module')->get()->pluck('module');
}
public static function getOptions()
{
return Permission::orderBy('name', 'asc')->get()->pluck('name', 'id')->toArray();
}
public static function getInfo($id)
{
return Permission::find($id);
}
public static function select_all()
{
return self::getAll()->toArray();
}
public static function select_by_id($id)
{
return Permission::find($id)->toArray();
}
public static function getAll()
{
return Permission::orderBy('name', 'asc')->get();
}
public static function getByName($name)
{
return Permission::where('name', $name)->first();
}
public static function get($id)
{
return Permission::find($id);
}
public static function getTable($id)
{
$datas = Permission::withCount(['users']);
return Datatables::of($datas)->make(true);
}
public static function delete($id)
{
Users::destroyByUniquePermission($id);
return Permission::destroy($id);
}
public static function store($data)
{
return (isset($data['id']) && $data['id']) ? self::update($data) : self::create($data);
}
public static function create($data)
{
return Permission::create($data);
}
public static function update($data)
{
return Permission::find($data['id'])->update($data);
}
public static function count()
{
return Permission::count();
}
}

View File

@@ -0,0 +1,147 @@
<?php
namespace App\Repositories;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Laratrust\Traits\LaratrustUserTrait;
use Yajra\DataTables\DataTables;
use App\Models\Core\Auth\Role;
use App\Models\Core\Auth\RoleUser;
class Roles
{
use LaratrustUserTrait;
public static function store($input)
{
if (isset($input['id']) && $input['id']) {
return self::update($input);
} else {
return self::insert($input);
}
}
// ajoute une forme juridique
public static function insert($input)
{
$permissions = array_keys($input['permissions']);
$name = $input['name'];
$translated = $input['translated'];
self::setTranslation($name, $translated);
$role = Role::create(['name' => $name, 'display_name' => $name, 'translated' => $translated, 'description' => '', 'active' => true]);
$role->attachPermissions($permissions);
return $role;
}
// met à jour les informations d'une forme juridique
public static function update($input, $id = false)
{
$id = ($id) ? $id : $input['id'];
$permissions = array_keys($input['permissions']);
$name = $input['name'];
$translated = $input['translated'];
self::setTranslation($name, $translated);
$role = Role::find($id);
$role->update(['name' => $name, 'translated' => $translated]);
$role->syncPermissions($permissions);
return $role;
}
// supprime une forme juridique
public static function delete($id)
{
$old = self::select_by_id($id);
self::deleteTranslation($old->translated);
return Role::destroy($id);
}
// met à jour le statut actif/inactif d'une forme juridique
public static function toggle_active($id, $active)
{
return Role::find($id)->update(['active' => $active]);
}
// compte le nombre de formes juridiques
public static function count()
{
return Role::count();
}
// récupère toutes les infos sur les formes juridiques
public static function select_all()
{
return Role::all()->toArray();
}
public static function select_by_id($id)
{
return Role::find($id)->toArray();
}
public static function getWithPermissions($id)
{
$role = Role::find($id)->toArray();
$role['permissions'] = Role::find($id)->permissions->pluck('id')->toArray();
return $role;
}
public static function getAll()
{
return Role::orderBy('name', 'asc')->get();
}
public static function getByName($name)
{
return Role::where('name', $name)->first();
}
public static function get($id)
{
return Role::find($id);
}
public static function getTable($id)
{
$datas = Role::orderBy('name', 'asc');
return Datatables::of($datas)->make(true);
}
public static function getRolesByUser($user_id = false)
{
$user_id = $user_id ? $user_id : Users::getId();
return RoleUser::byUser($user_id);
}
public static function getUsersByRole($id)
{
return RoleUser::byTeam($id)->get();
}
public static function getUsersIdByRole($id)
{
return self::getUsersByRole($id)->pluck('user_id');
}
public static function getOptions()
{
return Role::orderBy('name', 'asc')->get()->pluck('name', 'id')->toArray();
}
public static function setTranslation($name, $translated)
{
$lang = Translate::getLang();
$appli = 1; // ContractDrive
$client = 1; // Client
Translations::setTranslation($name, $translated, $lang, $appli, $client);
}
public static function deleteTranslation($translated)
{
$lang = Translate::getLang();
$appli = 1; // ContractDrive
$client = 1; // Client
Translations::deleteTranslation($translated, $lang, $appli, $client);
}
}

View File

@@ -1,15 +1,15 @@
<?php
namespace App\Repositories;
namespace App\Repositories\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Laratrust\Traits\LaratrustUserTrait;
use Yajra\Datatables\Datatables;
use App\Team;
use App\Models\TeamUser;
use App\Models\Core\Auth\Team;
use App\Models\Core\Auth\TeamUser;
use App\Repositories\Users;
use App\Repositories\Core\User\Users;
class Teams
{

View File

@@ -1,15 +1,14 @@
<?php
namespace App\Repositories;
namespace App\Repositories\Core\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Laratrust\Traits\LaratrustUserTrait;
use App\User;
use App\Models\RoleUser;
use App\Models\Societe;
use App\Models\Hestimmo\Partenaire;
use App\Models\Core\Auth\User;
use App\Models\Core\Auth\RoleUser;
class Users
{
@@ -20,46 +19,6 @@ class Users
return (self::hasRole('admin')) ? true : false;
}
public static function isPartenaire()
{
return (self::hasRole('partenaire')) ? self::getPartenaireId() : false;
}
public static function isPromoteur()
{
return (self::hasRole('promoteur')) ? self::getPromoteurId() : false;
}
public static function isCommercial()
{
return (self::hasRole('commercial')) ? true : false;
}
public static function getPartenaireId($user_id = false)
{
$user_id = $user_id ? $user_id : self::getId();
$partenaire = Partenaire::byUser($user_id)->first();
return $partenaire ? $partenaire->id : null;
}
public static function getPartenaire($user_id = false)
{
$user_id = $user_id ? $user_id : self::getId();
return Societe::partenaireByUser($user_id)->first();
}
public static function getPromoteurId($user_id = false)
{
$user_id = $user_id ? $user_id : self::getId();
return Promoteur::byUser($user_id)->first()->id;
}
public static function getPromoteur($user_id = false)
{
$user_id = $user_id ? $user_id : self::getId();
return Societe::promoteurByUser($user_id)->first();
}
public static function getInfo($id = false)
{
return self::getWithDetail($id);

52
config/activitylog.php Normal file
View File

@@ -0,0 +1,52 @@
<?php
return [
/*
* If set to false, no activities will be saved to the database.
*/
'enabled' => env('ACTIVITY_LOGGER_ENABLED', true),
/*
* When the clean-command is executed, all recording activities older than
* the number of days specified here will be deleted.
*/
'delete_records_older_than_days' => 365,
/*
* If no log name is passed to the activity() helper
* we use this default log name.
*/
'default_log_name' => 'default',
/*
* You can specify an auth driver here that gets user models.
* If this is null we'll use the default Laravel auth driver.
*/
'default_auth_driver' => null,
/*
* If set to true, the subject returns soft deleted models.
*/
'subject_returns_soft_deleted_models' => false,
/*
* This model will be used to log activity.
* It should be implements the Spatie\Activitylog\Contracts\Activity interface
* and extend Illuminate\Database\Eloquent\Model.
*/
'activity_model' => \Spatie\Activitylog\Models\Activity::class,
/*
* This is the name of the table that will be created by the migration and
* used by the Activity model shipped with this package.
*/
'table_name' => 'activity_log',
/*
* This is the database connection that will be used by the migration and
* the Activity model shipped with this package. In case it's not set
* Laravel database.default will be used instead.
*/
'database_connection' => env('ACTIVITY_LOGGER_DB_CONNECTION'),
];

View File

@@ -67,7 +67,7 @@ return [
|
*/
'timezone' => 'UTC',
'timezone' => 'Europe/Paris',
/*
|--------------------------------------------------------------------------
@@ -80,7 +80,7 @@ return [
|
*/
'locale' => 'en',
'locale' => 'fr',
/*
|--------------------------------------------------------------------------

View File

@@ -6,7 +6,7 @@ return [
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => Sebastienheyd\Boilerplate\Models\User::class,
'model' => App\Models\Core\Auth\User::class,
'table' => 'users',
],
],

View File

@@ -1,7 +1,7 @@
<?php
return [
'user' => Sebastienheyd\Boilerplate\Models\User::class,
'role' => Sebastienheyd\Boilerplate\Models\Role::class,
'permission' => Sebastienheyd\Boilerplate\Models\Permission::class,
'user' => App\Models\Core\Auth\User::class,
'role' => App\Models\Core\Auth\Role::class,
'permission' => App\Models\Core\Auth\Permission::class,
];

304
config/googlmapper.php Normal file
View File

@@ -0,0 +1,304 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Enable Mapping
|--------------------------------------------------------------------------
|
| Enable Google mapping.
|
*/
'enabled' => true,
/*
|--------------------------------------------------------------------------
| Google API Key
|--------------------------------------------------------------------------
|
| A Google API key to link Googlmapper to Google's API.
|
*/
'key' => env('GOOGLE_API_KEY', 'AIzaSyAtqWsq5Ai3GYv6dSa6311tZiYKlbYT4mw'),
/*
|--------------------------------------------------------------------------
| Google API version
|--------------------------------------------------------------------------
|
| A Google API version to use with Googlmapper.
|
*/
'version' => env('GOOGLE_API_VERSION', 'quarterly'),
/*
|--------------------------------------------------------------------------
| Region
|--------------------------------------------------------------------------
|
| The region Google API should use required in ISO 3166-1 code format.
|
*/
'region' => 'GB',
/*
|--------------------------------------------------------------------------
| Language
|--------------------------------------------------------------------------
|
| The Language Google API should use required in ISO 639-1 code format.
|
*/
'language' => 'en-gb',
/*
|--------------------------------------------------------------------------
| Asynchronous
|--------------------------------------------------------------------------
|
| Perform the loading and rendering of Googlmapper map asynchronously.
|
*/
'async' => false,
/*
|--------------------------------------------------------------------------
| Location Marker
|--------------------------------------------------------------------------
|
| Automatically add a location marker to the provided location for a
| Googlmapper displayed map.
|
*/
'marker' => true,
/*
|--------------------------------------------------------------------------
| Center Map
|--------------------------------------------------------------------------
|
| Automatically center the Googlmapper displayed map on the provided
| location.
|
*/
'center' => true,
/*
|--------------------------------------------------------------------------
| Locate Users Location
|--------------------------------------------------------------------------
|
| Automatically center the Googlmapper displayed map on the users current
| location.
|
*/
'locate' => false,
/*
|--------------------------------------------------------------------------
| Default Zoom
|--------------------------------------------------------------------------
|
| The default zoom level Googlmapper should use.
|
*/
'zoom' => 8,
/*
|--------------------------------------------------------------------------
| Scroll wheel Zoom
|--------------------------------------------------------------------------
|
| Set if scroll wheel zoom should be used by Googlmapper.
|
*/
'scrollWheelZoom' => true,
/*
|--------------------------------------------------------------------------
| Zoom Control
|--------------------------------------------------------------------------
|
| Set if zoom control should be displayed by Googlmapper.
|
*/
'zoomControl' => true,
/*
|--------------------------------------------------------------------------
| Map Type Control
|--------------------------------------------------------------------------
|
| Set if map type control should be displayed by Googlmapper.
|
*/
'mapTypeControl' => true,
/*
|--------------------------------------------------------------------------
| Scale Control
|--------------------------------------------------------------------------
|
| Set if scale control should be displayed by Googlmapper.
|
*/
'scaleControl' => false,
/*
|--------------------------------------------------------------------------
| Street View Control
|--------------------------------------------------------------------------
|
| Set if street view control should be displayed by Googlmapper.
|
*/
'streetViewControl' => true,
/*
|--------------------------------------------------------------------------
| Rotate Control
|--------------------------------------------------------------------------
|
| Set if rotate control should be displayed by Googlmapper.
|
*/
'rotateControl' => false,
/*
|--------------------------------------------------------------------------
| Fullscreen Control
|--------------------------------------------------------------------------
|
| Set if fullscreen control should be displayed by Googlmapper.
|
*/
'fullscreenControl' => true,
/*
|--------------------------------------------------------------------------
| Map Type
|--------------------------------------------------------------------------
|
| Set the default Googlmapper displayed map type. (ROADMAP|SATELLITE|HYBRID|TERRAIN)
|
*/
'type' => 'ROADMAP',
/*
|--------------------------------------------------------------------------
| Map UI
|--------------------------------------------------------------------------
|
| Should the default Googlmapper displayed map UI be shown.
|
*/
'ui' => true,
/*
|--------------------------------------------------------------------------
| Map Marker
|--------------------------------------------------------------------------
|
| Set the default Googlmapper map marker behaviour.
|
*/
'markers' => [
/*
|--------------------------------------------------------------------------
| Marker Icon
|--------------------------------------------------------------------------
|
| Display a custom icon for markers. (Link to an image)
|
*/
'icon' => '',
/*
|--------------------------------------------------------------------------
| Marker Animation
|--------------------------------------------------------------------------
|
| Display an animation effect for markers. (NONE|DROP|BOUNCE)
|
*/
'animation' => 'NONE',
],
/*
|--------------------------------------------------------------------------
| Map Marker Cluster
|--------------------------------------------------------------------------
|
| Enable default Googlmapper map marker cluster.
|
*/
'cluster' => true,
/*
|--------------------------------------------------------------------------
| Map Marker Cluster
|--------------------------------------------------------------------------
|
| Set the default Googlmapper map marker cluster behaviour.
|
*/
'clusters' => [
/*
|--------------------------------------------------------------------------
| Cluster Icon
|--------------------------------------------------------------------------
|
| Display custom images for clusters using icon path. (Link to an image path)
|
*/
'icon' => '//googlearchive.github.io/js-marker-clusterer/images/m',
/*
|--------------------------------------------------------------------------
| Cluster Size
|--------------------------------------------------------------------------
|
| The grid size of a cluster in pixels.
|
*/
'grid' => 60,
/*
|--------------------------------------------------------------------------
| Cluster Zoom
|--------------------------------------------------------------------------
|
| The maximum zoom level that a marker can be part of a cluster.
|
*/
'zoom' => null,
/*
|--------------------------------------------------------------------------
| Cluster Center
|--------------------------------------------------------------------------
|
| Whether the center of each cluster should be the average of all markers
| in the cluster.
|
*/
'center' => false,
/*
|--------------------------------------------------------------------------
| Cluster Size
|--------------------------------------------------------------------------
|
| The minimum number of markers to be in a cluster before the markers are
| hidden and a count is shown.
|
*/
'size' => 2
],
];

View File

@@ -0,0 +1,38 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateActivityLogTable extends Migration
{
/**
* Run the migrations.
*/
public function up()
{
Schema::connection(config('activitylog.database_connection'))->create(config('activitylog.table_name'), function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('log_name')->nullable();
$table->text('description');
$table->unsignedBigInteger('subject_id')->nullable();
$table->string('subject_type')->nullable();
$table->unsignedBigInteger('causer_id')->nullable();
$table->string('causer_type')->nullable();
$table->json('properties')->nullable();
$table->timestamps();
$table->index('log_name');
$table->index(['subject_id', 'subject_type'], 'subject');
$table->index(['causer_id', 'causer_type'], 'causer');
});
}
/**
* Reverse the migrations.
*/
public function down()
{
Schema::connection(config('activitylog.database_connection'))->dropIfExists(config('activitylog.table_name'));
}
}

View File

@@ -0,0 +1,42 @@
@extends('boilerplate::auth.layout', [
'title' => __('boilerplate::auth.firstlogin.title'),
'bodyClass' => 'hold-transition login-page'
])
@section('content')
@component('boilerplate::auth.loginbox')
{{ Form::open(['route' => 'boilerplate.users.firstlogin', 'autocomplete' => 'off']) }}
<input type="hidden" name="token" value="{{ $token }}">
<div class="alert alert-info">
{{ __('boilerplate::auth.firstlogin.intro') }}
</div>
<div class="form-group">
<div class="input-group">
{{ Form::input('password', 'password', Request::old('password'), ['class' => 'form-control'.$errors->first('password', ' is-invalid'), 'autofocus', 'placeholder' => __('boilerplate::auth.fields.password')]) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
{!! $errors->first('password','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="form-group">
<div class="input-group">
{{ Form::input('password', 'password_confirmation', Request::old('password_confirmation'), ['class' => 'form-control'.$errors->first('password_confirmation', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.password_confirm')]) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
{!! $errors->first('password_confirmation','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="form-group text-center">
<button type="submit" class="btn btn-primary">
{{ __('boilerplate::auth.firstlogin.button') }}
</button>
</div>
</form>
@endcomponent
@endsection

View File

@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="{{ App::getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ $title }} | {{ config('app.name') }}</title>
<link rel="stylesheet" href="{{ mix('/adminlte.min.css', '/assets/vendor/boilerplate') }}">
</head>
<body class="hold-transition {{ $bodyClass ?? 'login-page'}}">
@yield('content')
</body>
</html>

View File

@@ -0,0 +1,55 @@
@extends('boilerplate::auth.layout', [
'title' => __('boilerplate::auth.login.title'),
'bodyClass' => 'hold-transition login-page'
])
@section('content')
@component('boilerplate::auth.loginbox')
<p class="login-box-msg text-sm">{{ __('boilerplate::auth.login.intro') }}</p>
{!! Form::open(['route' => 'boilerplate.login', 'method' => 'post', 'autocomplete'=> 'off']) !!}
<div class="form-group">
<div class="input-group">
{{ Form::email('email', old('email'), ['class' => 'form-control'.$errors->first('email', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.email'), 'required', 'autofocus']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope"></span>
</div>
</div>
</div>
{!! $errors->first('email','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="form-group">
<div class="input-group">
{{ Form::password('password', ['class' => 'form-control'.$errors->first('password', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.password'), 'required']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
{!! $errors->first('password','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="row mb-3">
<div class="col-7">
<div class="icheck-primary">
<input type="checkbox" id="remember" name="remember" {{ old('remember') ? 'checked' : '' }}>
<label for="remember" class="font-weight-normal text-sm">
{{ __('boilerplate::auth.login.rememberme') }}
</label>
</div>
</div>
<div class="col-5">
<button type="submit" class="btn btn-primary btn-block">{{ __('boilerplate::auth.login.signin') }}</button>
</div>
</div>
{!! Form::close() !!}
<p class="mb-1 text-sm">
<a href="{{ route('boilerplate.password.request') }}">{{ __('boilerplate::auth.login.forgotpassword') }}</a><br>
</p>
@if(config('boilerplate.auth.register'))
<p class="mb-0 text-sm">
<a href="{{ route('boilerplate.register') }}" class="text-center">{{ __('boilerplate::auth.login.register') }}</a>
</p>
@endif
@endcomponent
@endsection

View File

@@ -0,0 +1,12 @@
<div class="login-box">
<div class="login-logo">
{!! config('boilerplate.theme.sidebar.brand.logo.icon') ?? '' !!}
{!! config('boilerplate.theme.sidebar.brand.logo.text') ?? $title ?? '' !!}
</div>
<div class="card">
<div class="card-body login-card-body">
{{ $slot }}
</div>
</div>
</div>

View File

@@ -0,0 +1,44 @@
@extends('boilerplate::auth.layout', ['title' => __('boilerplate::auth.password.title'), 'bodyClass' => 'hold-transition login-page'])
@section('content')
@component('boilerplate::auth.loginbox')
<p class="login-box-msg text-sm">{{ __('boilerplate::auth.password.intro') }}</p>
@if (session('status'))
<div class="alert alert-success d-flex align-items-center">
<span class="far fa-check-circle fa-3x mr-3"></span>
{{ session('status') }}
</div>
@else
{!! Form::open(['route' => 'boilerplate.password.email', 'method' => 'post', 'autocomplete'=> 'off']) !!}
<div class="form-group">
<div class="input-group">
{{ Form::email('email', old('email'), ['class' => 'form-control'.$errors->first('email', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.email'), 'required', 'autofocus']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope"></span>
</div>
</div>
</div>
{!! $errors->first('email','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="form-group">
<div class="row">
<div class="col-12 text-right">
<button type="submit" class="btn btn-primary">
{{ __('boilerplate::auth.password.submit') }}
</button>
</div>
</div>
</div>
{!! Form::close() !!}
@endif
<p class="mb-0 text-sm">
<a href="{{ route('boilerplate.login') }}">{{ __('boilerplate::auth.password.login_link') }}</a>
</p>
@if(config('boilerplate.auth.register'))
<p class="mb-0 text-sm">
<a href="{{ route('boilerplate.register') }}" class="text-center">{{ __('boilerplate::auth.login.register') }}</a>
</p>
@endif
@endcomponent
@endsection

View File

@@ -0,0 +1,48 @@
@extends('boilerplate::auth.layout', ['title' => __('boilerplate::auth.password_reset.title')])
@section('content')
@component('boilerplate::auth.loginbox')
<p class="login-box-msg text-sm">{{ __('boilerplate::auth.password_reset.intro') }}</p>
{!! Form::open(['route' => 'boilerplate.password.reset.post', 'method' => 'post', 'autocomplete'=> 'off']) !!}
{!! Form::hidden('token', $token) !!}
<div class="form-group">
<div class="input-group">
{{ Form::email('email', old('email', $email), ['class' => 'form-control'.$errors->first('email', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.email'), 'required', 'autofocus']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope"></span>
</div>
</div>
</div>
{!! $errors->first('email','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="form-group">
<div class="input-group">
{{ Form::password('password', ['class' => 'form-control'.$errors->first('password', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.password'), 'required']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
{!! $errors->first('password','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="form-group">
<div class="input-group">
{{ Form::password('password_confirmation', ['class' => 'form-control'.$errors->first('password_confirmation', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.password_confirm'), 'required']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
{!! $errors->first('password_confirmation','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="row">
<div class="col-12 text-center">
<button class="btn btn-primary" type="submit">{{ __('boilerplate::auth.password_reset.submit') }}</button>
</div>
</div>
{!! Form::close() !!}
@endcomponent
@endsection

View File

@@ -0,0 +1,76 @@
@extends('boilerplate::auth.layout', ['title' => __('boilerplate::auth.register.title'), 'bodyClass' => 'hold-transition login-page'])
@section('content')
@component('boilerplate::auth.loginbox')
<p class="login-box-msg text-sm">{{ __('boilerplate::auth.register.intro') }}</p>
{!! Form::open(['route' => 'boilerplate.register', 'method' => 'post', 'autocomplete'=> 'off']) !!}
<div class="mb-3">
<div class="input-group">
{{ Form::text('first_name', old('first_name'), ['class' => 'form-control'.$errors->first('first_name', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.first_name'), 'required', 'autofocus']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user"></span>
</div>
</div>
</div>
{!! $errors->first('first_name','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="mb-3">
<div class="input-group">
{{ Form::text('last_name', old('last_name'), ['class' => 'form-control'.$errors->first('last_name', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.last_name'), 'required']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user"></span>
</div>
</div>
</div>
{!! $errors->first('last_name','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="mb-3">
<div class="input-group">
{{ Form::email('email', old('email'), ['class' => 'form-control'.$errors->first('email', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.email'), 'required']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope"></span>
</div>
</div>
</div>
{!! $errors->first('email','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="mb-3">
<div class="input-group">
{{ Form::password('password', ['class' => 'form-control'.$errors->first('password', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.password'), 'required']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
{!! $errors->first('password','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="mb-3">
<div class="input-group">
{{ Form::password('password_confirmation', ['class' => 'form-control'.$errors->first('password_confirmation', ' is-invalid'), 'placeholder' => __('boilerplate::auth.fields.password_confirm'), 'required']) }}
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
{!! $errors->first('password_confirmation','<div class="error-bubble"><div>:message</div></div>') !!}
</div>
<div class="mb-3">
<div class="col-12 text-right">
<button type="submit" class="btn btn-primary">
{{ __('boilerplate::auth.register.register_button') }}
</button>
</div>
</div>
{!! Form::close() !!}
@if(!$firstUser)
<p class="mb-0 text-sm">
<a href="{{ route('boilerplate.login') }}">{{ __('boilerplate::auth.register.login_link') }}</a><br>
</p>
@endif
@endcomponent
@endsection

View File

@@ -0,0 +1,24 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Verify Your Email Address') }}</div>
<div class="card-body">
@if (session('resent'))
<div class="alert alert-success" role="alert">
{{ __('A fresh verification link has been sent to your email address.') }}
</div>
@endif
{{ __('Before proceeding, please check your email for a verification link.') }}
{{ __('If you did not receive the email') }}, <a href="{{ route('verification.resend') }}">{{ __('click here to request another') }}</a>.
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,32 @@
<?php
return [
'title' => 'Résidences',
'name' => 'Référence',
'parameters' => 'Paramètres',
'label' => 'Libellé',
'description' => 'Description',
'savebutton' => 'Enregistrer',
'sections' => [
'title' => 'Gestion des catégories',
'description' => 'Gérer les catégories',
'add' => 'Ajouter une catégorie',
'edit' => 'Editer une catégorie',
'del' => 'Effacer une catégorie',
'list' => [
'title' => 'Liste des catégories',
],
'successadd' => 'La catégorie a été correctement ajoutée',
'successmod' => 'La catégorie a été correctement modifiée',
'successdel' => 'La catégorie a été correctement effacée',
'confirmdelete' => 'Confirmez-vous la suppression de la catégorie ?',
],
'products' => [
'title' => 'Gestion des produits',
'description' => 'Gérer les produits',
],
'customers' => [
'title' => "Gestion des clients",
'description' => 'Gérer les clients',
],
];

View File

@@ -3,6 +3,8 @@
'bodyClass' => 'hold-transition login-page'
])
@include('boilerplate::load.icheck')
@prepend('js')
@include('components.js.ie11')
@include('components.js', ['js' => '/js/main.min.js'])

View File

@@ -1,3 +1,3 @@
<button @if (isset($type))type="{{ $type }}"@else type="submit"@endif class="btn btn-primary save @if (isset($class)){{ $class }}@endif" @if (isset($id_name)) id="{{ $id_name }}"@endif>
<button @if (isset($type))type="{{ $type }}"@else type="submit"@endif class="btn btn-success save @if (isset($class)){{ $class }}@endif" @if (isset($id_name)) id="{{ $id_name }}"@endif>
<i class="fa fa-fw fa-save"></i> Enregistrer
</button>

View File

@@ -1,7 +1,7 @@
@extends('layouts.site', [
'title' => 'Banques',
'subtitle' => 'Liste des banques',
'breadcrumb' => ['Banques']
'title' => 'Accueil',
'subtitle' => '',
'breadcrumb' => ['Accueil']
])
@section('content')

View File

@@ -1,24 +1,34 @@
<h1>
{{ $title }}
@if(isset($subtitle))
<small>{{ $subtitle }}</small>
@endif
</h1>
<ol class="breadcrumb">
<li>
<a href="{{ route('boilerplate.dashboard') }}">
<i class="fa fa-home"></i> {{ __('boilerplate::layout.home') }}
</a>
</li>
@if(isset($breadcrumb))
@foreach($breadcrumb as $label => $route)
@if(is_numeric($label))
<li class="active">{{ $route }}</li>
@elseif(is_array($route))
<li><a href="{{ route($route[0], $route[1]) }}">{{ $label }}</a></li>
@else
<li><a href="{{ route($route) }}">{{ $label }}</a></li>
@endif
@endforeach
@endif
</ol>
<div class="content-header pt-2 pb-1">
<div class="container-fluid">
<div class="row mb-2 align-items-end">
<div class="col-sm-6">
<h1 class="m-0 text-dark">
{{ $title }}
@if(isset($subtitle))
<small class="font-weight-light ml-1 text-md">{{ $subtitle }}</small>
@endif
</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right text-sm">
<li class="breadcrumb-item">
<a href="{{ route('boilerplate.dashboard') }}">
{{ __('boilerplate::layout.home') }}
</a>
</li>
@if(isset($breadcrumb))
@foreach($breadcrumb as $label => $route)
@if(is_numeric($label))
<li class="breadcrumb-item active">{{ $route }}</li>
@elseif(is_array($route))
<li class="breadcrumb-item"><a href="{{ route($route[0], $route[1]) }}">{{ $label }}</a></li>
@else
<li class="breadcrumb-item"><a href="{{ route($route) }}">{{ $label }}</a></li>
@endif
@endforeach
@endif
</ol>
</div>
</div>
</div>
</div>

View File

@@ -1,12 +1,18 @@
<footer class="main-footer">
<strong>
Made by
@if(config('boilerplate.app.vendorlink'))
<a href="{{ config('boilerplate.app.vendorlink') }}">
{!! config('boilerplate.app.vendorname') !!}
</a>.
@else
{!! config('boilerplate.app.vendorname') !!}.
@endif
</strong>
<footer class="main-footer text-sm">
<strong>
&copy; {{ date('Y') }}
@if(config('boilerplate.theme.footer.vendorlink'))
<a href="{{ config('boilerplate.theme.footer.vendorlink') }}">
{!! config('boilerplate.theme.footer.vendorname') !!}
</a>.
@else
{!! config('boilerplate.theme.footer.vendorname') !!}.
@endif
</strong>
{{ __('boilerplate::layout.rightsres') }}
<div class="float-right d-none d-sm-inline">
<a href="https://github.com/sebastienheyd/boilerplate">
Boilerplate
</a>
</div>
</footer>

View File

@@ -1,30 +1,30 @@
<header class="main-header">
<a href="{{ route('boilerplate.dashboard') }}" class="logo">
<span class="logo-mini"></span>
<span class="logo-lg"></span>
</a>
<nav class="navbar navbar-static-top">
<a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
<span class="sr-only">Toggle</span>
</a>
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<li>
<a href="{{ route('boilerplate.user.profile') }}">
<img src="{{ Auth::user()->avatar_url }}" class="user-image avatar" alt="User Image"/>
<span class="hidden-xs">{{ Auth::user()->name }}</span>
</a>
</li>
<li>
<a href="{{ route('boilerplate.logout') }}" class="logout">
<span class="hidden-xs">
<span class="fa fa-power-off"></span> {{ __('boilerplate::layout.logout') }}
</span>
</a>
{!! Form::open(['route' => 'boilerplate.logout', 'method' => 'post', 'id' => 'logout-form', 'style'=> 'display:none']) !!}
{!! Form::close() !!}
</li>
</ul>
</div>
</nav>
</header>
<nav class="main-header navbar navbar-expand navbar-{{ config('boilerplate.theme.navbar.bg') }} navbar-{{ config('boilerplate.theme.navbar.type') }} {{ config('boilerplate.theme.navbar.border') ? "" : "border-bottom-0" }}">
<ul class="nav navbar-nav">
<li class="nav-item">
<a class="nav-link sidebar-toggle" data-widget="pushmenu" href="#"><i class="fas fa-bars"></i></a>
</li>
@foreach(app('boilerplate.navbar.items')->getItems('left') as $view)
@include($view)
@endforeach
</ul>
<ul class="nav navbar-nav ml-auto d-flex">
@if(config('boilerplate.theme.navbar.user.visible'))
<li class="nav-item">
<a href="{{ route('boilerplate.user.profile') }}" class="nav-link d-flex align-items-center">
<img src="{{ Auth::user()->avatar_url }}" class="avatar-img img-circle bg-gray mr-2 elevation-{{ config('boilerplate.theme.navbar.user.shadow') }}" alt="{{ Auth::user()->name }}" height="32">
{{ Auth::user()->name }}
</a>
</li>
@endif
@foreach(app('boilerplate.navbar.items')->getItems('right') as $view)
@include($view)
@endforeach
<li class="nav-item">
{!! Form::open(['route' => 'boilerplate.logout', 'method' => 'post', 'id' => 'logout-form']) !!}
<button type="submit" class="btn nav-link d-flex align-items-center logout" data-question="{{ __('boilerplate::layout.logoutconfirm') }}" data-toggle="tooltip" title="{{ __('boilerplate::layout.logout') }}">
<span class="fa fa-power-off hidden-xs pr-1"></span>
</button>
{!! Form::close() !!}
</li>
</ul>
</nav>

View File

@@ -7,44 +7,56 @@
<meta name="robots" content="noindex, nofollow">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ $title }} | {{ config('app.name') }}</title>
<link rel="stylesheet" href="/assets/vendor/boilerplate/boilerplate.min.css">
<link rel="stylesheet" href="{{ mix('/adminlte.min.css', '/assets/vendor/boilerplate') }}">
@stack('css')
</head>
<body class="sidebar-mini skin-{{ config('boilerplate.app.skin', 'blue') }}">
<body class="layout-fixed layout-navbar-fixed sidebar-mini">
<div class="wrapper">
@include('layout.header')
@include('boilerplate::layout.mainsidebar')
<div class="content-wrapper">
<section class="content-header">
@include('layout.contentheader')
</section>
@include('layout.contentheader')
<section class="content">
@yield('content')
<div class="container-fluid">
@yield('content')
</div>
</section>
</div>
@include('layout.footer')
@includeWhen(config('boilerplate.theme.footer.visible', true), 'layout.footer')
<aside class="control-sidebar control-sidebar-{{ config('boilerplate.theme.sidebar.type') }} elevation-{{ config('boilerplate.theme.sidebar.shadow') }}">
<button class="btn btn-sm" data-widget="control-sidebar"><span class="fa fa-times"></span></button>
<div class="control-sidebar-content">
<div class="p-3">
@yield('right-sidebar')
</div>
</div>
</aside>
<div class="control-sidebar-bg"></div>
</div>
<script src="{{ mix('/bootstrap.min.js', '/assets/vendor/boilerplate') }}"></script>
<script src="{{ mix('/admin-lte.min.js', '/assets/vendor/boilerplate') }}"></script>
<script src="{{ mix('/boilerplate.min.js', '/assets/vendor/boilerplate') }}"></script>
<script>
$(function() {
$.ajaxSetup({headers:{'X-CSRF-TOKEN':'{{ csrf_token() }}'}});
bootbox.setLocale("{{ App::getLocale() }}");
@if(Session::has('growl'))
$.ajaxSetup({headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}'}});
bootbox.setLocale('{{ App::getLocale() }}');
var session = {
keepalive: "{{ route('boilerplate.keepalive', null, false) }}",
expire: {{ time() + config('session.lifetime') * 60 }},
lifetime: {{ config('session.lifetime') * 60 }},
id: "{{ session()->getId() }}"
}
</script>
@if(Session::has('growl'))
<script>
$(function() {
@if(is_array(Session::get('growl')))
growl("{!! Session::get('growl')[0] !!}", "{{ Session::get('growl')[1] }}");
@else
growl("{{Session::get('growl')}}");
@endif
@endif
$('.logout').click(function(e){
e.preventDefault();
if(bootbox.confirm("{{ __('boilerplate::layout.logoutconfirm') }}", function(e){
if(e === false) return;
$('#logout-form').submit();
}));
});
});
</script>
</script>
@endif
@stack('js')
</body>
</html>

View File

@@ -1,18 +1,23 @@
<aside class="main-sidebar">
<section class="sidebar" style="height: auto;">
<div class="user-panel">
<div class="pull-left image">
<a href="{{ route('boilerplate.user.profile') }}">
<img src="{{ Auth::user()->avatar_url }}" class="img-circle avatar" alt="{{ Auth::user()->name }}"/>
</a>
<aside class="main-sidebar {{ config('boilerplate.theme.sidebar.border') ? 'border-right' : ''}} sidebar-{{ config('boilerplate.theme.sidebar.type') }}-{{ config('boilerplate.theme.sidebar.links.bg') }} elevation-{{ config('boilerplate.theme.sidebar.shadow') }}">
<a href="{{ route('boilerplate.dashboard') }}" class="brand-link {{ !empty(config('boilerplate.theme.sidebar.brand.bg')) ? 'bg-'.config('boilerplate.theme.sidebar.brand.bg') : ''}}">
<span class="brand-logo bg-{{ config('boilerplate.theme.sidebar.brand.logo.bg') }} elevation-{{ config('boilerplate.theme.sidebar.brand.logo.shadow') }}">
{!! config('boilerplate.theme.sidebar.brand.logo.icon') !!}
</span>
<span class="brand-text">{!! config('boilerplate.theme.sidebar.brand.logo.text') !!}</span>
</a>
<div class="sidebar">
@if(config('boilerplate.theme.sidebar.user.visible'))
<div class="user-panel py-3 d-flex">
<div class="image">
<img src="{{ Auth::user()->avatar_url }}" class="avatar-img img-circle elevation-{{ config('boilerplate.theme.sidebar.user.shadow') }}" alt="{{ Auth::user()->name }}">
</div>
<div class="info">
<a href="{{ route('boilerplate.user.profile') }}" class="d-block">{{ Auth::user()->name }}</a>
</div>
</div>
<div class="pull-left info">
<p>{{ Auth::user()->name }}</p>
<a href="{{ route('boilerplate.logout') }}" class="logout">
<i class="fa fa-circle text-success"></i> {{ __('boilerplate::layout.online') }}
</a>
</div>
</div>
{!! $menu !!}
</section>
</aside>
@endif
<nav class="mt-3">
{!! $menu !!}
</nav>
</div>
</aside>

View File

@@ -35,7 +35,7 @@
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{ route('boilerplate.dashboard') }}"><i class="fa fa-cog"></i> Accès à l'administration</a>
<a class="dropdown-item" href="{{ route('admin') }}"><i class="fa fa-cog"></i> Accès à l'administration</a>
<a class="dropdown-item" href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
Déconnexion

View File

@@ -1,13 +1,13 @@
<div class="row">
<div class="col-md-3 col-sm-6 col-xs-12">
<a href="{!! route('Shop.Admin.Orders.index') !!}">
@include('shop.admin.Dashboard.components.infobox', ['count' => (isset($nb_lots_envente)) ? $nb_lots_envente : 0, 'class' => 'bg-aqua', 'icon' => 'fa-building-o', 'text' => 'Lots disponibles'])
@include('shop.admin.Dashboard.components.infobox', ['count' => (isset($nb_orders)) ? $nb_orders : 0, 'class' => 'bg-aqua', 'icon' => 'fa-building-o', 'text' => 'Commandes'])
</a>
</div>
<!-- /.col -->
<div class="col-md-3 col-sm-6 col-xs-12">
<a href="{!! route('Shop.Admin.Invoices.index') !!}">
@include('shop.admin.Dashboard.components.infobox', ['count' => (isset($nb_lots_optionne)) ? $nb_lots_optionne : 0, 'class' => 'bg-red', 'icon' => 'fa-clock-o', 'text' => 'Options'])
@include('shop.admin.Dashboard.components.infobox', ['count' => (isset($nb_invoices)) ? $nb_invoices : 0, 'class' => 'bg-red', 'icon' => 'fa-clock-o', 'text' => 'Factures'])
</a>
</div>
<!-- /.col -->
@@ -17,13 +17,13 @@
<div class="col-md-3 col-sm-6 col-xs-12">
<a href="{!!route('Shop.Admin.Orders.index') !!}">
@include('shop.admin.Dashboard.components.infobox', ['count' => (isset($nb_dossiers_encours)) ? $nb_dossiers_encours : 0, 'class' => 'bg-yellow', 'icon' => 'fa-hourglass-start', 'text' => 'Dossiers en cours'])
@include('shop.admin.Dashboard.components.infobox', ['count' => (isset($nb_dossiers_encours)) ? $nb_dossiers_encours : 0, 'class' => 'bg-yellow', 'icon' => 'fa-hourglass-start', 'text' => 'CA du mois'])
</a>
</div>
<!-- /.col -->
<div class="col-md-3 col-sm-6 col-xs-12">
<a href="{!! route('Shop.Admin.Orders.index') !!}">
@include('shop.admin.Dashboard.components.infobox', ['count' => (isset($nb_ventes)) ? $nb_ventes : 0, 'class' => 'bg-green', 'icon' => 'fa-check-square-o', 'text' => 'Ventes'])
@include('shop.admin.Dashboard.components.infobox', ['count' => (isset($nb_ventes)) ? $nb_ventes : 0, 'class' => 'bg-green', 'icon' => 'fa-check-square-o', 'text' => 'Panier moyen'])
</a>
</div>
<!-- /.col -->

View File

@@ -1,38 +0,0 @@
@extends('layout.index', [
'title' => __('lots.title'),
'subtitle' => __('lots.create.title'),
'breadcrumb' => [__('lots.title'), __('lots.create.title')]
])
@include('boilerplate::load.icheck')
@include('boilerplate::load.fileinput')
@prepend('js')
@include('components.js', ['js' => '/js/main.min.js'])
@endprepend
@push('css')
@include('components.css', ['css' => '/css/main.min.css'])
@endpush
@section('content')
{{ Form::open(['route' => 'Hestimmo.Lots.store', 'id' => 'lot-form', 'autocomplete' => 'off', 'files' => true]) }}
<div class="row">
<div class="col-sm-12 mbl">
<a href="{{ route("Hestimmo.Lots.index") }}" class="btn btn-default">
{{ __('lots.list.title') }}
</a>
<span class="btn-group pull-right">
@include('components.button-save')
</span>
</div>
</div>
@include('Hestimmo.modules.Lot.lot_form')
</form>
@endsection

View File

@@ -1,94 +0,0 @@
@extends('layout.index', [
'title' => __('lots.title'),
'subtitle' => __('lots.list.title'),
'breadcrumb' => [__('lots.title')]
])
@section('content')
<div class="box">
<div class="box-body">
<table class="table table-striped table-hover va-middle" id="lot-table">
<thead>
<tr>
<th>
@include('components.select', ['name' => 'statut', 'class' => 'form-control-sm', 'style' => 'padding: 2px;', 'list' => $type_lot_statuts])
</th>
<th>
@include('components.select', ['name' => 'type_dispositif', 'class' => 'form-control-sm', 'style' => 'padding: 2px;', 'list' => $type_dispositifs])
</th>
<th>
@include('components.select', ['name' => 'residence', 'class' => 'form-control-sm', 'style' => 'padding: 2px;', 'list' => $residences])
</th>
<th style="max-width: 120px;">
<input type="text" class="form-control-sm" style="max-width: 100px;">
</th>
<th>
@include('components.select', ['name' => 'type_lot', 'class' => 'form-control-sm', 'style' => 'padding: 2px;', 'list' => $type_lots])
</th>
<th style="min-width: 100px;">
<input type="text" class="form-control-sm" style="max-width: 80px;">
</th>
<th style="min-width: 160px; max-width: 160px;">
</th>
<th style="max-width: 120px;">
<input type="text" class="form-control-sm" style="max-width: 100px;">
</th>
<th style="max-width: 120px;">
<input type="text" class="form-control-sm" style="max-width: 100px;">
</th>
<th style="max-width: 120px;">
<input type="text" class="form-control-sm" style="max-width: 100px;">
</th>
<th style="max-width: 120px;">
<input type="text" class="form-control-sm" style="max-width: 100px;">
</th>
<th style="max-width: 120px;">
<input type="text" class="form-control-sm" style="max-width: 100px;">
</th>
<th style="max-width: 120px;">
<input type="text" class="form-control-sm" style="max-width: 100px;">
</th>
<th style="max-width: 120px;">
<input type="text" class="form-control-sm" style="max-width: 100px;">
</th>
<th>
</th>
</tr>
<tr>
<th>Statut</th>
<th>Dispositif</th>
<th>Résidence</th>
<th>Référence</th>
<th>Type</th>
<th>Surface</th>
<th>Surface Ext.</th>
<th>Prix total</th>
<th>Prix achat</th>
<th>Package</th>
<th>F. Notaire</th>
<th>F. Bancaire</th>
<th>Loyer logement</th>
<th>Loyer stat.</th>
<th style="min-width: 82px; max-width: 82px;"></th>
</tr>
</thead>
</table>
</div>
</div>
@endsection
@prepend('js')
@include('components.js.ie11')
@include('components.js', ['js' => '/js/laroute.js'])
@include('components.js', ['js' => '/js/main.min.js'])
@include('components.js', ['js' => '/js/datatables.min.js'])
@endprepend
@push('js')
@include('components.js', ['js' => '/js/lot_index.min.js'])
@endpush
@push('css')
@include('components.css', ['css' => '/css/main.min.css'])
@include('components.css', ['css' => '/css/datatables.min.css'])
@endpush

View File

@@ -1,73 +0,0 @@
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active">
<a href="#lot-renseignement" data-toggle="tab" aria-expanded="true">
Renseignement
</a>
</li>
<li>
<a href="#lot-documentation" data-toggle="tab" aria-expanded="true">
Documentations
@if(isset($documents_count))<span class="badge">{{ $documents_count }}</span>@endif
</a>
</li>
<li>
<a href="#lot-photo" id="lot-photo-tab" data-toggle="tab" aria-expanded="true">
Photos
@if(isset($photos_count))<span class="badge">{{ $photos_count }}</span>@endif
</a>
</li>
<li>
<a href="#lot-option" id="lot-option-tab" data-toggle="tab" aria-expanded="true">
Options
</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="lot-renseignement">
@include('Hestimmo.modules.Lot.partials.edit-renseignement')
</div>
<div class="tab-pane" id="lot-documentation">
@include('Hestimmo.modules.Lot.partials.edit-documentation')
</div>
<div class="tab-pane" id="lot-photo">
@include('Hestimmo.modules.Lot.partials.edit-photo')
</div>
<div class="tab-pane" id="lot-option">
@include('Hestimmo.modules.Lot.partials.edit-option')
</div>
</div>
</div>
@push('js')
@include('components.js', ['js' => '/js/laroute.js'])
<script>
$('.editor').summernote({
lang: 'fr-FR',
height: 120,
toolbar: [
// [groupName, [list of button]]
['style', ['bold', 'italic', 'underline', 'clear']],
['font', ['strikethrough', 'superscript', 'subscript']],
['fontsize', ['fontsize']],
['para', ['ul', 'ol', 'paragraph']],
['color', ['color']],
]
});
$('.save').click(function() {
$(this).prop('disabled', true);
$(this).html('en cours...');
$( "#lot-form" ).submit();
return true;
})
</script>
<!-- Include Google Maps JS API -->
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=places&amp;key={{ env('GOOGLE_GEOLOCATION_API_KEY') }}"></script>
<script type="text/javascript" src="/js/geo_autocomplete.js"></script>
@endpush

View File

@@ -1,125 +0,0 @@
@extends('layout.index', [
'title' => __('lots.title'),
'subtitle' => __('lots.demande.title'),
'breadcrumb' => [__('lots.demande.title')]
])
@section('content')
{{ Form::open(['route' => 'Hestimmo.Lots.disponibles', 'id' => 'lot-form', 'autocomplete' => 'off']) }}
<div class="row">
<div class="col-md-offset-2 col-md-8">
<div class="box box-info">
<div class="box-body">
<div class="col-xs-12 col-md-4">
<div class="form-group">
<select name="type_produit_id" class="form-control">
<option>Type de produits</option>
@foreach($type_produits as $key => $type_produit)
<option value="{{$key}}">{{$type_produit}}</option>
@endforeach
</select>
</div>
<div class="form-group">
<select name="type_lot_id" class="form-control">
<option>Type de lots</option>
@foreach($type_lots as $key => $type_lot)
<option value="{{$key}}">{{$type_lot}}</option>
@endforeach
</select>
</div>
<div class="form-group">
<select name="ville" id="ville" class="form-control" placeholder="Ville"></select>
</div>
<div class="form-group">
<input type="number" style="width: 100%;" id="distance" name="distance" data-provide="slider" data-slider-min="0" data-slider-max="40" data-slider-step="5" >
</div>
<div class="form-group">
Distance : <span id="distanceSliderVal">5</span> km
</div>
</div>
<div class="col-xs-12 col-md-8">
<div class="form-group">
<label class="col-sm-12">Budget</label>
<div class="col-sm-12">
<div class="form-group">
<input type="number" style="width: 100%;" id="budget" name="budget" data-provide="slider" data-slider-min="10000" data-slider-max="1000000" data-slider-step="10000" >
</div>
<div class="small-box bg-aqua">
<div class="inner">
<h3 id="budgetSliderVal">10 000</h3>
<p>Montant +/- 5000 </p>
</div>
<div class="icon">
<i class="fa fa-eur"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row text-center">
<button type="submit" class="btn btn-info">Rechercher</button>
<p></p>
</div>
</div>
</div>
</div>
</form>
@include('Hestimmo.modules.Lot.partials.list-mini')
@endsection
@include('boilerplate::load.datatables')
@include('boilerplate::load.select2')
@push('js')
<script src="/js/bootstrap-slider.min.js"></script>
<script>
$(function () {
var mySlider = $("input.slider").slider();
$("#budget").on("slide", function(slideEvt) {
$("#budgetSliderVal").text(slideEvt.value);
});
$("#distance").on("slide", function(slideEvt) {
$("#distanceSliderVal").text(slideEvt.value);
});
$('#ville').select2({
ajax: {
url: "{{ route('Villes.autocomplete') }}",
data: function (params) {
var query = {
search: params.term
}
// Query parameters will be ?search=[term]&type=public
return query;
}
}
});
});
</script>
@endpush
@push('css')
<link rel="stylesheet" href="/css/bootstrap-slider.min.css">
@endpush

View File

@@ -0,0 +1,22 @@
@extends('boilerplate::layout.index', [
'title' => __('shop.sections.title'),
'subtitle' => __('shop.sections.add'),
'breadcrumb' => [__('shop.sections.title'), __('shop.sections.add')]
])
@include('boilerplate::load.fileinput')
@section('content')
{{ Form::open(['route' => 'Shop.Admin.Sections.store', 'id' => 'form', 'autocomplete' => 'off', 'files' => true]) }}
<div class="row">
<div class="col-12 text-right">
@include('components.button-save')
</div>
</div>
@include('Shop.Admin.Sections.form')
</form>
@endsection

View File

@@ -0,0 +1,38 @@
<div class="row">
<div class="col-md-8">
{{ Form::label('name', 'Nom') }}
@include('components.input', ['name' => 'name', 'value' => (isset($section['name'])) ? $section['name'] : null, 'required' => true])
{{ Form::label('description', 'Description') }}
@include('components.textarea', ['name' => 'description', 'id_name' => 'description', 'value' => (isset($section['description'])) ? $section['description'] : null, 'required' => true])
{{ Form::label('description', 'Rubrique parente') }}
</div>
<div class="col-md-4">
<div class="row">
<div class="col-md-12 row-new-lot-photo row-lot-photo mt-3">
<!--
<p>
<button type="button" class="btn btn-danger delete-new-lot-photo-btn"><i class="fa fa-minus-circle"></i></button>
Photo <span class="row-photo-number"></span>
</p>
-->
<input name="lot_photos[][file]" type="file" class="file" data-show-upload="false" data-show-caption="true" data-msg-placeholder="Choisissez une photo">
</div>
</div>
</div>
@include('boilerplate::load.tinymce')
@push('js')
<script>
$(function() {
$('#description').tinymce({});
})
</script>
@endpush

View File

@@ -0,0 +1,46 @@
@extends('boilerplate::layout.index', [
'title' => __('shop.sections.title'),
'breadcrumb' => [__('shop.sections.title')]
])
@section('content')
<div class="box">
<div class="box-body">
<table class="table table-striped table-hover va-middle" id="section-table">
<thead>
<tr>
<th>
<input type="text" class="form-control-sm" style="max-width: 100px;">
</th>
<th>
</th>
<th class="text-right">
<a href="{{ route('Shop.Admin.Sections.create') }}" class="btn btn-sm btn-success">{{ __('shop.sections.add') }} <i class="fa fa-plus"></i></a>
</th>
</tr>
<tr>
<th>Nom</th>
<th>Nb produits</th>
<th></th>
</tr>
</thead>
</table>
</div>
</div>
@endsection
@prepend('js')
@include('components.js.ie11')
@include('components.js', ['js' => '/js/laroute.js'])
@include('components.js', ['js' => '/js/main.min.js'])
@include('components.js', ['js' => '/js/datatables.min.js'])
@endprepend
@push('js')
@include('components.js', ['js' => '/js/section_index.min.js'])
@endpush
@push('css')
@include('components.css', ['css' => '/css/main.min.css'])
@include('components.css', ['css' => '/css/datatables.min.css'])
@endpush

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