Compare commits
No commits in common. "65fc303b724e8fc92b14f3983cd5f36ab511e64b" and "01eb3666996a16e862bab6db6a32e6bb428afc91" have entirely different histories.
65fc303b72
...
01eb366699
4 changed files with 41 additions and 85 deletions
|
|
@ -46,20 +46,22 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row match-height card-grid">
|
<div class="row">
|
||||||
{% for offering in service.offerings.all %}
|
{% for offering in service.offerings.all %}
|
||||||
<div class="col-6 col-lg-3 col-md-4">
|
<div class="col-6 col-lg-3 col-md-4">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header card-header-with-logo">
|
<div class="card-header d-flex align-items-center">
|
||||||
{% if offering.provider.logo %}
|
{% if offering.provider.logo %}
|
||||||
<img src="{{ offering.provider.logo.url }}"
|
<img src="{{ offering.provider.logo.url }}"
|
||||||
alt="{{ offering.provider.name }}">
|
alt="{{ offering.provider.name }}"
|
||||||
|
class="me-3"
|
||||||
|
style="max-width: 48px;
|
||||||
|
max-height: 48px">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-header-content">
|
<div class="d-flex flex-column">
|
||||||
<h4>{{ offering.provider.name }}</h4>
|
<h4 class="mb-0">{{ offering.provider.name }}</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{% if offering.description %}
|
{% if offering.description %}
|
||||||
<p class="card-text">{{ offering.description|urlize }}</p>
|
<p class="card-text">{{ offering.description|urlize }}</p>
|
||||||
|
|
@ -67,7 +69,6 @@
|
||||||
<p class="card-text">{{ offering.provider.description|urlize }}</p>
|
<p class="card-text">{{ offering.provider.description|urlize }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="card-footer d-flex justify-content-between">
|
<div class="card-footer d-flex justify-content-between">
|
||||||
<span></span>
|
<span></span>
|
||||||
<a href="offering/{{ offering.pk }}/" class="btn btn-light-primary">{% translate "Create Instance" %}</a>
|
<a href="offering/{{ offering.pk }}/" class="btn btn-light-primary">{% translate "Create Instance" %}</a>
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
{% endblock page_title_extra %}
|
{% endblock page_title_extra %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<section class="section">
|
<section class="section">
|
||||||
<div class="row match-height mb-5">
|
<div class="row">
|
||||||
<div class="col-12 col-md-5">
|
<div class="col-12 col-md-5">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
|
|
|
||||||
|
|
@ -16,25 +16,26 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row match-height card-grid service-cards-container mb-5">
|
<div class="row service-cards-container mb-5">
|
||||||
{% for service in services %}
|
{% for service in services %}
|
||||||
<div class="col-12 col-md-6 col-lg-3">
|
<div class="col-6 col-lg-3 col-md-4">
|
||||||
<div class="card">
|
<div class="card h-100 d-flex flex-column">
|
||||||
<div class="card-header card-header-with-logo">
|
<div class="card-header d-flex align-items-center">
|
||||||
{% if service.logo %}
|
{% if service.logo %}
|
||||||
<img src="{{ service.logo.url }}"
|
<img src="{{ service.logo.url }}"
|
||||||
alt="{{ service.name }}">
|
alt="{{ service.name }}"
|
||||||
|
class="me-3"
|
||||||
|
style="max-width: 48px;
|
||||||
|
max-height: 48px">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-header-content">
|
<div class="d-flex flex-column">
|
||||||
<h4>{{ service.name }}</h4>
|
<h4 class="mb-0">{{ service.name }}</h4>
|
||||||
<small class="text-muted">{{ service.category }}</small>
|
<small class="text-muted">{{ service.category }}</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
|
||||||
<div class="card-body flex-grow-1">
|
<div class="card-body flex-grow-1">
|
||||||
{% if service.description %}<p class="card-text">{{ service.description|urlize }}</p>{% endif %}
|
{% if service.description %}<p class="card-text">{{ service.description|urlize }}</p>{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="card-footer d-flex justify-content-between align-items-center gap-2">
|
<div class="card-footer d-flex justify-content-between align-items-center gap-2">
|
||||||
{% if service.featured_links %}
|
{% if service.featured_links %}
|
||||||
{% with featured_link=service.featured_links.0 %}
|
{% with featured_link=service.featured_links.0 %}
|
||||||
|
|
@ -56,11 +57,9 @@
|
||||||
{% empty %}
|
{% empty %}
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="card-content">
|
|
||||||
<p>{% translate "No services found." %}</p>
|
<p>{% translate "No services found." %}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
|
|
@ -175,66 +175,22 @@ a.btn-keycloak {
|
||||||
padding-right: 28px;
|
padding-right: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Card layout utilities - reusable for any card grid */
|
/* Service cards equal height styling */
|
||||||
.card-grid {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-grid > * {
|
|
||||||
display: flex;
|
|
||||||
align-items: stretch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-grid .card {
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-grid .card-content {
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-grid .card-body {
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Card header with logo styling */
|
|
||||||
.card-header-with-logo {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-header-with-logo img {
|
|
||||||
max-width: 48px;
|
|
||||||
max-height: 48px;
|
|
||||||
margin-right: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-header-with-logo .card-header-content {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-header-with-logo .card-header-content h4 {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-header-with-logo .card-header-content .text-muted {
|
|
||||||
font-size: 0.875rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Backwards compatibility - keep existing service-cards-container class */
|
|
||||||
.service-cards-container > * {
|
|
||||||
display: flex;
|
|
||||||
align-items: stretch;
|
|
||||||
}
|
|
||||||
.service-cards-container .card {
|
.service-cards-container .card {
|
||||||
width: 100%;
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
.service-cards-container .card-content {
|
|
||||||
|
.service-cards-container .card-body {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-cards-container .card-footer {
|
||||||
|
margin-top: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* CRD Form mandatory field styling */
|
/* CRD Form mandatory field styling */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue