No files matched your search
@@ -0,0 +1 @@
|
|||||||
|
.venv/
|
||||||
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 81 KiB |
|
After Width: | Height: | Size: 190 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 265 KiB |
|
After Width: | Height: | Size: 246 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 155 KiB |
@@ -4,6 +4,16 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Cene in reference - Prosberry</title>
|
<title>Cene in reference - Prosberry</title>
|
||||||
|
<meta name="description" content="Pregled cen storitev Prosberry za tečaje angleščine, albanščine in slovenščine ter medkulturno posredovanje. Preberite reference zadovoljnih strank in spoznajte strokovnost Amre Kurešepi Zulji.">
|
||||||
|
<meta name="keywords" content="cene, cenik, reference, mnenja strank, tečaji angleščine, medkulturno posredovanje, Prosberry, Amra Kurešepi Zulji">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +24,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -237,8 +247,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -4,6 +4,17 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Cene in sodelovanja - Prosberry</title>
|
<title>Cene in sodelovanja - Prosberry</title>
|
||||||
|
<meta name="description" content="Za informacije o cenah storitev Prosberry in možnostih sodelovanja nas kontaktirajte. Nudimo tečaje angleščine, medkulturno posredovanje in delavnice.">
|
||||||
|
<meta name="keywords" content="cene, sodelovanje, Prosberry, tečaji angleščine, medkulturno posredovanje, delavnice, cenik">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="canonical" href="https://www.prosberry.si/cene-in-sodelovanja/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +25,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -146,8 +157,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -4,6 +4,17 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Delavnice - Prosberry</title>
|
<title>Delavnice - Prosberry</title>
|
||||||
|
<meta name="description" content="Pregled vseh delavnic Prosberry za šole, vrtce in zaposlene. Izboljšajte vključevanje priseljencev, sodelovanje s starši in strokovni razvoj ekipe z našimi strokovno pripravljenimi vsebinami.">
|
||||||
|
<meta name="keywords" content="delavnice, šole, vrtci, zaposleni, vključevanje priseljencev, sodelovanje s starši, strokovni razvoj, Prosberry, Amra Kurešepi Zulji">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="canonical" href="https://www.prosberry.si/delavnice/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +25,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -139,7 +150,7 @@
|
|||||||
<div class="workshop-card-grid">
|
<div class="workshop-card-grid">
|
||||||
<a class="workshop-card" href="/skupaj-za-vkljucevanje/delavnica-zakaj-znati-slovensko/" data-aos="fade-up">
|
<a class="workshop-card" href="/skupaj-za-vkljucevanje/delavnica-zakaj-znati-slovensko/" data-aos="fade-up">
|
||||||
<div class="workshop-card-image">
|
<div class="workshop-card-image">
|
||||||
<img src="/assets/images/vkljucevanje/delavnica-ucenci.png" alt="Delavnica Zakaj se splača znati slovensko?">
|
<img src="/assets/images/vkljucevanje/delavnica-ucenci.webp" alt="Delavnica Zakaj se splača znati slovensko?" loading="lazy" decoding="async" width="1536" height="1024">
|
||||||
</div>
|
</div>
|
||||||
<div class="workshop-card-title">
|
<div class="workshop-card-title">
|
||||||
Zakaj se splača znati slovensko?
|
Zakaj se splača znati slovensko?
|
||||||
@@ -147,7 +158,7 @@
|
|||||||
</a>
|
</a>
|
||||||
<a class="workshop-card" href="/skupaj-za-vkljucevanje/delavnica-sola-in-starsi/" data-aos="fade-up" data-aos-delay="100">
|
<a class="workshop-card" href="/skupaj-za-vkljucevanje/delavnica-sola-in-starsi/" data-aos="fade-up" data-aos-delay="100">
|
||||||
<div class="workshop-card-image">
|
<div class="workshop-card-image">
|
||||||
<img src="/assets/images/vkljucevanje/delavnica-starsi-sola.png" alt="Delavnica Šola in starši priseljenci">
|
<img src="/assets/images/vkljucevanje/delavnica-starsi-sola.webp" alt="Delavnica Šola in starši priseljenci" loading="lazy" decoding="async" width="1536" height="1024">
|
||||||
</div>
|
</div>
|
||||||
<div class="workshop-card-title">
|
<div class="workshop-card-title">
|
||||||
Šola in starši priseljenci
|
Šola in starši priseljenci
|
||||||
@@ -165,7 +176,7 @@
|
|||||||
<div class="workshop-card-grid workshop-card-grid--single">
|
<div class="workshop-card-grid workshop-card-grid--single">
|
||||||
<a class="workshop-card" href="/skupaj-za-vkljucevanje/delavnica-vrtec-novi-zacetki/" data-aos="fade-up">
|
<a class="workshop-card" href="/skupaj-za-vkljucevanje/delavnica-vrtec-novi-zacetki/" data-aos="fade-up">
|
||||||
<div class="workshop-card-image">
|
<div class="workshop-card-image">
|
||||||
<img src="/assets/images/vkljucevanje/delavnica-starsi-vrtec.png" alt="Delavnica Skupaj gradimo nove začetke">
|
<img src="/assets/images/vkljucevanje/delavnica-starsi-vrtec.webp" alt="Delavnica Skupaj gradimo nove začetke" loading="lazy" decoding="async" width="1536" height="1024">
|
||||||
</div>
|
</div>
|
||||||
<div class="workshop-card-title">
|
<div class="workshop-card-title">
|
||||||
Skupaj gradimo nove začetke
|
Skupaj gradimo nove začetke
|
||||||
@@ -183,7 +194,7 @@
|
|||||||
<div class="workshop-card-grid workshop-card-grid--single">
|
<div class="workshop-card-grid workshop-card-grid--single">
|
||||||
<a class="workshop-card" href="/skupaj-za-vkljucevanje/delavnica-od-tujca-do-sosolca/" data-aos="fade-up">
|
<a class="workshop-card" href="/skupaj-za-vkljucevanje/delavnica-od-tujca-do-sosolca/" data-aos="fade-up">
|
||||||
<div class="workshop-card-image">
|
<div class="workshop-card-image">
|
||||||
<img src="/assets/images/vkljucevanje/delavnica-ucitelji.png" alt="Delavnica Od tujca do sošolca">
|
<img src="/assets/images/vkljucevanje/delavnica-ucitelji.webp" alt="Delavnica Od tujca do sošolca" loading="lazy" decoding="async" width="1536" height="1024">
|
||||||
</div>
|
</div>
|
||||||
<div class="workshop-card-title">
|
<div class="workshop-card-title">
|
||||||
Od tujca do sošolca
|
Od tujca do sošolca
|
||||||
@@ -209,8 +220,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
import os
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
# Project root directory (where this script is located)
|
||||||
|
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
IMAGES_DIR = os.path.join(PROJECT_ROOT, 'assets', 'images')
|
||||||
|
|
||||||
|
# Define images and their desired responsive widths
|
||||||
|
# Each tuple: (original_filename, [list_of_widths_to_generate])
|
||||||
|
RESPONSIVE_IMAGES_CONFIG = [
|
||||||
|
('amra.webp', [320, 480, 767, 960]), # Added 320w
|
||||||
|
('logo.webp', [100, 200, 400]) # Added 100w
|
||||||
|
]
|
||||||
|
|
||||||
|
def generate_responsive_image(image_path, output_width, output_dir, quality=85):
|
||||||
|
"""
|
||||||
|
Generates a responsive version of an image with a specified width.
|
||||||
|
Maintains aspect ratio.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
with Image.open(image_path) as img:
|
||||||
|
# Calculate new height to maintain aspect ratio
|
||||||
|
original_width, original_height = img.size
|
||||||
|
if original_width <= output_width:
|
||||||
|
# If original is smaller or equal, no need to resize down
|
||||||
|
# We still save it with the new naming convention if it's part of srcset
|
||||||
|
new_width = original_width
|
||||||
|
new_height = original_height
|
||||||
|
else:
|
||||||
|
new_width = output_width
|
||||||
|
new_height = int((original_height * new_width) / original_width)
|
||||||
|
|
||||||
|
# Resize only if dimensions change
|
||||||
|
if new_width != original_width or new_height != original_height:
|
||||||
|
img = img.resize((new_width, new_height), Image.Resampling.LANCZOS)
|
||||||
|
|
||||||
|
# Construct new filename (e.g., amra-480w.webp)
|
||||||
|
base_name, ext = os.path.splitext(os.path.basename(image_path))
|
||||||
|
# Ensure we only take the base name before any existing -<width>w
|
||||||
|
base_name_clean = base_name.split('-')[0]
|
||||||
|
new_filename = f"{base_name_clean}-{output_width}w{ext}"
|
||||||
|
output_path = os.path.join(output_dir, new_filename)
|
||||||
|
|
||||||
|
img.save(output_path, format=img.format, quality=quality)
|
||||||
|
print(f"Generated: {output_path} ({new_width}x{new_height})")
|
||||||
|
return True
|
||||||
|
except FileNotFoundError:
|
||||||
|
print(f"Error: Source image not found at {image_path}")
|
||||||
|
return False
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error processing {image_path} for width {output_width}: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("Starting responsive image generation...")
|
||||||
|
|
||||||
|
if not os.path.exists(IMAGES_DIR):
|
||||||
|
print(f"Error: Image directory not found at {IMAGES_DIR}")
|
||||||
|
return
|
||||||
|
|
||||||
|
for original_filename, widths in RESPONSIVE_IMAGES_CONFIG:
|
||||||
|
original_image_path = os.path.join(IMAGES_DIR, original_filename)
|
||||||
|
|
||||||
|
if not os.path.exists(original_image_path):
|
||||||
|
print(f"Warning: Original image {original_filename} not found. Skipping.")
|
||||||
|
continue
|
||||||
|
|
||||||
|
for width in widths:
|
||||||
|
generate_responsive_image(original_image_path, width, IMAGES_DIR)
|
||||||
|
|
||||||
|
print("Responsive image generation complete.")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -3,8 +3,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,10 +3,23 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Kontakt - Prosberry</title>
|
<title>Prosberry - Medkulturno izobraževanje in podpora</title>
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<meta name="description" content="Prosberry je vaš medkulturni kotiček za učenje angleščine, razumevanje medkulturnih odnosov in osebno rast. Nudimo delavnice, medkulturno posredovanje in individualno podporo.">
|
||||||
|
<meta name="keywords" content="učenje angleščine, medkulturno posredovanje, delavnice za otroke, delavnice za starše, delavnice za šole, Amra Kurešepi Zulji, Prosberry">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="canonical" href="https://www.prosberry.si/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="preload" as="image" href="/assets/images/amra.webp" imagesrcset="/assets/images/amra-480w.webp 480w, /assets/images/amra-767w.webp 767w, /assets/images/amra-960w.webp 960w, /assets/images/amra.webp 1544w" imagesizes="(max-width: 767px) 100vw, 50vw">
|
||||||
|
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||||||
|
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap"></noscript>
|
||||||
|
<link rel="preload" href="https://unpkg.com/aos@next/dist/aos.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||||||
|
<noscript><link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css"></noscript>
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header class="main-header">
|
<header class="main-header">
|
||||||
@@ -14,8 +27,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async" srcset="/assets/images/logo-100w.webp 100w, /assets/images/logo-200w.webp 200w, /assets/images/logo-400w.webp 400w, /assets/images/logo.webp 1500w">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -129,7 +142,7 @@
|
|||||||
<h1>Dobrodošli v našem medkulturnem kotičku…</h1>
|
<h1>Dobrodošli v našem medkulturnem kotičku…</h1>
|
||||||
<p class="hero-new-subtitle">Uči se angleščine, razvozlaj medkulturne vozle in uživaj v vsakem koraku!</p>
|
<p class="hero-new-subtitle">Uči se angleščine, razvozlaj medkulturne vozle in uživaj v vsakem koraku!</p>
|
||||||
<div class="hero-info-box">
|
<div class="hero-info-box">
|
||||||
<h3>Zakaj PROSBERRY?</h3>
|
<h2>Zakaj PROSBERRY?</h2>
|
||||||
<p><strong>PROS</strong> simbolizira znanje, izkušnje in strokovnost, ki podpirajo rast in razvoj.</p>
|
<p><strong>PROS</strong> simbolizira znanje, izkušnje in strokovnost, ki podpirajo rast in razvoj.</p>
|
||||||
<p><strong>BERRY</strong> predstavlja raznolikost in živost, ki bogati učenje, povezovanje in medkulturne izkušnje.</p>
|
<p><strong>BERRY</strong> predstavlja raznolikost in živost, ki bogati učenje, povezovanje in medkulturne izkušnje.</p>
|
||||||
<p>Tudi v jeziku in med ljudmi rastemo vsak po svoje – z različnimi potrebami, ozadji in cilji.</p>
|
<p>Tudi v jeziku in med ljudmi rastemo vsak po svoje – z različnimi potrebami, ozadji in cilji.</p>
|
||||||
@@ -137,7 +150,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hero-new-image" data-aos="fade-left">
|
<div class="hero-new-image" data-aos="fade-left">
|
||||||
<img src="assets/images/amra.png" alt="Amra Kurešepi Zulji">
|
<img src="assets/images/amra.webp" alt="Amra Kurešepi Zulji" width="1544" height="1920" fetchpriority="high" srcset="/assets/images/amra-320w.webp 320w, /assets/images/amra-480w.webp 480w, /assets/images/amra-767w.webp 767w, /assets/images/amra-960w.webp 960w, /assets/images/amra.webp 1544w">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Dekorativni elementi v ozadju -->
|
<!-- Dekorativni elementi v ozadju -->
|
||||||
@@ -177,7 +190,7 @@
|
|||||||
<section class="about-amra-intro">
|
<section class="about-amra-intro">
|
||||||
<div class="about-amra-wrapper" data-aos="fade-up">
|
<div class="about-amra-wrapper" data-aos="fade-up">
|
||||||
<div class="about-amra-image">
|
<div class="about-amra-image">
|
||||||
<img src="assets/images/amra2.png" alt="Amra Kurešepi Zulji" loading="lazy">
|
<img src="assets/images/amra2.webp" alt="Amra Kurešepi Zulji" loading="lazy" decoding="async" width="480" height="503">
|
||||||
</div>
|
</div>
|
||||||
<div class="about-amra-content">
|
<div class="about-amra-content">
|
||||||
<p>Sem Amra – mama, žena, raziskovalka jezikov in kultur ter vaša zvesta sopotnica na zanimivi poti učenja in odkrivanja novih svetov.</p>
|
<p>Sem Amra – mama, žena, raziskovalka jezikov in kultur ter vaša zvesta sopotnica na zanimivi poti učenja in odkrivanja novih svetov.</p>
|
||||||
@@ -217,8 +230,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="js/main.js"></script>
|
<script src="js/main.js" defer></script>
|
||||||
<script src="js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,561 +1 @@
|
|||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() { const mobileMenuBtn = document.querySelector('.mobile-menu-btn'); const navLinks = document.querySelector('.nav-links'); let closeMobileMenu = () => {}; let resetMobileSubmenus = () => {}; const normalizePath = (value) => { if (!value) { return '/'; } let clean = value.split('?')[0].split('#')[0]; clean = clean.replace(/index\.html$/i, ''); clean = clean.replace(/\/+$/, ''); if (clean === '') { clean = '/'; } return clean; }; const applyActiveNavState = () => { const navRoot = document.querySelector('.nav-links'); if (!navRoot) { return; } navRoot.querySelectorAll('a.active, .dropbtn.active').forEach(el => { el.classList.remove('active'); }); const currentPath = normalizePath(window.location.pathname); const navAnchors = navRoot.querySelectorAll('a[href]'); let matchedLink = null; navAnchors.forEach(anchor => { const href = anchor.getAttribute('href'); if (!href || href.startsWith('http') || href.startsWith('mailto:') || href.startsWith('tel:') || href.startsWith('#')) { return; } const linkPath = normalizePath(href); if (linkPath === currentPath) { matchedLink = anchor; } }); if (!matchedLink) { return; } matchedLink.classList.add('active'); const highlightDropdownParents = (element) => { let parentContent = element.closest('.dropdown-submenu-content, .dropdown-content'); while (parentContent) { const trigger = parentContent.previousElementSibling; if (trigger && (trigger.tagName === 'A' || trigger.classList.contains('dropbtn'))) { trigger.classList.add('active'); } parentContent = parentContent.parentElement ? parentContent.parentElement.closest('.dropdown-submenu-content, .dropdown-content') : null; } }; highlightDropdownParents(matchedLink); const topLevelDropdown = matchedLink.closest('.dropdown'); if (topLevelDropdown) { const trigger = topLevelDropdown.querySelector('.dropbtn'); if (trigger) { trigger.classList.add('active'); } } }; if (mobileMenuBtn && navLinks) { resetMobileSubmenus = () => { navLinks.querySelectorAll('.dropdown-content, .dropdown-submenu-content').forEach(submenu => { submenu.style.display = 'none'; }); navLinks.querySelectorAll('.dropbtn, .dropdown-submenu > a').forEach(link => { link.classList.remove('active'); }); applyActiveNavState(); }; closeMobileMenu = () => { mobileMenuBtn.classList.remove('active'); navLinks.classList.remove('active'); document.body.classList.remove('no-scroll'); resetMobileSubmenus(); }; mobileMenuBtn.addEventListener('click', (event) => { event.stopPropagation(); const willOpen = !navLinks.classList.contains('active'); if (willOpen) { mobileMenuBtn.classList.add('active'); navLinks.classList.add('active'); document.body.classList.add('no-scroll'); resetMobileSubmenus(); } else { closeMobileMenu(); } }); } applyActiveNavState(); const dropdowns = document.querySelectorAll('.nav-links .dropdown-submenu > a, .nav-links .dropdown > .dropbtn'); dropdowns.forEach(item => { item.addEventListener('click', function(event) { if (window.innerWidth <= 768) { if (item.tagName === 'A') { event.preventDefault(); } event.stopPropagation(); const submenu = item.nextElementSibling; if (!submenu) { return; } const isTopLevelTrigger = item.classList.contains('dropbtn'); if (isTopLevelTrigger) { navLinks.querySelectorAll('.dropdown-content').forEach(panel => { if (panel !== submenu) { panel.style.display = 'none'; const trigger = panel.parentElement.querySelector('.dropbtn'); if (trigger) { trigger.classList.remove('active'); } panel.querySelectorAll('.dropdown-submenu-content').forEach(child => { child.style.display = 'none'; const childTrigger = child.parentElement.querySelector(':scope > a'); if (childTrigger) { childTrigger.classList.remove('active'); } }); } }); } else { const siblingsWrapper = item.parentElement && item.parentElement.parentElement; if (siblingsWrapper) { siblingsWrapper.querySelectorAll(':scope > .dropdown-submenu > .dropdown-submenu-content').forEach(panel => { if (panel !== submenu) { panel.style.display = 'none'; const trigger = panel.parentElement.querySelector(':scope > a'); if (trigger) { trigger.classList.remove('active'); } panel.querySelectorAll('.dropdown-submenu-content').forEach(child => { child.style.display = 'none'; const childTrigger = child.parentElement.querySelector(':scope > a'); if (childTrigger) { childTrigger.classList.remove('active'); } }); } }); } } const shouldOpen = submenu.style.display !== 'block'; if (shouldOpen) { submenu.style.display = 'block'; item.classList.add('active'); submenu.querySelectorAll('.dropdown-submenu-content').forEach(child => { child.style.display = 'none'; const childTrigger = child.parentElement.querySelector(':scope > a'); if (childTrigger) { childTrigger.classList.remove('active'); } }); } else { submenu.style.display = 'none'; item.classList.remove('active'); submenu.querySelectorAll('.dropdown-submenu-content').forEach(child => { child.style.display = 'none'; const childTrigger = child.parentElement.querySelector(':scope > a'); if (chLine truncated
|
||||||
|
|
||||||
// --- Mobile Menu Toggle ---
|
|
||||||
const mobileMenuBtn = document.querySelector('.mobile-menu-btn');
|
|
||||||
const navLinks = document.querySelector('.nav-links');
|
|
||||||
let closeMobileMenu = () => {};
|
|
||||||
let resetMobileSubmenus = () => {};
|
|
||||||
|
|
||||||
const normalizePath = (value) => {
|
|
||||||
if (!value) {
|
|
||||||
return '/';
|
|
||||||
}
|
|
||||||
let clean = value.split('?')[0].split('#')[0];
|
|
||||||
clean = clean.replace(/index\.html$/i, '');
|
|
||||||
clean = clean.replace(/\/+$/, '');
|
|
||||||
if (clean === '') {
|
|
||||||
clean = '/';
|
|
||||||
}
|
|
||||||
return clean;
|
|
||||||
};
|
|
||||||
|
|
||||||
const applyActiveNavState = () => {
|
|
||||||
const navRoot = document.querySelector('.nav-links');
|
|
||||||
if (!navRoot) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
navRoot.querySelectorAll('a.active, .dropbtn.active').forEach(el => {
|
|
||||||
el.classList.remove('active');
|
|
||||||
});
|
|
||||||
|
|
||||||
const currentPath = normalizePath(window.location.pathname);
|
|
||||||
const navAnchors = navRoot.querySelectorAll('a[href]');
|
|
||||||
let matchedLink = null;
|
|
||||||
|
|
||||||
navAnchors.forEach(anchor => {
|
|
||||||
const href = anchor.getAttribute('href');
|
|
||||||
if (!href || href.startsWith('http') || href.startsWith('mailto:') || href.startsWith('tel:') || href.startsWith('#')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const linkPath = normalizePath(href);
|
|
||||||
if (linkPath === currentPath) {
|
|
||||||
matchedLink = anchor;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!matchedLink) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
matchedLink.classList.add('active');
|
|
||||||
|
|
||||||
const highlightDropdownParents = (element) => {
|
|
||||||
let parentContent = element.closest('.dropdown-submenu-content, .dropdown-content');
|
|
||||||
while (parentContent) {
|
|
||||||
const trigger = parentContent.previousElementSibling;
|
|
||||||
if (trigger && (trigger.tagName === 'A' || trigger.classList.contains('dropbtn'))) {
|
|
||||||
trigger.classList.add('active');
|
|
||||||
}
|
|
||||||
parentContent = parentContent.parentElement ? parentContent.parentElement.closest('.dropdown-submenu-content, .dropdown-content') : null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
highlightDropdownParents(matchedLink);
|
|
||||||
|
|
||||||
const topLevelDropdown = matchedLink.closest('.dropdown');
|
|
||||||
if (topLevelDropdown) {
|
|
||||||
const trigger = topLevelDropdown.querySelector('.dropbtn');
|
|
||||||
if (trigger) {
|
|
||||||
trigger.classList.add('active');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (mobileMenuBtn && navLinks) {
|
|
||||||
resetMobileSubmenus = () => {
|
|
||||||
navLinks.querySelectorAll('.dropdown-content, .dropdown-submenu-content').forEach(submenu => {
|
|
||||||
submenu.style.display = 'none';
|
|
||||||
});
|
|
||||||
navLinks.querySelectorAll('.dropbtn, .dropdown-submenu > a').forEach(link => {
|
|
||||||
link.classList.remove('active');
|
|
||||||
});
|
|
||||||
applyActiveNavState();
|
|
||||||
};
|
|
||||||
|
|
||||||
closeMobileMenu = () => {
|
|
||||||
mobileMenuBtn.classList.remove('active');
|
|
||||||
navLinks.classList.remove('active');
|
|
||||||
document.body.classList.remove('no-scroll');
|
|
||||||
resetMobileSubmenus();
|
|
||||||
};
|
|
||||||
|
|
||||||
mobileMenuBtn.addEventListener('click', (event) => {
|
|
||||||
event.stopPropagation(); // Prepreči, da bi se dogodek takoj prenesel na 'document'
|
|
||||||
const willOpen = !navLinks.classList.contains('active');
|
|
||||||
if (willOpen) {
|
|
||||||
mobileMenuBtn.classList.add('active');
|
|
||||||
navLinks.classList.add('active');
|
|
||||||
document.body.classList.add('no-scroll');
|
|
||||||
resetMobileSubmenus();
|
|
||||||
} else {
|
|
||||||
closeMobileMenu();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- Active Navigation Highlight ---
|
|
||||||
applyActiveNavState();
|
|
||||||
|
|
||||||
// --- Mobile Dropdown Logic ---
|
|
||||||
// Logika za odpiranje podmenijev na klik na mobilnih napravah
|
|
||||||
const dropdowns = document.querySelectorAll('.nav-links .dropdown-submenu > a, .nav-links .dropdown > .dropbtn');
|
|
||||||
|
|
||||||
dropdowns.forEach(item => {
|
|
||||||
item.addEventListener('click', function(event) {
|
|
||||||
// Preveri, ali smo na mobilni napravi (ujema se z CSS @media query)
|
|
||||||
if (window.innerWidth <= 768) {
|
|
||||||
// Prepreči navigacijo, če je to link, saj želimo samo odpreti podmeni
|
|
||||||
if (item.tagName === 'A') {
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
const submenu = item.nextElementSibling;
|
|
||||||
if (!submenu) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const isTopLevelTrigger = item.classList.contains('dropbtn');
|
|
||||||
|
|
||||||
if (isTopLevelTrigger) {
|
|
||||||
navLinks.querySelectorAll('.dropdown-content').forEach(panel => {
|
|
||||||
if (panel !== submenu) {
|
|
||||||
panel.style.display = 'none';
|
|
||||||
const trigger = panel.parentElement.querySelector('.dropbtn');
|
|
||||||
if (trigger) {
|
|
||||||
trigger.classList.remove('active');
|
|
||||||
}
|
|
||||||
panel.querySelectorAll('.dropdown-submenu-content').forEach(child => {
|
|
||||||
child.style.display = 'none';
|
|
||||||
const childTrigger = child.parentElement.querySelector(':scope > a');
|
|
||||||
if (childTrigger) {
|
|
||||||
childTrigger.classList.remove('active');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
const siblingsWrapper = item.parentElement && item.parentElement.parentElement;
|
|
||||||
if (siblingsWrapper) {
|
|
||||||
siblingsWrapper.querySelectorAll(':scope > .dropdown-submenu > .dropdown-submenu-content').forEach(panel => {
|
|
||||||
if (panel !== submenu) {
|
|
||||||
panel.style.display = 'none';
|
|
||||||
const trigger = panel.parentElement.querySelector(':scope > a');
|
|
||||||
if (trigger) {
|
|
||||||
trigger.classList.remove('active');
|
|
||||||
}
|
|
||||||
panel.querySelectorAll('.dropdown-submenu-content').forEach(child => {
|
|
||||||
child.style.display = 'none';
|
|
||||||
const childTrigger = child.parentElement.querySelector(':scope > a');
|
|
||||||
if (childTrigger) {
|
|
||||||
childTrigger.classList.remove('active');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const shouldOpen = submenu.style.display !== 'block';
|
|
||||||
|
|
||||||
if (shouldOpen) {
|
|
||||||
submenu.style.display = 'block';
|
|
||||||
item.classList.add('active');
|
|
||||||
submenu.querySelectorAll('.dropdown-submenu-content').forEach(child => {
|
|
||||||
child.style.display = 'none';
|
|
||||||
const childTrigger = child.parentElement.querySelector(':scope > a');
|
|
||||||
if (childTrigger) {
|
|
||||||
childTrigger.classList.remove('active');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
submenu.style.display = 'none';
|
|
||||||
item.classList.remove('active');
|
|
||||||
submenu.querySelectorAll('.dropdown-submenu-content').forEach(child => {
|
|
||||||
child.style.display = 'none';
|
|
||||||
const childTrigger = child.parentElement.querySelector(':scope > a');
|
|
||||||
if (childTrigger) {
|
|
||||||
childTrigger.classList.remove('active');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// --- Close mobile menu when clicking outside ---
|
|
||||||
document.addEventListener('click', function(event) {
|
|
||||||
if (window.innerWidth <= 768 && navLinks && navLinks.classList.contains('active')) {
|
|
||||||
// Preveri, ali klik ni bil znotraj navigacije ali na gumb za meni
|
|
||||||
const isClickInsideNav = navLinks.contains(event.target);
|
|
||||||
const isClickOnBtn = mobileMenuBtn && mobileMenuBtn.contains(event.target);
|
|
||||||
|
|
||||||
if (!isClickInsideNav && !isClickOnBtn) {
|
|
||||||
closeMobileMenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// --- Close mobile menu when a link is clicked ---
|
|
||||||
const navLinkItems = document.querySelectorAll('.nav-links a');
|
|
||||||
navLinkItems.forEach(link => {
|
|
||||||
link.addEventListener('click', (event) => {
|
|
||||||
// Preprečimo zapiranje, če ima link podmeni in smo na mobilni napravi
|
|
||||||
const hasSubmenu = link.parentElement.classList.contains('dropdown-submenu') || link.classList.contains('dropbtn');
|
|
||||||
if (window.innerWidth <= 768) {
|
|
||||||
if (hasSubmenu) {
|
|
||||||
// To je že obdelano v zgornji logiki, tukaj samo preprečimo, da bi se meni takoj zaprl
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
closeMobileMenu();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// --- Accordion Logic for "Več" buttons ---
|
|
||||||
const accordions = document.querySelectorAll('.accordion-toggle');
|
|
||||||
accordions.forEach(accordion => {
|
|
||||||
accordion.addEventListener('click', function() {
|
|
||||||
const accordionItem = this.closest('.mediation-accordion-item');
|
|
||||||
const content = accordionItem ? accordionItem.querySelector('.accordion-content') : null;
|
|
||||||
|
|
||||||
if (!content) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.classList.toggle('active');
|
|
||||||
const isOpen = this.classList.contains('active');
|
|
||||||
this.setAttribute('aria-expanded', String(isOpen));
|
|
||||||
content.setAttribute('aria-hidden', String(!isOpen));
|
|
||||||
|
|
||||||
if (isOpen) {
|
|
||||||
content.style.maxHeight = content.scrollHeight + "px";
|
|
||||||
this.textContent = 'Manj';
|
|
||||||
} else {
|
|
||||||
content.style.maxHeight = null;
|
|
||||||
this.textContent = 'Več';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
accordion.textContent = 'Več';
|
|
||||||
accordion.setAttribute('aria-expanded', 'false');
|
|
||||||
const initialContent = accordion.closest('.mediation-accordion-item')?.querySelector('.accordion-content');
|
|
||||||
if (initialContent) {
|
|
||||||
initialContent.setAttribute('aria-hidden', 'true');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// --- Header Scroll Effect ---
|
|
||||||
const header = document.querySelector('.main-header');
|
|
||||||
if (header) {
|
|
||||||
let lastScroll = 0;
|
|
||||||
window.addEventListener('scroll', () => {
|
|
||||||
const currentScroll = window.pageYOffset;
|
|
||||||
|
|
||||||
if (currentScroll <= 0) {
|
|
||||||
header.classList.remove('scroll-up');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentScroll > lastScroll && !header.classList.contains('scroll-down')) {
|
|
||||||
// Scroll Down
|
|
||||||
header.classList.remove('scroll-up');
|
|
||||||
header.classList.add('scroll-down');
|
|
||||||
} else if (currentScroll < lastScroll && header.classList.contains('scroll-down')) {
|
|
||||||
// Scroll Up
|
|
||||||
header.classList.remove('scroll-down');
|
|
||||||
header.classList.add('scroll-up');
|
|
||||||
}
|
|
||||||
lastScroll = currentScroll;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- Accordion Logic for Mediation Page ---
|
|
||||||
const mediationSections = document.querySelectorAll('.mediation-section');
|
|
||||||
if (mediationSections.length) {
|
|
||||||
const mediationTitles = document.querySelectorAll('.mediation-section h2');
|
|
||||||
|
|
||||||
const closeAllSections = () => {
|
|
||||||
mediationSections.forEach(section => {
|
|
||||||
section.classList.remove('active');
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
mediationTitles.forEach(title => {
|
|
||||||
title.addEventListener('click', () => {
|
|
||||||
const parentSection = title.parentElement;
|
|
||||||
const isAlreadyActive = parentSection.classList.contains('active');
|
|
||||||
|
|
||||||
closeAllSections();
|
|
||||||
|
|
||||||
if (!isAlreadyActive) {
|
|
||||||
parentSection.classList.add('active');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const openSectionFromHash = () => {
|
|
||||||
const hash = window.location.hash;
|
|
||||||
if (hash) {
|
|
||||||
const targetSection = document.querySelector(hash);
|
|
||||||
if (targetSection && targetSection.classList.contains('mediation-section')) {
|
|
||||||
closeAllSections();
|
|
||||||
targetSection.classList.add('active');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
window.addEventListener('hashchange', openSectionFromHash);
|
|
||||||
openSectionFromHash();
|
|
||||||
|
|
||||||
if (!document.querySelector('.mediation-section.active') && mediationSections[0]) {
|
|
||||||
mediationSections[0].classList.add('active');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- POPRAVLJENA in ZANESLJIVA logika za meni ---
|
|
||||||
const dropdownContainers = document.querySelectorAll('.nav-links .dropdown');
|
|
||||||
if (dropdownContainers.length) {
|
|
||||||
const closeAllDropdowns = () => {
|
|
||||||
dropdownContainers.forEach(container => {
|
|
||||||
const dropdownContent = container.querySelector('.dropdown-content');
|
|
||||||
if (!dropdownContent) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
container.classList.remove('is-open');
|
|
||||||
dropdownContent.style.display = 'none';
|
|
||||||
dropdownContent.querySelectorAll('.dropdown-submenu-content').forEach(submenu => {
|
|
||||||
submenu.style.display = 'none';
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
dropdownContainers.forEach(container => {
|
|
||||||
const dropBtn = container.querySelector('.dropbtn');
|
|
||||||
const dropdownContent = container.querySelector('.dropdown-content');
|
|
||||||
if (!dropBtn || !dropdownContent) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const closeDropdown = () => {
|
|
||||||
container.classList.remove('is-open');
|
|
||||||
dropdownContent.style.display = 'none';
|
|
||||||
dropdownContent.querySelectorAll('.dropdown-submenu-content').forEach(submenu => {
|
|
||||||
submenu.style.display = 'none';
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const openDropdown = () => {
|
|
||||||
container.classList.add('is-open');
|
|
||||||
dropdownContent.style.display = 'block';
|
|
||||||
};
|
|
||||||
|
|
||||||
dropBtn.addEventListener('click', (event) => {
|
|
||||||
if (window.innerWidth <= 768) {
|
|
||||||
return; // mobilna logika že upravlja
|
|
||||||
}
|
|
||||||
event.preventDefault();
|
|
||||||
const isOpen = container.classList.contains('is-open');
|
|
||||||
closeAllDropdowns();
|
|
||||||
if (!isOpen) {
|
|
||||||
openDropdown();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const submenuLinks = container.querySelectorAll('.dropdown-submenu > a');
|
|
||||||
submenuLinks.forEach(link => {
|
|
||||||
const submenu = link.nextElementSibling;
|
|
||||||
if (!submenu) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
link.addEventListener('click', (event) => {
|
|
||||||
if (window.innerWidth <= 768) {
|
|
||||||
return; // mobilna logika že upravlja
|
|
||||||
}
|
|
||||||
|
|
||||||
const parentList = link.parentElement.parentElement;
|
|
||||||
parentList.querySelectorAll(':scope > .dropdown-submenu > .dropdown-submenu-content').forEach(sm => {
|
|
||||||
if (sm !== submenu) {
|
|
||||||
sm.style.display = 'none';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const isOpen = submenu.style.display === 'block';
|
|
||||||
const href = link.getAttribute('href') || '';
|
|
||||||
|
|
||||||
if (href === '#' || href.trim() === '') {
|
|
||||||
event.preventDefault();
|
|
||||||
submenu.style.display = isOpen ? 'none' : 'block';
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isOpen) {
|
|
||||||
event.preventDefault();
|
|
||||||
submenu.style.display = 'block';
|
|
||||||
} else {
|
|
||||||
closeDropdown();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
container.querySelectorAll('.dropdown-submenu-content a').forEach(link => {
|
|
||||||
if (link.nextElementSibling) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
link.addEventListener('click', () => {
|
|
||||||
if (window.innerWidth <= 768) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
closeAllDropdowns();
|
|
||||||
closeMobileMenu();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
document.addEventListener('click', (event) => {
|
|
||||||
if (window.innerWidth <= 768) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const clickedInside = Array.from(dropdownContainers).some(container => container.contains(event.target));
|
|
||||||
if (!clickedInside) {
|
|
||||||
closeAllDropdowns();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
window.addEventListener('resize', () => {
|
|
||||||
if (window.innerWidth <= 768) {
|
|
||||||
closeAllDropdowns();
|
|
||||||
closeMobileMenu();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
window.addEventListener('resize', () => {
|
|
||||||
if (window.innerWidth > 768) {
|
|
||||||
closeMobileMenu();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// --- Initialize AOS (Animate on Scroll) ---
|
|
||||||
if (typeof AOS !== 'undefined') {
|
|
||||||
AOS.init({
|
|
||||||
duration: 600,
|
|
||||||
easing: 'ease-out',
|
|
||||||
once: true, // Animacija se zgodi samo enkrat
|
|
||||||
offset: 50,
|
|
||||||
delay: 100,
|
|
||||||
disable: 'mobile'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- "Read More" Button Logic for Kdo Sem Page ---
|
|
||||||
const readMoreBtn = document.querySelector('.read-more-btn');
|
|
||||||
const moreStoryContent = document.querySelector('.more-story-content');
|
|
||||||
|
|
||||||
if (readMoreBtn && moreStoryContent) {
|
|
||||||
if (moreStoryContent.id) {
|
|
||||||
readMoreBtn.setAttribute('aria-controls', moreStoryContent.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
const applyStoryState = (isVisible) => {
|
|
||||||
readMoreBtn.textContent = isVisible ? 'Skrij zgodbo' : 'Moja zgodba';
|
|
||||||
readMoreBtn.setAttribute('aria-expanded', isVisible ? 'true' : 'false');
|
|
||||||
moreStoryContent.setAttribute('aria-hidden', isVisible ? 'false' : 'true');
|
|
||||||
};
|
|
||||||
|
|
||||||
let isExpanded = moreStoryContent.classList.contains('visible');
|
|
||||||
applyStoryState(isExpanded);
|
|
||||||
moreStoryContent.style.height = isExpanded ? 'auto' : '0px';
|
|
||||||
|
|
||||||
const openStory = () => {
|
|
||||||
moreStoryContent.classList.add('visible');
|
|
||||||
const targetHeight = moreStoryContent.scrollHeight;
|
|
||||||
moreStoryContent.classList.add('is-animating');
|
|
||||||
moreStoryContent.style.height = '0px';
|
|
||||||
|
|
||||||
requestAnimationFrame(() => {
|
|
||||||
moreStoryContent.style.height = `${targetHeight}px`;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const closeStory = () => {
|
|
||||||
const currentHeight = moreStoryContent.scrollHeight;
|
|
||||||
moreStoryContent.style.height = `${currentHeight}px`;
|
|
||||||
moreStoryContent.classList.add('is-animating');
|
|
||||||
|
|
||||||
requestAnimationFrame(() => {
|
|
||||||
moreStoryContent.style.height = '0px';
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
moreStoryContent.addEventListener('transitionend', (event) => {
|
|
||||||
if (event.propertyName !== 'height') {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
moreStoryContent.classList.remove('is-animating');
|
|
||||||
|
|
||||||
if (isExpanded) {
|
|
||||||
moreStoryContent.style.height = 'auto';
|
|
||||||
} else {
|
|
||||||
moreStoryContent.classList.remove('visible');
|
|
||||||
moreStoryContent.style.height = '';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
readMoreBtn.addEventListener('click', () => {
|
|
||||||
if (moreStoryContent.classList.contains('is-animating')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
isExpanded = !isExpanded;
|
|
||||||
applyStoryState(isExpanded);
|
|
||||||
|
|
||||||
if (isExpanded) {
|
|
||||||
openStory();
|
|
||||||
} else {
|
|
||||||
closeStory();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// --- Legacy form validation functions (can be kept for potential future use) ---
|
|
||||||
// Note: The main form submission logic is now handled via fetch in kontakt/index.html
|
|
||||||
|
|
||||||
function showError(input, message) {
|
|
||||||
const formControl = input.parentElement;
|
|
||||||
const errorDiv = formControl.querySelector('.error-message') || document.createElement('div');
|
|
||||||
errorDiv.className = 'error-message';
|
|
||||||
errorDiv.textContent = message;
|
|
||||||
if (!formControl.querySelector('.error-message')) {
|
|
||||||
formControl.appendChild(errorDiv);
|
|
||||||
}
|
|
||||||
formControl.classList.add('error');
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeError(input) {
|
|
||||||
const formControl = input.parentElement;
|
|
||||||
const errorDiv = formControl.querySelector('.error-message');
|
|
||||||
if (errorDiv) {
|
|
||||||
formControl.removeChild(errorDiv);
|
|
||||||
}
|
|
||||||
formControl.classList.remove('error');
|
|
||||||
}
|
|
||||||
|
|
||||||
function isValidEmail(email) {
|
|
||||||
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
||||||
return re.test(String(email).toLowerCase());
|
|
||||||
}
|
|
||||||
@@ -4,6 +4,17 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Kdo sem - Prosberry</title>
|
<title>Kdo sem - Prosberry</title>
|
||||||
|
<meta name="description" content="Spoznajte Amro Kurešepi Zulji, ustanoviteljico Prosberry. Odkrijte njeno osebno zgodbo, izkušnje z večjezičnostjo in strast do podpore posameznikom pri učenju jezikov in medkulturnem razumevanju.">
|
||||||
|
<meta name="keywords" content="Amra Kurešepi Zulji, Prosberry, o meni, medkulturna mediatorka, profesorica angleščine, osebna rast, zgodba o uspehu">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="canonical" href="https://www.prosberry.si/kdo-sem/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="../css/style.css">
|
<link rel="stylesheet" href="../css/style.css">
|
||||||
<link rel="stylesheet" href="../css/animations.css">
|
<link rel="stylesheet" href="../css/animations.css">
|
||||||
@@ -14,8 +25,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -133,7 +144,7 @@
|
|||||||
<div class="image-frame">
|
<div class="image-frame">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="../assets/images/kdo-sem-fotografija.webp" type="image/webp">
|
<source srcset="../assets/images/kdo-sem-fotografija.webp" type="image/webp">
|
||||||
<img src="../assets/images/kdo-sem-fotografija.jpg" alt="Amra Kurešepi Zulji">
|
<img src="../assets/images/kdo-sem-fotografija.jpg" alt="Amra Kurešepi Zulji" loading="lazy" decoding="async" width="1600" height="900">
|
||||||
</picture>
|
</picture>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -195,9 +206,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="../js/main.js"></script>
|
<script src="../js/main.js"></script>
|
||||||
<script src="../js/animations.js"></script>
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const toggles = document.querySelectorAll('.about-accordion-toggle');
|
const toggles = document.querySelectorAll('.about-accordion-toggle');
|
||||||
|
|||||||
@@ -4,6 +4,17 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Kontakt - Prosberry</title>
|
<title>Kontakt - Prosberry</title>
|
||||||
|
<meta name="description" content="Stopite v stik z Prosberry za tečaje angleščine, medkulturno posredovanje ali delavnice. Izpolnite kontaktni obrazec ali nas pokličite in z veseljem vam bomo pomagali.">
|
||||||
|
<meta name="keywords" content="kontakt, Prosberry, Amra Kurešepi Zulji, tečaji angleščine, medkulturno posredovanje, delavnice, povpraševanje">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="canonical" href="https://www.prosberry.si/kontakt/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +25,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -194,9 +205,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
// --- Form Submission Logic ---
|
// --- Form Submission Logic ---
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
with open("/home/mark/prosberry/js/main.js", "r") as f:
|
||||||
|
js_content = f.read()
|
||||||
|
|
||||||
|
# Remove single-line comments
|
||||||
|
js_content = re.sub(r"//.*", "", js_content)
|
||||||
|
# Remove multi-line comments
|
||||||
|
js_content = re.sub(r"/\*.*?\*/", "", js_content, flags=re.DOTALL)
|
||||||
|
# Remove newlines and extra whitespace
|
||||||
|
js_content = re.sub(r"\s+", " ", js_content)
|
||||||
|
js_content = js_content.strip()
|
||||||
|
|
||||||
|
with open("/home/mark/prosberry/js/main.js", "w") as f:
|
||||||
|
f.write(js_content)
|
||||||
@@ -0,0 +1,229 @@
|
|||||||
|
import os
|
||||||
|
import argparse
|
||||||
|
import shutil
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
# --- Konfiguracija skripte za projekt "Hermina" ---
|
||||||
|
|
||||||
|
# Predpostavka: ta skripta se nahaja v korenski mapi projekta.
|
||||||
|
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
# Pot do mape, kjer se nahajajo slike, ki jih želimo optimizirati.
|
||||||
|
IMAGES_DIR_PATH = os.path.join("assets", "images")
|
||||||
|
|
||||||
|
# Ime podmape znotraj IMAGES_DIR_PATH, kamor se bodo shranile originalne slike.
|
||||||
|
ORIGINAL_IMAGES_SUBDIR_NAME = "original"
|
||||||
|
|
||||||
|
# Mape, ki jih želimo PREGLEDATI za posodobitev referenc na slike.
|
||||||
|
# '.' pomeni, da začnemo v korenski mapi in pregledamo vse podmape.
|
||||||
|
DIRECTORIES_TO_SCAN = ['.']
|
||||||
|
|
||||||
|
# Mape, ki jih želimo IZKLJUČITI iz pregledovanja (za hitrejše delovanje in varnost).
|
||||||
|
# Skripta ne bo iskala referenc v teh mapah.
|
||||||
|
DIRECTORIES_TO_EXCLUDE_FROM_SCAN = ['.git', '.gitea', '.vscode', '__pycache__']
|
||||||
|
|
||||||
|
# Končnice datotek, v katerih iščemo in posodabljamo reference na slike.
|
||||||
|
FILE_EXTENSIONS_TO_UPDATE = ['.html', '.css', '.js']
|
||||||
|
|
||||||
|
# Nastavitve optimizacije
|
||||||
|
WEBP_QUALITY = 85 # Kakovost kompresije za WebP (0-100). Višje = boljša kvaliteta, večja datoteka.
|
||||||
|
MAX_IMAGE_DIMENSION = 1920 # Slike, večje od te dimenzije (širina ali višina), bodo pomanjšane. 0 za izklop.
|
||||||
|
|
||||||
|
# Končnice slik, ki jih želimo optimizirati.
|
||||||
|
IMAGE_EXTENSIONS_TO_OPTIMIZE = ['.jpg', '.jpeg', '.png']
|
||||||
|
|
||||||
|
# Imena datotek, ki jih želimo preskočiti pri optimizaciji (npr. logotipi, ikone).
|
||||||
|
EXCLUDE_FILES_FROM_OPTIMIZATION = [
|
||||||
|
'favicon.ico'
|
||||||
|
# Dodajte imena drugih datotek po potrebi, npr. 'logo.png'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# --- Pomožne funkcije (večinoma nespremenjene) ---
|
||||||
|
|
||||||
|
def optimize_image(image_path, output_path, quality, max_dim, dry_run=False):
|
||||||
|
"""
|
||||||
|
Naloži sliko, jo po potrebi pomanjša, optimizira in pretvori v WebP format.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
with Image.open(image_path) as img:
|
||||||
|
# Pretvorba slik s paleto (kot so nekatere PNG) v RGBA za ohranitev prosojnosti.
|
||||||
|
if img.mode in ('P', 'LA'):
|
||||||
|
img = img.convert("RGBA")
|
||||||
|
|
||||||
|
if max_dim > 0 and (img.width > max_dim or img.height > max_dim):
|
||||||
|
print(f" Pomanjšujem sliko {os.path.basename(image_path)} iz {img.width}x{img.height} ...", end="")
|
||||||
|
img.thumbnail((max_dim, max_dim), Image.Resampling.LANCZOS)
|
||||||
|
print(f" na {img.width}x{img.height}")
|
||||||
|
else:
|
||||||
|
print(f" Obdelujem sliko {os.path.basename(image_path)} ({img.width}x{img.height})...", end="")
|
||||||
|
|
||||||
|
if not dry_run:
|
||||||
|
img.save(output_path, "webp", quality=quality, method=6)
|
||||||
|
print(f" Shrani v {os.path.basename(output_path)} (kvaliteta: {quality}).")
|
||||||
|
else:
|
||||||
|
print(f" DRY RUN: Shranil bi v {os.path.basename(output_path)} (kvaliteta: {quality}).")
|
||||||
|
|
||||||
|
return True
|
||||||
|
except FileNotFoundError:
|
||||||
|
print(f" Napaka: Izvorna slika '{image_path}' ni najdena.")
|
||||||
|
return False
|
||||||
|
except Exception as e:
|
||||||
|
print(f" Napaka pri optimizaciji slike '{image_path}': {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def update_file_references(file_path, old_filename, new_filename, dry_run=False):
|
||||||
|
"""
|
||||||
|
V dani datoteki zamenja vse pojavitve starega imena slike z novim.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
with open(file_path, 'r', encoding='utf-8') as f:
|
||||||
|
content = f.read()
|
||||||
|
except Exception:
|
||||||
|
# Ignoriramo binarne ali neberljive datoteke
|
||||||
|
return False
|
||||||
|
|
||||||
|
if old_filename in content:
|
||||||
|
updated_content = content.replace(old_filename, new_filename)
|
||||||
|
if not dry_run:
|
||||||
|
try:
|
||||||
|
with open(file_path, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(updated_content)
|
||||||
|
print(f" Posodobljene reference v: '{os.path.relpath(file_path, PROJECT_ROOT)}'")
|
||||||
|
return True
|
||||||
|
except Exception as e:
|
||||||
|
print(f" Napaka pri zapisovanju v '{file_path}': {e}")
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
print(f" DRY RUN: Posodobil bi reference v: '{os.path.relpath(file_path, PROJECT_ROOT)}'")
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def find_files_to_update(scan_dirs, exclude_dirs):
|
||||||
|
"""
|
||||||
|
Rekurzivno poišče vse datoteke z ustreznimi končnicami, pri tem pa ignorira izključene mape.
|
||||||
|
"""
|
||||||
|
found_files = []
|
||||||
|
for directory in scan_dirs:
|
||||||
|
scan_path = os.path.join(PROJECT_ROOT, directory)
|
||||||
|
for dirpath, dirnames, filenames in os.walk(scan_path):
|
||||||
|
# Učinkovit način za izključitev map: odstranimo jih iz seznama za nadaljnje pregledovanje
|
||||||
|
dirnames[:] = [d for d in dirnames if d not in exclude_dirs]
|
||||||
|
|
||||||
|
for filename in filenames:
|
||||||
|
if any(filename.endswith(ext) for ext in FILE_EXTENSIONS_TO_UPDATE):
|
||||||
|
found_files.append(os.path.join(dirpath, filename))
|
||||||
|
return sorted(list(set(found_files)))
|
||||||
|
|
||||||
|
|
||||||
|
# --- Glavna funkcija ---
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description="Optimizira slike v WebP in posodobi reference v projektu.")
|
||||||
|
parser.add_argument("--dry-run", action="store_true", help="Prikaže, katere spremembe bi se zgodile, a jih ne izvede.")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
images_full_path = os.path.join(PROJECT_ROOT, IMAGES_DIR_PATH)
|
||||||
|
original_images_full_path = os.path.join(images_full_path, ORIGINAL_IMAGES_SUBDIR_NAME)
|
||||||
|
|
||||||
|
# Dodamo mapo z originali v seznam za izključitev, da ne skeniramo še tam.
|
||||||
|
DIRECTORIES_TO_EXCLUDE_FROM_SCAN.append(ORIGINAL_IMAGES_SUBDIR_NAME)
|
||||||
|
|
||||||
|
if not os.path.isdir(images_full_path):
|
||||||
|
print(f"Napaka: Mapa s slikami '{images_full_path}' ne obstaja. Preverite pot v konfiguraciji.")
|
||||||
|
return
|
||||||
|
|
||||||
|
if not args.dry_run:
|
||||||
|
os.makedirs(original_images_full_path, exist_ok=True)
|
||||||
|
print(f"Mapa za originale: '{original_images_full_path}'")
|
||||||
|
else:
|
||||||
|
print(f"DRY RUN: Mapa za originale bi bila '{original_images_full_path}'.")
|
||||||
|
|
||||||
|
optimized_images_map = []
|
||||||
|
|
||||||
|
print("\n--- FAZA 1: OPTIMIZACIJA SLIK ---")
|
||||||
|
for dirpath, dirnames, filenames in os.walk(images_full_path):
|
||||||
|
# preskoči mapo z originali, če že obstaja
|
||||||
|
dirnames[:] = [
|
||||||
|
d for d in dirnames
|
||||||
|
if os.path.relpath(os.path.join(dirpath, d), images_full_path) != ORIGINAL_IMAGES_SUBDIR_NAME
|
||||||
|
]
|
||||||
|
|
||||||
|
for filename in filenames:
|
||||||
|
file_path = os.path.join(dirpath, filename)
|
||||||
|
|
||||||
|
if not os.path.isfile(file_path):
|
||||||
|
continue
|
||||||
|
|
||||||
|
name, ext = os.path.splitext(filename)
|
||||||
|
ext = ext.lower()
|
||||||
|
|
||||||
|
if filename in EXCLUDE_FILES_FROM_OPTIMIZATION:
|
||||||
|
print(f"- Preskakujem izključeno datoteko: '{filename}'")
|
||||||
|
continue
|
||||||
|
|
||||||
|
if ext in IMAGE_EXTENSIONS_TO_OPTIMIZE:
|
||||||
|
new_filename = f"{name}.webp"
|
||||||
|
new_file_path = os.path.join(dirpath, new_filename)
|
||||||
|
|
||||||
|
rel_dir = os.path.relpath(dirpath, images_full_path)
|
||||||
|
rel_dir = "" if rel_dir == "." else rel_dir
|
||||||
|
old_rel_path = os.path.join(rel_dir, filename) if rel_dir else filename
|
||||||
|
new_rel_path = os.path.join(rel_dir, new_filename) if rel_dir else new_filename
|
||||||
|
old_rel_path = old_rel_path.replace(os.sep, "/")
|
||||||
|
new_rel_path = new_rel_path.replace(os.sep, "/")
|
||||||
|
|
||||||
|
# Preveri, če WebP verzija že obstaja in je novejša
|
||||||
|
if os.path.exists(new_file_path) and os.path.getmtime(new_file_path) > os.path.getmtime(file_path):
|
||||||
|
print(f"- WebP '{new_rel_path}' že obstaja in je posodobljen. Preskakujem optimizacijo.")
|
||||||
|
optimized_images_map.append({'old': filename, 'new': new_filename, 'old_path': old_rel_path, 'new_path': new_rel_path})
|
||||||
|
continue
|
||||||
|
|
||||||
|
if optimize_image(file_path, new_file_path, WEBP_QUALITY, MAX_IMAGE_DIMENSION, args.dry_run):
|
||||||
|
optimized_images_map.append({'old': filename, 'new': new_filename, 'old_path': old_rel_path, 'new_path': new_rel_path})
|
||||||
|
if not args.dry_run:
|
||||||
|
try:
|
||||||
|
destination_dir = os.path.join(original_images_full_path, rel_dir) if rel_dir else original_images_full_path
|
||||||
|
os.makedirs(destination_dir, exist_ok=True)
|
||||||
|
shutil.move(file_path, os.path.join(destination_dir, filename))
|
||||||
|
print(f" Original '{old_rel_path}' premaknjen v '{ORIGINAL_IMAGES_SUBDIR_NAME}/'.")
|
||||||
|
except Exception as e:
|
||||||
|
print(f" NAPAKA pri premikanju '{old_rel_path}': {e}")
|
||||||
|
else:
|
||||||
|
print(f" DRY RUN: Original '{old_rel_path}' bi bil premaknjen v '{ORIGINAL_IMAGES_SUBDIR_NAME}/'.")
|
||||||
|
|
||||||
|
if not optimized_images_map:
|
||||||
|
print("\nNi bilo najdenih novih slik za optimizacijo.")
|
||||||
|
|
||||||
|
print("\n--- FAZA 2: POSODABLJANJE REFERENC V PROJEKTU ---")
|
||||||
|
|
||||||
|
files_to_scan = find_files_to_update(DIRECTORIES_TO_SCAN, DIRECTORIES_TO_EXCLUDE_FROM_SCAN)
|
||||||
|
|
||||||
|
if not files_to_scan:
|
||||||
|
print("Ni najdenih .html, .css ali .js datotek za pregled.")
|
||||||
|
else:
|
||||||
|
print(f"Najdenih {len(files_to_scan)} datotek za pregled...")
|
||||||
|
|
||||||
|
updated_files_count = 0
|
||||||
|
for file_path in files_to_scan:
|
||||||
|
file_was_updated = False
|
||||||
|
for img_info in optimized_images_map:
|
||||||
|
replaced = False
|
||||||
|
if update_file_references(file_path, img_info['old_path'], img_info['new_path'], args.dry_run):
|
||||||
|
replaced = True
|
||||||
|
# za nazaj združljivost: če je v datoteki samo ime brez poti
|
||||||
|
if update_file_references(file_path, img_info['old'], img_info['new'], args.dry_run):
|
||||||
|
replaced = True
|
||||||
|
|
||||||
|
if replaced:
|
||||||
|
file_was_updated = True
|
||||||
|
|
||||||
|
if file_was_updated:
|
||||||
|
updated_files_count += 1
|
||||||
|
|
||||||
|
print(f"\nPregledanih je bilo {len(files_to_scan)} datotek.")
|
||||||
|
print(f"Posodobljenih je bilo {updated_files_count} datotek.")
|
||||||
|
print("\n--- SKRIPTA JE ZAKLJUČILA Z DELOM ---")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -4,6 +4,16 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Pogosta vprašanja - Prosberry</title>
|
<title>Pogosta vprašanja - Prosberry</title>
|
||||||
|
<meta name="description" content="Poiščite odgovore na pogosta vprašanja o medkulturnem posredovanju, delavnicah in sodelovanju z Prosberry. Izvedite več o naših storitvah in kako vam lahko pomagamo.">
|
||||||
|
<meta name="keywords" content="pogosta vprašanja, FAQ, medkulturno posredovanje, delavnice, Prosberry, Amra Kurešepi Zulji, vprašanja in odgovori">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +24,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -253,9 +263,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const faqItems = document.querySelectorAll('.faq-item');
|
const faqItems = document.querySelectorAll('.faq-item');
|
||||||
|
|||||||
@@ -4,6 +4,17 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Politika zasebnosti - Prosberry</title>
|
<title>Politika zasebnosti - Prosberry</title>
|
||||||
|
<meta name="description" content="Preberite politiko zasebnosti podjetja PROSBERRY, Amra Kurešepi Zulji s.p. Izvedite več o varovanju vaših osebnih podatkov, uporabi kontaktnega obrazca, pogodbeni obdelavi in hrambi podatkov.">
|
||||||
|
<meta name="keywords" content="politika zasebnosti, varovanje podatkov, GDPR, Prosberry, Amra Kurešepi Zulji, osebni podatki, piškotki">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="canonical" href="https://www.prosberry.si/politika-zasebnosti/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +25,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -206,8 +217,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -4,6 +4,16 @@
|
|||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Ponudba - Prosberry</title>
|
<title>Ponudba - Prosberry</title>
|
||||||
|
<meta name="description" content="Odkrijte celotno ponudbo Prosberry: tečaji angleščine, albanščine in slovenščine za vse nivoje ter medkulturno posredovanje za institucije, šole in priseljence. Učenje in podpora prilagojena vašim potrebam.">
|
||||||
|
<meta name="keywords" content="ponudba, tečaji angleščine, učenje albanščine, tečaji slovenščine, medkulturno posredovanje, inštrukcije, Prosberry, Amra Kurešepi Zulji">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
|
<link rel="preconnect" href="https://unpkg.com" />
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com" />
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com" />
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" />
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css" />
|
<link rel="stylesheet" href="/css/style.css" />
|
||||||
<link rel="stylesheet" href="/css/animations.css" />
|
<link rel="stylesheet" href="/css/animations.css" />
|
||||||
@@ -14,8 +24,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -254,8 +264,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
User-agent: *
|
||||||
|
Allow: /
|
||||||
|
Disallow: /kontakt/process_form.php
|
||||||
|
|
||||||
|
Sitemap: https://www.prosberry.si/sitemap.xml
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/kdo-sem/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/politika-zasebnosti/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/skupaj-za-vkljucevanje/delavnica-vrtec-novi-zacetki/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/skupaj-za-vkljucevanje/delavnica-od-tujca-do-sosolca/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/skupaj-za-vkljucevanje/delavnica-sola-in-starsi/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/skupaj-za-vkljucevanje/delavnica-zakaj-znati-slovensko/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/skupaj-za-vkljucevanje/medkulturno-posredovanje/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/kontakt/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/delavnice/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/cene-in-sodelovanja/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/pogosta-vprasanja/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/ponudba/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://www.prosberry.si/cene-in-reference/</loc>
|
||||||
|
<lastmod>2025-11-04</lastmod>
|
||||||
|
</url>
|
||||||
|
</urlset>
|
||||||
@@ -4,6 +4,17 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Delavnica: Od tujca do sošolca - Prosberry</title>
|
<title>Delavnica: Od tujca do sošolca - Prosberry</title>
|
||||||
|
<meta name="description" content="Delavnica 'Od tujca do sošolca' ponuja učiteljem učinkovite strategije za motivacijo in vključevanje učencev priseljencev. Spoznajte, kako krepiti kulturno občutljivost in premagovati jezikovne ovire v razredu.">
|
||||||
|
<meta name="keywords" content="delavnica za učitelje, učenci priseljenci, motivacija učencev, kulturna občutljivost, jezikovne ovire, Prosberry, Amra Kurešepi Zulji">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="canonical" href="https://www.prosberry.si/skupaj-za-vkljucevanje/delavnica-od-tujca-do-sosolca/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +25,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -191,7 +202,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="workshop-image" data-aos="fade-left">
|
<div class="workshop-image" data-aos="fade-left">
|
||||||
<div class="workshop-image-frame">
|
<div class="workshop-image-frame">
|
||||||
<img src="/assets/images/vkljucevanje/delavnica-ucitelji.png" alt="Ilustracija učiteljice, ki pomaga učencem različnih kultur">
|
<img src="/assets/images/vkljucevanje/delavnica-ucitelji.webp" alt="Ilustracija učiteljice, ki pomaga učencem različnih kultur" loading="lazy" decoding="async" width="1536" height="1024">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -214,8 +225,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -4,6 +4,17 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Delavnica: Šola in starši priseljenci - Prosberry</title>
|
<title>Delavnica: Šola in starši priseljenci - Prosberry</title>
|
||||||
|
<meta name="description" content="Delavnica 'Šola in starši priseljenci' pomaga staršem razumeti slovenski šolski sistem, njihove pravice in odgovornosti ter učinkovito sodelovati s šolo za podporo otrok. Spoznajte cilje, trajanje in ceno delavnice.">
|
||||||
|
<meta name="keywords" content="delavnica šola, starši priseljenci, sodelovanje s šolo, slovenski šolski sistem, podpora otrokom, Prosberry, Amra Kurešepi Zulji">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="canonical" href="https://www.prosberry.si/skupaj-za-vkljucevanje/delavnica-sola-in-starsi/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +25,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -190,7 +201,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="workshop-image" data-aos="fade-left">
|
<div class="workshop-image" data-aos="fade-left">
|
||||||
<div class="workshop-image-frame">
|
<div class="workshop-image-frame">
|
||||||
<img src="/assets/images/vkljucevanje/delavnica-starsi-sola.png" alt="Ilustracija sestanka staršev in učiteljev">
|
<img src="/assets/images/vkljucevanje/delavnica-starsi-sola.webp" alt="Ilustracija sestanka staršev in učiteljev" loading="lazy" decoding="async" width="1536" height="1024">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -213,8 +224,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -4,6 +4,17 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Delavnica: Skupaj gradimo nove začetke - Prosberry</title>
|
<title>Delavnica: Skupaj gradimo nove začetke - Prosberry</title>
|
||||||
|
<meta name="description" content="Delavnica 'Skupaj gradimo nove začetke' pomaga vrtcem in staršem priseljencem vzpostaviti zaupanje, razumeti delovanje vrtca ter olajšati vključevanje otrok v novo okolje. Spoznajte cilje, trajanje in ceno delavnice.">
|
||||||
|
<meta name="keywords" content="delavnica vrtec, starši priseljenci, vključevanje otrok, novi začetki, medkulturno razumevanje, Prosberry, Amra Kurešepi Zulji">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="canonical" href="https://www.prosberry.si/skupaj-za-vkljucevanje/delavnica-vrtec-novi-zacetki/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +25,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -190,7 +201,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="workshop-image" data-aos="fade-left">
|
<div class="workshop-image" data-aos="fade-left">
|
||||||
<div class="workshop-image-frame">
|
<div class="workshop-image-frame">
|
||||||
<img src="/assets/images/vkljucevanje/delavnica-starsi-vrtec.png" alt="Ilustracija srečanja staršev v vrtcu">
|
<img src="/assets/images/vkljucevanje/delavnica-starsi-vrtec.webp" alt="Ilustracija srečanja staršev v vrtcu" loading="lazy" decoding="async" width="1536" height="1024">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -213,8 +224,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -4,6 +4,16 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Delavnica: Zakaj se splača znati slovensko? - Prosberry</title>
|
<title>Delavnica: Zakaj se splača znati slovensko? - Prosberry</title>
|
||||||
|
<meta name="description" content="Interaktivna delavnica 'Zakaj se splača znati slovensko?' za učence priseljence. Spoznajte pomen slovenskega jezika za šolski uspeh, vsakdanje življenje in gradnjo samozavesti. Delavnica je prilagojena skupini in poteka v šoli.">
|
||||||
|
<meta name="keywords" content="delavnica za učence, učenje slovenščine, učenci priseljenci, vključevanje, samozavest, Prosberry, Amra Kurešepi Zulji">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +24,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -189,7 +199,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="workshop-image" data-aos="fade-left">
|
<div class="workshop-image" data-aos="fade-left">
|
||||||
<div class="workshop-image-frame">
|
<div class="workshop-image-frame">
|
||||||
<img src="/assets/images/vkljucevanje/delavnica-ucenci.png" alt="Ilustracija učenja slovenskega jezika">
|
<img src="/assets/images/vkljucevanje/delavnica-ucenci.webp" alt="Ilustracija učenja slovenskega jezika" loading="lazy" decoding="async" width="1536" height="1024">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -212,8 +222,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -4,6 +4,17 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Medkulturno posredovanje - Prosberry</title>
|
<title>Medkulturno posredovanje - Prosberry</title>
|
||||||
|
<meta name="description" content="Medkulturno posredovanje Prosberry pomaga pri razumevanju in reševanju nesporazumov med posamezniki in skupinami z različnimi kulturnimi ozadji. Spoznajte individualne in skupinske oblike posredovanja ter potek sodelovanja.">
|
||||||
|
<meta name="keywords" content="medkulturno posredovanje, kulturne razlike, reševanje konfliktov, individualno posredovanje, skupinsko posredovanje, Prosberry, Amra Kurešepi Zulji">
|
||||||
|
<meta name="author" content="Amra Kurešepi Zulji">
|
||||||
|
<link rel="canonical" href="https://www.prosberry.si/skupaj-za-vkljucevanje/medkulturno-posredovanje/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="preconnect" href="https://unpkg.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="dns-prefetch" href="https://unpkg.com">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
|
||||||
<link rel="stylesheet" href="/css/style.css">
|
<link rel="stylesheet" href="/css/style.css">
|
||||||
<link rel="stylesheet" href="/css/animations.css">
|
<link rel="stylesheet" href="/css/animations.css">
|
||||||
@@ -14,8 +25,8 @@
|
|||||||
<div class="logo">
|
<div class="logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/logo.png" type="image/webp">
|
<source srcset="/assets/images/logo.webp" type="image/webp">
|
||||||
<img src="/assets/images/logo.png" alt="Prosberry Logo">
|
<img src="/assets/images/logo.webp" alt="Prosberry Logo" width="1500" height="500" decoding="async">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -148,8 +159,8 @@
|
|||||||
<div class="mediation-detail-container">
|
<div class="mediation-detail-container">
|
||||||
<div class="mediation-detail-image" data-aos="fade-up">
|
<div class="mediation-detail-image" data-aos="fade-up">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/individualno.jpeg" type="image/jpeg">
|
<source srcset="/assets/images/individualno.webp" type="image/webp">
|
||||||
<img src="/assets/images/individualno.jpeg" alt="Individualno medkulturno posredovanje">
|
<img src="/assets/images/individualno.webp" alt="Individualno medkulturno posredovanje" loading="lazy" decoding="async" width="1248" height="832">
|
||||||
</picture>
|
</picture>
|
||||||
</div>
|
</div>
|
||||||
<div class="mediation-detail-text" data-aos="fade-up" data-aos-delay="120">
|
<div class="mediation-detail-text" data-aos="fade-up" data-aos-delay="120">
|
||||||
@@ -169,8 +180,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mediation-detail-image" data-aos="fade-up" data-aos-delay="120">
|
<div class="mediation-detail-image" data-aos="fade-up" data-aos-delay="120">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/assets/images/skupinsko.jpeg" type="image/jpeg">
|
<source srcset="/assets/images/skupinsko.webp" type="image/webp">
|
||||||
<img src="/assets/images/skupinsko.jpeg" alt="Skupinsko medkulturno posredovanje">
|
<img src="/assets/images/skupinsko.webp" alt="Skupinsko medkulturno posredovanje" loading="lazy" decoding="async" width="1170" height="777">
|
||||||
</picture>
|
</picture>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -257,8 +268,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
|
<script src="https://unpkg.com/aos@next/dist/aos.js" defer></script>
|
||||||
<script src="/js/main.js"></script>
|
<script src="/js/main.js" defer></script>
|
||||||
<script src="/js/animations.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||