| Server IP : 173.209.174.21 / Your IP : 216.73.216.89 Web Server : Apache/2.4.58 (Ubuntu) System : Linux wcfs-server 6.8.0-124-generic #124-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 13:00:45 UTC 2026 x86_64 User : nodor ( 1000) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/grangestation/ |
Upload File : |
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<title>Grange Station Owner Desk</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="owner-page">
<main class="owner-shell">
<section class="owner-login" data-owner-login>
<div class="section-kicker">Private</div>
<h1>Owner Desk</h1>
<p>Enter the owner code to view requests and manage confirmed bookings on this browser.</p>
<label>Owner code<input type="password" data-owner-code autocomplete="current-password"></label>
<button class="button primary" type="button" data-owner-unlock>Open Owner Desk</button>
</section>
<section class="owner-desk" data-owner-desk hidden>
<aside class="owner-sidebar" aria-label="Owner desk sections">
<div>
<div class="section-kicker">Private</div>
<h1>Owner Desk</h1>
</div>
<nav class="owner-tabs">
<button class="active" type="button" data-owner-tab="bookings">Bookings</button>
<button type="button" data-owner-tab="blocks">Unavailable</button>
<button type="button" data-owner-tab="branding">Branding</button>
<button type="button" data-owner-tab="pricing">Pricing & Colors</button>
<button type="button" data-owner-tab="packages">Packages</button>
<button type="button" data-owner-tab="offerings">Offerings</button>
<button type="button" data-owner-tab="gallery">Gallery</button>
<button type="button" data-owner-tab="faqs">Helpful Answers</button>
<button type="button" data-owner-tab="requests">Requests</button>
</nav>
<a class="button ghost" href="index.html?edit=gallery#gallery">Edit Gallery Crops</a>
<a class="button secondary" href="index.html">View Site</a>
<button class="button ghost" type="button" data-owner-logout>Lock Owner Desk</button>
</aside>
<div class="owner-workspace">
<section class="owner-panel active" data-owner-section="bookings">
<div class="section-heading">
<div>
<h2>Confirmed Bookings</h2>
<p>These are the bookings the public calendar will show as actually confirmed.</p>
</div>
</div>
<form class="confirmed-form" data-confirmed-form>
<div class="form-grid">
<label>Event name<input required name="title" placeholder="Confirmed wedding"></label>
<label>Date<input required name="date" type="date"></label>
<label>Start<input required name="start" type="time" value="14:00"></label>
<label>End<input required name="end" type="time" value="22:00"></label>
<label>Guest count<input name="guests" type="number" min="0" max="250" placeholder="100"></label>
<label>Extra hours<input name="extraHours" type="number" min="0" step="0.25" value="0"></label>
<label>Owner adjustment<input name="priceAdjustment" type="number" step="0.01" value="0"></label>
<label>Amount owed<input name="amountOwed" type="number" min="0" step="0.01" value="0"></label>
</div>
<label>Booking features / notes<textarea name="notes" rows="2" placeholder="Tables, chairs, vendor notes, setup needs, package notes"></textarea></label>
<button class="button primary" type="submit">Add Confirmed Booking</button>
</form>
<div class="request-list" data-confirmed-list></div>
</section>
<section class="owner-panel" data-owner-section="blocks">
<div class="section-heading">
<div>
<h2>Unavailable Dates & Times</h2>
<p>Block time for travel, maintenance, owner holds, or anything else that should not be requested.</p>
</div>
</div>
<form class="confirmed-form" data-block-form>
<div class="form-grid">
<label>Reason/title<input required name="title" placeholder="Owner unavailable"></label>
<label>Date<input required name="date" type="date"></label>
<label>Start<input required name="start" type="time" value="08:00"></label>
<label>End<input required name="end" type="time" value="23:00"></label>
<label>Block type
<select name="reason">
<option value="owner_hold">Owner hold</option>
<option value="maintenance">Maintenance</option>
<option value="private_hold">Private hold</option>
<option value="other">Other</option>
</select>
</label>
</div>
<button class="button primary" type="submit">Add Unavailable Time</button>
</form>
<div class="request-list" data-block-list></div>
</section>
<section class="owner-panel" data-owner-section="branding">
<div class="section-heading">
<div>
<h2>Branding & Main Images</h2>
<p>Change the header logo mark, main homepage image, and the image used when the site is shared.</p>
</div>
</div>
<form class="manager-form" data-branding-form>
<div class="form-grid">
<label>Venue name<input name="venueName" placeholder="Grange Station"></label>
<label>Small tagline<input name="tagline" placeholder="Wilson Creek, WA"></label>
<label>Logo image path<input name="logoImage" placeholder="assets/logo.png"></label>
<label>Upload logo image<input type="file" accept="image/png,image/jpeg,image/webp" data-upload-image="logoImage"></label>
<label>Main homepage image path<input name="heroImage" placeholder="assets/grange-station.png"></label>
<label>Upload main image<input type="file" accept="image/png,image/jpeg,image/webp" data-upload-image="heroImage"></label>
<label>Share/social image path<input name="socialImage" placeholder="assets/grange-station.png"></label>
<label>Upload share image<input type="file" accept="image/png,image/jpeg,image/webp" data-upload-image="socialImage"></label>
</div>
<p class="form-note">Choose an image here and it will upload to the site automatically. JPG, PNG, or WebP; 5 MB max.</p>
<button class="button primary" type="submit">Save Branding</button>
</form>
</section>
<section class="owner-panel" data-owner-section="pricing">
<div class="section-heading">
<div>
<h2>Pricing & Site Colors</h2>
<p>Adjust the estimate ranges and the main brand colors used across the public site.</p>
</div>
</div>
<form class="manager-form" data-settings-form>
<h3>Pricing</h3>
<div class="form-grid" data-pricing-fields></div>
<h3>Colors</h3>
<div class="color-grid" data-color-fields></div>
<button class="button primary" type="submit">Save Pricing & Colors</button>
</form>
</section>
<section class="owner-panel" data-owner-section="packages">
<div class="section-heading">
<div>
<h2>Packages</h2>
<p>Edit package names, prices, time blocks, included items, and package notes shown on the public site and booking form.</p>
</div>
</div>
<div class="manager-list" data-package-manager></div>
<button class="button ghost" type="button" data-add-package>Add Package</button>
<button class="button primary" type="button" data-save-packages>Save Packages</button>
</section>
<section class="owner-panel" data-owner-section="offerings">
<div class="section-heading">
<div>
<h2>Offerings & Vendor Help</h2>
<p>Edit add-on names, booking values, prices, show/hide status, and planning-help cards shown on the site.</p>
</div>
</div>
<div class="manager-list" data-addon-manager></div>
<button class="button ghost" type="button" data-add-addon>Add Add-on</button>
<div class="manager-list" data-vendor-manager></div>
<button class="button ghost" type="button" data-add-vendor>Add Planning Card</button>
<button class="button primary" type="button" data-save-offerings>Save Offerings</button>
</section>
<section class="owner-panel" data-owner-section="gallery">
<div class="section-heading">
<div>
<h2>Gallery Manager</h2>
<p>Show, hide, caption, add, or remove gallery images. New images should be uploaded into the site folder first.</p>
</div>
</div>
<div class="manager-list" data-gallery-manager></div>
<div class="inline-add">
<input data-new-gallery-src placeholder="assets/gallery/new-photo.jpg">
<input data-new-gallery-caption placeholder="Caption">
<button class="button ghost" type="button" data-add-gallery-image>Add Image</button>
</div>
<button class="button primary" type="button" data-save-gallery>Save Gallery</button>
</section>
<section class="owner-panel" data-owner-section="faqs">
<div class="section-heading">
<div>
<h2>Helpful Answers</h2>
<p>Edit the question-and-answer section shown near the bottom of the site.</p>
</div>
</div>
<div class="manager-list" data-faq-manager></div>
<button class="button ghost" type="button" data-add-faq>Add Question</button>
<button class="button primary" type="button" data-save-faqs>Save Helpful Answers</button>
</section>
<section class="owner-panel" data-owner-section="requests">
<div class="section-heading">
<div>
<h2>Saved Requests</h2>
<p>Requests are private to this owner page in the prototype.</p>
</div>
<div class="dashboard-actions">
<button class="button ghost active" type="button" data-request-view="active">Active</button>
<button class="button ghost" type="button" data-request-view="archived">Archived</button>
<button class="button ghost" type="button" data-export>Export CSV</button>
<button class="button ghost" type="button" data-request-restore hidden>Un-Archive Selected</button>
<button class="button ghost danger" type="button" data-request-action>Archive Selected</button>
</div>
</div>
<div class="request-list" data-request-list></div>
</section>
</div>
</section>
</main>
<div class="toast" data-toast role="status" aria-live="polite"></div>
<script src="site-config.js"></script>
<script src="owner.js"></script>
</body>
</html>