[Pieforms-commit] SF.net SVN: pieforms: [71] pieforms-php5/trunk/src/pieform/elements/date. php
Status: Alpha
Brought to you by:
oracleshinoda
From: <ora...@us...> - 2006-11-28 23:14:42
|
Revision: 71 http://svn.sourceforge.net/pieforms/?rev=71&view=rev Author: oracleshinoda Date: 2006-11-28 15:14:35 -0800 (Tue, 28 Nov 2006) Log Message: ----------- Many fixes to the date element, allowing it to be optionally unset. It now takes its value as a unix timestamp as well as returning it that way Modified Paths: -------------- pieforms-php5/trunk/src/pieform/elements/date.php Modified: pieforms-php5/trunk/src/pieform/elements/date.php =================================================================== --- pieforms-php5/trunk/src/pieform/elements/date.php 2006-11-25 02:46:35 UTC (rev 70) +++ pieforms-php5/trunk/src/pieform/elements/date.php 2006-11-28 23:14:35 UTC (rev 71) @@ -36,33 +36,61 @@ $name = $element['name']; $element['minyear'] = (isset($element['minyear'])) ? intval($element['minyear']) : 1950; $element['maxyear'] = (isset($element['maxyear'])) ? intval($element['maxyear']) : 2050; - if (!isset($element['defaultvalue'])) { - $element['defaultvalue'] = array(date('Y'), date('m'), date('d')); + if (!array_key_exists('defaultvalue', $element)) { + $element['defaultvalue'] = time(); } // Year $value = pieform_render_select_get_value('year', $element['minyear'], $element['maxyear'], $element, $form); - $year = '<select name="' . $name . "_year\">\n"; + $year = '<select name="' . $name . '_year" id="' . $name . '_year"' . (isset($element['optional']) && !isset($element['defaultvalue']) ? 'disabled ' : '') . ">\n"; for ($i = $element['minyear']; $i <= $element['maxyear']; $i++) { $year .= "\t<option value=\"$i\"" . (($value == $i) ? ' selected="selected"' : '') . ">$i</option>\n"; } $year .= "</select>\n"; + // Month $value = pieform_render_select_get_value('month', 1, 12, $element, $form); - $month = '<select name="' . $name . "_month\">\n"; + $month = '<select name="' . $name . '_month" id="' . $name . '_month"' . (isset($element['optional']) && !isset($element['defaultvalue']) ? 'disabled ' : '') . ">\n"; for ($i = 1; $i <= 12; $i++) { $month .= "\t<option value=\"$i\"" . (($value == $i) ? ' selected="selected"' : '') . '>' . date('M', strtotime("2000-$i-01")) . "</option>\n"; } $month .= "</select>\n"; + // Day $value = pieform_render_select_get_value('day', 1, 31, $element, $form); - $day = '<select name="' . $name . "_day\">\n"; + $day = '<select name="' . $name . '_day" id="' . $name . '_day"' . (isset($element['optional']) && !isset($element['defaultvalue']) ? 'disabled ' : '') . ">\n"; for ($i = 1; $i <= 31; $i++) { $day .= "\t<option value=\"$i\"" . (($value == $i) ? ' selected="selected"' : '') . ">$i</option>\n"; } $day .= '</select>'; $result = $year . $month . $day; + + // Optional control + if (isset($element['optional'])) { + $optional = <<<EOF + <script type="text/javascript"> + function {$name}_toggle(x) { + if ( x.checked ) { + $('{$name}_day').disabled = true; + $('{$name}_month').disabled = true; + $('{$name}_year').disabled = true; + } + else { + $('{$name}_day').disabled = false; + $('{$name}_month').disabled = false; + $('{$name}_year').disabled = false; + } + } + </script> +EOF; + + $optional .= ' ' . get_string('or') . ' <input type="checkbox" ' . ( isset($element['defaultvalue']) ? '' : 'checked ') . 'name="' . $name . '_optional" id="' . $name . '_optional" onchange="' . $name . '_toggle(this)">'; + $optional .= ' <label for="' . $name . '_optional">' . get_string('notspecified'); + + $result .= $optional; + } + return $result; } @@ -70,11 +98,15 @@ function pieform_get_value_date($element, Pieform $form) { $name = $element['name']; $global = ($form->get_method() == 'get') ? $_GET : $_POST; - $time = mktime(0, 0, 0, $global[$name . '_month'], $global[$name . '_day'], $global[$name . '_year']); - if (false === $time) { - return null; + if ( isset($global[$name . '_day']) && isset($global[$name . '_month']) && isset($global[$name . '_year']) ) { + $time = mktime(0, 0, 0, $global[$name . '_month'], $global[$name . '_day'], $global[$name . '_year']); + if (false === $time) { + return null; + } + return $time; } - return $time; + + return null; } function pieform_get_value_js_date($element, Pieform $form) { @@ -114,15 +146,25 @@ return $value; } - if (isset($element['defaultvalue'][$index])) { - $value = $element['defaultvalue'][$index]; - if ($value < $min || $value > $max) { - $value = $min; - } - return $value; + $value = time(); + + if (isset($element['defaultvalue'])) { + $value = $element['defaultvalue']; } - return null; + switch ($timeperiod) { + case 'day': + $value = date('j', $value); + break; + case 'month': + $value = date('m', $value); + break; + case 'year': + $value = date('Y', $value); + break; + } + + return $value; } ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |