J2.5

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 Kephri)
+
*(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
New options for the menu links and pages themselves[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