Today i want to share with you, how you can add custom field into subpanel. We will show on example of Contracts subpanel that is showing in Accounts module/detailview.
First thing that needs to be done is define a new field in subpanel definition and make that field point to a class. We are edititing the following file custom/modules/Contracts/metadata/subpanels/ForAccounts.php and adding additional field fot showing with following code:
'eontek_new_field'=>array(
'vname' => 'LBL_EONTEK_NEW_FIELD',
'widget_class' => 'SubPanelEontekNewField', //remember this class name
'width' => '10%',
'custom_link_only' => true,
'displayHeaderCell' => false,
),
After we have added that part of code we need to create coresponding SugarWidgetSubPanel class in the following path
/include/generic/Sugarwidgets/SugarWidgetSubPanelEontekNewField.php
with code like this:
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
require_once('include/generic/SugarWidgets/SugarWidgetField.php');
class SugarWidgetSubPanelEonteknewField extends SugarWidgetField //look at name of class
{
function displayHeaderCell(&$layout_def){
if(!empty($layout_def['displayHeaderCell']) && $layout_def['displayHeaderCell'] == false) {
return ' ';
}
else {
return parent::displayHeaderCell($layout_def);
}
}
function displayList(&$layout_def)
{
global $focus;
if(isset($layout_def['varname']))
{
$key = strtoupper($layout_def['varname']);
}
else
{
$key = $this->_get_column_alias($layout_def);
$key = strtoupper($key);
}
//////////////////////////////////////////////////////////////////////////
// Current ProductTemplate record (in current subpanel row)
$module = $layout_def['module'];
$record = $layout_def['fields']['ID']; //id contract
$contractName = $layout_def['fields']['NAME']; //name contract
//$GLOBALS['log']->fatal($layout_def);
// Current ProductTemplate record
$parent_id=$_REQUEST['record']; //id account-a
//Here you define your logic, my quary to the database and the return from this function will be displayed in subpanel
//So for example you can do
$db = DBManagerFactory::getInstance();
$query = "SELECT * FROM contracts WHERE id = '$record' and account_id = '$parent_id'";
$result = $db->query($query, true,"greska");
$result = $db->fetchByAssoc($result);
$quantity = $result['broj_slucajeva'];
return $quantity; //value of this variable will be shown in subpanel
}
}
?>


LinkBack URL
About LinkBacks



Reply With Quote

Bookmarks