diff --git a/app/Components/Navigation/Navigation.php b/app/Components/Navigation/Navigation.php index 68c54f4f1..5fbbd8471 100644 --- a/app/Components/Navigation/Navigation.php +++ b/app/Components/Navigation/Navigation.php @@ -30,8 +30,8 @@ public function addNavItem(NavItem $item): void public static function mapLangToIcon(Language $lang): string { return match ($lang) { - Language::en => 'flag-icon flag-icon-us', - Language::cs => 'flag-icon flag-icon-cz', + Language::en => 'fi fi-us', + Language::cs => 'fi fi-cz', }; } } diff --git a/app/Components/Results/results.tsx b/app/Components/Results/results.tsx index c04b65958..2bc907aa6 100644 --- a/app/Components/Results/results.tsx +++ b/app/Components/Results/results.tsx @@ -2,7 +2,6 @@ import React, { useState } from 'react'; import ReactDOM from 'react-dom'; import './style.scss'; import { TranslatorProvider, useTranslator } from './resultsTranslator'; -import { co } from '@fullcalendar/core/internal-common'; interface Contestant { contestant: { diff --git a/app/Components/ResultsPanel/app.tsx b/app/Components/ResultsPanel/app.tsx index 4105ee623..c56ae113e 100644 --- a/app/Components/ResultsPanel/app.tsx +++ b/app/Components/ResultsPanel/app.tsx @@ -173,7 +173,7 @@ const CategoryColumn: React.FC<{
{mappedTeams[p.team.teamId]?.name ?? p.team.name}
{[...new Set(mappedTeams[p.team.teamId]?.participants.map(p => p.countryIso))].filter(iso => iso !== '').map(iso => - , + , )}
diff --git a/app/Components/ResultsPanel/styles.scss b/app/Components/ResultsPanel/styles.scss index 3aa195f71..60da5a7d1 100644 --- a/app/Components/ResultsPanel/styles.scss +++ b/app/Components/ResultsPanel/styles.scss @@ -36,7 +36,7 @@ .flags { flex-shrink: 0; - .flag-icon { + .fi { margin-left: .3rem; } diff --git a/app/Components/TeamList/teamList.latte b/app/Components/TeamList/teamList.latte index 2f9dd7e0c..6f727d31d 100644 --- a/app/Components/TeamList/teamList.latte +++ b/app/Components/TeamList/teamList.latte @@ -71,7 +71,7 @@ {do $inSchool++} {if $iterator->isLast() || (!is_null($members[$key + 1]) && isset($member->school) && isset($members[$key + 1]->school) && $member->school['schoolId'] != $members[$key + 1]->school['schoolId'])} ({if $inSchool > 1}{$inSchool} × {/if}{$member->school['nameAbbrev']??''}{if isset($member->school) && $member->school['countryISO'] !== ''} {/if}) + class="fi fi-{$member->school['countryISO']??'zz'|lower}">{/if}) {do $inSchool = 0} {/if} {if !$iterator->isLast()}, {/if} diff --git a/app/Components/TeamResults/styles.scss b/app/Components/TeamResults/styles.scss index 3b288e46d..e651b153e 100644 --- a/app/Components/TeamResults/styles.scss +++ b/app/Components/TeamResults/styles.scss @@ -58,7 +58,7 @@ padding-left: 10px; } - .flag-icon { + .fi { margin-right: 5px; /* Space between flag and country code */ border: 1px solid black; } @@ -94,7 +94,7 @@ // margin-bottom: 20px; /* This will give a larger gap after the "One member teams only" checkbox. */ // } -// .flag-icon { +// .fi { // margin-right: 5px; /* Space between flag and country name */ // } diff --git a/app/Components/TeamResults/teamResults.latte b/app/Components/TeamResults/teamResults.latte index a93bf0c13..6d37dec03 100644 --- a/app/Components/TeamResults/teamResults.latte +++ b/app/Components/TeamResults/teamResults.latte @@ -69,7 +69,7 @@ {if $iterator->isLast() || (!is_null($members[$key + 1]) && isset($member->school) && isset($members[$key + 1]->school) && $member->school['schoolId'] != $members[$key + 1]->school['schoolId'])} {$member->name|trim} ({if $inSchool > 1}{$inSchool} × {/if}{$member->school['nameAbbrev']??$notAStudentText}{if isset($member->school) && $member->school['countryISO'] !== null} - {/if}){if !$iterator->isLast()},{/if} + {/if}){if !$iterator->isLast()},{/if} {do $inSchool = 0} {else} {$member->name|trim}{if !$iterator->isLast()},{/if} diff --git a/app/Modules/Dsef/Core/styles/main.scss b/app/Modules/Dsef/Core/styles/main.scss index c4751a1a6..060de3cd5 100644 --- a/app/Modules/Dsef/Core/styles/main.scss +++ b/app/Modules/Dsef/Core/styles/main.scss @@ -28,8 +28,8 @@ $navbar-dark-hover-color: $text-on-primary; @import "node_modules/bootstrap/scss/bootstrap"; -$flag-icon-css-path: '/node_modules/flag-icon-css/flags'; -@import '../../../../../node_modules/flag-icon-css/sass/flag-icon'; +$flag-icons-path: '/node_modules/flag-icons/flags'; +@import "../../../../../node_modules/flag-icons/sass/flag-icons"; @import "./../../../Fol/Core/styles/layout"; diff --git a/app/Modules/Fof/Core/styles/main.scss b/app/Modules/Fof/Core/styles/main.scss index 3142a90f1..eeac80709 100644 --- a/app/Modules/Fof/Core/styles/main.scss +++ b/app/Modules/Fof/Core/styles/main.scss @@ -28,8 +28,8 @@ $navbar-dark-hover-color: $text-on-primary; @import "node_modules/bootstrap/scss/bootstrap"; -$flag-icon-css-path: '/node_modules/flag-icon-css/flags'; -@import '../../../../../node_modules/flag-icon-css/sass/flag-icon'; +$flag-icons-path: '/node_modules/flag-icons/flags'; +@import "../../../../../node_modules/flag-icons/sass/flag-icons"; @import "./../../../Fol/Core/styles/layout"; diff --git a/app/Modules/Fol/Core/styles/main.scss b/app/Modules/Fol/Core/styles/main.scss index 136bacf91..4ce87d07b 100644 --- a/app/Modules/Fol/Core/styles/main.scss +++ b/app/Modules/Fol/Core/styles/main.scss @@ -28,8 +28,8 @@ $navbar-dark-hover-color: $text-on-primary; @import "node_modules/bootstrap/scss/bootstrap"; -$flag-icon-css-path: '/node_modules/flag-icon-css/flags'; -@import 'node_modules/flag-icon-css/sass/flag-icon'; +$flag-icons-path: '/node_modules/flag-icons/flags'; +@import "../../../../../node_modules/flag-icons/sass/flag-icons"; @import "./layout"; diff --git a/app/Modules/Fol/DefaultModule/templates/Default/default.latte b/app/Modules/Fol/DefaultModule/templates/Default/default.latte index ea6f09ed8..c2de77924 100644 --- a/app/Modules/Fol/DefaultModule/templates/Default/default.latte +++ b/app/Modules/Fol/DefaultModule/templates/Default/default.latte @@ -484,7 +484,7 @@
2023
- + Puddle
@@ -496,7 +496,7 @@
2022
- + S.I.M.P.S.
@@ -508,8 +508,8 @@
2021
- - + + Metaphysical Brawlers
@@ -521,10 +521,10 @@
2020
- - - - + + + + The Large Noobs Collider
@@ -538,7 +538,7 @@
2019
- + Temple of Next
@@ -550,8 +550,8 @@
2018
- - + + NOFY066
@@ -563,9 +563,9 @@
2017
- - - + + + FtáKopySk -fks.sk
@@ -577,7 +577,7 @@
2016
- + Castrambe
diff --git a/app/Modules/Fykos/Core/styles/main.scss b/app/Modules/Fykos/Core/styles/main.scss index cc7045484..30e150788 100644 --- a/app/Modules/Fykos/Core/styles/main.scss +++ b/app/Modules/Fykos/Core/styles/main.scss @@ -52,8 +52,8 @@ $navbar-dark-color: $text-on-primary; $navbar-dark-hover-color: $text-on-primary; @import "node_modules/bootstrap/scss/bootstrap"; -$flag-icon-css-path: '/node_modules/flag-icon-css/flags'; -@import '../../../../../node_modules/flag-icon-css/sass/flag-icon'; +$flag-icons-path: '/node_modules/flag-icons/flags'; +@import "../../../../../node_modules/flag-icons/sass/flag-icons"; // @import '../../../../Models/OldFykos/css/cssAll'; diff --git a/app/Modules/Fykos/DefaultModule/ResultsPresenter.php b/app/Modules/Fykos/DefaultModule/ResultsPresenter.php index af3e4fa92..751b228d0 100644 --- a/app/Modules/Fykos/DefaultModule/ResultsPresenter.php +++ b/app/Modules/Fykos/DefaultModule/ResultsPresenter.php @@ -23,6 +23,4 @@ public function renderDefault(): void $this->template->contest = $this->getContest(); $this->template->results = $this->downloader->download(new SeriesResultsRequest(1, $year)); } - - } diff --git a/app/Modules/Vyfuk/Core/styles/layout.scss b/app/Modules/Vyfuk/Core/styles/layout.scss index ff5ff505b..a0bdd7cfc 100644 --- a/app/Modules/Vyfuk/Core/styles/layout.scss +++ b/app/Modules/Vyfuk/Core/styles/layout.scss @@ -9,11 +9,6 @@ body { background-color: black; } -.btn-primary { - @extend .btn-primary; - color: $text-on-primary; -} - .btn-outline { @extend .btn-outline; text-align: center; diff --git a/app/Modules/Vyfuk/Core/styles/main.scss b/app/Modules/Vyfuk/Core/styles/main.scss index 58e689b2c..36c4fa02b 100644 --- a/app/Modules/Vyfuk/Core/styles/main.scss +++ b/app/Modules/Vyfuk/Core/styles/main.scss @@ -10,7 +10,7 @@ $text-on-primary: white; $text-dimmed: #CCCCCC; $page-width: 77rem; - +$min-contrast-ratio: 3; $base-font-size: 18px; // Use the following font weights. @@ -32,17 +32,15 @@ $navbar-dark-hover-color: $text-dimmed; @import "node_modules/bootstrap/scss/bootstrap"; @import 'bootstrap-icons/font/bootstrap-icons.scss'; -$flag-icon-css-path: '/node_modules/flag-icon-css/flags'; -@import '../../../../../node_modules/flag-icon-css/sass/flag-icon'; +$flag-icons-path: '/node_modules/flag-icons/flags'; +@import "../../../../../node_modules/flag-icons/sass/flag-icons"; @import "./../../../Fof/Core/styles/sponsors"; @import "./layout"; @import "./titlepage"; @import "./navigation"; @import "./organizers"; - -// @import "node_modules/@fortawesome/fontawesome-free/scss/fontawesome"; -// @import "node_modules/@fortawesome/fontawesome-free/scss/solid"; +@import "./other.scss"; @import '../../../../Components/Problem/problem'; @import '../../../../Components/Problem/vyfuk'; diff --git a/app/Modules/Vyfuk/Core/styles/other.scss b/app/Modules/Vyfuk/Core/styles/other.scss new file mode 100644 index 000000000..dcd0720ae --- /dev/null +++ b/app/Modules/Vyfuk/Core/styles/other.scss @@ -0,0 +1,9 @@ +.event-img-box { + text-align: center; +} + +.event-img { + max-width: 100%; + max-height: 300px; + padding: 10px; +} \ No newline at end of file diff --git a/app/Modules/Vyfuk/DefaultModule/EventsPresenter.php b/app/Modules/Vyfuk/DefaultModule/EventsPresenter.php index a5b342c17..d4bed110a 100644 --- a/app/Modules/Vyfuk/DefaultModule/EventsPresenter.php +++ b/app/Modules/Vyfuk/DefaultModule/EventsPresenter.php @@ -6,10 +6,6 @@ use App\Models\Downloader\EventService; use DateTime; -use Exception; -use Nette\Application\AbortException; -use Nette\Application\BadRequestException; -use Nette\Application\Responses\CallbackResponse; use Nette\Caching\Cache; use Nette\Caching\Storage; @@ -49,59 +45,13 @@ public function renderDetail(int $event): void $this->template->participants = implode(', ', $array); } - public function renderDefault(?int $typeID = null): void + public function renderTabor(): void { - $eventTypes = [ - 10 => 'tábor', - 12 => 'Podzimní setkání', - 11 => 'Jarní setkání', - 15 => 'Kyberkoncil' - ]; - $ids = array_keys($eventTypes); - $selectedId = in_array($typeID, $ids) ? $typeID : null; - - $events = $this->eventService->getEvents($selectedId ? [$selectedId] : $ids); - $this->template->eventTypes = $eventTypes; - $this->template->selected = $selectedId; - $this->template->events = array_reverse($events); - } - - /** - * @throws AbortException - * @throws BadRequestException - * @throws \Throwable - */ - public function actionGetRawCalendar(): void - { - $calendar = $this->loadCalendar(); - if (!$calendar) { - $this->error('', 503); - } else { - $this->sendResponse(new CallbackResponse(function ($request, $response) use ($calendar) { - $response->setHeader('Content-Type', 'text/calendar'); - echo ($calendar); - })); - } + $this->template->events = array_reverse($this->eventService->getEvents([10])); } - /** - * @throws \Throwable - */ - private function loadCalendar(): string + public function renderSetkani(): void { - return $this->cache->load( - 'vyfuk.calender', - function (&$dependencies): string { - $dependencies[Cache::Expire] = time() + 24 * 60 * 60; - $curl = curl_init('https://drive.vyfuk.org/remote.php/dav/public-calendars/tLnfCNLzypBHHeEb?export'); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); - $res = curl_exec($curl); - curl_close($curl); - if (curl_getinfo($curl)['http_code'] != 200) { - throw new Exception('Vyfuk calendar failed to be downloaded'); - } - return $res; - } - ); + $this->template->events = array_reverse($this->eventService->getEvents([11, 12])); } } diff --git a/app/Modules/Vyfuk/DefaultModule/scripts/calendar-vyfuk.js b/app/Modules/Vyfuk/DefaultModule/scripts/calendar-vyfuk.js deleted file mode 100644 index 6fc972561..000000000 --- a/app/Modules/Vyfuk/DefaultModule/scripts/calendar-vyfuk.js +++ /dev/null @@ -1,30 +0,0 @@ -import { Calendar } from '@fullcalendar/core'; -import dayGridPlugin from '@fullcalendar/daygrid'; -import listPlugin from '@fullcalendar/list'; -import iCalendarPlugin from '@fullcalendar/icalendar' -import csLocale from '@fullcalendar/core/locales/cs'; -import bootstrap5Plugin from '@fullcalendar/bootstrap5'; - - -document.addEventListener('DOMContentLoaded', function () { - var calendarEl = document.getElementById('calendar'); - var calendar = new Calendar(calendarEl, { - plugins: [dayGridPlugin, iCalendarPlugin, listPlugin, bootstrap5Plugin], - locale: csLocale, - themeSystem: 'bootstrap5', - initialView: 'dayGridMonth', - headerToolbar: { - left: 'prev,next today', - center: 'title', - right: 'dayGridMonth,listYear' - }, - navLinks: false, - editable: false, - dayMaxEvents: true, - events: { - url: '/events/getrawcalendar', - format: 'ics' - }, - }); - calendar.render(); -}); diff --git a/app/Modules/Vyfuk/DefaultModule/templates/Events/calendar.latte b/app/Modules/Vyfuk/DefaultModule/templates/Events/calendar.latte deleted file mode 100644 index 66dcb8178..000000000 --- a/app/Modules/Vyfuk/DefaultModule/templates/Events/calendar.latte +++ /dev/null @@ -1,11 +0,0 @@ -{block title}Kalendář{/block} -{block scripts} - -{/block} -{block main} -
-
-
-
-
-{/block} diff --git a/app/Modules/Vyfuk/DefaultModule/templates/Events/dalsi.latte b/app/Modules/Vyfuk/DefaultModule/templates/Events/dalsi.latte new file mode 100644 index 000000000..c839b20a6 --- /dev/null +++ b/app/Modules/Vyfuk/DefaultModule/templates/Events/dalsi.latte @@ -0,0 +1,135 @@ +{block title}Další akce a soutěže{/block} +{block main} +
+
+ {ifset subtitle}
{include subtitle}
{/ifset} + {ifset title}

{include title}

{/ifset} +

+ Kromě akcí pořádaných Výfukem můžeme našim řešitelům a dalším zájemcům o přírodní vědy doporučit i další + podobné aktivity, do kterých se mohou v případě zájmu zapojit. +

+
+
+
+
+

Pikomat

+

+ Pikomat je matematický korespondenční seminář pro stejnou věkovou kategorii jako Výfuk. V průběhu + roku zveřejňuje šest sérií, nemá prázdninové série a má jinou strukturu akcí. Pokud máte mladší + sourozence nebo kamarády, můžete vyzkoušet Pikomat + Junior. +

+ + Více informací + +
+
+ + + +
+
+
+
+
+
+

Fyzikální olympiáda

+

+ Fyzikální olympiáda je předmětová soutěž pro všechny ročníky základních i středních škol. +

+ + Více informací + +
+
+ + + +
+
+
+
+
+
+

Astronomická olympiáda

+

+ Astronomická olympiáda je soutěž s úlohami z oboru astronomie a příbuzných oborů, která je rovněž + určena pro žáky základních i středních škol. +

+ + Více informací + +
+
+ + + +
+
+
+
+
+
+

Matematická olympiáda

+

+ Matematická olympiáda je předmětová soutěž pro všechny ročníky základních i středních škol. +

+ + Více informací + +
+
+ + + +
+
+
+
+
+
+

MaSo

+

+ MaSo je týmová matematická soutěž pro žáky šestých až devátých tříd základních škol a odpovídajících + ročníků víceletých gymnázií, která se ovšem na rozdíl od Náboje Junior koná dvakrát ročně. Také pravidla a + průběh jsou poněkud odlišné. +

+ + Více informací + +
+
+ + + +
+
+
+
+
+
+

FYKOS

+

+ FYKOS nabízí středoškolákům velmi podobné aktivity jako Výfuk. Pokud se do něj zapojíš, můžeš i na + střední škole v průběhu roku řešit šest sérií fyzikálních úloh a za odměnu jet na soustředění. Kromě toho FYKOS pravidelně + organizuje Fyziklání, Fyziklání Online, Fyzikální Náboj a DSEF. +

+ + Více informací + +
+
+ + + +
+
+
+
+{/block} \ No newline at end of file diff --git a/app/Modules/Vyfuk/DefaultModule/templates/Events/default.latte b/app/Modules/Vyfuk/DefaultModule/templates/Events/default.latte index e250f68a2..5095d01d3 100644 --- a/app/Modules/Vyfuk/DefaultModule/templates/Events/default.latte +++ b/app/Modules/Vyfuk/DefaultModule/templates/Events/default.latte @@ -4,30 +4,124 @@
{ifset subtitle}
{include subtitle}
{/ifset} {ifset title}

{include title}

{/ifset} -
-

- kalendář - {foreach $eventTypes as $key => $val} - {if $selected==$key} - {$val} - {else} - {$val} - {/if} - {/foreach} + Výfuk pro své řešitele organizuje každoročně několik akcí – letní tábor, jarní a podzimní setkání, zimní + víkendovku a Náboj Junior.

-
-

{$event->nameNew[$lang]}

-

- {$event->description[$lang]|noescape} -

-

- - Informace o akci - -

- {control gallery:randomLine "/media/photos/event/" . $event->eventId} +
+
+
+

Tábor

+

+ Letní tábor Výfuku organizujeme vždy přibližně v polovině letních prázdnin pro asi 30 řešitelů. Na + tábor zveme podle výsledků prvních sérií podle jistých pravidel. Na výfučím táboře účastníky čekají nejen klasické + táborové aktivity, tedy především různé hry, ale i spousta zajímavých fyzikálních přednášek a + experimentů. +

+ + Naše tábory + +
+
+ + + +
+
+
+
+
+
+
+
+

Setkání

+

+ Kromě letního tábora organizujeme pro naše řešitele v průběhu roku na jaře a na podzim dvě víkendová + setkání. O účasti na setkání nerozhoduje umístění ve Výfuku, pouze čas přihlášení. Účastní se + zpravidla kolem 50 řešitelů. Náplní setkání jsou přednášky od organizátorů i vědeckých pracovníků, + exkurze na zajímavá vědecká pracoviště a samozřejmě i množství her. +

+ + Naše setkání + +
+
+ + + +
+
+
+
+
+
+
+
+

Zimní víkendovka

+

+ Zimní víkendovka je nová výfučí akce plánovaná poprvé na začátek roku 2025. Svým formátem bude + připomínat setkání, ovšem s omezenější kapacitou a volnějším programem. Určitě nebudou chybět + přednášky doplněné spoustou prostoru pro hraní her a deskovek. Podrobnosti zveřejníme ke konci roku. +

+ {* + Naše setkání + *} +
+
+ {**} + + {**} +
+
+
+
+
+
+
+
+

Náboj Junior

+

+ Náboj Junior je soutěž pro čtyřčlenné týmy žáků druhého stupně základních škol a odpovídajících + ročníků víceletých gymnázií. Probíhá asi na dvaceti soutěžních místech po celé České republice a na + desítkách dalších v zahraničí. Jedná se o skvělou příležitost, jak si otestovat dovednosti osvojené + řešením Výfuku a vyzkoušet si řešení fyzikálních příkladů s dalšími kamarády. Pro účast v soutěži + není nutné být řešitelem Výfuku. +

+ + Stránky Náboje Junior + +
+
+ + + +
+
+
+
+
+
+
+
+

Další aktivity a soutěže

+

+ Kromě výše zmíněných akcí, které Výfuk pořádá, existuje množství dalších aktivit, které by naše + řešitele nebo jiné návštěvníky webu mohly zaujmout. Určitě neuděláš chybu, když jim dáš také šanci. + Se všemi níže uvedenými aktivitami mají naši organizátoři bohaté zkušenosti ze svých řešitelských + let a mohou je jednoznačně doporučit. +

+ + Více informací + +
+
+ + + +
+
-{/block} +{/block} \ No newline at end of file diff --git a/app/Modules/Vyfuk/DefaultModule/templates/Events/setkani.latte b/app/Modules/Vyfuk/DefaultModule/templates/Events/setkani.latte new file mode 100644 index 000000000..209b5376e --- /dev/null +++ b/app/Modules/Vyfuk/DefaultModule/templates/Events/setkani.latte @@ -0,0 +1,61 @@ +{block title}Setkání{/block} +{block main} +
+
+ {ifset subtitle}
{include subtitle}
{/ifset} + {ifset title}

{include title}

{/ifset} +
+ {foreach $events as $key => $event} + {if $event->begin->getTimestamp() >= time()} +
+

{$event->nameNew[$lang]}

+

+ {$event->description[$lang]|noescape} +

+

+ + Informace o akci + +

+ {control gallery:randomLine "/media/photos/event/" . $event->eventId} +
+ {/if} + {/foreach} +
+

+ Nestačí ti tábor? Nebo si chceš vyzkoušet, jak výfučí akce probíhají a co tě tam čeká? Tak s námi určitě jeď + na víkendové setkání řešitelů! +

+

+ Víkendová setkání jsou intenzivní akce, během kterých se snažíme našim řešitelům v omezeném čase předat to + nejlepší, co Výfuk může nabídnout. Můžeš se těšit na přednášky, exkurze na vědecká pracoviště a různé další + aktivity včetně her. Setkání je v neposlední řadě i skvělá příležitost, jak se seznámit s ostatními řešiteli + a poznat naživo organizátory. +

+

+ Setkání probíhají na jaře a na podzim. Setkání obyčejně začíná v pátek v podvečer a končí v neděli brzy + odpoledne. O účasti na setkání nerozhoduje tvoje umístění ve Výfuku, pouze čas přihlášení. V posledních + letech na jedno setkání přijede zpravidla kolem 50 řešitelů. +

+

+ Jestliže tě setkání zaujalo a zatím jsi na žádném nebyl, určitě se mrkni na fotky na našich sociálních + sítích, případně se na nás obrať s libovolným doplňujícím dotazem. +

+
+ + {foreach $events as $key => $event} + {if $event->begin->getTimestamp() < time()}
+

{$event->nameNew[$lang]}

+

+ {$event->description[$lang]|noescape} +

+

+ + Informace o akci + +

+ {control gallery:randomLine "/media/photos/event/" . $event->eventId} +
{/if} + {/foreach} +
+{/block} \ No newline at end of file diff --git a/app/Modules/Vyfuk/DefaultModule/templates/Events/tabor.latte b/app/Modules/Vyfuk/DefaultModule/templates/Events/tabor.latte new file mode 100644 index 000000000..6fb78f7e3 --- /dev/null +++ b/app/Modules/Vyfuk/DefaultModule/templates/Events/tabor.latte @@ -0,0 +1,63 @@ +{block title}Tábor{/block} +{block main} +
+
+ {ifset subtitle}
{include subtitle}
{/ifset} + {ifset title}

{include title}

{/ifset} +
+ {foreach $events as $key => $event} + {if $event->begin->getTimestamp() >= time()} +
+

{$event->nameNew[$lang]}

+

+ {$event->description[$lang]|noescape} +

+

+ + Informace o akci + +

+ {control gallery:randomLine "/media/photos/event/" . $event->eventId} +
+ {/if} + {/foreach} +
+

+ Chceš zažít fyziku tak jako nikdy předtím? Máš zájem se nejen něco naučit, ale i poznat podobně naladěné + kamarády a užít si při tom i klasické táborové aktivity? Potom jeď na letní tábor Výfuku! +

+

+ Letní tábor Výfuku je čtrnáct dní s perfektně vyladěným programem, během kterých se rozhodně nebudeš nudit. + Kromě přednášek a experimentů si dosyta užiješ také klasické táborové aktivity. Můžeš se těšit zejména na + spoustu denních i nočních her a výletů. To všechno můžeš zažít společně s dalšími účastníky a organizátory, + kteří tam budou po celou dobu pro tebe. +

+

+ Letní tábor se typicky koná v polovině letních prázdnin v nějakém malebném koutu České republiky, kde nám + dokážou poskytnout adekvátní zázemí. Spaní je vždy zajištěno na postelích ve zděné budově. Zveme na něj + podle výsledků prvních sérií podle jistých pravidel. Obecně ale + platí, že dostatečně motivovaní účastníci se na něj téměř vždy dostanou. Cena tábora se pro řešitele Výfuku + pohybuje kolem 6 000 Kč, zbytek nákladů hradí MFF UK. +

+

+ Pokud nad účastí na letním táboře Výfuku uvažuješ, určitě se podívej na fotky zde na webu nebo na našich + sociálních sítích. +

+
+ + {foreach $events as $key => $event} + {if $event->begin->getTimestamp() < time()}
+

{$event->nameNew[$lang]}

+

+ {$event->description[$lang]|noescape} +

+

+ + Informace o akci + +

+ {control gallery:randomLine "/media/photos/event/" . $event->eventId} +
{/if} + {/foreach} +
+{/block} \ No newline at end of file diff --git a/app/Renderers/templates/formRender.latte b/app/Renderers/templates/formRender.latte index 4dc3d9b8b..ceea67517 100644 --- a/app/Renderers/templates/formRender.latte +++ b/app/Renderers/templates/formRender.latte @@ -23,7 +23,7 @@ {default}Unknown {/switch} {else} - + {$item['control']->getCaption()} {/if}
{$item['control']->getOption('count')} diff --git a/package-lock.json b/package-lock.json index 4787d9fc0..80463f5ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,23 +9,17 @@ "@popperjs/core": "^2.9.2", "@types/photoswipe": "^4.1.2", "bootstrap": "^5.0.2", - "flag-icon-css": "^3.5.0", + "flag-icons": "^7.2.3", "photoswipe": "github:dimsemenov/photoswipe#v5-beta", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@fullcalendar/bootstrap5": "^6.1.10", - "@fullcalendar/core": "^6.1.10", - "@fullcalendar/daygrid": "^6.1.10", - "@fullcalendar/icalendar": "^6.1.10", - "@fullcalendar/list": "^6.1.10", "@types/bootstrap": "^5.2.10", "@types/react": "^17.0.36", "@types/react-dom": "^17.0.11", "bootstrap-icons": "^1.11.3", "css-loader": "^6.2.0", - "ical.js": "^1.5.0", "mini-css-extract-plugin": "^2.1.0", "resolve-url-loader": "^4.0.0", "sass": "^1.36.0", @@ -45,52 +39,6 @@ "node": ">=10.0.0" } }, - "node_modules/@fullcalendar/bootstrap5": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@fullcalendar/bootstrap5/-/bootstrap5-6.1.10.tgz", - "integrity": "sha512-hBJToRQqKiWFnt+KQjeSN5HkYN0UTvgFnSH0P88Pj26zl6CXargee8pGccLBbqBQtdCZhXYLX3QGPHStq7Ds7Q==", - "dev": true, - "peerDependencies": { - "@fullcalendar/core": "~6.1.10" - } - }, - "node_modules/@fullcalendar/core": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.10.tgz", - "integrity": "sha512-oTXGJSAGpCf1oY+CKp5qYjMHkJCPBkJ3SHitl63n8Q6xKeiwQ4EF6Au451euUovREwJpLmD1AyZrCnWmtB9AVg==", - "dev": true, - "dependencies": { - "preact": "~10.12.1" - } - }, - "node_modules/@fullcalendar/daygrid": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.10.tgz", - "integrity": "sha512-Z4GRm1IyHKgxXFTWGcEI0nTsvYOIkpE0aMt3/o3ER2SZkF+hfwcDFhtj0c9+WhMjXFIWYeoTnA9rUOY7Zl/nxA==", - "dev": true, - "peerDependencies": { - "@fullcalendar/core": "~6.1.10" - } - }, - "node_modules/@fullcalendar/icalendar": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@fullcalendar/icalendar/-/icalendar-6.1.10.tgz", - "integrity": "sha512-TXjtZhjYIQZjeqULRjwDd2VWlymdhJmltaN26YS0dcGuCrQhJJ3x/sODVbVaW1mvbMjnjXYUE8AhdpxvhYGIJg==", - "dev": true, - "peerDependencies": { - "@fullcalendar/core": "~6.1.10", - "ical.js": "^1.4.0" - } - }, - "node_modules/@fullcalendar/list": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.10.tgz", - "integrity": "sha512-WE4vuSUCzol4tJd0ZP0cNxeyRPaZcsVVYs2I3qdf3OZQkXwDCdSyWEz0Hluf+XZWcZXt21aEYKlxRjwUpQcf4Q==", - "dev": true, - "peerDependencies": { - "@fullcalendar/core": "~6.1.10" - } - }, "node_modules/@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -913,10 +861,11 @@ "node": ">=8" } }, - "node_modules/flag-icon-css": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/flag-icon-css/-/flag-icon-css-3.5.0.tgz", - "integrity": "sha512-pgJnJLrtb0tcDgU1fzGaQXmR8h++nXvILJ+r5SmOXaaL/2pocunQo2a8TAXhjQnBpRLPtZ1KCz/TYpqeNuE2ew==" + "node_modules/flag-icons": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/flag-icons/-/flag-icons-7.2.3.tgz", + "integrity": "sha512-X2gUdteNuqdNqob2KKTJTS+ZCvyWeLCtDz9Ty8uJP17Y4o82Y+U/Vd4JNrdwTAjagYsRznOn9DZ+E/Q52qbmqg==", + "license": "MIT" }, "node_modules/fsevents": { "version": "2.3.2", @@ -1004,12 +953,6 @@ "node": ">=10.17.0" } }, - "node_modules/ical.js": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ical.js/-/ical.js-1.5.0.tgz", - "integrity": "sha512-7ZxMkogUkkaCx810yp0ZGKvq1ZpRgJeornPttpoxe6nYZ3NLesZe1wWMXDdwTkj/b5NtXT+Y16Aakph/ao98ZQ==", - "dev": true - }, "node_modules/icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", @@ -1613,16 +1556,6 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/preact": { - "version": "10.12.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", - "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -2388,43 +2321,6 @@ "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", "dev": true }, - "@fullcalendar/bootstrap5": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@fullcalendar/bootstrap5/-/bootstrap5-6.1.10.tgz", - "integrity": "sha512-hBJToRQqKiWFnt+KQjeSN5HkYN0UTvgFnSH0P88Pj26zl6CXargee8pGccLBbqBQtdCZhXYLX3QGPHStq7Ds7Q==", - "dev": true, - "requires": {} - }, - "@fullcalendar/core": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.10.tgz", - "integrity": "sha512-oTXGJSAGpCf1oY+CKp5qYjMHkJCPBkJ3SHitl63n8Q6xKeiwQ4EF6Au451euUovREwJpLmD1AyZrCnWmtB9AVg==", - "dev": true, - "requires": { - "preact": "~10.12.1" - } - }, - "@fullcalendar/daygrid": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.10.tgz", - "integrity": "sha512-Z4GRm1IyHKgxXFTWGcEI0nTsvYOIkpE0aMt3/o3ER2SZkF+hfwcDFhtj0c9+WhMjXFIWYeoTnA9rUOY7Zl/nxA==", - "dev": true, - "requires": {} - }, - "@fullcalendar/icalendar": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@fullcalendar/icalendar/-/icalendar-6.1.10.tgz", - "integrity": "sha512-TXjtZhjYIQZjeqULRjwDd2VWlymdhJmltaN26YS0dcGuCrQhJJ3x/sODVbVaW1mvbMjnjXYUE8AhdpxvhYGIJg==", - "dev": true, - "requires": {} - }, - "@fullcalendar/list": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.10.tgz", - "integrity": "sha512-WE4vuSUCzol4tJd0ZP0cNxeyRPaZcsVVYs2I3qdf3OZQkXwDCdSyWEz0Hluf+XZWcZXt21aEYKlxRjwUpQcf4Q==", - "dev": true, - "requires": {} - }, "@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -3076,10 +2972,10 @@ "path-exists": "^4.0.0" } }, - "flag-icon-css": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/flag-icon-css/-/flag-icon-css-3.5.0.tgz", - "integrity": "sha512-pgJnJLrtb0tcDgU1fzGaQXmR8h++nXvILJ+r5SmOXaaL/2pocunQo2a8TAXhjQnBpRLPtZ1KCz/TYpqeNuE2ew==" + "flag-icons": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/flag-icons/-/flag-icons-7.2.3.tgz", + "integrity": "sha512-X2gUdteNuqdNqob2KKTJTS+ZCvyWeLCtDz9Ty8uJP17Y4o82Y+U/Vd4JNrdwTAjagYsRznOn9DZ+E/Q52qbmqg==" }, "fsevents": { "version": "2.3.2", @@ -3142,12 +3038,6 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, - "ical.js": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ical.js/-/ical.js-1.5.0.tgz", - "integrity": "sha512-7ZxMkogUkkaCx810yp0ZGKvq1ZpRgJeornPttpoxe6nYZ3NLesZe1wWMXDdwTkj/b5NtXT+Y16Aakph/ao98ZQ==", - "dev": true - }, "icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", @@ -3569,12 +3459,6 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "preact": { - "version": "10.12.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", - "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", - "dev": true - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", diff --git a/package.json b/package.json index 9494710fb..cea4a7761 100644 --- a/package.json +++ b/package.json @@ -6,17 +6,11 @@ "clear_latte_cache": "rm -r temp/cache/latte" }, "devDependencies": { - "@fullcalendar/bootstrap5": "^6.1.10", - "@fullcalendar/core": "^6.1.10", - "@fullcalendar/daygrid": "^6.1.10", - "@fullcalendar/icalendar": "^6.1.10", - "@fullcalendar/list": "^6.1.10", "@types/bootstrap": "^5.2.10", "@types/react": "^17.0.36", "@types/react-dom": "^17.0.11", "bootstrap-icons": "^1.11.3", "css-loader": "^6.2.0", - "ical.js": "^1.5.0", "mini-css-extract-plugin": "^2.1.0", "resolve-url-loader": "^4.0.0", "sass": "^1.36.0", @@ -30,7 +24,7 @@ "@popperjs/core": "^2.9.2", "@types/photoswipe": "^4.1.2", "bootstrap": "^5.0.2", - "flag-icon-css": "^3.5.0", + "flag-icons": "^7.2.3", "photoswipe": "github:dimsemenov/photoswipe#v5-beta", "react": "^17.0.2", "react-dom": "^17.0.2" diff --git a/webpack.config.js b/webpack.config.js index b02b83540..7b1b38b47 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -84,7 +84,6 @@ const vyfukConfiguration = { ...commonConfiguration, entry: { main: path.resolve(__dirname, './app/main-vyfuk.js'), - calendar: path.resolve(__dirname, './app/Modules/Vyfuk/DefaultModule/scripts/calendar-vyfuk.js') }, output: { path: path.resolve(__dirname, './www/vyfuk/assets'), diff --git a/www/vyfuk/images/logos/AO.jpg b/www/vyfuk/images/logos/AO.jpg new file mode 100644 index 000000000..9e3a02e21 Binary files /dev/null and b/www/vyfuk/images/logos/AO.jpg differ diff --git a/www/vyfuk/images/logos/FO.svg b/www/vyfuk/images/logos/FO.svg new file mode 100644 index 000000000..579d39e3c --- /dev/null +++ b/www/vyfuk/images/logos/FO.svg @@ -0,0 +1,86 @@ + + diff --git a/www/vyfuk/images/logos/MO.svg b/www/vyfuk/images/logos/MO.svg new file mode 100644 index 000000000..9ddbb01d6 --- /dev/null +++ b/www/vyfuk/images/logos/MO.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/www/vyfuk/images/logos/fykos.png b/www/vyfuk/images/logos/fykos.png new file mode 100644 index 000000000..17c0b37fd Binary files /dev/null and b/www/vyfuk/images/logos/fykos.png differ diff --git a/www/vyfuk/images/logos/maso.svg b/www/vyfuk/images/logos/maso.svg new file mode 100644 index 000000000..d8d302408 --- /dev/null +++ b/www/vyfuk/images/logos/maso.svg @@ -0,0 +1,183 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/www/vyfuk/images/logos/pikomat.png b/www/vyfuk/images/logos/pikomat.png new file mode 100644 index 000000000..8386683c3 Binary files /dev/null and b/www/vyfuk/images/logos/pikomat.png differ diff --git a/www/vyfuk/images/setkani.jpg b/www/vyfuk/images/setkani.jpg new file mode 100644 index 000000000..3ace62a8b Binary files /dev/null and b/www/vyfuk/images/setkani.jpg differ diff --git a/www/vyfuk/images/tabor.jpg b/www/vyfuk/images/tabor.jpg new file mode 100644 index 000000000..b35bf1cb0 Binary files /dev/null and b/www/vyfuk/images/tabor.jpg differ diff --git a/www/vyfuk/photos/.gitignore b/www/vyfuk/photos/.gitignore deleted file mode 100644 index 005717ead..000000000 --- a/www/vyfuk/photos/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore