Compare commits

...

23 Commits

Author SHA1 Message Date
5f8c1aed38 Merge branch 'main' of ssh://bibgit.com:22022/Bibhuti-Solutions/new_raffles into alika 2025-08-22 11:51:18 +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
7155c1a6fc fix: Update image sources to use dynamic asset paths and implement blog loop in CSR template 2025-08-21 18:08:59 +05:45
6e9b6291d3 changes 2025-08-21 18:04:02 +05:45
622b9e9445 fix: Update service icon background color to blue in header 2025-08-21 18:01:48 +05:45
3148715b73 terms and condition changes 2025-08-21 17:55:44 +05:45
6ff22bc02d gallary changes 2025-08-21 17:50:39 +05:45
badfdc4c70 change in event 2025-08-21 17:41:22 +05:45
3bfb3f2b20 event changes 2025-08-21 17:37:05 +05:45
a57e00191a fix: Update franchise template to use dynamic content for images and contact details 2025-08-21 17:25:31 +05:45
c77828de8c fix: Update slidesPerView setting for improved carousel responsiveness 2025-08-21 17:06:44 +05:45
50a2b09cfa fix: Increase slidesPerView setting for enhanced carousel display on larger screens 2025-08-21 17:04:48 +05:45
a504987ac1 fix: Update slidesPerView setting for improved carousel display on larger screens 2025-08-21 17:03:49 +05:45
e80c67c0e2 fix: Adjust slidesPerView setting for better responsiveness in carousel 2025-08-21 17:02:39 +05:45
41 changed files with 1641 additions and 748 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'],
]);
}
@@ -57,7 +61,7 @@ class WebsiteController extends Controller
$data['faqs'] = getFAQs(limit: null, order: 'desc');
$data['testimonials'] = getTestimonials(limit: null, order: 'desc');
$data['blogs'] = getBlogs(limit: 4, order: 'desc');
$data['partners'] = getPartners(limit: 4, order: 'desc');
$data['partners'] = getPartners();
$data['gallaries'] = getGalleries(limit: 6, order: 'asc');
$data['achievementGalleries'] = getGalleriesByCategory(limit: null, order: 'asc', category: 'achievement');
$data['visaGalleries'] = getGalleriesByCategory(limit: null, order: 'asc', category: 'visa-success');
@@ -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

@@ -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 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

@@ -68,7 +68,7 @@
@foreach ($tests as $test)
<a href="{{ route('test.single', $test->slug) }}"
class="service-item">
<div class="service-icon ">
<div class="service-icon blue-bg">
<img src="{{ asset($test->image) }}"
alt="">
</div>

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,167 +18,24 @@
<section class="lqd-section text-box-image pt-40 pb-30">
<div class="container">
<div class="row pb-20">
@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="assets/images/general/blog1.jfif"
alt="">
<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">How Successfully Used Paid Marketing to Drive
Incremental
Ticket Sale </h2>
<h2 class="text-20 text-ter text-center">{{ $data['key'] ?? '' }} </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="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>
@endforeach
</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="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>
<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="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>
<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="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>
<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="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>
<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="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>
<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="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>
<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="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>
</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

@@ -3,12 +3,7 @@
<section class="career">
<div class="p-20 ">
<div class="h-175 rounded-10 bg-after relative">
<img class="h-full w-full rounded-30 object-cover" src="assets/images/general/about-banner.png" alt="">
<!-- <div
class="flex justify-center flex-col text-center items-center w-70percent mx-auto absolute top-20percent left-15percent z-30">
<h2 class="md:text-40 text-94 text-white">CSR</h2>
</div> -->
<img class="h-full w-full rounded-30 object-cover" src="{{ asset($page->banner) }}" alt="">
</div>
@@ -29,7 +24,7 @@
<div class="content-wrapper">
<div class="image-section">
<div class="image-frame">
<img src="assets/images/general/about-banner.png" alt="" class="ceo-image">
<img src="{{ asset($page->image) }}" alt="" class="ceo-image">
</div>
</div>
@@ -38,12 +33,10 @@
<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>
@@ -99,8 +92,6 @@
<section class="section ">
<div class="container">
<h2 class="text-60 md:text-30 text-brand text-center">Blogs</h2>
<!-- <img class="w-20percent" src="assets/images/icons/line.png" alt=""> -->
</div>
</section>
@@ -108,63 +99,17 @@
<div class="container">
<div class="swiper mySwiper-img">
<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="assets/images/general/about-banner.png" 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">How do i manage my financials?</h3>
<h3 class="text-white text-20">{{ $blog->title }}</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img class="rounded-30"
src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img class="rounded-30"
src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img class="rounded-30"
src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img class="rounded-30"
src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img
class="rounded-30" src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
<div class="swiper-slide ">
<a class="h-full w-full relative bg-dark-before" href="blog-detail.php"> <img
class="rounded-30" src="assets/images/general/about-banner.png" alt="">
<div class="absolute left-5percent bottom-20">
<h3 class="text-white text-20">How do i manage my financials?</h3>
</div>
</a>
</div>
@endforeach
</div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
@@ -177,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>
@@ -187,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

@@ -1,8 +1,7 @@
@extends('client.raffles.layouts.app')
@section('content')
<div class="services-banner">
<img src="{{ asset('raffles/assets/assets/images/backgrounds_general/events-banner.png') }}" width="1425"
height="356" alt="events ">
<img src="{{ asset($page->banner) }}" width="1425" height="356" alt="events ">
</div>
<section class="section ">
@@ -18,116 +17,30 @@
<h2 class="ld-fh-element inline-block relative mt-10 mb-0 section-heading-sec">
Upcoming Events
</h2>
<!-- <div class="flex gap-10 mt-10">
<select name="" id="weekdays">
<option value="" selected hidden>select category</option>
<option value=""></option>
</select>
<select name="" id="eventType">
<option value="" selected hidden>select category</option>
<option value=""></option>
</select>
</div> -->
</div>
<div class="swiper swiper-events mt-40 mb-40">
<div class="swiper-wrapper">
@foreach ($upcomingEvents as $event)
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
<img src="{{ asset($event->image) }}" 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>
<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">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>
<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>
</a>
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="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="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="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="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>
@endforeach
</div>
<!-- Pagination -->
<!-- <div class="swiper-pagination"></div> -->
@@ -148,102 +61,27 @@
<div class="swiper swiper-events mt-40">
<div class="swiper-wrapper">
@foreach ($previousEvents as $event)
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="assets/images/general/event1.jfif" alt="">
<img src="{{ asset($event->image) }}" 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>
<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">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>
<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>
</a>
@endforeach
<a href="" class="swiper-slide">
<div class="event-block relative w-full">
<div class="w-full rounded-30">
<img src="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="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="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="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> -->
@@ -259,109 +97,31 @@
<h2 class="ld-fh-element inline-block relative mt-10 mb-0 section-heading-sec">
Blog
</h2>
<p class="text-18 text-center">Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptate, assumenda.
<p class="text-18 text-center">Our blog
features articles written by experts in the field, providing valuable information to help you achieve
your goals.</p>
</p>
</div>
<div class="swiper swiper-events mt-40 mb-20">
<div class="swiper-wrapper">
<a href="" class="swiper-slide flex flex-col gap-20 p-10 blog-post">
@foreach ($blogs as $blog)
<a href="{{ route('blog.single', $blog->slug) }}"
class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
<img class="w-full h-full object-cover rounded-16" src="{{ asset($blog->image) }}"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">How Successfully Used Paid Marketing to Drive Incremental
Ticket Sales</h2>
<h2 class="text-20 text-ter pt-10">{{ $blog->title }}</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">Lorem ipsum dolor sit amet consectetur adipisicing elit.
Inventore reprehenderit, dolor ad quis dignissimos aliquid nesciunt distinctio suscipit
ipsam voluptatum.</p>
<p class="text-12">12 Mar - Jhon Doe</p>
<p class="text-14 text-black">{{ $blog->short_description }}</p>
</div>
</a>
<a href="" class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">How Successfully Used Paid Marketing to Drive Incremental
Ticket Sales</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">Lorem ipsum dolor sit amet consectetur adipisicing elit.
Inventore reprehenderit, dolor ad quis dignissimos aliquid nesciunt distinctio suscipit
ipsam voluptatum.</p>
<p class="text-12">12 Mar - Jhon Doe</p>
</div>
</a>
<a href="" class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">How Successfully Used Paid Marketing to Drive Incremental
Ticket Sales</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">Lorem ipsum dolor sit amet consectetur adipisicing elit.
Inventore reprehenderit, dolor ad quis dignissimos aliquid nesciunt distinctio suscipit
ipsam voluptatum.</p>
<p class="text-12">12 Mar - Jhon Doe</p>
</div>
</a>
<a href="" class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">How Successfully Used Paid Marketing to Drive Incremental
Ticket Sales</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">Lorem ipsum dolor sit amet consectetur adipisicing elit.
Inventore reprehenderit, dolor ad quis dignissimos aliquid nesciunt distinctio suscipit
ipsam voluptatum.</p>
<p class="text-12">12 Mar - Jhon Doe</p>
</div>
</a>
<a href="" class="swiper-slide flex flex-col gap-20 p-10 blog-post">
<div class="w-100percent h-210 overflow-hidden rounded-16">
<img class="w-full h-full object-cover rounded-16" src="assets/images/general/blog1.jfif"
alt="">
</div>
<div>
<span class="bg-gray text-sec rounded-30 text-10 py-5 px-10 mt-10">20 min read</span>
<h2 class="text-20 text-ter pt-10">How Successfully Used Paid Marketing to Drive Incremental
Ticket Sales</h2>
</div>
<div class="flex flex-col gap-10">
<p class="text-14 text-black">Lorem ipsum dolor sit amet consectetur adipisicing elit.
Inventore reprehenderit, dolor ad quis dignissimos aliquid nesciunt distinctio suscipit
ipsam voluptatum.</p>
<p class="text-12">12 Mar - Jhon Doe</p>
</div>
</a>
@endforeach
</div>
<!-- Pagination -->
<!-- <div class="swiper-pagination"></div> -->
@@ -369,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

