Index: pingfm/pingfm.admin.inc =================================================================== --- pingfm/pingfm.admin.inc (revision 3162) +++ pingfm/pingfm.admin.inc (working copy) @@ -36,6 +36,13 @@ '#description' => t('The default format when posting to Ping.fm.'), '#default_value' => variable_get('pingfm_default_format', '!title: !url'), ); + $form['node_settings']['pingfm_pingthis_nodetypes'] = array( + '#type' => 'checkboxes', + '#title' => t('Ping This'), + '#default_value' => isset($edit['pingfm_pingthis_nodetypes']) ? $edit['pingfm_pingthis_nodetypes'] : array(), + '#description' => t('The node types that users will be able to see the Ping this! button.'), + '#options' => node_get_types('names'), + ); $form['advanced'] = array( '#type' => 'fieldset', '#collapsible' => TRUE, Index: pingfm/pingfm.module =================================================================== --- pingfm/pingfm.module (revision 3162) +++ pingfm/pingfm.module (working copy) @@ -225,3 +225,44 @@ return t('Ping.fm custom URLs requires POST requests.', array('!customurl' => 'http://ping.fm/custom/')); } } + +/** + * Implementation of hook_link + */ +function pingfm_link($type, $object, $teaser) { + $links = array(); + if ($type == 'node') { + $pingthis_nodetypes = variable_get('pingfm_pingthis_nodetypes', array()); + if (in_array($object->type, $pingthis_nodetypes, FALSE)) { + $title = t( + '!image Ping this!', + array( + '!image' => theme( + 'image', + 'http://ping.fm/_images/icons/ping.png', + t('Ping this!'), + t('Ping this!'), + array('width' => 16, 'height' => 16), FALSE + ) + ) + ); + // we cannot use the query feature of the $link array because it calls + // drupal_urlencode() with the side effect of transforming // into /%2F + // so we use the following code to generate the href including the query string + // (note: the drupal_urlencode() is important for internal links, not external ones) + $href = 'http://ping.fm/ref/'; + $href .= '?link=' . url('node/'. $object->nid, array('absolute' => TRUE, 'external' => FALSE)); + $href .= '&title=' . str_replace('%2F', '/', rawurlencode($object->title)); + $href .= '&body=' . str_replace('%2F', '/', rawurlencode(check_markup($object->teaser, $object->format, FALSE))); + $links['pingfm_pingthis'] = array( + 'title' => $title, + 'href' => $href, + 'attributes' => array( + 'title' => t('Ping this!'), + ), + 'html' => TRUE + ); + } + } + return $links; +}