+EaP 4/2010 (164)
[www.energie.vellum.cz.git] / common.php
index 69ffa30..2a3db70 100644 (file)
                unset($viewcvs);
        $cvs_id_split=split(" ",$cvs_id);
        if (count($cvs_id_split)==8) {
+               $cvs_id_split[2]=""
+                               ."<a href=\"".ereg_replace("/viewcvs/","\\0~checkout~/",$viewcvs)."?rev=".$cvs_id_split[2]."\">"
+                               .$cvs_id_split[2]."</a>";
                $cvs_id_split[1]="<a href=\"$viewcvs\">".$cvs_id_split[1]."</a>";
-               $cvs_id_split[5]="<a href=\"mailto:".$cvs_id_split[5]."@$cvs_mailhost\">".$cvs_id_split[5]."</a>";
+               $cvs_id_split[5]="<a href=\"mailto:$admin_mail\">".$cvs_id_split[5]."</a>";
                }
        $cvs_id_html=join(" ",$cvs_id_split);
 
+       if (!isset($head))
+               $head="";
+       if (!isset($energie_base))
+               $energie_base="";
+
+       unset($have_ent);
+       if (isset($HTTP_GET_VARS[    "have_ent"]))
+               $have_ent=true;
+       if (isset($HTTP_GET_VARS["amp;have_ent"]))
+               $have_ent=false;
+       if ((!isset($detect_ent) || $detect_ent) && !isset($have_ent) && $HTTP_SERVER_VARS["REQUEST_METHOD"]=="GET")
+               $head.='<meta http-equiv="Refresh" content="0; URL='
+                               .htmlspecialchars("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["PHP_SELF"]
+                                               ."?".(strlen($HTTP_SERVER_VARS["QUERY_STRING"]) ? $HTTP_SERVER_VARS["QUERY_STRING"] : "detect_ent_glue=1")
+                                                               ."&have_ent=detect")
+                               .'" />'."\n";
+       fixampvars();
+
        $have_js=(isset($HTTP_GET_VARS["have_js"]) || isset($HTTP_POST_VARS["have_js"])
                        ? "?have_js=1" : "");
        if (isset($detect_js) && !$have_js)
-               $head.='<script type="text/javascript" src="have_js.js"></script>'."\n";
+               $head.='<script type="text/javascript" src="'.$energie_base.'have_js.js"></script>'."\n";
 
        $user_agent=(!isset($HTTP_SERVER_VARS["HTTP_USER_AGENT"]) ? "" : $HTTP_SERVER_VARS["HTTP_USER_AGENT"]);
        if (ereg("[[:<:]]MSIE ([0-9]+)\\.",$user_agent,$msie_major_a))
        $have_style=!isset($mozilla_major) || $mozilla_major!=4;
        $have_css=true; // doesn't hurt anybody AFAIK
 
