Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
I want create simple plugin for add bookmark flag (for nodes) into activity messages.
In my module i have hook_heartbeat_plugin_info():
/**
* Implements hook_ctools_plugin_api().
*/
function nextdoc_hb_ctools_plugin_api($owner, $api) {
if ( ($owner == 'heartbeat' && $api == 'heartbeat') ||
($owner == 'ds' && $api == 'ds') ||
($owner == 'ds_extras' && $api == 'ds_extras') ) {
return array('version' => 1);
}
if ($owner == 'heartbeat_plugins' && $api == 'heartbeat_plugins') {
return array('version' => 1);
}
}
/**
* Implementation of hook_heartbeat_plugin_info().
* Built-in default plugins that can be used with heartbeat.
*/
function nextdoc_hb_heartbeat_plugin_info() {
$plugin_names = array();
if (module_exists('flag')) {
$plugin_name = new HeartbeatPluginWrapper;
$plugin_name->disabled = FALSE; /* Edit this to true to make a default plugin_name disabled initially */
$plugin_name->api_version = 1;
$plugin_name->plugin_name = 'flagbookmark';
$plugin_name->label = 'Bookmark related content.';
$plugin_name->module = 'nextdoc_hb';
$plugin_name->settings = array();
$plugin_names['flagbookmark'] = $plugin_name;
}
return $plugin_names;
}
Class in file plugins/flagbookmark.inc:
/**
* Class HeartbeatFlagBookmarkPlugin.
*/
class HeartbeatFlagBookmarkPlugin extends HeartbeatBasePlugin implements iHeartbeatPlugin {
/**
* isEnabled().
*/
public function isEnabled(HeartbeatActivity $heartbeatActivity) {
return TRUE;
}
/**
* hasAttachments().
*/
public function hasAttachments() {}
/**
* hasButtons().
*/
public function hasButtons() {
return TRUE;
}
/**
* pluginUIForm().
*/
public function pluginUIForm(&$form, &$form_state) {}
/**
* pluginAttachmentForm().
* The form to add attachments to templates.
*/
public function pluginAttachmentForm(&$form, &$form_state) {}
/**
* loadAttachments().
*/
public function loadAttachments(HeartbeatActivity $heartbeatActivity) {}
/**
* renderAttachments().
*/
public function renderAttachments(HeartbeatActivity $heartbeatActivity) {}
/**
* renderButtons().
*/
public function renderButtons(HeartbeatActivity $heartbeatActivity) {
$heartbeatActivity->add_button(flag_create_link('bookmarks', $heartbeatActivity->nid));
}
/**
* streamLoaded().
*/
public function streamLoaded(HeartbeatStream $heartbeatStream) {}
}
File with class (plugins/flagbookmark.inc) is loaded (i test it) but my button can't render. I try print some debugs from class functions (isEnabled, hasAttachments, hasButtons) but no one are called, only function streamLoaded() is called.
Maybe i'm miss something? Thanks.
Comments
Comment #1
havran CreditAttribution: havran commentedOk i solve this.
In my module i have hook_heartbeat_plugin_info():
And my plugin class:
Now i have checkbox in templates for enable/disable my flag link.
Thanks for great work on this module.