Bootstrap products

This commit is contained in:
Nico Schottelius 2019-12-31 01:39:46 +01:00
parent 16fb2bb919
commit 5f0f8f66db
19 changed files with 359 additions and 327 deletions

View file

@ -1,5 +1,5 @@
BUILDDIR=../ungleich-staticcms-build BUILDDIR=../ungleich-staticcms-build
DESTINATION=ungleichstatic@staticweb.ungleich.ch:/home/services/www/ungleichstatic/staticcms.ungleich.ch/www/ DESTINATION=ungleichstatic@staticweb.ungleich.ch:/home/services/www/ungleichstatic/staticcms.ungleich.ch/www/u/
all: publish all: publish
@ -7,7 +7,7 @@ pull:
git pull git pull
publish: pull build permissions publish: pull build permissions
rsync -av --exclude .lektor/ $(BUILDDIR)/ $(DESTINATION) rsync -av --delete --exclude .lektor/ $(BUILDDIR)/u/ $(DESTINATION)
permissions: build permissions: build
find $(BUILDDIR) -type f -exec chmod 0644 {} \; find $(BUILDDIR) -type f -exec chmod 0644 {} \;
@ -17,4 +17,4 @@ build:
lektor build -O $(BUILDDIR) lektor build -O $(BUILDDIR)
clean: clean:
rm -rf $(BUILDDIR) rm -rf $(BUILDDIR)

View file

@ -0,0 +1,8 @@
_discoverable: yes
---
_hidden: no
---
title: Cloud Backup
---
subtitle: Your insurance in Switzerland
---

View file

@ -1,3 +1,5 @@
_model: products _model: products
--- ---
title: ungleich products title: Products
---
subtitle: Our offer to make your life easier.

View file

@ -0,0 +1,8 @@
_discoverable: yes
---
_hidden: no
---
title: IPv6 to IPv6 Proxy
---
subtitle: Make your IPv6 resources reachable from the IPv4 world
---

View file

@ -1,4 +1,4 @@
name: IPv6 Only Hosting title: IPv6 Only Hosting
--- ---
link: https://ipv6onlyhosting.com link: https://ipv6onlyhosting.com
--- ---
@ -6,8 +6,4 @@ _discoverable: yes
--- ---
_hidden: no _hidden: no
--- ---
abstract: We provide best IPv6 only hosting subtitle: We provide best IPv6 only hosting
---
description:
Hi there this is descriptino

View file

@ -1,4 +1,4 @@
name: IPv6 VPN title: IPv6 VPN
--- ---
_discoverable: yes _discoverable: yes
--- ---
@ -6,6 +6,5 @@ _hidden: no
--- ---
buy_link: http://ungleich.ch buy_link: http://ungleich.ch
--- ---
description: This is description subtitle: We enable you with IPv6 everywhere
--- ---
teaser: This is teaser

View file

@ -0,0 +1,55 @@
_discoverable: yes
---
_hidden: no
---
title: Privacy enhanced Chat
---
subtitle: Your personal chat server
---
link: http://ungleich.ch
---
feature1_title: Location: Switzerland
---
feature1_text: The chat server is located in the neutral country
Switzerland with strong privacy laws.
---
feature2_title: Scalable
---
feature2_text:
Are you running a small team? Or are you a bigger
organisation? There is an instance that works for each of your
cases.
---
feature3_title: Open Source
---
feature3_text:
The chat server only consists of Open Source
Software. The software can easily be audited by third parties and its
security verified. It also does not lock you in with us. If you are
ever not happy with our service, you can take the data and host the
chat server somewhere else.
---
offer1_title: Regular
---
offer1_text: text of offer
---
offer1_link: text of offer
---
offer2_title: Pro
---
offer2_text: text of offer
---
offer2_link: link of offer
---
offer3_title: Starter
---
offer3_text: text of offer
---
offer3_link: link of offer
---
content1_text: Text of the first content block
---
content1_image: https://hack4glarus.ch/static/ungleich_page/img/logo_black.svg
---

View file

