[TYPO3-core] FYI: Raised Extbase and Fluid Version from 844 to 1181.

Sebastian KurfŸürst sebastian at typo3.org
Tue Sep 1 09:21:11 CEST 2009


Hello everybody,

I have just raised the extbase and fluid version from revision 844 to 1181.
This includes a big bunch of changes, including the persistence rewrite, 
improved and new typoscript configuration, automatic cache clearing, 
layout and partial support, configurable template path (via TS) and a 
lot more.

Below is first a list of the most important changes, and then below the 
full changelog (long!).

Greets,
Sebastian

********************** short changelog *********************************

* This commit merges the rewrite of the persistence layer back to trunk. 
It will probably break your existing installation. Please check out 
fluid and blog_example again.
* Change: Using $GLOBALS['EXEC_TIME'] instead of time(); resolves #3782
* Implemented cache clearing by TYPO3s clearCacheCmd.
[!!!][+FEATURE] Extbase (Persistence): Improved handling of PID columns. 
There are now only three concepts explaining the mapping of records to 
pages. 1) For FETCHING objects, a configurable list of pages is used. 
This list is configurable inside the FE plugin options (startingpoint). 
If that is empty, fall back to "General record storage page" of the 
current page. If empty, fall back to the storage PIDs of the website. 
(getStorageSiterootPids). 2) PIDs of UPDATED objects are never changed 
by the system. Of course, you can include a "pid" property inside your 
domain model and thus change the PID explicitely. 3) The PID of INSERTED 
objects is determined by a TypoScript setting: 
[extensionConfiguration].classes.MODEL_CLASSNAME.newRecordStoragePid. If 
this setting is empty, the first entry of the PID list used for fetching 
objects is used. NOTE: It is the user's responsibility that all _added_ 
records are fetchable as well. THIS CHANGE BREAKS BACKWARDS 
COMPATIBILITY: If no storage PID is explicitely defined, the method 
"getStorageSiterootPids" is used. (Before, it used the current page.)
[+FEATURE] Extbase (Persistence): Implemented ordering (eg. 
$query->setOrderings(array('name' => 
Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING));
[~CONF] Extbase: Changed the initialization of the Plugin and Extbase 
Settings; These are now initialized in the Dispatcher.
[+FEATURE] Extbase: Added generic Domain Models FrontendUser and 
FrontendUserGroup; added Repository for FrontendUser
[+BUGFIX] Extbase (Persistence): Fixed cache clearing. Now it works and 
takes pageTSConfig into account.
[!!!] [~TASK] BlogExample (Domain): The directory structure of the 
Domain has changed accordting to changes in FLOW3. The Domain folder 
holds now different folders for the Model, the Repository, and-if 
needed-the Validator, and Service. Please Change your folder structure 
AND your class names!
[!!!] [~TASK] Extbase (Domain): The directory structure of the Domain 
has changed accordting to changes in FLOW3 (see above). Please Change 
your class names!
[FEATURE] Extbase (Persistence): Comma separated lists are now fully 
supported to store relations - although this way is deprecated. Use 
foreign keys instead.
[!!!][~TASK] Extbase (Persistence): All Query Settings are now stored 
inside a QuerySettings object. It is created and injected by the Query 
Factory with the default setting. To change the settings, you have to 
say $query->getQuerySettings(); an manipulate them before executing the 
Query. The API functions are now called setRespectStoragePageState(TRUE) 
for PID checking, and setCheckVisibilityState(TRUE) for adding enable 
fields. The method names may change in future!
[!!!][+FEATURE] Extbase (Settings): Custom settings now reside in 
plugin.tx_extensionnname.settings instead of plugin.tx_extensionname. 
THIS IS A BREAKING CHANGE, big impact as every Extension using settings 
needs to be adjusted. Resolves #4177
[!!!]?\027[TASK] Extbase (Dispatcher): Renamed 
Tx_Extbase_Dispatcher::getSettings() to 
Tx_Extbase_Dispatcher::getExtbaseFrameworkConfiguration(). THIS IS A 
BREAKING CHANGE, but of a non-public API. Related to #4177
[!!!][~TASK] Extbase (Dispatcher): committed initial version of 
BackendDispatcher
[FEATURE] Fluid (TemplateView): Made templateRootPath configurable via 
TypoScript "view.templateRootPath". Resolves #3296.
!!! [~TASK] Extbase (MVC): Rewrite of URIBuilder. Renaming to 
"UriBuilder" and big restructuruing & refactoring. If you used 
UriBuilder directly, please check your code; this is a breaking change. 
Otherwise updating should work smoothly. Resolves #4030. Resolves #3981

Fluid:
[+FEATURE] Fluid: Added Layout and Partial support. This adds 
<f:render>, <f:layout> and <f:section> as ViewHelpers. See the blog 
example for an example.







************************* full changelog ****************************
Extbase:
[+FEAT]: Added TypoScript converter method (to convert from new TS to 
classic TS). Fixes #3293.
* This commit merges the rewrite of the persistence layer back to trunk. 
It will probably break your existing installation. Please check out 
fluid and blog_example again.
* Implemented an Object Manager (a wrapper for t3lib_div::makeInstance())
* !!! Backport of the Query and the Query Object Model from FLOW3.
* !!! Removed Repository->fetch*()
* Splited the functionality of the Object Relational Mapper into the 
Persistence Backend, the Data Mapper and the SQL Storage Backend.
* Implemented the Lazy Loading Proxy.
* supported Request types is now Tx_Extbase_MVC_Request instead of 
Tx_Extbase_MVC_Web_Request.
* Changed _reconstituteProperty() to _setProperty() (according to FLOW3).
* Added _getProperty() to the Domain Object.
* The Dispatcher now instanciates and uses a PersistenceManager to 
commit changes.
* Added TypoScript converter method (to convert from new TS to classic 
TS). Fixes #3293.
* Renamed SqlBackend to Typo3DbBackend
* Now using constants in Tx_Extbase_Persistence_PropertyType instead of 
Tx_Extbase_Persistence_Mapper_ColumnMap
* Improved conversion from table value to property value
* Persistence_Repository: findByUid() checks now for positive integer
* Fixed: Only Aggregate Roots are now registered as Reconstituted Objects
* !!! Added _isNew() to the Domain Object Interface
* Revision of the Persistence Backend (CRUD operations work now - again)
* Fixed Query Object Model "UpperCase"
* Implemented addRow(), deleteRow() and updateRow()
* Fixed: _memorizeCleanState() now clones a property value if it is an 
object
* Argument->findObjectByUid() memorizes now the clean state (todo: check 
if the object is an Aggregate Root)
* Removed unnecessary method getRelations()
* Fixed wrong class name of PropertyError; resolves issue #3855
* Fixed typo in Persistence Query; resolves issue #3831
* Changed: Equivalent Value Objects (all properties are equal) are now 
persisted only once
* Backport and enhanced several Unit Tests (not finished yet)
* Enhanced Base Test Case
* Changed signature of hasValueObject()
* Changed: hasValueObject() returns the uid of the already persisted 
value object - if any
* Fixed: relation tables are now filled with the right values if a value 
object already exists in the database
* Changed: The Persistence Manager and the Query Factory are now 
"injected" into the Arguments and Argument
* Deleted obsolete files
* Change: Using $GLOBALS['EXEC_TIME'] instead of time(); resolves #3782
* Fixed: back-ported LiteralInterface
* Removed unused class Literal
* Added check for having the same number of $parameters and placeholders 
("?") in a statement
* Biggest issue: Objects must be registered manually as reconstituted in 
the Persistence Session. I think this should be done by the data mapper.
* Fixed typo in Action Controller; Resolves #3531
* Fixed internal method _memorizeCleanState($propertyName); nothing was 
memorized if $property name was set
* Removed call to $GLOBASL['TYPO3_DB']->fullQuoteString() as this should 
be the job of the persistence backend
* Fixed Query and Query Object Model Factory (patch contributed by Frans 
van der Veen); Resolves #3879
* Removed obsolete commit() method in Session
* Fixed invalid SQL without enableFields; Resolves #3826
* First step taken to implement the parsing of Orderings
* Implemented cache clearing by TYPO3s clearCacheCmd. This is not 
particularily fine-grained, but works. references #3421
* Made AbstractEntity have a different compare method inside _isDirty() 
which compares objects in-depth, and not just their references.
* Changed Argument: Check for is_object($result) instead of $result !== 
NULL prevents fatal error; empty result should be catched anyway
* Change: The database handler is now injected to the Typo3DbBackend 
(for better testability)
* bindVariable() uses now a unique variable name; resolves #3885
* Typo3DbBackend: the variable $sql (and its subparts) are now 
initialized as arrays (related to #3885 and #3826)
* Typo3DbBackend: Implemented a class variable $useEnableFields (by now 
only used for better testability)
* The Persistence Backend will now be injected via setter injection 
rather than via constructor injection. The Persistence Manager can be 
reached at any "place" via 
t3lib_div::makeInstance('Tx_Extbase_Persistence_Manager') after its 
first initialization (in the Dispatcher).
* Implemented a static function 
Tx_Extbase_Dispatcher::getPersistenceManager()
* Changed Repository to invoke 
Tx_Extbase_Dispatcher::getPersistenceManager()
* These changes should enable the Repository to be called from outside 
(itemProcFunc); related to #3899
* Implemented the handling of values === NULL in Queries; related to 
#3838 (needs feed-back)
* Changed all calls to 
t3lib_div::makeInstance('Tx_Extbase_Persistence_Manager') to 
Tx_Extbase_Dispatcher::getPersistenceManager()
* Fixed conversion of DateTime objects in Query values
* Fixed "NOT" ( from "(NOT foo='bar')" to "NOT (foor='bar')" )
* Fixed issue that cache is tried to be cleared even if a relation is 
changed
[+FEATURE] Extbase (Persistence): Added autopopulation of PID column and 
use of selected storage folder. Resolves #3698
[TASK] Extbase (Persistence): Added an exception in case of an SQL error 
by the database.
[+BUGFIX] Extbase (Persistence): Only set the PID in case it is not part 
of your domain object.
[+BUGFIX] Extbase (AbstractDomainObject): Made Identifier return NULL in 
case it is not set yet.
[+FEATURE] Extbase (Persistence): Implemented ordering (eg. 
$query->setOrderings(array('name' => 
Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING));
[+BUGFIX] Extbase (Persistence): Now, _isDirty() works correctly if 
checking a single property only. Fixes #3907.
[+FEATURE] Extbase (Dispatcher): dispatcher::extractStoragePageId() now 
takes pages storage_pid into account. Relates to #3698
[+BUGFIX][~API] Extbase (Persistence): Cleaned up implementation of 
TYPO3-specific query options, like PID checking or enableFields. CHANGES 
API! $this->createQuery(FALSE) is not available anymore inside the 
repository. Instead, create the query and call 
$query->useStoragePage(FALSE)->... instead. Related to #3698. Related to 
#3912.
[+BUGFIX] Extbase (Configuration): Tx_Extbase_Configuration_Manager is 
not t3lib_Singleton anymore, as it needs to be Plugin-local. This fixes 
a strange problem experienced by Steffen Kamper.
[+BUGFIX][~API]: Extbase (Utility): Fixed caching issue by providing two 
methods to register a plugin now: 
Tx_Extbase_Utility_Plugin::configureDispatcher() invoked in 
ext_localconf.php and Tx_Extbase_Utility_Plugin::registerPlugin() 
invoked in ext_tables.php. Thanks to Xavier Persegures who provided the 
patch.
[!!! +FEATURE] Extbase (DataMapper, DataMap): Extbase resolves the table 
name for a given class name. Extbase searches for configured mappings by 
crawling thorough the extended classes. As default, it takes the class 
name in lower case as table name. The configuration of the mapping can 
be found in EXT:extbase/Configuration/Settings/setup.txt. The place for 
the settings (plugin.tx_extbase) is only a preliminary solution. PLEASE 
INSERT THE STATIC TEMPLATE!
[~CONF] Extbase: Changed the initialization of the Plugin and Extbase 
Settings; These are now initialized in the Dispatcher; The Extbase 
settings are now available through Tx_Extbase_Dispatcher::getSettings(); 
related to #3665
[+FEATURE] Extbase: The data array of the cObj is availabe through the 
settings of extbase (this needs further discussion); related to #
[+BUGFIX] Extbase: Fixed FlexFormSettings with section (thanks to 
Steffen Kamper); Resolves #3949
[+TASK] Extbase: Moved method postProcessSettings() to the Configuration 
Manager and made it static
[+FEATURE] Extbase: Added generic Domain Models FrontendUser and 
FrontendUserGroup; added Repository for FrontendUser (not fully 
functional by now)
[+BUGFIX] Extbase (Argument): Renamed setNewValidatorChain() to 
setNewValidatorConjunction()
[+TASK] Extbase (URIBuilder): Removed unnecessary require_once statements
[~TASK] Extbase: Changed the handling of storagePid; this setting is now 
available through the Extbase Settings 
Tx_Extbase_Dispatcher::getSettings() (this may change in future); 
related to #3698
[!!! ~CONF] Extbase: The default setting for the storagePid is now 0; 
related to #3698
[+TASK] Extbase: Moved extractStoragePageId() to the Configuration 
Manager and renamed it
[+TASK] Extbase (PersistenceManager): Removed the reference to the 
DataMapper
[+FEATURE] Extbase: Implemented limit and offset for the Query object; 
resolves #3874
[+BUGFIX] Extbase (Typo3DbBackend: Fixed statement creation of 
hasValueObject(); resolves #3939
[!!! ~API] Extbase: Removed Typo3Query and its interface; integrated 
methods in Query object (will be integrated in the extbase settings in 
the next step)
[+BUGFIX] Extbase (Typo3DbBackend): Fixed issue with question mark in 
property; resolves #3943
[+TASK] Extbase: Added Extbase Settings Configuration/Settings/setup.txt 
(defines table to object mapping); please include the static template 
(only a preliminary solution)
[-TASK] Extbase: Removed Typo3Query files (follow up)
[~CONF] Extbase (Configuration): The configuration is now stored in 
ext_typoscript_setup.txt. The TS path is now "config.tx_extbase.". You 
don't need to include a static template anymore. But clear your caches, 
please.
[+BUGFIX] Extbase (Utility): Fixed a really severe caching issue. The TS 
conditions were wrong - mixed up = and :. I'm really happy I've found 
this :-)
[+FEATURE] Extbase (MVC): Added automatic form highlighting if there is 
an error. Fixes #3861.
[+TASK] Extbase (Property): Updated Property Mapper to latest FLOW3 version.
[+BUGFIX] Extbase (Persistence): Fixed cache clearing. Now it works and 
takes pageTSConfig into account.
[+FEATURE] Extbase (Persistence): Implemented support for 
mm_opposite_field now. Still needs some testing in the wild. Relates to 
#3947.
[!!!] [~TASK] BlogExample (Domain): The directory structure of the 
Domain has changed accordting to changes in FLOW3. The Domain folder 
holds now different folders for the Model, the Repository, and-if 
needed-the Validator, and Service. Please Change your folder structure 
AND your class names!
[!!!] [~TASK] Extbase (Domain): The directory structure of the Domain 
has changed accordting to changes in FLOW3 (see above). Please Change 
your class names!
[FEATURE] Extbase (Domain): Implemented FrontendUserGroup (no comma 
separated lists yet, only on usergroup possible)
[+BUGFIX] Extbase (Persistence): Fixed wrong tablenames in *_mm tables. 
Thanks to Christian Mueller who provided a patch. Resolves #3974.
[+BUGFIX] Extbase (Persistence): Fixed Query::lessThan, 
Query::lessThanOrEqual, Query::greaterThan. Resolves #3960.
[~FEATURE] Extbase (Persistence): Support for mm_opposite_field. Related 
to #3947.
[-API] Extbase (DomainModel): Removed getIdentifier() from 
AbstractDomainObject.
[-TASK] Extbase (Persistence): Removed unused DataMapperInterface.
[+API] Extbase (Persistence): Re-added possibility to set 
"useStoragePageId" in $queryFactory->create($className, $useStoragePageId).
[FEATURE] Extbase (Persistence): Comma separated lists are now fully 
supported to store relations - although this way is deprecated. Use 
foreign keys instead.
[BUGFIX] Extbase (Persistence): Related objects are now deleted if they 
were detached from the parent object (e.g. $blog->removePost($post)). 
Still pending: Strategy for recursive deletions.
[BUGFIX] Extbase (Persistence): Adding relation to an ownerless Record 
works now. Resolves #4011.
[-TASK] Extbase (Persistence): Removed $useStoragePid from the method 
signature of $queryFactory->create($className).
[!!!][~TASK] Extbase (Persistence): All Query Settings are now stored 
inside a QuerySettings object. It is created and injected by the Query 
Factory with the default setting. To change the settings, you have to 
say $query->getQuerySettings(); an manipulate them before executing the 
Query. The API functions are now called setRespectStoragePageState(TRUE) 
for PID checking, and setCheckVisibilityState(TRUE) for adding enable 
fields. The method names may change in future!
[TASK] Extbase (Persistence): Improved parsing of the PID query part.
[TASK] Extbase (MVC): An Object Manager is now injected into the 
Abstract Controller (better testability).
[!!!][BUGFIX] Extbase (Domain): Username and password was not set after 
passing it to the constructor. CAUTION: Auto-Populating the BlogExample 
will add Frontend Users to your installation. Don't use the BlogExample 
in productive environments! No username and password will be set.
[TASK] Extbase (Domain): Optional properties are now set to a default value.
[TASK] Extbase (DomainObject): Added an internal method 
_getCleanProperties().
[TASK] Extbase (Persistence): The Lazy Loading 
Proxy->_loadRealInstance() invokes now 
$dataMapper->fetchRelatedObjects(). Removed duplicated code.
[+FEATURE] Extbase (Persistence): Implemented support for MM_table_where.
[~CONFIGURATION] extbase: Changed from "plugin" to "fe" in ext_emconf.php.
[TASK] Extbase: Revised and cleaned up autoloader. Autoloader is now 
registered inside the Dispatcher (at construction time). The autoloader 
of Extbase is only invoked for extension classes. The core autoloader 
takes care of the Extbase and Fluid classes (auto-generated 
ext_autoload.php file). Medium performance improvement.
[~TASK] Extbase (Utility): Improved the conversion CamelCase to 
under_scored. Implemented Ulility methods. Small performance improvement.
[BUGFIX] Extbase (Persistence): Fixed issue if MM_match_fields was not 
set. Checks for array now. Reported by Joerg Schoppet. Resolves #4072.
[TASK] Extbase (Persistence): Cleaned-up the Persistence Backend. 
Deleted unused methods deleteRelatedObjects() and 
deleteRelationInRelationTable(). They will be re-implemented later on.
[+FEATURE] Extbase (Utility): Adapted the 
createAutoloadRegistryForExtension() feature from exdeveval.
[BUGFIX] Extbase (Persistence): TYPO3DbBackend->addEnableFieldsStatement 
is now Backend aware (patch provided by Xavier). Resolves #4081.
[!!!][+FEATURE] Extbase (Persistence): Improved handling of PID columns. 
There are now only three concepts explaining the mapping of records to 
pages. 1) For FETCHING objects, a configurable list of pages is used. 
This list is configurable inside the FE plugin options (startingpoint). 
If that is empty, fall back to "General record storage page" of the 
current page. If empty, fall back to the storage PIDs of the website. 
(getStorageSiterootPids). 2) PIDs of UPDATED objects are never changed 
by the system. Of course, you can include a "pid" property inside your 
domain model and thus change the PID explicitely. 3) The PID of INSERTED 
objects is determined by a TypoScript setting: 
[extensionConfiguration].classes.MODEL_CLASSNAME.newRecordStoragePid. If 
this setting is empty, the first entry of the PID list used for fetching 
objects is used. NOTE: It is the user's responsibility that all _added_ 
records are fetchable as well. THIS CHANGE BREAKS BACKWARDS 
COMPATIBILITY: If no storage PID is explicitely defined, the method 
"getStorageSiterootPids" is used. (Before, it used the current page.)
[TASK] Extbase (View): Added assign() and assignMultiple() to 
AbstractView, as it is in FLOW3
[~BUGFIX] Configuration: Fixed storagePid detection in Configuration 
Manager. This fixes #4087
[!!!] [TASK] Extbase (Persistence): Renamed 
Persistence_Backend->getUidByObject to getIdentifierByObject to be 
compatible with FLOW3 (and to ease backporting). This change is 
non-backwards-compatible, but it is unlikely that you use this method in 
custom code.
[BUGFIX] use cache table "cache_extbase_reflection" as default for 
extbase, make it clearable with "clear all cache" command. Resolves #4086
[BUGFIX] moved cache definition for FE to ext_localconf
[!!!][TASK] Extbase (Persistence): Renamed two QuerySettings: from 
"setRespectStoragePageState()" to "setRespectStoragePage()" and from 
"setCheckVisibilityState()" to "setRespectEnableFields()". This change 
is non-backwards-compatible! Please adjust your repositories accordingly.
[TASK] Extbase: Removed Extbase_Exception and renamed everything to use 
Extbase_MVC_Exception instead. This is consistent with FLOW3.
[TASK] Extbase: Removed @internal annotations and started with @api 
annotations. This is still work in progress. Related to #3917.
[TASK] Extbase (Persistence): Removed PreparedQuery for now, as it is 
not used at all.
[TASK] Extbase (Persistence): Removed work-in-progress TCEMAIN hook as 
it was not working reliably anyways.
[TASK] Extbase: Added all @api tags and cleaned up doc comments. 
Resolves #3917.
[TASK] Extbase (Documentation): Added preliminary (and really ugly) 
script to render API documentation
[TASK] Extbase (Documentation): Added generated API documentation so 
people can have a look at them right now. I think we will still move 
that API documentation to a different place before final release. 
Relates to #3917.
[+BUGFIX] Extbase (Persistence): Fixed a typo in the Typo3QuerySettings. 
Thanks to Mathias Gisch for pointing this out! Resolves #4164.
[~BUG] Extbase (Persistence): The findByFooBar maps the property name to 
column name (fooBar -> foo_bar) now. Renamed method 
DataMapper::convertClassNameToSelectorName to 
DataMapper::convertClassNameToTableName(). Added Method 
DataMapper::convertPropertyNameToColumnName(). Resolves #4033.
[+FEATURE] Extbase (Persistence): Parameters can be passed separately to 
Query::statement($statement, array $parameters, $language) now. This 
enables us to build prepared queries in the Storage Backend. Related to 
#4163.
[~BUG] Extbase (Validation): Changed TextValidator to allow special 
characters and newlines (backported patch from FLOW3). Still not secure 
enough! Related to #4111.
[!!!][+FEATURE] Extbase (Settings): Custom settings now reside in 
plugin.tx_extensionnname.settings instead of plugin.tx_extensionname. 
THIS IS A BREAKING CHANGE, big impact as every Extension using settings 
needs to be adjusted. Resolves #4177
[!!!][+FEATURE] Extbase (Settings): Persistence settings now reside in 
plugin.tx_extensionnname.persistence instead of tt_content.list.20. ... 
THIS IS A BREAKING CHANGE, but of a really new feature. Resolves #4177
[!!!]?\027[TASK] Extbase (Dispatcher): Renamed 
Tx_Extbase_Dispatcher::getSettings() to 
Tx_Extbase_Dispatcher::getExtbaseFrameworkConfiguration(). THIS IS A 
BREAKING CHANGE, but of a non-public API. Related to #4177
[TASK] Extbase (Configuration): Cleaned up configuration manager and 
renamed methods there.
[+FEATURE] Extbase (MVC): Added support of @dontvalidate annotations. 
Relates to #4178.
[TASK] Extbase (ValidatorResolver): Fixed order of 
ConjunctionValidators. Related to #4178
[+FEATURE] Extbase (Repository): Implemented an "Update" method. this is 
work in progress. Related to #4178.
[+FEATURE] Extbase (DomainObject): Added _isClone() property on abstract 
domain object. Relates to #4178.
[TASK] Extbase (Utility): Extracted cache clearing methods into new 
Utility class
[+BUGFIX] Extbase (MVC): The cache is now cleared if ActionController's 
errorAction is called. Resolves #4185.
[+BUGFIX] Extbase (Configuration): Cleaned up the ConfigurationManager a 
bit. Resolves #4181.
[+BUGFIX] Extbase (AbstractDomainObject): Fixed typo introduced in last 
commit.
[+BUGFIX] Extbase (Forms): Added default CSS for displaying wrong form 
values
[+FEATURE] Extbase (MVC): Added "absolute" argument to 
URIBuilder::URIFor() and URIBuilder::typolinkURI. Relates to #4202.
[+BUGFIX] Extbase (Persistence): For now fixed the RELATION_HAS_ONE, but 
acutally this is not yet the correct solution. Related to #4083.
[+BUGFIX] Extbase (MVC): Fixed wrong exception name. Resolves #4200.
[!!!][~TASK] Extbase (Utility): Moved configureDispatcher() and 
registerPlugin() from Tx_Extbase_Utility_Plugin to 
Tx_Extbase_Utility_Extension. THIS WILL BREAK YOUR EXISTING EXTENSIONS. 
Please Rename all occurrences of Tx_Extbase_Utility_Plugin  to 
Tx_Extbase_Utility_Extension and clear your caches. Resolves #4162.
[!!!][~BUGFIX] Extbase (Persistence): Restructured responsibilities of 
Repository and Session. You don't need to register reconstituted, added, 
and removed objects in your Repositories anymore. Please remove all 
occurrences of 
$this->persistenceManager->getSession()->register*Object($object). 
Resolves #3916.
[+FEATURE] Extbase (Utility): Added registerModule() to 
Tx_Extbase_Utility_Extension. Related to #3995.
[+TASK] Extbase (DomainModel): Added (internal) method _hasProperty() to 
AbstractDomainModel.
[~TASK] Extbase (Property): Improved mapping of properties (not finished 
yet).
[~BUGFIX] Extbase (MVC): The RequestBuilder now merges $_GET and $_POST 
using t3lib_div::_GPmerged(). It expects the $_POST parameter to be 
namespaced now. Resolves #3316.
[+FEATURE] Extbase(Reflection): Backported the ClassSchema from FLOW3. 
This was necessary to support the Property Mapper.
[!!!][~TASK] Extbase (Dispatcher): committed initial version of 
BackendDispatcher
[+BUGFIX] Extbase (Persistence): Check for existing Value Objects 
respects now deleted and hidden. Rsolves #4243.
[+BUGFIX] Extbase (Persistence): The properties are now fully quoted 
(t3lib_db::fullQuoteStr). This may not work with DBAL, because we do not 
pass a table name.
[~BUGFIX] Extbase {Persistence): Added a check if 
$columnConfiguration['config'] exits in DataMap:: setRelations(). 
Related to #4203.
Bugfix: #4252: Tx_Extbase_Utility_Extension::setModuleConfiguration() 
expects parameters 3 and 4 to be references but gets values from 
t3lib_loadmodules
[!!!][~API] Extbase: Renamed configureDispatcher() to configurePlugin() 
in order to distinguish between plugins and modules. Renamed 
setModuleConfiguration() to  configureModule(). Please update your file 
ext_localconf.php! In order to use backend modules you have to apply the 
actual patches of #11651 and #11652!
[!!!][~API] Extbase (Utility): Moved all methods to convert TypoScript 
array to Utility TypoScript. Renamed postProcessSettions() to 
convertTypoScriptArrayToPlainArray() and convertExtbaseToClassicTS() to 
convertPlainArrayToTypoScriptArray().
[~TASK] Extbase: Moved folder Scripts to Resources.
[~TASK] Extbase (Utility): Extracted the autoload function to an own 
utility class.
[-TASK] Extbase (MVC): Removed unnecessary Standard Controller.
[~TASK] Extbase: Moved methods from Backend Dispatcher to the Dispatcher 
and removed the Backend Dispatcher.
[+FEATURE] Extbase (MVC): It is now possible to have different templates 
for different formats (".html", ".json"). We do not have an appropriate 
$_GET parameter (in combination with RealURL or CoolURI. Relates to #4120.
[+TASK] Extbase (MVC): Added interfaces for Request and Response.
[+BUGFIX] Extbase (Persistence): Fixed a problem with legacy tables 
where the foreign_class was not set and therefore no Data Map was found. 
Related to #4148.
[+FEATURE] Extbase (MVC): It is now possible to pass a template format 
(like html, json, txt or pdf) in the $_GET parameters. Example from the 
BlogExample: "&tx_blogexample_pi1[format]=txt". Resolves #4120.
[+BUGFIX] Extbase: Fixed array keys. Thanks to Xavier Perseguers who 
provided the patch. Related to #3995.
[+TASK] Extbase (MVC): added initializeView() to ViewInterface, it's 
expected in ActionController and unit tests
[~BUGFIX] Extbase (Utility): renamed non-existing variable $file to 
$filePath in extractClassNames()
[~BUGFIX] Extbase (Tests): Fixed autoload registering in 
Tx_Extbase_Base_testcase
[~BUGFIX] Extbase (Tests): fixed failing unit tests. @Jochen: please 
have a look at this, I just did the smallest possible changes to get the 
tests "green"
[BUGFIX] Extbase (Reflection): Made class schemas return correct 
information. Before, it only worked if the reflection cache was already 
filled. Related to #4357.
[FEATURE] Fluid (TemplateView): Made templateRootPath configurable via 
TypoScript "view.templateRootPath". Resolves #3296.
[TASK] Extbase (MVC): Removed subextensionName for now. We will 
implement this cleanly after 4.3 is out.


Fluid:
[+FIX] (ViewHelpers): Removed trailing whitespace in FormViewHelper, 
fixes #3814
* Adjustments to make it work with the new persistence rewrite
[+FEATURE] Fluid (ViewHelpers): Implemented automatic error handling for 
forms. Relates to #3861
[+FEATURE] Fluid: Added ext_autoload.php. The core autoloader uses this 
file as a registry.
[~TASK] Fluid: Removed @internal annotations and added @api annotations
[~TASK] Fluid: Now, one ViewHelperNode only ever uses one instance of a 
ViewHelper
[+BUGFIX] Fluid (View): Refactored TemplateView, which is now 
automatically backported to FLOW3
[+FEATURE] Fluid: Added Layout and Partial support. This adds 
<f:render>, <f:layout> and <f:section> as ViewHelpers. See the blog 
example for an example.
[!!!] [~TASK] Fluid (ViewHelpers): Updated AbstractFormViewHelper and 
SelectViewHelper. Everything should still work as expected, but here 
there might still be some issues. Please test thoroughly and report any 
problems!
[+TASK] Fluid: Fresh backport with updated FluidBackporter from Fluid 
package r2990
[~TASK] Fluid (ViewHelpers): FormViewHelper now extends 
AbstractFormViewHelper and uses PersistenceManager to render the hidden 
identity field. This is work in progress. Extbase needs to implement the 
latest Changes to the FLOW3 persistence framework to fix form handling. 
Relates to #4170
[TASK] Fluid: added ErrorsViewHelper to autoload list. Removed 
ResourceViewHelperTest_testcase - This view helper does not exist for 
TYPO3 v4
[TASK] Fluid (ViewHelpers): Updated unit tests. They run green now, as 
it's supposed to be.
[+BUGFIX] Fluid (ViewHelpers): Adjusted FormViewHelper to work together 
with updated persistence and form resubmission. Related to #4178.
[+FEATURE] Fluid (ViewHelpers): Added "absolute" argument to link.action 
and uri.action viewhelpers. Resolves #4202.
[~BUGFIX] Fluid (ViewHelpers): Replaced usage of $GLOBALS['TSFE']->cObj 
by t3lib_div::makeInstance('tslib_cObj') in CObjectViewHelper, 
HtmlViewHelper and ImageViewHelper. Note: In CropViewHelper & 
EmailViewHelper it does no harm to use $GLOBALS['TSFE']->cObj. Thanks 
for the patch. Resolves #4063.
[+BUGFIX] Fluid (View): Improved error message in case no layout/partial 
was found. Resolves #4204.
[~FEATURE] Fluid (ViewHelpers): Adjusted AbstractFormViewHelper to be 
able to namespace arguments. Fixed several Unit Tests. The patch was 
provided by Bastian. Thanks a lot! Resolves #3317.
[~TASK] Fluid (ViewHelpers): Follow-up. Added several files.
[+BUGFIX] Fluid (TemplateParser): The View Helper name is now resolved 
correctly even if it has more than two levels (like f:foo.bar.baz). 
Added Unit Test. Resolves #4231.
[+BUGFIX] Fluid: Added missing reference in ext_autoload.php. Resolves 
#4287.
[+FEATURE] Fluid (View): Prepared Fluid to enable 'format' aware 
templates (like "show.html" and "show.json"). Related to #4120.
[FEATURE] Fluid (TemplateView): Made templateRootPath configurable. 
Related to #3296.


More information about the TYPO3-team-core mailing list