Translations
Info
All page names need to be in English.
en da  de  fr  it  ja  km  nl  ru  zh

FLOW3 1.0.0 alpha6

From TYPO3Wiki
Jump to: navigation, search
This page belongs to the Flow Team (category Flow)

Release Notes for FLOW3 1.0.0 alpha6

This document contains information about FLOW3 version 1.0.0 alpha6 which was released on November 3rd, 2009.

News

notice - Note

As an alpha release, FLOW3 1.0.0-alpha6 is naturally not recommended for production use

News article on typo3.org

What's New?

The FLOW3 resource manager has been cleaned up and a new way of accessing package resources has been implemented. Instead of using getResource() (which has been removed) you should now use the "package" scheme with the native PHP file functions.

Routing in FLOW3 has been changed regarding case sensitivity. The default is now to leave case unchanged in user-defined route parts, check the documentation for more details.

Fluid has a new inline syntax now which replaces the "shorthand syntax" it used to have.

The ExtJS package now comes with ExtJS 3.0.0 and two new Fluid view helpers to allow easy use of ExtJS in your templates.

For a full list of new features and improvements please see our Changelog below.

Alpha

Again, as an alpha release, FLOW3 1.0.0-alpha6 is naturally not recommended for production use. Be warned: It's a bit slow, eats more memory than is perhaps healthy and has not yet undergone a full security review. However these issues will be addressed in the upcoming alpha releases and we're confident that FLOW3 1.0.0 final will be a rock solid framework which performs well in production environments.

Next Release

FLOW3 1.0.0 alpha 7 is scheduled for 4th of January 2010. We have not yet decided on a specific area to focus on in FLOW3. We will be working on TYPO3 v5 and whatever needs to be fixed and/or improved in FLOW3 will be done... Expect a release that is more solid than ever, if nothing else. :)

Your Feedback

We want to hear your opinion! What's your experience with this release? What went well, what didn't? What features are you missing? Join our discussions in the mailing list, IRC channel and twitter ... Check out http://flow.typo3.org/get-involved/ for ways to get involved and get in touch. Get into the FLOW3! - Your FLOW3 Core Team

Download

http://flow.typo3.org/download/

MD5 checksums

MD5 (FLOW3-1.0.0-alpha6.bz2) = 968703419548125e2470337ec5f7faba
MD5 (FLOW3-1.0.0-alpha6.tgz) = 12de97ebe4bda7a92918259e32fc28e5
MD5 (FLOW3-1.0.0-alpha6.zip) = 87b79d0dc62310c07276727ace93415a

Upgrading

This time there were some changes that likely require you to adjust your code (sorry for that!). Here is a list of things to watch out for:

  • If you relied on the fact that relative paths inside HTML files were rewritten when being published to the public resource mirror, you should consider Fluid for templating, as that feature has been removed. It will be replaced by something more Fluid'ish in the future.
  • Configuring include path and special class names in Package.yaml needs to use "classLoader" instead of "resourceManager" now.
  • The method getResource() in Package\Manager has been removed. Use the native file functions in PHP instead together with the "package" scheme. Example: "package://FLOW3/Private/foo.bar"
  • If you created forms without using Fluid, the new HMAC generator for forms might break your application and you might need the @dontverifyrequesthash annotation.
  • If you used literal curly braces in your Fluid arguments, this will break as Fluid now parses those to allow for things like {fullName: '{firstName} {lastName}'}.
  • The Fluid "shorthand syntax" has been removed and a new "inline syntax" has been added instead. If you used {f:...()} you need to adjust that, e.g. from {f:format.date('now')} to {f:format.date(date: 'now')}.
  • In PHPCR (and thus TYPO3CR) some method signatures for XML import and export have changed and the interface of iterators has changed to be more PHPish, adjust as needed.

Changelog

-------------------------------------------------------------------------------
  Changes that require end-user code adjustments
-------------------------------------------------------------------------------

FLOW3
* When public package resources are mirrored to the web-accessible folder HTML is no longer processed to fix relative paths inside. If you relied on this you should consider using Fluid for templating instead.
* Configuring special class names and include path additions in Package.yaml no longer uses resourceManager:specialClassNameAndPaths and resourceManager:includePaths but classLoader:... instead.
* Changed the way resources from packages are addressed: files in packages are now fetched by getResource('package:/')
* Added a HMAC generator and checker to prevent unauthorized access on objects where no edit fields were generated for. It is mandatory in case objects are modified on the server side. See the issue for a more in-depth explanation. This feature does NOT break backwards-compatibility as long as you use only Fluid for form-generation. In case of custom fields, it WILL break backwards compatibility, and you might need the @dontverifyrequesthash annotation.

Fluid
* Strings inside Arrays and the inline notation are now parsed by Fluid as well. This enables things like {fullName: '{firstName} {lastName}'} - thus, everything can be nested inside arrays and the ViewHelper inline notation arguments. This is a breaking change in case you used literal {...} inside your arguments, but not else.
* Removed the old Shorthand Syntax, and added a new chainable syntax for ViewHelpers. ADJUST YOUR TEMPLATES in case you use the {f:….()} syntax!

