#!/usr/bin/perl
# Vstupní bod pro skupinu CGI skriptů obsluhujících stránky Deskohraní.
# Copyright © 2004-2018 Dan Zeman <zeman@ufal.mff.cuni.cz>
# Licence: GNU GPL

use utf8; # říct Perlu, že konstantní řetězce ve zdrojáku jsou v UTF
# Říct Perlu, kde najde Danovy sdílené knihovny.
# CGI skripty běží pod uživatelem apache, který nemá tyto knihovny v cestě.
use lib '/s/w/lib/dan';
use lib '/s/w/lib/cgi/mso';
use dancgi; # čtení parametrů z webu nebo z ARGV
use cas; # práce s daty a časem
use csort; # řazení podle české abecedy
use jazyky; # jazykové verze textů
use mso; # funkce pro generování stránek o olympiádě
binmode(STDOUT, ':utf8'); # říct Perlu, že UTF chceme i na výstupu

# Připojit se k databázi.
$databaze = mso::pripojit_se_k_databazi();

print("Content-type: text/html; charset=utf-8\n\n");

# Výchozí nastavení parametrů. Může být přebito parametry z URL/ARGV.
mso::provest_vychozi_nastaveni_parametru(\%konfig, $databaze);
dancgi::cist_parametry(\%konfig);
# Umožnit volat skript z příkazového řádku a předat parametry tam (např. perl prihlaseni.pl akce=caroly).
dancgi::rozebrat_parametry($ARGV[0], \%konfig);
# Nastavit výchozí hodnoty parametrů.
if($konfig{jazyk} eq "")
{
    $konfig{jazyk} = "cs";
};
if($konfig{telo} eq "")
{
    $konfig{telo} = "text.pl";
    $konfig{text} = "uvod.htm";
};

# Zjistit aktuální rok.
my $aktualni_rok = cas::ted()->{rok};
###!!! snizeni zatizeni serveru
###!!!exit unless($konfig{rok} eq '' || $konfig{rok}==$aktualni_rok || rand 1000 <= 100);

# Hrubé zabezpečení proti útokům a zneužívání: parametr telo smí odkazovat jen na námi schválené stránky. Žádná lomítka nebo svislítka!
die("Forbidden telo='$konfig{telo}'") if($konfig{telo} !~ m/^[-a-z_\.]*$/);
die("Forbidden text='$konfig{text}'") if($konfig{text} !~ m/^[-a-z0-9_\.]*$/);

# Nepustit do rámů (hlavička, menu a tělo) parametry, které by tam byly zbytečné.
# Týká se jen parametrů, o kterých předem víme. Parametry, o kterých není explicitně řečeno jinak, se dědí všude.
# Hlavička
%konfig_hlavicka = %konfig;
delete($konfig_hlavicka{trid});
# Parametr co=zpracuj z přihlášky se přímo nesmí dědit.
# Jinak bychom po odeslání přihlášky mohli dál klikat po webu Deskohraní a až příště přijdeme na přilášku,
# nenechá nás ji to vyplnit a rovnou nám to vynadá, že odesíláme nevyplněnou přihlášku!
delete($konfig_hlavicka{co});
$parametry_hlavicka = dancgi::sestavit_parametry_odkaz(\%konfig_hlavicka);
$hlavicka = "hlavicka.pl?$parametry_hlavicka";
# Menu
%konfig_menu = %konfig;
delete($konfig_menu{trid});
delete($konfig_menu{co});
$parametry_menu = dancgi::sestavit_parametry_odkaz(\%konfig_menu);
$menu = "menu.pl?$parametry_menu";
# Tělo
%konfig_telo = %konfig;
delete($konfig_telo{telo});
delete($konfig_telo{trid}) if($konfig{telo} =~ m/propozice/);
delete($konfig_telo{co}) unless(($konfig{telo} =~ m/prihlaska/) or ($konfig{telo} =~ m/prihlaska_skoly/));
$parametry_telo = dancgi::sestavit_parametry_odkaz(\%konfig_telo);
$telo = "$konfig{telo}?$parametry_telo";
#
$jazyky::jazyk = $konfig{jazyk};
$title = jazyky::zjistit(title, $aktualni_rok);
$nofrm = "Kliknutím <a href=\"$menu\">sem</a> se dostanete na menu bez rámů.\n";

