From 2c95e7523470a435bd2a4fa55e3f347d8d428451 Mon Sep 17 00:00:00 2001
From: Peter Lieverdink <me@cafuego.net>
Date: Tue, 24 May 2011 12:53:20 +1000
Subject: [PATCH] Choose display mode on a per-node-type basis.

---
 includes/node.inc |   27 +++++++++++++++++++--------
 1 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/includes/node.inc b/includes/node.inc
index 1f79ec0..1427345 100644
--- a/includes/node.inc
+++ b/includes/node.inc
@@ -33,6 +33,14 @@ function node_sexybookmarks_form_alter_alter($form, $form_state, $form_id) {
       '#options' => $options,
       '#default_value' => variable_get("node_sexybookmarks_profile_{$form['#node_type']->type}", 'default'),
     );
+
+    $options = array(0 => '- None -', 1 => 'Teaser only', 2 => 'Full node only', 3 => 'Teaser and full node');
+    $form['sexybookmarks']['node_sexybookmarks_display'] = array(
+      '#type' => 'select',
+      '#title' => t('Display on'),
+      '#options' => $options,
+      '#default_value' => variable_get("node_sexybookmarks_display_{$form['#node_type']->type}", 3),
+    );
   }
 }
 
@@ -42,14 +50,17 @@ function node_sexybookmarks_form_alter_alter($form, $form_state, $form_id) {
 function sexybookmarks_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
   switch ($op) {
     case 'view':
-      $node->content['sexybookmarks'] = array(
-        '#weight' => module_exists('content') ? content_extra_field_weight($node->type, 'sexybookmarks') : 100,
-        '#value' => theme('sexybookmarks', array(
-          'profile' => variable_get("node_sexybookmarks_profile_{$node->type}", 'default'),
-          'url' => url("node/{$node->nid}", array('absolute' => TRUE)),
-          'title' => $node->title,
-        )),
-      );
+      $display_mode = variable_get("node_sexybookmarks_display_{$node->type}", 3);
+      if (($a3 == 0 && $display_mode & 2) || ($a3 == 1 && $display_mode & 1)) {
+        $node->content['sexybookmarks'] = array(
+          '#weight' => module_exists('content') ? content_extra_field_weight($node->type, 'sexybookmarks') : 100,
+          '#value' => theme('sexybookmarks', array(
+            'profile' => variable_get("node_sexybookmarks_profile_{$node->type}", 'default'),
+            'url' => url("node/{$node->nid}", array('absolute' => TRUE)),
+            'title' => $node->title,
+          )),
+        );
+      }
       break;
   }
 }
-- 
1.7.1

