1========= 2Changelog 3========= 4 5 63.7.1 (2019-11-26) 7================== 8 9* Added code of conduct reference file to the root directory 10* Moved contributing file to the root directory 11* Added better templates for new issue requests 12* Fixed a bug where creating a page via the ``cms.api.create_page`` ignores 13 left/right positions. 14* Fixed documentation example for ``urls.py`` when using multiple languages. 15* Mark public static placeholder dirty when published. 16* Fixed a bug where ``request.current_page`` would always be the public page, 17 regardless of the toolbar status (draft / live). This only affected custom 18 urls from an apphook. 19* Fixed a bug where the menu would render draft pages even if the page on 20 the request was a public page. This happens when a user without change 21 permissions requests edit mode. 22* Fixed the 'urls.W001' warning with custom apphook urls 23* Prevent non-staff users to login with the django CMS toolbar 24* Added missing ``{% trans %}`` to toolbar shortcuts. 25* Fixed branch and release policy. 26* Improved and simplified permissions documentation. 27* Improved apphooks documentation. 28* Improved CMSPluginBase documentation. 29* Improved documentation related to nested plugins. 30* Updated installation tutorial. 31* Fixed a simple typo in the docstring for ``cms.utils.helpers.normalize_name``. 32 33 343.7.0 (2019-09-25) 35================== 36 37* Introduced Django 2.2 support. 38* Introduced Python 3.7 support. 39* Fixed test suite. 40* Fixed override ``urlconf_module`` so that Django system checks don't crash. 41 42 433.6.0 (2019-01-29) 44================== 45 46* Removed the ``cms moderator`` command. 47* Dropped Django < 1.11 support. 48* Removed the translatable content get / set methods from ``CMSPlugin`` model. 49* Removed signal handlers for ``Page``, ``Title``, ``Placeholder`` and ``CMSPlugin`` models. 50* Moved ``Title.meta_description`` length restriction from model to form 51 and increased its max length to 320 characters. 52* Added ``page_title`` parameter for ``cms.api.create_page()`` and ``cms.api.create_title()``. 53* Introduced Django 2.0 support. 54* Introduced Django 2.1 support. 55 56 573.5.3 (2018-11-20) 58================== 59 60* Fixed ``TreeNode.DoesNotExist`` exception raised when exporting 61 and loading database contents via ``dumpdata`` and ``loaddata``. 62* Fixed a bug where ``request.current_page`` would always be the public page, 63 regardless of the toolbar status (draft / live). This only affected custom 64 urls from an apphook. 65* Removed extra quotation mark from the sideframe button template 66* Fixed a bug where structureboard tried to preload markup when using legacy 67 renderer 68* Fixed a bug where updates on other tab are not correctly propagated if the 69 operation was to move a plugin in the top level of same placeholder 70* Fixed a bug where xframe options were processed by clickjacking middleware 71 when page was served from cache, rather then get this value from cache 72* Fixed a bug where cached page permissions overrides global permissions 73* Fixed a bug where plugins that are not rendered in content wouldn't be 74 editable in structure board 75* Fixed a bug with expanding static placeholder by clicking on "Expand All" button 76* Fixed a bug where descendant pages with a custom url would lose the overwritten 77 url on save. 78* Fixed a bug where setting the ``on_delete`` option on ``PlaceholderField`` 79 and ``PageField`` fields would be ignored. 80* Fixed a bug when deleting a modal from changelist inside a modal 81 82 833.5.2 (2018-04-11) 84================== 85 86* Fixed a bug where shortcuts menu entry would stop working after toolbar reload 87* Fixed a race condition in frontend code that could lead to sideframe being 88 opened with blank page 89* Fixed a bug where the direct children of the homepage would get a leading ``/`` 90 character when the homepage was moved or published. 91* Fixed a bug where non-staff user would be able to open empty structure board 92* Fixed a bug where a static file from Django admin was referenced that no 93 longer existed in Django 1.9 and up. 94* Fixed a bug where the migration 0018 would fail under certain databases. 95 96 973.5.1 (2018-03-05) 98================== 99 100* Fixed a bug where editing pages with primary keys greater than 999 would throw an 101 exception. 102* Fixed a ``MultipleObjectsReturned`` exception raised on the page types migration 103 with multiple page types per site. 104* Fixed a bug which prevented toolbar js from working correctly when rendered 105 before toolbar. 106* Fixed a bug where CMS would incorrectly highlight plugin content when plugin 107 contains invisible elements 108* Fixed a regression where templates which inherit from a template using an ``{% extends %}`` 109 tag with a default would raise an exception. 110 111 1123.5.0 (2018-01-31) 113================== 114 115* Fixed a bug which prevented users from seeing the welcome screen when debug is 116 turned off. 117* Introduced improved repr for ``Page``, ``Title``, ``Placeholder`` and ``CMSPlugin`` models. 118* Rename publish buttons to no longer reference "page" 119* Page rendering will now use the draft page instead of public page for logged in 120 users with change permissions, unless the ``preview`` GET parameter is used. 121* Fixed "Expand all / Collapse all" not reflecting real state of the placeholder tree 122* Fixed a bug where Aliased plugins would render if their host page was unpublished (and user was not on edit mode). 123* Fixed a bug where focusing inputs in modal would require 2 clicks in some browsers 124* Changed the language chooser to always show all configured languages to staff members 125 and public-only languages to anon users. 126* Introduced logic to copy pages to different sites from the admin. 127* Removed "View on Site" button when adding a page 128* Welcome page no longer uses multilingual URLs when not required. 129* Prevent users from passing a public page as parent in ``create_page`` api function 130 131 1323.4.5 (2017-10-12) 133================== 134 135* Introduced Django 1.11 compatibility 136* Fixed a bug where slug wouldn't be generated in the creation wizard 137* Fixed a bug where the add page endpoint rendered ``Change page`` as the html title. 138* Fixed an issue where non-staff users could request the wizard create endpoint. 139* Fixed an issue where the ``Edit page`` toolbar button wouldn't show on non-cms pages 140 with placeholders. 141* Fixed a bug where placeholder inheritance wouldn't work if the inherited placeholder 142 is cached in an ancestor page. 143* Fixed a regression where the code following a ``{% placeholder x or %}`` declaration, 144 was rendered before attempting to inherit content from parent pages. 145* Changed page/placeholder cache keys to use sha1 hash instead of md5 to be FIPS compliant. 146* Fixed a bug where the change of a slug would not propagate to all descendant pages 147* Fixed a ``ValueError`` raised when using ``ManifestStaticFilesStorage`` or similar for static files. 148 This only affects Django >= 1.10 149 150 1513.4.4 (2017-06-15) 152================== 153 154* Fixed a bug in which cancelling the publishing dialog wasn't respected. 155* Fixed a bug causing post-login redirection to an incorrect URL on single-language sites. 156* Changed the signature for internal ``cms.plugin_base.CMSPluginBase`` methods ``get_child_classes`` 157 and ``get_parent_classes`` to take an optional ``instance`` parameter. 158* Fixed an error when retrieving placeholder label from configuration. 159* Fixed a bug which caused certain translations to display double-escaped text in the page 160 list admin view. 161* Adjusted the toolbar JavaScript template to escape values coming from the request. 162* Added Dropdown class to toolbar items 163* Replaced all custom markup on the ``admin/cms/page/includes/fieldset.html`` template 164 with an ``{% include %}`` call to Django's built-in ``fieldset.html`` template. 165* Fixed a bug which prevented a page from being marked as dirty when a placeholder was cleared. 166* Fixed an IntegrityError raised when publishing a page with no public version and whose publisher 167 state was pending. 168* Fixed an issue with JavaScript not being able to determine correct path to the async bundle 169* Fixed a ``DoesNotExist`` database error raised when moving a page marked as published, but whose public 170 translation did not exist. 171* Fixed a bug in which the menu rendered nodes using the site session variable (set in the admin), 172 instead of the current request site. 173* Fixed a race condition bug in which the database cache keys were deleted without syncing with the 174 cache server, and as a result old menu items would continue to be displayed. 175* Fixed a 404 raised when using the ``Delete`` button for a Page or Title extension on Django >= 1.9 176* Added "How to serve multiple languages" section to documentation 177* Fixed a performance issue with nested pages when using the ``inherit`` flag on the ``{% placeholder %}`` tag. 178* Removed the internal ``reset_to_public`` page method in favour of the ``revert_to_live`` method. 179* Fixed a bug in which the placeholder cache was not consistently cleared when a page was published. 180* Enhanced the plugin menu to not show plugins the user does not have permission to add. 181* Fixed a regression which prevented users from setting a redirect to the homepage. 182 183 1843.4.3 (2017-04-24) 185================== 186 187* Fixed a security vulnerability in the page redirect field which allowed users 188 to insert JavaScript code. 189* Fixed a security vulnerability where the ``next`` parameter for the toolbar login 190 was not sanitised and could point to another domain. 191 192 1933.4.2 (2017-01-23) 194================== 195 196* Escaped strings in ``close_frame`` JS template. 197* Fixed a bug with `text-transform` styles on inputs affecting CMS login 198* Fixed a typo in the confirmation message for copying plugins from a different 199 language 200* Fixed a bug which prevented certain migrations from running in a multi-db setup. 201* Fixed a regression which prevented the ``Page`` model from rendering correctly 202 when used in a ``raw_id_field``. 203* Fixed a regression which caused the CMS to cache the toolbar when ``CMS_PAGE_CACHE`` 204 was set to ``True`` and an anonymous user had ``cms_edit`` set to ``True`` on their session. 205* Fixed a regression which prevented users from overriding content in an inherited 206 placeholder. 207* Added official support for Django 1.10. 208* Fixed a bug affecting Firefox for Macintosh users, in which use of the Command key later followed by Return would 209 trigger a plugin save. 210* Fixed a bug where template inheritance setting creates spurious migration (see #3479) 211* Fixed a bug which prevented the page from being marked as dirty (pending changes) 212 when changing the value of the overwrite url field. 213* Adjusted Ajax calls triggered when performing a placeholder operation (add plugin, etc..) to include 214 a GET query called cms_path. This query points to the path where the operation originates from. 215* Added a deprecation warning to method ``render_plugin()`` in class ``CMSPlugin``. 216* Since ``get_parent_classes()`` became a classmethod, do not instantiate plugin before invocation. 217* Fixed a bug where the page tree would not update correctly when a sibling page was moved 218 from left to right or right to left. 219* Improved the ``fix-tree`` command so that it also fixes non-root nodes (pages). 220* Removed the deprecated ``add_url()``, ``edit_url()``, ``move_url()``, ``delete_url()``, ``copy_url()`` properties of 221 CMSPlugin model. 222* Deprecated ``frontend_edit_template`` attribute of ``CMSPluginBase``. 223* Introduced placeholder operation signals. 224* The ``post_`` methods in ```PlaceholderAdminMixin`` have been deprecated in favor of 225 placeholder operation signals. 226* Re-introduced the "Revert to live" menu option. 227* Added support for django-reversion >= 2 (see #5830) 228* Rewrote manual installation how-to documentation 229 230 2313.4.1 (2016-10-04) 232================== 233 234* Fixed a regression when static placeholder was uneditable if it was present 235 on the page multiple times 236* Removed globally unique constraint for Apphook configs. 237* Fixed a bug when keyboard shortcuts were triggered when form fields were 238 focused 239* Fixed a bug when ``shift + space`` shortcut wouldn't correctly highlight a 240 plugin in the structure board 241* Fixed a bug when plugins that have top-level svg element would break 242 structure board 243* Fixed a bug where output from the ``show_admin_menu_for_pages`` template tag 244 was escaped in Django 1.9 245* Fixed a bug where plugins would be rendered as editable if toolbar was shown 246 but user was not in edit mode. 247* Fixed css reset issue with shortcuts modal 248 249 2503.4.0 (2016-09-14) 251================== 252 253* Changed the way CMS plugins are rendered. The div with `cms-plugin` class is 254 no longer rendered around every CMS plugin, instead a combination of `template` 255 tags and JavaScript is used to add event handlers and plugin data directly to 256 the plugin markup. This fixes most of the rendering issues that were present 257 because of the extra markup. 258* Changed cache-busting implementation, it is now handled by a path change, 259 not by GET parameter. 260* Added a possibility to copy pages in the Page Tree by drag'n'drop. 261* Make it possible to use multi-table inheritance for Page/Title extensions. 262* Refactored plugin rendering functionality to speed up loading time in both 263 structure and content mode. 264* Added ``Shift + Space`` shortcut that behaves similar to ``Space`` shortcut 265 but takes into account currently hovered plugin. 266* Improved keyboard navigation 267* Added help modal about available shortcuts 268* Added fuzzy matching to plugin picker 269* Changed the ``downcast_plugins`` utility to return a generator instead of a list 270* Fixed a bug that caused an aliased placeholder to show in structure mode. 271* Fixed a bug which prevented aliased content from showing correctly without 272 publishing the page first. 273* Added help text to an ``Alias`` plugin change form when attached to a page 274 to show the content editor where the content is aliased from. 275* Removed revision support from djangoCMS core. 276 As a result both ``CMS_MAX_PAGE_HISTORY_REVERSIONS`` and ``CMS_MAX_PAGE_PUBLISH_REVERSIONS`` 277 settings are no longer supported, as well as the ``with_revision`` parameter 278 in ``cms.api.create_page`` and ``cms.api.create_title``. 279 280 2813.3.3 (unreleased) 282================== 283 284* Fixed a bug where where the plugin picker would display the plugin names 285 translated in the request language instead of the user's language. 286* Fixed a bug which raised an exception when the ``AdvancedSettingsForm`` 287 failed validation on certain fields. 288* Fixed a bug with widgets not initialising correctly sometimes 289* Fixed a tree corruption when moving a published page under a published one. 290* Fixed a tree corruption caused by ``fix-tree`` when an unpublished page is parent 291 to a published page. 292* Fixed an error when publishing a page that has an unpublished child page who is 293 parent to a published page. 294* Fixed a bug where moving a published page under a page marked as pending publishing 295 is left as published instead of being marked as pending publishing. 296* Fixed AttributeError when using ``create_page`` in management command 297* Fixed a bug in getting the language from current request which can cause error 500 298* API functions are now atomic by design (use the @atomic decorator) 299* Fixed a bug where a ``Page`` was created with it's languages field set to ``None``. 300 301 3023.3.2 (2016-08-11) 303================== 304 305* Fixed a bug where it wasn't possible to scroll the toolbar menu if scroll 306 started on the disabled menu item on small screens. 307* Fixed a migration error (0014) that occurred under certain environments. 308* Fixed a regression when standalone CMS Widgets wouldn't work due to 309 non-existing JavaScript dependencies. 310* Fixed a possible recursion error when using the ``Alias`` plugin. 311* Fixed a regression where submit handlers for modal form wouldn't be executed 312 under certain circumstances 313 314 3153.3.1 (2016-07-13) 316================== 317 318* Added a warning for users who are leaving the page or closing the plugin 319 modal by pressing ESC to prevent accidental loss of content. 320* Fixed a bug when clicking inside sideframe didn't close toolbar dropdowns 321* Fixed a bug where saving errors wouldn't be shown in the modal window. 322* Fixed a misleading message when modal iframe contents couldn't be accessed. 323* Added a workaround for a bug when plugins couldn't be deleted in Firefox 324 with 1Password extension installed 325* Changed CMS JavaScript bundling from simple concatenation to webpack-based. 326 Using CMS JavaScript modules directly is no longer possible. 327* Fixed an issue where plugins that have no immediate DOM representation 328 wouldn't be editable or movable. 329* Fixed a regression in which plugins that defined ``parent_classes`` 330 would not show up in the structure mode. 331* Introduced new logic to leverage Django's dynamic related name 332 functionality on ``CMSPlugin`` subclasses for the parent link field. 333* Backported a performance fix from Django to avoid extra queries when 334 plugins access their parent via the parent link field ``cmsplugin_ptr``. 335* Fixed typo in ``AdvancedSettingsForm`` error messages. 336* Fixed long standing bug that prevented apphook endspoints from being 337 CSRF exempt. 338* Changed default value for ``CMS_INTERNAL_IPS``. 339* Fixed an issue that prevented non superusers from copying all plugins 340 in a placeholder. 341* Fixed an issue where plugin permissions where not checked when clearing 342 a placeholder. 343* Fixed an issue where plugin permissions where not checked when deleting 344 a page or page translation. 345* Added support for tiered ``CMS_PLACEHOLDER_CONF``. 346* Fixed a useless placeholders edit permissions checking when not in edit 347 mode. 348* Fixed a bug where users with limited permissions could not interact with 349 page tree dropdowns. 350* Fixed a bug where Django Compressor could not be used on the sekizai ``js`` 351 block. 352* Fixed an encoding error when running the ``publisher-publish`` command. 353* Fixed regression introduced in 3.3.0 when using the 354 ``render_plugin_toolbar_config`` template tag directly. 355* Fixed ``render_model`` template tags to work with models containing deferred 356 fields. 357* Fixed error in retrieving placeholder label from configuration. 358 359 3603.3.0 (2016-05-26) 361================== 362 363* Fixed regression in management commands 364* Fixed documentation typo 365* Added contribution policies documentation 366* Corrected documentation in numerous places 367* Corrected an issue where someone could see and use the internal placeholder plugin in the structure board 368* Fixed a regression where the first page created was not automatically published 369* Corrected the instructions for using the ``delete-orphaned-plugins`` command 370* Re-pinned django-treebeard to >=4.0.1 371* Added CMS_WIZARD_CONTENT_PLACEHOLDER setting 372* Renamed the CMS_WIZARD_* settings to CMS_PAGE_WIZARD_* 373* Deprecated the old-style wizard-related settings 374* Improved documentation further 375* Improved handling of uninstalled apphooks 376* Fixed toolbar placement when foundation is installed 377* Fixed an issue which could lead to an apphook without a slug 378* Fixed numerous frontend issues 379* Removed support for Django 1.6, 1.7 and python 2.6 380* Changed the default value of CMSPlugin.position to 0 instead of null 381* Refactored the language menu to allow for better integration with many languages 382* Refactored management commands completely for better consistency 383* Fixed "failed to load resource" for favicon on welcome screen 384* Changed behaviour of toolbar CSS classes: ``cms-toolbar-expanded`` class is only added now when toolbar is fully 385 expanded and not at the beginning of the animation. ``cms-toolbar-expanding`` and ``cms-toolbar-collapsing`` classes 386 are added at the beginning of their respective animations. 387* Added unit tests for CMS JavaScript files 388* Added frontend integration tests (written with Casper JS) 389* Removed frontend integration tests (written with Selenium) 390* Added the ability to declare cache expiration periods on a per-plugin basis 391* Improved UI of page tree 392* Improved UI in various minor ways 393* Added a new setting CMS_INTERNAL_IPS for defining a set of IP addresses for which 394 the toolbar will appear for authorized users. If left unset, retains the 395 existing behavior of allowing toolbar for authorized users at any IP address. 396* Changed behaviour of sideframe; is no longer resizable, opens to 90% of the screen or 100% on 397 small screens. 398* Removed some unnecessary reloads after closing sideframe. 399* Added the ability to make pagetree actions work on currently picked language 400* Removed deprecated CMS_TOOLBAR_SIMPLE_STRUCTURE_MODE setting 401* Introduced the method ``get_cache_expiration`` on CMSPluginBase to be used 402 by plugins for declaring their rendered content's period of validity. 403* Introduced the method ``get_vary_cache_on`` on CMSPluginBase to be used 404 by plugins for declaring ``VARY`` headers. 405* Improved performance of plugin moving; no longer saves all plugins inside the placeholder. 406* Fixed breadcrumbs of recently moved plugin reflecting previous position in 407 the tree 408* Refactored plugin adding logic to no longer create the plugin before the user submits the form. 409* Improved the behaviour of the placeholder cache 410* Improved fix-tree command to sort by position and path when rebuilding positions. 411* Fixed several regressions and tree corruptions on page move. 412* Added new class method on CMSPlugin ``requires_parent_plugin`` 413* Fixed behaviour of ``get_child_classes``; now correctly calculates child classes when not 414 configured in the placeholder. 415* Removed internal ``ExtraMenuItems`` tag. 416* Removed internal ``PluginChildClasses`` tag. 417* Modified RenderPlugin tag; no longer renders the ``content.html`` template 418 and instead just returns the results. 419* Added a ``get_cached_template`` method to the ``Toolbar()`` main class to reuse loaded templates per request. It 420 works like Django's cached template loader, but on a request basis. 421* Added a new method ``get_urls()`` on the appbase class to get CMSApp.urls, to allow passing a page object to it. 422* Changed JavaScript linting from JSHint and JSCS to ESLint 423* Fixed a bug when it was possible to drag plugin into clipboard 424* Fixed a bug where clearing clipboard was closing any open modal 425 426 4273.2.5 (2016-04-27) 428================== 429 430- Fixed regression when page couldn't be copied if CMS_PERMISSION was False 431- Improved handling of uninstalled apphooks 432- Fix packaging problem with the wheel distribution 433 434 4353.2.4 (2016-04-26) 436================== 437 438- Fix cache settings 439- Fix user lookup for view restrictions/page permissions when using raw id field 440- Fixed regression when page couldn't be copied if CMS_PERMISSION was False 441- Fixes an issue relating to uninstalling a namespaced application 442- Adds "Can change page" permission 443- Fixes a number of page-tree issues the could lead data corruption under 444 certain conditions 445- Addresses security vulnerabilities in the `render_model` template tag that 446 could lead to escalation of privileges or other security issues. 447- Addresses a security vulnerability in the cms' usage of the messages framework 448- Fixes security vulnerabilities in custom FormFields that could lead to 449 escalation of privileges or other security issues. 450 451 4523.2.3 (2016-03-09) 453================== 454 455- Fix the display of hyphenated language codes in the page tree 456- Fix a family of issues relating to unescaped translations in the page tree 457 458 4593.2.2 (2016-03-02) 460================== 461 462- Substantial improvements to the page tree and significant reduction of reloads 463- Update jsTree version to 3.2.1 with slight adaptions to the Pagetree 464- Documentation improvements 465- Improve the display and useability of the language menu, especially in cases 466 where there are many languages. 467- Fix an issue relating to search fields in plugins 468- Fix an issue where the app-resolver would trigger locales into migrations 469- Fix cache settings 470- Fix ToolbarMiddleware.is_cms_request logic 471- Fix numerous Django 1.9 deprecations 472- Numerous other improvements to overall stability and code quality 473 474 4753.2.1 (2016-01-29) 476================== 477 478- Add support for Django 1.9 (with some deprecation warnings). 479- Add support for django-reversion 1.10+ (required by Django 1.9+). 480- Add placeholder name to the edit tooltip. 481- Add ``attr['is_page']=True`` to CMS Page navigation nodes. 482- Add Django and Python versions to debug bar info tooltip 483- Fix an issue with refreshing the UI when switching CMS language. 484- Fix an issue with sideframe urls not being remembered after reload. 485- Fix breadcrumb in page revision list. 486- Fix clash with Foundation that caused "Add plugin" button to be unusable. 487- Fix a tree corruption when pasting a nested plugin under another plugin. 488- Fix message with CMS version not showing up on hover in debug mode. 489- Fix messages not being positioned correctly in debug mode. 490- Fix an issue where plugin parent restrictions where not respected when pasting a plugin. 491- Fix an issue where "Copy all" menu item could have been clicked on empty placeholder. 492- Fix a bug where page tree styles didn't load from STATIC_URL that pointed to a different host. 493- Fix an issue where the side-frame wouldn't refresh under some circumstances. 494- Honor CMS_RAW_ID_USERS in GlobalPagePermissionAdmin. 495 496 4973.2.0 (2015-11-24) 498================== 499 500- Added new wizard to improve content creation 501- Added Aldryn Apphook Reload https://github.com/aldryn/aldryn-apphook-reload/ into core 502- Added database migration creating ``UrlconfRevision`` for apphook reload. 503- Added tooltips for certain user interaction elements 504- Added full touch support and optimisations for mobile devices 505- Added gulp.js for linting, compressing and bundling 506- Added YuiDocs for JavaScript documentation 507- Added ``CMS_TOOLBAR_SIMPLE_STRUCTURE_MODE`` to switch back to the old board rendering, 508 this will be deprecated in 3.3.0 509- Added ``request.toolbars.placeholder_list`` this will replace 510 ``request.toolbars.placeholders`` in 3.3.0 511- Added new installation screen with optimisation alongside the new content creation wizard 512- Added ``.editorconfig`` to the django-cms project 513- Added HTML rendering capabilities for the modal 514- Added browser history to the sideframe 515- Improved design for better touch support 516- Improved design for better accessibility support such as contrast ratio 517- Improved design to reflect latest responsive design standards such as the toolbar 518 menu which collapses to "More" 519- Improved UI for scrolling, saving and navigating through content 520 creation and editing such as ``CTRL + Enter`` for saving 521- Improved overall speed loading times and interaction response 522- Improved drag & drop experience 523- Improved structure board hierarchy to be displayed as tree elements instead of nested boxes 524- Improved clipboard to be integrated within the toolbar and structure board (copy & paste) 525- Improved modal UI and added significant speed improvements 526- Improved sideframe UI and reduced functionality 527- Improved messaging system within ``cms.messages.js`` 528- Improved pagetree design and UI (soft-redesign) refactoring will follow in 3.3 529- Improved parent plugin restricts on frontend 530- Improved frontend code to comply with aldryn-boilerplate-bootstrap3 531- Improved folder structure for frontend related components such as JavaScript and SASS 532- Improved color and value variable declarations for Styles 533- Improved key mapping for actions such as saving, closing and switching across browsers 534- Switched from tabs to 4 spaces everywhere 535- Switched from ruby sass/compass to libsass/autoprefixer 536- Switched from sprite images to auto generated webfonts via gulp 537- Moved widgets.py javascript to ``static/cms/js/widgets`` 538- Fixed an issue in which placeholder template tags ignored the ``lang`` parameter 539- Renamed cms_app, cms_menu, cms_toolbar to plural versions eg. ``cms_apps.py`` 540 ``cms_menus.py``, ``cms_toolbars.py`` with backwards compatibility 541- Removed all id attributes on html elements in favour of classes 542- Removed 'develop.py' to replace with 'manage.py' (devs) 543- Removed Alias plugin from list of plugins (Create Alias still an option) 544- Added support for 3rd party admin themes 545- Update the toolbar tutorial 546- Update the 3rd party integration tutorial 547- Fixed an issue where dialogs can't be closed when activating prevent checkbox 548- Fixed edit and edit_off constants not being honoured in frontend code 549- Deprecate CMSPlugin.disable_child_plugin in favour of disable_child_plugins 550- Fixed an issue where ``allow_children`` and ``disable_child_plugins`` didn't work on dragitems 551 552 5533.1.8 (unreleased) 554================== 555 556- Removed html5lib from setup.py 557 558 5593.1.7 (2016-04-27) 560================== 561 562- Fix packaging problem with the wheel distribution 563 564 5653.1.6 (2016-04-26) 566================== 567 568- Fix cache settings 569- Fix user lookup for view restrictions/page permissions when using raw id field 570- Fixes an issue relating to uninstalling a namespaced application 571- Adds "Can change page" permission 572- Addresses security vulnerabilities in the `render_model` template tag that 573 could lead to escalation of privileges or other security issues. 574- Addresses a security vulnerability in the cms' usage of the messages framework 575- Fixes security vulnerabilities in custom FormFields that could lead to 576 escalation of privileges or other security issues. 577 578 5793.1.5 (2016-01-29) 580================== 581 582- Fixed a tree corruption when pasting a nested plugin under another plugin. 583- Improve CMSPluginBase.render documentation 584- Fix CMSEditableObject context generation which generates to errors with django-classy-tags 0.7.1 585- Fix error in toolbar when LocaleMiddleware is not used 586- Move templates validation in app.ready 587- Fix ExtensionToolbar when language is removed but titles still exists 588- Fix pages menu missing on fresh install 3.1 589- Fix incorrect language on placeholder text for redirect field 590- Fix PageSelectWidget JS syntax 591- Fix redirect when disabling toolbar 592- Fix CMS_TOOLBAR_HIDE causes 'WSGIRequest' object has no attribute 'toolbar' 593 594 5953.1.4 (2015-11-24) 596================== 597 598- Fixed a problem in ``0010_migrate_use_structure.py`` that broke some migration paths to Django 1.8 599- Fixed ``fix_tree`` command 600- Removed some warnings for Django 1.9 601- Fixed issue causing plugins to move when using scroll bar of plugin menu in Firefox & IE 602- Fixed JavaScript error when using ``PageSelectWidget`` 603- Fixed whitespace markup issues in draft mode 604- Added plugin migrations layout detection in tests 605- Fixed some treebeard corruption issues 606 607 6083.1.3 (2015-09-01) 609================== 610 611- Add missing migration 612- Exclude PageUser manager from migrations 613- Fix check for template instance in Django 1.8.x 614- Fix error in PageField for Django 1.8 615- Fix some Page tree bugs 616- Declare Django 1.6.9 dependency in setup.py 617- Make sure cache version returned is an int 618- Fix issue preventing migrations to run on a new database (django 1.8) 619- Fix get User model in 0010 migration 620- Fix support for unpublished language pages 621- Add documentation for plugins datamigration 622- Fix getting request in _show_placeholder_for_page on Django 1.8 623- Fix template inheritance order 624- Fix xframe options inheritance order 625- Fix placeholder inheritance order 626- Fix language chooser template 627- Relax html5lib versions 628- Fix redirect when deleting a page 629- Correct South migration error 630- Correct validation on numeric fields in modal popups 631- Exclude scssc from manifest 632- Remove unpublished pages from menu 633- Remove page from menu items for performance reason 634- Fix reachability of pages with expired ancestors 635- Don't try to modify an immutable QueryDict 636- Only attempt to delete cache keys if there are some to be deleted 637- Update documentation section 638- Fix language chooser template 639- Cast to int cache version 640- Fix extensions copy when using duplicate page/create page type 641 642 6433.1.2 (2015-07-02) 644================== 645 646- Fix placeholder cache invalidation under some circumstances 647- Update translations 648 649 6503.1.1 (2015-06-27) 651================== 652 653- Add Django 1.8 support 654- Tutorial updates and improvements 655- Fix issue with causes menu classes to be duplicated in advanced settings 656- Fix issue with breadcrumbs not showing 657- Fix issues with show_menu templatetags 658- Minor documentation fixes 659- Revert whitespace cleanup on flash player to fix it 660- Correctly restore previous status of dragbars 661- Add copy_site command 662- Fix an issue related to "Empty all" Placeholder feature 663- Fix plugin sorting in py3 664- Fix language-related issues when retrieving page URL 665- Add setting to disable toolbar for anonymous users 666- Fix search results number and items alignment in page changelist 667- Preserve information regarding the current view when applying the CMS decorator 668- Fix errors with toolbar population 669- Fix error with watch_models type 670- Fix error with plugin breadcrumbs order 671- Change the label "Save and close" to "Save as draft" 672- Fix X-Frame-Options on top-level pages 673- Fix order of which application urls are injected into urlpatterns 674- Fix delete non existing page language 675- Fix language fallback for nested plugins 676- Fix render_model template tag doesn't show correct change list 677- Fix Scanning for placeholders fails on include tags with a variable as an argument 678- Fix handling of plugin position attribute 679- Fix for some structureboard issues 680- Add setting to hide toolbar when a URL is not handled by django CMS 681- Add editorconfig configuration 682- Make shift tab work correctly in submenu 683- Fix get_language_from_request if POST and GET exists 684- Fix an error in placeholder cache 685- Fix language chooser template 686 687 6883.1.0 (2015-04-20) 689================== 690 691- Remove django-mptt in favor of django-treebeard 692- Remove compatibility with Django 1.4 / 1.5 693- General code cleanup 694- Simplify loading of view restrictions in the menu 695- South is not marked as optional; to use south on Django 1.6 install django-cms[south] 696- Add system_plugin attribute to CMSPluginBase that allow the plugin to override any configured restriction 697- Change placeholder language fallback default to True 698- Remove plugin table naming compatibility layer 699- Remove deprecated cms.context_processors.media context processor 700- Add templatetag render_plugin_block 701- Add templatetag render_model_add_block 702- Add "Structure mode" permission 703 704 7053.0.17 (unreleased) 706================== 707 708- Addresses security vulnerabilities in the `render_model` template tag that could 709 lead to escalation of privileges or other security issues. 710- Fix ExtensionToolbar when language is removed but titles still exists… 711- Fix PageSelectWidget JS syntax 712- Fix cache settings 713 714 7153.0.16 (2015-11-24) 716================== 717 718- Fixed JavaScript error when using ``PageSelectWidget`` 719- Fixed whitespace markup issues in draft mode 720- Added plugin migrations layout detection in tests 721 722 7233.0.15 (2015-09-01) 724================== 725 726- Relax html5lib versions 727- Fix redirect when deleting a page 728- Correct South migration error 729- Correct validation on numeric fields in modal popups 730- Exclude scssc from manifest 731- Remove unpublished pages from menu 732- Remove page from menu items for performance reason 733- Fix reachability of pages with expired ancestors 734- Don't try to modify an immutable QueryDict 735- Only attempt to delete cache keys if there are some to be deleted 736- Update documentation section 737- Fix language chooser template 738- Cast to int cache version 739- Fix extensions copy when using duplicate page/create page type 740 741 7423.0.14 (2015-06-27) 743================== 744 745- Fixed an issue where privileged users could be tricked into performing actions without their knowledge via a CSRF vulnerability 746- Fixed an issue related to "Empty all" Placeholder feature 747- Fix issue with causes menu classes to be duplicated in advanced settings 748- Fix issue with breadcrumbs not showing 749- Fix issues with show_menu templatetags 750- Fix plugin sorting in py3 751- Fix search results number and items alignment in page changelist 752- Fix X-Frame-Options on top-level pages 753- Preserve information regarding the current view when applying the CMS decorator 754- Fix render_model template tag doesn't show correct change list 755- Fix language fallback for nested plugins 756- Fix order of which application urls are injected into urlpatterns 757- Fix delete non existing page language 758- Fix Scanning for placeholders fails on include tags with a variable as an argument 759- Minor documentation fixes 760- Pin South version to 1.0.2 761- Pin Html5lib version to 0.999 until a current bug is fixed 762- Fix language chooser template 763 764 7653.0.13 (2015-04-15) 766================== 767 768- Numerous documentation including installation and tutorial updates 769- Numerous improvements to translations 770- Improves reliability of apphooks 771- Improves reliabiliy of Advanced Settings on page when using apphooks 772- Allow page deletion after template removal 773- Improves upstream caching accuracy 774- Improves CMSAttachMenu registration 775- Improves handling of mistyped URLs 776- Improves redirection as a result of changes to page slugs, etc. 777- Improves performance of "watched models" 778- Improves frontend performance relating to resizing the sideframe 779- Corrects an issue where items might not be visible in structue mode menus 780- Limits version of django-mptt used in CMS for 3.0.x 781- Prevent accidental upgrades to Django 1.8, which is not yet supported 782 783 7843.0.12 (2015-03-06) 785================== 786 787- Fixed a typo in JavaScript which prevents page tree from working 788 789 7903.0.11 (2015-03-05) 791================== 792 793- Core support for multiple instances of the same apphook'ed application 794- Fixed the template tag `render_model_add` 795- Fixed an issue with reverting to Live 796- Fixed a missing migration issue 797- Fixed an issue when using the PageField widget 798- Fixed an issue where duplicate page slugs is not prevented in some cases 799- Fixed an issue where copying a page didn't copy its extensions 800- Fixed an issue where translations where broken when operating on a page 801- Fixed an edge-case SQLite issue under Django 1.7 802- Fixed an issue with confirmation dialog 803- Fixed an issue with deprecated 'mimetype' 804- Fixed an issue where `cms check` 805- Documentation updates 806 807 8083.0.10 (2015-02-14) 809================== 810 811- Improved Py3 compatibility 812- Improved the behavior when changing the operator's language 813- Numerous documentation updates 814- Revert a change that caused an issue with saving plugins in some browsers 815- Fix an issue where urls were not refreshed when a page slug changes 816- Fix an issue with FR translations 817- Fixed an issue preventing the correct rendering of custom contextual menu items for plugins 818- Fixed an issue relating to recovering deleted pages 819- Fixed an issue that caused the uncached placeholder tag to display cached content 820- Fixed an issue where extra slashed would appear in apphooked URLs when APPEND_SLASH=False 821- Fixed issues relating to the logout function 822 823 8243.0.9 (2015-01-11) 825================== 826 827- Revert a change that caused a regression in toolbar login 828- Fix an error in a translated phrase 829- Fix error when moving items in the page tree 830 831 8323.0.8 (2015-01-11) 833================== 834 835- Add require_parent option to CMS_PLACEHOLDER_CONF 836- Fix django-mptt version depenency to be PEP440 compatible 837- Fix some Django 1.4 compatibility issues 838- Add toolbar sanity check 839- Fix behavior with CMSPluginBase.get_render_template() 840- Fix issue on django >= 1.6 with page form fields. 841- Resolve jQuery namespace issues in admin page tree and changeform 842- Fix issues for PageField in Firefox/Safari 843- Fix some Python 3.4 compatibility issue when using proxy modles 844- Fix corner case in plugin copy 845- Documentation fixes 846- Minor code cleanups 847 848 8493.0.7 (2014-11-27) 850================== 851 852- Complete Django 1.7 support 853- Numerous updates to the documentation 854- Numerous updates to the tutorial 855- Updates to better support South 1.0 856- Adds some new, user-facing documentation 857- Fixes an issue with placeholderadmin permissions 858- Numerous fixes for minor issues with the frontend UI 859- Fixes issue where the CMS would not reload pages properly if the URL contained a # symbol 860- Fixes an issue relating to 'limit_choices_to' in forms.MultiValueFields 861- Fixes PageField to work in Django 1.7 environments 862- Updates to community and project governance documentation 863- Added list of retired core developers 864- Added branch policy documentaion 865 866 8673.0.6 (2014-10-07) 868================== 869 870- Experimental full Django 1.7 migrations support 871- Add CMSPlugin.get_render_model to get the plugin model at render time 872- Add simplified API to handle toolbar for page extensions 873- Extended custom user model support 874- Added option to publish all the pages in a language / site in publisher_publish command 875- Fixed a few frontend glitches 876- Fixed menu when hide untranslated is set to False 877- Fix sitemap ordering 878- Fix plugin table name generation fixes 879 880 8813.0.5 (2014-08-20) 882================== 883 884- Fixes 2 regressions introduced in 3.0.4 885- apphook and plugins can now be registered via decorator 886 887 8883.0.4 (2014-08-16) 889================== 890 891- Removed file cms/utils/compat/type_checks.py, use django.utils.six module instead 892- Removed file cms/utils/compat/string_io.py, use django.utils.six module instead 893- Removed file cms/utils/compat/input.py, use django.utils.six module instead 894- Use PY3 from django.utils.six instead of PY2 from cms.utils.compat to check Python version 895- Staticplaceholders have not their own permissions 896- Apphooks support now nested namespaces 897- Apphooks can now exclude module for page permission checking 898- fixed the permissions for plugins on apphook pages 899- Allow the use of custom admin sites that do not reside under the 'admin' namespace 900- Added django 1.7 migrations 901- updated docs 902- slots for placeholders can now be 255 characters long 903- Plugin pool initialises incorrectly if database is down during first request 904- some refactoring and simplifications 905 906 9073.0.3 (2014-07-07) 908================== 909 910- Added an alias plugin for referencing plugins and placeholders 911- Added an api to change the context menus of plugins and placeholders from plugins 912- Apphooks respect the page permissions 913- Decorator for views with page permissions 914- #3266 - api.create_page respects site 915- Fixed how permissions are checked for static placeholder. 916- Reduced queries on placeholder.clear by 60% 917- auto-detect django-suit instead of using explicit setting 918- Added the ability to mark (Sub)Menu's 'active'. 919- fallback language fixes for pages 920- Implemented transaction.atomic in django 1.4/1.5 way 921- Added a automatic dynamic template directory for page templates 922 923 9243.0.2 (2014-05-21) 925================== 926 927- Add 'as' form to render_placeholder templatetag to save the result in context 928- Added changeable strings for "?edit", "?edit_off" and "?build" urls 929- utils.page_resolver was optimized. get_page_from_path() api changed 930 931 9323.0.1 (2014-04-30) 933================== 934 935- Renamed NamespaceAllreadyRegistered to NamespaceAlreadyRegistered in menus/exceptions.py 936- Frontend editor UI fixes 937- Fix in cms fix-mptt command 938 939 9403.0.0 (2014-04-08) 941================== 942 943- Plugins are only editable in frontend 944- PluginEditor has been removed in backend 945- New frontend editing 946- New Toolbar 947- Plugin API for creating new plugins and moving has changed 948- render_to_response replaced with TemplateResponse in cms.views 949- CMS_SEO_FIELDS removed and seo fields better integrated 950- meta_keywords field removed as not relevant anymore 951- CMS_MENU_TITLE_OVERWRITE default changed to True 952- Toolbar has language switcher built in 953- User settings module added for saving the language of the user so when he switches languages the toolbar/interface 954 keeps the language. 955- language_chooser templatetag now only displays public languages, even when you are logged in as staff. 956- undo and redo functionality added in toolbar if django-reversion is installed. 957- page admin split in 3 different for basic, advanced and permissions 958- New show_editable_page_title templatetag to edit page title from the frontend 959- Removed PLACEHOLDER_FRONTEND_EDITING setting 960- Removed CMS_URL_OVERWRITE setting. Always enabled. 961- Removed CMS_MENU_TITLE_OVERWRITE settings. Always enabled. 962- Removed CMS_REDIRECTS. Always enabled. 963- Removed CMS_SOFTROOT. Always enabled. 964- Removed CMS_SHOW_START_DATE. Always enabled. 965- Removed CMS_SHOW_END_DATE. Always enabled. 966- Added (optional) language fallback for placeholders. 967- moved apphooks from title to page model so we need to add them only once. 968- request.current_app has been removed. 969- added a namespace field, reverse_id is not used anymore for apphook namespaces. 970- PlaceholderAdmin is deprecated and available as mixin class renamed to PlaceholderAdminMixin. 971- PlaceholderAdmin does not have LanguageTabs anymore. It only has a PluginAPI now. 972- PageAdmin uses the same Plugin API as PlaceholderAdmin 973- Toolbar API for your own apps added 974- twitter plugin removed 975- file plugin removed 976- flash plugin removed 977- googlemap plugin removed 978- inherit plugin removed 979- picture plugin removed 980- teaser plugin removed 981- video plugin removed 982- link plugin removed 983- snippet plugin removed 984- Object level permission support for Placeholder 985- Configuration for plugin custom modules and labels in the toolbar UI 986- Added copy-lang subcommand to copy content between languages 987- Added static_placeholder templatetag 988- Moved render_placeholder from placeholder_tags to cms_tags 989- django 1.6 support added 990- Frontedit editor for Django models 991- Extending the page & title model API 992- Placeholders can be configured to have plugins automatically added. 993- Publishing is now language independent and the tree-view has been updated to reflect this 994- Removed the plugin DB-name magic and added a compatibility layer 995- urls_need_reloading signal added when an apphook change is detected. 996- CMS_PAGE_CACHE, CMS_PLACEHOLDER_CACHE and CMS_PLUGIN_CACHE settings and functionality added. Default is True 997- Detect admin object creation and changes via toolbar and redirect to them. 998- Added support for custom user models 999- Added PageTypes 1000- Added CMS_MAX_PAGE_HISTORY_REVERSIONS and changed default of CMS_MAX_PAGE_PUBLISH_REVERSIONS 1001- Added option to {% static_placeholder %} to render only on the current site. 1002 1003 10042.4.2 (2013-05-29) 1005================== 1006 1007- Apphook edit mode bugfix 1008- Added option to render_placeholder tag to set language 1009- Huge permission cache invalidation speed up 1010- Doc improvements 1011- css cleanup in PlaceholderAdmin 1012- Log change of page status done via AJAX 1013- Use --noinput convention for delete_orphaned_plugins command 1014- added Testing docs 1015- fixed more issues with only one language 1016- locales updated 1017 1018 10192.4.1 (2013-04-22) 1020================== 1021 1022- USE_I18N=False fixed 1023- some frontend css stuff fixed 1024- check_copy_relations fixed for abstract classes 1025- non public frontend languages fixed 1026 1027 10282.4.0 (2013-04-17) 1029================== 1030 1031Please see Install/2.4 release notes *before* attempting to upgrade to version 2.4. 1032 1033- Compatibility with Django 1.4 and 1.5 (1.3 support dropped) 1034- Support for Python 2.5 dropped 1035- CMS_MAX_PAGE_PUBLISH_REVERSIONS has been added 1036- Reversion integration has changed to limit DB size 1037- CMS_LANGUAGE setting has changed 1038- CMS_HIDE_UNTRANSLATED setting removed 1039- CMS_LANGUAGE_FALLBACK setting removed 1040- CMS_LANGUAGE_CONF setting removed 1041- CMS_SITE_LANGUAGES setting removed 1042- CMS_FRONTEND_LANGUAGES setting removed 1043- MultilingualMiddleware has been removed 1044- CMS_FLAT_URLS has been removed 1045- CMS_MODERATOR has been removed and replaced with simple publisher. 1046- PlaceholderAdmin has now language tabs and has support for django-hvad 1047- Added `cms.middleware.language.LanguageCookieMiddleware` 1048- Added CMS_RAW_ID_USERS 1049 1050 10512.3.4 (2012-11-09) 1052================== 1053 1054- Fixed WymEditor 1055- Fixed Norwegian translations 1056- Fixed a bug that could lead to slug clashes 1057- Fixed page change form (jQuery and permissions) 1058- Fixed placeholder field permission checks 1059 1060 10612.3.3 (2012-09-21) 1062================== 1063 1064 - fixed an incompatibility with Python 2.5 1065 1066 10672.3.2 (2012-09-19) 1068================== 1069 1070- MIGRATION: 0036_auto__add_field_cmsplugin_changed_date.py - new field changed_date on CMSPlugin 1071- CMS_FRONTEND_LANGUAGES limits django languages as well during language selection 1072- Wymeditor updated to 1.0.4a 1073- icon_url escape fixed 1074- Ukranian translation added 1075- Fixed wrong language prefix handling for form actions and admin preview 1076- Admin icons in django 1.4 fixed 1077- Added requirements.txt for pip and testing in test_requirements 1078- Google map plugin with height and width properties. Migrations will set default values on not-null fields. 1079- Docs fixes 1080- Code cleanup 1081- Switched html5lib to HTML serializer 1082- Removed handling of iterables in plugin_pool.register_plugin 1083- Performance and reduced queries 1084- Link has target support 1085- Made the PageAttribute templatetag an 'asTag' 1086- JQuery namespace fixes in admin 1087 1088 10892.3.1 (2012-08-22) 1090================== 1091 1092- pinned version of django-mptt to 0.5.1 or 0.5.2 1093 1094 10952.3.0 (2012-06-29) 1096================== 1097 1098- Compatibility with Django 1.3.1 and 1.4 (1.2 support dropped) 1099- Lazy admin page tree loading 1100- Toolbar JS isolation 1101- Destructive plugin actions fixed (cancel button, moving plugins) 1102- Refactored tests 1103- Fixed or clause of placeholder tag 1104- Fixed double escaping of icon sources for inline plugins 1105- Fixed order of PageSelectWidget 1106- Fixed invalid HTML generated by file plugin 1107- Fixed migration order of plugins 1108- Fixed internationalized strings in JS not being escaped 1109- django-reversion dependency upgraded to 1.6 1110- django-sekizai dependency upgraded to 0.6.1 or higher 1111- django-mptt dependency upgraded to 0.5.1 or higher 1112 1113 11142.2.0 (2011-09-10) 1115================== 1116 1117- Replaced the old plugin media framework with django-sekizai. (This changed some plugin templates which might cause problems with your CSS styling). 1118- Made django-mptt a proper dependency 1119- Removed support for django-dbgettext 1120- Google Maps Plugin now defaults to use HTTPS. 1121- Google Maps Plugin now uses the version 3 of their API, no longer requiring an API Key. 1122 1123 11242.1.4 (2011-08-24) 1125================== 1126 1127- Fixed a XSS issue in Text Plugins 1128 1129 11302.1.3 (2011-02-22) 1131================== 1132 1133- Fixed a serious security issue in PlaceholderAdmin 1134- Fixed bug with submenus showing pages that are not 'in_navigation' (#716, thanks to Iacopo Spalletti for the patch) 1135- Fixed PlaceholderField not respecting limits in CMS_PLACEHOLDER_CONF (thanks to Ben Hockey for reporting this) 1136- Fixed the double-monkeypatch check for url reversing (thanks to Benjamin Wohlwend for the patch) 1137 1138 11392.1.2 (2011-02-16) 1140================== 1141 1142- Fixed issues with the CSRF fix from 2.1.1. 1143- Updated translation files from transifex. 1144 1145 11462.1.1 (2011-02-09) 1147================== 1148 1149- Fixed CMS AJAX requests not being CSRF protected, thus not working in Django 1.2.5 1150- Fixed toolbar CSS issues in Chrome/Firefox 1151 1152 11532.1.0 (2011-01-26) 1154================== 1155 1156- language namespaces for apphooks (reverse("de:myview"), reverse("en:myview")) 1157- video plugin switch to https://github.com/FlashJunior/OSFlashVideoPlayer 1158- frontediting added (cms.middlware.toolbar.ToolbarMiddleware) 1159- testsuite works now under sqlite and postgres 1160- orphaned text embed plugins get now deleted if not referenced in the text anymore 1161- placeholder templatetag: "theme" attribute removed in favor of "width" (backward incompatible change if theme was used) 1162- menu is its own app now 1163- menu modifiers (you can register menu modifiers that can change menu nodes or rearrange them) 1164- menus are now class based. 1165- apphooks are now class based and can bring multiple menus and urls.py with them. 1166- menus and apphooks are auto-discovered now 1167- example templates look a lot better now. 1168- languages are not a dropdown anymore but fancy tabs 1169- placeholderend templatetag added: {% placeholder "content" %}There is no content here{% endplaceholder %} 1170- plugins can now be used in other apps :) see cms/docs/placeholders.txt 1171- plugins can now be grouped 1172- a lot of bugfixes 1173- the cms now depends on the cms.middleware.media.PlaceholderMediaMiddleware middleware 1174- templatetags refactored: see cms/docs/templatetags.txt for new signatures. 1175- placeholder has new option: or and a endpalceholder templatetag 1176 1177 11782.0.2 (2009-12-14) 1179================== 1180 1181- testsuite working again 1182- changelog file added 1183 1184 11852.0.1 (2009-12-13) 1186================== 1187 1188- mostly bugfixes (18 tickets closed) 1189- docs updated 1190- permissions now working in multisite environment 1191- home is now graphically designated in tree-view 1192