218 lines
12 KiB
HTML
218 lines
12 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>{% block title %}{{ title }}{% endblock %} - {{ comic_name }}</title>
|
|
|
|
<!-- SEO Meta Tags -->
|
|
<meta name="description" content="{% block meta_description %}A webcomic about life, the universe, and everything{% endblock %}">
|
|
<link rel="canonical" href="{% block canonical %}{{ site_url }}{{ request.path }}{% endblock %}">
|
|
|
|
<!-- Version -->
|
|
<meta name="generator" content="Sunday Comics {{ version }}">
|
|
|
|
<!-- AI Scraping Prevention -->
|
|
<meta name="robots" content="noai, noimageai">
|
|
<meta name="googlebot" content="noai, noimageai">
|
|
|
|
<!-- Open Graph / Facebook -->
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:url" content="{% block meta_url %}{{ site_url }}{{ request.path }}{% endblock %}">
|
|
<meta property="og:title" content="{% block og_title %}{{ self.title() }} - {{ comic_name }}{% endblock %}">
|
|
<meta property="og:description" content="{% block og_description %}{{ self.meta_description() }}{% endblock %}">
|
|
<meta property="og:image" content="{% block og_image %}{{ site_url }}/static/images/default-preview.png{% endblock %}">
|
|
|
|
<!-- Twitter -->
|
|
<meta property="twitter:card" content="summary_large_image">
|
|
<meta property="twitter:url" content="{% block twitter_url %}{{ self.meta_url() }}{% endblock %}">
|
|
<meta property="twitter:title" content="{% block twitter_title %}{{ self.og_title() }}{% endblock %}">
|
|
<meta property="twitter:description" content="{% block twitter_description %}{{ self.og_description() }}{% endblock %}">
|
|
<meta property="twitter:image" content="{% block twitter_image %}{{ self.og_image() }}{% endblock %}">
|
|
|
|
<!-- Favicon -->
|
|
<link rel="icon" type="image/x-icon" href="{{ 'favicon.ico' | cdn_static }}">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ 'favicon-32x32.png' | cdn_static }}">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="{{ 'favicon-16x16.png' | cdn_static }}">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ 'apple-touch-icon.png' | cdn_static }}">
|
|
|
|
<link rel="stylesheet" href="{{ 'css/style.css' | cdn_static }}">
|
|
<link rel="alternate" type="application/rss+xml" title="{{ comic_name }} RSS Feed" href="{{ 'feed.rss' | cdn_static }}">
|
|
{% block extra_css %}{% endblock %}
|
|
</head>
|
|
<body data-site-url="{{ site_url }}">
|
|
<!-- Skip to main content link for keyboard navigation -->
|
|
<a href="#main-content" class="skip-to-main">Skip to main content</a>
|
|
|
|
{% if header_image %}
|
|
<div class="site-header-image">
|
|
<img src="{{ ('images/' + header_image) | cdn_static }}" alt="{{ comic_name }} Header">
|
|
</div>
|
|
{% endif %}
|
|
|
|
<header{% if header_image %} class="header-with-image"{% endif %}>
|
|
<nav>
|
|
<div class="container">
|
|
{% if not header_image %}
|
|
<div class="nav-brand">
|
|
<a href="{{ url_for('index') }}">
|
|
{% if logo_image and logo_mode == 'beside' %}
|
|
<img src="{{ ('images/' + logo_image) | cdn_static }}" alt="{{ comic_name }} Logo" class="nav-logo nav-logo-beside">
|
|
<span class="nav-title">{{ comic_name }}</span>
|
|
{% elif logo_image and logo_mode == 'replace' %}
|
|
<img src="{{ ('images/' + logo_image) | cdn_static }}" alt="{{ comic_name }}" class="nav-logo nav-logo-replace">
|
|
{% else %}
|
|
{{ comic_name }}
|
|
{% endif %}
|
|
</a>
|
|
</div>
|
|
{% endif %}
|
|
<ul class="nav-links">
|
|
<li>
|
|
<a href="{{ url_for('index') }}" {% if request.endpoint == 'index' %}class="active"{% endif %}>
|
|
{% if use_header_nav_icons %}<img src="{{ 'images/icons/alert.png' | cdn_static }}" alt="" class="nav-icon" aria-hidden="true">{% endif %}Latest
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="{{ url_for('archive') }}" {% if request.endpoint == 'archive' %}class="active"{% endif %}>
|
|
{% if use_header_nav_icons %}<img src="{{ 'images/icons/archive.png' | cdn_static }}" alt="" class="nav-icon" aria-hidden="true">{% endif %}Archive
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="{{ url_for('about') }}" {% if request.endpoint == 'about' %}class="active"{% endif %}>
|
|
{% if use_header_nav_icons %}<img src="{{ 'images/icons/info.png' | cdn_static }}" alt="" class="nav-icon" aria-hidden="true">{% endif %}About
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
</header>
|
|
|
|
<main id="main-content">
|
|
<div class="container">
|
|
{% block content %}{% endblock %}
|
|
</div>
|
|
</main>
|
|
|
|
<footer{% if compact_footer %} class="compact-footer"{% endif %}>
|
|
<div class="container">
|
|
<div class="footer-content">
|
|
<div class="footer-section">
|
|
<h3>Follow</h3>
|
|
<div class="social-links{% if use_footer_social_icons %} social-links-icons{% endif %}">
|
|
{% if social_instagram %}
|
|
<a href="{{ social_instagram }}" target="_blank" rel="noopener noreferrer" aria-label="Instagram">
|
|
{% if use_footer_social_icons %}
|
|
<img src="{{ 'images/icons/instagram.png' | cdn_static }}" alt="" class="social-icon">
|
|
{% else %}
|
|
Instagram
|
|
{% endif %}
|
|
</a>
|
|
{% endif %}
|
|
{% if social_youtube %}
|
|
<a href="{{ social_youtube }}" target="_blank" rel="noopener noreferrer" aria-label="YouTube">
|
|
{% if use_footer_social_icons %}
|
|
<img src="{{ 'images/icons/youtube.png' | cdn_static }}" alt="" class="social-icon">
|
|
{% else %}
|
|
YouTube
|
|
{% endif %}
|
|
</a>
|
|
{% endif %}
|
|
{% if social_email %}
|
|
<a href="{{ social_email }}" aria-label="Email">
|
|
{% if use_footer_social_icons %}
|
|
<img src="{{ 'images/icons/mail .png' | cdn_static }}" alt="" class="social-icon">
|
|
{% else %}
|
|
Email
|
|
{% endif %}
|
|
</a>
|
|
{% endif %}
|
|
<a href="{{ 'feed.rss' | cdn_static }}" aria-label="RSS Feed">
|
|
{% if use_footer_social_icons %}
|
|
<img src="{{ 'images/icons/rss.png' | cdn_static }}" alt="" class="social-icon">
|
|
{% else %}
|
|
RSS Feed
|
|
{% endif %}
|
|
</a>
|
|
{% if api_spec_link %}
|
|
<a href="{{ api_spec_link | cdn_static }}" aria-label="API">API</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
{% if newsletter_enabled %}
|
|
<div class="footer-section">
|
|
<h3>Newsletter</h3>
|
|
<!-- Replace with your newsletter service form -->
|
|
<!-- <form class="newsletter-form" action="#" method="post">
|
|
<input type="email" name="email" placeholder="Enter your email" required>
|
|
<button type="submit">Subscribe</button>
|
|
</form> -->
|
|
<p class="newsletter-placeholder">Newsletter coming soon!</p>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if banner_image and not compact_footer %}
|
|
<div class="footer-section">
|
|
<h3>Share A Link</h3>
|
|
<div class="shareable-banner">
|
|
<a href="{{ site_url }}" target="_blank" rel="noopener noreferrer" aria-label="Link to {{ comic_name }} home page">
|
|
<img src="{{ ('images/' + banner_image) | cdn_static }}" alt="{{ comic_name }}" class="banner-image">
|
|
</a>
|
|
<details class="banner-code">
|
|
<summary>Get code</summary>
|
|
<textarea readonly onfocus="this.select()" onclick="this.select()" aria-label="HTML code for linking to {{ comic_name }}"><a href="{{ site_url }}"><img src="{% if cdn_url %}{{ cdn_url }}/static/images/{{ banner_image }}{% else %}{{ site_url }}/static/images/{{ banner_image }}{% endif %}" alt="{{ comic_name }}"></a></textarea>
|
|
</details>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<div class="footer-bottom">
|
|
<p>© {{ current_year }} {{ copyright_name }}. All rights reserved.</p>
|
|
<span class="footer-divider" aria-hidden="true">|</span>
|
|
<a href="{{ url_for('terms') }}" class="footer-terms">Terms of Service</a>
|
|
<span class="footer-divider" aria-hidden="true">|</span>
|
|
<div class="site-credit">
|
|
<a href="https://git.puercito.net/mi/sunday" target="_blank" rel="noopener noreferrer" aria-label="Sunday Comics - Webcomic platform">
|
|
<img src="{{ 'images/sunday.jpg' | cdn_static }}" alt="Sunday Comics" class="credit-image">
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
{% if footer_image %}
|
|
<div class="site-footer-image">
|
|
<img src="{{ ('images/' + footer_image) | cdn_static }}" alt="{{ comic_name }} Footer">
|
|
</div>
|
|
{% endif %}
|
|
|
|
<!-- Embed Code Modal -->
|
|
{% if embed_enabled %}
|
|
<div id="embed-modal" class="modal" role="dialog" aria-labelledby="embed-modal-title" aria-hidden="true">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h2 id="embed-modal-title">Embed This Comic</h2>
|
|
<button class="modal-close" aria-label="Close embed modal">×</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>Copy this code to embed the comic on your website:</p>
|
|
<textarea id="embed-code" readonly onfocus="this.select()" onclick="this.select()" aria-label="Embed code"></textarea>
|
|
<button id="copy-embed-code" class="btn-copy" aria-label="Copy embed code to clipboard">Copy Code</button>
|
|
<p class="embed-preview-link">Preview: <a id="embed-preview-link" href="#" target="_blank" rel="noopener noreferrer">Open embed in new window</a></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<script src="{{ 'js/comic-nav.js' | cdn_static }}"></script>
|
|
{% if embed_enabled %}
|
|
<script src="{{ 'js/embed.js' | cdn_static }}"></script>
|
|
{% endif %}
|
|
{% if permalink_enabled %}
|
|
<script src="{{ 'js/permalink.js' | cdn_static }}"></script>
|
|
{% endif %}
|
|
{% block extra_js %}{% endblock %}
|
|
</body>
|
|
</html> |