Programatically manage Dropdown List

Document created by Bal Hana Kim do Amaral Oliveira on Jul 12, 2016Last modified by Bal Hana Kim do Amaral Oliveira on Jul 12, 2016
Version 2Show Document
  • View in full screen mode

Custom API developed in order to change/add/delete key's from a dropdownList

 

This API have 2 ways to be called, that works for 3 different means:

  • Add a new Key from a DropDown
    • rest/v10/DropdownListKey/add
  • Edit an existing Key from a DropDown
    • rest/v10/DropdownListKey/add
  • Remove an existing Key from a DropDown
    • rest/v10/DropdownListKey/delete

 

In order to work we need to call a POST for the desired endPoint with the configuration body:

{
"list_name":"<LIST_NAME>",
"item_key":"<KEY_DROPDOWN>",
"item_value":"<KEY_VALUE>",
"lang":"<LANG>"
}

 

API code:

custom/clients/base/api/DropDownFiller.php

<?php

if (!defined('sugarEntry') || !sugarEntry)
    die('Not A Valid Entry Point');

class DropDownFiller extends SugarApi {
    public function registerApiRest() {
         
        $dropDownApi = array(
            'dropdownListAddKey' => array(
                'reqType' => 'POST',
                'path' => array('DropdownListKey','add'),
                'pathVars' => array('',''),
                'method' => 'addDropDownKeyValue',
                'shortHelp' => 'create a new item to an specific list',
                'longHelp' => 'custom/clients/base/api/help/MyEndPoint_MyGetEndPoint_help.html',
            ),
            'dropdownListRemoveKey' => array(
                'reqType' => 'POST',
                'path' => array('DropdownListKey','delete'),
                'pathVars' => array('', ''),
                'method' => 'removeDropDownKeyValue',
                'shortHelp' => 'Remove a key from an specific list',
                'longHelp' => 'custom/clients/base/api/help/MyEndPoint_MyGetEndPoint_help.html',
            ),
        );

        return $dropDownApi;
    }

    /**
     * Method to be used for rest/v10/DropdownListKey/add endpoint
     */
    public function addDropDownKeyValue($api, $args) {
         
        require_once('include/utils.php');
        require_once('modules/ModuleBuilder/MB/ModuleBuilder.php');
        require_once('modules/ModuleBuilder/parsers/parser.dropdown.php');
         
        $list_name = $args['list_name'];
        $item_key = $args['item_key'];
        $item_value = $args['item_value'];
        $lang = $args['lang'];
         
        $displayValue = translate($list_name, '', $item_key);
         
        if(!isset($displayValue)){
            return "DropdownList not found";
        }
        else if( is_array($displayValue) ){
            $parser = new ParserDropDown();
            $params = array();
            $_REQUEST['view_package'] = 'studio';
            $params['view_package'] = 'studio';
            $params['dropdown_name'] = $list_name;
            $params['dropdown_lang'] = $lang;
            $_REQUEST['dropdown_lang'] = $lang;
             
            $displayValue[$item_key] = $item_value;
             
            foreach ($displayValue as $k=>$v) {
                $drop_list[] = array($k,$v);
            }
             
            $json = getJSONobj();
            $params['list_value'] = $json->encode($drop_list);
            $parser->saveDropDown($params);
             
            return "Key/value added";
        }
        else{
            $displayValue = translate($list_name);
             
            $parser = new ParserDropDown();
            $params = array();
            $_REQUEST['view_package'] = 'studio';
            $params['view_package'] = 'studio';
            $params['dropdown_name'] = $list_name;
            $params['dropdown_lang'] = $lang;
            $_REQUEST['dropdown_lang'] = $lang;
             
            $displayValue[$item_key] = $item_value;
             
            foreach ($displayValue as $k=>$v) {
                $drop_list[] = array($k,$v);
            }
             
            $json = getJSONobj();
            $params['list_value'] = $json->encode($drop_list);
            $parser->saveDropDown($params);
             
            return "Key/value changed";
        }
    }
     
    /**
     * Method to be used for rest/v10/DropdownListKey/delete endpoint
     */
    public function removeDropDownKeyValue($api, $args) {
         
        require_once('include/utils.php');
        require_once('modules/ModuleBuilder/MB/ModuleBuilder.php');
        require_once('modules/ModuleBuilder/parsers/parser.dropdown.php');
         
        $list_name = $args['list_name'];
        $item_key = $args['item_key'];
        $lang = $args['lang'];
         
        $displayValue = translate($list_name, '', $item_key);
         
        if(!isset($displayValue)){
            return "DropdownList not found";
        }
        else if( is_array($displayValue) ){
            return "Key not found";
        }
        else{
            $parser = new ParserDropDown();
            $params = array();
            $_REQUEST['view_package'] = 'studio';
            $params['view_package'] = 'studio';
            $params['dropdown_name'] = $list_name;
            $params['dropdown_lang'] = $lang;
            $_REQUEST['dropdown_lang'] = $lang;
             
            $displayValue = translate($list_name);
             
            unset($displayValue[$item_key]);
             
            foreach ($displayValue as $k=>$v) {
                $drop_list[] = array($k,$v);
            }
             
            $json = getJSONobj();
            $params['list_value'] = $json->encode($drop_list);
            $parser->saveDropDown($params);
             
            return "Key removed";
        }
    }
}
?>
1 person found this helpful

Attachments

    Outcomes