@ -0,0 +1,55 @@
_discoverable: yes
---
_hidden: no
---
title: Private Search Engine
---
subtitle: Your own alternative to google
---
link: http://ungleich.ch
---
feature1_title: Have your own
---
You can provide search results from your own web sites without having
to rely on google.
---
feature2_title: Scalable
---
feature2_text:
Are you running a small team? Or are you a bigger
organisation? There is an instance that works for each of your
cases.
---
feature3_title: Open Source
---
feature3_text:
The chat server only consists of Open Source
Software. The software can easily be audited by third parties and its
security verified. It also does not lock you in with us. If you are
ever not happy with our service, you can take the data and host the
chat server somewhere else.
---
offer1_title: Regular
---
offer1_text: text of offer
---
offer1_link: text of offer
---
offer2_title: Pro
---
offer2_text: text of offer
---
offer2_link: link of offer
---
offer3_title: Starter
---
offer3_text: text of offer
---
offer3_link: link of offer
---
content1_text: Text of the first content block
---
content1_image: https://hack4glarus.ch/static/ungleich_page/img/logo_black.svg
---

View file

@ -0,0 +1,8 @@
_discoverable: yes
---
_hidden: no
---
title: Cloud Storage
---
subtitle: Stored safely in Switzerland
---

View file

@ -1,66 +0,0 @@
_discoverable: yes
---
_hidden: no
---
_model: testproduct
---
title: IPv6 VPN
---
subtitle: The IPv6 VPN allows you to reach the IPv6 Internet from everywhere!
---
link: http://ungleich.ch
---
feature1_title: title of feature
---
feature1_text: text of feature
---
feature3_title: title of feature
---
feature3_text: text of feature
---
offer1_title: title of offer
---
offer1_text: text of offer
---
offer1_link: text of offer
---
offer2_title: title of offer
---
offer2_text: text of offer
---
offer2_link: link of offer
---
offer3_title: title of offer
---
offer3_text: text of offer
---
offer3_link: link of offer
---
upper_content: upper content
---
lower_content: lower content
---
content1_text: Text of the first content block
---
content1_image: https://hack4glarus.ch/static/ungleich_page/img/logo_black.svg
---
---
---
description:
Something about the product
## Feature 1
...
## Feature 2
Something else
## Feature 3
and so on
so on

View file

@ -1,46 +0,0 @@
_discoverable: yes
---
_hidden: no
---
_model: testproduct
---
title: IPv6 VPN
---
subtitle: The IPv6 VPN allows you to reach the IPv6 Internet from everywhere!
---
link: http://ungleich.ch
---
feature1_title: title of feature
---
feature1_text: text of feature
---
feature2_title: title of feature
---
feature2_text: text of feature
---
feature3_title: title of feature
---
feature3_text: text of feature
---
offer1_title: title of offer
---
offer1_text: text of offer
---
offer1_link: text of offer
---
offer2_title: title of offer
---
offer2_text: text of offer
---
offer2_link: link of offer
---
offer3_title: title of offer
---
offer3_text: text of offer
---
offer3_link: link of offer
---
upper_content: upper content
---
lower_content: lower content
---

View file

@ -0,0 +1,8 @@
_discoverable: yes
---
_hidden: no
---
title: Virtual Machine Hosting
---
subtitle: Sustainable, green and safe
---

View file

@ -3,22 +3,96 @@ name = Product
label = {{ this.title }} label = {{ this.title }}
hidden = yes hidden = yes
[fields.name] [fields.title]
label = Product Name label = Title of the product
type = string type = string
size = large size = large
[fields.abstract] [fields.subtitle]
label = Abstract label = Subtitle
type = string type = string
width = 1/2
[fields.description] [fields.description]
label = Description label = Description
type = string type = markdown
width = 1/4
[fields.link] [fields.link]
label = Link label = Link
type = url type = url
width = 1/4 width = 1/4
[fields.feature1_title]
label = Feature1 Title
type = string
[fields.feature2_title]
label = Feature2 Title
type = string
[fields.feature3_title]
label = Feature3 Title
type = string
[fields.feature1_text]
label = Feature1 Text
type = text
[fields.feature2_text]
label = Feature2 Text
type = text
[fields.feature3_text]
label = Feature3 Text
type = text
[fields.content1_text]
label = Content1 Text
type = text
[fields.content1_image]
label = Content 1 Image
type = url
[fields.content2_text]
label = Content 2 Text
type = text
[fields.content2_image]
label = Content 2 Image
type = url
[fields.offer1_title]
label = Offer 1 Title
type = string
[fields.offer1_text]
label = Offer 1 Text
type = text
[fields.offer1_link]
label = Offer 1 Link
type = url
[fields.offer2_title]
label = Offer 2 Title
type = string
[fields.offer2_text]
label = Offer 2 Text
type = text
[fields.offer2_link]
label = Offer 2 Link
type = url
[fields.offer3_title]
label = Offer 3 Title
type = string
[fields.offer3_text]
label = Offer 3 Text
type = text
[fields.offer3_link]
label = Offer 3 Link
type = url