@@ -9,27 +9,20 @@
<div class="row sm:px-20 pr-30 first-row pt-20 pb-30">
<div class="col col-xl-6">
<div class="franchise-model">
<img src="assets/images/backgrounds_general/franchise-model.png" alt="">
<img src="{{ asset($page->image) }}" alt="">
</div>
</div>
<div class="col col-xl-6">
<div class="flex flex-col gap-10 pb-30 border-bottom">
<h2 class="md:text-20 text-50 text-sec">Franchise</h2>
<h2 class="md:text-20 text-50 text-sec">{{ $page->title }}</h2>
<h3 class="md:text-20 text-50 text-brand">Raffles EduCare</h3>
<p>Raffles Educare Associates Pvt. Ltd., established in 2005, is one of the best educational
consultancy
with a successful track record in the overseas education.Over the 15 years of excellence we have
97%
visa success rate along with highest student satisfaction, fulfilling the career dreams of many
students. Since the year of inception, we have been providing educational services of
international
standards and escalated to be one of the leading institutions.</p>
{!! $page->description !!}
</div>
<div class="flex flex-col gap-20 pt-20">
<h5 class="text-20 text-black">Have any questions?
Call/Whatsapp</h5>
<a class="text-26 text-black" href="tel:9801086208">+977 9801086208</a>
<a class="text-26 text-black" href="tel:9801086208">+977 {{ setting('mobile') }}</a>
</div>
</div>
@@ -108,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>
@@ -130,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>
@@ -168,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>
@@ -186,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>
@@ -199,18 +193,18 @@
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>
@@ -228,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>
@@ -250,15 +245,15 @@
<div class="flex justify-center gap-30 pt-30 flex-wrap">
<a class="flex items-center gap-10 border px-10 py-20" href="mailto:info@raffleseducare.com">
<i class="fa-solid fa-envelope text-brand text-18"></i>
<p class="text-white text-18 m-0 p-0">info@raffleseducare.com</p>
<p class="text-white text-18 m-0 p-0">{{ setting('email') }}</p>
</a>
<a class="flex items-center gap-10 border px-10 py-20" href="tel:info@+977-1234567890">
<i class="fa-solid fa-phone text-brand text-18"></i>
<p class="text-white text-18 m-0 p-0">+977-1234567890</p>
<p class="text-white text-18 m-0 p-0">+977-{{ setting('mobile') }}</p>
</a>
<div class="flex items-center gap-10 border px-10 py-20">
<i class="fa-solid fa-location-dot text-brand text-18"></i>
<p class="text-white text-18 m-0 p-0">Kathmandu, Nepal</p>
<p class="text-white text-18 m-0 p-0">{{ setting('location') }}</p>
</div>
</div>

View File

@@ -1,7 +1,7 @@
@extends('client.raffles.layouts.app')
@section('content')
<div class="services-banner">
<img src="assets/images/backgrounds_general/gallery-banner.png" width="1425" height="356" alt="Gallery ">
<img src="{{ $page->banner }}" width="1425" height="356" alt="Gallery ">
</div>
@@ -17,28 +17,9 @@
<div class="container">
<div class="gallery" id="gallery">
<img src="assets/images/gallery/1.png" alt="img1">
<img src="assets/images/gallery/2.png" alt="img1">
<img src="assets/images/gallery/3.png" alt="img1">
<img src="assets/images/gallery/4.png" alt="img1">
<img src="assets/images/gallery/5.png" alt="img1">
<img src="assets/images/gallery/16.png" alt="img1">
<img src="assets/images/gallery/7.png" alt="img1">
<img src="assets/images/gallery/8.png" alt="img1">
<img src="assets/images/gallery/9.png" alt="img1">
<img src="assets/images/gallery/10.png" alt="img1">
<img src="assets/images/gallery/11.png" alt="img1">
<img src="assets/images/gallery/12.png" alt="img1">
<img src="assets/images/gallery/13.png" alt="img1">
<img src="assets/images/gallery/14.png" alt="img1">
<img src="assets/images/gallery/15.png" alt="img1">
<img src="assets/images/gallery/16.png" alt="img1">
<img src="assets/images/gallery/17.png" alt="img1">
<img src="assets/images/gallery/17.png" alt="img1">
<img src="assets/images/gallery/17.png" alt="img1">
<img src="assets/images/gallery/17.png" alt="img1">
<img src="assets/images/gallery/9.png" alt="img1">
<img src="assets/images/gallery/11.png" alt="img1">
@foreach ($page->images as $image)
<img src="{{ asset($image) }}" alt="img1">
@endforeach
</div>

View File

@@ -3,7 +3,7 @@
<section class="career">
<div class="p-20 ">
<div class="h-175 rounded-10 bg-after relative">
<img class="h-full w-full rounded-30 object-cover" src="assets/images/general/about-banner.png" alt="">
<img class="h-full w-full rounded-30 object-cover" src="{{ asset($page->banner) }}" alt="">
</div>
@@ -21,53 +21,7 @@
<section class="lqd-section pt-40 pb-30">
<div class="container">
<section>
<div class="pb-30">
<h5 class="text-14 font-bold underline">Last updated: April 17, 2025</h5>
</div>
<div class="pb-20">
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
<p class="text-16 text-black"> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
</div>
<div class="pb-20">
<h4 class="text-24 font-bold pb-20">Accounts</h4>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Nemo, assumenda!</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
</div>
<div class="pb-20">
<h4 class="text-24 font-bold pb-20">Links To Other Web Sites</h4>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Nemo, assumenda!</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
</div>
<div class="pb-20">
<h4 class="text-24 font-bold pb-20">Termination</h4>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Nemo, assumenda!</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
<p class="text-16 text-black">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestiae
sed vitae explicabo unde veritatis? Assumenda dignissimos atque consectetur facilis soluta.</p>
</div>
</section>
{!! $page->description !!}

View File

@@ -17,7 +17,9 @@
<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>
<button class="review-button">
<p>Review</p>
</button>
</div>
@@ -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)
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>