New login page
This commit is contained in:
parent
03d996cee9
commit
0af7ee3dd0
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="view-list">
|
<div class="content-view">
|
||||||
<h2>Membership settings</h2>
|
<h2>Membership settings</h2>
|
||||||
{% if not current_membership %}
|
{% if not current_membership %}
|
||||||
<p>{% trans "You do not have an active membership!" %}</p>
|
<p>{% trans "You do not have an active membership!" %}</p>
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="view-list">
|
<div class="content-view">
|
||||||
<h2>Profile settings</h2>
|
<h2>Profile settings</h2>
|
||||||
<form>
|
<form>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Start reset */
|
/* Reset */
|
||||||
*, *::before, *::after {
|
*, *::before, *::after {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
@ -23,16 +23,17 @@ p, h1, h2, h3, h4, h5, h6 {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Variables */
|
/* Variables */
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
/* Colors */
|
/* Colors */
|
||||||
--light : #fff;
|
--light : #fff;
|
||||||
--light-dust : #fcfcfc;
|
--light-dust : #fcfcfc;
|
||||||
--dust : #f1f1f1;
|
--dust : #f1f1f1;
|
||||||
--dark-dust : #bfbfbf;
|
--dark-dust : #bfbfbf;
|
||||||
--twilight : #404040;
|
--fade : #878787;
|
||||||
|
--twilight : #3c3c3c;
|
||||||
--dark : #2a2a2a;
|
--dark : #2a2a2a;
|
||||||
--custard : #f0dcac;
|
--custard : #f0dcac;
|
||||||
|
--water : #a8f3f4;
|
||||||
--splash : #4b3aba;
|
--splash : #4b3aba;
|
||||||
|
|
||||||
/* Sizes */
|
/* Sizes */
|
||||||
|
@ -49,11 +50,26 @@ p, h1, h2, h3, h4, h5, h6 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
height : 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
font-weight : 600;
|
||||||
|
color : var(--twilight);
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
font-weight : 500;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin : 0;
|
margin : 0;
|
||||||
padding : 0;
|
padding : 0;
|
||||||
background : var(--custard);
|
background : var(--custard);
|
||||||
font-family : sans-serif;
|
font-family : Inter;
|
||||||
|
font-weight : 400;
|
||||||
|
line-height : 1.6;
|
||||||
color : var(--dark);
|
color : var(--dark);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +132,8 @@ aside > div > dl > dt {
|
||||||
clear : left;
|
clear : left;
|
||||||
margin : 0 var(--double-space) 0 0;
|
margin : 0 var(--double-space) 0 0;
|
||||||
width : 180px;
|
width : 180px;
|
||||||
font-weight : bold;
|
font-weight : 600;
|
||||||
|
color : var(--twilight);
|
||||||
}
|
}
|
||||||
|
|
||||||
nav {
|
nav {
|
||||||
|
@ -146,6 +163,8 @@ nav > ol > li > a {
|
||||||
text-decoration : none;
|
text-decoration : none;
|
||||||
color : var(--dark);
|
color : var(--dark);
|
||||||
cursor : pointer;
|
cursor : pointer;
|
||||||
|
font-weight : 500;
|
||||||
|
letter-spacing : 0.04em;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav > ol > li:first-child > a {
|
nav > ol > li:first-child > a {
|
||||||
|
@ -172,7 +191,7 @@ article > div {
|
||||||
margin-bottom : var(--double-space);
|
margin-bottom : var(--double-space);
|
||||||
}
|
}
|
||||||
|
|
||||||
div.view-list > h2 {
|
div.content-view > h2 {
|
||||||
margin : 0 0 var(--double-space) 0;
|
margin : 0 0 var(--double-space) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,7 +202,8 @@ div.services {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.services > div {
|
div.services > div,
|
||||||
|
div.infobox {
|
||||||
background : var(--light);
|
background : var(--light);
|
||||||
padding : var(--double-space);
|
padding : var(--double-space);
|
||||||
border-radius : 6px;
|
border-radius : 6px;
|
||||||
|
@ -205,21 +225,29 @@ div.services > div > div.description {
|
||||||
margin-bottom : var(--double-space);
|
margin-bottom : var(--double-space);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.services > div > div.description > p {
|
||||||
|
margin-top : var(--half-space);
|
||||||
|
}
|
||||||
|
|
||||||
div.services > div > a,
|
div.services > div > a,
|
||||||
|
a.button,
|
||||||
button {
|
button {
|
||||||
|
display : block;
|
||||||
color : var(--light);
|
color : var(--light);
|
||||||
background : var(--splash);
|
background : var(--splash);
|
||||||
padding : 6px 12px;
|
padding : var(--space) var(--double-space);
|
||||||
border-radius : 3px;
|
border-radius : 3px;
|
||||||
opacity : 0.9;
|
opacity : 0.9;
|
||||||
cursor : pointer;
|
cursor : pointer;
|
||||||
text-align : center;
|
text-align : center;
|
||||||
border : 0;
|
border : 0;
|
||||||
font-weight : bold;
|
font-weight : 600;
|
||||||
|
letter-spacing : 0.03em;
|
||||||
|
text-decoration : none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
div.services > div > a:hover,
|
div.services > div > a:hover,
|
||||||
|
a.button:hover,
|
||||||
button:hover {
|
button:hover {
|
||||||
opacity : 1.0;
|
opacity : 1.0;
|
||||||
}
|
}
|
||||||
|
@ -233,7 +261,8 @@ form > div >label {
|
||||||
margin : 0 0 6px;
|
margin : 0 0 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
form > div > input[type="text"] {
|
form > div > input[type="text"],
|
||||||
|
form > div > input[type="password"] {
|
||||||
border : 1px solid var(--twilight);
|
border : 1px solid var(--twilight);
|
||||||
border-radius : 3px;
|
border-radius : 3px;
|
||||||
padding : 6px 12px;
|
padding : 6px 12px;
|
||||||
|
@ -241,6 +270,68 @@ form > div > input[type="text"] {
|
||||||
width : 100%;
|
width : 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#login {
|
||||||
|
height : 100%;
|
||||||
|
display : flex;
|
||||||
|
align-items : center;
|
||||||
|
justify-content : center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginbox {
|
||||||
|
border-radius : var(--space);
|
||||||
|
background : var(--dust);
|
||||||
|
border : 6px solid white;
|
||||||
|
width : 800px;
|
||||||
|
height : 500px;
|
||||||
|
|
||||||
|
display : flex;
|
||||||
|
flex-flow : row;
|
||||||
|
//justify-content : space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginbox > div {
|
||||||
|
padding : var(--double-space);
|
||||||
|
flex : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginbox label {
|
||||||
|
color : var(--twilight);
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginbox > div.login {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginbox > div.signup {
|
||||||
|
border-radius : 0 var(--space) var(--space) 0;
|
||||||
|
background : var(--water);
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginbox > div:last-child > * {
|
||||||
|
flex : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginbox div.new_here {
|
||||||
|
margin-top : var(--double-space);
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginbox div.new_here h2 {
|
||||||
|
margin: var(--double-space) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginbox button {
|
||||||
|
width : 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginbox img {
|
||||||
|
padding : 0 var(--double-space);
|
||||||
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
position : fixed;
|
position : fixed;
|
||||||
bottom : 0;
|
bottom : 0;
|
||||||
|
@ -254,5 +345,5 @@ footer {
|
||||||
}
|
}
|
||||||
|
|
||||||
span.time_remaining {
|
span.time_remaining {
|
||||||
opacity : 0.6;
|
color : var(--fade);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,55 +4,61 @@
|
||||||
|
|
||||||
{% block non_login_content %}
|
{% block non_login_content %}
|
||||||
|
|
||||||
{% if form.non_field_errors %}
|
<div id="loginbox">
|
||||||
{% for error in form.non_field_errors %}
|
<div class="login">
|
||||||
<div class="alert alert-danger" role="alert">
|
{% if form.non_field_errors %}
|
||||||
{{ error }}
|
{% for error in form.non_field_errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
{{ error }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
<h2>Log in</h2>
|
||||||
|
|
||||||
|
<form method="post" action="">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div>
|
||||||
|
<label for="id_username"
|
||||||
|
class="visually-hidden">
|
||||||
|
{% trans "E-mail" %}
|
||||||
|
</label>
|
||||||
|
<input type="text"
|
||||||
|
id="id_username"
|
||||||
|
name="login"
|
||||||
|
class="form-control mb-lg-2"
|
||||||
|
placeholder="{% trans "E-mail" %}"
|
||||||
|
required
|
||||||
|
autofocus>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="id_password" class="visually-hidden">
|
||||||
|
{% trans "Password" %}
|
||||||
|
</label>
|
||||||
|
<input type="password"
|
||||||
|
id="id_password"
|
||||||
|
name="password"
|
||||||
|
class="form-control mb-lg-2"
|
||||||
|
placeholder="{% trans "Password" %}"
|
||||||
|
required>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button type="submit">{% trans "Sign in" %}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div>
|
||||||
|
<a href="{% url "account_reset_password" %}"
|
||||||
|
class="w-100 btn btn-lg btn-outline-info">
|
||||||
|
{% trans "Forgot password?" %}
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
</div>
|
||||||
{% endif %}
|
<div class="signup">
|
||||||
|
<img src="https://data.coop/static/img/logo_da.svg" alt="data.coop logo">
|
||||||
<form method="post" action="">
|
<div class="new_here">
|
||||||
{% csrf_token %}
|
<h2> Are you new here? </h2>
|
||||||
|
<a class="button" href="{% url "account_signup" %}">{% trans "Become a member" %}</a>
|
||||||
<label for="id_username"
|
</div>
|
||||||
class="visually-hidden">
|
</div>
|
||||||
{% trans "E-mail" %}
|
|
||||||
</label>
|
|
||||||
<input type="text"
|
|
||||||
id="id_username"
|
|
||||||
name="login"
|
|
||||||
class="form-control mb-lg-2"
|
|
||||||
placeholder="{% trans "E-mail" %}"
|
|
||||||
required
|
|
||||||
autofocus>
|
|
||||||
|
|
||||||
<label for="id_password" class="visually-hidden">
|
|
||||||
{% trans "Password" %}
|
|
||||||
</label>
|
|
||||||
<input type="password"
|
|
||||||
id="id_password"
|
|
||||||
name="password"
|
|
||||||
class="form-control mb-lg-2"
|
|
||||||
placeholder="{% trans "Password" %}"
|
|
||||||
required>
|
|
||||||
|
|
||||||
<button class="w-100 mb-lg-2 btn btn-lg btn-primary"
|
|
||||||
type="submit">{% trans "Sign in" %}</button>
|
|
||||||
</form>
|
|
||||||
<a href="{% url "account_reset_password" %}"
|
|
||||||
class="w-100 btn btn-lg btn-outline-info">
|
|
||||||
{% trans "Forgot password?" %}
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="hr-text">
|
|
||||||
<span>{% trans "Or"|upper %}</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a class="w-100 btn btn-lg btn-outline-success"
|
|
||||||
type="submit"
|
|
||||||
href="{% url "account_signup" %}">
|
|
||||||
{% trans "Become a member" %}
|
|
||||||
</a>
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -5,17 +5,18 @@
|
||||||
{% block head_title %}{% trans "Sign Out" %}{% endblock %}
|
{% block head_title %}{% trans "Sign Out" %}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>{% trans "Sign Out" %}</h1>
|
<div class="content-view">
|
||||||
|
<h2>{% trans "Sign Out" %}</h2>
|
||||||
|
|
||||||
<p>{% trans 'Are you sure you want to sign out?' %}</p>
|
<p>{% trans 'Are you sure you want to sign out?' %}</p>
|
||||||
|
|
||||||
<form method="post" action="{% url 'account_logout' %}">
|
<form method="post" action="{% url 'account_logout' %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% if redirect_field_value %}
|
{% if redirect_field_value %}
|
||||||
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}"/>
|
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<button type="submit">{% trans 'Sign Out' %}</button>
|
<button type="submit">{% trans 'Sign Out' %}</button>
|
||||||
</form>
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -7,76 +7,13 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
<title>Login – {{ site.name }}</title>
|
<title>Login – {{ site.name }}</title>
|
||||||
|
<link rel="stylesheet" href="{% static "/fonts/inter.css" %}">
|
||||||
<link href="{% static "/css/bootstrap.min.css" %}" rel="stylesheet"
|
<link rel="stylesheet" href="{% static "/css/style.css" %}">
|
||||||
crossorigin="anonymous">
|
|
||||||
|
|
||||||
<link href="{% static "/css/bootstrap-icons.css" %}" rel="stylesheet"
|
|
||||||
crossorigin="anonymous">
|
|
||||||
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
padding-top: 40px;
|
|
||||||
padding-bottom: 40px;
|
|
||||||
background-color: #a8f3f4;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-signin {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 330px;
|
|
||||||
padding: 15px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-signin .checkbox {
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-signin .form-control {
|
|
||||||
position: relative;
|
|
||||||
box-sizing: border-box;
|
|
||||||
height: auto;
|
|
||||||
padding: 10px;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-signin .form-control:focus {
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hr-text {
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
border-bottom: 1px solid #000;
|
|
||||||
line-height: 0.1em;
|
|
||||||
margin: 20px 0 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hr-text span {
|
|
||||||
background: #a8f3f4;
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="text-center">
|
<body>
|
||||||
|
<main id="login">
|
||||||
<main class="form-signin">
|
{% block non_login_content %}
|
||||||
<img class="mb-4" src="https://data.coop/static/img/logo_da.svg" alt=""
|
{% endblock %}
|
||||||
width="260" height="160">
|
</main>
|
||||||
|
|
||||||
{% block non_login_content %}
|
|
||||||
{% endblock %}
|
|
||||||
</main>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -8,12 +8,13 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
<title>{% block head_title %}{% endblock %} – {{ site.name }}</title>
|
<title>{% block head_title %}{% endblock %} – {{ site.name }}</title>
|
||||||
|
<link rel="stylesheet" href="{% static "/fonts/inter.css" %}">
|
||||||
<link rel="stylesheet" href="{% static "/css/style.css" %}">
|
<link rel="stylesheet" href="{% static "/css/style.css" %}">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<h1> data.coop membersystem </h1>
|
<h1> data.coop membersystem </h1>
|
||||||
<a class="logout" href="/logout">Log out</a>
|
<a class="logout" href="/accounts/logout">Log out</a>
|
||||||
</header
|
</header
|
||||||
<main>
|
<main>
|
||||||
<aside>
|
<aside>
|
||||||
|
@ -36,7 +37,7 @@
|
||||||
<ol>
|
<ol>
|
||||||
<li><a href="/">Dashboard</a></li>
|
<li><a href="/">Dashboard</a></li>
|
||||||
<li><a href="/services" class="current">Services</a></li>
|
<li><a href="/services" class="current">Services</a></li>
|
||||||
<li><a>Payment</a></li>
|
<li><a href="#">Payment</a></li>
|
||||||
<li><a href="/membership">Settings</a></li>
|
<li><a href="/membership">Settings</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
@ -3,3 +3,18 @@
|
||||||
{% block head_title %}
|
{% block head_title %}
|
||||||
{% trans "Home" %}
|
{% trans "Home" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="content-view">
|
||||||
|
<h2>Welcome {{ user }}!</h2>
|
||||||
|
<p>
|
||||||
|
Boink?
|
||||||
|
</p>
|
||||||
|
<div class="infobox">
|
||||||
|
<p>
|
||||||
|
To get started we need you to verify your email!
|
||||||
|
</p>
|
||||||
|
<button>Verify email</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
|
@ -1,47 +1,52 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="view-list">
|
<div class="content-view">
|
||||||
<h2>Services you subscribe to</h2>
|
<h2>Services you subscribe to</h2>
|
||||||
<div class="services">
|
<div class="services">
|
||||||
<div>
|
<div>
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<h3>Passit</h3>
|
<h3>Passit</h3>
|
||||||
<p>Passit is a service that blabla</p>
|
<p>Passit is a service that blabla</p>
|
||||||
|
<a href="#">Read more …</a>
|
||||||
</div>
|
</div>
|
||||||
<a>Unsubscribe</a>
|
<a>Unsubscribe</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="view-list">
|
<div class="content-view">
|
||||||
<h2>Available services</h2>
|
<h2>Available services</h2>
|
||||||
<div class="services">
|
<div class="services">
|
||||||
<div>
|
<div>
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<h3>Forgejo</h3>
|
<h3>Forgejo</h3>
|
||||||
<p>Forgejo is a service that blabla</p>
|
<p>Forgejo is a service that blabla</p>
|
||||||
|
<a href="#">Read more …</a>
|
||||||
</div>
|
</div>
|
||||||
<a>Subscribe</a>
|
<a>Subscribe</a>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<h3>Mastodon</h3>
|
<h3>Mastodon</h3>
|
||||||
<p>Mastodon is a service where you can write things to people around the world.</p>
|
<p>Mastodon is a service where you can write things to people around the world.</p>
|
||||||
|
<a href="#">Read more …</a>
|
||||||
</div>
|
</div>
|
||||||
<a>Subscribe</a>
|
<a>Subscribe</a>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<h3>Matrix</h3>
|
<h3>Matrix</h3>
|
||||||
<p>Matrix is a service that blabla</p>
|
<p>Matrix is a service that blabla</p>
|
||||||
|
<a href="#">Read more …</a>
|
||||||
</div>
|
</div>
|
||||||
<a>Subscribe</a>
|
<a>Subscribe</a>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<h3>NextCloud</h3>
|
<h3>NextCloud</h3>
|
||||||
<p>NextCloud is a service that blabla</p>
|
<p>NextCloud is a service that blabla</p>
|
||||||
|
<a href="#">Read more …</a>
|
||||||
</div>
|
</div>
|
||||||
<a>Subscribe</a>
|
<a>Subscribe</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue