diff --git a/calendar_block.module b/calendar_block.module index 87e3e13..e853d93 100644 --- a/calendar_block.module +++ b/calendar_block.module @@ -66,6 +66,9 @@ function calendar_block_block_view($delta) { '#markup' => theme('calendar_block', array('calendar' => calendar_block_load($year, $month))), '#attached' => array( 'css' => array($path . '/calendar_block.css' => array()), + 'library' => array( + array('system', 'drupal.ajax'), + ), ), ), ); @@ -187,15 +190,15 @@ function calendar_block_preprocess_calendar_block(&$variables) { $year_next = ($next_month == 1 ? ($calendar->year + 1) : $calendar->year); $year_prev = ($prev_month == 12 ? ($calendar->year - 1) : $calendar->year); - $variables['previous_link'] = l('<', $_GET['q'], array('query' => array( - 'calendar_block_month' => $prev_month, - 'calendar_block_year' => $year_prev, - ))); - $variables['next_link'] = l('>', $_GET['q'], array('query' => array( - 'calendar_block_month' => $next_month, - 'calendar_block_year' => $year_next, - ))); + $params = drupal_get_query_parameters(NULL, array('calendar_block_month', 'calendar_block_year', 'q')); + $query = array_merge(array('calendar_block_month'=>$prev_month, 'calendar_block_year'=>$year_prev, 'goto'=>current_path()), $params); + $attributes = array('class' => 'use-ajax'); + $variables['previous_link'] = l('<', 'calendar_block_ajax/nojs/', array('query' => $query, 'attributes' => $attributes)); + $query['calendar_block_month'] = $next_month; + $query['calendar_block_year'] = $year_next; + $variables['next_link'] = l('>', 'calendar_block_ajax/nojs/', array('query' => $query, 'attributes' => $attributes)); + if ($calendar->show_weekdays) { // Create the weekdays row foreach (array_values($calendar->weekdays) as $i => $day) { @@ -274,3 +277,20 @@ if (!function_exists('cal_days_in_month')) { return $month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year % 400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31); } } + +function calendar_block_ajax($type='ajax') { + if ($type=='ajax') { + $year = isset($_GET['calendar_block_year']) ? $_GET['calendar_block_year'] : NULL; + $month = isset($_GET['calendar_block_month']) ? $_GET['calendar_block_month'] : NULL; + $calendar = calendar_block_load($year, $month); + $commands = array(); + $commands[] = ajax_command_replace('#calendar_block', theme('calendar_block', array('calendar' => $calendar, 'ajax' => TRUE))); + $page = array('#type' => 'ajax', '#commands' => $commands); + ajax_deliver($page); + } else { + $params = drupal_get_query_parameters(); + $goto = $params['goto']; + unset($params['goto']); + drupal_goto($goto, array('query' => $params)); + } +}