Administrators

Introduction

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

Menu Changes

Submenu consistency

Toolbar Features

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

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

Atomic

Beez2

Bluestork (replaces Kephri)

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

Meta decription and keywords for categories

Articles can change the page title

Global Configuration

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

Can activate a user from the list now

User can be assigned to multiple groups

Manage user groups

Manager content access levels

Media Manager

Flash uploader fixed

Menu Manager

Menus List

Rebuild button to press when you brick the menu

Items List

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

Set access level

Copy or move to another part of this or another menu

Edit Item

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

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

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

** Missing move and copy; filter by author

New column to show language

Filtering by language available

Article 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

Category List

Nested view

Filtering on language

Edit Category

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)

Assign alternate layout

Define create, delete, edit and publishing permissions

Meta description

Meta keywords

Alternative page title

Meta author

Meta robots

Banners

Banners list

** 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

New type toggle for Image or Custom (dynamically changes the available form fields)

New alt text field for image

New language field

New Options

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

Discover

Module mgr

Plugin Mgr

Template Mgr

Language mgr

Misc

Auto create linked contact when creating new user ??

Access Controls

Introduction

User Groups

Access Levels

Permission Layers

How Permissions are Inherited

How to debrick your site

Developers

Introduction

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

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

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

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

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

Models

JModelList

JModelForm

JModelAdmin

Format handling (eg JSON)

Sub-controller handling

Controllers

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

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

Event manipulation

onContentPrepareForm

onContentPrepareFormData

Translation and Language Support

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

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

See the flash uploader script for an example

Local extension language files

Language file API

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

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

New installation types

Libraries

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

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

Runs before anything is run and while the extracted files are in the uploaded temp folder

Could allow for:

secondary extraction of custom zip's

version checks to be performed

halting the installer on an error

install / update

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

Runs after the extension is registered in the database

Is not run for the uninstall process (nothing left to do obviously)

Discover

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

Can publish an XML manifest on your site that can include individual extensions and extension sets.

XML Manifest Changes

<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

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

New Events

onBeforeRender

onContentBeforeDelete

onContentAfterDelete

onContentChangeState

onContentPrepareForm

onContentPrepareFormData

onExtensionBeforeInstall

onExtensionBeforeUpdate

onExtensionBeforeUninstall

onExtensionAfterInstall

onExtensionAfterUpdate

onExtensionAfterUninstall

Renamed Events

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

Component can provide custom options for its own categories via optional category.xml

Supported via JTableNested

Access Controls

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

core.login.site

core.login.admin

core.admin

core.manage

core.create

core.edit

core.edit.state

core.delete

Miscellaneous changes

Debug Plugin

More tools for assisting with translation

Mootools 1.2/1.3

Need to use document.id instead of $

Performance

Eliminate the usage of JTable for general browsing on the frontend

Session drops the usage of JTable

Item views use a dedicated question, not JTable->load

Known Issues

Still Mootools 1.2. Will be upgrading to 1.3 during the beta process.

Scaling issues to address

Notes

Releases

Alpha 1: 22 June 2009

Alpha 2: 25 October 2009

Beta 1: 18 May 2010

Beta 2: 2 weeks after Beta 1