Version 2.2 - Canada
----------------------------------
Core - General
  - Automatically turn on file locking for cached files to attempt to mitigate race conditions.
    NOTE:  On systems using archaic filesystems such as FAT and FAT32 CMSMS may no longer operate.
  - cms_filecache_driver now caches for 2 hours by default and has an improved cooperative locking test
  - Implement new database abstraction library that is compatible with (functionality wise) but improves upon adodb-lite.
  - Implement protocol-less URL's in the config.
  - Page tabs are now focusable (you can tab through page tabs and use enter to select one).
  - Minor fix to the {form_start} plugin.
  - Minor change to the {admin_icon} plugin (default image class).
  - Cache more items that are queried from the database, to reduce mysql load.
  - Minor change to tree operations functionality to reduce memory usage.
  - Fixed problem with order of content blocks when using {content_module} stuff.
  - Adds get_usage_string and the concept of a type assistant to template types.
  - Minor change to auto-alias determination routine.
  - Detect module_custom enhancements in the CmsModuleInfo stuff.
  - Refactor Admin authentication.
  - More fixes to the cms_url class.
  - Optimize the include.php file.
  - Adds built-in asynchronous task processing system.
  - Adds the ability to reduce redundant mentions in the Admin log (runs asynchronously).
  - Refactor the Admin log page to allow for better filtering and pagination.
  - Admin log now uses cms_date_format and cleans output.
  - Notification functions in the CmsAdminThemeBase function are now just stubs and do nothing. Will be removed at a later date.
  - Removed the GetNotificationOutput() method from the module API.
  - Adds classes for creating Alerts. This is much more advanced than the old Notifications system.
  - Minor accessibility tweaks to the OneEleven theme.
  - Fix numerous minor problems with the OneEleven theme.
  - Refactored the OneEleven Admin theme to use new Alerts classes instead of old Notifications.
  - Refactor the OneEleven Admin theme to display an alert icon in the shortcut bar, instead of in the navigation area.
  - Fixed sidenav in the one OneEleven theme now works properly. If sidenav is larger than viewport then don't use fixed... easy.
  - In OneEleven Now revert to small sidebar navigation (still floating) if screen is too narrow.
  - Removed notification settings from MyAccount and Global Settings.
  - Removed pseudocron granularity preferences.
  - cms_alert() and the new cms_confirm() JavaScript functions now return promises.
  - Revises much code to use cms_alert and cms_confirm() instead of the standard, but browser specific functions.
  - Fixes to the cache clearing methodology.
  - No longer check for duplicate content blocks in templates... NEEDS TESTING
  - New core events: ContentPreRender, LostPassword, LostPasswordReset, StylesheetPostRender.
  - Fix problem with the default parameter to the {content} tag.
  - Fix problem with the use_smartycache thing in system information.
  - Fix notice in useroperations.
  - Fixes problems where all files (including dot files) had to be writable before creating a module XML file.
  - Fixes minor notice in user operations.
  - Fixes for namespaced modules.
  - Fixes an issue in CmsLayoutTemplate when creating a template from a type.
  - Fixes an issue where a 404 handler error page would not be rendered correctly if for some reason the route did not specify a page id to load.
  - More fixes to cms_url class.
  - Numerous minor optimizations.
  - Add to content types the ability to set basic attributes for properties from within the page type definition.
  - Fixes problems with pagelink and link content types not being properly editable by additional editors.
  - Adds more type and content cleaning into the content types FillParams method(s).
  - Pass an explicit cacheid in to createtemplate in index.php.
  - Fix an error message in the autorefresh JavaScript class.
  - Fix problems that could result in uid=1 becoming inactive, and not a member of other groups when edited by another user.
  - Fix query problem in CmsLayoutStylesheetQuery with Mysql 5.7.
  - The {content} tag now supports passing data attributes to the generated textarea, for use by syntax highlighter and WYSIWYG modules. i.e: {content data-foo="bar"}.
  - Refactoring of the Admin login code to be cleaner, more efficient, more secure.
  - No longer allow any modules to auto-upgrade on frontend requests.
  - Fix problem with cms_filecache_driver::clear().
  - Introduces the new Hook mechanism to allow optimizing cms_stylesheet a bit further. All core SendEvent calls are now implemented as hooks.
  - changegroupperms can now localize permission names,  and add an info string for each permission. (the listpermissions hook).
  - Adds add_headtext(), get_headtext(),  add_footertext(), get_footertext() methods to the Admin theme class.
  - minor refactoring of admin/index.php, admin/header.php, admin/footer.php and admin/moduleinterface.php.
  - now use hooks so that loaded modules can now add text to the head area of any Admin page output.
  - Change the help for the basic attributes.
  - Adds new 'switch user' functionality for members of the Admin group.
  - Re-factor the content page selector ... now supports two modes (one for a simple list, and the previous dynamic one that is faster for large sites)
    the simple list mode is used for users with limited edit capabilities on pages.
  - Adds a new Smarty plugin {page_selector} to the Admin lib.
  - New arguments to the CreateHierarchyDropdown function (deprecated) and adjust documentation.
  - Content pages now have the ability to control whether or not the page wants any more children.
  - The TemplateType class now has a help callback to optionally allow retrieving help for templates of a particular type.
  - Permissions are now grouped logically by module/originator in ChangeGroupPermissions.
  - Now use HTTPS for the latest version check.
  - Adds the public_cache_url config entry,  and make sure that the css_url uses that by default.
  - Adds many core hooks.
  - Enhance the {page_image} plugin to optionally output a full HTML img tag if there is a value for the respective property.
  - Improve the {content_image} plugin to output nothing if there is no value for the property, and to output any non-internal arguments as attributes to the HTML img tag.
  - Upgrade to an un-modified version of smarty v3.1.31.
  - Move plugins directory to lib/plugins since we now have the assets/plugins directory for custom plugins.  Upgrading should preserve any custom plugins in the /plugins directory.
  - Add new plugins {thumbnail_url}, {file_url} and {cms_filepicker).
  - Add more intelligence to the tableoption handling for DataDictionary::CreateTableSQL.
  - Minor improvements to the asynchronous behaviour of the locking functionality.
  - #11295 - Cannot change the name of a UDT, always creates new UDT.
  - #11080 - Parameter $adding in GetContentBlockFieldInput always FALSE.
  - #11093 - Bad error message in jquery.cmsms_autorefresh.js.
  - #11133 - is_email() fails on domain check.
  - #11235 - munge_string_to_url leaves trailing dashes at the end of munged URL.
  - #11287 - Password reset form's password fields have different lengths.
  - Fix issue with module actions if 'content_en' block name was given on the default content block.
  - Better security when saving content pages.  Most primary fields are cast to their appropriate data type (int, bool, etc).  MenuText, and TitleAttribute can no longer contain html tags like <strong>foo</strong>.
  - Fixes issue with entities in redirecting links
  - The href/page argument to {cms_selflink} is now decoded before resolving to a page id.

