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
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
@ -7,7 +7,7 @@ pull:
git pull
publish: pull build permissions
rsync -av --exclude .lektor/ $(BUILDDIR)/ $(DESTINATION)
rsync -av --delete --exclude .lektor/ $(BUILDDIR)/u/ $(DESTINATION)
permissions: build
find $(BUILDDIR) -type f -exec chmod 0644 {} \;
@ -17,4 +17,4 @@ build:
lektor build -O $(BUILDDIR)
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
---
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
---
@ -6,8 +6,4 @@ _discoverable: yes
---
_hidden: no
---
abstract: We provide best IPv6 only hosting
---
description:
Hi there this is descriptino
subtitle: We provide best IPv6 only hosting

View file

@ -1,4 +1,4 @@
name: IPv6 VPN
title: IPv6 VPN
---
_discoverable: yes
---
@ -6,6 +6,5 @@ _hidden: no
---
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 }}
hidden = yes
[fields.name]
label = Product Name
[fields.title]
label = Title of the product
type = string
size = large
[fields.abstract]
label = Abstract
[fields.subtitle]
label = Subtitle
type = string
width = 1/2
[fields.description]
label = Description
type = string
width = 1/4
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 = 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]
label = Title
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 name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<!-- Bootstrap + helpers2 -->
<link rel="stylesheet"
href="/u/static/bootstrap-4.4.1-dist/css/bootstrap.min.css">
<title>{% block title %}Welcome to {% endblock %} | ungleich.ch</title>
</head>
@ -23,10 +26,16 @@
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<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 class="nav-item">
<a class="nav-link" href="#">Link</a>
<a class="nav-link" href="/u/products/">Products</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0"
@ -57,5 +66,13 @@
<a class=footer-link href="https://ungleich.ch">ungleich</a>.</span>
</div>
</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>
</html>

View file

@ -1,34 +1,87 @@
{% extends "layout.html" %}
{% from "macros/blog.html" import render_blog_post %}
{% from "macros/pagination.html" import render_pagination %}
{% extends "layout-2020.html" %}
{% block title %}{{ this.title }}{% endblock %}
{% block body %}
<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>ungleich store</h1>
<hr class="small">
<span class="subheading"></span>
</div>
</div>
{% 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>
</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 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>
{% endblock %}

View file

@ -1,37 +1,31 @@
{% extends "layout.html" %}
{% from "macros/blog.html" import render_blog_post %}
{% from "macros/pagination.html" import render_pagination %}
{% extends "layout-2020.html" %}
{% 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="row">
{% for product in this.children %}
<div class="col-md-3">
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="panel-title">{{ product.name}}</h2>
</div>
<div class="panel-body">
{{product.teaser}}
{% for product in this.children %}
{% if loop.first %}
<div class="row mb-3">
{% endif %}
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">{{ product.title }}</h5>
<p class="card-text">{{ product.subtitle }}</p>
<a class="btn btn-primary" href="{{ product|url }}">Check it out</a>
</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>

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 %}