1

I am new to Moodle and need some assistance creating (year only) date selector. In the code below I have a few entry fields.

If possible, I would like to customize the bottom 2 date selector fields to display only years for the user selection. My attempted workaround was to use the 'PARAM_INT'as a data type, which does not seem to be work. It also would not stop users from entering years such as 0000 or 1000. Thanks for your help in advance!

$mform->addElement('text', 'article_type', 'Article Type');
$mform->setType('article_type', PARAM_TEXT);

$mform->addElement('date_selector', 'print_article_date', 'Print Article Date');
$mform->setType('article_date', PARAM_INT);

$mform->addElement('date_selector', 'earliest_article_year', 'Earliest Article Year');
$mform->setType('earliest_publication_year', PARAM_INT);
Suhas Bachhav
  • 403
  • 1
  • 7
  • 28
D0uble0
  • 175
  • 1
  • 2
  • 12

1 Answers1

1

Do you need a date selector? Maybe use a drop down select for the years instead and store the year rather than a date.

$options = array_combine(range(1900,2018), range(1900,2018));
$mform->addElement('select', 'earliest_article_year', 'Earliest Article Year', $options);
$mform->setType('earliest_publication_year', PARAM_INT);

Incidentally, you should store strings in the language file.

If its a local plugin, this the language file would be /local/yourplugin/lang/en/local_yourplugin.php

Then have something like this in the language file:

$string['earliestyear'] = 'Earliest Article Year';

Then change your form code to:

$mform->addElement('select', 'earliest_article_year',
    get_string('earliestyear', 'local_yourplugin'), $options);
Russell England
  • 9,436
  • 1
  • 27
  • 41