Add Eternity classica and larry projects
This commit is contained in:
@@ -62,6 +62,28 @@ Install it with the same procedure above, copying `eternity-wasteland-v2` and co
|
||||
$config['skin'] = 'eternity-wasteland-v2';
|
||||
```
|
||||
|
||||
## Eternity Larry And Classic
|
||||
|
||||
`eternity-larry` and `eternity-classic` apply the Eternity paper, ink, acid-green, and orange visual system to Roundcube's legacy Larry and Classic interfaces. They retain the original legacy layouts and require their corresponding base skins to be installed.
|
||||
|
||||
Install the required base package from the Roundcube application directory before copying the child skin:
|
||||
|
||||
```sh
|
||||
composer require "roundcube/larry:~1.6.0"
|
||||
# or
|
||||
composer require "roundcube/classic:~1.6.0"
|
||||
```
|
||||
|
||||
Then copy the selected Eternity child directory into `skins` and configure one of the following:
|
||||
|
||||
```php
|
||||
$config['skin'] = 'eternity-larry';
|
||||
// or
|
||||
$config['skin'] = 'eternity-classic';
|
||||
```
|
||||
|
||||
Both variants use their own Eternity Project logo and browser icon. They are intended for Roundcube 1.6 installations where the matching legacy base skin is available.
|
||||
|
||||
## Docker Install
|
||||
|
||||
### Docker Compose (persistent)
|
||||
@@ -168,6 +190,18 @@ eternity-wasteland-v2/
|
||||
styles/styles.css Source-theme Daylight and Wasteland visual overrides
|
||||
templates/login.html Login form with the Daylight/Wasteland control
|
||||
watermark.html Login background that follows ep-theme
|
||||
eternity-larry/
|
||||
images/ Eternity Project logo and browser icon
|
||||
meta.json Larry child-skin registration
|
||||
styles.css Larry import and Eternity legacy UI overrides
|
||||
eternity-classic/
|
||||
images/ Eternity Project logo and browser icon
|
||||
common.css Classic common UI import and Eternity overrides
|
||||
includes/links.html Classic shared asset links and browser icon
|
||||
mail.css Classic mail stylesheet import
|
||||
meta.json Classic child-skin registration
|
||||
templates/login.html Classic login template with the child stylesheet
|
||||
styles.css Compatibility entry point for manual stylesheet loading
|
||||
```
|
||||
|
||||
`styles/styles.css` imports Elastic before applying Eternity's overrides. Do not remove the import: the base skin provides the complete component layout and image assets.
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
@import "../classic/common.css";
|
||||
|
||||
:root {
|
||||
--ink: #11212b;
|
||||
--paper: #f1f1e9;
|
||||
--acid: #c7ef4b;
|
||||
--orange: #ff6b35;
|
||||
--line: #b9c5bc;
|
||||
--muted: #59706b;
|
||||
--field: #fbfbf6;
|
||||
}
|
||||
|
||||
html,
|
||||
body,
|
||||
#mainscreen,
|
||||
#layout,
|
||||
#main-menu,
|
||||
#taskbar,
|
||||
#mailboxlist,
|
||||
#messagelist,
|
||||
#messageframe {
|
||||
background: var(--paper);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Space Grotesk", "Helvetica Neue", sans-serif;
|
||||
background-image: linear-gradient(90deg, transparent 49.5%, rgb(17 33 43 / 5%) 50%, transparent 50.5%), linear-gradient(rgb(17 33 43 / 4%) 1px, transparent 1px);
|
||||
background-size: 70px 70px, 7px 7px;
|
||||
}
|
||||
|
||||
a,
|
||||
#taskbar a,
|
||||
#mailboxlist li a,
|
||||
#messagelist tr td {
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
a:hover,
|
||||
#taskbar a:hover,
|
||||
#mailboxlist li a:hover {
|
||||
color: var(--orange);
|
||||
}
|
||||
|
||||
#taskbar,
|
||||
#mailboxlist,
|
||||
#messagelist,
|
||||
#messagelist-header,
|
||||
#mailboxlist-header,
|
||||
.box,
|
||||
.boxcontent,
|
||||
.popupmenu,
|
||||
.menu,
|
||||
.toolbar {
|
||||
border-color: var(--ink);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#taskbar a.selected,
|
||||
#taskbar a:hover,
|
||||
#mailboxlist li.selected > a,
|
||||
#mailboxlist li a:hover,
|
||||
#messagelist tr:hover td {
|
||||
background: var(--acid);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
#messagelist tr.selected td {
|
||||
background: var(--ink);
|
||||
color: var(--paper);
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="password"],
|
||||
textarea,
|
||||
select {
|
||||
border: 1px solid var(--ink);
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
background: var(--field);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
input:focus,
|
||||
textarea:focus,
|
||||
select:focus {
|
||||
outline: 3px solid var(--acid);
|
||||
outline-offset: 1px;
|
||||
}
|
||||
|
||||
input[type="submit"],
|
||||
input[type="button"],
|
||||
button,
|
||||
.button,
|
||||
.toolbar .button {
|
||||
border: 1px solid var(--ink);
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
background: var(--ink);
|
||||
color: var(--paper);
|
||||
font-family: "DM Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
input[type="submit"]:hover,
|
||||
input[type="button"]:hover,
|
||||
button:hover,
|
||||
.button:hover,
|
||||
.toolbar .button:hover {
|
||||
background: var(--acid);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
#login-form,
|
||||
#login-form .boxcontent,
|
||||
#login-form .boxtitle {
|
||||
border-color: var(--ink);
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
background: var(--paper);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
#login-form #logo {
|
||||
max-width: 260px;
|
||||
height: auto;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="Eternity Project">
|
||||
<rect width="64" height="64" fill="#11212b"/>
|
||||
<circle cx="32" cy="32" r="22" fill="none" stroke="#f1f1e9" stroke-width="3"/>
|
||||
<circle cx="22" cy="22" r="4" fill="#ff6b35"/>
|
||||
<circle cx="41" cy="28" r="2.5" fill="#f1f1e9"/>
|
||||
<circle cx="27" cy="43" r="3" fill="#ff6b35"/>
|
||||
<line x1="22" y1="22" x2="41" y2="28" stroke="#f1f1e9" stroke-width="1.5"/>
|
||||
<line x1="22" y1="22" x2="27" y2="43" stroke="#f1f1e9" stroke-width="1.5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 542 B |
@@ -0,0 +1,10 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 60" role="img" aria-label="Eternity Project">
|
||||
<circle cx="30" cy="30" r="22" fill="none" stroke="#11212b" stroke-width="2"/>
|
||||
<circle cx="21" cy="21" r="3" fill="#ff6b35"/>
|
||||
<circle cx="38" cy="26" r="2" fill="#11212b"/>
|
||||
<circle cx="26" cy="40" r="2.5" fill="#ff6b35"/>
|
||||
<line x1="21" y1="21" x2="38" y2="26" stroke="#11212b" stroke-width="1"/>
|
||||
<line x1="21" y1="21" x2="26" y2="40" stroke="#11212b" stroke-width="1"/>
|
||||
<text x="66" y="30" font-family="'Space Grotesk','Helvetica Neue',sans-serif" font-size="24" font-weight="700" letter-spacing="1" fill="#11212b">ETERNITY</text>
|
||||
<text x="67" y="46" font-family="'DM Mono','Courier New',monospace" font-size="11" letter-spacing="2" fill="#59706b">PROJECT / FI</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 793 B |
@@ -0,0 +1,12 @@
|
||||
<link rel="index" href="$__comm_path" />
|
||||
<roundcube:object name="meta" />
|
||||
<roundcube:object name="links" />
|
||||
<link rel="icon" type="image/svg+xml" href="/images/favicon.svg" />
|
||||
<link rel="shortcut icon" type="image/svg+xml" href="/images/favicon.svg" />
|
||||
<link rel="stylesheet" type="text/css" href="/common.css" />
|
||||
<roundcube:if condition="in_array(env:task, array('mail', 'addressbook', 'settings'))" />
|
||||
<link rel="stylesheet" type="text/css" href="/<roundcube:var name="env:task" />.css" />
|
||||
<roundcube:endif />
|
||||
<roundcube:if condition="browser:safari" />
|
||||
<link rel="stylesheet" type="text/css" href="/safari.css" />
|
||||
<roundcube:endif />
|
||||
@@ -0,0 +1 @@
|
||||
@import "../classic/mail.css";
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "Eternity Classic",
|
||||
"author": "Eternity Project",
|
||||
"license": "GNU Affero General Public License",
|
||||
"version": "1.0.0",
|
||||
"extends": "classic",
|
||||
"localization": false,
|
||||
"config": {
|
||||
"product_name": "eternityproject.fi",
|
||||
"skin_logo": "skins/eternity-classic/images/logo.svg",
|
||||
"skin_favicon": "skins/eternity-classic/images/favicon.svg"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
@import "common.css";
|
||||
|
||||
:root {
|
||||
--ink: #11212b;
|
||||
--paper: #f1f1e9;
|
||||
--acid: #c7ef4b;
|
||||
--orange: #ff6b35;
|
||||
--line: #b9c5bc;
|
||||
--muted: #59706b;
|
||||
--field: #fbfbf6;
|
||||
}
|
||||
|
||||
html,
|
||||
body,
|
||||
#mainscreen,
|
||||
#layout,
|
||||
#main-menu,
|
||||
#taskbar,
|
||||
#mailboxlist,
|
||||
#messagelist,
|
||||
#messageframe {
|
||||
background: var(--paper);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Space Grotesk", "Helvetica Neue", sans-serif;
|
||||
background-image: linear-gradient(90deg, transparent 49.5%, rgb(17 33 43 / 5%) 50%, transparent 50.5%), linear-gradient(rgb(17 33 43 / 4%) 1px, transparent 1px);
|
||||
background-size: 70px 70px, 7px 7px;
|
||||
}
|
||||
|
||||
a,
|
||||
#taskbar a,
|
||||
#mailboxlist li a,
|
||||
#messagelist tr td {
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
a:hover,
|
||||
#taskbar a:hover,
|
||||
#mailboxlist li a:hover {
|
||||
color: var(--orange);
|
||||
}
|
||||
|
||||
#taskbar,
|
||||
#mailboxlist,
|
||||
#messagelist,
|
||||
#messagelist-header,
|
||||
#mailboxlist-header,
|
||||
.box,
|
||||
.boxcontent,
|
||||
.popupmenu,
|
||||
.menu,
|
||||
.toolbar {
|
||||
border-color: var(--ink);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#taskbar a.selected,
|
||||
#taskbar a:hover,
|
||||
#mailboxlist li.selected > a,
|
||||
#mailboxlist li a:hover,
|
||||
#messagelist tr:hover td {
|
||||
background: var(--acid);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
#messagelist tr.selected td {
|
||||
background: var(--ink);
|
||||
color: var(--paper);
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="password"],
|
||||
textarea,
|
||||
select {
|
||||
border: 1px solid var(--ink);
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
background: var(--field);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
input:focus,
|
||||
textarea:focus,
|
||||
select:focus {
|
||||
outline: 3px solid var(--acid);
|
||||
outline-offset: 1px;
|
||||
}
|
||||
|
||||
input[type="submit"],
|
||||
input[type="button"],
|
||||
button,
|
||||
.button,
|
||||
.toolbar .button {
|
||||
border: 1px solid var(--ink);
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
background: var(--ink);
|
||||
color: var(--paper);
|
||||
font-family: "DM Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
input[type="submit"]:hover,
|
||||
input[type="button"]:hover,
|
||||
button:hover,
|
||||
.button:hover,
|
||||
.toolbar .button:hover {
|
||||
background: var(--acid);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
#login-form,
|
||||
#login-form .boxcontent,
|
||||
#login-form .boxtitle {
|
||||
border-color: var(--ink);
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
background: var(--paper);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
#login-form #logo {
|
||||
max-width: 260px;
|
||||
height: auto;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="/common.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<roundcube:object name="logo" src="/images/logo.svg" id="logo" border="0" style="margin:0 11px" />
|
||||
<roundcube:object name="message" id="message" />
|
||||
|
||||
<div id="login-form">
|
||||
<div class="boxtitle"><roundcube:label name="welcome" /></div>
|
||||
<div class="boxcontent">
|
||||
<roundcube:form name="form" method="post">
|
||||
<roundcube:object name="loginform" form="form" submit=true />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<noscript>
|
||||
<p id="login-noscriptwarning"><roundcube:label name="noscriptwarning" /></p>
|
||||
</noscript>
|
||||
|
||||
<div id="login-bottomline">
|
||||
<roundcube:var name="config:product_name" condition="config:display_product_info > 0" />
|
||||
<roundcube:object name="version" condition="config:display_product_info == 2" />
|
||||
<roundcube:if condition="config:support_url" />
|
||||
● <a href="<roundcube:var name='config:support_url' />" target="_blank" class="support-link"><roundcube:label name="support" /></a>
|
||||
<roundcube:endif />
|
||||
<roundcube:container name="loginfooter" id="bottomline" />
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="Eternity Project">
|
||||
<rect width="64" height="64" fill="#11212b"/>
|
||||
<circle cx="32" cy="32" r="22" fill="none" stroke="#f1f1e9" stroke-width="3"/>
|
||||
<circle cx="22" cy="22" r="4" fill="#ff6b35"/>
|
||||
<circle cx="41" cy="28" r="2.5" fill="#f1f1e9"/>
|
||||
<circle cx="27" cy="43" r="3" fill="#ff6b35"/>
|
||||
<line x1="22" y1="22" x2="41" y2="28" stroke="#f1f1e9" stroke-width="1.5"/>
|
||||
<line x1="22" y1="22" x2="27" y2="43" stroke="#f1f1e9" stroke-width="1.5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 542 B |
@@ -0,0 +1,10 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 60" role="img" aria-label="Eternity Project">
|
||||
<circle cx="30" cy="30" r="22" fill="none" stroke="#11212b" stroke-width="2"/>
|
||||
<circle cx="21" cy="21" r="3" fill="#ff6b35"/>
|
||||
<circle cx="38" cy="26" r="2" fill="#11212b"/>
|
||||
<circle cx="26" cy="40" r="2.5" fill="#ff6b35"/>
|
||||
<line x1="21" y1="21" x2="38" y2="26" stroke="#11212b" stroke-width="1"/>
|
||||
<line x1="21" y1="21" x2="26" y2="40" stroke="#11212b" stroke-width="1"/>
|
||||
<text x="66" y="30" font-family="'Space Grotesk','Helvetica Neue',sans-serif" font-size="24" font-weight="700" letter-spacing="1" fill="#11212b">ETERNITY</text>
|
||||
<text x="67" y="46" font-family="'DM Mono','Courier New',monospace" font-size="11" letter-spacing="2" fill="#59706b">PROJECT / FI</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 793 B |
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "Eternity Larry",
|
||||
"author": "Eternity Project",
|
||||
"license": "GNU Affero General Public License",
|
||||
"version": "1.0.0",
|
||||
"extends": "larry",
|
||||
"localization": false,
|
||||
"config": {
|
||||
"product_name": "eternityproject.fi",
|
||||
"skin_logo": "skins/eternity-larry/images/logo.svg",
|
||||
"skin_favicon": "skins/eternity-larry/images/favicon.svg"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
@import "../larry/styles.css";
|
||||
|
||||
:root {
|
||||
--ink: #11212b;
|
||||
--paper: #f1f1e9;
|
||||
--acid: #c7ef4b;
|
||||
--orange: #ff6b35;
|
||||
--line: #b9c5bc;
|
||||
--muted: #59706b;
|
||||
--field: #fbfbf6;
|
||||
}
|
||||
|
||||
html,
|
||||
body,
|
||||
#mainscreen,
|
||||
#layout,
|
||||
#main-menu,
|
||||
#taskbar,
|
||||
#mailboxlist,
|
||||
#messagelist,
|
||||
#messageframe {
|
||||
background: var(--paper);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Space Grotesk", "Helvetica Neue", sans-serif;
|
||||
background-image: linear-gradient(90deg, transparent 49.5%, rgb(17 33 43 / 5%) 50%, transparent 50.5%), linear-gradient(rgb(17 33 43 / 4%) 1px, transparent 1px);
|
||||
background-size: 70px 70px, 7px 7px;
|
||||
}
|
||||
|
||||
a,
|
||||
#taskbar a,
|
||||
#mailboxlist li a,
|
||||
#messagelist tr td {
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
a:hover,
|
||||
#taskbar a:hover,
|
||||
#mailboxlist li a:hover {
|
||||
color: var(--orange);
|
||||
}
|
||||
|
||||
#taskbar,
|
||||
#mailboxlist,
|
||||
#messagelist,
|
||||
#messagelist-header,
|
||||
#mailboxlist-header,
|
||||
.box,
|
||||
.boxcontent,
|
||||
.popupmenu,
|
||||
.menu,
|
||||
.toolbar {
|
||||
border-color: var(--ink);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#taskbar a.selected,
|
||||
#taskbar a:hover,
|
||||
#mailboxlist li.selected > a,
|
||||
#mailboxlist li a:hover,
|
||||
#messagelist tr:hover td {
|
||||
background: var(--acid);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
#messagelist tr.selected td {
|
||||
background: var(--ink);
|
||||
color: var(--paper);
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="password"],
|
||||
textarea,
|
||||
select {
|
||||
border: 1px solid var(--ink);
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
background: var(--field);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
input:focus,
|
||||
textarea:focus,
|
||||
select:focus {
|
||||
outline: 3px solid var(--acid);
|
||||
outline-offset: 1px;
|
||||
}
|
||||
|
||||
input[type="submit"],
|
||||
input[type="button"],
|
||||
button,
|
||||
.button,
|
||||
.toolbar .button {
|
||||
border: 1px solid var(--ink);
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
background: var(--ink);
|
||||
color: var(--paper);
|
||||
font-family: "DM Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
input[type="submit"]:hover,
|
||||
input[type="button"]:hover,
|
||||
button:hover,
|
||||
.button:hover,
|
||||
.toolbar .button:hover {
|
||||
background: var(--acid);
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
#login-form,
|
||||
#login-form .box-inner,
|
||||
#login-form .boxcontent {
|
||||
border-color: var(--ink);
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
background: var(--paper);
|
||||
}
|
||||
|
||||
#login-form #logo {
|
||||
max-width: 260px;
|
||||
height: auto;
|
||||
}
|
||||
Reference in New Issue
Block a user