fixed bad links
This commit is contained in:
parent
b585aec260
commit
7e9a45f014
79 changed files with 2395 additions and 0 deletions
245
Panel/modules/website/pages/home.php
Normal file
245
Panel/modules/website/pages/home.php
Normal file
|
|
@ -0,0 +1,245 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
$discordUrl = trim((string)website_config('discord_url', ''));
|
||||
?>
|
||||
<section class="hero">
|
||||
<div class="container hero-layout">
|
||||
<div>
|
||||
<div class="eyebrow">Dedicated resources. Full control. Real support.</div>
|
||||
<h1>Virtual private game servers with predictable resources and full configuration access.</h1>
|
||||
<p><?= website_escape(website_config('site_tagline')) ?> Gameservers.World focuses on stable capacity, older community-favorite titles, mod support, and a control panel that gives customers practical access instead of a stripped-down toy interface.</p>
|
||||
<div class="hero-actions">
|
||||
<a class="button button-primary" href="<?= website_escape(website_url('serverlist.php')) ?>">View Game Servers</a>
|
||||
<a class="button button-secondary" href="<?= website_escape(panel_url()) ?>">Open Control Panel</a>
|
||||
</div>
|
||||
<div class="hero-points">
|
||||
<div class="hero-point">
|
||||
<strong>Never oversold</strong>
|
||||
<span class="muted">Dedicated resources stay dedicated. Predictable performance is the product, not an upgrade.</span>
|
||||
</div>
|
||||
<div class="hero-point">
|
||||
<strong>Mod and Workshop support</strong>
|
||||
<span class="muted">Common modding workflows, Workshop content, and file access stay available where the game allows it.</span>
|
||||
</div>
|
||||
<div class="hero-point">
|
||||
<strong>Control and customization</strong>
|
||||
<span class="muted">Startup parameters, configs, backups, and updates are managed through the GSP panel without hiding the important controls.</span>
|
||||
</div>
|
||||
<div class="hero-point">
|
||||
<strong>Real people</strong>
|
||||
<span class="muted">Documentation exists, but you can still talk to someone when an old modpack or legacy title gets awkward.</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero-visual">
|
||||
<img src="<?= website_escape(website_asset('images/banner.png')) ?>" alt="Gameservers.World supported games collage">
|
||||
<div class="hero-visual-card">
|
||||
<strong>Built for hosted communities that want actual control</strong>
|
||||
<p>Use the GSP panel for server start/stop, config editing, Workshop or mod workflows, logs, file access, and routine maintenance without depending on fragile manual shell work.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="stats-grid">
|
||||
<div class="stat-card">
|
||||
<strong>Dedicated</strong>
|
||||
<span>No noisy-neighbor overselling.</span>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<strong>Full access</strong>
|
||||
<span>Configs, startup parameters, files, backups, and updates.</span>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<strong>Legacy-friendly</strong>
|
||||
<span>Older and community-favorite games stay part of the catalog.</span>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<strong>Operational help</strong>
|
||||
<span>Human support when the docs are not enough.</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="section-heading">
|
||||
<h2>Why Gameservers.World</h2>
|
||||
<p>The website now makes the actual sales proposition explicit: dedicated capacity, access to the knobs that matter, and hosting for both current and older multiplayer titles without burying customers behind fragile shared-hosting abstractions.</p>
|
||||
</div>
|
||||
<div class="feature-grid">
|
||||
<article class="feature-card">
|
||||
<h3>Dedicated resources</h3>
|
||||
<p>Capacity is reserved for the server you pay for. CPU and memory planning are aimed at stable behavior, not squeezing one more tenant onto the node.</p>
|
||||
</article>
|
||||
<article class="feature-card">
|
||||
<h3>Mod support</h3>
|
||||
<p>Workshop and addon workflows are supported where the underlying game tooling allows it, with file access and update paths that customers can actually use.</p>
|
||||
</article>
|
||||
<article class="feature-card">
|
||||
<h3>Panel control</h3>
|
||||
<p>Customers manage their service through GSP rather than opening tickets for every config tweak, reboot, backup, or startup parameter change.</p>
|
||||
</article>
|
||||
<article class="feature-card">
|
||||
<h3>Real support</h3>
|
||||
<p>When an old title, community mod, or provisioning edge case gets weird, support is available through documentation plus direct assistance.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="section-heading">
|
||||
<h2>Current locations</h2>
|
||||
<p>Locations are configured data, not marketing filler. These reflect the currently documented host regions from the existing Gameservers.World site content.</p>
|
||||
</div>
|
||||
<div class="location-grid">
|
||||
<?php foreach ($locations as $location): ?>
|
||||
<article class="location-card">
|
||||
<h3><?= website_escape((string)($location['name'] ?? '')) ?></h3>
|
||||
<p><?= website_escape((string)($location['region'] ?? '')) ?></p>
|
||||
<small><?= website_escape((string)($location['host'] ?? '')) ?></small>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="section-heading">
|
||||
<h2>Popular and supported game servers</h2>
|
||||
<p>These cards are driven from the existing billing catalog when configuration is available. The site does not invent fake availability if the billing catalog is offline.</p>
|
||||
</div>
|
||||
<?php if (!empty($services)): ?>
|
||||
<div class="service-grid">
|
||||
<?php foreach ($services as $service): ?>
|
||||
<?php
|
||||
$serviceName = trim((string)($service['cfg_game_name'] ?? $service['service_name'] ?? 'Game Server'));
|
||||
$price = (float)($service['price_monthly'] ?? 0);
|
||||
$orderUrl = billing_url('order.php?service_id=' . rawurlencode((string)$service['service_id']));
|
||||
?>
|
||||
<article class="service-card">
|
||||
<img src="<?= website_escape(website_service_image_url((string)($service['img_url'] ?? ''))) ?>" alt="<?= website_escape($serviceName) ?>">
|
||||
<header>
|
||||
<h3><?= website_escape($serviceName) ?></h3>
|
||||
<div class="service-price"><?= $price > 0 ? '$' . number_format($price, 2) . ' / month' : 'Contact for pricing' ?></div>
|
||||
</header>
|
||||
<p><?= website_escape(trim((string)($service['description'] ?? 'Dedicated hosting with full configuration access.')) ?: 'Dedicated hosting with full configuration access.') ?></p>
|
||||
<div class="card-actions">
|
||||
<a class="button button-primary" href="<?= website_escape($orderUrl) ?>">Order</a>
|
||||
<a class="button button-ghost" href="<?= website_escape(website_url('serverlist.php')) ?>">Catalog</a>
|
||||
</div>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="empty-state">
|
||||
<h3>Catalog visibility depends on billing data</h3>
|
||||
<p><?= website_escape((string)website_config('admin_notice')) ?></p>
|
||||
<div class="card-actions">
|
||||
<a class="button button-secondary" href="<?= website_escape(website_url('support.php')) ?>">Contact Support</a>
|
||||
<a class="button button-ghost" href="<?= website_escape(website_url('docs.php')) ?>">Read Documentation</a>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="section-heading">
|
||||
<h2>How it works</h2>
|
||||
<p>The public site and the control plane are now separated cleanly: the website explains the service, the billing catalog handles order-specific data, and GSP runs the operational lifecycle.</p>
|
||||
</div>
|
||||
<div class="flow-grid">
|
||||
<article class="flow-step">
|
||||
<span class="flow-step-number">1</span>
|
||||
<h3>Choose a server</h3>
|
||||
<p>Browse the supported game catalog, confirm the available plan, and select a region that matches your community.</p>
|
||||
</article>
|
||||
<article class="flow-step">
|
||||
<span class="flow-step-number">2</span>
|
||||
<h3>Configure it</h3>
|
||||
<p>Use the GSP panel to set startup parameters, edit configs, install supported content, and keep backups or updates under control.</p>
|
||||
</article>
|
||||
<article class="flow-step">
|
||||
<span class="flow-step-number">3</span>
|
||||
<h3>Manage through GSP</h3>
|
||||
<p>Operate the service through the panel for lifecycle, monitoring, logs, file access, and routine administrative work.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="panel-preview">
|
||||
<div class="panel-preview-shell">
|
||||
<img src="<?= website_escape(website_asset('images/dark.jpg')) ?>" alt="GSP control panel preview background">
|
||||
</div>
|
||||
<div class="panel-preview-stats">
|
||||
<div class="section-heading">
|
||||
<h2>GSP control panel</h2>
|
||||
<p>Customers do not get a fake storefront-only experience. They manage hosted servers through the same GSP platform that handles starts, stops, files, logs, addons, scheduling, and provisioning workflows.</p>
|
||||
</div>
|
||||
<div class="summary-card">
|
||||
<h3>Operational access</h3>
|
||||
<p>Start and stop servers, manage files, inspect logs, update Workshop content, and adjust configuration safely from the panel.</p>
|
||||
</div>
|
||||
<div class="stack-actions">
|
||||
<a class="button button-primary" href="<?= website_escape(panel_url()) ?>">Open Control Panel</a>
|
||||
<a class="button button-secondary" href="<?= website_escape(website_url('docs.php')) ?>">Read Documentation</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="summary-grid">
|
||||
<article class="summary-card">
|
||||
<h3>Documentation and support</h3>
|
||||
<p>Game-specific docs, panel guidance, and troubleshooting live in the same repo and can be served without depending on billing configuration.</p>
|
||||
<div class="card-actions">
|
||||
<a class="button button-secondary" href="<?= website_escape(website_url('docs.php')) ?>">Documentation</a>
|
||||
<a class="button button-ghost" href="<?= website_escape(website_url('support.php')) ?>">Support</a>
|
||||
</div>
|
||||
</article>
|
||||
<article class="summary-card">
|
||||
<h3>Panel and login routing</h3>
|
||||
<p>The Control Panel and Login actions are configuration-driven. The public site no longer assumes a fragile `/panel/` path under the marketing domain.</p>
|
||||
<div class="card-actions">
|
||||
<a class="button button-primary" href="<?= website_escape(login_url()) ?>">Login</a>
|
||||
<a class="button button-secondary" href="<?= website_escape(panel_url()) ?>">Control Panel</a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cta-band">
|
||||
<div class="container">
|
||||
<div class="cta-panel">
|
||||
<div>
|
||||
<h2>Ready to deploy a server?</h2>
|
||||
<p>Browse the current game catalog, confirm the right location, and manage the result through GSP.</p>
|
||||
</div>
|
||||
<div class="stack-actions">
|
||||
<a class="button button-primary" href="<?= website_escape(website_url('serverlist.php')) ?>">View Game Servers</a>
|
||||
<a class="button button-secondary" href="<?= website_escape(panel_url()) ?>">Open Control Panel</a>
|
||||
<?php if ($discordUrl !== ''): ?>
|
||||
<a class="button button-ghost" href="<?= website_escape($discordUrl) ?>" target="_blank" rel="noopener noreferrer">Discord</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue