feat(cms): U1 content model + migration scaffold for blog/news/events
Establish content/ as the source of truth for editable content and back-fill it from the existing detail pages, per U1 of the no-code CMS plan. - docs/content-model.md: front-matter schema (EN/MK/SI), body_format html-vs-markdown, content/events -> projects/ output mapping. - tools/migrate_pages_to_content.py: bs4/yaml extractor; pulls title, subtitle, category, ISO date (from ARTICLE_DATES), hero image+caption; preserves the article body PLUS trailing sibling sections (event galleries) verbatim as body_format: html. Reports unparseable pages instead of emitting half-formed files. - content/**: 51 files (17 entries x EN/MK/SI), 0 skips. - tools/tests/test_migrate_roundtrip.py: 12 characterization tests (structured fields, news-has-no-subtitle, event gallery/lightbox preserved, Cyrillic UTF-8 round-trip, every page parses). - .gitignore: ignore __pycache__/ and *.pyc. U1 is unblocked and standalone. U2 (render content -> pages) is next; U5/U6 remain blocked on Open Question Q1 (Gitea<->GitHub topology). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
6204db5f0c
commit
9ddd0f88ef
55 files changed
+4572
No files matched your search
@@ -0,0 +1,62 @@
|
||||
---
|
||||
type: event
|
||||
slug: watching-handball-together-in-slovenia
|
||||
lang: en
|
||||
source_folder: projects
|
||||
title: Cheering for Macedonia, Watching Handball Together in Slovenia
|
||||
subtitle: From Ljubljana to Maribor, Macedonian students filled cafés with chants, flags, and laughter while watching the national handball team.
|
||||
date: '2025-01-25'
|
||||
date_line: Published on January 25, 2025
|
||||
hero:
|
||||
src: /images/handball-2025-1.webp
|
||||
alt: Fan atmosphere while watching handball in Maribor
|
||||
width: '720'
|
||||
height: '480'
|
||||
body_format: html
|
||||
---
|
||||
<div class="article-body">
|
||||
<p>In January 2025, Macedonian students in Ljubljana and Maribor turned cafés into fan zones, gathering to cheer, sing, and share the thrill of handball, proving that even far from home, the spirit of Macedonia lives loud.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="A snapshot of the fan atmosphere in Maribor." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-2.webp" width="720"/>
|
||||
<figcaption>A snapshot of the fan atmosphere in Maribor.</figcaption>
|
||||
</figure>
|
||||
<h2 id="section-1">Two cities, one spirit</h2>
|
||||
<p>This winter, the World Handball Championship brought more than just matches on screen. It brought Macedonian students together. In Ljubljana, the initiative came from a student, Ljuben Najdovski, who suggested that MSOS host a group watch of the match against Guinea held on January 19, 2025. With quick organization and support from the local café Lepa Žoga, a space was reserved, sign-ups were collected, and soon enough 25 students filled the place with flags, chants, and laughter.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Fans gathered at the Ljubljana base to cheer for Macedonia together." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-3.webp" width="720"/>
|
||||
<figcaption>Fans gathered at the Ljubljana base to cheer for Macedonia together.</figcaption>
|
||||
</figure>
|
||||
<p>Just a week later, the energy carried over to Maribor, where the local MSOS team set up their own fan gathering for the match against France held on January 25, 2025. Hosted at café CLC in the city center, the event welcomed 35 students and friends, complete with snacks, music, and a proper fan atmosphere. Even though the result on the scoreboard was not in Macedonia’s favor, the night ended in celebration, with new friendships and even an after-gathering that lasted long beyond the final whistle.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Fans gathered at the Maribor base to cheer for Macedonia together." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-4.webp" width="720"/>
|
||||
<figcaption>Fans gathered at the Maribor base to cheer for Macedonia together.</figcaption>
|
||||
</figure>
|
||||
<h2 id="section-2">More than just watching the game</h2>
|
||||
<p>What made these events special was not only the sport. It was the way students created a piece of home abroad: waving flags, sharing drinks, shouting "Ајде Македонија!" at the screen, and laughing together at missed shots or brilliant saves. For newcomers, it was a chance to instantly feel part of a community. For others, it was a reminder that even hundreds of kilometers from home, they were not cheering alone.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Two of our MSOS Maribor organizers enjoying the evening at the fan event." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-5.webp" width="720"/>
|
||||
<figcaption>Two of our MSOS Maribor organizers enjoying the evening at the fan event.</figcaption>
|
||||
</figure>
|
||||
<h2 id="section-3">A new tradition in the making</h2>
|
||||
<p>From Ljubljana to Maribor, these watch parties showed that supporting the national team can be more than sports. It is a way to build friendships, strengthen community, and carry a piece of Macedonia wherever we go. With each match, the energy grows, and one thing is certain: these gatherings will continue to be part of the MSOS story.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="A snapshot of our team in Maribor." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-6.webp" width="720"/>
|
||||
<figcaption>A snapshot of our team in Maribor.</figcaption>
|
||||
</figure>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="A snapshot of our team in Ljubljana." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-7.webp" width="720"/>
|
||||
<figcaption>A snapshot of our team in Ljubljana.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
<section class="event-gallery">
|
||||
<h2 class="event-gallery-title">Photos from the event</h2>
|
||||
<div class="event-gallery-grid js-lightbox">
|
||||
<button class="eg-thumb" data-caption="Watching Handball Together in Slovenia" data-full="../../../images/handball-2025-1.webp" type="button"><img alt="Watching Handball Together in Slovenia, photo 1" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-1.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Watching Handball Together in Slovenia" data-full="../../../images/handball-2025-2.webp" type="button"><img alt="Watching Handball Together in Slovenia, photo 2" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-2.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Watching Handball Together in Slovenia" data-full="../../../images/handball-2025-3.webp" type="button"><img alt="Watching Handball Together in Slovenia, photo 3" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-3.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Watching Handball Together in Slovenia" data-full="../../../images/handball-2025-4.webp" type="button"><img alt="Watching Handball Together in Slovenia, photo 4" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-4.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Watching Handball Together in Slovenia" data-full="../../../images/handball-2025-5.webp" type="button"><img alt="Watching Handball Together in Slovenia, photo 5" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-5.webp" width="720"/><span class="eg-more">+2</span></button>
|
||||
<button class="eg-thumb is-hidden" data-caption="Watching Handball Together in Slovenia" data-full="../../../images/handball-2025-6.webp" type="button"><img alt="Watching Handball Together in Slovenia, photo 6" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-6.webp" width="720"/></button>
|
||||
<button class="eg-thumb is-hidden" data-caption="Watching Handball Together in Slovenia" data-full="../../../images/handball-2025-7.webp" type="button"><img alt="Watching Handball Together in Slovenia, photo 7" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-7.webp" width="720"/></button>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
type: event
|
||||
slug: watching-handball-together-in-slovenia
|
||||
lang: mk
|
||||
source_folder: projects
|
||||
title: Навивање за Македонија, заедничко гледање ракомет во Словенија
|
||||
subtitle: Од Љубљана до Марибор, македонските студенти ги наполнија кафулињата со навивачки извици, знамиња и смеа додека ја гледаа ракометната репрезентација.
|
||||
date: '2025-01-25'
|
||||
date_line: Објавено на 25 јануари 2025
|
||||
hero:
|
||||
src: /images/handball-2025-1.webp
|
||||
alt: Навивачка атмосфера додека се гледа ракомет во Марибор
|
||||
width: '720'
|
||||
height: '480'
|
||||
body_format: html
|
||||
---
|
||||
<div class="article-body">
|
||||
<p>Во јануари 2025 година, македонските студенти во Љубљана и Марибор ги претворија кафулињата во навивачки зони, собирајќи се да навиваат, пеат и ја споделат возбудата од ракометот, докажувајќи дека дури и далеку од дома, духот на Македонија живее гласно.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Момент од навивачката атмосфера во Марибор." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-2.webp" width="720"/>
|
||||
<figcaption>Момент од навивачката атмосфера во Марибор.</figcaption>
|
||||
</figure>
|
||||
<h2 id="section-1">Два града, еден дух</h2>
|
||||
<p>Оваа зима, Светското првенство во ракомет донесе повеќе од само натпревари на екран. Ги собра македонските студенти заедно. Во Љубљана, иницијативата дојде од студентот Љубен Најдовски, кој предложи МСОС да организира групно гледање на натпреварот против Гвинеја на 19 јануари 2025 година. Со брза организација и поддршка од локалното кафуле Lepa Žoga, беше резервиран простор, беа собрани пријави и наскоро 25 студенти го наполнија местото со знамиња, извици и смеа.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Навивачите собрани во базата во Љубљана навиваат заедно за Македонија." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-3.webp" width="720"/>
|
||||
<figcaption>Навивачите собрани во базата во Љубљана навиваат заедно за Македонија.</figcaption>
|
||||
</figure>
|
||||
<p>Само една недела подоцна, енергијата се пренесе во Марибор, каде што локалниот тим на МСОС организираше свое навивачко собирање за натпреварот против Франција на 25 јануари 2025 година. Во кафулето CLC во центарот на градот, настанот собра 35 студенти и пријатели, со грицки, музика и вистинска навивачка атмосфера. И покрај тоа што резултатот на семафорот не беше во корист на Македонија, вечерта заврши со славење, нови пријателства и дури и дружба по настанот што траеше долго по последниот свирок.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Навивачите собрани во базата во Марибор навиваат заедно за Македонија." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-4.webp" width="720"/>
|
||||
<figcaption>Навивачите собрани во базата во Марибор навиваат заедно за Македонија.</figcaption>
|
||||
</figure>
|
||||
<h2 id="section-2">Повеќе од само гледање на натпреварот</h2>
|
||||
<p>Тоа што ги направи овие настани посебни не беше само спортот. Беше начинот на кој студентите создадоа парче дом во странство: мавтање со знамиња, споделување пијалаци, извикување „Ајде Македонија!“ кон екранот и заеднички смеа при промашени шутови или брилијантни одбрани. За новодојдените, тоа беше можност веднаш да се почувствуваат дел од заедницата. За другите, тоа беше потсетник дека дури и стотици километри од дома, не навиваа сами.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Двајца наши организатори од МСОС Марибор уживаат во вечерта на навивачкиот настан." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-5.webp" width="720"/>
|
||||
<figcaption>Двајца наши организатори од МСОС Марибор уживаат во вечерта на навивачкиот настан.</figcaption>
|
||||
</figure>
|
||||
<h2 id="section-3">Нова традиција во создавање</h2>
|
||||
<p>Од Љубљана до Марибор, овие навивачки собири покажаа дека поддршката на репрезентацијата може да биде повеќе од спорт. Тоа е начин да се градат пријателства, да се зајакне заедницата и да се носи парче Македонија каде и да одиме. Со секој натпревар, енергијата расте, и едно е сигурно: овие собири ќе продолжат да бидат дел од приказната на МСОС.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Момент од нашиот тим во Марибор." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-6.webp" width="720"/>
|
||||
<figcaption>Момент од нашиот тим во Марибор.</figcaption>
|
||||
</figure>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Момент од нашиот тим во Љубљана." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-7.webp" width="720"/>
|
||||
<figcaption>Момент од нашиот тим во Љубљана.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
<section class="event-gallery">
|
||||
<h2 class="event-gallery-title">Фотографии од настанот</h2>
|
||||
<div class="event-gallery-grid js-lightbox">
|
||||
<button class="eg-thumb" data-caption="Заедничко гледање ракомет во Словенија" data-full="../../../images/handball-2025-1.webp" type="button"><img alt="Заедничко гледање ракомет во Словенија, photo 1" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-1.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Заедничко гледање ракомет во Словенија" data-full="../../../images/handball-2025-2.webp" type="button"><img alt="Заедничко гледање ракомет во Словенија, photo 2" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-2.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Заедничко гледање ракомет во Словенија" data-full="../../../images/handball-2025-3.webp" type="button"><img alt="Заедничко гледање ракомет во Словенија, photo 3" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-3.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Заедничко гледање ракомет во Словенија" data-full="../../../images/handball-2025-4.webp" type="button"><img alt="Заедничко гледање ракомет во Словенија, photo 4" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-4.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Заедничко гледање ракомет во Словенија" data-full="../../../images/handball-2025-5.webp" type="button"><img alt="Заедничко гледање ракомет во Словенија, photo 5" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-5.webp" width="720"/><span class="eg-more">+2</span></button>
|
||||
<button class="eg-thumb is-hidden" data-caption="Заедничко гледање ракомет во Словенија" data-full="../../../images/handball-2025-6.webp" type="button"><img alt="Заедничко гледање ракомет во Словенија, photo 6" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-6.webp" width="720"/></button>
|
||||
<button class="eg-thumb is-hidden" data-caption="Заедничко гледање ракомет во Словенија" data-full="../../../images/handball-2025-7.webp" type="button"><img alt="Заедничко гледање ракомет во Словенија, photo 7" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-7.webp" width="720"/></button>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
type: event
|
||||
slug: watching-handball-together-in-slovenia
|
||||
lang: si
|
||||
source_folder: projects
|
||||
title: Navijanje za Makedonijo, skupno gledanje rokometa v Sloveniji
|
||||
subtitle: Od Ljubljane do Maribora so makedonski študenti napolnili kavarne z navijaškimi vzkliki, zastavami in smehom med gledanjem rokometne reprezentance.
|
||||
date: '2025-01-25'
|
||||
date_line: Objavljeno 25. januarja 2025
|
||||
hero:
|
||||
src: /images/handball-2025-1.webp
|
||||
alt: Navijaško vzdušje med gledanjem rokometa v Mariboru
|
||||
width: '720'
|
||||
height: '480'
|
||||
body_format: html
|
||||
---
|
||||
<div class="article-body">
|
||||
<p>Januarja 2025 so makedonski študenti v Ljubljani in Mariboru kavarne spremenili v navijaške cone, kjer so se zbrali, da bi navijali, peli in delili vznemirjenje ob rokometu, s čimer so dokazali, da tudi daleč od doma makedonski duh živi glasno.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Utrinek navijaškega vzdušja v Mariboru." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-2.webp" width="720"/>
|
||||
<figcaption>Utrinek navijaškega vzdušja v Mariboru.</figcaption>
|
||||
</figure>
|
||||
<h2 id="section-1">Dve mesti, en duh</h2>
|
||||
<p>To zimo je svetovno prvenstvo v rokometu prineslo več kot le tekme na zaslonu. Povezalo je makedonske študente. V Ljubljani je pobuda prišla od študenta Ljubena Najdovskega, ki je predlagal, naj MŠOS pripravi skupinski ogled tekme proti Gvineji 19. januarja 2025. S hitro organizacijo in podporo lokalne kavarne Lepa Žoga je bil rezerviran prostor, zbrane so bile prijave in kmalu je 25 študentov napolnilo prostor z zastavami, vzkliki in smehom.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Navijači, zbrani na ljubljanski bazi, skupaj navijajo za Makedonijo." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-3.webp" width="720"/>
|
||||
<figcaption>Navijači, zbrani na ljubljanski bazi, skupaj navijajo za Makedonijo.</figcaption>
|
||||
</figure>
|
||||
<p>Le teden dni pozneje se je energija prenesla v Maribor, kjer je lokalna ekipa MŠOS pripravila svoje navijaško srečanje za tekmo proti Franciji 25. januarja 2025. V kavarni CLC v središču mesta se je zbralo 35 študentov in prijateljev, s prigrizki, glasbo in pravim navijaškim vzdušjem. Čeprav rezultat na semaforju ni bil naklonjen Makedoniji, se je večer končal s praznovanjem, novimi prijateljstvi in celo druženjem po dogodku, ki je trajalo še dolgo po zadnjem žvižgu.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Navijači, zbrani na mariborski bazi, skupaj navijajo za Makedonijo." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-4.webp" width="720"/>
|
||||
<figcaption>Navijači, zbrani na mariborski bazi, skupaj navijajo za Makedonijo.</figcaption>
|
||||
</figure>
|
||||
<h2 id="section-2">Več kot le gledanje tekme</h2>
|
||||
<p>Tisto, kar je te dogodke naredilo posebne, ni bil le šport. Bil je način, kako so študenti v tujini ustvarili košček doma: mahanje z zastavami, deljenje pijače, vzkliki »Ајде Македонија!« proti zaslonu in skupen smeh ob zgrešenih strelih ali izjemnih obrambah. Za novince je bila to priložnost, da se v hipu počutijo del skupnosti. Za druge je bil to opomnik, da tudi na stotine kilometrov od doma niso navijali sami.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Dva naša organizatorja MŠOS Maribor uživata na navijaškem večeru." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-5.webp" width="720"/>
|
||||
<figcaption>Dva naša organizatorja MŠOS Maribor uživata na navijaškem večeru.</figcaption>
|
||||
</figure>
|
||||
<h2 id="section-3">Nastajajoča nova tradicija</h2>
|
||||
<p>Od Ljubljane do Maribora so ta navijaška srečanja pokazala, da je podpiranje reprezentance lahko več kot šport. Je način za sklepanje prijateljstev, krepitev skupnosti in nošenje koščka Makedonije, kamor koli gremo. Z vsako tekmo energija raste in eno je gotovo: ta srečanja bodo še naprej del zgodbe MŠOS.</p>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Utrinek naše ekipe v Mariboru." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-6.webp" width="720"/>
|
||||
<figcaption>Utrinek naše ekipe v Mariboru.</figcaption>
|
||||
</figure>
|
||||
<figure class="article-inline-image">
|
||||
<img alt="Utrinek naše ekipe v Ljubljani." decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-7.webp" width="720"/>
|
||||
<figcaption>Utrinek naše ekipe v Ljubljani.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
<section class="event-gallery">
|
||||
<h2 class="event-gallery-title">Fotografije z dogodka</h2>
|
||||
<div class="event-gallery-grid js-lightbox">
|
||||
<button class="eg-thumb" data-caption="Skupno gledanje rokometa v Sloveniji" data-full="../../../images/handball-2025-1.webp" type="button"><img alt="Skupno gledanje rokometa v Sloveniji, photo 1" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-1.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Skupno gledanje rokometa v Sloveniji" data-full="../../../images/handball-2025-2.webp" type="button"><img alt="Skupno gledanje rokometa v Sloveniji, photo 2" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-2.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Skupno gledanje rokometa v Sloveniji" data-full="../../../images/handball-2025-3.webp" type="button"><img alt="Skupno gledanje rokometa v Sloveniji, photo 3" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-3.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Skupno gledanje rokometa v Sloveniji" data-full="../../../images/handball-2025-4.webp" type="button"><img alt="Skupno gledanje rokometa v Sloveniji, photo 4" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-4.webp" width="720"/></button>
|
||||
<button class="eg-thumb" data-caption="Skupno gledanje rokometa v Sloveniji" data-full="../../../images/handball-2025-5.webp" type="button"><img alt="Skupno gledanje rokometa v Sloveniji, photo 5" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-5.webp" width="720"/><span class="eg-more">+2</span></button>
|
||||
<button class="eg-thumb is-hidden" data-caption="Skupno gledanje rokometa v Sloveniji" data-full="../../../images/handball-2025-6.webp" type="button"><img alt="Skupno gledanje rokometa v Sloveniji, photo 6" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-6.webp" width="720"/></button>
|
||||
<button class="eg-thumb is-hidden" data-caption="Skupno gledanje rokometa v Sloveniji" data-full="../../../images/handball-2025-7.webp" type="button"><img alt="Skupno gledanje rokometa v Sloveniji, photo 7" decoding="async" height="480" loading="lazy" src="../../../images/handball-2025-7.webp" width="720"/></button>
|
||||
</div>
|
||||
</section>
|
||||
Reference in new issue
Block a user