#################
2.2 release notes
#################

*****************
What's new in 2.2
*****************

``django-mptt`` now a proper dependency
=======================================

`django-mptt`_ is now used as a
proper dependency and is no longer shipped with the django CMS. This solves the
version conflict issues many people were experiencing when trying to use the django CMS
together with other Django apps that require django-mptt. django CMS 2.2
requires django-mptt 0.5.1.

.. warning::

    Please remove the old ``mptt`` package from your Python site-packages
    directory before upgrading. The ``setup.py`` file will install the
    `django-mptt`_ package as an external dependency!

.. _django-mptt: https://github.com/django-mptt/django-mptt/


Django 1.3 support
==================

The django CMS 2.2 supports both Django 1.2.5 and Django 1.3.


View permissions
================

You can now give view permissions for django CMS pages to groups and users.

.. _backwards-incompatible-changes:

******************************
Backwards incompatible changes
******************************

``django-sekizai`` instead of PluginMedia
=========================================

Due to the sorry state of the old plugin media framework, it has been dropped in
favour of the more stable and more flexible django-sekizai, which is a new
dependency for the django CMS 2.2.

The following methods and properties of :class:`cms.plugin_base.CMSPluginBase`
are affected:

* ``cms.plugins_base.CMSPluginBase.PluginMedia``
* ``cms.plugins_base.CMSPluginBase.pluginmedia``
* ``cms.plugins_base.CMSPluginBase.get_plugin_media``

Accessing those attributes or methods will raise a
``cms.exceptions.Deprecated`` error.

The ``cms.middleware.media.PlaceholderMediaMiddleware`` middleware was also
removed in this process and is therefore no longer required. However you are now
required to have the ``sekizai.context_processors.sekizai`` context processor
in your ``TEMPLATE_CONTEXT_PROCESSORS`` setting.

All templates in :setting:`CMS_TEMPLATES` must at least contain the ``js`` and
``css`` sekizai namespaces.

Please refer to the documentation on :ref:`custom-plugins-handling-media` in
custom CMS plugins and the
`django-sekizai documentation <https://django-sekizai.readthedocs.io/>`_ for
more information.


Toolbar must be enabled explicitly in templates
===============================================

The toolbar no longer hacks itself into responses in the middleware, but rather
has to be enabled explicitly using the ``{% cms_toolbar %}`` template tag from
the ``cms_tags`` template tag library in your templates. The template tag
should be placed somewhere within the body of the HTML (within ``<body>...</body>``).

This solves issues people were having with the toolbar showing up in places it
shouldn't have.


Static files moved to /static/
==============================

The static files (CSS/JavaScript/images) were moved from ``/media/`` to
``/static/`` to work with the new ``django.contrib.staticfiles`` app in Django
1.3. This means you will have to make sure you serve static files as well as
media files on your server.

.. warning::

    If you use Django 1.2.x you will not have a ``django.contrib.staticfiles``
    app. Instead you need the `django-staticfiles`_ backport.


**************************
Features deprecated in 2.2
**************************

``django-dbgettext`` support
============================

The django-dbgettext support has been fully dropped in 2.2 in favour of the
built-in multi-lingual support mechanisms.


.. _django-staticfiles: https://pypi.python.org/pypi/django-staticfiles/
