feat: rebuild site content management
Replace legacy FAQ, downloads, and release flows with project and blog publishing. Add configurable branding and theme fields plus clean-start Compose seeding support.
This commit is contained in:
@@ -1,34 +0,0 @@
|
||||
{% load static %}
|
||||
<div class="sub-downloads-channel{% if channel.is_previous %} sub-downloads-channel--prev{% endif %}">
|
||||
{% include "products/_release_channel_badge.html" with version=channel.version %}
|
||||
{% if channel.install_cells %}
|
||||
<div class="sub-downloads-grid">
|
||||
{% for cell in channel.install_cells %}
|
||||
<div class="sub-dl-item">
|
||||
<div class="sub-dl-icon-wrap">
|
||||
{% if cell.icon %}
|
||||
<img src="{% static cell.icon %}" alt="" width="32" height="32" class="platform-icon sub-dl-icon" aria-hidden="true" />
|
||||
{% else %}
|
||||
<span class="sub-dl-source-mark" aria-hidden="true">
|
||||
<svg class="sub-dl-source-svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.85" stroke-linecap="round">
|
||||
<polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/>
|
||||
</svg>
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<span class="sub-dl-platform">{{ cell.label }}</span>
|
||||
<span class="download-version">{{ channel.version.version }}</span>
|
||||
<a href="{{ cell.url }}" class="btn-primary btn--sm"{% if cell.external %} target="_blank" rel="noopener noreferrer"{% endif %}>{% if cell.label == "Source code" %}Source{% else %}Download{% endif %}</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if channel.version.package_resource_url %}
|
||||
<p class="sub-install-extra-resource">
|
||||
<a href="{{ channel.version.package_resource_url }}" target="_blank" rel="noopener noreferrer">Package resource</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if channel.version.release_notes %}
|
||||
<p class="sub-release-notes">{{ channel.version.release_notes }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -1,10 +0,0 @@
|
||||
{% if version.display_channel_label %}
|
||||
<span class="release-channel-label release-channel-label--{{ version.display_channel_css_modifier }}">
|
||||
{% if version.release_channel == "stable" %}
|
||||
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
|
||||
</svg>
|
||||
{% endif %}
|
||||
{{ version.display_channel_label }}
|
||||
</span>
|
||||
{% endif %}
|
||||
@@ -1,69 +0,0 @@
|
||||
{% load static %}
|
||||
{% if show_releases_section %}
|
||||
{% if distribution_installable %}
|
||||
<section class="sub-downloads fade-in" aria-labelledby="sub-dl-heading">
|
||||
<div class="sub-downloads-header">
|
||||
<h2 class="sub-downloads-title" id="sub-dl-heading">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||
<path d="M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/>
|
||||
</svg>
|
||||
Downloads
|
||||
</h2>
|
||||
{% if downloads_section_link %}
|
||||
<a href="{{ downloads_section_link.url }}" class="sub-downloads-corner-link link-arrow" target="_blank" rel="noopener noreferrer">{{ downloads_section_link.text }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if featured_version %}
|
||||
{% include "products/_installable_download_channel.html" with channel=featured_channel %}
|
||||
{% endif %}
|
||||
|
||||
{% for channel in inline_download_channels %}
|
||||
{% include "products/_installable_download_channel.html" %}
|
||||
{% endfor %}
|
||||
|
||||
{% if show_older_versions_link %}
|
||||
<p class="sub-older-versions-inner">
|
||||
<a href="{{ versions_archive_url }}" class="link-arrow">Older releases</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
{% elif distribution_package %}
|
||||
<section class="sub-downloads sub-downloads--package fade-in" aria-labelledby="sub-resources-heading">
|
||||
<div class="sub-downloads-header">
|
||||
<h2 class="sub-downloads-title" id="sub-resources-heading">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/>
|
||||
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/>
|
||||
</svg>
|
||||
Resources
|
||||
</h2>
|
||||
{% if downloads_section_link %}
|
||||
<a href="{{ downloads_section_link.url }}" class="sub-downloads-corner-link link-arrow" target="_blank" rel="noopener noreferrer">{{ downloads_section_link.text }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<ul class="pkg-version-list" role="list">
|
||||
{% for ver in package_versions %}
|
||||
<li class="pkg-version-row">
|
||||
<div class="pkg-version-meta">
|
||||
<span class="download-version">{{ ver.version }}</span>
|
||||
{% include "products/_release_channel_badge.html" with version=ver %}
|
||||
</div>
|
||||
<div class="pkg-version-actions">
|
||||
{% if ver.package_resource_url %}
|
||||
<a href="{{ ver.package_resource_url }}" class="btn-primary btn--sm" target="_blank" rel="noopener noreferrer">{{ package_resource_button_text }}</a>
|
||||
{% endif %}
|
||||
{% if ver.resolved_source_code_url %}
|
||||
<a href="{{ ver.resolved_source_code_url }}" class="btn-ghost btn--sm"{% if ver.source_code_url %} target="_blank" rel="noopener noreferrer"{% endif %}>{{ package_source_button_text }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if ver.release_notes %}
|
||||
<p class="pkg-version-notes">{{ ver.release_notes }}</p>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
@@ -1,70 +0,0 @@
|
||||
{% load static %}
|
||||
{% if not archive_versions %}
|
||||
<p class="versions-empty glass-card">There are no archived releases{% if sub_product %} for this module{% else %} for this product{% endif %}.</p>
|
||||
{% elif distribution_installable %}
|
||||
<div class="versions-table-wrap glass-card fade-in">
|
||||
<table class="versions-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Version</th>
|
||||
{% for fname, label, icon in archive_specs %}
|
||||
<th scope="col">{{ label }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for row in archive_rows_installable %}
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<span class="versions-table-version">{{ row.version_obj.version }}</span>
|
||||
{% include "products/_release_channel_badge.html" with version=row.version_obj %}
|
||||
</th>
|
||||
{% for cell in row.cells %}
|
||||
<td>
|
||||
{% if cell.url %}
|
||||
{% if cell.icon %}
|
||||
<a href="{{ cell.url }}" class="versions-table-link"{% if cell.external %} target="_blank" rel="noopener noreferrer"{% endif %}>
|
||||
<img src="{% static cell.icon %}" alt="" width="22" height="22" class="versions-table-icon" aria-hidden="true" />
|
||||
<span class="sr-only">{{ cell.label }}</span>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ cell.url }}" class="versions-table-text-link"{% if cell.external %} target="_blank" rel="noopener noreferrer"{% endif %}>Source</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<span class="versions-na">—</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% if row.version_obj.release_notes %}
|
||||
<tr class="versions-notes-row">
|
||||
<td colspan="{{ archive_specs|length|add:1 }}">
|
||||
<span class="versions-notes-label">Notes</span>
|
||||
<p class="versions-notes-body">{{ row.version_obj.release_notes }}</p>
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% else %}
|
||||
<ul class="versions-package-list" role="list">
|
||||
{% for ver in archive_versions %}
|
||||
<li class="versions-package-card glass-card fade-in">
|
||||
<div class="versions-package-head">
|
||||
<div class="pkg-version-meta">
|
||||
<span class="download-version">{{ ver.version }}</span>
|
||||
{% include "products/_release_channel_badge.html" with version=ver %}
|
||||
</div>
|
||||
{% if ver.package_resource_url %}
|
||||
<a href="{{ ver.package_resource_url }}" class="btn-ghost btn--sm" target="_blank" rel="noopener noreferrer">{{ package_resource_button_text }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if ver.release_notes %}
|
||||
<p class="versions-notes-body">{{ ver.release_notes }}</p>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
@@ -18,13 +18,13 @@
|
||||
<ol class="breadcrumb-list" role="list">
|
||||
<li><a href="{% url 'pages:home' %}">Home</a></li>
|
||||
<li aria-hidden="true" class="breadcrumb-sep">›</li>
|
||||
<li><a href="{% url 'products:overview' %}">Products</a></li>
|
||||
<li><a href="{% url 'products:overview' %}">Projects</a></li>
|
||||
<li aria-hidden="true" class="breadcrumb-sep">›</li>
|
||||
<li aria-current="page">{{ main_product.name }}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="page-hero-content">
|
||||
<div class="section-badge">Product</div>
|
||||
<div class="section-badge">Project</div>
|
||||
<h1 class="page-hero-title" id="main-product-heading">{{ main_product.name }}</h1>
|
||||
<p class="page-hero-subtitle">{{ main_product.short_description }}</p>
|
||||
</div>
|
||||
@@ -48,7 +48,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% include "products/_releases_section.html" %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -56,7 +55,7 @@
|
||||
{% include "partials/_page_videos.html" with videos=product_videos %}
|
||||
|
||||
{% if articles %}
|
||||
<section class="section" aria-label="Product articles">
|
||||
<section class="section" aria-label="Project articles">
|
||||
<div class="container">
|
||||
{% include "products/_article_list.html" %}
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Products{% endblock %}
|
||||
{% block title %}Projects{% endblock %}
|
||||
{% block meta_description %}Explore com2care tools for collaborative medical imaging, radiomics, reproducible workflows, and research communication.{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
@@ -13,16 +13,16 @@
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="page-hero-content">
|
||||
<div class="section-badge">Software Suite</div>
|
||||
<h1 class="page-hero-title" id="products-overview-heading">Our Products</h1>
|
||||
<p class="page-hero-subtitle">Advanced tools for medical imaging research and radiomics analysis.</p>
|
||||
<div class="section-badge">Research Portfolio</div>
|
||||
<h1 class="page-hero-title" id="products-overview-heading">Our Projects</h1>
|
||||
<p class="page-hero-subtitle">Collaborative work in medical imaging research and radiomics analysis.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" aria-labelledby="products-list-heading">
|
||||
<div class="container">
|
||||
<h2 class="sr-only" id="products-list-heading">Product List</h2>
|
||||
<h2 class="sr-only" id="products-list-heading">Project List</h2>
|
||||
{% if main_products %}
|
||||
<div class="products-overview-grid">
|
||||
{% for product in main_products %}
|
||||
@@ -35,7 +35,7 @@
|
||||
<div class="product-overview-body">
|
||||
<h2 class="product-overview-title">{{ product.name }}</h2>
|
||||
<p class="product-overview-short">{{ product.short_description }}</p>
|
||||
<p class="product-overview-desc" data-readmore="110">{{ product.description }}</p>
|
||||
<div class="product-overview-desc rich-content" data-readmore="110">{{ product.rendered_description }}</div>
|
||||
<a href="{{ product.get_absolute_url }}" class="btn-primary">Explore {{ product.name }}</a>
|
||||
</div>
|
||||
{% with subs=product.sub_products.all %}
|
||||
@@ -64,7 +64,7 @@
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="empty-state-block glass-card">
|
||||
<p>No products available at this time. Check back soon.</p>
|
||||
<p>No projects available at this time. Check back soon.</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<ol class="breadcrumb-list" role="list">
|
||||
<li><a href="{% url 'pages:home' %}">Home</a></li>
|
||||
<li aria-hidden="true" class="breadcrumb-sep">›</li>
|
||||
<li><a href="{% url 'products:overview' %}">Products</a></li>
|
||||
<li><a href="{% url 'products:overview' %}">Projects</a></li>
|
||||
<li aria-hidden="true" class="breadcrumb-sep">›</li>
|
||||
<li><a href="{{ main_product.get_absolute_url }}">{{ main_product.name }}</a></li>
|
||||
<li aria-hidden="true" class="breadcrumb-sep">›</li>
|
||||
@@ -47,7 +47,6 @@
|
||||
<div class="rich-content" data-readmore="220">{{ sub_product.rendered_description }}</div>
|
||||
</div>
|
||||
|
||||
{% include "products/_releases_section.html" %}
|
||||
|
||||
{% include "partials/_page_videos.html" with videos=product_videos %}
|
||||
|
||||
@@ -72,7 +71,7 @@
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<p class="sidebar-empty">No other modules in this product.</p>
|
||||
<p class="sidebar-empty">No other modules in this project.</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<a href="{{ main_product.get_absolute_url }}" class="btn-ghost sidebar-back-btn">
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Older releases — {% if sub_product %}{{ sub_product.name }} — {% endif %}{{ main_product.name }}{% endblock %}
|
||||
{% block meta_description %}Archived releases{% if sub_product %} for {{ sub_product.name }}{% else %} for {{ main_product.name }}{% endif %}.{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="page-hero" aria-labelledby="versions-heading">
|
||||
<div class="page-hero-blobs" aria-hidden="true">
|
||||
<div class="blob blob--1"></div>
|
||||
<div class="blob blob--2"></div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||
<ol class="breadcrumb-list" role="list">
|
||||
<li><a href="{% url 'pages:home' %}">Home</a></li>
|
||||
<li aria-hidden="true" class="breadcrumb-sep">›</li>
|
||||
<li><a href="{% url 'products:overview' %}">Products</a></li>
|
||||
<li aria-hidden="true" class="breadcrumb-sep">›</li>
|
||||
<li><a href="{{ main_product.get_absolute_url }}">{{ main_product.name }}</a></li>
|
||||
{% if sub_product %}
|
||||
<li aria-hidden="true" class="breadcrumb-sep">›</li>
|
||||
<li><a href="{{ sub_product.get_absolute_url }}">{{ sub_product.name }}</a></li>
|
||||
{% endif %}
|
||||
<li aria-hidden="true" class="breadcrumb-sep">›</li>
|
||||
<li aria-current="page">Older releases</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="page-hero-content">
|
||||
<div class="section-badge">{% if sub_product %}{{ sub_product.name }}{% else %}{{ main_product.name }}{% endif %}</div>
|
||||
<h1 class="page-hero-title" id="versions-heading">Older releases</h1>
|
||||
<p class="page-hero-subtitle">Archived versions of this {% if sub_product %}module{% else %}product{% endif %}.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section versions-archive-section">
|
||||
<div class="container">
|
||||
{% include "products/_versions_archive_body.html" %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user