Index: faq.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/faq/faq.js,v
retrieving revision 1.1.2.6
diff -u -r1.1.2.6 faq.js
--- faq.js	18 Jul 2007 15:59:01 -0000	1.1.2.6
+++ faq.js	18 Sep 2007 16:44:09 -0000
@@ -4,7 +4,7 @@
     $('dd.faq_answer').hide();
     $("dt.faq_question").click(function() {
       $(this).next("dd.faq_answer").toggle();
-						return false;
+      return false;
     });
 
 
@@ -12,7 +12,7 @@
     $('div.faq_qa_hide').hide();
     $(".faq_qa_header").click(function() {
       $(this).next("div.faq_qa_hide").toggle();
-						return false;
+      return false;
     });
 
 
@@ -21,8 +21,10 @@
     faq_display_handler();
     questions_top_handler();
     categories_handler();
+    teaser_handler();
     $("input[@name=faq_display]").bind("click", faq_display_handler);
     $("input[@name=faq_qa_mark]").bind("click", qa_mark_handler);
+    $("input[@name=faq_use_teaser]").bind("click", teaser_handler);
     $("input[@name=faq_category_display]").bind("click", categories_handler);
     $("input[@name=faq_hide_sub_categories]").bind("click", sub_cats_handler);
 
@@ -32,60 +34,77 @@
 
 
 function faq_display_handler(event) {
-		// enable / disable "questions_inline" and "questions_top" only settings
-  if ($("input[@name=faq_display]:checked").val() == "questions_inline"
-    || $("input[@name=faq_display]:checked").val() == "questions_top") {
+  // enable / disable "questions_inline" and "questions_top" only settings
+  if ($("input[@name=faq_display]:checked").val() == "questions_inline" || $("input[@name=faq_display]:checked").val() == "questions_top") {
+    $("input[@name=faq_back_to_top]").removeAttr("disabled");
+  }
+  else {
+    $("input[@name=faq_back_to_top]").attr("disabled", "disabled");
+  }
+
+  // enable / disable "new_page" only settings
+  if ($("input[@name=faq_display]:checked").val() != "new_page") {
     $("input[@name=faq_use_teaser]").removeAttr("disabled");
     $("input[@name=faq_more_link]").removeAttr("disabled");
-    $("input[@name=faq_back_to_top]").removeAttr("disabled");
   }
   else {
     $("input[@name=faq_use_teaser]").attr("disabled", "disabled");
     $("input[@name=faq_more_link]").attr("disabled", "disabled");
-    $("input[@name=faq_back_to_top]").attr("disabled", "disabled");
   }
+  teaser_handler(event);
 
-		// enable / disable "new_page" and "questions_top" only settings
+  // enable / disable "new_page" and "questions_top" only settings
   if ($("input[@name=faq_display]:checked").val() == "new_page"
     || $("input[@name=faq_display]:checked").val() == "questions_top") {
-				$("select[@name=faq_question_listing]").removeAttr("disabled");
-		}
-		else {
-				$("select[@name=faq_question_listing]").attr("disabled", "disabled");
-		}
+    $("select[@name=faq_question_listing]").removeAttr("disabled");
+  }
+  else {
+    $("select[@name=faq_question_listing]").attr("disabled", "disabled");
+  }
 
-		// enable / disable "questions_inline" only settings
+  // enable / disable "questions_inline" only settings
   if ($("input[@name=faq_display]:checked").val() == "questions_inline") {
-				$("input[@name=faq_qa_mark]").removeAttr("disabled");
-				// enable / disable label settings according to "qa_mark" setting
-				if ($("input[@name=faq_qa_mark]:checked").val() == 1) {
-						$("input[@name=faq_question_label]").removeAttr("disabled");
-						$("input[@name=faq_answer_label]").removeAttr("disabled");
-				}
-				else {
-						$("input[@name=faq_question_label]").attr("disabled", "disabled");
-						$("input[@name=faq_answer_label]").attr("disabled", "disabled");
-				}
-		}
-		else {
-				$("input[@name=faq_qa_mark]").attr("disabled", "disabled");
-				$("input[@name=faq_question_label]").attr("disabled", "disabled");
-				$("input[@name=faq_answer_label]").attr("disabled", "disabled");
-		}
+    $("input[@name=faq_qa_mark]").removeAttr("disabled");
+    // enable / disable label settings according to "qa_mark" setting
+    if ($("input[@name=faq_qa_mark]:checked").val() == 1) {
+      $("input[@name=faq_question_label]").removeAttr("disabled");
+      $("input[@name=faq_answer_label]").removeAttr("disabled");
+    }
+    else {
+      $("input[@name=faq_question_label]").attr("disabled", "disabled");
+      $("input[@name=faq_answer_label]").attr("disabled", "disabled");
+    }
+  }
+  else {
+    $("input[@name=faq_qa_mark]").attr("disabled", "disabled");
+    $("input[@name=faq_question_label]").attr("disabled", "disabled");
+    $("input[@name=faq_answer_label]").attr("disabled", "disabled");
+  }
 }
 
 function qa_mark_handler(event) {
   if ($("input[@name=faq_display]:checked").val() == "questions_inline") {
-				// enable / disable label settings according to "qa_mark" setting
-				if ($("input[@name=faq_qa_mark]:checked").val() == 1) {
-						$("input[@name=faq_question_label]").removeAttr("disabled");
-						$("input[@name=faq_answer_label]").removeAttr("disabled");
-				}
-				else {
-						$("input[@name=faq_question_label]").attr("disabled", "disabled");
-						$("input[@name=faq_answer_label]").attr("disabled", "disabled");
-				}
-		}
+    // enable / disable label settings according to "qa_mark" setting
+    if ($("input[@name=faq_qa_mark]:checked").val() == 1) {
+      $("input[@name=faq_question_label]").removeAttr("disabled");
+      $("input[@name=faq_answer_label]").removeAttr("disabled");
+    }
+    else {
+      $("input[@name=faq_question_label]").attr("disabled", "disabled");
+      $("input[@name=faq_answer_label]").attr("disabled", "disabled");
+    }
+  }
+}
+
+function teaser_handler(event) {
+  if ($("input[@name=faq_display]:checked").val() != "new_page") {
+    if ($("input[@name=faq_use_teaser]:checked").val() == 1) {
+      $("input[@name=faq_more_link]").removeAttr("disabled");
+    }
+    else {
+      $("input[@name=faq_more_link]").attr("disabled", "disabled");
+    }
+  }
 }
 
 function questions_top_handler(event) {
@@ -117,110 +136,110 @@
   $("input[@name=faq_category_display]:checked").val() == "categories_inline" ?
     $("input[@name=faq_show_cat_sub_cats]").attr("disabled", "disabled"):
     $("input[@name=faq_show_cat_sub_cats]").removeAttr("disabled");
-		$("input[@name=faq_category_display]:checked").val() == "new_page" ?
-				$("select[@name=faq_category_listing]").removeAttr("disabled"):
-				$("select[@name=faq_category_listing]").attr("disabled", "disabled");
+  $("input[@name=faq_category_display]:checked").val() == "new_page" ?
+    $("select[@name=faq_category_listing]").removeAttr("disabled"):
+    $("select[@name=faq_category_listing]").attr("disabled", "disabled");
 
-		sub_cats_handler();
+  sub_cats_handler();
 }
 
 function sub_cats_handler(event) {
   if ($("input[@name=faq_hide_sub_categories]:checked").val() == 1) {
     $("input[@name=faq_show_cat_sub_cats]").attr("disabled", "disabled");
-		}
-		else if ($("input[@name=faq_category_display]:checked").val() != "categories_inline") {
+  }
+  else if ($("input[@name=faq_category_display]:checked").val() != "categories_inline") {
     $("input[@name=faq_show_cat_sub_cats]").removeAttr("disabled");
-		}
+  }
 }
 
 
 function faq_has_options(obj) {
-		if (obj != null && obj.options != null) {
-				return true;
-		}
-		return false;
+  if (obj != null && obj.options != null) {
+    return true;
+  }
+  return false;
 }
 
 function faq_swap_options(obj, i, j) {
-		var o = obj.options;
-		var i_selected = o[i].selected;
-		var j_selected = o[j].selected;
-		var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
-		var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
-		o[i] = temp2;
-		o[j] = temp;
-		o[i].selected = j_selected;
-		o[j].selected = i_selected;
+  var o = obj.options;
+  var i_selected = o[i].selected;
+  var j_selected = o[j].selected;
+  var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
+  var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
+  o[i] = temp2;
+  o[j] = temp;
+  o[i].selected = j_selected;
+  o[j].selected = i_selected;
 }
 
 function faq_move_selected_item_up() {
-		var obj = document.getElementById("edit-order-no-cats");
-		if (!faq_has_options(obj)) {
-				return;
-		}
-		for (i = 0; i < obj.options.length; i++) {
-				if (obj.options[i].selected) {
-						if (i != 0 && !obj.options[i-1].selected) {
-								faq_swap_options(obj, i, i-1);obj.options[i-1].selected = true;
-						}
-				}
-		}
+  var obj = document.getElementById("edit-order-no-cats");
+  if (!faq_has_options(obj)) {
+    return;
+  }
+  for (i = 0; i < obj.options.length; i++) {
+    if (obj.options[i].selected) {
+      if (i != 0 && !obj.options[i-1].selected) {
+        faq_swap_options(obj, i, i-1);obj.options[i-1].selected = true;
+      }
+    }
+  }
 }
 
 function faq_move_selected_item_down() {
-		var obj = document.getElementById("edit-order-no-cats");
-		if (!faq_has_options(obj)) {
-				return;
-		}
-		for (i = obj.options.length-1; i >= 0; i--) {
-				if (obj.options[i].selected) {
-						if (i != (obj.options.length-1) && ! obj.options[i+1].selected) {
-								faq_swap_options(obj, i, i+1);
-								obj.options[i+1].selected = true;
-						}
-				}
-		}
+  var obj = document.getElementById("edit-order-no-cats");
+  if (!faq_has_options(obj)) {
+    return;
+  }
+  for (i = obj.options.length-1; i >= 0; i--) {
+    if (obj.options[i].selected) {
+      if (i != (obj.options.length-1) && ! obj.options[i+1].selected) {
+        faq_swap_options(obj, i, i+1);
+        obj.options[i+1].selected = true;
+      }
+    }
+  }
 }
 
 function faq_update_order() {
-		var obj = document.getElementById("edit-order-no-cats");
-		var ids = new Array();
-		for (var i = 0; i < obj.length; i++) {
-				ids[i] = obj.options[i].value;
-		}
-		var new_order = new String(ids.join(","));
-		var form = document.getElementById('faq-weight-settings-form');
-		form.faq_node_order.value = new_order;
+  var obj = document.getElementById("edit-order-no-cats");
+  var ids = new Array();
+  for (var i = 0; i < obj.length; i++) {
+    ids[i] = obj.options[i].value;
+  }
+  var new_order = new String(ids.join(","));
+  var form = document.getElementById('faq-weight-settings-form');
+  form.faq_node_order.value = new_order;
 }
 
 function faq_order_by_date(order) {
-		var obj = document.getElementById("edit-order-no-cats");
-		if (!faq_has_options(obj)) {
-				return;
-		}
-
-		var form = document.getElementById('faq-weight-settings-form');
-		var date_order = form.faq_node_date_order.value;
-
-		var newIds = date_order.split(",");
-		if (order == "ASC") {
-				newIds.reverse();
-				date_order = new String(newIds.join(","));
-		}
-		form.faq_node_order.value = date_order;
-
-		var opt_text = new Array();
-		var opts = obj.options;
-
-		for (var i = 0; i < opts.length; i++) {
-				var id = opts[i].value;
-				opt_text[id] = opts[i].text;
-		}
-		for (var i = 0; i < newIds.length; i++) {
-				var id = newIds[i];
-				var opt = new Option(opt_text[id], id);
-				obj.options[i] = opt;
-		}
+  var obj = document.getElementById("edit-order-no-cats");
+  if (!faq_has_options(obj)) {
+    return;
+  }
+
+  var form = document.getElementById('faq-weight-settings-form');
+  var date_order = form.faq_node_date_order.value;
+
+  var newIds = date_order.split(",");
+  if (order == "ASC") {
+    newIds.reverse();
+    date_order = new String(newIds.join(","));
+  }
+  form.faq_node_order.value = date_order;
+
+  var opt_text = new Array();
+  var opts = obj.options;
+
+  for (var i = 0; i < opts.length; i++) {
+    var id = opts[i].value;
+    opt_text[id] = opts[i].text;
+  }
+  for (var i = 0; i < newIds.length; i++) {
+    var id = newIds[i];
+    var opt = new Option(opt_text[id], id);
+    obj.options[i] = opt;
+  }
 
 }
 
