/* ============================== CONFIG ============================== */ $SITE_NAME = 'Inland Adventures'; $APP_NAME = 'Media Workbench'; /* Shared passcode for the whole tool ('' = no gate). Give this to anyone who should review, caption or comment. */ $PASSCODE = 'reefton'; /* Where uploads live — OUTSIDE the Joomla install. */ $UPLOAD_DIR = __DIR__ . '/uploads'; /* App data (catalogue JSON + thumbnail cache). */ $DATA_DIR = __DIR__ . '/data'; /* Absolute path to the Joomla images/ folder (confirmed on devtconz). */ $JOOMLA_IMAGES = '/home/devtconz/public_html/inland61/images'; /* Folders inside images/ to skip when scanning Joomla media. */ $JOOMLA_SKIP = ['thumbnails', 'banners', 'sampledata', 'headers']; $ALLOWED_EXT = ['jpg','jpeg','png','webp','gif','pdf']; $MAX_SCAN = 2500; // safety cap on Joomla files listed $THUMB_SIZE = 560; // px, longest edge /* Website aspects (catalogue). key => [label, group, copy-destination inside images/ or null]. Destinations follow the folder-per-slug rule. */ $ASPECTS = [ // Trips — day 'arnold-half' => ['Arnold Family Raft ½ Day', 'Day tours', 'trips/arnold-family-raft-1-2-day-tour'], 'grey-1' => ['Grey Wilderness Raft 1 Day', 'Day tours', 'trips/grey-wilderness-raft-1-day-tour'], 'waiau-1' => ['Waiau Wilderness Raft 1 Day', 'Day tours', 'trips/waiau-wilderness-raft-1-day-tour'], // Trips — multi-day 'grey-2' => ['Grey Wilderness Raft 2 Day', 'Multi-day', 'trips/grey-wilderness-raft-2-day-adventure'], 'grey-3' => ['Grey Wilderness Raft 3 Day', 'Multi-day', 'trips/grey-wilderness-raft-3-day-adventure'], 'waiau-2' => ['Waiau Raft 2 Day', 'Multi-day', 'trips/waiau-raft-2-day-adventure'], 'waiau-3' => ['Waiau Raft 3 Day', 'Multi-day', 'trips/waiau-raft-3-day-adventure'], // Rivers 'river-arnold' => ['Arnold River', 'Rivers', 'rivers/arnold-river-greymouth'], 'river-grey' => ['Upper Grey / Māwheranui', 'Rivers', 'rivers/upper-grey-river-mawheranui-reefton'], 'river-waiau' => ['Upper Waiau / Waiau-uha', 'Rivers', 'rivers/upper-waiau-river-waiau-uha-hanmer-springs'], // Bases & pages 'base-reefton' => ['Reefton (base)', 'Bases & pages','bases/reefton'], 'page-home' => ['Homepage', 'Bases & pages','pages/home'], 'page-about' => ['About', 'Bases & pages','pages/about'], 'page-faqs' => ['FAQs', 'Bases & pages','pages/faqs'], // Shared 'shared-docs' => ['Shared documents (PDFs)', 'Shared', 'documents'], 'shared-brand' => ['Logo / brand / general', 'Shared', null], ]; /* Purpose on the page. */ $PURPOSES = [ 'hero' => 'Hero (page-lead image)', 'gallery' => 'Gallery', 'card' => 'Card / thumbnail', 'band' => 'Background / texture', 'document' => 'Document (PDF)', 'social' => 'Social / sharing', ]; /* Review workflow. */ $STATUSES = [ 'new' => 'New', 'shortlist' => 'Shortlisted', 'approved' => 'Approved', 'placed' => 'Placed on site', 'rejected' => 'Not for site', ]; /* Output sizes offered when copying across. key => [label, mode, w, h]. mode 'crop' = crop to exactly w×h (interactive crop box, no upscaling); mode 'fit' = shrink to fit within w×h, aspect kept, never enlarged. */ $SIZE_PRESETS = [ 'original' => ['Original size — no resize', null, 0, 0], 'hero' => ['Hero — crop to 1920×1080', 'crop', 1920, 1080], 'card' => ['Card — crop to 800×600', 'crop', 800, 600], 'gallery' => ['Gallery — fit within 1600 px', 'fit', 1600, 1600], ];
Counts show approved or placed files tagged to each part of the website. A red 0 in the Hero column means that page still has no approved page-lead image.