--- views_ticker.module.org 2008-04-14 14:11:32.000000000 +0100 +++ views_ticker.module 2009-02-06 15:06:41.000000000 +0000 @@ -1,40 +1,88 @@ 'admin/settings/views_ticker', + 'title' => t('Views ticker settings'), + 'description' => t(''), + 'access' => user_access('administer views_ticker'), + 'callback' => 'drupal_get_form', + 'callback arguments' => 'views_ticker_settings', + 'type' => MENU_NORMAL_ITEM, + ); + + } + + return $items; +} /** - * Implementation of hook_views_style_plugins() + * Implementation of hook_views_style_plugins(). */ function views_ticker_views_style_plugins() { $items['ticker_fade'] = array( 'name' => t('Ticker: Fade'), 'theme' => 'views_ticker_fade', 'validate' => 'views_ui_plugin_validate_list', - 'needs_fields' => true, + 'needs_fields' => TRUE, ); $items['ticker_bbc'] = array( 'name' => t('Ticker: BBC Style'), 'theme' => 'views_ticker_bbc', 'validate' => 'views_ui_plugin_validate_list', - 'needs_fields' => true, + 'needs_fields' => TRUE, ); $items['ticker_hscroll'] = array( 'name' => t('Ticker: Scroller (Horizontal)'), 'theme' => 'views_ticker_hscroll', 'validate' => 'views_ui_plugin_validate_list', - 'needs_fields' => true, + 'needs_fields' => TRUE, ); $items['ticker_vscroll'] = array( 'name' => t('Ticker: Scroller (Vertical)'), 'theme' => 'views_ticker_vscroll', 'validate' => 'views_ui_plugin_validate_list', - 'needs_fields' => true, + 'needs_fields' => TRUE, ); return $items; } /** - * Implementation of hook_views_default_views() + * Implementation of hook_views_default_views(). */ function views_ticker_views_default_views() { $view = new stdClass(); @@ -110,17 +158,14 @@ 'value' => '1', ), ); - $view->exposed_filter = array ( - ); + $view->exposed_filter = array(); $view->requires = array(node, node_comment_statistics); $views[$view->name] = $view; - $view = new stdClass(); $view->name = 'news_ticker_hscroll'; $view->description = 'Display a horizontal scrolling news ticker'; - $view->access = array ( -); + $view->access = array(); $view->view_args_php = ''; $view->page = FALSE; $view->page_title = ''; @@ -183,17 +228,14 @@ 'value' => '1', ), ); - $view->exposed_filter = array ( - ); + $view->exposed_filter = array(); $view->requires = array(node); $views[$view->name] = $view; - $view = new stdClass(); $view->name = 'news_ticker_vscroll'; $view->description = 'Display a vertical scrolling news ticker'; - $view->access = array ( -); + $view->access = array(); $view->view_args_php = ''; $view->page = FALSE; $view->page_title = ''; @@ -221,10 +263,8 @@ $view->block_use_page_header = FALSE; $view->block_use_page_footer = FALSE; $view->block_use_page_empty = FALSE; - $view->sort = array ( - ); - $view->argument = array ( - ); + $view->sort = array(); + $view->argument = array(); $view->field = array ( array ( 'tablename' => 'node', @@ -256,17 +296,14 @@ 'value' => '1', ), ); - $view->exposed_filter = array ( - ); + $view->exposed_filter = array(); $view->requires = array(node); $views[$view->name] = $view; - $view = new stdClass(); $view->name = 'news_ticker_bbc_style'; $view->description = 'Display a BBC style news ticker'; - $view->access = array ( -); + $view->access = array(); $view->view_args_php = ''; $view->page = FALSE; $view->page_title = ''; @@ -294,10 +331,8 @@ $view->block_use_page_header = FALSE; $view->block_use_page_footer = FALSE; $view->block_use_page_empty = FALSE; - $view->sort = array ( - ); - $view->argument = array ( - ); + $view->sort = array(); + $view->argument = array(); $view->field = array ( array ( 'tablename' => 'node', @@ -323,8 +358,7 @@ 'value' => '1', ), ); - $view->exposed_filter = array ( - ); + $view->exposed_filter = array(); $view->requires = array(node); $views[$view->name] = $view; @@ -337,17 +371,23 @@ function _views_ticker_scroller($view, $nodes, $type, $direction) { switch ($direction) { case 'horizontal': - $jsclass = 'left'; + $jsclass = variable_get('viewsticker_hscroller_direction', 'left'); + $jspeed = variable_get('viewsticker_hscroller_speed', 30); + $jmouse = (variable_get('viewsticker_hscroller_mouseover', 0) ? ' jscroller2_mousemove' : '' ); break; case 'vertical': - $jsclass = 'up'; + $jsclass = variable_get('viewsticker_vscroller_direction', 'up'); + $jspeed = variable_get('viewsticker_vscroller_speed', 30); + $jmouse = (variable_get('viewsticker_vscroller_mouseover', 0) ? ' jscroller2_mousemove' : '' ); break; } $direction = 'scroller-'.$direction; - drupal_add_css(drupal_get_path('module', 'views_ticker') .'/views.ticker.scroller.css'); - drupal_add_js(drupal_get_path('module', 'views_ticker') .'/views.ticker.scroller.js'); + $path = drupal_get_path('module', 'views_ticker'); + drupal_add_css($path .'/views.ticker.scroller.css'); + drupal_add_js($path .'/views.ticker.scroller.js'); + $fields = _views_get_fields(); - $output = '
'; + $output = '
'; foreach ($nodes as $node) { $items = '
'; foreach ($view->field as $field) { @@ -373,16 +413,9 @@ * Themeable functions * */ - - function theme_views_ticker_fade($view, $nodes, $type) { drupal_add_js(drupal_get_path('module', 'views_ticker') .'/views.ticker.fade.js'); - drupal_add_js('$(document).ready( - function() - { - $("#views-ticker-fade-' . $view->name . '").newsTicker(); - } -);','inline'); + drupal_add_js('$(document).ready(function() { $("#views-ticker-fade-'. $view->name .'").newsTicker(); });', 'inline'); $fields = _views_get_fields(); $output = '
    '; foreach ($nodes as $node) { @@ -405,17 +438,9 @@ return $output; } - function theme_views_ticker_bbc($view, $nodes, $type) { drupal_add_js(drupal_get_path('module', 'views_ticker') .'/views.ticker.bbc.js'); - drupal_add_js('$(document).ready(function() { - var options = { - newsList: "#views-ticker-fade-' . $view->name . '", - startDelay: 10, - placeHolder1: " |" - } - $().newsTicker(options); -});','inline'); + drupal_add_js('$(document).ready(function() { var options = { newsList: "#views-ticker-fade-'. $view->name .'", startDelay: 10, placeHolder1: " |" }; $().newsTicker(options); });', 'inline'); $fields = _views_get_fields(); $output = '
      '; foreach ($nodes as $node) { @@ -447,3 +470,80 @@ function theme_views_ticker_vscroll($view, $nodes, $type) { return _views_ticker_scroller($view, $nodes, $type, 'vertical'); } + + +/** + * Menu callback; presents the settings form for views_ticker + */ +function views_ticker_settings() { + $form = array(); + // horizontal + $form['views_ticker_hscroller_set'] = array( + '#type' => 'fieldset', + '#title' => t('Horizontal scroller settings'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + ); + $form['views_ticker_hscroller_set']['viewsticker_hscroller_speed'] = array( + '#type' => 'select', + '#title' => t('Horizontal scroller speed'), + '#default_value' => variable_get('viewsticker_hscroller_speed', 30), + '#options' => array( + '10' => t('Very slow'), + '20' => t('Slow'), + '30' => t('Normal'), + '40' => t('Fast'), + '50' => t('Very fast'), + ), + ); + $form['views_ticker_hscroller_set']['viewsticker_hscroller_direction'] = array( + '#type' => 'select', + '#title' => t('Horizontal scroller direction'), + '#default_value' => variable_get('viewsticker_hscroller_direction', 'left'), + '#options' => array( + 'left' => t('Left'), + 'right' => t('Right'), + ), + ); + $form['views_ticker_hscroller_set']['viewsticker_hscroller_mouseover'] = array( + '#type' => 'checkbox', + '#title' => t('Horizontal scroller mouseover'), + '#default_value' => variable_get('viewsticker_hscroller_mouseover', 0), + ); + // vertical + $form['views_ticker_vscroller_set'] = array( + '#type' => 'fieldset', + '#title' => t('Vertical scroller settings'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + ); + $form['views_ticker_vscroller_set']['viewsticker_vscroller_speed'] = array( + '#type' => 'select', + '#title' => t('Vertical scroller speed'), + '#default_value' => variable_get('viewsticker_vscroller_speed', 30), + '#options' => array( + '10' => t('Very slow'), + '20' => t('Slow'), + '30' => t('Normal'), + '40' => t('Fast'), + '50' => t('Very fast'), + ), + ); + $form['views_ticker_vscroller_set']['viewsticker_vscroller_direction'] = array( + '#type' => 'select', + '#title' => t('Vertical scroller direction'), + '#default_value' => variable_get('viewsticker_vscroller_direction', 'up'), + '#options' => array( + 'up' => t('Up'), + 'down' => t('Down'), + ), + ); + $form['views_ticker_vscroller_set']['viewsticker_vscroller_mouseover'] = array( + '#type' => 'checkbox', + '#title' => t('Vertical scroller mouseover'), + '#default_value' => variable_get('viewsticker_vscroller_mouseover', 0), + ); + + return system_settings_form($form); + +}