PHPCR:
* Removed IteratorInterface and thus hasNext(), remove() and append(). Use valid() instead of hasNext(). next() is now supposed to behave like in the PHP iterator interface (i.e. return void).
* The XML export methods in Session now expect an URI for $out, no longer an XMLWriter.
* getImportContentHandler() in Session and Workspace now return F3\PHPCR\ContentHandlerInterface.
* importXML() in Session and Workspace now expects an URI to read from.

General
* Unit tests must be in Tests/Unit/ now.

-------------------------------------------------------------------------------
  FLOW3
-------------------------------------------------------------------------------

[TASK]
(*) fixed YAML syntax to follow specification - r3339
(*) Added @api annotations on class level and adjusted CGL to explain class-level @api handling - r3345
(MVC) Renamed exception InvalidOrNoRequestHash to InvalidOrMissingRequestHash, some tiny documentation tweaks - r3317
(Package) Added constants for the test directories and made the package manager generate them when creating a package - r3324
(Reflection) ObjectAccess->getProperty now supports not only ArrayObjects, but also simple arrays - r3332
(Reflection) Added a new helper method in ObjectAccess which can traverse object graphs (with the "."-Syntax) - r3296
(Resource) Changed the way resources from packages are addressed: files in packages are now fetched by getResource('package:/') - r3300

[BUGFIX]
(Cache) Fixed use of uninitialized variable in case APCBackend->set() encounters an error, fixes #4856 - r3286
(MVC) Fixed leftover use of flashMessages variable in ActionController, fixes #4850 - r3284
(MVC) MVC parameters (package key, controller name, action name, format) are now lowercased before set in the request, fixes #5182 - r3384
(MVC) Bugfix to automatic request hashing in context with CLI. Relates to #4960 - r3312
(Persistence) findOneBy*() now limits the result set size to 1, fixes #4859 - r3289
(Reflection) If a parent class was modified, the Reflection Service will now also flush the reflection cache of classes inheriting this class. Fixes #4952 - r3392
(Security) Bugfix to automatic request hashing in context with CLI. Relates to #4960 - r3311
(Security) Fixed two issues with Request Hashing. Changed hash implementation from normal SHA1 to a real HMAC. Thanks to Markus Krause for pointing this out. Relates to #4960 - r3316
(Security) Added an exception if SSL private key generation fails, relates to #4870 - r3294
(Security) Added an is_array check in the policy service, to prevent php fatal erros - r3383
(Validation) @validate annotations with complex options are parsed correctly now, fixes #5185 - r3387
(Validation) Multiple validators with option can now be specified in @validate, fixes #5047 - r3386
(Validation) ValidatorResolver no longer tries to use action method argument data type as validator type, fixes #4857. Optimized a little - r3288