View file

@ -6,3 +6,6 @@ hidden = yes
[fields.title] [fields.title]
label = Title label = Title
type = string type = string
[children]
model = product

View file

@ -1,54 +0,0 @@
[model]
name = Product
label = {{ this.title }}
hidden = yes
[fields.title]
label = Title of the product
type = string
size = large
[fields.subtitle]
label = Subtitle
type = string
[fields.description]
label = Description
type = markdown
[fields.link]
label = Link
type = url
width = 1/4
[fields.feature1_title]
label = Feature1 Title
type = string
[fields.feature2_title]
label = Feature2 Title
type = string
[fields.feature3_title]
label = Feature3 Title
type = string
[fields.feature1_text]
label = Feature1 Text
type = string
[fields.feature2_text]
label = Feature2 Text
type = string
[fields.feature3_text]
label = Feature3 Text
type = string
[fields.content1_text]
label = Content1 Text
type = string
[fields.content1_image]
label = Content1 Image
type = url

View file

@ -5,8 +5,11 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS --> <!-- Bootstrap + helpers2 -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <link rel="stylesheet"
href="/u/static/bootstrap-4.4.1-dist/css/bootstrap.min.css">
<title>{% block title %}Welcome to {% endblock %} | ungleich.ch</title> <title>{% block title %}Welcome to {% endblock %} | ungleich.ch</title>
</head> </head>
@ -23,10 +26,16 @@
<div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto"> <ul class="navbar-nav mr-auto">
<li class="nav-item active"> <li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> <a class="nav-link" href="/blog/">Old Blog<a/>
</li>
<li class="nav-item active">
<a class="nav-link" href="/u/blog/">New Blog<a/>
</li>
<li class="nav-item active">
<a class="nav-link" href="https://chat.ungleich.ch/">Chat<a/>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="#">Link</a> <a class="nav-link" href="/u/products/">Products</a>
</li> </li>
</ul> </ul>
<form class="form-inline my-2 my-lg-0" <form class="form-inline my-2 my-lg-0"
@ -57,5 +66,13 @@
<a class=footer-link href="https://ungleich.ch">ungleich</a>.</span> <a class=footer-link href="https://ungleich.ch">ungleich</a>.</span>
</div> </div>
</footer> </footer>
<!-- slow javascript at the end -->
<script type="text/javascript"
src="/u/static/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript"
src="/u/static/popper.js-1.16.0/dist/esm/popper.min.js"></script>
<script type="text/javascript"
src="/u/static/bootstrap-4.4.1-dist/js/bootstrap.min.js"></script>
</body> </body>
</html> </html>

View file

