Compare commits

..

5 Commits

Author SHA1 Message Date
jordi fita mas 4d2af368d2 Include pkg-info.mk in Debian rules for DEB_UPSTREAM_VERSION 2024-01-19 23:12:01 +01:00
jordi fita mas b4b049aab9 Include numerusVersion to CSS and JavaScript’s URIs 2024-01-19 23:09:25 +01:00
jordi fita mas e0bdb89472 Add legal disclaimer and privacy and cookies policies’ texts
The legal stuff. Required by Spanish law when setting up a site intended
for pecuniary gain, directly or indirectly.

Now we have more pages to the “public web”, and moved the header and
footer from home to the common layout.  I also took the opportunity to
change the element from <div> to the appropriate element based on their
use (i.e., <header> and <footer>).

I removed the <div> around the logo because i did not see any use for
it.  I may be from a previous design iteration, but it had no style
applied nor any usage at all in JavaScript.
2024-01-19 23:05:01 +01:00
jordi fita mas f15294c042 Use <small> to mark the application’s version up
I mistakenly thought that <small> was de inverse of the deprecated <big>
element, but apparently it is for small-print text and such, thus suited
for this case.
2024-01-19 22:59:06 +01:00
jordi fita mas 0937cfcf33 Remove redundant units of measure from numerus.css 2024-01-19 20:03:37 +01:00
13 changed files with 843 additions and 110 deletions

2
debian/rules vendored
View File

@ -1,5 +1,7 @@
#!/usr/bin/make -f
include /usr/share/dpkg/pkg-info.mk
%:
dh $@ --builddirectory=_build --buildsystem=golang --with=golang

View File

