1
0
Fork 0

hswaw/site: add landing page prototype

This rips out the existing HTML and CSS. In the end, we're not going to
use it.

In its place, it adds a simplistic landing page, hoping to gather more
attention and curiosity from other hackers that would like to make it
prettier.

Change-Id: I322b071a8510536bd6aad9252ae7aa8fe3a734bc
master
q3k 2021-05-31 22:33:51 +00:00
parent 3c9092ad5f
commit 4d7b2f01ec
22 changed files with 865 additions and 659 deletions

1
hswaw/site/COPYING Normal file
View File

@ -0,0 +1 @@
The files in this directory (hswaw/site/*) and its subdirectories are, unless otherwise noted, licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

View File

@ -72,7 +72,5 @@ func (s *service) handleHTTPStatic(w http.ResponseWriter, r *http.Request) {
func (s *service) registerHTTP(mux *http.ServeMux) {
mux.HandleFunc("/static/", s.handleHTTPStatic)
mux.HandleFunc("/", s.handleMain)
mux.HandleFunc("/about", s.handleAbout)
mux.HandleFunc("/about_en", s.handleAboutEn)
mux.HandleFunc("/", s.handleIndex)
}

View File

@ -4,9 +4,12 @@ load("@io_bazel_rules_go//extras:embed_data.bzl", "go_embed_data")
go_embed_data(
name = "static",
srcs = [
"kontakt.png",
"main.css",
"mapka.png",
"leaflet.css",
"leaflet.js",
"landing.css",
"syrenka.png",
"images/marker-icon.png",
"images/marker-shadow.png",
],
package = "static",
)

View File

@ -0,0 +1,28 @@
Attribution: leaflet.js
---
`leaflet.{css,js}` and `images/marker-{icon,shadow}.png` from https://unpkg.com/browse/leaflet@1.7.1/dist/. Licensed under BSD 2-Clause:
Copyright (c) 2010-2021, Vladimir Agafonkin
Copyright (c) 2010-2011, CloudMade
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of
conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list
of conditions and the following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 491 B

View File

@ -0,0 +1,98 @@
body {
margin: 0;
padding: 0;
background-color: #444;
color: #fffdf3;
font-weight: 100;
font-family: 'Lato', sans-serif;
font-size: 18px;
}
#page {
max-width: 42rem;
margin: auto;
padding-top: 2rem;
padding: 1rem;
}
p {
line-height: 150%;
text-align: justify;
}
.logo {
max-width: 10rem;
max-height: 20vh
}
h1 {
font-size: 30px;
}
h2 {
font-size: 20px;
}
h1, h2, h3, h4 {
padding-top: 1rem;
text-align: center;
font-family: 'Allerta', sans-serif;
margin: 0;
color: #fff;
}
pre {
background-color: #141000;
padding: 1rem;
}
a {
color: #fffdf3;
}
b {
font-weight: 800;
}
ul {
padding: 0 0 0 1em;
}
li {
list-style: none;
}
li i {
font-size: 0.8em;
}
#map {
width: 100%;
height: 40vh;
margin-bottom: 1rem;
}
#background-logo {
position: absolute;
width: 100%;
height: 100%;
z-index: -10;
}
#background-logo img {
opacity: 3%;
margin-top: 2%;
margin-left: 5%;
}
#footer {
margin-top: 2rem;
font-size: 0.8rem;
opacity: 60%;
}
#quicklinks {
float: right;
font-family: monospace;
font-size: 14px;
margin: 2rem;
}

View File

@ -0,0 +1,640 @@
/* required styles */
.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
position: absolute;
left: 0;
top: 0;
}
.leaflet-container {
overflow: hidden;
}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
-webkit-user-drag: none;
}
/* Prevents IE11 from highlighting tiles in blue */
.leaflet-tile::selection {
background: transparent;
}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
image-rendering: -webkit-optimize-contrast;
}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
width: 1600px;
height: 1600px;
-webkit-transform-origin: 0 0;
}
.leaflet-marker-icon,
.leaflet-marker-shadow {
display: block;
}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg,
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer,
.leaflet-container .leaflet-tile {
max-width: none !important;
max-height: none !important;
}
.leaflet-container.leaflet-touch-zoom {
-ms-touch-action: pan-x pan-y;
touch-action: pan-x pan-y;
}
.leaflet-container.leaflet-touch-drag {
-ms-touch-action: pinch-zoom;
/* Fallback for FF which doesn't support pinch-zoom */
touch-action: none;
touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
-ms-touch-action: none;
touch-action: none;
}
.leaflet-container {
-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.leaflet-tile {
filter: inherit;
visibility: hidden;
}
.leaflet-tile-loaded {
visibility: inherit;
}
.leaflet-zoom-box {
width: 0;
height: 0;
-moz-box-sizing: border-box;
box-sizing: border-box;
z-index: 800;
}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
-moz-user-select: none;
}
.leaflet-pane { z-index: 400; }
.leaflet-tile-pane { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane { z-index: 500; }
.leaflet-marker-pane { z-index: 600; }
.leaflet-tooltip-pane { z-index: 650; }
.leaflet-popup-pane { z-index: 700; }
.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg { z-index: 200; }
.leaflet-vml-shape {
width: 1px;
height: 1px;
}
.lvml {
behavior: url(#default#VML);
display: inline-block;
position: absolute;
}
/* control positioning */
.leaflet-control {
position: relative;
z-index: 800;
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
.leaflet-top,
.leaflet-bottom {
position: absolute;
z-index: 1000;
pointer-events: none;
}
.leaflet-top {
top: 0;
}
.leaflet-right {
right: 0;
}
.leaflet-bottom {
bottom: 0;
}
.leaflet-left {
left: 0;
}
.leaflet-control {
float: left;
clear: both;
}
.leaflet-right .leaflet-control {
float: right;
}
.leaflet-top .leaflet-control {
margin-top: 10px;
}
.leaflet-bottom .leaflet-control {
margin-bottom: 10px;
}
.leaflet-left .leaflet-control {
margin-left: 10px;
}
.leaflet-right .leaflet-control {
margin-right: 10px;
}
/* zoom and fade animations */
.leaflet-fade-anim .leaflet-tile {
will-change: opacity;
}
.leaflet-fade-anim .leaflet-popup {
opacity: 0;
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
transition: opacity 0.2s linear;
}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
opacity: 1;
}
.leaflet-zoom-animated {
-webkit-transform-origin: 0 0;
-ms-transform-origin: 0 0;
transform-origin: 0 0;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
will-change: transform;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
-webkit-transition: none;
-moz-transition: none;
transition: none;
}
.leaflet-zoom-anim .leaflet-zoom-hide {
visibility: hidden;
}
/* cursors */
.leaflet-interactive {
cursor: pointer;
}
.leaflet-grab {
cursor: -webkit-grab;
cursor: -moz-grab;
cursor: grab;
}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
cursor: crosshair;
}
.leaflet-popup-pane,
.leaflet-control {
cursor: auto;
}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
cursor: move;
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
cursor: grabbing;
}
/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
pointer-events: none;
}
.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive,
svg.leaflet-image-layer.leaflet-interactive path {
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
/* visual tweaks */
.leaflet-container {
background: #ddd;
outline: 0;
}
.leaflet-container a {
color: #0078A8;
}
.leaflet-container a.leaflet-active {
outline: 2px solid orange;
}
.leaflet-zoom-box {
border: 2px dotted #38f;
background: rgba(255,255,255,0.5);
}
/* general typography */
.leaflet-container {
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
}
/* general toolbar styles */
.leaflet-bar {
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
border-radius: 4px;
}
.leaflet-bar a,
.leaflet-bar a:hover {
background-color: #fff;
border-bottom: 1px solid #ccc;
width: 26px;
height: 26px;
line-height: 26px;
display: block;
text-align: center;
text-decoration: none;
color: black;
}
.leaflet-bar a,
.leaflet-control-layers-toggle {
background-position: 50% 50%;
background-repeat: no-repeat;
display: block;
}
.leaflet-bar a:hover {
background-color: #f4f4f4;
}
.leaflet-bar a:first-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.leaflet-bar a:last-child {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom: none;
}
.leaflet-bar a.leaflet-disabled {
cursor: default;
background-color: #f4f4f4;
color: #bbb;
}
.leaflet-touch .leaflet-bar a {
width: 30px;
height: 30px;
line-height: 30px;
}
.leaflet-touch .leaflet-bar a:first-child {
border-top-left-radius: 2px;
border-top-right-radius: 2px;
}
.leaflet-touch .leaflet-bar a:last-child {
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
}
/* zoom control */
.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
font: bold 18px 'Lucida Console', Monaco, monospace;
text-indent: 1px;
}
.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
font-size: 22px;
}
/* layers control */
.leaflet-control-layers {
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
background: #fff;
border-radius: 5px;
}
.leaflet-control-layers-toggle {
background-image: url(images/layers.png);
width: 36px;
height: 36px;
}
.leaflet-retina .leaflet-control-layers-toggle {
background-image: url(images/layers-2x.png);
background-size: 26px 26px;
}
.leaflet-touch .leaflet-control-layers-toggle {
width: 44px;
height: 44px;
}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
display: none;
}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
display: block;
position: relative;
}
.leaflet-control-layers-expanded {
padding: 6px 10px 6px 6px;
color: #333;
background: #fff;
}
.leaflet-control-layers-scrollbar {
overflow-y: scroll;
overflow-x: hidden;
padding-right: 5px;
}
.leaflet-control-layers-selector {
margin-top: 2px;
position: relative;
top: 1px;
}
.leaflet-control-layers label {
display: block;
}
.leaflet-control-layers-separator {
height: 0;
border-top: 1px solid #ddd;
margin: 5px -10px 5px -6px;
}
/* Default icon URLs */
.leaflet-default-icon-path {
background-image: url(images/marker-icon.png);
}
/* attribution and scale controls */
.leaflet-container .leaflet-control-attribution {
background: #fff;
background: rgba(255, 255, 255, 0.7);
margin: 0;
}
.leaflet-control-attribution,
.leaflet-control-scale-line {
padding: 0 5px;
color: #333;
}
.leaflet-control-attribution a {
text-decoration: none;
}
.leaflet-control-attribution a:hover {
text-decoration: underline;
}
.leaflet-container .leaflet-control-attribution,
.leaflet-container .leaflet-control-scale {
font-size: 11px;
}
.leaflet-left .leaflet-control-scale {
margin-left: 5px;
}
.leaflet-bottom .leaflet-control-scale {
margin-bottom: 5px;
}
.leaflet-control-scale-line {
border: 2px solid #777;
border-top: none;
line-height: 1.1;
padding: 2px 5px 1px;
font-size: 11px;
white-space: nowrap;
overflow: hidden;
-moz-box-sizing: border-box;
box-sizing: border-box;
background: #fff;
background: rgba(255, 255, 255, 0.5);
}
.leaflet-control-scale-line:not(:first-child) {
border-top: 2px solid #777;
border-bottom: none;
margin-top: -2px;
}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
border-bottom: 2px solid #777;
}
.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
box-shadow: none;
}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
border: 2px solid rgba(0,0,0,0.2);
background-clip: padding-box;
}
/* popup */
.leaflet-popup {
position: absolute;
text-align: center;
margin-bottom: 20px;
}
.leaflet-popup-content-wrapper {
padding: 1px;
text-align: left;
border-radius: 12px;
}
.leaflet-popup-content {
margin: 13px 19px;
line-height: 1.4;
}
.leaflet-popup-content p {
margin: 18px 0;
}
.leaflet-popup-tip-container {
width: 40px;
height: 20px;
position: absolute;
left: 50%;
margin-left: -20px;
overflow: hidden;
pointer-events: none;
}
.leaflet-popup-tip {
width: 17px;
height: 17px;
padding: 1px;
margin: -10px auto 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
background: white;
color: #333;
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
}
.leaflet-container a.leaflet-popup-close-button {
position: absolute;
top: 0;
right: 0;
padding: 4px 4px 0 0;
border: none;
text-align: center;
width: 18px;
height: 14px;
font: 16px/14px Tahoma, Verdana, sans-serif;
color: #c3c3c3;
text-decoration: none;
font-weight: bold;
background: transparent;
}
.leaflet-container a.leaflet-popup-close-button:hover {
color: #999;
}
.leaflet-popup-scrolled {
overflow: auto;
border-bottom: 1px solid #ddd;
border-top: 1px solid #ddd;
}
.leaflet-oldie .leaflet-popup-content-wrapper {
-ms-zoom: 1;
}
.leaflet-oldie .leaflet-popup-tip {
width: 24px;
margin: 0 auto;
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
}
.leaflet-oldie .leaflet-popup-tip-container {
margin-top: -1px;
}
.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
border: 1px solid #999;
}
/* div icon */
.leaflet-div-icon {
background: #fff;
border: 1px solid #666;
}
/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
position: absolute;
padding: 6px;
background-color: #fff;
border: 1px solid #fff;
border-radius: 3px;
color: #222;
white-space: nowrap;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
pointer-events: none;
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
}
.leaflet-tooltip.leaflet-clickable {
cursor: pointer;
pointer-events: auto;
}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
position: absolute;
pointer-events: none;
border: 6px solid transparent;
background: transparent;
content: "";
}
/* Directions */
.leaflet-tooltip-bottom {
margin-top: 6px;
}
.leaflet-tooltip-top {
margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
left: 50%;
margin-left: -6px;
}
.leaflet-tooltip-top:before {
bottom: 0;
margin-bottom: -12px;
border-top-color: #fff;
}
.leaflet-tooltip-bottom:before {
top: 0;
margin-top: -12px;
margin-left: -6px;
border-bottom-color: #fff;
}
.leaflet-tooltip-left {
margin-left: -6px;
}
.leaflet-tooltip-right {
margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
top: 50%;
margin-top: -6px;
}
.leaflet-tooltip-left:before {
right: 0;
margin-right: -12px;
border-left-color: #fff;
}
.leaflet-tooltip-right:before {
left: 0;
margin-left: -12px;
border-right-color: #fff;
}

