Order form looks as finished:
authorshort <>
Sun, 5 Aug 2001 14:34:36 +0000 (14:34 +0000)
committershort <>
Sun, 5 Aug 2001 14:34:36 +0000 (14:34 +0000)
  3 payments methods removed in favor of 2 address forms
?have_js=1 implemented for JS-conditional HTML BODY contents
JS separated to files to be XML-and-non-JS-browsers compliant

.htaccess
common.php
have_js.js [new file with mode: 0644]
index.php
objednavka.js [new file with mode: 0644]

index f1de653..7833e26 100644 (file)
--- a/.htaccess
+++ b/.htaccess
@@ -1,2 +1,3 @@
 DirectoryIndex index.php
 php_flag short_open_tag off
+AddType text/javascript .js
index edeedfe..d12e998 100644 (file)
@@ -1,6 +1,13 @@
-<?php
+<?php // $Id$
+
        error_reporting(E_ALL);
 
+       if (isset($want_js)) {
+               $have_js=isset($HTTP_GET_VARS["have_js"]) || isset($HTTP_POST_VARS["have_js"]);
+               if (!$have_js)
+                       $head.='<script type="text/javascript" src="have_js.js"></script>'."\n";
+               }
+
        $viewcvs=ereg_replace("^/~short/","\\0cgi-bin/viewcvs/",$HTTP_SERVER_VARS["SCRIPT_NAME"]);
        if ($viewcvs==$HTTP_SERVER_VARS["SCRIPT_NAME"])
                unset($viewcvs);
diff --git a/have_js.js b/have_js.js
new file mode 100644 (file)
index 0000000..546e08e
--- /dev/null
@@ -0,0 +1,15 @@
+// $Id$
+
+var searchN=window.location.search;
+if (searchN=="" || searchN=="?")
+       searchN="?";
+else
+       searchN+="&";
+searchN+="have_js=1";
+
+window.location.href
+       =window.location.protocol+"//"
+       +window.location.hostname
+       +window.location.pathname
+       +window.location.hash
+       +searchN;
index 9bb6db4..af6897b 100644 (file)
--- a/index.php
+++ b/index.php
-<?php
-       $cvs_id='$Id$';
+<?php $cvs_id='$Id$';
+
        $head_css="
 .tab-bold  { font-weight: bold; }
 .post-type { font-family: monospace; }
+.nowrap    { white-space: nowrap; }
 ";
-       $head="
-<script language=\"JavaScript\" type=\"text/javascript\"><!--
-function disable_fields(field)
-{
-       for (var formi=0;formi<document.forms.length;formi++) {
-var form=document.forms[formi];
-               for (var elementi=0;elementi<form.elements.length;elementi++) {
-var element=form.elements[elementi];
-                       if (element.name.substr(0,field.name.length+1)==field.name+'_') {
-                               element.disabled=(element.name.substr(field.name.length+1,field.value.length+1)!=field.value+'_');
-                               }
-                       }
-               }
-}
-function activate_subform(field)
-{
-       var matches=field.name.match(/^([^_]*)_([^_]*)_/);
-       if (matches.length!=3)
-               return;
-       for (var formi=0;formi<document.forms.length;formi++) {
-var form=document.forms[formi];
-               form.elements[matches[1]].value=matches[2];
-               }
-}
-
-function validate(form)
-{
-// want_ numeric check
-       for (var elementi=0;elementi<form.elements.length;elementi++) {
-var element=form.elements[elementi];
-               if (-1==element.name.search(/^want_/))
-                       continue;
-               if (-1!=element.value.search(/[^0-9]/)) {
-                       element.select();
-                       element.focus();
-                       alert('Jako poèet je mo¾no povoleno zadat jen èíselnou hodnotu!');
-                       return(false);
-                       }
-               }
-// payment check
-       for (var itemi=0;itemi<form.elements['payment'].length;itemi++) {
-var item=form.elements['payment'][itemi];
-               if (item.checked)
-                       break;
-               }
-       if (itemi>=form.elements['payment'].length) {
-               alert('Zvolte prosím jednu z metod platby');
-               return(false);
-               }
-
-       return(true);
-}
-//--></script>
-";
+       $head='
+<script type="text/javascript" src="objednavka.js"></script>
+';
+       $want_js=true;
 
        include("common.php");
 ?>
-<h1>Objednávka pøedplatného</h1>
-<form name="predplatne" action="predplatne.php" method="post">
-<table border="1">
-<tr><td><table border="0">
+<h1>Objednávka</h1>
+<form action="predplatne.php" method="post">
+<table border="0" width="100%">
+       <tr><td align="center"><table border="1" width="90%">
+       <tr><td align="center"><table border="0">
 <?php
        function tab_left($name)