Index: faq.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/faq/faq.module,v
retrieving revision 1.1.4.56
diff -u -r1.1.4.56 faq.module
--- faq.module	17 Sep 2007 10:59:02 -0000	1.1.4.56
+++ faq.module	18 Sep 2007 16:44:09 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: faq.module,v 1.1.4.56 2007/09/17 10:59:02 snpower Exp $
+// $Id: faq.module,v 1.1.4.52 2007/07/18 15:57:54 snpower Exp $
 
 /**
  * Display help and module information
@@ -331,18 +331,18 @@
     '#default_value' => variable_get('faq_use_teaser', FALSE),
     );
 
-  $form['faq_questions_misc']['faq_back_to_top'] = array('#type' => 'textfield',
-    '#title' => t('"Back to Top" link text'),
-    '#description' => t('This allows the user to change the text displayed for the links which return the user to the top of the page on certain page layouts.  Defaults to "Back to Top".  Leave blank to have no link.'),
-    '#default_value' => variable_get('faq_back_to_top', 'Back to Top'),
-    );
-
   $form['faq_questions_misc']['faq_more_link'] = array('#type' => 'textfield',
     '#title' => t('">> more" link text'),
     '#description' => t('This allows the user to change the text displayed for the links to the full answer text when teasers are used.  Leave blank to have no link.'),
     '#default_value' => variable_get('faq_more_link', '>> more'),
     );
 
+  $form['faq_questions_misc']['faq_back_to_top'] = array('#type' => 'textfield',
+    '#title' => t('"Back to Top" link text'),
+    '#description' => t('This allows the user to change the text displayed for the links which return the user to the top of the page on certain page layouts.  Defaults to "Back to Top".  Leave blank to have no link.'),
+    '#default_value' => variable_get('faq_back_to_top', 'Back to Top'),
+    );
+
   return system_settings_form($form);
 }
 
@@ -631,7 +631,7 @@
         break;
 
       case 'hide_answer':
-        $output = theme('hide_answer', $result);
+        $output = theme('hide_answer', $result, $display_vars);
         break;
 
       case 'questions_inline':
@@ -1075,7 +1075,7 @@
   return $data;
 }
 
-function theme_hide_answer($result) {
+function theme_hide_answer($result, $display_vars) {
   drupal_add_js(drupal_get_path('module', 'faq') .'/faq.js', 'module');
 
   $output = '<dl class="faq_dl">'."\n";
@@ -1084,8 +1084,24 @@
     if (node_access("view", $node_obj)) {
       $output .= '<dt class="faq_question">';
       $output .= l($node->title, "node/$node->nid") ."</dt>\n";
-      $output .= '<dd class="faq_answer">';
-      $output .= check_markup($node->body, $node->format, FALSE) ."</dd>\n";
+
+      // should we display teaser or full text
+      if ($display_vars['use_teaser']) {
+        $more_link = '';
+        if (!empty($display_vars['more_link']) && strlen($node->teaser) < strlen($node->body)) {
+          $more_link = '<p class="faq_more_link">';
+          $more_link .= l(t($display_vars['more_link']), "node/$node->nid") .'</p>';
+        }
+        $output .= '<dd class="faq_answer">';
+        $output .= check_markup($node->teaser, $node->format, FALSE);
+        $output .= $more_link ."</dd>\n";
+      }
+
+      // full text
+      else {
+        $output .= '<dd class="faq_answer">';
+        $output .= check_markup($node->body, $node->format, FALSE) ."</dd>\n";
+      }
     }
   }
   $output .= "</dl>\n";
@@ -1203,8 +1219,23 @@
       if (node_access("view", $node)) {
         $output .= '<dt class="faq_question">';
         $output .= l($node->title, "node/$node->nid") ."</dt>\n";
-        $output .= '<dd class="faq_answer">';
-        $output .= check_markup($node->body, $node->format, FALSE) ."</dd>\n";
+        // should we display teaser or full text
+        if ($display_vars['use_teaser']) {
+          $more_link = '';
+          if (!empty($display_vars['more_link']) && strlen($node->teaser) < strlen($node->body)) {
+            $more_link = '<p class="faq_more_link">';
+            $more_link .= l(t($display_vars['more_link']), "node/$node->nid") .'</p>';
+          }
+          $output .= '<dd class="faq_answer">';
+          $output .= check_markup($node->teaser, $node->format, FALSE);
+          $output .= $more_link ."</dd>\n";
+        }
+
+        // full text
+        else {
+          $output .= '<dd class="faq_answer">';
+          $output .= check_markup($node->body, $node->format, FALSE) ."</dd>\n";
+        }
       }
       else {
         $count--;
