Index: includes/jcarousel.views.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/jcarousel/includes/Attic/jcarousel.views.inc,v retrieving revision 1.1.2.2.2.4 diff -u -r1.1.2.2.2.4 jcarousel.views.inc --- includes/jcarousel.views.inc 20 Dec 2010 17:56:27 -0000 1.1.2.2.2.4 +++ includes/jcarousel.views.inc 6 Feb 2011 04:52:38 -0000 @@ -70,10 +70,9 @@ $view->set_items_per_page($last - $first); $view->set_offset($first); - // TODO: $view->pager doesn't even exist in Views 3, yet it seems to - // fix the Views 3 handling. Find the "official" approach here. - $view->pager['offset'] = $first; - $view->pager['items_per_page'] = $last - $first; + // Redundant but apparently needed. + $view->items_per_page = $last - $first; + $view->offset = $first; } // Reuse the same DOM id so it matches that in Drupal.settings. @@ -95,7 +94,7 @@ $messages = theme('status_messages'); $object->messages = $messages ? '
' . $messages . '
' : ''; - views_ajax_render($object); + drupal_json_output($object); } } @@ -121,7 +120,7 @@ $count_query = str_replace(array_keys($replacements), $replacements, $count_query); $result = db_query($count_query, $view->build_info['query_args']); $count = 0; - while ($row = db_fetch_array($result)) { + foreach ($result as $row) { $count++; } @@ -135,31 +134,50 @@ if ($view->use_ajax) { $options['ajax'] = TRUE; - $use_pager = $view->pager['use_pager']; - $view->pager['use_pager'] = TRUE; - $view->build($display_id); - - $options['size'] = $count; - $view->pager['use_pager'] = $use_pager; + // Views 2: + if (isset($view->pager)) { + // Enable and adjust the pager to get the correct page. + $use_pager = $view->pager['use_pager']; + $view->pager['use_pager'] = TRUE; + $view->build($display_id); + $options['size'] = $count; + $view->pager['use_pager'] = $use_pager; + + // Create generic variable names. + $pager_current_page = $view->pager['current_page']; + $pager_items_per_page = $view->pager['items_per_page']; + $pager_offset = $view->pager['offset']; + } + // Views 3: + else { + // Adjusting the query is not necessary. + $view->build($display_id); + $options['size'] = $count; + + // Create generic variable names. + $pager_current_page = $view->current_page; + $pager_items_per_page = $view->items_per_page; + $pager_offset = $view->offset; + } // If starting in the middle of a view, initialize the carousel at that // position. Strangely the carousel must pre-load empty LI items all the way // up until the active item, making this inefficient for large lists. - if ($view->pager['use_pager'] && $view->pager['current_page']) { + if ($pager_current_page) { // TODO: Pagers and carousels do not work well together. jCarousel should // give items the class "jcarousel-item-[offset]", but instead it always // starts with "1", making it impossible to define a prepopulated list // as the middle of an AJAX view. - $options['start'] = ($view->pager['current_page'] * $view->pager['items_per_page']) + ($view->pager['offset'] + 1); - $options['offset'] = ($view->pager['current_page'] * $view->pager['items_per_page']) + ($view->pager['offset'] + 1); + $options['start'] = ($pager_current_page * $pager_items_per_page) + ($pager_offset + 1); + $options['offset'] = ($pager_current_page * $pager_items_per_page) + ($pager_offset + 1); } - elseif ($view->pager['offset']) { - $options['start'] = $view->pager['offset'] + 1; - $options['offset'] = $view->pager['offset'] + 1; + elseif ($pager_offset) { + $options['start'] = $pager_offset + 1; + $options['offset'] = $pager_offset + 1; } } - $identifier = views_css_safe('jcarousel_view__' . $view->name . '__' . $display_id); + $identifier = drupal_clean_css_identifier('jcarousel_view__' . $view->name . '__' . $display_id); return jcarousel_add($identifier, $options); } @@ -174,16 +192,19 @@ $options = $view->style_options; $variables['jcarousel_classes_array'] = array( 'jcarousel', - views_css_safe('jcarousel-view--' . $view->name . '--' . $display_id), + drupal_clean_css_identifier('jcarousel-view--' . $view->name . '--' . $display_id), ); if ($options['skin']) { $variables['jcarousel_classes_array'][] = 'jcarousel-skin-' . $options['skin']; } $variables['jcarousel_classes'] = implode(' ', $variables['jcarousel_classes_array']); + // Views 2/3 compatibility. + $pager_offset = isset($view->pager['offset']) ? $view->pager['offset'] : $view->offset; + // Give each item a class to identify where in the carousel it belongs. foreach ($variables['rows'] as $id => $row) { - $variables['classes'][$id] = 'jcarousel-item-' . ($id + 1 + $view->pager['offset']); + $variables['classes'][$id] = 'jcarousel-item-' . ($id + 1 + $pager_offset); } } Index: jcarousel.info =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/jcarousel/Attic/jcarousel.info,v retrieving revision 1.2.2.2.2.1 diff -u -r1.2.2.2.2.1 jcarousel.info --- jcarousel.info 28 Nov 2010 00:04:15 -0000 1.2.2.2.2.1 +++ jcarousel.info 6 Feb 2011 04:52:38 -0000 @@ -3,3 +3,7 @@ description = Create jQuery-based carousel rotators. package = User interface core = 7.x + +files[] = jcarousel.module +files[] = includes/jcarousel.views.inc +files[] = includes/jcarousel_style_plugin.inc