Navigator v1.0.5
  - Minor optimizations.
  - Now use pageid in calculations of cacheid.
  - Now output template help to Navigator.

Installation Assistant v1.3
  - Only create dummy index.html files in subdirectories we created.
  - Clear cache after step 9.
  - Upgrade routine now asks for, and tests database credentials.
  - Upgrade routine now rewrites the config.php file (but keeps a backup).
  - Set a few more preferences to reasonable defaults on install. Specifically related to site cleanup and performance.
  - On installation, now insure that tmp/cache and tmp/templates_c directories are empty.
  - Now displays if files are going to be skipped.
  - Adds clear option for development purposes.
  - No longer ask to save database password.
  - On install now create the assets directory structure.
  - On upgrade (for 2.2) now create the assets directory structure and move tmp/configs, tmp/templates, module_custom, admin/custom, etc. within it.
  - When using the expanded installer allow changing the destination directory on step 1.
  - Check for existing files in the installation directory for new installations.
  - Added more notes to aide in diagnosing white screens
  - Modify package .zip files so that extracted files will usually have 644 permission (depends on the unzip routine used).

CmsJobManager
  - New core module to handle queued asynchronous tasks.

Content Manager
  - Minor tweak to bulk delete pages.
  - Minor fix to the active tab when changing a template or design.
  - Now listen to the 'default parent page' user preference.
  - Fix minor XSS problem in the Admin if some loser puts JavaScript into the title field or alias field or menu text field.
  - Now allow filtering pages by owner, editor, template, or design.  Only for Administrators with Modify any page, or Manage all content permissions.
  - Fix problems with auto-refresh being too fast for some operations.
  - Now auto scroll to the first matched page in a find.
  - Additional editors of a page cannot change the content type. Only owners, or users with the Manage all Content permissions.
  - Fix a problem with the call to GetTabElements.

