Symphony 2.2
Strengthening the 2.* branch with core documentation; new email API; new delegates; language improvements; UI improvements; tons of bugfixes, performance enhancements, and stability updates; and more.
Symphony 2.2 introduced a number of very significant changes for both users and developers. Most of these changes were chronicled on the Symphony blog.
- A Guide to Accessor Changes in Symphony 2.2
- A Guide to JavaScript for Symphony 2.2
- A Guide to CSS and Layout Changes in Symphony 2.2
- A Guide to Language Management in Symphony 2.2
- A Guide to Email Gateways in Symphony 2.2
New Features
- All core code has been fully documented!
- Symphony now has a core email API (details below and here).
- There are dozens of new delegates for extension developers, including: delegates to add custom columns to the Publish index; delegates for the creation, editing and deleting of data sources, events, pages, sections, and utilities; delegates for Login and Password Reset; delegates for the enabling/disabling/uninstallation of Extensions; new delegates for appending content; and more! (Official list forthcoming)
- not-regexp support is now included in all core fields
- The section index now supports batch-changing of navigation groups
- Any field that uses the Section Associations feature now has option to hide/show the linked section column
- Field collapsing is now enabled in the section editor
- New Symphony jQuery plugins: Pickable and Orderable
- Accesskeys are now supported (details forthcoming)
- New entry forms will now autofocus the first field
- jQuery 1.4.4
Bug Fixes
- #351: Allow right column of Devkits to scroll if they need to
- #377: Refined implementation of batch navigation group changing
- #386: Show param pool in page XML
- #388: Allow General::writeFile to accept a mode parameter. Installer can now append to existing .htaccess files
- #398: Update phrasing of 'Send Email' filter to better support localization
- #401: Don't allow editing of Events when allowEditorToParse is set to FALSE
- #407: Added General:arraymaprecursive. Configuration class now stripslashes all setting values
- #417: Add field name in event error message
- #420: Fix help text styling issue
- #427: Added Source dropdown validation (required) on Event editor. Prevents PHP error being thrown.
- #428: Fix duplicator markup problem
- #431: Add time filtering and relative dates to the date field
- #433: Escape variables for Static XML
- #434: Added Page() accessor function to FrontendPage
- #435: Add public lockExists method to the Mutex class
- #439: SBL can now use Date & Upload fields
- #442: Cleanup of Blueprints Sections
- #446: Fix focus bug in Safari and make use of event delegation to avoid the usage of map which breaks jQuery chaining.
- #451: Duplictor styling issues
- #453: Slightly altered UI for extensions listing, add alert if updates required
- #454: Fix sorting of dynamically added items
- #462: Empty DS output params show empty
<item>
element in XML - #463: Select Box Link styling bug when adding to a section
- #464: Duplicator no longer re-orderable
- #465: Adding a Select Box to section results in blank screen
- #467: Fixes error reporting bug
- #468: Author field can now be sorted by username, fixed toggling inconsistency
- #469: Documentation typo
- #470: Missing documentation param
- #474: Row selection - some colors changing on onMouseUp
- #475: File Upload Field: Validation rule is inserted as Field Label
- #477: Javascript fix for Remove File
- #478: Remove pagination from Navigation & Author Datasource types, rewrite Author DS logic.
- #479: Make the update notification more robust
- #482: Remove unnecessary Frontend static property
- #484: removing the Meiryo-font
- #485: Compatibility commit, Add this->Database back to the Field class
- #486: Symphony should refrain from altering default form elements wherever possible.
- #488: Select Box fields can now be required—also addresses #489
- #492: Fix for events without documentation—also addresses #495 and #497.
- #494: Optimised Language array
- #500: Make sure the FieldManager variable exists
- #505: Redirect to index page if the symphony-page variable is empty
- #507: Correct a typo—also addressing #520
- #510: Use example.com in documentation
- #512: Bump LICENCE year to 2011
- #513: Ensure that the port is stripped from HTTP_HOST when setting a cookie.
- #515: Some preventative filter checks
- #519: Proper checks for displaying Symphony Alerts—also addresses #523 and #524
- #521: Type checking $existing->dsParamFILTERS
- #522: Code elements were not styled properly within the section settings
- #526: Correctly handle each of the extension states on the Extensions page
- #527: Don't ignore the .gitignore!
- #529: Fix some translation calls in Adminstration.
- #531: Ensure that the pagination variables are numeric
- #539: Fix line height of system alerts
- #540: Regardless of whether or not 'r' actually works, changed for consistency
- #543: Fix AddDefaultAuthorAreas delegate
- #547: Add UNIQUE KEY indexes to fields that definitely should not have multiple rows in the database.
- #549: Add missing translation to Content/Pages
- #555: Consistency update, no fields are required by default. Moved Select, Upload, Date and Author fields to Sidebar location by default in Section Editor.
- #554: Use moz-focus-inner to make buttons styled consistently.
- #557: Allow " in Section names
- #558: Add in missing title element to Symphony Components + Preferences
- #560: Fix variable typo
- #561: Various style fixes—also addresses #551 and #553 and #562
- #564: The Date field will no longer always return a valid date when nonsense data is entered into it.
- #565: Added the AddElementstoAuthorForm delegate.
- #566: Add missing Email Gateway localisation strings.
- Fix for login pageAlert error
- Fix custom author language settings
- Fix ExceptionHandler bugs
- If dsParamPAGINATERESULTS is not set (e. g. on updated installs), use the system default 'yes'
- Fix language management: Load translations for extensions, Load custom author language
- Rename duplicate Page class in installer
- Keep fields accessible that are inside a orderable list. Before is wasn't possible to focus these elements.
- More robust pagination management
- Fix General::limitWords function
- Query logged user only once.
- Fix for URLs with unknown handles
- Add missing translation strings
- Fix a renamed variable bug for Navigation
- Do not submit With Selected post if no rows have been selected
- Copied flush function from Manager class (which SectionManager no longer extends it)
- All errors (including warnings) will be raised as Exceptions so they can be dealt with in a more managable way
- Remove extensions path from .gitignore, this was preventing submodules from being added
- Fix for addElementToHead index collisions
- Security improvement: Protect crucial files using htaccess rules.
- In some environments, chmod may fail and throw Exceptions, suppressing these warnings to restore pre 2.2 behaviour.
- fixed empty option logic for (un)required checkbox
- Fix a long running bug with the Dynamic XML DS where 'STOP' would always caused a failed Dynamic XML result to be because of timeout errors
- Fix no pagination on pre 2.2 datasources
- Fix the order of the AdministrationPage's XMLElements being appended to the Body so that the AdminPrePageGenerate delegate works again.
- Fix order of the Form being appended to the Contents in AdministrationPage
- Fix the exclude parameter in the General::listdirStructure and General::listStructure functions
- Add trailing slash to the translate AJAX call, prevents a 301
- Prevent the whole Exception object from ever being completely dumped.
Minor Updates
- CSS and markup has been cleaned up (details here)
- Extensions can now have multiple authors
- When Event priority is the same, sort the execution order alphabetically
- Add General::sanitize to the Select field
- Pass page XML by reference to allow extensions to manipulate it
- Updated deprecated eregi calls to use preg_match in General:sendEmail
- Lang: Remove unneeded functions Lang::add() and Lang::getBrowserLanguages()
- Lang: Remove unneeded dependencies on the Extension Manager
- Lang: Add localizeDate() and standardizeDate() functions
- Installer: Add new date formats, show full name of available languages
- Initialize Symphony language early enough to handle custom author settings correctly
- Admin Markup: Added field handle (type) names to HTML for easier field-specific styling of displaySettingsPanel content
- Admin Markup: Append ID and class to body element of backend pages. Specific page scan override ID with setBodyId() and can add classes with setBodyClass()
- Removed sort parameter from listDirStructure, it did nothing
- Localize and standardize month and day names across the system interface.
- Add date and time separator to config.
- Adjust Symphony object to load author and context information (the DOM needs to be ready for this!).
- Remove ArchiveZip class, it's not used by Symphony at all, Remove ParseXML class, it's not used by Symphony at all
- Updated XMLElement class to be more PHP5-like
- Added CRLF deprecation
- rewrite of the HTMLPage::__buildQueryString to use PHP5 functions
- only accept translations from activated language extensions
- Remove default transliteration in favour of the default English language file which contains the same data.
- Clean up of extension management
- Clean up of language management during and after install
- Allow listDirStructure to accept a filter, which in turn allows the ExtensionManager listAll function to now accept a filter
- Refactor of the XSLTProcess class
- Enhance JavaScript Context management and start documenting admin.js
- Port Symphony 3 tag plugin to Symphony 2
- Correctly add and merge context groups
- Filter rules have been renamed to reduce ambiguities
- Replace .odd with the equivalent CSS3 property
- new constant, SYMPHONY_URL added
- Make the Author Manager use a pool, reduces queries in particular with the Author field
- Added ExtensionManager accessor method to the Symphony class
- make sure that appendFormattedElement() creates new XMLElement() with (empty) attributes array
- Extra check for when an Author's default area is set to a section that has since been deleted and there are no other sections in the installation.
- Don't select things that have no input. Check for an array, in the case where nothing has been selected but the action is applied anyway
- New Configuration Option, strict_error_handling. Defaults to true which will raise E_WARNING to an exception, false will mimic the current Symphony behaviour of ignoring E_WARNING and just writing to the log. Extension developers should strive to prevent E_WARNING's using try/catch blocks. Added mainly for compatibility reasons.
- Row selection behavior has changed to mimic OS functionality more closely (e.g. Shift+click and Ctrl+click to select ranges and multiple single rows).