Difference between revisions of "What's new in Joomla 2.5"
From Joomla! Documentation
(Document submission posted by Andrew Eddie for inclusion) |
m |
||
Line 46: | Line 46: | ||
*Atomic | *Atomic | ||
*Beez2 | *Beez2 | ||
− | *Bluestork (replaces | + | *(Administrator) Bluestork (replaces Khephri) |
− | *Hathor | + | *(Administrator) Hathor |
*Legacy layer in Milkyway | *Legacy layer in Milkyway | ||
*Backend supports layout overrides | *Backend supports layout overrides |
Revision as of 07:41, 18 May 2010
The "J2.5" namespace is a namespace scheduled to be archived. This page contains information for a Joomla! version which is no longer supported. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.
Lots of things.
...and:
- New Access Control System - Allows site administrators control over who can view and manage content.
- Unlimited Depth Organizational Model - Gives site administrators and content creators user-defined category levels that allow for the creation of a category tree with as many or as few levels for organizing articles and other content as needed.
- One-Click Extension Updates - Allows users to keep sites secure and controlled by simplifying the process of updating extensions.
- Semantic XHTML Layouts - Provides a better baseline for content presentation.
...and:
Administrators[edit]
Introduction[edit]
- Consistent UI
- Consistent Features
- Richer sample data
- IE 7+, Firefox 3.x, Safari 4.x
- PHP 5.2.4+
- MySQL 5.0.4 (allows for wide varchars)
Administrator[edit]
- Menu Changes
- Submenu consistency
Toolbar Features[edit]
- Save
- Save & Close
- Save & New
- Save as Copy
- Expired session will return to the page you were on then you got logged out (can be hit and miss)
- Most search filters allow you to search for a record id via [ id:123 ]
- "Parameters" are now referred to as "Options"
- Template Styles
- Integrated Trash Management
- Consistent archive support for most content
- Extension Installer Improvements
Module Enhancements[edit]
- Publish up and down
- Add option to display on all pages "except" selected
- Expanded Category System
- 404 Page Redirection
- Better Menu Management
- Alternative layouts for content, modules and menus (taken from the home template)
New Templates[edit]
- Atomic
- Beez2
- (Administrator) Bluestork (replaces Khephri)
- (Administrator) Hathor
- Legacy layer in Milkyway
- Backend supports layout overrides
- New Modules
- New Plugins
- Content Languages
- User Login Permissions
- Activate selected users from the user list now (and filter)
- Administrator registration approval
- Polls component removed
- New codemirror editor
SEO Improvements[edit]
- Meta decription and keywords for categories
- Articles can change the page title
Global Configuration[edit]
- Add site name to titles
- Default Access Level
- Set Metadata Language (buggy)
- Unicode Aliases
- Cookie domain and path
- User Setting moved to User Manager -> Options
- Media Settings moved to Media Manager -> Options
- Debug Modules - allows you to enabled to disable the tp=1 feature
- Server Timezone now a location, not an integer offset
- New Global Permissions tab
User Manager[edit]
- Can activate a user from the list now
- User can be assigned to multiple groups
- Manage user groups
- Manager content access levels
Media Manager[edit]
- Flash uploader fixed
Menu Manager[edit]
Menus List[edit]
- Rebuild button to press when you brick the menu
Items List[edit]
- Menus support the language filter
- Default now called Home
- Home is now clickable in the menu item list
- A separate home can be set for different languages
New batch operations[edit]
- Set access level
- Copy or move to another part of this or another menu
Edit Item[edit]
- Improved "Type" selector with human readable view and layout names
- Note field added
- New window target
- New Language assignment
- New Template style
[edit]
- Link title attribute
- Link CSS style
- Menu image is changed to a modal selector
- CSS class for page heading
- Page meta description
- Page meta keywords
- Robots options
Articles Manager[edit]
- Frontpage is now referred to a Featured
- Article manager uses submenu to quickly skip between articles , categories and featured
- Sections and categories are now merged.
Articles List[edit]
- "Missing move and copy; filter by author"
- New column to show language
- Filtering by language available
Article Edit[edit]
- Created by user now selected by modal popup
- New ability to set the page title from the article
- Define create, delete, edit and publishing permissions
Categories[edit]
Category List[edit]
- Nested view
- Filtering on language
Edit Category[edit]
- New note field
- Section replaced with ability to assign a parent category
- Ability to assign content language
New Options (not previously available in 1.5)[edit]
- Assign alternate layout
- Define create, delete, edit and publishing permissions
- Meta description
- Meta keywords
- Alternative page title
- Meta author
- Meta robots
Banners[edit]
Banners list[edit]
- Missing copy toolbar button
- New archive toolbar button
- New columns to show meta keywords, purchase type and language
- New filtering by client and language
Edit Banner[edit]
- New type toggle for Image or Custom (dynamically changes the available form fields)
- New alt text field for image
- New language field
New Options[edit]
- Ability to set the created date
- Ability to set start and finish publishing times
- Ability to set the purchase type
- Ability to track impressions
- Ability to track clicks
- Use own prefix ?
- Tags renamed to meta
- Contacts
- Messaging
- Newsfeeds
- Search
- Weblinks
- Redirect
Extensions Manager[edit]
Discover[edit]
- Module mgr
- Plugin Mgr
- Template Mgr
- Language mgr
Misc[edit]
- Auto create linked contact when creating new user ??
Access Controls[edit]
- Introduction
- User Groups
- Access Levels
- Permission Layers
- How Permissions are Inherited
- How to debrick your site
Developers[edit]
Introduction[edit]
- PHP 5.2.4+
- MySQL 5.0.4 (allows for wide varchars)
- IE7+, Firefox 3+, Safari 4+
- Focus on code consistency
- Focus on code reduction
Usage of PHP Native Functions where possible, for example:
- JSimpleXML extend the native simple_xml class
- JDate extends the DateTime class
- Native INI parser to load languages
Removed features[edit]
- ADODB compatibility methods in database classes
- DOMIT (unsupported XML library)
- Legacy mode (includes global $mainframe, etc)
- JTemplate (based on patTemplate)
- patTemplate (templating engine)
- PDF support
- PEAR libraries (due to license incompatibilities)
- phpgacl
- PHP 4.0 and 5.0 compatibility files
- XStandard Editor
Deprecated Features[edit]
- JController::_acoSection
- JController::_acoSectionValue
- JController::authorize()
- JController::setAccessControl()
- JDatabase::stderr()
- JDate::offest
- JDate::setOffset()
- JDate::toFormat() - use JDate::format() instead
- JException::toString()
- JFactory::getXMLParser()
- JHtmlGird::access()
- JHtmlImage::administrator - use JHtml::image instead
- JHtmlImage::site - use JHtml::image instead
- JHtmlList::accesslevel()
- JHtmlList::specificordering() - use JHtml::_('list.ordering')
- JHtmlList::category()
- JHtmlSelect::optgroup() - see JHtmlSelect::groupedList()
- JLanguage::_parseLanguageFiles - renamed to parseLanguageFiles
- JLanguage::_parseXMLLanguageFile - renamed to parseXMLLanguageFile
- JLanguage::_parseXMLLanguageFiles - renamed to parseXMLLanguageFiles
- JObject::toString - replaced with magic method
- JRegistry::getNameSpaces()
- JRegistry::getValue()
- JRegistry::makeNameSpace()
- JRegistry::setValue()
- JPane - See JHtmlSliders
- JParameter - replaced by JForm
- JSimpleXML, JSimpleXMLElement - Use JXMLElement instead, based on the native SimpleXMLElement
- JTable::canDelete() - models or controllers should be doing the access checks
- JTable::toXML()
- JToolbarHelper customX(), addNewX(), editListX(), editHtmlX(), editCssX(), deleteListX()
- JUser::authorize() - Use JUser::authorise()
- JUtility::dump()
- JUtility::array_unshift_ref() - Not needed in PHP 5
- JUtility::getHash() - Use JApplication::getHash()
- JUtility::getToken() - Use JFactory::getSession()->getFormToken()
- JUtility::isWinOS() - Use JApplication::isWinOS()
- JUtility::return_bytes() - See InstallerModelWarnings::return_bytes()
- JUtility::sendMail() - Use JFactory::getMailer()->sendMail()
- JUtility::sendAdminMail() - Use JFactory::getMailer()->sendMail()
- JXMLElement::data() - Provided for backward compatibility
- JXMLElement::getAttribute() - Provided for backward compatibility
Database[edit]
- JTable now automatically looks up the fields from the database schema
- New JDatabaseQuery - A chained CRUD query builder
- New JDatabase::getNextRow
- New JDatabase::getNextObject
- JDatabase::loadAssocList - Now takes a second argument to just return the value of a column
- JDatabase::setQuery - Added chaining support
Important Schema Changes[edit]
- New jos_extensions table to list all extensions
- Components table information moved and split between jos_extensions and jos_menu (special menu called _adminmenu)
The old phpgacl (jos_core_acl*) and jos_groups tables have been reworked into:
- jos_assets
- jos_user_usergroup_map
- jos_usergroups
- jos_viewlevels
- Archived state changed from a value of -1 to +2
Improved MVC[edit]
Models[edit]
- JModelList
- JModelForm
- JModelAdmin
- Format handling (eg JSON)
- Sub-controller handling
Controllers[edit]
- JControllerForm
- JControllerAdmin
- JController::setMessage takes second arg to set the message type
- JController can set the default view
- Added chaining support to several JController methods
Views[edit]
- Semantic core output
- Milkyway legacy layouts
- The old component parameters are not automatically added to the menu anymore. You need to explicitly put them in the layout XML files.
- The menu manager will now detect additional layouts for a given view in the default template.
Form API[edit]
Event manipulation[edit]
- onContentPrepareForm
- onContentPrepareFormData
Translation and Language Support[edit]
- Support for unicode slugs, eg, SEF URL's with Greek characters
- 3-letter languages now supported, xxx-XX
- All existing language keys have been refactored
INI files must validate[edit]
- Upper case key with no spaces, alphanumeric characters and underscores
- Quoted values
- Double quotes within literal strings must use _QQ_ in the form KEY="<a href="_QQ_"index.php"_QQ_">Click</a>"
Javascript translation layer[edit]
- See the flash uploader script for an example
Local extension language files
Language file API[edit]
- Pluralisation support
- Transliteration support for ASCII or Unicode slugs
- Ignore Search Words
- Minimum search word length
- Custom language overrides
- System language file to support administrator menu and installation (.sys.ini)
Language switcher[edit]
- Language Filter plugin enables language switching
- Sets the automatic filtering via JFactory::getApplication()->setLanguageFilter(true)
- A frontend component with language support would test JFactory::getApplication()->getLanguageFilter(), which returns the selected language code from the Languages Module
- The language field can be a language code for a single language, or "*" to be displayed for all languages
- Community extension for language maintenance com_localise
Extension management[edit]
New installation types[edit]
Libraries[edit]
- Must include an XML manifest where type="library"
- Can only be installed into a sub-folder of /libraries/
- Can extend parts of an existing library, eg /libraries/joomla/database/database/oracle.php
Packages multi-installer[edit]
- Must include an XML manifest where type="package"
- A package is a zip of zip's
New install script can be provided with 5 methods:
preflight[edit]
- Runs before anything is run and while the extracted files are in the uploaded temp folder
Could allow for:[edit]
- secondary extraction of custom zip's
- version checks to be performed
- halting the installer on an error
install / update[edit]
- Runs after the database scripts are executed
- If the extension is new, the install method is run
- If the extension exists then update method is run if method="upgrade", otherwise assumes that the extension is not meant to be upgradable
postflight[edit]
- Runs after the extension is registered in the database
- Is not run for the uninstall process (nothing left to do obviously)
Discover[edit]
- Does not do any file copying, only works with what it finds
- Performs preflight, install and postflight
- Developer of installer has to language files??
Update site[edit]
- Can publish an XML manifest on your site that can include individual extensions and extension sets.
XML Manifest Changes[edit]
- <install> is deprecated - use <extension>
- New <update> tag. Takes a <schemas> tag which can define <schemapath>
- <params> and <param> tags are deprecated, use <fields>, <fieldsets> and <field> instead
File changes[edit]
- Installation manifest must be the same name as the extension, eg com_foobar/foobar.xml This helps with discovery (otherwise the function has to go through all the files in the extension folder
- Plugins are now in folders like modules and components
- See SVN/tests/_data/installer_packages/ for complete examples of all extensions and manifests.
- The method="upgrade" will compare individual files in the original and incoming manifests and will remove files as appropriate. However, it will not remove differences in the <folder> tags.
- Future support for rollback
Events[edit]
New Events[edit]
- onBeforeRender
- onContentBeforeDelete
- onContentAfterDelete
- onContentChangeState
- onContentPrepareForm
- onContentPrepareFormData
- onExtensionBeforeInstall
- onExtensionBeforeUpdate
- onExtensionBeforeUninstall
- onExtensionAfterInstall
- onExtensionAfterUpdate
- onExtensionAfterUninstall
Renamed Events[edit]
- onContentAfterSave
- onContentAfterTitle
- onContentAfterDisplay
- onContentBeforeDisplay
- onContentBeforeSave
- onContentSearch
- onContentSearchAreas
- onUserAuthenticate
- onUserAfterDelete
- onUserAfterSave
- onUserBeforeDelete
- onUserBeforeSave
- onUserLogin
- onUserLogout
- All content events (except for search and search areas) now pass a 'context' as the first argument to alert the plugin as to what type of content is being passed. The plugin event may or may not heed this context.
Categories[edit]
- Component can provide custom options for its own categories via optional category.xml
- Supported via JTableNested
Access Controls[edit]
- A thing that can be controlled by permissions is registered in the assets table
- JTable handles this transparently via asset_id field
- For view permissions, support is as simple as adding
- $user = JFactory::getUser();
- $groups = implode(',', $user->authorisedLevels());
- $query->where('a.access IN (' . $groups . ')');
For action permissions, same format as in 1.5: $user->authorise($actionName, $assetName)
- OpenID library moved to plugin folder
- Geshi library moved to plugin folder
- JRegistry notes defaults to JSON (new format), dynamically converting existing data in INI format
- New JStream
- New JApplicationHelper::getComponentName
- Core icons moved to /media/
- Backward incompatible change to JEditor::display
- Added chaining support to JMail
- JFilterInput can no longer be called statically
- JHtml::image now supports relative paths
- All system images are overridable in the default template
- New JHtmlString
- Added wincache session handler for IIS
- New JFilterOutput::stripImages
- JPath::check takes second arg for separator (to pass to JPath::clean)
- Expanded configuration support through config.xml (multiple tabs)
Core actions[edit]
- core.login.site
- core.login.admin
- core.admin
- core.manage
- core.create
- core.edit
- core.edit.state
- core.delete
- Miscellaneous changes
Debug Plugin[edit]
- More tools for assisting with translation
Mootools 1.2/1.3[edit]
- Need to use document.id instead of $
Performance[edit]
Eliminate the usage of JTable for general browsing on the frontend[edit]
- Session drops the usage of JTable
- Item views use a dedicated question, not JTable->load
Known Issues[edit]
- Still Mootools 1.2. Will be upgrading to 1.3 during the beta process.
- Scaling issues to address
Notes[edit]
Releases[edit]
- Alpha 1: 22 June 2009
- Alpha 2: 25 October 2009
- Beta 1: 18 May 2010
- Beta 2: 2 weeks after Beta 1