taler-www

Main taler.net website
Log | Files | Refs | Submodules | README | LICENSE

commit 20fa275c14022061e505d3f6b46669891377c05b
parent 130013dfe68e977decc0f82c30b673b4a4abb593
Author: Andreas HABEGGER <andreas.habegger@bfh.ch>
Date:   Mon, 27 Nov 2023 23:49:30 +0100

Added events board; deliverables board

Diffstat:
Aproperties.d/deliverables_eu-project.yml | 22++++++++++++++++++++++
Aproperties.d/events_eu-project.yml | 46++++++++++++++++++++++++++++++++++++++++++++++
Mstatic/styles.css | 253+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Mtemplate/consortium.html.j2 | 173++++++++++++++++++++++++++++++++-----------------------------------------------
4 files changed, 270 insertions(+), 224 deletions(-)

diff --git a/properties.d/deliverables_eu-project.yml b/properties.d/deliverables_eu-project.yml @@ -0,0 +1,21 @@ +deliverables: + # - title: TITLE + # page: + # url_pdf: + # workpackage: WP ? + # comment: + - title: List group item heading + page: + url_pdf: "papers/boss2022thesis.pdf" + workpackage: WP 1 + comment: Some placeholder content in a paragraph. + - title: List group item heading + page: news/2023-09.html + url_pdf: + workpackage: WP 3 + comment: TBD + - title: List group item heading + page: + url_pdf: + workpackage: WP 5 + comment: Placeholder +\ No newline at end of file diff --git a/properties.d/events_eu-project.yml b/properties.d/events_eu-project.yml @@ -0,0 +1,45 @@ +### template item + # - date: + # titel: + # url_img: + # url_ext: + # url_html: + # teaser: + # location: + # speaker: + # email: + +events: + - date: 2023-12-01 + titel: Carving a way out of surveillance capitalism + url_img: images/9-competition.svg + url_ext: https://www.tedxgeneva.net/ + url_html: + teaser: "" + location: | + Chem. des Crêts 17 + 1209 Geneva, Switzerland + speaker: Marie Walrafen + email: mw'AT'taler.net + - date: 2023-12-08 + titel: "Introduction to GNU Taler" + url_img: images/diagram-simple.png + url_ext: https://moztw.kktix.cc/events/gnu-taler + url_html: + teaser: In this lecture, we will introduce the political goals, architecture and technology behind Taler, demonstrate the current state of development and outline likely future developments. + location: | + Mozilla Community Space Taipei + 台北市中正區八德路一段 94 號 3F + speaker: Christian Grothoff + email: cg'AT'taler.net + - date: 2023-12-21 + titel: Privacy in e-commerce + url_img: + url_ext: + url_html: + teaser: GNU Taler is a privacy-preserving payment system. Customers can stay anonymous, but merchants can not hide their income through payments with GNU Taler. This helps to avoid tax evasion and money laundering. + location: | + Freedom of the Internet Meetup + Taipei + speaker: Christian Empty + email: cg'AT'taler.net +\ No newline at end of file diff --git a/static/styles.css b/static/styles.css @@ -1,19 +1,18 @@ - .lang-slector { - float: right; - padding-top: 2mm; - padding-bottom: 4mm; - margin-left: 15px; - margin-right: 15px; + float: right; + padding-top: 2mm; + padding-bottom: 4mm; + margin-left: 15px; + margin-right: 15px; } html { - overflow-y: scroll; + overflow-y: scroll; } ul nav { - background-color: rgb(8,8,8); - border-radius: 0px; + background-color: rgb(8, 8, 8); + border-radius: 0px; } .c_acronym { @@ -31,47 +30,45 @@ ul nav { color: #fff; } -.extension.row > .col-lg-6 { +.extension.row>.col-lg-6 { padding-bottom: 2em; } a, a:link, a:visited { - text-decoration: underline; - color: black; + text-decoration: underline; + color: black; } nav a, nav a:link, nav a:visited { - text-decoration: none; + text-decoration: none; } .navbar-light .navbar-nav .nav-link { - /* 0,0,0,.5 makes it problematic to read, + /* 0,0,0,.5 makes it problematic to read, simply black is less problematic */ - color: rgb(0, 0, 0); - text-decoration: underline; + color: rgb(0, 0, 0); + text-decoration: underline; } -.skip -{ -position:absolute; -left:-10000px; -top:auto; -width:1px; -height:1px; -overflow:hidden; +.skip { + position: absolute; + left: -10000px; + top: auto; + width: 1px; + height: 1px; + overflow: hidden; } -.skip:focus -{ -position:static; -width:auto; -height:auto; -background: white; -padding: 5px; +.skip:focus { + position: static; + width: auto; + height: auto; + background: white; + padding: 5px; } #body_content a:hover { @@ -91,7 +88,7 @@ padding: 5px; } .mobile-lang { - margin-left:5px; + margin-left: 5px; margin-top: 8px; } @@ -118,7 +115,7 @@ footer { #mybody nav { - border-radius: 0px; + border-radius: 0px; } footer { @@ -198,36 +195,38 @@ footer { margin-bottom: 5px; } - ul.timeline { - list-style-type: none; - position: relative; + list-style-type: none; + position: relative; } + ul.timeline:before { - content: ' '; - background: #d4d9df; - display: inline-block; - position: absolute; - left: 29px; - width: 2px; - height: 100%; - z-index: 400; -} -ul.timeline > li { - margin: 20px 0; - padding-left: 20px; -} -ul.timeline > li:before { - content: ' '; - background: white; - display: inline-block; - position: absolute; - border-radius: 50%; - border: 3px solid #22c0e8; - left: 20px; - width: 20px; - height: 20px; - z-index: 400; + content: ' '; + background: #d4d9df; + display: inline-block; + position: absolute; + left: 29px; + width: 2px; + height: 100%; + z-index: 400; +} + +ul.timeline>li { + margin: 20px 0; + padding-left: 20px; +} + +ul.timeline>li:before { + content: ' '; + background: white; + display: inline-block; + position: absolute; + border-radius: 50%; + border: 3px solid #22c0e8; + left: 20px; + width: 20px; + height: 20px; + z-index: 400; } .section-consortium .divider { @@ -279,20 +278,27 @@ ul.timeline > li:before { } +.consortium a, +.consortium a:link, +.consortium a:visited { + text-decoration: none; + color: #999; +} + .consortium h4 { - color: #555; - text-align: left; - text-transform: uppercase; - font-weight: bold; - position: relative; - margin: 30px 0 60px; + color: #555; + text-align: left; + text-transform: uppercase; + font-weight: bold; + position: relative; + margin: 30px 0 60px; padding: 5px; } .consortium h4::after { - content: ""; - width: 170px; - position: absolute; + content: ""; + width: 170px; + position: absolute; text-align: left; height: 13%; bottom: 0; @@ -301,103 +307,107 @@ ul.timeline > li:before { z-index: -1; } -.consortium .list-group{ +.consortium .list-group { max-height: 345px; margin-bottom: 10px; - overflow:scroll; + overflow: scroll; -webkit-overflow-scrolling: touch; } -.consortium .mb-1{ +.consortium .mb-1 { color: #555; } -.consortium .list-group-item, .consortium .list-group-item-action { +.consortium .list-group-item, +.consortium .list-group-item-action { text-decoration: none; } .announce .col-center { - margin: 0 auto; - float: none !important; + margin: 0 auto; + float: none !important; } .announce .carousel { - padding: 0 70px; + padding: 0 70px; } .announce .carousel .carousel-item { - color: #999; - font-size: 14px; - text-align: center; - overflow: hidden; - min-height: 290px; + color: #999; + font-size: 14px; + text-align: center; + overflow: hidden; + min-height: 290px; } .announce .carousel .carousel-item .img-box { - width: 258px; - height: 160px; - margin: 0 auto; - padding: 5px; - border: 1px solid #ddd; - border-radius: 5%; + width: 258px; + height: 160px; + margin: 0 auto; + padding: 5px; + border: 1px solid #ddd; + border-radius: 5%; } .announce .carousel .img-box img { - width: 100%; - height: 100%; - display: block; - border-radius: 5px; + width: 100%; + height: 100%; + display: block; + border-radius: 5px; } .announce .carousel .testimonial { - padding: 30px 0 10px; + padding: 30px 0 10px; } .announce .carousel .overview { - font-style: italic; + font-style: italic; } .announce .carousel .overview b { - text-transform: uppercase; - color: #86b7fe; + text-transform: uppercase; + color: #86b7fe; } -.announce .carousel-control-prev, .announce .carousel-control-next { - width: 40px; - height: 40px; - margin-top: -20px; - top: 50%; - background: none; +.announce .carousel-control-prev, +.announce .carousel-control-next { + width: 40px; + height: 40px; + margin-top: -20px; + top: 50%; + background: none; } -.announce .carousel-control-prev i, .announce .carousel-control-next i { - font-size: 68px; - line-height: 42px; - position: absolute; - display: inline-block; - color: rgba(0, 0, 0, 0.8); - text-shadow: 0 3px 3px #e6e6e6, 0 0 0 #000; +.announce .carousel-control-prev i, +.announce .carousel-control-next i { + font-size: 68px; + line-height: 42px; + position: absolute; + display: inline-block; + color: rgba(0, 0, 0, 0.8); + text-shadow: 0 3px 3px #e6e6e6, 0 0 0 #000; } .announce .carousel-indicators { - bottom: -40px; + bottom: -40px; } -.announce .carousel-indicators button, .announce .carousel-indicators button.active { - width: 12px; - height: 12px; - margin: 1px 3px; - border-radius: 50%; - border: none; +.announce .carousel-indicators button, +.announce .carousel-indicators button.active { + width: 12px; + height: 12px; + margin: 1px 3px; + border-radius: 50%; + border: none; } .announce .carousel-indicators button { - background: #999; - border-color: transparent; - box-shadow: inset 0 2px 1px rgba(0,0,0,0.2); + background: #999; + border-color: transparent; + box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.2); } .announce .carousel-indicators button.active { - background: #555; - box-shadow: inset 0 2px 1px rgba(0,0,0,0.2); -} + background: #555; + box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.2); +} +\ No newline at end of file diff --git a/template/consortium.html.j2 b/template/consortium.html.j2 @@ -2,6 +2,22 @@ {% block body_content %} <main id="maincontent"> + {# + <script> + window.onload = function () { + var span = document.createElement('span'); + + span.className = 'fas'; + span.style.display = 'none'; + document.body.insertBefore(span, document.body.firstChild); + + alert(window.getComputedStyle(span, null).getPropertyValue('font-family')); + + document.body.removeChild(span); + }; + </script> + #} + <div class="container consortium dark-grey-text"> <div class="row"> @@ -9,125 +25,78 @@ <h4 class="font-weight-bold pb-2 mb-4">{{ _("Events")}}</h4> <div class="container announce"> <div id="AnnouncCarousel" class="carousel slide" data-bs-ride="carousel"> - <!-- Carousel indicators --> <div class="carousel-indicators"> - <button data-bs-target="#AnnouncCarousel" data-bs-slide-to="0" class="active" aria-current="true" - aria-label="Slide 1"></button> - <button type="button" data-bs-target="#AnnouncCarousel" data-bs-slide-to="1" - aria-label="Slide 2"></button> - <button type="button" data-bs-target="#AnnouncCarousel" data-bs-slide-to="2" - aria-label="Slide 3"></button> - <button type="button" data-bs-target="#AnnouncCarousel" data-bs-slide-to="3" - aria-label="Slide 4"></button> + {% for number in range(0, conf['events']|count) %} + <button data-bs-target="#AnnouncCarousel" data-bs-slide-to="{{ number }}" {% if number==0 %} + class="active" {% endif %} aria-current="true" aria-label="Slide {{ number + 1 }}"></button> + {% endfor %} </div> <!-- Wrapper for carousel items --> - <div class="carousel-inner"> - <div class="carousel-item active" data-bs-interval="2000"> - <div class="img-box"><img src="{{ url('images/7-efficient.svg') }}" alt=""></div> - <p class="testimonial">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu sem tempor, - varius quam at, luctus dui. Mauris magna metus, dapibus nec turpis vel, semper malesuada ante. - Idac bibendum scelerisque non non purus. Suspendisse varius nibh non aliquet.</p> - <p class="overview"><b>Paula Taler</b>, Professor</p> - </div> - <div class="carousel-item" data-bs-interval="2000"> - <div class="img-box"><img src="{{ url('images/taler-arch-full.svg') }}" alt=""></div> - <p class="testimonial">Vestibulum quis quam ut magna consequat faucibus. Pellentesque eget nisi a mi - suscipit tincidunt. Utmtc tempus dictum risus. Pellentesque viverra sagittis quam at mattis. - Suspendisse potenti. Aliquam sit amet gravida nibh, facilisis gravida odio.</p> - <p class="overview"><b>Antonio Twint</b>, Web Developer</p> - </div> - <div class="carousel-item" data-bs-interval="2000"> - <div class="img-box"><img src="{{ url('images/6-usable.svg') }}" alt=""></div> - <p class="testimonial">Phasellus vitae suscipit justo. Mauris pharetra feugiat ante id lacinia. - Etiam faucibus mauris id tempor egestas. Duis luctus turpis at accumsan tincidunt. Phasellus risus - risus, volutpat vel tellus ac, tincidunt fringilla massa. Etiam hendrerit dolor eget rutrum.</p> - <p class="overview"><b>Michael Coin</b>, CEO</p> - </div> + <div class="carousel-inner vevent"> + {% for item in conf['events'] %} + + <div {% if loop.first %} class="carousel-item active" {% else %} class="carousel-item" {% endif %} + data-bs-interval="5000"> + <h5 class="summary">{{ item['titel'] }}</h5> + <div class="img-box"> <img src="{{ url( item['url_img']|default('images/logo-2021.svg', true) ) }}" + alt=""> + </div> + <p class="description testimonial"> + {{ item['teaser'] }} + </p> + <p class="fas fa-calendar-alt"> To be held on + <span class="dtstart"> + <abbr class="value" title="{{ item['date'] }}"> {{ item['date'] }}</abbr> + </span> + </p> + {% if item['url_ext'] is defined and item['url_ext'] and item['url_ext'] != "" %} + <p class="fa fa-globe"> <a target="_blank" href="{{ item['url_ext'] }}"> About</a></p> + {% endif %} + {% if item['location'] is defined and item['location'] and item['location'] != "" %} + <p class="fas fa-map-marker-alt"> Location: <span class="location">{{ item['location'] }}</span></p> + {% endif %} + <p class="fa fa-user"> <b>{{ item['speaker'] }}</b></p> + {% if item['email'] is defined and item['email'] and item['email'] != "" %} + <p class="fas fa-envelope"> <a href="mailto:{{ item['email'] }}?subject={{ item['titel'] }}"><span class="dark-grey-text"> Contact</span></a></p> + {% endif %} - <div class="carousel-item" data-bs-interval="2000"> - <div class="img-box"><img src="{{ url('images/8-fault-tolerant.svg') }}" alt=""></div> - <p class="testimonial">Phasellus vitae suscipit justo. Mauris pharetra feugiat ante id lacinia. - Etiam - faucibus mauris id tempor egestas. Duis luctus turpis at accumsan tincidunt. Phasellus risus - risus, - volutpat vel tellus ac, tincidunt fringilla massa. Etiam hendrerit dolor eget rutrum.</p> - <p class="overview"><b>Michael Pay</b>, Seo Analyst</p> </div> + {% endfor %} </div> - - {# <!-- Carousel controls --> - <a class="carousel-control-prev" href="#AnnouncCarousel" data-slide="prev"> - <i class="fab fa-angle-left"></i> - </a> - <a class="carousel-control-next" href="#AnnouncCarousel" data-slide="next"> - <i class="fab fa-angle-right"></i> - </a> #} </div> </div> </div> + <div class="col-md-1 mb-1"></div> <div class="col-md-4 mb-4"> + {% if conf['deliverables'] is defined and conf['deliverables'] and conf['deliverables'] != "" %} <h4 class="font-weight-bold pb-2 mb-4">{{ _("Deliverables")}}</h4> <div class="list-group"> + {% for item in conf['deliverables'] %} + {% set ns = namespace(symbol='images/file-cancel.svg') %} + + {% if item['url_pdf'] is defined and item['url_pdf'] and item['url_pdf'] != "" %} + <a href="{{ url(item['url_pdf']) }}" class="list-group-item list-group-item-action"> + {% set ns.symbol = 'images/pdf.svg' %} + {% elif item['page'] is defined and item['page'] and item['page'] != "" %} + <a href="{{ url(item['page']) }}" class="list-group-item list-group-item-action"> + {% set ns.symbol = 'images/html.svg' %} + {% else %} <a href="#" class="list-group-item list-group-item-action"> + {% endif %} <div class="d-flex w-100 justify-content-between"> - <h5 class="mb-1">List group item heading</h5> - <small>3 days ago</small> - </div> - <p class="mb-1">Some placeholder content in a paragraph.</p> - <small>And some small print.</small> - </a> - <a href="#" class="list-group-item list-group-item-action"> - <div class="d-flex w-100 justify-content-between"> - <h5 class="mb-1">List group item heading</h5> - <small class="text-muted">3 days ago</small> - </div> - <p class="mb-1">Some placeholder content in a paragraph.</p> - <small class="text-muted">And some muted small print.</small> - </a> - <a href="#" class="list-group-item list-group-item-action"> - <div class="d-flex w-100 justify-content-between"> - <h5 class="mb-1">List group item heading</h5> - <small class="text-muted">3 days ago</small> - </div> - <p class="mb-1">Some placeholder content in a paragraph.</p> - <small class="text-muted">And some muted small print.</small> - </a> - <a href="#" class="list-group-item list-group-item-action"> - <div class="d-flex w-100 justify-content-between"> - <h5 class="mb-1">List group item heading</h5> - <small class="text-muted">3 days ago</small> - </div> - <p class="mb-1">Some placeholder content in a paragraph.</p> - <small class="text-muted">And some muted small print.</small> - </a> - <a href="#" class="list-group-item list-group-item-action"> - <div class="d-flex w-100 justify-content-between"> - <h5 class="mb-1">List group item heading</h5> - <small class="text-muted">3 days ago</small> - </div> - <p class="mb-1">Some placeholder content in a paragraph.</p> - <small class="text-muted">And some muted small print.</small> - </a> - <a href="#" class="list-group-item list-group-item-action"> - <div class="d-flex w-100 justify-content-between"> - <h5 class="mb-1">List group item heading</h5> - <small class="text-muted">3 days ago</small> - </div> - <p class="mb-1">Some placeholder content in a paragraph.</p> - <small class="text-muted">And some muted small print.</small> - </a> - <a href="#" class="list-group-item list-group-item-action"> - <div class="d-flex w-100 justify-content-between"> - <h5 class="mb-1">List group item heading</h5> - <small class="text-muted">3 days ago</small> + <h5 class="mb-1"><img border=0 alt="" width=24 height=24 src="{{ url_static(ns.symbol) }}">{{ item['title'] }}</h5> + <small>{{ item['workpackage'] }}</small> </div> - <p class="mb-1">Some placeholder content in a paragraph.</p> - <small class="text-muted">And some muted small print.</small> + {% if item['comment'] is defined and item['comment'] and item['comment'] != "" %} + <p class="mb-1">{{ item['comment'] }}</p> + {% endif %} </a> + {% endfor %} </div> + {% endif %} <div class="col cold-md-auto"></div> </div> @@ -140,12 +109,10 @@ <p class="text-muted w-responsive mx-auto mb-3"> {% trans %} The TALER project is an initiative of Horizon Europe (Pilots for the Next Generation Internet) - with the - aim of bringing the GNU Taler to market across Europe. + with the aim of bringing the GNU Taler to market across Europe. <br> To make the GNU Taler accessible to European citizens, we need a commercially viable use of - the GNU Taler - technology. We will achieve this through the four key project objectives. + the GNU Taler technology. We will achieve this through the four key project objectives. {% endtrans %} </p>