This commit is contained in:
parent
18dc93fd96
commit
5b876de18a
8 changed files with 59 additions and 52 deletions
|
@ -3,8 +3,8 @@ import urlman
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import models, transaction
|
from django.db import models, transaction
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
from django.utils.text import slugify
|
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
from django.utils.text import slugify
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django_scopes import ScopedManager, scopes_disabled
|
from django_scopes import ScopedManager, scopes_disabled
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
{% extends "frontend/base.html" %}
|
{% extends "frontend/base.html" %}
|
||||||
{% load static i18n %}
|
{% load static i18n %}
|
||||||
{% load allauth account socialaccount %}
|
{% load allauth account socialaccount %}
|
||||||
|
|
||||||
{% block html_title %}
|
{% block html_title %}
|
||||||
{% translate "Sign in" %}
|
{% translate "Sign in" %}
|
||||||
{% endblock html_title %}
|
{% endblock html_title %}
|
||||||
|
|
||||||
{% block page_title %}
|
{% block page_title %}
|
||||||
{% translate "Welcome to Servala" %}
|
{% translate "Welcome to Servala" %}
|
||||||
{% endblock page_title %}
|
{% endblock page_title %}
|
||||||
|
|
||||||
{% block card_header %}
|
{% block card_header %}
|
||||||
<div class="card-header text-center py-4" style="background: linear-gradient(135deg, var(--bs-primary), #8B5CF6); border-radius: 0.5rem 0.5rem 0 0;">
|
<div class="card-header text-center py-4"
|
||||||
<img src="{% static 'img/Servala-4.png' %}" alt="Servala" class="mb-3" style="height: 70px;">
|
style="background: linear-gradient(135deg, var(--bs-primary), #8B5CF6);
|
||||||
|
border-radius: 0.5rem 0.5rem 0 0">
|
||||||
|
<img src="{% static 'img/Servala-4.png' %}"
|
||||||
|
alt="Servala"
|
||||||
|
class="mb-3"
|
||||||
|
style="height: 70px">
|
||||||
</div>
|
</div>
|
||||||
{% endblock card_header %}
|
{% endblock card_header %}
|
||||||
|
|
||||||
{% block card_content %}
|
{% block card_content %}
|
||||||
<!-- Main Sign In Section -->
|
<!-- Main Sign In Section -->
|
||||||
{% if SOCIALACCOUNT_ENABLED %}
|
{% if SOCIALACCOUNT_ENABLED %}
|
||||||
|
@ -24,9 +25,10 @@
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<div class="text-center mb-4">
|
<div class="text-center mb-4">
|
||||||
<h5 class="text-primary mb-2">{% translate "Ready to get started?" %}</h5>
|
<h5 class="text-primary mb-2">{% translate "Ready to get started?" %}</h5>
|
||||||
<p class="text-muted mb-0">{% translate "Sign in to access your managed service instances and the Servala service catalog" %}</p>
|
<p class="text-muted mb-0">
|
||||||
|
{% translate "Sign in to access your managed service instances and the Servala service catalog" %}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% for provider in socialaccount_providers %}
|
{% for provider in socialaccount_providers %}
|
||||||
{% provider_login_url provider process=process scope=scope auth_params=auth_params as href %}
|
{% provider_login_url provider process=process scope=scope auth_params=auth_params as href %}
|
||||||
<form method="post" action="{{ href }}">
|
<form method="post" action="{{ href }}">
|
||||||
|
@ -35,7 +37,9 @@
|
||||||
<button type="submit"
|
<button type="submit"
|
||||||
class="btn btn-primary btn-lg w-100 py-3 mb-4 fw-semibold"
|
class="btn btn-primary btn-lg w-100 py-3 mb-4 fw-semibold"
|
||||||
title="{{ provider.name }}"
|
title="{{ provider.name }}"
|
||||||
style="border-radius: 12px; box-shadow: 0 4px 15px rgba(154, 99, 236, 0.2); background: linear-gradient(135deg, var(--bs-primary), #8B5CF6);">
|
style="border-radius: 12px;
|
||||||
|
box-shadow: 0 4px 15px rgba(154, 99, 236, 0.2);
|
||||||
|
background: linear-gradient(135deg, var(--bs-primary), #8B5CF6)">
|
||||||
<span>{% translate "Sign in with VSHN Account" %}</span>
|
<span>{% translate "Sign in with VSHN Account" %}</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
@ -43,7 +47,6 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- Feature Preview & Learn More Section -->
|
<!-- Feature Preview & Learn More Section -->
|
||||||
<div class="mt-4 pt-3 border-top">
|
<div class="mt-4 pt-3 border-top">
|
||||||
<div class="row g-3 text-center">
|
<div class="row g-3 text-center">
|
||||||
|
@ -82,7 +85,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Alternative Login Options (Admin) -->
|
<!-- Alternative Login Options (Admin) -->
|
||||||
<div class="mt-4 pt-3 border-top text-center">
|
<div class="mt-4 pt-3 border-top text-center">
|
||||||
<small class="text-muted">
|
<small class="text-muted">
|
||||||
|
@ -96,7 +98,6 @@
|
||||||
</a>
|
</a>
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="collapse mt-3" id="login-form">
|
<div class="collapse mt-3" id="login-form">
|
||||||
<div class="card bg-light border-0 shadow-sm" style="border-radius: 12px;">
|
<div class="card bg-light border-0 shadow-sm" style="border-radius: 12px;">
|
||||||
<div class="card-body p-4">
|
<div class="card-body p-4">
|
||||||
|
|
|
@ -5,13 +5,18 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<link rel="stylesheet" href="{% static 'mazer/compiled/css/app.css' %}">
|
<link rel="stylesheet" href="{% static 'mazer/compiled/css/app.css' %}">
|
||||||
<link rel="stylesheet" href="{% static 'mazer/compiled/css/app-dark.css' %}">
|
<link rel="stylesheet"
|
||||||
|
href="{% static 'mazer/compiled/css/app-dark.css' %}">
|
||||||
<link rel="stylesheet" href="{% static 'mazer/compiled/css/iconly.css' %}">
|
<link rel="stylesheet" href="{% static 'mazer/compiled/css/iconly.css' %}">
|
||||||
<link rel="stylesheet" href="{% static 'css/servala.css' %}">
|
<link rel="stylesheet" href="{% static 'css/servala.css' %}">
|
||||||
<link rel="icon" type="image/x-icon" href="{% static 'img/favicon.ico' %}">
|
<link rel="icon" type="image/x-icon" href="{% static 'img/favicon.ico' %}">
|
||||||
<script src="{% static "js/htmx.min.js" %}" defer></script>
|
<script src="{% static "js/htmx.min.js" %}" defer></script>
|
||||||
</head>
|
</head>
|
||||||
<title>{% block html_title %}Dashboard{% endblock html_title %} – Servala</title>
|
<title>
|
||||||
|
{% block html_title %}
|
||||||
|
Dashboard
|
||||||
|
{% endblock html_title %}
|
||||||
|
– Servala</title>
|
||||||
</head>
|
</head>
|
||||||
<body hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'>
|
<body hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'>
|
||||||
<script src="{% static 'mazer/static/js/initTheme.js' %}"></script>
|
<script src="{% static 'mazer/static/js/initTheme.js' %}"></script>
|
||||||
|
|
|
@ -116,7 +116,8 @@
|
||||||
{% endblocktranslate %}
|
{% endblocktranslate %}
|
||||||
</p>
|
</p>
|
||||||
<div>
|
<div>
|
||||||
<a href="{{ account_href }}" target="_blank"
|
<a href="{{ account_href }}"
|
||||||
|
target="_blank"
|
||||||
class="btn btn-primary btn-lg icon icon-left btn-keycloak">
|
class="btn btn-primary btn-lg icon icon-left btn-keycloak">
|
||||||
<span class="mx-1">{% translate "VSHN Account Console" %}</span>
|
<span class="mx-1">{% translate "VSHN Account Console" %}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
{% if show_error %}
|
{% if show_error %}
|
||||||
<div class="{{ css_class }}">
|
<div class="{{ css_class }}">
|
||||||
{% if has_list %}
|
{% if has_list %}
|
||||||
{% if message %}{{ message }}{% endif %}
|
{% if message %}{{ message }}{% endif %}
|
||||||
<ul>
|
<ul>
|
||||||
{% for error in errors %}
|
{% for error in errors %}<li>{{ error }}</li>{% endfor %}
|
||||||
<li>{{ error }}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
</ul>
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ message }}
|
{{ message }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
<div class="alert alert-{{ message.tags }} alert-dismissible" id="auto-dismiss-alert-{{ forloop.counter0|default:'0' }}">
|
<div class="alert alert-{{ message.tags }} alert-dismissible"
|
||||||
|
id="auto-dismiss-alert-{{ forloop.counter0|default:'0' }}">
|
||||||
{{ message }}
|
{{ message }}
|
||||||
<button type="button"
|
<button type="button"
|
||||||
class="btn-close"
|
class="btn-close"
|
||||||
data-bs-dismiss="alert"
|
data-bs-dismiss="alert"
|
||||||
aria-label="Close"></button>
|
aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const alert = document.getElementById('auto-dismiss-alert-{{ forloop.counter0|default:'0' }}');
|
const alert = document.getElementById('auto-dismiss-alert-{{ forloop.counter0|default:'
|
||||||
|
0 ' }}');
|
||||||
if (alert && !alert.classList.contains('alert-danger')) {
|
if (alert && !alert.classList.contains('alert-danger')) {
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
let opacity = 1;
|
let opacity = 1;
|
||||||
|
@ -24,5 +25,5 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
}, 25);
|
}, 25);
|
||||||
}, 5000);
|
}, 5000);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
|
@ -3,6 +3,7 @@ Template filters for safe error formatting.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import html
|
import html
|
||||||
|
|
||||||
from django import template
|
from django import template
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ class SupportView(OrganizationViewMixin, FormView):
|
||||||
mark_safe(
|
mark_safe(
|
||||||
_(
|
_(
|
||||||
"There was an error submitting your support request. "
|
"There was an error submitting your support request. "
|
||||||
"Please try again or contact us directly at <a href=\"mailto:servala-support@vshn.ch\">servala-support@vshn.ch</a>."
|
'Please try again or contact us directly at <a href="mailto:servala-support@vshn.ch">servala-support@vshn.ch</a>.'
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue