Merge branch 'main' of https://github.com/Realmlist/LinkStack
This commit is contained in:
commit
c6467114c5
|
@ -3,6 +3,9 @@ contact_links:
|
|||
- name: Feature Request
|
||||
url: https://github.com/orgs/LinkStackOrg/discussions/categories/feature-requests
|
||||
about: Requests regarding new features, enhancements, or changes
|
||||
- name: Commission Custom Features
|
||||
url: https://linkstack.org/contact/
|
||||
about: Accelerate feature implementation with our commissioned services. Reach out to us for a personalized quote and fast-track the features you need.
|
||||
- name: Button requests
|
||||
url: https://github.com/orgs/LinkStackOrg/discussions/categories/predefined-links
|
||||
about: Requests regarding new buttons, brands, updated styling or changes
|
||||
|
|
|
@ -27,6 +27,7 @@ use App\Models\Admin;
|
|||
use App\Models\Button;
|
||||
use App\Models\Link;
|
||||
use App\Models\Page;
|
||||
use App\Models\UserData;
|
||||
|
||||
class AdminController extends Controller
|
||||
{
|
||||
|
@ -113,13 +114,31 @@ public function SendTestMail(Request $request)
|
|||
return redirect('admin/users/all');
|
||||
}
|
||||
|
||||
//Verify user
|
||||
public function verifyCheckUser(request $request)
|
||||
{
|
||||
$id = $request->id;
|
||||
$status = $request->verify;
|
||||
|
||||
if ($status == 'vip') {
|
||||
$verify = 'vip';
|
||||
UserData::saveData($id, 'checkmark', true);
|
||||
} elseif ($status == 'user') {
|
||||
$verify = 'user';
|
||||
}
|
||||
|
||||
User::where('id', $id)->update(['role' => $verify]);
|
||||
|
||||
return redirect(url('u')."/".$id);
|
||||
}
|
||||
|
||||
//Verify or un-verify users emails
|
||||
public function verifyUser(request $request)
|
||||
{
|
||||
$id = $request->id;
|
||||
$status = $request->verify;
|
||||
|
||||
if ($status == '-') {
|
||||
if ($status == "true") {
|
||||
$verify = '0000-00-00 00:00:00';
|
||||
} else {
|
||||
$verify = NULL;
|
||||
|
@ -147,9 +166,25 @@ public function SendTestMail(Request $request)
|
|||
return implode('', $pieces);
|
||||
}
|
||||
|
||||
$names = User::pluck('name')->toArray();
|
||||
|
||||
$adminCreatedNames = array_filter($names, function($name) {
|
||||
return strpos($name, 'Admin-Created-') === 0;
|
||||
});
|
||||
|
||||
$numbers = array_map(function($name) {
|
||||
return (int) str_replace('Admin-Created-', '', $name);
|
||||
}, $adminCreatedNames);
|
||||
|
||||
$maxNumber = !empty($numbers) ? max($numbers) : 0;
|
||||
$newNumber = $maxNumber + 1;
|
||||
|
||||
$domain = parse_url(url(''), PHP_URL_HOST);
|
||||
$domain = ($domain == 'localhost') ? 'example.com' : $domain;
|
||||
|
||||
$user = User::create([
|
||||
'name' => 'Admin-Created-' . random_str(8),
|
||||
'email' => random_str(8) . '@example.com',
|
||||
'name' => 'Admin-Created-' . $newNumber,
|
||||
'email' => strtolower(random_str(8)) . '@' . $domain,
|
||||
'password' => Hash::make(random_str(32)),
|
||||
'role' => 'user',
|
||||
'block' => 'no',
|
||||
|
|
|
@ -11,33 +11,36 @@ use Illuminate\Support\Facades\Auth;
|
|||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class RegisteredUserController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display the registration view.
|
||||
*
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('auth.register');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle an incoming registration request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
*/
|
||||
public function validateHandle(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'littlelink_name' => 'required|string|max:50|unique:users',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return response()->json(['valid' => false]);
|
||||
}
|
||||
|
||||
return response()->json(['valid' => true]);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'name' => 'required|string|max:255',
|
||||
'littlelink_name' => 'required|string|max:50|unique:users',
|
||||
'email' => 'required|string|email|max:255|unique:users',
|
||||
'password' => 'required|string|confirmed|min:8',
|
||||
'password' => 'required|string|min:8',
|
||||
]);
|
||||
|
||||
$name = $request->input('name');
|
||||
|
@ -48,23 +51,13 @@ class RegisteredUserController extends Controller
|
|||
$block = 'no';
|
||||
}
|
||||
|
||||
if(DB::table('users')->where('littlelink_name', $request->name)->exists())
|
||||
{
|
||||
Auth::login($user = User::create([
|
||||
'name' => $request->name,
|
||||
'email' => $request->email,
|
||||
'littlelink_name' => $request->littlelink_name,
|
||||
'password' => Hash::make($request->password),
|
||||
'role' => 'user',
|
||||
]));
|
||||
} else {
|
||||
Auth::login($user = User::create([
|
||||
'name' => $request->name,
|
||||
'email' => $request->email,
|
||||
'littlelink_name' => $request->name,
|
||||
'password' => Hash::make($request->password),
|
||||
'role' => 'user',
|
||||
]));
|
||||
}
|
||||
|
||||
$user->block = $block;
|
||||
$user->save();
|
||||
|
|
|
@ -789,6 +789,7 @@ class UserController extends Controller
|
|||
$name = $request->name;
|
||||
$checkmark = $request->checkmark;
|
||||
$sharebtn = $request->sharebtn;
|
||||
$tablinks = $request->tablinks;
|
||||
|
||||
if(env('HOME_URL') !== '' && $pageName != $littlelink_name && $littlelink_name == env('HOME_URL')){
|
||||
EnvEditor::editKey('HOME_URL', $pageName);
|
||||
|
@ -817,6 +818,12 @@ class UserController extends Controller
|
|||
UserData::saveData($userId, 'disable-sharebtn', true);
|
||||
}
|
||||
|
||||
if ($tablinks == "on") {
|
||||
UserData::saveData($userId, 'links-new-tab', true);
|
||||
} else {
|
||||
UserData::saveData($userId, 'links-new-tab', false);
|
||||
}
|
||||
|
||||
return Redirect('/studio/page');
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ class Kernel extends HttpKernel
|
|||
* @var array
|
||||
*/
|
||||
protected $routeMiddleware = [
|
||||
'disableCookies' => \App\Http\Middleware\DisableCookies::class,
|
||||
'auth' => \App\Http\Middleware\Authenticate::class,
|
||||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
||||
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
|
||||
|
|
|
@ -23,6 +23,10 @@ class UserTable extends DataTableComponent
|
|||
public function columns(): array
|
||||
{
|
||||
return [
|
||||
// Column::make("", "id")
|
||||
// ->format(function ($value, $row, Column $column) {
|
||||
// return view('components.table-components.select', ['user' => $row]);
|
||||
// }),
|
||||
Column::make(__('messages.ID'), "id")
|
||||
->sortable()
|
||||
->searchable(),
|
||||
|
@ -37,7 +41,7 @@ class UserTable extends DataTableComponent
|
|||
->searchable()
|
||||
->format(function ($value, $row, Column $column) {
|
||||
if (!$row->littlelink_name == NULL) {
|
||||
return "<a href='" . url('') . "/@" . $row->littlelink_name . "' target='_blank' class='text-info'><i class='bi bi-box-arrow-up-right'></i> " . $row->littlelink_name . " </a>";
|
||||
return "<a href='" . url('') . "/@" . htmlspecialchars($row->littlelink_name) . "' target='_blank' class='text-info'><i class='bi bi-box-arrow-up-right'></i> " . $row->littlelink_name . " </a>";
|
||||
} else {
|
||||
return 'N/A';
|
||||
}
|
||||
|
@ -61,20 +65,25 @@ class UserTable extends DataTableComponent
|
|||
->format(function ($value, $row, Column $column) {
|
||||
if (env('REGISTER_AUTH') !== 'auth') {
|
||||
if ($row->role == 'admin' && $row->email_verified_at != '') {
|
||||
return '<center>-</center>';
|
||||
return '<div class="text-center">-</div>';
|
||||
} else {
|
||||
if($row->email_verified_at == ''){
|
||||
$verifyLinkBool = 'true';
|
||||
} else {
|
||||
$verifyLinkBool = 'false';
|
||||
}
|
||||
$verifyLink = route('verifyUser', [
|
||||
'verify' => '-' . $row->email_verified_at,
|
||||
'verify' => $verifyLinkBool,
|
||||
'id' => $row->id
|
||||
]);
|
||||
if ($row->email_verified_at == '') {
|
||||
return '<a style="cursor:pointer" data-id="'.$verifyLink.'" class="user-email text-danger"><span class="badge bg-danger">' . __('messages.Pending') . '</span></a>';
|
||||
return '<div class="text-center"><a style="cursor:pointer" data-id="'.$verifyLink.'" class="user-email text-danger"><span class="badge bg-danger">' . __('messages.Pending') . '</span></a></div>';
|
||||
} else {
|
||||
return '<a style="cursor:pointer" data-id="'.$verifyLink.'" class="user-email text-danger"><span class="badge bg-success">' . __('messages.Verified') . '</span></a>';
|
||||
return '<div class="text-center"><a style="cursor:pointer" data-id="'.$verifyLink.'" class="user-email text-danger"><span class="badge bg-success">' . __('messages.Verified') . '</span></a></div>';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return '<center>-</center>';
|
||||
return '<div class="text-center">-</div>';
|
||||
}
|
||||
return '';
|
||||
})->html(),
|
||||
|
@ -82,13 +91,13 @@ class UserTable extends DataTableComponent
|
|||
->sortable()
|
||||
->format(function ($value, $row, Column $column) {
|
||||
if ($row->role === 'admin' && $row->id === 1) {
|
||||
return '<center>-</center>';
|
||||
return '<div class="text-center">-</div>';
|
||||
} else {
|
||||
$route = route('blockUser', ['block' => $row->block, 'id' => $row->id]);
|
||||
if ($row->block === 'yes') {
|
||||
$badge = '<a style="cursor:pointer" data-id="'.$route.'" class="user-block text-danger"><span class="badge bg-danger">'.__('messages.Pending').'</span></a>';
|
||||
$badge = '<div class="text-center"><a style="cursor:pointer" data-id="'.$route.'" class="user-block text-danger"><span class="badge bg-danger">'.__('messages.Pending').'</span></a></div>';
|
||||
} elseif ($row->block === 'no') {
|
||||
$badge = '<a style="cursor:pointer" data-id="'.$route.'" class="user-block text-danger"><span class="badge bg-success">'.__('messages.Approved').'</span></a>';
|
||||
$badge = '<div class="text-center"><a style="cursor:pointer" data-id="'.$route.'" class="user-block text-danger"><span class="badge bg-success">'.__('messages.Approved').'</span></a></div>';
|
||||
}
|
||||
return "<a href=\"$route\">$badge</a>";
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Support\Facades\Cookie;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class DisableCookies
|
||||
{
|
||||
|
||||
public function handle(Request $request, Closure $next)
|
||||
{
|
||||
$cookiesAlreadySet = $request->hasCookie(strtolower(config('app.name')).'_session') || $request->hasCookie('XSRF-TOKEN');
|
||||
|
||||
if ($cookiesAlreadySet) {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
Cookie::queue(Cookie::forget(strtolower(config('app.name')).'_session'));
|
||||
Cookie::queue(Cookie::forget('XSRF-TOKEN'));
|
||||
config(['session.driver' => 'array']);
|
||||
|
||||
$response = $next($request);
|
||||
$response->headers->remove('Set-Cookie');
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
|
@ -1,14 +1,3 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1432_8560)">
|
||||
<path d="M20 0H4C1.79086 0 0 1.79086 0 4V20C0 22.2091 1.79086 24 4 24H20C22.2091 24 24 22.2091 24 20V4C24 1.79086 22.2091 0 20 0Z" fill="url(#paint0_linear_1432_8560)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_1432_8560" x1="12" y1="0" x2="12" y2="24" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#0066FF"/>
|
||||
<stop offset="1" stop-color="#71C0FF"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_1432_8560">
|
||||
<rect width="24" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<svg viewBox="0 0 36 36" xml:space="preserve" width="36" height="36">
|
||||
<path d="M17.985 16.236c-1.6-3.1-5.94-8.89-9.98-11.74-3.87-2.73-5.35-2.26-6.31-1.82-1.12.51-1.32 2.23-1.32 3.24 0 1.01.55 8.3.92 9.51 1.2 4.02 5.45 5.38 9.37 4.94.2-.03.4-.06.61-.08-.2.03-.41.06-.61.08-5.74.85-10.85 2.94-4.15 10.39 7.36 7.62 10.09-1.63 11.49-6.33 1.4 4.69 3.01 13.61 11.35 6.33 6.27-6.33 1.72-9.54-4.02-10.39-.2-.02-.41-.05-.61-.08.21.03.41.05.61.08 3.92.44 8.18-.92 9.37-4.94.36-1.22.92-8.5.92-9.51 0-1.01-.2-2.73-1.32-3.24-.97-.44-2.44-.91-6.31 1.82-4.07 2.86-8.41 8.64-10.01 11.74z" style="fill:#1185fe"/>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 614 B After Width: | Height: | Size: 605 B |
|
@ -23,14 +23,15 @@
|
|||
"spatie/laravel-backup": "^8.17"
|
||||
},
|
||||
"require-dev": {
|
||||
"spatie/laravel-ignition": "^1.0",
|
||||
"barryvdh/laravel-ide-helper": "^2.12",
|
||||
"fakerphp/faker": "^1.9.1",
|
||||
"laravel-lang/common": "^2.0",
|
||||
"laravel/breeze": "^1.1",
|
||||
"laravel/sail": "^1.0.1",
|
||||
"mockery/mockery": "^1.4.2",
|
||||
"nunomaduro/collision": "^6.1",
|
||||
"phpunit/phpunit": "^9.3.3"
|
||||
"phpunit/phpunit": "^9.3.3",
|
||||
"spatie/laravel-ignition": "^1.0"
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
|
@ -48,14 +49,15 @@
|
|||
}
|
||||
},
|
||||
"scripts": {
|
||||
"post-update-cmd": [
|
||||
"php artisan vendor:publish --tag=laravel-assets --ansi --force",
|
||||
"php artisan lang:update",
|
||||
"echo.> storage/app/ISINSTALLED"
|
||||
],
|
||||
"post-autoload-dump": [
|
||||
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
|
||||
"@php artisan package:discover --ansi"
|
||||
],
|
||||
"post-root-package-install": [
|
||||
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
|
||||
],
|
||||
"post-update-cmd": ["echo.> storage/app/ISINSTALLED"]
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
"laravel": {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -764,6 +764,8 @@ return [
|
|||
'Create the admin user' => '3. Erstellen Sie den Admin-Benutzer',
|
||||
'Configure the app' => '4. Konfigurieren Sie die App',
|
||||
'Choose a language' => 'Wählen Sie eine Sprache',
|
||||
'setup.disclaimer' => 'Es gelten unsere',
|
||||
'Terms and Conditions' => 'Allgemeinen Geschäftsbedingungen',
|
||||
|
||||
'Next' => 'Nächste',
|
||||
'Yes' => 'Ja',
|
||||
|
|
|
@ -761,6 +761,8 @@ return [
|
|||
'Create the admin user' => '3. Create the admin user',
|
||||
'Configure the app' => '4. Configure the app',
|
||||
'Choose a language' => 'Choose a language',
|
||||
'setup.disclaimer' => 'By continuing, you agree to abide by our',
|
||||
'Terms and Conditions' => 'Terms and Conditions',
|
||||
|
||||
'Next' => 'Next',
|
||||
'Yes' => 'Yes',
|
||||
|
|
|
@ -18,7 +18,7 @@ foreach($pages as $page)
|
|||
<!-- Validation Errors -->
|
||||
<x-auth-validation-errors class="mb-4" :errors="$errors" />
|
||||
|
||||
<div style="max-width:480px" class="container mt-5 w-100">
|
||||
<div class="container mt-5 w-100">
|
||||
<div class="card p-5">
|
||||
<a href="{{ url('') }}" class="d-flex align-items-center mb-3">
|
||||
<!--Logo start-->
|
||||
|
@ -53,6 +53,16 @@ foreach($pages as $page)
|
|||
<input type="text" class="form-control" id="name" name="name" aria-describedby="name" placeholder=" " :value="old('name')" required autofocus >
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="littlelink_name" class="form-label">{{__('messages.Page URL')}}</label>
|
||||
<div class="input-group mb-3 has-validation">
|
||||
<span class="input-group-text" id="basic-addon3">{{str_replace(['http://', 'https://'], '', url(''))}}/@</span>
|
||||
<input type="littlelink_name" class="form-control" id="littlelink_name" name="littlelink_name" aria-describedby="littlelink_name" placeholder=" " :value="old('littlelink_name')" required autofocus >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@include('auth.url-validation')
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="email" class="form-label">{{__('messages.Email')}}</label>
|
||||
|
@ -65,12 +75,6 @@ foreach($pages as $page)
|
|||
<input type="password" class="form-control" id="password" aria-describedby="password" placeholder=" " name="password" required autocomplete="new-password" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="password_confirmation" class="form-label">{{__('messages.Confirm Password')}}</label>
|
||||
<input type="password" class="form-control" id="password_confirmation" aria-describedby="password_confirmation" placeholder=" " name="password_confirmation" required />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12 d-flex justify-content-between">
|
||||
<div class="form-check mb-3">
|
||||
<input type="checkbox" class="form-check-input" name="remember" id="remember_me">
|
||||
|
@ -79,7 +83,7 @@ foreach($pages as $page)
|
|||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-center">
|
||||
<button type="submit" class="btn btn-primary">{{__('messages.Sign Up')}}</button>
|
||||
<button id="submit-btn" type="submit" class="btn btn-primary">{{__('messages.Sign Up')}}</button>
|
||||
</div>
|
||||
@if(env('ENABLE_SOCIAL_LOGIN') == 'true')
|
||||
<p class="text-center my-3">{{__('messages.or sign in with other accounts?')}}</p>
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
<script>{!! file_get_contents(base_path("assets/js/jquery.min.js")) !!}</script>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
var submitBtn = $('#submit-btn');
|
||||
|
||||
$('#littlelink_name').on('keyup', function () {
|
||||
var littlelinkName = $(this).val();
|
||||
|
||||
if (littlelinkName.trim() !== '') {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '{{url("/validate-handle")}}',
|
||||
data: {
|
||||
'_token': '{{ csrf_token() }}',
|
||||
'littlelink_name': littlelinkName
|
||||
},
|
||||
success: function (data) {
|
||||
$('#littlelink_name').removeClass('is-valid is-invalid');
|
||||
$('#username-error').remove();
|
||||
|
||||
if (typeof exceptionvar !== 'undefined' && littlelinkName.trim() === exceptionvar) {
|
||||
submitBtn.prop('disabled', false);
|
||||
} else {
|
||||
if (data.valid) {
|
||||
$('#littlelink_name').addClass('is-valid');
|
||||
submitBtn.prop('disabled', false);
|
||||
} else {
|
||||
$('#littlelink_name').addClass('is-invalid');
|
||||
$('<div id="username-error" class="invalid-feedback">That username is already taken</div>').insertAfter('#littlelink_name');
|
||||
submitBtn.prop('disabled', true);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$('#littlelink_name').removeClass('is-valid is-invalid');
|
||||
$('#username-error').remove();
|
||||
submitBtn.prop('disabled', true);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -149,6 +149,18 @@ use App\Models\Page;
|
|||
Page::first()->update(['home_message' => $home_message]);
|
||||
}
|
||||
|
||||
$migrationFiles = glob(database_path('migrations/*.php'));
|
||||
|
||||
$fileNames = array_map(function ($file) {
|
||||
return basename($file, '.php');
|
||||
}, $migrationFiles);
|
||||
|
||||
foreach ($fileNames as $fileName) {
|
||||
if (!DB::table('migrations')->where('migration', $fileName)->exists()) {
|
||||
DB::table('migrations')->insert(['migration' => $fileName, 'batch' => 1]);
|
||||
}
|
||||
}
|
||||
|
||||
/* Updates button database entries */
|
||||
Schema::disableForeignKeyConstraints();
|
||||
$existingMigration = '2021_03_17_044922_create_buttons_table';
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
@if($user->id == 1)
|
||||
<input class="form-check-input" type="checkbox" id="disabledFieldsetCheck" disabled="">
|
||||
@else
|
||||
<div class="form-check">
|
||||
<input wire:model="selected" wire:loading.attr.delay="disabled" data-id="{{ $user->id }}" value="{{ $user->id }}" type="checkbox" class="form-check-input">
|
||||
</div>
|
||||
@endif
|
|
@ -65,6 +65,8 @@
|
|||
</form>
|
||||
{{-- end language --}}
|
||||
|
||||
<p style="margin:25px;max-width:350px;">{{__('messages.setup.disclaimer')}} <a href="https://linkstack.org/terms-and-conditions/" target="_blank">{{__('messages.Terms and Conditions')}}</a>.</p>
|
||||
|
||||
 <a class="btn" href="{{url('?2')}}"><button>{{__('messages.Next')}}</button></a> 
|
||||
@endif
|
||||
|
||||
|
|
|
@ -264,83 +264,6 @@
|
|||
}
|
||||
</style>
|
||||
<style>
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-cyrillic-300-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-cyrillic-300-normal.woff) format('woff');
|
||||
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
|
||||
}
|
||||
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-cyrillic-ext-300-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-cyrillic-ext-300-normal.woff) format('woff');
|
||||
unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
|
||||
}
|
||||
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-greek-300-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-greek-300-normal.woff) format('woff');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-greek-ext-300-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-greek-ext-300-normal.woff) format('woff');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-latin-300-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-latin-300-normal.woff) format('woff');
|
||||
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
|
||||
}
|
||||
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-latin-ext-300-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-latin-ext-300-normal.woff) format('woff');
|
||||
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-vietnamese-300-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-vietnamese-300-normal.woff) format('woff');
|
||||
unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB;
|
||||
}
|
||||
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
|
@ -348,8 +271,8 @@
|
|||
font-weight: 400;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-cyrillic-400-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-cyrillic-400-normal.woff) format('woff');
|
||||
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
|
||||
src: url({{ asset('assets/fonts/Inter/inter-cyrillic-400-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-cyrillic-400-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
|
||||
/* cyrillic-ext */
|
||||
|
@ -359,7 +282,7 @@
|
|||
font-weight: 400;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-cyrillic-ext-400-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-cyrillic-ext-400-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-cyrillic-ext-400-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
|
||||
|
@ -370,7 +293,7 @@
|
|||
font-weight: 400;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-greek-400-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-greek-400-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-greek-400-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-greek-400-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
|
||||
|
@ -381,10 +304,21 @@
|
|||
font-weight: 400;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-greek-ext-400-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-greek-ext-400-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-greek-ext-400-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-greek-ext-400-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
|
||||
/* hebrew */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url({{ asset('assets/fonts/Inter/inter-hebrew-400-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-hebrew-400-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
|
@ -392,7 +326,7 @@
|
|||
font-weight: 400;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-latin-400-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-latin-400-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-latin-400-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-latin-400-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
|
@ -403,7 +337,7 @@
|
|||
font-weight: 400;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-latin-ext-400-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-latin-ext-400-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-latin-ext-400-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-latin-ext-400-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
|
@ -414,84 +348,7 @@
|
|||
font-weight: 400;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-vietnamese-400-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-vietnamese-400-normal.woff) format('woff');
|
||||
unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB;
|
||||
}
|
||||
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-cyrillic-500-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-cyrillic-500-normal.woff) format('woff');
|
||||
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
|
||||
}
|
||||
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-cyrillic-ext-500-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-cyrillic-ext-500-normal.woff) format('woff');
|
||||
unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
|
||||
}
|
||||
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-greek-500-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-greek-500-normal.woff) format('woff');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-greek-ext-500-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-greek-ext-500-normal.woff) format('woff');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-latin-500-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-latin-500-normal.woff) format('woff');
|
||||
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
|
||||
}
|
||||
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-latin-ext-500-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-latin-ext-500-normal.woff) format('woff');
|
||||
unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-vietnamese-500-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-vietnamese-500-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-vietnamese-400-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-vietnamese-400-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
|
@ -502,8 +359,8 @@
|
|||
font-weight: 600;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-cyrillic-600-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-cyrillic-600-normal.woff) format('woff');
|
||||
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
|
||||
src: url({{ asset('assets/fonts/Inter/inter-cyrillic-600-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-cyrillic-600-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
|
||||
/* cyrillic-ext */
|
||||
|
@ -513,7 +370,7 @@
|
|||
font-weight: 600;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-cyrillic-ext-600-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-cyrillic-ext-600-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-cyrillic-ext-600-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-cyrillic-ext-600-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
|
||||
|
@ -524,7 +381,7 @@
|
|||
font-weight: 600;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-greek-600-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-greek-600-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-greek-600-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-greek-600-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
|
||||
|
@ -535,10 +392,21 @@
|
|||
font-weight: 600;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-greek-ext-600-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-greek-ext-600-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-greek-ext-600-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-greek-ext-600-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
|
||||
/* hebrew */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url({{ asset('assets/fonts/Inter/inter-hebrew-600-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-hebrew-600-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
|
@ -546,7 +414,7 @@
|
|||
font-weight: 600;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-latin-600-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-latin-600-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-latin-600-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-latin-600-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
|
@ -557,7 +425,7 @@
|
|||
font-weight: 600;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-latin-ext-600-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-latin-ext-600-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-latin-ext-600-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-latin-ext-600-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
|
@ -568,7 +436,7 @@
|
|||
font-weight: 600;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-vietnamese-600-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-vietnamese-600-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-vietnamese-600-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-vietnamese-600-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
|
@ -579,8 +447,8 @@
|
|||
font-weight: 700;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-cyrillic-700-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-cyrillic-700-normal.woff) format('woff');
|
||||
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
|
||||
src: url({{ asset('assets/fonts/Inter/inter-cyrillic-700-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-cyrillic-700-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
|
||||
/* cyrillic-ext */
|
||||
|
@ -590,7 +458,7 @@
|
|||
font-weight: 700;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-cyrillic-ext-700-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-cyrillic-ext-700-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-cyrillic-ext-700-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-cyrillic-ext-700-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
|
||||
|
@ -601,7 +469,7 @@
|
|||
font-weight: 700;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-greek-700-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-greek-700-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-greek-700-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-greek-700-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
|
||||
|
@ -612,10 +480,21 @@
|
|||
font-weight: 700;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-greek-ext-700-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-greek-ext-700-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-greek-ext-700-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-greek-ext-700-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
|
||||
/* hebrew */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url({{ asset('assets/fonts/Inter/inter-hebrew-700-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-hebrew-700-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
|
@ -623,7 +502,7 @@
|
|||
font-weight: 700;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-latin-700-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-latin-700-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-latin-700-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-latin-700-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
|
@ -634,7 +513,7 @@
|
|||
font-weight: 700;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-latin-ext-700-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-latin-ext-700-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-latin-ext-700-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-latin-ext-700-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
|
@ -645,8 +524,7 @@
|
|||
font-weight: 700;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(assets/fonts/Inter/inter-vietnamese-700-normal.woff2) format('woff2'), url(assets/fonts/Inter/inter-vietnamese-700-normal.woff) format('woff');
|
||||
src: url({{ asset('assets/fonts/Inter/inter-vietnamese-700-normal.woff2')}} ) format('woff2'), url({{ asset('assets/fonts/Inter/inter-vietnamese-700-normal.woff')}} ) format('woff');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
</style>
|
|
@ -31,10 +31,10 @@
|
|||
@break
|
||||
@case('custom')
|
||||
@if($link->custom_css === "" or $link->custom_css === "NULL" or (theme('allow_custom_buttons') == "false"))
|
||||
<div style="--delay: {{ $initial++ }}s" class="button-entrance"><a id="{{ $link->id }}" class="button button-{{ $link->name }} button-click button-hover icon-hover" rel="noopener noreferrer nofollow noindex" href="{{ $link->link }}" @if((UserData::getData($userinfo->id, 'links-new-tab') != false))target="_blank"@endif ><i style="color: {{$link->custom_icon}}" class="icon hvr-icon fa {{$link->custom_icon}}"></i>{{ $link->title }}</a></div>
|
||||
<div style="--delay: {{ $initial++ }}s" class="button-entrance"><a id="{{ $link->id }}" class="button button-custom button-click button-hover icon-hover" rel="noopener noreferrer nofollow noindex" href="{{ $link->link }}" @if((UserData::getData($userinfo->id, 'links-new-tab') != false))target="_blank"@endif ><i style="color: {{$link->custom_icon}}" class="icon hvr-icon fa {{$link->custom_icon}}"></i>{{ $link->title }}</a></div>
|
||||
@break
|
||||
@elseif($link->custom_css != "")
|
||||
<div style="--delay: {{ $initial++ }}s" class="button-entrance"><a id="{{ $link->id }}" class="button-click button-hover icon-hover" style="{{ $link->custom_css }}" rel="noopener noreferrer nofollow noindex" href="{{ $link->link }}" @if((UserData::getData($userinfo->id, 'links-new-tab') != false))target="_blank"@endif ><i style="color: {{$link->custom_icon}}" class="icon hvr-icon fa {{$link->custom_icon}}"></i>{{ $link->title }}</a></div>
|
||||
<div style="--delay: {{ $initial++ }}s" class="button-entrance"><a id="{{ $link->id }}" class="button button-custom button-click button-hover icon-hover" style="{{ $link->custom_css }}" rel="noopener noreferrer nofollow noindex" href="{{ $link->link }}" @if((UserData::getData($userinfo->id, 'links-new-tab') != false))target="_blank"@endif ><i style="color: {{$link->custom_icon}}" class="icon hvr-icon fa {{$link->custom_icon}}"></i>{{ $link->title }}</a></div>
|
||||
@break
|
||||
@endif
|
||||
@case('custom_website')
|
||||
|
@ -42,7 +42,7 @@
|
|||
<div style="--delay: {{ $initial++ }}s" class="button-entrance"><a id="{{ $link->id }}" class="button button-custom_website button-click button-hover icon-hover" rel="noopener noreferrer nofollow noindex" href="{{ $link->link }}" @if((UserData::getData($userinfo->id, 'links-new-tab') != false))target="_blank"@endif ><img alt="{{ $link->name }}" class="icon hvr-icon" src="@if(file_exists(base_path("assets/favicon/icons/").localIcon($link->id))){{url('assets/favicon/icons/'.localIcon($link->id))}}@else{{getFavIcon($link->id)}}@endif" onerror="this.onerror=null; this.src='{{asset('assets/linkstack/icons/website.svg')}}';">{{ $link->title }}</a></div>
|
||||
@break
|
||||
@elseif($link->custom_css != "")
|
||||
<div style="--delay: {{ $initial++ }}s" class="button-entrance"><a id="{{ $link->id }}" class="button-click button-hover icon-hover" style="{{ $link->custom_css }}" rel="noopener noreferrer nofollow noindex" href="{{ $link->link }}" @if((UserData::getData($userinfo->id, 'links-new-tab') != false))target="_blank"@endif ><img alt="{{ $link->name }}" class="icon hvr-icon" src="@if(file_exists(base_path("assets/favicon/icons/").localIcon($link->id))){{url('assets/favicon/icons/'.localIcon($link->id))}}@else{{getFavIcon($link->id)}}@endif" onerror="this.onerror=null; this.src='{{asset('assets/linkstack/icons/website.svg')}}';">{{ $link->title }}</a></div>
|
||||
<div style="--delay: {{ $initial++ }}s" class="button-entrance"><a id="{{ $link->id }}" class="button button-custom_website button-click button-hover icon-hover" style="{{ $link->custom_css }}" rel="noopener noreferrer nofollow noindex" href="{{ $link->link }}" @if((UserData::getData($userinfo->id, 'links-new-tab') != false))target="_blank"@endif ><img alt="{{ $link->name }}" class="icon hvr-icon" src="@if(file_exists(base_path("assets/favicon/icons/").localIcon($link->id))){{url('assets/favicon/icons/'.localIcon($link->id))}}@else{{getFavIcon($link->id)}}@endif" onerror="this.onerror=null; this.src='{{asset('assets/linkstack/icons/website.svg')}}';">{{ $link->title }}</a></div>
|
||||
@break
|
||||
@endif
|
||||
@default
|
||||
|
|
|
@ -80,6 +80,19 @@ if(Auth::user()->id == $userinfo->id){
|
|||
</div>
|
||||
</li>
|
||||
@endif
|
||||
@if(!$isUser and $userinfo->role != 'admin')
|
||||
<li id="linkstack-admin-bar-defaultsp">
|
||||
@if($userinfo->role == 'vip')
|
||||
<a class="ab-item" href="{{route('verifyCheckUser', ['verify' => 'user', 'id' => $userinfo->id]);}}">
|
||||
<svg style="top:5px;position:relative;" xmlns="http://www.w3.org/2000/svg" height="30" width="30" viewBox="0 0 350 512"><path fill="#f0301e" d="M148.318 339.734c-9.872-6.385-17.162-14.661-22.502-24.945-24.141 6.892-45.916 2.799-63.712-15.055-17.662-17.719-21.743-39.341-14.888-63.082C1.827 213.511.832 150.051 47.123 125.64c-6.813-23.82-2.936-45.607 14.941-63.466 17.733-17.715 39.283-21.87 63.403-14.97 12.205-21.609 30.238-34.318 55.597-34.289 25.157.028 43.112 12.552 55.366 34.228 24.033-6.869 45.778-2.839 63.585 15.104 17.645 17.779 21.659 39.38 14.824 63.116 45.417 23.578 46 86.753.043 111.052 6.798 23.843 2.901 45.626-14.998 63.468-17.746 17.69-39.311 21.819-63.461 14.884-9.296 17.366-23.263 28.952-42.682 33.063-15.981 3.383-31.116.675-45.424-8.094m44.037-122.589l33.372 33.511 24.901-25.162-45.585-45.032 44.783-44.014-24.731-25.203-44.89 45.258-43.587-44.332-25.288 24.678 45.226 44.8-44.559 43.814 24.977 25.155 44.405-45.082 10.977 11.61z"/><path fill="#fefdfd" d="M192.089 216.912l-10.711-11.377-44.405 45.082-24.977-25.155 44.559-43.814-45.226-44.8 25.288-24.678 43.587 44.332 44.89-45.258 24.731 25.203-44.783 44.014 45.585 45.032-24.901 25.162-33.638-33.744z"/></svg>
|
||||
</a>
|
||||
@else
|
||||
<a class="ab-item" href="{{route('verifyCheckUser', ['verify' => 'vip', 'id' => $userinfo->id]);}}">
|
||||
<svg style="top:5px;position:relative;" xmlns="http://www.w3.org/2000/svg" height="30" width="30" viewBox="0 0 350 512"><path fill="#1CAC78" d="M315.781 241.008c.091.153.181.305-.07.893-4.665 3.842-1.388 8.16-1.639 12.026-.577 8.9-.804 17.822-1.173 26.735-11.409 26.671-42.123 44.84-76.299 34.094-12.105 21.438-30.064 34.219-55.381 34.261-25.297.042-43.281-12.605-55.707-34.304-11.566 3.608-23.199 4.461-34.937 1.252-23.151-6.328-37.968-21.15-44.461-44.158-2.988-10.587-2.368-21.345.407-31.88.782-2.968.006-4.047-2.319-5.454-22.857-13.836-33.473-34.2-30.93-60.766 1.187-12.401 5.59-23.861 15.203-32.634L46.82 124.08c-.04-.157-.435-1.732-.536-3.907 4.172-7.605.812-14.996 1.326-22.185.043-.599-1.7-1.325-2.613-1.992.863-9.097 4.426-17.161 10.118-24.828 3.078-.394 5.489 4.931 8.22-.218.113-1.018-.109-1.986-.114-3.249l5.439-7.557c.008.017-.633-1.308-1.274-2.633 0 0 .083.054.384.09.608-.425.914-.885 1.22-1.345 17.06-12.62 35.8-14.991 56.069-9.119 3.342-4.577 6.377-9.536 10.181-13.811 20.699-23.259 55.789-27.717 80.509-9.45 8.177 6.042 14.499 14.593 22.384 22.735 22.04-5.889 43.011-2.211 61.41 15.536 18.695 18.032 19.652 39.543 15.672 63.668l3.889 2.278c31.648 18.919 39.984 61.207 17.263 90.134-4.799 6.109-11.69 10.574-18.199 15.56-2.079.42-4.662.857-4.848 1.778-.393 1.951-1.83 5.276 2.461 5.444m-86.803-116.516l-68.172 70.225-32.758-31.453c-2.706-2.662-4.39-3.254-7.183-.112-4.198 4.723-8.905 8.993-13.365 13.486l-9.373 9.608 62.678 60.889 104.155-106.212-27.15-25.74-8.833 9.309z"/><path fill="#42ef28" d="M313.103 280.406c.165-8.658.392-17.581.969-26.48.251-3.865-3.026-8.184 1.614-11.761 3.136 9.303 3.01 18.764.267 28.232l-2.849 10.009z"/><path fill="#33e919" d="M67.096 57.645c.932 1.192 1.573 2.517 1.565 2.5l-5.441 7.559c-.219.296-.222.301-.472.484-.082 1.059.085 1.935.253 2.812-2.396 5.1-4.807-.225-7.588-.003 3.545-4.415 7.47-8.817 11.684-13.352z"/><path fill="#33f017" d="M44.755 96.342c1.155.321 2.897 1.047 2.854 1.646-.514 7.188 2.847 14.58-1.31 21.796-.781-7.558-1.284-15.327-1.545-23.442M46 102.14v7.776l.722-.007V98.772c-.469 1.699-.593 2.147-.722 3.368z"/><path fill="#42ef28" d="M315.787 240.643c-4.298.197-2.861-3.128-2.468-5.079.186-.921 2.769-1.358 4.502-1.719-2.209 1.718-3.657 3.508-2.034 6.798z"/><path fill="#33e919" d="M68.738 56.302c-.054.414-.36.874-.961 1.25.04-.457.374-.83.961-1.25z"/><path fill="#fefffe" d="M229.224 124.238l8.586-9.056 27.15 25.74-104.155 106.212-62.678-60.889 9.373-9.608c4.461-4.492 9.167-8.762 13.365-13.486 2.792-3.142 4.477-2.55 7.183.112l32.758 31.453 68.418-70.479z"/><path fill="#33e919" d="M63.002 67.998c.224.966.446 1.934.333 2.952C63 71 63 71 63.001 70.625l-.004-2.62z"/><path d="M62.746 68.188c.252.566.253 1.315.254 2.437-.169-.502-.336-1.379-.254-2.437zm-16.743 33.566c.126-.835.25-1.283.719-2.982v11.137l-.722.007.002-8.162z" fill="#1CAC78"/></svg>
|
||||
</a>
|
||||
@endif
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
<ul id="linkstack-admin-bar-top-secondary" class="ab-top-secondary ab-top-menu">
|
||||
<li id="linkstack-admin-bar-my-account" class="menupop with-avatar">
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
@if(env('CUSTOM_META_TAGS') == 'true')
|
||||
@include('layouts.meta')
|
||||
@else
|
||||
<meta name="description" content="{{ $userinfo->littlelink_description }}">
|
||||
<meta name="description" content="{{ strip_tags($userinfo->littlelink_description) }}">
|
||||
<meta name="author" content="{{ $userinfo->name }}">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
@endif
|
||||
|
|
|
@ -22,25 +22,36 @@
|
|||
<h2 class="mb-4 card-header"><i class="bi bi-person"> {{__('messages.Manage Users')}}</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
<div id="select-active" class="d-none">
|
||||
<h5 class="mb-2">{{__('messages.Select Action')}}:</h3>
|
||||
<button class="mb-3 btn btn-danger rounded-pill btn-sm">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-16" width="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.2871 5.24297C20.6761 5.24297 21 5.56596 21 5.97696V6.35696C21 6.75795 20.6761 7.09095 20.2871 7.09095H3.71385C3.32386 7.09095 3 6.75795 3 6.35696V5.97696C3 5.56596 3.32386 5.24297 3.71385 5.24297H6.62957C7.22185 5.24297 7.7373 4.82197 7.87054 4.22798L8.02323 3.54598C8.26054 2.61699 9.0415 2 9.93527 2H14.0647C14.9488 2 15.7385 2.61699 15.967 3.49699L16.1304 4.22698C16.2627 4.82197 16.7781 5.24297 17.3714 5.24297H20.2871ZM18.8058 19.134C19.1102 16.2971 19.6432 9.55712 19.6432 9.48913C19.6626 9.28313 19.5955 9.08813 19.4623 8.93113C19.3193 8.78413 19.1384 8.69713 18.9391 8.69713H5.06852C4.86818 8.69713 4.67756 8.78413 4.54529 8.93113C4.41108 9.08813 4.34494 9.28313 4.35467 9.48913C4.35646 9.50162 4.37558 9.73903 4.40755 10.1359C4.54958 11.8992 4.94517 16.8102 5.20079 19.134C5.38168 20.846 6.50498 21.922 8.13206 21.961C9.38763 21.99 10.6811 22 12.0038 22C13.2496 22 14.5149 21.99 15.8094 21.961C17.4929 21.932 18.6152 20.875 18.8058 19.134Z" fill="currentColor"></path>
|
||||
</svg>
|
||||
</span>
|
||||
Delete
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<livewire:user-table />
|
||||
|
||||
<a href="{{ url('') }}/admin/new-user">+ {{__('messages.Add new user')}}</a>
|
||||
|
||||
<script type="text/javascript">
|
||||
// Function to confirm and delete users
|
||||
var elems = document.getElementsByClassName('confirmation');
|
||||
var confirmIt = function(e) {
|
||||
e.preventDefault();
|
||||
if (confirm("{{ __('messages.confirm.delete.user') }}")) {
|
||||
var userId = this.getAttribute('data-id');
|
||||
this.innerHTML = '<div class="d-flex justify-content-center"><div class="spinner-border spinner-border-sm text-primary" role="status"><span class="visually-hidden">Loading...</span></div></div>';
|
||||
deleteUserData(userId);
|
||||
}
|
||||
};
|
||||
|
||||
var deleteUserData = function(userId) {
|
||||
var url = "{{ route('deleteTableUser', ['id' => ':id']) }}".replace(':id', userId);
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('POST', url, true);
|
||||
xhr.open('POST', `{{ route('deleteTableUser', ['id' => ':id']) }}`.replace(':id', userId), true);
|
||||
xhr.setRequestHeader('X-CSRF-TOKEN', '{{ csrf_token() }}');
|
||||
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
|
||||
xhr.onreadystatechange = function() {
|
||||
|
@ -48,8 +59,34 @@
|
|||
refreshLivewireTable();
|
||||
}
|
||||
};
|
||||
var data = JSON.stringify({ id: userId });
|
||||
xhr.send(data);
|
||||
xhr.send(JSON.stringify({ id: userId }));
|
||||
};
|
||||
|
||||
// Function to handle user actions (verification and blocking)
|
||||
var handleUserClick = function(e) {
|
||||
e.preventDefault();
|
||||
var userId = this.getAttribute('data-id');
|
||||
this.innerHTML = '<div class="d-flex justify-content-center"><div class="spinner-border spinner-border-sm text-primary" role="status"><span class="visually-hidden">Loading...</span></div></div>';
|
||||
sendUserAction(userId);
|
||||
};
|
||||
|
||||
var sendUserAction = function(userId) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', userId, true);
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||
refreshLivewireTable();
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
};
|
||||
|
||||
// Attach click event listeners to elements with class 'confirmation', 'user-email', and 'user-block'
|
||||
var attachClickEventListeners = function(className, handler) {
|
||||
var elems = document.getElementsByClassName(className);
|
||||
for (var i = 0, l = elems.length; i < l; i++) {
|
||||
elems[i].addEventListener('click', handler, false);
|
||||
}
|
||||
};
|
||||
|
||||
// Function to refresh the Livewire table
|
||||
|
@ -57,63 +94,68 @@
|
|||
Livewire.components.getComponentsByName('user-table')[0].$wire.$refresh()
|
||||
};
|
||||
|
||||
// Attach click event listeners to elements with class 'confirmation'
|
||||
for (var i = 0, l = elems.length; i < l; i++) {
|
||||
elems[i].addEventListener('click', confirmIt, false);
|
||||
}
|
||||
attachClickEventListeners('confirmation', confirmIt);
|
||||
attachClickEventListeners('user-email', handleUserClick);
|
||||
attachClickEventListeners('user-block', handleUserClick);
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
// Function to handle user verification requests
|
||||
var elems = document.getElementsByClassName('user-email');
|
||||
{{-- <script type="text/javascript">
|
||||
// Get the delete button div
|
||||
var deleteButtonDiv = document.getElementById('select-active');
|
||||
|
||||
var handleUserClick = function (e) {
|
||||
e.preventDefault();
|
||||
var userId = this.getAttribute('data-id');
|
||||
sendVerificationRequest(userId);
|
||||
// Get all checkboxes
|
||||
var checkboxes = document.querySelectorAll('.form-check-input');
|
||||
|
||||
// Function to check if at least one checkbox is selected
|
||||
var isAnyCheckboxSelected = function() {
|
||||
for (var i = 0; i < checkboxes.length; i++) {
|
||||
if (checkboxes[i].checked) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
var sendVerificationRequest = function(userId) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', userId, true);
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||
refreshLivewireTable();
|
||||
// Function to show or hide the delete button div
|
||||
var showOrHideDeleteButton = function() {
|
||||
if (isAnyCheckboxSelected()) {
|
||||
deleteButtonDiv.classList.remove('d-none');
|
||||
} else {
|
||||
setTimeout(function() {
|
||||
deleteButtonDiv.classList.add('d-none');
|
||||
});
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
};
|
||||
|
||||
// Attach click event listeners to elements with class 'user-email'
|
||||
for (var i = 0, l = elems.length; i < l; i++) {
|
||||
elems[i].addEventListener('click', handleUserClick, false);
|
||||
// Add event listener to checkboxes
|
||||
for (var i = 0; i < checkboxes.length; i++) {
|
||||
checkboxes[i].addEventListener('change', showOrHideDeleteButton);
|
||||
}
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
// Function to handle user blocking
|
||||
var elems = document.getElementsByClassName('user-block');
|
||||
|
||||
var handleUserClick = function (e) {
|
||||
e.preventDefault();
|
||||
var userId = this.getAttribute('data-id');
|
||||
sendVerificationRequest(userId);
|
||||
};
|
||||
// Get the delete button
|
||||
var deleteButton = deleteButtonDiv.querySelector('button');
|
||||
|
||||
var sendVerificationRequest = function(userId) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', userId, true);
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||
refreshLivewireTable();
|
||||
// Function to delete selected users
|
||||
var deleteSelectedUsers = function() {
|
||||
for (var i = 0; i < checkboxes.length; i++) {
|
||||
if (checkboxes[i].checked && checkboxes[i].getAttribute('data-id') !== null) {
|
||||
var userId = checkboxes[i].getAttribute('data-id');
|
||||
|
||||
// Find the corresponding <a> element
|
||||
var deleteButton = document.querySelector('a[data-id="' + userId + '"]');
|
||||
|
||||
// If the <a> element exists, add loading spinner to it
|
||||
if (deleteButton) {
|
||||
deleteButton.innerHTML = '<div class="d-flex justify-content-center"><div class="spinner-border spinner-border-sm text-primary" role="status"><span class="visually-hidden">Loading...</span></div></div>';
|
||||
}
|
||||
|
||||
deleteUserData(userId);
|
||||
}
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
};
|
||||
|
||||
// Attach click event listeners to elements with class 'user-block'
|
||||
for (var i = 0, l = elems.length; i < l; i++) {
|
||||
elems[i].addEventListener('click', handleUserClick, false);
|
||||
}
|
||||
</script>
|
||||
// Add event listener to delete button
|
||||
deleteButton.addEventListener('click', deleteSelectedUsers);
|
||||
</script> --}}
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
@ -229,14 +229,13 @@
|
|||
$url = $_SERVER['REQUEST_URI'];
|
||||
if( strpos( $url, "no_page_name" ) == true ) echo '<span style="color:#FF0000; font-size:120%;">You do not have a Page URL</span>'; ?>
|
||||
<br>
|
||||
<label>{{__('messages.Page URL')}}</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="d-none d-md-block input-group-text">{{ url('') }}/@</div>
|
||||
<div class="d-md-none input-group-text">@</div>
|
||||
</div>
|
||||
<input type="text" class="form-control" name="littlelink_name" value="{{ $page->littlelink_name ?? '' }}" required>
|
||||
<label for="littlelink_name" class="form-label">{{__('messages.Page URL')}}</label>
|
||||
<div class="input-group mb-3 has-validation">
|
||||
<span class="input-group-text" id="basic-addon3">{{str_replace(['http://', 'https://'], '', url(''))}}/@</span>
|
||||
<input type="littlelink_name" class="form-control" id="littlelink_name" name="littlelink_name" aria-describedby="littlelink_name" value="{{ $page->littlelink_name ?? '' }}" :value="old('littlelink_name')" required autofocus >
|
||||
</div>
|
||||
<script>var exceptionvar = " value="{{ $page->littlelink_name }}";</script>
|
||||
@include('auth.url-validation')
|
||||
|
||||
<label style="margin-top:15px">{{__('messages.Display name')}}</label>
|
||||
<div class="input-group">
|
||||
|
@ -280,7 +279,7 @@
|
|||
<label class="form-check-label" for="tablinks">{{__('messages.Enable')}}</label>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">{{__('messages.Save')}}</button>
|
||||
<button id="submit-btn" type="submit" class="mt-3 ml-3 btn btn-primary">{{__('messages.Save')}}</button>
|
||||
</form>
|
||||
|
||||
@if(env('ALLOW_USER_HTML') === true)
|
||||
|
|
|
@ -28,6 +28,7 @@ if(config('advanced-config.forgot_password_url') != '') {
|
|||
$forgot_password = "/forgot-password";
|
||||
}
|
||||
|
||||
Route::post('/validate-handle', [RegisteredUserController::class, 'validateHandle']);
|
||||
if(env('ALLOW_REGISTRATION') or $register !== '/register') {
|
||||
Route::get($register, [RegisteredUserController::class, 'create'])
|
||||
->middleware('guest')
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
<?php
|
||||
use App\Http\Controllers\UserController;
|
||||
|
||||
Route::middleware('disableCookies')->group(function () {
|
||||
|
||||
$host = request()->getHost();
|
||||
$customConfigs = config('advanced-config.custom_domains', []);
|
||||
|
||||
|
@ -43,3 +45,5 @@ if (env('HOME_URL') != '') {
|
|||
Route::get('/', [App\Http\Controllers\HomeController::class, 'home'])->name('home');
|
||||
}
|
||||
}
|
||||
|
||||
});
|
|
@ -68,13 +68,13 @@ Route::get('/panel/diagnose', function () {
|
|||
|
||||
//Public route
|
||||
$custom_prefix = config('advanced-config.custom_url_prefix');
|
||||
Route::get('/going/{id?}', [UserController::class, 'clickNumber'])->where('link', '.*')->name('clickNumber');
|
||||
Route::get('/going/{id?}', [UserController::class, 'clickNumber'])->where('link', '.*')->name('clickNumber')->middleware('disableCookies');
|
||||
Route::get('/info/{id?}', [AdminController::class, 'redirectInfo'])->name('redirectInfo');
|
||||
if($custom_prefix != ""){Route::get('/' . $custom_prefix . '{littlelink}', [UserController::class, 'littlelink'])->name('littlelink');}
|
||||
Route::get('/@{littlelink}', [UserController::class, 'littlelink'])->name('littlelink');
|
||||
Route::get('/pages/'.strtolower(footer('Terms')), [AdminController::class, 'pagesTerms'])->name('pagesTerms');
|
||||
Route::get('/pages/'.strtolower(footer('Privacy')), [AdminController::class, 'pagesPrivacy'])->name('pagesPrivacy');
|
||||
Route::get('/pages/'.strtolower(footer('Contact')), [AdminController::class, 'pagesContact'])->name('pagesContact');
|
||||
Route::get('/@{littlelink}', [UserController::class, 'littlelink'])->name('littlelink')->middleware('disableCookies');
|
||||
Route::get('/pages/'.strtolower(footer('Terms')), [AdminController::class, 'pagesTerms'])->name('pagesTerms')->middleware('disableCookies');
|
||||
Route::get('/pages/'.strtolower(footer('Privacy')), [AdminController::class, 'pagesPrivacy'])->name('pagesPrivacy')->middleware('disableCookies');
|
||||
Route::get('/pages/'.strtolower(footer('Contact')), [AdminController::class, 'pagesContact'])->name('pagesContact')->middleware('disableCookies');
|
||||
Route::get('/theme/@{littlelink}', [UserController::class, 'theme'])->name('theme');
|
||||
Route::get('/vcard/{id?}', [UserController::class, 'vcard'])->name('vcard');
|
||||
Route::get('/u/{id?}', [UserController::class, 'userRedirect'])->name('userRedirect');
|
||||
|
@ -82,7 +82,7 @@ Route::get('/u/{id?}', [UserController::class, 'userRedirect'])->name('userRedir
|
|||
Route::get('/report', function () {return view('report');});
|
||||
Route::post('/report', [UserController::class, 'report'])->name('report');
|
||||
|
||||
Route::get('/demo-page', [App\Http\Controllers\HomeController::class, 'demo'])->name('demo');
|
||||
Route::get('/demo-page', [App\Http\Controllers\HomeController::class, 'demo'])->name('demo')->middleware('disableCookies');
|
||||
|
||||
}
|
||||
|
||||
|
@ -152,7 +152,8 @@ Route::group([
|
|||
Route::get('/admin/links/{id}', [AdminController::class, 'showLinksUser'])->name('showLinksUser');
|
||||
Route::get('/admin/deleteLink/{id}', [AdminController::class, 'deleteLinkUser'])->name('deleteLinkUser');
|
||||
Route::get('/admin/users/block/{block}/{id}', [AdminController::class, 'blockUser'])->name('blockUser');
|
||||
Route::get('/admin/users/verify/-{verify}/{id}', [AdminController::class, 'verifyUser'])->name('verifyUser');
|
||||
Route::get('/admin/users/verify/{verify}/{id}', [AdminController::class, 'verifyCheckUser'])->name('verifyCheckUser');
|
||||
Route::get('/admin/users/verify-mail/{verify}/{id}', [AdminController::class, 'verifyUser'])->name('verifyUser');
|
||||
Route::get('/admin/edit-user/{id}', [AdminController::class, 'showUser'])->name('showUser');
|
||||
Route::post('/admin/edit-user/{id}', [AdminController::class, 'editUser'])->name('editUser');
|
||||
Route::get('/admin/new-user', [AdminController::class, 'createNewUser'])->name('createNewUser')->middleware('max.users');
|
||||
|
|
|
@ -1 +1 @@
|
|||
4.6.1
|
||||
4.7.1
|
||||
|
|
Loading…
Reference in New Issue