# Zjistit, kolikátý je tohle ročník a od kdy do kdy se koná.
$roky = mso::dotazat_se_databaze($databaze, "rok", "zacatek", "konec", "rocniky ORDER BY rok");
for($i = 0; $i<=$#{$roky}; $i++)
{
    if($roky->[$i]{rok}==$konfig{rok})
    {
        $termin = "$roky->[$i]{zacatek} – $roky->[$i]{konec}";
        last;
    }
}
$i_rocnik = $i+1;
# Jestliže je začátek i konec ve stejném roce, upravit termín, aby v něm byl rok jenom jednou.
$termin =~ s/^(\d+\.\d+\.)(\d+) – (\d+\.\d+\.)\2$/$1 – $3$2/;
# Jestliže je navíc začátek i konec ve stejném měsíci, upravit termín, aby v něm byl měsíc jenom jednou.
$termin =~ s/^(\d+\.)(\d+\.) – (\d+\.)\2(\d+)$/$1–$3 $2 $4/;

# rozliseni jestli chceme sirokou verzi stranky (bez praveho sloupce boxu) nebo ne
if ($konfig{telo} =~ /(akce|globtabl|prihlaska|prihlaska_skoly|propozice|prihlaseni|skoly|hra|doprogram|foto|othellohrani|hlasovani)/ or
     (($konfig{telo} eq 'text.pl') and ($konfig{text} =~ /(predchozi_rocniky|ateam|aktuality|kde)/))
   ) {
  $wide = 1;
  $pageid='subpage';
} else {
  $wide = 0;
  $pageid='home';
  $newsletter_uvod = jazyky::zjistit('newsletter_uvod');
  $newsletter_jmeno = jazyky::zjistit('jmeno');
  $newsletter_prijmeni = jazyky::zjistit('prijmeni');
  $newsletter_email = jazyky::zjistit('email');
  $newsletter_prihlasit = jazyky::zjistit('prihlasit');
  $newsletter_odhlasit = jazyky::zjistit('odhlasit');

  $newsletter = <<EOF
    <div id="newsletter-box">
      <h2>$newsletter_uvod</h2>
      <form name="form1" method="post" action="/prihlasit.php" id="newsletter">
        <p>
          <input type="text" name="jmeno" id="newsletter-forname" value="$newsletter_jmeno" onblur="if(this.value==''){this.value='$newsletter_jmeno'}" onfocus="if(this.value=='$newsletter_jmeno'){this.value=''}" />
          <input type="text" name="prijmeni" id="newsletter-surname" value="$newsletter_prijmeni" onblur="if(this.value==''){this.value='$newsletter_prijmeni'}" onfocus="if(this.value=='$newsletter_prijmeni'){this.value=''}" /><span class="cleaner"></span>
        </p>
        <p>
          <input type="text" name="email" id="newsletter-email" value="$newsletter_email" onblur="if(this.value==''){this.value='$newsletter_email'}" onfocus="if(this.value=='$newsletter_email'){this.value=''}" />
          <input name="jazyk" type="hidden" id="jazyk" value="$konfig{jazyk}" />
        </p>
        <p class="submit">
          <input type="submit" name="akce" id="newsletter-submit" value="$newsletter_prihlasit" />
          <input type="submit" name="akce" id="newsletter-unsubscribe" value="$newsletter_odhlasit" />
        </p>
      </form>
    </div>
EOF
;

};

$pageclass = ' big' if($konfig{telo} =~ m/^(globtabl|hra)\.pl$/);
if($konfig{rok}==$aktualni_rok) {$classoldnew = 'new'} else {$classoldnew = 'old'};

print <<EOF
<!DOCTYPE html>
<html xmlns="https://www.w3.org/1999/xhtml" dir="ltr" lang="cs-CZ">

<head profile="https://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>$title</title>
<meta name="description" content="Festival deskových her Deskohraní, kde si můžete zahrát vaší první hru, kterou vám pomůžeme vybrat a naučíme vás pravidla. Nebo můžete soupeřit o postup do mistrovství světa na některém z našich 80 turnajů. Je to na vás." />
<meta name="keywords" content="deskové hry, festival, společenské hry, Deskohraní" />
<meta property="og:title" content="Deskohraní - mezinárodní festival deskových her"/>
<meta property="og:image" content="https://deskohrani.cz/obr/loga/deskohrani.jpg"/>
<meta property="og:site_name" content="Deskohraní"/>
<meta property="og:description" content="Festival deskových her Deskohraní, kde si můžete zahrát tu první hru, kterou vám pomůžeme vybrat a naučíme vás pravidla. Nebo můžete soupeřit o postup do mistrovství světa na některém z našich 80 turnajů. Je to na vás."/>
<meta property="og:url" content="https://deskohrani.cz"/>
<meta property="og:type" content="event"/>

<link rel="stylesheet" href="/design/style.css?v=1.1" type="text/css" media="screen" />
<link rel="stylesheet" href="/design/css3.css?=1.0" type="text/css" media="screen" />
<!--[if IE]><link rel="stylesheet" href="/design/ie.css" type="text/css" media="screen" /><![endif]-->
<link rel="icon" type="image/vnd.microsoft.icon" href="/design/i/favicon.ico" />
<link rel="index" title="festival her Deskohraní" href="https://deskohrani.cz/" />

<script type='text/javascript' src='/design/js/css_browser_selector.js'></script>
<script type='text/javascript' src='/design/js/jquery-1.4.2.min.js'></script>
<script type='text/javascript' src='/design/js/jquery.lightbox-0.5.pack.js'></script>
<link rel="stylesheet" href="/design/js/jquery.lightbox-0.5.css" type="text/css" media="screen" />
<script type='text/javascript'>jQuery(document).ready(function(\$){\$("#panel a > img, #sidebar a > img").not(".nogallery, #partnerpage img").parent().lightBox({overlayBgColor:'#333838', overlayOpacity:0.8, txtImage:'Fotografie', txtOf:'z', keyToClose:'z', containerResizeSpeed:350, imageBtnClose:'/design/i/go-close.png', imageLoading:'/design/i/loading.gif', imageBtnPrev:'/design/i/go-previous.png', imageBtnNext:'/design/i/go-next.png'});});</script>
<script type='text/javascript' src='/design/js/jquery.curvycorners.packed.js'></script>

<!-- for search engines -->
<meta name="msvalidate.01" content="A6AAB95D94C8613ECBC22E0F29521097" />
</head>

<body id="$pageid" class="$classoldnew cs $pageclass">
<div id="top">
  <div id="header"><div class="wrapper">
    <h1 id="logotype" class="rocnik$aktualni_rok" ><a href="https://deskohrani.cz">festival deskových her &mdash; Deskohraní</a><span>$konfig{rok}</span></h1>
EOF
;

if($konfig{rok}==$aktualni_rok) {
print <<EOF
    <div id="when-and-where">
      <p class="em">$termin</p>
      <p class="roc">$i_rocnik. ročník</p>
      <br>
      <p>Praha–Staré Město</p>
      <p><a href="/cgi/mso/index.pl?text=kde.htm&telo=text.pl&jazyk=cs">otevírací doba zde</a></p>
    </div>
EOF
;
} else {
print <<EOF
    <div id="when-and-where">
      <p class="rocnik">$i_rocnik. ročník</p>
      <p class="nazev">Deskohraní $konfig{rok}</p>
      <p class="date">$termin</p>
    </div>
EOF
;
};


# if ($konfig{telo} =~ /foto/) {
#   print <<EOF
#       <style type="text/css">
#        #when-and-where {
#          text-indent: 0px;
#          background:url(/design/i/when-and-where-old.gif) no-repeat;
#          padding-top: 50px;
#        }
#       </style>
# EOF
# ;
# };


# jazyky - přepínání mezi jazyky
# Oddělovač je současně skrytý odkaz na vnitro (chráněné heslem), aby oprávnění měli kam kliknout.
print "<div id=\"language\">";
$odd = '<a href="vnitro/index.pl">/</a>';
if($konfig{jazyk} eq 'cs')
{
    $param = dancgi::sestavit_parametry_odkaz(\%konfig, 'jazyk=en');
    print "cs $odd <a href=\"index.pl?$param\">en</a>"
}
elsif($konfig{jazyk} eq 'en')
{
    $param = dancgi::sestavit_parametry_odkaz(\%konfig, 'jazyk=cs');
    print "<a href=\"index.pl?$param\">cs</a> $odd en"
}

print <<EOF
    </div>
  </div></div>

  <div id="main"><div class="wrapper">
EOF
; require 'menu.pl'; print <<EOF

    <div id="content">
      <div id="panel">
EOF
;
@gallery = ();
require $konfig{telo}.'';

## Zkonstruovat sidebar, pokud jde o úzkou stránku na základě array @gallery
if ($wide == 0) {
  $sidebar = "     <div id=\"sidebar\">\n      <div id=\"photos\">\n";
  if (!(@gallery)) {
    $sidebar .= <<EOF
        <a href="/obr/fotky/2003zahajeni7.jpg"><img src="/obr/fotky/2003zahajeni7.jpg" alt="" /></a>
        <a href="/obr/fotky/2003celek.jpg" class="twin-left"><img height="80" src="/obr/fotky/2003celek.jpg" alt="" /></a>
        <a href="/obr/fotky/2002med.jpg" class="twin-right"><img  height="80" src="/obr/fotky/2002med.jpg" alt="" /></a>
        <a href="/obr/fotky/2003zerzac02.jpg"><img src="/design/f/photo-d.png" alt="" /></a>
EOF
; } else {
    foreach (@gallery) {
      $sidebar .= "        <a href=\"$_\"><img src=\"$_\" alt=\"foto\"/></a>\n";
    };
  };
  $sidebar .= "      </div>";

  if (!$hide_where)
  {
    $sidebar .= "      <div id=\"when-and-where-ex\">\n";
    $sidebar .= jazyky::zjistit('misto_konani_popis');
    $sidebar .= "      </div>\n";
  };
  if (!$hide_newsletter)
  {
    $sidebar .= "      $newsletter\n";
  };

  $sidebar .= "    </div>";
};


$hlavni_organizatori = jazyky::zjistit(hlavni_organizator);
$hlavni_sponzori = jazyky::zjistit(hlavni_sponzori);
$uplny_seznam_organizatoru = jazyky::zjistit(uplny_seznam_organizatoru);
$uplny_seznam_sponzoru = jazyky::zjistit(uplny_seznam_sponzoru);

print <<EOF
      </div>

      <div id="partners">
        <div class="descriptions">
          <p class="col-left">$hlavni_organizatori</p>
          <p class="col-right">$hlavni_sponzori</p>
        </div>
        <div class="logos">
          <p class="col-left">
            <a href="https://duha.cz"><img src="/obr/loga/duha.gif" alt="" width="160"/></a>
            <br/><span style="color:#aaa">Duha - Děsír, projekt Deskohraní</span><br/>
          </p>
          <p class="col-right">
            <a href="https://www.mindok.cz"><img src="/obr/loga/mindok.png" width="150" alt="MINDOK" /></a>
            <!--<a href="https://albi.cz"><img src="/obr/loga/albi.png" alt="Albi" width="90" /></a>-->
            <a href="https://tlamagames.cz"><img src="/obr/loga/tlama-games-black.png" alt="Tlamagames" width="120" /></a>
            <a href="https://blackfire.cz"><img src="/obr/loga/blackfire.png" alt="Blackfire" width="120" /></a>
          </p>
        </div>
        <div class="descriptions">
          <p class="col-left"><a href="/cgi/mso/index.pl?text=organizatori.htm&amp;telo=text.pl&amp;jazyk=cs">$uplny_seznam_organizatoru</a></p>
          <p class="col-right"><a href="/cgi/mso/index.pl?text=sponzori.htm&amp;telo=text.pl&amp;jazyk=cs">$uplny_seznam_sponzoru</a></p>
        </div>
        <div class="cleaner"></div>
      </div>
    </div>
    $sidebar
    <div class="cleaner"></div>
  </div></div>
</div>

<div id="footer">
  <div class="top"><div class="wrapper">
    <div class="col-left">
<!--print(jazyky::zjistit("zapati", $konfig->{_cesta_html_prohlizec}, $konfig->{rok})); -->

      <p id="copyright">&copy; 2001–$aktualni_rok Martin, Dan a Klára Zemanovi, Jakub Těšínský</p>
      <ul id="contacts">
        <li>email: <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#105;&#110;&#102;&#111;&#064;&#100;&#101;&#115;&#107;&#111;&#104;&#114;&#097;&#110;&#105;&#046;&#099;&#122;" title="Otevře váš program pro odesílání emailů a přednastaví adresáta.">&#105;&#110;&#102;&#111;&#064;&#100;&#101;&#115;&#107;&#111;&#104;&#114;&#097;&#110;&#105;&#046;&#099;&#122;</a></li>
        <li>telefon: +420&nbsp;775&nbsp;989&nbsp;529; +420&nbsp;608&nbsp;797&nbsp;462; +420&nbsp;777&nbsp;852&nbsp;582</li>
        <li class="detached">Hlavními sponzory jsou <a href="https://www.mindok.cz/" title="MINDOK" target="_blank">MINDOK</a>, <a href="https://www.tlamagames.cz" target="_blank">Tlama games</a> a <a href="https://www.blackfire.cz" target="_blank">Asmodee</a>.</li>
      </ul>
    </div>

    <div class="col-right">
    </div>
    <div class="cleaner"></div>
  </div></div>

  <div class="bottom"><div class="wrapper">
    <div id="design-by" class="col-left">Design &copy; 2010 <a href="https://www.hmd.cz/" title="Na web Handmade Dreams" target="_blank">Handmade Dreams</a></div>
  </div></div>
  <div class="cleaner"></div>
</div>

</body>
</html>
EOF
;
