feat: contact form and more edits
This commit is contained in:
+5
-2
@@ -4,8 +4,11 @@
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="description" content="{% block meta_description %}Tecvico Corp — Advanced Medical Imaging & Radiomics Solutions{% endblock %}" />
|
||||
<title>{% block title %}Tecvico Corp{% endblock %} | Tecvico</title>
|
||||
<meta name="description" content="{% block meta_description %}Radiuma — Advanced Medical Imaging & Radiomics Solutions{% endblock %}" />
|
||||
<title>{% block title %}Radiuma{% endblock %} | Radiuma</title>
|
||||
<link rel="icon" href="{% static 'images/favicon-16.png' %}" type="image/png" sizes="16x16" />
|
||||
<link rel="icon" href="{% static 'images/favicon-32.png' %}" type="image/png" sizes="32x32" />
|
||||
<link rel="apple-touch-icon" href="{% static 'images/favicon-180.png' %}" sizes="180x180" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet" />
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}What is Tecvico{% endblock %}
|
||||
{% block meta_description %}Learn about Tecvico Corp and ViSERA — Visualized & Standardized Environment for Radiomics Analysis, developed at UBC and BC Cancer Research Institute.{% endblock %}
|
||||
{% block title %}What is Radiuma{% endblock %}
|
||||
{% block meta_description %}Learn about Radiuma and Radiuma — Visualized & Standardized Environment for Radiomics Analysis, developed at UBC and BC Cancer Research Institute.{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
@@ -10,11 +10,13 @@
|
||||
<div class="page-hero-blobs" aria-hidden="true">
|
||||
<div class="blob blob--1"></div>
|
||||
<div class="blob blob--2"></div>
|
||||
<img src="{% static 'images/blob-blue-2.svg' %}" class="blob-img blob-img--page-hero" alt="" />
|
||||
<img src="{% static 'images/abstract-shapes-2.svg' %}" class="blob-img blob-img--page-corner" alt="" />
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="page-hero-content">
|
||||
<div class="section-badge">About</div>
|
||||
<h1 class="page-hero-title" id="page-hero-heading">What is Tecvico?</h1>
|
||||
<h1 class="page-hero-title" id="page-hero-heading">What is Radiuma?</h1>
|
||||
<p class="page-hero-subtitle">
|
||||
Visualized & Standardized Environment for Radiomics Analysis
|
||||
</p>
|
||||
@@ -49,7 +51,7 @@
|
||||
<div class="standard-badge">IBSI 1.0</div>
|
||||
<h3 class="standard-title">Radiomic Feature Extraction</h3>
|
||||
<p class="standard-desc">
|
||||
ViSERA is a python-based open-source package that enables standardized and
|
||||
Radiuma is a python-based open-source package that enables standardized and
|
||||
reproducible radiomic feature extraction in compliance with the Image Biomarker
|
||||
Standardization Initiative (IBSI 1.0).
|
||||
</p>
|
||||
@@ -67,7 +69,7 @@
|
||||
<div class="standard-badge">Python</div>
|
||||
<h3 class="standard-title">Open Source</h3>
|
||||
<p class="standard-desc">
|
||||
ViSERA is a major, entirely-revamped upgrade to the original SERA (Matlab-based),
|
||||
Radiuma is a major, entirely-revamped upgrade to the original SERA (Matlab-based),
|
||||
now built on Python for broader accessibility and community contribution.
|
||||
</p>
|
||||
</div>
|
||||
@@ -75,7 +77,7 @@
|
||||
<div class="standard-badge">End-to-End</div>
|
||||
<h3 class="standard-title">Standardized Workflows</h3>
|
||||
<p class="standard-desc">
|
||||
ViSERA employs a number of popular image processing algorithms to create
|
||||
Radiuma employs a number of popular image processing algorithms to create
|
||||
end-to-end standardized workflows for consistent, reproducible research results.
|
||||
</p>
|
||||
</div>
|
||||
@@ -83,6 +85,26 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" aria-labelledby="screenshots-about-heading">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<div class="section-badge">Interface</div>
|
||||
<h2 class="section-title" id="screenshots-about-heading">Radiuma in Action</h2>
|
||||
</div>
|
||||
<div class="about-screenshots-grid">
|
||||
<div class="screenshot-item screenshot-item--featured fade-in">
|
||||
<img src="{% static 'images/screenshot-11.jpg' %}" alt="Radiuma multi-modal viewer" loading="lazy" />
|
||||
</div>
|
||||
<div class="screenshot-item fade-in">
|
||||
<img src="{% static 'images/screenshot-9.jpg' %}" alt="Radiuma settings panel" loading="lazy" />
|
||||
</div>
|
||||
<div class="screenshot-item fade-in">
|
||||
<img src="{% static 'images/screenshot-10.jpg' %}" alt="Radiuma analysis results" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" aria-labelledby="history-heading">
|
||||
<div class="container">
|
||||
<div class="history-block glass-card fade-in">
|
||||
@@ -90,12 +112,12 @@
|
||||
<div class="section-badge">History</div>
|
||||
<h2 id="history-heading">Our Origins</h2>
|
||||
<p>
|
||||
Tecvico (formerly known as Visera) has been developing since 2021 by the
|
||||
Radiuma has been developing since 2021 by the
|
||||
Quantitative Radiomolecular Imaging and Therapy (Qurit) lab & program at the
|
||||
University of British Columbia & BC Cancer Research Institute, Vancouver, BC, Canada.
|
||||
</p>
|
||||
<p>
|
||||
Our mission is to bridge the gap between cutting-edge radiomics research and
|
||||
Radiuma's mission is to bridge the gap between cutting-edge radiomics research and
|
||||
practical clinical application by providing standardized, reproducible, and
|
||||
user-friendly software tools.
|
||||
</p>
|
||||
|
||||
+246
-47
@@ -2,7 +2,7 @@
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Contact{% endblock %}
|
||||
{% block meta_description %}Contact Tecvico Corp — support for ViSERA software and general inquiries.{% endblock %}
|
||||
{% block meta_description %}Contact Radiuma — support for Radiuma software and general inquiries.{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
@@ -15,66 +15,265 @@
|
||||
<div class="page-hero-content">
|
||||
<div class="section-badge">Get in Touch</div>
|
||||
<h1 class="page-hero-title" id="contact-heading">Contact Us</h1>
|
||||
<p class="page-hero-subtitle">Support for ViSERA software is available via email and Discord.</p>
|
||||
<p class="page-hero-subtitle">Have a question or want to reach the Radiuma team? Fill out the form or contact us directly below.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" aria-labelledby="contact-details-heading">
|
||||
<section class="section" aria-labelledby="contact-form-heading">
|
||||
<div class="container">
|
||||
<h2 class="sr-only" id="contact-details-heading">Contact Details</h2>
|
||||
<div class="contact-grid">
|
||||
<div class="contact-layout">
|
||||
|
||||
<div class="contact-card glass-card fade-in">
|
||||
<div class="contact-icon" aria-hidden="true">
|
||||
<svg width="32" height="32" viewBox="0 0 32 32" fill="none">
|
||||
<path d="M5 8C5 6.895 5.895 6 7 6H25C26.105 6 27 6.895 27 8V22C27 23.105 26.105 24 25 24H7C5.895 24 5 23.105 5 22V8Z" stroke="currentColor" stroke-width="1.5"/>
|
||||
<path d="M5 9L16 16L27 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="contact-card-title">Email Support</h3>
|
||||
<p class="contact-card-desc">
|
||||
For software support and general inquiries, reach us at:
|
||||
</p>
|
||||
<a href="mailto:support@tecvico.com" class="contact-email-link">
|
||||
support@tecvico.com
|
||||
</a>
|
||||
<div class="contact-form-wrap glass-card fade-in">
|
||||
<h2 class="contact-form-title" id="contact-form-heading">Send a Message</h2>
|
||||
<form id="contactForm" novalidate action="{% url 'pages:contact' %}" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_name">Full Name <span class="required-star">*</span></label>
|
||||
{{ form.name }}
|
||||
<span class="form-field-error" data-field="name"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_title">Subject / Title <span class="required-star">*</span></label>
|
||||
{{ form.title }}
|
||||
<span class="form-field-error" data-field="title"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_description">Message <span class="required-star">*</span></label>
|
||||
{{ form.description }}
|
||||
<span class="form-field-error" data-field="description"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_email">Email <span class="optional-label">(optional)</span></label>
|
||||
{{ form.email }}
|
||||
<span class="form-field-error" data-field="email"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group form-group--captcha">
|
||||
<label for="id_captcha">
|
||||
Verification: what is <strong id="captchaQuestion">{{ captcha_question }}</strong>?
|
||||
<span class="required-star">*</span>
|
||||
</label>
|
||||
<input type="number" name="captcha_answer" id="id_captcha"
|
||||
placeholder="Answer" min="0" max="18" required
|
||||
class="captcha-input" />
|
||||
<span class="form-field-error" data-field="captcha"></span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-primary btn-submit" id="submitBtn">
|
||||
<span class="btn-label">Send Message</span>
|
||||
<span class="btn-spinner" hidden aria-hidden="true">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"/>
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="contact-card glass-card fade-in">
|
||||
<div class="contact-icon" aria-hidden="true">
|
||||
<svg width="32" height="32" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057.1 18.08.114 18.1.133 18.11a19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03z"/>
|
||||
</svg>
|
||||
<aside class="contact-sidebar">
|
||||
<div class="contact-card glass-card fade-in">
|
||||
<div class="contact-icon" aria-hidden="true">
|
||||
<svg width="28" height="28" viewBox="0 0 32 32" fill="none">
|
||||
<path d="M5 8C5 6.895 5.895 6 7 6H25C26.105 6 27 6.895 27 8V22C27 23.105 26.105 24 25 24H7C5.895 24 5 23.105 5 22V8Z" stroke="currentColor" stroke-width="1.5"/>
|
||||
<path d="M5 9L16 16L27 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="contact-card-title">Email Support</h3>
|
||||
<p class="contact-card-desc">For direct software support:</p>
|
||||
<a href="mailto:support@visera.ca" class="contact-email-link">support@visera.ca</a>
|
||||
</div>
|
||||
<h3 class="contact-card-title">Discord Community</h3>
|
||||
<p class="contact-card-desc">
|
||||
Join our Discord server for community support, feature discussions, and announcements.
|
||||
</p>
|
||||
<a href="https://discord.gg/9XxA6pV9hb" class="btn-primary" target="_blank" rel="noopener noreferrer">
|
||||
Join Discord Forum
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="contact-card glass-card fade-in">
|
||||
<div class="contact-icon" aria-hidden="true">
|
||||
<svg width="32" height="32" viewBox="0 0 32 32" fill="none">
|
||||
<path d="M16 3C11.029 3 7 7.029 7 12C7 19 16 29 16 29C16 29 25 19 25 12C25 7.029 20.971 3 16 3Z" stroke="currentColor" stroke-width="1.5"/>
|
||||
<circle cx="16" cy="12" r="3" stroke="currentColor" stroke-width="1.5"/>
|
||||
</svg>
|
||||
<div class="contact-card glass-card fade-in">
|
||||
<div class="contact-icon" aria-hidden="true">
|
||||
<svg width="28" height="28" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057.1 18.08.114 18.1.133 18.11a19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="contact-card-title">Discord Community</h3>
|
||||
<p class="contact-card-desc">Join for community support and announcements.</p>
|
||||
<a href="https://discord.gg/9XxA6pV9hb" class="btn-primary btn--sm" target="_blank" rel="noopener noreferrer">Join Discord</a>
|
||||
</div>
|
||||
<h3 class="contact-card-title">Office Address</h3>
|
||||
<address class="contact-address">
|
||||
<p>BC Cancer Research Center</p>
|
||||
<p>675 West 10th Ave</p>
|
||||
<p>Office 6-112</p>
|
||||
<p>Vancouver, BC, V5Z 1L3</p>
|
||||
<p>Canada</p>
|
||||
</address>
|
||||
</div>
|
||||
|
||||
<div class="contact-card glass-card fade-in">
|
||||
<div class="contact-icon" aria-hidden="true">
|
||||
<svg width="28" height="28" viewBox="0 0 32 32" fill="none">
|
||||
<path d="M16 3C11.029 3 7 7.029 7 12C7 19 16 29 16 29C16 29 25 19 25 12C25 7.029 20.971 3 16 3Z" stroke="currentColor" stroke-width="1.5"/>
|
||||
<circle cx="16" cy="12" r="3" stroke="currentColor" stroke-width="1.5"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="contact-card-title">Office</h3>
|
||||
<address class="contact-address">
|
||||
<p>BC Cancer Research Center</p>
|
||||
<p>675 West 10th Ave, Office 6-112</p>
|
||||
<p>Vancouver, BC, V5Z 1L3</p>
|
||||
<p>Canada</p>
|
||||
</address>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div id="noEmailModal" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="noEmailTitle" hidden>
|
||||
<div class="modal-box glass-card">
|
||||
<div class="modal-icon-wrap">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
||||
<path d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="modal-title" id="noEmailTitle">No reply address</h3>
|
||||
<p class="modal-body">You haven't provided an email address. Without it, we won't be able to respond to your message. Would you like to add one, or send without a reply address?</p>
|
||||
<div class="modal-actions">
|
||||
<button class="btn-ghost" id="modalAddEmail">Add Email</button>
|
||||
<button class="btn-primary" id="modalSendAnyway">Send Without Email</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="successModal" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="successTitle" hidden>
|
||||
<div class="modal-box glass-card">
|
||||
<div class="modal-icon-wrap modal-icon-wrap--success">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
||||
<path d="M22 11.08V12a10 10 0 11-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="modal-title" id="successTitle">Message Sent!</h3>
|
||||
<p class="modal-body">Thank you for reaching out. We've received your message and will get back to you as soon as possible.</p>
|
||||
<button class="btn-primary" id="successClose">Done</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="errorModal" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="errorTitle" hidden>
|
||||
<div class="modal-box glass-card">
|
||||
<div class="modal-icon-wrap modal-icon-wrap--error">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
||||
<circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="modal-title" id="errorTitle">Something Went Wrong</h3>
|
||||
<p class="modal-body" id="errorModalMsg">Please check your answers and try again.</p>
|
||||
<button class="btn-ghost" id="errorClose">Try Again</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_js %}
|
||||
<script>
|
||||
(function () {
|
||||
const form = document.getElementById('contactForm');
|
||||
if (!form) return;
|
||||
|
||||
const emailField = form.querySelector('#id_email');
|
||||
const submitBtn = form.querySelector('#submitBtn');
|
||||
const btnLabel = submitBtn.querySelector('.btn-label');
|
||||
const btnSpinner = submitBtn.querySelector('.btn-spinner');
|
||||
|
||||
function showModal(id) {
|
||||
const el = document.getElementById(id);
|
||||
if (el) { el.hidden = false; el.focus(); }
|
||||
}
|
||||
function hideModal(id) {
|
||||
const el = document.getElementById(id);
|
||||
if (el) el.hidden = true;
|
||||
}
|
||||
|
||||
function clearErrors() {
|
||||
form.querySelectorAll('.form-field-error').forEach(el => { el.textContent = ''; });
|
||||
form.querySelectorAll('.form-group').forEach(el => el.classList.remove('has-error'));
|
||||
}
|
||||
|
||||
function showErrors(errors) {
|
||||
clearErrors();
|
||||
Object.entries(errors).forEach(([field, msgs]) => {
|
||||
const span = form.querySelector(`[data-field="${field}"]`);
|
||||
if (span) {
|
||||
span.textContent = msgs[0] || '';
|
||||
span.closest('.form-group')?.classList.add('has-error');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function setLoading(on) {
|
||||
submitBtn.disabled = on;
|
||||
btnLabel.hidden = on;
|
||||
btnSpinner.hidden = !on;
|
||||
}
|
||||
|
||||
async function submitForm() {
|
||||
clearErrors();
|
||||
setLoading(true);
|
||||
const formData = new FormData(form);
|
||||
try {
|
||||
const res = await fetch(form.action || window.location.href, {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
headers: { 'X-Requested-With': 'XMLHttpRequest' },
|
||||
});
|
||||
const data = await res.json();
|
||||
if (data.success) {
|
||||
form.reset();
|
||||
showModal('successModal');
|
||||
} else {
|
||||
if (data.errors) showErrors(data.errors);
|
||||
if (data.errors?.captcha) {
|
||||
document.getElementById('errorModalMsg').textContent = data.errors.captcha[0];
|
||||
showModal('errorModal');
|
||||
} else if (!res.ok) {
|
||||
showModal('errorModal');
|
||||
}
|
||||
if (data.captcha_question) {
|
||||
document.getElementById('captchaQuestion').textContent = data.captcha_question;
|
||||
const captchaInput = form.querySelector('#id_captcha');
|
||||
if (captchaInput) captchaInput.value = '';
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
showModal('errorModal');
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
}
|
||||
|
||||
form.addEventListener('submit', e => {
|
||||
e.preventDefault();
|
||||
if (!emailField.value.trim()) {
|
||||
showModal('noEmailModal');
|
||||
} else {
|
||||
submitForm();
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById('modalAddEmail')?.addEventListener('click', () => {
|
||||
hideModal('noEmailModal');
|
||||
emailField.focus();
|
||||
});
|
||||
|
||||
document.getElementById('modalSendAnyway')?.addEventListener('click', () => {
|
||||
hideModal('noEmailModal');
|
||||
submitForm();
|
||||
});
|
||||
|
||||
document.getElementById('successClose')?.addEventListener('click', () => hideModal('successModal'));
|
||||
document.getElementById('errorClose')?.addEventListener('click', () => hideModal('errorModal'));
|
||||
|
||||
document.querySelectorAll('.modal-overlay').forEach(overlay => {
|
||||
overlay.addEventListener('click', e => {
|
||||
if (e.target === overlay) overlay.hidden = true;
|
||||
});
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', e => {
|
||||
if (e.key === 'Escape') {
|
||||
document.querySelectorAll('.modal-overlay').forEach(m => { m.hidden = true; });
|
||||
}
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Downloads{% endblock %}
|
||||
{% block meta_description %}Download ViSERA by Tecvico — available for Windows, macOS, and Linux.{% endblock %}
|
||||
{% block meta_description %}Download Radiuma by Radiuma — available for Windows, macOS, and Linux.{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
@@ -10,12 +10,13 @@
|
||||
<div class="page-hero-blobs" aria-hidden="true">
|
||||
<div class="blob blob--1"></div>
|
||||
<div class="blob blob--2"></div>
|
||||
<img src="{% static 'images/modern-shape.svg' %}" class="blob-img blob-img--downloads" alt="" />
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="page-hero-content">
|
||||
<div class="section-badge">Software</div>
|
||||
<h1 class="page-hero-title" id="downloads-heading">Downloads</h1>
|
||||
<p class="page-hero-subtitle">Download the latest version of ViSERA for your platform.</p>
|
||||
<p class="page-hero-subtitle">Download the latest version of Radiuma for your platform.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -27,9 +28,7 @@
|
||||
|
||||
<div class="download-card glass-card fade-in {% if not windows_items %}download-card--unavailable{% endif %}">
|
||||
<div class="download-platform-icon" aria-hidden="true">
|
||||
<svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M0 3.449L9.75 2.1v9.451H0m10.949-9.602L24 0v11.4H10.949M0 12.6h9.75v9.451L0 20.699M10.949 12.6H24V24l-12.9-1.801"/>
|
||||
</svg>
|
||||
<img src="{% static 'images/icon-windows.svg' %}" alt="Windows" width="56" height="56" class="platform-icon" />
|
||||
</div>
|
||||
<h3 class="download-platform-name">Windows</h3>
|
||||
<p class="download-platform-desc">Windows 10 and up (64-bit)</p>
|
||||
@@ -40,9 +39,7 @@
|
||||
{% if item.description %}<p class="download-item-desc">{{ item.description }}</p>{% endif %}
|
||||
{% if item.download_url and item.download_url != '#' %}
|
||||
<a href="{{ item.download_url }}" class="btn-primary download-btn" download>
|
||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" aria-hidden="true">
|
||||
<path d="M9 2V12M9 12L5 8M9 12L13 8M3 15H15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
<img src="{% static 'images/icon-download.svg' %}" width="18" height="18" alt="" aria-hidden="true" class="btn-icon-img" />
|
||||
Download
|
||||
</a>
|
||||
{% endif %}
|
||||
@@ -55,9 +52,7 @@
|
||||
|
||||
<div class="download-card glass-card fade-in {% if not macos_items %}download-card--unavailable{% endif %}">
|
||||
<div class="download-platform-icon" aria-hidden="true">
|
||||
<svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.8-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"/>
|
||||
</svg>
|
||||
<img src="{% static 'images/icon-macos.svg' %}" alt="macOS" width="56" height="56" class="platform-icon" />
|
||||
</div>
|
||||
<h3 class="download-platform-name">macOS</h3>
|
||||
<p class="download-platform-desc">macOS 11 Big Sur and up</p>
|
||||
@@ -68,9 +63,7 @@
|
||||
{% if item.description %}<p class="download-item-desc">{{ item.description }}</p>{% endif %}
|
||||
{% if item.download_url and item.download_url != '#' %}
|
||||
<a href="{{ item.download_url }}" class="btn-primary download-btn" download>
|
||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" aria-hidden="true">
|
||||
<path d="M9 2V12M9 12L5 8M9 12L13 8M3 15H15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
<img src="{% static 'images/icon-download.svg' %}" width="18" height="18" alt="" aria-hidden="true" class="btn-icon-img" />
|
||||
Download
|
||||
</a>
|
||||
{% endif %}
|
||||
@@ -83,9 +76,7 @@
|
||||
|
||||
<div class="download-card glass-card fade-in {% if not linux_items %}download-card--unavailable{% endif %}">
|
||||
<div class="download-platform-icon" aria-hidden="true">
|
||||
<svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M12.504 0c-.155 0-.315.008-.48.021-4.226.333-3.105 4.807-3.17 6.298-.076 1.092-.3 1.953-1.05 3.02-.885 1.051-2.127 2.75-2.716 4.521-.278.832-.41 1.684-.287 2.489a.424.424 0 00-.11.135c-.26.268-.45.6-.663.839-.199.199-.485.267-.797.4-.313.136-.658.269-.864.68-.09.189-.136.394-.132.602 0 .199.027.4.055.536.058.399.116.728.04.97-.249.68-.28 1.145-.106 1.484.174.334.535.47.94.601.81.2 1.91.135 2.774.6.926.466 1.866.67 2.616.47.526-.116.97-.464 1.208-.946.587-.003 1.23-.EraseINIT.3.337.572.95.23 1.681-.078.277-.21.557-.303.815-.125.35-.169.63-.046.875.315.648 1.086.698 1.728.hyperparameter698.256 0 .504-.034.72-.046.372-.022.626.026.783.17.428.39.405 1.353.504 2.408.096.99.184 2.023.618 2.813.22.391.528.717.938.939.41.22.915.316 1.44.282.52-.033 1.092-.218 1.544-.668.296-.296.522-.723.58-1.226.029-.248.017-.51-.02-.77-.15-1.168.056-2.22.617-2.82.274-.294.548-.452.748-.606.238-.186.427-.41.554-.676.247-.517.194-1.107-.026-1.633-.11-.271-.238-.517-.324-.773-.148-.448-.172-.913.053-1.377.226-.467.67-.876 1.02-1.428a.424.424 0 00.11-.134c.25-.43.31-.915.245-1.395-.065-.476-.245-.937-.49-1.37-.245-.436-.54-.838-.807-1.278-.254-.428-.47-.903-.522-1.445-.1-.994.268-2.1.368-3.158.05-.53.04-1.046-.059-1.518-.097-.47-.3-.9-.616-1.24-.636-.68-1.608-.904-2.527-.974-.45-.035-.899-.026-1.334.026zm.042 1.174c.42-.047.852-.056 1.277-.022.812.062 1.59.262 2.047.758.228.245.37.554.44.918.073.366.08.78.03 1.233-.103 1.055-.486 2.198-.36 3.34.061.567.302 1.09.575 1.56.27.46.572.876.822 1.319.25.443.43.904.483 1.362.053.45.003.895-.2 1.269a.37.37 0 00-.099.11c-.35.56-.83.993-1.1 1.57-.28.587-.295 1.218-.12 1.822.088.3.215.585.33.869.217.526.253 1.015.066 1.4a1.088 1.088 0 01-.354.43c-.22.162-.502.322-.806.638-.7.742-.924 1.963-.756 3.254.028.207.038.414.013.605-.045.38-.19.688-.41.908-.33.335-.765.497-1.178.524-.414.027-.83-.054-1.14-.22-.315-.169-.54-.43-.691-.714-.358-.647-.445-1.572-.54-2.553-.1-1.012-.118-2.066-.67-2.593-.269-.247-.645-.345-1.117-.32-.232.014-.455.047-.677.047-.44 0-.836-.054-.97-.33-.065-.133-.073-.36.043-.688.1-.29.238-.586.292-.866.133-.676.05-1.313-.313-1.75-.364-.44-1.027-.604-1.718-.777-.69-.176-1.44-.396-1.582-.862-.092-.302-.06-.666.11-1.127.087-.23.097-.482.054-.727-.083-.499.053-.986.22-1.427.246-.66 1.463-2.382 2.39-3.479.87-1.044 1.15-2.02 1.22-3.167.063-1.26-.744-5.02 2.57-5.27z"/>
|
||||
</svg>
|
||||
<img src="{% static 'images/icon-linux.svg' %}" alt="Linux" width="56" height="56" class="platform-icon" />
|
||||
</div>
|
||||
<h3 class="download-platform-name">Linux</h3>
|
||||
<p class="download-platform-desc">Ubuntu 20.04+ and compatible distributions</p>
|
||||
@@ -96,9 +87,7 @@
|
||||
{% if item.description %}<p class="download-item-desc">{{ item.description }}</p>{% endif %}
|
||||
{% if item.download_url and item.download_url != '#' %}
|
||||
<a href="{{ item.download_url }}" class="btn-primary download-btn" download>
|
||||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" aria-hidden="true">
|
||||
<path d="M9 2V12M9 12L5 8M9 12L13 8M3 15H15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
<img src="{% static 'images/icon-download.svg' %}" width="18" height="18" alt="" aria-hidden="true" class="btn-icon-img" />
|
||||
Download
|
||||
</a>
|
||||
{% endif %}
|
||||
@@ -118,7 +107,7 @@
|
||||
<div class="info-block glass-card fade-in">
|
||||
<h2 id="reinstall-heading">Installation Notes</h2>
|
||||
<p>
|
||||
If you have installed an older version of ViSERA, you can install the new version
|
||||
If you have installed an older version of Radiuma, you can install the new version
|
||||
over it without removing the previous installation. However, if you encounter any
|
||||
problems, please remove the old version first before reinstalling.
|
||||
</p>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{% load static %}
|
||||
|
||||
{% block title %}FAQ{% endblock %}
|
||||
{% block meta_description %}Frequently asked questions about ViSERA by Tecvico — licensing, citation, system requirements, and more.{% endblock %}
|
||||
{% block meta_description %}Frequently asked questions about Radiuma by Radiuma — licensing, citation, system requirements, and more.{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
|
||||
+57
-23
@@ -2,7 +2,7 @@
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Home{% endblock %}
|
||||
{% block meta_description %}Tecvico Corp — A Powerful Workflow Generator for Standardized Radiomics Analysis and Medical Image Visualization.{% endblock %}
|
||||
{% block meta_description %}Radiuma — A Powerful Workflow Generator for Standardized Radiomics Analysis and Medical Image Visualization.{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
@@ -11,25 +11,33 @@
|
||||
<div class="blob blob--1"></div>
|
||||
<div class="blob blob--2"></div>
|
||||
<div class="blob blob--3"></div>
|
||||
<img src="{% static 'images/blob-blue-1.svg' %}" class="blob-img blob-img--hero-left" alt="" />
|
||||
<img src="{% static 'images/abstract-shapes.svg' %}" class="blob-img blob-img--hero-right" alt="" />
|
||||
</div>
|
||||
<div class="container hero-content">
|
||||
<div class="hero-badge">Developing since 2021</div>
|
||||
<h1 class="hero-title" id="hero-heading">
|
||||
Tecvico,
|
||||
<br />
|
||||
<span class="gradient-text">A Powerful Workflow Generator</span>
|
||||
</h1>
|
||||
<p class="hero-subtitle">
|
||||
for Standardized Radiomics Analysis and Medical Image Visualization
|
||||
</p>
|
||||
<p class="hero-description">
|
||||
ViSERA is a free, open-source software specialized for visualization, processing,
|
||||
segmentation, registration, fusion and analysis of medical and biomedical images,
|
||||
including radiomics and machine learning analysis.
|
||||
</p>
|
||||
<div class="hero-actions">
|
||||
<a href="{% url 'pages:downloads' %}" class="btn-primary">Download Now</a>
|
||||
<a href="{% url 'pages:about' %}" class="btn-ghost">About Tecvico</a>
|
||||
<div class="hero-text">
|
||||
<div class="hero-badge">Developing since 2021</div>
|
||||
<h1 class="hero-title" id="hero-heading">
|
||||
Radiuma,
|
||||
<br />
|
||||
<span class="gradient-text">A Powerful Workflow Generator</span>
|
||||
</h1>
|
||||
<p class="hero-subtitle">
|
||||
for Standardized Radiomics Analysis and Medical Image Visualization
|
||||
</p>
|
||||
<p class="hero-description">
|
||||
Radiuma is a free, open-source software specialized for visualization, processing,
|
||||
segmentation, registration, fusion and analysis of medical and biomedical images,
|
||||
including radiomics and machine learning analysis.
|
||||
</p>
|
||||
<div class="hero-actions">
|
||||
<a href="{% url 'pages:downloads' %}" class="btn-primary">Download Now</a>
|
||||
<a href="{% url 'pages:about' %}" class="btn-ghost">About Radiuma</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero-app-preview fade-in">
|
||||
<div class="hero-app-preview-glow" aria-hidden="true"></div>
|
||||
<img src="{% static 'images/screenshot-1.jpg' %}" alt="Radiuma application — main workflow view" loading="eager" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -86,6 +94,32 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section screenshots-section" aria-labelledby="screenshots-heading">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<div class="section-badge">Gallery</div>
|
||||
<h2 class="section-title" id="screenshots-heading">See Radiuma in Action</h2>
|
||||
<p class="section-desc">
|
||||
Explore Radiuma's powerful interface, workflow builder, and multi-modal image viewer.
|
||||
</p>
|
||||
</div>
|
||||
<div class="screenshots-grid">
|
||||
<div class="screenshot-item fade-in">
|
||||
<img src="{% static 'images/screenshot-2.jpg' %}" alt="Radiuma full workflow interface" loading="lazy" />
|
||||
</div>
|
||||
<div class="screenshot-item fade-in">
|
||||
<img src="{% static 'images/screenshot-3.png' %}" alt="Radiuma panel view" loading="lazy" />
|
||||
</div>
|
||||
<div class="screenshot-item fade-in">
|
||||
<img src="{% static 'images/screenshot-5.png' %}" alt="Radiuma segmentation view" loading="lazy" />
|
||||
</div>
|
||||
<div class="screenshot-item fade-in">
|
||||
<img src="{% static 'images/screenshot-8.jpg' %}" alt="Radiuma radiomics results" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% if nav_main_products %}
|
||||
<section class="section products-section" aria-labelledby="products-heading">
|
||||
<div class="container">
|
||||
@@ -123,14 +157,14 @@
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<div class="section-badge">Value Proposition</div>
|
||||
<h2 class="section-title" id="problems-heading">What Problems Does Tecvico Solve?</h2>
|
||||
<h2 class="section-title" id="problems-heading">What Problems Does Radiuma Solve?</h2>
|
||||
</div>
|
||||
<div class="problems-grid">
|
||||
<div class="problem-item glass-card fade-in">
|
||||
<div class="problem-number" aria-hidden="true">01</div>
|
||||
<h3 class="problem-title">Accessibility</h3>
|
||||
<p class="problem-desc">
|
||||
Tecvico provides a user-friendly interface and a wide range of tools, allowing
|
||||
Radiuma provides a user-friendly interface and a wide range of tools, allowing
|
||||
researchers to perform complex data analysis without extensive technical knowledge
|
||||
or programming expertise.
|
||||
</p>
|
||||
@@ -139,7 +173,7 @@
|
||||
<div class="problem-number" aria-hidden="true">02</div>
|
||||
<h3 class="problem-title">Integrated Tools</h3>
|
||||
<p class="problem-desc">
|
||||
Tecvico integrates a vast collection of tools and resources from various domains
|
||||
Radiuma integrates a vast collection of tools and resources from various domains
|
||||
of healthcare and medical imaging research in a common, unified environment.
|
||||
</p>
|
||||
</div>
|
||||
@@ -147,7 +181,7 @@
|
||||
<div class="problem-number" aria-hidden="true">03</div>
|
||||
<h3 class="problem-title">Flexibility</h3>
|
||||
<p class="problem-desc">
|
||||
Tecvico offers flexibility in terms of tool optimization and workflow customization
|
||||
Radiuma offers flexibility in terms of tool optimization and workflow customization
|
||||
to match your specific research requirements.
|
||||
</p>
|
||||
</div>
|
||||
@@ -171,7 +205,7 @@
|
||||
<div class="section-badge">Our Story</div>
|
||||
<h2 class="section-title" id="about-strip-heading">More to Know</h2>
|
||||
<p class="about-strip-text">
|
||||
Tecvico has been developing since 2021 by the Quantitative Radiomolecular Imaging
|
||||
Radiuma has been developing since 2021 by the Quantitative Radiomolecular Imaging
|
||||
and Therapy (Qurit) lab & program at the University of British Columbia &
|
||||
BC Cancer Research Institute, Vancouver, BC, Canada.
|
||||
</p>
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
<div class="footer-grid">
|
||||
|
||||
<div class="footer-brand-col">
|
||||
<a href="{% url 'pages:home' %}" class="footer-logo" aria-label="Tecvico home">
|
||||
<span class="brand-icon">T</span>
|
||||
<span class="brand-name">Tecvico</span>
|
||||
<a href="{% url 'pages:home' %}" class="footer-logo" aria-label="Radiuma home">
|
||||
<span class="brand-icon">R</span>
|
||||
<span class="brand-name">Radiuma</span>
|
||||
</a>
|
||||
<p class="footer-tagline">
|
||||
Advancing medical imaging and radiomics research through innovative, standardized software solutions.
|
||||
@@ -27,7 +27,7 @@
|
||||
<h3 class="footer-heading">Navigation</h3>
|
||||
<ul class="footer-links" role="list">
|
||||
<li><a href="{% url 'pages:home' %}">Home</a></li>
|
||||
<li><a href="{% url 'pages:about' %}">What is Tecvico</a></li>
|
||||
<li><a href="{% url 'pages:about' %}">What is Radiuma</a></li>
|
||||
<li><a href="{% url 'products:overview' %}">Products</a></li>
|
||||
<li><a href="{% url 'pages:downloads' %}">Downloads</a></li>
|
||||
<li><a href="{% url 'pages:faq' %}">FAQ</a></li>
|
||||
@@ -53,14 +53,14 @@
|
||||
<p>675 West 10th Ave, Office 6-112</p>
|
||||
<p>Vancouver, BC, V5Z 1L3</p>
|
||||
</address>
|
||||
<a href="mailto:support@tecvico.com" class="footer-email">support@tecvico.com</a>
|
||||
<a href="mailto:support@visera.ca" class="footer-email">support@visera.ca</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer-bottom">
|
||||
<p class="footer-copy">
|
||||
© {% now "Y" %} Tecvico Corp. All rights reserved. Formerly known as Visera.
|
||||
© {% now "Y" %} Radiuma. All rights reserved.
|
||||
</p>
|
||||
<p class="footer-credit">
|
||||
Developed at <a href="https://www.qurit.ca" target="_blank" rel="noopener noreferrer">Qurit Lab</a>,
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<nav class="navbar" id="navbar" role="navigation" aria-label="Main navigation">
|
||||
<div class="navbar-container">
|
||||
|
||||
<a href="{% url 'pages:home' %}" class="navbar-brand" aria-label="Tecvico home">
|
||||
<span class="brand-icon">T</span>
|
||||
<span class="brand-name">Tecvico</span>
|
||||
<a href="{% url 'pages:home' %}" class="navbar-brand" aria-label="Radiuma home">
|
||||
<span class="brand-icon">R</span>
|
||||
<span class="brand-name">Radiuma</span>
|
||||
</a>
|
||||
|
||||
<button class="navbar-toggle" id="navbarToggle" aria-expanded="false" aria-controls="navbarMenu" aria-label="Toggle navigation">
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{% url 'pages:about' %}" class="nav-link {% if request.resolver_match.url_name == 'about' %}active{% endif %}">
|
||||
What is Tecvico
|
||||
What is Radiuma
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
|
||||
|
||||
{% block title %}{{ main_product.name }}{% endblock %}
|
||||
{% block meta_description %}{{ main_product.short_description }}{% endblock %}
|
||||
|
||||
@@ -34,11 +35,13 @@
|
||||
<div class="container">
|
||||
<div class="product-detail-intro glass-card fade-in">
|
||||
<h2 class="sr-only" id="product-desc-heading">About {{ main_product.name }}</h2>
|
||||
{% if main_product.image %}
|
||||
<div class="product-detail-image">
|
||||
{% if main_product.image %}
|
||||
<img src="{{ main_product.image.url }}" alt="{{ main_product.name }}" loading="lazy" />
|
||||
{% else %}
|
||||
<img src="{% static 'images/logo.png' %}" alt="{{ main_product.name }} logo" loading="lazy" class="product-logo-img" />
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="product-detail-text">
|
||||
<p class="product-detail-desc">{{ main_product.description }}</p>
|
||||
</div>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Products{% endblock %}
|
||||
{% block meta_description %}Explore Tecvico's suite of medical imaging and radiomics software products.{% endblock %}
|
||||
{% block meta_description %}Explore Radiuma's suite of medical imaging and radiomics software products.{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user