Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions _bin/generate-downloads-json-data.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ function generate_data($version, $package_name, $basedir, $filename)
return [
'package' => $package_name,
'url' => "https://github.com/roundcube/roundcubemail/releases/download/{$version}/{$filename}",
'version' => $version,
'size' => $size,
'checksum' => $sum,
];
Expand Down
2 changes: 1 addition & 1 deletion _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ libs: {
url: 'https://cdn.jsdelivr.net/npm/less@4.2.0/dist/less.min.js',
sri: 'sha384-SlYTcCEsC10TwMfcpGjqd+bWfA2QdB0CInBtPX6erDT3NnEkhX2X3gJ83UyHtXs3'
},
css: '/styles/styles.min.css?v=2024021800',
css: '/styles/styles.min.css?v=2026032500',
bootstrap: {
css: {
url: 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css',
Expand Down
41 changes: 29 additions & 12 deletions _data/releases.json → _data/downloads.json
Original file line number Diff line number Diff line change
@@ -1,64 +1,81 @@
{
"stable": {
"name": "Stable version",
"version": "1.6.14",
"sources": [
"title": "Stable version",
"titleVersion": true,
"packages": [
{
"package": "Dependent",
"url": "https://github.com/roundcube/roundcubemail/releases/download/1.6.14/roundcubemail-1.6.14.tar.gz",
"version": "1.6.14",
"size": "3.7 MB",
"checksum": "70816db28bd7d5c16ba94e518a68368109542bf78bf3696e568385283c46027a"
},
{
"package": "Complete",
"url": "https://github.com/roundcube/roundcubemail/releases/download/1.6.14/roundcubemail-1.6.14-complete.tar.gz",
"version": "1.6.14",
"size": "5.6 MB",
"checksum": "4c67510729c10bd30bd064e87ebaf3f9a2d26230804862430580260b86a01609"
},
{
"package": "Framework",
"url": "https://github.com/roundcube/roundcubemail/releases/download/1.6.14/roundcube-framework-1.6.14.tar.gz",
"version": "1.6.14",
"size": "1.1 MB",
"checksum": "e35134263899c36ea9e981a9f9a5b6561dbcf59450f487dbca5196ffecb229b5"
}
]
},
"old-stable": {
"name": "Old stable",
"version": "1.5.3",
"sources": [
"title": "Old stable",
"titleVersion": true,
"packages": [
]
},
"lts": {
"name": "LTS versions",
"sources": [
"title": "LTS versions",
"titleVersion": false,
"description": "Long Term Support with low maintenance mode. This means only security updates and rare fixes of serious issues will go into these release branches.",
"packages": [
{
"package": "1.5.14 - Complete",
"package": "Complete",
"url": "https://github.com/roundcube/roundcubemail/releases/download/1.5.14/roundcubemail-1.5.14-complete.tar.gz",
"version": "1.5.14",
"size": "7.2 MB",
"checksum": "c12dc9179c3ad6d3b3c4e7af080aef887cf9e4e6fb13b628343d135fcc8263a1"
}
]
},
"beta": {
"name": "Release candidate",
"version": "1.7-rc5",
"sources": [
"title": "Beta version",
"titleVersion": true,
"description": "We recommend to test pre-release versions on a separate environment, and don't forget to backup your data before installing.",
"packages": [
]
},
"rc": {
"title": "Release candidate",
"titleVersion": true,
"description": "We recommend to test pre-release versions on a separate environment, and don't forget to backup your data before installing.",
"packages": [
{
"package": "Dependent",
"url": "https://github.com/roundcube/roundcubemail/releases/download/1.7-rc5/roundcubemail-1.7-rc5.tar.gz",
"version": "1.7-rc5",
"size": "4.0 MB",
"checksum": "33139a02828982b3359b73668ddcfb9b81e99a03b1864c94a14373770fe086c9"
},
{
"package": "Complete",
"url": "https://github.com/roundcube/roundcubemail/releases/download/1.7-rc5/roundcubemail-1.7-rc5-complete.tar.gz",
"version": "1.7-rc5",
"size": "6.1 MB",
"checksum": "2062e74731568f44e026d532794a53633ea85bd6b45a78e341fed9b33cda3590"
},
{
"package": "Framework",
"url": "https://github.com/roundcube/roundcubemail/releases/download/1.7-rc5/roundcube-framework-1.7-rc5.tar.gz",
"version": "1.7-rc5",
"size": "1.1 MB",
"checksum": "1192b7618fa9b63f340103a50c9828676f8ccc32ff72eefdc5328123fdf37512"
}
Expand Down
31 changes: 13 additions & 18 deletions download/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,16 @@
---
<h1>Download your version of Roundcube</h1>

{% for version in site.data.releases %}
{% assign id = version | first %}
{% assign params = version | last %}

{% if params.sources.size == 0 %}
{% for downlad in site.data.downloads %}
{% assign id = downlad | first %}
{% assign params = downlad | last %}
{% if params.packages.size == 0 %}
{% continue %}
{% endif %}
<h2 id="{{ id }}">{{ params.title }}{% if params.titleVersion %} - {{ params.packages[0].version }}{% endif %} <a class="anchor" href="#{{ id }}" aria-label="Link to this section: {{ params.title }}"></a></h2>

<h2 id="{{ id }}">{{ params.name }}{% if params.version %} - {{ params.version }}{% endif %} <a class="anchor" href="#{{ id }}" aria-label="Link to this section: {{ id }}"></a></h2>

{% if id == "lts" %}
<p class="text-body-secondary mb-1">Long Term Support with low maintenance mode. This means only security updates and rare fixes of serious issues
will go into these release branches.</p>
{% elsif id == "beta" %}
<p class="text-body-secondary mb-1">We recommend to test beta versions on a separate environment, and don't forget to backup your data before installing.</p>
{% if params.description %}
<p class="text-body-secondary mb-1">{{ params.description }}</p>
{% endif %}

<table class="table table-striped download-table">
Expand All @@ -33,14 +28,14 @@ <h2 id="{{ id }}">{{ params.name }}{% if params.version %} - {{ params.version }
</tr>
</thead>
<tbody>
{% for source in params.sources %}
{% for package in params.packages %}
<tr>
<th class="package fw-normal" scope="row">{{ source.package }}{% if source.package == "Dependent" %}<sup><a href="#fn1" class="text-body-secondary">1</a></sup>{% endif %}</th>
<td class="link text-center text-lg-start"><a href="{{ source.url }}" title="Download now!" class="btn rc-icon btn-rc-download btn-sm"><span>Download</span></a></td>
<td class="size text-nowrap">{{ source.size }}</td>
<th class="package fw-normal" scope="row">{% unless params.titleVersion %}{{ package.version }} - {% endunless %}{{ package.package }}{% if package.package == "Dependent" %}<sup><a href="#fn1" class="text-body-secondary">1</a></sup>{% endif %}</th>
<td class="link text-center text-lg-start"><a href="{{ package.url }}" title="Download now!" class="btn rc-icon btn-rc-download btn-sm"><span>Download</span></a></td>
<td class="size text-nowrap">{{ package.size }}</td>
<td class="checksum font-monospace text-nowrap text-center text-lg-start pe-3">
<span class="d-none d-lg-inline copy-popover-target">
<span class="copy-target d-block d-lg-inline text-nowrap overflow-auto py-3 py-lg-0">{{ source.checksum }}</span><span class="py-3 py-lg-0"><a class="copy-link" href="#" aria-label="Copy text"></a></span>
<span class="copy-target d-block d-lg-inline text-nowrap overflow-auto py-3 py-lg-0">{{ package.checksum }}</span><span class="py-3 py-lg-0"><a class="copy-link" href="#" aria-label="Copy text"></a></span>
</span>
<a class="d-inline d-lg-none copy-popover-link checksum" href="#" aria-label="SHA-256 checksum" onclick="return false;" data-bs-title="SHA-256 checksum" data-bs-placement="left"></a>
</td>
Expand All @@ -50,7 +45,7 @@ <h2 id="{{ id }}">{{ params.name }}{% if params.version %} - {{ params.version }
</table>
{% endfor %}

<p id="fn1" class="text-body-secondary">1. Dependent packages only contain sources which are licensed under the GPL but they require some third-party
<p id="fn1" class="text-body-secondary mt-4">1. Dependent packages only contain sources which are licensed under the GPL but they require some third-party
packages to be installed along with Roundcube. All requirements are listed in the INSTALL instructions within the package file.</p>

<h2 id="sources">Other sources and downloads <a class="anchor" href="#sources" aria-label="Link to this section: Other sources and downloads"></a></h2>
Expand Down
4 changes: 2 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
<a href="/screens"><img src="/screens/skins/{{ skin }}/banner.png?g={{ generated }}" {% if site.data.screenshots[skin]['banner-dark'] %}data-rc-dark="/screens/skins/{{ skin }}/banner_dark.png?g={{ generated }}"{% endif %} width="647" height="390" id="bannerimg" class="img-fluid" alt="Welcome Roundcube Webmail"></a>
</div>
<div class="download text-center d-flex flex-column justify-content-center justify-content-lg-start align-items-center pt-xl-4">
<a href="/download" class="btn rc-icon btn-rc-download btn-lg" title="Download now!">Download</a>
<span class="version text-body-secondary">Version {{ site.data.releases.stable.version }}</span>
<a href="/download" class="btn rc-icon btn-rc-download btn-lg" title="Download now!"><span>Download</span></a>
<span class="version text-body-secondary">Version {{ site.data.downloads.stable.packages[0].version }}</span>
</div>
</div>
</div>
Expand Down
78 changes: 37 additions & 41 deletions styles/styles.less
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@
@nav-height: 66px;
@nav-offset: 6rem;
@thumbnail-width: 140px;
@btn-icon-margin: .25rem;

@max-width-md: 991px;
@max-width-sm: 767px;
@max-width-xs: 575px;
@min-width-sm: 576px;
@min-width-md: 768px;
@min-width-lg: 992px;
@min-width-xl: 1200px;
@min-width-xxl: 1400px;

@color-primary: #37beff;
@color-background-alt: rgba(0, 0, 0, 0.05);
Expand Down Expand Up @@ -98,25 +101,25 @@ a:not(.btn):not(.nav-link):not(.dropdown-item),

> .container > .grid {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: auto 1fr;
grid-template-columns: auto;
grid-template-rows: auto;

> .logo {
grid-column: 1;
grid-row: 1;
}

> .image {
grid-column: 2;
grid-row: 1 / 3;
grid-column: 1;
grid-row: 2;
}

> .download {
grid-column: 1;
grid-row: 2;
grid-row: 3;
}

@media (max-width: @max-width-md) {
@media (min-width: @min-width-md) {
grid-template-columns: 1fr 1.5fr;

> .logo {
Expand All @@ -135,23 +138,23 @@ a:not(.btn):not(.nav-link):not(.dropdown-item),
}
}

@media (max-width: @max-width-sm) {
grid-template-columns: auto;
grid-template-rows: auto;
@media (min-width: @min-width-lg) {
grid-template-columns: 1fr 1fr;
grid-template-rows: auto 1fr;

> .logo {
grid-column: 1;
grid-row: 1;
}

> .image {
grid-column: 1;
grid-row: 2;
grid-column: 2;
grid-row: 1 / 3;
}

> .download {
grid-column: 1;
grid-row: 3;
grid-row: 2;
}
}
}
Expand Down Expand Up @@ -293,11 +296,11 @@ footer {
}

.rc-icon::before {
margin-right: .25rem;
margin-right: @btn-icon-margin;
}

.rc-icon::after {
margin-left: .25rem;
margin-left: @btn-icon-margin;
}

a.back-link::before {
Expand Down Expand Up @@ -357,18 +360,22 @@ a.current-theme::after {
}

&::before {
margin-right: .5rem;
content: @fa-var-download;
margin-right: 0;
}

> span {
margin-left: @btn-icon-margin * 2;
}

&.btn-sm {
@media (max-width: @max-width-xs) {
& > span {
display: none;
}
> span {
display: none;
}

&::before {
margin-right: 0;
@media (min-width: @min-width-sm) {
> span {
display: inline;
}
}
}
Expand Down Expand Up @@ -451,12 +458,12 @@ div.color-modes > ul.dropdown-menu {

table.download-table {
th.package {
width: 20%;
width: 55%;
}

td.link,
td.size {
width: 15%;
width: 20%;
}

td.checksum {
Expand All @@ -468,7 +475,7 @@ table.download-table {
vertical-align: middle;
}

@media (max-width: @max-width-md) {
@media (min-width: @min-width-sm) {
th.package {
width: 40%;
}
Expand All @@ -480,27 +487,16 @@ table.download-table {
td.size {
width: 20%;
}

td.checksum {
width: 5%;
}
}

@media (max-width: @max-width-xs) {
@media (min-width: @min-width-lg) {
th.package {
width: 55%;
}

td.link {
width: 20%;
}

td.link,
td.size {
width: 20%;
}

td.checksum {
width: 5%;
width: 15%;
}
}
}
Loading