From 615dc56d165526e6568f317cd65cf7286552fb3d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 30 Dec 2019 23:54:13 +0100 Subject: [PATCH] ++ product stuff --- assets/u/static/js/popper.min.js | 5 ++ content/u/products/test-desc/contents.lr | 66 ++++++++++++++ content/u/products/test-nondesc/contents.lr | 46 ++++++++++ content/u/testproduct/contents.lr | 15 ---- models/testproduct.ini | 40 ++++++++- templates/layout-2020.html | 97 +-------------------- templates/testproduct.html | 95 +++++++++++++++----- 7 files changed, 228 insertions(+), 136 deletions(-) create mode 100644 assets/u/static/js/popper.min.js create mode 100644 content/u/products/test-desc/contents.lr create mode 100644 content/u/products/test-nondesc/contents.lr delete mode 100644 content/u/testproduct/contents.lr diff --git a/assets/u/static/js/popper.min.js b/assets/u/static/js/popper.min.js new file mode 100644 index 0000000..8a17212 --- /dev/null +++ b/assets/u/static/js/popper.min.js @@ -0,0 +1,5 @@ +/* + Copyright (C) Federico Zivolo 2019 + Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). + */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function i(e){return e&&e.referenceNode?e.referenceNode:e}function r(e){return 11===e?re:10===e?pe:re||pe}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1=o.clientWidth&&n>=o.clientHeight}),l=0a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),ae({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=le({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-us[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},ae(n,m,$(v)),ae(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ce.FLIP:p=[n,i];break;case ce.CLOCKWISE:p=G(n);break;case ce.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)f(l.top)||'bottom'===n&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u),E=!!t.flipVariationsByContent&&(w&&'start'===r&&c||w&&'end'===r&&h||!w&&'start'===r&&u||!w&&'end'===r&&g),v=y||E;(m||b||v)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),v&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=le({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport',flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.rightwindow.devicePixelRatio||!fe),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=B('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=le({},E,e.attributes),e.styles=le({},m,e.styles),e.arrowStyles=le({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return V(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&V(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),V(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ge}); +//# sourceMappingURL=popper.min.js.map diff --git a/content/u/products/test-desc/contents.lr b/content/u/products/test-desc/contents.lr new file mode 100644 index 0000000..576c7df --- /dev/null +++ b/content/u/products/test-desc/contents.lr @@ -0,0 +1,66 @@ +_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 diff --git a/content/u/products/test-nondesc/contents.lr b/content/u/products/test-nondesc/contents.lr new file mode 100644 index 0000000..99aef34 --- /dev/null +++ b/content/u/products/test-nondesc/contents.lr @@ -0,0 +1,46 @@ +_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 +--- diff --git a/content/u/testproduct/contents.lr b/content/u/testproduct/contents.lr deleted file mode 100644 index 4b8adcd..0000000 --- a/content/u/testproduct/contents.lr +++ /dev/null @@ -1,15 +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 ---- -description: This is description ---- -teaser: This is teaser diff --git a/models/testproduct.ini b/models/testproduct.ini index 6ff1ce9..588734a 100644 --- a/models/testproduct.ini +++ b/models/testproduct.ini @@ -4,15 +4,51 @@ label = {{ this.title }} hidden = yes [fields.title] -label = Product Name +label = Title of the product type = string size = large [fields.subtitle] -label = 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 diff --git a/templates/layout-2020.html b/templates/layout-2020.html index 00476b1..6359230 100644 --- a/templates/layout-2020.html +++ b/templates/layout-2020.html @@ -28,20 +28,6 @@ - -
@@ -52,7 +38,6 @@ -

{{ self.title() }}

@@ -64,85 +49,7 @@
-
-
-
-

Feature1

-

And an even wittier subheading - to boot. Jumpstart your marketing efforts with this example based - on Apple’s marketing pages.

-
-
-

feature2

-

And an even wittier subheading - to boot. Jumpstart your marketing efforts with this example based - on Apple’s marketing pages.

-
-
-

feature3

-

And an even wittier subheading - to boot. Jumpstart your marketing efforts with this example based - on Apple’s marketing pages.

-
-
-
- -
-
-
- UPPER-CONTENT non caps! -
-
- -
-
-
- -
-
-
-
-
-
Offer 1
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Go somewhere -
-
-
-
-
-
-
Offer 2
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Go somewhere -
-
-
-
-
-
-
Offer 3
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Go somewhere -
-
-
-
-
- -
- -
-
-
- LOWER-CONTENT -
-
- -
-
-
- + {% block content %}{% endblock %} - - diff --git a/templates/testproduct.html b/templates/testproduct.html index 8bf91e6..f65e7d6 100644 --- a/templates/testproduct.html +++ b/templates/testproduct.html @@ -1,33 +1,82 @@ {% extends "layout-2020.html" %} {% block title %}{{ this.title }}{% endblock %} {% block subtitle %}{{ this.subtitle }}{% endblock %} -{% block body %} -
-
-
-
-
-

ungleich store

-
- + +{% block content %} +
+
+
+

{{ this.feature1_title }}

+

{{ this.feature1_text }}

+
+
+

{{ this.feature2_title }}

+

{{ this.feature2_text }}

+
+
+

{{ this.feature3_title }}

+

{{ this.feature3_text }}

+
+
+
+ +
+
+
+ {{ this.content1_text }} +
+
+ {% if this.content1_image %} + + {% endif %} +
+
+
+ +
+
+
+
+
+
Offer 1
+

Some quick example text to build on the card title and make up the bulk of the card's content.

+ Go somewhere +
+
+
+
+
+
+
Offer 2
+

Some quick example text to build on the card title and make up the bulk of the card's content.

+ Go somewhere +
+
+
+
+
+
+
Offer 3
+

Some quick example text to build on the card title and make up the bulk of the card's content.

+ Go somewhere
-
-
-
-
-
-
-

{{this.name}}

-
-
- {{this.description}} -
-
-
-
+ +
+ +
+
+
+ {{ this.content2_text }} +
+
+ {% if this.content2_image %} + + {% endif %} +
+
{% endblock %}