DesignManager
  - Move the designs tab of the main interface into third position.
  - Implement sorting in edit design.
  - Remove option menus (for now) from templates, stylesheets, and designs tab.
  - Modify the template list functionality in edit-design to allow using keyboard control. Space or + to select an item on the left, and right arrow to move.
  - Modify the edit-design functionality to allow clicking on an attached template or stylesheet to edit it.
  - Generic templates now display a usage string.
  - When creating a new template, associate the new template with the default design.
  - Add reset buttons to the filter forms.
  - No longer check for default content block in a template.
  - Adds the ability to export a template to a file within the assets directory, and to import from the assets directory.
  - If a file exists in the assets/templates directory corresponding to a template name, do not allow in-browser editing.
  - Add bulk actions to allow importing and exporting multiple templates.
  - In the template list, if a file exists for a template... display it in the filename column.
  - Adds the ability to export a stylesheet to a file within the assets directory, and to import from the assets directory.
  - If a file exists in the assets/css directory corresponding to a stylesheet name, do not allow in-browser editing.
  - Add bulk actions to allow importing and exporting multiple stylesheets.
  - In the stylesheet list, if a file exists for a stylesheet display it in the filename column.

News v2.51
  - Minor fix to add category.
  - Removes GetNotificationOutput method.
  - Add a task that runs at least every 15 minutes to detect draft articles... create an alert for this.
  - Add an option to never create alerts about draft News articles.
  - Minor optimizations.
  - Adds postdate as parameters in events.
  - now output template help to Navigator.
  - Adds new 'linked file' type field that allows selecting a file using the filepicker.
  - Changes the default summary and detail templates to support the linked_file field type, and uses {thumbnail_url} and {file_url}.

FileManager v1.6.3
  - Move settings to it's own menu item under Site Admin.
  - Fix minor problem with moving a directory.
  - Minor fix to move file functionality.
  - Adds OnFileDeleted event.
  - Adds 'view raw file' icon in each viewable row.
  - Minor formatting changes in file list.
  - Now display clickable path entries for easier navigation.

Search
  - Convert to store all data using the InnoDB engine.
  - Use transactions for the addwords and deletewords stuff for performance.
  - Fix problem with query and record expiry.

AdminSearch v1.0.3
  - Fixes problem with use of 'Use Admin Search' permission.
  - Now searches for matching strings within templates and stylesheets that are stored as files.
  - Now listens to the HasSearchableContent metod when searching content pages.

ModuleManager
  - Now detect if module_custom directories exist and are populated and warn about this before upgrading a module.
  - Minor string changes.
  - Improvements to error handling in the new versions tab.
  - Write a confirmation form for uninstalling a module that displays the UninstallPreMessage or uses a default.
  - Now don't allow disabling / uninstalling myself.
  - Don't hide the upgrades tab when there are no upgrades, but show the number of upgrades in the tab title instead.
  - Now use HTTPS for requests to ModuleRepository.
  - Trigger a hook before exporting a module to XML.

MicroTiny v2.1
  - New version of the tinymce wysiwyg editor.
  - Adds a mailto plugin.
  - Now use the FilePicker module for a filepicker, required rewriting the cmsms_filepicker tinymce plugin.
  - Enable the title attribute on the image plugin.
  - Now uses PUBLIC_CACHE_LOCATION for cache files instead of hardcoding tmp/cache
