<?php
/**
 * EditableDateField
 *
 * Allows a user to add a date field.
 *
 * @package userforms
 */

class EditableDateField extends EditableFormField
{

    private static $singular_name = 'Date Field';

    private static $plural_name = 'Date Fields';

    private static $db = array(
        'DefaultToToday' => 'Boolean' // From customsettings
    );

    /**
     * @return FieldList
     */
    public function getCMSFields()
    {
        $this->beforeUpdateCMSFields(function (FieldList $fields) {
            $fields->addFieldToTab(
                'Root.Main',
                CheckboxField::create(
                    'DefaultToToday',
                    _t('EditableFormField.DEFAULTTOTODAY', 'Default to Today?')
                ),
                'RightTitle'
            );
        });

        return parent::getCMSFields();
    }

    /**
     * Return the form field
     *
     */
    public function getFormField()
    {
        $defaultValue = $this->DefaultToToday
            ? SS_Datetime::now()->Format('Y-m-d')
            : $this->Default;

        $field = EditableDateField_FormField::create($this->Name, $this->EscapedTitle, $defaultValue)
            ->setConfig('showcalendar', true)
            ->setFieldHolderTemplate('UserFormsField_holder')
            ->setTemplate('UserFormsField');

        $this->doUpdateFormField($field);

        return $field;
    }
}

/**
  * @package userforms
 */
class EditableDateField_FormField extends DateField
{

    public function Type()
    {
        return "date-alt text";
    }
}