SugarCRM On-Demand Convert TextField to DropDown

2020-07-20 04:36发布

A similar question was posted here before but it only applied to an On-Site SugarCRM instance (it was also a long time ago).

In my case I would like to change the "Billing Country" field from 'TextField' to 'DropDdown' on an On-Demand instance where I don't have access to the config files. How can I do this?

So far I have tried different PHP files using the Module Loader but it's not working either.

Please find my PHP script below:

<?php

$manifest = array(
    'acceptable_sugar_flavors' => array('CE', 'PRO', 'CORP', 'ENT', 'ULT'),
    'acceptable_sugar_versions' => array(
        'exact_matches' => array(),
        'regex_matches' => array(
            0 => '6\\.5\\.(.*?)',
            1 => '6\\.7\\.(.*?)',
            2 => '7\\.2\\.(.*?)',
            3 => '7\\.2\\.(.*?)\\.(.*?)',
            4 => '7\\.5\\.(.*?)\\.(.*?)',
            5 => '7\\.6\\.(.*?)\\.(.*?)'
        ),
    ),
    'name' => 'Textfield to Dropdown',
    'description' => 'Converting Billing Country textfield to Dropdown Field',
    'author' => 'myname',
    'icon' => '',
    'is_uninstallable' => true,
    'published_date' => '2015-01-09 19:00:00',
    'type' => 'module',
    'version' => '1.0',
);

$dictionary['Account']['fields']['billing_address_country']['type'] = 'enum';
$dictionary['Account']['fields']['billing_address_country']['ext1'] = 'countries_dom';

The module loads fine but there's no change after a Quick Repair. I have tried with the following variables, as well:

$dictionary['Account']['fields']['billing_address_country']['isDropDown']=yes;

and...

$dictionary['Account']['fields']['billing_address_country']['Options']='countries_dom';

Can anyone tell me what I am doing wrong? I'd appreciate any help or guidance you have. Please advise.

Cheers, H

P.S. I am using SugarCRM On-Demand Version 7.6.1

1条回答
ら.Afraid
2楼-- · 2020-07-20 05:22

You need to create the manifest.php file and have that point to the file(s) you want to copy/upload for customization:

manifest.php:

<?php

$manifest = array(
    'built_in_version' => '7.6.1.0',
    'acceptable_sugar_versions' =>
        array(
            0 => '',
        ),
    'acceptable_sugar_flavors' =>
        array(
            0 => 'PRO',
            1 => 'CORP',
            2 => 'ENT',
            3 => 'ULT',
        ),
    'readme' => '',
    'key' => 'SO',
    'author' => 'Eric',
    'description' => 'Convert Accounts Billing Country TextField to Enum',
    'icon' => '',
    'is_uninstallable' => true,
    'name' => 'TextFieldToDropdownPkg',
    'published_date' => '2016-01-10 03:01:01',
    'type' => 'module',
    'version' => 1452378413,
    'remove_tables' => 'prompt',
);

$installdefs = array(
    'id' => 'TextFieldToDropdownPkg',
    'copy' => array(
        0 => array(
            'from' => '<basepath>/custom/Extension/modules/Accounts/Ext/Vardefs/custom_billing_address_country.php',
            'to' => 'custom/Extension/modules/Accounts/Ext/Vardefs/custom_billing_address_country.php',
        ),
    ),
);

Then create:

custom/Extension/modules/Accounts/Ext/Vardefs/custom_billing_address_country.php

<?php

$dictionary['Account']['fields']['billing_address_country']['comments']='Country for primary address';
$dictionary['Account']['fields']['billing_address_country']['group']='primary_address';
$dictionary['Account']['fields']['billing_address_country']['options']='countries_dom';
$dictionary['Account']['fields']['billing_address_country']['type']='enum';

ZIP those files up and use Module Loader.

查看更多
登录 后发表回答