Tylko kodując. Przykładowa implementacja to CRM/Tasks
modules/CRM/Tasks/TasksInstall.php:84
Utils_RecordBrowserCommon::new_addon('task', CRM_TasksInstall::module_name(), 'messanger_addon', _M('Alerts'));
modules/CRM/Tasks/TasksCommon_0.php:288
public static function get_alarm($id) {
$a = Utils_RecordBrowserCommon::get_record('task',$id);
if (!$a) return __('Private record');
if($a['deadline'])
$date = __('Task Deadline: %s',array(Base_RegionalSettingsCommon::time2reg($a['deadline'],true,false)));
else
$date = __('Task without deadline');
return $date."\n".__('Title: %s',array($a['title']));
}
modules/CRM/Tasks/Tasks_0.php:80
public function messanger_addon($arg)
{
$emp = array();
$ret = CRM_ContactsCommon::get_contacts(array('id' => $arg['employees']), array(), array('last_name' => 'ASC', 'first_name' => 'ASC'));
foreach ($ret as $c_id => $data)
if (is_numeric($data['login'])) {
$emp[$data['login']] = CRM_ContactsCommon::contact_format_no_company($data);
}
$mes = $this->init_module('Utils/Messenger', array('CRM_Tasks:' . $arg['id'], array('CRM_TasksCommon', 'get_alarm'), array($arg['id']), strtotime($arg['deadline']), $emp));
$this->display_module($mes);
}
Oczywiście trzeba dodać addon do odpowiedniego rekordsetu. Każdy typ Asset to osobny rekordset "premium_asset_<id>
"
Pozdrawiam,
Adam