Compare commits

...

15 Commits

Author SHA1 Message Date
faa2e77a46 uni size 2025-08-22 12:25:20 +05:45
f55aeec8e8 flex footer 2025-08-22 11:53:59 +05:45
5f8c1aed38 Merge branch 'main' of ssh://bibgit.com:22022/Bibhuti-Solutions/new_raffles into alika 2025-08-22 11:51:18 +05:45
10b549315f social platform link 2025-08-22 11:51:06 +05:45
724f46a82c fixes 2025-08-22 11:45:38 +05:45
1a744e1e2f fix 2025-08-22 11:36:34 +05:45
0652a07452 feat: Add galleries data to page views and update templates for dynamic content 2025-08-22 11:35:47 +05:45
d966b75f56 fix: Update image asset paths and modify event loop to display previous events 2025-08-22 11:26:50 +05:45
bce7ec8d3a error fix 2025-08-22 11:17:01 +05:45
31bea937c4 feat: Add functions to retrieve previous and upcoming events; update events template to display dynamic event data 2025-08-22 11:15:13 +05:45
711ae9caf9 feat: Implement Event management features including CRUD operations and routing 2025-08-22 11:03:10 +05:45
ce09f98c55 feat: Add franchise and newsletter routes; update CSR template layout 2025-08-22 10:14:26 +05:45
d29b3ba489 Add Franchise and Newsletter management features
- Implemented FranchiseController with CRUD operations and data handling.
- Created NewsletterController for managing newsletter subscriptions.
- Added routes for Franchise and Newsletter resources in web.php.
- Developed views for Franchise and Newsletter management including index, create, edit, and datatable actions.
- Introduced form handling and validation for Franchise and Newsletter submissions.
- Created database migrations for franchises and newsletters tables.
- Updated sidebar configuration to include Franchise and Newsletter sections.
- Enhanced client-side forms with AJAX submission for Franchise and Newsletter.
2025-08-21 23:23:38 +05:45
7f9d6bc8ec Merge branch 'alika' of http://bibgit.com/Subash/new_raffles 2025-08-21 22:15:42 +05:45
2a2222d0c6 social platform route 2025-08-21 17:29:08 +05:45
40 changed files with 1832 additions and 568 deletions

View File

