From 9396f3014e233c024d33897c943d21ff82fac653 Mon Sep 17 00:00:00 2001 From: Alexander Nozik Date: Fri, 6 May 2022 15:54:59 +0300 Subject: [PATCH] Separate data directory --- build.gradle.kts | 15 +++-- .../assets/css/fontawesome-all.min.css | 0 .../magprog/assets/css/images/intro.svg | 0 .../magprog/assets/css/main.css | 0 .../magprog/assets/css/noscript.css | 0 data/magprog/assets/images/favicon-32x32.png | Bin 0 -> 1822 bytes .../assets/images/mentors/Dolgonosov.jpg | Bin .../assets/images/mentors/Gertsenberger.jpg | Bin .../magprog/assets/images/mentors/Grinis.jpg | Bin .../assets/images/mentors/Kalashev.jpg | Bin .../assets/images/mentors/Khokhriakov.jpg | Bin .../magprog/assets/images/mentors/Klimai.jpg | Bin .../assets/images/mentors/Kostunin.jpg | Bin .../magprog/assets/images/mentors/Nozik.jpg | Bin .../assets/images/mentors/Oliinychenko.jpg | Bin .../magprog/assets/images/mentors/Pantuev.jpg | Bin .../assets/images/mentors/Pshenichnov.jpg | Bin .../assets/images/mentors/Shagalov.jpg | Bin .../assets/images/mentors/Skasyrskaya.jpg | Bin .../assets/images/mentors/Template.jpg | Bin .../magprog/assets/images/mentors/Usmanov.jpg | Bin .../assets/images/mentors/Zinoviev.jpg | Bin .../magprog/assets/images/partners/FPMI.jpg | Bin .../magprog/assets/images/partners/JBR.png | Bin .../magprog/assets/images/partners/LPI.jpg | Bin .../assets/images/partners/Tavrida.png | Bin .../magprog/assets/images/partners/aramco.jpg | Bin .../assets/images/partners/biotech.png | Bin .../magprog/assets/images/partners/desy.svg | 0 .../magprog/assets/images/partners/hse.jpg | Bin .../magprog/assets/images/partners/iki.jpg | Bin .../assets/images/partners/inr_logo.png | Bin .../assets/images/partners/jetbrains.png | Bin .../magprog/assets/images/partners/jinr.png | Bin .../magprog/assets/images/partners/tink.jpg | Bin .../magprog/assets/images/team/Aivazov.jpg | Bin .../magprog/assets/images/team/muhina.jpg | Bin .../assets/images/team/svetlichny.jpeg | Bin .../magprog/assets/js/breakpoints.min.js | 0 .../magprog/assets/js/browser.min.js | 0 .../magprog/assets/js/jquery.min.js | 0 .../magprog/assets/js/jquery.scrollex.min.js | 0 .../magprog/assets/js/jquery.scrolly.min.js | 0 .../magprog/assets/js/main.js | 0 .../magprog/assets/js/util.js | 0 .../magprog/assets/sass/base/_page.scss | 0 .../magprog/assets/sass/base/_reset.scss | 0 .../magprog/assets/sass/base/_typography.scss | 0 .../assets/sass/components/_actions.scss | 0 .../magprog/assets/sass/components/_box.scss | 0 .../assets/sass/components/_button.scss | 0 .../assets/sass/components/_contact.scss | 0 .../assets/sass/components/_features.scss | 0 .../magprog/assets/sass/components/_form.scss | 0 .../magprog/assets/sass/components/_icon.scss | 0 .../assets/sass/components/_icons.scss | 0 .../assets/sass/components/_image.scss | 0 .../magprog/assets/sass/components/_list.scss | 0 .../magprog/assets/sass/components/_menu.scss | 0 .../magprog/assets/sass/components/_row.scss | 0 .../assets/sass/components/_section.scss | 0 .../assets/sass/components/_split.scss | 0 .../assets/sass/components/_spotlights.scss | 0 .../assets/sass/components/_table.scss | 0 .../assets/sass/components/_wrapper.scss | 0 .../magprog/assets/sass/layout/_footer.scss | 0 .../magprog/assets/sass/layout/_header.scss | 0 .../magprog/assets/sass/layout/_intro.scss | 0 .../magprog/assets/sass/layout/_sidebar.scss | 0 .../magprog/assets/sass/layout/_wrapper.scss | 0 .../assets/sass/libs/_breakpoints.scss | 0 .../magprog/assets/sass/libs/_functions.scss | 0 .../magprog/assets/sass/libs/_html-grid.scss | 0 .../magprog/assets/sass/libs/_mixins.scss | 0 .../magprog/assets/sass/libs/_vars.scss | 0 .../magprog/assets/sass/libs/_vendor.scss | 0 .../magprog/assets/sass/main.scss | 0 .../magprog/assets/sass/noscript.scss | 0 .../magprog/assets/webfonts/fa-brands-400.eot | Bin .../magprog/assets/webfonts/fa-brands-400.svg | 0 .../magprog/assets/webfonts/fa-brands-400.ttf | Bin .../assets/webfonts/fa-brands-400.woff | Bin .../assets/webfonts/fa-brands-400.woff2 | Bin .../assets/webfonts/fa-regular-400.eot | Bin .../assets/webfonts/fa-regular-400.svg | 0 .../assets/webfonts/fa-regular-400.ttf | Bin .../assets/webfonts/fa-regular-400.woff | Bin .../assets/webfonts/fa-regular-400.woff2 | Bin .../magprog/assets/webfonts/fa-solid-900.eot | Bin .../magprog/assets/webfonts/fa-solid-900.svg | 0 .../magprog/assets/webfonts/fa-solid-900.ttf | Bin .../magprog/assets/webfonts/fa-solid-900.woff | Bin .../assets/webfonts/fa-solid-900.woff2 | Bin .../magprog/content/contacts.md | 0 .../magprog/content/enroll.md | 0 .../magprog/content/intro.md | 0 .../magprog/content/mentors/Dolgonosov.md | 0 .../content/mentors/Dolgonosov[info].md | 0 .../magprog/content/mentors/Gertsenberger.md | 0 .../content/mentors/Gertsenberger[info].md | 0 .../magprog/content/mentors/Grinis.md | 0 .../magprog/content/mentors/Grinis[info].md | 0 .../magprog/content/mentors/Kalashev.md | 0 .../magprog/content/mentors/Kalashev[info].md | 0 .../magprog/content/mentors/Khokhriakov.md | 0 .../content/mentors/Khokhriakov[info].md | 0 .../magprog/content/mentors/Klimai.md | 0 .../magprog/content/mentors/Klimai[info].md | 0 .../magprog/content/mentors/Kostunin.md | 0 .../magprog/content/mentors/Kostunin[info].md | 0 .../magprog/content/mentors/Nozik.md | 0 .../magprog/content/mentors/Nozik[info].md | 0 .../magprog/content/mentors/Oliinychenko.md | 0 .../content/mentors/Oliinychenko[info].md | 0 .../magprog/content/mentors/Pantuev.md | 0 .../magprog/content/mentors/Pantuev[info].md | 0 .../magprog/content/mentors/Pshenichnov.md | 0 .../content/mentors/Pshenichnov[info].md | 0 .../magprog/content/mentors/Shagalov.md | 0 .../magprog/content/mentors/Shagalov[info].md | 0 .../magprog/content/mentors/Skasyrskaya.md | 0 .../content/mentors/Skasyrskaya[info].md | 0 .../magprog/content/mentors/Usmanov.md | 0 .../magprog/content/mentors/Usmanov[info].md | 0 .../magprog/content/mentors/Zinoviev.md | 0 .../magprog/content/mentors/Zinoviev[info].md | 0 .../magprog/content/mentors/template.md | 0 .../magprog/content/partners.yaml | 0 .../magprog/content/program.md | 0 .../magprog/content/recommendedCourses.md | 0 .../magprog/content/team/Aivazov.md | 0 data/magprog/content/team/muhina.md | 10 +++ .../magprog/content/team/nozik.md | 0 .../magprog/content/team/svetlichnii.md | 1 + gradle.properties | 4 +- src/main/kotlin/ru/mipt/spc/Application.kt | 37 +++++++---- src/main/kotlin/ru/mipt/spc/Templating.kt | 60 ------------------ .../kotlin/ru/mipt/spc/magprog/magProgPage.kt | 4 ++ src/main/kotlin/ru/mipt/spc/snapshot.kt | 12 ---- .../space/kscience/snark/DirectoryDataTree.kt | 53 ++++++++++++---- .../resources/magprog/content/team/muhina.md | 5 -- 141 files changed, 91 insertions(+), 110 deletions(-) rename {src/main/resources => data}/magprog/assets/css/fontawesome-all.min.css (100%) rename {src/main/resources => data}/magprog/assets/css/images/intro.svg (100%) rename {src/main/resources => data}/magprog/assets/css/main.css (100%) rename {src/main/resources => data}/magprog/assets/css/noscript.css (100%) create mode 100644 data/magprog/assets/images/favicon-32x32.png rename {src/main/resources => data}/magprog/assets/images/mentors/Dolgonosov.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Gertsenberger.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Grinis.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Kalashev.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Khokhriakov.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Klimai.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Kostunin.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Nozik.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Oliinychenko.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Pantuev.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Pshenichnov.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Shagalov.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Skasyrskaya.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Template.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Usmanov.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/mentors/Zinoviev.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/partners/FPMI.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/partners/JBR.png (100%) rename {src/main/resources => data}/magprog/assets/images/partners/LPI.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/partners/Tavrida.png (100%) rename {src/main/resources => data}/magprog/assets/images/partners/aramco.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/partners/biotech.png (100%) rename {src/main/resources => data}/magprog/assets/images/partners/desy.svg (100%) rename {src/main/resources => data}/magprog/assets/images/partners/hse.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/partners/iki.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/partners/inr_logo.png (100%) rename {src/main/resources => data}/magprog/assets/images/partners/jetbrains.png (100%) rename {src/main/resources => data}/magprog/assets/images/partners/jinr.png (100%) rename {src/main/resources => data}/magprog/assets/images/partners/tink.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/team/Aivazov.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/team/muhina.jpg (100%) rename {src/main/resources => data}/magprog/assets/images/team/svetlichny.jpeg (100%) rename {src/main/resources => data}/magprog/assets/js/breakpoints.min.js (100%) rename {src/main/resources => data}/magprog/assets/js/browser.min.js (100%) rename {src/main/resources => data}/magprog/assets/js/jquery.min.js (100%) rename {src/main/resources => data}/magprog/assets/js/jquery.scrollex.min.js (100%) rename {src/main/resources => data}/magprog/assets/js/jquery.scrolly.min.js (100%) rename {src/main/resources => data}/magprog/assets/js/main.js (100%) rename {src/main/resources => data}/magprog/assets/js/util.js (100%) rename {src/main/resources => data}/magprog/assets/sass/base/_page.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/base/_reset.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/base/_typography.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_actions.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_box.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_button.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_contact.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_features.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_form.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_icon.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_icons.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_image.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_list.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_menu.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_row.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_section.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_split.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_spotlights.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_table.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/components/_wrapper.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/layout/_footer.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/layout/_header.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/layout/_intro.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/layout/_sidebar.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/layout/_wrapper.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/libs/_breakpoints.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/libs/_functions.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/libs/_html-grid.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/libs/_mixins.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/libs/_vars.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/libs/_vendor.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/main.scss (100%) rename {src/main/resources => data}/magprog/assets/sass/noscript.scss (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-brands-400.eot (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-brands-400.svg (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-brands-400.ttf (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-brands-400.woff (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-brands-400.woff2 (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-regular-400.eot (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-regular-400.svg (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-regular-400.ttf (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-regular-400.woff (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-regular-400.woff2 (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-solid-900.eot (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-solid-900.svg (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-solid-900.ttf (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-solid-900.woff (100%) rename {src/main/resources => data}/magprog/assets/webfonts/fa-solid-900.woff2 (100%) rename {src/main/resources => data}/magprog/content/contacts.md (100%) rename {src/main/resources => data}/magprog/content/enroll.md (100%) rename {src/main/resources => data}/magprog/content/intro.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Dolgonosov.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Dolgonosov[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Gertsenberger.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Gertsenberger[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Grinis.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Grinis[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Kalashev.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Kalashev[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Khokhriakov.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Khokhriakov[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Klimai.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Klimai[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Kostunin.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Kostunin[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Nozik.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Nozik[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Oliinychenko.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Oliinychenko[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Pantuev.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Pantuev[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Pshenichnov.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Pshenichnov[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Shagalov.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Shagalov[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Skasyrskaya.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Skasyrskaya[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Usmanov.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Usmanov[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/Zinoviev.md (100%) rename {src/main/resources => data}/magprog/content/mentors/Zinoviev[info].md (100%) rename {src/main/resources => data}/magprog/content/mentors/template.md (100%) rename {src/main/resources => data}/magprog/content/partners.yaml (100%) rename {src/main/resources => data}/magprog/content/program.md (100%) rename {src/main/resources => data}/magprog/content/recommendedCourses.md (100%) rename {src/main/resources => data}/magprog/content/team/Aivazov.md (100%) create mode 100644 data/magprog/content/team/muhina.md rename {src/main/resources => data}/magprog/content/team/nozik.md (100%) rename {src/main/resources => data}/magprog/content/team/svetlichnii.md (99%) delete mode 100644 src/main/kotlin/ru/mipt/spc/Templating.kt delete mode 100644 src/main/kotlin/ru/mipt/spc/snapshot.kt delete mode 100644 src/main/resources/magprog/content/team/muhina.md diff --git a/build.gradle.kts b/build.gradle.kts index 76f01f1..819da13 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -20,15 +20,9 @@ application { applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment", "-Xmx200M") } -tasks.withType{ - kotlinOptions{ - languageVersion = "1.7" - apiVersion = "1.7" - } -} val dataforgeVersion by extra("0.6.0-dev-5") -val ktorVersion = KScienceVersions.ktorVersion +val ktorVersion = KScienceVersions.ktorVersion dependencies { implementation("io.ktor:ktor-server-core:$ktorVersion") @@ -48,4 +42,11 @@ dependencies { kotlin { explicitApi = org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode.Disabled + +} + +sourceSets { + main { + resources.srcDir(project.rootDir.resolve("data")) + } } \ No newline at end of file diff --git a/src/main/resources/magprog/assets/css/fontawesome-all.min.css b/data/magprog/assets/css/fontawesome-all.min.css similarity index 100% rename from src/main/resources/magprog/assets/css/fontawesome-all.min.css rename to data/magprog/assets/css/fontawesome-all.min.css diff --git a/src/main/resources/magprog/assets/css/images/intro.svg b/data/magprog/assets/css/images/intro.svg similarity index 100% rename from src/main/resources/magprog/assets/css/images/intro.svg rename to data/magprog/assets/css/images/intro.svg diff --git a/src/main/resources/magprog/assets/css/main.css b/data/magprog/assets/css/main.css similarity index 100% rename from src/main/resources/magprog/assets/css/main.css rename to data/magprog/assets/css/main.css diff --git a/src/main/resources/magprog/assets/css/noscript.css b/data/magprog/assets/css/noscript.css similarity index 100% rename from src/main/resources/magprog/assets/css/noscript.css rename to data/magprog/assets/css/noscript.css diff --git a/data/magprog/assets/images/favicon-32x32.png b/data/magprog/assets/images/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..deb118a5a219ff9e17c083e4846cdc5198028157 GIT binary patch literal 1822 zcmV+(2jTdMP)r6+H~m zI7yv+9?^W2(IL&Oj^;BmacqnYHnzb8#&bMM0TBcVgvr3crt+4@kTGE2vvc>&2?j=X z&pqGyzVF`q|NWo8{{?z{gR;!081RHOlB5W76tNUV5d`(W07wcA8_WX}cCW+K*kbJH z85}edkC2`YfV7AvN&1?)E1X-kY**gYbqYJ51n^0)_mj=ukQQ|KDnGrU!!R@+j1d5o zMPHhx3#vN&_x%Z;alqyQM?CYx6tC?$K4E$DL$h93od|CU!G-UzCaJi(lQD5z0E|n9 z%*25Ul@mPUz)j%3MHQ*2SL=FBLpXuFMq@bD)jO0|-oEXZvN^$NSH};)NbfV@f#C(< z%%2&UEK=z(oE+;IMbY@fI6n;52u1$^fLu?nk0=5*kFz~T-`Z~p290dONG6v^l468n z1UXIjvJH(Rrl|- z_j~WktElg()EX9UQMrU<%-fvl5|UA+?NJsrJBMU=ZdG;k4AL}RqVDAE$ek0MmR8)1 z02t|&T7&)a1cz0LYJIOwdTZCfi!0^e!oO5_Z+~P3xC%OZhl0Wj!8K;{kJlzIPk7!} zs%!6e3r+(!!4!X4XD`xh<*qz%6WDu8D(bo|02aeSe<}es@03)73?!`em0sKo-V#_G z7nO2*@zxxdkPM>ZpLuuykBQXaE(DJF>!`}-SIW1ZxZcogghg?l+j5Qx)!@jD z;N46qYyuAvER#%Kr=V$i|M|br=i>Nx4_#qIApk*UBd~dUBP$s788V=0`s0Wq1mG>< z?8t>BVnJqOYEd)15xw(t*_Pwi!HJi6`Rbq;;2M)s*u*4&wIDEZR*-V?D)}UTncZ?^_02}Zx7;dl;%z#5?TrmeSSY-y zH3S^E4BnE}`!BnHk$qNPH+y}m@9un9AiPvym4*P&FOK;3y*`E~n5fj>>jN+Gdxr{U zewYG_;-MrmQ`R>j~DZWtj(%K}hQajOC%K9XODN+;z24La}slkX12l(njCAf=9)t!zTlrT3Y zf?HM7*b5$_w?Z?Chctdssf9VwU;S2bQlPRTq6l7%QkJwFIsX^TypUSl zviC$Oyc#9U)-e&b0(^126x;+E*IH~@M37W+K~vNH0h*>oDqT)l8%@(?wcWBm?hdE6 z?9$e(l2)3guh({Em7wFQ>uuSkt&ejNH%$vH-k~U@8sod04Tdvv&2jOqqp>xSiu$vO zb>9nWPDwS9iuz+B_4k6Bqp@h7O{}vmosnyf#8jV4tUo2yaFtpcQ6d0ctMM6Msbi4R zIDj)ry65Z-nDP5Wml$C4!6_P?c<6-{jo#V(N7E@9Se7L=ALhrx{8&2{4`y?p^NQEC zKg=Q~DK{P|250{HQK@xUlQdz4^t4PP&ei9Xx7qw? zCA)G>x1G0S+FC`ur5Z-<^`j2v_;JZCaE%E*e0B7Gz-;=CUk%Rur8{#CMpO`H9JK*r z?1>YU8AFa1s&ueWG-I7Y+l=xMBSy411i*aa1QqyA0kC;1!t$Cs2dvi?f*R{O!)PkV z(oOP~*m=dLUTq%L^bsx7V8qrQybNsqto5miD@|khiL(4}?Hbs2svO*f&vL{vTTV01PR=)g>0$BXlKT2h)WUSUd z^4daK_vMtedF{-F1wxq1xA&9H3(Z=4@XGt)1uJ&vzw!~{K49}EuaxhJywTo0_~eVl zm=`Y$Cv(f%cAhSG{S+}3EQz;U91lw+4r`M9zx?AwLM=lrNGIxPu8xng4a3Qnu7Ros zLz$+#_Ra%?5wl68hHd+A09F{18r61+V*1j!YUN1)j|m-*zW)UH8(6T1L()7!)&Kwi M07*qoM6N<$g5Mx?XaE2J literal 0 HcmV?d00001 diff --git a/src/main/resources/magprog/assets/images/mentors/Dolgonosov.jpg b/data/magprog/assets/images/mentors/Dolgonosov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Dolgonosov.jpg rename to data/magprog/assets/images/mentors/Dolgonosov.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Gertsenberger.jpg b/data/magprog/assets/images/mentors/Gertsenberger.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Gertsenberger.jpg rename to data/magprog/assets/images/mentors/Gertsenberger.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Grinis.jpg b/data/magprog/assets/images/mentors/Grinis.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Grinis.jpg rename to data/magprog/assets/images/mentors/Grinis.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Kalashev.jpg b/data/magprog/assets/images/mentors/Kalashev.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Kalashev.jpg rename to data/magprog/assets/images/mentors/Kalashev.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Khokhriakov.jpg b/data/magprog/assets/images/mentors/Khokhriakov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Khokhriakov.jpg rename to data/magprog/assets/images/mentors/Khokhriakov.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Klimai.jpg b/data/magprog/assets/images/mentors/Klimai.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Klimai.jpg rename to data/magprog/assets/images/mentors/Klimai.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Kostunin.jpg b/data/magprog/assets/images/mentors/Kostunin.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Kostunin.jpg rename to data/magprog/assets/images/mentors/Kostunin.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Nozik.jpg b/data/magprog/assets/images/mentors/Nozik.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Nozik.jpg rename to data/magprog/assets/images/mentors/Nozik.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Oliinychenko.jpg b/data/magprog/assets/images/mentors/Oliinychenko.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Oliinychenko.jpg rename to data/magprog/assets/images/mentors/Oliinychenko.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Pantuev.jpg b/data/magprog/assets/images/mentors/Pantuev.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Pantuev.jpg rename to data/magprog/assets/images/mentors/Pantuev.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Pshenichnov.jpg b/data/magprog/assets/images/mentors/Pshenichnov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Pshenichnov.jpg rename to data/magprog/assets/images/mentors/Pshenichnov.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Shagalov.jpg b/data/magprog/assets/images/mentors/Shagalov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Shagalov.jpg rename to data/magprog/assets/images/mentors/Shagalov.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Skasyrskaya.jpg b/data/magprog/assets/images/mentors/Skasyrskaya.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Skasyrskaya.jpg rename to data/magprog/assets/images/mentors/Skasyrskaya.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Template.jpg b/data/magprog/assets/images/mentors/Template.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Template.jpg rename to data/magprog/assets/images/mentors/Template.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Usmanov.jpg b/data/magprog/assets/images/mentors/Usmanov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Usmanov.jpg rename to data/magprog/assets/images/mentors/Usmanov.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Zinoviev.jpg b/data/magprog/assets/images/mentors/Zinoviev.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Zinoviev.jpg rename to data/magprog/assets/images/mentors/Zinoviev.jpg diff --git a/src/main/resources/magprog/assets/images/partners/FPMI.jpg b/data/magprog/assets/images/partners/FPMI.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/FPMI.jpg rename to data/magprog/assets/images/partners/FPMI.jpg diff --git a/src/main/resources/magprog/assets/images/partners/JBR.png b/data/magprog/assets/images/partners/JBR.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/JBR.png rename to data/magprog/assets/images/partners/JBR.png diff --git a/src/main/resources/magprog/assets/images/partners/LPI.jpg b/data/magprog/assets/images/partners/LPI.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/LPI.jpg rename to data/magprog/assets/images/partners/LPI.jpg diff --git a/src/main/resources/magprog/assets/images/partners/Tavrida.png b/data/magprog/assets/images/partners/Tavrida.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/Tavrida.png rename to data/magprog/assets/images/partners/Tavrida.png diff --git a/src/main/resources/magprog/assets/images/partners/aramco.jpg b/data/magprog/assets/images/partners/aramco.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/aramco.jpg rename to data/magprog/assets/images/partners/aramco.jpg diff --git a/src/main/resources/magprog/assets/images/partners/biotech.png b/data/magprog/assets/images/partners/biotech.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/biotech.png rename to data/magprog/assets/images/partners/biotech.png diff --git a/src/main/resources/magprog/assets/images/partners/desy.svg b/data/magprog/assets/images/partners/desy.svg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/desy.svg rename to data/magprog/assets/images/partners/desy.svg diff --git a/src/main/resources/magprog/assets/images/partners/hse.jpg b/data/magprog/assets/images/partners/hse.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/hse.jpg rename to data/magprog/assets/images/partners/hse.jpg diff --git a/src/main/resources/magprog/assets/images/partners/iki.jpg b/data/magprog/assets/images/partners/iki.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/iki.jpg rename to data/magprog/assets/images/partners/iki.jpg diff --git a/src/main/resources/magprog/assets/images/partners/inr_logo.png b/data/magprog/assets/images/partners/inr_logo.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/inr_logo.png rename to data/magprog/assets/images/partners/inr_logo.png diff --git a/src/main/resources/magprog/assets/images/partners/jetbrains.png b/data/magprog/assets/images/partners/jetbrains.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/jetbrains.png rename to data/magprog/assets/images/partners/jetbrains.png diff --git a/src/main/resources/magprog/assets/images/partners/jinr.png b/data/magprog/assets/images/partners/jinr.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/jinr.png rename to data/magprog/assets/images/partners/jinr.png diff --git a/src/main/resources/magprog/assets/images/partners/tink.jpg b/data/magprog/assets/images/partners/tink.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/tink.jpg rename to data/magprog/assets/images/partners/tink.jpg diff --git a/src/main/resources/magprog/assets/images/team/Aivazov.jpg b/data/magprog/assets/images/team/Aivazov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/team/Aivazov.jpg rename to data/magprog/assets/images/team/Aivazov.jpg diff --git a/src/main/resources/magprog/assets/images/team/muhina.jpg b/data/magprog/assets/images/team/muhina.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/team/muhina.jpg rename to data/magprog/assets/images/team/muhina.jpg diff --git a/src/main/resources/magprog/assets/images/team/svetlichny.jpeg b/data/magprog/assets/images/team/svetlichny.jpeg similarity index 100% rename from src/main/resources/magprog/assets/images/team/svetlichny.jpeg rename to data/magprog/assets/images/team/svetlichny.jpeg diff --git a/src/main/resources/magprog/assets/js/breakpoints.min.js b/data/magprog/assets/js/breakpoints.min.js similarity index 100% rename from src/main/resources/magprog/assets/js/breakpoints.min.js rename to data/magprog/assets/js/breakpoints.min.js diff --git a/src/main/resources/magprog/assets/js/browser.min.js b/data/magprog/assets/js/browser.min.js similarity index 100% rename from src/main/resources/magprog/assets/js/browser.min.js rename to data/magprog/assets/js/browser.min.js diff --git a/src/main/resources/magprog/assets/js/jquery.min.js b/data/magprog/assets/js/jquery.min.js similarity index 100% rename from src/main/resources/magprog/assets/js/jquery.min.js rename to data/magprog/assets/js/jquery.min.js diff --git a/src/main/resources/magprog/assets/js/jquery.scrollex.min.js b/data/magprog/assets/js/jquery.scrollex.min.js similarity index 100% rename from src/main/resources/magprog/assets/js/jquery.scrollex.min.js rename to data/magprog/assets/js/jquery.scrollex.min.js diff --git a/src/main/resources/magprog/assets/js/jquery.scrolly.min.js b/data/magprog/assets/js/jquery.scrolly.min.js similarity index 100% rename from src/main/resources/magprog/assets/js/jquery.scrolly.min.js rename to data/magprog/assets/js/jquery.scrolly.min.js diff --git a/src/main/resources/magprog/assets/js/main.js b/data/magprog/assets/js/main.js similarity index 100% rename from src/main/resources/magprog/assets/js/main.js rename to data/magprog/assets/js/main.js diff --git a/src/main/resources/magprog/assets/js/util.js b/data/magprog/assets/js/util.js similarity index 100% rename from src/main/resources/magprog/assets/js/util.js rename to data/magprog/assets/js/util.js diff --git a/src/main/resources/magprog/assets/sass/base/_page.scss b/data/magprog/assets/sass/base/_page.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/base/_page.scss rename to data/magprog/assets/sass/base/_page.scss diff --git a/src/main/resources/magprog/assets/sass/base/_reset.scss b/data/magprog/assets/sass/base/_reset.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/base/_reset.scss rename to data/magprog/assets/sass/base/_reset.scss diff --git a/src/main/resources/magprog/assets/sass/base/_typography.scss b/data/magprog/assets/sass/base/_typography.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/base/_typography.scss rename to data/magprog/assets/sass/base/_typography.scss diff --git a/src/main/resources/magprog/assets/sass/components/_actions.scss b/data/magprog/assets/sass/components/_actions.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_actions.scss rename to data/magprog/assets/sass/components/_actions.scss diff --git a/src/main/resources/magprog/assets/sass/components/_box.scss b/data/magprog/assets/sass/components/_box.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_box.scss rename to data/magprog/assets/sass/components/_box.scss diff --git a/src/main/resources/magprog/assets/sass/components/_button.scss b/data/magprog/assets/sass/components/_button.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_button.scss rename to data/magprog/assets/sass/components/_button.scss diff --git a/src/main/resources/magprog/assets/sass/components/_contact.scss b/data/magprog/assets/sass/components/_contact.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_contact.scss rename to data/magprog/assets/sass/components/_contact.scss diff --git a/src/main/resources/magprog/assets/sass/components/_features.scss b/data/magprog/assets/sass/components/_features.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_features.scss rename to data/magprog/assets/sass/components/_features.scss diff --git a/src/main/resources/magprog/assets/sass/components/_form.scss b/data/magprog/assets/sass/components/_form.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_form.scss rename to data/magprog/assets/sass/components/_form.scss diff --git a/src/main/resources/magprog/assets/sass/components/_icon.scss b/data/magprog/assets/sass/components/_icon.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_icon.scss rename to data/magprog/assets/sass/components/_icon.scss diff --git a/src/main/resources/magprog/assets/sass/components/_icons.scss b/data/magprog/assets/sass/components/_icons.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_icons.scss rename to data/magprog/assets/sass/components/_icons.scss diff --git a/src/main/resources/magprog/assets/sass/components/_image.scss b/data/magprog/assets/sass/components/_image.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_image.scss rename to data/magprog/assets/sass/components/_image.scss diff --git a/src/main/resources/magprog/assets/sass/components/_list.scss b/data/magprog/assets/sass/components/_list.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_list.scss rename to data/magprog/assets/sass/components/_list.scss diff --git a/src/main/resources/magprog/assets/sass/components/_menu.scss b/data/magprog/assets/sass/components/_menu.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_menu.scss rename to data/magprog/assets/sass/components/_menu.scss diff --git a/src/main/resources/magprog/assets/sass/components/_row.scss b/data/magprog/assets/sass/components/_row.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_row.scss rename to data/magprog/assets/sass/components/_row.scss diff --git a/src/main/resources/magprog/assets/sass/components/_section.scss b/data/magprog/assets/sass/components/_section.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_section.scss rename to data/magprog/assets/sass/components/_section.scss diff --git a/src/main/resources/magprog/assets/sass/components/_split.scss b/data/magprog/assets/sass/components/_split.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_split.scss rename to data/magprog/assets/sass/components/_split.scss diff --git a/src/main/resources/magprog/assets/sass/components/_spotlights.scss b/data/magprog/assets/sass/components/_spotlights.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_spotlights.scss rename to data/magprog/assets/sass/components/_spotlights.scss diff --git a/src/main/resources/magprog/assets/sass/components/_table.scss b/data/magprog/assets/sass/components/_table.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_table.scss rename to data/magprog/assets/sass/components/_table.scss diff --git a/src/main/resources/magprog/assets/sass/components/_wrapper.scss b/data/magprog/assets/sass/components/_wrapper.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_wrapper.scss rename to data/magprog/assets/sass/components/_wrapper.scss diff --git a/src/main/resources/magprog/assets/sass/layout/_footer.scss b/data/magprog/assets/sass/layout/_footer.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/layout/_footer.scss rename to data/magprog/assets/sass/layout/_footer.scss diff --git a/src/main/resources/magprog/assets/sass/layout/_header.scss b/data/magprog/assets/sass/layout/_header.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/layout/_header.scss rename to data/magprog/assets/sass/layout/_header.scss diff --git a/src/main/resources/magprog/assets/sass/layout/_intro.scss b/data/magprog/assets/sass/layout/_intro.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/layout/_intro.scss rename to data/magprog/assets/sass/layout/_intro.scss diff --git a/src/main/resources/magprog/assets/sass/layout/_sidebar.scss b/data/magprog/assets/sass/layout/_sidebar.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/layout/_sidebar.scss rename to data/magprog/assets/sass/layout/_sidebar.scss diff --git a/src/main/resources/magprog/assets/sass/layout/_wrapper.scss b/data/magprog/assets/sass/layout/_wrapper.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/layout/_wrapper.scss rename to data/magprog/assets/sass/layout/_wrapper.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_breakpoints.scss b/data/magprog/assets/sass/libs/_breakpoints.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_breakpoints.scss rename to data/magprog/assets/sass/libs/_breakpoints.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_functions.scss b/data/magprog/assets/sass/libs/_functions.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_functions.scss rename to data/magprog/assets/sass/libs/_functions.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_html-grid.scss b/data/magprog/assets/sass/libs/_html-grid.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_html-grid.scss rename to data/magprog/assets/sass/libs/_html-grid.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_mixins.scss b/data/magprog/assets/sass/libs/_mixins.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_mixins.scss rename to data/magprog/assets/sass/libs/_mixins.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_vars.scss b/data/magprog/assets/sass/libs/_vars.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_vars.scss rename to data/magprog/assets/sass/libs/_vars.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_vendor.scss b/data/magprog/assets/sass/libs/_vendor.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_vendor.scss rename to data/magprog/assets/sass/libs/_vendor.scss diff --git a/src/main/resources/magprog/assets/sass/main.scss b/data/magprog/assets/sass/main.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/main.scss rename to data/magprog/assets/sass/main.scss diff --git a/src/main/resources/magprog/assets/sass/noscript.scss b/data/magprog/assets/sass/noscript.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/noscript.scss rename to data/magprog/assets/sass/noscript.scss diff --git a/src/main/resources/magprog/assets/webfonts/fa-brands-400.eot b/data/magprog/assets/webfonts/fa-brands-400.eot similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-brands-400.eot rename to data/magprog/assets/webfonts/fa-brands-400.eot diff --git a/src/main/resources/magprog/assets/webfonts/fa-brands-400.svg b/data/magprog/assets/webfonts/fa-brands-400.svg similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-brands-400.svg rename to data/magprog/assets/webfonts/fa-brands-400.svg diff --git a/src/main/resources/magprog/assets/webfonts/fa-brands-400.ttf b/data/magprog/assets/webfonts/fa-brands-400.ttf similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-brands-400.ttf rename to data/magprog/assets/webfonts/fa-brands-400.ttf diff --git a/src/main/resources/magprog/assets/webfonts/fa-brands-400.woff b/data/magprog/assets/webfonts/fa-brands-400.woff similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-brands-400.woff rename to data/magprog/assets/webfonts/fa-brands-400.woff diff --git a/src/main/resources/magprog/assets/webfonts/fa-brands-400.woff2 b/data/magprog/assets/webfonts/fa-brands-400.woff2 similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-brands-400.woff2 rename to data/magprog/assets/webfonts/fa-brands-400.woff2 diff --git a/src/main/resources/magprog/assets/webfonts/fa-regular-400.eot b/data/magprog/assets/webfonts/fa-regular-400.eot similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-regular-400.eot rename to data/magprog/assets/webfonts/fa-regular-400.eot diff --git a/src/main/resources/magprog/assets/webfonts/fa-regular-400.svg b/data/magprog/assets/webfonts/fa-regular-400.svg similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-regular-400.svg rename to data/magprog/assets/webfonts/fa-regular-400.svg diff --git a/src/main/resources/magprog/assets/webfonts/fa-regular-400.ttf b/data/magprog/assets/webfonts/fa-regular-400.ttf similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-regular-400.ttf rename to data/magprog/assets/webfonts/fa-regular-400.ttf diff --git a/src/main/resources/magprog/assets/webfonts/fa-regular-400.woff b/data/magprog/assets/webfonts/fa-regular-400.woff similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-regular-400.woff rename to data/magprog/assets/webfonts/fa-regular-400.woff diff --git a/src/main/resources/magprog/assets/webfonts/fa-regular-400.woff2 b/data/magprog/assets/webfonts/fa-regular-400.woff2 similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-regular-400.woff2 rename to data/magprog/assets/webfonts/fa-regular-400.woff2 diff --git a/src/main/resources/magprog/assets/webfonts/fa-solid-900.eot b/data/magprog/assets/webfonts/fa-solid-900.eot similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-solid-900.eot rename to data/magprog/assets/webfonts/fa-solid-900.eot diff --git a/src/main/resources/magprog/assets/webfonts/fa-solid-900.svg b/data/magprog/assets/webfonts/fa-solid-900.svg similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-solid-900.svg rename to data/magprog/assets/webfonts/fa-solid-900.svg diff --git a/src/main/resources/magprog/assets/webfonts/fa-solid-900.ttf b/data/magprog/assets/webfonts/fa-solid-900.ttf similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-solid-900.ttf rename to data/magprog/assets/webfonts/fa-solid-900.ttf diff --git a/src/main/resources/magprog/assets/webfonts/fa-solid-900.woff b/data/magprog/assets/webfonts/fa-solid-900.woff similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-solid-900.woff rename to data/magprog/assets/webfonts/fa-solid-900.woff diff --git a/src/main/resources/magprog/assets/webfonts/fa-solid-900.woff2 b/data/magprog/assets/webfonts/fa-solid-900.woff2 similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-solid-900.woff2 rename to data/magprog/assets/webfonts/fa-solid-900.woff2 diff --git a/src/main/resources/magprog/content/contacts.md b/data/magprog/content/contacts.md similarity index 100% rename from src/main/resources/magprog/content/contacts.md rename to data/magprog/content/contacts.md diff --git a/src/main/resources/magprog/content/enroll.md b/data/magprog/content/enroll.md similarity index 100% rename from src/main/resources/magprog/content/enroll.md rename to data/magprog/content/enroll.md diff --git a/src/main/resources/magprog/content/intro.md b/data/magprog/content/intro.md similarity index 100% rename from src/main/resources/magprog/content/intro.md rename to data/magprog/content/intro.md diff --git a/src/main/resources/magprog/content/mentors/Dolgonosov.md b/data/magprog/content/mentors/Dolgonosov.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Dolgonosov.md rename to data/magprog/content/mentors/Dolgonosov.md diff --git a/src/main/resources/magprog/content/mentors/Dolgonosov[info].md b/data/magprog/content/mentors/Dolgonosov[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Dolgonosov[info].md rename to data/magprog/content/mentors/Dolgonosov[info].md diff --git a/src/main/resources/magprog/content/mentors/Gertsenberger.md b/data/magprog/content/mentors/Gertsenberger.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Gertsenberger.md rename to data/magprog/content/mentors/Gertsenberger.md diff --git a/src/main/resources/magprog/content/mentors/Gertsenberger[info].md b/data/magprog/content/mentors/Gertsenberger[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Gertsenberger[info].md rename to data/magprog/content/mentors/Gertsenberger[info].md diff --git a/src/main/resources/magprog/content/mentors/Grinis.md b/data/magprog/content/mentors/Grinis.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Grinis.md rename to data/magprog/content/mentors/Grinis.md diff --git a/src/main/resources/magprog/content/mentors/Grinis[info].md b/data/magprog/content/mentors/Grinis[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Grinis[info].md rename to data/magprog/content/mentors/Grinis[info].md diff --git a/src/main/resources/magprog/content/mentors/Kalashev.md b/data/magprog/content/mentors/Kalashev.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Kalashev.md rename to data/magprog/content/mentors/Kalashev.md diff --git a/src/main/resources/magprog/content/mentors/Kalashev[info].md b/data/magprog/content/mentors/Kalashev[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Kalashev[info].md rename to data/magprog/content/mentors/Kalashev[info].md diff --git a/src/main/resources/magprog/content/mentors/Khokhriakov.md b/data/magprog/content/mentors/Khokhriakov.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Khokhriakov.md rename to data/magprog/content/mentors/Khokhriakov.md diff --git a/src/main/resources/magprog/content/mentors/Khokhriakov[info].md b/data/magprog/content/mentors/Khokhriakov[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Khokhriakov[info].md rename to data/magprog/content/mentors/Khokhriakov[info].md diff --git a/src/main/resources/magprog/content/mentors/Klimai.md b/data/magprog/content/mentors/Klimai.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Klimai.md rename to data/magprog/content/mentors/Klimai.md diff --git a/src/main/resources/magprog/content/mentors/Klimai[info].md b/data/magprog/content/mentors/Klimai[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Klimai[info].md rename to data/magprog/content/mentors/Klimai[info].md diff --git a/src/main/resources/magprog/content/mentors/Kostunin.md b/data/magprog/content/mentors/Kostunin.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Kostunin.md rename to data/magprog/content/mentors/Kostunin.md diff --git a/src/main/resources/magprog/content/mentors/Kostunin[info].md b/data/magprog/content/mentors/Kostunin[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Kostunin[info].md rename to data/magprog/content/mentors/Kostunin[info].md diff --git a/src/main/resources/magprog/content/mentors/Nozik.md b/data/magprog/content/mentors/Nozik.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Nozik.md rename to data/magprog/content/mentors/Nozik.md diff --git a/src/main/resources/magprog/content/mentors/Nozik[info].md b/data/magprog/content/mentors/Nozik[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Nozik[info].md rename to data/magprog/content/mentors/Nozik[info].md diff --git a/src/main/resources/magprog/content/mentors/Oliinychenko.md b/data/magprog/content/mentors/Oliinychenko.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Oliinychenko.md rename to data/magprog/content/mentors/Oliinychenko.md diff --git a/src/main/resources/magprog/content/mentors/Oliinychenko[info].md b/data/magprog/content/mentors/Oliinychenko[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Oliinychenko[info].md rename to data/magprog/content/mentors/Oliinychenko[info].md diff --git a/src/main/resources/magprog/content/mentors/Pantuev.md b/data/magprog/content/mentors/Pantuev.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Pantuev.md rename to data/magprog/content/mentors/Pantuev.md diff --git a/src/main/resources/magprog/content/mentors/Pantuev[info].md b/data/magprog/content/mentors/Pantuev[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Pantuev[info].md rename to data/magprog/content/mentors/Pantuev[info].md diff --git a/src/main/resources/magprog/content/mentors/Pshenichnov.md b/data/magprog/content/mentors/Pshenichnov.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Pshenichnov.md rename to data/magprog/content/mentors/Pshenichnov.md diff --git a/src/main/resources/magprog/content/mentors/Pshenichnov[info].md b/data/magprog/content/mentors/Pshenichnov[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Pshenichnov[info].md rename to data/magprog/content/mentors/Pshenichnov[info].md diff --git a/src/main/resources/magprog/content/mentors/Shagalov.md b/data/magprog/content/mentors/Shagalov.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Shagalov.md rename to data/magprog/content/mentors/Shagalov.md diff --git a/src/main/resources/magprog/content/mentors/Shagalov[info].md b/data/magprog/content/mentors/Shagalov[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Shagalov[info].md rename to data/magprog/content/mentors/Shagalov[info].md diff --git a/src/main/resources/magprog/content/mentors/Skasyrskaya.md b/data/magprog/content/mentors/Skasyrskaya.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Skasyrskaya.md rename to data/magprog/content/mentors/Skasyrskaya.md diff --git a/src/main/resources/magprog/content/mentors/Skasyrskaya[info].md b/data/magprog/content/mentors/Skasyrskaya[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Skasyrskaya[info].md rename to data/magprog/content/mentors/Skasyrskaya[info].md diff --git a/src/main/resources/magprog/content/mentors/Usmanov.md b/data/magprog/content/mentors/Usmanov.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Usmanov.md rename to data/magprog/content/mentors/Usmanov.md diff --git a/src/main/resources/magprog/content/mentors/Usmanov[info].md b/data/magprog/content/mentors/Usmanov[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Usmanov[info].md rename to data/magprog/content/mentors/Usmanov[info].md diff --git a/src/main/resources/magprog/content/mentors/Zinoviev.md b/data/magprog/content/mentors/Zinoviev.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Zinoviev.md rename to data/magprog/content/mentors/Zinoviev.md diff --git a/src/main/resources/magprog/content/mentors/Zinoviev[info].md b/data/magprog/content/mentors/Zinoviev[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Zinoviev[info].md rename to data/magprog/content/mentors/Zinoviev[info].md diff --git a/src/main/resources/magprog/content/mentors/template.md b/data/magprog/content/mentors/template.md similarity index 100% rename from src/main/resources/magprog/content/mentors/template.md rename to data/magprog/content/mentors/template.md diff --git a/src/main/resources/magprog/content/partners.yaml b/data/magprog/content/partners.yaml similarity index 100% rename from src/main/resources/magprog/content/partners.yaml rename to data/magprog/content/partners.yaml diff --git a/src/main/resources/magprog/content/program.md b/data/magprog/content/program.md similarity index 100% rename from src/main/resources/magprog/content/program.md rename to data/magprog/content/program.md diff --git a/src/main/resources/magprog/content/recommendedCourses.md b/data/magprog/content/recommendedCourses.md similarity index 100% rename from src/main/resources/magprog/content/recommendedCourses.md rename to data/magprog/content/recommendedCourses.md diff --git a/src/main/resources/magprog/content/team/Aivazov.md b/data/magprog/content/team/Aivazov.md similarity index 100% rename from src/main/resources/magprog/content/team/Aivazov.md rename to data/magprog/content/team/Aivazov.md diff --git a/data/magprog/content/team/muhina.md b/data/magprog/content/team/muhina.md new file mode 100644 index 0000000..e5a83e4 --- /dev/null +++ b/data/magprog/content/team/muhina.md @@ -0,0 +1,10 @@ +--- +content_type: magprog_team +name: Татьяна Мухина +id: muhina +order: 3 +photo: images/team/muhina.jpg +language: ru +--- + +Менеджер образовательных проектов. \ No newline at end of file diff --git a/src/main/resources/magprog/content/team/nozik.md b/data/magprog/content/team/nozik.md similarity index 100% rename from src/main/resources/magprog/content/team/nozik.md rename to data/magprog/content/team/nozik.md diff --git a/src/main/resources/magprog/content/team/svetlichnii.md b/data/magprog/content/team/svetlichnii.md similarity index 99% rename from src/main/resources/magprog/content/team/svetlichnii.md rename to data/magprog/content/team/svetlichnii.md index 986dd1a..40f7b32 100644 --- a/src/main/resources/magprog/content/team/svetlichnii.md +++ b/data/magprog/content/team/svetlichnii.md @@ -6,6 +6,7 @@ order: 2 photo: images/team/svetlichny.jpeg language: ru --- + **Заместитель руководителя** Преподаватель кафедры общей физики МФТИ. diff --git a/gradle.properties b/gradle.properties index 04320d7..13008f8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,3 @@ kotlin.code.style=official -toolsVersion=0.11.4-kotlin-1.6.20 - -development=true +toolsVersion=0.11.4-kotlin-1.6.20 \ No newline at end of file diff --git a/src/main/kotlin/ru/mipt/spc/Application.kt b/src/main/kotlin/ru/mipt/spc/Application.kt index 47f197e..6591d9f 100644 --- a/src/main/kotlin/ru/mipt/spc/Application.kt +++ b/src/main/kotlin/ru/mipt/spc/Application.kt @@ -1,7 +1,9 @@ package ru.mipt.spc import io.ktor.http.HttpStatusCode +import io.ktor.server.application.Application import io.ktor.server.application.install +import io.ktor.server.application.log import io.ktor.server.engine.embeddedServer import io.ktor.server.netty.Netty import io.ktor.server.plugins.statuspages.StatusPages @@ -13,7 +15,9 @@ import ru.mipt.spc.magprog.magProgPage import space.kscience.dataforge.context.Context import space.kscience.snark.SnarkPlugin import java.net.URI -import java.nio.file.* +import java.nio.file.FileSystems +import java.nio.file.Files +import java.nio.file.Path import kotlin.io.path.createDirectories import kotlin.io.path.isRegularFile import kotlin.io.path.relativeTo @@ -25,25 +29,26 @@ fun CommonAttributeGroupFacade.css(block: CssBuilder.() -> Unit) { class AuthenticationException : RuntimeException() class AuthorizationException : RuntimeException() -private fun useResource(uri: URI, block: (Path) -> Unit) { - try { - block(Paths.get(uri)) - } catch (ex: FileSystemNotFoundException) { +private fun Application.resolveData(uri: URI, targetPath: Path): Path { + if (Files.isDirectory(targetPath)) { + log.info("Using existing data directory at $targetPath.") + } else { + log.info("Copying data from $uri into $targetPath.") + targetPath.createDirectories() //Copy everything into a temporary directory FileSystems.newFileSystem(uri, emptyMap()).use { fs -> val rootPath: Path = fs.provider().getPath(uri) - val tmpDirectory = Files.createTempDirectory("snark") Files.walk(rootPath).forEach { source: Path -> if (source.isRegularFile()) { val relative = source.relativeTo(rootPath).toString() - val destination: Path = tmpDirectory.resolve(relative) + val destination: Path = targetPath.resolve(relative) destination.parent.createDirectories() Files.copy(source, destination) } } - block(tmpDirectory) } } + return targetPath } @@ -51,7 +56,10 @@ fun main() { val context = Context("spc-site") { plugin(SnarkPlugin) } - embeddedServer(Netty, port = 7080, watchPaths = listOf("classes", "resources")) { + + val dataPath = Path.of("data") + + embeddedServer(Netty, port = 7080, watchPaths = listOf("classes")) { install(StatusPages) { exception { call, _ -> call.respond(HttpStatusCode.Unauthorized) @@ -60,9 +68,14 @@ fun main() { call.respond(HttpStatusCode.Forbidden) } } - useResource(javaClass.getResource("/magprog")!!.toURI()) { path -> - magProgPage(context, rootPath = path) - } + + val magProgDataPath = resolveData( + javaClass.getResource("/magprog")!!.toURI(), + dataPath.resolve("magprog") + ) + + magProgPage(context, rootPath = magProgDataPath) + }.start(wait = true) } diff --git a/src/main/kotlin/ru/mipt/spc/Templating.kt b/src/main/kotlin/ru/mipt/spc/Templating.kt deleted file mode 100644 index e80d523..0000000 --- a/src/main/kotlin/ru/mipt/spc/Templating.kt +++ /dev/null @@ -1,60 +0,0 @@ -package ru.mipt - -import io.ktor.http.ContentType -import io.ktor.server.application.Application -import io.ktor.server.application.ApplicationCall -import io.ktor.server.application.call -import io.ktor.server.html.respondHtml -import io.ktor.server.response.respondText -import io.ktor.server.routing.get -import io.ktor.server.routing.routing -import kotlinx.css.* -import kotlinx.html.* - -fun Application.configureTemplating() { - - - routing { - get("/html-dsl") { - call.respondHtml { - body { - h1 { +"HTML" } - ul { - for (n in 1..10) { - li { +"$n" } - } - } - } - } - } - get("/styles.css") { - call.respondCss { - body { - backgroundColor = Color.darkBlue - margin(0.px) - } - rule("h1.page-title") { - color = Color.white - } - } - } - - get("/html-css-dsl") { - call.respondHtml { - head { - link(rel = "stylesheet", href = "/styles.css", type = "text/css") - } - body { - h1(classes = "page-title") { - +"Hello from Ktor!" - } - } - } - } - } -} - -suspend inline fun ApplicationCall.respondCss(builder: CssBuilder.() -> Unit) { - this.respondText(CssBuilder().apply(builder).toString(), ContentType.Text.CSS) -} - diff --git a/src/main/kotlin/ru/mipt/spc/magprog/magProgPage.kt b/src/main/kotlin/ru/mipt/spc/magprog/magProgPage.kt index 4837740..f57c17b 100644 --- a/src/main/kotlin/ru/mipt/spc/magprog/magProgPage.kt +++ b/src/main/kotlin/ru/mipt/spc/magprog/magProgPage.kt @@ -209,6 +209,10 @@ context(PageContext) internal fun HTML.magProgHead(title: String) { rel = "stylesheet" href = resolveRef("css/main.css") } + link { + rel = "shortcut icon" + href = resolveRef("images/favicon-32x32.png") + } noScript { link { rel = "stylesheet" diff --git a/src/main/kotlin/ru/mipt/spc/snapshot.kt b/src/main/kotlin/ru/mipt/spc/snapshot.kt deleted file mode 100644 index ba2aa61..0000000 --- a/src/main/kotlin/ru/mipt/spc/snapshot.kt +++ /dev/null @@ -1,12 +0,0 @@ -package ru.mipt.spc - -//private fun snapshotRoute(route: Route, path: Path){ -// route.children.forEach { -// it. -// } -//} -// -// -//fun Application.snapshotTo(path: Path): Job = launch{ -// pluginOrNull(Routing)?.children -//} \ No newline at end of file diff --git a/src/main/kotlin/space/kscience/snark/DirectoryDataTree.kt b/src/main/kotlin/space/kscience/snark/DirectoryDataTree.kt index 03a7bca..4629b96 100644 --- a/src/main/kotlin/space/kscience/snark/DirectoryDataTree.kt +++ b/src/main/kotlin/space/kscience/snark/DirectoryDataTree.kt @@ -1,6 +1,11 @@ package space.kscience.snark +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.shareIn import space.kscience.dataforge.data.Data +import space.kscience.dataforge.data.DataSource import space.kscience.dataforge.data.DataTree import space.kscience.dataforge.data.DataTreeItem import space.kscience.dataforge.io.IOPlugin @@ -11,13 +16,18 @@ import space.kscience.dataforge.meta.Meta import space.kscience.dataforge.meta.copy import space.kscience.dataforge.names.* import java.nio.file.Path +import java.nio.file.StandardWatchEventKinds import java.nio.file.attribute.BasicFileAttributes +import kotlin.coroutines.CoroutineContext import kotlin.io.path.* import kotlin.reflect.KType import kotlin.reflect.typeOf -class DirectoryDataTree(val io: IOPlugin, val path: Path) : DataTree { +class DirectoryDataTree(val io: IOPlugin, val path: Path) : DataTree, DataSource { + + override val coroutineContext: CoroutineContext get() = io.context.coroutineContext + override val dataType: KType get() = typeOf() @@ -33,15 +43,17 @@ class DirectoryDataTree(val io: IOPlugin, val path: Path) : DataTree META_FILE_UPDATE_TIME_KEY put attributes.lastModifiedTime().toInstant().toString() META_FILE_CREATE_TIME_KEY put attributes.creationTime().toInstant().toString() } - return Data(meta){ + return Data(meta) { envelope.data?.toByteArray() ?: ByteArray(0) } } + private fun Path.toName(): Name = Name(flatMap {it.nameWithoutExtension.parseAsName().tokens}) + override val items: Map> get() = path.listDirectoryEntries().associate { childPath -> - val fileName = childPath.fileName.nameWithoutExtension + //val fileName = childPath.fileName.nameWithoutExtension val item: DataTreeItem = if (childPath.isDirectory()) { DataTreeItem.Node(DirectoryDataTree(io, childPath)) @@ -49,21 +61,40 @@ class DirectoryDataTree(val io: IOPlugin, val path: Path) : DataTree DataTreeItem.Leaf(readFile(childPath)) } - val name = Name.parse(fileName) - if(name.length == 1) { + val name = childPath.fileName.toName()//Name.parse(fileName) + if (name.length == 1) { name.first() to item - } else{ + } else { TODO("Segmented names are not supported") } } + override val updates: SharedFlow by lazy { + val watchService = path.fileSystem.newWatchService() + + path.register( + watchService, + StandardWatchEventKinds.ENTRY_CREATE, + StandardWatchEventKinds.ENTRY_MODIFY, + StandardWatchEventKinds.ENTRY_DELETE + ) + + flow { + while (true) { + val key = watchService.take() ?: break + key.pollEvents().map { it.context() }.filterIsInstance().forEach { + emit(it.toName()) + } + key.reset() + } + }.shareIn(this, SharingStarted.Eagerly) + } + companion object { val META_FILE_KEY = "file".asName() val META_FILE_PATH_KEY = META_FILE_KEY + "path" val META_FILE_EXTENSION_KEY = META_FILE_KEY + "extension" - val META_FILE_CREATE_TIME_KEY = META_FILE_KEY +"created" - val META_FILE_UPDATE_TIME_KEY = META_FILE_KEY +"update" + val META_FILE_CREATE_TIME_KEY = META_FILE_KEY + "created" + val META_FILE_UPDATE_TIME_KEY = META_FILE_KEY + "update" } -} - -//TODO add transforming provider instead of ByteArray DataSet \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/resources/magprog/content/team/muhina.md b/src/main/resources/magprog/content/team/muhina.md deleted file mode 100644 index 0f332f4..0000000 --- a/src/main/resources/magprog/content/team/muhina.md +++ /dev/null @@ -1,5 +0,0 @@ -content_type: magprog_team name: Татьяна Мухина id: muhina order: 3 photo: images/team/muhina.jpg language: ru - -Образовательный менеджер лаборатории - -Студентка магистерской программы «Научное программное обеспечение» \ No newline at end of file