classify admin
This commit is contained in:
82
resources/views/settings/about-us.blade.php
Normal file
82
resources/views/settings/about-us.blade.php
Normal file
@@ -0,0 +1,82 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('About Us') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@section('content')
|
||||
<section class="section">
|
||||
|
||||
<div class="card">
|
||||
<form action="{{ route('settings.store') }}" method="post" class="create-form-without-reset">
|
||||
@csrf
|
||||
<div class="card-body">
|
||||
<ul class="nav nav-tabs" id="languageTabs" role="tablist">
|
||||
@foreach ($languages as $lang)
|
||||
<li class="nav-item" role="presentation">
|
||||
<a class="nav-link {{ $loop->first ? 'active' : '' }}" id="tab-{{ $lang->id }}"
|
||||
data-bs-toggle="tab" href="#lang-{{ $lang->id }}" role="tab">
|
||||
{{ $lang->name }}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<div class="tab-content mt-3">
|
||||
@foreach ($languages as $lang)
|
||||
<div class="tab-pane fade {{ $loop->first ? 'show active' : '' }}" id="lang-{{ $lang->id }}"
|
||||
role="tabpanel">
|
||||
<input type="hidden" name="languages[]" value="{{ $lang->id }}">
|
||||
<div class="form-group">
|
||||
<label>{{ __('About Us') }} ({{ $lang->name }})</label>
|
||||
<textarea name="about_us[{{ $lang->id }}]" id="tinymce_editor_{{ $lang->id }}"
|
||||
class="tinymce_editor form-control" rows="6">{{ old("about_us.$lang->id", $translations['about_us'][$lang->id] ?? ($settings['about_us'] ?? '')) }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<div class="col-12 mt-3 d-flex justify-content-end">
|
||||
<button class="btn btn-primary" type="submit">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
tinymce.init({
|
||||
selector: '.tinymce_editor',
|
||||
height: 400,
|
||||
menubar: false,
|
||||
plugins: [
|
||||
'advlist autolink lists link charmap preview anchor',
|
||||
'searchreplace visualblocks code fullscreen',
|
||||
'insertdatetime table paste code help wordcount'
|
||||
],
|
||||
toolbar: 'undo redo | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | removeformat | code',
|
||||
setup: function(editor) {
|
||||
editor.on("change keyup", function() {
|
||||
editor.save();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
117
resources/views/settings/admob.blade.php
Normal file
117
resources/views/settings/admob.blade.php
Normal file
@@ -0,0 +1,117 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Admob')." ".__("Settings")}}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<form class="create-form-without-reset" action="{{ route('settings.store') }}" method="post" enctype="multipart/form-data">
|
||||
<div class="row d-flex mb-3">
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Banner Ad') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mt-3">
|
||||
<label for="banner_ad_id_android" class="col-sm-12 form-check-label mt-2">{{ __('Banner Ad Id Android') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="banner_ad_id_android" name="banner_ad_id_android" type="text" class="form-control" placeholder="{{ __('Banner Ad Id Android') }}" value="{{ $settings['banner_ad_id_android'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="banner_ad_id_ios" class="col-sm-12 form-check-label mt-2">{{ __('Banner Ad Id IOS') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="banner_ad_id_ios" name="banner_ad_id_ios" type="text" class="form-control" placeholder="{{ __('Banner Ad Id IOS') }}" value="{{ $settings['banner_ad_id_ios'] ?? '' }}">
|
||||
</div>
|
||||
<label class="col-sm-12 form-check-label mt-2" id='banner_ad_status'>{{__("Status")}}</label>
|
||||
<div class="col-sm-2 col-md-12 col-xs-12 mt-2">
|
||||
<div class="form-check form-switch ">
|
||||
<input type="hidden" name="banner_ad_status" id="banner_ad_status" value="{{ $settings['banner_ad_status'] ?? 0 }}">
|
||||
<input class="form-check-input switch-input status-switch" type="checkbox" role="switch" {{ isset($settings['banner_ad_status']) && $settings['banner_ad_status'] == '1' ? 'checked' : '' }} id="switch_banner_ad_status" aria-label="switch_banner_ad_status">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Interstitial Ad') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mt-3">
|
||||
<label for="interstitial_ad_id_android" class="col-sm-12 form-check-label mt-2">{{ __('Interstitial Ad Id Android') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="interstitial_ad_id_android" name="interstitial_ad_id_android" type="text" class="form-control" placeholder="{{ __('Interstitial Ad Id Android') }}" value="{{ $settings['interstitial_ad_id_android'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="interstitial_ad_id_ios" class="col-sm-12 form-check-label mt-2">{{ __('Interstitial Ad Id IOS') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="interstitial_ad_id_ios" name="interstitial_ad_id_ios" type="text" class="form-control" placeholder="{{ __('Interstitial Ad Id IOS') }}" value="{{ $settings['interstitial_ad_id_ios'] ?? '' }}">
|
||||
</div>
|
||||
<label class="col-sm-12 form-check-label mt-2" id='interstitial_ad_status'>{{__("Status")}}</label>
|
||||
<div class="col-sm-2 col-md-12 col-xs-12 mt-2">
|
||||
<div class="form-check form-switch ">
|
||||
<input type="hidden" name="interstitial_ad_status" id="interstitial_ad_status" value="{{ $settings['interstitial_ad_status'] ?? 0 }}">
|
||||
<input class="form-check-input switch-input status-switch" type="checkbox" role="switch" {{ isset($settings['interstitial_ad_status']) && $settings['interstitial_ad_status'] == '1' ? 'checked' : '' }} id="switch_interstitial_ad_status" aria-label="switch_interstitial_ad_status">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Native Ad') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mt-3">
|
||||
<label for="native _app_id_android" class="col-sm-12 form-check-label mt-2">{{ __('Native App Id Android') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="native_app_id_android" name="native_app_id_android" type="text" class="form-control" placeholder="{{ __('Native App Id Android') }}" value="{{ $settings['native_app_id_android'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="native _app_id_ios" class="col-sm-12 form-check-label mt-2">{{ __('Native App Id iOS') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="native_app_id_ios" name="native_app_id_ios" type="text" class="form-control" placeholder="{{ __('Native App Id iOS') }}" value="{{ $settings['native_app_id_ios'] ?? '' }}">
|
||||
</div>
|
||||
<label class="col-sm-12 form-check-label mt-2" id='native _ad_status'>{{__("Status")}}</label>
|
||||
<div class="col-sm-2 col-md-12 col-xs-12 mt-2">
|
||||
<div class="form-check form-switch ">
|
||||
<input type="hidden" name="native_ad_status" id="native_ad_status" value="{{ $settings['native _ad_status'] ?? 0 }}">
|
||||
<input class="form-check-input switch-input status-switch" type="checkbox" role="switch" {{ isset($settings['native_ad_status']) && $settings['native_ad_status'] == '1' ? 'checked' : '' }} id="switch_native_ad_status" aria-label="switch_native_ad_status">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary me-1 mb-3">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
@endsection
|
||||
85
resources/views/settings/contact-us.blade.php
Normal file
85
resources/views/settings/contact-us.blade.php
Normal file
@@ -0,0 +1,85 @@
|
||||
@extends('layouts.main')
|
||||
@section('title')
|
||||
{{ __('Contact Us') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<div class="card">
|
||||
<form action="{{ route('settings.store') }}" method="post" class="create-form-without-reset">
|
||||
@csrf
|
||||
<div class="card-body">
|
||||
<ul class="nav nav-tabs" id="languageTabs" role="tablist">
|
||||
@foreach($languages as $lang)
|
||||
<li class="nav-item" role="presentation">
|
||||
<a class="nav-link {{ $loop->first ? 'active' : '' }}"
|
||||
id="tab-{{ $lang->id }}"
|
||||
data-bs-toggle="tab"
|
||||
href="#lang-{{ $lang->id }}"
|
||||
role="tab">
|
||||
{{ $lang->name }}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<div class="tab-content mt-3">
|
||||
@foreach($languages as $lang)
|
||||
<div class="tab-pane fade {{ $loop->first ? 'show active' : '' }}"
|
||||
id="lang-{{ $lang->id }}"
|
||||
role="tabpanel">
|
||||
<input type="hidden" name="languages[]" value="{{ $lang->id }}">
|
||||
<div class="form-group">
|
||||
<label>{{ __("Contact Us") }} ({{ $lang->name }})</label>
|
||||
<textarea name="contact_us[{{ $lang->id }}]"
|
||||
id="tinymce_editor_contact_{{ $lang->id }}"
|
||||
class="tinymce_editor form-control"
|
||||
rows="6">{{ old("contact_us.$lang->id", $translations['contact_us'][$lang->id] ?? ($settings['contact_us'] ?? '')) }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<div class="col-12 mt-3 d-flex justify-content-end">
|
||||
<button class="btn btn-primary" type="submit">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
tinymce.init({
|
||||
selector: '.tinymce_editor',
|
||||
height: 400,
|
||||
menubar: false,
|
||||
plugins: [
|
||||
'advlist autolink lists link charmap preview anchor',
|
||||
'searchreplace visualblocks code fullscreen',
|
||||
'insertdatetime table paste code help wordcount'
|
||||
],
|
||||
toolbar: 'undo redo | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | removeformat | code',
|
||||
setup: function (editor) {
|
||||
editor.on("change keyup", function () {
|
||||
editor.save();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
109
resources/views/settings/default-currency.blade.php
Normal file
109
resources/views/settings/default-currency.blade.php
Normal file
@@ -0,0 +1,109 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Default Currency Settings') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<form class="create-form-without-reset" action="{{ route('settings.store') }}" method="post" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="row d-flex mb-3">
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Default Currency Settings') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-12 mt-2">
|
||||
<label for="currency_iso_code" class="col-sm-12 form-check-label mt-2">{{ __('Default Currency ISO Code') }}</label>
|
||||
@if(count($currencies) > 0)
|
||||
<select name="currency_iso_code" id="currency_iso_code" class="form-select form-control-sm">
|
||||
@foreach($currencies as $currency)
|
||||
<option value="{{ $currency->iso_code }}" {{ (isset($settings['currency_iso_code']) && $settings['currency_iso_code'] == $currency->iso_code) ? 'selected' : '' }}>
|
||||
{{ $currency->iso_code }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@else
|
||||
<input type="text" name="currency_iso_code" id="currency_iso_code" class="form-control"
|
||||
placeholder="e.g. USD" maxlength="3" required
|
||||
value="{{ $settings['currency_iso_code'] ?? '' }}"
|
||||
oninput="this.value = this.value.toUpperCase().replace(/[^A-Z]/g, '')">
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 mt-2">
|
||||
<label for="currency_symbol" class="col-sm-12 form-check-label mt-2">{{ __('Currency Symbol') }}</label>
|
||||
<input id="currency_symbol" name="currency_symbol" type="text" class="form-control" placeholder="{{ __('Currency Symbol') }}" value="{{ $settings['currency_symbol'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 mt-3">
|
||||
<label for="currency_symbol_position" class="col-sm-12 form-check-label mt-2">{{ __('Currency Symbol Position') }}</label>
|
||||
<div class="mt-2 d-flex align-items-center">
|
||||
<div class="form-check me-3">
|
||||
<input
|
||||
type="radio"
|
||||
id="currency_symbol_left"
|
||||
name="currency_symbol_position"
|
||||
value="left"
|
||||
class="form-check-input"
|
||||
{{ (isset($settings['currency_symbol_position']) && $settings['currency_symbol_position'] === 'left') ? 'checked' : '' }}
|
||||
>
|
||||
<label for="currency_symbol_left" class="form-check-label">{{ __('Left') }}</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
id="currency_symbol_right"
|
||||
name="currency_symbol_position"
|
||||
value="right"
|
||||
class="form-check-input"
|
||||
{{ (isset($settings['currency_symbol_position']) && $settings['currency_symbol_position'] === 'right') ? 'checked' : '' }}
|
||||
>
|
||||
<label for="currency_symbol_right" class="form-check-label">{{ __('Right') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6 mt-3">
|
||||
<label for="decimal_places" class="col-sm-12 form-check-label mt-2">{{ __('Decimal Places') }}</label>
|
||||
<input id="decimal_places" name="decimal_places" type="number" class="form-control" value="{{ $settings['decimal_places'] ?? 2 }}" min="0" max="6">
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6 mt-3">
|
||||
<label for="thousand_separator" class="col-sm-12 form-check-label mt-2">{{ __('Thousand Separator') }}</label>
|
||||
<input id="thousand_separator" name="thousand_separator" type="text" class="form-control" value="{{ $settings['thousand_separator'] ?? ',' }}" maxlength="1">
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6 mt-3">
|
||||
<label for="decimal_separator" class="col-sm-12 form-check-label mt-2">{{ __('Decimal Separator') }}</label>
|
||||
<input id="decimal_separator" name="decimal_separator" type="text" class="form-control" value="{{ $settings['decimal_separator'] ?? '.' }}" maxlength="1">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-12 d-flex justify-content-end mt-3">
|
||||
<button type="submit" class="btn btn-primary me-1 mb-3">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
@endsection
|
||||
74
resources/views/settings/dummy-data.blade.php
Normal file
74
resources/views/settings/dummy-data.blade.php
Normal file
@@ -0,0 +1,74 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Import Dummy Data') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="alert alert-warning" role="alert">
|
||||
<h5 class="alert-heading">
|
||||
<i class="fas fa-exclamation-triangle"></i> {{ __('Important Notice') }}
|
||||
</h5>
|
||||
<hr>
|
||||
<p class="mb-0">
|
||||
<strong>{{ __('Warning:') }}</strong>
|
||||
{{ __('This action will delete ALL categories and custom fields and insert fresh dummy data. This cannot be undone.') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<h6 class="alert-heading">
|
||||
<i class="fas fa-info-circle"></i> {{ __('Instructions:') }}
|
||||
</h6>
|
||||
<ol class="mb-0">
|
||||
<li>{{ __('Click the button below to import dummy data automatically.') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="mt-3 text-center">
|
||||
<button type="button" id="importDummyBtn" class="btn btn-danger btn-lg">
|
||||
<i class="fas fa-database"></i> {{ __('Import Dummy Data') }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
@section('script')
|
||||
@section('script')
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$('#importDummyBtn').on('click', function () {
|
||||
showSweetAlertForDataConfirmPopup(
|
||||
"{{ route('settings.dummy-data.import') }}",
|
||||
"POST",
|
||||
{
|
||||
text: "This action will delete ALL categories and custom fields and insert fresh dummy data. This cannot be undone.",
|
||||
confirmButtonText: "Yes, Delete & Import",
|
||||
data: {
|
||||
_token: "{{ csrf_token() }}"
|
||||
},
|
||||
successCallBack: function () {
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
86
resources/views/settings/file-manager.blade.php
Normal file
86
resources/views/settings/file-manager.blade.php
Normal file
@@ -0,0 +1,86 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('File Manager') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<form class="create-form-without-reset" action="{{ route('settings.file-manager.store') }}" method="post" enctype="multipart/form-data">
|
||||
<div class="row d-flex mb-3">
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('File Manager Setting') }}</h6>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-12 mt-2">
|
||||
<label for="file_manager" class="col-sm-12 form-check-label mt-2">{{ __('File Manager') }}</label>
|
||||
<select name="file_manager" id="file_manager" class="form-select form-control-sm">
|
||||
<option value="public">{{ __('Local Server') }}</option>
|
||||
<option value="s3">{{ __('AWS S3') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div id="s3_div" style="display: none">
|
||||
<label for="stripe_secret_key" class="col-sm-12 form-check-label mt-2">{{ __('AWS Access Key ID') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="stripe_secret_key" name="S3_aws_access_key_id" type="text" class="form-control" placeholder="{{ __('AWS Access Key ID') }}" value="{{ $settings['S3_aws_access_key_id'] ?? '' }}" >
|
||||
</div>
|
||||
|
||||
<label for="stripe_publishable_key" class="col-sm-12 form-check-label mt-2">{{ __('AWS Secret Access Key') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="AWS_SECRET_ACCESS_KEY" name="s3_aws_secret_access_key" type="text" class="form-control" placeholder="{{ __('AWS Secret Access Key') }}" value="{{ $settings['s3_aws_secret_access_key'] ?? '' }}" >
|
||||
</div>
|
||||
|
||||
<label for="stripe_webhook_secret" class="col-sm-12 form-check-label mt-2">{{ __('AWS Default Region') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="AWS_DEFAULT_REGION" name="s3_aws_default_region" type="text" class="form-control" placeholder="{{ __('AWS Default Region') }}" value="{{ $settings['s3_aws_default_region'] ?? '' }}" >
|
||||
</div>
|
||||
|
||||
<label for="stripe_webhook_url" class="col-sm-12 form-check-label mt-2">{{ __('AWS Bucket') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="AWS_BUCKET" name="s3_aws_bucket" type="text" class="form-control" placeholder="{{ __('AWS Bucket') }}" value="{{ $settings['s3_aws_default_region'] ?? '' }}" >
|
||||
</div>
|
||||
<label for="stripe_webhook_url" class="col-sm-12 form-check-label mt-2">{{ __('AWS URL') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="AWS_URL" name="s3_aws_url" type="text" class="form-control" placeholder="{{ __('AWS URL') }}" value="{{ $settings['s3_aws_url'] ?? '' }}" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-12 d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary me-1 mb-3">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{{--Stripe Payment Gateway END--}}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
$('#file_manager').val("{{$settings['file_manager'] ?? ''}}").trigger("change");
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
73
resources/views/settings/firebase.blade.php
Normal file
73
resources/views/settings/firebase.blade.php
Normal file
@@ -0,0 +1,73 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{__("Firebase Settings")}}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<div class="card">
|
||||
<form class="create-form-without-reset" action="{{ route('settings.firebase.update') }}" method="POST">
|
||||
<div class="card-body">
|
||||
<div class="row mt-1">
|
||||
<div class="card-body">
|
||||
<div class="form-group row">
|
||||
<label for="apiKey" class="col-sm-2 col-form-label text-center">{{__("Api Key")}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input name="apiKey" type="text" class="form-control" placeholder="{{__("Api Key")}}" id="apiKey" value="{{ $settings['apiKey'] ?? '' }}" required="">
|
||||
</div>
|
||||
|
||||
<label for="authDomain" class="col-sm-2 col-form-label text-center">{{__("Auth Domain")}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input required name="authDomain" type="text" class="form-control" placeholder="{{__("Auth Domain")}}" id="authDomain" value="{{ $settings['authDomain'] ?? '' }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="projectId" class="col-sm-2 col-form-label text-center">{{__("Project Id")}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input name="projectId" type="text" class="form-control" placeholder="{{__("Project Id")}}" id="projectId" value="{{ $settings['projectId'] ?? '' }}" required="">
|
||||
</div>
|
||||
<label for="storageBucket" class="col-sm-2 col-form-label text-center">{{__("Storage Bucket")}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input name="storageBucket" type="text" class="form-control" id="storageBucket" placeholder="{{__("Storage Buckets")}}" value="{{ $settings['storageBucket'] ?? '' }}" required="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="messagingSenderId" class="col-sm-2 col-form-label text-center">{{__("Messaging Sender Id")}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input name="messagingSenderId" type="text" class="form-control" placeholder="{{__("Messaging Sender Id")}}" id="messagingSenderId" value="{{ $settings['messagingSenderId'] ?? '' }}" required="">
|
||||
</div>
|
||||
<label for="appId" class="col-sm-2 col-form-label text-center">{{__("App Id")}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input name="appId" id="appId" type="text" class="form-control" placeholder="{{__("App Id")}}" value="{{ $settings['appId'] ?? '' }}" required="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
|
||||
<label for="measurementId" class="col-sm-2 col-form-label text-center">{{__("Measurement Id")}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input name="measurementId" type="text" class="form-control" id="measurementId" placeholder="{{__("Measurement Id")}}" value="{{ $settings['measurementId'] ?? '' }}" required="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 d-flex justify-content-end">
|
||||
<button type="submit" value="btnAdd" class="btn btn-primary me-1 mb-1">{{__("Save")}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
382
resources/views/settings/index.blade.php
Normal file
382
resources/views/settings/index.blade.php
Normal file
@@ -0,0 +1,382 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Settings') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<div class="row">
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.system') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<i class="fas fa-cogs text-dark icon_font_size "></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Settings') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.web-settings') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<i class="fas fa-cog text-dark icon_font_size "></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Web Settings') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.notification-setting') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<i class="fas fa-bell text-dark icon_font_size "></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Notification Settings') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.watermark-settings') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<i class="fas fa-solid fa-image text-dark icon_font_size "></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Watermark Settings') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.login-method') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<i class="fa fa-envelope text-dark icon_font_size"></i>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('OTP Provider Settings') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.dummy-data.index') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<i class="fas fa-database text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Import Dummy Data') }}</h5>
|
||||
<div class="">{{ __('Add dummy categories and custom fields') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.admob.index') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test ">
|
||||
<i class="fas fa-ad text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Admob') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.about-us.index') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test ">
|
||||
<i class="fas fa-info-circle text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('About Us') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.terms-conditions.index') }}" class="card setting_active_tab h-100"
|
||||
style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test ">
|
||||
<i class=" fas fa-file-contract text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Terms & Conditions') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.privacy-policy.index') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<i class=" fas fas fa-shield-alt text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Privacy Policy') }}</h5>
|
||||
<div class="{{ route('settings.privacy-policy.index') }}">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i></div>
|
||||
</div>
|
||||
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.refund-policy.index') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<i class=" fas fas fa-shield-alt text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Refund Policy') }}</h5>
|
||||
<div class="{{ route('settings.refund-policy.index') }}">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i></div>
|
||||
</div>
|
||||
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.contact-us.index') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<i class=" fas fas fa-address-book text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Contact Us') }}</h5>
|
||||
<div class="{{ route('settings.contact-us.index') }}">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i></div>
|
||||
</div>
|
||||
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{{-- <div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">--}}
|
||||
{{-- <a href="{{ route('settings.firebase.index') }}" class="card setting_active_tab h-100"--}}
|
||||
{{-- style="text-decoration: none;">--}}
|
||||
{{-- <div class="content d-flex h-100">--}}
|
||||
{{-- <div class="row mx-2 ">--}}
|
||||
{{-- <div class="provider_a test ">--}}
|
||||
{{-- <i class=" fas fa-cloud text-dark icon_font_size"></i>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="card-body">--}}
|
||||
{{-- <h5 class="title">{{ __('Firebase Settings') }}</h5>--}}
|
||||
{{-- <div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </a>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.language.index') }}" class="card setting_active_tab h-100"
|
||||
style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test ">
|
||||
<i class=" fas fas fa-language text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Languages') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.payment-gateway.index') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test ">
|
||||
<i class="fas fa-dollar-sign text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Payment Gateways') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.system-status.index') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test ">
|
||||
<i class="fas fa-external-link-square-alt text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('System Status') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.seo-settings.index') }}" class="card setting_active_tab h-100"
|
||||
style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test ">
|
||||
<i class="fab fa-searchengin text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Seo-Settings') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.file-manager.index') }}" class="card setting_active_tab h-100"
|
||||
style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<FontAwesomeIcon icon="" />
|
||||
<i class="fas fa-file-export text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('File Manager') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.default-currency.index') }}" class="card setting_active_tab h-100"
|
||||
style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test">
|
||||
<FontAwesomeIcon icon="" />
|
||||
<i class="fas bi-cash-stack text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Default Currency Settings') }}</h5>
|
||||
<div class="">{{ __('Go to settings') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@hasrole('Super Admin')
|
||||
<div class="col-xxl-3 col-xl-4 col-lg-6 col-md-12 mb-3">
|
||||
<a href="{{ route('settings.error-logs.index') }}" class="card setting_active_tab h-100" style="text-decoration: none;">
|
||||
<div class="content d-flex h-100">
|
||||
<div class="row mx-2 ">
|
||||
<div class="provider_a test ">
|
||||
<i class="fa fa-file-alt text-dark icon_font_size"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h5 class="title">{{ __('Log Viewer') }}</h5>
|
||||
<div class="">{{ __('Find Errors in your System') }} <i class="fas fa-arrow-right mt-2 arrow_icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@endhasrole
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
309
resources/views/settings/language.blade.php
Normal file
309
resources/views/settings/language.blade.php
Normal file
@@ -0,0 +1,309 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Languages') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="divider">
|
||||
<div class="divider-text">
|
||||
<h4>{{ __('Add Language') }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="card-body">
|
||||
<div class="row form-group">
|
||||
<div class="col-sm-12 col-md-12 form-group">
|
||||
{!! Form::open([
|
||||
'url' => route('language.store'),
|
||||
'files' => true,
|
||||
'data-parsley-validate',
|
||||
'class' => 'create-form',
|
||||
]) !!}
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 form-group mandatory ">
|
||||
{{ Form::label('Language Name', __('Language Name'), ['class' => 'form-label text-center']) }}
|
||||
{{ Form::text('name', '', ['class' => 'form-control', 'placeholder' => __('Language Name'), 'data-parsley-required' => 'true']) }}
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 form-group mandatory ">
|
||||
{{ Form::label('Language Name', __('Language Name') . ' (' . __('in English') . ')', ['class' => 'form-label text-center']) }}
|
||||
{{ Form::text('name_in_english', '', ['class' => 'form-control', 'placeholder' => __('Language Name') . ' (' . __('in English') . ')', 'data-parsley-required' => 'true']) }}
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 form-group mandatory ">
|
||||
{{ Form::label('Language Code', __('Language Code'), ['class' => 'form-label text-center']) }}
|
||||
{{ Form::text('code', '', ['class' => 'form-control', 'placeholder' => __('Language Code'), 'data-parsley-required' => 'true']) }}
|
||||
</div>
|
||||
{{-- <div class="col-sm-12 col-md-12 form-group mandatory ">
|
||||
{{ Form::label('Country Code', __('Country Code'), ['class' => 'form-label text-center']) }}
|
||||
{{ Form::text('country_code', '', ['class' => 'form-control', 'placeholder' => __('Country Code'), 'data-parsley-required' => 'true']) }}
|
||||
</div> --}}
|
||||
<div class="col-sm-12 col-md-12 form-group mandatory">
|
||||
{{ Form::label('country_code', __('Country Code'), ['class' => 'form-label text-center']) }}
|
||||
{{ Form::text('country_code', '', [
|
||||
'class' => 'form-control',
|
||||
'placeholder' => __('Country Code'),
|
||||
'data-parsley-required' => 'true',
|
||||
]) }}
|
||||
<small class="form-text text-muted">
|
||||
{{ __('Provide the two-letter ISO country code for a country. Reference:') }}
|
||||
<a href="https://countrycode.org" target="_blank">CountryCode.org</a>.
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 form-group mandatory">
|
||||
<label class="form-label ">{{ __('Image') }}</label>
|
||||
<div class="">
|
||||
<input class="filepond" type="file" name="image" id="favicon_icon">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-1 col-md-12">
|
||||
{{ Form::label('file', __('RTL'), ['class' => 'col-form-label text-center']) }}
|
||||
<div class="form-check form-switch col-12" style='padding-right:12.5rem;'>
|
||||
{{ Form::checkbox('rtl', '', false, ['class' => 'form-check-input', 'id' => 'rtl']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{-- <div class="row">
|
||||
<div class="col-sm-2 col-md-12 form-group mandatory">
|
||||
{{ Form::label('file', __('File For Admin Panel'), ['class' => 'form-label text-center', 'accept' => '.json.*']) }}
|
||||
{{ Form::file('panel_file', ['class' => 'form-control', 'language code', 'data-parsley-required' => 'true', 'accept' => '.json']) }}
|
||||
</div>
|
||||
<div class="col-sm-2 col-md-12 form-group mandatory">
|
||||
{{ Form::label('file', __('File For App'), ['class' => 'form-label text-center', 'accept' => '.json.*']) }}
|
||||
{{ Form::file('app_file', ['class' => 'form-control', 'data-parsley-required' => 'true', 'accept' => '.json']) }}
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2 col-md-12 form-group mandatory">
|
||||
{{ Form::label('file', __('File For Web'), ['class' => 'form-label text-center', 'accept' => '.json.*']) }}
|
||||
{{ Form::file('web_file', ['class' => 'form-control', 'data-parsley-required' => 'true', 'accept' => '.json']) }}
|
||||
</div>
|
||||
|
||||
<div class="col-sm-1 col-md-4">
|
||||
{{ Form::label('file', __('Sample for Admin'), ['class' => 'col-form-label text-center']) }}
|
||||
<div class="form-check form-switch col-12" style='padding-right:12.5rem;'>
|
||||
<a class="btn icon btn-primary btn-sm rounded-pill" href="{{ route('language.download.panel.json') }}" title="Edit">
|
||||
<i class="bi bi-download"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-1 col-md-4">
|
||||
{{ Form::label('file', __('Sample For App'), ['class' => 'col-form-label text-center']) }}
|
||||
<div class="form-check form-switch col-12" style='padding-right:12.5rem;'>
|
||||
<a class="btn icon btn-primary btn-sm rounded-pill" href="{{ route('language.download.app.json') }}" title="Edit">
|
||||
<i class="bi bi-download"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-1 col-md-4">
|
||||
{{ Form::label('file', __('Sample For Web'), ['class' => 'col-form-label text-center']) }}
|
||||
<div class="form-check form-switch col-12" style='padding-right:12.5rem;'>
|
||||
<a class="btn icon btn-primary btn-sm rounded-pill" href="{{ route('language.download.web.json') }}" title="Edit">
|
||||
<i class="bi bi-download"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
<div class="col-sm-12 d-flex justify-content-end mt-3">
|
||||
{{ Form::submit(__('Save'), ['class' => 'btn btn-primary me-1 mb-1']) }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<table class="table-light table-striped" aria-describedby="mydesc" id="table_list"
|
||||
data-toggle="table" data-url="{{ route('language.show', 1) }}"
|
||||
data-click-to-select="true" data-side-pagination="server" data-pagination="true"
|
||||
data-page-list="[5, 10, 20, 50, 100, 200]" data-search="true" data-toolbar="#toolbar"
|
||||
data-show-columns="true" data-show-refresh="true" data-fixed-columns="true"
|
||||
data-fixed-number="1" data-fixed-right-number="1" data-trim-on-search="false"
|
||||
data-responsive="true" data-sort-name="id" data-sort-order="desc"
|
||||
data-pagination-successively-size="3" data-escape="true" data-query-params="queryParams"
|
||||
data-mobile-responsive="true">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" data-field="id" data-sortable="true">{{ __('ID') }}
|
||||
</th>
|
||||
<th scope="col" data-field="name" data-sortable="false">{{ __('Name') }}
|
||||
</th>
|
||||
<th scope="col" data-field="name_in_english" data-sortable="false">
|
||||
{{ __('Name') . ' (' . __('in English') . ')' }}</th>
|
||||
<th scope="col" data-field="code" data-sortable="true">
|
||||
{{ __('Language Code') }}</th>
|
||||
<th scope="col" data-field="country_code" data-sortable="true">
|
||||
{{ __('Country Code') }}</th>
|
||||
{{-- <th scope="col" data-field="rtl_text" data-sortable="true">{{ __('RTL') }}</th> --}}
|
||||
<th scope="col" data-field="image" data-sortable="false"
|
||||
data-formatter="imageFormatter">{{ __('Image') }}</th>
|
||||
<th scope="col" data-field="operate" data-escape="false"
|
||||
data-sortable="false" data-events="languageEvents">{{ __('Action') }}</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- EDIT MODEL MODEL -->
|
||||
<div id="editModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel1" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<form action="#" class="form-horizontal" id="edit-form" enctype="multipart/form-data" method="POST"
|
||||
data-parsley-validate>
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="myModalLabel1">{{ __('Edit Language') }}</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="col-md-12 col-12">
|
||||
<div class="form-group mandatory">
|
||||
<label for="edit_name"
|
||||
class="form-label col-12">{{ __('Language Name') }}</label>
|
||||
<input type="text" id="edit_name" class="form-control col-12"
|
||||
placeholder="{{ __('Name') }}" name="name"
|
||||
data-parsley-required="true">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12">
|
||||
<div class="col-md-12 col-12">
|
||||
<div class="form-group mandatory">
|
||||
<label for="edit_name_in_english"
|
||||
class="form-label col-12">{{ __('Language Name') }}({{ __('in English') }})</label>
|
||||
<input type="text" id="edit_name_in_english" class="form-control col-12"
|
||||
placeholder="{{ __('Name') }}" name="name_in_english"
|
||||
data-parsley-required="true">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div class="col-md-12 col-12">
|
||||
<div class="form-group mandatory">
|
||||
<label for="edit_code"
|
||||
class="form-label col-12">{{ __('Language Code') }}</label>
|
||||
<input type="text" id="edit_code" class="form-control col-12"
|
||||
placeholder="{{ __('Language Code') }}" name="code"
|
||||
data-parsley-required="true">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div class="col-md-12 col-12">
|
||||
<div class="form-group mandatory">
|
||||
<label for="edit_code" class="form-label col-12">{{ __('Country Code') }}</label>
|
||||
<input type="text" id="edit_country_code" class="form-control col-12"
|
||||
placeholder="{{ __('Country Code') }}" name="country_code"
|
||||
data-parsley-required="true">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 form-group">
|
||||
<label class="col-form-label ">{{ __('Image') }}</label>
|
||||
<div class="">
|
||||
<input class="filepond" type="file" name="image" id="edit_image">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div class="col-md-12 col-12">
|
||||
<div class="form-group">
|
||||
<label for="edit_panel_file"
|
||||
class="form-label col-12">{{ __('File For Admin Panel') }}</label>
|
||||
<input type="file" id="edit_panel_file" class="form-control col-12"
|
||||
name="panel_file" accept=".json">
|
||||
<a id="download_panel_file" href="#" target="_blank"
|
||||
class="btn btn-sm btn-outline-primary mt-2">
|
||||
<i class="bi bi-download"></i> {{ __('Download Current') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12">
|
||||
<div class="col-md-12 col-12">
|
||||
<div class="form-group">
|
||||
<label for="edit_app_file"
|
||||
class="form-label col-12">{{ __('File For App') }}</label>
|
||||
<input type="file" id="edit_app_file" class="form-control col-12"
|
||||
name="app_file" accept=".json">
|
||||
<a id="download_app_file" href="#" target="_blank"
|
||||
class="btn btn-sm btn-outline-primary mt-2">
|
||||
<i class="bi bi-download"></i> {{ __('Download Current') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12">
|
||||
<div class="col-md-12 col-12">
|
||||
<div class="form-group">
|
||||
<label for="edit_web_file"
|
||||
class="form-label col-12">{{ __('File For Web') }}</label>
|
||||
<input type="file" id="edit_web_file" class="form-control col-12"
|
||||
name="web_file" accept=".json">
|
||||
<a id="download_web_file" href="#" target="_blank"
|
||||
class="btn btn-sm btn-outline-primary mt-2">
|
||||
<i class="bi bi-download"></i> {{ __('Download Current') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12">
|
||||
<div class="col-md-12 col-12">
|
||||
<div class="form-group form-check form-switch">
|
||||
<label for="edit_rtl" class="form-label col-12">{{ __('RTL') }}</label>
|
||||
<input type="hidden" value="0" name="rtl" id="edit_rtl">
|
||||
<input type="checkbox" class="form-check-input status-switch"
|
||||
id="edit_rtl_switch" aria-label="edit_rtl">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary waves-effect"
|
||||
data-bs-dismiss="modal">{{ __('Close') }}</button>
|
||||
<button type="submit"
|
||||
class="btn btn-primary waves-effect waves-light">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
39
resources/views/settings/languageedit.blade.php
Normal file
39
resources/views/settings/languageedit.blade.php
Normal file
@@ -0,0 +1,39 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Edit Language') }}
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<div class="row">
|
||||
<form action="{{ route('updatelanguage', ['id' => $language->id, 'type' => $type]) }}" method="POST" enctype="multipart/form-data" class="editlanguage-form">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="card">
|
||||
<div class="card-header">{{ __("Language JSON - " .($type)) }}
|
||||
<!-- <button type="button" class="btn btn-secondary float-end" onclick="location.href='{{ route('auto-translate', ['id' => $language->id, 'type' => $type, 'locale' => $language->code]) }}'">
|
||||
Auto Translate
|
||||
</button> -->
|
||||
|
||||
</div>
|
||||
<div class="card-body mt-3">
|
||||
<div class="row">
|
||||
@foreach($enLabels as $key => $value)
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label for="value-{{ $loop->index }}" class="form-labe">{{$key}}</label>
|
||||
<input type="text" class="form-control" id="value-{{ $loop->index }}" name="values[]" value="{{ $value }}" required>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<button type="submit" class="btn btn-primary">{{__("Save Changes")}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
79
resources/views/settings/login-method.blade.php
Normal file
79
resources/views/settings/login-method.blade.php
Normal file
@@ -0,0 +1,79 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('OTP Provider Settings') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<form class="create-form-without-reset" action="{{ route('settings.store') }}" method="post" enctype="multipart/form-data" data-success-function="successFunction" data-parsley-validate>
|
||||
@csrf
|
||||
<div class="row d-flex mb-3">
|
||||
<div class="card mb-0">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('OTP Provider Settings') }}</h6>
|
||||
</div>
|
||||
{{-- OTP Services Provider --}}
|
||||
<div class="form-group row mt-3" id="otp-services-provider-div">
|
||||
<label class="col-sm-12 form-label-mandatory" for="otp-services-provider">{{ __('OTP Services Provider') }}</label>
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<select name="otp_service_provider" id="otp-services-provider" class="choosen-select form-select form-control-sm otp-services-provider">
|
||||
<option value="firebase" {{ !empty($settings['otp_service_provider']) && $settings['otp_service_provider'] == 'firebase' ? 'selected' : '' }}>{{ __('Firebase') }}</option>
|
||||
<option value="twilio" {{ !empty($settings['otp_service_provider']) && $settings['otp_service_provider'] == 'twilio' ? 'selected' : '' }}>{{ __('Twilio') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Twilio SMS Settings --}}
|
||||
<div class="col-12 mt-2 p-4 row bg-light" id="twilio-sms-settings-div">
|
||||
<h5>{{ __('Twilio SMS Settings') }}</h5>
|
||||
|
||||
<div class="form-group row mt-3">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="twilio_account_sid" class="form-label">{{ __('Account SID') }}</label>
|
||||
<input type="text" name="twilio_account_sid" id="twilio_account_sid" class="form-control" placeholder="{{ __('Account SID') }}" value="{{ $settings['twilio_account_sid'] ?? '' }}">
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="twilio_auth_token" class="form-label">{{ __('Auth Token') }}</label>
|
||||
<input type="text" name="twilio_auth_token" id="twilio_auth_token" class="form-control" placeholder="{{ __('Auth Token') }}" value="{{ $settings['twilio_auth_token'] ?? '' }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mt-3">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="twilio_my_phone_number" class="form-label">{{ __('My Twilio Phone Number') }}</label>
|
||||
<input type="text" name="twilio_my_phone_number" id="twilio_my_phone_number" class="form-control" placeholder="{{ __('My Twilio Phone Number') }}" value="{{ $settings['twilio_my_phone_number'] ?? '' }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 d-flex justify-content-end">
|
||||
<button type="submit" value="btnAdd" class="btn btn-primary me-1 mb-3">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('js')
|
||||
<script>
|
||||
function successFunction() {
|
||||
window.location.reload();
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
101
resources/views/settings/notification-setting.blade.php
Normal file
101
resources/views/settings/notification-setting.blade.php
Normal file
@@ -0,0 +1,101 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Notification Settings') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<form class="create-form-without-reset" action="{{route('settings.store') }}" method="post" enctype="multipart/form-data" data-success-function="successFunction" data-parsley-validate>
|
||||
@csrf
|
||||
<div class="row d-flex mb-3">
|
||||
<div class="card mb-0">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('FCM Notification Settings') }}</h6>
|
||||
</div>
|
||||
<div class="form-group row mt-3">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="firebase_project_id" class="form-label">{{ __('Firebase Project Id') }}</label>
|
||||
<input type="text" id="firebase_project_id" name="firebase_project_id" class="form-control" placeholder="{{ __('Firebase Project Id') }}" value="{{ $settings['firebase_project_id'] ?? '' }}"/>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="service_file" class="form-label">{{ __('Service Json File') }}</label><span style="color: #00B2CA">
|
||||
* {{ __('Accept only Json File') }}</span>
|
||||
<input id="service_file" name="service_file" type="file" class="form-control">
|
||||
<p style="display: none" id="img_error_msg" class="badge rounded-pill bg-danger"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row d-flex mb-3">
|
||||
<div class="card mb-0">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Email Notification Settings') }}</h6>
|
||||
</div>
|
||||
<div class="form-group row mt-3">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="mail_mailer" class="form-label">{{ __('Mail Mailer') }}</label>
|
||||
<input type="text" id="mail_mailer" name="mail_mailer" class="form-control" placeholder="{{ __('Mail Mailer') }}" value="{{ $settings['mail_mailer'] ?? '' }}"/>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="mail_host" class="form-label">{{ __('Mail Host') }}</label>
|
||||
<input type="text" id="mail_host" name="mail_host" class="form-control" placeholder="{{ __('Mail Host') }}" value="{{ $settings['mail_host'] ?? '' }}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-3">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="mail_port" class="form-label">{{ __('Mail Port') }}</label>
|
||||
<input type="text" id="mail_port" name="mail_port" class="form-control" placeholder="{{ __('Mail Port') }}" value="{{ $settings['mail_port'] ?? '' }}"/>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="mail_username" class="form-label">{{ __('Mail Username') }}</label>
|
||||
<input type="text" id="mail_username" name="mail_username" class="form-control" placeholder="{{ __('Mail Username') }}" value="{{ $settings['mail_username'] ?? '' }}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-3">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="mail_password" class="form-label">{{ __('Mail Password') }}</label>
|
||||
<input type="password" id="mail_password" name="mail_password" class="form-control" placeholder="{{ __('Mail Password') }}" value="{{ $settings['mail_password'] ?? '' }}"/>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="mail_encryption" class="form-label">{{ __('Mail Encryption') }}</label>
|
||||
<input type="text" id="mail_encryption" name="mail_encryption" class="form-control" placeholder="{{ __('Mail Encryption') }}" value="{{ $settings['mail_encryption'] ?? '' }}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-3">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="mail_from_address" class="form-label">{{ __('Mail From Address') }}</label>
|
||||
<input type="text" id="mail_from_address" name="mail_from_address" class="form-control" placeholder="{{ __('Mail From Address') }}" value="{{ $settings['mail_from_address'] ?? '' }}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 d-flex justify-content-end">
|
||||
<button type="submit" value="btnAdd" class="btn btn-primary me-1 mb-3">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
@endsection
|
||||
@section('js')
|
||||
<script>
|
||||
function successFunction() {
|
||||
window.location.reload();
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
827
resources/views/settings/payment-gateway.blade.php
Normal file
827
resources/views/settings/payment-gateway.blade.php
Normal file
@@ -0,0 +1,827 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Payment Gateways Settings') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<form class="create-form-without-reset" action="{{ route('settings.payment-gateway.store') }}" method="post"
|
||||
enctype="multipart/form-data">
|
||||
<div class="row d-flex mb-3">
|
||||
|
||||
{{-- Stripe Payment Gateway START --}}
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Stripe Setting') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mt-3">
|
||||
<label for="stripe_currency_code"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Stripe Currency Symbol') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<select name="gateway[Stripe][currency_code]" id="stripe_currency_code"
|
||||
class="select2 form-select form-control">
|
||||
<option value="USD">USD</option>
|
||||
<option value="AED">AED</option>
|
||||
<option value="AFN">AFN</option>
|
||||
<option value="ALL">ALL</option>
|
||||
<option value="AMD">AMD</option>
|
||||
<option value="ANG">ANG</option>
|
||||
<option value="AOA">AOA</option>
|
||||
<option value="ARS">ARS</option>
|
||||
<option value="AUD">AUD</option>
|
||||
<option value="AWG">AWG</option>
|
||||
<option value="AZN">AZN</option>
|
||||
<option value="BAM">BAM</option>
|
||||
<option value="BBD">BBD</option>
|
||||
<option value="BDT">BDT</option>
|
||||
<option value="BGN">BGN</option>
|
||||
<option value="BMD">BMD</option>
|
||||
<option value="BND">BND</option>
|
||||
<option value="BOB">BOB</option>
|
||||
<option value="BRL">BRL</option>
|
||||
<option value="BSD">BSD</option>
|
||||
<option value="BWP">BWP</option>
|
||||
<option value="BYN">BYN</option>
|
||||
<option value="BZD">BZD</option>
|
||||
<option value="CAD">CAD</option>
|
||||
<option value="CDF">CDF</option>
|
||||
<option value="CHF">CHF</option>
|
||||
<option value="CNY">CNY</option>
|
||||
<option value="COP">COP</option>
|
||||
<option value="CRC">CRC</option>
|
||||
<option value="CVE">CVE</option>
|
||||
<option value="CZK">CZK</option>
|
||||
<option value="DKK">DKK</option>
|
||||
<option value="DOP">DOP</option>
|
||||
<option value="DZD">DZD</option>
|
||||
<option value="EGP">EGP</option>
|
||||
<option value="ETB">ETB</option>
|
||||
<option value="EUR">EUR</option>
|
||||
<option value="FJD">FJD</option>
|
||||
<option value="FKP">FKP</option>
|
||||
<option value="GBP">GBP</option>
|
||||
<option value="GEL">GEL</option>
|
||||
<option value="GIP">GIP</option>
|
||||
<option value="GMD">GMD</option>
|
||||
<option value="GTQ">GTQ</option>
|
||||
<option value="GYD">GYD</option>
|
||||
<option value="HKD">HKD</option>
|
||||
<option value="HNL">HNL</option>
|
||||
<option value="HTG">HTG</option>
|
||||
<option value="HUF">HUF</option>
|
||||
<option value="IDR">IDR</option>
|
||||
<option value="ILS">ILS</option>
|
||||
<option value="INR">INR</option>
|
||||
<option value="ISK">ISK</option>
|
||||
<option value="JMD">JMD</option>
|
||||
<option value="KES">KES</option>
|
||||
<option value="KGS">KGS</option>
|
||||
<option value="KHR">KHR</option>
|
||||
<option value="KYD">KYD</option>
|
||||
<option value="KZT">KZT</option>
|
||||
<option value="LAK">LAK</option>
|
||||
<option value="LBP">LBP</option>
|
||||
<option value="LKR">LKR</option>
|
||||
<option value="LRD">LRD</option>
|
||||
<option value="LSL">LSL</option>
|
||||
<option value="MAD">MAD</option>
|
||||
<option value="MDL">MDL</option>
|
||||
<option value="MKD">MKD</option>
|
||||
<option value="MMK">MMK</option>
|
||||
<option value="MNT">MNT</option>
|
||||
<option value="MOP">MOP</option>
|
||||
<option value="MUR">MUR</option>
|
||||
<option value="MVR">MVR</option>
|
||||
<option value="MWK">MWK</option>
|
||||
<option value="MXN">MXN</option>
|
||||
<option value="MYR">MYR</option>
|
||||
<option value="MZN">MZN</option>
|
||||
<option value="NAD">NAD</option>
|
||||
<option value="NGN">NGN</option>
|
||||
<option value="NIO">NIO</option>
|
||||
<option value="NOK">NOK</option>
|
||||
<option value="NPR">NPR</option>
|
||||
<option value="NZD">NZD</option>
|
||||
<option value="PAB">PAB</option>
|
||||
<option value="PEN">PEN</option>
|
||||
<option value="PGK">PGK</option>
|
||||
<option value="PHP">PHP</option>
|
||||
<option value="PKR">PKR</option>
|
||||
<option value="PLN">PLN</option>
|
||||
<option value="QAR">QAR</option>
|
||||
<option value="RON">RON</option>
|
||||
<option value="RSD">RSD</option>
|
||||
<option value="RUB">RUB</option>
|
||||
<option value="SAR">SAR</option>
|
||||
<option value="SBD">SBD</option>
|
||||
<option value="SCR">SCR</option>
|
||||
<option value="SEK">SEK</option>
|
||||
<option value="SGD">SGD</option>
|
||||
<option value="SHP">SHP</option>
|
||||
<option value="SLE">SLE</option>
|
||||
<option value="SOS">SOS</option>
|
||||
<option value="SRD">SRD</option>
|
||||
<option value="STD">STD</option>
|
||||
<option value="SZL">SZL</option>
|
||||
<option value="THB">THB</option>
|
||||
<option value="TJS">TJS</option>
|
||||
<option value="TOP">TOP</option>
|
||||
<option value="TRY">TRY</option>
|
||||
<option value="TTD">TTD</option>
|
||||
<option value="TWD">TWD</option>
|
||||
<option value="TZS">TZS</option>
|
||||
<option value="UAH">UAH</option>
|
||||
<option value="UYU">UYU</option>
|
||||
<option value="UZS">UZS</option>
|
||||
<option value="WST">WST</option>
|
||||
<option value="XAF">XAF</option>
|
||||
<option value="XCD">XCD</option>
|
||||
<option value="YER">YER</option>
|
||||
<option value="ZAR">ZAR</option>
|
||||
<option value="ZMW">ZMW</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label for="stripe_secret_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Stripe Secret key') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="stripe_secret_key" name="gateway[Stripe][secret_key]" type="text"
|
||||
class="form-control" placeholder="{{ __('Stripe Secret key') }}"
|
||||
value="{{ $paymentGateway['Stripe']['secret_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="stripe_publishable_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Stripe Publishable key') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="stripe_publishable_key" name="gateway[Stripe][api_key]" type="text"
|
||||
class="form-control" placeholder="{{ __('Stripe Publishable key') }}"
|
||||
value="{{ $paymentGateway['Stripe']['api_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="stripe_webhook_secret"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Stripe Webhook Secret') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="stripe_webhook_secret" name="gateway[Stripe][webhook_secret_key]"
|
||||
type="text" class="form-control"
|
||||
placeholder="{{ __('Stripe Webhook Secret') }}"
|
||||
value="{{ $paymentGateway['Stripe']['webhook_secret_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="stripe_webhook_url"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Stripe Webhook URL') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="stripe_webhook_url" name="gateway[Stripe][webhook_url]" type="text"
|
||||
class="form-control" placeholder="{{ __('Stripe Webhook URL') }}"
|
||||
value="{{ url('/webhook/stripe') }}" disabled>
|
||||
</div>
|
||||
|
||||
<label class="col-sm-12 form-check-label mt-2"
|
||||
id='lbl_stripe'>{{ __('Status') }}</label>
|
||||
<div class="col-sm-2 col-md-12 col-xs-12 mt-2">
|
||||
<div class="form-check form-switch ">
|
||||
<input type="hidden" name="gateway[Stripe][status]" id="stripe_gateway"
|
||||
value="{{ $paymentGateway['Stripe']['status'] ?? 0 }}">
|
||||
<input class="form-check-input switch-input status-switch" type="checkbox"
|
||||
role="switch" name='op'
|
||||
{{ isset($paymentGateway['Stripe']['status']) && $paymentGateway['Stripe']['status'] == '1' ? 'checked' : '' }}
|
||||
id="switch_stripe_gateway" aria-label="switch_stripe_gateway">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{-- Stripe Payment Gateway END --}}
|
||||
|
||||
{{-- Razorpay Payment Gateway START --}}
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Razorpay Setting') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mt-3">
|
||||
<label for="razorpay_currency_code"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Razorpay Currency Symbol') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<select name="gateway[Razorpay][currency_code]" id="razorpay_currency_code"
|
||||
class="select2 form-select form-control">
|
||||
<option value="AED">AED</option>
|
||||
<option value="ALL">ALL</option>
|
||||
<option value="AMD">AMD</option>
|
||||
<option value="ARS">ARS</option>
|
||||
<option value="AUD">AUD</option>
|
||||
<option value="AWG">AWG</option>
|
||||
<option value="AZN">AZN</option>
|
||||
<option value="BAM">BAM</option>
|
||||
<option value="BBD">BBD</option>
|
||||
<option value="BDT">BDT</option>
|
||||
<option value="BGN">BGN</option>
|
||||
<option value="BHD">BHD</option>
|
||||
<option value="BIF">BIF</option>
|
||||
<option value="BMD">BMD</option>
|
||||
<option value="BND">BND</option>
|
||||
<option value="BOB">BOB</option>
|
||||
<option value="BRL">BRL</option>
|
||||
<option value="BSD">BSD</option>
|
||||
<option value="BTN">BTN</option>
|
||||
<option value="BWP">BWP</option>
|
||||
<option value="BZD">BZD</option>
|
||||
<option value="CAD">CAD</option>
|
||||
<option value="CHF">CHF</option>
|
||||
<option value="CLP">CLP</option>
|
||||
<option value="CNY">CNY</option>
|
||||
<option value="COP">COP</option>
|
||||
<option value="CRC">CRC</option>
|
||||
<option value="CUP">CUP</option>
|
||||
<option value="CVE">CVE</option>
|
||||
<option value="CZK">CZK</option>
|
||||
<option value="DJF">DJF</option>
|
||||
<option value="DKK">DKK</option>
|
||||
<option value="DOP">DOP</option>
|
||||
<option value="DZD">DZD</option>
|
||||
<option value="EGP">EGP</option>
|
||||
<option value="ETB">ETB</option>
|
||||
<option value="EUR">EUR</option>
|
||||
<option value="FJD">FJD</option>
|
||||
<option value="GBP">GBP</option>
|
||||
<option value="GHS">GHS</option>
|
||||
<option value="GIP">GIP</option>
|
||||
<option value="GMD">GMD</option>
|
||||
<option value="GNF">GNF</option>
|
||||
<option value="GTQ">GTQ</option>
|
||||
<option value="GYD">GYD</option>
|
||||
<option value="HKD">HKD</option>
|
||||
<option value="HNL">HNL</option>
|
||||
<option value="HRK">HRK</option>
|
||||
<option value="HTG">HTG</option>
|
||||
<option value="HUF">HUF</option>
|
||||
<option value="IDR">IDR</option>
|
||||
<option value="ILS">ILS</option>
|
||||
<option value="INR">INR</option>
|
||||
<option value="IQD">IQD</option>
|
||||
<option value="ISK">ISK</option>
|
||||
<option value="JMD">JMD</option>
|
||||
<option value="JOD">JOD</option>
|
||||
<option value="JPY">JPY</option>
|
||||
<option value="KES">KES</option>
|
||||
<option value="KGS">KGS</option>
|
||||
<option value="KHR">KHR</option>
|
||||
<option value="KMF">KMF</option>
|
||||
<option value="KRW">KRW</option>
|
||||
<option value="KWD">KWD</option>
|
||||
<option value="KYD">KYD</option>
|
||||
<option value="KZT">KZT</option>
|
||||
<option value="LAK">LAK</option>
|
||||
<option value="LKR">LKR</option>
|
||||
<option value="LRD">LRD</option>
|
||||
<option value="LSL">LSL</option>
|
||||
<option value="MAD">MAD</option>
|
||||
<option value="MDL">MDL</option>
|
||||
<option value="MGA">MGA</option>
|
||||
<option value="MKD">MKD</option>
|
||||
<option value="MMK">MMK</option>
|
||||
<option value="MNT">MNT</option>
|
||||
<option value="MOP">MOP</option>
|
||||
<option value="MUR">MUR</option>
|
||||
<option value="MVR">MVR</option>
|
||||
<option value="MWK">MWK</option>
|
||||
<option value="MXN">MXN</option>
|
||||
<option value="MYR">MYR</option>
|
||||
<option value="MZN">MZN</option>
|
||||
<option value="NAD">NAD</option>
|
||||
<option value="NGN">NGN</option>
|
||||
<option value="NIO">NIO</option>
|
||||
<option value="NOK">NOK</option>
|
||||
<option value="NPR">NPR</option>
|
||||
<option value="NZD">NZD</option>
|
||||
<option value="OMR">OMR</option>
|
||||
<option value="PEN">PEN</option>
|
||||
<option value="PGK">PGK</option>
|
||||
<option value="PHP">PHP</option>
|
||||
<option value="PKR">PKR</option>
|
||||
<option value="PLN">PLN</option>
|
||||
<option value="PYG">PYG</option>
|
||||
<option value="QAR">QAR</option>
|
||||
<option value="RON">RON</option>
|
||||
<option value="RSD">RSD</option>
|
||||
<option value="RUB">RUB</option>
|
||||
<option value="RWF">RWF</option>
|
||||
<option value="SAR">SAR</option>
|
||||
<option value="SCR">SCR</option>
|
||||
<option value="SEK">SEK</option>
|
||||
<option value="SGD">SGD</option>
|
||||
<option value="SLL">SLL</option>
|
||||
<option value="SOS">SOS</option>
|
||||
<option value="SSP">SSP</option>
|
||||
<option value="SVC">SVC</option>
|
||||
<option value="SZL">SZL</option>
|
||||
<option value="THB">THB</option>
|
||||
<option value="TND">TND</option>
|
||||
<option value="TRY">TRY</option>
|
||||
<option value="TTD">TTD</option>
|
||||
<option value="TWD">TWD</option>
|
||||
<option value="TZS">TZS</option>
|
||||
<option value="UAH">UAH</option>
|
||||
<option value="UGX">UGX</option>
|
||||
<option value="USD">USD</option>
|
||||
<option value="UYU">UYU</option>
|
||||
<option value="UZS">UZS</option>
|
||||
<option value="VND">VND</option>
|
||||
<option value="VUV">VUV</option>
|
||||
<option value="XAF">XAF</option>
|
||||
<option value="XCD">XCD</option>
|
||||
<option value="XOF">XOF</option>
|
||||
<option value="XPF">XPF</option>
|
||||
<option value="YER">YER</option>
|
||||
<option value="ZAR">ZAR</option>
|
||||
<option value="ZMW">ZMW</option>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label for="razorpay_secret_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Razorpay Secret key') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="razorpay_secret_key" name="gateway[Razorpay][secret_key]" type="text"
|
||||
class="form-control" placeholder="{{ __('Razorpay Secret key') }}"
|
||||
value="{{ $paymentGateway['Razorpay']['secret_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="razorpay_public_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Razorpay Public key') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="razorpay_public_key" name="gateway[Razorpay][api_key]" type="text"
|
||||
class="form-control" placeholder="{{ __('Razorpay Publishable key') }}"
|
||||
value="{{ $paymentGateway['Razorpay']['api_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="razorpay_webhook_secret"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Razorpay Webhook Secret') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="razorpay_webhook_secret" name="gateway[Razorpay][webhook_secret_key]"
|
||||
type="text" class="form-control"
|
||||
placeholder="{{ __('Razorpay Webhook Secret') }}"
|
||||
value="{{ $paymentGateway['Razorpay']['webhook_secret_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="razorpay_webhook_url"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Razorpay Webhook URL') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="razorpay_webhook_url" name="gateway[Razorpay][webhook_url]" type="text"
|
||||
class="form-control" placeholder="{{ __('Razorpay Webhook URL') }}"
|
||||
value="{{ url('/webhook/razorpay') }}" disabled>
|
||||
</div>
|
||||
|
||||
<label class="col-sm-12 form-check-label mt-2"
|
||||
id='lbl_stripe'>{{ __('Status') }}</label>
|
||||
<div class="col-sm-2 col-md-12 col-xs-12 mt-2">
|
||||
<div class="form-check form-switch ">
|
||||
<input type="hidden" name="gateway[Razorpay][status]" id="razorpay_gateway"
|
||||
value="{{ $paymentGateway['Razorpay']['status'] ?? 0 }}">
|
||||
<input class="form-check-input switch-input status-switch" type="checkbox"
|
||||
role="switch" name='op'
|
||||
{{ isset($paymentGateway['Razorpay']['status']) && $paymentGateway['Razorpay']['status'] == '1' ? 'checked' : '' }}
|
||||
id="switch_razorpay_gateway" aria-label="switch_razorpay_gateway">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{-- Razorpay Payment Gateway END --}}
|
||||
|
||||
{{-- Paystack Payment Gateway START --}}
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Paystack Setting') }}</h6>
|
||||
</div>
|
||||
<div class="form-group row mt-3">
|
||||
<label for="paystack_currency_code"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Paystack Currency Symbol') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<select name="gateway[Paystack][currency_code]" id="paystack_currency_code"
|
||||
class="select2 form-select form-control">
|
||||
<option value="USD">USD</option>
|
||||
<option value="GHS">GHS</option>
|
||||
<option value="KES">KES</option>
|
||||
<option value="NGN">NGN</option>
|
||||
<option value="ZAR">ZAR</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label for="paystack_secret_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Paystack Secret key') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paystack_secret_key" name="gateway[Paystack][secret_key]" type="text"
|
||||
class="form-control" placeholder="{{ __('Paystack Secret key') }}"
|
||||
value="{{ $paymentGateway['Paystack']['secret_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="paystack_publishable_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Paystack Public key') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paystack_publishable_key" name="gateway[Paystack][api_key]" type="text"
|
||||
class="form-control" placeholder="{{ __('Paystack Public key') }}"
|
||||
value="{{ $paymentGateway['Paystack']['api_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="paystack_webhook_url"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Paystack Webhook URL') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paystack_webhook_url" name="gateway[Paystack][webhook_url]" type="text"
|
||||
class="form-control" placeholder="{{ __('Paystack Webhook URL') }}"
|
||||
value="{{ url('/webhook/paystack') }}" disabled>
|
||||
</div>
|
||||
|
||||
<label class="col-sm-12 form-check-label mt-2"
|
||||
id='lbl_stripe'>{{ __('Status') }}</label>
|
||||
<div class="col-sm-2 col-md-12 col-xs-12 mt-2">
|
||||
<div class="form-check form-switch ">
|
||||
<input type="hidden" name="gateway[Paystack][status]" id="paystack_gateway"
|
||||
value="{{ $paymentGateway['Paystack']['status'] ?? 0 }}">
|
||||
<input class="form-check-input switch-input status-switch" type="checkbox"
|
||||
role="switch" name='op'
|
||||
{{ isset($paymentGateway['Paystack']['status']) && $paymentGateway['Paystack']['status'] == '1' ? 'checked' : '' }}
|
||||
id="switch_paystack_gateway" aria-label="switch_paystack_gateway">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{-- Paystack Payment Gateway END --}}
|
||||
|
||||
{{-- phonePe Payment Gateway START --}}
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('PhonePe Setting') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mt-3">
|
||||
<label for="paystack_secret_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PhonePe Client Secret') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paystack_secret_key" name="gateway[PhonePe][secret_key]" type="text"
|
||||
class="form-control phonepe-required"
|
||||
placeholder="{{ __('PhonePe Client Secret') }}"
|
||||
value="{{ $paymentGateway['PhonePe']['secret_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="paystack_publishable_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PhonePe Client ID') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paystack_publishable_key" name="gateway[PhonePe][api_key]" type="text"
|
||||
class="form-control phonepe-required" placeholder="{{ __('PhonePe Client ID') }}"
|
||||
value="{{ $paymentGateway['PhonePe']['api_key'] ?? '' }}">
|
||||
</div>
|
||||
<label for="paystack_publishable_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PhonePe Client Version') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paystack_publishable_key" name="gateway[PhonePe][additional_data_1]"
|
||||
type="text" class="form-control phonepe-required"
|
||||
placeholder="{{ __('PhonePe Client Version') }}"
|
||||
value="{{ $paymentGateway['PhonePe']['additional_data_1'] ?? '' }}">
|
||||
</div>
|
||||
<label for="paystack_publishable_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PhonePe Merchant ID') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paystack_publishable_key" name="gateway[PhonePe][additional_data_2]"
|
||||
type="text" class="form-control phonepe-required"
|
||||
placeholder="{{ __('PhonePe Merchant ID') }}"
|
||||
value="{{ $paymentGateway['PhonePe']['additional_data_2'] ?? '' }}">
|
||||
</div>
|
||||
<label for="phonepe_username"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PhonePe Username') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="phonepe_username_key" name="gateway[PhonePe][username]"
|
||||
type="text" class="form-control phonepe-required"
|
||||
placeholder="{{ __('PhonePe Username') }}"
|
||||
value="{{ $paymentGateway['PhonePe']['username'] ?? '' }}">
|
||||
</div>
|
||||
<label for="phonepe_password"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PhonePe Password') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paystack_publishable_key" name="gateway[PhonePe][password]"
|
||||
type="text" class="form-control phonepe-required"
|
||||
placeholder="{{ __('PhonePe Password') }}"
|
||||
value="{{ $paymentGateway['PhonePe']['password'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="phonepe_mode"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PhonePe Payment Mode') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<select id="phonepe_mode" name="gateway[PhonePe][payment_mode]"
|
||||
class="form-control phonepe-required">
|
||||
<option value="UAT"
|
||||
{{ isset($paymentGateway['PhonePe']['payment_mode']) && $paymentGateway['PhonePe']['payment_mode'] == 'UAT' ? 'selected' : '' }}>
|
||||
UAT</option>
|
||||
<option value="PROD"
|
||||
{{ isset($paymentGateway['PhonePe']['payment_mode']) && $paymentGateway['PhonePe']['payment_mode'] == 'PROD' ? 'selected' : '' }}>
|
||||
PROD</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label for="paystack_webhook_url"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PhonePe Webhook URL') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="phonePe_webhook_url" name="gateway[PhonePe][webhook_url]" type="text"
|
||||
class="form-control" placeholder="{{ __('PhonePe Webhook URL') }}"
|
||||
value="{{ url('/webhook/phonePe') }}" disabled>
|
||||
</div>
|
||||
|
||||
<label class="col-sm-12 form-check-label mt-2"
|
||||
id='lbl_stripe'>{{ __('Status') }}</label>
|
||||
<div class="col-sm-2 col-md-12 col-xs-12 mt-2">
|
||||
<div class="form-check form-switch ">
|
||||
<input type="hidden" name="gateway[PhonePe][status]" id="paystack_gateway"
|
||||
value="{{ $paymentGateway['PhonePe']['status'] ?? 0 }}">
|
||||
<input class="form-check-input switch-input status-switch" type="checkbox"
|
||||
role="switch" name='op'
|
||||
{{ isset($paymentGateway['PhonePe']['status']) && $paymentGateway['PhonePe']['status'] == '1' ? 'checked' : '' }}
|
||||
id="switch_phonepe_gateway" aria-label="switch_paystack_gateway">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{-- phonePe Payment Gateway END --}}
|
||||
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Flutterwave Setting') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mt-3">
|
||||
<label for="flutterwave_currency_code" class="col-sm-12 form-check-label mt-2">
|
||||
{{ __('Flutterwave Currency') }}
|
||||
</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<select name="gateway[flutterwave][currency_code]" id="flutterwave_currency_code"
|
||||
class="select2 form-select form-control-sm">
|
||||
<option value="NGN">NGN</option>
|
||||
<option value="USD">USD</option>
|
||||
<option value="GHS">GHS</option>
|
||||
<option value="KES">KES</option>
|
||||
<option value="UGX">UGX</option>
|
||||
<option value="TZS">TZS</option>
|
||||
<option value="ZAR">ZAR</option>
|
||||
<option value="XOF">XOF</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label for="flutterwave_secret_key" class="col-sm-12 form-check-label mt-2">
|
||||
{{ __('Flutterwave Secret Key') }}
|
||||
</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="flutterwave_secret_key" name="gateway[flutterwave][secret_key]"
|
||||
type="text" class="form-control"
|
||||
placeholder="{{ __('Flutterwave Secret Key') }}"
|
||||
value="{{ $paymentGateway['flutterwave']['secret_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="flutterwave_public_key" class="col-sm-12 form-check-label mt-2">
|
||||
{{ __('Flutterwave Public Key') }}
|
||||
</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="flutterwave_public_key" name="gateway[flutterwave][api_key]"
|
||||
type="text" class="form-control"
|
||||
placeholder="{{ __('Flutterwave Public Key') }}"
|
||||
value="{{ $paymentGateway['flutterwave']['api_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="flutterwave_encryption_key" class="col-sm-12 form-check-label mt-2">
|
||||
{{ __('Flutterwave Webhook Secret') }}
|
||||
</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="flutterwave_encryption_key" name="gateway[flutterwave][webhook_secret_key]"
|
||||
type="text" class="form-control"
|
||||
placeholder="{{ __('Flutterwave Webhook Secret') }}"
|
||||
value="{{ $paymentGateway['flutterwave']['webhook_secret_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="flutterwave_webhook_url" class="col-sm-12 form-check-label mt-2">
|
||||
{{ __('Flutterwave Webhook URL') }}
|
||||
</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="flutterwave_webhook_url" name="gateway[flutterwave][webhook_url]"
|
||||
type="text" class="form-control"
|
||||
placeholder="{{ __('Flutterwave Webhook URL') }}"
|
||||
value="{{ url('/webhook/flutterwave') }}" disabled>
|
||||
</div>
|
||||
|
||||
<label class="col-sm-12 form-check-label mt-2"
|
||||
id='lbl_flutterwave'>{{ __('Status') }}</label>
|
||||
<div class="col-sm-2 col-md-12 col-xs-12 mt-2">
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="gateway[flutterwave][status]"
|
||||
id="flutterwave_gateway"
|
||||
value="{{ $paymentGateway['flutterwave']['status'] ?? 0 }}">
|
||||
<input class="form-check-input switch-input status-switch" type="checkbox"
|
||||
role="switch" name='op'
|
||||
{{ isset($paymentGateway['flutterwave']['status']) && $paymentGateway['flutterwave']['status'] == '1' ? 'checked' : '' }}
|
||||
id="switch_flutterwave_gateway" aria-label="switch_flutterwave_gateway">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{-- paypal Payment Gateway START --}}
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('PayPal Setting') }}</h6>
|
||||
</div>
|
||||
<div class="form-group row mt-3">
|
||||
|
||||
<label for="paypal_currency_code"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PayPal Currency Symbol') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<select name="gateway[Paypal][currency_code]" id="paypal_currency_code"
|
||||
class="select2 form-select form-control">
|
||||
<option value="USD"
|
||||
{{ ($paymentGateway['Paypal']['currency_code'] ?? '') == 'USD' ? 'selected' : '' }}>
|
||||
USD</option>
|
||||
<option value="EUR"
|
||||
{{ ($paymentGateway['Paypal']['currency_code'] ?? '') == 'EUR' ? 'selected' : '' }}>
|
||||
EUR</option>
|
||||
<option value="GBP"
|
||||
{{ ($paymentGateway['Paypal']['currency_code'] ?? '') == 'GBP' ? 'selected' : '' }}>
|
||||
GBP</option>
|
||||
<option value="AUD"
|
||||
{{ ($paymentGateway['Paypal']['currency_code'] ?? '') == 'AUD' ? 'selected' : '' }}>
|
||||
AUD</option>
|
||||
<option value="CAD"
|
||||
{{ ($paymentGateway['Paypal']['currency_code'] ?? '') == 'CAD' ? 'selected' : '' }}>
|
||||
CAD</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label for="paypal_client_id"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PayPal Client ID') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paypal_client_id" name="gateway[Paypal][api_key]" type="text"
|
||||
class="form-control" placeholder="{{ __('PayPal Client ID') }}"
|
||||
value="{{ $paymentGateway['Paypal']['api_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="paypal_secret_key"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PayPal Secret Key') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paypal_secret_key" name="gateway[Paypal][secret_key]" type="text"
|
||||
class="form-control" placeholder="{{ __('PayPal Secret Key') }}"
|
||||
value="{{ $paymentGateway['Paypal']['secret_key'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label for="paypal_webhook_url"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('PayPal Webhook URL') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<input id="paypal_webhook_url" name="gateway[Paypal][webhook_url]" type="text"
|
||||
class="form-control" placeholder="{{ __('PayPal Webhook URL') }}"
|
||||
value="{{ url('/webhook/paypal') }}" disabled>
|
||||
</div>
|
||||
|
||||
<label for="phonepe_mode"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Paypal Payment Mode') }}</label>
|
||||
<div class="col-sm-12 mt-2">
|
||||
<select id="phonepe_mode" name="gateway[Paypal][payment_mode]"
|
||||
class="form-control phonepe-required">
|
||||
<option value="UAT"
|
||||
{{ isset($paymentGateway['Paypal']['payment_mode']) && $paymentGateway['Paypal']['payment_mode'] == 'UAT' ? 'selected' : '' }}>
|
||||
UAT</option>
|
||||
<option value="PROD"
|
||||
{{ isset($paymentGateway['Paypal']['payment_mode']) && $paymentGateway['Paypal']['payment_mode'] == 'PROD' ? 'selected' : '' }}>
|
||||
PROD</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label class="col-sm-12 form-check-label mt-2">{{ __('Status') }}</label>
|
||||
<div class="col-sm-2 col-md-12 col-xs-12 mt-2">
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="gateway[Paypal][status]" id="paypal_gateway"
|
||||
value="{{ $paymentGateway['Paypal']['status'] ?? 0 }}">
|
||||
<input class="form-check-input switch-input status-switch" type="checkbox"
|
||||
role="switch" name='op'
|
||||
{{ isset($paymentGateway['Paypal']['status']) && $paymentGateway['Paypal']['status'] == '1' ? 'checked' : '' }}
|
||||
id="switch_paypal_gateway" aria-label="switch_paypal_gateway">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- paypal Payment Gateway END --}}
|
||||
{{-- Bank Account Details --}}
|
||||
<div class="col-md-6 mt-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Manage Bank Account Details') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="account_holder_name"
|
||||
class="form-label">{{ __('Account Holder Name') }}</label>
|
||||
<input class="form-control" type="text" name="bank[account_holder_name]"
|
||||
id="account_holder_name" value="{{ $settings['account_holder_name'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="bank_name" class="form-label">{{ __('Bank Name') }}</label>
|
||||
<input class="form-control" type="text" name="bank[bank_name]" id="bank_name"
|
||||
value="{{ $settings['bank_name'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="account_number" class="form-label">{{ __('Account Number') }}</label>
|
||||
<input class="form-control" type="number" name="bank[account_number]"
|
||||
id="account_number" value="{{ $settings['account_number'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="ifsc_swift_code" class="form-label">{{ __('IFSC/SWIFT Code') }}</label>
|
||||
<input class="form-control" type="text" name="bank[ifsc_swift_code]"
|
||||
id="ifsc_swift_code" value="{{ $settings['ifsc_swift_code'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<label class="form-check-label mt-2">{{ __('Status') }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="bank[bank_transfer_status]" value="0">
|
||||
<input class="form-check-input" type="checkbox" name="bank[bank_transfer_status]"
|
||||
value="1"
|
||||
{{ isset($settings['bank_transfer_status']) && $settings['bank_transfer_status'] == '1' ? 'checked' : '' }}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-12 d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary me-1 mb-3">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script type="text/javascript">
|
||||
$('#stripe_currency_code').val("{{ $paymentGateway['Stripe']['currency_code'] ?? '' }}").trigger("change");
|
||||
$('#switch_stripe_gateway').val("{{ $paymentGateway['Stripe']['status'] ?? false }}").trigger("change");
|
||||
|
||||
$('#razorpay_currency_code').val("{{ $paymentGateway['Razorpay']['currency_code'] ?? '' }}").trigger("change");
|
||||
$('#switch_razorpay_gateway').val("{{ $paymentGateway['Stripe']['status'] ?? false }}").trigger("change");
|
||||
|
||||
$('#paystack_currency_code').val("{{ $paymentGateway['Paystack']['currency_code'] ?? '' }}").trigger("change");
|
||||
$('#switch_paystack_gateway').val("{{ $paymentGateway['Stripe']['status'] ?? false }}").trigger("change");
|
||||
</script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
function togglePhonePeRequiredFields() {
|
||||
if ($('#switch_phonepe_gateway').is(':checked')) {
|
||||
$('.phonepe-required').attr('required', true);
|
||||
} else {
|
||||
$('.phonepe-required').removeAttr('required');
|
||||
}
|
||||
}
|
||||
|
||||
// Initial check on page load
|
||||
togglePhonePeRequiredFields();
|
||||
|
||||
// On switch toggle
|
||||
$('#switch_phonepe_gateway').on('change', function() {
|
||||
togglePhonePeRequiredFields();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
91
resources/views/settings/privacy-policy.blade.php
Normal file
91
resources/views/settings/privacy-policy.blade.php
Normal file
@@ -0,0 +1,91 @@
|
||||
@extends('layouts.main')
|
||||
@section('title')
|
||||
{{ __('Privacy Policy') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<div class="card">
|
||||
<form action="{{ route('settings.store')}}" method="post" class="create-form-without-reset">
|
||||
@csrf
|
||||
<div class="card-body">
|
||||
<div class="row form-group">
|
||||
<div class="col-2 d-flex justify-content-end">
|
||||
<a href="{{ route('public.privacy-policy') }}" target="_blank" class="col-sm-12 col-md-12 d-fluid btn icon btn-primary btn-sm rounded-pill" onclick="" title="Enable">
|
||||
<i class="bi bi-eye-fill"></i>
|
||||
</a>
|
||||
</div>
|
||||
<ul class="nav nav-tabs" id="privacyTabs" role="tablist">
|
||||
@foreach($languages as $lang)
|
||||
<li class="nav-item" role="presentation">
|
||||
<a class="nav-link {{ $loop->first ? 'active' : '' }}"
|
||||
id="privacy-tab-{{ $lang->id }}"
|
||||
data-bs-toggle="tab"
|
||||
href="#privacy-lang-{{ $lang->id }}"
|
||||
role="tab">
|
||||
{{ $lang->name }}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<!-- Tab Panes -->
|
||||
<div class="tab-content mt-3">
|
||||
@foreach($languages as $lang)
|
||||
<div class="tab-pane fade {{ $loop->first ? 'show active' : '' }}"
|
||||
id="privacy-lang-{{ $lang->id }}"
|
||||
role="tabpanel">
|
||||
<input type="hidden" name="languages[]" value="{{ $lang->id }}">
|
||||
<div class="form-group">
|
||||
<label>{{ __("Privacy Policy") }} ({{ $lang->name }})</label>
|
||||
<textarea name="privacy_policy[{{ $lang->id }}]"
|
||||
id="tinymce_editor_privacy_{{ $lang->id }}"
|
||||
class="tinymce_editor form-control"
|
||||
rows="6">{{ old("privacy_policy.$lang->id", $translations['privacy_policy'][$lang->id] ?? ($settings['privacy_policy'] ?? '')) }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<!-- Save Button -->
|
||||
<div class="col-12 mt-3 d-flex justify-content-end">
|
||||
<button class="btn btn-primary" type="submit">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
@section('script')
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
tinymce.init({
|
||||
selector: '.tinymce_editor',
|
||||
height: 400,
|
||||
menubar: false,
|
||||
plugins: [
|
||||
'advlist autolink lists link charmap preview anchor',
|
||||
'searchreplace visualblocks code fullscreen',
|
||||
'insertdatetime table paste code help wordcount'
|
||||
],
|
||||
toolbar: 'undo redo | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | removeformat | code',
|
||||
setup: function (editor) {
|
||||
editor.on("change keyup", function () {
|
||||
editor.save();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
100
resources/views/settings/refund-policy.blade.php
Normal file
100
resources/views/settings/refund-policy.blade.php
Normal file
@@ -0,0 +1,100 @@
|
||||
@extends('layouts.main')
|
||||
@section('title')
|
||||
{{ __('Refund Policy') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<div class="card">
|
||||
<form action="{{ route('settings.store')}}" method="post" class="create-form-without-reset">
|
||||
@csrf
|
||||
<div class="card-body">
|
||||
|
||||
<!-- Preview Button -->
|
||||
<div class="row form-group">
|
||||
<div class="col-2 d-flex justify-content-end">
|
||||
<a href="{{ route('public.refund-policy') }}" target="_blank"
|
||||
class="btn icon btn-primary btn-sm rounded-pill"
|
||||
title="{{ __('View Page') }}">
|
||||
<i class="bi bi-eye-fill"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Language Tabs -->
|
||||
<ul class="nav nav-tabs" id="refundTabs" role="tablist">
|
||||
@foreach($languages as $lang)
|
||||
<li class="nav-item" role="presentation">
|
||||
<a class="nav-link {{ $loop->first ? 'active' : '' }}"
|
||||
id="refund-tab-{{ $lang->id }}"
|
||||
data-bs-toggle="tab"
|
||||
href="#refund-lang-{{ $lang->id }}"
|
||||
role="tab">
|
||||
{{ $lang->name }}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<!-- Tab Panes -->
|
||||
<div class="tab-content mt-3">
|
||||
@foreach($languages as $lang)
|
||||
<div class="tab-pane fade {{ $loop->first ? 'show active' : '' }}"
|
||||
id="refund-lang-{{ $lang->id }}"
|
||||
role="tabpanel">
|
||||
<input type="hidden" name="languages[]" value="{{ $lang->id }}">
|
||||
<div class="form-group">
|
||||
<label>{{ __("Refund Policy") }} ({{ $lang->name }})</label>
|
||||
<textarea name="refund_policy[{{ $lang->id }}]"
|
||||
id="tinymce_editor_refund_{{ $lang->id }}"
|
||||
class="tinymce_editor form-control"
|
||||
rows="6">{{ old("refund_policy.$lang->id", $translations['refund_policy'][$lang->id] ?? ($settings['refund_policy'] ?? '')) }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<!-- Save Button -->
|
||||
<div class="col-12 mt-3 d-flex justify-content-end">
|
||||
<button class="btn btn-primary" type="submit">{{ __('Save') }}</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
tinymce.init({
|
||||
selector: '.tinymce_editor',
|
||||
height: 400,
|
||||
menubar: false,
|
||||
plugins: [
|
||||
'advlist autolink lists link charmap preview anchor',
|
||||
'searchreplace visualblocks code fullscreen',
|
||||
'insertdatetime table paste code help wordcount'
|
||||
],
|
||||
toolbar: 'undo redo | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | removeformat | code',
|
||||
setup: function (editor) {
|
||||
editor.on("change keyup", function () {
|
||||
editor.save();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
308
resources/views/settings/seo-setting.blade.php
Normal file
308
resources/views/settings/seo-setting.blade.php
Normal file
@@ -0,0 +1,308 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Seo-settings') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="divider">
|
||||
<div class="divider-text">
|
||||
<h4>{{ __('Seo Setting') }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<div class="card-body">
|
||||
<div class="row form-group">
|
||||
<div class="col-sm-12 col-md-12 form-group">
|
||||
<form action="{{ route('seo-setting.store') }}" method="POST" enctype="multipart/form-data" data-parsley-validate class="create-form">
|
||||
@csrf
|
||||
{{-- <div class="row">
|
||||
<div class="col-sm-12 col-md-12 form-group mandatory">
|
||||
<label for="page" class="form-label text-center">{{ __('Page') }}</label>
|
||||
<select class="form-control" name="page" data-parsley-required="true">
|
||||
<option value="">Select Page</option>
|
||||
<option value="home">Home</option>
|
||||
<option value="subscription">Subscription</option>
|
||||
<option value="blogs">Blogs</option>
|
||||
<option value="faqs">Faqs</option>
|
||||
<option value="ad-listing">Ad Listing</option>
|
||||
<option value="about-us">About us</option>
|
||||
<option value="contact-us">Contact us</option>
|
||||
<option value="landing">Landing</option>
|
||||
<option value="privacy-policy">Privacy Policy</option>
|
||||
<option value="terms-and-conditions">Terms and Conditions</option>
|
||||
</select>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 form-group mandatory">
|
||||
<label for="meta_title" class="form-label text-center">{{ __('Title') }}</label>
|
||||
<input type="text" name="title" class="form-control" id="meta_title" placeholder="{{ __('Title') }}" data-parsley-required="true">
|
||||
<h6 id="meta_title_count"></h6>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 form-group mandatory">
|
||||
<label for="meta_description" class="form-label text-center">{{ __('Description') }}</label>
|
||||
<textarea name="description" class="form-control" id="meta_description" placeholder="{{ __('Description') }}" data-parsley-required="true"></textarea>
|
||||
<h6 id="meta_description_count"></h6>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 form-group mandatory">
|
||||
<label for="keywords" class="form-label text-center">{{ __('Keywords') }}</label>
|
||||
<textarea name="keywords" class="form-control" placeholder="{{ __('Keywords') }}" data-parsley-required="true"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-12 form-group mandatory">
|
||||
<label for="image" class="form-label">{{ __('Image') }}</label>
|
||||
<input class="filepond" type="file" name="image" id="favicon_icon">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 d-flex justify-content-end mt-3">
|
||||
<button type="submit" class="btn btn-primary me-1 mb-1">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</div> --}}
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
{{-- English-only fields --}}
|
||||
<div class="form-group mandatory">
|
||||
<label for="page" class="form-label">{{ __('Page') }}</label>
|
||||
<select class="form-control" name="page" data-parsley-required="true">
|
||||
<option value="">{{ __('Select Page') }}</option>
|
||||
<option value="home">{{ __('Home') }}</option>
|
||||
<option value="subscription">{{ __('Subscription') }}</option>
|
||||
<option value="blogs">{{ __('Blogs') }}</option>
|
||||
<option value="faqs">{{ __('Faqs') }}</option>
|
||||
<option value="ad-listing">{{ __('Ad Listing') }}</option>
|
||||
<option value="about-us">{{ __('About us') }}</option>
|
||||
<option value="contact-us">{{ __('Contact us') }}</option>
|
||||
<option value="landing">{{ __('Landing') }}</option>
|
||||
<option value="privacy-policy">{{ __('Privacy Policy') }}</option>
|
||||
<option value="refund-policy">{{ __('Refund Policy') }}</option>
|
||||
<option value="terms-and-conditions">{{ __('Terms and Conditions') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group mandatory">
|
||||
<label for="image" class="form-label">{{ __('Image') }}</label>
|
||||
<input class="filepond" type="file" name="image" id="favicon_icon">
|
||||
</div>
|
||||
|
||||
{{-- Language Tabs --}}
|
||||
<ul class="nav nav-tabs mt-3" id="languageTabs" role="tablist">
|
||||
@foreach($languages as $lang)
|
||||
<li class="nav-item" role="presentation">
|
||||
<a class="nav-link {{ $loop->first ? 'active' : '' }}" id="tab-{{ $lang->id }}" data-bs-toggle="tab" href="#lang-{{ $lang->id }}" role="tab">
|
||||
{{ $lang->name }}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<div class="tab-content mt-3">
|
||||
@foreach($languages as $lang)
|
||||
<div class="tab-pane fade {{ $loop->first ? 'show active' : '' }}" id="lang-{{ $lang->id }}" role="tabpanel">
|
||||
<input type="hidden" name="languages[]" value="{{ $lang->id }}">
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ __("Title") }} ({{ $lang->name }})</label>
|
||||
<input type="text" name="title[{{ $lang->id }}]" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ __("Description") }} ({{ $lang->name }})</label>
|
||||
<textarea name="description[{{ $lang->id }}]" class="form-control" rows="3"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ __("Keywords") }} ({{ $lang->name }})</label>
|
||||
<textarea name="keywords[{{ $lang->id }}]" class="form-control" rows="2"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 d-flex justify-content-end mt-3">
|
||||
<button type="submit" class="btn btn-primary me-1 mb-1">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<table class="table-light table-striped" aria-describedby="mydesc" id="table_list" data-toggle="table" data-url="{{ route('seo-setting.show',1) }}" data-click-to-select="true" data-side-pagination="server" data-pagination="true" data-page-list="[5, 10, 20, 50, 100, 200]" data-search="true" data-toolbar="#toolbar" data-show-columns="true" data-show-refresh="true" data-fixed-columns="true" data-fixed-number="1" data-fixed-right-number="1" data-trim-on-search="false" data-responsive="true" data-sort-name="id" data-sort-order="desc" data-pagination-successively-size="3" data-escape="true" data-query-params="queryParams" data-mobile-responsive="true">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" data-field="id" data-sortable="true">{{ __('ID') }}</th>
|
||||
<th scope="col" data-field="page" data-sortable="false">{{ __('Page') }}</th>
|
||||
<th scope="col" data-field="title" data-sortable="false">{{ __('Title')}}</th>
|
||||
<th scope="col" data-field="description" data-sortable="true">{{ __('Description') }}</th>
|
||||
<th scope="col" data-field="keywords" data-sortable="true">{{ __('Keywords') }}
|
||||
<th scope="col" data-field="image" data-sortable="false" data-formatter="imageFormatter">{{ __('Image') }}
|
||||
<th scope="col" data-field="operate" data-escape="false" data-sortable="false" data-events="SeoSettingEvents">{{ __('Action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- EDIT MODEL MODEL -->
|
||||
<div id="editModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel1" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<form action="#" class="form-horizontal" id="edit-form" enctype="multipart/form-data" method="POST" data-parsley-validate>
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="myModalLabel1">{{ __('Edit Seo Setting') }}</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="col-md-12 col-12">
|
||||
<div class="form-group mandatory">
|
||||
<label for="edit_page" class="form-label col-12">{{ __('Page') }}</label>
|
||||
<input type="text" id="edit_page" class="form-control col-12" placeholder="{{__("Page")}}" name="page" data-parsley-required="true" disabled>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 form-group">
|
||||
<label class="col-form-label ">{{ __('Image') }}</label>
|
||||
<div class="">
|
||||
<input class="filepond" type="file" name="image" id="edit_image">
|
||||
</div>
|
||||
</div>
|
||||
<ul class="nav nav-tabs mt-3" role="tablist">
|
||||
@foreach($languages as $lang)
|
||||
<li class="nav-item" role="presentation">
|
||||
<a class="nav-link {{ $loop->first ? 'active' : '' }}" id="edit-tab-{{ $lang->id }}" data-bs-toggle="tab" href="#edit-lang-{{ $lang->id }}" role="tab">
|
||||
{{ $lang->name }}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<div class="tab-content mt-3">
|
||||
@foreach($languages as $lang)
|
||||
<div class="tab-pane fade {{ $loop->first ? 'show active' : '' }}" id="edit-lang-{{ $lang->id }}" role="tabpanel">
|
||||
<input type="hidden" name="languages[]" value="{{ $lang->id }}">
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ __("Title") }} ({{ $lang->name }})</label>
|
||||
<input type="text" name="title[{{ $lang->id }}]" id="edit_title_{{ $lang->id }}" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ __("Description") }} ({{ $lang->name }})</label>
|
||||
<textarea name="description[{{ $lang->id }}]" id="edit_description_{{ $lang->id }}" class="form-control" rows="3"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ __("Keywords") }} ({{ $lang->name }})</label>
|
||||
<textarea name="keywords[{{ $lang->id }}]" id="edit_keywords_{{ $lang->id }}" class="form-control" rows="2"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary waves-effect" data-bs-dismiss="modal">{{ __('Close') }}</button>
|
||||
<button type="submit" class="btn btn-primary waves-effect waves-light">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@section('script')
|
||||
<script>
|
||||
const maxPixelWidth = 400; // Adjust as needed
|
||||
const tooLongPixelWidth = 600; // Adjust as needed
|
||||
|
||||
// Reusable width calculator
|
||||
function getTextWidth(text, font) {
|
||||
const canvas = document.createElement("canvas");
|
||||
const context = canvas.getContext("2d");
|
||||
context.font = font;
|
||||
return context.measureText(text).width;
|
||||
}
|
||||
|
||||
function updateMetaLength(inputId, maxPixelWidth, tooLongPixelWidth) {
|
||||
const input = $(`#${inputId}`);
|
||||
const countElement = $(`#${inputId}_count`);
|
||||
|
||||
if (input.length && countElement.length) {
|
||||
const text = input.val().trim();
|
||||
let textPixelLength = Math.round(getTextWidth(text, '19.9px Arial'));
|
||||
|
||||
let iconClass = 'fa-exclamation-triangle text-danger';
|
||||
let feedbackMessage = `Your Meta is too short.`;
|
||||
let feedbackColor = 'text-danger';
|
||||
|
||||
if (textPixelLength >= maxPixelWidth && textPixelLength <= tooLongPixelWidth) {
|
||||
iconClass = 'fa-check-circle text-success';
|
||||
feedbackMessage = `Your Meta is an acceptable length.`;
|
||||
feedbackColor = 'text-success';
|
||||
} else if (textPixelLength > tooLongPixelWidth) {
|
||||
feedbackMessage = `Meta should be around ${tooLongPixelWidth}px in length.`;
|
||||
}
|
||||
|
||||
countElement.html(`
|
||||
<i class="fa ${iconClass}"></i>
|
||||
<span><b>${textPixelLength}</b> pixels</span>
|
||||
<span class="${feedbackColor}"> -- ${feedbackMessage}</span>
|
||||
`);
|
||||
}
|
||||
}
|
||||
|
||||
// Trigger check on input for each language
|
||||
$(document).ready(function () {
|
||||
@foreach ($languages as $lang)
|
||||
// Title
|
||||
$(`#meta_title_{{ $lang->id }}`).on('input', function () {
|
||||
updateMetaLength('meta_title_{{ $lang->id }}', maxPixelWidth, tooLongPixelWidth);
|
||||
});
|
||||
$(`#meta_description_{{ $lang->id }}`).on('input', function () {
|
||||
updateMetaLength('meta_description_{{ $lang->id }}', maxPixelWidth, tooLongPixelWidth);
|
||||
});
|
||||
|
||||
$(`#meta_keywords_{{ $lang->id }}`).on('input', function () {
|
||||
updateMetaLength('meta_keywords_{{ $lang->id }}', maxPixelWidth, tooLongPixelWidth);
|
||||
});
|
||||
@endforeach
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
70
resources/views/settings/system-status.blade.php
Normal file
70
resources/views/settings/system-status.blade.php
Normal file
@@ -0,0 +1,70 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __("System Status")." ".__("Settings")}}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@section('content')
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-8">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('System Status') }}</h6>
|
||||
</div>
|
||||
|
||||
<!-- Backend Section -->
|
||||
<div class="card mt-3">
|
||||
<div class="card-header">
|
||||
{{ __('Backend') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Storage Section -->
|
||||
<div class="card mt-1">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<div class="d-flex align-items-center">
|
||||
<label for="Storage" class="form-label mb-0 me-2">
|
||||
{{ __('Storage') }}
|
||||
</label>
|
||||
<a href="#" data-bs-toggle="tooltip" title="{{ $isLinked ? __('Storage folder is currently linked.') : __('Storage folder is not linked. Click to link it.') }}">
|
||||
<i class="bi bi-question-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-center">
|
||||
<i class="bi {{ $isLinked ? 'bi-check-circle text-success' : 'bi-x-circle text-danger' }} me-2" aria-label="{{ $isLinked ? 'Linked' : 'Unlinked' }}"></i>
|
||||
|
||||
<form action="{{ route('toggle.storage.link') }}" method="POST" class="m-0">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-link text-primary" style="font-size: 0.875rem; padding: 0; text-decoration: underline;">
|
||||
{{ __('Link') }}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@section('script')
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
499
resources/views/settings/system.blade.php
Normal file
499
resources/views/settings/system.blade.php
Normal file
@@ -0,0 +1,499 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('System Settings') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<form class="create-form-without-reset" action="{{ route('settings.store') }}" method="post"
|
||||
enctype="multipart/form-data" data-success-function="successFunction" data-parsley-validate>
|
||||
@csrf
|
||||
<div class="row d-flex mb-3">
|
||||
<div class="col-md-4 d-flex">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Company Details') }}</h6>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 form-group mandatory">
|
||||
<label for="company_name"
|
||||
class="col-sm-6 col-md-6 form-label mt-1">{{ __('Company Name') }}</label>
|
||||
<input name="company_name" type="text" class="form-control" id="company_name"
|
||||
placeholder="{{ __('Company Name') }}" value="{{ $settings['company_name'] ?? '' }}"
|
||||
required>
|
||||
</div>
|
||||
<div class="col-sm-12 form-group mandatory">
|
||||
<label for="company_email"
|
||||
class="col-sm-12 col-md-6 form-label mt-1">{{ __('Email') }}</label>
|
||||
<input id="company_email" name="company_email" type="email" class="form-control"
|
||||
placeholder="{{ __('Email') }}" value="{{ $settings['company_email'] ?? '' }}"
|
||||
required>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 form-group mandatory">
|
||||
<label for="company_tel1"
|
||||
class="col-sm-12 col-md-6 form-label mt-1">{{ __('Contact Number') . ' 1' }}</label>
|
||||
<input id="company_tel1" name="company_tel1" type="text" class="form-control"
|
||||
placeholder="{{ __('Contact Number') . ' 1' }}" maxlength="16"
|
||||
onKeyDown="if(this.value.length==16 && event.keyCode!=8) return false;"
|
||||
value="{{ $settings['company_tel1'] ?? '' }}" required>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12">
|
||||
<label for="company_tel2"
|
||||
class="col-sm-12 col-md-6 form-label mt-1">{{ __('Contact Number') . ' 2' }}</label>
|
||||
<input id="company_tel2" name="company_tel2" type="text" class="form-control"
|
||||
placeholder="{{ __('Contact Number') . ' 2' }}" maxlength="16"
|
||||
onKeyDown="if(this.value.length==16 && event.keyCode!=8) return false;"
|
||||
value="{{ $settings['company_tel2'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12">
|
||||
<label for="company_address"
|
||||
class="col-sm-12 col-md-6 form-label mt-1">{{ __('Address') }}</label>
|
||||
<textarea id="company_address" name="company_address" type="text" class="form-control"
|
||||
placeholder="{{ __('Address') }}">{{ $settings['company_address'] ?? '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8 d-flex">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('More Setting') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="form-group col-sm-12 col-md-6 col-xs-12 mandatory">
|
||||
<label for="default_language" class="form-label ">{{ __('Default Language') }}</label>
|
||||
<select name="default_language" id="default_language"
|
||||
class="form-select form-control-sm">
|
||||
@foreach ($languages as $row)
|
||||
{{ $row }}
|
||||
<option value="{{ $row->code }}"
|
||||
{{ $settings['default_language'] == $row->code ? 'selected' : '' }}>
|
||||
{{ $row->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
{{-- </div> --}}
|
||||
|
||||
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label for="android_version" class="form-label ">{{ __('Android Version') }}</label>
|
||||
<input id="android_version" name="android_version" type="text" class="form-control"
|
||||
placeholder="{{ __('Android Version') }}"
|
||||
value="{{ $settings['android_version'] ?? '' }}" required="">
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label for="play_store_link" class="form-label ">{{ __('Play Store Link') }}</label>
|
||||
<input id="play_store_link" name="play_store_link" type="url" class="form-control"
|
||||
placeholder="{{ __('Play Store Link') }}"
|
||||
value="{{ $settings['play_store_link'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label for="ios_version" class="form-label ">{{ __('IOS Version') }}</label>
|
||||
<input id="ios_version" name="ios_version" type="text" class="form-control"
|
||||
placeholder="{{ __('IOS Version') }}" value="{{ $settings['ios_version'] ?? '' }}"
|
||||
required="">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label for="app_store_link" class="form-label ">{{ __('App Store Link') }}</label>
|
||||
<input id="app_store_link" name="app_store_link" type="url" class="form-control"
|
||||
placeholder="{{ __('App Store Link') }}"
|
||||
value="{{ $settings['app_store_link'] ?? '' }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label class="form-label ">{{ __('Maintenance Mode') }}</label>
|
||||
<i class="fa fa-info-circle" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
title="{{ __('Temporary disable website.') }}"
|
||||
aria-label="{{ __('Temporary disable website.') }}"></i>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="maintenance_mode" id="maintenance_mode"
|
||||
class="checkbox-toggle-switch-input"
|
||||
value="{{ $settings['maintenance_mode'] ?? 0 }}">
|
||||
<input class="form-check-input checkbox-toggle-switch" type="checkbox" role="switch"
|
||||
{{ $settings['maintenance_mode'] == '1' ? 'checked' : '' }}
|
||||
id="switch_maintenance_mode">
|
||||
<label class="form-check-label" for="switch_maintenance_mode"></label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label class="form-label">{{ __('Force Update') }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="force_update" id="force_update"
|
||||
class="checkbox-toggle-switch-input"
|
||||
value="{{ (int) $settings['force_update'] ?? 0 }}">
|
||||
<input class="form-check-input checkbox-toggle-switch" type="checkbox" role="switch"
|
||||
{{ (int) $settings['force_update'] === 1 ? 'checked' : '' }}
|
||||
id="switch_force_update">
|
||||
<label class="form-check-label" for="switch_force_update"></label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label class="form-check-label">{{ __('Free Ad Listing') }}
|
||||
<i class="fa fa-info-circle" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
title="{{ __('User can post ad without purchasing a package.') }}"
|
||||
aria-label="{{ __('User can post ad without purchasing a package.') }}"></i>
|
||||
</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="free_ad_listing" id="free_ad_listing"
|
||||
class="checkbox-toggle-switch-input"
|
||||
value="{{ $settings['free_ad_listing'] ?? 0 }}">
|
||||
<input class="form-check-input checkbox-toggle-switch" type="checkbox" role="switch"
|
||||
id="switch_Free_ad_listing" aria-label="switch_Free_ad_listing"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
{{ $settings['free_ad_listing'] == '1' ? 'checked' : '' }}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-2">
|
||||
<div class="col-md-6 form-group">
|
||||
<label class="form-label d-block">
|
||||
{{ __('Free Ad Listing Duration') }}
|
||||
<i class="fa fa-info-circle ms-1" data-bs-toggle="tooltip"
|
||||
title="{{ __('Set how long free ads remain active.') }}"></i>
|
||||
</label>
|
||||
|
||||
<div class="form-check form-switch mt-2">
|
||||
<input class="form-check-input"
|
||||
type="checkbox"
|
||||
id="free_ad_unlimited"
|
||||
name="free_ad_unlimited"
|
||||
value="1"
|
||||
{{ ($settings['free_ad_unlimited'] ?? 0) == 1 ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="free_ad_unlimited">
|
||||
{{ __('Unlimited') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 form-group">
|
||||
<div id="free_ad_duration_input"
|
||||
class="mt-4"
|
||||
style="{{ ($settings['free_ad_unlimited'] ?? 0) == 1 ? 'display:none;' : 'display:block;' }}">
|
||||
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text myDivClass"
|
||||
style="height: 42px;">
|
||||
<span class="mySpanClass">{{ __('Days') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="number"
|
||||
name="free_ad_duration_days"
|
||||
class="form-control"
|
||||
min="1"
|
||||
value="{{ $settings['free_ad_duration_days'] ?? '' }}"
|
||||
placeholder="{{ __('Enter duration in days') }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="form-group col-sm-12 col-md-6 col-xs-12">
|
||||
<label for="min_value" class="form-label">{{ __('Min Range') }}
|
||||
<i class="fa fa-info-circle" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
title="{{ __('Adding fixed minimum range for radius.') }}"
|
||||
aria-label="{{ __('Adding fixed minimum range for radius.') }}"></i>
|
||||
</label>
|
||||
<input id="min_length" name="min_length" type="number" class="form-control"
|
||||
placeholder="{{ __('Enter Min Length') }}"
|
||||
value="{{ $settings['min_length'] ?? '' }}">
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-6 col-xs-12">
|
||||
<label for="max_value" class="form-label">{{ __('Max Range') }}
|
||||
<i class="fa fa-info-circle" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
title="{{ __('Adding fixed maximum range for radius.') }}"
|
||||
aria-label="{{ __('Adding fixed maximum range for radius.') }}"></i>
|
||||
</label>
|
||||
<input id="max_length" name="max_length" type="number" class="form-control"
|
||||
placeholder="{{ __('Enter Max Length') }}"
|
||||
value="{{ $settings['max_length'] ?? '' }}">
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label class="form-check-label">{{ __('Auto Approve Advertisements') }}
|
||||
<i class="fa fa-info-circle" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
title="{{ __('Item will be auto approved for all users.') }}"
|
||||
aria-label="{{ __('Item will be auto approved for all users.') }}"></i>
|
||||
</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="auto_approve_item" id="auto_approve_item"
|
||||
class="checkbox-toggle-switch-input"
|
||||
value="{{ $settings['auto_approve_item'] ?? 0 }}">
|
||||
<input class="form-check-input checkbox-toggle-switch" type="checkbox" role="switch"
|
||||
id="switch_auto_approve_item" aria-label="switch_Free_ad_listing"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
{{ $settings['auto_approve_item'] == '1' ? 'checked' : '' }}>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label class="form-check-label">{{ __('Auto Approve Edited Advertisements') }}
|
||||
<i class="fa fa-info-circle" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
title="{{ __('Edited item will be auto approved for all users.') }}"
|
||||
aria-label="{{ __('Edited item will be auto approved for all users.') }}"></i>
|
||||
</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="auto_approve_edited_item" id="auto_approve_edited_item"
|
||||
class="checkbox-toggle-switch-input"
|
||||
value="{{ $settings['auto_approve_edited_item'] ?? 0 }}">
|
||||
<input class="form-check-input checkbox-toggle-switch" type="checkbox" role="switch"
|
||||
id="switch_auto_approve_edited_item" aria-label="switch_Free_ad_listing"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
{{ $settings['auto_approve_edited_item'] == '1' ? 'checked' : '' }}>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label for="map_provider"
|
||||
class="col-sm-12 form-check-label mt-2">{{ __('Map Provider') }}</label>
|
||||
<select name="map_provider" id="map_provider" class="form-select form-control-sm">
|
||||
<option value="google_places"
|
||||
{{ !empty($settings['map_provider']) && $settings['map_provider'] == 'google_places' ? 'selected' : '' }}>
|
||||
{{ __('Place API') }}</option>
|
||||
<option value="free_api"
|
||||
{{ !empty($settings['map_provider']) && $settings['map_provider'] == 'free_api' ? 'selected' : '' }}>
|
||||
{{ __('Free API') }}</option>
|
||||
{{-- <option value="google_places">Plcae API</option>
|
||||
<option value="free_api">Free API</option> --}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-6" id="s3_div" style="display: none">
|
||||
<label for="place_api_key" class="form-label">{{ __('Place API Key') }}</label>
|
||||
<input class="form-control" type="text" name="place_api_key" id="place_api_key"
|
||||
value="{{ $settings['place_api_key'] ?? '' }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Admin User Credentials for Advertisement Creation') }}</h6>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label for="admin_user_email" class="form-label">{{ __('Email') }}
|
||||
<i class="fa fa-info-circle" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
title="{{ __('Email address for admin to create advertisements on behalf of users.') }}"
|
||||
aria-label="{{ __('Email address for admin to create advertisements on behalf of users.') }}"></i>
|
||||
</label>
|
||||
<input id="admin_user_email" name="admin_user_email" type="email" class="form-control"
|
||||
placeholder="{{ __('Email') }}" value="{{ $settings['admin_user_email'] ?? '' }}">
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-6">
|
||||
<label for="admin_user_password" class="form-label">{{ __('Password') }}
|
||||
<i class="fa fa-info-circle" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
title="{{ __('Password for admin to create advertisements on behalf of users. Leave blank to keep current password.') }}"
|
||||
aria-label="{{ __('Password for admin to create advertisements on behalf of users.') }}"></i>
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<input id="admin_user_password" name="admin_user_password" type="password"
|
||||
class="form-control" placeholder="{{ __('Leave blank to keep current password') }}"
|
||||
autocomplete="new-password" value="{{ $settings['admin_user_password'] ?? '' }}">
|
||||
{{-- <button class="btn btn-outline-secondary" type="button" id="toggle-password-visibility">
|
||||
<i class="fa fa-eye" id="password-eye-icon"></i>
|
||||
</button> --}}
|
||||
</div>
|
||||
@if (!empty($settings['admin_user_password']))
|
||||
<small class="text-muted d-block mt-1">
|
||||
<i class="fa fa-lock"></i> {{ __('Password is set (hidden for security)') }}
|
||||
</small>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Images') }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="form-group col-md-4 col-sm-12">
|
||||
<label class=" col-form-label ">{{ __('Favicon Icon') }}</label>
|
||||
<input class="filepond" type="file" name="favicon_icon" id="favicon_icon">
|
||||
<img src="{{ $settings['favicon_icon'] ?? '' }}"
|
||||
data-custom-image="{{ asset('assets/images/logo/favicon.png') }}"
|
||||
class="mt-2 favicon_icon" alt="image" style=" height: 31%;width: 21%;">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-4 col-sm-12">
|
||||
<label class="form-label ">{{ __('Company Logo') }}</label>
|
||||
<input class="filepond" type="file" name="company_logo" id="company_logo">
|
||||
<img src="{{ $settings['company_logo'] ?? '' }}"
|
||||
data-custom-image="{{ asset('assets/images/logo/logo.png') }}" class="mt-2 company_logo"
|
||||
alt="image" style="height: 31%;width: 21%;">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-4 col-sm-12">
|
||||
<label class="form-label ">{{ __('Login Page Image') }}</label>
|
||||
<input class="filepond" type="file" name="login_image" id="login_image">
|
||||
<img src="{{ $settings['login_image'] ?? '' }}"
|
||||
data-custom-image="{{ asset('assets/images/bg/login.jpg') }}" class="mt-2 login_image"
|
||||
alt="image" style="height: 31%;width: 21%;">
|
||||
</div>
|
||||
{{-- <div class="form-group col-md-4 col-sm-12">
|
||||
<label class="form-label ">{{ __('Watermark Image') }}</label>
|
||||
<input class="filepond" type="file" name="watermark_image" id="watermark_image">
|
||||
<img src="{{ $settings['watermark_image'] ?? '' }}" data-custom-image="{{asset('assets/images/logo/watermark.png')}}" class="mt-2 watermark_image" alt="image" style="height: 31%;width: 21%;">
|
||||
</div> --}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Deep Link') }}</h6>
|
||||
</div>
|
||||
{{-- <div class="form-group row mt-3">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="deep_link_text_file" class="form-label">{{ __('Apple App Site Association File') }}</label>
|
||||
<input id="deep_link_text_file" name="deep_link_text_file" type="file" class="form-control">
|
||||
<p style="display: none" id="img_error_msg" class="badge rounded-pill bg-danger"></p>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="deep_link_json_file" class="form-label">{{ __('Assetlinks File') }}</label>
|
||||
<input id="deep_link_json_file" name="deep_link_json_file" type="file" class="form-control">
|
||||
<p style="display: none" id="img_error_msg" class="badge rounded-pill bg-danger"></p>
|
||||
</div>
|
||||
</div> --}}
|
||||
<div class="form-group row mt-3">
|
||||
<div class="col-md-12">
|
||||
<label for="scheme" class="form-label">{{ __('Deep Link Scheme') }}</label>
|
||||
<input id="scheme" name="deep_link_scheme" type="text" class="form-control"
|
||||
placeholder="e.g., myapp" pattern="^[a-z][a-z0-9]*$"
|
||||
title="{{ __('Must start with a letter, lowercase, and contain no spaces or special characters.') }}"
|
||||
value="{{ $settings['deep_link_scheme'] ?? '' }}">
|
||||
<small class="text-muted d-block mt-1">
|
||||
{{ __('Must start with a letter, be lowercase, and contain no spaces or special characters.') }}
|
||||
</small><small class="text-muted">{{ __('Example: ') }}<strong>myapp://</strong></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Authentication Setting (Enable/Disable)') }}</h6>
|
||||
</div>
|
||||
<div class="form-group row mt-3">
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label class="form-label">{{ __('Mobile Authentication') }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="mobile_authentication" value="0">
|
||||
<input class="form-check-input auth" type="checkbox" id="mobile_authentication"
|
||||
name="mobile_authentication" value="1"
|
||||
{{ isset($settings['mobile_authentication']) && $settings['mobile_authentication'] == 1 ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="google_authentication">
|
||||
{{ __('On / Off') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label class="form-label">{{ __('Google Authentication') }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="google_authentication" value="0">
|
||||
<input class="form-check-input auth" type="checkbox" id="google_authentication"
|
||||
name="google_authentication" value="1"
|
||||
{{ isset($settings['google_authentication']) && $settings['google_authentication'] == 1 ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="google_authentication">
|
||||
{{ __('On / Off') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label class="form-label">{{ __('Email Authentication') }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="email_authentication" value="0">
|
||||
<input class="form-check-input auth" type="checkbox" id="email_authentication"
|
||||
name="email_authentication" value="1"
|
||||
{{ isset($settings['email_authentication']) && $settings['email_authentication'] == 1 ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="email_authentication">
|
||||
{{ __('On / Off') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label class="form-label">{{ __('Apple Authentication') }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="apple_authentication" value="0">
|
||||
<input class="form-check-input auth" type="checkbox" id="email_authentication"
|
||||
name="apple_authentication" value="1"
|
||||
{{ isset($settings['apple_authentication']) && $settings['apple_authentication'] == 1 ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="apple_authentication">
|
||||
{{ __('On / Off') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 d-flex justify-content-end">
|
||||
<button type="submit" value="btnAdd" class="btn btn-primary me-1 mb-3">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
@endsection
|
||||
@section('js')
|
||||
<script>
|
||||
function successFunction() {
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
// Toggle password visibility for admin user password
|
||||
$(document).on('click', '#toggle-password-visibility', function() {
|
||||
const passwordInput = $('#admin_user_password');
|
||||
const eyeIcon = $('#password-eye-icon');
|
||||
|
||||
if (passwordInput.attr('type') === 'password') {
|
||||
passwordInput.attr('type', 'text');
|
||||
eyeIcon.removeClass('fa-eye').addClass('fa-eye-slash');
|
||||
} else {
|
||||
passwordInput.attr('type', 'password');
|
||||
eyeIcon.removeClass('fa-eye-slash').addClass('fa-eye');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('#free_ad_unlimited').on('change', function () {
|
||||
if ($(this).is(':checked')) {
|
||||
$('#free_ad_duration_input').hide();
|
||||
} else {
|
||||
$('#free_ad_duration_input').show();
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
100
resources/views/settings/terms-conditions.blade.php
Normal file
100
resources/views/settings/terms-conditions.blade.php
Normal file
@@ -0,0 +1,100 @@
|
||||
@extends('layouts.main')
|
||||
@section('title')
|
||||
{{ __('Terms & Conditions') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<div class="card">
|
||||
<form action="{{ route('settings.store') }}" method="post" class="create-form-without-reset">
|
||||
@csrf
|
||||
<div class="card-body">
|
||||
|
||||
<!-- Preview Button -->
|
||||
<div class="row form-group">
|
||||
<div class="col-2 d-flex justify-content-end">
|
||||
<a href="{{ route('public.terms-conditions') }}" target="_blank"
|
||||
class="btn icon btn-primary btn-sm rounded-pill"
|
||||
title="{{ __('View Page') }}">
|
||||
<i class="bi bi-eye-fill"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Language Tabs -->
|
||||
<ul class="nav nav-tabs" id="termsTabs" role="tablist">
|
||||
@foreach($languages as $lang)
|
||||
<li class="nav-item" role="presentation">
|
||||
<a class="nav-link {{ $loop->first ? 'active' : '' }}"
|
||||
id="terms-tab-{{ $lang->id }}"
|
||||
data-bs-toggle="tab"
|
||||
href="#terms-lang-{{ $lang->id }}"
|
||||
role="tab">
|
||||
{{ $lang->name }}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<!-- Tab Panes -->
|
||||
<div class="tab-content mt-3">
|
||||
@foreach($languages as $lang)
|
||||
<div class="tab-pane fade {{ $loop->first ? 'show active' : '' }}"
|
||||
id="terms-lang-{{ $lang->id }}"
|
||||
role="tabpanel">
|
||||
<input type="hidden" name="languages[]" value="{{ $lang->id }}">
|
||||
<div class="form-group">
|
||||
<label>{{ __("Terms & Conditions") }} ({{ $lang->name }})</label>
|
||||
<textarea name="terms_conditions[{{ $lang->id }}]"
|
||||
id="tinymce_editor_terms_{{ $lang->id }}"
|
||||
class="tinymce_editor form-control"
|
||||
rows="6">{{ old("terms_conditions.$lang->id", $translations['terms_conditions'][$lang->id] ?? ($settings['terms_conditions'] ?? '')) }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<!-- Save Button -->
|
||||
<div class="col-12 mt-3 d-flex justify-content-end">
|
||||
<button class="btn btn-primary" type="submit">{{ __('Save') }}</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
tinymce.init({
|
||||
selector: '.tinymce_editor',
|
||||
height: 400,
|
||||
menubar: false,
|
||||
plugins: [
|
||||
'advlist autolink lists link charmap preview anchor',
|
||||
'searchreplace visualblocks code fullscreen',
|
||||
'insertdatetime table paste code help wordcount'
|
||||
],
|
||||
toolbar: 'undo redo | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | removeformat | code',
|
||||
setup: function (editor) {
|
||||
editor.on("change keyup", function () {
|
||||
editor.save();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
468
resources/views/settings/watermark-settings.blade.php
Normal file
468
resources/views/settings/watermark-settings.blade.php
Normal file
@@ -0,0 +1,468 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Watermark Settings') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>{{ __('Watermark Settings') }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
{!! Form::open(['route' => 'settings.watermark-settings-store', 'data-parsley-validate', 'class' => 'create-form', 'data-success-function'=> "formSuccessFunction", 'enctype' => 'multipart/form-data']) !!}
|
||||
{{ csrf_field() }}
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Watermark Configuration') }}</h6>
|
||||
</div>
|
||||
|
||||
{{-- Enable/Disable Watermark --}}
|
||||
<div class="form-group mt-3">
|
||||
<label class="form-label" for="watermark_enabled">{{ __('Enable Watermark') }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" name="watermark_enabled" id="watermark_enabled" value="1"
|
||||
{{ ($watermarkSettings['enabled'] ?? 0) == 1 ? 'checked' : '' }}
|
||||
onchange="toggleWatermarkSettings(); updateEnabledLabel();">
|
||||
<input type="hidden" name="watermark_enabled" value="0" id="watermark_enabled_hidden">
|
||||
<label class="form-check-label" for="watermark_enabled" id="enabled-label">
|
||||
{{ ($watermarkSettings['enabled'] ?? 0) == 1 ? __('Enabled') : __('Disabled') }}
|
||||
</label>
|
||||
</div>
|
||||
<small class="text-muted">{{ __('When enabled, watermarks will be applied to uploaded images') }}</small>
|
||||
</div>
|
||||
|
||||
{{-- Watermark Image Upload --}}
|
||||
<div class="form-group mt-3" id="watermark-image-group">
|
||||
<label class="form-label" for="watermark_image">{{ __('Watermark Image') }}</label>
|
||||
<input type="file" name="watermark_image" id="watermark_image" class="form-control"
|
||||
accept="image/png,image/jpeg,image/jpg"
|
||||
onchange="previewWatermarkImage(this); updatePreview();">
|
||||
<small class="text-muted">{{ __('Upload a custom watermark image (PNG, JPG, JPEG). If not uploaded, default logo will be used.') }}</small>
|
||||
@if(!empty($watermarkSettings['watermark_image_url']))
|
||||
<div class="mt-2">
|
||||
<p class="text-success mb-1"><small>{{ __('Current Watermark:') }}</small></p>
|
||||
<img src="{{ $watermarkSettings['watermark_image_url'] }}"
|
||||
alt="Current Watermark"
|
||||
style="max-width: 150px; max-height: 150px; border: 1px solid #ddd; padding: 5px; border-radius: 4px;"
|
||||
id="current-watermark-preview">
|
||||
</div>
|
||||
@else
|
||||
<div class="mt-2">
|
||||
<p class="text-info mb-1"><small>{{ __('Using default logo: Company Logo') }}</small></p>
|
||||
</div>
|
||||
@endif
|
||||
<div id="new-watermark-preview" class="mt-2" style="display: none;">
|
||||
<p class="text-success mb-1"><small>{{ __('New Watermark Preview:') }}</small></p>
|
||||
<img id="new-watermark-preview-img" src="" alt="New Watermark"
|
||||
style="max-width: 150px; max-height: 150px; border: 1px solid #ddd; padding: 5px; border-radius: 4px;">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Opacity --}}
|
||||
<div class="form-group mt-3" id="watermark-settings-group">
|
||||
<label class="form-label" for="opacity">{{ __('Opacity') }} (<span id="opacity-value">{{ $watermarkSettings['opacity'] ?? 25 }}</span>%)</label>
|
||||
<input type="range" name="opacity" id="opacity" class="form-range" min="0" max="100"
|
||||
value="{{ $watermarkSettings['opacity'] ?? 25 }}"
|
||||
data-parsley-required="true"
|
||||
oninput="updatePreview(); document.getElementById('opacity-value').textContent = this.value;">
|
||||
<div class="d-flex justify-content-between">
|
||||
<small>0%</small>
|
||||
<small>100%</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Size --}}
|
||||
<div class="form-group mt-3">
|
||||
<label class="form-label" for="size">{{ __('Size') }} (<span id="size-value">{{ $watermarkSettings['size'] ?? 10 }}</span>%)</label>
|
||||
<input type="range" name="size" id="size" class="form-range" min="1" max="100"
|
||||
value="{{ $watermarkSettings['size'] ?? 10 }}"
|
||||
data-parsley-required="true"
|
||||
oninput="updatePreview(); document.getElementById('size-value').textContent = this.value;">
|
||||
<div class="d-flex justify-content-between">
|
||||
<small>1%</small>
|
||||
<small>100%</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Style --}}
|
||||
<div class="form-group mt-3">
|
||||
<label class="form-label" for="style">{{ __('Style') }}</label>
|
||||
<select name="style" id="style" class="form-select" data-parsley-required="true" onchange="updatePreview(); togglePositionField();">
|
||||
<option value="tile" {{ ($watermarkSettings['style'] ?? 'tile') == 'tile' ? 'selected' : '' }}>{{ __('Tile (Repeat Pattern)') }}</option>
|
||||
<option value="single" {{ ($watermarkSettings['style'] ?? 'tile') == 'single' ? 'selected' : '' }}>{{ __('Single Watermark') }}</option>
|
||||
<option value="center" {{ ($watermarkSettings['style'] ?? 'tile') == 'center' ? 'selected' : '' }}>{{ __('Center Only') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{{-- Position --}}
|
||||
<div class="form-group mt-3" id="position-group">
|
||||
<label class="form-label" for="position">{{ __('Position') }}</label>
|
||||
<select name="position" id="position" class="form-select" data-parsley-required="false" onchange="updatePreview();">
|
||||
<option value="top-left" {{ ($watermarkSettings['position'] ?? 'center') == 'top-left' ? 'selected' : '' }}>{{ __('Top Left') }}</option>
|
||||
<option value="top-right" {{ ($watermarkSettings['position'] ?? 'center') == 'top-right' ? 'selected' : '' }}>{{ __('Top Right') }}</option>
|
||||
<option value="bottom-left" {{ ($watermarkSettings['position'] ?? 'center') == 'bottom-left' ? 'selected' : '' }}>{{ __('Bottom Left') }}</option>
|
||||
<option value="bottom-right" {{ ($watermarkSettings['position'] ?? 'center') == 'bottom-right' ? 'selected' : '' }}>{{ __('Bottom Right') }}</option>
|
||||
<option value="center" {{ ($watermarkSettings['position'] ?? 'center') == 'center' ? 'selected' : '' }}>{{ __('Center') }}</option>
|
||||
</select>
|
||||
<small class="text-muted" id="position-note" style="display: none;">{{ __('Position is automatically set to center for this style') }}</small>
|
||||
{{-- Hidden input for position when style is 'tile' --}}
|
||||
<input type="hidden" name="position_hidden" id="position_hidden" value="center">
|
||||
</div>
|
||||
|
||||
{{-- Rotation --}}
|
||||
<div class="form-group mt-3">
|
||||
<label class="form-label" for="rotation">{{ __('Rotation') }} (<span id="rotation-value">{{ $watermarkSettings['rotation'] ?? -30 }}</span>°)</label>
|
||||
<input type="range" name="rotation" id="rotation" class="form-range" min="-360" max="360"
|
||||
value="{{ $watermarkSettings['rotation'] ?? -30 }}"
|
||||
oninput="updatePreview(); document.getElementById('rotation-value').textContent = this.value;">
|
||||
<div class="d-flex justify-content-between">
|
||||
<small>-360°</small>
|
||||
<small>360°</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 d-flex justify-content-end mt-4">
|
||||
<button type="submit" class="btn btn-primary me-1 mb-1">{{ __('Save Settings') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Preview Section --}}
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Preview') }}</h6>
|
||||
</div>
|
||||
<div class="form-group mt-3">
|
||||
<div id="preview-container" style="position: relative; width: 100%; height: 400px; border: 2px solid #ffffff; border-radius: 8px; overflow: hidden; background: linear-gradient(45deg, #f0f0f0 25%, transparent 25%), linear-gradient(-45deg, #f0f0f0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #f0f0f0 75%), linear-gradient(-45deg, transparent 75%, #f0f0f0 75%); background-size: 20px 20px; background-position: 0 0, 0 10px, 10px -10px, -10px 0px;">
|
||||
<div id="preview-image" style="width: 100%; height: 100%; background: linear-gradient(135deg, #eaebef 0%, #e1dfe4 100%); display: flex; align-items: center; justify-content: center; color: white; font-size: 24px; font-weight: bold;">
|
||||
{{ __('Sample Image') }}
|
||||
</div>
|
||||
<div id="watermark-preview" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 10;"></div>
|
||||
</div>
|
||||
<p class="text-muted mt-2 text-center"><small>{{ __('This is a visual preview of how the watermark will appear') }}</small></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{-- @dd($watermarkSettings); --}}
|
||||
{!! Form::close() !!}
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
const defaultWatermarkPath = "{{ asset('assets/images/logo/logo.png') }}";
|
||||
const customWatermarkPath = @if(!empty($watermarkSettings['watermark_image_url'])) "{{ $watermarkSettings['watermark_image_url'] }}" @else null @endif;
|
||||
let currentWatermarkPath = customWatermarkPath || defaultWatermarkPath;
|
||||
|
||||
function previewWatermarkImage(input) {
|
||||
if (input.files && input.files[0]) {
|
||||
const reader = new FileReader();
|
||||
reader.onload = function(e) {
|
||||
const previewDiv = document.getElementById('new-watermark-preview');
|
||||
const previewImg = document.getElementById('new-watermark-preview-img');
|
||||
previewImg.src = e.target.result;
|
||||
previewDiv.style.display = 'block';
|
||||
currentWatermarkPath = e.target.result;
|
||||
updatePreview();
|
||||
};
|
||||
reader.readAsDataURL(input.files[0]);
|
||||
}
|
||||
}
|
||||
|
||||
function updateEnabledLabel() {
|
||||
const enabled = document.getElementById('watermark_enabled').checked;
|
||||
const label = document.getElementById('enabled-label');
|
||||
label.textContent = enabled ? '{{ __('Enabled') }}' : '{{ __('Disabled') }}';
|
||||
}
|
||||
|
||||
function updateEnabledLabel() {
|
||||
const enabled = document.getElementById('watermark_enabled').checked;
|
||||
const label = document.getElementById('enabled-label');
|
||||
if (label) {
|
||||
label.textContent = enabled ? '{{ __('Enabled') }}' : '{{ __('Disabled') }}';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function togglePositionField() {
|
||||
const style = document.getElementById('style').value;
|
||||
const positionSelect = document.getElementById('position');
|
||||
const positionGroup = document.getElementById('position-group');
|
||||
const positionNote = document.getElementById('position-note');
|
||||
|
||||
if (style === 'tile') {
|
||||
// Requirement: Hide when Tile is selected
|
||||
positionGroup.style.display = 'none';
|
||||
} else if (style === 'center') {
|
||||
// Requirement: Show but Disable when Center Only is selected
|
||||
positionGroup.style.display = 'block';
|
||||
positionSelect.value = 'center'; // Force the value to center
|
||||
positionSelect.disabled = true;
|
||||
positionSelect.style.opacity = '0.6';
|
||||
positionNote.style.display = 'block';
|
||||
} else {
|
||||
// Default: Single Watermark
|
||||
positionGroup.style.display = 'block';
|
||||
positionSelect.disabled = false;
|
||||
positionSelect.style.opacity = '1';
|
||||
positionNote.style.display = 'none';
|
||||
}
|
||||
}
|
||||
function toggleWatermarkSettings() {
|
||||
const enabled = document.getElementById('watermark_enabled').checked;
|
||||
const settingsGroup = document.getElementById('watermark-settings-group');
|
||||
const imageGroup = document.getElementById('watermark-image-group');
|
||||
const positionGroup = document.getElementById('position-group');
|
||||
const styleSelect = document.getElementById('style');
|
||||
const opacityInput = document.getElementById('opacity');
|
||||
const sizeInput = document.getElementById('size');
|
||||
const rotationInput = document.getElementById('rotation');
|
||||
const positionSelect = document.getElementById('position');
|
||||
|
||||
if (enabled) {
|
||||
document.getElementById('watermark_enabled_hidden').value = '1';
|
||||
settingsGroup.style.opacity = '1';
|
||||
imageGroup.style.opacity = '1';
|
||||
styleSelect.disabled = false;
|
||||
opacityInput.disabled = false;
|
||||
sizeInput.disabled = false;
|
||||
rotationInput.disabled = false;
|
||||
|
||||
// Let togglePositionField handle the position logic
|
||||
togglePositionField();
|
||||
} else {
|
||||
document.getElementById('watermark_enabled_hidden').value = '0';
|
||||
settingsGroup.style.opacity = '0.5';
|
||||
imageGroup.style.opacity = '0.5';
|
||||
styleSelect.disabled = true;
|
||||
opacityInput.disabled = true;
|
||||
sizeInput.disabled = true;
|
||||
rotationInput.disabled = true;
|
||||
positionSelect.disabled = true;
|
||||
}
|
||||
updatePreview();
|
||||
}
|
||||
function createWatermarkElement(size, opacity, rotation) {
|
||||
const watermark = document.createElement('img');
|
||||
watermark.src = currentWatermarkPath;
|
||||
watermark.style.opacity = opacity / 100;
|
||||
watermark.style.transform = `rotate(${rotation}deg)`;
|
||||
watermark.style.width = size + 'px';
|
||||
watermark.style.height = 'auto';
|
||||
watermark.style.imageRendering = 'auto';
|
||||
watermark.style.maxWidth = size + 'px';
|
||||
watermark.style.maxHeight = size + 'px';
|
||||
watermark.onerror = function() {
|
||||
// If logo doesn't exist, create a placeholder
|
||||
const placeholder = document.createElement('div');
|
||||
placeholder.style.width = size + 'px';
|
||||
placeholder.style.height = size + 'px';
|
||||
placeholder.style.border = '2px dashed #999';
|
||||
placeholder.style.display = 'flex';
|
||||
placeholder.style.alignItems = 'center';
|
||||
placeholder.style.justifyContent = 'center';
|
||||
placeholder.style.opacity = opacity / 100;
|
||||
placeholder.style.transform = `rotate(${rotation}deg)`;
|
||||
placeholder.textContent = 'LOGO';
|
||||
placeholder.style.fontSize = Math.max(12, size / 4) + 'px';
|
||||
placeholder.style.color = '#999';
|
||||
placeholder.style.backgroundColor = 'rgba(255, 255, 255, 0.8)';
|
||||
placeholder.style.borderRadius = '4px';
|
||||
this.parentNode.replaceChild(placeholder, this);
|
||||
};
|
||||
watermark.onload = function() {
|
||||
// Ensure image maintains aspect ratio
|
||||
if (this.naturalWidth > 0 && this.naturalHeight > 0) {
|
||||
const aspectRatio = this.naturalHeight / this.naturalWidth;
|
||||
this.style.height = (size * aspectRatio) + 'px';
|
||||
}
|
||||
};
|
||||
return watermark;
|
||||
}
|
||||
|
||||
function updatePreview() {
|
||||
const enabled = document.getElementById('watermark_enabled').checked;
|
||||
const previewContainer = document.getElementById('preview-container');
|
||||
const watermarkPreview = document.getElementById('watermark-preview');
|
||||
|
||||
// Clear previous watermark
|
||||
watermarkPreview.innerHTML = '';
|
||||
|
||||
// If watermark is disabled, don't show preview
|
||||
if (!enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
const opacity = parseInt(document.getElementById('opacity').value);
|
||||
const size = parseInt(document.getElementById('size').value);
|
||||
const style = document.getElementById('style').value;
|
||||
const position = document.getElementById('position').value;
|
||||
const rotation = parseInt(document.getElementById('rotation').value);
|
||||
|
||||
const containerWidth = previewContainer.offsetWidth;
|
||||
const containerHeight = previewContainer.offsetHeight;
|
||||
|
||||
// Calculate watermark size
|
||||
const watermarkSize = (containerWidth * size) / 100;
|
||||
|
||||
if (style === 'tile') {
|
||||
// Create tiled pattern
|
||||
const spacing = watermarkSize * 1.5;
|
||||
const yPositions = [];
|
||||
for (let y = 0; y < containerHeight; y += spacing) {
|
||||
yPositions.push(y);
|
||||
}
|
||||
// Ensure last row is at the bottom - calculate bottom margin to maintain spacing
|
||||
const lastY = yPositions[yPositions.length - 1];
|
||||
const isLastRow = (y) => y === lastY;
|
||||
// Calculate bottom margin to maintain similar spacing as top (10px from top)
|
||||
const bottomMargin = 10;
|
||||
|
||||
for (let i = 0; i < yPositions.length; i++) {
|
||||
const y = yPositions[i];
|
||||
const isBottomRow = isLastRow(y);
|
||||
for (let x = 0; x < containerWidth; x += spacing) {
|
||||
const tile = createWatermarkElement(watermarkSize, opacity, rotation);
|
||||
tile.style.position = 'absolute';
|
||||
tile.style.left = x + 'px';
|
||||
if (isBottomRow) {
|
||||
// Use bottom positioning to stick to bottom
|
||||
tile.style.bottom = bottomMargin + 'px';
|
||||
tile.style.top = 'auto';
|
||||
} else {
|
||||
tile.style.top = y + 'px';
|
||||
tile.style.bottom = 'auto';
|
||||
}
|
||||
watermarkPreview.appendChild(tile);
|
||||
}
|
||||
}
|
||||
} else if (style === 'center') {
|
||||
// Center only - always use center position
|
||||
const watermark = createWatermarkElement(watermarkSize, opacity, rotation);
|
||||
watermark.style.position = 'absolute';
|
||||
const left = (containerWidth - watermarkSize) / 2;
|
||||
const top = (containerHeight - watermarkSize) / 2;
|
||||
watermark.style.left = left + 'px';
|
||||
watermark.style.top = top + 'px';
|
||||
watermarkPreview.appendChild(watermark);
|
||||
} else if (style === 'single') {
|
||||
// Single watermark - use position dropdown
|
||||
const watermark = createWatermarkElement(watermarkSize, opacity, rotation);
|
||||
watermark.style.position = 'absolute';
|
||||
|
||||
// Calculate position based on dropdown
|
||||
let left = 0, top = 0, bottom = null;
|
||||
switch(position) {
|
||||
case 'top-left':
|
||||
left = 10;
|
||||
top = 10;
|
||||
break;
|
||||
case 'top-right':
|
||||
left = containerWidth - watermarkSize - 10;
|
||||
top = 10;
|
||||
break;
|
||||
case 'bottom-left':
|
||||
left = 10;
|
||||
bottom = 10;
|
||||
break;
|
||||
case 'bottom-right':
|
||||
left = containerWidth - watermarkSize - 10;
|
||||
bottom = 10;
|
||||
break;
|
||||
case 'center':
|
||||
default:
|
||||
left = (containerWidth - watermarkSize) / 2;
|
||||
top = (containerHeight - watermarkSize) / 2;
|
||||
break;
|
||||
}
|
||||
|
||||
watermark.style.left = left + 'px';
|
||||
if (bottom !== null) {
|
||||
watermark.style.bottom = bottom + 'px';
|
||||
watermark.style.top = 'auto';
|
||||
} else {
|
||||
watermark.style.top = top + 'px';
|
||||
watermark.style.bottom = 'auto';
|
||||
}
|
||||
watermarkPreview.appendChild(watermark);
|
||||
}
|
||||
}
|
||||
|
||||
function togglePositionField() {
|
||||
const style = document.getElementById('style').value;
|
||||
const positionSelect = document.getElementById('position');
|
||||
const positionGroup = document.getElementById('position-group');
|
||||
const positionNote = document.getElementById('position-note');
|
||||
const positionHidden = document.getElementById('position_hidden');
|
||||
|
||||
if (style === 'tile') {
|
||||
// Hide position group when Tile is selected
|
||||
positionGroup.style.display = 'none';
|
||||
// Set hidden input value for form submission
|
||||
if (positionHidden) {
|
||||
positionHidden.value = 'center';
|
||||
}
|
||||
// Also set the select value (even though hidden)
|
||||
positionSelect.value = 'center';
|
||||
// Remove required attribute
|
||||
positionSelect.removeAttribute('data-parsley-required');
|
||||
} else if (style === 'center') {
|
||||
// Show but disable when Center Only is selected
|
||||
positionGroup.style.display = 'block';
|
||||
positionSelect.value = 'center'; // Force the value to center
|
||||
positionSelect.disabled = true;
|
||||
positionSelect.style.opacity = '0.6';
|
||||
positionNote.style.display = 'block';
|
||||
// Set required for validation
|
||||
positionSelect.setAttribute('data-parsley-required', 'true');
|
||||
} else {
|
||||
// Default: Single Watermark - show and enable
|
||||
positionGroup.style.display = 'block';
|
||||
positionSelect.disabled = false;
|
||||
positionSelect.style.opacity = '1';
|
||||
positionNote.style.display = 'none';
|
||||
// Set required for validation
|
||||
positionSelect.setAttribute('data-parsley-required', 'true');
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize preview on page load
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Wait for container to be fully rendered
|
||||
setTimeout(function() {
|
||||
toggleWatermarkSettings();
|
||||
togglePositionField();
|
||||
updatePreview();
|
||||
}, 100);
|
||||
|
||||
// Update preview when window is resized
|
||||
window.addEventListener('resize', function() {
|
||||
setTimeout(updatePreview, 100);
|
||||
});
|
||||
});
|
||||
|
||||
function formSuccessFunction(response) {
|
||||
if(!response.error && !response.warning){
|
||||
setTimeout(() => {
|
||||
window.location.reload();
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
150
resources/views/settings/web-settings.blade.php
Normal file
150
resources/views/settings/web-settings.blade.php
Normal file
@@ -0,0 +1,150 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('title')
|
||||
{{ __('Web Settings') }}
|
||||
@endsection
|
||||
|
||||
@section('page-title')
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 order-md-1 order-last">
|
||||
<h4>@yield('title')</h4>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 order-md-2 order-first"></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<section class="section">
|
||||
<form class="create-form-without-reset" action="{{route('settings.store') }}" method="post" enctype="multipart/form-data" data-success-function="successFunction" data-parsley-validate>
|
||||
@csrf
|
||||
<div class="row d-flex mb-3">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Web Settings') }}</h6>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label for="web_theme_color" class="form-label ">{{ __('Theme Color') }}</label>
|
||||
<input id="web_theme_color" name="web_theme_color" type="color" class="form-control form-control-color" placeholder="{{ __('Theme Color') }}" value="{{ $settings['web_theme_color'] ?? '' }}">
|
||||
</div>
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label class="form-label ">{{ __('Header Logo') }}</label>
|
||||
<input class="filepond" type="file" name="header_logo" id="header_logo">
|
||||
<img src="{{ $settings['header_logo'] ?? '' }}" data-custom-image="{{asset('assets/images/logo/Header Logo.svg')}}" class="w-25" alt="image">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label class="form-label ">{{ __('Footer Logo') }}</label>
|
||||
<input class="filepond" type="file" name="footer_logo" id="footer_logo">
|
||||
<img src="{{ $settings['footer_logo'] ?? '' }}" data-custom-image="{{asset('assets/images/logo/Footer Logo.svg')}}" class="w-25" alt="image">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label class="form-label ">{{ __('Placeholder image') }} <small>{{__('(This image will be displayed if no image is available.)')}}</small></label>
|
||||
<input class="filepond" type="file" name="placeholder_image" id="placeholder_image">
|
||||
<img src="{{ $settings['placeholder_image'] ?? '' }}" data-custom-image="{{asset('assets/images/logo/favicon.png')}}" alt="image" style="height: 31%;width: 21%;">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label for="footer_description" class="form-label ">{{ __('Footer Description') }}</label>
|
||||
<textarea id="footer_description" name="footer_description" class="form-control" rows="5" placeholder="{{ __('Footer Description') }}">{{ $settings['footer_description'] ?? '' }}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label for="google_map_iframe_link" class="form-label ">{{ __('Google Map Iframe Link') }}</label>
|
||||
<textarea id="google_map_iframe_link" name="google_map_iframe_link" type="text" class="form-control" rows="5" placeholder="{{ __('Google Map Iframe Link') }}">{{ $settings['google_map_iframe_link'] ?? '' }}</textarea>
|
||||
</div>
|
||||
|
||||
@if($languages_translate->isNotEmpty())
|
||||
<div class="col-md-12 mt-3">
|
||||
<hr>
|
||||
<h5>{{ __("Translations") . " (" . __("Optional") . ")" }}</h5>
|
||||
</div>
|
||||
|
||||
@foreach($languages_translate as $language)
|
||||
<div class="col-md-6 mb-4 p-3 rounded">
|
||||
<h6 class="mb-3 text-primary">
|
||||
{{ __("Translation for") }}: <strong>{{ $language->name }} ({{ $language->code }})</strong>
|
||||
</h6>
|
||||
|
||||
<input type="hidden" name="translations[{{ $language->id }}][name]" value="footer_description">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="translation_{{ $language->id }}" class="form-label">
|
||||
{{ __("Translated Footer Description") }}
|
||||
</label>
|
||||
<textarea class="form-control"
|
||||
name="translations[{{ $language->id }}][value]"
|
||||
rows="4"
|
||||
placeholder="{{ __('Contact Us in') . ' ' . $language->name }}">
|
||||
{{ old("translations.{$language->id}.value", $translations['footer_description'][$language->id] ?? '') }}
|
||||
</textarea>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label for="google_map_iframe_link" class="form-label ">{{ __('Default Latitude & Longitude') }} <small>{{__('(For Default Location Selection)')}}</small></label>
|
||||
<div class="form-group">
|
||||
<label for="default_latitude" class="form-label ">{{ __('Latitude') }}</label>
|
||||
<input id="default_latitude" name="default_latitude" type="text" class="form-control" placeholder="{{ __('Latitude') }}" value="{{ $settings['default_latitude'] ?? '' }}">
|
||||
<label for="default_longitude" class="form-label ">{{ __('Longitude') }}</label>
|
||||
<input id="default_longitude" name="default_longitude" type="text" class="form-control" placeholder="{{ __('Longitude') }}" value="{{ $settings['default_longitude'] ?? '' }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-6 col-sm-12">
|
||||
<label class="form-label">{{ __('Show Landing Page') }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="hidden" name="show_landing_page" value="0">
|
||||
<input class="form-check-input" type="checkbox" id="show_landing_page" name="show_landing_page" value="1" {{ isset($settings['show_landing_page']) && $settings['show_landing_page'] == 1 ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="show_landing_page">
|
||||
{{ __('On / Off') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="divider pt-3">
|
||||
<h6 class="divider-text">{{ __('Social Media Links') }}</h6>
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-4">
|
||||
<label for="instagram_link" class="form-label ">{{ __('Instagram Link') }}</label>
|
||||
<input id="instagram_link" name="instagram_link" type="url" class="form-control" placeholder="{{ __('Instagram Link') }}" value="{{ $settings['instagram_link'] ?? '' }}">
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-4">
|
||||
<label for="x_link" class="form-label ">{{ __('X Link') }}</label>
|
||||
<input id="x_link" name="x_link" type="url" class="form-control" placeholder="{{ __('X Link') }}" value="{{ $settings['x_link'] ?? '' }}">
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-4">
|
||||
<label for="facebook_link" class="form-label ">{{ __('Facebook Link') }}</label>
|
||||
<input id="facebook_link" name="facebook_link" type="url" class="form-control" placeholder="{{ __('Facebook Link') }}" value="{{ $settings['facebook_link'] ?? '' }}">
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-4">
|
||||
<label for="linkedin_link" class="form-label ">{{ __('Linkedin Link') }}</label>
|
||||
<input id="linkedin_link" name="linkedin_link" type="url" class="form-control" placeholder="{{ __('Linkedin Link') }}" value="{{ $settings['linkedin_link'] ?? '' }}">
|
||||
</div>
|
||||
<div class="form-group col-sm-12 col-md-4">
|
||||
<label for="pinterest_link" class="form-label ">{{ __('Pinterest Link') }}</label>
|
||||
<input id="pinterest_link" name="pinterest_link" type="url" class="form-control" placeholder="{{ __('Pinterest Link') }}" value="{{ $settings['pinterest_link'] ?? '' }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 d-flex justify-content-end">
|
||||
<button type="submit" value="btnAdd" class="btn btn-primary me-1 mb-3">{{ __('Save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
@endsection
|
||||
@section('js')
|
||||
<script>
|
||||
function successFunction() {
|
||||
window.location.reload();
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
Reference in New Issue
Block a user