- Implement full web interface with Go html/template server - Add GX component library (buttons, dialogs, tables, forms, etc.) - Create scene/performer/studio/movie detail and listing pages - Add Adult Empire scraper for additional metadata sources - Implement movie support with database schema - Add import and sync services for data management - Include comprehensive API and frontend documentation - Add custom color scheme and responsive layout 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
118 lines
4.2 KiB
HTML
118 lines
4.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>{{.Movie.Title}} - Goondex</title>
|
|
<link rel="stylesheet" href="/static/css/goondex.css">
|
|
</head>
|
|
<body>
|
|
<nav class="navbar">
|
|
<div class="container nav-inner">
|
|
<img src="/static/img/logo/GOONDEX_logo.png" class="logo-img">
|
|
<ul class="nav-links">
|
|
<li><a href="/">Dashboard</a></li>
|
|
<li><a href="/performers">Performers</a></li>
|
|
<li><a href="/studios">Studios</a></li>
|
|
<li><a href="/scenes">Scenes</a></li>
|
|
<li><a href="/movies" class="active">Movies</a></li>
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="container">
|
|
<div class="detail-header">
|
|
<div class="detail-image">
|
|
{{if .Movie.ImageURL}}
|
|
<img src="{{.Movie.ImageURL}}" alt="{{.Movie.Title}}">
|
|
{{else}}
|
|
<div class="placeholder-image">No Image</div>
|
|
{{end}}
|
|
</div>
|
|
|
|
<div class="detail-info">
|
|
<h1>{{.Movie.Title}}</h1>
|
|
|
|
<div class="detail-meta">
|
|
{{if .Movie.Date}}
|
|
<div class="meta-item">
|
|
<strong>Release Date:</strong> {{.Movie.Date}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if .StudioName}}
|
|
<div class="meta-item">
|
|
<strong>Studio:</strong>
|
|
{{if .Movie.StudioID}}
|
|
<a href="/studios/{{.Movie.StudioID}}">{{.StudioName}}</a>
|
|
{{else}}
|
|
{{.StudioName}}
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if .Movie.Director}}
|
|
<div class="meta-item">
|
|
<strong>Director:</strong> {{.Movie.Director}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if .Movie.Duration}}
|
|
<div class="meta-item">
|
|
<strong>Duration:</strong> {{.Movie.Duration}} minutes
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if .Movie.Source}}
|
|
<div class="meta-item">
|
|
<strong>Source:</strong> {{.Movie.Source}}
|
|
{{if .Movie.URL}}
|
|
| <a href="{{.Movie.URL}}" target="_blank">View on {{.Movie.Source}}</a>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
|
|
{{if .Movie.Description}}
|
|
<div class="detail-description">
|
|
<h3>Description</h3>
|
|
<p>{{.Movie.Description}}</p>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
|
|
{{if .Scenes}}
|
|
<section class="detail-section">
|
|
<h2>Scenes ({{len .Scenes}})</h2>
|
|
<div class="gx-card-grid scenes-grid">
|
|
{{range .Scenes}}
|
|
<div class="gx-card" onclick="location.href='/scenes/{{.ID}}'">
|
|
<div class="gx-card-thumb"
|
|
style="background-image: url('{{if .ImageURL}}{{.ImageURL}}{{else}}/static/img/placeholder-scene.jpg{{end}}'); aspect-ratio: 16/9; background-color: #1a1a1a;">
|
|
</div>
|
|
|
|
<div class="gx-card-body">
|
|
<div class="gx-card-title">{{.Title}}</div>
|
|
{{if .Date}}
|
|
<div class="gx-card-meta">📅 {{.Date}}</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</section>
|
|
{{end}}
|
|
|
|
{{if .Movie.BackImageURL}}
|
|
<section class="detail-section">
|
|
<h2>Back Cover</h2>
|
|
<div style="max-width: 800px;">
|
|
<img src="{{.Movie.BackImageURL}}" alt="{{.Movie.Title}} - Back Cover" style="width: 100%; border-radius: 8px;">
|
|
</div>
|
|
</section>
|
|
{{end}}
|
|
</main>
|
|
</body>
|
|
</html>
|