@@ -0,0 +1,147 @@
<?php
namespace Modules\CCMS\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Modules\CCMS\Models\Event;
use Yajra\DataTables\Facades\DataTables;
class EventController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
if (request()->ajax()) {
$model = Event::query()->orderBy('order');
return DataTables::eloquent($model)
->addIndexColumn()
->setRowClass('tableRow')
->editColumn('image', function (Event $event) {
return $event->getRawOriginal('image') ? "<img src='{$event->image}' alt='{$event->title}' class='rounded avatar-sm material-shadow ms-2 img-thumbnail'>" : '-';
})
->editColumn('parent_id', function (Event $event) {
return $event->parent ? "<span class='badge bg-primary p-1'>{$event->parent?->title}</span>" : '-';
})
->editColumn('status', function (Event $event) {
$status = $event->status ? 'Published' : 'Draft';
$color = $event->status ? 'text-success' : 'text-danger';
return "<p class='{$color}'>{$status}</p>";
})
->addColumn('action', 'ccms::event.datatable.action')
->rawColumns(['parent_id', 'image', 'status', 'action'])
->toJson();
}
return view('ccms::event.index', [
'title' => 'Event List',
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$eventOptions = Event::where('status', 1)->pluck('title', 'id');
return view('ccms::event.create', [
'title' => 'Create Event',
'editable' => false,
'eventOptions' => $eventOptions
]);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$maxOrder = Event::max('order');
$order = $maxOrder ? ++$maxOrder : 1;
$request->mergeIfMissing([
'slug' => Str::slug($request->title),
'order' => $order,
]);
$validated = $request->validate([
'title' => 'required',
]);
Event::create($request->all());
flash()->success("Event has been created!");
return redirect()->route('event.index');
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('ccms::show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$eventOptions = Event::where('status', 1)->pluck('title', 'id');
$event = Event::findOrFail($id);
return view('ccms::event.edit', [
'title' => 'Edit Event',
'editable' => true,
'event' => $event,
'eventOptions' => $eventOptions
]);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
$request->merge([
'slug' => Str::slug($request->title),
]);
$validated = $request->validate([]);
$event = Event::findOrFail($id);
$event->update($request->all());
flash()->success("Event has been updated.");
return redirect()->back();
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
$event = Event::findOrFail($id);
$event->delete();
return response()->json(['status' => 200, 'message' => "Event has been deleted."], 200);
}
public function reorder(Request $request)
{
$events = Event::all();
foreach ($events as $event) {
foreach ($request->order as $order) {
if ($order['id'] == $event->id) {
$event->update(['order' => $order['position']]);
}
}
}
return response(['status' => true, 'message' => 'Reordered successfully'], 200);
}
public function toggle($id)
{
$event = Event::findOrFail($id);
$event->update(['status' => !$event->status]);
return response(['status' => 200, 'message' => 'Toggled successfully'], 200);
}
}

View File

@@ -0,0 +1,116 @@
<?php
namespace Modules\CCMS\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Rules\Recaptcha;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Validator;
use Modules\CCMS\Models\Franchise;
use Yajra\DataTables\Facades\DataTables;
class FranchiseController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
if (request()->ajax()) {
$model = Franchise::query()->latest();
return DataTables::eloquent($model)
->addIndexColumn()
->addColumn('action', 'ccms::franchise.datatable.action')
->rawColumns(['action'])
->toJson();
}
return view('ccms::franchise.index', [
'title' => 'Franchise List',
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
try {
$rules = [
'first_name' => 'required|string',
'email' => 'required|email',
];
if (setting('enable_reCaptcha') == 1) {
$rules['g-recaptcha-response'] = ['required', new Recaptcha];
}
$messages = [
'email.email' => 'Must be a valid email address.',
'g-recaptcha-response.required' => 'Please complete reCAPTCHA validation.',
'g-recaptcha-response' => 'Invalid reCAPTCHA.',
];
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
Franchise::create($request->all());
return response()->json(['status' => 200, 'message' => "Thank you for reaching out! Your message has been received and we'll get back to you shortly."], 200);
} catch (\Exception $e) {
return response()->json(['status' => 500, 'message' => 'Internal server error', 'error' => $e->getMessage()], 500);
}
}
/**
* Show the specified resource.
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$franchise = Franchise::whereId($id)->first();
if ($franchise) {
$franchise->delete();
}
return response()->json(['status' => 200, 'message' => 'Franchise has been deleted!'], 200);
} catch (\Throwable $th) {
return redirect()->back()->with('error', $th->getMessage());
}
}
}

View File

@@ -0,0 +1,115 @@
<?php
namespace Modules\CCMS\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Rules\Recaptcha;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Validator;
use Modules\CCMS\Models\Newsletter;
use Yajra\DataTables\Facades\DataTables;
class NewsletterController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
if (request()->ajax()) {
$model = Newsletter::query()->latest();
return DataTables::eloquent($model)
->addIndexColumn()
->addColumn('action', 'ccms::newsletter.datatable.action')
->rawColumns(['action'])
->toJson();
}
return view('ccms::newsletter.index', [
'title' => 'Newsletter List',
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
try {
$rules = [
'email' => 'required|email',
];
if (setting('enable_reCaptcha') == 1) {
$rules['g-recaptcha-response'] = ['required', new Recaptcha];
}
$messages = [
'email.email' => 'Must be a valid email address.',
'g-recaptcha-response.required' => 'Please complete reCAPTCHA validation.',
'g-recaptcha-response' => 'Invalid reCAPTCHA.',
];
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
Newsletter::create($validator->validated());
return response()->json(['status' => 200, 'message' => "Thank you for reaching out! Your message has been received and we'll get back to you shortly."], 200);
} catch (\Exception $e) {
return response()->json(['status' => 500, 'message' => 'Internal server error', 'error' => $e->getMessage()], 500);
}
}
/**
* Show the specified resource.
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$newsletter = Newsletter::whereId($id)->first();
if ($newsletter) {
$newsletter->delete();
}
return response()->json(['status' => 200, 'message' => 'Newsletter has been deleted!'], 200);
} catch (\Throwable $th) {
return redirect()->back()->with('error', $th->getMessage());
}
}
}

View File

@@ -0,0 +1,113 @@
<?php
namespace Modules\CCMS\Models;
use App\Traits\CreatedUpdatedBy;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Modules\CCMS\Traits\UpdateCustomFields;
use Modules\Document\Models\Document;
use App\Traits\AddToDocumentCollection;
class Event extends Model
{
use HasFactory, UpdateCustomFields, AddToDocumentCollection, CreatedUpdatedBy;
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'title',
'slug',
'short_description',
'description',
'parent_id',
'icon_class',
'icon_image',
'image',
'images',
'start_date',
'end_date',
'custom',
'banner',
'meta_title',
'meta_description',
'meta_keywords',
'sidebar_title',
'sidebar_content',
'sidebar_image',
'button_text',
'button_url',
'button_target',
'status',
'createdby',
'updatedby',
'order',
];
protected function casts(): array
{
return [
'custom' => 'array',
];
}
protected function images(): Attribute
{
return Attribute::make(
get: function ($value) {
if (empty($value)) {
return [];
}
$parts = explode(',', $value);
return array_map(fn($part) => asset(trim($part)), $parts);
}
);
}
protected function image(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
protected function banner(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
protected function sidebarImage(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
protected function iconImage(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
public function children()
{
return $this->hasMany(Event::class, 'parent_id');
}
public function parent()
{
return $this->belongsTo(Event::class, 'parent_id');
}
public function documents()
{
return $this->morphMany(Document::class, 'documentable');
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace Modules\CCMS\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\CCMS\Database\Factories\FranchiseFactory;
class Franchise extends Model
{
use HasFactory;
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'first_name',
'last_name',
'email',
'phone',
'address',
'city',
'state',
'invest_level',
'own_business',
'yes_own_des',
'franchise_location',
'start_time_frame',
'office_setup',
'website'
];
// protected static function newFactory(): FranchiseFactory
// {
// // return FranchiseFactory::new();
// }
}

View File

@@ -0,0 +1,19 @@
<?php
namespace Modules\CCMS\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\CCMS\Database\Factories\NewsletterFactory;
class Newsletter extends Model
{
use HasFactory;
/**
* The attributes that are mass assignable.
*/
protected $fillable = ['email'];
}

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('newsletters', function (Blueprint $table) {
$table->id();
$table->string('email')->unique();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('newsletters');
}
};

View File

@@ -0,0 +1,40 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('franchises', function (Blueprint $table) {
$table->id();
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('email')->nullable();
$table->string('phone')->nullable();
$table->string('address')->nullable();
$table->string('city')->nullable();
$table->string('state')->nullable();
$table->string('invest_level')->nullable();
$table->string('own_business')->nullable();
$table->text('yes_own_des')->nullable();
$table->string('franchise_location')->nullable();
$table->string('start_time_frame')->nullable();
$table->string('office_setup')->nullable();
$table->string('website')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('franchises');
}
};

View File

@@ -0,0 +1,58 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('events', function (Blueprint $table) {
$table->id();
$table->text('title');
$table->text('slug')->nullable();
$table->text('short_description')->nullable();
$table->longText('description')->nullable();
$table->json('custom')->nullable();
$table->integer('parent_id')->unsigned()->nullable();
$table->string('image')->nullable();
$table->string('banner')->nullable();
$table->text('images')->nullable();
$table->date('start_date')->nullable();
$table->date('end_date')->nullable();
$table->text('meta_title')->nullable();
$table->text('meta_description')->nullable();
$table->text('meta_keywords')->nullable();
$table->text('sidebar_title')->nullable();
$table->mediumText('sidebar_content')->nullable();
$table->string('sidebar_image')->nullable();
$table->string('button_text')->nullable();
$table->string('button_url')->nullable();
$table->string('button_target')->nullable();
$table->integer('status')->default(1);
$table->string('icon_class')->nullable();
$table->string('icon_image')->nullable();
$table->integer('createdby')->unsigned()->nullable();
$table->integer('updatedby')->unsigned()->nullable();
$table->integer('order')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('events');
}
};

View File

@@ -0,0 +1,16 @@
@extends('layouts.app')
@section('content')
<x-dashboard.breadcumb :title="$title" />
<div class="container-fluid">
@if ($errors->any())
<x-flash-message type="danger" :messages="$errors->all()" />
@endif
<div class="row">
<div class="col-xl-12">
{{ html()->form('POST')->route('event.store')->class('needs-validation')->attributes(['novalidate'])->open() }}
@include('ccms::event.partials._form')
{{ html()->form()->close() }}
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,12 @@
<div class="hstack flex-wrap gap-3">
<a href="{{ route('event.edit', $id) }}" data-bs-toggle="tooltip"
data-bs-placement="bottom" data-bs-title="Edit" class="link-success fs-15 edit-item-btn"><i
class=" ri-edit-2-line"></i></a>
<a data-link="{{ route('event.toggle', $id) }}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Toggle" data-status="{{ $status == 1 ? 'Draft' : 'Published' }}"
class="link-info fs-15 toggle-item"><i class="{{ $status == 1 ? 'ri-toggle-line' : 'ri-toggle-fill' }}"></i></a>
<a href="javascript:void(0);" data-link="{{ route('event.destroy', $id) }}" class="link-danger fs-15 remove-item"
data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Delete"><i class="ri-delete-bin-6-line"></i>
</a>
</div>

View File

@@ -0,0 +1,16 @@
@extends('layouts.app')
@section('content')
<x-dashboard.breadcumb :title="$title" />
<div class="container-fluid">
@if ($errors->any())
<x-flash-message type="danger" :messages="$errors->all()" />
@endif
<div class="row">
<div class="col-xl-12">
{{ html()->modelForm($event, 'PUT')->route('event.update', $event->id)->class('needs-validation')->attributes(['novalidate'])->open() }}
@include('ccms::event.partials._form')
{{ html()->closeModelForm() }}
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,50 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
@if ($errors->any())
<x-flash-message type="danger" :messages="$errors->all()" />
@endif
<div class="row">
<div class="col-xl-12">
<div class="card">
<div class="card-header d-flex align-items-center justify-content-between">
<h5 class="card-title mb-0">{{ $title }}</h5>
<a href="{{ route('event.create') }}" class="btn btn-primary waves-effect waves-light text-white"><i
class="ri-add-line align-middle"></i> Create</a>
</div>
<div class="card-body">
@php
$columns = [
[
'title' => 'S.N',
'data' => 'DT_RowIndex',
'name' => 'DT_RowIndex',
'orderable' => false,
'searchable' => false,
'sortable' => false,
],
['title' => 'Image', 'data' => 'image', 'name' => 'image'],
['title' => 'Parent', 'data' => 'parent_id', 'name' => 'parent_ids'],
['title' => 'Title', 'data' => 'title', 'name' => 'title'],
['title' => 'Start Date', 'data' => 'start_date', 'name' => 'start_date'],
['title' => 'End Date', 'data' => 'end_date', 'name' => 'end_date'],
['title' => 'Slug', 'data' => 'slug', 'name' => 'slug'],
['title' => 'Status', 'data' => 'status', 'name' => 'status'],
[
'title' => 'Action',
'data' => 'action',
'orderable' => false,
'searchable' => false,
],
];
@endphp
<x-data-table-script :route="route('event.index')" :reorder="route('event.reorder')" :columns="$columns" />
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,196 @@
<div class="row">
<div class="col-xl-8">
<div class="card h-auto">
<div class="card-body">
<div class="row gy-3">
<div class="col-12">
{{ html()->label('Title')->class('form-label')->for('title') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('title')->class('form-control')->placeholder('Enter Event Title')->required(true) }}
</div>
<div class="col-md-6">
{{ html()->label('Start Date')->class('form-label') }}
<div class="input-group">
{{ html()->text('start_date')->class('form-control')->id('event-start-date')->placeholder('Event Start Date')->attributes([
'data-provider' => 'flatpickr',
'data-date-format' => 'Y-m-d',
'data-enable-time' => '',
])->required() }}
<span class="input-group-text"><i class="ri-calendar-event-line"></i></span>
</div>
</div>
<div class="col-md-6">
{{ html()->label('End Date')->class('form-label') }}
<div class="input-group">
{{ html()->text('end_date')->class('form-control')->id('event-end-date')->placeholder('Event End Date')->attributes([
'data-provider' => 'flatpickr',
'data-date-format' => 'Y-m-d',
'data-enable-time' => '',
]) }}
<span class="input-group-text"><i class="ri-calendar-event-line"></i></span>
</div>
</div>
<div class="col-12">
{{ html()->label('Description (Short)')->class('form-label')->for('short_description') }}
{{ html()->textarea('short_description')->class('form-control')->placeholder('Enter Description (Short)')->rows(5) }}
</div>
<div class="col-12">
{{ html()->label('Description')->class('form-label')->for('description') }}
{{ html()->textarea('description')->class('form-control ckeditor-classic')->placeholder('Enter Description') }}
</div>
</div>
</div>
</div>
<x-ccms::custom-form-field :data="$event->custom ?? []" />
<div class="card meta-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">Meta</h6>
</div>
<div class="card-body">
<div class="row">
<div class="col-xl-12 col-sm-12">
{{ html()->label('Meta Title')->class('form-label')->for('meta_title') }}
{{ html()->text('meta_title')->class('form-control mb-3')->placeholder('Meta Title') }}
</div>
<div class="col-xl-12 col-sm-12">
{{ html()->label('Meta Keywords')->class('form-label')->for('meta_keywords') }}
{{ html()->textarea('meta_keywords')->class('form-control mb-3')->placeholder('Meta Keywords') }}
</div>
<div class="col-xl-12 col-sm-12">
{{ html()->label('Meta Description')->class('form-label')->for('meta_description') }}
{{ html()->textarea('meta_description')->class('form-control mb-3')->placeholder('Meta wire:Description')->rows(3) }}
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4">
<div class="card">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Published
</h6>
</div>
<div class="card-body">
{{ html()->label('Status')->class('form-label visually-hidden')->for('status') }}
{{ html()->select('status', config('constants.page_status_options'))->class('form-select choices-select') }}
</div>
<x-form-buttons :href="route('event.index')" :label="isset($event) ? 'Update' : 'Create'" />
</div>
<div class="card">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Page Attributes
</h6>
</div>
<div class="card-body">
{{ html()->label('Parent Event')->class('form-label')->for('parent_id') }}
{{ html()->select('parent_id', $eventOptions ?? [])->value($event->parent_id ?? old('parent_id'))->class('form-select choices-select')->placeholder('Select') }}
</div>
</div>
<div class="card media-gallery-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Icon
</h6>
</div>
<div class="card-body">
<div class="mb-3">
{{ html()->label('Icon')->class('form-label')->for('icon_class') }}
{{ html()->text('icon_class')->class('form-control')->placeholder('Icon class') }}
</div>
{{ html()->label('Icon Image')->class('form-label')->for('icon_image') }}
<x-image-input :data="$editable ? $event->getRawOriginal('icon_image') : null" id="icon_image" name="icon_image" :editable="$editable" :multiple=false />
</div>
</div>
<div class="card featured-image-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Featured Image
</h6>
</div>
<div class="card-body">
<div class="mb-3">
{{ html()->label('Featured')->class('form-label')->for('image') }}
<x-image-input :data="$editable ? $event->getRawOriginal('image') : null" id="image" name="image" :editable="$editable" :multiple=false />
</div>
{{ html()->label('Banner')->class('form-label')->for('banner') }}
<x-image-input :data="$editable ? $event->getRawOriginal('banner') : null" id="banner" name="banner" :editable="$editable" :multiple=false />
</div>
</div>
<div class="card media-gallery-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Media Gallery
</h6>
</div>
<div class="card-body">
<x-image-input :editable="$editable" id="images" name="images" :data="$editable ? $event->getRawOriginal('images') : null" :multiple="true"
label="Select Images" />
</div>
</div>
<div class="card sidebar-section">
<div class="card-header d-flex jusitfy-content-between align-items-center">
<h6 class="card-title mb-0 fs-14">Sidebar</h6>
</div>
<div class="card-body">
<div class="row gy-3">
<div class="col-lg-12">
{{ html()->label('Title')->class('form-label')->for('sidebar_title') }}
{{ html()->text('sidebar_title')->class('form-control') }}
</div>
<div class="col-lg-12">
{{ html()->label('Content')->class('form-label')->for('sidebar_content') }}
{{ html()->textarea('sidebar_content')->class('form-control')->placeholder('Short Content (optional)')->rows(3) }}
</div>
<div class="col-lg-12">
{{ html()->label('Image')->class('form-label')->for('sidebar_content') }}
<x-image-input :data="$editable ? $event->getRawOriginal('sidebar_image') : null" id="sidebar_image" name="sidebar_image" :editable="$editable"
:multiple=false />
</div>
</div>
</div>
</div>
<div class="card button-section">
<div class="card-header d-flex jusitfy-content-between align-items-center">
<h6 class="card-title mb-0 fs-14">Button</h6>
</div>
<div class="card-body">
<div class="row gy-3">
<div class="col-lg-12">
{{ html()->label('Text')->class('form-label')->for('button_text') }}
{{ html()->text('button_text')->class('form-control') }}
</div>
<div class="col-lg-12">
{{ html()->label('Link')->class('form-label')->for('button_url') }}
{{ html()->text('button_url')->class('form-control')->placeholder('Button Link') }}
</div>
<div class="col-lg-12">
{{ html()->label('Target')->class('form-label')->for('button_target') }}
{{ html()->select('button_target', config('constants.redirect_options'))->class('form-select choices-select') }}
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,14 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
{{ html()->form('POST')->route('testimonial.store')->class(['needs-validation'])->attributes(['enctype' => 'multipart/form-data', 'novalidate'])->open() }}
@include('ccms::testimonial.partials._form')
{{ html()->form()->close() }}
</div>
@endsection

View File

@@ -0,0 +1,10 @@
<div class="hstack flex-wrap gap-3">
{{-- <a data-link="{{ route('franchise.markAsRead', $id) }}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Mark as {{ $is_read == 1 ? 'unread' : 'read' }}" data-status="{{ $is_read == 1 ? 'read' : 'unread' }}" --}}
{{-- class="fs-15 mark-item"><i class="{{ $is_read == 1 ? ' ri-mail-close-line link-secondary' : ' ri-mail-check-line link-success' }}"></i></a> --}}
<a href="javascript:void(0);" data-link="{{ route('franchise.destroy', $id) }}" class="link-danger fs-15 remove-item" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Delete">
<i class="ri-delete-bin-6-line"></i>
</a>
</div>

View File

@@ -0,0 +1,14 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
{{ html()->modelForm($testimonial, 'PUT')->route('testimonial.update', $testimonial->id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('ccms::testimonial.partials._form')
{{ html()->form()->close() }}
</div>
@endsection

View File

@@ -0,0 +1,41 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
<div class="card">
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">{{ $title }}</h5>
</div>
<div class="card-body">
@php
$columns = [
[
'title' => 'S.N',
'data' => 'DT_RowIndex',
'name' => 'DT_RowIndex',
'orderable' => false,
'searchable' => false,
'sortable' => false,
],
['title' => 'First Name', 'data' => 'name', 'first_name' => 'first_name'],
['title' => 'Last Name', 'data' => 'name', 'first_name' => 'first_name'],
['title' => 'Email', 'data' => 'email', 'name' => 'email'],
['title' => 'Phone', 'data' => 'phone', 'name' => 'phone'],
['title' => 'Address', 'data' => 'address', 'name' => 'address'],
['title' => 'City', 'data' => 'city', 'name' => 'city'],
['title' => 'State', 'data' => 'state', 'name' => 'state'],
['title' => 'Invest Level', 'data' => 'invest_level', 'name' => 'invest_level'],
['title' => 'Franchise Location', 'data' => 'franchise_location', 'name' => 'franchise_location'],
[
'title' => 'Action',
'data' => 'action',
'orderable' => false,
'searchable' => false,
],
];
@endphp
<x-data-table-script :route="route('franchise.index')" :reorder="null" :columns="$columns" />
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,71 @@
<div class="row">
<div class="col-lg-8 col-xl-9">
<div class="card">
<div class="card-body">
<div class="row gy-3">
<div class="col-md-6">
{{ html()->label('Name')->class('form-label') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('title')->class('form-control')->placeholder('Enter Name')->required() }}
{{ html()->div('Name is required')->class('invalid-feedback') }}
</div>
<div class="col-md-6">
{{ html()->label('Designation')->class('form-label') }}
{{ html()->text('designation')->class('form-control')->placeholder('Enter Designation') }}
</div>
<div class="col-md-6">
{{ html()->label('Company')->class('form-label') }}
{{ html()->text('company')->class('form-control')->placeholder('Enter Company') }}
</div>
<div class="col-lg-6">
{{ html()->label('Branch')->class('form-label')->for('branch_id') }}
{{ html()->select('branch_id', $branchOptions)->class('form-select choices-select')->placeholder('Select') }}
</div>
<div class="col-12">
{{ html()->label('Comment')->class('form-label')->for('description') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->textarea('description')->class('form-control')->rows(10) }}
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-lg-4 col-xl-3">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">Publish</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
{{ html()->select('status', config('constants.page_status_options'))->class('form-select choices-select ') }}
</div>
</div>
</div>
<!-- end card body -->
<x-form-buttons :editable="$editable" label="Save" href="{{ route('team.index') }}" />
</div>
<div class="card featured-image-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Featured
</h6>
</div>
<div class="card-body">
<div class="mb-3">
{{ html()->label('Image')->class('form-label')->for('image') }}
<x-image-input :editable="$editable" id="image" name="image" :data="$editable ? $testimonial->getRawOriginal('image') : null"
:multiple="false" />
</div>
</div>
</div>
</div>
<!-- end col -->
</div>

View File

@@ -0,0 +1,14 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
{{ html()->form('POST')->route('testimonial.store')->class(['needs-validation'])->attributes(['enctype' => 'multipart/form-data', 'novalidate'])->open() }}
@include('ccms::testimonial.partials._form')
{{ html()->form()->close() }}
</div>
@endsection

View File

@@ -0,0 +1,8 @@
<div class="hstack flex-wrap gap-3">
<a href="javascript:void(0);" data-link="{{ route('newsletter.destroy', $id) }}" class="link-danger fs-15 remove-item"
data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Delete">
<i class="ri-delete-bin-6-line"></i>
</a>
</div>

View File

@@ -0,0 +1,14 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
{{ html()->modelForm($testimonial, 'PUT')->route('testimonial.update', $testimonial->id)->class(['needs-validation'])->attributes(['novalidate'])->open() }}
@include('ccms::testimonial.partials._form')
{{ html()->form()->close() }}
</div>
@endsection

View File

@@ -0,0 +1,33 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<x-dashboard.breadcumb :title="$title" />
<div class="card">
<div class="card-header align-items-center d-flex">
<h5 class="card-title flex-grow-1 mb-0">{{ $title }}</h5>
</div>
<div class="card-body">
@php
$columns = [
[
'title' => 'S.N',
'data' => 'DT_RowIndex',
'name' => 'DT_RowIndex',
'orderable' => false,
'searchable' => false,
'sortable' => false,
],
['title' => 'Email', 'data' => 'email', 'name' => 'email'],
[
'title' => 'Action',
'data' => 'action',
'orderable' => false,
'searchable' => false,
],
];
@endphp
<x-data-table-script :route="route('newsletter.index')" :reorder="null" :columns="$columns" />
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,71 @@
<div class="row">
<div class="col-lg-8 col-xl-9">
<div class="card">
<div class="card-body">
<div class="row gy-3">
<div class="col-md-6">
{{ html()->label('Name')->class('form-label') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->text('title')->class('form-control')->placeholder('Enter Name')->required() }}
{{ html()->div('Name is required')->class('invalid-feedback') }}
</div>
<div class="col-md-6">
{{ html()->label('Designation')->class('form-label') }}
{{ html()->text('designation')->class('form-control')->placeholder('Enter Designation') }}
</div>
<div class="col-md-6">
{{ html()->label('Company')->class('form-label') }}
{{ html()->text('company')->class('form-control')->placeholder('Enter Company') }}
</div>
<div class="col-lg-6">
{{ html()->label('Branch')->class('form-label')->for('branch_id') }}
{{ html()->select('branch_id', $branchOptions)->class('form-select choices-select')->placeholder('Select') }}
</div>
<div class="col-12">
{{ html()->label('Comment')->class('form-label')->for('description') }}
{{ html()->span('*')->class('text-danger') }}
{{ html()->textarea('description')->class('form-control')->rows(10) }}
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-lg-4 col-xl-3">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">Publish</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
{{ html()->select('status', config('constants.page_status_options'))->class('form-select choices-select ') }}
</div>
</div>
</div>
<!-- end card body -->
<x-form-buttons :editable="$editable" label="Save" href="{{ route('team.index') }}" />
</div>
<div class="card featured-image-section">
<div class="card-header">
<h6 class="card-title mb-0 fs-14">
Featured
</h6>
</div>
<div class="card-body">
<div class="mb-3">
{{ html()->label('Image')->class('form-label')->for('image') }}
<x-image-input :editable="$editable" id="image" name="image" :data="$editable ? $testimonial->getRawOriginal('image') : null"
:multiple="false" />
</div>
</div>
</div>
</div>
<!-- end col -->
</div>

View File

@@ -8,11 +8,14 @@ use Modules\CCMS\Http\Controllers\CounselorController;
use Modules\CCMS\Http\Controllers\CounterController;
use Modules\CCMS\Http\Controllers\CountryController;
use Modules\CCMS\Http\Controllers\EnquiryController;
use Modules\CCMS\Http\Controllers\EventController;
use Modules\CCMS\Http\Controllers\FaqCategoryController;
use Modules\CCMS\Http\Controllers\FaqController;
use Modules\CCMS\Http\Controllers\FranchiseController;
use Modules\CCMS\Http\Controllers\GalleryCategoryController;
use Modules\CCMS\Http\Controllers\GalleryController;
use Modules\CCMS\Http\Controllers\InstitutionController;
use Modules\CCMS\Http\Controllers\NewsletterController;
use Modules\CCMS\Http\Controllers\PageController;
use Modules\CCMS\Http\Controllers\PartnerController;
use Modules\CCMS\Http\Controllers\PopupController;
@@ -31,7 +34,7 @@ use Modules\CCMS\Http\Controllers\TestimonialController;
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
|Eventcontr
*/
Route::group(['middleware' => ['web', 'auth', 'permission'], 'prefix' => 'admin/'], function () {
@@ -83,6 +86,10 @@ Route::group(['middleware' => ['web', 'auth', 'permission'], 'prefix' => 'admin/
Route::get('service/toggle/{id}', [ServiceController::class, 'toggle'])->name('service.toggle');
Route::resource('service', ServiceController::class)->names('service');
Route::post('event/reorder', [EventController::class, 'reorder'])->name('event.reorder');
Route::get('event/toggle/{id}', [EventController::class, 'toggle'])->name('event.toggle');
Route::resource('event', EventController::class)->names('event');
Route::post('branch/reorder', [BranchController::class, 'reorder'])->name('branch.reorder');
Route::get('branch/toggle/{id}', [BranchController::class, 'toggle'])->name('branch.toggle');
Route::resource('branch', BranchController::class)->names('branch');
@@ -124,5 +131,8 @@ Route::group(['middleware' => ['web', 'auth', 'permission'], 'prefix' => 'admin/
Route::get('enquiry/mark-as-read/{id}', [EnquiryController::class, 'markAsRead'])->name('enquiry.markAsRead');
Route::resource('enquiry', EnquiryController::class)->names('enquiry')->only(['index', 'store', 'destroy']);
Route::resource('franchise', FranchiseController::class)->names('franchise')->only(['index', 'store', 'destroy']);
Route::resource('newsletter', NewsletterController::class)->names('newsletter')->only(['index', 'store', 'destroy']);
Route::resource('counselor', CounselorController::class)->names('counselor')->only(['index', 'store', 'destroy']);
});

View File

@@ -16,10 +16,9 @@ use Modules\Meeting\Http\Controllers\MeetingController;
*/
Route::group(['middleware' => ['web', 'auth', 'permission'], 'prefix' => 'admin/'], function () {
Route::resource('event', EventController::class)->names('event');
// Route::resource('event', EventController::class)->names('event');
Route::post('meeting/sub-task', [MeetingController::class, 'storeSubTask'])->name('meeting.storeSubTask');
Route::resource('meeting', MeetingController::class)->names('meeting');
Route::get('meeting/{id}/send-email', [MeetingController::class, 'sendEmail'])->name('meeting.sendmail');
});

View File

@@ -3,6 +3,9 @@
use App\Http\Controllers\WebsiteController;
use Illuminate\Support\Facades\Route;
use Modules\CCMS\Http\Controllers\EnquiryController;
use Modules\CCMS\Http\Controllers\FranchiseController;
use Modules\CCMS\Http\Controllers\NewsletterController;
use Modules\CCMS\Models\Franchise;
use Modules\CourseFinder\Http\Controllers\CoopController;
use Modules\CourseFinder\Http\Controllers\ProgramController;
use Modules\CourseFinder\Http\Controllers\ProgramLevelController;
@@ -19,6 +22,9 @@ Route::get('destination/{alias}', [WebsiteController::class, 'countrySingle'])->
Route::get('/home/resources', [WebsiteController::class, 'resources']);
Route::get('getCoursesList', [ProgramController::class, 'getCoursesList'])->name('program.getCoursesList');
Route::post('enquiry', [EnquiryController::class, 'store'])->name('enquiry.store');
Route::post('franchise', [FranchiseController::class, 'store'])->name('franchise.store');
Route::post('newsletter', [NewsletterController::class, 'store'])->name('newsletter.store');
Route::get('getCost', [WebsiteController::class, 'getCost'])->name('cost.getCost');
Route::get('/thankyou', [WebsiteController::class, 'thankyouPage'])->name('thankyou');

View File

@@ -4,6 +4,7 @@ use Modules\CCMS\Models\Blog;
use Modules\CCMS\Models\Category;
use Modules\CCMS\Models\Counter;
use Modules\CCMS\Models\Country;
use Modules\CCMS\Models\Event;
use Modules\CCMS\Models\Faq;
use Modules\CCMS\Models\FaqCategory;
use Modules\CCMS\Models\Gallery;
@@ -150,6 +151,32 @@ function getServices($limit = null, $order = 'desc')
->get();
}
function previousEvents($limit = null, $order = 'desc')
{
return Event::query()
->where('status', 1)
->where('parent_id', null)
->where('start_date', '<=', now())
->orderBy('order', $order)
->when($limit, function ($query) use ($limit) {
$query->limit($limit);
})
->get();
}
function upcomingEvents($limit = null, $order = 'desc')
{
return Event::query()
->where('status', 1)
->where('parent_id', null)
->where('start_date', '>=', now())
->orderBy('order', $order)
->when($limit, function ($query) use ($limit) {
$query->limit($limit);
})
->get();
}
function getInstitutions($limit = null, $order = 'desc')
{
return Institution::query()

View File

@@ -33,6 +33,8 @@ class WebsiteController extends Controller
$countries = Country::where('status', 1)->where('parent_id', null)->get();
$interviews = Service::where('status', 1)->where('parent_id', null)->get();
$services = Service::where('status', 1)->where('parent_id', null)->get();
$data['previousEvents'] = previousEvents(limit: null, order: 'asc');
$data['upcomingEvents'] = upcomingEvents(limit: null, order: 'asc');
$this->path = config('app.client');
view()->share([
@@ -42,6 +44,8 @@ class WebsiteController extends Controller
'countries' => $countries,
'services' => $services,
'interviews' => $interviews,
'previousEvents' => $data['previousEvents'],
'upcomingEvents' => $data['upcomingEvents'],
]);
}
@@ -176,7 +180,7 @@ class WebsiteController extends Controller
$page = getPageWithChildrenBySlug(parent: $parent, slug: $slug, limit: null, order: 'asc');
$teams = getTeams(limit: null, order: 'asc');
$blogs = getBlogs(limit: null, order: 'asc');
$galleriesCSR = getPageWithChildrenBySlug(parent: $parent, slug: 'gallery', limit: null, order: 'asc');
if (!$page) {
return view('client.raffles.errors.404');
}
@@ -187,7 +191,7 @@ class WebsiteController extends Controller
return view('client.raffles.errors.404');
}
return view($path, ['page' => $page, 'teams' => $teams, 'blogs' => $blogs]);
return view($path, ['page' => $page, 'teams' => $teams, 'blogs' => $blogs, 'galleriesCSR' => $galleriesCSR]);
}
public function fallback()

View File

@@ -45,6 +45,38 @@ return [
'can' => ['menu.index'],
],
[
'text' => 'Enquiries',
'icon' => 'ri-cellphone-line',
'module' => 'CCMS',
'submenu' => [
[
'text' => 'Enquiry',
'url' => 'admin/enquiry',
'can' => ['enquiry.index'],
],
[
'text' => 'Counsellor Request',
'url' => 'admin/counselor',
'can' => ['counselor.index'],
],
[
'text' => 'Franchise Request',
'url' => 'admin/franchise',
'can' => ['franchise.index'],
],
[
'text' => 'Newsletter',
'url' => 'admin/newsletter',
'can' => ['newsletter.index'],
],
],
],
[
'text' => 'Offer Popup',
'url' => 'admin/popup',
@@ -101,6 +133,14 @@ return [
'can' => ['service.index'],
],
[
'text' => 'Events',
'url' => 'admin/event',
'icon' => 'ri-feedback-line',
'module' => 'CCMS',
'can' => ['event.index'],
],
[
'text' => 'Team',
'url' => 'admin/team',
@@ -181,21 +221,7 @@ return [
],
],
[
'text' => 'Enquiry',
'url' => 'admin/enquiry',
'icon' => ' ri-cellphone-line',
'module' => 'CCMS',
'can' => ['enquiry.index'],
],
[
'text' => 'Counsellor Request',
'url' => 'admin/counselor',
'icon' => ' ri-cellphone-line',
'module' => 'CCMS',
'can' => ['counselor.index'],
],
[
'text' => 'Course Finder',

View File

@@ -618,13 +618,13 @@ z-index: 10000;
transition: .3s all ease-in-out;
}
.col.col-md-3:nth-child(1) .course-box img, .col.col-md-3:nth-child(2) .course-box img{
width: 100%;
width: 100px;
}
.col.col-md-3:nth-child(4) .course-box img {
.col.col-md-3:nth-child(3) .course-box img {
width: 125px;
}
.col.col-md-3:nth-child(4) .course-box img {
width: 120px;
width: 110px;
}
.how-it-work input, .how-it-work textarea {

View File

@@ -219,6 +219,86 @@
});
</script>
<script>
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('franchise-form');
const submitBtn = document.getElementById('franchise-submit');
const url = form.action;
form.addEventListener('submit', async (e) => {
e.preventDefault();
submitBtn.disabled = true;
submitBtn.textContent = 'Submitting…';
const formData = new FormData(form);
try {
const res = await fetch(url, {
method: 'POST',
headers: {
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')
.content
},
body: formData
});
const data = await res.json();
if (res.ok) {
form.reset();
window.location.href =
"{{ route('thankyou') }}"; // ✅ redirect instead of toastr
} else if (data.errors && data.errors.email) {
data.errors.email.forEach(msg => toastr.error(msg));
} else {
toastr.error('Submission failed. Please try again.');
}
} catch (err) {
console.error(err);
toastr.error('Something went wrong. Please try again.');
} finally {
submitBtn.disabled = false;
submitBtn.textContent = 'Submit';
}
});
});
</script>
<script>
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('newsletter-form');
const submitBtn = document.getElementById('newsletter-submit');
const url = form.action;
form.addEventListener('submit', async (e) => {
e.preventDefault();
submitBtn.disabled = true;
submitBtn.textContent = 'Submitting…';
const formData = new FormData(form);
try {
const res = await fetch(url, {
method: 'POST',
headers: {
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')
.content
},
body: formData
});
const data = await res.json();
if (res.ok) {
form.reset();
window.location.href =
"{{ route('thankyou') }}"; // ✅ redirect instead of toastr
} else if (data.errors && data.errors.email) {
data.errors.email.forEach(msg => toastr.error(msg));
} else {
toastr.error('Submission failed. Please try again.');
}
} catch (err) {
console.error(err);
toastr.error('Something went wrong. Please try again.');
} finally {
submitBtn.disabled = false;
submitBtn.textContent = 'Submit';
}
});
});
</script>
<script>
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('counselor-form');

View File

@@ -61,10 +61,12 @@
<a href="{{ setting('whatsapp') }}" target="blank"> <i
class="fa-brands fa-square-whatsapp"></i></a>
</div>
<form class="flex" action="">
<form class="flex" action="{{ route('newsletter.store') }}" method="post" id="newsletter-form">
@csrf
<input class=" border-0 w-80percent px-20 text-14 py-10 text-black" type="email"
name="email" id="email" placeholder="Enter your Email">
<button class="border-0 text-white p-10 text-12 ">Subscribe</button>
<button type="submit" id="newsletter-submit"
class="border-0 text-white p-10 text-12 newsletter-submit">Subscribe</button>
</form>
<div>
<iframe

View File

@@ -10,7 +10,7 @@
<section class="section ">
<div class="flex flex-col gap-5 justify-center items-center text-center">
<h2 class="text-60 md:text-30 text-brand">Achievements</h2>
<img class="w-20percent" src="assets/images/icons/line.png" alt="">
<img class="w-20percent" src="{{ asset('raffles/assets/images/icons/line.png') }}" alt="">
</div>
</section>
@@ -18,59 +18,24 @@
<section class="lqd-section text-box-image pt-40 pb-30">
<div class="container">
<div class="row pb-20">
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16"
src="{{ asset('raffles/assets/images/general/blog1.jfif') }}" alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sale </h2>
</div>
</a>
</div>
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16"
src="{{ asset('raffles/assets/images/general/blog1.jfif') }}" alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sales</h2>
</div>
</a>
</div>
@foreach ($page->custom as $index => $data)
<div class="col col-sm-6 col-md-4">
<a href="" class="flex flex-col gap-20 p-20 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16"
src="{{ asset($page->images[$index]) }}" alt="">
</div>
<div>
<h2 class="text-20 text-ter text-center">{{ $data['key'] ?? '' }} </h2>
</div>
</a>
</div>
@endforeach
</div>
{{-- <div class="flex justify-center gap-10">
<div class="blog-pagination cursor-pointer ">
<p class="py-5 bg-sec px-20 text-20 rounded-10 text-white button-hover">1</p>
</div>
<div class="blog-pagination cursor-pointer">
<p class="py-5 bg-sec px-20 text-20 rounded-10 text-white button-hover">2</p>
</div>
<div class="blog-pagination cursor-pointer">
<p class="py-5 bg-sec px-20 text-20 rounded-10 text-white button-hover">3</p>
</div>
<div class="blog-pagination cursor-pointer">
<p class="py-5 bg-sec px-20 text-20 rounded-10 text-white button-hover">Next</p>
</div>
</div> --}}
</div>
</section>
</section>
@endsection

View File

@@ -11,7 +11,6 @@
<div class="flex flex-col gap-5 justify-center items-center text-center">
<h2 class="text-60 md:text-30 text-sec">Career Opportunities</h2>
<div class="title-line mx-auto"></div>
<!-- <img class="w-20percent" src="assets/images/icons/line.png" alt=""> -->
</div>
</section>

View File

@@ -33,58 +33,56 @@
<div class="quote-mark">"</div>
<h2 class="heading">Your Trusted Study Abroad Partner.</h2>
<h2 class="heading">{{ $page->short_description }}</h2>
<p class="message">
Were more than just a consultancy—were your ultimate study abroad ally! With years of
experience and a passion for helping students succeed, weve guided thousands of students to
their dream universities across the globe. Your dreams are our mission
{!! $page->description !!}
</p>
</div>
</div>
</div>
<!-- <div class="row items-center">
<div class="col col-12 col-md-6">
<div class="flex flex-wrap mr-120 ml-40 lg:m-0">
<div class="col col-12 col-md-6">
<div class="flex flex-wrap mr-120 ml-40 lg:m-0">
<div class="mb-20 relative">
<h2 class="ld-fh-element inline-block relative lqd-highlight-classic lqd-highlight-grow-left mt-0/5em mb-0 md:text-20 font-bold w-full"
data-inview="true" data-transition-delay="true"
data-delay-options='{"elements": ".lqd-highlight-inner", "delayType": "transition"}'>
<span>Your Trusted Study Abroad
</span>
<mark class="lqd-highlight"><span class="lqd-highlight-txt">Partner.</span>
<span class="left-0 bottom-10 lqd-highlight-inner"></span></mark>
</h2>
</div>
<div class="mb-20 ld-fancy-heading relative">
<p class="leading-25 ld-fh-element inline-block relative mb-0/5em">
Were more than just a consultancy—were your ultimate study abroad ally! With years of
experience and a passion for helping students succeed, weve guided thousands of
students to their dream universities across the globe. Your dreams are our mission
</p>
</div>
<div class="mb-20 relative">
<h2 class="ld-fh-element inline-block relative lqd-highlight-classic lqd-highlight-grow-left mt-0/5em mb-0 md:text-20 font-bold w-full"
data-inview="true" data-transition-delay="true"
data-delay-options='{"elements": ".lqd-highlight-inner", "delayType": "transition"}'>
<span>Your Trusted Study Abroad
</span>
<mark class="lqd-highlight"><span class="lqd-highlight-txt">Partner.</span>
<span class="left-0 bottom-10 lqd-highlight-inner"></span></mark>
</h2>
</div>
<div class="mb-20 ld-fancy-heading relative">
<p class="leading-25 ld-fh-element inline-block relative mb-0/5em">
Were more than just a consultancy—were your ultimate study abroad ally! With years of
experience and a passion for helping students succeed, weve guided thousands of
students to their dream universities across the globe. Your dreams are our mission
</p>
</div>
</div>
</div>
<div class="col col-12 col-md-6 p-0">
<div class="module-section flex items-center justify-center transition-all p-20 lg:p-0">
<div class="flex items-center justify-center bg-center bg-no-repeat bg-contain" style="
</div>
</div>
<div class="col col-12 col-md-6 p-0">
<div class="module-section flex items-center justify-center transition-all p-20 lg:p-0">
<div class="flex items-center justify-center bg-center bg-no-repeat bg-contain" style="
background-image: url('assets/images/demo/start-hub-1/shape-ellipse.png');
">
<div class="lqd-imggrp-single block relative " data-float="ease-in-out">
<div class="lqd-imggrp-img-container inline-flex relative items-center justify-center">
<figure class="w-full relative">
<img width="450" height="450" src="assets/images/general/about-banner.png"
alt="text box image" />
</figure>
</div>
</div>
</div>
</div>
</div>
</div> -->
<div class="lqd-imggrp-single block relative " data-float="ease-in-out">
<div class="lqd-imggrp-img-container inline-flex relative items-center justify-center">
<figure class="w-full relative">
<img width="450" height="450" src="assets/images/general/about-banner.png"
alt="text box image" />
</figure>
</div>
</div>
</div>
</div>
</div>
</div> -->
</div>
</section>
@@ -103,8 +101,9 @@
<div class="swiper-wrapper">
@foreach ($blogs as $blog)
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img
class="rounded-30" src="{{ route('blog.single', $blog->slug) }}" alt="">
<a class="h-full w-full relative bg-dark-before"
href="{{ route('blog.single', $blog->slug) }}"> <img class="rounded-30"
src="{{ asset($blog->image) }}" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">{{ $blog->title }}</h3>
</div>
@@ -123,6 +122,7 @@
<h2 class="text-60 md:text-30 text-brand text-center">Gallery</h2>
<!-- <img class="w-20percent" src="assets/images/icons/line.png" alt=""> -->
</div>
</section>
@@ -133,24 +133,10 @@
<div class="swiper mySwiper-img">
<div class="swiper-wrapper">
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
<div class="swiper-slide"> <img class="rounded-10" src="assets/images/general/about-banner.png"
alt=""></div>
@foreach ($galleriesCSR->images as $gallery)
<div class="swiper-slide"> <img class="rounded-10" src="{{ asset($gallery) }}" alt="">
</div>
@endforeach
</div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>

View File

@@ -22,101 +22,25 @@
<div class="swiper swiper-events mt-40 mb-40">
<div class="swiper-wrapper">
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
@foreach ($upcomingEvents as $event)
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset($event->image) }}" alt="">
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Start</h4>
<h4 class="text-18 font-bold text-black">{{ $event->start_date }}</h4>
</div>
<div>
<h3 class="text-16 text-black">{{ $event->title }}</h3>
<p class="text-14 p-0 m-0 text-grey">{{ $event->short_description }} </p>
</div>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
</a>
@endforeach
</div>
<!-- Pagination -->
<!-- <div class="swiper-pagination"></div> -->
@@ -137,102 +61,27 @@
<div class="swiper swiper-events mt-40">
<div class="swiper-wrapper">
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
@foreach ($previousEvents as $event)
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset($event->image) }}" alt="">
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Start</h4>
<h4 class="text-18 font-bold text-black">{{ $event->start_date }}</h4>
</div>
<div>
<h3 class="text-16 text-black">{{ $event->title }}</h3>
<p class="text-14 p-0 m-0 text-grey">{{ $event->short_description }} </p>
</div>
</div>
</div>
</div>
</a>
</a>
@endforeach
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="{{ asset('raffles/assets/images/general/event1.jfif') }}" alt="">
</div>
<div class="flex items-center gap-20 py-20 px-20 bg-white rounded-30">
<div>
<h4 class="text-16 text-ter">Apr</h4>
<h4 class="text-18 font-bold text-black">14</h4>
</div>
<div>
<h3 class="text-16 text-black">Free ilets Class: Raffles Educare Associates</h3>
<p class="text-14 p-0 m-0 text-grey">Join the free ilets Classes </p>
<p class="text-14 text-grey">Starting from 5 pm - 7 pm </p>
</div>
</div>
</div>
</a>
</div>
<!-- Pagination -->
<!-- <div class="swiper-pagination"></div> -->
@@ -280,12 +129,6 @@
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
{{-- <div class="flex justify-center items-center ">
<button class="text-center bg-white text-ter rounded-30 text-14">Load More</button>
</div> --}}
</div>
@endsection

View File

@@ -101,19 +101,20 @@
<div class="franchise-form bg-white">
<form action="">
<form action="{{ route('franchise.store') }}" method="post" id="franchise-form">
@csrf
<label class="text-16 pb-5" for="">Your Name <span
class="text-brand">(Required)</span></label>
<div class="flex gap-10 ">
<div class="w-full">
<label class="text-14 pb-5" for="">First</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text" name=""
id="">
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="first_name" id="">
</div>
<div class="w-full">
<label class="text-14 pb-5" for="">Last</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text" name=""
id="">
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="last_name" id="">
</div>
@@ -123,33 +124,33 @@
<label class="text-16 pb-5" for="">Your Email Address <span
class="text-brand">(Required)</span></label>
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="email" name=""
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="email" name="email"
id="">
<label class="text-16 pb-5" for="">Your Phone <span
class="text-brand">(Required)</span></label>
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="text" name=""
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="text" name="phone"
id="">
<label class="text-16 pb-5" for="">Your Address <span
class="text-brand">(Required)</span></label>
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="text" name=""
<input class="w-full mb-20 rounded-6 py-10 text-14 px-10" type="text" name="address"
id="">
<div class="flex gap-10 ">
<div class="w-full">
<label class="text-14 pb-5" for="">City</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id="">
name="city" id="">
</div>
<div class="w-full">
<label class="text-14 pb-5" for="">State/Region/Province</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id="">
name="state" id="">
</div>
@@ -161,7 +162,7 @@
<div class="sm:block flex gap-10 ">
<div class="w-full">
<label class="text-14 pb-5" for="">Level to Invest</label>
<select class="w-full py-5" name="" id="">
<select class="w-full py-5" name="invest_level" id="">
<option value="">Less than $20,000</option>
<option value="">Less than $30,000</option>
<option value="">Less than $40,000</option>
@@ -169,9 +170,9 @@
</select>
<!-- <select name="" id="franchise-invest">
<option value="" selected hidden> Less than $10,000</option>
<option value=""></option>
</select> -->
<option value="" selected hidden> Less than $10,000</option>
<option value=""></option>
</select> -->
</div>
@@ -179,7 +180,7 @@
<label class="text-14 pb-5" for="">Do you currently own a business?
(Yes/No)</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id="">
name="own_business" id="">
</div>
@@ -192,26 +193,26 @@
business</label>
<textarea class="w-full mb-20 rounded-6 py-10 text-14 px-10" name="" id=""></textarea>
<textarea class="w-full mb-20 rounded-6 py-10 text-14 px-10" name="yes_own_des" id=""></textarea>
<div class="sm:block flex gap-10 ">
<div class="w-full">
<label class="text-14 pb-5" for="">Preferred Franchise Location</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="" id="">
name="franchise_location" id="">
</div>
<div class="w-full">
<label class="text-14 pb-5" for="">Timeframe to Start</label>
<select class="w-full py-5" name="" id="">
<select class="w-full py-5" name="start_time_frame" id="">
<option value="">within 1 year</option>
<option value="">After 1 year</option>
</select>
<!-- <select name="" id="franchise-timeframe">
<option value="" selected hidden> within 6 months</option>
<option value=""></option>
</select> -->
<option value="" selected hidden> within 6 months</option>
<option value=""></option>
</select> -->
</div>
@@ -221,17 +222,18 @@
</div>
<div class="sm:w-full w-50percent">
<label class="text-14 pb-5" for="">Do u already have an office setup ?</label>
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text" name=""
id="">
<input class="w-full mb-30 rounded-6 py-10 text-14 px-10" type="text"
name="office_setup" id="">
</div>
<label class="text-14 pb-5" for=""> Please add your bussiness portfolio website ,and
let us know
if you have any questions?</label>
<textarea class="w-full mb-20 rounded-6 py-10 text-14 px-10" name="" id=""></textarea>
<textarea class="w-full mb-20 rounded-6 py-10 text-14 px-10" name="website" id=""></textarea>
<button class="button-hover px-20 py-10 bg-sec text-white text-16 border-0">Send
<button type="submit" id="franchise-submit"
class="button-hover px-20 py-10 bg-sec text-white text-16 border-0 franchise-submit">Send
Message</button>
</form>
</div>

