Index: modules/archive.module =================================================================== RCS file: /cvs/drupal/drupal/modules/archive.module,v retrieving revision 1.81 diff -u -r1.81 archive.module --- modules/archive.module 17 Jul 2005 18:29:31 -0000 1.81 +++ modules/archive.module 25 Aug 2005 20:03:59 -0000 @@ -28,19 +28,20 @@ $end_of_today = mktime(23, 59, 59, date('n', time()), date('d', time()), date('Y', time())) + $user->timezone; // Extract the requested date: - if ($edit['year'] && $edit['month'] && $edit['day']) { + if ($edit['year'] && $edit['month']) { $year = $edit['year']; $month = $edit['month']; $day = $edit['day']; - $requested = mktime(0, 0, 0, $month, $day, $year) + $user->timezone; + // AH050508 If $day not defined, assume 2nd day of the month to build calender, avoiding any timezone confusion + $requested = mktime(0, 0, 0, $month, $day?$day:2, $year) + $user->timezone; } - else if (arg(0) == 'archive' && arg(3)) { + else if (arg(0) == 'archive' && arg(2)) { $year = arg(1); $month = arg(2); $day = arg(3); - $requested = mktime(0, 0, 0, $month, $day, $year) + $user->timezone; + $requested = mktime(0, 0, 0, $month, $day?$day:2, $year) + $user->timezone; } else { $year = date('Y', time()); @@ -68,9 +69,9 @@ // Calculate previous and next months dates and check for shorter months (28/30 days) $prevmonth = mktime(23, 59, 59, $month - 1, 1, $year); - $prev = mktime(23, 59, 59, $month - 1, min(date('t', $prevmonth), $day), $year); + $prev = mktime(23, 59, 59, $month - 1, min(date('t', $prevmonth), $day?$day:1), $year); $nextmonth = mktime(23, 59, 59, $month + 1, 1, $year); - $next = mktime(23, 59, 59, $month + 1, min(date('t', $nextmonth), $day), $year); + $next = mktime(23, 59, 59, $month + 1, min(date('t', $nextmonth), $day?$day:1), $year); $sql = 'SELECT n.nid, n.created FROM {node} n WHERE n.status = 1 AND n.created > %d AND n.created < %d ORDER BY n.created'; $sql = db_rewrite_sql($sql); @@ -91,7 +92,7 @@ $output .= "\n\n"; $output .= '
'; $output .= '\n"; - $output .= ' \n"; + $output .= ' \n"; // First day of week (0 => Sunday, 1 => Monday, ...) $weekstart = variable_get('date_first_day', 0); @@ -140,7 +141,7 @@ $daytext = $nday; $dayclass = 'day-normal'; } - if ($date == $requested) { + if (($date == $requested)&&($day)) { $output .= " \n"; } else if ($date == $start_of_today) { @@ -226,20 +227,28 @@ $day = $edit['day']; } - $date = mktime(0, 0, 0, $month, $day, $year) - $user->timezone; - $date_end = mktime(0, 0, 0, $month, $day + 1, $year) - $user->timezone; + if ($day) { + $date = mktime(0, 0, 0, $month, $day, $year) - $user->timezone; + $date_end = mktime(0, 0, 0, $month, $day + 1, $year) - $user->timezone; + } else { + $day = 0; + $date = mktime(0, 0, 0, $month, 1, $year) - $user->timezone; + $date_end = mktime(23, 59, 59, $month, 31, $year) - $user->timezone; + } // Prepare the values of the form fields. - $years = drupal_map_assoc(range(2000, 2005)); + $years = drupal_map_assoc(range(2000, date('Y'))); $months = array(1 => t('January'), 2 => t('February'), 3 => t('March'), 4 => t('April'), 5 => t('May'), 6 => t('June'), 7 => t('July'), 8 => t('August'), 9 => t('September'), 10 => t('October'), 11 => t('November'), 12 => t('December')); - $days = drupal_map_assoc(range(0, 31)); + $dayrange = range(0,31); + $dayrange[0]=t("All days"); + $days = drupal_map_assoc($dayrange); $start = '
'; - $start .= form_select('', 'year', ($year ? $year : date('Y')), $years). form_select('', 'month', ($month ? $month : date('m')), $months) . form_select('', 'day', ($day ? $day : date('d')), $days) . form_submit(t('Show')); + $start .= form_select('', 'year', ($year ? $year : date('Y')), $years). form_select('', 'month', ($month ? $month : date('m')), $months) . form_select('', 'day', (isset($day) ? $day : date('d')), $days) . form_submit(t('Show')); $start .= '
'; $output .= form($start); - if ($year && $month && $day) { + if ($year && $month) { // Fetch nodes for the selected date, if one was specified. $sql = 'SELECT n.nid, n.created FROM {node} n WHERE n.status = 1 AND n.created > %d AND n.created < %d ORDER BY n.created'; $sql = db_rewrite_sql($sql); @@ -252,4 +261,4 @@ return $output; } -?> +?> \ No newline at end of file
'. l('«', 'archive/'. date('Y/m/d', $prev), array('title' => t('Previous month'))) .' '. format_date($requested, 'custom', 'F') . date(' Y', $requested) .' '. ($nextmonth <= time() ? l('»', 'archive/'. date('Y/m/d', $next), array('title' => t('Next month'))) : ' ') ."'. l('«', 'archive/'. date('Y/m', $prev), array('title' => t('Previous month'))) .' '. format_date($requested, 'custom', 'F') . date(' Y', $requested) .' '. ($nextmonth <= time() ? l('»', 'archive/'. date('Y/m', $next), array('title' => t('Next month'))) : ' ') ."
$daytext