added link to RL projects

This commit is contained in:
Frank Harris 2026-06-16 16:28:05 -05:00
parent a49371c3dd
commit bb02be7daa
29 changed files with 325 additions and 36 deletions

View file

@ -3,7 +3,7 @@
> **Module:** `Panel/modules/addonsmanager`
> **Status:** Phase 1 complete — UI/language cleanup, category map, VARCHAR(32) migration, installer documentation
> **Branch:** Panel-unstable
> **Maintained by:** WDS (GSP is a heavily customized fork of OGP)
> **Maintained by:** Runlevel Systems (GSP is a heavily customized fork of OGP)
---

View file

@ -2,7 +2,7 @@
<?php
/*
*
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by WDS)
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by Runlevel Systems)
*
* Server Content Installer (module: addonsmanager, page: addons)
* ─────────────────────────────────────────────────────────────────────────────

View file

@ -2,7 +2,7 @@
<?php
/*
*
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by WDS)
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by Runlevel Systems)
*
* Admin page: Server Content Manager (module: addonsmanager)
* ─────────────────────────────────────────────────────────────────────────────

View file

@ -1,7 +1,7 @@
<?php
/*
*
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by WDS)
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by Runlevel Systems)
*
* Module: addonsmanager Server Content Manager
* ─────────────────────────────────────────────────────────────────────────────

View file

@ -1,7 +1,7 @@
<?php
/*
*
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by WDS)
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by Runlevel Systems)
*
* Monitor button: Server Content (module: addonsmanager)
* ─────────────────────────────────────────────────────────────────────────────

View file

@ -1,7 +1,7 @@
<?php
/*
*
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by WDS)
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by Runlevel Systems)
*
* Server Content Category Map
* ─────────────────────────────────────────────────────────────────────────────

View file

@ -1,7 +1,7 @@
<?php
/*
*
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by WDS)
* GSP - Game Server Panel (a heavily customized fork of OGP maintained by Runlevel Systems)
*
* User page: Server Content (module: addonsmanager, page: user_addons)
* ─────────────────────────────────────────────────────────────────────────────

View file

@ -7,7 +7,7 @@ require_once(dirname(__DIR__) . '/billing_bootstrap.php');
<a href="<?php echo htmlspecialchars(function_exists('billing_url') ? billing_url('privacy.php') : 'privacy.php', ENT_QUOTES, 'UTF-8'); ?>">Privacy</a> |
<a href="<?php echo htmlspecialchars(function_exists('billing_url') ? billing_url('tos.php') : 'tos.php', ENT_QUOTES, 'UTF-8'); ?>">TOS</a> |
<a href="<?php echo htmlspecialchars(function_exists('billing_url') ? billing_url('server_status.php') : 'server_status.php', ENT_QUOTES, 'UTF-8'); ?>">Server Status</a> |
<a href="https://worlddomination.dev" target="_blank" rel="noopener">Worlddomination.dev</a>
<a href="https://runlevelsystems.com/" target="_blank" rel="noopener noreferrer">Runlevel Systems</a>
</div>
<div class="last-updated" style="color:#999;font-size:0.9em;">

View file

@ -40,3 +40,109 @@
height:18px;
overflow: hidden;
}
.dragbox.bloc.rounded {
background: linear-gradient(180deg, rgba(10, 18, 32, 0.92) 0%, rgba(14, 25, 45, 0.94) 100%);
border: 1px solid rgba(77, 160, 255, 0.18);
border-radius: 8px;
box-shadow: 0 14px 32px rgba(0, 0, 0, 0.22);
}
.dragbox.bloc.rounded > h4,
.dashboard-promo-card > h4,
.dashboard-secondary-card > h4 {
margin: 0 0 12px;
padding-bottom: 12px;
border-bottom: 1px solid rgba(77, 160, 255, 0.18);
color: #e6f0ff;
letter-spacing: 0.04em;
}
.dragbox-content {
padding: 4px 2px 2px;
color: #d2def4;
}
.dashboard-service-grid {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 16px;
margin-top: 20px;
}
.dashboard-promo-card,
.dashboard-secondary-card {
padding: 18px 20px;
background: linear-gradient(180deg, rgba(12, 22, 40, 0.94) 0%, rgba(8, 16, 29, 0.96) 100%);
border: 1px solid rgba(77, 160, 255, 0.2);
border-radius: 8px;
box-shadow: 0 16px 36px rgba(0, 0, 0, 0.24);
}
.dashboard-promo-card {
border-left: 3px solid #48c4f5;
}
.dashboard-promo-card p,
.dashboard-secondary-card p {
margin: 0 0 12px;
color: #d2def4;
}
.dashboard-card-note {
color: #9fb5d8;
}
.dashboard-cta-button,
.dashboard-support-link {
display: inline-block;
padding: 10px 16px;
border-radius: 6px;
text-decoration: none;
font-weight: 600;
}
.dashboard-cta-button {
background: linear-gradient(180deg, #5ac7f7 0%, #2f9fde 100%);
border: 1px solid rgba(107, 214, 255, 0.55);
color: #04111f;
}
.dashboard-cta-button:hover,
.dashboard-cta-button:focus {
color: #04111f;
text-decoration: none;
box-shadow: 0 0 0 3px rgba(90, 199, 247, 0.18);
}
.dashboard-support-link {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.12);
color: #f0f5ff;
}
.dashboard-support-link:hover,
.dashboard-support-link:focus {
color: #ffffff;
text-decoration: none;
box-shadow: 0 0 0 3px rgba(90, 199, 247, 0.12);
}
@media (max-width: 991px) {
.dashboard-service-grid {
grid-template-columns: 1fr;
}
}
@media (max-width: 430px) {
.dashboard-promo-card,
.dashboard-secondary-card {
padding: 16px;
}
.dashboard-cta-button,
.dashboard-support-link {
width: 100%;
text-align: center;
}
}

View file

@ -30,6 +30,8 @@ require_once('includes/lib_remote.php');
function exec_ogp_module()
{
global $db, $settings, $loggedInUserInfo;
$projectRequestUrl = htmlspecialchars(gsp_project_request_url(), ENT_QUOTES, 'UTF-8');
$isAdmin = $db->isAdmin($_SESSION['user_id']);
$user_id = $_SESSION['user_id'];
@ -85,7 +87,7 @@ function exec_ogp_module()
// Support Resources quick link
$title[4] = 'Support Resources';
$content[4] ='Need help? Visit the support section to open tickets or review documentation.';
$content[4] ='Need routine help? Use the support section for tickets, service problems, documentation, and troubleshooting with existing features.';
$href[4] = 'home.php?m=tickets';
// Support
@ -142,6 +144,20 @@ function exec_ogp_module()
foreach ((array)$colhtml as $html)
echo $html.'</div>';
}
echo "<div class='dashboard-service-grid'>
<div class='dashboard-promo-card'>
<h4>CUSTOM SERVER DEVELOPMENT</h4>
<p>Need something beyond the standard server options? Our developers can customize, repair, automate, or extend your game server with mods, scripts, integrations, migrations, and server-specific tools.</p>
<p class='dashboard-card-note'>Tell us what you want to build or improve, and we will review the request with you.</p>
<a class='dashboard-cta-button' href='{$projectRequestUrl}'>Request Custom Development</a>
</div>
<div class='dashboard-secondary-card'>
<h4>Support and Troubleshooting</h4>
<p>Use support when something is broken, you need routine troubleshooting, or you need help with the features already included with your service.</p>
<a class='dashboard-support-link' href='home.php?m=tickets'>Open Support Resources</a>
</div>
</div>";
// Server Status Link - Available to all users
echo "<div style='margin-top:20px;'>

View file

@ -3,7 +3,7 @@
*
* OGP - Open Game Panel
* Copyright (C) 2008 - 2018 The OGP Development Team
* GSP / WDS customisation Migrate replaces the old Clone feature.
* GSP / Runlevel Systems customisation Migrate replaces the old Clone feature.
*
* This page lets an admin copy all files from one game server to another
* server of the SAME game type, using rsync (Linux) or robocopy (Windows

View file

@ -41,6 +41,7 @@ Panel/modules/website/
config/
config.example.php
pricing.php
services.php
```
## URL helpers
@ -123,9 +124,40 @@ Alternate front-controller approach:
- `billing_base_url`
- `panel_url`
- `login_url`
- Runlevel Systems company and project-request URLs
- support links
3. Keep any environment-specific config out of Git
## Runlevel Systems Project Request Integration
The website keeps its custom-development CTA URL centralized in:
- `Panel/modules/website/config/services.php`
Optional overrides can be placed in:
- `Panel/modules/website/config/config.php`
- `Panel/modules/website/config/config.local.php`
The current project request URL is:
- `https://runlevelsystems.com/start-project.php`
Homepage CTA location:
- `Panel/modules/website/pages/home.php`
Shared footer branding location:
- `Panel/modules/website/includes/footer.php`
The public wording distinguishes between ordinary support and project work:
- support is for troubleshooting, service issues, and existing features
- project requests are for custom scripts, mods, integrations, automation, migrations, dashboards, and GSP feature work
Use the shared config values instead of scattering the Runlevel Systems URL or company name through templates.
## Pricing and Platform Reference
Internal pricing planning remains in:

View file

@ -20,6 +20,15 @@ return [
'panel_url' => 'https://panel.iaregamer.com/',
'login_url' => 'https://panel.iaregamer.com/',
'company' => [
'name' => 'Runlevel Systems',
'url' => 'https://runlevelsystems.com/',
'copyright' => "\u{00A9} 2026 Runlevel Systems",
],
'services' => [
'project_request_url' => 'https://runlevelsystems.com/start-project.php',
],
// Optional support links.
'discord_url' => 'https://discord.gg/replace-me',
'support_url' => 'https://gameservers.world/support',

View file

@ -0,0 +1,12 @@
<?php
return [
'company' => [
'name' => 'Runlevel Systems',
'url' => 'https://runlevelsystems.com/',
'copyright' => "\u{00A9} 2026 Runlevel Systems",
],
'services' => [
'project_request_url' => 'https://runlevelsystems.com/start-project.php',
],
];

View file

@ -16,6 +16,7 @@ ini_set('display_errors', '0');
$websiteConfig = [];
$websiteConfigFiles = [
WEBSITE_CONFIG_DIR . '/pricing.php',
WEBSITE_CONFIG_DIR . '/services.php',
WEBSITE_CONFIG_DIR . '/config.php',
WEBSITE_CONFIG_DIR . '/config.local.php',
];
@ -40,6 +41,14 @@ $websiteDefaults = [
'billing_base_url' => '/billing',
'panel_url' => 'https://panel.iaregamer.com/',
'login_url' => 'https://panel.iaregamer.com/',
'company' => [
'name' => 'Runlevel Systems',
'url' => 'https://runlevelsystems.com/',
'copyright' => "\u{00A9} 2026 Runlevel Systems",
],
'services' => [
'project_request_url' => 'https://runlevelsystems.com/start-project.php',
],
'discord_url' => null,
'support_url' => null,
'support_email' => null,
@ -445,6 +454,15 @@ function website_fetch_services(int $limit = 0): array
function website_custom_project_url(): string
{
$services = website_config('services', []);
$projectUrl = '';
if (is_array($services)) {
$projectUrl = trim((string)($services['project_request_url'] ?? ''));
}
if ($projectUrl !== '') {
return $projectUrl;
}
$supportUrl = trim((string)website_config('support_url', ''));
if ($supportUrl !== '') {
return $supportUrl;

View file

@ -5,6 +5,10 @@ declare(strict_types=1);
$discordUrl = trim((string)website_config('discord_url', ''));
$supportUrl = trim((string)website_config('support_url', ''));
$supportEmail = trim((string)website_config('support_email', ''));
$company = website_config('company', []);
$companyName = trim((string)($company['name'] ?? 'Runlevel Systems'));
$companyUrl = trim((string)($company['url'] ?? 'https://runlevelsystems.com/'));
$companyCopyright = trim((string)($company['copyright'] ?? "\u{00A9} 2026 Runlevel Systems"));
?>
</main>
<footer class="site-footer">
@ -15,7 +19,8 @@ $supportEmail = trim((string)website_config('support_email', ''));
<span><?= website_escape(website_config('site_name')) ?></span>
</a>
<p class="footer-copy"><?= website_escape(website_config('site_tagline')) ?></p>
<p class="footer-copy">Hosting is provided by Gameservers.World. Development, integration, and infrastructure expertise come from Runlevel Systems.</p>
<p class="footer-copy">Hosting is provided by Gameservers.World. Development, integration, and infrastructure expertise come from <?= website_escape($companyName) ?>.</p>
<p class="footer-copy"><a href="<?= website_escape($companyUrl) ?>" target="_blank" rel="noopener noreferrer"><?= website_escape($companyCopyright) ?></a></p>
</div>
<div>
<h2>Explore</h2>

View file

@ -143,6 +143,23 @@ $platformBackupNote = trim((string)($platform['daily_backups_note'] ?? ''));
</div>
</section>
<section class="section">
<div class="container">
<div class="cta-panel cta-panel-inline">
<div>
<div class="kicker">Runlevel Systems</div>
<h2>Need More Than Standard Hosting?</h2>
<p>Gameservers.World is backed by Runlevel Systems developers. We can help customize your server with mods, scripts, integrations, automation, migrations, and features built around your community.</p>
<p>We host the server. We can also help build what runs on it.</p>
</div>
<div class="stack-actions">
<a class="button button-primary" href="<?= website_escape($customProjectUrl) ?>">Request Custom Development</a>
<a class="button button-secondary" href="<?= website_escape(website_url('support.php')) ?>">Support and Troubleshooting</a>
</div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="section-heading">