first commit
Some checks failed
Build / run (push) Has been cancelled

This commit is contained in:
maher
2025-10-29 11:42:25 +01:00
commit 703f50a09d
4595 changed files with 385164 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{__('Invoice')}}</title>
<base href="{{ $htmlBaseUri }}">
<link rel="stylesheet" href="invoice.css">
<style>
h1 {
display: inline-block;
}
h2 { font-size: 2em; }
.invoice-details {
float: right;
}
.invoice-details span { font-weight: normal; font-size: .9em;}
.total { float: right; }
.total .amount { font-weight: normal; }
table { margin-top: 50px; border-radius: 4px; overflow: hidden }
thead { background: #4662fa; color: white; }
thead th { border: none !important; }
.notice {
background: #d7d7d7;
padding: 2em;
clear: both;
margin-top: 6em;
border-radius: 4px;
}
.col {
float: left;
width: 300px;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<h1>{{parse_url(config('app.url'))['host']}}</h1>
<div class="invoice-details">
<h2 contenteditable>{{__('Invoice ID')}}: {{$invoice['uuid']}}</h2>
<h4 contenteditable>{{__('Invoice Date')}}: <span id="date-of-invoice">{{$invoice['created_at']}}</span></h4>
</div>
</div>
<div class="row billing__references">
<div class="col">
<h4>{{__('Billed To')}}:</h4>
<h5 contenteditable>{{$user['display_name']}}</h5>
<p contenteditable>{{$user['email']}}</p>
</div>
<div class="col">
<h4>{{__('From')}}:</h4>
<h5>{{config('app.name')}}</h5>
@if($address = $settings->get('billing.invoice.address'))
<p class="address" contenteditable>
{!! $address !!}
</p>
@endif
</div>
</div>
<div class="row billing__lines">
<table class="lines table table-striped">
<thead>
<tr>
<th>{{__('Description')}}</th>
<th>{{__('Qty')}}</th>
<th>{{__('Price')}}</th>
</tr>
</thead>
<tbody>
<tr contenteditable>
<td>{{config('app.name')}} {{__('Subscription Dues')}} ({{$invoice['subscription']['product']['name']}} {{__('plan')}})</td>
<td>1</td>
<td>{{$invoice['currency_symbol']}}{{$invoice['subscription']['price']['amount']}}</td>
</tr>
</tbody>
</table>
<div class="total">
<h4>{{__('Total')}}: <span class="amount">{{$invoice['subscription']['price']['currency_symbol']}}{{$invoice['subscription']['price']['amount']}} {{$invoice['subscription']['price']['currency']}}</span></h4>
</div>
@if($notes = $settings->get('billing.invoice.notes'))
<div class="notes notice" contenteditable>
<h5>{{__('Notes')}}</h5>
<p>{!! $notes !!}</p>
</div>
@endif
</div>
</div>
<script>
window.print();
</script>
</body>
</html>

View File

@@ -0,0 +1,9 @@
@component('mail::message')
# Mail Set Up Successfully!
This email was sent out to test your new mail credentials for {{ config('app.name') }}.
Because you have received this email, mail has been set-up properly and this email can be ignored.
Thanks,<br>
{{ config('app.name') }}
@endcomponent

View File

@@ -0,0 +1,109 @@
@php
use Illuminate\Support\Js;
use Sentry\Laravel\Integration;
@endphp
<!DOCTYPE html>
<html
lang="{{ $bootstrapData->get('language') }}"
style="{{ $bootstrapData->getSelectedTheme()->getCssVariables() }}"
@class(['dark' => $bootstrapData->getSelectedTheme('is_dark')])
>
<head>
<base href="{{ $htmlBaseUri }}" />
@if (isset($seoTagsView))
@include($seoTagsView, $pageData)
@elseif (isset($meta))
@include('common::prerender.meta-tags')
@else
<title>{{ settings('branding.site_name') }}</title>
@endif
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=5"
data-keep="true"
/>
<link
rel="icon"
type="image/x-icon"
href="favicon/icon-144x144.png"
data-keep="true"
/>
<link
rel="apple-touch-icon"
href="favicon/icon-192x192.png"
data-keep="true"
/>
<link rel="manifest" href="manifest.json" data-keep="true" />
<meta
name="theme-color"
content="rgb({{ $bootstrapData->getSelectedTheme()->getHtmlThemeColor() }})"
data-keep="true"
/>
@if ($fontFamily = $bootstrapData->getSelectedTheme()->getFontFamily())
@if($bootstrapData->getSelectedTheme()->isGoogleFont())
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family={{$fontFamily}}:wght@400;500;600;700&display=swap" rel="stylesheet">
@endif
@endif
<script>
window.bootstrapData = {!! json_encode($bootstrapData->get()) !!};
</script>
@if (isset($devCssPath))
<link rel="stylesheet" href="{{ $devCssPath }}" />
@endif
@viteReactRefresh
@vite('resources/client/main.tsx')
@if (file_exists($customCssPath))
@if ($content = file_get_contents($customCssPath))
<style>
{!! $content !!}
</style>
@endif
@endif
@if (file_exists($customHtmlPath))
@if ($content = file_get_contents($customHtmlPath))
{!! $content !!}
@endif
@endif
@if ($code = settings('analytics.tracking_code'))
<!-- Google tag (gtag.js) -->
<script
async
src="https://www.googletagmanager.com/gtag/js?id={{ settings('analytics.tracking_code') }}"
></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', "{{ settings('analytics.tracking_code') }}");
</script>
@endif
@yield('head-end')
</head>
<body>
<div id="root">{!! $ssrContent ?? '' !!}</div>
@if (! isset($ssrContent))
<noscript>
You need to have javascript enabled in order to use
<strong>{{ config('app.name') }}</strong>
.
</noscript>
@endif
@yield('body-end')
</body>
</html>

View File

@@ -0,0 +1,36 @@
<x-install-layout>
<p class="mb-24">Enter credentials for the super admin account.</p>
@if($errors->hasAny())
<div class="bg-danger p-10 mb-20 rounded-md text-white ">
<div class="font-semibold mb-6">There was an issue. This is the error message:</div>
<div class="text-sm">{{$errors->first()}}</div>
</div>
@endif
<form action="{{ url('install/admin/validate') }}" method="post" class="w-full">
@csrf
<div class="mb-20">
<label for="email" class="block mb-4 text-sm">Admin email</label>
<input type="text" name="email" id="email" class="block py-8 px-12 border rounded shadow w-full" value="{{ old('email') }}" required>
@if($errors->has('email'))
<div class="text-danger text-sm mt-4">{{$errors->get('email')[0]}}</div>
@endif
</div>
<div class="mb-20">
<label for="password" class="block mb-4 text-sm">Admin password</label>
<input type="password" name="password" id="password" class="block py-8 px-12 border rounded shadow w-full" value="{{ old('password') }}" required>
@if($errors->has('password'))
<div class="text-danger text-sm mt-4">{{$errors->get('password')[0]}}</div>
@endif
</div>
<div class="mb-20">
<label for="password_confirmation" class="block mb-4 text-sm">Confirm password</label>
<input type="password" name="password_confirmation" id="password_confirmation" class="block py-8 px-12 border rounded shadow w-full" value="{{ old('password_confirmation') }}" required>
@if($errors->has('password_confirmation'))
<div class="text-danger text-sm mt-4">{{$errors->get('password_confirmation')[0]}}</div>
@endif
</div>
<x-install-button>Continue</x-install-button>
</form>
</x-install-layout>

View File

@@ -0,0 +1,5 @@
@if($attributes->has('href'))
<a href="{{ $attributes->get('href') }}" type="submit" class="mt-24 block w-max py-8 px-16 bg-primary font-semibold text-on-primary rounded shadow active:bg-primary-dark focus:ring">{{$slot}}</a>
@else
<button type="submit" class="mt-24 block w-max py-8 px-16 bg-primary font-semibold text-on-primary rounded shadow active:bg-primary-dark focus:ring">{{$slot}}</button>
@endif

View File

@@ -0,0 +1,23 @@
<?php
$cssVariables = collect(config('common.themes.light'))
->mapWithKeys(fn($value, $key) => [$key => $value])
->map(fn($value, $key) => "$key: $value;")
->implode('');
$buttonClass =
'py-8 px-16 bg-primary font-semibold text-on-primary rounded shadow active:bg-primary-dark focus:ring';
?>
<!DOCTYPE html>
<html style="{{$cssVariables}}">
<head>
<title>Install</title>
@vite('resources/client/main.css')
</head>
<body class="bg-alt flex flex-col items-center justify-center text-main">
<img src="{{ file_exists(public_path('images/logo-dark.png')) ? asset('images/logo-dark.png') : asset('images/logo-dark.svg') }}" alt="Logo" class="h-40 mb-34" />
<div class="w-780 p-24 rounded-md bg shadow border">
{{$slot}}
</div>
</body>
</html>

View File

@@ -0,0 +1,40 @@
<x-install-layout>
<p class="mb-24">Below you should enter your database connection details. If you're not sure about these, contact your hosting provider.</p>
@if($errors->has('database'))
<div class="bg-danger p-10 mb-20 rounded-md text-white ">
<div class="font-semibold mb-6">There was an issue. This is the error message:</div>
<div class="text-sm">{{$errors->get('database')[0]}}</div>
</div>
@endif
<form action="{{ url('install/database/validate') }}" method="post" class="w-full">
@csrf
<div class="mb-20">
<label for="host" class="block mb-4 text-sm">Database host</label>
<input type="text" name="host" id="host" class="block py-8 px-12 border rounded shadow w-full" value="{{ $host ?? 'localhost' }}" required>
</div>
<div class="mb-20">
<label for="database" class="block mb-4 text-sm">Database name</label>
<input type="text" name="database" id="database" class="block py-8 px-12 border rounded shadow w-full" value="{{ $database ?? 'database' }}" required>
</div>
<div class="mb-20">
<label for="username" class="block mb-4 text-sm">Database username</label>
<input type="text" name="username" id="username" class="block py-8 px-12 border rounded shadow w-full" value="{{ $username ?? 'root' }}" required>
</div>
<div class="mb-20">
<label for="password" class="block mb-4 text-sm">Database password</label>
<input type="password" name="password" id="password" class="block py-8 px-12 border rounded shadow w-full" value="{{ $password ?? '' }}">
</div>
<div class="mb-20">
<label for="port" class="block mb-4 text-sm">Database port</label>
<input type="text" name="port" id="port" class="block py-8 px-12 border rounded shadow w-full" value="{{ $port ?? '3306' }}" placeholder="Optional">
</div>
<div class="mb-20">
<label for="prefix" class="block mb-4 text-sm">Database prefix</label>
<input type="text" name="prefix" id="prefix" class="block py-8 px-12 border rounded shadow w-full" value="{{ $prefix ?? '' }}" placeholder="Optional">
</div>
<x-install-button>Continue</x-install-button>
</form>
</x-install-layout>

View File

@@ -0,0 +1,24 @@
<x-install-layout>
<p class="mb-24 text-lg">Installation has been successfully completed!</p>
<div class="flex items-start gap-24 justify-between mb-24">
<div>
<div class="font-semibold mb-4">Website address</div>
<div class="mb-4">Your website is located at this URL:</div>
<p><a class="text-primary underline" href="{{$url}}">{{$url}}</a></p>
</div>
<div class="col">
<h4 class="font-semibold mb-4">Administration area</h4>
<div class="mb-4">Use the following link to log into the administration area:</div>
<p><a class="text-primary underline" href={{"$url/admin"}}>{{"$url/admin"}}</a></p>
</div>
</div>
<div>
<h4>Support and questions</h4>
<div>If you have any issues or questions please submit a ticket <a class="text-primary underline" target="_blank" href="https://support.vebto.com">here</a>. Thanks!</div>
</div>
<x-install-button href="/">Done</x-install-button>
</x-install-layout>

View File

@@ -0,0 +1,13 @@
<x-install-layout>
<p class="mb-24">Welcome to the {{config('app.name')}}. Before getting started, we need some information on the database. You will need to know the following items before proceeding.</p>
<ol class="mb-24 list-decimal list-inside">
<li>Database host</li>
<li>Database name</li>
<li>Database username</li>
<li>Database password</li>
</ol>
<p class="mb-24">Most likely these items were supplied to you by your Web Host. If you dont have this information, then you will need to contact them before you can continue.</p>
<p>Installer will insert this information inside a configuration file so your site can communicate with your database.</p>
<p>Need more help? <a class="text-primary underline hover:text-primary-dark" href="https://support.vebto.com/hc/articles/35/37/34/installation" target="_blank">See installation guide.</a></p>
<x-install-button :href="url('install/requirements')">Continue</x-install-button>
</x-install-layout>

View File

@@ -0,0 +1,29 @@
<x-install-layout>
@if($allPassed)
<p class="mb-24">Your server meets all the requirements for {{config('app.name')}}. Click continue button below to proceed with the installation.</p>
@else
<p class="mb-24">We've found some issues that need to be fixed before you can proceed with the installation.</p>
@endif
@foreach($results as $groupName => $group)
<div class="border-b py-12">
<div class="flex items-center justify-between gap-24">
<div class="capitalize">{{$groupName}}</div>
@if($group['allPassed'])
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#22c55e"><path d="m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg>
@else
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#ef4444"><path d="M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm-40-160h80v-240h-80v240Zm40 360q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg>
@endif
</div>
@if(!$group['allPassed'])
@foreach($group['items'] as $item)
@if(!$item['passes'])
<p class="text-sm text-danger mt-10">{!! $item['errorMessage'] !!}</p>
@endif
@endforeach
@endif
</div>
@endforeach
<x-install-button
:href="$allPassed ? url('install/database') : url('install/requirements')"
>{{ $allPassed ? 'Continue' : 'Check again' }}</x-install-button>
</x-install-layout>

View File

@@ -0,0 +1,12 @@
<x-install-layout>
<p class="mb-24 text-lg">Update has been successfully completed!</p>
<p class="mb-24">You can close this page now and continue using the site.</p>
<div>
<h4>Support and questions</h4>
<div>If you have any issues or questions please submit a ticket <a class="text-primary underline" target="_blank" href="https://support.vebto.com">here</a>. Thanks!</div>
</div>
<x-install-button href="/">Done</x-install-button>
</x-install-layout>

View File

@@ -0,0 +1,29 @@
<x-install-layout>
@if($allPassed)
<p class="mb-24">Your server meets all the requirements. Click continue button below to proceed with the update.</p>
@else
<p class="mb-24">We've found some issues that need to be fixed before you can proceed with the update.</p>
@endif
@foreach($results as $groupName => $group)
<div class="border-b py-12">
<div class="flex items-center justify-between gap-24">
<div class="capitalize">{{$groupName}}</div>
@if($group['allPassed'])
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#22c55e"><path d="m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg>
@else
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#ef4444"><path d="M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm-40-160h80v-240h-80v240Zm40 360q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg>
@endif
</div>
@if(!$group['allPassed'])
@foreach($group['items'] as $item)
@if(!$item['passes'])
<p class="text-sm text-danger mt-10">{{$item['errorMessage']}}</p>
@endif
@endforeach
@endif
</div>
@endforeach
<x-install-button
:href="$allPassed ? url('update/perform') : url('update')"
>{{ $allPassed ? 'Continue' : 'Check again' }}</x-install-button>
</x-install-layout>

View File

@@ -0,0 +1,17 @@
<h1 style="text-align: center">Logging in</h1>
<script>
let status = "{!! $status !!}";
let data = null;
@if(isset($data) && $data)
@if(json_decode($data))
data = {!! $data !!};
@else
data = '{!! $data !!}';
@endif
@endif
window.opener.postMessage({status: status, callbackData: data, type: 'social-auth'}, '*');
window.close();
</script>

View File

@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="google" content="notranslate">
<base href="{{ $htmlBaseUri }}">
@yield('head')
@include('common::prerender.meta-tags')
</head>
<body>
@yield('body')
</body>
</html>

View File

@@ -0,0 +1,13 @@
@if(isset($meta))
@foreach($meta->getAll() as $tag)
@if ($tag['nodeName'] === 'meta')
<meta {!!$meta->tagToString($tag)!!} class="dst">
@elseif ($tag['nodeName'] === 'link')
<link {!!$meta->tagToString($tag)!!} class="dst">
@elseif ($tag['nodeName'] === 'title')
<title class="dst">{{$tag['_text']}}</title>
@elseif ($tag['nodeName'] === 'script')
<script class="dst" type="application/ld+json">{!! is_array($tag['_text']) ? json_encode($tag['_text'], JSON_UNESCAPED_SLASHES) : $tag['_text'] !!}</script>
@endif
@endforeach
@endif