Modifying the duration control drop down in the Infor CRM (formerly Saleslogix) activity area

Infor CRM (formerly Saleslogix) has decided in their wisdom to hard code the duration control with some random elements.  Changing this random list is way harder than it needs to be, but lets look at what it takes.

First we need to add a new javascript file extending the DurationSelect control.  We will call this CustomControlsModule.js

define(‘CFX/CustomControlsModule’, [
‘dojo/_base/declare’,
‘dojo/ready’,
‘dojo/aspect’,
‘dojo/_base/lang’,
‘Sage/UI/Controls/DurationSelect’
],

    function (
        declare,
        ready,
        aspect,
        lang,
        DurationSelect
    ) {
        var customControlsModule = declare(‘CFX.CustomControlsModule’, null, {
            initailize: function () {
                var arr = getPicklistItems(‘Activity Duration’);               
                lang.extend(Sage.UI.Controls.DurationSelect, {
                    timeIncrements: arr //[0, 5, 10, 15, 30, 60, 120, 240, 480, 960, 1]
                });
            }
        });

        function getPicklistItems(
        picklistName
     ) {
            var service = Sage.Data.SDataServiceRegistry.getSDataService(‘system’);
            var request = new Sage.SData.Client.SDataResourceCollectionRequest(service)
            //var items = new Array();
            var items = [];
            request.setResourceKind(‘picklists’);
            request.setQueryArg(“where”, “name eq ‘” + picklistName + “‘”);
            request.setQueryArg(“include”, “items”);
            request.read({
                success: function (feed) {
                    for (var i = 0; i < feed.$resources.length; i++) {
                        var entry = feed.$resources[i];                       
                        for (var i2 = 0; i2 < entry.items.$resources.length; i2++) {
                            var item = entry.items.$resources[i2];                           
                            items.push(item.text);
                        }
                    }

                    return items;
                },
                failure: function (feed) { }
            });           
            return items;
        }

        return customControlsModule;

    });

 Next we need to add a main,js file that will inject our custom control into the standard pages:

define([                     


‘CFX/CustomControlsModule’,

],

function(CustomControlsModule) {

var customControlsModule = new CustomControlsModule();

customControlsModule.initailize();


  });

 Finally we have to add our custom main,js to get loaded into the base.master and dashboard.master files.

ABOUT THE AUTHOR

Kris Halsrud

Kris Halsrud is a Senior Analyst / Developer for Customer FX Corporation.

Submit a Comment

Your email address will not be published. Required fields are marked *

Subscribe To Our Newsletter

Join our mailing list to receive the latest Infor CRM (Saleslogix) and Creatio (bpm'online) news and product updates!

You have Successfully Subscribed!