Browse Source

phase in products

refactoring
Nico Schottelius 3 years ago
parent
commit
cb3e54a4e0
  1. 11
      content/u/products/ipv6-only-hosting/contents.lr
  2. 11
      content/u/products/ipv6vpn/contents.lr
  3. 26
      models/product.ini
  4. 8
      models/products.ini
  5. 29
      templates/macros/product.html
  6. 226
      templates/product.html
  7. 107
      templates/products.html

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

@ -0,0 +1,11 @@
name: IPv6 Only Hosting
---
buy_link: https://google.com
---
description: Hi there this is descriptino
---
_discoverable: yes
---
_hidden: no
---
teaser: We provide best IPv6 only hosting

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

@ -0,0 +1,11 @@
name: IPv6 VPN
---
_discoverable: yes
---
_hidden: no
---
buy_link: http://ungleich.ch
---
description: This is description
---
teaser: This is teaser

26
models/product.ini

@ -1,17 +1,25 @@
[model]
name = Product name
name = Product
label = {{ this.title }}
hidden = yes
[fields.title]
label = Title
[fields.name]
label = Product Name
type = string
size = large
[fields.body]
label = Body
type = markdown
[fields.teaser]
label = Teaser
type = string
width = 1/2
[fields.description]
label = Description
type = string
width = 1/4
addon_label = @
[fields.abstract]
label = Abstract
type = markdown
[fields.buy_link]
label = Buy Link
type = url
width = 1/4

8
models/products.ini

@ -0,0 +1,8 @@
[model]
name = Products
label = Products
hidden = yes
[fields.title]
label = Title
type = string

29
templates/macros/product.html

@ -0,0 +1,29 @@
{% macro render_product(product, from_index=false) %}
{% if from_index %}
<div class="post-preview">
<div class="row">
<div class="col-md-4">
{% set image = product.attachments.images.first() %}
<h2><a href="{{ product|url }}">{% if image %}<img src="{{ image.thumbnail(240)|url }}" alt=""/>{% else %}<div class="blog-post-placeholder"></div>{% endif %}</a></h2>
</div>
<div class="col-md-8">
{% if from_index %}<a href="{{ product|url }}"><h2 class="post-title">{{ post.title }}</h2></a>
{% else %}
<h2 class="post-title">{{ product.title }}</h2>
{% endif %}
<p class="post-meta" style="font-size:0.9em;">
Posted on {{ product.pub_date }} by {% if product.twitter_handle %}<a href="https://twitter.com/{{ post.twitter_handle }}">{{ post.author or post.twitter_handle }}</a>{% else %}{{ post.author }} {% endif %}
</p>
<p class="post-subtitle">
<p>
{{ product.abstract }}
</p>
</p>
</div>
</div>
<hr>
</div>
{% else %}
{{ product.body }}
{% endif %}
{% endmacro %}

226
templates/product.html

@ -1,143 +1,105 @@
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<!-- <!doctype html>
<head>
<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">
<title>{{ this.title }}</title>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="https://ungleich.ch">ungleich</a>
<button class="navbar-toggler" type="button"
data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<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>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0"
action="https://search.ungleich.ch/yacysearch.html" method="get">
<input class="form-control mr-sm-2" type="search"
placeholder="Search" name="query" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
<div class="position-relative overflow-hidden p-3 p-md-5 m-md-3 text-center bg-light">
<div class="col-md-5 p-lg-5 mx-auto my-5">
<h1 class="display-4 font-weight-normal">Punny headline</h1>
<p class="lead font-weight-normal">And an even wittier subheading
to boot. Jumpstart your marketing efforts with this example based
on Apple’s marketing pages.</p>
<a class="btn btn-outline-secondary" href="#">Get it here!</a>
</div>
<div class="product-device shadow-sm d-none d-md-block"></div>
<div class="product-device product-device-2 shadow-sm d-none d-md-block"></div>
</div>
<div class="container">
<div class="row mb-3">
<div class="col-md-4">
<h3 class="font-weight-normal">Punny headlineX</h3>
<p class="font-weight-normal">And an even wittier subheading
to boot. Jumpstart your marketing efforts with this example based
on Apple’s marketing pages.</p>
<a class="btn btn-outline-secondary" href="#">Get it here!</a>
<title>the new ungleich blog | ungleich.ch</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Affordable VM hosting in Glarus, Switzerland, operated by 100% hydropower. Devuan, debian, freebsd, ubuntu, centos. Our tech stack is fully open source.">
<meta name="author" content="ungleich glarus ag">
<link href="https://ungleich.ch/u/static/css/bootstrap-3.3.4/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="https://ungleich.ch/u/static/css/font-awesome-4.1.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://ungleich.ch/u/static/css/clean-blog.css" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="https://ungleich.ch/u/static/images/favicon.ico"/>
<script type="text/javascript" src="https://ungleich.ch/u/static/js/jquery.js"></script>
<script type="text/javascript" src="https://ungleich.ch/u/static/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="jumbotron">
<h1>Welcome to ungleich's store.</h1>
<p>Here you can find all the good things. </p>
<p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
</div>
</div>
<div class="col-md-4">
<h3 class="font-weight-normal">Punny headlineX</h3>
<p class="font-weight-normal">And an even wittier subheading
to boot. Jumpstart your marketing efforts with this example based
on Apple’s marketing pages.</p>
<a class="btn btn-outline-secondary" href="#">Get it here!</a>
<div class="row">
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">IPv6 VPN</h3>
</div>
<div class="panel-body">
The ungleich IPv6 VPN enables you to have IPv6 anywhere in the world. There are active VPNs in Germany, Croatia, South Korea, China, Spain, ... you name it! Coming with a /48 network, you have plenty of IPv6 space that even allows you to create more than 65'000 standard (/64) networks for yourself. One for the office, one for the coworkers, one for the servers, one for the dog and so on and on.
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">IPv6 Backuo</h3>
</div>
<div class="panel-body">
IPv6 is quickly replacing IPv4 now world wide and more and more servers are only reachable by IPv6. So a backup without IPv6 is not future ready.
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">IPv6 Only Hosting</h3>
</div>
<div class="panel-body">
Our VMs have pure IPv6 connectivity. However using DNS64 and NAT64, they still can reach the old IPv4 Internet.
Secure, easy, and simple. It will be running in few seconds.
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Product 4</h3>
</div>
<div class="panel-body">
Panel content
</div>
</div>
</div>
</div>
<div class="col-md-4">
<h3 class="font-weight-normal">Punny headlineX</h3>
<p class="font-weight-normal">And an even wittier subheading
to boot. Jumpstart your marketing efforts with this example based
on Apple’s marketing pages.</p>
<a class="btn btn-outline-secondary" href="#">Get it here!</a>
</div>
</body> -->
{% extends "layout.html" %}
{% from "macros/blog.html" import render_blog_post %}
{% from "macros/pagination.html" import render_pagination %}
{% 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>
</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">Card title</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>
</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>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">Card title</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">Card title</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 class="panel-body">
{{this.description}}
</div>
</div>
</div>
</div>
</div>
<hr/>
<div class="container">
<div class="row mb-3">
<div class="col-md-7">
Pellentesque aliquam ac elit in rutrum. Cras hendrerit lorem pharetra lectus porttitor, vel maximus lorem viverra. Mauris blandit nulla lectus, sed cursus elit dictum vitae. Donec ullamcorper enim ac lectus laoreet, non tincidunt lorem suscipit.
</div>
<div class="col-md-5">
<img src="https://hack4glarus.ch/static/ungleich_page/img/logo_black.svg" class="img-fluid">
</div>
</div>
</div>
<footer class="footer mt-auto py-3">
<div class="container">
<span class="text-muted">Copyright
<a class=footer-link href="https://ungleich.ch">ungleich</a>.</span>
</div>
</footer>
</body>
</html>
</div>
</div>
{% endblock %}

107
templates/products.html

@ -0,0 +1,107 @@
<!-- <!doctype html>
<head>
<meta charset="utf-8">
<title>the new ungleich blog | ungleich.ch</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Affordable VM hosting in Glarus, Switzerland, operated by 100% hydropower. Devuan, debian, freebsd, ubuntu, centos. Our tech stack is fully open source.">
<meta name="author" content="ungleich glarus ag">
<link href="https://ungleich.ch/u/static/css/bootstrap-3.3.4/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="https://ungleich.ch/u/static/css/font-awesome-4.1.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://ungleich.ch/u/static/css/clean-blog.css" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="https://ungleich.ch/u/static/images/favicon.ico"/>
<script type="text/javascript" src="https://ungleich.ch/u/static/js/jquery.js"></script>
<script type="text/javascript" src="https://ungleich.ch/u/static/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="jumbotron">
<h1>Welcome to ungleich's store.</h1>
<p>Here you can find all the good things. </p>
<p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
</div>
</div>
<div class="row">
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">IPv6 VPN</h3>
</div>
<div class="panel-body">
The ungleich IPv6 VPN enables you to have IPv6 anywhere in the world. There are active VPNs in Germany, Croatia, South Korea, China, Spain, ... you name it! Coming with a /48 network, you have plenty of IPv6 space that even allows you to create more than 65'000 standard (/64) networks for yourself. One for the office, one for the coworkers, one for the servers, one for the dog and so on and on.
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">IPv6 Backuo</h3>
</div>
<div class="panel-body">
IPv6 is quickly replacing IPv4 now world wide and more and more servers are only reachable by IPv6. So a backup without IPv6 is not future ready.
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">IPv6 Only Hosting</h3>
</div>
<div class="panel-body">
Our VMs have pure IPv6 connectivity. However using DNS64 and NAT64, they still can reach the old IPv4 Internet.
Secure, easy, and simple. It will be running in few seconds.
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Product 4</h3>
</div>
<div class="panel-body">
Panel content
</div>
</div>
</div>
</div>
</div>
</body> -->
{% extends "layout.html" %}
{% from "macros/blog.html" import render_blog_post %}
{% from "macros/pagination.html" import render_pagination %}
{% 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>
</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}}</h3>
</div>
<div class="panel-body">
{{product.teaser}}
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock %}
Loading…
Cancel
Save