View File

@@ -22,72 +22,87 @@
<div class="col col-12 p-0">
<div class="w-full flex flex-wrap justify-center module-icon-box">
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-blue-100 text-30">
<i class="fa-brands fa-facebook text-sec"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
</div>
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-blue-100 text-30">
<i class="fa-brands fa-facebook text-sec"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Study in<br />UK
</h3>
</div>
</div>
</div>
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-blue-100 text-30">
<i class="fa-brands fa-facebook text-sec"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Study in<br />USA
</h3>
</div>
</div>
</div>
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-blue-100 text-30">
<i class="fa-brands fa-facebook text-sec"></i>
<a href="{{ setting('facebook') }}">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-blue-100 text-30">
<i class="fa-brands fa-facebook text-sec"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Learning<br />Center
</h3>
</div>
</div>
</a>
</div>
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('facebook') }}">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-blue-100 text-30">
<i class="fa-brands fa-facebook text-sec"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Study in<br />UK
</h3>
</div>
</div>
</a>
</div>
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('facebook') }}">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-blue-100 text-30">
<i class="fa-brands fa-facebook text-sec"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Study in<br />USA
</h3>
</div>
</div>
</a>
</div>
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('facebook') }}">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-blue-100 text-30">
<i class="fa-brands fa-facebook text-sec"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Learning<br />Center
</h3>
</div>
</div>
</a>
</div>
</div>
</div>
@@ -106,52 +121,62 @@
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-red-100 text-50">
<i class="fa-brands fa-instagram text-brand"></i>
<a href="{{ setting('instagram') }}">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-red-100 text-50">
<i class="fa-brands fa-instagram text-brand"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
</a>
</div>
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-red-100 text-50">
<i class="fa-brands fa-instagram text-brand"></i>
<a href="{{ setting('instagram') }}">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-red-100 text-50">
<i class="fa-brands fa-instagram text-brand"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Educare<br /> USA
</h3>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Educare<br /> USA
</h3>
</div>
</div>
</a>
</div>
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-red-100 text-50">
<i class="fa-brands fa-instagram text-brand"></i>
<a href="{{ setting('instagram') }}">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-red-100 text-50">
<i class="fa-brands fa-instagram text-brand"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Learning<br />Center
</h3>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Learning<br />Center
</h3>
</div>
</div>
</a>
</div>
</div>
@@ -171,57 +196,68 @@
<div class="w-25percent sm:w-50percent ">
<div
class="flex justify-center items-center text-center lqd-iconbox-scale transition-all pl-60 mb-30 sm:mb-0 hover:scale-1/1">
<a href="{{ setting('tiktok') }}">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col justify-center iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-gray-100 text-30">
<i class="fa-brands fa-tiktok text-black"></i>
class="flex justify-center items-center text-center lqd-iconbox-scale transition-all pl-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col justify-center iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-gray-100 text-30">
<i class="fa-brands fa-tiktok text-black"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
</div>
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all pl-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-gray-100 text-30">
<i class="fa-brands fa-tiktok text-black"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Study<br />Abroad
</h3>
</div>
</div>
</a>
</div>
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-green-100 text-30">
<i class="fa-brands fa-google"></i>
<a href="{{ setting('tiktok') }}">
<div class="lqd-iconbox-scale transition-all pl-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-gray-100 text-30">
<i class="fa-brands fa-tiktok text-black"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles Study<br />Abroad
</h3>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
</a>
</div>
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('google') }}">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-green-100 text-30">
<i class="fa-brands fa-google"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
</a>
</div>
</div>
</div>
@@ -246,20 +282,24 @@
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<a href="{{ setting('pinterest') }}">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-red-100 text-50">
<i class="fa-brands fa-pinterest text-brand"></i>
class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-red-100 text-50">
<i class="fa-brands fa-pinterest text-brand"></i>
</div>
</div>
<h3
class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
</a>
</div>
@@ -277,23 +317,27 @@
<div class="col col-12 p-0">
<div class="w-full flex flex-wrap justify-center module-icon-box">
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-blue-100 text-30">
<i class="fa-brands fa-linkedin text-sec"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
</div>
<div class="w-25percent sm:w-50percent">
<a href="{{ setting('linkedin') }}">
<div class="lqd-iconbox-scale transition-all mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-blue-100 text-30">
<i class="fa-brands fa-linkedin text-sec"></i>
</div>
</div>
<h3
class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
</a>
</div>
@@ -314,20 +358,24 @@
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<a href="{{ setting('youtube') }}">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-red-100 text-50">
<i class="fa-brands fa-youtube text-brand"></i>
class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-red-100 text-50">
<i class="fa-brands fa-youtube text-brand"></i>
</div>
</div>
<h3
class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
</a>
</div>
@@ -339,38 +387,38 @@
</div>
<!-- <div class="social-google pb-30">
<h3 class="text-sec2 text-46 md:text-24 pb-30 text-center">Google Business </h3>
<div class="row">
<h3 class="text-sec2 text-46 md:text-24 pb-30 text-center">Google Business </h3>
<div class="row">
<div class="col col-12 p-0">
<div class="w-full flex flex-wrap justify-center module-icon-box">
<div class="col col-12 p-0">
<div class="w-full flex flex-wrap justify-center module-icon-box">
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div class="w-25percent sm:w-50percent">
<div class="lqd-iconbox-scale transition-all pr-60 mb-30 sm:mb-0 hover:scale-1/1">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-green-100 text-30">
<i class="fa-brands fa-google"></i>
class="iconbox flex items-center flex-grow-1 relative flex-col iconbox-default iconbox-circle">
<div class="iconbox-icon-wrap">
<div
class="iconbox-icon-container inline-flex relative z-1 rounded-full mb-20 w-75 h-75 bg-green-100 text-30">
<i class="fa-brands fa-google"></i>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
<h3 class="lqd-iconbox-heading text-16 font-bold text-center leading-1em">
Raffles<br />Educare
</h3>
</div>
</div>
</div>
</div>
</div>
</div>
</div> -->
</div> -->
</div>
</div>

