Lazy Development using the Extension Builder
Nico de Haën, Steffen Müller
Image by Diego FL (burtonez) http://www.flickr.com/photos/burtonez/273321136/in/photostream/
http://t3con11-frankfurt.typo3.org/sessions/acceptedpapers/paper/lazy_development_using_the_extension_builder.html
#T3CON11
About us
Lazy Development using the Extension Builder
Nico de Haën Steffen Müller
TYPO3 Developerndh-websolutions.de(Freelancer)
Software Developer/gebrüderheitz Gbr
Extension Builder Project Leader
Extension Builder Project Member
#T3CON11
Are you...
✗ developing TYPO3 extensions?
Lazy Development using the Extension Builder
✗ 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
Domain Driven Design
✗ Domain: What's your Business about
Lazy Development using the Extension Builder
✗ Context: Understanding the Domain
✗ Domain Model: Describing the Domain
✗ Communication: Ubiquitous Language
✗ Evolution: Iterative Process
✗ Building Blocks: Entities, Aggregate, Value Objects, ...
#T3CON11
What does the Extension Builder do?
Lazy Development using the Extension Builder
✗ 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
GUI Overview
Lazy Development using the Extension Builder
Extension ModelerExtension Properties
#T3CON11
Extension Properties
Lazy Development using the Extension Builder
✗ Name, Description, ...✗ Category, Version, ...✗ Author
#T3CON11
Extension Properties
Lazy Development using the Extension Builder
✗ Frontend Plugins✗ Backend Modules
#T3CON11
Modeling your Domain
Basic Functions of Modeler:
Lazy Development using the Extension Builder
✗ 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
The Modeler
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Add Blog Model
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Domain Object settings
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Controller Actions
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Model Properties
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Add Author Model
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Add Relation: Blog - Author
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Configure Relation
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Add Post Model
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Add Properties
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Add Relation: Blog - Post
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Add Tag Model
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Add Relation Post - Tag
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Add Comment Model
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
Add Relation Post - Comment
Modeling your Domain
#T3CON11 Lazy Development using the Extension Builder
A good reason to ask your boss for a bigger screen!
Modeling your Domain
#T3CON11
What has been built?
Lazy Development using the Extension Builder
Result 1:
Directories and files created
#T3CON11
What has been built?
Lazy Development using the Extension Builder
Result 2: Records in the Backend
#T3CON11
What has been built?
Lazy Development using the Extension Builder
Result 3:
Editing records
#T3CON11
What has been built?
Lazy Development using the Extension Builder
Result 4:
Frontend Output
#T3CON11
That's it
Lazy Development using the Extension Builder
!
?
That's it
Communication problems...
Why to change the model?
#T3CON11 Lazy Development using the Extension Builder
Edit Mode
The Business Model changes...
Remember the tree swing comic?
If the model changes...
Rename Domain Objects
Add Domain Objects
Change relations
Rename properties
Add or remove properties
You have to:
#T3CON11 Lazy Development using the Extension Builder
Edit Mode
ChannelBlog
Classes/Controller/ BlogController .phpClasses/Domain/Model/ Blog.php
Classes/Domain/Repository/ BlogRepository.php
Resources/Private/Templates/Blog/ Show.html
Resources/Private/Templates/Blog/ List .html
Resources/Private/Partials/Blog/ Properties.html
Resources/Private/Partials/Blog/ FormElements.html
Resources/Private/Languages/ locallang_db.xml
Configuration/TCA/ Blog.php
ext_tables.php
ext_tables.sql
Domain Logic
Persistence
Configuration
View
#T3CON11 Lazy Development using the Extension Builder
#T3CON11 Lazy Development using the Extension Builder
Class Parser
Roundtrip Service
Code Generator
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
Edit Mode
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
Configuration/ExtensionBuilder/settings.yaml
#T3CON11 Lazy Development using the Extension Builder
Configure overwrite settings in:
Edit Mode
#T3CON11
Limitations
✗ Configuration
Lazy Development using the Extension Builder
✗ Mapping
✗ Does NOT support the traditional CSV lists like in ancient times (and will never)
✗ Inheritence
✗ General TCA limitations
✗ ...
#T3CON11
Roadmap
Current 2.x branch
Lazy Development using the Extension Builder
✗ Configure (Non-) Cacheable Controller Actions
✗ Configure Switchable Controller Actions
✗ Mapping to existing tables
✗ Services
✗ Content Elements
#T3CON11
Roadmap
Future 3.x branch
Lazy Development using the Extension Builder
✗ 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
✗ Complete new GUI (ExtJS, Oryx)
#T3CON11
Summary
Why use the Extension Builder?
Lazy Development using the Extension Builder
✗ Be lazy! Don't repeat yourself
✗ Supports Domain Driven Design
✗ Adapt your model anytime
✗ Cleaner code (CGL)
✗ Modeler visualizes models and relations
#T3CON11
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
Lazy Development using the Extension Builder
#T3CON11
?Questions?
Lazy Development using the Extension Builder
#T3CON11
Thank you
Nico de HaënMail: [email protected]
Twitter: @t3ndh
Web: www.ndh-websolutions.de
Steffen MüllerMail: [email protected]
Twitter: @t3node
Blog: www.t3node.com
Lazy Development using the Extension Builder