@ -1,34 +1,87 @@
{% extends "layout.html" %} {% extends "layout-2020.html" %}
{% from "macros/blog.html" import render_blog_post %}
{% from "macros/pagination.html" import render_pagination %}
{% block title %}{{ this.title }}{% endblock %} {% block title %}{{ this.title }}{% endblock %}
{% block body %} {% block subtitle %}{{ this.subtitle }}{% endblock %}
<header class="intro-header" style="background-image: url('/u/static/images/home-bg.jpg');">
<div class="container"> {% block content %}
<div class="row"> <div class="container">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1"> <div class="row mb-5">
<div class="site-heading"> <div class="col-md-4">
<h1>ungleich store</h1> <h3 class="font-weight-normal">{{ this.feature1_title }}</h3>
<hr class="small"> <p class="font-weight-normal">{{ this.feature1_text }}</p>
<span class="subheading"></span> </div>
</div> <div class="col-md-4">
</div> <h3 class="font-weight-normal">{{ this.feature2_title }}</h3>
<p class="font-weight-normal">{{ this.feature2_text }}</p>
</div>
<div class="col-md-4">
<h3 class="font-weight-normal">{{ this.feature3_title }}</h3>
<p class="font-weight-normal">{{ this.feature3_text }}</p>
</div> </div>
</div> </div>
</header>
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">{{this.name}}</h3>
</div>
<div class="panel-body">
{{this.description}}
</div>
</div>
</div>
</div>
</div> </div>
<div class="container">
<div class="row mb-3">
<div class="col-md-7">
{{ this.content1_text }}
</div>
<div class="col-md-5">
{% if this.content1_image %}
<img src="{{ this.content1_image }}" class="img-fluid">
{% endif %}
</div>
</div>
</div>
<div class="container">
<div class="row mb-3">
<div class="col-md-4">
{% if this.offer1_title and this.offer1_text and this.offer1_link %}
<div class="card">
<div class="card-body">
<h5 class="card-title">{{ this.offer1_title }}</h5>
<p class="card-text">{{ this.offer1_text }}</p>
<a href="{{ this.offer1_link }}" class="btn btn-primary">Order</a>
</div>
</div>
{% endif %}
</div>
<div class="col-md-4">
{% if this.offer2_title and this.offer2_text and this.offer2_link %}
<div class="card">
<div class="card-body">
<h5 class="card-title">{{ this.offer2_title }}</h5>
<p class="card-text">{{ this.offer2_text }}</p>
<a href="{{ this.offer2_link }}" class="btn btn-primary">Order</a>
</div>
</div>
{% endif %}
</div>
<div class="col-md-4">
{% if this.offer3_title and this.offer3_text and this.offer3_link %}
<div class="card">
<div class="card-body">
<h5 class="card-title">{{ this.offer3_title }}</h5>
<p class="card-text">{{ this.offer3_text }}</p>
<a href="{{ this.offer3_link }}" class="btn btn-primary">Order</a>
</div>
</div>
{% endif %}
</div>
</div>
</div>
<hr/>
<div class="container">
<div class="row mb-3">
<div class="col-md-7">
{{ this.content2_text }}
</div>
<div class="col-md-5">
{% if this.content2_image %}
<img src="{{ this.content2_image }}" class="img-fluid">
{% endif %}
</div>
</div>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -1,37 +1,31 @@
{% extends "layout.html" %} {% extends "layout-2020.html" %}
{% from "macros/blog.html" import render_blog_post %}
{% from "macros/pagination.html" import render_pagination %}
{% block title %}{{ this.title }}{% endblock %} {% block title %}{{ this.title }}{% endblock %}
{% block body %} {% block content %}
<header class="intro-header" style="background-image: url('/u/static/images/home-bg.jpg');">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="site-heading">
<h1>Products</h1>
<hr class="small">
<span class="subheading"></span>
</div>
</div>
</div>
</div>
</header>
<div class="container"> <div class="container">
<div class="row"> {% for product in this.children %}
{% for product in this.children %} {% if loop.first %}
<div class="col-md-3"> <div class="row mb-3">
<div class="panel panel-primary"> {% endif %}
<div class="panel-heading"> <div class="col-md-4">
<h2 class="panel-title">{{ product.name}}</h2> <div class="card">
</div> <div class="card-body">
<div class="panel-body"> <h5 class="card-title">{{ product.title }}</h5>
{{product.teaser}} <p class="card-text">{{ product.subtitle }}</p>
<a class="btn btn-primary" href="{{ product|url }}">Check it out</a>
</div> </div>
</div> </div>
</div> </div>
{% endfor %} {% if loop.index is divisibleby 3 %}
</div>
<hr/>
<div class="row">
{% endif %}
{% if loop.last %}
</div>
{% endif %}
{% endfor %}
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,82 +0,0 @@
{% extends "layout-2020.html" %}
{% block title %}{{ this.title }}{% endblock %}
{% block subtitle %}{{ this.subtitle }}{% endblock %}
{% block content %}
<div class="container">
<div class="row mb-5">
<div class="col-md-4">
<h3 class="font-weight-normal">{{ this.feature1_title }}</h3>
<p class="font-weight-normal">{{ this.feature1_text }}</p>
</div>
<div class="col-md-4">
<h3 class="font-weight-normal">{{ this.feature2_title }}</h3>
<p class="font-weight-normal">{{ this.feature2_text }}</p>
</div>
<div class="col-md-4">
<h3 class="font-weight-normal">{{ this.feature3_title }}</h3>
<p class="font-weight-normal">{{ this.feature3_text }}</p>
</div>
</div>
</div>
<div class="container">
<div class="row mb-3">
<div class="col-md-7">
{{ this.content1_text }}
</div>
<div class="col-md-5">
{% if this.content1_image %}
<img src="{{ this.content1_image }}" class="img-fluid">
{% endif %}
</div>
</div>
</div>
<div class="container">
<div class="row mb-3">
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">Offer 1</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">Offer 2</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">Offer 3</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
</div>
</div>
<hr/>
<div class="container">
<div class="row mb-3">
<div class="col-md-7">
{{ this.content2_text }}
</div>
<div class="col-md-5">
{% if this.content2_image %}
<img src="{{ this.content2_image }}" class="img-fluid">
{% endif %}
</div>
</div>
</div>
{% endblock %}