▼ ❑ 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