Every save now forces a new revision, unconditionally: - Form: hide the "Create new revision" checkbox and the log message field (#access = FALSE, not just a default) so submitted values for either can't override them -- Form API discards user input for #access-denied elements and falls back to #default_value. - hook_node_presave(): the same thing enforced for any save that doesn't go through the form (drush scripts, etc.), plus explicitly setting the revision author (current user) and revision timestamp. setNewRevision(TRUE) alone does NOT refresh revision_timestamp -- it carries over the previous revision's value, which would silently mislabel every edit with its predecessor's save time. Verified via a drush test save before/after. - Applies regardless of figli_compta_ledger.skip_validation: that flag is about the répartition-sum check on historical imports, a different concern -- revision history is never exempted. New /lignes/historique page (HistoryController): a single reverse- chronological feed across every ligne_comptable's revisions, gated by the 'view ligne_comptable revisions' permission (granted to all three associate roles). Conceptually a revision of one ligne is a revision of the grand livre as a whole, so this aggregates across nodes rather than reusing Drupal's per-node revision history page. Each row links to that specific revision via core's existing revision-view route. Linked from the /lignes toolbar, shown only when the current user has the permission. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Drupal is an open source content management platform supporting a variety of websites ranging from personal weblogs to large community-driven websites. For more information, visit the Drupal website, Drupal.org, and join the Drupal community.
Contributing
Drupal is developed on Drupal.org, the home of the international Drupal community since 2001!
Drupal.org hosts Drupal's GitLab repository, its issue queue, and its documentation. Before you start working on code, be sure to search the issue queue and create an issue if your aren't able to find an existing issue.
Every issue on Drupal.org automatically creates a new community-accessible fork that you can contribute to. Learn more about the code contribution process on the Issue forks & merge requests page.
Usage
For a brief introduction, see USAGE.txt. You can also find guides, API references, and more by visiting Drupal's documentation page.
You can quickly extend Drupal's core feature set by installing any of its thousands of free and open source modules. With Drupal and its module ecosystem, you can often build most or all of what your project needs before writing a single line of code.
Changelog
Drupal keeps detailed change records. You can search Drupal's changes for a record of every notable breaking change and new feature since 2011.
Security
For a list of security announcements, see the Security advisories page (available as an RSS feed). This page also describes how to subscribe to these announcements via email.
For information about the Drupal security process, or to find out how to report a potential security issue to the Drupal security team, see the Security team page.
Need a helping hand?
Visit the Support page or browse over a thousand Drupal providers offering design, strategy, development, and hosting services.
Legal matters
Know your rights when using Drupal by reading Drupal core's license.
Learn about the Drupal trademark and logo policy here.