@ -72,6 +72,18 @@ func NewRouter(db *Db) http.Handler {
router.PUT("/company/:slug/*rest", companyHandler)
router.DELETE("/company/:slug/*rest", companyHandler)
router.GET("/legal", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
mustRenderWebTemplate(w, r, "legal.gohtml", nil)
})
router.GET("/privacy", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
mustRenderWebTemplate(w, r, "privacy.gohtml", nil)
})
router.GET("/cookies", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
mustRenderWebTemplate(w, r, "cookies.gohtml", nil)
})
router.GET("/", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
user := getUser(r)
if user.LoggedIn {

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: numerus\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2024-01-19 19:57+0100\n"
"POT-Creation-Date: 2024-01-19 22:33+0100\n"
"PO-Revision-Date: 2023-01-18 17:08+0100\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
@ -288,6 +288,39 @@ msgctxt "title"
msgid "Edit Invoice “%s”"
msgstr "Edició de la factura «%s»"
#: web/template/web.gohtml:14
msgctxt "link"
msgid "Login"
msgstr "Entrada"
#: web/template/web.gohtml:15
msgctxt "link"
msgid "Demo"
msgstr "Demo"
#: web/template/web.gohtml:16
msgctxt "link"
msgid "Code"
msgstr "Codi"
#: web/template/web.gohtml:27 web/template/legal.gohtml:2
#: web/template/legal.gohtml:7
msgctxt "title"
msgid "Legal Disclaimer"
msgstr "Avís legal"
#: web/template/web.gohtml:28 web/template/privacy.gohtml:2
#: web/template/privacy.gohtml:7
msgctxt "title"
msgid "Privacy Policy"
msgstr "Política de privacitat"
#: web/template/web.gohtml:29 web/template/cookies.gohtml:2
#: web/template/cookies.gohtml:7
msgctxt "title"
msgid "Cookies Policy"
msgstr "Política de cookies"
#: web/template/form.gohtml:36
msgctxt "input"
msgid "(Max. %s)"
@ -1353,6 +1386,10 @@ msgctxt "input"
msgid "Holded Excel file"
msgstr "Fitxer Excel del Holded"
#~ msgctxt "link"
#~ msgid "login"
#~ msgstr "Entrada"
#~ msgid "If you want to sign in, just head to %sthe login page%s and enter your credentials in the form."
#~ msgstr "Si vols accedir al teu usuari només has d'anar a %sla pàgina dentrada%s i apuntar les teves credencials al seu lloc."

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: numerus\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2024-01-19 19:57+0100\n"
"POT-Creation-Date: 2024-01-19 22:33+0100\n"
"PO-Revision-Date: 2023-01-18 17:45+0100\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
@ -288,6 +288,39 @@ msgctxt "title"
msgid "Edit Invoice “%s”"
msgstr "Edición de la factura «%s»"
#: web/template/web.gohtml:14
msgctxt "link"
msgid "Login"
msgstr "Entrada"
#: web/template/web.gohtml:15
msgctxt "link"
msgid "Demo"
msgstr "Demo"
#: web/template/web.gohtml:16
msgctxt "link"
msgid "Code"
msgstr "Código"
#: web/template/web.gohtml:27 web/template/legal.gohtml:2
#: web/template/legal.gohtml:7
msgctxt "title"
msgid "Legal Disclaimer"
msgstr "Aviso legal"
#: web/template/web.gohtml:28 web/template/privacy.gohtml:2
#: web/template/privacy.gohtml:7
msgctxt "title"
msgid "Privacy Policy"
msgstr "Política de privacidad"
#: web/template/web.gohtml:29 web/template/cookies.gohtml:2
#: web/template/cookies.gohtml:7
msgctxt "title"
msgid "Cookies Policy"
msgstr "Política de cookies"
#: web/template/form.gohtml:36
msgctxt "input"
msgid "(Max. %s)"

View File

@ -316,7 +316,6 @@ main {
body > footer {
border-top: 1px solid var(--numerus--color--light-gray);
font-size: 75%;
padding: .25em 3rem;
}
@ -549,24 +548,24 @@ ul[role="menu"].action-menu li i[class^='ri-'] {
/* menu tauler */
#profile-menu summary:hover, #profile-menu summary:focus, ul[role="menu"].action-menu button:hover, ul[role="menu"].action-menu a:hover, body > nav a {
color: var(--numerus--text-color);
text-decoration: none;
transition: 0.25s ease;
color: var(--numerus--text-color);
text-decoration: none;
transition: 0.25s ease;
}
#profile-menu summary:hover, #profile-menu summary:focus, ul[role="menu"].action-menu button:hover, ul[role="menu"].action-menu a:hover, body > nav ul:hover a {
color: #ccc;
color: #ccc;
}
#profile-menu summary:hover, #profile-menu summary:focus, ul[role="menu"].action-menu button:hover, ul[role="menu"].action-menu a:hover, body > nav ul:hover a:hover {
color: var(--numerus--text-color);
text-decoration: none;
color: var(--numerus--text-color);
text-decoration: none;
}
#profile-menu summary:active, #profile-menu summary:active, ul[role="menu"].action-menu button:active, ul[role="menu"].action-menu a:active, body > nav ul:active li:active a:active {
color: var(--numerus--text-color);
text-decoration: none;
color: var(--numerus--text-color);
text-decoration: none;
}
body > nav a[aria-current] {
@ -1056,8 +1055,9 @@ div[x-data="snackbar"] div[role="alert"].enter.end, div[x-data="snackbar"] div[r
}
#income-statement div:nth-child(4) {
background: var(--numerus--color--hay);
background: var(--numerus--color--hay);
}
#income-statement div:nth-child(4),
#income-statement div:nth-child(5) {
color: var(--numerus--color--black);
@ -10293,20 +10293,86 @@ div[x-data="snackbar"] div[role="alert"].enter.end, div[x-data="snackbar"] div[r
padding-bottom: .9375em;
}
.header-web {
display: flex;
justify-content: space-between;
border-bottom: 1px solid var(--numerus--color--black);
.web > header {
display: flex;
justify-content: space-between;
align-items: start;
border-bottom: 1px solid var(--numerus--color--black);
}
.menu-web {
text-transform: uppercase;
display: flex;
gap: 5rem;
.web > footer {
border-top: 1px solid var(--numerus--color--black);
margin: 5rem 0;
padding: 5rem 0 0 0;
}
.menu-web a {
color: var(--numerus--font-family);
text-decoration: none;
.web nav ul {
list-style: none;
padding: 0;
text-transform: uppercase;
display: flex;
gap: 5rem;
}
.web footer nav ul {
justify-content: center;
font-size: 83.3333%;
margin-top: 1em;
}
.web nav a {
color: var(--numerus--font-family);
text-decoration: none;
}
.web .legal h2 {
margin: .5em 0 1.5em 0;
}
.web .legal address,
.web .legal h3,
.web .legal h4,
.web .legal dl {
margin: 1.5789em 0;
}
.web .legal h2 {
counter-reset: section;
}
.web .legal h3 {
text-transform: uppercase;
counter-reset: subsection;
}
.web .legal h3::before {
counter-increment: section;
content: counter(section) ". ";
}
.web .legal h4::before {
counter-increment: subsection;
content: counter(section) "." counter(subsection) ". ";
}
.web .legal p {
line-height: 1.25;
}
.web .legal p + p {
text-indent: 1em;
}
.web .legal dl {
padding-inline-start: 40px;
}
.web .legal dt {
font-weight: bold;
}
.web .legal dt:not(:first-of-type) {
margin-top: 1.5789em;
}
#login {
@ -10318,30 +10384,29 @@ div[x-data="snackbar"] div[role="alert"].enter.end, div[x-data="snackbar"] div[r
}
#login button {
min-width: 26rem;
background-color: var(--numerus--color--black);
border: 2px solid var(--numerus--color--black);
text-transform: uppercase;
display: inline-block;
text-align: center;
padding: 1.55rem;
cursor: pointer;
color: var(--numerus--color--white);
min-width: 26rem;
background-color: var(--numerus--color--black);
border: 2px solid var(--numerus--color--black);
text-transform: uppercase;
display: inline-block;
text-align: center;
padding: 1.55rem;
cursor: pointer;
color: var(--numerus--color--white);
}
.contenidor {
display: grid;
grid-template-columns: repeat(2, 1fr);
padding: 5rem 0;
}
.graella {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-template-rows: repeat(3, 1fr);
grid-column-gap: 0px;
grid-row-gap: 0px;
grid-column-gap: 0;
grid-row-gap: 0;
}
.caixa {
@ -10416,98 +10481,92 @@ div[x-data="snackbar"] div[role="alert"].enter.end, div[x-data="snackbar"] div[r
.descripcio {
display: flex;
gap: 5rem;
justify-content: space-around;
margin: 5rem 0;
display: flex;
gap: 5rem;
justify-content: space-around;
margin: 5rem 0;
}
.paragraf {
flex: 2;
flex: 2;
}
.paragraf p {
margin: 0 0 2rem 0;
max-width: 45%;
margin: 0 0 2rem 0;
max-width: 45%;
}
.llista {
flex: 1;
flex: 1;
}
.icon-list {
display: flex;
gap: 10px;
padding: 5px 0;
display: flex;
gap: 10px;
padding: 5px 0;
}
.icon-list svg {
width: 24px;
width: 24px;
}
.future {
margin: 5rem 0;
margin: 5rem 0;
}
.opensource {
display: flex;
justify-content: space-between;
gap: 5rem;
border-top: 1px solid var(--numerus--color--black);
display: flex;
justify-content: space-between;
gap: 5rem;
border-top: 1px solid var(--numerus--color--black);
}
.download button {
margin: 5rem 0;
background: var(--numerus--color--yellow);
border: var(--numerus--color--yellow);
margin: 5rem 0;
background: var(--numerus--color--yellow);
border: var(--numerus--color--yellow);
}
.quadradet {
width: 17rem;
height: 17rem;
background: white;
width: 17rem;
height: 17rem;
background: white;
}
.llicencia {
max-width: 50%;
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 5rem;
margin: 17rem 0 0 0;
max-width: 50%;
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 5rem;
margin: 17rem 0 0 0;
}
.price-section {
display: flex;
justify-content: space-between;
gap: 5rem;
border-top: 1px solid var(--numerus--color--black);
padding: 5rem 0 0 0;
display: flex;
justify-content: space-between;
gap: 5rem;
border-top: 1px solid var(--numerus--color--black);
padding: 5rem 0 0 0;
}
.price {
flex: 1;
flex: 1;
}
.price h3 {
font-size: 4rem;
font-size: 4rem;
}
.price h2 {
margin: 5rem 0 0 0;
}
.price-detail {
display: flex;
flex-direction: row;
gap: 10px;
align-items: baseline;
margin: 5rem 0 0 0;
}
.footer-web {
border-top: 1px solid var(--numerus--color--black);
margin: 5rem 0;
padding: 5rem 0 0 0;
.price-detail {
display: flex;
flex-direction: row;
gap: 10px;
align-items: baseline;
}
/* web responsive */
@ -10523,8 +10582,8 @@ div[x-data="snackbar"] div[role="alert"].enter.end, div[x-data="snackbar"] div[r
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(5, 1fr);
grid-column-gap: 0px;
grid-row-gap: 0px;
grid-column-gap: 0;
grid-row-gap: 0;
}
.caixa-1 {

View File

@ -4,10 +4,10 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ template "title" . }} — Numerus</title>
<link rel="stylesheet" type="text/css" media="screen" href="/static/numerus.css">
<link rel="stylesheet" type="text/css" media="screen" href="/static/numerus.css?v={{ numerusVersion }}">
<script src="/static/htmx@1.9.2.min.js"></script>
<script type="module" src="/static/custom-elements@1.3.0.min.js"></script>
<script type="module" src="/static/numerus.js"></script>
<script type="module" src="/static/numerus.js?v={{ numerusVersion }}"></script>
<script defer src="/static/alpinejs@3.12.0.min.js"></script>
</head>
<body class="filters-visible">
@ -63,7 +63,7 @@
{{- template "content" . }}
</main>
<footer>
<p>{{printf ( gettext "<a href=\"https://numerus.cat/\">Numerus</a> Version: %s") numerusVersion | unsafe}}</p>
<p><small>{{printf ( gettext "<a href=\"https://numerus.cat/\">Numerus</a> Version: %s") numerusVersion | unsafe}}</small></p>
</footer>
</body>
<div x-data="snackbar">

163
web/template/cookies.gohtml Normal file
View File

@ -0,0 +1,163 @@
{{ define "title" -}}
{{( pgettext "Cookies Policy" "title" )}}
{{- end }}
{{ define "content" -}}
<article class="legal">
<h2>{{( pgettext "Cookies Policy" "title" )}}</h2>
<h3>Antecedents</h3>
<p>De conformitat amb la normativa espanyola que regula lús de <i lang="en">cookies</i> en relació amb la
prestació de serveis de comunicacions electròniques, recollida en el Reial decret llei 13/2012 del 30 de
març, linformem sobre les <i lang="en">cookies</i> utilitzades en el lloc web de ORIOL CARBONELL PUJOLÀS
(també el prestador) i el motiu del seu ús. Així mateix, linforma que en navegar en el Lloc web vostè està
prestant el seu consentiment per a poder utilitzar-les.</p>
<h3>Què són les <i lang="en">cookies</i>?</h3>
<p>Una <i lang="en">cookie</i> és un fitxer que es descarrega en el seu ordinador en accedir a determinat llocs
web. Les <i lang="en">cookies</i> permeten a un lloc web, entre altres coses, emmagatzemar i recuperar
informació sobre els hàbits de navegació dun usuari o del seu equip i, depenent de la informació que
continguin i de la forma en què utilitzi el seu equip, poden utilitzar-se per a reconèixer a lusuari. Les
<i lang="en">cookies</i> sassocien únicament a un usuari anònim i el seu ordinador o dispositiu i no
proporcionen referències que permetin conèixer les seves dades personals.</p>
<h3><i lang="en">Cookies</i> afectades per la normativa i <i lang="en">cookies</i> exemptes</h3>
<p>Segons la directiva de la <abbr>UE</abbr>, les <i lang="en">cookies</i> que requereixen el consentiment
informat per part de lusuari són les <i lang="en">cookies</i> danalítica i les de publicitat i afiliació,
quedant exceptuades les de caràcter tècnic i les necessàries per al funcionament del lloc web o la prestació
de serveis expressament demandats per lusuari.</p>
<h3>Tipus de <i lang="en">cookies</i></h3>
<ol type="a">
<li>Segons lentitat que les gestioni, hi han <i lang="en">cookies</i> pròpies, aquelles que senvien a
lequip terminal de lusuari des dun equip o domini gestionat pel propi editor i des del qual es presta
el servei Sol·licitat per lusuari; i de tercers, les que senvien a lequip terminal de lusuari des
dun equip o domini que no és gestionat per leditor, sinó per una altra entitat que tracta les dades
obtingudes través de les <i lang="en">cookies</i>.
</li>
<li>Segons el temps que romanen actives, existeixen les de sessió, dissenyades per a recaptar i emmagatzemar
dades mentre lusuari accedeix a una pàgina web; i les persistents, en les quals les dades
semmagatzemen en el terminal i poden ser accedits i tractats durant un període definit pel responsable
de la <i lang="en">cookie</i> que pot anar duns minuts a diversos anys.
</li>
<li>Segons la finalitat per a la qual tractin la informació que recopilen, poden ser:
<ul>
<li><i lang="en">Cookies</i> tècniques: necessàries per a lús de la web i la prestació del servei
contractat.
</li>
<li><i lang="en">Cookies</i> de personalització: que permeten a lusuari accedir al servei amb
característiques predefinides, com per exemple lidioma, tipus de navegador, configuració
regional, etc.
</li>
<li><i lang="en">Cookies</i> danàlisis: recullen informació lús que es realitza de la web.</li>
<li><i lang="en">Cookies</i> publicitàries: recullen informació sobre les preferències i eleccions
personals dels usuaris.
<li><i lang="en">Cookies</i> dafiliats: permeten realitzar un seguiment de les visites procedents
daltres webs, amb les quals el lloc web estableix un contracte dafiliació.
</li>
</ul>
</li>
</ol>
<h3>Tipus de <i lang="en">cookies</i> utilitzades per aquest lloc web</h3>
<table>
<thead>
<tr>
<th scope="col">Nom</th>
<th scope="col">Tipus</th>
<th scope="col">Caducitat</th>
<th scope="col">Finalitat</th>
<th scope="col">Classe</th>
</tr>
</thead>
<tbody>
<tr>
<td>numerus-session</td>
<td>Pròpia</td>
<td>Peristent</td>
<td>Identificar lentrada de lUsuari a la seves dades</td>
<td>Tècnica</td>
</tr>
</tbody>
</table>
<h3>Revocació</h3>
<p>En tot moment podrà accedir a la configuració del seu navegador acceptant o rebutjant totes les <i lang="en">cookies</i>,
o bé seleccionar aquelles la instal·lació de les quals admet i quines no, seguint un dels següents
procediments, que depèn del navegador que utilitzi:</p>
<dl>
<dt>Google Chrome</dt>
<dd>Configuració → Mostrar opcions avançades → Privacitat (Configuració de contingut) → <i
lang="en">Cookies</i></dd>
<dd><a href="https://support.google.com/chrome/answer/95647?co=genie.platform%3DDesktop&amp;hl=ca">https://support.google.com/chrome/answer/95647?co=genie.platform%3DDesktop&amp;hl=ca</a>
</dd>
<dt>Microsoft Internet Explorer</dt>
<dd>Opcions dInternet → Privacitat → Avançada</dd>
<dd><a href="https://support.microsoft.com/ca-es/help/17442/windows-internet-explorer-delete-managecookies">https://support.microsoft.com/ca-es/help/17442/windows-internet-explorer-delete-managecookies</a>
</dd>
<dt>Firefox</dt>
<dd>Opcions → Privacitat → <i lang="en">Cookies</i></dd>
<dd><a href="https://support.mozilla.org/ca/products/firefox/protect-your-privacy/cookies">https://support.mozilla.org/ca/products/firefox/protect-your-privacy/cookies</a>
</dd>
<dt>Safari, iPad i iPhone</dt>
<dd>Preferències → Privacitat</dd>
<dd><a href="https://support.apple.com/ca-es/105082">https://support.apple.com/ca-es/105082</a></dd>
<dt>Opera</dt>
<dd>Configuració → Opcions → Avançat → <i lang="en">Cookies</i></dd>
<dd><a href="https://help.opera.com/en/latest/web-preferences/#cookies">https://help.opera.com/en/latest/web-preferences/#cookies</a>
</dd>
</dl>
<p>Aquests navegadors estan sotmesos a actualitzacions o modificacions, per la qual cosa no podem garantir que
sajustin completament a la versió del seu navegador. També pot ser que utilitzi un altre navegador no
contemplat en aquests enllaços com Konqueror, Arora, Flock, etc.</p>
<p>Per a evitar aquests desajustaments, pot accedir directament des de les opcions del seu navegador,
generalment en el menú de «Opcions» en la secció de «Privacitat». Si us plau, consulti lajuda del seu
navegador per a més informació.</p>
<h3>Desactivació/activació i eliminació de <i lang="en">cookies</i></h3>
<p>Per a restringir o bloquejar les <i lang="en">cookies</i>, es fa a través de la configuració del navegador.
</p>
<p>Si no desitja que els llocs web posin cap <i lang="en">cookie</i> en el seu equip, pot adaptar la
configuració del navegador de manera que se li notifiqui abans que es col·loqui cap <i lang="en">cookie</i>.
Digual manera, pot adaptar la configuració de manera que el navegador rebutgi totes les <i lang="en">cookies</i>,
o únicament les <i lang="en">cookies</i> de tercers. També pot eliminar qualsevol de les <i lang="en">cookies</i>
que ja es trobin en lequip. Tingui en compte que haurà dadaptar per separat la configuració de cada
navegador i equip que utilitzi.</p>
<p>Tingui en compte que, si no desitja rebre <i lang="en">cookies</i>, ja no podrem garantir que el nostre lloc
web funcioni degudament. Pot ser que algunes funcions del lloc es perdin i és possible que ja no pugui veure
certs llocs web.</p>
<p>Cada navegador posseeix un mètode diferent per a adaptar la configuració. Si fos necessari, consulti la
funció dajuda del navegador per a establir la configuració correcta. Per a desactivar les <i lang="en">cookies</i>
en el telèfon mòbil, consulti el manual del dispositiu per a obtenir més informació.</p>
<p> Pot obtenir més informació sobre les <i lang="en">cookies</i> dInternet a <a
href="https://www.aboutcookies.org/">https://www.aboutcookies.org/</a>.</p>
<p>Tenint en compte la forma en la qual funciona Internet i els llocs web, no sempre comptem amb informació de
les <i lang="en">cookies</i> que col·loquen terceres parts a través del nostre lloc web. Això saplica
especialment a casos en els quals la nostra pàgina web conté el que es denominen elements integrats: textos,
documents, imatges o breus pel·lícules que semmagatzemen en una altra part, però es mostren en el nostre
lloc web o a través daquest. Per tant, en cas que es trobi amb aquest tipus de <i lang="en">cookies</i> en
aquest lloc web i no estiguin enumerades en la llista anterior, li preguem que ens el comuniqui. O bé posis
en contacte directament amb el tercer per a demanar-li informació sobre les <i lang="en">cookies</i> que
col·loca, la finalitat i la durada de la <i lang="en">cookie</i>, i com ha garantit la seva privacitat.</p>
</article>
{{- end }}

View File

@ -3,11 +3,6 @@
{{- end }}
{{ define "content" -}}
<div class="header-web">
<div class="logo"><h1><img src="/static/numerus.svg" alt="Numerus" width="261" height="33"></h1></div>
<div class="menu-web"><a href="/login">login</a> <a href="https://numerus.tandem.ws/login">demo</a> <a href="https://dev.tandem.ws/tandem/numerus">codi</a></div>
</div>
<div class="graella">
<div class="caixa caixa-1">autònoms</div>
<div class="caixa caixa-2"></div>
@ -92,9 +87,4 @@
<h2>Escriu-nos a hola@tandem.blog i donem d'alta</h2>
</div>
</div>
<div class="footer-web">
<small>ho hem fet tant bé com hem sabut en Jordi Fita i lOriol Carbonell</small>
</div>
{{- end }}

View File

@ -30,7 +30,7 @@
{{ define "content" }}
{{- /*gotype: dev.tandem.ws/tandem/numerus/pkg.invoice*/ -}}
<link rel="stylesheet" type="text/css" href="/static/invoice.css">
<link rel="stylesheet" type="text/css" href="/static/invoice.css?v={{ numerusVersion }}">
<article class="invoice">
<header>
<div>

189
web/template/legal.gohtml Normal file
View File

@ -0,0 +1,189 @@
{{ define "title" -}}
{{( pgettext "Legal Disclaimer" "title" )}}
{{- end }}
{{ define "content" -}}
<article class="legal">
<h2>{{( pgettext "Legal Disclaimer" "title" )}}</h2>
<p>Amb la finalitat de donar compliment a larticle 10 de la Llei 34/2002 de Serveis de la Societat de la
Informació i del Comerç Electrònic, informem als usuaris de les nostres dades:</p>
<address>Denominació Social: ORIOL CARBONELL PUJOLÀS<br>
Domicili: Carrer de les Estires nº 5, 1r 2a, 17800 Olot<br>
<abbr>DNI</abbr>: 40358143C<br>
Telèfon: +34 659 767 669<br>
Correu electrònic: <a href="mailto:hola@tandem.blog">hola@tandem.blog</a><br>
Lloc web: <a href="https://numerus.cat/">numerus.cat</a></address>
<h3>Objecte</h3>
<p>ORIOL CARBONELL PUJOLÀS (dara endavant també el prestador), com a responsable del lloc web, posa a la
disposició dels usuaris el present document, que regula lús del lloc web
<a href="http://numerus.cat">numerus.cat</a>, amb el qual pretenem donar compliment a les obligacions que
disposa la Llei 34/2002, de Serveis de la Societat de la Informació i del Comerç Electrònic
(<abbr>LSSICE</abbr> o <abbr>LSSI</abbr>), així com informar a tots els usuaris del lloc web respecte de
quines són les condicions dús del lloc web.</p>
<p>A través del Web, ORIOL CARBONELL PUJOLÀS facilita als usuaris laccés i utilització de diferents serveis i
continguts posats a disposició a través del web.</p>
<p>Tota persona que accedeixi a aquest web assumeix el paper dusuari (dara endavant lusuari), i implica
lacceptació total i sense reserves de totes i cadascuna de les disposicions incloses en aquest avís legal,
així com a qualssevol altres disposicions legals que fossin aplicables.</p>
<p>Com a usuaris, han de llegir atentament aquest Avís Legal en qualsevol de les ocasions que entrin al web,
perquè aquesta pot sofrir modificacions ja que el prestador es reserva el dret a modificar qualsevol tipus
dinformació que pogués aparèixer en la web, sense que existeixi lobligació de pre-avisar o posar en
coneixement dels usuaris aquestes obligacions, sent suficients la publicació en el lloc web del
prestador.</p>
<h3>Condicions daccés i ús del web</h3>
<h4>Caràcter comercial de laccés i ús del web</h4>
<p>La prestació dels serveis per part de ORIOL CARBONELL PUJOLÀS té caràcter comercial per a tots els
Usuaris.</p>
<h4>Subscripció dUsuari.</h4>
<p>Amb caràcter general la prestació dels Serveis exigeix la prèvia subscripció dels Usuaris. Aquesta
subscripció sefectuarà dacord amb la forma expressament prevista en la pròpia secció del servei.</p>
<h4>Veracitat de la informació</h4>
<p>Tota la informació que facilita lUsuari ha de ser veraç. A aquest efecte, lUsuari garanteix lautenticitat
de les dades comunicades a través dels formularis per a la subscripció dels Serveis.</p>
<p>Serà responsabilitat de lUsuari mantenir tota la informació facilitada a ORIOL CARBONELL PUJOLÀS
permanentment actualitzada de manera que respongui, a cada moment, a la seva situació real. En tot cas,
lUsuari serà lúnic responsable de les manifestacions falses o inexactes que realitzi i dels perjudicis que
causi al prestador o a tercers.</p>
<h4>Menors dedat</h4>
<p>Per a lús dels serveis, lUsuari ha de ser major dedat.</p>
<h4>Obligació de fer un ús correcte del Web</h4>
<p>LUsuari es compromet a utilitzar el Web de conformitat a la Llei i al present Avís Legal, així com a la
moral i a les bones costums. A aquest efecte, lUsuari sabstindrà dutilitzar el web amb finalitats
il·lícites o prohibides, lesives de drets i interessos de tercers, o que de qualsevol forma puguin danyar,
inutilitzar, sobrecarregar, deteriorar o impedir la normal utilització dequips informàtics o documents,
arxius i tota classe de continguts emmagatzemats en qualsevol equip informàtic del prestador.</p>
<p>En particular, i a títol indicatiu, però no exhaustiu, lUsuari es compromet a no transmetre, difondre o
posar a la disposició de tercers informacions, dades, continguts, missatges, gràfics, dibuixos, arxius de so
o imatge, fotografies, enregistraments, programari i, en general, qualsevol classe de material que:</p>
<ol type="a">
<li>sigui contrària, menyspreï o atempti contra els drets fonamentals i les llibertats públiques reconegudes
constitucionalment, en tractats internacionals i altres normes vigents;
</li>
<li>indueixi, inciti o promogui actuacions delictives, denigrants, difamatòries, violentes o, en general,
contràries a la llei, a la moral i a lordre públic;
</li>
<li>indueixi, inciti o promogui actuacions, actituds o pensaments discriminatoris per raó de sexe, raça,
religió, creences, edat o condició;
</li>
<li>sigui contrari al dret a lhonor, a la intimitat personal o familiar o a la pròpia imatge de les
persones;
</li>
<li>de qualsevol manera perjudiqui la credibilitat del prestador o de tercers;</li>
<li>constitueixi publicitat il·lícita, enganyosa o deslleial.</li>
</ol>
<h3>Exclusió de garanties i responsabilitat</h3>
<p>El prestador seximeix de qualsevol tipus de responsabilitat derivada de la informació publicada en el nostre
lloc web, sempre que aquesta informació hagi estat manipulada o introduïda per un tercer aliè.</p>
<p>Aquest web ha estat revisat i provat perquè funcioni correctament. En principi, es pot garantir el
correcte funcionament els 365 dies de lany, 24 hores al dia. No obstant això, el prestador no descarta
la possibilitat que existeixin determinats errors de programació, o que succeeixin causes de força major,
catàstrofes naturals, vagues, o circumstàncies semblants que facin impossible laccés a la pàgina web. ORIOL
CARBONELL PUJOLÀS no atorga cap garantia ni es fa responsable, en cap cas, dels danys i perjudicis de
qualsevol naturalesa que puguin sortir a col·lació de la falta de disponibilitat, manteniment i efectiu
funcionament del web o dels seus serveis i continguts; de lexistència de virus, programes maliciosos o
lesius en els continguts; de lús il·lícit, negligent, fraudulent o contrari a aquest Avís Legal i
condicions dús; o de la falta de licitud, qualitat, fiabilitat, utilitat i disponibilitat dels serveis
prestats per tercers i posats a la disposició dels usuaris en el lloc web.</p>
<p>El prestador no es fa responsable en cap concepte dels danys que puguin dimanar de lús il·legal o indegut
del present lloc web.</p>
<h3><i lang="en">Cookies</i></h3>
<p>El lloc web del prestador utilitza <i lang="en">cookies</i>, petits arxius dinformació que el servidor envia a
lordinador de qui accedeix al lloc, per a dur a terme determinades funcions que són considerades
imprescindibles per al correcte funcionament i visualització del lloc. Les cookies utilitzades tenen, en tot
cas, caràcter temporal, amb lúnica finalitat de donar accés a lUsuari a les seves dades.</p>
<p>En cap cas sutilitzaran les cookies per a recollir informació de caràcter personal.</p>
<p>Per a més informació, veure <a href="/cookies">la nostra Política de <i lang="en">Cookies</i></a>.</p>
<h3>Enllaços</h3>
<p>Des del lloc web és possible que es redirigeixi a continguts de terceres webs. Atès que des del web no podem
controlar sempre els continguts introduïts pels tercers, ORIOL CARBONELL PUJOLÀS no assumeix cap mena de
responsabilitat respecte a aquests continguts. En tot cas, el prestador manifesta que procedirà a la
retirada immediata de qualsevol contingut que pogués contravenir la legislació nacional o internacional, la
moral o lordre públic, procedint a la retirada immediata de la re-adreça a aquestes webs, posant en
coneixement de les autoritats competents el contingut en qüestió.</p>
<p>El prestador no es responsabilitza de la informació i continguts emmagatzemats, a títol enunciatiu, però no
limitant, en fòrums, xats, generadors de blogs, comentaris, xarxes socials o qualsevol altre mitjà que
permeti a tercers publicar continguts de forma independent al lloc web del prestador. No obstant això i en
compliment del que disposen els articles 11 i 16 de la <abbr>LSSICE</abbr>, el prestador es posa a la
disposició de tots els usuaris, autoritats i forces de seguretat, i col·laborant de forma activa en la
retirada o, quan sigui necessari, el bloqueig de tots aquells continguts que puguin afectar o contravenir la
legislació nacional, o internacional, drets de tercers o la moral i lordre públic. En cas que lusuari
consideri que pot existir algun contingut que pogués ser susceptible daquesta classificació, es prega
notifiqui de forma immediata a ladministrador del lloc web.</p>
<h3>Protecció de dades personals</h3>
<p>El prestador està profundament compromès amb el compliment de la normativa de protecció de dades personals i
garanteix el compliment íntegre de les obligacions disposades, així com la implementació de les mesures de
seguretat disposades al Reglament Europeu de Protecció de dades i la normativa espanyola de protecció de
dades. Per a més informació, veure <a href="/privacy">la nostra Política de Privacitat</a>.</p>
<h3>Propietat intel·lectual i industrial</h3>
<p>El lloc web, incloent a títol enunciatiu, però no limitatiu, la programació, edició, compilació i altres
elements necessaris per al seu funcionament, els dissenys, logotips, textos, fotografies i/o gràfics són
propietat del prestador o, en cas que fos necessari, disposa de la llicència o autorització expressa per
part dels autors. Tots els continguts del lloc web es troben degudament protegits per la normativa de
propietat intel·lectual i industrial.</p>
<p>Independentment de la finalitat per la qual fossin destinats, la reproducció total o parcial, ús, distribució
i comunicació pública requereixen de lautorització escrita prèvia per part del prestador. Qualsevol ús no
autoritzat prèviament per part del prestador serà considerat un incompliment greu dels drets de propietat
intel·lectual o industrial de lautor.</p>
<p>Els dissenys, logotips, textos i/o gràfics aliens al prestador i que puguin aparèixer en el lloc web,
pertanyen als seus respectius propietaris, sent ells mateixos els responsables de qualsevol possible
controvèrsia que pogués esdevenir respecte a aquests. En tot cas, el prestador compta amb lautorització
expressa i prèvia per part daquests.</p>
<p>El prestador reconeix a favor dels seus titulars els corresponents drets de propietat industrial i
intel·lectual, no implicant lesment o aparició en el lloc web, de lexistència de drets o cap
responsabilitat del prestador sobre aquests, com tampoc suport, patrocini o recomanació per part
daquest.</p>
<p>Per a realitzar qualsevol tipus dobservació respecte a possibles incompliments dels drets de propietat
intel·lectual o industrial, així com sobre qualsevol dels continguts del lloc web, pot ferlo a través del
correu electrònic a dalt ressenyat.</p>
<h3>Llei aplicable i jurisdicció</h3>
<p>Per a la resolució de les controvèrsies o qüestions relacionades amb el present lloc web o de les activitats
en aquest desenvolupades, serà aplicable la legislació espanyola, a la qual se sotmeten expressament les
parts, sent competents per la resolució de tots els conflictes derivats o relacionats amb el seu ús els
Jutjats i Tribunals dOlot.</p>
</article>
{{- end }}

224
web/template/privacy.gohtml Normal file
View File

@ -0,0 +1,224 @@
{{ define "title" -}}
{{( pgettext "Privacy Policy" "title" )}}
{{- end }}
{{ define "content" -}}
<article class="legal">
<h2>{{( pgettext "Privacy Policy" "title" )}}</h2>
<h3>Responsable del tractament</h3>
<address>Identitat: ORIOL CARBONELL PUJOLÀS (també el prestador)<br>
<abbr>DNI</abbr>: 40358143C<br>
Adreça postal: Carrer de les Estires, 5, 1r 2a 17800 Olot<br>
Correu electrònic: <a href="mailto:hola@tandem.blog">hola@tandem.blog</a></address>
<p>ORIOL CARBONELL PUJOLÀS, com a responsable del Lloc web, de conformitat amb el que disposa el Reglament
(<abbr>UE</abbr>) 2016/679 de 27 dabril de 2016 (<abbr>RGPD</abbr>) relatiu a la protecció de les persones
físiques quant al tractament de dades personals i a la lliure circulació daquestes dades i altra normativa
vigent en matèria de protecció de dades personals, i per la Llei 34/2002, d11 de juliol, de Serveis de la
Societat de la Informació i del Comerç Electrònic (<abbr>LSSICE</abbr>), linforma que té implementades les
mesures de seguretat necessàries, díndole tècnica i organitzatives, per a garantir i protegir la
confidencialitat, integritat i disponibilitat de les dades introduïdes.</p>
<h3>Finalitat del tractament</h3>
<p>Les seves dades personals només sutilitzaran per a les següents finalitats:</p>
<ul>
<li>Realitzar les gestions comercials i administratives necessàries amb els usuaris del web;</li>
<li>remetre les comunicacions comercials publicitàries per email, fax, <abbr>SMS</abbr>, <abbr>MMS</abbr>,
comunitats socials o qualsevol un altre mitjà electrònic o físic, en cas que lUsuari hagi consentit
expressament a lenviament de comunicacions comercials per via electrònica mitjançant la subscripció al
butlletí;
</li>
<li>respondre a les consultes i/o proporcionar informacions requerides per lUsuari;</li>
<li>realitzar les prestacions de serveis i/o productes contractats o subscrits per lUsuari;</li>
<li>utilitzar les seves dades per a contactar-li, tant per via electrònica com no electrònica, per a obtenir
la seva opinió sobre el servei prestat;
</li>
<li>i notificar-li canvis i desenvolupaments imminents de <a href="/privacy">la política de privacitat</a>,
<a href="/legal">avís legal</a> o <a href="/cookies">política de <i lang="en">cookies</i></a>.
</li>
</ul>
<p>Pot revocar en qualsevol moment el seu consentiment remetent un escrit amb lassumpte «Baixa» a <a
href="mailto:hola@tandem.blog">hola@tandem.blog</a>.</p>
<p>Dacord amb la <abbr>LSSICE</abbr>, ORIOL CARBONELL PUJOLÀS no realitza pràctiques de <i lang="en">spam</i>,
per tant, no envia correus comercials per email que no hagin estat prèviament sol·licitats o autoritzats per
lUsuari. En conseqüència, en totes les comunicacions que rebrà del prestador, lusuari té la possibilitat
de cancel·lar el seu consentiment exprés per a rebre les nostres comunicacions.</p>
<p>No tractarem les seves dades personals per a cap altra finalitat de les descrites excepte per obligació legal
o requeriment judicial.</p>
<p>Les seves dades es conservaran mentre duri la relació comercial amb nosaltres o exerciti el seu dret de
cancel·lació o oposició, o limitació al tractament. No obstant això, conservarem determinades dades
personals identificatius i del trànsit durant el termini màxim de 2 anys per al cas que fos requerit pels
Jutges i Tribunals o per a incoar accions internes derivades de lús indegut de la pàgina web.</p>
<p>No serà objecte de decisions basades en tractaments automatitzats que produeixin efectes sobre les seves
dades.</p>
<h3>Legitimació del tractament</h3>
<p>La base legal per al tractament de les dades és el seu consentiment atorgat per a dur a terme les finalitats
anteriorment descrites, que se sol·licitarà en el moment de marcat de la casella corresponent a lhora de
recollir les seves dades.</p>
<p>El no facilitar les dades personals sol·licitades o el no acceptar la present política de protecció de dades
suposa la impossibilitat de subscriures, registrar-se o rebre informació dels productes i serveis del
Prestador.</p>
<h3>Destinataris de cessions o transferències</h3>
<p>ORIOL CARBONELL PUJOLÀS no duu a terme cap cessió o comunicació de dades ni dins ni fora de la UE. El
prestador únicament facilitarà informació a les forces i cossos de seguretat sota ordre judicial o per
obligació duna norma legal, sense perjudici de poder bloquejar o cancel·lar el seu compte si pot haver-hi
indicis de la comissió dalgun delicte per part de lusuari. La informació facilitada serà solament la que
disposi en aquest moment el prestador.</p>
<p>La informació que vostè ens proporcioni tant a través daquest lloc web com a través de laplicació serà
allotjada en els servidors de ORIOL CARBONELL PUJOLÀS. El tractament de les dades daquesta entitat es troba
regulat mitjançant un contracte dencarregat del tractament entre el prestador i aquesta empresa. En cap cas
aquest encarregat del tractament subcontractarà serveis que comportin algun tractament de dades per tercers
sense el nostre previ consentiment.</p>
<h3>Drets de les persones interessades</h3>
<p>Com a usuari-interessat, pot sol·licitar lexercici dels següents drets davant ORIOL CARBONELL PUJOLÀS
presentant un escrit a ladreça postal de lencapçalament o enviant un correu electrònic a <a
href="mailto:hola@tandem.blog">hola@tandem.blog</a>, indicant com a Assumpte: «LOPD, Drets ARC», i
adjuntant fotocòpia del seu <abbr>DNI</abbr> o qualsevol mitjà anàleg en dret, tal com indica la llei.</p>
<p>Drets:</p>
<ul>
<li>Dret daccés: permet a linteressat conèixer i obtenir informació sobre les seves dades de caràcter
personal sotmeses a tractament.
</li>
<li>Dret de rectificació o supressió: permet corregir errors i modificar les dades que resultin ser
inexactes o incomplets.
</li>
<li>Dret de cancel·lació: permet que se suprimeixin les dades que resultin ser inadequades o excessives.
</li>
<li>Dret doposició: dret de linteressat al fet que no es dugui a terme el tractament de les seves dades de
caràcter personal o se cessi en aquest.
</li>
<li>Limitació del tractament: comporta el marcat de les dades personals conservades, amb la
finalitat de limitar el seu futur tractament.
</li>
<li>Portabilitat de les dades: facilitació de les dades objecte de tractament a linteressat, a fi que
aquest pugui transmetre-les a un altre responsable, sense impediments.
</li>
<li>Dret a no ser objecte de decisions individuals automatitzades (inclosa lelaboració de perfils): dret a
no ser objecte duna decisió basada en el tractament automatitzat que produeixi efectes o afecti
significativament.
</li>
</ul>
<p>Com a usuari, té dret a retirar el consentiment prestat en qualsevol moment. La retirada del consentiment no
afectarà la licitud del tractament efectuat abans de la retirada del consentiment.</p>
<p>També té dret a presentar una reclamació davant <a href="https://www.aepd.es/">lautoritat de control
(aepd.es)</a> si considera que poden haver-se vist vulnerats els seus drets en relació amb la protecció
de les seves dades.</p>
<h3>Informació addicional</h3>
<p>Informació que recaptem: Obtenim mitjançant formulari de registre la informació mínima i indispensable. En
aquest
formulari vostè facilitarà les següents dades de forma indispensable: correu electrònic, nom i cognoms,
<abbr>NIF</abbr>,
adreça i telèfon de contacte.</p>
<p>A través daquesta Política de Privacitat linformem que les fotografies que estiguin penjades en la web són
propietat de ORIOL CARBONELL PUJOLÀS, incloent les dels menors, en les quals, per a lobtenció daquestes,
sha
obtingut el consentiment previ dels pares, tutors o representants legals mitjançant la signatura dels
formularis
realitzats a aquest efecte pels centres en els quals els menors formen part. No obstant això, els pares,
tutors
o representants dels menors, com a titulars de lexercici dels drets daquests, i sempre previ requeriment
formal per escrit, poden indicar la negativa a lús de la imatge del menor; en aquest cas, la imatge es
mostrarà
pixelada.</p>
<h3>Xarxes socials</h3>
<p>Linformem que ORIOL CARBONELL PUJOLÀS pot tenir presència en xarxes socials. El tractament de les dades que
es
dugui a terme de les persones que es facin seguidores en les xarxes socials (i/o realitzin qualsevol vincle
o
acció de connexió a través de les xarxes socials) de les pàgines oficials de ORIOL CARBONELL PUJOLÀS es
regirà
per aquest apartat, així com per aquelles condicions dús, polítiques de privacitat i normatives daccés que
pertanyin a la xarxa social que procedeixi en cada cas i acceptades prèviament per lusuari.</p>
<p>ORIOL CARBONELL PUJOLÀS tractarà les seves dades amb les finalitats dadministrar correctament la seva
presència
en la xarxa social, informant-lo dactivitats, productes o serveis del prestador, així com per a qualsevol
altra
finalitat que les normatives de les Xarxes Socials permetin.</p>
<p>Queda prohibida la publicació de continguts:</p>
<ul>
<li>Que siguin presumptament il·lícits per la normativa nacional, comunitària o internacional o que
realitzin
activitats presumptament il·lícites o contravinguin els principis de la bona fe.
</li>
<li>Que atemptin contra els drets fonamentals de les persones, faltin a la cortesia en la xarxa, molestin o
puguin generar opinions negatives en els nostres usuaris o tercers i en general qualssevol siguin els
continguts que ORIOL CARBONELL PUJOLÀS consideri inapropiats.
</li>
<li>I en general que contravinguin els principis de legalitat, honradesa, responsabilitat, protecció de la
dignitat humana, protecció de menors, protecció de lordre públic, la protecció de la vida privada, la
protecció del consumidor i els drets de propietat intel·lectual i industrial.
</li>
</ul>
<p>Així mateix, ORIOL CARBONELL PUJOLÀS es reserva la potestat de retirar, sense previ avís del lloc web o de la
xarxa social corporativa aquells continguts que es considerin inapropiats.</p>
<p>Les comunicacions remeses a través de les xarxes socials seran incorporades a un arxiu propietat de ORIOL
CARBONELL PUJOLÀS, podent-li enviar informació del seu interès.</p>
<p>En tot cas, si Vostè remet informació personal a través de la xarxa social, ORIOL CARBONELL PUJOLÀS quedarà
exempt de responsabilitat en relació amb les mesures de seguretat aplicables a la present plataforma, devent
lusuari en cas de voler conèixer-les, consultar les corresponents condicions particulars de la xarxa en
qüestió.</p>
<h3>Mesures de seguretat</h3>
<p>Les dades que ens faciliti es tractaran de forma confidencial. El Prestador ha adoptat totes les mesures
tècniques i organitzatives i tots els nivells de protecció necessaris per a garantir la seguretat en el
tractament de les dades i evitar la seva alteració, pèrdua, robatori, tractament o accés no autoritzat,
dacord lestat de la tecnologia i naturalesa de les dades emmagatzemades.</p>
<p>Així mateix, es garanteix també que el tractament i registre en fitxers, programes, sistemes o equips, locals
i centres compleixen amb els requisits i condicions dintegritat i seguretat establertes en la normativa
vigent.</p>
<h3>Idioma</h3>
<p>Lidioma aplicable a aquesta Política de Privacitat és el català. Per tant, en cas que hi hagués alguna
contradicció en alguna de les versions facilitades en altres idiomes, prevaldrà la versió en català.</p>
<h3>Canvis en la present política de privacitat</h3>
<p>ORIOL CARBONELL PUJOLÀS es reserva el dret a modificar la present política per a adaptarla a novetats
legislatives o jurisprudencials.</p>
<h3>Legislació</h3>
<p>Amb caràcter general les relacions entre ORIOL CARBONELL PUJOLÀS amb els Usuaris dels seus serveis
telemàtics, presents en aquest Web, estan sotmesos a la legislació i jurisdicció espanyola a la qual se
sotmeten expressament les parts, sent competents per la resolució de tots els conflictes derivats o
relacionats amb el seu ús els Jutjats i Tribunals de Olot.</p>
</article>
{{- end }}

View File

@ -29,7 +29,7 @@
{{ define "content" }}
{{- /*gotype: dev.tandem.ws/tandem/numerus/pkg.quote*/ -}}
<link rel="stylesheet" type="text/css" href="/static/invoice.css">
<link rel="stylesheet" type="text/css" href="/static/invoice.css?v={{ numerusVersion }}">
<article class="invoice">
<header>
<div>

View File

@ -1,12 +1,36 @@
<!doctype html>
<html lang="{{ currentLocale }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ template "title" . }} — Numerus</title>
<link rel="stylesheet" type="text/css" media="screen" href="/static/numerus.css">
</head>
<body class="web">
{{- template "content" . }}
</body>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ template "title" . }} — Numerus</title>
<link rel="stylesheet" type="text/css" media="screen" href="/static/numerus.css?v={{ numerusVersion }}">
</head>
<body class="web">
<header>
<h1><img src="/static/numerus.svg" alt="Numerus" width="261" height="33"></h1>
<nav>
<ul>
<li><a href="/login">{{( pgettext "Login" "link" )}}</a></li>
<li><a href="https://numerus.tandem.ws/login">{{( pgettext "Demo" "link" )}}</a></li>
<li><a href="https://dev.tandem.ws/tandem/numerus">{{( pgettext "Code" "link" )}}</a></li>
</ul>
</nav>
</header>
{{- template "content" . }}
<footer>
<p><small>ho hem fet tant bé com hem sabut en Jordi Fita i lOriol Carbonell</small></p>
<nav>
<ul>
<li><a href="/legal">{{( pgettext "Legal Disclaimer" "title")}}</a></li>
<li><a href="/privacy">{{( pgettext "Privacy Policy" "title")}}</a></li>
<li><a href="/cookies">{{( pgettext "Cookies Policy" "title")}}</a></li>
</ul>
</nav>
</footer>
</body>
</html>