aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fblikebutton.handlers.inc51
-rw-r--r--fblikebutton.info1
-rw-r--r--fblikebutton.module11
-rw-r--r--fblikebutton.views.inc20
4 files changed, 82 insertions, 1 deletions
diff --git a/fblikebutton.handlers.inc b/fblikebutton.handlers.inc
new file mode 100644
index 0000000..aeb40a3
--- /dev/null
+++ b/fblikebutton.handlers.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * @file
+ * Contains the fblikebutton views field handler.
+ */
+
+/**
+ * Field handler for fblikebutton total transactions.
+ */
+class fblikebutton_handler_field_fblikebutton extends views_handler_field {
+ /**
+ * Implements views_handler_field#query().
+ */
+ function query() {
+ // Provide an field alias but don't actually alter the query.
+ $this->field_alias = 'views_fblikebutton_button_' . $this->position;
+ }
+
+ /**
+ * Renders the field.
+ */
+ function render($values) {
+ if (isset($values->nid)) {
+ global $user, $base_url;
+ $types = variable_get('fblikebutton_node_types', array());
+ $fullnodedisplay = variable_get('fblikebutton_full_node_display', 0);
+ $teaserdisplay = variable_get('fblikebutton_teaser_display', 0);
+ $full = ($view_mode == 'full') ? TRUE : FALSE;
+ $show = ( ! empty($types[$values->type]) && user_access('access fblikebutton'));
+ // Thanks to corbacho for supplying the code for the $webpage_to_like variable...
+ // (It was apparently throwing errors/notices the way I had it set up.)
+ $webpage_to_like = url("node/$values->nid", array('absolute' => TRUE));
+ $likebutton_weight = variable_get('fblikebutton_weight', '0');
+ $conf = array(
+ 'layout' => variable_get('fblikebutton_layout', 'standard'),
+ 'action' => variable_get('fblikebutton_action', 'like'),
+ 'color_scheme' => variable_get('fblikebutton_color_scheme', 'light'),
+ 'show_faces' => variable_get('fblikebutton_show_faces', 'true'),
+ 'font' => variable_get('fblikebutton_font', 'arial'),
+ 'height' => variable_get('fblikebutton_iframe_height', '80'),
+ 'width' => variable_get('fblikebutton_iframe_width', '450'),
+ 'send' => variable_get('fblikebutton_send', 'true'),
+ 'other_css' => variable_get('fblikebutton_iframe_css', ''),
+ 'language' => variable_get('fblikebutton_language', 'en_US'),
+ );
+
+ return _fblikebutton_field($webpage_to_like, $conf);
+ }
+ }
+}
diff --git a/fblikebutton.info b/fblikebutton.info
index b9b5565..25c180f 100644
--- a/fblikebutton.info
+++ b/fblikebutton.info
@@ -3,3 +3,4 @@ name = Facebook Like Button
description = Adds a configurable <em>Like</em> button for Facebook to each selected node type, as well as a configurable block with a <em>Like</em> box in it.
core = 7.x
configure = admin/config/fblikebutton
+files[] = fblikebutton.handlers.inc
diff --git a/fblikebutton.module b/fblikebutton.module
index cb191b6..2ca00c5 100644
--- a/fblikebutton.module
+++ b/fblikebutton.module
@@ -225,4 +225,13 @@ function _fblikebutton_field($webpage_to_like, $conf) {
$src = htmlentities($params);
$output = '<iframe src="https://www.facebook.com/plugins/like.php?' . $src . '" scrolling="no" frameborder="0" style="border: none; overflow: hidden; width: ' . $width . 'px; height: ' . $height . 'px;' . $other_css . '" allowTransparency="true"></iframe>';
return $output;
-} \ No newline at end of file
+}
+
+/**
+ * Implementes hook_views_data()
+ */
+function fblikebutton_views_api() {
+ return array(
+ 'api' => 3,
+ );
+}
diff --git a/fblikebutton.views.inc b/fblikebutton.views.inc
new file mode 100644
index 0000000..dd162dc
--- /dev/null
+++ b/fblikebutton.views.inc
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @file
+ */
+
+/**
+ * Implements hook_views_data()
+ */
+function fblikebutton_views_data() {
+ $data['node']['fblikebutton'] = array(
+ 'field' => array(
+ 'title' => t('Facebook Like Button'),
+ 'help' => t('Adds a facebook like button.'),
+ 'handler' => 'fblikebutton_handler_field_fblikebutton',
+ ),
+ );
+
+ return $data;
+}