SugarCRM is a very nice and open source CRM (Customer relationship management) system. Being open source means that you are more than welcome to add/alter your own modules to it. I am going to do some modules which add in some basic information and how-to’s. This how to is how to add to a left menu item and in this case a account main menu left menu item.
Also going to be doing a module for it, so that you can upload to different SugarCRM’s that you may have, e.g. development version and live version.
The module consists of the main manifest.php file which holds all of the main details, module name author, description etc and also the install definitions.
Here is a basic manifest.php file that has the main details and install definitions for adding a menu item to the Accounts module.
<?php
$manifest = array(
'acceptable_sugar_flavors' => array(
0 => 'CE',
1 => 'PRO',
2 => 'ENT',
3 => 'DEV'
),
'acceptable_sugar_versions' => array (
'regex_matches' => array (
0 => "5\.*\.*.*"
),
),
'name' => 'Accounts insert left menu addition',
'description' => 'This module inserts a left menu addition',
'author' => 'Ian Porter',
'published_date' => '2009/06/01',
'version' => '0.1',
'type' => 'module',
'icon' => '',
'is_uninstallable' => 1,
'silent' => true,
);
$installdefs = array (
'id' => 'AccountsLeftMenu',
'vardefs'=> array( ),
'custom_fields' => array ( ),
'copy' =>
array ( ),
'menu'=> array(
array('from'=> '<basepath>/Menu.php',
'to_module'=> 'Accounts', ),
),
'beans'=> array (
),
'language' =>
array (
),
);
?> |
<?php
$manifest = array(
'acceptable_sugar_flavors' => array(
0 => 'CE',
1 => 'PRO',
2 => 'ENT',
3 => 'DEV'
),
'acceptable_sugar_versions' => array (
'regex_matches' => array (
0 => "5\.*\.*.*"
),
),
'name' => 'Accounts insert left menu addition',
'description' => 'This module inserts a left menu addition',
'author' => 'Ian Porter',
'published_date' => '2009/06/01',
'version' => '0.1',
'type' => 'module',
'icon' => '',
'is_uninstallable' => 1,
'silent' => true,
);
$installdefs = array (
'id' => 'AccountsLeftMenu',
'vardefs'=> array( ),
'custom_fields' => array ( ),
'copy' =>
array ( ),
'menu'=> array(
array('from'=> '<basepath>/Menu.php',
'to_module'=> 'Accounts', ),
),
'beans'=> array (
),
'language' =>
array (
),
);
?>
As you can see from the above code, the acceptable sugar flavors means any of the version types of sugar, development, pro etc.. and the acceptable sugar versions means which version of sugar e.g. version 4.1.2 or 5.etc. the name etc speaks for itself really.
The installdefs are what happens with the files and such when the module is installed, id is the name of the module, the one that we are focusing in on is menu, this will insert the code below into the a set menu module (this case the Accounts menu structure).
Here is the Menu.php file
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
/* licence and you stuff */
global $mod_strings, $app_strings, $sugar_config, $current_user;
/* you need to create the DetailViewPersonal.php file to communicate with */
if(ACLController::checkAccess('Accounts', 'edit', true)) {
$module_menu[]=Array("index.php?module=Accounts&action=DetailViewPersonal&return_module=Accounts&return_action=DetailView&record=".$current_user->id, "Personal View", 'Accounts');
}
?> |
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
/* licence and you stuff */
global $mod_strings, $app_strings, $sugar_config, $current_user;
/* you need to create the DetailViewPersonal.php file to communicate with */
if(ACLController::checkAccess('Accounts', 'edit', true)) {
$module_menu[]=Array("index.php?module=Accounts&action=DetailViewPersonal&return_module=Accounts&return_action=DetailView&record=".$current_user->id, "Personal View", 'Accounts');
}
?>
The ACLController will check the access level of the user for editable, ACL(Access Control Level), and if so place a new menu below called “Personal View”, the action in the module_menu array is what is called and thus you will need to have a DetialViewPersonal.php in the modules/Accounts directory, but this was just a how to, of how to insert a menu item and not the underlying code.
There is more to come!.