-function addpercents($url)
+function fixampvars()
 {
-       $r=$c="";
-       foreach(preg_split('//', $url, -1, PREG_SPLIT_NO_EMPTY) as $c)
-               if (ereg("[a-zA-Z0-9]",$c))
-                       $r.=$c;
-               else
-                       $r.=sprintf("%%%02X",ord($c));
-       return($r);
+       $ars=array("HTTP_GET_VARS","HTTP_POST_VARS");
+       foreach ($ars as $ar) {
+               foreach ($GLOBALS[$ar] as $key=>$val) {
+                       if (substr($key,0,4)!="amp;")
+                               continue;
+                       unset($GLOBALS[$ar][$key]);
+                       $GLOBALS[$ar][substr($key,4)]=$val;
+                       }
+               }
 }
 
 function fatal($msg="UNKNOWN")
 {
        global $admin_mail;
 
-       heading(false/*title*/); // it is always safe
+       heading(false/*title*/,false/*indexme*/); // notitle is always safe, don't index the error message
        print("\n<p>&nbsp;<br />&nbsp;</p><hr /><h1 class=\"error\">Nastala chyba pøi zpracování: $msg!</h1>\n"
                        ."<p>Mù¾ete tento problém nahlásit <a href=\"mailto:$admin_mail\">správci tohoto webu</a>.</p>\n");
        footer();
@@ -168,17 +191,12 @@ function img_size($width,$height)
 
 function img($file,$alt,$attrs="")
 {
-       list($width,$height)=getimagesize($file);
+       list($width,$height)=getimagesize(ereg_replace("\\.mng\$",".gif",$file));
        $alt=htmlspecialchars($alt);
        return("<img src=\"$file\" alt=\"$alt\" title=\"$alt\" ".img_size($width,$height)
                        .($attrs=="" ? "" : " ".$attrs)." />");
 }
 
-function gsm_banking()
-{
-       return(img("img/sluzby_bankovni_pggsm.gif","Paegas GSM banking","class=\"img-align\""));
-}
-
 function price_a()
 {
        if (!($f=fopen("objednavka.js","r")))
@@ -219,7 +237,7 @@ function title_month($year,$month)
                        );
 }
 
-function title_icons_table_month($year,$month,$month_last,$sequential)
+function title_icons_table_month($year,$month,$month_last,$sequential,$has_contents)
 {
        global $tb_clanek;
 
@@ -230,11 +248,13 @@ function title_icons_table_month($year,$month,$month_last,$sequential)
                                .img($month_a["icon"],"titulní stránka ".$month_a["name_full"])."</td></tr>\n"
                        ."<tr><td align=\"left\" valign=\"top\" class=\"nowrap\">\n"
                                ."&bull;&nbsp;<a href=\"title.php?year=$year&amp;month=$month\">titulní strana</a><br />\n"
-                               ."&bull;&nbsp;<a href=\"obsah.php?year=$year&amp;month=$month\">obsah</a><br />\n");
+                       );
+       if ($has_contents)
+               print("&bull;&nbsp;<a href=\"obsah.php?year=$year&amp;month=$month\">obsah</a><br />\n");
        $result=db_query("select name,id from $tb_clanek where year=$year and month=$month order by id");
        while ($row=mysql_fetch_array($result))
                print("&bull;&nbsp;<a href=\"clanek.php?year=$year&amp;month=$month&amp;id=".$row["id"]."\">"
-                               .htmlspecialchars($row["name"])."</a><br />\n");
+                               .htmlspecialchars(ereg_replace("^.*\\|","",$row["name"]))."</a><br />\n");
        mysql_free_result($result);
        print("</td></tr></table>");
 }
@@ -249,7 +269,7 @@ function title_icons($year,$month)
                .(isset($year) ? "</a>" : "")
                ."</h2>\n");
 
