/[drupal]/contributions/modules/views_ticker/views_ticker.module
ViewVC logotype

Contents of /contributions/modules/views_ticker/views_ticker.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download) (as text)
Mon Apr 14 13:11:32 2008 UTC (19 months, 2 weeks ago) by vvn
Branch: MAIN
CVS Tags: DRUPAL-5--0-1-BETA1, HEAD
File MIME type: text/x-php
First BETA release.
1 <?php
2 // $Id$
3
4 /**
5 * Implementation of hook_views_style_plugins()
6 */
7 function views_ticker_views_style_plugins() {
8 $items['ticker_fade'] = array(
9 'name' => t('Ticker: Fade'),
10 'theme' => 'views_ticker_fade',
11 'validate' => 'views_ui_plugin_validate_list',
12 'needs_fields' => true,
13 );
14 $items['ticker_bbc'] = array(
15 'name' => t('Ticker: BBC Style'),
16 'theme' => 'views_ticker_bbc',
17 'validate' => 'views_ui_plugin_validate_list',
18 'needs_fields' => true,
19 );
20 $items['ticker_hscroll'] = array(
21 'name' => t('Ticker: Scroller (Horizontal)'),
22 'theme' => 'views_ticker_hscroll',
23 'validate' => 'views_ui_plugin_validate_list',
24 'needs_fields' => true,
25 );
26 $items['ticker_vscroll'] = array(
27 'name' => t('Ticker: Scroller (Vertical)'),
28 'theme' => 'views_ticker_vscroll',
29 'validate' => 'views_ui_plugin_validate_list',
30 'needs_fields' => true,
31 );
32 return $items;
33 }
34
35
36 /**
37 * Implementation of hook_views_default_views()
38 */
39 function views_ticker_views_default_views() {
40 $view = new stdClass();
41 $view->name = 'news_ticker_fade';
42 $view->description = 'Display a fading news ticker';
43 $view->access = array (
44 );
45 $view->view_args_php = '';
46 $view->page = FALSE;
47 $view->page_title = '';
48 $view->page_header = '';
49 $view->page_header_format = '9';
50 $view->page_footer = '';
51 $view->page_footer_format = '9';
52 $view->page_empty = '';
53 $view->page_empty_format = '9';
54 $view->page_type = 'node';
55 $view->url = '';
56 $view->use_pager = TRUE;
57 $view->nodes_per_page = '10';
58 $view->block = TRUE;
59 $view->block_title = 'Latest news (Fade)';
60 $view->block_header = '';
61 $view->block_header_format = '9';
62 $view->block_footer = '';
63 $view->block_footer_format = '9';
64 $view->block_empty = '';
65 $view->block_empty_format = '9';
66 $view->block_type = 'ticker_fade';
67 $view->nodes_per_block = '5';
68 $view->block_more = FALSE;
69 $view->block_use_page_header = FALSE;
70 $view->block_use_page_footer = FALSE;
71 $view->block_use_page_empty = FALSE;
72 $view->sort = array (
73 );
74 $view->argument = array (
75 );
76 $view->field = array (
77 array (
78 'tablename' => 'node',
79 'field' => 'created',
80 'label' => '',
81 'handler' => 'views_handler_field_date_small',
82 ),
83 array (
84 'tablename' => 'node',
85 'field' => 'title',
86 'label' => ': ',
87 'handler' => 'views_handler_field_nodelink',
88 'options' => 'link',
89 ),
90 array (
91 'tablename' => 'node_comment_statistics',
92 'field' => 'comment_count',
93 'label' => ' - Comments: ',
94 'handler' => 'views_handler_field_int',
95 ),
96 );
97 $view->filter = array (
98 array (
99 'tablename' => 'node',
100 'field' => 'promote',
101 'operator' => '=',
102 'options' => '',
103 'value' => '1',
104 ),
105 array (
106 'tablename' => 'node',
107 'field' => 'status',
108 'operator' => '=',
109 'options' => '',
110 'value' => '1',
111 ),
112 );
113 $view->exposed_filter = array (
114 );
115 $view->requires = array(node, node_comment_statistics);
116 $views[$view->name] = $view;
117
118
119 $view = new stdClass();
120 $view->name = 'news_ticker_hscroll';
121 $view->description = 'Display a horizontal scrolling news ticker';
122 $view->access = array (
123 );
124 $view->view_args_php = '';
125 $view->page = FALSE;
126 $view->page_title = '';
127 $view->page_header = '';
128 $view->page_header_format = '9';
129 $view->page_footer = '';
130 $view->page_footer_format = '9';
131 $view->page_empty = '';
132 $view->page_empty_format = '9';
133 $view->page_type = 'node';
134 $view->url = '';
135 $view->use_pager = TRUE;
136 $view->nodes_per_page = '10';
137 $view->block = TRUE;
138 $view->block_title = 'Latest news (Horizontal scroll)';
139 $view->block_header = '';
140 $view->block_header_format = '9';
141 $view->block_footer = '';
142 $view->block_footer_format = '9';
143 $view->block_empty = '';
144 $view->block_empty_format = '9';
145 $view->block_type = 'ticker_hscroll';
146 $view->nodes_per_block = '5';
147 $view->block_more = FALSE;
148 $view->block_use_page_header = FALSE;
149 $view->block_use_page_footer = FALSE;
150 $view->block_use_page_empty = FALSE;
151 $view->sort = array (
152 );
153 $view->argument = array (
154 );
155 $view->field = array (
156 array (
157 'tablename' => 'node',
158 'field' => 'created',
159 'label' => '',
160 'handler' => 'views_handler_field_date_small',
161 ),
162 array (
163 'tablename' => 'node',
164 'field' => 'title',
165 'label' => ': ',
166 'handler' => 'views_handler_field_nodelink',
167 'options' => 'link',
168 ),
169 );
170 $view->filter = array (
171 array (
172 'tablename' => 'node',
173 'field' => 'promote',
174 'operator' => '=',
175 'options' => '',
176 'value' => '1',
177 ),
178 array (
179 'tablename' => 'node',
180 'field' => 'status',
181 'operator' => '=',
182 'options' => '',
183 'value' => '1',
184 ),
185 );
186 $view->exposed_filter = array (
187 );
188 $view->requires = array(node);
189 $views[$view->name] = $view;
190
191
192 $view = new stdClass();
193 $view->name = 'news_ticker_vscroll';
194 $view->description = 'Display a vertical scrolling news ticker';
195 $view->access = array (
196 );
197 $view->view_args_php = '';
198 $view->page = FALSE;
199 $view->page_title = '';
200 $view->page_header = '';
201 $view->page_header_format = '9';
202 $view->page_footer = '';
203 $view->page_footer_format = '9';
204 $view->page_empty = '';
205 $view->page_empty_format = '9';
206 $view->page_type = 'node';
207 $view->url = '';
208 $view->use_pager = TRUE;
209 $view->nodes_per_page = '10';
210 $view->block = TRUE;
211 $view->block_title = 'Latest news (Vertical scroll)';
212 $view->block_header = '';
213 $view->block_header_format = '9';
214 $view->block_footer = '';
215 $view->block_footer_format = '9';
216 $view->block_empty = '';
217 $view->block_empty_format = '9';
218 $view->block_type = 'ticker_vscroll';
219 $view->nodes_per_block = '5';
220 $view->block_more = FALSE;
221 $view->block_use_page_header = FALSE;
222 $view->block_use_page_footer = FALSE;
223 $view->block_use_page_empty = FALSE;
224 $view->sort = array (
225 );
226 $view->argument = array (
227 );
228 $view->field = array (
229 array (
230 'tablename' => 'node',
231 'field' => 'created',
232 'label' => '',
233 'handler' => 'views_handler_field_date_small',
234 ),
235 array (
236 'tablename' => 'node',
237 'field' => 'title',
238 'label' => '',
239 'handler' => 'views_handler_field_nodelink',
240 'options' => 'link',
241 ),
242 );
243 $view->filter = array (
244 array (
245 'tablename' => 'node',
246 'field' => 'promote',
247 'operator' => '=',
248 'options' => '',
249 'value' => '1',
250 ),
251 array (
252 'tablename' => 'node',
253 'field' => 'status',
254 'operator' => '=',
255 'options' => '',
256 'value' => '1',
257 ),
258 );
259 $view->exposed_filter = array (
260 );
261 $view->requires = array(node);
262 $views[$view->name] = $view;
263
264
265 $view = new stdClass();
266 $view->name = 'news_ticker_bbc_style';
267 $view->description = 'Display a BBC style news ticker';
268 $view->access = array (
269 );
270 $view->view_args_php = '';
271 $view->page = FALSE;
272 $view->page_title = '';
273 $view->page_header = '';
274 $view->page_header_format = '9';
275 $view->page_footer = '';
276 $view->page_footer_format = '9';
277 $view->page_empty = '';
278 $view->page_empty_format = '9';
279 $view->page_type = 'node';
280 $view->url = '';
281 $view->use_pager = TRUE;
282 $view->nodes_per_page = '10';
283 $view->block = TRUE;
284 $view->block_title = 'Latest news (BBC Style)';
285 $view->block_header = '';
286 $view->block_header_format = '9';
287 $view->block_footer = '';
288 $view->block_footer_format = '9';
289 $view->block_empty = '';
290 $view->block_empty_format = '9';
291 $view->block_type = 'ticker_bbc';
292 $view->nodes_per_block = '5';
293 $view->block_more = FALSE;
294 $view->block_use_page_header = FALSE;
295 $view->block_use_page_footer = FALSE;
296 $view->block_use_page_empty = FALSE;
297 $view->sort = array (
298 );
299 $view->argument = array (
300 );
301 $view->field = array (
302 array (
303 'tablename' => 'node',
304 'field' => 'title',
305 'label' => '',
306 'handler' => 'views_handler_field_nodelink',
307 'options' => 'link',
308 ),
309 );
310 $view->filter = array (
311 array (
312 'tablename' => 'node',
313 'field' => 'promote',
314 'operator' => '=',
315 'options' => '',
316 'value' => '1',
317 ),
318 array (
319 'tablename' => 'node',
320 'field' => 'status',
321 'operator' => '=',
322 'options' => '',
323 'value' => '1',
324 ),
325 );
326 $view->exposed_filter = array (
327 );
328 $view->requires = array(node);
329 $views[$view->name] = $view;
330
331 return $views;
332 }
333
334 /**
335 * Helper function to generate the view using jScroller
336 */
337 function _views_ticker_scroller($view, $nodes, $type, $direction) {
338 switch ($direction) {
339 case 'horizontal':
340 $jsclass = 'left';
341 break;
342 case 'vertical':
343 $jsclass = 'up';
344 break;
345 }
346 $direction = 'scroller-'.$direction;
347 drupal_add_css(drupal_get_path('module', 'views_ticker') .'/views.ticker.scroller.css');
348 drupal_add_js(drupal_get_path('module', 'views_ticker') .'/views.ticker.scroller.js');
349 $fields = _views_get_fields();
350 $output = '<div id="views-ticker-' . $direction . '-' . $view->name . '" class="views-' . $direction . '-container"><div class="jscroller2_' . $jsclass . ' jscroller2_speed-30">';
351 foreach ($nodes as $node) {
352 $items = '<div class="views-' . $direction . '-item views-' . $direction . '-item-' . $view->name . '">';
353 foreach ($view->field as $field) {
354 $item = '';
355 if ($fields[$field['id']]['visible'] !== FALSE) {
356 if ($field['label']) {
357 $item .= "<span class='views-$direction-tick-label views-$direction-tick-label-$field[queryname]'>" . $field['label'] . "</span>";
358 }
359 $item .= "<span class='views-$direction-tick-field views-$direction-tick-field-$field[queryname]'>" . views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view) . "</span>";
360
361 }
362 $items .= $item;
363 }
364 $items .= '</div>';
365 $output .= $items;
366 }
367 $output .= '</div></div>';
368 return $output;
369 }
370
371 /**
372 *
373 * Themeable functions
374 *
375 */
376
377
378 function theme_views_ticker_fade($view, $nodes, $type) {
379 drupal_add_js(drupal_get_path('module', 'views_ticker') .'/views.ticker.fade.js');
380 drupal_add_js('$(document).ready(
381 function()
382 {
383 $("#views-ticker-fade-' . $view->name . '").newsTicker();
384 }
385 );','inline');
386 $fields = _views_get_fields();
387 $output = '<div id="views-ticker-fade-container-' . $view->name . '"><ul id="views-ticker-fade-' . $view->name . '">';
388 foreach ($nodes as $node) {
389 $items = '<li class="views-fade-item views-fade-item-' . $view->name . '">';
390 foreach ($view->field as $field) {
391 $item = '';
392 if ($fields[$field['id']]['visible'] !== FALSE) {
393 if ($field['label']) {
394 $item .= "<span class='views-fade-tick-label views-fade-tick-label-$field[queryname]'>" . $field['label'] . "</span>";
395 }
396 $item .= "<span class='views-fade-tick-field views-fade-tick-field-$field[queryname]'>" . views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view) . "</span>";
397
398 }
399 $items .= $item;
400 }
401 $items .= '</li>';
402 $output .= $items;
403 }
404 $output .= '</ul></div>';
405 return $output;
406 }
407
408
409 function theme_views_ticker_bbc($view, $nodes, $type) {
410 drupal_add_js(drupal_get_path('module', 'views_ticker') .'/views.ticker.bbc.js');
411 drupal_add_js('$(document).ready(function() {
412 var options = {
413 newsList: "#views-ticker-fade-' . $view->name . '",
414 startDelay: 10,
415 placeHolder1: " |"
416 }
417 $().newsTicker(options);
418 });','inline');
419 $fields = _views_get_fields();
420 $output = '<div id="views-ticker-fade-container-' . $view->name . '"><ul id="views-ticker-fade-' . $view->name . '">';
421 foreach ($nodes as $node) {
422 $items = '<li class="views-fade-item views-fade-item-' . $view->name . '">';
423 foreach ($view->field as $field) {
424 $item = '';
425 if ($fields[$field['id']]['visible'] !== FALSE) {
426 if ($field['label']) {
427 $item .= "<span class='views-fade-tick-label views-fade-tick-label-$field[queryname]'>" . $field['label'] . "</span>";
428 }
429 $item .= "<span class='views-fade-tick-field views-fade-tick-field-$field[queryname]'>" . views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view) . "</span>";
430
431 }
432 $items .= $item;
433 }
434 $items .= '</li>';
435 $output .= $items;
436 }
437 $output .= '</ul></div>';
438 return $output;
439 }
440
441
442 function theme_views_ticker_hscroll($view, $nodes, $type) {
443 return _views_ticker_scroller($view, $nodes, $type, 'horizontal');
444 }
445
446
447 function theme_views_ticker_vscroll($view, $nodes, $type) {
448 return _views_ticker_scroller($view, $nodes, $type, 'vertical');
449 }

  ViewVC Help
Powered by ViewVC 1.1.2