Continuing pages.
|
@ -1,2 +0,0 @@
|
|||
[Project]
|
||||
VersionControlSupport=kdevgit
|
33
i18n/en.json
|
@ -5,6 +5,15 @@
|
|||
"availableOn": {
|
||||
"other": "Available on "
|
||||
},
|
||||
"download": {
|
||||
"other": "Download"
|
||||
},
|
||||
"technicalSheet": {
|
||||
"other": "Technical sheet"
|
||||
},
|
||||
"downloadApp": {
|
||||
"other": "{{ .Name }} is available on the following platforms: {{ .Platforms }}."
|
||||
},
|
||||
"status": {
|
||||
"other": "Status: "
|
||||
},
|
||||
|
@ -14,14 +23,32 @@
|
|||
"language": {
|
||||
"other": "Language"
|
||||
},
|
||||
"translated": {
|
||||
"other": "Translated in: "
|
||||
},
|
||||
"en": {
|
||||
"other": "English"
|
||||
},
|
||||
"fr": {
|
||||
"other": "French"
|
||||
},
|
||||
"supportedPlatforms": {
|
||||
"other": "Supported platforms: "
|
||||
},
|
||||
"translated": {
|
||||
"other": "Translated in: "
|
||||
},
|
||||
"programingLanguages": {
|
||||
"other": "Made in: "
|
||||
},
|
||||
"latestVersion": {
|
||||
"other": "Latest version: "
|
||||
},
|
||||
"frameworks": {
|
||||
"other": "Frameworks: "
|
||||
},
|
||||
"touchFriendly": {
|
||||
"other": "Touch friendly"
|
||||
},
|
||||
"keyboardOriented": {
|
||||
"other": "Keyboard oriented"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
33
i18n/fr.json
|
@ -5,6 +5,15 @@
|
|||
"availableOn": {
|
||||
"other": "Disponible sur "
|
||||
},
|
||||
"download": {
|
||||
"other": "Télécharger"
|
||||
},
|
||||
"technicalSheet": {
|
||||
"other": "Fiche technique"
|
||||
},
|
||||
"downloadApp": {
|
||||
"other": "{{ .Name }} est disponible sur plusieurs platformes : {{ .Platforms }}."
|
||||
},
|
||||
"status": {
|
||||
"other": "Status : "
|
||||
},
|
||||
|
@ -14,14 +23,32 @@
|
|||
"language": {
|
||||
"other": "Langue"
|
||||
},
|
||||
"translated": {
|
||||
"other": "Traduit en : "
|
||||
},
|
||||
"en": {
|
||||
"other": "English"
|
||||
},
|
||||
"fr": {
|
||||
"other": "French"
|
||||
},
|
||||
"supportedPlatforms": {
|
||||
"other": "Platformes supportées : "
|
||||
},
|
||||
"translated": {
|
||||
"other": "Traduit en : "
|
||||
},
|
||||
"programingLanguages": {
|
||||
"other": "Fait en : "
|
||||
},
|
||||
"latestVersion": {
|
||||
"other": "Dernière version : "
|
||||
},
|
||||
"frameworks": {
|
||||
"other": "Frameworks : "
|
||||
},
|
||||
"touchFriendly": {
|
||||
"other": "Accessible au toucher"
|
||||
},
|
||||
"keyboardOriented": {
|
||||
"other": "Orienté clavier"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
{{ define "main"}}
|
||||
404. Page not found.
|
||||
{{ partial "section1.html" (dict "Image" "/img/app0.png" "Content" ("<h1>404. Page not found</h1><br><a role='button' class='primary' href='/'>Return to main page</a>" | safeHTML)) }}
|
||||
{{ end }}
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
{{ $data := index .Site.Data .Site.Language.Lang }}
|
||||
{{ $appdata := index $data.apps .Params.SectionHeader.AppIndex }}
|
||||
|
||||
<html>
|
||||
{{- partial "head.html" . -}}
|
||||
<body>
|
||||
|
@ -7,7 +10,7 @@
|
|||
{{ partial "section-app-header.html" (dict "Data" .Params.SectionHeader "Site" .Site) }}
|
||||
<br>
|
||||
<!-- About section -->
|
||||
<section class="center content-center padding-container">
|
||||
<section id="about-section" class="center content-center padding-container">
|
||||
<h1>{{ .Params.About.Title }}</h1>
|
||||
<p>{{ .Params.About.Content | markdownify }}</p>
|
||||
</section>
|
||||
|
@ -16,7 +19,7 @@
|
|||
{{ range .Params.Sections }}
|
||||
<section class="center content-center columns-container padding-container">
|
||||
{{ if eq .Type "text|image" }}
|
||||
<div class="column col2 text-right vertical-center">
|
||||
<div class="column col2 text-left vertical-center">
|
||||
{{ .Content | markdownify }}
|
||||
</div>
|
||||
<div class="column col2">
|
||||
|
@ -29,15 +32,91 @@
|
|||
<div class="column col2 text-left vertical-center">
|
||||
{{ .Content | markdownify }}
|
||||
</div>
|
||||
{{ else if eq .Type "text-image" }}
|
||||
{{ else if eq .Type "text/image" }}
|
||||
<div class="column text-center">
|
||||
{{ .Content | markdownify }}
|
||||
<img src="/img/{{ .Image }}"/>
|
||||
</div>
|
||||
{{ else if eq .Type "text" }}
|
||||
<div class="column text-center">
|
||||
{{ .Content | markdownify }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</section>
|
||||
<br>
|
||||
{{ end }}
|
||||
<section id="technical-details-section" class="center content-center padding-container">
|
||||
<hr>
|
||||
<h1 class="flex flex-center"><img src="/icons/wrench.svg" class="icon-larger-text" alt=""/>{{ i18n "technicalSheet" }}</h1>
|
||||
<div class="grid">
|
||||
<p class="inline column col2">
|
||||
<img src="/icons/platform/Universal.svg" class="icon-as-text" alt=""/>
|
||||
{{ i18n "supportedPlatforms" }} {{ partial "platforms.html" $appdata.platforms }}
|
||||
</p>
|
||||
<p class="inline column col2">
|
||||
<img src="/icons/lang.svg" class="icon-as-text" alt=""/>
|
||||
{{ i18n "translated" }} {{ partial "translations.html" $appdata.translated }}
|
||||
</p>
|
||||
<p class="inline column col2">
|
||||
<img src="/icons/git.svg" class="icon-as-text" alt=""/>
|
||||
{{ i18n "latestVersion" }}v{{ $appdata.version }}
|
||||
</p>
|
||||
<p class="inline column col2">
|
||||
<img src="/icons/git.svg" class="icon-as-text" alt=""/>
|
||||
{{ i18n "status" }}{{ $appdata.status }}
|
||||
</p>
|
||||
<p class="inline column col2">
|
||||
<img src="/icons/code.svg" class="icon-as-text" alt=""/>
|
||||
{{ i18n "programingLanguages" }}{{ delimit $appdata.languages ", " }}
|
||||
</p>
|
||||
<p class="inline column col2">
|
||||
<img src="/icons/frameworks.svg" class="icon-as-text" alt=""/>
|
||||
{{ i18n "frameworks" }} {{ delimit $appdata.frameworks ", " | markdownify }}
|
||||
</p>
|
||||
{{ if $appdata.touchfriendly }}
|
||||
<p class="inline column col2">
|
||||
<img src="/icons/touch.svg" class="icon-as-text" alt=""/>
|
||||
{{ i18n "touchFriendly" }}
|
||||
</p>
|
||||
{{ end }}
|
||||
{{ if $appdata.keyboardoriented }}
|
||||
<p class="inline column col2">
|
||||
<img src="/icons/keyboard.svg" class="icon-as-text" alt=""/>
|
||||
{{ i18n "keyboardOriented" }}
|
||||
</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
</section>
|
||||
{{ if .Params.Download.Show }}
|
||||
<!-- download section -->
|
||||
<section id="download-section" class="center content-center padding-container text-center">
|
||||
<hr>
|
||||
<h1 class="flex flex-center"><img src="/icons/download.svg" class="icon-larger-text" alt=""/>{{ i18n "download" }}</h1>
|
||||
{{ i18n "downloadApp" (dict "Name" .Name "Platforms" (delimit $appdata.platforms ", ")) }}
|
||||
<br><br>
|
||||
<!-- download table -->
|
||||
<div class="center columns-container">
|
||||
{{ $download := .Params.Download }}
|
||||
{{ range $download.Categories }}
|
||||
<div class="column app-download col{{ len $download.Categories | safeHTMLAttr }}">
|
||||
<div class="fill-width primary vertical-center app-download-platform">
|
||||
<img src="/icons/platform/{{ .Platform }}.svg" class="icon-as-text" alt=""/>{{ .Title }}
|
||||
</div>
|
||||
<div class="columns-container padding-container">
|
||||
{{ $links := index $download.Links .Name }}
|
||||
{{ range $links }}
|
||||
<div class="column col{{ len $links | safeHTMLAttr }} col1-fill">
|
||||
<h3>{{ .Title }}</h3>
|
||||
<a href="{{ replace .URL "<version>" $appdata.version }}">{{ i18n "download"}} {{ replace .Name "<version>" $appdata.version }}</a>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
<p>{{ .Params.Download.Footnote | markdownify }} </p>
|
||||
</section>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{- partial "footer.html" . -}}
|
||||
</body>
|
||||
|
|
|
@ -13,10 +13,10 @@
|
|||
<p class="show-on-hover">{{ .description }}</p>
|
||||
<p class="show-on-hover">{{ i18n "status" }} {{ .status }}</p>
|
||||
<p class="flex show-on-hover">{{ i18n "worksOn" }}
|
||||
{{ range .platforms }}<img src="/icons/platform/{{ . }}.svg" alt="{{ . }}" title="{{ . }}" class="icon-larger-text" />{{ end }}
|
||||
{{ partial "platforms.html" .platforms }}
|
||||
</p>
|
||||
<p class="flex show-on-hover">{{ i18n "translated" }}
|
||||
{{ range .translated }}<img src="/icons/flag/{{ . }}.svg" alt="{{ i18n . }}" title="{{ i18n . }}" class="icon-larger-text" />{{ end }}
|
||||
{{ partial "translations.html" .translated }}
|
||||
</p>
|
||||
<div class="show-on-hover">
|
||||
<a href="{{ $index }}" role="button" class="primary"><img src="/icons/lookup.svg" class="icon-as-text" alt=""/>{{ i18n "learnMore" }}</a>
|
||||
|
|
1
layouts/partials/platforms.html
Normal file
|
@ -0,0 +1 @@
|
|||
{{ range . }}<img src="/icons/platform/{{ . }}.svg" alt="{{ . }}" title="{{ . }}" class="icon-larger-text" />{{ end }}
|
|
@ -10,9 +10,18 @@
|
|||
<h2>{{ $appdata.description | safeHTML }}</h2>
|
||||
{{ if .ShowPlatforms }}
|
||||
<p class="flex flex-right">{{ i18n "availableOn" }}
|
||||
{{ range $appdata.platforms }}<img src="/icons/platform/{{ . }}.svg" alt="{{ . }}" title="{{ . }}" class="icon-larger-text icon-monochrome" />{{ end }}
|
||||
<span class="icon-monochrome">{{ partial "platforms.html" $appdata.platforms }}</span>
|
||||
</p>
|
||||
{{ end }}
|
||||
<div class="grid flex-right">
|
||||
{{ range .Links }}
|
||||
<div>
|
||||
<a href="{{ .URL | safeURL }}" role="button" class="primary" title="{{ .Title }}">
|
||||
<img src="/icons/{{ .Icon }}.svg" class="icon-as-text" alt="{{ .Icon }}">{{ .Title }}
|
||||
</a>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
<div class="column col2-3 flex">
|
||||
|
@ -20,8 +29,8 @@
|
|||
</div>
|
||||
</div>
|
||||
<div style="background: {{ .BottomBackground | safeCSS }}; height: {{ .BottomHeight | safeCSS }}; width: 100%; margin-top: -{{ .BottomHeight | safeCSS }};">
|
||||
<div style="float: left">{{ .BottomLeft | safeHTML }}</div>
|
||||
<div style="float: right">{{ .BottomRight | safeHTML }}</div>
|
||||
<div style="float: left; max-width: 100%;">{{ .BottomLeft | safeHTML }}</div>
|
||||
<div style="float: right; max-width: 100%;">{{ .BottomRight | safeHTML }}</div>
|
||||
</div>
|
||||
</section>
|
||||
{{ end }}
|
||||
|
|
1
layouts/partials/translations.html
Normal file
|
@ -0,0 +1 @@
|
|||
{{ range . }}<img src="/icons/flag/{{ . }}.svg" alt="{{ i18n . }}" title="{{ i18n . }}" class="icon-larger-text" />{{ end }}
|
|
@ -40,3 +40,4 @@
|
|||
opacity: 1;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,11 +25,11 @@ a[role=button] {
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
a[role=button].primary {
|
||||
.primary {
|
||||
background-color: var(--primary-color);
|
||||
}
|
||||
|
||||
a[role=button].secondary {
|
||||
.secondary {
|
||||
background-color: var(--secondary-color);
|
||||
}
|
||||
|
||||
|
@ -75,6 +75,7 @@ img.center {
|
|||
/* workaround for sometimes images don't position correctly vertically */
|
||||
.vertical-center-img {
|
||||
margin: auto;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.text-left {
|
||||
|
@ -101,6 +102,7 @@ img.center {
|
|||
width: 1em;
|
||||
height: 1em;
|
||||
margin-right: 0.4em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.icon-larger-text {
|
||||
|
@ -108,6 +110,7 @@ img.center {
|
|||
height: 1.4em;
|
||||
margin-right: 0.4em;
|
||||
margin-top: -0.2em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
h1 {
|
||||
|
@ -120,6 +123,10 @@ h2 {
|
|||
font-family: var(--light-font);
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-family: var(--light-font);
|
||||
}
|
||||
|
||||
p {
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
@ -134,17 +141,35 @@ p {
|
|||
display: flex !important;
|
||||
}
|
||||
|
||||
.inline {
|
||||
display: inline !important;
|
||||
}
|
||||
|
||||
.flex-right {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.flex-center {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* Columns */
|
||||
.columns-container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.column {
|
||||
flex: auto;
|
||||
.col1:not(.col1-fill) {
|
||||
width: 33%;
|
||||
margin-right: auto !important;
|
||||
margin-left: auto !important;
|
||||
}
|
||||
|
||||
.col1.col1-fill {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.col2 {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.col3 {
|
||||
|
@ -155,8 +180,16 @@ p {
|
|||
width: 66%;
|
||||
}
|
||||
|
||||
.col2 {
|
||||
width: 50%;
|
||||
.col4 {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.col3-4 {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.col5 {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 700px) {
|
||||
|
@ -168,7 +201,7 @@ p {
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
.column > img {
|
||||
.section-header .column > img {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
@ -176,11 +209,11 @@ p {
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.column .flex-right {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.col1:not(.col1-fill) {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,13 +3,12 @@ nav {
|
|||
font-size: 1.3em;
|
||||
height: 3em;
|
||||
background: var(--nav-background);
|
||||
width: 100%;
|
||||
width: 100vw;
|
||||
font-family: var(--light-font);
|
||||
}
|
||||
|
||||
nav .nav-flex {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
nav .navbar-brand {
|
||||
|
|
|
@ -9,7 +9,7 @@ section.section1 {
|
|||
}
|
||||
|
||||
section.section-header {
|
||||
height: calc(100vh - 4em);
|
||||
min-height: calc(100vh - 4em);
|
||||
}
|
||||
|
||||
section.section-header > div {
|
||||
|
|
1
static/icons/code.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 10.935v2.131l-8 3.947v-2.23l5.64-2.783-5.64-2.79v-2.223l8 3.948zm-16 3.848l-5.64-2.783 5.64-2.79v-2.223l-8 3.948v2.131l8 3.947v-2.23zm7.047-10.783h-2.078l-4.011 16h2.073l4.016-16z"/></svg>
|
After Width: | Height: | Size: 284 B |
1
static/icons/download.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M16 11h5l-9 10-9-10h5v-11h8v11zm1 11h-10v2h10v-2z"/></svg>
|
After Width: | Height: | Size: 150 B |
1
static/icons/frameworks.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M21 14v-11h-11v-3h-7v3h-3v2h3v16h16v3h2v-3h3v-7h-3zm-11-9h9v9h-9v-9zm12 14h-17v-17h3v1h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h1v3z"/></svg>
|
After Width: | Height: | Size: 278 B |
1
static/icons/keyboard.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M22 11v10h-20v-10h20zm2-2h-24v14h24v-14zm-18 3h-3v2h3v-2zm3 0h-2v2h2v-2zm3 0h-2v2h2v-2zm3 0h-2v2h2v-2zm3 0h-2v2h2v-2zm3 0h-2v2h2v-2zm-4 6h-10v2h10v-2zm4-3h-4v2h4v-2zm-14 0h-4v2h4v-2zm3 0h-2v2h2v-2zm3 0h-2v2h2v-2zm3 0h-2v2h2v-2zm-4.357-9.812c-1.037-.043-2.293-.086-3.049-1.027-.393-.489-.594-1.136-.594-1.847 0-.422.071-.867.217-1.314l1.206.363c-.205.634-.269 1.506.172 2.054.45.56 1.392.512 2.376.584 2.135.156 3.03 1.423 3.03 2.678 0 .461-.121.92-.345 1.321h-1.569c1.016-.804 1.059-2.706-1.444-2.812z"/></svg>
|
After Width: | Height: | Size: 602 B |
1
static/icons/platform/Universal.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0v19h24v-19h-24zm22 14h-20v-12h20v12zm-6.599 7l2.599 3h-12l2.599-3h6.802z"/></svg>
|
After Width: | Height: | Size: 177 B |
1
static/icons/touch.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M8.793 8.951c1.062-.757 2.542-.239 2.912 1-.655-.502-1.528-.482-2.2-.002-.677.482-.976 1.303-.716 2.082-1.05-.755-1.055-2.325.004-3.08zm3.164 10.8c.841.283 3.443 1.003 6.458 3.249l5.585-3.984c-1.448-2.031-1.05-3.452-2.489-5.471-.726-1.017-1.222-1.294-1.845-1.294-.22 0-.456.035-.724.084l.507.71c.306.428-.34.889-.646.46l-.452-.634c-.149-.21-.357-.281-.596-.281-.345 0-.753.148-1.141.237l.615.862c.304.428-.34.889-.646.46l-.533-.747c-.148-.208-.353-.28-.586-.28-.359 0-.787.17-1.186.271l.65.912c.306.429-.343.887-.646.46l-2.638-3.693c-.817-1.148-2.612.07-1.765 1.259l3.895 5.461c-.418-.154-1.152-.295-1.632-.295-1.481.003-2.051 1.628-.185 2.254zm-2.715-2.751h-6.242v-14h18v7.516c1.359.555 2.391 2.046 3 3.372v-10.888c0-1.104-.896-2-2-2h-20c-1.104 0-2 .896-2 2v14c0 1.104.896 2 2 2h6.825c-.111-.69.002-1.358.417-2z"/></svg>
|
After Width: | Height: | Size: 913 B |
1
static/icons/wrench.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M4.5.257l3.771 3.771c.409 1.889-2.33 4.66-4.242 4.242l-3.771-3.77c-.172.584-.258 1.188-.258 1.792 0 1.602.607 3.202 1.83 4.426 1.351 1.351 3.164 1.958 4.931 1.821.933-.072 1.852.269 2.514.931l9.662 9.662c.578.578 1.337.868 2.097.868 1.661 0 3.001-1.364 2.966-3.03-.016-.737-.306-1.47-.868-2.033l-9.662-9.663c-.662-.661-1.002-1.581-.931-2.514.137-1.767-.471-3.58-1.82-4.93-1.225-1.224-2.825-1.83-4.428-1.83-.603 0-1.207.086-1.791.257zm17.5 20.743c0 .553-.447 1-1 1-.553 0-1-.448-1-1s.447-1 1-1 1 .447 1 1z"/></svg>
|
After Width: | Height: | Size: 605 B |