-       $result=db_query("select year,month,month_last,sequential from $tb_obsah"
+       $result=db_query("select year,month,month_last,sequential,contents is not null as has_contents from $tb_obsah"
                        .(isset($year) || isset($month) ? " where" : "")
                        .(isset($year ) ? " year=$year"   : "")
                        .(isset($year) && isset($month) ? " and" : "")
@@ -295,7 +315,7 @@ function title_icons($year,$month)
                print("<td align=\"center\" valign=\"top\""
                                .($row["month_last"]!=$row["month"] ? " colspan=\"".($row["month_last"]+1-$row["month"])."\"" : "")
                                .">");
-               title_icons_table_month($year,$row["month"]+1,$row["month_last"]+1,$row["sequential"]);
+               title_icons_table_month($year,$row["month"]+1,$row["month_last"]+1,$row["sequential"],$row["has_contents"]);
                print("</td>\n");
                $month=$row["month_last"];
                }
@@ -358,6 +378,8 @@ function img_href($filename,$text)
 
 function print_pdf_layout($name,$base)
 {
+       global $energie_base;
+
        $imgfmt=(image_supported("image/png") ? "png" : "gif");
        ?>
 <p>Shodný <?php print($name); ?> je dostupný ve dvou rùzných formátech souboru. V&nbsp;pøípadì,
@@ -374,14 +396,15 @@ zvolte pros
 
 <li>
 <table border="0">
-<tr><td><?php print("<a href=\"$base.pdf\">".img("img/adobe-pdficon-alpha.gif","Adobe PDF")."</a>"); ?></td>
+<tr><td><?php print("<a href=\"$base.pdf\">".img($energie_base."img/adobe-pdficon-alpha.".(image_supported("image/png") ? "png" : "gif"),
+                       "Adobe PDF")."</a>"); ?></td>
        <td><?php print(data_href("$base.pdf","Dokument PDF")); ?></td>
        </tr>
 </table>
 <blockquote>
 <table border="0">
 <tr><td><a href="http://www.adobe.com/products/acrobat/readstep.html"><?php
-       print(img("img/adobe-getacro.gif","Get Adobe Acrobat Reader"));
+       print(img($energie_base."img/adobe-getacro.".(image_supported("image/png") ? "png" : "gif"),"Get Adobe Acrobat Reader"));
        ?></a></td>
        <td class="smaller">Soubor je ve formátu <span class="italic">Adobe Acrobat</span>,
        pro jeho pøeètení si prosím nainstalujte
@@ -501,7 +524,7 @@ function gsm_row($name,$value)
 {
        return("<tr><td align=\"left\">$name</td>"
                        ."<td align=\"right\">".($value=="" ? "neuvádìjte" : $value)."</td>"
-                       ."<td align=\"right\">".strtr($value,"/.","#*")."</td></tr>\n");
+                       ."</tr>\n");
 }
 
 function gsm_table($total,$varsym)
@@ -509,7 +532,7 @@ function gsm_table($total,$varsym)
        global $firma_ucet,$firma_konstsym,$firma_specsym;
 
        return("<blockquote><table border=\"1\" cellpadding=\"5\">\n"
-                       ."<tr><th>polo¾ka</th><th>bankovní pøíkaz</th><th>".gsm_banking()."</th></tr>\n"
+                       ."<tr><th>polo¾ka</th><th>bankovní pøíkaz</th></tr>\n"
                        .gsm_row("Èíslo úètu",$firma_ucet)
                        .gsm_row("Èástka",sprintf("%.2f",$total))
                        .gsm_row("Konstantní symbol",$firma_konstsym)
@@ -536,6 +559,21 @@ function input_text($name,$size,$default_value="",$addons="")
        return($r);
 }
 
+function form_charset()
+{
+       // CSacek-2.1.9+ required (mod_czech support dropped!)
+       // We MUST have input coded in "iso-8859-2" as we use
+       // "csacekRecodeInput Off", CSacek otherwise tries to recode input but CSacek
+       // _cannot_ know the encoding used by the client (moreover it IGNORES POST
+       // data MIME type, even if provided by Lynx 2.8.4dev.11, Mozilla 1.0.0
+       // doesn't provide anything).
+       // "iso-8859-2" should be replaced by $HTTP_SERVER_VARS["HTTP_X_CLIENT_CHARSET"]
+       // and "csacekRecodeInput On"(default) when CSacek fixes support of "utf-8"
+       // input-decoding, details in my mail <20020620134930.GA18761@short.ucw.cz>.
+
+       return('enctype="application/x-www-form-urlencoded" accept-charset="iso-8859-2"');
+}
+
 function print_form_radkova_inzerce($readonly,$total,$submit_name,$submit_value)
 {
        global $have_js,$text,$doklad;
@@ -543,7 +581,7 @@ function print_form_radkova_inzerce($readonly,$total,$submit_name,$submit_value)
        $addons=(!$readonly ? "" : " readonly=\"readonly\"");
        ?>
 <blockquote>
-<form action="inzerat-submit.php<?php print($have_js); ?>" method="post">
+<form action="inzerat-submit.php<?php print($have_js); ?>" method="post" <?php print(form_charset()); ?>>
 <table border="1" width="100%" cellpadding="5">
 <tr><td align="center"><table border="0">
        <tr><td align="left" class="tab-head">Text inzerátu</td></tr>
@@ -576,7 +614,7 @@ function print_form_radkova_inzerce($readonly,$total,$submit_name,$submit_value)
               >Zaslat daòový doklad?</td><td colspan="3"><input type="checkbox" name="doklad"<?php
                        print(""
                                        // some hacks as "readonly" not supported for "checkbox"es (->"disabled" for them)
-                                       .($readonly ? "" : " onclick=\"sum_total(this)\"")
+                                       .(!($have_js || $readonly) ? "" : " onclick=\"sum_total(this)\"")
                                        .(!($have_js || $readonly) ? "" : " disabled=\"disabled\"")
                                        .(!isset($doklad) ? "" : " checked=\"checked\"")
                                        .ereg_replace(" readonly=\"readonly\"","",$addons)." />");
@@ -588,7 +626,8 @@ function print_form_radkova_inzerce($readonly,$total,$submit_name,$submit_value)
        </table></td></tr>
 <tr><td align="center" id="submit_button"><?php
                print("<input type=\"submit\" name=\"$submit_name\" value=\"".htmlspecialchars($submit_value)."\""
-                               ." onclick=\"return(validate(this.form))\" />");
+                               .(!($have_js || $readonly) ? "" : " onclick=\"return(validate(this.form))\"")
+                               ." />");
                ?></td></tr>
 </table></form>
 </blockquote>
@@ -599,11 +638,31 @@ function footer_img($url,$text,$size)
 {
        global $footer_LOCAL;
        if (!isset($footer_LOCAL))
-               return("<img src=\"$url\" $size alt=\"$text\" />");
+               return("<img src=\"$url\" $size alt=\"$text\" title=\"$text\" />");
        else
                return($text);
 }
 
+function a_href($url,$contents)
+{
+       global $have_ent,$energie_base;
+
+       $r="<a href=\"";
+       $urlent=htmlspecialchars($url);
+            if ($url==$urlent)
+               $r.=$url;
+       else if (!ereg("^[a-z]+://",$url))      // $url is our resource
+               $r.=$urlent;
+       else if (isset($have_ent) && !$have_ent)        // non-ent client
+               $r.=$url;
+       else if ($have_ent) // ent client
+               $r.=$urlent;
+       else // unknown client, htmlspecialchars() should not be needed here
+               $r.=htmlspecialchars($energie_base."redirect.php?location=".urlencode($url));
+       $r.="\">$contents</a>";
+       return($r);
+}
+
 function footer($delimit=true)
 {
        // deadlock prevention:
@@ -612,21 +671,24 @@ function footer($delimit=true)
                exit();
        $footer_passed=true;
 
-       global $cvs_id_html,$viewcvs,$viewcvs,$HTTP_SERVER_VARS;
+       global $cvs_id_html,$viewcvs,$viewcvs,$HTTP_SERVER_VARS,$energie_base;
        if ($delimit)
                print("<p>&nbsp;</p>\n");
-       $uri="uri=".addpercents("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]);
+       $uri="uri=".urlencode("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]);
        ?>
 <hr />
 <table border="0" width="100%">
-<tr><td align="left"><span class="cvs-id"><?php print($cvs_id_html); ?></span></td><td align="right"><a
-       href="http://validator.w3.org/check?<?php
-               print($uri); ?>"><?php
-                               print footer_img("http://www.w3.org/Icons/valid-xhtml11","Valid XHTML 1.1!",img_size(88,31));
-                               ?></a><a href="http://jigsaw.w3.org/css-validator/validator?warning=2&amp;profile=css2&amp;<?php
-               print($uri); ?>"><?php
-                               print footer_img("http://jigsaw.w3.org/css-validator/images/vcss","Valid CSS!",img_size(88,31));
-                               ?></a></td></tr>
+<tr class="footer"><td align="left"><span class="cvs-id"><?php print($cvs_id_html); ?></span></td><td align="right"><?php
+                       print(""
+                                       .a_href("http://validator.w3.org/check?$uri",
+                                                       img($energie_base."img/valid-xhtml11.".(image_supported("image/png") ? "png" : "gif"),"Valid XHTML 1.1!"))
+                                       .a_href("http://jigsaw.w3.org/css-validator/validator?warning=2&profile=css2&$uri",
+                                                       img($energie_base."img/vcss."         .(image_supported("image/png") ? "png" : "gif"),"Valid CSS!"))
+                                       // missing trailing '/' is required by http://www.w3.org/Style/CSS/Buttons/Menu #<li> 4
+                                       .a_href("http://www.w3.org/Style/CSS/Buttons",'<span style="background-color: #ffcc66;">'
+                                                       .img($energie_base."img/mwcts."        .(image_supported("image/png") ? "png" : "gif"),"Made with CSS").'</span>')
+                                       );
+                       ?></td></tr>
 </table>
 </body></html>
 <?php
@@ -642,20 +704,17 @@ function no_cache()
        header("Pragma: no-cache");                                // HTTP/1.0
 }
 
-function heading($title=false)
+function heading($title=true,$indexme=true)
 {
-       global $HTTP_SERVER_VARS,$msie_major,$mozilla_major,$title_tail,$head_css,$have_css,$head,$heading_done,$title_prefix,$force_charset;
+       global $msie_major,$mozilla_major,$title_tail,$head_css,$have_css,$head,$heading_done,$title_prefix,$force_charset;
 
        if (isset($heading_done))
                return;
-       $heading_done=1;
+       $heading_done=true;
 
-       if (isset($force_charset))
-               $client_charset=$force_charset;
-       else
-               $client_charset=(!isset($HTTP_SERVER_VARS["CLIENT_CHARSET"]) ? "iso-8859-2" : $HTTP_SERVER_VARS["CLIENT_CHARSET"]);
-       // When "CLIENT_CHARSET" is set we MUST NOT explicitely specify our "charset"
-       header("Content-type: text/html".(isset($HTTP_SERVER_VARS["CLIENT_CHARSET"]) ? "" : "; charset=$client_charset"));
+       // $HTTP_SERVER_VARS["CLIENT_CHARSET"] ignored (mod_czech support dropped!)
+       $client_charset=(isset($force_charset) ? $force_charset : "iso-8859-2");
+       header("Content-type: text/html; charset=$client_charset");
        header("Content-Style-Type: text/css");
        if (!isset($msie_major) || $msie_major>=4) {
                print('<?xml version="1.0" encoding="'.$client_charset.'"?>'."\n");
@@ -684,11 +743,13 @@ body {
 :link    { color: aqua;   background-color: transparent; }
 :visited { color: teal;   background-color: transparent; }
 h1,h2    { color: yellow; background-color: transparent; }
+.footer img { vertical-align: middle; }
 <?php
                if (isset($head_css))
                        print(trim($head_css)."\n");
                print("--></style>\n");
                }
+       print('<meta name="robots" content="'.($indexme ? "" : "no" ).'index,follow" />'."\n");
        if (isset($head))
                print($head);
        print("</head><body");
@@ -696,8 +757,8 @@ h1,h2    { color: yellow; background-color: transparent; }
                print(" bgcolor=\"black\" text=\"white\" link=\"aqua\" vlink=\"teal\"");
        print(">\n");
        if ($title)
-               print("<h1 class=\"centered\">"
+               print("<h1 class=\"centered\"><a href=\"/\">"
                                .img("img/eap-title.".(image_supported("image/png") ? "png" : "gif"),"Energie & Peníze")
-                               ."</h1>\n");
+                               ."</a></h1>\n");
 }
 ?>