-       { print("<td>Objednávám(e)</td><td><input type=\"text\" name=\"$name\" size=\"2\" /> (krát)</td>\n"); }
+       { print("<td>Objednávám(e)</td><td><input type=\"text\" name=\"$name\" size=\"2\" onkeyup=\"sum_price(this)\" onchange=\"sum_price(this)\" /> (krát)</td>\n"); }
 ?>
-<tr class="tab-bold"><?php tab_left("want_phys_2001"); ?><td>pøedplatné na rok 2001 za zvýhodnìnou cenu 360Kè</td></tr>
-<tr><?php                  tab_left("want_phys_2000"); ?><td>roèník 2000 za cenu 150 Kè</td></tr>
+       <tr class="tab-bold"><?php tab_left("want_phys_2001"); ?><td>pøedplatné na rok 2001 za zvýhodnìnou cenu 360Kè</td></tr>
+       <tr><?php                  tab_left("want_phys_2000"); ?><td>roèník 2000 za cenu 150 Kè</td></tr>
 <?php
-       $cd_types=array(
-               2000=>280,
-               1999=>280,
-               1998=>280,
-               1997=>120,
-               1996=>120,
-               );
-       foreach ($cd_types as $year => $price) {
-               print("<tr>");
-               tab_left("want_cd_$year");
-               print("<td>roèník $year na CD za cenu $price Kè</td></tr>\n");
+
+       if (($f=fopen("objednavka.js","r"))) {
+               while (($s=fgets($f,0x1000))) {
+                       if (!($s=trim($s)))
+                               break;
+                       if (!(ereg("^want_price\\[ *'cd_([^']*)'\\]=([0-9]*);\$",$s,$o_matched)))
+                               continue;
+                       $o_year =$o_matched[1];
+                       $o_price=$o_matched[2];
+                       print("<tr>");
+                       tab_left("want_cd_$o_year");
+                       print("<td>roèník $o_year na CD za cenu $o_price Kè</td></tr>\n");
+                       }
+               fclose($f);
+               }
+       if ($have_js) {
+               ?>
+       <tr><td colspan="3"><hr /></td></tr>
+       <tr><td colspan="3">Celková cena: <input type="text" name="price" value="0" size="5" readonly="readonly" /> Kè</td></tr>
+               <?php
                }
 ?>
 </table></td></tr>
+<?php
+
+function print_addr($title,$pfx,$ico)
+{
+       ?>
+       <tr><td align="center"><table border="0">
+               <colgroup width="0*" span="3" />
+               <tr><td colspan="3" align="center" class="tab-bold"><?php print($title); ?></td></tr>
+               <tr><td class="nowrap">Název firmy / Jméno:</td><td colspan="2"><input type="text" name="<?php print("${pfx}name"); ?>"    size="60" /></td></tr>
+               <tr><td valign="top">Adresa:</td><td colspan="2"><table border="0">
+                       <colgroup width="0*" span="3" />
+                       <tr><td>Ulice:</td><td colspan="2"><input type="text" name="<?php print("${pfx}ulice"); ?>" size="60" /></td></tr>
+                       <tr><td>Mìsto:</td><td            ><input type="text" name="<?php print("${pfx}ulice"); ?>" size="30" /></td>
+                               <td>PSÈ:                         <input type="text" name="<?php print("${pfx}psc"); ?>" size="5" maxlength="5" /></td></tr>
+                       </table></td></tr>
+       <?php
+       if ($ico) {
+       ?>
+               <tr><td>IÈO:</td><td              ><input type="text" name="<?php print("${pfx}ico"); ?>" size="20" /></td>
+                       <td>DIÈ:           <input type="text" name="<?php print("${pfx}dic"); ?>" size="20" /></td></tr>
+       <?php
+               }
+       ?>
+               <tr><td class="nowrap">Kontaktní osoba:</td    ><td colspan="2"><input type="text" name="<?php print("${pfx}contact"); ?>" size="60" /></td></tr>
+               <tr><td>Telefon:</td><td><input type="text" name="<?php print("${pfx}tel"); ?>" size="25" /></td>
+                       <td>Fax: <input type="text" name="<?php print("${pfx}fax"); ?>" size="25" /></td></tr>
+               <tr><td>e-mail:</td             ><td colspan="2"><input type="text" name="<?php print("${pfx}mail"); ?>"    size="40" /></td></tr>
+       </table></td></tr>
+       <?php
+}
+
+print_addr("Adresa pro vystavení a zaslání faktury"          ,"name1_",true);
+print_addr("Adresa pro zasílaní èasopisu (jen pokud se li¹í)","name2_",false);
+
+?>
 <tr><td><table border="0">
-<tr><td valign="top"><input type="radio" name="payment" value="order" onclick="disable_fields(this)" /></td>
-       <td><table border="0">
-               <tr><td colspan="2">Platbu za pøedplatné uhradím(e) pøevodním pøíkazem na základì vystavené faktury</td></tr>
-               <tr><td>IÈO/DIÈ:</td   ><td><input type="text" name="payment_order_ico"     size="60" onfocus="activate_subform(this)" /></td></tr>
-               <tr><td>Èíslo úètu:</td><td><input type="text" name="payment_order_account" size="60" onfocus="activate_subform(this)" /></td></tr>
-               </table></td></tr>
-<tr><td valign="top"><input type="radio" name="payment" value="postA" onclick="disable_fields(this)" /></td>
-       <td><table border="0">
-               <tr><td>Po¹tovní poukázkou typu <span class="post-type">A</span>
-                       na úèet AKRA CZ, s.r.o.: 0212532359/0800 u ÈS a.s., Praha 8</td></tr>
-               </table></td></tr>
-<tr><td valign="top"><input type="radio" name="payment" value="postC" onclick="disable_fields(this)" /></td>
-       <td><table border="0">
-               <tr><td colspan="2">Po¹tovní poukázkou typu <span class="post-type">C</span> na adresu redakce
-                       (po¹tovní poukázky typu <span class="post-type">A</span> i <span class="post-type">C</span> obdr¾íte na po¹tì)</td></tr>
-               <tr><td>Kontaktní osoba:</td><td colspan="3"><input type="text" name="payment_postC_contact" size="60" onfocus="activate_subform(this)" /></td></tr>
-               <tr><td>Telefon:</td><td><input type="text" name="payment_postC_tel" size="25" onfocus="activate_subform(this)" /></td>
-                       <td  >Fax:</td    ><td><input type="text" name="payment_postC_fax" size="25" onfocus="activate_subform(this)" /></td></tr>
-               <tr><td>e-mail:</td      ><td><input type="text" name="payment_postC_email" size="40" onfocus="activate_subform(this)" /></td>
-                       <td  >Datum platby:</td><td><input type="text" name="payment_postC_paymentdate" size="10" onfocus="activate_subform(this)" /></td></tr>
-               </table></td></tr>
-</table></td></tr>
-<tr><td><table border="0">
-<tr><td>Adresa pro zasílání èasopisu (pokud se li¹í od fakturaèní adresy), pøíp. jiné sdélení redakci:</td></tr>
+<tr><td align="center" class="tab-bold">Jiné sdélení redakci</td></tr>
 <tr><td><textarea name="comments" rows="5" cols="100"></textarea></td></tr>
 </table></td></tr>
 <tr><td align="center"><input type="submit" value="Ode¹li závaznou objednávku" onclick="return(validate(this.form))" /></td></tr>
+</table></td></tr>
 </table></form>
 
 <?php
diff --git a/objednavka.js b/objednavka.js
new file mode 100644 (file)
index 0000000..e72fdca
--- /dev/null
@@ -0,0 +1,51 @@
+// $Id$
+// <-see index.php:/if (!($s=trim($s)))/
+var want_price=new Array();
+want_price['phys_2001']=360;
+want_price['phys_2000']=150;
+want_price[  'cd_2000']=280;
+want_price[  'cd_1999']=280;
+want_price[  'cd_1998']=280;
+want_price[  'cd_1997']=120;
+want_price[  'cd_1996']=120;
+
+function validate(form)
+{
+// want_ numeric check
+var want_tot=0;
+       for (var elementi=0;elementi<form.elements.length;elementi++) {
+var element=form.elements[elementi];
+               if (-1==element.name.search(/^want_/))
+                       continue;
+               if (-1!=element.value.search(/[^0-9]/)) {
+                       element.select();
+                       element.focus();
+                       alert('Jako poèet je mo¾no povoleno zadat jen èíselnou hodnotu!');
+                       return(false);
+                       }
+               want_tot+=element.value;
+               }
+       if (0==want_tot) {
+               alert('Musíte si objednat alespoò jeden èasopis, napi¹te 1 do dané polo¾ky!');
+               return(false);
+               }
+
+       return(true);
+}
+
+function sum_price(field)
+{
+var form=field.form;
+var price=0;
+
+       for (var elementi=0;elementi<form.elements.length;elementi++) {
+var element=form.elements[elementi];
+               if (-1==element.name.search(/^want_/))
+                       continue;
+               if (element.value.search(/^[0-9]+$/))
+                       continue;
+               price+=element.value * want_price[element.name.substr(5)];
+               }
+
+       field.form.elements['price'].value=price;
+}