Hello!!

I would like to configure profile module in a way that visitors to my website can put their date of birth. But since it is a private question, I want to make this field optional and not required.

So, I make sure that the "required" setting is checked off. But since it is not something like "--" by default, some date always shows up even if nothing was specified. So it is virtually a required field with false date inserted into it...

How can I make date field optional and maybe show only "--" or nothing at all?

Thank you all for your advice.

Comments

NNonexistent’s picture

Same problem.
I have one solution, but it's really bad: adding checkbox for enabling field.

In the "modules/profile.module" inside function profile_view_field() after

      case 'url':
        return '<a href="'. check_url($value) .'">'. check_plain($value) .'</a>';
      case 'date':

add this:

        if (!$user->{$field->name.'_enabled'} && !$field->required)
                return false;

Now it must be like this:

     case 'url':
        return '<a href="'. check_url($value) .'">'. check_plain($value) .'</a>';
      case 'date':
        if (!$user->{$field->name.'_enabled'} && !$field->required)
                return false;
        $format = substr(variable_get('date_format_short', 'm/d/Y - H:i'), 0, 5);

And inside function profile_form_profile() after

      case 'date':
        $fields[$category][$field->name] = array('#type' => 'date',
          '#title' => check_plain($field->title),
          '#default_value' => $edit[$field->name],
          '#description' => _profile_form_explanation($field),
          '#required' => $field->required,
        );

add this:

        if (!$field->required) {
                $fields[$category][$field->name.'_enabled'] = array('#type' => 'checkbox',
                  '#title' => t('Enable ').' "'.$field->title.'"',
                  '#default_value' => 0,
                  '#required' => 0);
        }

Result:

      case 'date':
        $fields[$category][$field->name] = array('#type' => 'date',
          '#title' => check_plain($field->title),
          '#default_value' => $edit[$field->name],
          '#description' => _profile_form_explanation($field),
          '#required' => $field->required,
        );

        if (!$field->required) {
                $fields[$category][$field->name.'_enabled'] = array('#type' => 'checkbox',
                  '#title' => t('Enable ').' "'.$field->title.'"',
                  '#default_value' => 0,
                  '#required' => 0);
        }
        break;
    }
  }

Looking for better solution.

dyp’s picture

I have custom user list layout by this snipet
http://drupal.org/node/44481
in user_profile.tpl.php place this code

<?php if ($user->birhday): ?>
<?php $usbirhday = mktime(0, 0, 0, $user->birhday['month'], $user->birhday['day'], $user->birhday['year']); ?>
<?php if ($usbirhday+100000 < $user->created): ?> //check if  user more than 1 day old
<li>birhday: <?php print date("j.m.Y", $usbirhday); ?></li>
<?php endif; ?>
<?php endif; ?>