Browse Source

Bootstrap products

refactoring
Nico Schottelius 3 years ago
parent
commit
5f0f8f66db
  1. 6
      Makefile
  2. 8
      content/u/products/cloud-backup/contents.lr
  3. 4
      content/u/products/contents.lr
  4. 8
      content/u/products/ipv4-to-ipv6-proxy/contents.lr
  5. 8
      content/u/products/ipv6-only-hosting/contents.lr
  6. 5
      content/u/products/ipv6vpn/contents.lr
  7. 55
      content/u/products/privacy-chat/contents.lr
  8. 55
      content/u/products/private-search-engine/contents.lr
  9. 8
      content/u/products/storage-glarnercloud/contents.lr
  10. 66
      content/u/products/test-desc/contents.lr
  11. 46
      content/u/products/test-nondesc/contents.lr
  12. 8
      content/u/products/virtual-machine-hosting/contents.lr
  13. 88
      models/product.ini
  14. 3
      models/products.ini
  15. 54
      models/testproduct.ini
  16. 25
      templates/layout-2020.html
  17. 101
      templates/product.html
  18. 48
      templates/products.html
  19. 82
      templates/testproduct.html

6
Makefile

@ -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)

8
content/u/products/cloud-backup/contents.lr

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

4
content/u/products/contents.lr

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

8
content/u/products/ipv4-to-ipv6-proxy/contents.lr

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

8
content/u/products/ipv6-only-hosting/contents.lr

@ -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

5
content/u/products/ipv6vpn/contents.lr

@ -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

55
content/u/products/privacy-chat/contents.lr

@ -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
---

55
content/u/products/private-search-engine/contents.lr

@ -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
---

8
content/u/products/storage-glarnercloud/contents.lr

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

66
content/u/products/test-desc/contents.lr

@ -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

46
content/u/products/test-nondesc/contents.lr

@ -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
---

8
content/u/products/virtual-machine-hosting/contents.lr

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

88
models/product.ini

@ -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

3
models/products.ini

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

54
models/testproduct.ini

@ -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

25
templates/layout-2020.html

@ -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>

101
templates/product.html

@ -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>
{% 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">
{% 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>
</header>
</div>
<hr/>
<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 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 %}

48
templates/products.html

@ -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>

82
templates/testproduct.html

@ -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 %}
Loading…
Cancel
Save