Refactor masters
This commit is contained in:
parent
a85322231e
commit
56822a3644
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Максим Сергеевич Долгоносов
|
||||
id: Dolgonosov
|
||||
photo: images/mentors/Dolgonosov.jpg
|
||||
image: images/mentors/Dolgonosov.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Константин Викторович Герценбергер
|
||||
id: Gertsenberger
|
||||
photo: images/mentors/Gertsenberger.jpg
|
||||
image: images/mentors/Gertsenberger.jpg
|
||||
language: ru
|
||||
---
|
||||
#### Организация
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Roland Grinis
|
||||
id: Grinis
|
||||
photo: images/mentors/Grinis.jpg
|
||||
image: images/mentors/Grinis.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Олег Евгеньевич Калашев
|
||||
id: Kalashev
|
||||
photo: images/mentors/Kalashev.jpg
|
||||
image: images/mentors/Kalashev.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Igor Khokhriakov
|
||||
id: Khokhriakov
|
||||
photo: images/mentors/Khokhriakov.jpg
|
||||
image: images/mentors/Khokhriakov.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Петр Климай
|
||||
id: Klimai
|
||||
photo: images/mentors/Klimai.jpg
|
||||
image: images/mentors/Klimai.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Dmitriy Kostunin
|
||||
id: Kostunin
|
||||
photo: images/mentors/Kostunin.jpg
|
||||
image: images/mentors/Kostunin.jpg
|
||||
language: ru
|
||||
published: false
|
||||
---
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Александр Нозик
|
||||
id: Nozik
|
||||
photo: images/mentors/Nozik.jpg
|
||||
image: images/mentors/Nozik.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Дмитрий Робертович Олийниченко
|
||||
id: Oliinychenko
|
||||
photo: images/mentors/Oliinychenko.jpg
|
||||
image: images/mentors/Oliinychenko.jpg
|
||||
language: ru
|
||||
published: false
|
||||
---
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Владислав Сергеевич Пантуев
|
||||
id: Pantuev
|
||||
photo: images/mentors/Pantuev.jpg
|
||||
image: images/mentors/Pantuev.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Игорь Анатольевич Пшеничнов
|
||||
id: Pshenichnov
|
||||
photo: images/mentors/Pshenichnov.jpg
|
||||
image: images/mentors/Pshenichnov.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Лев Михайлович Шагалов
|
||||
id: Shagalov
|
||||
photo: images/mentors/Shagalov.jpg
|
||||
image: images/mentors/Shagalov.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Айно Константиновна Скасырская
|
||||
id: Skasyrskaya
|
||||
photo: images/mentors/Skasyrskaya.jpg
|
||||
image: images/mentors/Skasyrskaya.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Ильмир Усманов
|
||||
id: Usmanov
|
||||
photo: images/mentors/Usmanov.jpg
|
||||
image: images/mentors/Usmanov.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Алексей Викторович Зиновьев
|
||||
id: Zinoviev
|
||||
photo: images/mentors/Zinoviev.jpg
|
||||
image: images/mentors/Zinoviev.jpg
|
||||
language: ru
|
||||
---
|
||||
#### Организация
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Иван Харук
|
||||
id: Kharuk
|
||||
photo: images/mentors/Kharuk.jpg
|
||||
image: images/mentors/Kharuk.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,9 @@
|
||||
content_type: magprog_mentor
|
||||
name: Виталий Кондратов
|
||||
id: Kondratov
|
||||
photo: images/mentors/Kondratov.jpg
|
||||
image:
|
||||
path: images/mentors/Kondratov.jpg
|
||||
position: right
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Ирина Геннадьевна Низовцева
|
||||
id: Nizovtseva
|
||||
photo: images/mentors/Nizovtseva.jpg
|
||||
image: images/mentors/Nizovtseva.jpg
|
||||
language: ru
|
||||
---
|
||||
#### Биография
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Александр Светличный
|
||||
id: Svetlichny
|
||||
photo: images/mentors/Svetlichny.jpg
|
||||
image: images/mentors/Svetlichny.jpg
|
||||
language: ru
|
||||
---
|
||||
#### Организация
|
||||
|
@ -2,7 +2,7 @@
|
||||
content_type: magprog_mentor
|
||||
name: Полиграф Шариков
|
||||
id: template
|
||||
photo: images/mentors/Template.jpg
|
||||
image: images/mentors/Template.jpg
|
||||
published: false
|
||||
language: ru
|
||||
---
|
||||
|
@ -3,7 +3,7 @@ content_type: magprog_team
|
||||
name: Денис Айвазов
|
||||
id: Aivazov
|
||||
order: 4
|
||||
photo: images/team/Aivazov.jpg
|
||||
image: images/team/Aivazov.jpg
|
||||
language: ru
|
||||
---
|
||||
Консультант от ФПМИ
|
||||
|
@ -3,7 +3,7 @@ content_type: magprog_team
|
||||
name: Татьяна Мухина
|
||||
id: muhina
|
||||
order: 3
|
||||
photo: images/team/muhina.jpg
|
||||
image: images/team/muhina.jpg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
@ -3,7 +3,7 @@ content_type: magprog_team
|
||||
name: Александр Нозик
|
||||
id: nozik
|
||||
order: 1
|
||||
photo: images/mentors/Nozik.jpg
|
||||
image: images/mentors/Nozik.jpg
|
||||
language: ru
|
||||
---
|
||||
**Руководитель программы**
|
||||
|
@ -3,7 +3,7 @@ content_type: magprog_team
|
||||
name: Александр Светличный
|
||||
id: svetlichnii
|
||||
order: 2
|
||||
photo: images/team/svetlichny.jpeg
|
||||
image: images/team/svetlichny.jpeg
|
||||
language: ru
|
||||
---
|
||||
|
||||
|
659
src/main/kotlin/html5up/hyperspace/elements.kt
Normal file
659
src/main/kotlin/html5up/hyperspace/elements.kt
Normal file
@ -0,0 +1,659 @@
|
||||
package html5up.hyperspace
|
||||
|
||||
import kotlinx.html.*
|
||||
|
||||
fun FlowContent.elements() {
|
||||
h1("major") { +"""Elements""" }
|
||||
+"""<!-- Text -->"""
|
||||
section {
|
||||
h2 { +"""Text""" }
|
||||
p {
|
||||
+"""This is"""
|
||||
b { +"""bold""" }
|
||||
+"""and this is"""
|
||||
strong { +"""strong""" }
|
||||
+""". This is"""
|
||||
i { +"""italic""" }
|
||||
+"""and this is"""
|
||||
em { +"""emphasized""" }
|
||||
+""".
|
||||
This is"""
|
||||
sup { +"""superscript""" }
|
||||
+"""text and this is"""
|
||||
sub { +"""subscript""" }
|
||||
+"""text.
|
||||
This is"""
|
||||
// u { +"""underlined""" }
|
||||
+"""and this is code:"""
|
||||
code { +"""for (;;) { ... }""" }
|
||||
+""". Finally,"""
|
||||
a {
|
||||
href = "#"
|
||||
+"""this is a link"""
|
||||
}
|
||||
+"""."""
|
||||
}
|
||||
hr {
|
||||
}
|
||||
p { +"""Nunc lacinia ante nunc ac lobortis. Interdum adipiscing gravida odio porttitor sem non mi integer non faucibus ornare mi ut ante amet placerat aliquet. Volutpat eu sed ante lacinia sapien lorem accumsan varius montes viverra nibh in adipiscing blandit tempus accumsan.""" }
|
||||
hr {
|
||||
}
|
||||
h2 { +"""Heading Level 2""" }
|
||||
h3 { +"""Heading Level 3""" }
|
||||
h4 { +"""Heading Level 4""" }
|
||||
hr {
|
||||
}
|
||||
h3 { +"""Blockquote""" }
|
||||
blockQuote { +"""Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.""" }
|
||||
h3 { +"""Preformatted""" }
|
||||
pre {
|
||||
code {
|
||||
+"""i = 0;
|
||||
|
||||
while (!deck.isInOrder()) {
|
||||
print 'Iteration ' + i;
|
||||
deck.shuffle();
|
||||
i++;
|
||||
}
|
||||
|
||||
print 'It took ' + i + ' iterations to sort the deck.';"""
|
||||
}
|
||||
}
|
||||
}
|
||||
+"""<!-- Lists -->"""
|
||||
section {
|
||||
h2 { +"""Lists""" }
|
||||
div("row") {
|
||||
div("col-6 col-12-medium") {
|
||||
h3 { +"""Unordered""" }
|
||||
ul {
|
||||
li { +"""Dolor pulvinar etiam.""" }
|
||||
li { +"""Sagittis adipiscing.""" }
|
||||
li { +"""Felis enim feugiat.""" }
|
||||
}
|
||||
h3 { +"""Alternate""" }
|
||||
ul("alt") {
|
||||
li { +"""Dolor pulvinar etiam.""" }
|
||||
li { +"""Sagittis adipiscing.""" }
|
||||
li { +"""Felis enim feugiat.""" }
|
||||
}
|
||||
}
|
||||
div("col-6 col-12-medium") {
|
||||
h3 { +"""Ordered""" }
|
||||
ol {
|
||||
li { +"""Dolor pulvinar etiam.""" }
|
||||
li { +"""Etiam vel felis viverra.""" }
|
||||
li { +"""Felis enim feugiat.""" }
|
||||
li { +"""Dolor pulvinar etiam.""" }
|
||||
li { +"""Etiam vel felis lorem.""" }
|
||||
li { +"""Felis enim et feugiat.""" }
|
||||
}
|
||||
h3 { +"""Icons""" }
|
||||
ul("icons") {
|
||||
li {
|
||||
a(classes = "icon brands fa-twitter") {
|
||||
href = "#"
|
||||
span("label") { +"""Twitter""" }
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "icon brands fa-facebook-f") {
|
||||
href = "#"
|
||||
span("label") { +"""Facebook""" }
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "icon brands fa-instagram") {
|
||||
href = "#"
|
||||
span("label") { +"""Instagram""" }
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "icon brands fa-github") {
|
||||
href = "#"
|
||||
span("label") { +"""Github""" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
h2 { +"""Actions""" }
|
||||
div("row") {
|
||||
div("col-6 col-12-medium") {
|
||||
ul("actions") {
|
||||
li {
|
||||
a(classes = "button primary") {
|
||||
href = "#"
|
||||
+"""Default"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button") {
|
||||
href = "#"
|
||||
+"""Default"""
|
||||
}
|
||||
}
|
||||
}
|
||||
ul("actions small") {
|
||||
li {
|
||||
a(classes = "button primary small") {
|
||||
href = "#"
|
||||
+"""Small"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button small") {
|
||||
href = "#"
|
||||
+"""Small"""
|
||||
}
|
||||
}
|
||||
}
|
||||
ul("actions stacked") {
|
||||
li {
|
||||
a(classes = "button primary") {
|
||||
href = "#"
|
||||
+"""Default"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button") {
|
||||
href = "#"
|
||||
+"""Default"""
|
||||
}
|
||||
}
|
||||
}
|
||||
ul("actions stacked") {
|
||||
li {
|
||||
a(classes = "button primary small") {
|
||||
href = "#"
|
||||
+"""Small"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button small") {
|
||||
href = "#"
|
||||
+"""Small"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-6 col-12-medium") {
|
||||
ul("actions stacked") {
|
||||
li {
|
||||
a(classes = "button primary fit") {
|
||||
href = "#"
|
||||
+"""Default"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button fit") {
|
||||
href = "#"
|
||||
+"""Default"""
|
||||
}
|
||||
}
|
||||
}
|
||||
ul("actions stacked") {
|
||||
li {
|
||||
a(classes = "button primary small fit") {
|
||||
href = "#"
|
||||
+"""Small"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button small fit") {
|
||||
href = "#"
|
||||
+"""Small"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+"""<!-- Table -->"""
|
||||
section {
|
||||
h2 { +"""Table""" }
|
||||
h3 { +"""Default""" }
|
||||
div("table-wrapper") {
|
||||
table {
|
||||
thead {
|
||||
tr {
|
||||
th { +"""Name""" }
|
||||
th { +"""Description""" }
|
||||
th { +"""Price""" }
|
||||
}
|
||||
}
|
||||
tbody {
|
||||
tr {
|
||||
td { +"""Item One""" }
|
||||
td { +"""Ante turpis integer aliquet porttitor.""" }
|
||||
td { +"""29.99""" }
|
||||
}
|
||||
tr {
|
||||
td { +"""Item Two""" }
|
||||
td { +"""Vis ac commodo adipiscing arcu aliquet.""" }
|
||||
td { +"""19.99""" }
|
||||
}
|
||||
tr {
|
||||
td { +"""Item Three""" }
|
||||
td { +"""Morbi faucibus arcu accumsan lorem.""" }
|
||||
td { +"""29.99""" }
|
||||
}
|
||||
tr {
|
||||
td { +"""Item Four""" }
|
||||
td { +"""Vitae integer tempus condimentum.""" }
|
||||
td { +"""19.99""" }
|
||||
}
|
||||
tr {
|
||||
td { +"""Item Five""" }
|
||||
td { +"""Ante turpis integer aliquet porttitor.""" }
|
||||
td { +"""29.99""" }
|
||||
}
|
||||
}
|
||||
tfoot {
|
||||
tr {
|
||||
td {
|
||||
colSpan = "2"
|
||||
}
|
||||
td { +"""100.00""" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
h3 { +"""Alternate""" }
|
||||
div("table-wrapper") {
|
||||
table("alt") {
|
||||
thead {
|
||||
tr {
|
||||
th { +"""Name""" }
|
||||
th { +"""Description""" }
|
||||
th { +"""Price""" }
|
||||
}
|
||||
}
|
||||
tbody {
|
||||
tr {
|
||||
td { +"""Item One""" }
|
||||
td { +"""Ante turpis integer aliquet porttitor.""" }
|
||||
td { +"""29.99""" }
|
||||
}
|
||||
tr {
|
||||
td { +"""Item Two""" }
|
||||
td { +"""Vis ac commodo adipiscing arcu aliquet.""" }
|
||||
td { +"""19.99""" }
|
||||
}
|
||||
tr {
|
||||
td { +"""Item Three""" }
|
||||
td { +"""Morbi faucibus arcu accumsan lorem.""" }
|
||||
td { +"""29.99""" }
|
||||
}
|
||||
tr {
|
||||
td { +"""Item Four""" }
|
||||
td { +"""Vitae integer tempus condimentum.""" }
|
||||
td { +"""19.99""" }
|
||||
}
|
||||
tr {
|
||||
td { +"""Item Five""" }
|
||||
td { +"""Ante turpis integer aliquet porttitor.""" }
|
||||
td { +"""29.99""" }
|
||||
}
|
||||
}
|
||||
tfoot {
|
||||
tr {
|
||||
td {
|
||||
colSpan = "2"
|
||||
}
|
||||
td { +"""100.00""" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+"""<!-- Buttons -->"""
|
||||
section {
|
||||
h3 { +"""Buttons""" }
|
||||
ul("actions") {
|
||||
li {
|
||||
a(classes = "button primary") {
|
||||
href = "#"
|
||||
+"""Primary"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button") {
|
||||
href = "#"
|
||||
+"""Default"""
|
||||
}
|
||||
}
|
||||
}
|
||||
ul("actions") {
|
||||
li {
|
||||
a(classes = "button large") {
|
||||
href = "#"
|
||||
+"""Large"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button") {
|
||||
href = "#"
|
||||
+"""Default"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button small") {
|
||||
href = "#"
|
||||
+"""Small"""
|
||||
}
|
||||
}
|
||||
}
|
||||
ul("actions fit") {
|
||||
li {
|
||||
a(classes = "button primary fit") {
|
||||
href = "#"
|
||||
+"""Fit"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button fit") {
|
||||
href = "#"
|
||||
+"""Fit"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button fit") {
|
||||
href = "#"
|
||||
+"""Fit"""
|
||||
}
|
||||
}
|
||||
}
|
||||
ul("actions fit small") {
|
||||
li {
|
||||
a(classes = "button primary fit small") {
|
||||
href = "#"
|
||||
+"""Fit + Small"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button fit small") {
|
||||
href = "#"
|
||||
+"""Fit + Small"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button fit small") {
|
||||
href = "#"
|
||||
+"""Fit + Small"""
|
||||
}
|
||||
}
|
||||
}
|
||||
ul("actions") {
|
||||
li {
|
||||
a(classes = "button primary icon solid fa-download") {
|
||||
href = "#"
|
||||
+"""Icon"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button icon solid fa-upload") {
|
||||
href = "#"
|
||||
+"""Icon"""
|
||||
}
|
||||
}
|
||||
li {
|
||||
a(classes = "button icon solid fa-save") {
|
||||
href = "#"
|
||||
+"""Icon"""
|
||||
}
|
||||
}
|
||||
}
|
||||
ul("actions") {
|
||||
li {
|
||||
span("button primary disabled") { +"""Disabled""" }
|
||||
}
|
||||
li {
|
||||
span("button disabled") { +"""Disabled""" }
|
||||
}
|
||||
}
|
||||
}
|
||||
+"""<!-- Form -->"""
|
||||
section {
|
||||
h2 { +"""Form""" }
|
||||
form {
|
||||
method = FormMethod.post
|
||||
action = "#"
|
||||
div("row gtr-uniform") {
|
||||
div("col-6 col-12-xsmall") {
|
||||
input {
|
||||
type = InputType.text
|
||||
name = "demo-name"
|
||||
id = "demo-name"
|
||||
value = ""
|
||||
placeholder = "Name"
|
||||
}
|
||||
}
|
||||
div("col-6 col-12-xsmall") {
|
||||
input {
|
||||
type = InputType.email
|
||||
name = "demo-email"
|
||||
id = "demo-email"
|
||||
value = ""
|
||||
placeholder = "Email"
|
||||
}
|
||||
}
|
||||
div("col-12") {
|
||||
select {
|
||||
name = "demo-category"
|
||||
id = "demo-category"
|
||||
option {
|
||||
value = ""
|
||||
+"""- Category -"""
|
||||
}
|
||||
option {
|
||||
value = "1"
|
||||
+"""Manufacturing"""
|
||||
}
|
||||
option {
|
||||
value = "1"
|
||||
+"""Shipping"""
|
||||
}
|
||||
option {
|
||||
value = "1"
|
||||
+"""Administration"""
|
||||
}
|
||||
option {
|
||||
value = "1"
|
||||
+"""Human Resources"""
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-4 col-12-small") {
|
||||
input {
|
||||
type = InputType.radio
|
||||
id = "demo-priority-low"
|
||||
name = "demo-priority"
|
||||
checked = true
|
||||
}
|
||||
label {
|
||||
htmlFor = "demo-priority-low"
|
||||
+"""Low"""
|
||||
}
|
||||
}
|
||||
div("col-4 col-12-small") {
|
||||
input {
|
||||
type = InputType.radio
|
||||
id = "demo-priority-normal"
|
||||
name = "demo-priority"
|
||||
}
|
||||
label {
|
||||
htmlFor = "demo-priority-normal"
|
||||
+"""Normal"""
|
||||
}
|
||||
}
|
||||
div("col-4 col-12-small") {
|
||||
input {
|
||||
type = InputType.radio
|
||||
id = "demo-priority-high"
|
||||
name = "demo-priority"
|
||||
}
|
||||
label {
|
||||
htmlFor = "demo-priority-high"
|
||||
+"""High"""
|
||||
}
|
||||
}
|
||||
div("col-6 col-12-small") {
|
||||
input {
|
||||
type = InputType.checkBox
|
||||
id = "demo-copy"
|
||||
name = "demo-copy"
|
||||
}
|
||||
label {
|
||||
htmlFor = "demo-copy"
|
||||
+"""Email me a copy"""
|
||||
}
|
||||
}
|
||||
div("col-6 col-12-small") {
|
||||
input {
|
||||
type = InputType.checkBox
|
||||
id = "demo-human"
|
||||
name = "demo-human"
|
||||
checked = true
|
||||
}
|
||||
label {
|
||||
htmlFor = "demo-human"
|
||||
+"""Not a robot"""
|
||||
}
|
||||
}
|
||||
div("col-12") {
|
||||
textArea {
|
||||
name = "demo-message"
|
||||
id = "demo-message"
|
||||
placeholder = "Enter your message"
|
||||
rows = "6"
|
||||
}
|
||||
}
|
||||
div("col-12") {
|
||||
ul("actions") {
|
||||
li {
|
||||
input(classes = "primary") {
|
||||
type = InputType.submit
|
||||
value = "Send Message"
|
||||
}
|
||||
}
|
||||
li {
|
||||
input {
|
||||
type = InputType.reset
|
||||
value = "Reset"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+"""<!-- Image -->"""
|
||||
section {
|
||||
h2 { +"""Image""" }
|
||||
h3 { +"""Fit""" }
|
||||
div("box alt") {
|
||||
div("row gtr-uniform") {
|
||||
div("col-12") {
|
||||
span("image fit") {
|
||||
img {
|
||||
src = "images/pic04.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-4") {
|
||||
span("image fit") {
|
||||
img {
|
||||
src = "images/pic01.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-4") {
|
||||
span("image fit") {
|
||||
img {
|
||||
src = "images/pic02.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-4") {
|
||||
span("image fit") {
|
||||
img {
|
||||
src = "images/pic03.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-4") {
|
||||
span("image fit") {
|
||||
img {
|
||||
src = "images/pic03.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-4") {
|
||||
span("image fit") {
|
||||
img {
|
||||
src = "images/pic01.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-4") {
|
||||
span("image fit") {
|
||||
img {
|
||||
src = "images/pic02.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-4") {
|
||||
span("image fit") {
|
||||
img {
|
||||
src = "images/pic02.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-4") {
|
||||
span("image fit") {
|
||||
img {
|
||||
src = "images/pic03.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
div("col-4") {
|
||||
span("image fit") {
|
||||
img {
|
||||
src = "images/pic01.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
h3 { +"""Left & Right""" }
|
||||
p {
|
||||
span("image left") {
|
||||
img {
|
||||
src = "images/pic05.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
+"""Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent."""
|
||||
}
|
||||
p {
|
||||
span("image right") {
|
||||
img {
|
||||
src = "images/pic06.jpg"
|
||||
alt = ""
|
||||
}
|
||||
}
|
||||
+"""Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent."""
|
||||
}
|
||||
}
|
||||
}
|
@ -41,6 +41,9 @@ import kotlin.collections.set
|
||||
// }
|
||||
//}
|
||||
|
||||
private val HtmlData.imagePath: String? get() = meta["image"]?.string ?: meta["image.path"].string
|
||||
private val HtmlData.name: String get() = meta["name"].string ?: error("Name not found")
|
||||
|
||||
class MagProgSection(
|
||||
val id: String,
|
||||
val title: String,
|
||||
@ -119,13 +122,13 @@ context(PageContext) private fun FlowContent.partners() {
|
||||
}
|
||||
}
|
||||
|
||||
class Person(val data: HtmlData) : HtmlData by data {
|
||||
val name: String by meta.string { error("Mentor name is not defined") }
|
||||
val photo: String? by meta.string()
|
||||
}
|
||||
//class Person(val data: HtmlData) : HtmlData by data {
|
||||
// val name: String by meta.string { error("Mentor name is not defined") }
|
||||
// val photo: String? by meta.string()
|
||||
//}
|
||||
|
||||
context(PageContext) private fun FlowContent.team() {
|
||||
val team = findByType("magprog_team").map { Person(it.value) }.sortedBy { it.order }
|
||||
val team = findByType("magprog_team").values.sortedBy { it.order }
|
||||
|
||||
div("inner") {
|
||||
h2 { +"Команда" }
|
||||
@ -133,14 +136,14 @@ context(PageContext) private fun FlowContent.team() {
|
||||
team.forEach { member ->
|
||||
section {
|
||||
a {
|
||||
val imagePath = member.photo?.let { resolveRef(it) }
|
||||
val imagePath = member.imagePath?.let { resolveRef(it) }
|
||||
img(
|
||||
classes = "icon major",
|
||||
src = imagePath,
|
||||
alt = imagePath
|
||||
) {
|
||||
h3 { +member.name }
|
||||
htmlData(member.data)
|
||||
htmlData(member)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -180,7 +183,7 @@ context(PageContext) private fun FlowContent.team() {
|
||||
}
|
||||
|
||||
context(PageContext) private fun FlowContent.mentors() {
|
||||
val mentors = findByType("magprog_mentor").mapValues { Person(it.value) }.entries.sortedBy { it.value.id }
|
||||
val mentors = findByType("magprog_mentor").entries.sortedBy { it.value.id }
|
||||
|
||||
div("inner") {
|
||||
h2 {
|
||||
@ -191,7 +194,7 @@ context(PageContext) private fun FlowContent.mentors() {
|
||||
section {
|
||||
id = mentor.id
|
||||
a(classes = "image", href = resolveRef("mentor-${mentor.id}")) {
|
||||
mentor.photo?.let { photoPath ->
|
||||
mentor.imagePath?.let { photoPath ->
|
||||
img(
|
||||
src = resolveRef(photoPath),
|
||||
alt = mentor.name
|
||||
@ -287,7 +290,7 @@ context(PageContext) internal fun BODY.magProgFooter() {
|
||||
}
|
||||
}
|
||||
|
||||
internal val Person.mentorPageId get() = "mentor-${id}"
|
||||
private val HtmlData.mentorPageId get() = "mentor-${id}"
|
||||
|
||||
internal fun Application.spcMaster(context: Context, dataPath: Path, prefix: String = "/magprog") {
|
||||
|
||||
@ -371,9 +374,7 @@ internal fun Application.spcMaster(context: Context, dataPath: Path, prefix: Str
|
||||
}
|
||||
}
|
||||
|
||||
val mentors = findByType("magprog_mentor").map {
|
||||
Person(it.value)
|
||||
}.sortedBy {
|
||||
val mentors = findByType("magprog_mentor").values.sortedBy {
|
||||
it.order
|
||||
}
|
||||
|
||||
@ -388,7 +389,7 @@ internal fun Application.spcMaster(context: Context, dataPath: Path, prefix: Str
|
||||
href = "$homeRef#mentors"
|
||||
+"Научные руководители"
|
||||
}
|
||||
nav{
|
||||
nav {
|
||||
ul {
|
||||
mentors.forEach {
|
||||
li {
|
||||
@ -407,8 +408,9 @@ internal fun Application.spcMaster(context: Context, dataPath: Path, prefix: Str
|
||||
id = "main"
|
||||
div("inner") {
|
||||
h1("major") { +mentor.name }
|
||||
span("image left") {
|
||||
mentor.photo?.let { photoPath ->
|
||||
val imageClass = mentor.meta["image.position"].string ?: "left"
|
||||
span("image $imageClass") {
|
||||
mentor.imagePath?.let { photoPath ->
|
||||
img(
|
||||
src = resolveRef(photoPath),
|
||||
alt = mentor.name
|
||||
|
Loading…
Reference in New Issue
Block a user