[Hotfix] Enable payment gateways (#653)
This commit is contained in:
commit
7de05a841f
26
README.md
26
README.md
|
@ -3,6 +3,7 @@
|
||||||
- PayPal Integration
|
- PayPal Integration
|
||||||
- Stripe Integration
|
- Stripe Integration
|
||||||
- Referral System
|
- Referral System
|
||||||
|
- Partner System
|
||||||
- Ticket System
|
- Ticket System
|
||||||
- Upgrade/Downgrade Server Resources
|
- Upgrade/Downgrade Server Resources
|
||||||
- Store (credit system with hourly billing and invoices)
|
- Store (credit system with hourly billing and invoices)
|
||||||
|
@ -12,27 +13,29 @@
|
||||||
- User/Server Management
|
- User/Server Management
|
||||||
- Customisable server plans
|
- Customisable server plans
|
||||||
- Vouchers
|
- Vouchers
|
||||||
|
- Alert System
|
||||||
|
- Theme Support
|
||||||
- and so much more!
|
- and so much more!
|
||||||
|
|
||||||
# ControlPanel-gg
|
# ControlPanel-gg
|
||||||
|
|
||||||
![controlpanel](https://user-images.githubusercontent.com/45005889/123518824-06b05000-d6a8-11eb-91b9-d1ed36bd2317.png)
|
![controlpanel](https://user-images.githubusercontent.com/67899387/214684708-739c1d21-06e8-4dec-a4f1-81533a46cc7e.png)
|
||||||
|
|
||||||
|
|
||||||
![](https://img.shields.io/endpoint?label=v0.8%20Installations&url=https%3A%2F%2Fmarket.controlpanel.gg%2Fcallhome.php%3Fgetinstalls)
|
![](https://img.shields.io/endpoint?label=v0.9%20Installations&url=https%3A%2F%2Fmarket.controlpanel.gg%2Fcallhome.php%3Fgetinstalls)
|
||||||
![](https://img.shields.io/badge/Overall%20Installations-3500%2B-green)
|
![](https://img.shields.io/badge/Overall%20Installations-3500%2B-green)
|
||||||
![](https://img.shields.io/github/stars/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/forks/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/tag/ControlPanel-gg/dashboard) [![Crowdin](https://badges.crowdin.net/controlpanelgg/localized.svg)](https://crowdin.com/project/controlpanelgg) ![](https://img.shields.io/github/issues/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/license/ControlPanel-gg/dashboard) ![](https://img.shields.io/discord/787829714483019826)
|
![](https://img.shields.io/github/stars/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/forks/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/tag/ControlPanel-gg/dashboard) [![Crowdin](https://badges.crowdin.net/controlpanelgg/localized.svg)](https://crowdin.com/project/controlpanelgg) ![](https://img.shields.io/github/issues/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/license/ControlPanel-gg/dashboard) ![](https://img.shields.io/discord/787829714483019826)
|
||||||
## About
|
## About
|
||||||
|
|
||||||
ControlPanel's Dashboard is a dashboard application designed to offer clients a management tool to manage their pterodactyl servers. This dashboard comes with a credit-based billing solution that credits users hourly for each server they have and suspends them if they run out of credits.
|
ControlPanel's Dashboard is a dashboard application designed to offer clients a management tool to manage their pterodactyl servers. This dashboard comes with a credit-based billing solution that credits users hourly for each server they have and suspends them if they run out of credits.
|
||||||
|
|
||||||
This dashboard offers an easy to use and free billing solution for all starting and experienced hosting providers. This dashboard has many customization options and added discord 0auth verification to offer a solid link between your discord server and your dashboard. You can check our Demo here ([Demo](https://demo.controlpanel.gg "Demo"))
|
This dashboard offers an easy to use and free billing solution for all starting and experienced hosting providers. This dashboard has many customisation options and added discord Oauth verification to offer a solid link between your discord server and your dashboard. You can check our [Demo here](https://demo.controlpanel.gg "Demo").
|
||||||
|
|
||||||
### [Installation](https://controlpanel.gg/docs/intro "Installation")
|
### [Installation](https://controlpanel.gg/docs/intro "Installation")
|
||||||
|
|
||||||
### [Updating](https://controlpanel.gg/docs/Installation/updating "Updating")
|
### [Updating](https://controlpanel.gg/docs/Installation/updating "Updating")
|
||||||
|
|
||||||
### [Discord](https://discord.gg/4Y6HjD2uyU "discord")
|
### [Discord](https://discord.gg/4Y6HjD2uyU "Discord")
|
||||||
|
|
||||||
### [Contributing](https://controlpanel.gg/docs/Contributing/contributing "Contributing")
|
### [Contributing](https://controlpanel.gg/docs/Contributing/contributing "Contributing")
|
||||||
|
|
||||||
|
@ -43,15 +46,22 @@ This dashboard offers an easy to use and free billing solution for all starting
|
||||||
# Preview
|
# Preview
|
||||||
|
|
||||||
### Server Creation
|
### Server Creation
|
||||||
![image](https://user-images.githubusercontent.com/8725848/171575021-bc248f12-2aba-44e8-82aa-bdc907b1d3fc.png)
|
![image](https://user-images.githubusercontent.com/67899387/214687234-d1ae58c0-5667-4e99-ac39-adeaabfcc7f2.png)
|
||||||
|
|
||||||
### Overview
|
### Overview
|
||||||
![image](https://user-images.githubusercontent.com/8725848/171575809-7620ed4f-5715-420f-8c25-8bfa1c4342f7.png)
|
![image](https://user-images.githubusercontent.com/67899387/214685859-03c8d9e1-c685-4a07-979f-df2e88ec3931.png)
|
||||||
|
|
||||||
### Example server products
|
### Example server products
|
||||||
![image](https://user-images.githubusercontent.com/8725848/171575987-c1398ff6-83fa-4cb8-bd1f-986cee4da565.png)
|
![image](https://user-images.githubusercontent.com/67899387/214686950-218e1ede-6a1f-4e53-b3f4-fe1abc371a9c.png)
|
||||||
|
|
||||||
### Ticket System
|
### Ticket System
|
||||||
![image](https://user-images.githubusercontent.com/8725848/184131270-9d997ebf-8965-4910-90d2-b410ae37f201.png)
|
![image](https://user-images.githubusercontent.com/67899387/214687123-0a3d0f8f-b53c-4b0d-869a-4d5df45f5184.png)
|
||||||
|
|
||||||
|
### Voucher System
|
||||||
|
![image](https://user-images.githubusercontent.com/67899387/214686578-ec9f0b0f-6047-4665-835f-70594b56dfd5.png)
|
||||||
|
|
||||||
|
### Partner System
|
||||||
|
![image](https://user-images.githubusercontent.com/67899387/214686321-36ba97a3-4181-4e60-9ba3-c9b318fe66a8.png)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@ class System
|
||||||
'pterodactyl-admin-api-key' => 'required|string',
|
'pterodactyl-admin-api-key' => 'required|string',
|
||||||
'enable-upgrades' => 'string',
|
'enable-upgrades' => 'string',
|
||||||
'enable-disable-servers' => 'string',
|
'enable-disable-servers' => 'string',
|
||||||
|
'enable-disable-new-users' => 'string',
|
||||||
'show-imprint' => 'string',
|
'show-imprint' => 'string',
|
||||||
'show-privacy' => 'string',
|
'show-privacy' => 'string',
|
||||||
'show-tos' => 'string',
|
'show-tos' => 'string',
|
||||||
|
|
19
app/Enums/UsefulLinkLocation.php
Normal file
19
app/Enums/UsefulLinkLocation.php
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Enums;
|
||||||
|
|
||||||
|
enum UsefulLinkLocation:String
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Top bar
|
||||||
|
* Only visible in the dashboard view
|
||||||
|
*/
|
||||||
|
case topbar = "topbar";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dashboard
|
||||||
|
* Only visible in the dashboard view
|
||||||
|
*/
|
||||||
|
case dashboard = "dashboard";
|
||||||
|
|
||||||
|
}
|
|
@ -8,5 +8,6 @@ function getConfig()
|
||||||
"name" => "PayPal",
|
"name" => "PayPal",
|
||||||
"description" => "PayPal payment gateway",
|
"description" => "PayPal payment gateway",
|
||||||
"RoutesIgnoreCsrf" => [],
|
"RoutesIgnoreCsrf" => [],
|
||||||
|
"enabled" => config('SETTINGS::PAYMENTS:STRIPE:SECRET') && true,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,5 +10,6 @@ function getConfig()
|
||||||
"RoutesIgnoreCsrf" => [
|
"RoutesIgnoreCsrf" => [
|
||||||
"payment/StripeWebhooks",
|
"payment/StripeWebhooks",
|
||||||
],
|
],
|
||||||
|
"enabled" => config('SETTINGS::PAYMENTS:STRIPE:SECRET') && config('SETTINGS::PAYMENTS:STRIPE:CLIENT_ID'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,8 @@ class PaymentController extends Controller
|
||||||
$paymentGateways = [];
|
$paymentGateways = [];
|
||||||
foreach ($extensions as $extension) {
|
foreach ($extensions as $extension) {
|
||||||
$extensionName = basename($extension);
|
$extensionName = basename($extension);
|
||||||
|
if (!ExtensionHelper::getExtensionConfig($extensionName, 'enabled')) continue; // skip if not enabled
|
||||||
|
|
||||||
$payment = new \stdClass();
|
$payment = new \stdClass();
|
||||||
$payment->name = ExtensionHelper::getExtensionConfig($extensionName, 'name');
|
$payment->name = ExtensionHelper::getExtensionConfig($extensionName, 'name');
|
||||||
$payment->image = asset('images/Extensions/PaymentGateways/' . strtolower($extensionName) . '_logo.png');
|
$payment->image = asset('images/Extensions/PaymentGateways/' . strtolower($extensionName) . '_logo.png');
|
||||||
|
|
|
@ -22,7 +22,13 @@ class SettingsController extends Controller
|
||||||
|
|
||||||
//Get all tabs as laravel view paths
|
//Get all tabs as laravel view paths
|
||||||
$tabs = [];
|
$tabs = [];
|
||||||
foreach (glob(Theme::getViewPaths()[0] . '/admin/settings/tabs/*.blade.php') as $filename) {
|
if(file_exists(Theme::getViewPaths()[0] . '/admin/settings/tabs/')){
|
||||||
|
$tabspath = glob(Theme::getViewPaths()[0] . '/admin/settings/tabs/*.blade.php');
|
||||||
|
}else{
|
||||||
|
$tabspath = glob(Theme::path($path = 'views', $themeName = 'default').'/admin/settings/tabs/*.blade.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($tabspath as $filename) {
|
||||||
$tabs[] = 'admin.settings.tabs.'.basename($filename, '.blade.php');
|
$tabs[] = 'admin.settings.tabs.'.basename($filename, '.blade.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
|
use App\Enums\UsefulLinkLocation;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\UsefulLink;
|
use App\Models\UsefulLink;
|
||||||
use Illuminate\Contracts\Foundation\Application;
|
use Illuminate\Contracts\Foundation\Application;
|
||||||
|
@ -30,7 +31,8 @@ class UsefulLinkController extends Controller
|
||||||
*/
|
*/
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
return view('admin.usefullinks.create');
|
$positions = UsefulLinkLocation::cases();
|
||||||
|
return view('admin.usefullinks.create')->with('positions', $positions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,7 +50,14 @@ class UsefulLinkController extends Controller
|
||||||
'description' => 'required|string|max:2000',
|
'description' => 'required|string|max:2000',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
UsefulLink::create($request->all());
|
|
||||||
|
UsefulLink::create([
|
||||||
|
'icon' => $request->icon,
|
||||||
|
'title' => $request->title,
|
||||||
|
'link' => $request->link,
|
||||||
|
'description' => $request->description,
|
||||||
|
'position' => implode(",",$request->position),
|
||||||
|
]);
|
||||||
|
|
||||||
return redirect()->route('admin.usefullinks.index')->with('success', __('link has been created!'));
|
return redirect()->route('admin.usefullinks.index')->with('success', __('link has been created!'));
|
||||||
}
|
}
|
||||||
|
@ -72,8 +81,10 @@ class UsefulLinkController extends Controller
|
||||||
*/
|
*/
|
||||||
public function edit(UsefulLink $usefullink)
|
public function edit(UsefulLink $usefullink)
|
||||||
{
|
{
|
||||||
|
$positions = UsefulLinkLocation::cases();
|
||||||
return view('admin.usefullinks.edit', [
|
return view('admin.usefullinks.edit', [
|
||||||
'link' => $usefullink,
|
'link' => $usefullink,
|
||||||
|
'positions' => $positions,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +104,13 @@ class UsefulLinkController extends Controller
|
||||||
'description' => 'required|string|max:2000',
|
'description' => 'required|string|max:2000',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$usefullink->update($request->all());
|
$usefullink->update([
|
||||||
|
'icon' => $request->icon,
|
||||||
|
'title' => $request->title,
|
||||||
|
'link' => $request->link,
|
||||||
|
'description' => $request->description,
|
||||||
|
'position' => implode(",",$request->position),
|
||||||
|
]);
|
||||||
|
|
||||||
return redirect()->route('admin.usefullinks.index')->with('success', __('link has been updated!'));
|
return redirect()->route('admin.usefullinks.index')->with('success', __('link has been updated!'));
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ use Illuminate\Foundation\Auth\RegistersUsers;
|
||||||
use Illuminate\Support\Facades\App;
|
use Illuminate\Support\Facades\App;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Illuminate\Validation\ValidationException;
|
use Illuminate\Validation\ValidationException;
|
||||||
|
@ -132,6 +133,7 @@ class RegisterController extends Controller
|
||||||
|
|
||||||
if ($response->failed()) {
|
if ($response->failed()) {
|
||||||
$user->delete();
|
$user->delete();
|
||||||
|
Log::error('Pterodactyl Registration Error: ' . $response->json()['errors'][0]['detail']);
|
||||||
throw ValidationException::withMessages([
|
throw ValidationException::withMessages([
|
||||||
'ptero_registration_error' => [__('Account already exists on Pterodactyl. Please contact the Support!')],
|
'ptero_registration_error' => [__('Account already exists on Pterodactyl. Please contact the Support!')],
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -111,7 +111,7 @@ class HomeController extends Controller
|
||||||
return view('home')->with([
|
return view('home')->with([
|
||||||
'usage' => $usage,
|
'usage' => $usage,
|
||||||
'credits' => $credits,
|
'credits' => $credits,
|
||||||
'useful_links' => UsefulLink::all()->sortBy('id'),
|
'useful_links' => UsefulLink::where("position","like","%dashboard%")->get()->sortby("id"),
|
||||||
'bg' => $bg,
|
'bg' => $bg,
|
||||||
'boxText' => $boxText,
|
'boxText' => $boxText,
|
||||||
'unit' => $unit,
|
'unit' => $unit,
|
||||||
|
|
|
@ -16,5 +16,6 @@ class UsefulLink extends Model
|
||||||
'title',
|
'title',
|
||||||
'link',
|
'link',
|
||||||
'description',
|
'description',
|
||||||
|
'position',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
use App\Models\Settings;
|
use App\Models\Settings;
|
||||||
|
use App\Models\UsefulLink;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Pagination\Paginator;
|
use Illuminate\Pagination\Paginator;
|
||||||
use Illuminate\Support\Facades\Artisan;
|
use Illuminate\Support\Facades\Artisan;
|
||||||
|
@ -53,6 +54,12 @@ class AppServiceProvider extends ServiceProvider
|
||||||
return $ok;
|
return $ok;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
if (Schema::hasColumn('useful_links', 'position')) {
|
||||||
|
$useful_links = UsefulLink::where("position","like","%topbar%")->get()->sortby("id");
|
||||||
|
view()->share('useful_links', $useful_links);
|
||||||
|
}
|
||||||
|
|
||||||
//only run if the installer has been executed
|
//only run if the installer has been executed
|
||||||
try {
|
try {
|
||||||
$settings = Settings::all();
|
$settings = Settings::all();
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('useful_links', function (Blueprint $table) {
|
||||||
|
$table->string('position')->after("description")->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('useful_links', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('position');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
|
@ -131,7 +131,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => 'Credits',
|
'value' => 'Credits',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Set the display name of your currency :)',
|
'description' => 'The display name of your currency.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//credits display name
|
//credits display name
|
||||||
|
@ -148,7 +148,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => '0',
|
'value' => '0',
|
||||||
'type' => 'integer',
|
'type' => 'integer',
|
||||||
'description' => 'The %-value of tax that will be added to the product price on checkout',
|
'description' => 'The %-value of tax that will be added to the product price on checkout.',
|
||||||
]);
|
]);
|
||||||
//Invoices enabled
|
//Invoices enabled
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -156,7 +156,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => 'false',
|
'value' => 'false',
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enables or disables the invoice feature for payments',
|
'description' => 'Enables or disables the invoice feature for payments.',
|
||||||
]);
|
]);
|
||||||
//Invoice company name
|
//Invoice company name
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -164,7 +164,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The name of the Company on the Invoices',
|
'description' => 'The name of the Company on the Invoices.',
|
||||||
]);
|
]);
|
||||||
//Invoice company address
|
//Invoice company address
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -172,7 +172,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The address of the Company on the Invoices',
|
'description' => 'The address of the Company on the Invoices.',
|
||||||
]);
|
]);
|
||||||
//Invoice company phone
|
//Invoice company phone
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -180,7 +180,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The phone number of the Company on the Invoices',
|
'description' => 'The phone number of the Company on the Invoices.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//Invoice company mail
|
//Invoice company mail
|
||||||
|
@ -189,7 +189,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The email address of the Company on the Invoices',
|
'description' => 'The email address of the Company on the Invoices.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//Invoice VAT
|
//Invoice VAT
|
||||||
|
@ -198,7 +198,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The VAT-Number of the Company on the Invoices',
|
'description' => 'The VAT-Number of the Company on the Invoices.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//Invoice Website
|
//Invoice Website
|
||||||
|
@ -207,7 +207,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The Website of the Company on the Invoices',
|
'description' => 'The Website of the Company on the Invoices.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//Invoice Website
|
//Invoice Website
|
||||||
|
@ -216,7 +216,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => 'INV',
|
'value' => 'INV',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The invoice prefix',
|
'description' => 'The invoice prefix.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//Locale
|
//Locale
|
||||||
|
@ -225,7 +225,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => 'en',
|
'value' => 'en',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The default Language the dashboard will be shown in',
|
'description' => 'The default dashboard language.',
|
||||||
]);
|
]);
|
||||||
//Dynamic locale
|
//Dynamic locale
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -247,9 +247,9 @@ class SettingsSeeder extends Seeder
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::LOCALE:AVAILABLE',
|
'key' => 'SETTINGS::LOCALE:AVAILABLE',
|
||||||
], [
|
], [
|
||||||
'value' => '',
|
'value' => 'en',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The available languages',
|
'description' => 'The available languages.',
|
||||||
]);
|
]);
|
||||||
//Locale
|
//Locale
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -265,63 +265,63 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => env('PAYPAL_SECRET', ''),
|
'value' => env('PAYPAL_SECRET', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Your PayPal Secret-Key ( https://developer.paypal.com/docs/integration/direct/rest/)',
|
'description' => 'Your PayPal Secret-Key (https://developer.paypal.com/docs/integration/direct/rest/).',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::PAYMENTS:PAYPAL:CLIENT_ID',
|
'key' => 'SETTINGS::PAYMENTS:PAYPAL:CLIENT_ID',
|
||||||
], [
|
], [
|
||||||
'value' => env('PAYPAL_CLIENT_ID', ''),
|
'value' => env('PAYPAL_CLIENT_ID', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Your PayPal Client_ID',
|
'description' => 'Your PayPal Client_ID.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::PAYMENTS:PAYPAL:SANDBOX_SECRET',
|
'key' => 'SETTINGS::PAYMENTS:PAYPAL:SANDBOX_SECRET',
|
||||||
], [
|
], [
|
||||||
'value' => env('PAYPAL_SANDBOX_SECRET', ''),
|
'value' => env('PAYPAL_SANDBOX_SECRET', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Your PayPal SANDBOX Secret-Key used for testing ',
|
'description' => 'Your PayPal SANDBOX Secret-Key used for testing.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::PAYMENTS:PAYPAL:SANDBOX_CLIENT_ID',
|
'key' => 'SETTINGS::PAYMENTS:PAYPAL:SANDBOX_CLIENT_ID',
|
||||||
], [
|
], [
|
||||||
'value' => env('PAYPAL_SANDBOX_CLIENT_ID', ''),
|
'value' => env('PAYPAL_SANDBOX_CLIENT_ID', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Your PayPal SANDBOX Client-ID used for testing ',
|
'description' => 'Your PayPal SANDBOX Client-ID used for testing.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::PAYMENTS:STRIPE:SECRET',
|
'key' => 'SETTINGS::PAYMENTS:STRIPE:SECRET',
|
||||||
], [
|
], [
|
||||||
'value' => env('STRIPE_SECRET', ''),
|
'value' => env('STRIPE_SECRET', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Your Stripe Secret-Key ( https://dashboard.stripe.com/account/apikeys )',
|
'description' => 'Your Stripe Secret-Key (https://dashboard.stripe.com/account/apikeys).',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::PAYMENTS:STRIPE:ENDPOINT_SECRET',
|
'key' => 'SETTINGS::PAYMENTS:STRIPE:ENDPOINT_SECRET',
|
||||||
], [
|
], [
|
||||||
'value' => env('STRIPE_ENDPOINT_SECRET', ''),
|
'value' => env('STRIPE_ENDPOINT_SECRET', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Your Stripe endpoint secret-key',
|
'description' => 'Your Stripe endpoint secret-key.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::PAYMENTS:STRIPE:TEST_SECRET',
|
'key' => 'SETTINGS::PAYMENTS:STRIPE:TEST_SECRET',
|
||||||
], [
|
], [
|
||||||
'value' => env('STRIPE_TEST_SECRET', ''),
|
'value' => env('STRIPE_TEST_SECRET', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Your Stripe test secret-key',
|
'description' => 'Your Stripe test secret-key.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::PAYMENTS:STRIPE:ENDPOINT_TEST_SECRET',
|
'key' => 'SETTINGS::PAYMENTS:STRIPE:ENDPOINT_TEST_SECRET',
|
||||||
], [
|
], [
|
||||||
'value' => env('STRIPE_ENDPOINT_TEST_SECRET', ''),
|
'value' => env('STRIPE_ENDPOINT_TEST_SECRET', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Your Stripe endpoint test secret-key',
|
'description' => 'Your Stripe endpoint test secret-key.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::PAYMENTS:STRIPE:METHODS',
|
'key' => 'SETTINGS::PAYMENTS:STRIPE:METHODS',
|
||||||
], [
|
], [
|
||||||
'value' => env('STRIPE_METHODS', 'card,sepa_debit'),
|
'value' => env('STRIPE_METHODS', 'card,sepa_debit'),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Comma seperated list of payment methods that are enabled (https://stripe.com/docs/payments/payment-methods/integration-options)',
|
'description' => 'Comma seperated list of payment methods that are enabled (https://stripe.com/docs/payments/payment-methods/integration-options).',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -329,7 +329,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => env('DISCORD_CLIENT_ID', ''),
|
'value' => env('DISCORD_CLIENT_ID', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Discord API Credentials - https://discordapp.com/developers/applications/',
|
'description' => 'Discord API Credentials (https://discordapp.com/developers/applications/).',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -337,14 +337,14 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => env('DISCORD_CLIENT_SECRET', ''),
|
'value' => env('DISCORD_CLIENT_SECRET', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Discord API Credentials - https://discordapp.com/developers/applications/',
|
'description' => 'Discord API Credentials (https://discordapp.com/developers/applications/).',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::DISCORD:BOT_TOKEN',
|
'key' => 'SETTINGS::DISCORD:BOT_TOKEN',
|
||||||
], [
|
], [
|
||||||
'value' => env('DISCORD_BOT_TOKEN', ''),
|
'value' => env('DISCORD_BOT_TOKEN', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Discord API Credentials - https://discordapp.com/developers/applications/',
|
'description' => 'Discord API Credentials (https://discordapp.com/developers/applications/).',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -352,7 +352,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => env('DISCORD_GUILD_ID', ''),
|
'value' => env('DISCORD_GUILD_ID', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Discord API Credentials - https://discordapp.com/developers/applications/',
|
'description' => 'Discord API Credentials (https://discordapp.com/developers/applications/).',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -360,14 +360,14 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => env('DISCORD_ROLE_ID', ''),
|
'value' => env('DISCORD_ROLE_ID', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Discord role that will be assigned to users when they register',
|
'description' => 'Discord role that will be assigned to users when they register.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::DISCORD:INVITE_URL',
|
'key' => 'SETTINGS::DISCORD:INVITE_URL',
|
||||||
], [
|
], [
|
||||||
'value' => env('DISCORD_INVITE_URL', ''),
|
'value' => env('DISCORD_INVITE_URL', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The invite URL to your Discord Server',
|
'description' => 'The invite URL to your Discord Server.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -404,7 +404,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => env('RECAPTCHA_SITE_KEY', '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI'),
|
'value' => env('RECAPTCHA_SITE_KEY', '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI'),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Google Recaptcha API Credentials - https://www.google.com/recaptcha/admin - reCaptcha V2 (not v3)',
|
'description' => 'Google Recaptcha API Credentials (https://www.google.com/recaptcha/admin) - reCaptcha V2 (not v3)',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -412,14 +412,14 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => env('RECAPTCHA_SECRET_KEY', '6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe'),
|
'value' => env('RECAPTCHA_SECRET_KEY', '6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe'),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Google Recaptcha API Credentials - https://www.google.com/recaptcha/admin - reCaptcha V2 (not v3)',
|
'description' => 'Google Recaptcha API Credentials (https://www.google.com/recaptcha/admin) - reCaptcha V2 (not v3)',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::RECAPTCHA:ENABLED',
|
'key' => 'SETTINGS::RECAPTCHA:ENABLED',
|
||||||
], [
|
], [
|
||||||
'value' => 'true',
|
'value' => 'true',
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enables or disables the ReCaptcha feature on the registration/login page',
|
'description' => 'Enables or disables the ReCaptcha feature on the registration/login page.',
|
||||||
|
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -427,63 +427,63 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => env('MAIL_MAILER', 'smtp'),
|
'value' => env('MAIL_MAILER', 'smtp'),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Selected Mailer (smtp, mailgun, sendgrid, mailtrap)',
|
'description' => 'Selected Mailer (smtp, mailgun, sendgrid, mailtrap).',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::MAIL:HOST',
|
'key' => 'SETTINGS::MAIL:HOST',
|
||||||
], [
|
], [
|
||||||
'value' => env('MAIL_HOST', 'localhost'),
|
'value' => env('MAIL_HOST', 'localhost'),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Mailer Host Address',
|
'description' => 'Mailer Host Address.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::MAIL:PORT',
|
'key' => 'SETTINGS::MAIL:PORT',
|
||||||
], [
|
], [
|
||||||
'value' => env('MAIL_PORT', '25'),
|
'value' => env('MAIL_PORT', '25'),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Mailer Server Port',
|
'description' => 'Mailer Server Port.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::MAIL:USERNAME',
|
'key' => 'SETTINGS::MAIL:USERNAME',
|
||||||
], [
|
], [
|
||||||
'value' => env('MAIL_USERNAME', ''),
|
'value' => env('MAIL_USERNAME', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Mailer Username',
|
'description' => 'Mailer Username.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::MAIL:PASSWORD',
|
'key' => 'SETTINGS::MAIL:PASSWORD',
|
||||||
], [
|
], [
|
||||||
'value' => env('MAIL_PASSWORD', ''),
|
'value' => env('MAIL_PASSWORD', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Mailer Password',
|
'description' => 'Mailer Password.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::MAIL:ENCRYPTION',
|
'key' => 'SETTINGS::MAIL:ENCRYPTION',
|
||||||
], [
|
], [
|
||||||
'value' => env('MAIL_ENCRYPTION', 'tls'),
|
'value' => env('MAIL_ENCRYPTION', 'tls'),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Mailer Encryption (tls, ssl)',
|
'description' => 'Mailer Encryption (tls, ssl).',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::MAIL:FROM_ADDRESS',
|
'key' => 'SETTINGS::MAIL:FROM_ADDRESS',
|
||||||
], [
|
], [
|
||||||
'value' => env('MAIL_FROM_ADDRESS', ''),
|
'value' => env('MAIL_FROM_ADDRESS', ''),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Mailer From Address',
|
'description' => 'Mailer From Address.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::MAIL:FROM_NAME',
|
'key' => 'SETTINGS::MAIL:FROM_NAME',
|
||||||
], [
|
], [
|
||||||
'value' => env('APP_NAME', 'Controlpanel'),
|
'value' => env('APP_NAME', 'Controlpanel'),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Mailer From Name',
|
'description' => 'Mailer From Name.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::REFERRAL::ENABLED',
|
'key' => 'SETTINGS::REFERRAL::ENABLED',
|
||||||
], [
|
], [
|
||||||
'value' => 'false',
|
'value' => 'false',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'Enable or disable the referral system',
|
'description' => 'Enable or disable the referral system.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::REFERRAL::ALWAYS_GIVE_COMMISSION',
|
'key' => 'SETTINGS::REFERRAL::ALWAYS_GIVE_COMMISSION',
|
||||||
|
@ -518,7 +518,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => 100,
|
'value' => 100,
|
||||||
'type' => 'integer',
|
'type' => 'integer',
|
||||||
'description' => 'The Percentage Value a referred user gets',
|
'description' => 'The Percentage value a referred user gets.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -526,28 +526,28 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'description' => 'The Client API Key of an Pterodactyl Admin Account',
|
'description' => 'The Client API Key of an Pterodactyl Admin Account.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::SYSTEM:ENABLE_UPGRADE',
|
'key' => 'SETTINGS::SYSTEM:ENABLE_UPGRADE',
|
||||||
], [
|
], [
|
||||||
'value' => 'false',
|
'value' => 'false',
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enables the updgrade/downgrade feature for servers',
|
'description' => 'Enables the updgrade/downgrade feature for servers.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS',
|
'key' => 'SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS',
|
||||||
], [
|
], [
|
||||||
'value' => 'true',
|
'value' => 'true',
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enable/disable the creation of new servers',
|
'description' => 'Enable creation of new servers',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::SYSTEM:CREATION_OF_NEW_USERS',
|
'key' => 'SETTINGS::SYSTEM:CREATION_OF_NEW_USERS',
|
||||||
], [
|
], [
|
||||||
'value' => 'false',
|
'value' => 'true',
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enable/disable the creation of new users',
|
'description' => 'Enable creation of new users',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::SYSTEM:SHOW_IMPRINT',
|
'key' => 'SETTINGS::SYSTEM:SHOW_IMPRINT',
|
||||||
|
@ -555,7 +555,7 @@ class SettingsSeeder extends Seeder
|
||||||
|
|
||||||
'value' => "false",
|
'value' => "false",
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enable/disable imprint in footer'
|
'description' => 'Enable imprint in footer.'
|
||||||
|
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -564,7 +564,7 @@ class SettingsSeeder extends Seeder
|
||||||
|
|
||||||
'value' => "false",
|
'value' => "false",
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enable/disable privacy policy in footer'
|
'description' => 'Enable privacy policy in footer.'
|
||||||
|
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -572,7 +572,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => 'false',
|
'value' => 'false',
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enable/disable Terms of Service in footer',
|
'description' => 'Enable Terms of Service in footer.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -580,14 +580,14 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => 'false',
|
'value' => 'false',
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enable/disable Alerts on Homepage',
|
'description' => 'Enable Alerts on Homepage.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::SYSTEM:ALERT_TYPE',
|
'key' => 'SETTINGS::SYSTEM:ALERT_TYPE',
|
||||||
], [
|
], [
|
||||||
'value' => 'dark',
|
'value' => 'dark',
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'description' => 'Changes the Color of the Alert',
|
'description' => 'Changes the Color of the Alert.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -595,14 +595,14 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => '',
|
'value' => '',
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'description' => 'Changes the Content the Alert',
|
'description' => 'Changes the Content the Alert.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::SYSTEM:THEME',
|
'key' => 'SETTINGS::SYSTEM:THEME',
|
||||||
], [
|
], [
|
||||||
'value' => 'default',
|
'value' => 'default',
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'description' => 'Current active theme',
|
'description' => 'Current active theme.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -610,7 +610,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => 'true',
|
'value' => 'true',
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enable/disable Useful Links on Homepage',
|
'description' => 'Enable Useful Links on Homepage.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -618,7 +618,7 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => 'true',
|
'value' => 'true',
|
||||||
'type' => 'boolean',
|
'type' => 'boolean',
|
||||||
'description' => 'Enable/disable MOTD on Homepage',
|
'description' => 'Enable MOTD on Homepage.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::SYSTEM:MOTD_MESSAGE',
|
'key' => 'SETTINGS::SYSTEM:MOTD_MESSAGE',
|
||||||
|
@ -628,14 +628,14 @@ class SettingsSeeder extends Seeder
|
||||||
<p><span style="font-size: 18pt;">If you have any questions, make sure to join our <a href="https://discord.com/invite/4Y6HjD2uyU" target="_blank" rel="noopener">Discord</a></span></p>
|
<p><span style="font-size: 18pt;">If you have any questions, make sure to join our <a href="https://discord.com/invite/4Y6HjD2uyU" target="_blank" rel="noopener">Discord</a></span></p>
|
||||||
<p><span style="font-size: 10pt;">(you can change this message in the <a href="admin/settings#system">Settings</a> )</span></p>',
|
<p><span style="font-size: 10pt;">(you can change this message in the <a href="admin/settings#system">Settings</a> )</span></p>',
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'description' => 'MOTD Message',
|
'description' => 'MOTD Message.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::SYSTEM:SEO_TITLE',
|
'key' => 'SETTINGS::SYSTEM:SEO_TITLE',
|
||||||
], [
|
], [
|
||||||
'value' => 'Controlpanel.gg',
|
'value' => 'Controlpanel.gg',
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'description' => 'The SEO Title',
|
'description' => 'The SEO Title.',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
|
@ -643,14 +643,14 @@ class SettingsSeeder extends Seeder
|
||||||
], [
|
], [
|
||||||
'value' => 'Billing software for Pterodactyl Dashboard!',
|
'value' => 'Billing software for Pterodactyl Dashboard!',
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'description' => 'SEO Description',
|
'description' => 'SEO Description.',
|
||||||
]);
|
]);
|
||||||
Settings::firstOrCreate([
|
Settings::firstOrCreate([
|
||||||
'key' => 'SETTINGS::TICKET:NOTIFY',
|
'key' => 'SETTINGS::TICKET:NOTIFY',
|
||||||
], [
|
], [
|
||||||
'value' => 'all',
|
'value' => 'all',
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'description' => 'Who will get a Email Notifcation on new Tickets',
|
'description' => 'Who will get a Email Notifcation on new Tickets.',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
22554
package-lock.json
generated
22554
package-lock.json
generated
File diff suppressed because it is too large
Load diff
12
package.json
12
package.json
|
@ -2,12 +2,9 @@
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npm run development",
|
"dev": "npm run development",
|
||||||
"development": "mix",
|
"development": "vite",
|
||||||
"watch": "mix watch",
|
|
||||||
"watch-poll": "mix watch -- --watch-options-poll=1000",
|
|
||||||
"hot": "mix watch --hot",
|
|
||||||
"prod": "npm run production",
|
"prod": "npm run production",
|
||||||
"production": "mix --production",
|
"production": "vite build",
|
||||||
"dev:default": "vite --config themes/default/vite.config.js",
|
"dev:default": "vite --config themes/default/vite.config.js",
|
||||||
"build:default": "vite build --config themes/default/vite.config.js",
|
"build:default": "vite build --config themes/default/vite.config.js",
|
||||||
"dev:1day2die": "vite --config themes/1day2die/vite.config.js",
|
"dev:1day2die": "vite --config themes/1day2die/vite.config.js",
|
||||||
|
@ -17,13 +14,14 @@
|
||||||
"axios": "^0.25",
|
"axios": "^0.25",
|
||||||
"bootstrap": "^4.6.0",
|
"bootstrap": "^4.6.0",
|
||||||
"jquery": "^3.5",
|
"jquery": "^3.5",
|
||||||
"laravel-mix": "^6.0.6",
|
"laravel-vite-plugin": "^0.7.3",
|
||||||
"lodash": "^4.17.19",
|
"lodash": "^4.17.19",
|
||||||
"popper.js": "^1.16",
|
"popper.js": "^1.16",
|
||||||
"postcss": "^8.1.14",
|
"postcss": "^8.1.14",
|
||||||
"resolve-url-loader": "^3.1.2",
|
"resolve-url-loader": "^3.1.2",
|
||||||
"sass": "^1.32.1",
|
"sass": "^1.32.1",
|
||||||
"sass-loader": "^10.1.1"
|
"sass-loader": "^10.1.1",
|
||||||
|
"vite": "^4.0.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tinymce": "^6.3.1"
|
"tinymce": "^6.3.1"
|
||||||
|
|
|
@ -184,7 +184,7 @@
|
||||||
type="checkbox">
|
type="checkbox">
|
||||||
<label for="enable-disable-new-users">{{ __('Creation of new users') }} </label>
|
<label for="enable-disable-new-users">{{ __('Creation of new users') }} </label>
|
||||||
<i data-toggle="popover" data-trigger="hover" data-html="true" class="fas fa-info-circle"
|
<i data-toggle="popover" data-trigger="hover" data-html="true" class="fas fa-info-circle"
|
||||||
data-content="{{ __('If unchecked, it will disable the registration of new users in the system, and this will also apply to the API.') }}">
|
data-content="{{ __('Enable the registration of new users on the system.') }}">
|
||||||
</i>
|
</i>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -271,7 +271,7 @@
|
||||||
<label for="enable-disable-servers">{{ __('Creation of new servers') }} </label>
|
<label for="enable-disable-servers">{{ __('Creation of new servers') }} </label>
|
||||||
</div>
|
</div>
|
||||||
<i data-toggle="popover" data-trigger="hover" data-html="true"
|
<i data-toggle="popover" data-trigger="hover" data-html="true"
|
||||||
data-content="{{ __('If unchecked, it will disable the creation of new servers for regular users and system moderators, this has no effect for administrators.') }}"
|
data-content="{{ __('Enables the creation of new servers for regular users.') }}"
|
||||||
class="fas fa-info-circle"></i>
|
class="fas fa-info-circle"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -481,7 +481,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<script>tinymce.init({selector:'textarea',skin: "oxide-dark",
|
<script>tinymce.init({selector:'textarea',promotion: false,skin: "oxide-dark",
|
||||||
content_css: "dark",branding: false, height: 500,
|
content_css: "dark",branding: false, height: 500,
|
||||||
plugins: ['image','link'],});
|
plugins: ['image','link'],});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -94,6 +94,22 @@
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<select id="position" style="width:100%" class="custom-select" name="position[]"
|
||||||
|
required multiple autocomplete="off" @error('position') is-invalid @enderror>
|
||||||
|
@foreach ($positions as $position)
|
||||||
|
<option id="{{$position->value}}" value="{{ $position->value }}">
|
||||||
|
{{ __($position->value) }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
@error('position')
|
||||||
|
<div class="text-danger">
|
||||||
|
{{$message}}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group text-right">
|
<div class="form-group text-right">
|
||||||
<button type="submit" class="btn btn-primary">
|
<button type="submit" class="btn btn-primary">
|
||||||
|
@ -111,6 +127,7 @@
|
||||||
<!-- END CONTENT -->
|
<!-- END CONTENT -->
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', (event) => {
|
document.addEventListener('DOMContentLoaded', (event) => {
|
||||||
|
$('.custom-select').select2();
|
||||||
// Summernote
|
// Summernote
|
||||||
$('#description').summernote({
|
$('#description').summernote({
|
||||||
height: 100,
|
height: 100,
|
||||||
|
@ -127,6 +144,8 @@
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|
|
@ -95,6 +95,22 @@
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<select id="position" style="width:100%" class="custom-select" name="position[]"
|
||||||
|
required multiple autocomplete="off" @error('position') is-invalid @enderror>
|
||||||
|
@foreach ($positions as $position)
|
||||||
|
<option id="{{$position->value}}" value="{{ $position->value }}" @if (strpos($link->position, $position->value) !== false) selected @endif>
|
||||||
|
{{ __($position->value) }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
@error('position')
|
||||||
|
<div class="text-danger">
|
||||||
|
{{$message}}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group text-right">
|
<div class="form-group text-right">
|
||||||
<button type="submit" class="btn btn-primary">
|
<button type="submit" class="btn btn-primary">
|
||||||
|
@ -113,6 +129,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', (event) => {
|
document.addEventListener('DOMContentLoaded', (event) => {
|
||||||
|
$('.custom-select').select2();
|
||||||
// Summernote
|
// Summernote
|
||||||
$('#description').summernote({
|
$('#description').summernote({
|
||||||
height: 100,
|
height: 100,
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
<th width="50">{{__('Icon')}}</th>
|
<th width="50">{{__('Icon')}}</th>
|
||||||
<th>{{__('Title')}}</th>
|
<th>{{__('Title')}}</th>
|
||||||
<th>{{__('Link')}}</th>
|
<th>{{__('Link')}}</th>
|
||||||
|
<th>{{__('Position')}}</th>
|
||||||
<th>{{__('Created at')}}</th>
|
<th>{{__('Created at')}}</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -79,6 +80,7 @@
|
||||||
{data: 'icon'},
|
{data: 'icon'},
|
||||||
{data: 'title'},
|
{data: 'title'},
|
||||||
{data: 'link'},
|
{data: 'link'},
|
||||||
|
{data: 'position'},
|
||||||
{data: 'created_at'},
|
{data: 'created_at'},
|
||||||
{data: 'actions', sortable: false},
|
{data: 'actions', sortable: false},
|
||||||
],
|
],
|
||||||
|
|
|
@ -16,24 +16,21 @@
|
||||||
href="{{ \Illuminate\Support\Facades\Storage::disk('public')->exists('favicon.ico') ? \Illuminate\Support\Facades\Storage::disk('public')->url('favicon.ico') : asset('favicon.ico') }}"
|
href="{{ \Illuminate\Support\Facades\Storage::disk('public')->exists('favicon.ico') ? \Illuminate\Support\Facades\Storage::disk('public')->url('favicon.ico') : asset('favicon.ico') }}"
|
||||||
type="image/x-icon">
|
type="image/x-icon">
|
||||||
|
|
||||||
<!-- Scripts -->
|
|
||||||
<script src="{{ asset('js/app.js') }}" defer></script>
|
<script src="{{ asset('js/app.js') }}" defer></script>
|
||||||
|
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
|
||||||
<link rel="preload" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}" as="style"
|
<link rel="preload" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}" as="style"
|
||||||
onload="this.onload=null;this.rel='stylesheet'">
|
onload="this.onload=null;this.rel='stylesheet'">
|
||||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}">
|
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}">
|
||||||
</noscript>
|
</noscript>
|
||||||
@if (config('SETTINGS::RECAPTCHA:ENABLED') == 'true')
|
@if (config('SETTINGS::RECAPTCHA:ENABLED') == 'true')
|
||||||
{!! htmlScriptTagJsApi() !!}
|
{!! htmlScriptTagJsApi() !!}
|
||||||
@endif
|
@endif
|
||||||
|
@vite('themes/default/sass/app.scss')
|
||||||
</head>
|
</head>
|
||||||
@yield('content')
|
@yield('content')
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,6 @@
|
||||||
{{-- summernote --}}
|
{{-- summernote --}}
|
||||||
<link rel="stylesheet" href="{{ asset('plugins/summernote/summernote-bs4.min.css') }}">
|
<link rel="stylesheet" href="{{ asset('plugins/summernote/summernote-bs4.min.css') }}">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{{-- datetimepicker --}}
|
{{-- datetimepicker --}}
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="{{ asset('plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css') }}">
|
href="{{ asset('plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css') }}">
|
||||||
|
@ -31,7 +29,6 @@
|
||||||
{{-- select2 --}}
|
{{-- select2 --}}
|
||||||
<link rel="stylesheet" href="{{ asset('plugins/select2/css/select2.min.css') }}">
|
<link rel="stylesheet" href="{{ asset('plugins/select2/css/select2.min.css') }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
|
||||||
<link rel="preload" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}" as="style"
|
<link rel="preload" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}" as="style"
|
||||||
onload="this.onload=null;this.rel='stylesheet'">
|
onload="this.onload=null;this.rel='stylesheet'">
|
||||||
<noscript>
|
<noscript>
|
||||||
|
@ -40,6 +37,7 @@
|
||||||
<script src="{{ asset('js/app.js') }}"></script>
|
<script src="{{ asset('js/app.js') }}"></script>
|
||||||
<!-- tinymce -->
|
<!-- tinymce -->
|
||||||
<script src={{ asset('plugins/tinymce/js/tinymce/tinymce.min.js') }}></script>
|
<script src={{ asset('plugins/tinymce/js/tinymce/tinymce.min.js') }}></script>
|
||||||
|
@vite('themes/default/sass/app.scss')
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="sidebar-mini layout-fixed dark-mode" style="height: auto;">
|
<body class="sidebar-mini layout-fixed dark-mode" style="height: auto;">
|
||||||
|
@ -62,6 +60,7 @@
|
||||||
class="fab fa-discord mr-2"></i>{{ __('Discord') }}</a>
|
class="fab fa-discord mr-2"></i>{{ __('Discord') }}</a>
|
||||||
</li>
|
</li>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
<!-- Language Selection -->
|
<!-- Language Selection -->
|
||||||
@if (config('SETTINGS::LOCALE:CLIENTS_CAN_CHANGE') == 'true')
|
@if (config('SETTINGS::LOCALE:CLIENTS_CAN_CHANGE') == 'true')
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
|
@ -86,6 +85,12 @@
|
||||||
</li>
|
</li>
|
||||||
<!-- End Language Selection -->
|
<!-- End Language Selection -->
|
||||||
@endif
|
@endif
|
||||||
|
@foreach($useful_links as $link)
|
||||||
|
<li class="nav-item d-none d-sm-inline-block">
|
||||||
|
<a href="{{ $link->link }}" class="nav-link" target="__blank"><i
|
||||||
|
class="{{$link->icon}}"></i> {{ $link->title }}</a>
|
||||||
|
</li>
|
||||||
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<!-- Right navbar links -->
|
<!-- Right navbar links -->
|
||||||
|
|
|
@ -212,7 +212,7 @@
|
||||||
{{ __('Required') }} {{ CREDITS_DISPLAY_NAME }}
|
{{ __('Required') }} {{ CREDITS_DISPLAY_NAME }}
|
||||||
{{ __('to create this server') }}</span>
|
{{ __('to create this server') }}</span>
|
||||||
<span class="d-inline-block"
|
<span class="d-inline-block"
|
||||||
x-text="product.minimum_credits === -1 ? {{ config('SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER') }} : product.minimum_credit"></span>
|
x-text="product.minimum_credits == -1 ? {{ config('SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER') }} : product.minimum_credits"></span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
16
webpack.mix.js
vendored
16
webpack.mix.js
vendored
|
@ -1,16 +0,0 @@
|
||||||
const mix = require('laravel-mix');
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Mix Asset Management
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Mix provides a clean, fluent API for defining some Webpack build steps
|
|
||||||
| for your Laravel application. By default, we are compiling the Sass
|
|
||||||
| file for the application as well as bundling up all the JS files.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
mix.js('resources/js/app.js', 'public/js')
|
|
||||||
.sass('resources/sass/app.scss', 'public/css')
|
|
||||||
.sourceMaps();
|
|
Loading…
Reference in a new issue