Lazy Development using        the Extension Builder         Image by Diego FL (burtonez) http://www.flickr.com/photos/burt...
About us    Nico de Haën                  Steffen Müller    TYPO3 Developer               Software Developer    ndh-websol...
Are you...  ✗   developing TYPO3 extensions?  ✗   developing Extbase/Fluid extensions?  ✗   developing FLOW3/Fluid package...
Domain Driven Design  ✗   Domain: Whats your Business about  ✗   Context: Understanding the Domain  ✗   Domain Model: Desc...
What does the Extension Builder do?  ✗   Configuring Extension Properties  ✗   Creating FE Plugins and BE Modules  ✗   Mod...
GUI OverviewExtension Properties       Extension Modeler#T3CON11                    Lazy Development using the Extension B...
Extension Properties             ✗   Name, Description, ...             ✗   Category, Version, ...             ✗   Author#...
Extension Properties             ✗   Frontend Plugins             ✗   Backend Modules#T3CON11                 Lazy Develop...
Modeling your Domain Basic Functions of Modeler:  ✗   Create Domain Objects  ✗   Configure Domain Object Settings  ✗   Add...
Modeling your Domain               The Modeler#T3CON11             Lazy Development using the Extension Builder
Modeling your Domain                  Add Blog Model#T3CON11             Lazy Development using the Extension Builder
Modeling your Domain                Domain Object settings#T3CON11             Lazy Development using the Extension Builder
Modeling your Domain                Controller Actions#T3CON11             Lazy Development using the Extension Builder
Modeling your Domain                Model Properties#T3CON11             Lazy Development using the Extension Builder
Modeling your Domain   Add Author Model#T3CON11              Lazy Development using the Extension Builder
Modeling your Domain   Add Relation: Blog - Author#T3CON11                Lazy Development using the Extension Builder
Modeling your Domain   Configure Relation#T3CON11                Lazy Development using the Extension Builder
Modeling your Domain   Add Post Model#T3CON11             Lazy Development using the Extension Builder
Modeling your Domain   Add Properties#T3CON11             Lazy Development using the Extension Builder
Modeling your Domain   Add Relation: Blog - Post#T3CON11                Lazy Development using the Extension Builder
Modeling your Domain                Add Tag Model#T3CON11             Lazy Development using the Extension Builder
Modeling your Domain                Add Relation Post - Tag#T3CON11             Lazy Development using the Extension Builder
Modeling your Domain           Add Comment Model#T3CON11             Lazy Development using the Extension Builder
Modeling your Domain           Add Relation Post - Comment#T3CON11              Lazy Development using the Extension Builder
Modeling your Domain       A good reason to ask       your boss for a bigger       screen!#T3CON11             Lazy Develo...
What has been built? Result 1: Directories and files created#T3CON11                     Lazy Development using the Extens...
What has been built? Result 2: Records in the Backend#T3CON11                  Lazy Development using the Extension Builder
What has been built? Result 3: Editing records#T3CON11                Lazy Development using the Extension Builder
What has been built? Result 4: Frontend Output#T3CON11               Lazy Development using the Extension Builder
Thats it !           Thats it ?#T3CON11           Lazy Development using the Extension Builder
Edit Mode           Why to change the model?            Communication problems...            The Business Model changes......
Edit Mode    If the model changes...     You have to:                    Rename Domain Objects                    Add Doma...
Blog                                            Channel                                     Classes/Controller/ BlogContro...
Edit Mode             Class Parser           Roundtrip Service           Code Generator#T3CON11            Lazy Developmen...
Edit Mode               /**                * Returns the name                * @return string $name                */     ...
Edit Mode      Configure overwrite settings in:      Configuration/ExtensionBuilder/settings.yaml              Classes:   ...
Limitations  ✗   Configuration  ✗   Mapping  ✗   Does NOT support the traditional CSV lists like in      ancient times (an...
Roadmap Current 2.x branch  ✗   Configure (Non-) Cacheable Controller Actions  ✗   Configure Switchable Controller Actions...
Roadmap Future 3.x branch  ✗   Complete new GUI (ExtJS, Oryx)  ✗   Extend existing models in the modeler  ✗   Make all TCA...
Summary Why use the Extension Builder?  ✗   Be lazy! Dont repeat yourself  ✗   Supports Domain Driven Design  ✗   Adapt yo...
Want to join the project?   ✗   Download and use the Extension Builder:       http://typo3.org/extensions/repository/view/...
#T3CON11              ?           Questions?                Lazy Development using the Extension Builder
Thank you     Nico de Haën     Mail:      typo3@ndh-websolutions.de     Twitter:   @t3ndh     Web:       www.ndh-websoluti...
Upcoming SlideShare
Loading in …5
×

T3CON11: Lazy Development using the Extension Builder

9,049 views

Published on

Presentation slides of the TYPO3 Conference 2011 talk "Lazy Development using the Extension Builder". Find an abstract at: http://t3con11-frankfurt.typo3.org/sessions/acceptedpapers/paper/lazy_development_using_the_extension_builder.html

Published in: Technology
  • Thanks, great presentation, amazing extension.

    Personally, I would like to get into Extension Builder all the spectrum of possibilities proposed by TYPO3 Kickstarter extension.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

T3CON11: Lazy Development using the Extension Builder

  1. 1. Lazy Development using the Extension Builder Image by Diego FL (burtonez) http://www.flickr.com/photos/burtonez/273321136/in/photostream/ Nico de Haën, Steffen Müllerhttp://t3con11-frankfurt.typo3.org/sessions/acceptedpapers/paper/lazy_development_using_the_extension_builder.html
  2. 2. About us Nico de Haën Steffen Müller TYPO3 Developer Software Developer ndh-websolutions.de /gebrüderheitz Gbr (Freelancer) Extension Builder Extension Builder Project Leader Project Member#T3CON11 Lazy Development using the Extension Builder
  3. 3. Are you... ✗ developing TYPO3 extensions? ✗ developing Extbase/Fluid extensions? ✗ developing FLOW3/Fluid packages? ✗ using git/svn? ✗ facing continuously changing requirements? ✗ practicing Domain Driven Design? ✗ using the Extension Builder? ✗ using the Editing Mode (aka Roundtrip)?#T3CON11 Lazy Development using the Extension Builder
  4. 4. Domain Driven Design ✗ Domain: Whats your Business about ✗ Context: Understanding the Domain ✗ Domain Model: Describing the Domain ✗ Communication: Ubiquitous Language ✗ Evolution: Iterative Process ✗ Building Blocks: Entities, Aggregate, Value Objects, ...#T3CON11 Lazy Development using the Extension Builder
  5. 5. What does the Extension Builder do? ✗ Configuring Extension Properties ✗ Creating FE Plugins and BE Modules ✗ Modeling the Domain ✗ Remodeling the Domain ✗ Creating Source Code ✗ Working for you hard, while you are lazy#T3CON11 Lazy Development using the Extension Builder
  6. 6. GUI OverviewExtension Properties Extension Modeler#T3CON11 Lazy Development using the Extension Builder
  7. 7. Extension Properties ✗ Name, Description, ... ✗ Category, Version, ... ✗ Author#T3CON11 Lazy Development using the Extension Builder
  8. 8. Extension Properties ✗ Frontend Plugins ✗ Backend Modules#T3CON11 Lazy Development using the Extension Builder
  9. 9. Modeling your Domain Basic Functions of Modeler: ✗ Create Domain Objects ✗ Configure Domain Object Settings ✗ Add Properties to Domain Object ✗ Add Relations from a Domain Object to another ✗ Configure Relations ✗ Add Controller Actions#T3CON11 Lazy Development using the Extension Builder
  10. 10. Modeling your Domain The Modeler#T3CON11 Lazy Development using the Extension Builder
  11. 11. Modeling your Domain Add Blog Model#T3CON11 Lazy Development using the Extension Builder
  12. 12. Modeling your Domain Domain Object settings#T3CON11 Lazy Development using the Extension Builder
  13. 13. Modeling your Domain Controller Actions#T3CON11 Lazy Development using the Extension Builder
  14. 14. Modeling your Domain Model Properties#T3CON11 Lazy Development using the Extension Builder
  15. 15. Modeling your Domain Add Author Model#T3CON11 Lazy Development using the Extension Builder
  16. 16. Modeling your Domain Add Relation: Blog - Author#T3CON11 Lazy Development using the Extension Builder
  17. 17. Modeling your Domain Configure Relation#T3CON11 Lazy Development using the Extension Builder
  18. 18. Modeling your Domain Add Post Model#T3CON11 Lazy Development using the Extension Builder
  19. 19. Modeling your Domain Add Properties#T3CON11 Lazy Development using the Extension Builder
  20. 20. Modeling your Domain Add Relation: Blog - Post#T3CON11 Lazy Development using the Extension Builder
  21. 21. Modeling your Domain Add Tag Model#T3CON11 Lazy Development using the Extension Builder
  22. 22. Modeling your Domain Add Relation Post - Tag#T3CON11 Lazy Development using the Extension Builder
  23. 23. Modeling your Domain Add Comment Model#T3CON11 Lazy Development using the Extension Builder
  24. 24. Modeling your Domain Add Relation Post - Comment#T3CON11 Lazy Development using the Extension Builder
  25. 25. Modeling your Domain A good reason to ask your boss for a bigger screen!#T3CON11 Lazy Development using the Extension Builder
  26. 26. What has been built? Result 1: Directories and files created#T3CON11 Lazy Development using the Extension Builder
  27. 27. What has been built? Result 2: Records in the Backend#T3CON11 Lazy Development using the Extension Builder
  28. 28. What has been built? Result 3: Editing records#T3CON11 Lazy Development using the Extension Builder
  29. 29. What has been built? Result 4: Frontend Output#T3CON11 Lazy Development using the Extension Builder
  30. 30. Thats it ! Thats it ?#T3CON11 Lazy Development using the Extension Builder
  31. 31. Edit Mode Why to change the model? Communication problems... The Business Model changes... Remember the tree swing comic?#T3CON11 Lazy Development using the Extension Builder
  32. 32. Edit Mode If the model changes... You have to: Rename Domain Objects Add Domain Objects Rename properties Add or remove properties Change relations#T3CON11 Lazy Development using the Extension Builder
  33. 33. Blog Channel Classes/Controller/ BlogController.php Domain Logic Classes/Domain/Model/ Blog.php Classes/Domain/Repository/ BlogRepository.php Persistence ext_tables.sql Resources/Private/Templates/Blog/ Show.html Resources/Private/Templates/Blog/ List.html View Resources/Private/Partials/Blog/ Properties.html Resources/Private/Partials/Blog/ FormElements.html Resources/Private/Languages/ locallang_db.xml Configuration/TCA/ Blog.php Configuration ext_tables.php#T3CON11 Lazy Development using the Extension Builder
  34. 34. Edit Mode Class Parser Roundtrip Service Code Generator#T3CON11 Lazy Development using the Extension Builder
  35. 35. Edit Mode /**  * Returns the name  * @return string $name  */ public function getName() { if (strpos(­,$this­>name)){ return str_replace(­, ,$this­>name); } else { return $this­>name; } } ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ /**  * Returns the title  * @return string title  */ public function getTitle() { if (strpos(­,$this­>title)){ return str_replace(­, ,$this­>title); } else { return $this­>title; } }#T3CON11 Lazy Development using the Extension Builder
  36. 36. Edit Mode Configure overwrite settings in: Configuration/ExtensionBuilder/settings.yaml Classes: Controller: merge Domain: Model: merge Repository: merge Configuration: TCA: merge TypoScript: keep Resources: Private: Language: locallang.xml: merge Templates: keep Layouts: skip ext_localconf.php: merge ext_tables.php: merge ext_tables.sql: merge#T3CON11 Lazy Development using the Extension Builder
  37. 37. Limitations ✗ Configuration ✗ Mapping ✗ Does NOT support the traditional CSV lists like in ancient times (and will never) ✗ Inheritence ✗ General TCA limitations ✗ ...#T3CON11 Lazy Development using the Extension Builder
  38. 38. Roadmap Current 2.x branch ✗ Configure (Non-) Cacheable Controller Actions ✗ Configure Switchable Controller Actions ✗ Mapping to existing tables ✗ Services ✗ Content Elements#T3CON11 Lazy Development using the Extension Builder
  39. 39. Roadmap Future 3.x branch ✗ Complete new GUI (ExtJS, Oryx) ✗ Extend existing models in the modeler ✗ Make all TCA options configurable ✗ Import models from other extensions ✗ Import models from other formats (XLS, RDF etc.) ✗ Generate FLOW3 packages#T3CON11 Lazy Development using the Extension Builder
  40. 40. Summary Why use the Extension Builder? ✗ Be lazy! Dont repeat yourself ✗ Supports Domain Driven Design ✗ Adapt your model anytime ✗ Cleaner code (CGL) ✗ Modeler visualizes models and relations#T3CON11 Lazy Development using the Extension Builder
  41. 41. Want to join the project? ✗ Download and use the Extension Builder: http://typo3.org/extensions/repository/view/extension_builder/current/ ✗ Give Feedback ✗ Report bugs ✗ Sponsoring? Talk to us! ✗ Join the project team at Forge: http://forge.typo3.org/projects/show/extension-extension_builder#T3CON11 Lazy Development using the Extension Builder
  42. 42. #T3CON11 ? Questions? Lazy Development using the Extension Builder
  43. 43. Thank you Nico de Haën Mail: typo3@ndh-websolutions.de Twitter: @t3ndh Web: www.ndh-websolutions.de Steffen Müller Mail: typo3@t3node.com Twitter: @t3node Blog: www.t3node.com#T3CON11 Lazy Development using the Extension Builder

×