v5.0.0 release notes
====================

Note: 5.0.0 is identical to the 5.0.0b1 beta released a few weeks prior. Support for Wagtail's new block previews will be coming in a later release due to time needed to update the hundreds of Bootstrap blocks CRX provides.

New features
------------

* Support Wagtail 6.4.

* Support Python 3.9 to 3.13.

* NEW: SEO preview on each page. Read more on our blog post `SEO Previews in Wagtail <https://www.coderedcorp.com/blog/seo-previews-in-wagtail/>`_.

* NEW: spam protection with Google reCAPTCHA v2 and v3 on forms. See: :doc:`/features/spam-protection`


Maintenance
-----------

* ``wagtail_flexible_forms`` module has been split out into its own package. No action is required. See `wagtail-flexible-forms <https://docs.coderedcorp.com/wagtail-flexible-forms/>`_.

* Large cleanup of deprecated code. See upgrade considerations below.


Upgrade considerations
----------------------

In addition to the changes below, be sure to read the `Wagtail 6.4 upgrade considerations <https://docs.wagtail.org/en/stable/releases/6.4.html#upgrade-considerations-changes-affecting-all-projects>`_.


SEO fields have moved
~~~~~~~~~~~~~~~~~~~~~

Structured data about the organization was previously available on every page (under the **SEO** tab in the page editor). Now, organization data has been moved into the site settings under **Settings > SEO**.

For most sites, no action is required, as the organization data is automatically copied from each site's Home Page to these settings.

However, if you were previously using custom organization data on many separate pages, you'll need to follow the `wagtail-seo 3 upgrade instructions <https://docs.coderedcorp.com/wagtail-seo/getting-started/migration-3.html>`_


Form template has changed
~~~~~~~~~~~~~~~~~~~~~~~~~

If you have any custom form page templates, they will need updated. Form page template and miniview templates have changed to support new reCAPTCHA fields.

* Form ID changed to: ``<form id={{ page.get_form_id }}>``.
* Removed ``{% block captcha %}`` and ``form_honeypot.html``.
* Replace submit button with ``{% include "coderedcms/includes/form_button.html" %}``.

See diff below:

.. code-block:: diff

    {{ block.super }}
    {% if page.form_live %}
    <div class="container my-5">
   -  <form class="{{ page.form_css_class }}" id="{{ page.form_id }}" action="{% pageurl self %}" method="POST" {% if form|is_file_form %}enctype="multipart/form-data"{% endif %}>
   +  <form class="{{ page.form_css_class }}" id="{{ page.get_form_id }}" action="{% pageurl self %}" method="POST" {% if form|is_file_form %}enctype="multipart/form-data"{% endif %}>
        {% csrf_token %}
        {% bootstrap_form form layout="horizontal" %}
   -
   -    {% block captcha %}
   -    {% if page.spam_protection %}
   -    {% include "coderedcms/includes/form_honeypot.html" %}
   -    {% endif %}
   -    {% endblock %}
   -
        <div class="row">
          <div class="{{'horizontal_label_class'|bootstrap_settings}}"></div>
          <div class="{{'horizontal_field_class'|bootstrap_settings}}">
   -        <button type="submit" class="btn {{page.button_size}} {{page.button_style}} {{page.button_css_class}}">
   -          {{ page.button_text }}
   -        </button>
   +        {% include "coderedcms/includes/form_button.html" %}
          </div>
        </div>
      </form>


``show_*`` options removed from Pages and Blocks
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

For most sites, no action is required as these have been deprecated and replaced by miniview templates back in :doc:`version 2.1 <v2.1.0>`.

However, if you have any custom code using these deprecated fields or templates, replace them with custom miniview templates on relevant page models instead.

* ``PagePreviewBlock`` fields removed:

  * show_previews

* ``CoderedArticleIndexPage`` fields removed:

  * show_images

  * show_captions

  * show_meta

  * show_preview_text

* Template options (in block Advanced Settings) have been removed from ``PageListBlock`` and ``PagePreviewBlock``.

* If you have ``CRX_FRONTEND_TEMPLATES_BLOCKS`` in your Django settings, remove the ``pagelistblock`` and ``pagepreviewblock`` entries from that dictionary.

* Corresponding ``pagelist_*.html`` and ``pagepreview_*.html`` templates have been removed from the project.

Migrations
~~~~~~~~~~

After upgrading, be sure to generate and apply new migrations as so:

.. code-block:: console

   $ python manage.py makemigrations
   $ python manage.py migrate


Thank you!
----------

Thanks to everyone who contributed to `5.0.0 on GitHub <https://github.com/coderedcorp/coderedcms/milestone/54?closed=1>`_.
