Use JQuery date pickers.
authorIain Patterson <me@iain.cx>
Tue, 15 Oct 2013 09:02:07 +0000 (05:02 -0400)
committerIain Patterson <me@iain.cx>
Tue, 15 Oct 2013 09:02:07 +0000 (05:02 -0400)
Added the datepicker() function which will show an input field for an
ISO8601 date entry.  If scripting is enabled, JQuery will be used to
show a popup date picker when the user clicks in the field.

The date picker can be restricted to showing dates no earlier and/or no
later than today, and it can be linked to another picker to form a date
range selector.

lib/forms.php
lib/header.php
www/index.php

index 7b707d7..ae08607 100644 (file)
     echo ">$text\n";
   }
 
+  function datepicker($name, $value = null, $past = true, $past_picker = null, $future = true, $future_picker = null) {
+    $id = "datepicker_$name";
+    echo "<script>\n  $(function() {\n";
+    echo "    $(\"#$id\").datepicker({\n";
+    /*
+      If this is the "to" picker in a date range, restrict the end date of the
+      "from" picker to be the date selected by this picker.
+    */
+    if (isset($past_picker)) {
+      echo "      onClose: function(selectedDate) {\n";
+      echo "        $(\"#datepicker_$past_picker\").datepicker(\"option\", \"maxDate\", selectedDate);\n";
+      echo "      },\n";
+    }
+    /*
+      If this is the "from" picker in a date range, restrict the start date of
+      the "to" picker to be the date selected by this picker.
+    */
+    if (isset($future_picker)) {
+      echo "      onClose: function(selectedDate) {\n";
+      echo "        $(\"#datepicker_$future_picker\").datepicker(\"option\", \"minDate\", selectedDate);\n";
+      echo "      },\n";
+    }
+    echo "      changeMonth: true,\n";
+    echo "      changeYear: true,\n";
+    echo "      dateFormat: 'yy-mm-dd',\n";
+    /* Are we allowed to show dates earlier than today? */
+    if (! $past) echo "      minDate: 0,\n";
+    /* Are we allowed to show dates later than today? */
+    if (! $future) echo "      maxDate: 0,\n";
+    echo "      showButtonPanel: true\n";
+    echo "    });\n  });</script>";
+    echo "<input name=\"$name\" id=\"$id\"";
+    echo " maxlength=10 size=10";
+    if (isset($value)) echo " value=\"$value\"";
+    else echo " value=\"" . $_POST[$name] . "\"";
+    echo "><em class=\"small\">(Y-m-d)</em>";
+  }
+
 ?>
index 0582fcb..3c44dd9 100644 (file)
@@ -1,6 +1,11 @@
 <head>
 <link rel="stylesheet" type="text/css" href="/style.css">
 <title><?php echo "$charity"; if ($module) echo " - $module"; ?></title>
+<?php
+  echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css\">\n";
+  echo "<script src=\"$http://code.jquery.com/jquery-1.9.1.js\"></script>\n";
+  echo "<script src=\"$http://code.jquery.com/ui/1.10.3/jquery-ui.js\"></script>\n";
+?>
 </head>
 <body>
 
index 84f8717..4468e05 100644 (file)
@@ -28,6 +28,7 @@
   else $module = strtolower($module);
   #echo "request: $request; module: $module; params: " . print_r($parameters, true);
 
+  $http = (isset($_SERVER['HTTPS'])) ? "https" : "http";
   $username = $_SERVER['REMOTE_USER'];
   include_once("$lib_root/constants.php");
   include_once("$lib_root/functions.php");