--- 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 @@
 <?php
 // $Id: views_ticker.module,v 1.1 2008/04/14 13:11:32 vvn Exp $
+/**
+ * @file
+ * A plugin module for views.
+ *
+ * Provides 4 different types of javascript scrollers.
+ */
+
+/**
+ * Implementation of hook_help().
+ */
+function views_ticker_help($section) {
+  switch ($section) {
+    case 'admin/modules#description':
+      return t('Adds javascript scrollers to the Views module.');
+  }
+}
+
+/**
+ * Implementation of hook_perm().
+ *
+ * Since we are limiting the ability to create new nodes to certain users,
+ * we need to define what those permissions are here. We also define a permission
+ * to allow users to edit the nodes they created.
+ */
+function views_ticker_perm() {
+  return array('administer views_ticker');
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function views_ticker_menu($may_cache) {
+  $items = array();
+  if ($may_cache) {
+    $items[] = array(
+      'path' => '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 = '<div id="views-ticker-' . $direction . '-' . $view->name . '" class="views-' . $direction . '-container"><div class="jscroller2_' . $jsclass . ' jscroller2_speed-30">';
+  $output = '<div id="views-ticker-'. $direction .'-'. $view->name .'" class="views-'. $direction .'-container"><div class="jscroller2_'. $jsclass .' jscroller2_speed-'. $jspeed . $jmouse .'">';
   foreach ($nodes as $node) {
       $items = '<div class="views-' . $direction . '-item views-' . $direction . '-item-' . $view->name . '">';
     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 = '<div id="views-ticker-fade-container-' . $view->name . '"><ul id="views-ticker-fade-' . $view->name . '">';
   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 = '<div id="views-ticker-fade-container-' . $view->name . '"><ul id="views-ticker-fade-' . $view->name . '">';
   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);
+
+}
