Symphony 2.3
Symphony 2.3 is the next major release that aims to improve the user experience of the Symphony backend, make JSON a new best friend and provide some timely updates to the Datasource and Field classes.
The 2.3 Migration Guide for Extension Developers is a must read for any extension developer.
A big thanks to all those who participated in the Symphony 2.3 Hackathon event and contributed with fixes and testing. Your contributions and testing help make Symphony a better product for us all and the team is very thankful!
Removed/deprecated
- #1333 - Removal of unused and potentially insecure
General::generatePassword
function - #1080 -
Widget::wrapFormElementWithError
has been renamed toWidget::Error
for brevity. The old function is still available until a later release, but it recommended to useWidget::Error
in future - #989 - The
Delete
delegate has been renamed toEntryPreDelete
for consistency - #783 - Deprecated
DateTimeObj->getTimeAgo()
- Removed
AddElementToFooter
delegate. - Removal of a number of deprecated and redundant properties and functions, dev notes #1 has the details
- The
.compact
class has been deprecated, use.two.columns
and.column
classes to achieve the same result moving forward
New Features
Complete UI Overhaul including dedicated pages for Datasources, Events and Utilities, Breadcrumbs to aid usability, the removal of the Footer.
- #1321 - Add
PagePostDelete
delegate - #1302 - A new delegate, DataSourcePostExecute to match DataSourcePreExcecute is now available
- #1193 - Update jQuery to 1.7.2
- #1054 - The Providers concept is now alive in Symphony. We are initially supporting new Datasource types, starting with the Remote Datasource. More information to come soon
- #991 - The Author field can now output parameters (the Author ID)
- #989 - A new delegate,
EntryPostDelete
is now available - #896 - When Select Box fields are required, force users to select an option instead of defaulting to the first option
- #879 - Allow
Field::processRawFieldData
function to return a$message
(breaks backwards compatibility) - #868 - Templates' naming conventions
- #866 - All templates can now be overridden by placing the template in the
/workspace/templates
folder - #840, #759 - Two new plugin's,
TimeAgo
andNotify
are available for Javascript developers. These abstract relative time functionality (eg. an hour ago) and allow a easy way to create Symphony Alerts with Javascript - #799 - UI: Headline Markup
- #795 - Add extra HTTP verb support to the Gateway class,
POST
,GET
,PUT
andDELETE
are all supported - #794 - Added
DataSourcePreExecute
delegate - #776, #616 - Add
text-overflow
to all<th>
elements on the entries table - #774 - A
PageManager
class now exists to provide an interface to Pages (and their Page Types). All 'file' based Managers now implement aFileResource
interface - #761 - The Checkbox field now is available as an Output Parameter
- #759 - A page can now have multiple alerts
- #739 - Introduction of two new delegates, PostQueryExecution and QueryExcecutionError which fire when SQL queries have been executed (and when they fail)
- #731 - Core fields now have a Publish Label setting. This is a cosmetic label that is only shown in the Publish area to allow a Field's name to change without having to update all datasources and application logic.
- #728 - Datasources now output multiple params in a new syntax,
$ds-handle.field-name
. The old syntax is still supported for the immediate future for backwards compatibility. - #727 -
AuthorManager::fetchByID
$limit
and$start
do not work - #722 - The
SectionManager
andFieldManager
fetch
method now supports an array of$ids
for the first parameter - #711 - Abstract REGEX filtering to a dedicated
Field->buildRegexSQL
function - #695 - The Dynamic XML Datasource can now consume JSON sources.
- #622 - The Installer and Updater have been streamlined and updated. Extensions are now installed during installation, localisation is improved and the updater logic is cleaner.
XMLElement
now two new methods,getChild(pos)
andgetChildByName(name, pos)
- A new page,
/ajax/handle/?string=Your String
is available to create handles using Symphony from Javascript - Complete user interface update across the entire backend (errors, forms, alerts and more!)
- CSS3 prefixes standardized throughout the stylesheets, fallback background colors introduced for better compatibility with IE and Opera
- Add
not:
filtering for the System: ID on Section Datasources. - All Javascript errors that occur on the backend are now logged to the Symphony log using
window.onerror
- The
FrontendPage
class now hassetEnv
which allows the environment to be updated by extensions - Two new Symphony accessors,
Symphony::Log()
andSymphony::Profiler()
are now available. Direct access to these variables is now private - Navigation DS is no more efficient by only querying for columns it uses and checks to see if a page has children
- Translations are now organised in a more performant way by only using regular expression where required (breaks backwards compatibility)
Bug Fixes
- #1329 - Vertical drawer styling fixes
- #1328 - Remove references to
AppendElementBelowView
delegate - #1325 - Fix Utility editor styling
- #1322 - The taglist field now respects the validator setting
- #1320 - Fix styling issue for some fields in the Section Editor
- #1318 - Fix private error on the installer
- #1317 - When changing datasource sources, reinitialise the output parameter naming
- #1316 - Use the updated
Configuration->write()
function instead of the deprecatedAdministration::instance()->saveConfig()
- #1314 - Only Log message when a language was selected but it could not be found
- #1307 - Alerts are now ordered by Severity
- #1305 - Fix Notify height crossbrowser (Firefox 12 was too high)
- #1303 - Fix duplicate queries from occurring when filtering on
id
orsystem: date
- #1299 - Fix error when Datasource did not have an Author
- #1293 - Fix placement of the error message when a field had a duplicate handle
- #1291 - Fix 'Save' access key on the System Preferences page
- #1290 - Fix error when datasource had no included elements
- #1289 - Fix localisation strings
- #1284 - The
DateTimeObj::validate
function will now attempt to validate the date according to Symphony's region settings - #1280 - Improved the responsiveness of collapsible animations, especially for Safari
- #1279 - Fix regression in the XSLT Utilities screen introduced by Symphony 2.2.5 when saving a utility twice that includes encoded characters
- #1277 - Fix updater not parsing RC rules correctly
- #1274 - Using the With Apply menu on a field that was added after the section was created (and entries existed) would of resulted in an error, this has been resolved
#1272 - Fix the
$root-page
parameter to be consistent with2.2.x
#1270 - Correct the Checkbox's
getExampleFormMarkup
output- #1267 - Fix installer not setting a default timezone
- #1266 - Don't sort extensions if there are no extensions
- #1264 - Fix PHP5.2 compatibility
- #1258 - Make duplicators listen for
input
andblur
events when updating the header text - #1254 - Add missing namespaces from the javascript plugins
- #1253, #1251 - Make javascript translations more robust
- #1241 - Fix taglist output parameter
- #1240 - Allow the installer to detect the server timezone instead of always defaulting to GMT
- #1237 - Fix installing extensions on Install if they don't exist
- #1227 - Pagination placement is now correctly after the entries table, not in the header
- #1225 - Fix Symphony error when an invalid date was passed to
DateTimeObj::format
- #1224 -
DateTimeObj::standardizeDate
now correctly translates names to English - #1214 - Add Symphony version to the extensions page
- #1211 - Fix underline issue on the Upload field
- #1205 - General alignment and colour improvements for the
.frame
class - #1180 - Correctly parse datasource dependencies when multiple parameters are used
- #1169 - Make directory output consistent with/without trailing slashes in the
General::listDirStructure
andGeneral::listStructure
functions - #1155 - New 'structure' navigation items will be added before Blueprints & System
- #1075 - Add accessors for
AdministrationPage->_context
(getContext
) andFrontendPage->_param
(Params
). It is recommended to use these as the variables will become private in the future - #1058 - Use page alerts in the backend when a user attempts to create an entry in a section that has no fields
- #1053 - Allow the '.' in multiple parameters for the /data/params XML
- #1039 - Some sanitising improvements for Section/Author/Page Managers
- #1025 - Show an appropriately worded message when there is no page as request, and no page name is returned for that page.
- #1023 - Improved publish pagination
- #1011 - Installer: permission errors silently fail
- #1000 - Ensure that all values passed to XMLElement, either via constructor or setValue are stored as a string
- #999 - Fix console error for the Pickable plugin
- #995 - Sanitize Select Box values for the Datasource Filter.
- #990 - Re initialize the Tags plugin when duplicators are created
- #986 - Fix UNIQUE KEY on the Author field to work correctly with 'Allow Multiple'
- #979 - Duplicate alert bars after successfully saving
- #977 - Sort data is now stored on the filesystem (Symphony main config file)
- #976 - Sections reordering AJAX fails with 500 error
- #972 - Improve setting response codes for when Apache is run as CGI instead of a module
- #963 - Fix grammatical error on the installer page
- #962 - Fix taglist being obscured in the Publish area
- #958 - Make Selectable Windows/Unix compatible
- #957 - Question mark in ds param output when creating new datasource
- #950 - Show default cursor on the top level navigation instead of the 'hand'
- #947 - Use the
@placeholder
attribute to improve usability on the Datasource and Page Editors - #946 - Utilities list in editor uses old blue highlight
- #945 - Make the Alert hyperlinks consistent case
- #939 - Fix odd padding/margin for
.triple
class - #938 - Only show the Edit Section button for Developers
- #937 - Add constraint to ensure that Author's email addresses are unique
- #932 - Table layout is now only set to
fixed
when necessary. Partially reverts Issue 914 - #931 - Ensure success Alert's only appear if there are no Error Alerts
- #929 - Implement Breadcrumbs for both the Pages index and editor
- #927 - Better error handling when field settings cannot be retrieved
- #923 -
DateTimeObj::validate
should validate timestamps too - #918 - File Upload as first Column does not link when no file is uploaded
- #916 - Fix broken regular expression in the
Session
class - #909 -
General::listStructure
parameter$strip_root
is broken - #907 - Revert 'x' icon to Remove Item text in duplicators
- #905 - Add white navigation highlighting
- #895 - Minor bug when running event with
expect-multiple
- #872 - Partial fix for Symphony breaking on some URL's. This is about as far as we'll go considering it is an edge case and the proposed solution negatively affects performance.
- #841 - Publish page filter '*' results in a Fatal Error
- #830 - Add numero and degree symbols to transliterations
- #826 - The
$current-path
param now no longer includes the query string - #808 - Invert order of the
<title>
elements - #792 - Update Mutex class to catch Exceptions. Should prevent issues that were randomly occuring with Dynamic XML Datasources
- #769 - Fix indentation of Dynamic Datasources to be consistent
- #751 -
General::realiseDirectory
is no longer subject toumask
nuances - #749 - Reset
entry_id
tonull
when using Event's Allow Multiple filter. This allows an event to contain new and existing entries - #745 - Configuration cleanup,
allow_page_subscription
,strict_error_handling
,character_set
,character_encoding
andruntime_character_set_alter
have been removed - #743 - All core fields now explicitly set their table collation/character set to be UTF-8
- #741 - Don't sanitize the value before creating a handle when grouping on the Input field.
- #737 - Correct inconsistent styling for select box field under section editor
- #731 - Simpler Publish Label implementation
- #724 - Automatically open collapsed fields that have errors
- #723 - Begin cleaning up datasource include files to use the new Datasource classes (ongoing work)
- #700 - Remove help cursor when hovering over captions.
- #693 - Add DATETIME column for Date fields, drop local/gmt fields
- The
FieldManager
,SectionManager
andPageManager
have some shiny new functions that attempt to consolidate bespoke queries used throughout Symphony. This is part of a long term to let managers take care of abstraction - Improved backwards compatibility with the Duplicator plugin
- Events created under Symphony 2.3 were not returning their XML, this has now been fixed
- Sanitize
$_GET['symphony-page]
for authenticated XSS protection - Add
X-Frame-Options: SAMEORIGIN
header as an anti clickjacking protection measure - Fix the reporting of errors for the Date field
- Images are now aligned to the middle of a table cell
- Add
.invalid
state for tabs, improved robustness of tab styling - Tweaks to the Drawer for niceness and neatness
- Fix
Entry::setDataFromPost
function recording errors - Various CSS fixes and tweaks throughout the system including the Installer, legends, small screen mode and consistent vendor prefixes
- The
General::sanitize
function now won't double encode strings if they are already encoded - Improve error message when the Dynamic DS fails to acquire a lock
- Fix the first page being shown as a breadcrumb item when creating new page with no parent
- Fix redirect after new Page creation
- Fix the
PageManager::delete()
function. This would previously throw MySQL errors for an unknown column - Fix error with the MySQL
__error()
function PageManager::fetchPageTypes
now only returns unique page types- New
General::ensureType
function that ensures parameters are of expected types. Currently implemented in theWidget
class - Remove legacy code from the Symphony Login page (Beta 5 gems)
- Update raw SQL queries to use their relevant Manager functions where possible
- Remove
basefont
,isindex
andframe
fromXMLElement
class. These are deprecated elements and shouldn't be in use - Make the
ExtensionManager
handle the namespace forextension.meta.xml
files - If multiple extensions subscribe to the same delegate these will now be called in alphabetical order instead of install order.
- SQL Injection prevention for the
PageManager
class - Authors DS no longer queries for
default_area
if it has not been set - Hiding a Section will no longer result in Author's seeing a Forbidden page when they attempt to view a entry from that Section. This reverts back to
2.1.x
behavior. - Fix
JSON
class support for PHP 5.2 compatibility - Pass
$param_pool
by reference in theiDatasource
interface - Ensure that user information is available via
Symphony.Context.get('user')
- Make sure Collapsible's namespace for local storage works across backend areas
- Add
save_state
setting to Duplicator which will be passed to Collapsible - The
AddCustomPreferenceFieldsets
delegate now passes$errors
making it possible to do validation on the Preferences page - Deleting datasources or events from the Datasource/Event Index pages now remove them from the pages they were attached to
- Position help text in
.invalid
styling correctly - Only parse language files that end in
.php
- Consistent CSS vendor prefixes for FF4, Safari 4, Chrome, IE9 support
- Fix regression in the Datasource Editor select to show correctly show 'Field Name (Input)' again
- Update fields to use
FieldManager::saveSettings()
, a preemptive update for Symphony 2.4 - Fix the default Forbidden page (when no
403
page was set in Symphony) - Add sanitizing to
/ajax/translate/
- Fix compatibility issue between Publish Filtering and the publish pages when sorting
- Process all fields in the Section Editor to get all the errors
- Fix missing sort options setting on the Select Box field
- Update invalid styling
- Add
overflow-wrap
rule in addition toword-wrap
for future proofing - Documentation updates, including #754, #824
Contributors






