View File

@@ -7,23 +7,25 @@
</div>
<section class="container py-30 free-resources">
<div class="row">
<div class="col col-md-3"></div>
<div class="col col-md-9">
<div class="flex justify-between items-center ">
<div>
<div class="row">
<div class="col col-md-3"></div>
<div class="col col-md-9">
<div class="flex justify-between items-center ">
<div>
<h2 class="md:text-30 text-60 text-sec"> {{ $page->title }}</h2>
<div class="title-line "></div>
<h2 class="md:text-30 text-60 text-sec"> {{ $page->title }}</h2>
<div class="title-line "></div>
</div>
<button class="review-button"><p>Review</p></button>
</div>
<button class="review-button">
<p>Review</p>
</button>
</div>
</div>
</div>
</div>
@if ($page->children)
<section class="free-resources-content tab-container">
@@ -82,49 +84,61 @@
@php
$accordionId = "accordion-questions-{$index}";
@endphp
<div class="py-40">
<h3 class="text-20 text-brand">
{{ $page->title }} FAQ's
Frequently Asked Questions
</h3>
<div class="accordion accordion-title-underlined accordion-sm pt-20"
id="accordion-questions" role="tablist" aria-multiselectable="true">
@foreach ($page->custom as $key => $value)
<div class="accordion accordion-title-underlined accordion-sm pt-20"
id="{{ $accordionId }}" role="tablist" aria-multiselectable="true">
@foreach ($child->custom as $key => $item)
@php
$headingId = "heading-{$index}-{$key}";
$collapseId = "collapse-{$index}-{$key}";
@endphp
<div class="accordion-item panel mb-10">
<div class="accordion-heading" role="tab"
id="heading-question-{{ $key + 1 }}">
id="{{ $headingId }}">
<h4 class="accordion-title">
<a class="collapsed text-17 font-bold" role="button"
data-bs-toggle="collapse"
data-bs-parent="#accordion-questions"
href="index.php#collapse-question-item-{{ $key + 1 }}"
aria-expanded="false"
aria-controls="collapse-question-item-{{ $key + 1 }}">
<span
class="accordion-expander text-16 text-black"><i
href="#{{ $collapseId }}"
aria-expanded="{{ $loop->first ? 'true' : 'false' }}"
aria-controls="{{ $collapseId }}">
<span class="accordion-expander text-16 text-black">
<i
class="lqd-icn-ess icon-ion-ios-arrow-forward"></i>
<i
class="lqd-icn-ess icon-ion-ios-arrow-forward"></i></span><span
class="accordion-title-txt">{{ $value['icon'] ?? '' }}</span>
class="lqd-icn-ess icon-ion-ios-arrow-forward"></i>
</span>
<span
class="accordion-title-txt">{{ $item['icon'] ?? '' }}</span>
</a>
</h4>
</div>
<div id="collapse-question-item-{{ $key + 1 }}"
class="accordion-collapse collapse"
data-bs-parent="#accordion-questions" role="tabpanel"
aria-labelledby="heading-question-{{ $key + 1 }}">
<div id="{{ $collapseId }}"
class="accordion-collapse collapse {{ $loop->first ? 'show' : '' }}"
data-bs-parent="#{{ $accordionId }}" role="tabpanel"
aria-labelledby="{{ $headingId }}">
<div
class="accordion-content text-14 leading-20 text-black">
<p>{{ $value['key'] ?? '' }}</p>
<p>{{ $item['key'] ?? '' }}</p>
</div>
</div>
</div>
@endforeach
</div>
</div>
<!-- blog -->
<div class="lqd-section blog pt-20" id="blog" data-custom-animations="true"
{{-- <div class="lqd-section blog pt-20" id="blog" data-custom-animations="true"
data-ca-options='{"animationTarget": ".btn, .animation-element", "ease": "power4.out", "initValues":{"x": "-10px", "y": "10px", "opacity":0} , "animations":{"x": "0px", "y": "0px", "opacity":1}}'>
<div class="container">
<div class="row">
@@ -174,7 +188,7 @@
</div>
</div>
</div>
</div>
</div> --}}
</div>
</div>
</div>