[FEATURE]
(MVC) The handling of case in URIs has been changed in routing and URI building. The default is now to leave case unchanged in user-defined route parts, check the documentation for more details. Resolves #2237. Thanks to Bastian Waidelich - r3382
(MVC) Made package settings available in view. Now you can access settings directly in your Fluid template like {settings.someOption}. This resolves #5152 - r3381
(Persistence) Calls to Repository::update() will now also update the child objects if needed. This is needed if an object with sub-objects is submitted via a form. Relates to #4218 - r3298
(Resource) When public package resources are mirrored to the web-accessible folder HTML is no longer processed to fix relative paths inside. If you relied on this you should consider using Fluid for templating instead - r3340
(Resource) Package resources can now be accessed through the regular PHP filesystem function by using the 'package' scheme, e.g. package://MyPackage/Public/Foo/Bar.jpg - r3340
(Resource) Custom stream wrappers can now be built and will be automatically registered - simply implement the F3\FLOW3\Resource\StreamWrapperInterface and check the PackageStreamWrapper for an example (and Bootstrap->run() for it's usage) - r3340
(Security) Added a HMAC generator and checker to prevent unauthorized access on objects where no edit fields were generated for. It is mandatory in case objects are modified on the server side. See the issue for a more in-depth explanation. This feature does NOT break backwards-compatibility as long as you use only Fluid for form-generation. In case of custom fields, it WILL break backwards compatibility, and you might need the @dontverifyrequesthash annotation. Resolves #4960 - r3309

[API]
(MVC) Configured the AbstractView and NotFoundView to be of scope prototype instead of singleton. Make sure to annotate all your views as prototypes as well! - r3318
(Resource) getResource() in Resource\Manager has been removed along with a whole bunch of internal related stuff. getResource() was not used in any FLOW3 packages found on Forge, so this should be a small change - r3340

[CONFIGURATION]
(Resource) Configuring special class names and include path additions in Package.yaml no longer uses resourceManager:specialClassNameAndPaths and resourceManager:includePaths but classLoader:... instead - r3340


-------------------------------------------------------------------------------
  ExtJS
-------------------------------------------------------------------------------

[FEATURE]
Updated ExtJS to 3.0.0, resolves #4156. Two Fluid view helpers are now included that allow easy ExtJS inclusion, see the (new) manual for details. To make migration from ExtJS 2 easier, the ux classes from the ExtJS distribution are included, as well as a gray theme - r3292


-------------------------------------------------------------------------------
  Fluid
-------------------------------------------------------------------------------

[TASK]
(*) Removed Fluid-specific RuntimException and replaced it with the one from SPL - r3346
(ViewHelpers) Changed the ResourceViewHelper again, the 'resource' argument is now called 'path'; added 'absolute' argument to generate absolute URLs - r3354
(ViewHelpers) Renamed "packageKey" attribute to "package" in ResourceViewHelper to be consistent with other link/uri view helpers - r3377

[FEATURE]
(*) Strings inside Arrays and the inline notation are now parsed by Fluid as well. This enables things like {fullName: '{firstName} {lastName}'} - thus, everything can be nested inside arrays and the ViewHelper inline notation arguments. This is a breaking change in case you used literal {...} inside your arguments, but not else. Relates to #5118 - r3366
(Core) Removed the old Shorthand Syntax, and added a new chainable syntax for ViewHelpers. ADJUST YOUR TEMPLATES in case you use the {f:….()} syntax! Resolves #5033 - r3333
(ViewHelpers) extended format.date viewhelper by an additional "date" argument. Now you can write {f:format.date(date: 'yesterday')} in your templates. This change is backwards compatible! Relates to #5150 - r3365
(ViewHelpers) extended if viewhelper by arguments "then" and "else". Now you can write {f:if(condition: 1, then: 'yes', else: 'no'} in your templates. This change is backwards compatible! Relates to #5150 - r3365
(ViewHelpers) Added a request hash to all form fields. It is mandatory in case objects are modified on the server side. Relates to #4960 - r3308
(ViewHelpers) added "additionalParams" attribute to uri.action & link.action view helpers. This allows you to add non-prefixed parameters to links - r3376
(ViewHelpers) properties of nested objects are now correctly outputted, and the identity fields for the nested objects are generated as well. Related to #4218 - r3296
(ViewHelpers) Added a request hash to all form fields. It is mandatory in case objects are modified on the server side. Relates to #4960 - r3309

[BUGFIX]
(Core) Shorthand Syntax of ViewHelpers can now use longer namespace prefixes than one character. Resolves #5107 - r3349
(Core) ObjectAccessorNode now fails silently if no variable found - r3334
(Core) Validation of ViewHelper arguments is non-mandatory now, as there is no validator for each domain object / we do not always want to call it. Resolves #5108 - r3349
(ViewHelpers) register universal tag attributes in link.email view helper. This resolves #5069 - r3335
(ViewHelpers) The ResourceViewHelper uses the mirror path configured in FLOW3 now, fixes #5138 - r3350
(ViewHelpers) The ResourceViewHelper can now be used with the new shorthand syntax, fixes #5137 - r3350


-------------------------------------------------------------------------------
  PHPCR
-------------------------------------------------------------------------------

[TASK]
Dual-licensed under LGPL v3 (or later) and Simplified BSD License now, to allow for unhindered widespread adoption - r3364

[API]
Removed IteratorInterface and thus hasNext(), remove() and append(). Use valid() instead of hasNext(). next() is now supposed to behave like in the PHP iterator interface (i.e. return void). Resolves #3845 - r3359
The XML export methods in Session now expect an URI for $out, no longer an XMLWriter. Resolves #5165 - r3371
getImportContentHandler() in Session and Workspace now return F3\PHPCR\ContentHandlerInterface, resolves #5161 - r3363
importXML() in Session and Workspace now expects an URI to read from, resolves #3844 - r3363


-------------------------------------------------------------------------------
  PHPUnit
-------------------------------------------------------------------------------

[CONFIGURATION]
Adjusted Package.yaml to use classLoader:includePaths - r3340


-------------------------------------------------------------------------------
  TYPO3CR
-------------------------------------------------------------------------------

[TASK]
getImportContentHandler() in Session and Workspace now return F3\PHPCR\ContentHandlerInterface, relates to #5161 - r3362
importXML() in Session and Workspace now expects an URI to read from, relates to #3844 - r3362

[API]
Removed hasNext(), remove() and append() from RangeIterator. Use valid() instead of hasNext(). next() now returns void, use current() to fetch the current item. Relates to #3845 - r3360
The XML export methods in Session now expect an URI for $out, no longer an XMLWriter. Relates to #5165 - r3372

[BUGFIX]
(FLOW3 Persistence) fixes to storing arrays and SplObjectStorage properties, fixes #4317 - r3328


-------------------------------------------------------------------------------
  Testing
-------------------------------------------------------------------------------

[TASK]
Fixed "Interface 'PHPUnit_Framework_TestListener' not found" errors by adding a require_once(). Makes sense, once you think about it - r3370
unit tests are now looked for in Tests/Unit/ instead of Tests/ - r3300
Added a MemoryStreamWrapper that uses a global variable for storing data, can be used in testing without the need to create temporary files - r3370

Past Release Notes

If you have skipped one version while upgrading to this version, please make sure to read those ReleaseNotes (see list) also.