AnsweredAssumed Answered

How to Add Values to the Date Type Field Default Value Dropdown

Question asked by John Boyes on May 14, 2018

I have a client that wants a date field to default to 60 days from today.

 

The current default list in Studio lists: yesterday, today, tomorrow, next week, next monday, next friday, two weeks, next month, first day of next month, three months, six months, next year

 

I found the TemplateDate class in modules/DynamicFields/templates/Fields/TemplateDate.php file which contains

 

function __construct() {
     parent::__construct();
     global $app_strings;
     $this->dateStrings = array(
         $app_strings['LBL_NONE']=>'',
            $app_strings['LBL_YESTERDAY']=> '-1 day',
            $app_strings['LBL_TODAY']=>'now',
            $app_strings['LBL_TOMORROW']=>'+1 day',
            $app_strings['LBL_NEXT_WEEK']=> '+1 week',
            $app_strings['LBL_NEXT_MONDAY']=>'next monday',
            $app_strings['LBL_NEXT_FRIDAY']=>'next friday',
            $app_strings['LBL_TWO_WEEKS']=> '+2 weeks',
            $app_strings['LBL_NEXT_MONTH']=> '+1 month',
            $app_strings['LBL_FIRST_DAY_OF_NEXT_MONTH']=> 'first day of next month',
            $app_strings['LBL_THREE_MONTHS']=> '+3 months',  //kbrill Bug #17023
            $app_strings['LBL_SIXMONTHS']=> '+6 months',
            $app_strings['LBL_NEXT_YEAR']=> '+1 year',
        );
}

 

If I add

            '60 Days' => '+60 days',

to that list, it shows in Studio however this is not upgrade safe.

 

So, I created

 

custom/modules/DynamicFields/templates/Fields/CustomTemplateDate.php

class CustomTemplateDate extends TemplateDate
{

function __construct() {
     parent::__construct();

     $this->dateStrings["60 Days"] = '+60 days';

}

}

 

custom/modules/DynamicFields/templates/Fields/Forms/date.php

include /custom/modules/DynamicFields/templates/Fields/CustomTemplateDate.php


function get_body(&$ss, $vardef){
     $td = new CustomTemplateDate();
     $ss->assign('default_values', array_flip($td->dateStrings));
     return $ss->fetch('modules/DynamicFields/templates/Fields/Forms/date.tpl');
}

 

and custom/include/SugarSmarty/plugins/modifier.default_date_value.php

include /custom/modules/DynamicFields/templates/Fields/CustomTemplateDate.php

function smarty_modifier_default_date_value($defaultValue) {
     global $timedate;
     $td = new CustomTemplateDate();
     return $timedate->asUser(new SugarDateTime($td->dateStrings[$defaultValue]));
}

 

 

However, when I run a Quick Repair and Rebuild, neither the date.php nor the modifier.default_date_value.php files get replaced by their custom versions and Sugar keeps calling the stock files.

 

What did I do wrong or forget to do?

Outcomes