'FB Like Button', 'description' => 'Configure the Facebook Like button', 'page callback' => 'system_admin_menu_block_page', 'access arguments' => array('administer fblikebutton'), 'position' => 'right', 'weight' => -20, 'type' => MENU_NORMAL_ITEM, 'file' => 'system.admin.inc', 'file path' => drupal_get_path('module', 'system'), ); $items['admin/config/fblikebutton/dynamic'] = array( 'title' => 'Dynamic Like button settings', 'description' => 'Configure the settings for the Like button as it appears on individual nodes (liking that node).', 'page callback' => 'drupal_get_form', 'page arguments' => array('fblikebutton_dynamic_settings'), 'access arguments' => array('administer fblikebutton'), 'type' => MENU_NORMAL_ITEM, 'file' => 'fblikebutton.admin.inc', 'weight' => 0, ); $items['admin/config/fblikebutton/static'] = array( 'title' => 'Static Like button settings', 'description' => 'Configure the settings for the static Like button as it appears in the block (liking a given url). Use this to like for example your Facebook fanpage.', 'page callback' => 'drupal_get_form', 'page arguments' => array('fblikebutton_static_settings'), 'access arguments' => array('administer fblikebutton block'), 'type' => MENU_NORMAL_ITEM, 'file' => 'fblikebutton.admin.inc', 'weight' => 1, ); return $items; } /** * Implements of hook_node_view(). */ function fblikebutton_node_view($node, $view_mode) { 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[$node->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/$node->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'), ); if ($show) { // Content area if (($view_mode == 'teaser' && $teaserdisplay == 1) || ($view_mode == 'full' && $fullnodedisplay == 0)) { $node->content['fblikebutton_field'] = array( '#markup' => _fblikebutton_field($webpage_to_like, $conf), '#weight' => $likebutton_weight, ); } // Link area if (($view_mode == 'teaser' && $teaserdisplay == 2) || ($view_mode == 'full' && $fullnodedisplay == 2)) { $node->content['links']['#links']['fblikebutton_field'] = array( 'title' => _fblikebutton_field($webpage_to_like, $conf), 'html' => TRUE, ); } } } /** * Implements of hook_permission(). */ function fblikebutton_permission() { return array( 'administer fblikebutton' => array( 'title' => t('Administer FB Like button'), 'description' => t('Perform administration tasks for FB Like button') ), 'administer fblikebutton block' => array( 'title' => t('Administer FB Like button block'), 'description' => t('Perform administration tasks for FB Like button block') ), 'access fblikebutton' => array( 'title' => t('Access FB Like button'), ), ); } /** * Implementation of hook_block_info() */ function fblikebutton_block_info() { $fullnodedisplay = variable_get('fblikebutton_full_node_display', 0); $blocks['fblikebutton_static_block'] = array( 'info' => t('Static FB Like button'), ); if ($fullnodedisplay == 1) { $blocks['fblikebutton_dynamic_block'] = array( 'info' => t('Dynamic FB Like button'), ); } return $blocks; } /** * Implementation of hook_block_configure() */ function fblikebutton_block_configure($delta = '') { global $base_url; $form = array(); if ($delta == 'fblikebutton_static_block') { $form['fblikebutton_static_block'] = array( '#type' => 'fieldset', '#title' => t('Static FB Like button block'), '#collapsible' => FALSE, ); $form['fblikebutton_static_block']['fblikebutton_static_config'] = array( '#markup' => '

' . t('To configure the URL and the appearance of the button go to the ' . l(t('static Like button settings'), 'admin/config/fblikebutton/static') . '. Make sure you set the right permissions on the ' . l(t('permissions page'), 'admin/people/permissions') . '.

'), ); } if ($delta == 'fblikebutton_dynamic_block') { $form['fblikebutton_dynamic_block'] = array( '#type' => 'fieldset', '#title' => t('Dynamic FB Like button block'), '#collapsible' => FALSE, ); $form['fblikebutton_dynamic_block']['fblikebutton_dynamic_config'] = array( '#markup' => '

' . t('To configure the visibility and the appearance of the button go to the ' . l(t('dynamic Like button settings'), 'admin/config/fblikebutton/dynamic') . '. You can enhance the visibility settings by using the settings on this page. Make sure you set the right permissions on the ' . l(t('permissions page'), 'admin/people/permissions') . '.

'), ); } return $form; } /** * Implementation of hook_block_view() */ function fblikebutton_block_view($delta = '') { global $base_url; $node = node_load(arg(1)); $types = variable_get('fblikebutton_node_types', array()); if ($node) { $show = ( ! empty($types[$node->type]) && user_access('access fblikebutton')); } else { $show = NULL; } $fullnodedisplay = variable_get('fblikebutton_full_node_display', 0); $block = array(); switch ($delta) { case 'fblikebutton_dynamic_block': if ($show && $fullnodedisplay == 1) { $webpage_to_like = url("node/$node->nid", array('absolute' => TRUE)); $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_bl_language', 'en_US'), ); $block['content'] = _fblikebutton_field($webpage_to_like, $conf); } break; case 'fblikebutton_static_block': $addr = variable_get('fblikebutton_block_url', $base_url); $conf = array( 'layout' => variable_get('fblikebutton_bl_layout', "standard"), 'action' => variable_get('fblikebutton_bl_action', "like"), 'color_scheme' => variable_get('fblikebutton_bl_color_scheme', "light"), 'show_faces' => variable_get('fblikebutton_bl_show_faces', "false"), 'font' => variable_get('fblikebutton_bl_font', "arial"), 'height' => variable_get('fblikebutton_bl_iframe_height', '80'), 'width' => variable_get('fblikebutton_bl_iframe_width', '450'), 'other_css' => variable_get('fblikebutton_bl_iframe_css', ''), 'language' => variable_get('fblikebutton_bl_language', 'en_US'), ); $block['content'] = _fblikebutton_field($addr, $conf); break; } return $block; } function _fblikebutton_field($webpage_to_like, $conf) { $webpage_to_like = urlencode($webpage_to_like); $width = $conf['width']; $height = $conf['height']; $layout = $conf['layout']; $action = $conf['action']; $colorscheme = $conf['color_scheme']; $show_faces = $conf['show_faces']; $font = $conf['font']; // $send = $conf['send']; $other_css = $conf['other_css']; $language = $conf['language']; $params = "href={$webpage_to_like}&layout={$layout}&show_faces={$show_faces}&width={$width}px&font={$font}&height={$height}px&action={$action}&colorscheme={$colorscheme}&locale={$language}"; $src = htmlentities($params); $output = ''; return $output; } /** * Implementes hook_views_data() */ function fblikebutton_views_api() { return array( 'api' => 3, ); }