File diff suppressed because one or more lines are too long

View File

@ -1,251 +0,0 @@
a.news-title {
text-decoration: none;
color: #222
}
p.news-footer {
font-size: 12px !important;
color: #999;
text-align: right !important;
}
.news-rectangle {
background-color: #21a;
border-radius: 5px;
color: #fff;
display: inline-block;
font-size: 14px;
font-weight: bold;
margin: 8px 5px 5px 5px;
padding: 0 0 2px 0;
text-align: center;
vertical-align: middle;
width: 80px;
}
.news .date:before {
font-size: 14px;
font-weight: bold;
display: block;
font-family: 'Titillium Web', sans;
color: #eee;
border-radius: 5px;
margin: 8px 0 5px 5px;
padding: 0 0 2px 0;
vertical-align: middle;
text-align: center;
width: 80px;
margin-right: 0.5em;
}
.news .redmine .date:before {
content: "redmine";
background: #c3352b;
}
.news .blog .date:before {
content: "blog";
background: #21a;
}
ul.news {
list-style: none;
padding: 0;
}
ul.news li {
border-bottom: 2px groove #fff;
padding-top: 8px;
padding-right: 16px;
}
#hs_content .news li {
margin: 0;
}
#about {
border-bottom: 2px groove #fff;
padding: 15px;
}
#hs_branding {
min-width: 0;
}
#hs_main {
min-width: 0;
}
body {
overflow-x: hidden;
}
span.date {
font-weight: bold;
display: block;
width: 90px;
text-align: center;
float: left;
}
span.author {
text-decoration: italic;
}
#hs_main {
position: relative;
}
#left {
border-right: 2px groove #fff;
margin-right: 320px;
}
#right {
position: absolute;
width: 300px;
top: 100px;
padding-top: 16px;
right: 0;
margin-right: 20px;
font-size: 16px;
}
.clear {
clear: both;
display: block;
text-align: center;
}
.moar {
font-family: "Titillium Web", sans;
font-weight: bold;
// background: url("/static/cutcube.png");
background-color: #fd6;
// background-color: #2c702a;
color: #222;
padding: 4px;
border-radius: 5px;
text-align: center;
display: block;
}
@media screen and (max-width: 1024px) {
#hs_branding {
width: 95%;
}
#hs_main {
width: 95%;
}
}
@media screen and (max-width: 625px) {
#hs_branding {
width: 100%;
}
#hs_main {
width: 100%;
}
#right {
position: static;
float: none;
width: 100%;
}
#left {
float: none;
width: 100%;
margin-right: 0;
border-right: 0;
}
}
@media screen and (max-width: 480px) {
#hs_branding a {
font-size: 1.8em;
}
#hs_branding li a {
font-size: 1.2em;
}
}
#right h4 {
margin-bottom: 0px;
margin-left: 0px;
margin-top: 2px;
}
h1.mail {
margin-bottom: 2px !important;
}
#right .email-entry {
width: 90%;
border: 1px groove #777;
padding: 2px;
background: none repeat scroll 0% 0% rgb(250, 250, 250);
color: rgb(34, 34, 34);
margin: 10px;
font-size: 14px;
}
#right .email-submit {
padding: 4px 14px 4px 14px;
}
.mailcheck {
margin-right: 8px;
position: relative;
top: 2px;
}
div.mail-desc {
font-size: 14px;
padding-left: 26px;
line-height: 15px;
}
div.mail-captcha {
width: 276px;
height: 40px;
}
div.mail-captcha img {
border: 1px groove #777;
width: 80px;
height: 30px;
float: left;
}
div.mail-captcha input {
float: left;
width: 178px !important;
height: 26px !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
margin-right: 0 !important;
}
div.flashes {
padding: 0;
margin-left: auto;
margin-right: auto;
width: 80%;
margin-bottom: 10px;
}
div.flashes ul {
list-style-type: none;
padding: 0 0 5px 0;
}
div.flashes li {
width: 90%;
border-radius: 4px;
background-color: #308033;
padding: 5px;
margin-top: 5px;
margin-left: auto;
margin-right: auto;
}
div.flashes li.error {
background-color: #a01023;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 732 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -4,12 +4,7 @@ load("@io_bazel_rules_go//extras:embed_data.bzl", "go_embed_data")
go_embed_data(
name = "templates",
srcs = [
"about.html",
"about_en.html",
"basic.html",
"main.html",
"subscribe.html",
"subscribe_en.html",
"index.html",
],
package = "templates",
)

View File

@ -1,102 +0,0 @@
{{ define "page_scripts" }}
<script type="text/javascript" src="https://widgets.twimg.com/j/2/widget.js"></script>
{{ end }}
{{ define "page_style" }}
<link rel="stylesheet" href="static/main.css"/>
{{ end }}
{{ define "title" }}O Hackerspace Warszawa{{ end }}
{{ define "content" }}
<div id="left">
<div id="about">
<h2><a href="about_en">Read about us in English</a></h2>
<h1>O Hackerspace Warszawa</h1>
<p>
Hackerspace to przestrzeń stworzona i utrzymywana przez grupę kreatywnych osób, które łączy fascynacja
ogólno pojętym tworzeniem w duchu kultury hackerskiej. Przestrzeń stymuluje rozwój projektów, organizując i
użyczając potrzebnych narzędzi. Hackerspace nie zna barier, jeśli masz ciekawy pomysł i szukasz ludzi
chętnych do współpracy lub po prostu potrzebujesz miejsca i sprzętu - zapraszamy!
</p>
<p>
Jeżeli chcesz się do nas przyłączyć, przeczytaj dokładniejsze informacje o naszych celach i zapisz się
na jedną z naszych list mailingowych. Zapraszamy również w każdy czwartek po 18:00, kiedy hackerspace jest otwarty
dla wszystkich zainteresowanych. Posiadamy również mail kontaktowy: <img src="static/kontakt.png"/>
</p>
<h3>Cele</h3>
<ul>
<li>Chcemy tworzyć miejsce, w którym ludzie zainteresowani techniką, elektroniką, informatyką, mechaniką, sztuką i pokrewnymi dziedzinami tworzenia mogą się zbierać aby rozmawiać, wymieniać się pomysłami i rozwiązaniami, oraz pracować nad projektami.</li>
<li>Chcemy żeby miejsce to było w Warszawie, w miejscu zapewniającym optymalny dojazd, zwłaszcza komunikacją publiczną.</li>
<li>Chcemy niezależności, dlatego uznajemy że optymalnym źródłem finansowania są obowiązkowe składki. Składki zostaną wykorzystane na finansowanie miejsca oraz, gdy to zostanie zapewnione, na zakup narzędzi.</li>
<li>Chcemy żeby miejsce było otwarte na nowych ludzi i nowe pomysły.</li>
<li>Chcemy zebrać narzędzia i wiedzę jak się ich używa w miejscu umożliwiającym ich używanie.</li>
<li>Chcemy się rozwijać i poznawać nowe dziedziny wiedzy</li>
<li>Chcemy się dobrze bawić.</li>
</ul>
<h3>Lokalizacja</h3>
<p>
Warszawski Hackerspace mieści się na podwyższonym parterze w budynku na ul. Wolność 2A.
<pre>
Warszawski Hackerspace
ul. Wolność 2A
01-018 Warszawa
52°14'29.8"N 20°59'5.5"E
</pre>
Wejście od ulicy Żelaznej. Po wejściu na plac/parking należy przejść tunelem pod budynkiem i wejść na klatkę schodową po lewej stronie.
</p>
<div style="align:center, text-align:center"><iframe width="90%" height="550" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=20.983859896659855%2C52.24110833176657%2C20.985909104347233%2C52.24213811954793&amp;layer=mapnik&amp;marker=52.241623228644364%2C20.98488450050354" style="border: 1px solid black"></iframe><br /></div><small><a href="https://www.openstreetmap.org/?mlat=52.24162&amp;mlon=20.98488#map=19/52.24162/20.98488">View Larger Map</a></small>
<h3>Członkowie</h3>
<ul>
<li>Hackerspace składa się z członków.</li>
<li>O członkostwie decyduje regularne płacenie składek.</li>
<li>Członkostwo daje dostęp do hackerspace 24/7.</li>
<li>Wszyscy członkowie są równi.</li>
</ul>
<h3>Składki</h3>
<ul>
<li><b>Starving Hacker</b>, minimalnie 50 PLN miesięcznie. Ograniczone do uczniów / studentów (lub specjalnych przypadków).</li>
<li><b>Fatty Hacker</b>, minimalnie 100 PLN miesięcznie.</li>
<li><b>Super-Fatty Hacker</b>, 150 PLN lub więcej dla bogatych Hackerów, którzy chcą dodatkowo wesprzeć rozwój HS.</li>
</ul>
<p>Potrzebujemy minimalnie 6000 PLN na miesiąc, żeby opłacić czynsz i rachunki. Dodatkowe fundusze są szczególnie potrzebne do dalszej ekspansji (nowe pomieszczenia), a także inwestycje w gadżety promujące, sprzęt i infrastrukturę HS.</p>
<h3>Dodatkowe informacje:</h3>
<ul>
<li>Nasza <a href="https://wiki.hackerspace.pl/faq">lista pytań i odpowiedzi (FAQ)</a></li>
<li>Informacje dla osób <a href="https://wiki.hackerspace.pl/jak-dolaczyc">chcących do nas dołączyć</a></li>
<li>Samouczek <a href="http://catb.org/~esr/faqs/hacker-howto.html">How To Become A Hacker</a> autorstwa ESR</li>
</ul>
</div>
<div id="right">
<!-- TODO(q3k): add this {% include "subscribe.html" %} -->
<h1 class="twitter">Twitter</h1>
<script type="text/javascript">
new TWTR.Widget({
version: 2,
type: 'profile',
rpp: 5,
interval: 6000,
theme: {
shell: {
background: '#eee',
color: '#222'
},
tweets: {
background: '#eee',
color: '#222',
links: '#001ea6'
}
},
features: {
scrollbar: false,
loop: false,
live: false,
hashtags: true,
timestamp: true,
avatars: true,
behavior: 'all'
}
}).render().setUser('hackerspacepl').start();
</script>
</div>
{{ end }}

View File

@ -1,100 +0,0 @@
{{ define "page_scripts" }}
<script type="text/javascript" src="https://widgets.twimg.com/j/2/widget.js"></script>
{{ end }}
{{ define "page_style" }}
<link rel="stylesheet" href="static/main.css"/>
{{ end }}
{{ define "title" }}About Warsaw Hackerspace{{ end }}
{{ define "content" }}
<div id="left">
<div id="about">
<h2><a href="about">Poczytaj o nas po polsku</a></h2>
<h1>About the Warsaw Hackerspace</h1>
<p>
A hackerspace is a place created and maintained by a group of people whish combines fascination
about new technologies with a broadly understood creativity and hacker spirit. A hackerspace stimulates
the development of interesting projects by supplying necessary tools and attracting people with knowledge to
use them. A hackerspace know no limits, if you have an interesting idea and you are looking for people to help you
with it's development or simply a place to work - you are most welcome!
</p>
<p>
If you want to join us, read about our goals and join one of our mailing lists. We meet live at the Hackerspace every Thursday from 6pm. We also have a contact email address: <img src="static/kontakt.png"/>.
</p>
<h3>Warsaw Hackerspace Goals</h3>
<ul>
<li>We want to maintain a place in which people interested in technology, electronics, informatics, mechanics, art and related activities can meet to talk, exchange ideas, solutions and work together on their projects.</li>
<li>We want a Hackerspace to be located in Warsaw, in an easily accessbile place, especially using public transport.</li>
<li>We want independence, thats why we think that member fees are the best financial model for us. The collected money is used to rent physical space and buy necessary tools and equipment.</li>
<li>We want the Warsaw Hackerspace to be a friendly and open place for new people and ideas.</li>
<li>We want to maintain tools and knowledge about their usage in a place which allow for their safe use.</li>
<li>We want to develop and explore new areas of interest.</li>
<li>We want to have fun.</li>
</ul>
<h3>Location</h3>
<p>
The Warsaw Hackerspace is located on the ground floor at Wolność 2A road in Warsaw. The main entrance is from ul. Żelazna. After getting to the parking lot, use the tunnel under the building and enter the stairwell on the left side.
<pre>
Warszawski Hackerspace
ul. Wolność 2A
01-018 Warszawa
52°14'29.8"N 20°59'5.5"E
</pre>
</p>
<div style="align:center, text-align:center"><iframe width="90%" height="550" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=20.983859896659855%2C52.24110833176657%2C20.985909104347233%2C52.24213811954793&amp;layer=mapnik&amp;marker=52.241623228644364%2C20.98488450050354" style="border: 1px solid black"></iframe><br /></div><small><a href="https://www.openstreetmap.org/?mlat=52.24162&amp;mlon=20.98488#map=19/52.24162/20.98488">View Larger Map</a></small>
<h3>Membership</h3>
<ul>
<li>The Hackerspace is by and for members.</li>
<li>All members are required to pay a monthly fee.</li>
<li>All members are allowed to be in the Hackerspace 24/7.</li>
<li>All members are equal.</li>
</ul>
<h3>Contributions</h3>
<ul>
<li><b>Starving Hacker</b>, at least 50 PLN per month. Limited to students (and other special financial situations).</li>
<li><b>Fatty Hacker</b>, at least 100 PLN per month.</li>
<li><b>Super-Fatty Hacker</b>, 150 PLN or more - for rich Hackers who want to support our Hackerspace.</li>
</ul>
<p>We need at least 6000 PLN per monts to be able to pay the rent and bills. Additional funding is especially needed for further remodelling and adaption of our space, and for investments in gadgets, promotion and infrastructure.</p>
<h3>More informations:</h3>
<ul>
<li>Our <a href="https://wiki.hackerspace.pl/faq">Frequently Asked Questions (FAQ)</a></li>
<li>Information for people who wants to <a href="https://wiki.hackerspace.pl/jak-dolaczyc">join us</a></li>
<li>Tutorial <a href="http://catb.org/~esr/faqs/hacker-howto.html">How To Become A Hacker</a> by ESR</li>
</ul>
</div>
<div id="right">
<!-- TODO(q3k): add this {% include "subscribe_en.html" %} -->
<h1 class="twitter">Twitter</h1>
<script type="text/javascript">
new TWTR.Widget({
version: 2,
type: 'profile',
rpp: 5,
interval: 6000,
theme: {
shell: {
background: '#eee',
color: '#222'
},
tweets: {
background: '#eee',
color: '#222',
links: '#001ea6'
}
},
features: {
scrollbar: false,
loop: false,
live: false,
hashtags: true,
timestamp: true,
avatars: true,
behavior: 'all'
}
}).render().setUser('hackerspacepl').start();
</script>
</div>
{{ end }}

View File

@ -1,63 +0,0 @@
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8" />
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><![endif]-->
<title>{{ template "title" . }}</title>
<script src="https://static.hackerspace.pl/js/jquery.min.js"></script>
<script src="https://static.hackerspace.pl/js/checkinator-header.js"></script>
{{ template "page_scripts" . }}
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="google-site-verification" content="trUiKRnUNhystQjYg-j5j_0qEn09Wijd94aYhv3RyB8" />
<link rel="shortcut icon" href="https://static.hackerspace.pl/img/favicon.ico"/>
<link rel="apple-touch-icon" href="https://static.hackerspace.pl/img/glider.png"/>
<link rel="stylesheet" href="https://static.hackerspace.pl/fonts/news-cycle/stylesheet.css"/>
<link rel="stylesheet" href="https://static.hackerspace.pl/fonts/titillium/stylesheet.css"/>
<link rel="stylesheet" href="https://static.hackerspace.pl/css/style.css?v=2"/>
{{ template "page_style" . }}
</head>
<body>
<a name="top"></a>
<header id="hs_branding">
<a id="hs_header" href="https://hackerspace.pl/">Warsaw Hackerspace</a>
<ul id="hs_header_menu">
<li><a href="https://hackerspace.pl/about">about</a></li>
<li><a href="https://blog.hackerspace.pl">blog</a></li>
<li><a href="https://gallery.hackerspace.pl">gallery</a></li>
<li><a href="https://wiki.hackerspace.pl">wiki</a></li>
<li><a href="https://code.hackerspace.pl">code</a></li>
<li><a href="https://webchat.hackerspace.pl">chat</a></li>
<li><a href="https://redmine.hackerspace.pl">tasks</a></li>
<li><a href="https://wiki.hackerspace.pl/partners">partners</a></li>
</ul>
</header>
<div id="hs_main">
<div id="hs_rotimage">
<div id="status" style="display: none;">
<div id="status-tooltip" style="display: none;">
<p>Refreshing...</p>
</div>
<img src="https://static.hackerspace.pl/img/status-open.png" alt="Sorry, we're open! - The Warsaw Hackerspace is open right now." />
</div>
<div class="hs_login_bar">
<ul>
<li><a class="action user" href="https://ldap.hackerspace.pl">Member profile</a></li>
</ul>
</div>
</div>
<div id="hs_content">
{{ template "content" . }}
</div>
</div>
{{ template "footer" . }}
</body>
</html>
{{ define "page_scripts" }}{{ end }}
{{ define "page_style" }}{{ end }}
{{ define "content" }}{{ end }}
{{ define "footer" }}{{ end }}

View File

@ -0,0 +1,80 @@
<!DOCTYPE html>
<meta charset="utf-8">
<!-- https://html.spec.whatwg.org/multipage/syntax.html#syntax-tag-omission -->
<title>Warszawski Hackerspace</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="preconnect" href="https://fonts.gstatic.com">
<link rel="stylesheet" href="/static/landing.css"/>
<link rel="stylesheet" href="/static/leaflet.css"/>
<link href="https://fonts.googleapis.com/css2?family=Allerta&family=Lato&display=swap" rel="stylesheet">
<style>
</style>
<div id="background-logo">
<img src="/static/syrenka.png" />
</div>
<div id="quicklinks">
<a href="https://wiki.hackerspace.pl/">wiki</a> | <a href="https://blog.hackerspace.pl/">blog</a> | <a href="https://profile.hackerspace.pl/">profil</a> | <a href="https://wiki.hackerspace.pl/partnerzy">partnerzy</a>
</div>
<div id="page">
<h1>Warszawski Hackerspace</h1>
<p>
Przestrzeń stworzona i utrzymywana przez grupę kreatywnych osób, które łączy fascynacja ogólno pojętym tworzeniem w duchu <a href="https://pl.wikipedia.org/wiki/Spo%C5%82eczno%C5%9B%C4%87_haker%C3%B3w">kultury hackerskiej</a>.
</p>
<p>
<b>Hackerspace nie zna barier.</b> Jeśli masz ciekawy pomysł i szukasz ludzi chętnych do współpracy lub po prostu potrzebujesz miejsca i sprzętu - <a href="">zapraszamy</a>!
</p>
<h2>Nadchodzące wydarzenia</h2>
<p>
<center><i>Nic zaplanowanego...</i></center>
</p>
<h2>Blog</h2>
<p>
Najnowsze wpisy z naszego <a href="https://blog.hackerspace.pl">bloga</a>:
<ul>
{{ range .Entries }}
<li><a href="{{ .Link.Href }}">{{ .Title }}</a> <i>{{ .UpdatedHuman }}, {{ .Author }}</i></li>
{{ else }}
<li><i>Ups, nie udało się załadować wpisów.</i></li>
{{ end }}
</ul>
<h2>Gdzie jesteśmy?</h2>
<p>
Warszawski Hackerspace mieści się na <a href="https://wiki.hackerspace.pl/jak-trafic">podwyższonym parterze w budynku na ul. Wolność 2A</a>.
<pre>Warszawski Hackerspace
ul. Wolność 2A
01-018 Warszawa
52°14'29.8"N 20°59'5.5"E</pre>
</p>
<div id="map"></div>
<h2>Kontakt</h2>
<p>
Mamy <a href="https://matrix.to/#/#general:hackerspace.pl">aktywny pokój na Matrixie</a> połączony z IRC (#hswaw na irc.libera.chat) gdzie możesz porozmawiać na żywo z naszymi członkami i wkręcić się w naszą społeczność online.
</p>
<p>
Możesz też zapisać się na nasze listy dyskusyjne: <a href="https://lists.hackerspace.pl/postorius/lists/waw.lists.hackerspace.pl/">waw@</a> (publiczna o HSWAW) oraz <a href="https://lists.hackerspace.pl/postorius/lists/waw-proj.lists.hackerspace.pl/">waw-proj@</a> (o projektach).
</p>
<p>
Zapraszamy też do bezpośredniego kontaktu mejlowego na <a href="mailto:kontakt@hackerspace.pl">kontakt@hackerspace.pl</a>.
</p>
<div id="footer">
<span>&copy; 2021 <a href="https://cs.hackerspace.pl/hscloud/-/tree/hswaw/site">Autorzy Strony</a>. Ten utwór jest dostępny na <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">licencji Creative Commons Uznanie autorstwa 4.0 Międzynarodowe</a>.</span>
</div>
</div>
<script>
window.loadMap = () => {
let map = L.map('map', {
center: [52.24158, 20.9848],
zoom: 13,
scrollWheelZoom: false,
});
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);
L.marker([52.24158, 20.9848]).addTo(map);
}
</script>
<script src="/static/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin="" onload="loadMap()"></script>

View File

@ -1,77 +0,0 @@
{{ define "page_scripts" }}
<script type="text/javascript" src="https://widgets.twimg.com/j/2/widget.js"></script>
{{ end }}
{{ define "page_style" }}
<link rel="stylesheet" href="static/main.css"/>
{{ end }}
{{ define "title" }}Hackerspace Warszawa - strona główna{{ end }}
{{ define "content" }}
<div id="left">
<div id="about">
<h1>Czym jest Hackerspace?</h1>
<p>
Hackerspace to przestrzeń stworzona i utrzymywana przez grupę kreatywnych osób, które łączy fascynacja
ogólno pojętym tworzeniem w duchu <a href="http://ultra.ap.krakow.pl/~raj/hacker-howto.html">kultury
hackerskiej</a>. Przestrzeń stymuluje rozwój projektów, organizując i użyczając potrzebnych narzędzi.
Hackerspace nie zna barier, jeśli masz ciekawy pomysł i szukasz ludzi chętnych do współpracy lub po
prostu potrzebujesz miejsca i sprzętu - zapraszamy!
</p>
<a href="/about" class="moar">Gdzie jesteśmy? Co robimy? Jak do nas dołączyć? Dowiedz się więcej!</a>
</div>
<h1>Nowości</h1>
<ul class="news">
{{ range .Entries }}
<li class="{{ .Source }}">
<a class="news-title" href="{{ .Link.Href }}">
<h3><span class="news-rectangle">blog</span>{{ .Title }}</h3>
</a>
<p class="news">
{{ .Summary }}
</p>
<p class="news-footer">
Ostatnio aktualizowane {{ .UpdatedHuman }} przez {{ .Author }}
</p>
</li>
{{ end }}
</ul>
<h1>Kalendarz</h1>
<i>borked ,-,</i>
<!-- TODO(q3k): fix this: <iframe style="max-width: 750px;width:100%;border: none;" height="315" src="https://owncloud.hackerspace.pl/index.php/apps/calendar/embed/g8toktZrA9fyAHNi"></iframe> -->
</div>
<div id="right">
<!-- TODO(q3k): add this {% include "subscribe.html" %} -->
<h1 class="twitter">Twitter</h1>
<script type="text/javascript">
new TWTR.Widget({
version: 2,
type: 'profile',
rpp: 5,
interval: 6000,
theme: {
shell: {
background: '#eee',
color: '#222'
},
tweets: {
background: '#eee',
color: '#222',
links: '#001ea6'
}
},
features: {
scrollbar: false,
loop: false,
live: false,
hashtags: true,
timestamp: true,
avatars: true,
behavior: 'all'
}
}).render().setUser('hackerspacepl').start();
</script>
</div>
<span class="clear"><a href="#top">↑ Powrót na górę ↑</a></span>
{{ end }}

View File

@ -1,19 +0,0 @@
<form action="/" method="post">
<input name=_csrf_token type=hidden value="{{ csrf_token() }}">
<h1 class="mail" style="text-align: center;">Listy mailingowe</h1>
<h2 style="text-align: center; margin-top: -6px;">Zapisz się i porozmawiaj</h2>
<h4><input name="mail-waw" type="checkbox" class="mailcheck" checked="true" />Warszawska</h4>
<div class="mail-desc">Główna lista dyskusyjna hackerspaceu - organizacja i rozwiązywanie problemów.</div>
<h4><input name="mail-proj" type="checkbox" class="mailcheck" checked="true"/>Warszawska Projektowa</h4>
<div class="mail-desc">Informacje o postępie projektów, pomysły, ogłaszanie sukcesów i porażek.</div>
<h4><input name="mail-offtopic" type="checkbox" class="mailcheck" />Off Topic</h4>
<div class="mail-desc">Dyskusja o wszystkim i o niczym. Niski stosunek sygnału do szumu.</div>
<center>
<input type="text" name="email" class="email-entry" placeholder="twoj@email.com" />
<div class="mail-captcha">
{{ captcha() }}
<input type="text" name="captcha" class="email-entry" placeholder="Przepisz CAPTCHA...">
</div>
<input type="submit" value="Zapisz się" class="email-submit" />
</center>
</form>

View File

@ -1,19 +0,0 @@
<form action="/" method="post">
<input name=_csrf_token type=hidden value="{{ csrf_token() }}">
<h1 class="mail" style="text-align: center;">Mailing lists</h1>
<h2 style="text-align: center; margin-top: -6px;">Subscribe and chat</h2>
<h4><input name="mail-waw" type="checkbox" class="mailcheck" checked="true" />Warsaw</h4>
<div class="mail-desc">Main discussion list - organization and problem solving.</div>
<h4><input name="mail-proj" type="checkbox" class="mailcheck" checked="true"/>Warsaw Projects</h4>
<div class="mail-desc">Information about our projects.</div>
<h4><input name="mail-offtopic" type="checkbox" class="mailcheck" />Off Topic</h4>
<div class="mail-desc">Discussion about everything and nothing. Low signal to noise ratio.</div>
<center>
<input type="text" name="email" class="email-entry" placeholder="you@example.com" />
<div class="mail-captcha">
{{ captcha() }}
<input type="text" name="captcha" class="email-entry" placeholder="Solve the CAPTCHA...">
</div>
<input type="submit" value="Subscribe" class="email-submit" />
</center>
</form>

View File

@ -40,9 +40,7 @@ func parseTemplates(names ...string) (*template.Template, error) {
}
var (
tmplAbout = template.Must(parseTemplates("basic", "about"))
tmplAboutEn = template.Must(parseTemplates("basic", "about_en"))
tmplMain = template.Must(parseTemplates("basic", "main"))
tmplIndex = template.Must(parseTemplates("index"))
)
// render attempts to render a given Go template with data into the HTTP
@ -53,19 +51,9 @@ func render(w http.ResponseWriter, t *template.Template, data interface{}) {
}
}
// handleAbout handles rendering the about page at /about
func (s *service) handleAbout(w http.ResponseWriter, r *http.Request) {
render(w, tmplAbout, nil)
}
// handleAboutEn handles rendering the about page at /about_en
func (s *service) handleAboutEn(w http.ResponseWriter, r *http.Request) {
render(w, tmplAboutEn, nil)
}
// handleMain handles rendering the main page at /.
func (s *service) handleMain(w http.ResponseWriter, r *http.Request) {
render(w, tmplMain, map[string]interface{}{
// handleIndex handles rendering the main page at /.
func (s *service) handleIndex(w http.ResponseWriter, r *http.Request) {
render(w, tmplIndex, map[string]interface{}{
"Entries": s.getFeeds(),
})
}