Follow-up to #2150511: [meta] Deduplicate the set of available field types

Updated: Comment #25

Problem/Motivation

- Core's 'timestamp' / 'created' / 'changed' field types, storing UNIX timestamps
Currently not available in Field UI's "add new field", thus intended for base fields only
- datetime.module's 'datetime' (UI label "Date"), storing ISO 8601 date strings with optional times (and timezones ?)
The only "date" field available for custom fields for site admins.

It does looks like we need two separate field types for UNIX timestamps and ISO 8601 dates.

I don't see why we have the 'created' and 'changed' field types though. They basically are just TimestampItem with :
- for 'changed': a preSave() method that assigns REQUEST_TIME -> This seems like it should be the job of the entity type to assign this behavior to one of its timestamp fields if it sees fit in its own preSave(), why would that deserve a dedicated field type ?
- for 'created': a specific default value of REQUEST_TIME. Looks like there should be a way to specify this in the BaseFieldDefinition of a timestamp field ? Maybe #2318605: uuid, created, changed, language default value implementations need to be updated should allow that ?

I think a the changed field type is great to have, as it encapsulates the preSave() logic into the field class instead of having it flying around in X entity type classes wherever it's being used. I do think it's a great to have that logic re-usable and self-contained in the field type class and I don't think there is a problem in having such a non-UI field type?
I agree though that the naming isn't ideal, e.g. "date_changed" would sound already more logical our timestamp_changed to stress it's a timestamp.

@created, yeah when we add support for NOW as default value I agree that the field type is unneeded.

Proposed resolution

Move datetime modules' fields code into \Drupal\Core\Field\Plugin\Field.

Remaining tasks

figure out what to do with datetime_node_prepare_form()

User interface changes

tbd

API changes

removal of datetime_date_default_time()
conversion of DATETIME_* constants

Comments

andypost’s picture

andypost’s picture

Issue summary: View changes
andyceo’s picture

Status: Postponed » Active

Think it's time to go on :)

cilefen’s picture

Issue tags: +Needs beta evaluation

This needs a beta evaluation if it is still a beta target.

mpdonadio’s picture

Status: Active » Postponed

I'm trying to triage the datetime.module issues now, and create a meta issue to track work that needs to be done on this. I think it may be best to postpone this until we figure that out. Parts of it are a mess. I think it would be best to get datetime.module in better shape first, and then refactor it to live with the rest of the core fields. I also think #2489476: [PP-1] Base fields miss out on Views data from hook_field_views_data() needs to be worked out first, so it will play nicely with Views.

mgifford’s picture

xjm’s picture

Version: 8.0.x-dev » 8.2.x-dev
Issue tags: -beta target, -Needs beta evaluation

This issue was marked as a beta target for the 8.0.x beta, but is not applicable as an 8.1.x beta target, so untagging.

This could potentially be implemented in a minor with BC, so moving to 8.2.x.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.0-beta1 was released on August 3, 2016, which means new developments and disruptive changes should now be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.0-alpha1 will be released the week of January 30, 2017, which means new developments and disruptive changes should now be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.0-alpha1 will be released the week of July 31, 2017, which means new developments and disruptive changes should now be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.0-alpha1 will be released the week of January 17, 2018, which means new developments and disruptive changes should now be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.7.x-dev

Drupal 8.6.0-alpha1 will be released the week of July 16, 2018, which means new developments and disruptive changes should now be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.7.x-dev » 8.8.x-dev

Drupal 8.7.0-alpha1 will be released the week of March 11, 2019, which means new developments and disruptive changes should now be targeted against the 8.8.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.1.x-dev

Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 9.1.x-dev » 9.2.x-dev

Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.0-rc1 was released on November 26, 2021, which means new developments and disruptive changes should now be targeted for the 9.4.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.0-alpha1 was released on May 6, 2022, which means new developments and disruptive changes should now be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 10.1.x-dev

Drupal 9.5.0-beta2 and Drupal 10.0.0-beta2 were released on September 29, 2022, which means new developments and disruptive changes should now be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 10.1.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch, which currently accepts only minor-version allowed changes. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

smustgrave’s picture

Status: Postponed » Postponed (maintainer needs more info)
Issue tags: +stale-issue-cleanup

Thank you for creating this issue to improve Drupal.

We are working to decide if this task is still relevant to a currently supported version of Drupal. There hasn't been any discussion here for over 8 years which suggests that this has either been implemented or is no longer relevant. Your thoughts on this will allow a decision to be made.

Since we need more information to move forward with this issue, the status is now Postponed (maintainer needs more info). If we don't receive additional information to help with the issue, it may be closed after three months.

Thanks!

smustgrave’s picture

Wanted to bump this one more time if still something we want to do?

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.