1<!DOCTYPE html> 2<html prefix="og: http://ogp.me/ns#"> 3<head> 4 5 <!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 5-6
5 6 <script async src="https://www.googletagmanager.com/gtag/js?id=
6G-8XGQPP27HQ
vendor: 13 bytes, lines 6-7
6"></script> 7
7<script> 8
vendor: 134 bytes, lines 8-12
8window.dataLayer = window.dataLayer || []; 9 function gtag(){dataLayer.push(arguments);} 10 gtag('js', new Date()); 11 12 gtag('config', '
12G-8XGQPP27HQ
vendor: 5 bytes, lines 12-13
12'); 13
13</script>
13 14 15
15<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1914100961537914" 16 crossorigin="anonymous"></script>
16 17 18
18<script> 19 if (localStorage.getItem('darkmode') === '1') { 20 document.documentElement.classList.add('darkmode'); 21 } 22 </script>
22 23 24 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 25 <meta http-equiv="content-language" content="cs" /> 26 27 <meta name="keywords" content="plzen, plzeň, zprávy, aktuality, novinky, události, kultura, sport, region, informace, město plzeň, plzenský kraj, dění" /> 28 29 <meta name="description" content="Aktuální zprávy a novinky z Plzně a okolí. Sleduj události, kulturu, sport i dění ve městě na jednom místě na Plzen.cz" /> 30 31 <meta name="robots" content="index, follow, max-image-preview:large" /> 32 <meta name="googlebot-news" content="index, follow" /> 33 34 <meta charset="utf-8" /> 35 <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 36 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 37 <meta property="og:site_name" content="plzen.cz" /> 38 <meta property="og:locale" content="cs_cz" /> 39 40 <meta name="theme-color" content="#c70005" /> 41 <meta name="msapplication-navbutton-color" content="#c70005" /> 42 <meta name="mobile-web-app-capable" content="yes" /> 43 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> 44 45 <link rel="icon" type="image/x-icon" href="/favicon.ico"> 46 47 <title>Aktuální zprávy dne | Aktuality | Plzeň.cz</title> 48 49 50 51 <meta property="og:title" content="Aktuální zprávy dne | Aktuality | Plzeň.cz" /> 52 <meta property="og:type" content="website" /> 53 <meta property="og:description" content="Aktuální zprávy a novinky z Plzně a okolí. Sleduj události, kulturu, sport i dění ve městě na jednom místě na Plzen.cz" /> 54 <meta property="og:image" content="https://plzencz.b-cdn.net/homecover/plzen-og-v2.jpg" /> 55 <meta property="og:url" content="https://www.plzen.cz/Aktualne" /> 56 57 <link rel="canonical" href="https://www.plzen.cz/Aktualne" /> 58 59 60
60<script type="application/ld+json"> 61 {"@context":"https://schema.org","@type":"NewsMediaOrganization","@id":"https://www.plzen.cz/#organization","name":"Plzen.cz","url":"https://www.plzen.cz","logo":{"@type":"ImageObject","url":"https://www.plzen.cz/images/plzencz-logo.png","width":512,"height":512},"areaServed":{"@type":"AdministrativeArea","name":"PlzeÅský kraj"},"publishingPrinciples":"https://www.plzen.cz/redakce","sameAs":["https://www.wikidata.org/wiki/Q138637290","https://www.facebook.com/tvzak","https://www.youtube.com/televizezak"]} 62 </script>
62 63 64 65 66 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Google+Sans:100,300,400,500,700,900,100i,300i,400i,500i,700i,900i&subset=latin-ext"> 67 68
68<script type='text/javascript' src='https://platform-api.sharethis.com/js/sharethis.js#property=63fc60b1b0cf820012575ac1&product=sop' async='async'></script>
68 69 70 <link href="/css/app.min.css?=sth68g2xz" rel="stylesheet"> 71 <link href="/css/fancybox.css" rel="stylesheet"> 72 <link href="https://vjs.zencdn.net/8.0.4/video-js.css" rel="stylesheet" /> 73 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.min.css"> 74 <link href="/css/CookieConsent.css?=v26" rel="stylesheet"> 75 <link href="/webfonts/fontawesome-6.5.1/css/all.min.css" rel="stylesheet"> 76 77 <link href="/css/plzen.min.css?v=hJGUH79CXJp-RcrQOb0V_FWjKFKvcYmjy703sReQHhQ" rel="stylesheet"> 78 79
79<script src="/js/jquery.min.js"></script>
79 80 81
81<script src="https://ssp.seznam.cz/static/js/ssp.js"></script>
81 82 83</head> 84 85<body> 86 <div class="d-flex justify-content-center branding desktop-only" id="branding-rotation" 87 data-campaign-id=""> 88 <div class="brand-w2k"></div> 89</div>
90<script src="/js/branding.js?v=OjbR2Ek28HpY6JrUzQcpRR_Hj7zGAHjedNcqKtJY7vI" defer></script>
90 91 92 93<header class="header-area"> 94 95 <div class="header-navbar-bottom pt-2 pt-lg-0"> 96 97 <div class="themeix-menu-selector px12"> 98 99 <nav class="navbar navbar-expand-lg"> 100 <div class="collapse navbar-collapse" id="main_nav" style="display: block;"> 101 102 <a href="/"> 103 <img class="nav-brand-logo" src="/images/plzencz-wlogo-w.svg"> 104 <img class="nav-brand-logo-mobile" src="/images/plzencz-logo.svg"> 105 </a> 106 <img class="desktop-only my-auto nav-tube" src="/images/tube.svg"> 107 108 <div class="desktop-nav"> 109 110 <ul class="navbar-nav me-auto"> 111 <li class="nav-item hl noselect dropdown"> 112 <a class="nav-link dropdown-toggle hand" href="/Zpravodajstvi">ZpravodajstvÃ</a> 113 <div class="dropped-nav"> 114 <div class="region-select"> 115 <a class="dropdown-item" href="/Aktualne" alt="AktuálnÄ">AktuálnÄ</a> 116 <a class="dropdown-item" href="/z-Plzne" alt="Z PlznÄ">Z PlznÄ</a> 117 <a class="dropdown-item" href="/politika" alt="Politika">Politika</a> 118 <a class="dropdown-item" href="/z-kraje" alt="Z kraje">Z kraje</a> 119 <a class="dropdown-item" href="/z-regionu" alt="Z regionů">Z regionů</a> 120 </div> 121 </div> 122 </li> 123 <li class="nav-item"> 124 <a class="nav-link nav-link-static" href="/kultura" alt="Kultura"> Kultura</a> 125 </li> 126 <li class="nav-item"> 127 <a class="nav-link nav-link-static" href="/sport" alt="Sport"> Sport</a> 128 </li> 129 <li class="nav-item"> 130 <a class="nav-link nav-link-static" href="/video" alt="Video"> Video</a> 131 </li> 132 <li class="nav-item"> 133 <a class="nav-link nav-link-static" href="/doprava" alt="Doprava"> Doprava</a> 134 </li> 135 <li class="nav-item"> 136 <a class="nav-link nav-link-static" href="/krimi" alt="Krimi"> Krimi</a> 137 </li> 138 <li class="nav-item"> 139 <a class="nav-link nav-link-static" href="/lifestyle" alt="Lifestyle"> Lifestyle</a> 140 </li> 141 <li class="nav-item"> 142 <a class="nav-link nav-link-static" href="/Webkamera" alt="Webkamera">Webkamera</a> 143 </li> 144 </ul> 145 </div> 146 </div> 147 <div class="social"> 148 <a href="https://www.facebook.com/tvzak" target="_blank"><img src="/images/facebook-ico.svg" /></a> 149 <a href="https://www.youtube.com/televizezak" target="_blank"><img src="/images/youtube-ico.svg" /></a> 150 <a href="https://www.instagram.com/zak_televize/" target="_blank"><img src="/images/instagram-ico.svg" /></a> 151 </div> 152 <div class="my-auto desktop-bio noselect white desktop-only"> 153 154 <span> 155 pátek 2. října 2026 156 <br />Svátek má Olivie a Oliver 157 </span> 158 </div> 159 <img class="desktop-only my-auto nav-tube" src="/images/tube.svg" /> 160 <div class="search-modal" data-bs-toggle="modal" data-bs-target="#search-modal"> 161 <a class="nav-link" id="search-icon-trigger"> 162 <i class="fas fa-search search-icon-visible"></i> 163 <div class="search-icon-spinner" style="display: none;"> 164 <div class="spinner-mini"></div> 165 </div> 166 </a> 167 </div> 168 <div class="mobile-nav"> 169 <label for="mobile-nav" class="hand"><i class="nav-link fa fa-bars"></i></label> 170 <input type="checkbox" id="mobile-nav" class="visually-hidden"> 171 <div class="dropped-mobile-nav"> 172 173 <div class="dn-bio"> 174 <p>Je <b>pátek 2. října 2026</b> <i>(týden 40., sudý)</i></p> 175 <p>Svátek má <b>Olivie a Oliver</b></p> 176 </div> 177 178 <div class="dn-categories"> 179 <div class="d-flex"> 180 <div class="ruby"> 181 <a href="/zpravodajstvi" alt="ZpravodajstvÃ">ZpravodajstvÃ</a> 182 <a href="/aktualne" alt="AktuálnÄ">AktuálnÄ</a> 183 <a href="/z-plzne" alt="Z PlznÄ">Z PlznÄ</a> 184 <a href="/z-kraje" alt="Z kraje">Z kraje</a> 185 <a href="/z-regionu" alt="Z regionů">Z regionů</a> 186 <a href="/politika" alt="Politika">Politika</a> 187 <a href="/Kultura" alt="Kultura">Kultura</a> 188 <a href="/Sport" alt="Sport">Sport</a> 189 <a href="/video" alt="Video">Video</a> 190 <a href="/Doprava" alt="Doprava">Doprava</a> 191 <a href="/krimi" alt="Krimi">Krimi</a> 192 <a href="/lifestyle" alt="Lifestyle">Lifestyle</a> 193 <a href="/Webkamera" alt="Webkamera">Webkamera</a> 194 195 </div> 196 <div><a class="dropdown-item right" href="/"><span class="fa fa-home" alt="Ãvod"></span></a></div> 197 </div> 198 </div> 199 200 <div class="forecast-wideget-dn"> 201 <div class="d-flex no-wrap text-center forecast"> 202 <div class="forecast-day"> 203 <img src="/images/weather/5.png" width="38" height="38" alt="Zataženo, večer polojasno. Teploty 9/20 °C." title="Zataženo, večer polojasno. Teploty 9/20 °C." /><br /> 204 <small>9°C / 20°C</small><br /> 205 Dnes 206 </div> 207 <div class="forecast-day"> 208 <img src="/images/weather/3.png" width="38" height="38" alt="Slunečno, odpoledne více oblačnosti. Teploty 7/22 °C." title="Slunečno, odpoledne více oblačnosti. Teploty 7/22 °C." /><br /> 209 <small>7°C / 22°C</small><br /> 210 Zítra 211 </div> 212 <div class="forecast-day"> 213 <img src="/images/weather/4.png" width="38" height="38" alt="Polojasno, večer zataženo. Teploty 7/22 °C." title="Polojasno, večer zataženo. Teploty 7/22 °C." /><br /> 214 <small>7°C / 22°C</small><br /> 215 Neděle 216 </div> 217 </div> 218 <div class="small forecast-today-text"> 219 <p>Zataženo, večer polojasno. Teploty 9/20 °C.</p> 220 </div> 221 <div class="meteocentrum text-muted"> 222 <a href="https://www.meteocentrum.cz/" title="Data poÄasà poskytuje Meteocentrum" target="_blank" class="small text-secondary">PoÄasÃ: meteocentrum.cz</a> 223 </div> 224 </div> 225 226 <switch class="d-flex flex-nowrap mobile-only"> 227 <div class="day small"><span>SvÄtlý motiv</span></div> 228 <div class="night small"><span>Tmavý motiv</span></div> 229 <div><button id="darkToggle" class="darkmode" title="darkmode switch"></button></div> 230 </switch> 231 232 </div>
233 </div> 234 </nav> 235 236 <div class="modal fade" id="search-modal" data-bs-backdrop="static"> 237 <button type="button" class="btn-close" data-bs-dismiss="modal" id="search-modal-close"></button> 238 <div class="modal-dialog"> 239 <div class="modal-content"> 240 <div class="modal-body"> 241 <form class="forms" id="gh-search-input" method="get" action="/"> 242 <div class="input-group"> 243 <span class="input-group-text"> 244 <i class="fas fa-search"></i> 245 </span> 246 <input type="search" class="search-input form-control" placeholder="Vyhledat.." id="search-input" name="q" minlength="2" required> 247 <button class="btn btn-primary" type="submit" id="search-btn"> 248 <span class="search-btn-text">Hledat</span> 249 <span class="spinner-border spinner-border-sm search-spinner d-none ms-2" role="status"> 250 <span class="visually-hidden">HledánÃ...</span> 251 </span> 252 </button> 253 </div> 254 <small class="text-danger d-none" id="search-error"></small> 255 </form> 256 </div> 257 </div> 258 </div> 259 </div> 260 </div> 261 </div> 262 263</header> 264 265 266 267 <div class="container branded body-movein"> 268 269 270 271<div class="blog-area-static pt-2"> 272 <div class="container"> 273 274 <div class="my-1 pl-14"> 275 <h1>Aktuálně</h1> 276 277 <p class="category-intro"> 278 Nejdůležitější aktuální zprávy dne. Přehled událostí, které právě hýbou Plzní, regionem i Českou republikou. 279 </p> 280 281 </div> 282 <div class="row"> 283 <div class="col-md-7 col-lg-8 pt-2 pl-12"> 284 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 285 <div class="feature-image"> 286 <div class="image-frame image-hover-style-1"> 287 <a href="/centralni_obvod_proveruje_rizikove_stromy_odborne_zkousky_rozhodnou_ktere_zustanou" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/c6b063a969/27345796-5793-4cde-9532-dc68f8db498c.jpg.medium.jpg" alt="Mohou spadnout, nebo ještě vydrží? Centrální obvod nechává prověřit rizikové stromy"></a> 288 </div> 289 </div> 290 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 291 <div class="card-flex-content w-100"> 292 <h6> 293 <a href="/centralni_obvod_proveruje_rizikove_stromy_odborne_zkousky_rozhodnou_ktere_zustanou" target="">Mohou spadnout, nebo ještě vydrží? Centrální obvod nechává prověřit rizikové stromy</a> 294 </h6> 295 <div class="desktop-only"> 296 <p>Å estnáct stromů v Plzni 3 Äeká odborné provÄÅenÃ. Tahové zkouÅ¡ky majà ukázat, zda jsou skuteÄnÄ nebezpeÄné, nebo je bude možné zachovat. O jejich dalÅ¡Ãm osudu rozhodnou výsledky mÄÅenÃ.</p> 297 </div> 298 </div> 299 </div> 300 </article> 301 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 302 <div class="feature-image"> 303 <div class="image-frame image-hover-style-1"> 304 <a href="/tv_zak_usporadala_" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/cbb48f2ba9/Bez_nazvu.png.medium.jpg" alt="TV ZAK uspořádala projekci české komedie pro své klienty"></a> 305 </div> 306 </div> 307 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 308 <div class="card-flex-content w-100"> 309 <h6> 310 <a href="/tv_zak_usporadala_" target="">TV ZAK uspořádala projekci české komedie pro své klienty</a> 311 </h6> 312 <div class="desktop-only"> 313 <p>
313I letos si Televize ZAK pÅipravila pro své klienty soukromou projekci v rámci filmového festivalu Finále PlzeÅ. Tentokrát si hosté mohli v poslednà den konánà festivalu, tedy ve stÅedu 30. záÅÃ, spoleÄnÄ užÃt Äeskou komedii režiséra Miroslava OndruÅ¡e s názvem 6 gramů.</p> 314 </div> 315 </div> 316 </div> 317 </article> 318 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 319 <div class="feature-image"> 320 <div class="image-frame image-hover-style-1"> 321 <a href="/padajici_omitka_dopadla_na_chodnik_straznici_v_plzni_museli_uzavrit_cast_koterovske_tridy" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/5dcef46723/828939374_1631336708628411_1065828476622524501_n.jpg.medium.jpg" alt="Nebezpečí nad hlavami chodců. Z domu v Plzni se začala drolit fasáda"></a> 322 </div> 323 </div> 324 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 325 <div class="card-flex-content w-100"> 326 <h6> 327 <a href="/padajici_omitka_dopadla_na_chodnik_straznici_v_plzni_museli_uzavrit_cast_koterovske_tridy" target="">Nebezpečí nad hlavami chodců. Z domu v Plzni se začala drolit fasáda</a> 328 </h6> 329 <div class="desktop-only"> 330 <p>Jen nÄkolik okamžiků mohlo rozhodovat o vážném zranÄnÃ. Na Koterovské tÅÃdÄ v Plzni se ve stÅedu veÄer uvolnila Äást omÃtky z jednoho z domů a dopadla pÅÃmo na chodnÃk. StrážnÃci mÄstské policie okamžitÄ zabezpeÄili nebezpeÄný prostor a zabránili vstupu chodců do rizikové zóny.
330</p> 331 </div> 332 </div> 333 </div> 334 </article> 335 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 336 <div class="feature-image"> 337 <div class="image-frame image-hover-style-1"> 338 <a href="/hledate_recept_na_uspech_v_dnesni_dobe_mestanska_beseda_odhali_nadcasovou_filozofii_tomase_bati" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/e1f8e5a614/Tomas_Bata.jpg.medium.jpg" alt="Hledáte recept na úspěch v dnešní době? Měšťanská beseda odhalí nadčasovou filozofii Tomáše Bati"></a> 339 </div> 340 </div> 341 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 342 <div class="card-flex-content w-100"> 343 <h6> 344 <a href="/hledate_recept_na_uspech_v_dnesni_dobe_mestanska_beseda_odhali_nadcasovou_filozofii_tomase_bati" target="">Hledáte recept na úspěch v dnešní době? Měšťanská beseda odhalí nadčasovou filozofii Tomáše Bati</a> 345 </h6> 346 <div class="desktop-only"> 347 <p>PÅednáška o Tomáši BaÅ¥ovi, jeho stylu ÅÃzenà a obrovském podnikatelském úspÄchu</p> 348 </div> 349 </div> 350 </div> 351 </article> 352 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 353 <div class="feature-image"> 354 <div class="image-frame image-hover-style-1"> 355 <a href="/plzen_oslavi_vznik_republiky_otevre_bezne_nepristupna_mista_vecer_rozzari_centrum_pruvod_svetel" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/05002a9806/2026-28-obrazovka-1920x1080px.png.medium.jpg" alt="Plzeň oslaví vznik republiky. Otevře běžně nepřístupná místa, večer rozzáří centrum Průvod světel"></a> 356 </div> 357 </div> 358 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 359 <div class="card-flex-content w-100"> 360 <h6> 361 <a href="/plzen_oslavi_vznik_republiky_otevre_bezne_nepristupna_mista_vecer_rozzari_centrum_pruvod_svetel" target="">Plzeň oslaví vznik republiky. Otevře běžně nepřístupná místa, večer rozzáří centrum Průvod světel</a> 362 </h6> 363 <div class="desktop-only"> 364 <p>DesÃtky turistických cÃlů, exkurze do bÄžnÄ nepÅÃstupných provozů, historické tramvaje, sportovnà aktivity i velkolepá svÄtelná show v srdci mÄsta. Tak budou vypadat PlzeÅské oslavy vzniku republiky, které se uskuteÄnà 28. ÅÃjna. NávÅ¡tÄvnÃci si pÅipomenou 108. výroÄà založenà samostatného Äeskoslovenska a na mnoha mÃstech využijà symbolické vstupné 28 korun, výrazné slevy nebo vstup zdarma.</p> 365 </div> 366 </div> 367 </div> 368 </article> 369 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 370 <div class="feature-image"> 371 <div class="image-frame image-hover-style-1"> 372 <a href="/na_klatovsku" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/b4658b6ac7/Gemini_Generated_Image_853uxb853uxb853u.jpg.medium.jpg" alt="Aktualizováno: Na Klatovsku se zřítil parašutista, nehodu nepřežil"></a> 373 </div> 374 </div> 375 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 376 <div class="card-flex-content w-100"> 377 <h6> 378 <a href="/na_klatovsku" target="">Aktualizováno: Na Klatovsku se zřítil parašutista, nehodu nepřežil</a> 379 </h6> 380 <div class="desktop-only"> 381 <p>Tragicky skonÄil v pátek dopoledne seskok jednapadesátiletého paraÅ¡utisty na Klatovsku. Muž se zÅÃtil na louku mezi Klatovy a ToÄnÃkem. PÅes intenzivnà resuscitaci se ho záchranáÅům nepodaÅilo zachránit. PÅÃpadem se nynà zabývajà kriminalisté.</p> 382 </div> 383 </div> 384 </div> 385 </article> 386 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 387 <div class="feature-image"> 388 <div class="image-frame image-hover-style-1"> 389 <a href="/dalsi_anonymni_hrozba_bombou_zamestnala_policisty_okresni_soud_v_plzni_musel_znovu_evakuovat_budovu" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/03456ecd00/gwinoauwwaarquo_XL_(2).jpg.medium.jpg" alt="Další anonymní hrozba bombou zaměstnala policisty. Okresní soud v Plzni musel znovu evakuovat budovu"></a> 390 </div> 391 </div> 392 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 393 <div class="card-flex-content w-100"> 394 <h6> 395 <a href="/dalsi_anonymni_hrozba_bombou_zamestnala_policisty_okresni_soud_v_plzni_musel_znovu_evakuovat_budovu" target="">Další anonymní hrozba bombou zaměstnala policisty. Okresní soud v Plzni musel znovu evakuovat budovu</a> 396 </h6> 397 <div class="desktop-only"> 398 <p>Pouhé dva dny po pÅedchozÃm incidentu ÅeÅ¡ili policisté v Plzni dalšà anonymnà oznámenà o uloženà bomby v budovÄ OkresnÃho soudu PlzeÅ-mÄsto. Na mÃstÄ byla okamžitÄ pÅijata rozsáhlá bezpeÄnostnà opatÅenÃ, která si vyžádala evakuaci osob i uzavÅenà pÅilehlých komunikacÃ.</p> 399 </div> 400 </div> 401 </div> 402 </article> 403 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 404 <div class="feature-image"> 405 <div class="image-frame image-hover-style-1"> 406 <a href="/drama_v_plzni_muz_hrozil_skokem_z_osmnactimetroveho_leseni" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/a39b90660d/ChatGPT_Image_2._10._2026_09_30_40.png.medium.jpg" alt="Drama v Plzni: Muž hrozil skokem z osmnáctimetrového lešení"></a> 407 </div> 408 </div> 409 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 410 <div class="card-flex-content w-100"> 411 <h6> 412 <a href="/drama_v_plzni_muz_hrozil_skokem_z_osmnactimetroveho_leseni" target="">Drama v Plzni: Muž hrozil skokem z osmnáctimetrového lešení</a> 413 </h6> 414 <div class="desktop-only"> 415 <p>Dramatické chvÃle se odehrály v pátek ráno v MánesovÄ ulici v Plzni. Muž tam vystoupal na leÅ¡enà ve výšce pÅibližnÄ 18 metrů a vyhrožoval, že skoÄà dolů. Na mÃsto okamžitÄ vyrazily vÅ¡echny složky integrovaného záchranného systému vÄetnÄ policejnÃho vyjednavaÄe ze zásahové jednotky.</p> 416 </div> 417 </div> 418 </div> 419 </article> 420 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 421 <div class="feature-image"> 422 <div class="image-frame image-hover-style-1"> 423 <a href="/plzen_stavi_novy_clovicek_moderni_stacionar_za_temer_200_milionu_pomuze_lidem_s_tezkym_handicapem" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/032c3925b2/19171794.jpg.medium.jpg" alt="Plzeň staví nový Človíček. Moderní stacionář za téměř 200 milionů pomůže lidem s těžkým handicapem"></a> 424 </div> 425 </div> 426 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 427 <div class="card-flex-content w-100"> 428 <h6> 429 <a href="/plzen_stavi_novy_clovicek_moderni_stacionar_za_temer_200_milionu_pomuze_lidem_s_tezkym_handicapem" target="">Plzeň staví nový Človíček. Moderní stacionář za téměř 200 milionů pomůže lidem s těžkým handicapem</a> 430 </h6> 431 <div class="desktop-only"> 432 <p>PlzeÅ zahájila výstavbu nového dennÃho stacionáÅe ÄlovÃÄek 2, který výraznÄ rozÅ¡ÃÅà kapacity péÄe o lidi s tÄžkým kombinovaným postiženÃm a poruchami autistického spektra. Modernà zaÅÃzenà ve SkvrÅanech nabÃdne zázemà pro 36 klientů, propojà sociálnà služby se speciálnÃm vzdÄlávánÃm a dÃky bezbariérovému a energeticky úspornému ÅeÅ¡enà vytvoÅà podmÃnky odpovÃdajÃcà souÄasným nárokům na péÄi. Hotovo má být v záÅà 2028.</p> 433 </div> 434 </div> 435 </div> 436 </article> 437 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 438 <div class="feature-image"> 439 <div class="image-frame image-hover-style-1"> 440 <a href="/perninsky_kros_prilakal_120_zavodniku_pernink_chysta_dalsi_rozvoj_arealu" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/e688aa0b6b/cross_4.jpg.medium.jpg" alt="Perninský kros přilákal 120 závodníků. Pernink chystá další rozvoj areálu"></a> 441 </div> 442 </div> 443 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 444 <div class="card-flex-content w-100"> 445 <h6> 446 <a href="/perninsky_kros_prilakal_120_zavodniku_pernink_chysta_dalsi_rozvoj_arealu" target="">Perninský kros přilákal 120 závodníků. Pernink chystá další rozvoj areálu</a> 447 </h6> 448 <div class="desktop-only"> 449 <p>V Perninku se v sobotu 26. záÅà uskuteÄnil Perninský kros â Memoriál Jirky Holého. Na start se postavili závodnÃci vÅ¡ech vÄkových kategorià od minižáků až po veterány. NároÄná traÅ¥ vedla také do sjezdovky Velký link a závodu se zúÄastnilo zhruba 120 bÄžců. 450</p> 451 </div> 452 </div> 453 </div> 454 </article> 455 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 456 <div class="feature-image"> 457 <div class="image-frame image-hover-style-1"> 458 <a href="/predvolebni_diskuze_zak_tv_nabidla_stret_sesti_kandidatu_resili_bezpecnost_dopravu_i_bydleni" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/8a48093b52/att.UfLocIpieO3icVv_eDgegVSCf4c16TgZrPvjcSpQZAQ_1.jpeg.medium.jpg" alt="Předvolební debata ZAK TV nabídla střet šesti kandidátů. Řešili bezpečnost, dopravu i bydlení"></a> 459 </div> 460 </div> 461 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 462 <div class="card-flex-content w-100"> 463 <h6> 464 <a href="/predvolebni_diskuze_zak_tv_nabidla_stret_sesti_kandidatu_resili_bezpecnost_dopravu_i_bydleni" target="">Předvolební debata ZAK TV nabídla střet šesti kandidátů. Řešili bezpečnost, dopravu i bydlení</a> 465 </h6> 466 <div class="desktop-only"> 467 <p>PÅedvolebnà atmosféra v Plzni se dostává do dalšà fáze. ZAK TV uspoÅádala velkou pÅedvolebnà debata, do které pozvala zástupce Å¡esti nejsilnÄjÅ¡Ãch politických stran podle srpnových průzkumů. Pavel Bosák (Piráti), Lukáš Hegner (ODS), Július LÃÅ¡ka (SPD), Tomáš Morávek (Pro PlzeÅ), AleÅ¡ Tolar (STAN) a Roman Zarzycký (ANO) v nà debatovali o uplynulých ÄtyÅech letech i o tom, jakým smÄrem by se mÄla PlzeÅ vydat dál.</p> 468 </div> 469 </div> 470 </div> 471 </article> 472 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 473 <div class="feature-image"> 474 <div class="image-frame image-hover-style-1"> 475 <a href="/hudba_pro_dobrou_vec_tachovsky_koncert_podpori_nemocneho_filipa" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/246e9d192c/IMG-20260803-WA0008.jpg.medium.jpg" alt="Hudba pro dobrou věc. Tachovský koncert podpoří nemocného Filipa"></a> 476 </div> 477 </div> 478 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 479 <div class="card-flex-content w-100"> 480 <h6> 481 <a href="/hudba_pro_dobrou_vec_tachovsky_koncert_podpori_nemocneho_filipa" target="">Hudba pro dobrou věc. Tachovský koncert podpoří nemocného Filipa</a> 482 </h6> 483 <div class="desktop-only"> 484 <p>Tachovské kino Mže bude v sobotu 24. ÅÃjna hostit dobroÄinný koncert na podporu nemocného Filipa. NávÅ¡tÄvnÃci se mohou tÄÅ¡it na vystoupenà nÄkolika kapel, pÅiÄemž veÅ¡kerý výtÄžek z dobrovolného vstupného poputuje na jeho léÄbu. MimoÅádnou událostà bude také návrat kapely Keep Panic, která se po nÄkolikaleté pauze znovu pÅedstavà publiku.</p> 485 </div> 486 </div> 487 </div> 488 </article> 489 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 490 <div class="feature-image"> 491 <div class="image-frame image-hover-style-1"> 492 <a href="/bazen_dostal_zelenou_mesto_a_univerzita_nasly_kompromis" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/37d081226f/220510_Bazen_2.jpg.medium.jpg" alt="Bazén dostal zelenou. Město a Západočeská univerzita našly kompromis"></a> 493 </div> 494 </div> 495 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 496 <div class="card-flex-content w-100"> 497 <h6> 498 <a href="/bazen_dostal_zelenou_mesto_a_univerzita_nasly_kompromis" target="">Bazén dostal zelenou. Město a Západočeská univerzita našly kompromis</a> 499 </h6> 500 <div class="desktop-only"> 501 <p>Plánovaná výstavba nového plaveckého bazénu na Borech udÄlala důležitý krok vpÅed. MÄsto PlzeÅ a ZápadoÄeská univerzita podepsaly memorandum o spolupráci, které má odstranit pÅekážky bránÃcà realizaci projektu. KlÃÄovým tématem byla ochrana výzkumného centra NTIS, jež se nacházà v bezprostÅednà blÃzkosti budoucà stavby.</p> 502 </div> 503 </div> 504 </div> 505 </article> 506 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 507 <div class="feature-image"> 508 <div class="image-frame image-hover-style-1"> 509 <a href="/plzenske_hlavni_nadrazi_pod_drobnohledem_policiste_tam_provedli_uz_tisice_kontrol" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/d60a0edab9/Kontrolyhlavninadrazi1.jpg.medium.jpg" alt="Plzeňské hlavní nádraží pod drobnohledem. Policisté tam provedli už tisíce kontrol"></a> 510 </div> 511 </div> 512 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 513 <div class="card-flex-content w-100"> 514 <h6> 515 <a href="/plzenske_hlavni_nadrazi_pod_drobnohledem_policiste_tam_provedli_uz_tisice_kontrol" target="">Plzeňské hlavní nádraží pod drobnohledem. Policisté tam provedli už tisíce kontrol</a> 516 </h6> 517 <div class="desktop-only"> 518 <p>PlzeÅské hlavnà vlakové nádražà patÅà mezi nejstÅeženÄjšà mÃsta ve mÄstÄ. Policisté i strážnÃci zde každoroÄnÄ provádÄjà tisÃce kontro
518l osob a vozidel, pÅiÄemž letoÅ¡nà statistiky ukazujà dalšà nárůst dohledu. K vÄtšà bezpeÄnosti pÅispÃvajà nejen pravidelné hlÃdky a kamerový systém, ale také služebnà mÃstnost mÄstské policie s interkomem pro okamžité spojenà s operaÄnÃm stÅediskem.</p> 519 </div> 520 </div> 521 </div> 522 </article> 523 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 524 <div class="feature-image"> 525 <div class="image-frame image-hover-style-1"> 526 <a href="/bavorsko-cesky_den_pro_firmy_13_rijna_v_deggendorfu_podpori_preshranicni_ekonomiku" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/0cb2bfc291/7._Bavorsko-cesky_den_pro_firmy.jpg.medium.jpg" alt="Bavorsko-český den pro firmy 13. října v Deggendorfu podpoří přeshraniční ekonomiku"></a> 527 </div> 528 </div> 529 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 530 <div class="card-flex-content w-100"> 531 <h6> 532 <a href="/bavorsko-cesky_den_pro_firmy_13_rijna_v_deggendorfu_podpori_preshranicni_ekonomiku" target="">Bavorsko-český den pro firmy 13. října v Deggendorfu podpoří přeshraniční ekonomiku</a> 533 </h6> 534 <div class="desktop-only"> 535 <p>Dne 13. ÅÃjna se výstaviÅ¡tÄ v Deggendorfu (Stadthallen Deggendorf) opÄt promÄnà ve velkou burzu nápadů a kontaktů dvou zemà â v jeden spoleÄný trh pÅÃležitostÃ. Akce se koná již posedmé. Bavorsko-Äeský den pro firmy opÄt organizuje Ing. Jaroslava Pongratz, manažerka kontaktnÃch sÃtà Bavorsko-Äechy. Åada vystavovatelů z obou stran hranice pÅedstavà své produkty a služby a nebude chybÄt ani odborný program a prostor pro setkávánÃ, navazovánà kontaktů a zÃskávánà nových informacÃ.</p> 536 </div> 537 </div> 538 </div> 539 </article> 540 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 541 <div class="feature-image"> 542 <div class="image-frame image-hover-style-1"> 543 <a href="/v_centru_plzne_vykolejila_tramvaj_doprava_kolabovala" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/7f0490a8c3/IMG_7849.jpeg.medium.jpg" alt="V centru Plzně vykolejila tramvaj, doprava kolabovala"></a> 544 </div> 545 </div> 546 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 547 <div class="card-flex-content w-100"> 548 <h6> 549 <a href="/v_centru_plzne_vykolejila_tramvaj_doprava_kolabovala" target="">V centru Plzně vykolejila tramvaj, doprava kolabovala</a> 550 </h6> 551 <div class="desktop-only"> 552 <p>Krátce po osmé hodinÄ rannà zkomplikovalo provoz MHD v centru PlznÄ vykolejenà tramvaje u zastávky U Zvonu. Kvůli mimoÅádné události byly doÄasnÄ omezeny tramvajové linky ÄÃslo 1 a 2, které neobsluhovaly úsek mezi Sady PÄtatÅicátnÃků a koneÄnými zastávkami Slovany a SvÄtovar. CestujÃcà mohli využÃt náhradnà autobusovou dopravu z Anglického nábÅežÃ.</p> 553 </div> 554 </div> 555 </div> 556 </article> 557 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 558 <div class="feature-image"> 559 <div class="image-frame image-hover-style-1"> 560 <a href="/promena_lochotinskeho_parku_je_u_konce_plzen_dokoncila_revitalizaci_za_vice_nez_90_milionu_korun" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/c59e6f34c9/3P7A0310.jpg.medium.jpg" alt="Proměna Lochotínského parku je u konce. Plzeň dokončila revitalizaci za více než 90 milionů korun"></a> 561 </div> 562 </div> 563 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 564 <div class="card-flex-content w-100"> 565 <h6> 566 <a href="/promena_lochotinskeho_parku_je_u_konce_plzen_dokoncila_revitalizaci_za_vice_nez_90_milionu_korun" target="">Proměna Lochotínského parku je u konce. Plzeň dokončila revitalizaci za více než 90 milionů
566 korun</a> 567 </h6> 568 <div class="desktop-only"> 569 <p>Po vÃce než deseti letech skonÄila rozsáhlá revitalizace LochotÃnského parku, jednoho z nejvýznamnÄjÅ¡Ãch parků v Plzni. NávÅ¡tÄvnÃci zde najdou opravené cesty, nové výsadby, hernà i cviÄebnà prvky, obnovený kaskádový vodopád i Åadu dalÅ¡Ãch vylepÅ¡enÃ. Celkové náklady na obnovu pÅesáhly 90 milionů korun.</p> 570 </div> 571 </div> 572 </div> 573 </article> 574 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 575 <div class="feature-image"> 576 <div class="image-frame image-hover-style-1"> 577 <a href="/finale_plzen_prepsalo_rekordy_festival_navstivilo_temer_18_tisic_divaku" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/726b74a811/Zl._lednacek_-_nejlepsi_celovecerni_hrany_nebo_animovany_film_-_Milovnik_ne_bojovnik_-_Julie_Markova_Zackova_Frantisek_Beles_1.jpg.medium.jpg" alt="Finále Plzeň přepsalo rekordy. Festival navštívilo téměř 18 tisíc diváků"></a> 578 </div> 579 </div> 580 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 581 <div class="card-flex-content w-100"> 582 <h6> 583 <a href="/finale_plzen_prepsalo_rekordy_festival_navstivilo_temer_18_tisic_divaku" target="">Finále Plzeň přepsalo rekordy. Festival navštívilo téměř 18 tisíc diváků</a> 584 </h6> 585 <div class="desktop-only"> 586 <p>LetoÅ¡nà 39. roÄnÃk filmového festivalu Finále PlzeÅ se zaÅadil mezi nejúspÄÅ¡nÄjšà v historii. Do západoÄeské metropole pÅilákal bezmála 18 tisÃc návÅ¡tÄvnÃků, nabÃdl 151 projekcà a desÃtky doprovodných akcÃ. OcenÄnà Zlatý ledÅáÄek si odnesly snÃmky MilovnÃk, ne bojovnÃk, Kdyby se holubi promÄnili ve zlato, minisérie Gerta Schnirch a studentský film VÄž.</p> 587 </div> 588 </div> 589 </div> 590 </article> 591 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 592 <div class="feature-image"> 593 <div class="image-frame image-hover-style-1"> 594 <a href="/stary_plzenec_zahaji_dostavbu_centra_mesta_vznikne_novy_mestsky_park_i_multifunkcni_hriste" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/b3f1ac5537/Pohled.JPG.medium.jpg" alt="Starý Plzenec zahájí dostavbu centra města Vznikne nový městský park i multifunkční hřiště"></a> 595 </div> 596 </div> 597 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 598 <div class="card-flex-content w-100"> 599 <h6> 600 <a href="/stary_plzenec_zahaji_dostavbu_centra_mesta_vznikne_novy_mestsky_park_i_multifunkcni_hriste" target="">Starý Plzenec zahájí dostavbu centra města Vznikne nový městský park i multifunkční hřiště</a> 601 </h6> 602 <div class="desktop-only"> 603 <p>Ve Starém Plzenci zaÄÃná jedna z nejvýznamnÄjÅ¡Ãch promÄn centra mÄsta za poslednà desetiletÃ. V pátek 2. ÅÃjna 2026 bude slavnostnÄ pÅedáno staveniÅ¡tÄ projektu Dostavba centra Starý Plzenec â PARK. SouÄástà setkánà bude i symbolické poklepánà základnÃho kamene.</p> 604 </div> 605 </div> 606 </div> 607 </article> 608 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 609 <div class="feature-image"> 610 <div class="image-frame image-hover-style-1"> 611 <a href="/babystar_i_den_architektury_finale_plzen_nabidne_program_i_v_posledni_den" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/84c75e55f0/Babystar.jpg.medium.jpg" alt="Babystar i Den architektury. Finále Plzeň nabídne program i v poslední den"></a> 612 </div> 613 </div> 614 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 615 <div class="card-flex-content w-100"> 616 <h6> 617 <a href="/babystar_i_den_architektury_finale_plzen_nabidne_program_i_v_posledni_den" target="">Babystar i Den architektury. Finále Plzeň nabídne program i v poslední den</a> 618 </h6> 619 <div class="desktop-only"> 620 <p>Filmový festival Finále PlzeÅ dnes vyvrcholà udÃlenÃm Zlatých ledÅáÄků. Program ale pokraÄuje až do veÄera. NávÅ¡tÄvnÃci mohou zamÃÅit na projekci nÄmeckého filmu Babystar nebo na dokument o legendárnÃm architektovi Rudolphu M. Schindlerovi. ObÄ akce zaÄÃnajà v 19:30.</p> 621 </div> 622 </div> 623 </div> 624 </article> 625 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 626 <div class="feature-image"> 627 <div class="image-frame image-hover-style-1"> 628 <a href="/prvni_v_cesku_plzen_poridila_profesionalni_vybaveni_pro_fotbal_dronu" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/d37cbbf251/DSCF3219_1.jpg.medium.jpg" alt="První v Česku! Plzeň pořídila profesionální vybavení pro fotbal dronů"></a> 629 </div> 630 </div> 631 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 632 <div class="card-flex-content w-100"> 633 <h6> 634 <a href="/prvni_v_cesku_plzen_poridila_profesionalni_vybaveni_pro_fotbal_dronu" target="">První v Česku! Plzeň pořídila profesionální vybavení pro fotbal dronů</a> 635 </h6> 636 <div class="desktop-only"> 637 <p>PlzeÅ se stala prvnÃm mÄstem v Äeské republice, které poÅÃdilo certifikované vybavenà pro Drone Soccer â dynamický sport spojujÃcà pilotovánà dronů, technické dovednosti a týmovou spolupráci. Novinka se stane souÄástà výuky na stÅednÃch Å¡kolách a má mladé lidi pÅivést k modernÃm technologiÃm, které jim mohou otevÅÃt dveÅe k atraktivnÃm profesÃm budoucnosti.</p> 638 </div> 639 </div> 640 </div> 641 </article> 642 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 643 <div class="feature-image"> 644 <div class="image-frame image-hover-style-1"> 645 <a href="/slovany_maji_prvni_celorocni_fotopoint" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/ef5a4bbd88/2.JPG.medium.jpg" alt="Vzpomínka na starou plovárnu i místo pro relax. Břeh Radbuzy na Slovanech prošel proměnou"></a> 646 </div> 647 </div> 648 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 649 <div class="card-flex-content w-100"> 650 <h6> 651 <a href="/slovany_maji_prvni_celorocni_fotopoint" target="">Vzpomínka na starou plovárnu i místo pro relax. Břeh Radbuzy na Slovanech prošel proměnou</a> 652 </h6> 653 <div class="desktop-only"> 654 <p>U Åeky Radbuzy, na mÃstÄ spojeném s historià bývalé plovárny a pÅevoznÃkem, vznikl nový prostor pro odpoÄinek, procházku i posezenÃ. Pobytová louka v Cyklistické ulici byla slavnostnÄ uvedena do užÃvánà v pátek 25. záÅà 2026. Jejà souÄástà jsou nové cestiÄky, laviÄky a také prvnà stálý celoroÄnà fotopoint na územà Slovan. </p> 655 </div> 656 </div> 657 </div> 658 </article> 659 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 660 <div class="feature-image"> 661 <div class="image-frame image-hover-style-1"> 662 <a href="/anonym_nahlasil_bombu_u_plzenskych_soudu_policie_evakuovala_budovy_a_uzavrela_okoli" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/0e4d0010ab/gwinoauwwaarquo_XL_(1).jpg.medium.jpg" alt="Aktualizováno: Anonym nahlásil bombu u plzeňských soudů"></a> 663 </div> 664 </div> 665 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 666 <div class="card-flex-content w-100"> 667 <h6> 668 <a href="/anonym_nahlasil_bombu_u_plzenskych_soudu_policie_evakuovala_budovy_a_uzavrela_okoli" target="">Aktualizováno: Anonym nahlásil bombu u plzeňských soudů</a> 669 </h6> 670 <div class="desktop-only"> 671 <p>Policisté zasahovali u budov okresnÃch soudů v Plzni v ulicÃch Edvarda BeneÅ¡e a NádražnÃ. Na tÃsÅovou linku 112 totiž dorazilo anonymnà oznámenà o uloženà bomby. </p> 672 </div> 673 </div> 674 </div> 675 </article> 676 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 677 <div class="feature-image"> 678 <div class="image-frame image-hover-style-1"> 679 <a href="/ridici_si_oddechnou_silnice_mezi_ostromeci_a_nemnenicemi_dostala_novy_kabat" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/969ad77dd2/IMG_20260812_121009.jpg.medium.jpg" alt="Řidiči si oddechnou. Silnice spojující jih Plzeňska a Domažlicko dostala nový kabát"></a> 680 </div> 681 </div> 682 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 683 <div class="card-flex-content w-100"> 684 <h6> 685 <a href="/ridici_si_oddechnou_silnice_mezi_ostromeci_a_nemnenicemi_dostala_novy_kabat" target="">Řidiči si oddechnou. Silnice spojující jih Plzeňska a Domažlicko dostala nový kabát</a> 686 </h6> 687 <div class="desktop-only"> 688 <p>ÅidiÄi mezi OstromeÄà a NemnÄnicemi už nemusà kliÄkovat po poÅ¡kozené vozovce. Silnice III/19345 dostala nový povrch a po témÄÅ dvou mÄsÃcÃch pracà je znovu v plném provozu. Rekonstrukce 1,6 kilometru dlouhého úseku vyÅ¡la na 6,7 milionu korun bez DPH.</p> 689 </div> 690 </div> 691 </div> 692 </article> 693 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 694 <div class="feature-image"> 695 <div class="image-frame image-hover-style-1"> 696 <a href="/indiani_vali_prehrali_mladou_boleslav" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/452950a653/min_(46
696).jpg.medium.jpg" alt="Plzeňští hokejisté potvrdili formu i v Mladé Boleslavi, výhru trefila posila"></a> 697 </div> 698 </div> 699 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 700 <div class="card-flex-content w-100"> 701 <h6> 702 <a href="/indiani_vali_prehrali_mladou_boleslav" target="">Plzeňští hokejisté potvrdili formu i v Mladé Boleslavi, výhru trefila posila</a> 703 </h6> 704 <div class="desktop-only"> 705 <p>Hokejisté PlznÄ se posouvajà tabulkou na pÅednà pÅÃÄky. Indiáni potvrdili vzrůstajÃcà formu na ledÄ Mladé Boleslavi, kde v Å¡estém extraligovém kole zvÃtÄzili 4:1. RozhodujÃcà trefu zaznamenal na zaÄátku tÅetà tÅetiny Carter Robertson. </p> 706 </div> 707 </div> 708 </div> 709 </article> 710 711 <div class="text-center"> 712 <div class="ad-list"> 713 <div class="ad-title-wrap mb-0 d-flex justify-content-end"> 714 <span class="ad-title">Reklama</span> 715</div> 716 <a href="https://www.palis.cz/" class="banner-link" data-banner-id="49" target="_blank" title="PALIS"><img src="https://plzencz.b-cdn.net/upload/Banner/5f15ca819f/Palis.cz_Banner_728x90pix_OD_STROMU_K_DOMU_V01.png" /></a> 717</div> 718 </div> 719 720 </div> 721 <div class="col-lg-4 col-md-5 desktop-only"> 722 <div class="sticky-top sticky-sidebar"> 723 724 <div class="static-ads"> 725 726 <div class="mb-2 ad-sidebar"> 727 <div data-sidebar-ad-title hidden> 728 <div class="ad-title-wrap mb-0 d-flex justify-content-end"> 729 <span class="ad-title">Reklama</span> 730</div> 731 </div> 732 <!-- PCZ-Sidebar --> 733 <ins class="sidebar-adsense" 734 style="display:block" 735 data-ad-client="ca-pub-1914100961537914" 736 data-ad-slot="1535357725" 737 data-ad-format="auto" 738 data-full-width-responsive="true"></ins> 739
739<script> 740 (function () { 741 const ad = document.currentScript.previousElementSibling; 742 const title = ad.parentElement.querySelector('[data-sidebar-ad-title]'); 743 function updateTitle() { 744 title.hidden = ad.getAttribute('data-ad-status') !== 'filled'; 745 } 746 const statusObserver = new MutationObserver(updateTitle); 747 statusObserver.observe(ad, { attributes: true, attributeFilter: ['data-ad-status'] }); 748 updateTitle(); 749 let initialized = false; 750 const observer = new ResizeObserver(initialize); 751 function initialize() { 752 if (initialized || ad.getBoundingClientRect().width <= 0) return; 753 initialized = true; 754 observer.disconnect(); 755 ad.classList.add('adsbygoogle'); 756 (window.adsbygoogle = window.adsbygoogle || []).push({}); 757 } 758 observer.observe(ad); 759 initialize(); 760 })(); 761 </script>
761 762 </div> 763 764</div> 765 <div class="static-ads"> 766 767 <div class="mb-2 ad-sidebar"> 768 <div data-sidebar-ad-title hidden> 769 <div class="ad-title-wrap mb-0 d-flex justify-content-end"> 770 <span class="ad-title">Reklama</span> 771</div> 772 </div> 773 <!-- PCZ-Sidebar --> 774 <ins class="sidebar-adsense" 775 style="display:block" 776 data-ad-client="ca-pub-1914100961537914" 777 data-ad-slot="1535357725" 778 data-ad-format="auto" 779 data-full-width-responsive="true"></ins> 780
780<script> 781 (function () { 782 const ad = document.currentScript.previousElementSibling; 783 const title = ad.parentElement.querySelector('[data-sidebar-ad-title]'); 784 function updateTitle() { 785 title.hidden = ad.getAttribute('data-ad-status') !== 'filled'; 786 } 787 const statusObserver = new MutationObserver(updateTitle); 788 statusObserver.observe(ad, { attributes: true, attributeFilter: ['data-ad-status'] }); 789 updateTitle(); 790 let initialized = false; 791 const observer = new ResizeObserver(initialize); 792 function initialize() { 793 if (initialized || ad.getBoundingClientRect().width <= 0) return; 794 initialized = true; 795 observer.disconnect(); 796 ad.classList.add('adsbygoogle'); 797 (window.adsbygoogle = window.adsbygoogle || []).push({}); 798 } 799 observer.observe(ad); 800 initialize(); 801 })(); 802 </script>
802 803 </div> 804 805</div> 806 807 </div> 808 </div> 809 </div> 810 811 812 <div class="row"> 813 <div class="col-md-7 col-lg-8 pl-12"> 814 815 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 816 <div class="feature-image"> 817 <div class="image-frame image-hover-style-1"> 818 <a href="/nehoda_kamionu_uzavrela_d5_u_myta" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/d052341f1c/828202048_10232828555686459_9029470926230513022_n.jpg.medium.jpg" alt="Dálnici D5 ochromila vážná nehoda!"></a> 819 </div> 820 </div> 821 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 822 <div class="card-flex-content w-100"> 823 <h6> 824 <a href="/nehoda_kamionu_uzavrela_d5_u_myta" target="">Dálnici D5 ochromila vážná nehoda!</a> 825 </h6> 826 <div class="desktop-only"> 827 <p>Dálnici D5 na 50. kilometru u Mýta na Rokycansku v úterý odpoledne uzavÅela vážná dopravnà nehoda. Podle policie se na mÃstÄ srazila dvÄ nákladnà vozidla. Nejprve byl uzavÅen smÄr na Prahu, pozdÄji policisté z bezpeÄnostnÃch důvodů zastavili provoz i v opaÄném smÄru. Krátce pÅed 16. hodinou se vÅ¡ak podaÅilo obnovit provoz ve smÄru z Prahy na Rozvadov.</p> 828 </div> 829 </div> 830 </div> 831 </article> 832 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 833 <div class="feature-image"> 834 <div class="image-frame image-hover-style-1"> 835 <a href="/slavnosti_jablek_v_nebilovech_prilakaly_tisice_lidi_sa
835dy_provonel_most_i_domaci_kolace" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/70f2c33d6e/IMG_7739.jpeg.medium.jpg" alt="Slavnosti jablek v Nebílovech přilákaly tisíce lidí, sady provoněl mošt i domácí koláče"></a> 836 </div> 837 </div> 838 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 839 <div class="card-flex-content w-100"> 840 <h6> 841 <a href="/slavnosti_jablek_v_nebilovech_prilakaly_tisice_lidi_sady_provonel_most_i_domaci_kolace" target="">Slavnosti jablek v Nebílovech přilákaly tisíce lidí, sady provoněl mošt i domácí koláče</a> 842 </h6> 843 <div class="desktop-only"> 844 <p>VůnÄ ÄerstvÄ lisovaného moÅ¡tu, dozrávajÃcÃch jablek a domácÃch koláÄů se v nedÄli nesla Sady NebÃlovy. TradiÄnà Slavnosti jablek, které letos napsaly už svůj 17. roÄnÃk, pÅilákaly tisÃce návÅ¡tÄvnÃků z celého PlzeÅského kraje. Ti si užili den plný chutÃ, hudby, zábavy i podzimnà pohody.</p> 845 </div> 846 </div> 847 </div> 848 </article> 849 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 850 <div class="feature-image"> 851 <div class="image-frame image-hover-style-1"> 852 <a href="/plzen_slavi_zrod_cerneho_umeni_smetanovy_sady_ozdobi_unikatni_vystava_k_550_letum_knihtisku" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/9dc0694326/statuta_synodalis_Arnost_z_Pardubic.jpg.medium.jpg" alt="Plzeň slaví zrod „černého umění“. Smetanovy sady ozdobí unikátní výstava k 550 letům knihtisku"></a> 853 </div> 854 </div> 855 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 856 <div class="card-flex-content w-100"> 857 <h6> 858 <a href="/plzen_slavi_zrod_cerneho_umeni_smetanovy_sady_ozdobi_unikatni_vystava_k_550_letum_knihtisku" target="">Plzeň slaví zrod „černého umění“. Smetanovy sady ozdobí unikátní výstava k 550 letům knihtisku</a> 859 </h6> 860 <div class="desktop-only"> 861 <p>550 let Äeského knihtisku - venkovnà výstava pÅed Studijnà a vÄdeckou knihovnou PlzeÅského kraje</p> 862 </div> 863 </div> 864 </div> 865 </article> 866 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 867 <div class="feature-image"> 868 <div class="image-frame image-hover-style-1"> 869 <a href="/nalestene_americke_vozy_a_ryzovani_zlata_v_plzni_radcice_v_rijnu_oziji_atmosferou_divokeho_zapadu" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/ba93442840/WestPark.jpg.medium.jpg" alt="Naleštěné americké vozy a rýžování zlata v Plzni: Radčice v říjnu ožijí atmosférou Divokého západu"></a> 870 </div> 871 </div> 872 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 873 <div class="card-flex-content w-100"> 874 <h6> 875 <a href="/nalestene_americke_vozy_a_ryzovani_zlata_v_plzni_radcice_v_rijnu_oziji_atmosferou_divokeho_zapadu" target="">Naleštěné americké vozy a rýžování zlata v Plzni: Radčice v říjnu ožijí atmosférou Divokého západu</a> 876 </h6> 877 <div class="desktop-only"> 878 <p>Americký den v RadÄicÃch</p> 879 </div> 880 </div> 881 </div> 882 </article> 883 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 884 <div class="feature-image"> 885 <div class="image-frame image-hover-style-1">
886 <a href="/pres_mzi_na_kole_i_v_gondole_plzen_zacne_stavet_unikatni_most_pohaneny_lidskou_silou" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/3fab6b77e6/b20be2c8-3a1a-4d9e-aa22-699848f1f873.jpg.medium.jpg" alt="Přes Mži na kole i v gondole. Plzeň začne stavět unikátní most poháněný lidskou silou"></a> 887 </div> 888 </div> 889 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 890 <div class="card-flex-content w-100"> 891 <h6> 892 <a href="/pres_mzi_na_kole_i_v_gondole_plzen_zacne_stavet_unikatni_most_pohaneny_lidskou_silou" target="">Přes Mži na kole i v gondole. Plzeň začne stavět unikátní most poháněný lidskou silou</a> 893 </h6> 894 <div class="desktop-only"> 895 <p>Cyklostezky v okolà Malesic brzy propojà neobvyklá atrakce. PlzeÅ zahajuje stavbu samoobslužného gondolového mostu pÅes Åeku Mži, který budou lidé ovládat vlastnà silou pomocà pedálů. Originálnà transbordér za zhruba 20 milionů korun usnadnà cestu cyklistům a turistům a zároveÅ se má stát novým lákadlem západnÃho okraje mÄsta.</p> 896 </div> 897 </div> 898 </div> 899 </article> 900 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 901 <div class="feature-image"> 902 <div class="image-frame image-hover-style-1"> 903 <a href="/oprava_strechy_alzbetinych_lazni_pokracuje_hotovo_ma_byt_v_roce_2028" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/848f7ad74a/alzbetiny_lazne.jpg.medium.jpg" alt="Oprava střechy Alžbětiných lázní pokračuje, hotovo má být v roce 2028"></a> 904 </div> 905 </div> 906 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 907 <div class="card-flex-content w-100"> 908 <h6> 909 <a href="/oprava_strechy_alzbetinych_lazni_pokracuje_hotovo_ma_byt_v_roce_2028" target="">Oprava střechy Alžbětiných lázní pokračuje, hotovo má být v roce 2028</a> 910 </h6> 911 <div class="desktop-only"> 912 <p>AlžbÄtiny láznÄ v Karlových Varech procházejà dalšà etapou obnovy. Po výmÄnÄ oken pÅiÅ¡la na Åadu stÅecha historické budovy, která je ve Å¡patném stavu a mÃsty do objektu zatéká. Práce budou pokraÄovat i v dalÅ¡Ãch sezónách, dokonÄenà je plánované na rok 2028.</p> 913 </div> 914 </div> 915 </div> 916 </article> 917 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 918 <div class="feature-image"> 919 <div class="image-frame image-hover-style-1"> 920 <a href="/nakup_za_36_tisic_bez_placeni_nevysel_muzi_hrozi_dva_roky_za_mrizemi" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/b147eb66cf/odcizeni-zbozi-1.jpg.medium.jpg" alt="Nákup za 36 tisíc bez placení nevyšel. Muži hrozí dva roky za mřížemi"></a> 921 </div> 922 </div> 923 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 924 <div class="card-flex-content w-100"> 925 <h6> 926 <a href="/nakup_za_36_tisic_bez_placeni_nevysel_muzi_hrozi_dva_roky_za_mrizemi" target="">Nákup za 36 tisíc bez placení nevyšel. Muži hrozí dva roky za mřížemi</a> 927 </h6> 928 <div class="desktop-only"> 929 <p>Pokus o krádež zbožà za témÄÅ 36 tisÃc korun ÅeÅ¡ili domažliÄtà policisté. PÄtatÅicetiletý muž si v jednom z obchodnÃch domů naložil do nákupnÃho koÅ¡Ãku různé zbožà a zamÃÅil k východu, aniž by za nákup zaplatil. V cestÄ mu vÅ¡ak zabránili zamÄstnanci prodejny.</p> 930 </div> 931 </div> 932 </div> 933 </article> 934 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 935 <div class="feature-image"> 936 <div class="image-frame image-hover-style-1"> 937 <a href="/silnicari_v_plzenskem_kraji_se_pripravuji_na_zimu_po_rekordne_drahe_sezone_navysuji_zasoby_i_techniku" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/e85f453e06/ChatGPT_Image_26._1._2026_09_06_19.png.big.
937jpg.medium.jpg" alt="Silničáři v Plzeňském kraji se připravují na zimu: Po rekordně drahé sezóně navyšují zásoby i techniku"></a> 938 </div> 939 </div> 940 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 941 <div class="card-flex-content w-100"> 942 <h6> 943 <a href="/silnicari_v_plzenskem_kraji_se_pripravuji_na_zimu_po_rekordne_drahe_sezone_navysuji_zasoby_i_techniku" target="">Silničáři v Plzeňském kraji se připravují na zimu: Po rekordně drahé sezóně navyšují zásoby i techniku</a> 944 </h6> 945 <div class="desktop-only"> 946 <p>Správa a údržba silnic PlzeÅského kraje (SÃS) má pÅipraveno na zimnà údržbu vÃce posypového materiálu než loni. PÅichystáno má 27.500 tun soli a 23.000 tun kamenné drti, tedy inertnÃho posypu, který se použÃvá hlavnÄ na Å umavÄ a v Äeském lese. Informoval o tom provoznà Åeditel SÃS Radek Å Ãma.</p> 947 </div> 948 </div> 949 </div> 950 </article> 951 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 952 <div class="feature-image"> 953 <div class="image-frame image-hover-style-1"> 954 <a href="/malik_vychytal_prvni_tribodovou_vyhru_miluju_zapasy_o_gol_usmival_se_po_vyhre_nad_hradcem" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/edadd80e2f/min_(44).jpg.medium.jpg" alt="Malík vychytal první tříbodovou výhru. Miluju zápasy o gól, usmíval se po výhře nad Hradcem"></a> 955 </div> 956 </div> 957 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 958 <div class="card-flex-content w-100"> 959 <h6> 960 <a href="/malik_vychytal_prvni_tribodovou_vyhru_miluju_zapasy_o_gol_usmival_se_po_vyhre_nad_hradcem" target="">Malík vychytal první tříbodovou výhru. Miluju zápasy o gól, usmíval se po výhře nad Hradcem</a> 961 </h6> 962 <div class="desktop-only"> 963 <p>Hokejisté PlznÄ se koneÄnÄ doÄkali. Po nÄkolika tÄsnÄ ztracených zápasech zvládli na domácÃm ledÄ souboj s Hradcem Králové a po výhÅe 2:1 si pÅipsali prvnà tÅÃbodové vÃtÄzstvà v nové extraligové sezonÄ. JednÃm z hlavnÃch strůjců úspÄchu byl brankáŠNick MalÃk, který nÄkolika důležitými zákroky podržel svůj tým zejména v závÄreÄných minutách.</p> 964 </div> 965 </div> 966 </div> 967 </article> 968 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 969 <div class="feature-image"> 970 <div class="image-frame image-hover-style-1"> 971 <a href="/finale_plzen_nabidne_premiery_serialu_tata_a_seriovy_manzel_dorazi_i_tvurci_a_herci" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/61cac25eca/Seriovy_manzel.JPG.medium.jpg" alt="Finále Plzeň nabídne premiéry seriálů Táta a Sériový manžel. Dorazí i tvůrci a herci"></a> 972 </div> 973 </div> 974 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 975 <div class="card-flex-content w-100"> 976 <h6> 977 <a href="/finale_plzen_nabidne_premiery_serialu_tata_a_seriovy_manzel_dorazi_i_tvurci_a_herci" target="">Finále Plzeň nabídne premiéry seriálů Táta a Sériový manžel. Dorazí i tvůrci a herci</a> 978 </h6> 979 <div class="desktop-only"> 980 <p>Filmový festival Finále PlzeÅ zve v pondÄlà 28. záÅà na dvÄ výrazné seriálové novinky inspirované skuteÄnými událostmi. Diváci se mohou tÄÅ¡it na prvnà dva dÃly dramatické minisérie Táta i tragikomického seriálu Sériový manžel. SouÄástà projekcà budou také besedy s tvůrci a hereckými delegacemi.</p> 981 </div> 982 </div> 983 </div> 984 </article> 985 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 986 <div class="feature-image"> 987 <div class="image-frame image-hover-style-1"> 988 <a href="/na_zcu_zacina_boj_o_rektora_soucasny_sef_univerzity_jde_znovu_do_volby" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/2098f7ac39/crop_info_21401.jpg.medium.jpg" alt="Na ZČU začíná boj o rektora. Současný šéf univerzity jde znovu do volby"></a> 989 </div> 990 </div> 991 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 992 <div class="card-flex-content w-100"> 993 <h6> 994 <a href="/na_zcu_zacina_boj_o_rektora_soucasny_sef_univerzity_jde_znovu_do_volby" target="">Na ZČU začíná boj o rektora. Současný šéf univerzity jde znovu do volby</a> 995 </h6> 996 <div class="desktop-only"> 997 <p>ZápadoÄeskou univerzitu v Plzni (ZÄU) chce znovu vést pÄtapadesátiletý matematik Miroslav LáviÄka. Je jediným kandidátem na rektora. PÅedsednictvo akademického senátu univerzity obdrželo osm návrhů, vÅ¡echny na souÄasného rektora. LáviÄka je ve funkci od bÅezna 2023, mandát mu má skonÄit v únoru 2027.</p> 998 </div> 999 </div> 1000 </div> 1001 </article> 1002 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 1003 <div class="feature-image"> 1004 <div class="image-frame image-hover-style-1"> 1005 <a href="/radek_novak__1" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/5c78eeef94/ChatGPT_Image_22._9._2026_09_29_17.png.medium.jpg" alt="Radek Novák: Veřejný prostor není sterilní galerie"></a> 1006 </div> 1007 </div> 1008 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 1009 <div class="card-flex-content w-100"> 1010 <h6> 1011 <a href="/radek_novak__1" target="">Radek Novák: Veřejný prostor není sterilní galerie</a> 1012 </h6> 1013 <div class="desktop-only"> 1014 <p>VeÅejný prostor patÅà vÅ¡em â a právÄ proto by mÄl zůstat živý, rozmanitý a otevÅený různým formám projevu. OznaÄovat reklamu ve mÄstech obecnÄ za âvizuálnà smogâ mi pÅipadá jako pÅÃliÅ¡ zjednoduÅ¡ený a ideologický pohled na to, jak má modernà mÄsto vypadat. MÄsto pÅece nenà sterilnà galerie ani skanzen, ve kterém je možné pÅedem urÄit jedinou správnou podobu veÅejného prostoru. Je to živý organismus, který se neustále vyvÃjÃ, mÄnà a odrážà dobu, ve které žijeme. A reklama je jeho pÅirozenou souÄástÃ.</p> 1015 </div> 1016 </div> 1017 </div> 1018 </article> 1019 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 1020 <div class="feature-image"> 1021 <div class="image-frame image-hover-style-1"> 1022 <a href="/skodovka_se_dockala_prvni_tribodovou_vyhru_trefil_obrance_macpherson" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/52641a9013/min_(43).jpg.medium.jpg" alt="Škodovka se dočkala, první tříbodovou výhru trefil obránce MacPherson"></a> 1023 </div> 1024 </div> 1025 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 1026 <div class="card-flex-content w-100"> 1027 <h6> 1028 <a href="/skodovka_se_dockala_prvni_tribodovou_vyhru_trefil_obrance_macpherson" target="">Škodovka se dočkala, první tříbodovou výhru trefil obránce MacPherson</a> 1029 </h6> 1030 <div class="desktop-only"> 1031 <p>Prvnà tÅÃbodovou výhru v sezónÄ vybojovali hokejisté PlznÄ v pátém extraligovém kole proti hradeckému Mountfieldu. Indiány poslal do vedenà v 5. minutÄ OndÅej RohlÃk, za hosty pak ale vyrovnal explzeÅský Nenonen. O vÃtÄzstvà Škody 2:1 nakonec rozhodla trefa obránce MacPhersona ze zaÄátku druhé Äásti.</p> 1032 </div> 1033 </div> 1034 </div> 1035 </article> 1036 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 1037 <div class="feature-image"> 1038 <div class="image-frame image-hover-style-1"> 1039 <a href="/desitky_vyhruzek_a_strach_o_zivot_muz_terorizoval_dve_zeny_soud_ho_poslal_do_vazby" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/f60f0fee57/Gemini_Generated_Image_e85g83e85g83e85g.jpg.medium.jpg" alt="Desítky výhrůžek a strach o život. Muž terorizoval dvě ženy, soud ho poslal do vazby"></a> 1040 </div> 1041 </div> 1042 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 1043 <div class="card-flex-content w-100"> 1044 <h6> 1045 <a href="/desitky_vyhruzek_a_strach_o_zivot_muz_terorizoval_dve_zeny_soud_ho_poslal_do_vazby" target="">Desítky výhrůžek a strach o život. Muž terorizoval dvě ženy, soud ho poslal do vazby</a> 1046 </h6> 1047 <div class="desktop-only"> 1048 <p>DvÄ Å¾eny z PlzeÅského kraje Äelily dlouhodobým výhrůžkám, které jim podle policie posÃlal tÅiaÅ¡edesátiletý muž. Jedné z nich hrozil prostÅednictvÃm e-mailů, druhé zasÃlal desÃtky zpráv na mobilnà telefon. PÅÃpad nynà skonÄil obvinÄnÃm a vazbou.</p> 1049 </div> 1050 </div> 1051 </div> 1052 </article> 1053 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 1054 <div class="feature-image"> 1055 <div class="image-frame image-hover-style-1"> 1056 <a href="/finale_plzen_pridava_projekce" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/749aff7b69/Seri
1056ovy_manzel.JPG.medium.jpg" alt="Finále Plzeň reaguje na velký zájem. Přidává dvě projekce, láká na Basikovou i Stránského"></a> 1057 </div> 1058 </div> 1059 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 1060 <div class="card-flex-content w-100"> 1061 <h6> 1062 <a href="/finale_plzen_pridava_projekce" target="">Finále Plzeň reaguje na velký zájem. Přidává dvě projekce, láká na Basikovou i Stránského</a> 1063 </h6> 1064 <div class="desktop-only"> 1065 <p>Filmový festival Finále PlzeÅ je v plném proudu a Åada projekcà už je vyprodaná. OrganizátoÅi proto program rozÅ¡ÃÅili o dalšà dvÄ projekce, které se uskuteÄnà v pondÄlà 28. záÅà v DomÄ hudby.</p> 1066 </div> 1067 </div> 1068 </div> 1069 </article> 1070 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 1071 <div class="feature-image"> 1072 <div class="image-frame image-hover-style-1"> 1073 <a href="/motorkarka_neprezila_nehodu_u_stareho_smolivce" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/e0aa147c81/f761b3c4-aded-4311-9058-67f82584c581.jpg.medium.jpg" alt="Tragédie na Plzeňsku: Motorkářka vyjela ze silnice, na místě zemřela"></a> 1074 </div> 1075 </div> 1076 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 1077 <div class="card-flex-content w-100"> 1078 <h6> 1079 <a href="/motorkarka_neprezila_nehodu_u_stareho_smolivce" target="">Tragédie na Plzeňsku: Motorkářka vyjela ze silnice, na místě zemřela</a> 1080 </h6> 1081 <div class="desktop-only"> 1082 <p>Tragická dopravnà nehoda si v sobotu vyžádala život ÄtyÅiaÄtyÅicetileté motocyklistky. K neÅ¡tÄstà doÅ¡lo na silnici II/191 mezi Roželovem a Starým Smolivcem na jižnÃm PlzeÅsku.</p> 1083 </div> 1084 </div> 1085 </div> 1086 </article> 1087 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 1088 <div class="feature-image"> 1089 <div class="image-frame image-hover-style-1"> 1090 <a href="/podchod_pod_zahorskem_se_meni_v_galerii_pod_sirym_nebem_umelci_mu_davaji_zcela_novou_tvar" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/52eaa0d392/824489934_1061077086543650_3370001752432259280_n.jpg.medium.jpg" alt="Barvy místo šedi. Podchod v Plzni se během pár dnů proměňuje v galerii"></a> 1091 </div> 1092 </div> 1093 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 1094 <div class="card-flex-content w-100"> 1095 <h6> 1096 <a href="/podchod_pod_zahorskem_se_meni_v_galerii_pod_sirym_nebem_umelci_mu_davaji_zcela_novou_tvar" target="">Barvy místo šedi. Podchod v Plzni se během pár dnů proměňuje v galerii</a> 1097 </h6> 1098 <div class="desktop-only"> 1099 <p>Å edé stÄny mizà pÅed oÄima a nahrazujà je barvy, fantazie a originálnà umÄlecká dÃla. Podchod Pod Záhorskem v plzeÅském prvnÃm obvodu procházà promÄnou, za kterou stojà ÄeÅ¡tà a slovenÅ¡tà streetartovà umÄlci. BÄhem nÄkolika dnů zde vzniká unikátnà venkovnà galerie, která má oživit veÅejný prostor a nabÃdnout kolemjdoucÃm nevÅ¡ednà zážitek.</p> 1100 </div> 1101 </div> 1102 </div> 1103 </article> 1104 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 1105 <div class="feature-image"> 1106 <div class="image-frame image-hover-style-1"> 1107 <a href="/kulickova_draha_teqball_i_tobogan_o_tom_co_vznikne_na_ctyrce_rozhoduji_sami_obyvatele" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/b1eefe6ca7/11._parkour.png.medium.jpg" alt="Kuličková dráha, teqball i tobogán. O tom, co vznikne na Čtyřce, rozhodují sami obyvatelé"></a> 1108 </div> 1109 </div> 1110 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 1111 <div class="card-flex-content w-100"> 1112 <h6> 1113 <a href="/kulickova_draha_teqball_i_tobogan_o_tom_co_vznikne_na_ctyrce_rozhoduji_sami_obyvatele" target="">Kuličková dráha, teqball i tobogán. O tom, co vznikne na Čtyřce, rozhodují sami obyvatelé</a> 1114 </h6> 1115 <div class="desktop-only"> 1116 <p>Už jen nÄkolik dnà zbývá obyvatelům Ätvrtého plzeÅského obvodu na to, aby rozhodli, jaké projekty obohatà jejich okolÃ. Participativnà rozpoÄet RozhodnÄte sami mÃÅà do finále a o pÅÃzeÅ hlasujÃcÃch bojuje patnáctka nápadů â od kuliÄkové dráhy pÅes teqballové hÅiÅ¡tÄ až po tobogán v Lobezském par
1116ku. Na vÃtÄzné projekty má radnice pÅipravené dva miliony korun.</p> 1117 </div> 1118 </div> 1119 </div> 1120 </article> 1121 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 1122 <div class="feature-image"> 1123 <div class="image-frame image-hover-style-1"> 1124 <a href="/nova_krimi_miniserie_hec_se_predstavi_v_mestanske_besede_dorazi_hvezdna_delegace" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/b73186bfc6/Hec.jpeg.medium.jpg" alt="Na Finále Plzeň se představí nová krimi minisérie Hec. Dorazí hvězdná delegace!"></a> 1125 </div> 1126 </div> 1127 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 1128 <div class="card-flex-content w-100"> 1129 <h6> 1130 <a href="/nova_krimi_miniserie_hec_se_predstavi_v_mestanske_besede_dorazi_hvezdna_delegace" target="">Na Finále Plzeň se představí nová krimi minisérie Hec. Dorazí hvězdná delegace!</a> 1131 </h6> 1132 <div class="desktop-only"> 1133 <p>Filmový festival Finále PlzeÅ nabÃdne návÅ¡tÄvnÃkům exkluzivnà podÃvanou na prvnà dva dÃly oÄekávané krimi minisérie Hec z produkce Äeské televize. Slavnostnà promÃtánà probÄhne v sobotu 26. záÅà 2026 od 20:00 hodin v Malém sále MÄšťanské besedy. SouÄástà veÄera bude i osobnà úÄast tvůrÄà delegace.</p> 1134 </div> 1135 </div> 1136 </div> 1137 </article> 1138 <article data-aos="fade-up" class="blog-style2 card mb-2 aos-init aos-animate xdf6g51 d-flex flex-nowrap"> 1139 <div class="feature-image"> 1140 <div class="image-frame image-hover-style-1"> 1141 <a href="/zlodej_se_do_svatebniho_salonu_dostal_pomoci_hasiciho_pristroje_odnesl_si_19_prstenu" target=""> <img class=" ls-is-cached lazyloaded" src="https://plzencz.b-cdn.net/upload/News/34229ef8bc/b-3.jpg.medium.jpg" alt="Zloděj se do svatebního salonu dostal pomocí hasicího přístroje. Odnesl si 19 prstenů"></a> 1142 </div> 1143 </div> 1144 <div data-aos="fade-in" class="d546s my-auto card-body d-md-flex align-items-center aos-init aos-animate"> 1145 <div class="card-flex-content w-100"> 1146 <h6> 1147 <a href="/zlodej_se_do_svatebniho_salonu_dostal_pomoci_hasiciho_pristroje_odnesl_si_19_prstenu" target="">Zloděj se do svatebního salonu dostal pomocí hasicího přístroje. Odnesl si 19 prstenů</a> 1148 </h6> 1149 <div class="desktop-only"> 1150 <p>PlzeÅÅ¡tà policisté objasnili sérii krádežà a vloupánÃ, za kterými podle dosud zjiÅ¡tÄných skuteÄnostà stojà muž narozený v roce 1982. BÄhem jediného dne mÄl napáchat Å¡kodu v Åádu desÃtek tisÃc korun. NejvÄtšà pozornost vzbudilo vloupánà do svatebnÃho salonu, odkud zmizelo 19 snubnÃch a zásnubnÃch prstenů. Policisté nynà muže stÃhajà pro nÄkolik trestných Äinů.</p> 1151 </div> 1152 </div> 1153 </div> 1154 </article> 1155 1156 <div class="text-center"> 1157 <div class="ad-list"> 1158 <div class="ad-title-wrap mb-0 d-flex justify-content-end"> 1159 <span class="ad-title">Reklama</span> 1160</div> 1161 <a href="https://www.123print.cz/" class="banner-link" data-banner-id="63" target="_blank" title="123Print"><img src="https://plzencz.b-cdn.net/upload/Banner/965dbd5d71/123print-1000x200.png" /></a> 1162</div> 1163 </div> 1164 </div> 1165 <div class="col-lg-4 col-md-5 desktop-only"> 1166 <div class="sticky-top sticky-sidebar"> 1167 1168 <div class="static-ads"> 1169 1170 <div class="mb-2 ad-sidebar"> 1171 <div data-sidebar-ad-title hidden> 1172 <div class="ad-title-wrap mb-0 d-flex justify-content-end"> 1173 <span class="ad-title">Reklama</span> 1174</div> 1175 </div> 1176 <!-- PCZ-Sidebar --> 1177 <ins class="sidebar-adsense" 1178 style="display:block" 1179 data-ad-client="ca-pub-1914100961537914" 1180 data-ad-slot="1535357725" 1181 data-ad-format="auto" 1182 data-full-width-responsive="true"></ins> 1183
1183<script> 1184 (function () { 1185 const ad = document.currentScript.previousElementSibling; 1186 const title = ad.parentElement.querySelector('[data-sidebar-ad-title]'); 1187 function updateTitle() { 1188 title.hidden = ad.getAttribute('data-ad-status') !== 'filled'; 1189 } 1190 const statusObserver = new MutationObserver(updateTitle); 1191 statusObserver.observe(ad, { attributes: true, attributeFilter: ['data-ad-status'] }); 1192 updateTitle(); 1193 let initialized = false; 1194 const observer = new ResizeObserver(initialize); 1195 function initialize() { 1196 if (initialized || ad.getBoundingClientRect().width <= 0) return; 1197 initialized = true; 1198 observer.disconnect(); 1199 ad.classList.add('adsbygoogle'); 1200 (window.adsbygoogle = window.adsbygoogle || []).push({}); 1201 } 1202 observer.observe(ad); 1203 initialize(); 1204 })(); 1205 </script>
1205 1206 </div> 1207 1208</div> 1209 <div class="static-ads"> 1210 1211 <div class="mb-2 ad-sidebar"> 1212 <div data-sidebar-ad-title hidden> 1213 <div class="ad-title-wrap mb-0 d-flex justify-content-end"> 1214 <span class="ad-title">Reklama</span> 1215</div> 1216 </div> 1217 <!-- PCZ-Sidebar --> 1218 <ins class="sidebar-adsense" 1219 style="display:block" 1220 data-ad-client="ca-pub-1914100961537914" 1221 data-ad-slot="1535357725" 1222 data-ad-format="auto" 1223 data-full-width-responsive="true"></ins> 1224
1224<script> 1225 (function () { 1226 const ad = document.currentScript.previousElementSibling; 1227 const title = ad.parentElement.querySelector('[data-sidebar-ad-title]'); 1228 function updateTitle() { 1229 title.hidden = ad.getAttribute('data-ad-status') !== 'filled'; 1230 } 1231 const statusObserver = new MutationObserver(updateTitle); 1232 statusObserver.observe(ad, { attributes: true, attributeFilter: ['data-ad-status'] }); 1233 updateTitle(); 1234 let initialized = false; 1235 const observer = new ResizeObserver(initialize); 1236 function initialize() { 1237 if (initialized || ad.getBoundingClientRect().width <= 0) return; 1238 initialized = true; 1239 observer.disconnect(); 1240 ad.classList.add('adsbygoogle'); 1241 (window.adsbygoogle = window.adsbygoogle || []).push({}); 1242 } 1243 observer.observe(ad); 1244 initialize(); 1245 })(); 1246 </script>
1246 1247 </div> 1248 1249</div> 1250 1251 </div> 1252 </div> 1253 </div> 1254 1255 <div class="row"> 1256 <div class="col-md-7 col-lg-8 pl-12"> 1257 1258 <div class="d-flex justify-content-center"> 1259 <ul class="pagination"> 1260 <li class="page-item disabled" data-duration="0.3" data-opacity="0.2"> 1261 <a class="btn has-ripple page-link" href="#">â NovÄjÅ¡Ã</a> 1262 </li> 1263 <li class="page-item" data-duration="0.3" data-opacity="0.2"> 1264 <a href="/Aktualne?page=2" class="btn has-ripple page-link">Staršà â</a> 1265 </li> 1266 </ul> 1267 </div> 1268 1269 </div> 1270 <div class="col-lg-4 col-md-5 pt-4 px-3 desktop-only"> 1271 </div> 1272 </div> 1273 1274 </div> 1275</div> 1276 1277 </div> 1278 1279 <footer class="footer-area pb-2"> 1280 <div class="container"> 1281 <div class="row col-lg-12"> 1282 <div class="col-lg-8 footer-links"> 1283 <div class="footer-widget footer-nav small-res-center"> 1284 <div class="row"> 1285 <div class="col-lg-4 small"> 1286 <ul class="footer-nav list-inline text-center"> 1287 <li><a href="javascript:void(0);" data-cc="c-settings">Nastavenà cookies</a></li> 1288 <li><a href="/ochrana_osobnich_udaju" alt="Ochrana osobnÃch údajů">Ochrana osobnÃch údajů</a></li> 1289 <li><a href="/zpracovani_osobnich_udaju" alt="Zpracovánà osobnÃch údajů">Zpracovánà osobnÃch údajů</a></li> 1290 <li><a href="/Redakce" alt="Redakce">Redakce</a></li> 1291 <li><a href="/reklama">Reklama</a></li> 1292 <li><a href="/eticky-kodex">Etický kodex</a></li> 1293 </ul> 1294 </div> 1295 <hr class="mobile-only" /> 1296 <div class="col-lg-4 small"> 1297 <ul class="footer-nav list-inline text-center"> 1298 <li><a href="/zpravodajstvi">ZpravodajstvÃ</a></li> 1299 <li><a href="/kultura">Kultura</a></li> 1300 <li><a href="/sport">Sport</a></li> 1301 <li><a href="/video">Video</a></li> 1302 1303 </ul> 1304 </div> 1305 <div class="col-lg-4 small"> 1306 <ul class="footer-nav list-inline text-center"> 1307 <li><a href="/krimi">Krimi</a></li> 1308 <li><a href="/doprava">Doprava</a></li> 1309 <li><a href="/lifestyle">Lifestyle</a></li> 1310 <li><a href="/Webkamera">Webkamera</a></li> 1311 </ul> 1312 </div> 1313 </div> 1314 </div> 1315 <hr /> 1316 <div class="row"> 1317 <div class="col-lg-4 small text-center"> 1318 <a href="https://www.euronovagroup.com/" target="_blank"><i class="fa fa-copyright"></i> <b>Euronova Group</b></a> 1319 </div> 1320 <div class="col-lg-4 small text-center"> 1321 <a href="/vseobecne_podminky" alt="VÅ¡eobecné podmÃnky">VÅ¡eobecné podmÃnky</a> 1322 </div> 1323 <div class="col-lg-4 small text-center"> 1324 </div> 1325 </div> 1326 </div> 1327 <div class="col-lg-4 small my-auto"> 1328 <div class="footer-logo"> 1329 <img src="/images/plzencz-wlogo-w.svg" /> 1330 </div> 1331 </div> 1332 </div> 1333 1334 </div> 1335</footer> 1336 1337 <div id="da_regiotv1_sticky" class="mobile-only"></div> 1338 1339 <a id="back-to-top" class="btn btn-primary shadow30 btn-lg back-to-top footer-back" role="button" alt="ZpÄt na zaÄátek"><span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="bi bi-caret-up-fill" fill="white" id="caret-up-fill" style="width: 16px;height: 16px;margin-bottom: 6px;"><path d="M7.247 4.86l-4.796 5.481c-.566.647-.106 1.659.753 1.659h9.592a1 1 0 00.753-1.659l-4.796-5.48a1 1 0 00-1.506 0z"></path></svg></span></a> 1340 1341
1341<script src="/js/fancybox.umd.js"></script>
1341 1342
1342<script src="/js/back-to-top.js"></script>
1342 1343
1343<script src="/js/build.min.js?=build530"></script>
1343 1344
1344<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.all.min.js"></script>
1344 1345
1345<script src="https://vjs.zencdn.net/7.17.0/video.min.js"></script>
1345 1346
1346<script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-youtube/2.6.1/Youtube.min.js"></script>
1346 1347
1347<script src="/js/CookieConsent.js"></script>
1347 1348
1348<script src="/js/CookieConsent-Config.js?=v26"></script>
1348 1349
1349<script src="/js/util.js?v=hZZP4wnY4kCQ036mkCrkbAxRbYmkeM-0yb6Z4jr9Msg"></script>
1349 1350 1351
1352<script> 1353 const activeCooldownTimers = new Map(); // surveyId â { intervalId, endTime } 1354 1355 const formatTime = (secs) => { 1356 const m = Math.floor(secs / 60); 1357 const s = secs % 60; 1358 return `${m}:${s.toString().padStart(2, '0')}`; 1359 }; 1360 1361 const createCapabilityError = (code, message, details) => ({ ok: false, code, message, details }); 1362 1363 function checkSurveyCapabilities() { 1364 if (typeof window.fetch !== 'function' || typeof window.Promise !== 'function' || typeof window.JSON !== 'object') { 1365 return createCapabilityError('SURVEY_CAP_01', 'Váš prohlÞeÄ nepodporuje vÅ¡echny funkce potÅebné pro anketu.'); 1366 } 1367 1368 if (typeof document.querySelectorAll !== 'function' || typeof Element === 'undefined' || !Element.prototype.closest) { 1369 return createCapabilityError('SURVEY_CAP_01', 'Váš prohlÞeÄ nepodporuje vÅ¡echny funkce potÅebné pro anketu.'); 1370 } 1371 1372 try { 1373 const testCookieName = 'survey_cap_check'; 1374 document.cookie = `${testCookieName}=1; path=/; SameSite=Lax`; 1375 const cookieReadable = document.cookie.includes(`${testCookieName}=1`); 1376 document.cookie = `${testCookieName}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax`; 1377 1378 if (!cookieReadable) { 1379 return createCapabilityError('SURVEY_CAP_02', 'V tomto režimu prohlÞeÄe nelze spolehlivÄ použÃvat technické cookies.'); 1380 } 1381 } catch (error) { 1382 return createCapabilityError('SURVEY_CAP_02', 'V tomto režimu prohlÞeÄe nelze spolehlivÄ použÃvat technické cookies.', error); 1383 } 1384 1385 return { ok: true }; 1386 } 1387
1388 function renderSurveyDiagnostic(container, diag) { 1389 if (!container) return; 1390 1391 const code = diag?.code ? escapeHtml(diag.code) : 'SURVEY_JS_01'; 1392 const message = escapeHtml(diag?.message || 'Anketu se nepodaÅilo inicializovat.'); 1393 1394 container.innerHTML = ` 1395 <div class="survey-diagnostic" role="alert"> 1396 <div class="survey-diagnostic-title">Anketu se nepodaÅilo naÄÃst</div> 1397 <div class="survey-diagnostic-message">${message}</div> 1398 <div class="survey-diagnostic-help">Zkuste prosÃm obnovit stránku, otevÅÃt ji v anonymnÃm oknÄ nebo doÄasnÄ vypnout blokovánà skriptů pro tento web.</div> 1399 <div class="survey-diagnostic-code">Kód: ${code}</div> 1400 </div> 1401 `; 1402 1403 console.warn(`[${code}] ${diag?.message || 'Survey diagnostic'}`, diag?.details || ''); 1404 } 1405 1406 window.addEventListener('error', (event) => { 1407 console.error('[SURVEY_JS_01] Survey runtime error', event?.error || event?.message || event); 1408 }); 1409 1410 window.addEventListener('unhandledrejection', (event) => { 1411 console.error('[SURVEY_JS_01] Survey unhandled rejection', event?.reason || event); 1412 }); 1413 1414 document.addEventListener('DOMContentLoaded', function() { 1415 // Find all survey placeholders in page content 1416 const surveyEmbeds = document.querySelectorAll('div.survey-embed[data-survey-id]'); 1417 const capability = checkSurveyCapabilities(); 1418 1419 surveyEmbeds.forEach(placeholder => { 1420 const surveyId = parseInt(placeholder.dataset.surveyId); 1421 if (isNaN(surveyId)) return; 1422 1423 // Replace placeholder with loading container 1424 const container = document.createElement('div'); 1425 container.id = `survey-container-${surveyId}`; 1426 container.className = 'survey-container'; 1427 container.innerHTML = '<div class="survey-loading">NaÄÃtánà ankety...</div>'; 1428 1429 placeholder.replaceWith(container); 1430 1431 if (!capability.ok) { 1432 renderSurveyDiagnostic(container, capability); 1433 return; 1434 } 1435 1436 // Load and render survey 1437 loadSurvey(surveyId, container); 1438 }); 1439 }); 1440 1441 document.addEventListener('visibilitychange', async () => { 1442 if (document.visibilityState !== 'visible') return; 1443 if (activeCooldownTimers.size === 0) return; 1444 1445 for (const [surveyId, timerData] of Array.from(activeCooldownTimers.entries())) { 1446 // Zkontroluj lokálnÄ â bez server roundtrip (klÃÄové pro hibernaci) 1447 if (Date.now() >= timerData.endTime) { 1448 clearInterval(timerData.intervalId); 1449 activeCooldownTimers.delete(surveyId); 1450 1451 const container = document.getElementById(`survey-container-${surveyId}`); 1452 if (container) { 1453 const form = container.querySelector(`#survey-form-${surveyId}`); 1454 const submitBtn = form?.querySelector('button[type="submit"]'); 1455 if (submitBtn) { 1456 submitBtn.textContent = 'Hlasovat v anketÄ'; 1457 submitBtn.disabled = false; 1458 submitBtn.style.opacity = '1'; 1459 submitBtn.style.cursor = 'pointer'; 1460 } 1461 if (form) { 1462 form.querySelectorAll('input').forEach(el => el.disabled = false); 1463 } 1464 container.querySelectorAll('.survey-gdpr-toggle').forEach(btn => btn.disabled = false); 1465 } 1466 continue; 1467 } 1468 1469 // Timer stále bÄžà â re-sync se serverem pro pÅesnost 1470 // NejdÅÃv okamžitÄ oprav zmrazený text (eliminuje viditelný skok) 1471 const container = document.getElementById(`survey-container-${surveyId}`); 1472 if (container) { 1473 const localRemaining = Math.max(0, Math.floor((timerData.endTime - Date.now()) / 1000)); 1474 const form = container.querySelector(`#survey-form-${surveyId}`); 1475 const submitBtn = form?.querySelector('button[type="submit"]'); 1476 if (submitBtn && localRemaining > 0) { 1477 submitBtn.textContent = `â±ï¸ Hlasovat můžete znovu za ${formatTime(localRemaining)}`; 1478 } 1479 } 1480 1481 try { 1482 const response = await fetch(`/api/survey/get/${surveyId}`, { cache: 'no-store' }); 1483 if (!response.ok) continue; 1484 if (!activeCooldownTimers.has(surveyId)) continue; // expiroval bÄhem fetch 1485 1486 const survey = await response.json(); 1487 const container = document.getElementById(`survey-container-${surveyId}`); 1488 if (!container) continue; 1489 1490 if (survey.secondsRemainingBeforeCooldownExpires > 0) { 1491 startCooldownTimer(container, surveyId, survey.secondsRemainingBeforeCooldownExpires); 1492 } else { 1493 clearInterval(activeCooldownTimers.get(surveyId).intervalId); 1494 activeCooldownTimers.delete(surveyId); 1495 1496 const form = container.querySelector(`#survey-form-${surveyId}`); 1497 const submitBtn = form?.querySelector('button[type="submit"]'); 1498 if (submitBtn) { 1499 submitBtn.textContent = 'Hlasovat v anketÄ'; 1500 submitBtn.disabled = false;
1501 submitBtn.style.opacity = '1'; 1502 submitBtn.style.cursor = 'pointer'; 1503 } 1504 if (form) { 1505 form.querySelectorAll('input').forEach(el => el.disabled = false); 1506 } 1507 container.querySelectorAll('.survey-gdpr-toggle').forEach(btn => btn.disabled = false); 1508 } 1509 } catch (e) { 1510 console.error(`Survey re-sync error for survey ${surveyId}:`, e); 1511 } 1512 } 1513 }); 1514 1515 async function loadSurvey(surveyId, container) { 1516 try { 1517 const response = await fetch(`/api/survey/get/${surveyId}`, { cache: 'no-store' }); 1518 1519 if (!response.ok) { 1520 const error = await response.json(); 1521 container.innerHTML = `<div class="survey-error">${escapeHtml(error.error || 'NepodaÅilo se naÄÃst anketu')}</div>`; 1522 return; 1523 } 1524 1525 const survey = await response.json(); 1526 renderSurveyForm(survey, container); 1527 } catch (error) { 1528 console.error('Survey load error:', error); 1529 renderSurveyDiagnostic(container, { 1530 code: 'SURVEY_JS_01', 1531 message: 'Inicializace ankety selhala.', 1532 details: error 1533 }); 1534 } 1535 } 1536
1537 function renderSurveyForm(survey, container) { 1538 let html = ` 1539 <div class="survey mt-2 mb-2 pt-1 pb-1 radius"> 1540 <div class="px-3"> 1541 `; 1542 1543 survey.questions.forEach(question => { 1544 html += ` 1545 <div class="small gdpr"> 1546 Hlasovánà v anketÄ je anonymnà â nezjišťujeme vaÅ¡e jméno, e-mail ani polohu. PoužÃváme pouze jednoduchý technický identifikátor k zajiÅ¡tÄnà férových výsledků. <a href="/ochrana_osobnich_udaju">VÃce informacÃ</a>. 1547 <hr /> 1548 </div> 1549 <div class="survey-question-header mb-2"> 1550 <button type="button" class="survey-gdpr-toggle" aria-label="GDPR informace"><i class="fa-regular fa-circle-info"></i></button> 1551 <h4 class="mb-2">${escapeHtml(question.questionText)}</h4> 1552 </div> 1553 1554 <div class="survey-options"> 1555 `; 1556 1557 question.answers.forEach(answer => { 1558 html += ` 1559 <div class="survey-option mb-2"> 1560 <div class="d-flex justify-content-between align-items-center mb-1"> 1561 <label class="mb-0"> 1562 <input type="radio" name="question-${question.questionId}" value="${answer.answerId}" class="me-2" required> 1563 <span>${escapeHtml(answer.answerText)}</span> 1564 </label> 1565 <span class="badge bg-secondary" data-answer-percent="${answer.answerId}">${answer.votePercentage}%</span> 1566 </div> 1567 <div class="progress mb-1" style="height: 7px;"> 1568 <div class="progress-bar bg-plzen" role="progressbar" data-answer-bar="${answer.answerId}" style="width: ${answer.votePercentage}%;"></div> 1569 </div> 1570 </div> 1571 `; 1572 }); 1573 1574 html += ` 1575 </div> 1576 `; 1577 }); 1578 1579 html += ` 1580 <div class="text-center mt-3"> 1581 <button class="btn btn-secondary btn-sm" type="submit" data-survey-id="${survey.surveyId}">Hlasovat v anketÄ</button> 1582 <div id="survey-message-${survey.surveyId}" class="d-none"> 1583 <div class="alert alert-success mb-0" role="alert"> 1584 <strong>DÄkujeme!</strong> Váš hlas byl zaregistrován. 1585 </div> 1586 </div> 1587 </div> 1588 </div> 1589 </div> 1590 `; 1591 1592 container.innerHTML = `<form id="survey-form-${survey.surveyId}">${html}</form>`; 1593 1594 const form = container.querySelector(`#survey-form-${survey.surveyId}`); 1595 if (!form) { 1596 renderSurveyDiagnostic(container, { 1597 code: 'SURVEY_EVT_01', 1598 message: 'NepodaÅilo se inicializovat formuláŠankety.' 1599 }); 1600 return; 1601 } 1602 1603 const submitBtn = form.querySelector('button[type="submit"]'); 1604 if (!submitBtn) { 1605 renderSurveyDiagnostic(container, { 1606 code: 'SURVEY_EVT_02', 1607 message: 'NepodaÅilo se inicializovat odeslánà ankety.' 1608 }); 1609 return; 1610 } 1611 1612 // Attach GDPR toggle handlers 1613 container.querySelectorAll('.survey-gdpr-toggle').forEach(btn => { 1614 btn.addEventListener('click', () => { 1615 const notice = btn.closest('.survey-question-header').previousElementSibling; 1616 if (notice) notice.classList.toggle('gdpr-open'); 1617 }); 1618 }); 1619 1620 // Attach form submission handler 1621 try { 1622 form.addEventListener('submit', (e) => handleSurveySubmit(e, survey)); 1623 form.dataset.surveySubmitBound = '1'; 1624 } catch (error) { 1625 renderSurveyDiagnostic(container, { 1626 code: 'SURVEY_EVT_02', 1627 message: 'NepodaÅilo se inicializovat odeslánà ankety.', 1628 details: error 1629 }); 1630 return; 1631 } 1632 1633 // Typ 0) - anketa po termÃnu 1634 if (survey.isExpired) { 1635 disableSurveyForm(container, survey.surveyId); 1636 if (submitBtn) { 1637 submitBtn.style.display = 'none'; 1638 } 1639 const messageDiv = container.querySelector(`#survey-message-${survey.surveyId}`); 1640 if (messageDiv) { 1641 messageDiv.classList.remove('d-none'); 1642 messageDiv.innerHTML = ` 1643 <div class="alert alert-secondary mb-0" role="alert"> 1644 Anketa již skonÄila a nenà možné znovu hlasovat. 1645 </div> 1646 `; 1647 } 1648 return; 1649 } 1650 1651 // Typ a) - bez opakovánà hlasovánà - uživatel už hlasoval 1652 if (!survey.allowMultipleSubmissions && survey.userHasAlreadyVoted) { 1653 disableSurveyForm(container, survey.surveyId); 1654 // Schovat tlaÄÃtko a zobrazit success message 1655 const submitBtn = form.querySelector('button[type="submit"]'); 1656 if (submitBtn) { 1657 submitBtn.style.display = 'none'; 1658 } 1659 const messageDiv = container.querySelector(`#survey-message-${survey.surveyId}`); 1660 if (messageDiv) { 1661 messageDiv.classList.remove('d-none'); 1662 messageDiv.innerHTML = ` 1663 <div class="alert alert-info mb-0" role="alert"> 1664 <strong>DÄkujeme!</strong> Váš hlas byl zaznamenán. 1665 </div> 1666 `; 1667 } 1668 } 1669 // Typ b) - s opakovánÃm hlasovánà - cooldown aktivnà 1670 else if (survey.allowMultipleSubmissions && survey.secondsRemainingBeforeCooldownExpires > 0) { 1671 disableSurveyForm(container, survey.surveyId); 1672 startCooldownTimer(container, survey.surveyId, survey.secondsRemainingBeforeCooldownExpires); 1673 } 1674 // VÅ¡echny ostatnà pÅÃpady - ovÄÅ eligibilitu 1675 else { 1676 checkVotingEligibility(survey, container); 1677 } 1678 } 1679 1680 async function checkVotingEligibility(survey, container) { 1681 try { 1682 const response = await fetch('/api/survey/can-vote', { 1683 method: 'POST', 1684 headers: { 1685 'Content-Type': 'application/json' 1686 }, 1687 body: JSON.stringify({ surveyId: survey.surveyId }) 1688 }); 1689 1690 if (!response.ok) return; 1691 1692 const data = await response.json(); 1693 if (!data.canVote) { 1694 const messageDiv = container.querySelector(`#survey-message-${survey.surveyId}`); 1695 1696 // Pokud tam nenà už success alert, zobraz error message 1697 if (messageDiv && !messageDiv.innerHTML.includes('DÄkujeme')) { 1698 disableSurveyForm(container, survey.surveyId, data.reason); 1699 } 1700 1701 // Show cooldown countdown if applicable 1702 if (data.secondsRemaining > 0) { 1703 startCooldownTimer(container, survey.surveyId, data.secondsRemaining); 1704 } 1705 } 1706 } catch (error) { 1707 console.error('Eligibility check error:', error); 1708 } 1709 } 1710 1711 async function handleSurveySubmit(event, survey) { 1712 event.preventDefault(); 1713 1714 const form = event.target; 1715 const container = form.closest('.survey-container') ?? form.parentElement; 1716 const messageDiv = container.querySelector(`#survey-message-${survey.surveyId}`); 1717 1718 // Gather answers 1719 const answers = []; 1720 survey.questions.forEach(question => { 1721 const selected = form.querySelector(`input[name="question-${question.questionId}"]:checked`); 1722 if (selected) { 1723 answers.push({ 1724 questionId: question.questionId, 1725 answerId: parseInt(selected.value) 1726 }); 1727 } 1728 }); 1729 1730 if (answers.length !== survey.questions.length) { 1731 if (messageDiv) { 1732 messageDiv.classList.remove('d-none'); 1733 messageDiv.innerHTML = ` 1734 <div class="alert alert-danger mb-0" role="alert"> 1735 ProsÃm odpovÄzte na vÅ¡echny otázky 1736 </div> 1737 `; 1738 } 1739 return; 1740 } 1741 1742 // Disable form during submission 1743 form.querySelectorAll('input, button').forEach(el => el.disabled = true); 1744 1745 try { 1746 const response = await fetch('/api/survey/submit', { 1747 method: 'POST', 1748 headers: { 1749 'Content-Type': 'application/json' 1750 }, 1751 body: JSON.stringify({ 1752 surveyId: survey.surveyId, 1753 answers: answers 1754 }) 1755 }); 1756 1757 const result = await response.json(); 1758 1759 if (!response.ok) { 1760 if (messageDiv) { 1761 messageDiv.classList.remove('d-none'); 1762 messageDiv.innerHTML = ` 1763 <div class="alert alert-danger mb-0" role="alert"> 1764 ${escapeHtml(result.error || 'Hlasovánà se nezdaÅilo')} 1765 </div> 1766 `; 1767 } 1768 form.querySelectorAll('input, button').forEach(el => el.disabled = false); 1769 1770 if (result.secondsRemaining > 0) { 1771 startCooldownTimer(container, survey.surveyId, result.secondsRemaining); 1772 } 1773 return; 1774 } 1775 1776 // Success: Update results and disable form 1777 if (messageDiv) { 1778 messageDiv.classList.remove('d-none'); 1779 messageDiv.innerHTML = ` 1780 <div class="alert alert-success mb-0" role="alert"> 1781 <strong>DÄkujeme!</strong> Váš hlas byl zaregistrován. 1782 </div> 1783 `; 1784 } 1785 disableSurveyForm(container, survey.surveyId); 1786 updateSurveyResults(container, result.results); 1787 container.querySelectorAll('.survey-gdpr-toggle').forEach(btn => btn.disabled = false); 1788 1789 // Typ a) - bez opakovánà - schovat tlaÄÃtko po hlasovánà 1790 if (!survey.allowMultipleSubmissions) { 1791 const submitBtn = form.querySelector('button[type="submit"]'); 1792 if (submitBtn) { 1793 submitBtn.style.display = 'none'; 1794 } 1795 } else if (result.secondsRemainingBeforeCooldownExpires > 0) { 1796 // Typ b) - s opakovánÃm - spusÅ¥ countdown pÅÃmo z dat odpovÄdi 1797 startCooldownTimer(container, survey.surveyId, result.secondsRemainingBeforeCooldownExpires); 1798 } 1799 } catch (error) { 1800 console.error('Submission error:', error); 1801 if (messageDiv) { 1802 messageDiv.classList.remove('d-none'); 1803 messageDiv.innerHTML = ` 1804 <div class="alert alert-danger mb-0" role="alert"> 1805 NepodaÅilo se odeslat váš hlas. Zkuste prosÃm znovu. 1806 </div> 1807 `; 1808 } 1809 form.querySelectorAll('input, button').forEach(el => el.disabled = false); 1810 } 1811 } 1812 1813 function disableSurveyForm(container, surveyId, message) { 1814 const form = container.querySelector(`#survey-form-${surveyId}`); 1815 if (form) { 1816 form.querySelectorAll('input').forEach(el => el.disabled = true); 1817 const submitBtn = form.querySelector('button[type="submit"]'); 1818 if (submitBtn) { 1819 submitBtn.disabled = true; 1820 // Pokud nenà zpráva, je to po úspÄÅ¡ném hlasovánà - nechej tlaÄÃtko viditelné s textem "Hlasovat" 1821 if (!message) { 1822 submitBtn.textContent = 'HlasovánÃ'; 1823 submitBtn.style.opacity = '0.6'; 1824 submitBtn.style.cursor = 'not-allowed'; 1825 } 1826 } 1827 } 1828 1829 const messageDiv = container.querySelector(`#survey-message-${surveyId}`); 1830 if (message && messageDiv) { 1831 messageDiv.classList.remove('d-none'); 1832 messageDiv.innerHTML = ` 1833 <div class="alert alert-info mb-0" role="alert"> 1834 ${escapeHtml(message)} 1835 </div> 1836 `; 1837 } 1838 } 1839 1840 function updateSurveyResults(container, results) {
1841 results.forEach(result => { 1842 const percentBadge = container.querySelector(`[data-answer-percent="${result.answerId}"]`); 1843 const progressBar = container.querySelector(`[data-answer-bar="${result.answerId}"]`); 1844 1845 if (percentBadge) percentBadge.textContent = `${Math.round(result.votePercentage)}%`; 1846 if (progressBar) progressBar.style.width = `${Math.round(result.votePercentage)}%`; 1847 }); 1848 } 1849 1850 function startCooldownTimer(container, surveyId, secondsRemaining) { 1851 // VyÄisti starý timer pro tuto anketu, pokud existuje 1852 if (activeCooldownTimers.has(surveyId)) { 1853 clearInterval(activeCooldownTimers.get(surveyId).intervalId); 1854 } 1855 1856 const endTime = Date.now() + (secondsRemaining * 1000); 1857 const messageDiv = container.querySelector(`#survey-message-${surveyId}`); 1858 const form = container.querySelector(`#survey-form-${surveyId}`); 1859 const submitBtn = form ? form.querySelector('button[type="submit"]') : null; 1860 1861 // Skryj messageDiv bÄhem countdownu - countdown jde do tlaÄÃtka 1862 if (messageDiv) { 1863 messageDiv.classList.add('d-none'); 1864 } 1865 1866 // Zobraz Äas okamžitÄ (bez Äekánà na prvnà tick) 1867 if (submitBtn) { 1868 submitBtn.textContent = `â±ï¸ Hlasovat můžete znovu za ${formatTime(secondsRemaining)}`; 1869 submitBtn.disabled = true; 1870 submitBtn.style.opacity = '0.7'; 1871 submitBtn.style.cursor = 'not-allowed'; 1872 } 1873 1874 const intervalId = setInterval(() => { 1875 const remaining = Math.max(0, Math.floor((endTime - Date.now()) / 1000)); 1876 1877 if (submitBtn) { 1878 submitBtn.textContent = `â±ï¸ Hlasovat můžete znovu za ${formatTime(remaining)}`; 1879 submitBtn.disabled = true; 1880 submitBtn.style.opacity = '0.7'; 1881 submitBtn.style.cursor = 'not-allowed'; 1882 } 1883 1884 if (remaining <= 0) { 1885 clearInterval(intervalId); 1886 activeCooldownTimers.delete(surveyId); 1887 1888 if (submitBtn) { 1889 submitBtn.textContent = 'Hlasovat v anketÄ'; 1890 submitBtn.disabled = false; 1891 submitBtn.style.opacity = '1'; 1892 submitBtn.style.cursor = 'pointer'; 1893 } 1894 if (form) { 1895 form.querySelectorAll('input').forEach(el => el.disabled = false); 1896 } 1897 container.querySelectorAll('.survey-gdpr-toggle').forEach(btn => btn.disabled = false); 1898 } 1899 }, 1000); 1900 1901 activeCooldownTimers.set(surveyId, { intervalId, endTime }); 1902 } 1903 1904 function escapeHtml(text) { 1905 if (!text) return ''; 1906 const div = document.createElement('div'); 1907 div.textContent = text; 1908 return div.innerHTML; 1909 } 1910</script>
1910 1911 1912 <noscript><style>div.quiz-embed[data-quiz-id]::after { content: ' Pro vyplnÄnà kvÃzu zapnÄte JavaScript.'; }</style></noscript>
1913<script> 1914(() => { 1915 const element = (tag, className, text) => { 1916 const node = document.createElement(tag); 1917 node.className = className || ''; 1918 if (text !== undefined) node.textContent = text; 1919 return node; 1920 }; 1921 // All instances share token loading to avoid competing first-request antiforgery cookies. 1922 let tokenRequest; 1923 async function json(url, options) { 1924 const response = await fetch(url, { credentials: 'same-origin', cache: 'no-store', ...options }); 1925 const data = await response.json().catch(() => ({})); 1926 if (!response.ok) throw new Error(data.error || (response.status === 400 1927 ? 'Odeslánà se nezdaÅilo. Zkontrolujte odpovÄdi a povolenà cookies.' 1928 : 'KvÃz se nepodaÅilo naÄÃst nebo odeslat. Zkuste to prosÃm pozdÄji.')); 1929 return data; 1930 } 1931 const token = () => tokenRequest || (tokenRequest = json('/api/quiz/token').catch(error => { 1932 tokenRequest = null; 1933 throw error; 1934 })); 1935 function preservePosition(container, change) { 1936 const x = window.scrollX, y = window.scrollY; 1937 change(); 1938 window.scrollTo({ left: x, top: y, behavior: 'instant' }); 1939 } 1940 function start() { 1941 document.querySelectorAll('div.quiz-embed[data-quiz-id]').forEach((placeholder, index) => { 1942 const id = Number(placeholder.dataset.quizId); 1943 const container = element('div', 'quiz survey mt-2 mb-2 pt-1 pb-1 radius'); 1944 container.id = `quiz-instance-${index}`; 1945 const body = element('div', 'quiz-body'); 1946 container.append(body); 1947 placeholder.replaceWith(container); 1948 async function load() { 1949 body.replaceChildren(element('p', '', 'NaÄÃtánà kvÃzuâ¦')); 1950 try { 1951 if (!Number.isSafeInteger(id) || id <= 0) throw new Error('KvÃz nenà dostupný.'); 1952 const quiz = await json(`/api/quiz/get/${id}`); 1953 if (!quiz.questions.length || quiz.questions.length > 100 || quiz.questions.some(q => !q.answers.length)) 1954 throw new Error('Tento kvÃz nynà nelze vyplnit.'); 1955 preservePosition(container, () => render(quiz)); 1956 } catch (error) { 1957 preservePosition(container, () => { 1958 const message = element('p', 'alert alert-info', error.message); 1959 message.setAttribute('role', 'alert'); 1960 const retry = element('button', 'btn btn-secondary btn-sm', 'NaÄÃst znovu'); 1961 retry.type = 'button'; 1962 retry.addEventListener('click', load); 1963 body.replaceChildren(message, retry); 1964 }); 1965 } 1966 } 1967 function render(quiz) { 1968 const header = element('div', 'quiz-header'); 1969 const counter = element('span', 'quiz-counter'); 1970 const info = element('button', 'survey-gdpr-toggle quiz-info'); 1971 info.type = 'button'; 1972 info.setAttribute('aria-label', 'Informace o zpracovánà osobnÃch údajů'); 1973 info.setAttribute('aria-expanded', 'false'); 1974 info.setAttribute('aria-controls', `${container.id}-privacy`); 1975 const icon = element('i', 'fa-regular fa-circle-info'); 1976 icon.setAttribute('aria-hidden', 'true'); 1977 info.append(icon); 1978 const meta = element('div', 'quiz-meta'); 1979 meta.append(counter, info); 1980 header.append(element('h4', 'quiz-title mb-2', quiz.title), meta); 1981 const privacy = element('div', 'small gdpr quiz-privacy'); 1982 privacy.id = `${container.id}-privacy`; 1983 privacy.setAttribute('inert', ''); 1984 privacy.append(document.createTextNode('Pro vyplnÄnà kvÃzu nezadáváte jméno ani e-mail. Ukládáme vaÅ¡e odpovÄdi, Äas odevzdánÃ, stránku a technický identifikátor v cookie pro vyhodnocenà a statistiku. ')); 1985 const privacyLink = element('a', '', 'VÃce informacà o ochranÄ osobnÃch údajů.'); 1986 privacyLink.href = '/ochrana_osobnich_udaju';
1987 privacy.append(privacyLink, element('hr')); 1988 info.addEventListener('click', () => preservePosition(container, () => { 1989 const open = privacy.classList.toggle('gdpr-open'); 1990 privacy.toggleAttribute('inert', !open); 1991 info.setAttribute('aria-expanded', String(open)); 1992 })); 1993 body.replaceChildren(privacy, header); 1994 if (quiz.description) body.append(element('p', 'quiz-description', quiz.description)); 1995 const form = element('form'); 1996 form.noValidate = true; 1997 const fields = new Map(); 1998 quiz.questions.forEach((question, questionIndex) => { 1999 const field = element('fieldset', 'quiz-question'); 2000 field.hidden = questionIndex !== 0; 2001 const legend = element('legend', 'quiz-legend', question.questionText); 2002 legend.tabIndex = -1; 2003 field.append(legend); 2004 question.answers.forEach(answer => { 2005 const label = element('label', 'quiz-option'); 2006 const input = element('input', 'me-2'); 2007 input.type = 'radio'; 2008 input.name = `${container.id}-question-${question.questionId}`; 2009 input.value = answer.answerId; 2010 input.required = true; 2011 label.append(input, element('span', '', answer.answerText)); 2012 field.append(label); 2013 }); 2014 fields.set(question.questionId, { field }); 2015 form.append(field); 2016 }); 2017 const message = element('div', 'quiz-message'); 2018 message.setAttribute('aria-live', 'polite'); 2019 message.setAttribute('aria-atomic', 'true'); 2020 const controls = element('div', 'quiz-controls'); 2021 const submit = element('button', 'btn btn-secondary btn-sm', 'HodnocenÃ'); 2022 submit.type = 'submit'; 2023 const retry = element('button', 'btn btn-secondary btn-sm', 'Zkusit znovu'); 2024 retry.type = 'button'; 2025 retry.hidden = true; 2026 retry.addEventListener('click', () => preservePosition(container, () => { 2027 render(quiz); 2028 body.querySelector('legend').focus({ preventScroll: true }); 2029 })); 2030 controls.append(submit, retry); 2031 form.append(controls, message); 2032 body.append(form); 2033 let current = 0; 2034 let busy = false, complete = false; 2035 function updateSubmitState() { 2036 submit.disabled = busy || complete || !fields.get(quiz.questions[current].questionId).field.querySelector('input:checked'); 2037 } 2038 form.addEventListener('change', updateSubmitState); 2039 function showQuestion(focus) { 2040 fields.forEach(({ field }, questionId) => field.hidden = questionId !== quiz.questions[current].questionId); 2041 counter.textContent = `${current + 1}/${quiz.questions.length}`; 2042 counter.setAttribute('aria-label', `Otázka ${current + 1} z ${quiz.questions.length}`); 2043 submit.textContent = current === quiz.questions.length - 1 ? 'HodnocenÃ' : 'Dalšà otázka'; 2044 message.textContent = ''; 2045 updateSubmitState(); 2046 if (focus) { 2047 const nextField = fields.get(quiz.questions[current].questionId).field; 2048 nextField.classList.add('quiz-enter'); 2049 nextField.querySelector('legend').focus({ preventScroll: true }); 2050 } 2051 } 2052 showQuestion(false); 2053 form.addEventListener('submit', async event => { 2054 event.preventDefault(); 2055 if (busy || complete) return; 2056 const activeField = fields.get(quiz.questions[current].questionId).field; 2057 if (!activeField.querySelector('input:checked')) { 2058 activeField.setAttribute('aria-invalid', 'true'); 2059 message.textContent = 'Vyberte prosÃm odpovÄÄ.'; 2060 return; 2061 } 2062 activeField.removeAttribute('aria-invalid'); 2063 if (current < quiz.questions.length - 1) { 2064 preservePosition(container, () => { current++; showQuestion(true); }); 2065 return; 2066 } 2067 const answers = []; 2068 fields.forEach(({ field }, questionId) => { 2069 const checked = field.querySelector('input:checked'); 2070 field.setAttribute('aria-invalid', checked ? 'false' : 'true'); 2071 if (checked) answers.push({ questionId, answerId: Number(checked.value) }); 2072 }); 2073 if (answers.length !== quiz.questions.length) { 2074 message.textContent = 'OdpovÄzte prosÃm na vÅ¡echny otázky.'; 2075 return; 2076 } 2077 busy = true; 2078 submit.disabled = true; 2079 form.setAttribute('aria-busy', 'true'); 2080 form.querySelectorAll('input').forEach(input => input.disabled = true); 2081 message.textContent = 'VyhodnocovánÃâ¦'; 2082 try { 2083 const csrf = await token(); 2084 const result = await json('/api/quiz/submit', { 2085 method: 'POST', 2086 headers: { 'Content-Type': 'application/json', [csrf.headerName]: csrf.token }, 2087 body: JSON.stringify({ quizId: id, answers }) 2088 }); 2089 preservePosition(container, () => { 2090 const summary = element('div', 'quiz-summary quiz-enter'); 2091 const score = element('p', 'quiz-score', `Výsledek: ${result.correctCount} z ${result.questionCount}
2091 (${result.scorePercentage.toLocaleString('cs-CZ')} %)`); 2092 score.tabIndex = -1; 2093 summary.append(score); 2094 const details = element('details', 'quiz-results'); 2095 details.append(element('summary', '', 'Zobrazit odpovÄdi')); 2096 result.questions.forEach(answer => { 2097 const question = quiz.questions.find(q => q.questionId === answer.questionId); 2098 const row = element('div', `quiz-result ${answer.isCorrect ? 'quiz-correct' : 'quiz-incorrect'}`); 2099 row.append( 2100 element('strong', '', question.questionText), 2101 element('div', 'quiz-result-status', answer.isCorrect ? 'VaÅ¡e odpovÄÄ: správná' : 'VaÅ¡e odpovÄÄ: nesprávná') 2102 ); 2103 if (answer.answerStatistics?.length) { 2104 const comparison = element('div', 'quiz-comparison'); 2105 comparison.append(element('div', 'quiz-comparison-title', 'Jak se odpovÃdalo')); 2106 answer.answerStatistics.forEach(stat => { 2107 const option = question.answers.find(a => a.answerId === stat.answerId); 2108 if (!option) return; 2109 const line = element('div', 'quiz-stat'); 2110 const caption = element('span', 'quiz-stat-label'); 2111 const answerText = element('span', '', option.answerText); 2112 const isSelected = stat.answerId === answer.selectedAnswerId; 2113 const isCorrect = answer.correctAnswerIds.includes(stat.answerId); 2114 if (isSelected) line.classList.add('quiz-stat-user-choice'); 2115 const annotation = isSelected 2116 ? 'vaÅ¡e volba' 2117 : (isCorrect ? 'správná odpovÄÄ' : ''); 2118 const statusIcon = element('span', 'quiz-result-icon', isCorrect ? 'â' : 'â'); 2119 statusIcon.setAttribute('role', 'img'); 2120 statusIcon.setAttribute('aria-label', isCorrect ? 'SprávnÄ' : 'Å patnÄ'); 2121 statusIcon.title = isCorrect ? 'SprávnÄ' : 'Å patnÄ'; 2122 caption.append(statusIcon); 2123 if (annotation) answerText.append(element('span', 'quiz-stat-selected', ` (${annotation})`)); 2124 caption.append(answerText); 2125 const track = element('span', 'quiz-stat-track'); 2126 track.setAttribute('aria-hidden', 'true'); 2127 const bar = element('span', 'quiz-stat-bar'); 2128 bar.style.width = `${Math.max(0, Math.min(100, stat.percentage))}%`; 2129 track.append(bar); 2130 line.append(caption, track, element('span', 'quiz-stat-value', `${stat.percentage.toLocaleString('cs-CZ')} %`)); 2131 comparison.append(line); 2132 }); 2133 row.append(comparison); 2134 } 2135 details.append(row); 2136 });
2137 summary.append(details); 2138 counter.textContent = `${quiz.questions.length}/${quiz.questions.length}`; 2139 counter.setAttribute('aria-label', 'KvÃz dokonÄen'); 2140 body.querySelector('.quiz-description')?.remove(); 2141 form.replaceChildren(summary, controls); 2142 complete = true; 2143 submit.hidden = true; 2144 retry.hidden = false; 2145 score.focus({ preventScroll: true }); 2146 }); 2147 } catch (error) { 2148 tokenRequest = null; 2149 message.textContent = error.message; 2150 form.querySelectorAll('input').forEach(input => input.disabled = false); 2151 submit.disabled = false; 2152 } finally { 2153 busy = false; 2154 updateSubmitState(); 2155 form.removeAttribute('aria-busy'); 2156 } 2157 }); 2158 } 2159 load(); 2160 }); 2161 } 2162 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start); 2163 else start(); 2164})(); 2165</script>
2165 2166 2167 2168 2169 2170</body> 2171</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.