t3con11: lazy development using the extension builder

43
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

Upload: steffen-mueller

Post on 05-Dec-2014

7.080 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: T3CON11: Lazy Development using the Extension Builder

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

Page 2: T3CON11: Lazy Development using the Extension Builder

#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

Page 3: T3CON11: Lazy Development using the Extension Builder

#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)?

Page 4: T3CON11: Lazy Development using the Extension Builder

#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, ...

Page 5: T3CON11: Lazy Development using the Extension Builder

#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

Page 6: T3CON11: Lazy Development using the Extension Builder

#T3CON11

GUI Overview

Lazy Development using the Extension Builder

Extension ModelerExtension Properties

Page 7: T3CON11: Lazy Development using the Extension Builder

#T3CON11

Extension Properties

Lazy Development using the Extension Builder

✗ Name, Description, ...✗ Category, Version, ...✗ Author

Page 8: T3CON11: Lazy Development using the Extension Builder

#T3CON11

Extension Properties

Lazy Development using the Extension Builder

✗ Frontend Plugins✗ Backend Modules

Page 9: T3CON11: Lazy Development using the Extension Builder

#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

Page 10: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

The Modeler

Modeling your Domain

Page 11: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Add Blog Model

Modeling your Domain

Page 12: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Domain Object settings

Modeling your Domain

Page 13: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Controller Actions

Modeling your Domain

Page 14: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Model Properties

Modeling your Domain

Page 15: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Add Author Model

Modeling your Domain

Page 16: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Add Relation: Blog - Author

Modeling your Domain

Page 17: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Configure Relation

Modeling your Domain

Page 18: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Add Post Model

Modeling your Domain

Page 19: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Add Properties

Modeling your Domain

Page 20: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Add Relation: Blog - Post

Modeling your Domain

Page 21: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Add Tag Model

Modeling your Domain

Page 22: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Add Relation Post - Tag

Modeling your Domain

Page 23: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Add Comment Model

Modeling your Domain

Page 24: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Add Relation Post - Comment

Modeling your Domain

Page 25: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

A good reason to ask your boss for a bigger screen!

Modeling your Domain

Page 26: T3CON11: Lazy Development using the Extension Builder

#T3CON11

What has been built?

Lazy Development using the Extension Builder

Result 1:

Directories and files created

Page 27: T3CON11: Lazy Development using the Extension Builder

#T3CON11

What has been built?

Lazy Development using the Extension Builder

Result 2: Records in the Backend

Page 28: T3CON11: Lazy Development using the Extension Builder

#T3CON11

What has been built?

Lazy Development using the Extension Builder

Result 3:

Editing records

Page 29: T3CON11: Lazy Development using the Extension Builder

#T3CON11

What has been built?

Lazy Development using the Extension Builder

Result 4:

Frontend Output

Page 30: T3CON11: Lazy Development using the Extension Builder

#T3CON11

That's it

Lazy Development using the Extension Builder

!

?

That's it

Page 31: T3CON11: Lazy Development using the Extension Builder

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?

Page 32: T3CON11: Lazy Development using the Extension Builder

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

Page 33: T3CON11: Lazy Development using the Extension Builder

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

Page 34: T3CON11: Lazy Development using the Extension Builder

#T3CON11 Lazy Development using the Extension Builder

Class Parser

Roundtrip Service

Code Generator

Edit Mode

Page 35: T3CON11: Lazy Development using the Extension Builder

/** * 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

Page 36: T3CON11: Lazy Development using the Extension Builder

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

Page 37: T3CON11: Lazy Development using the Extension Builder

#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

✗ ...

Page 38: T3CON11: Lazy Development using the Extension Builder

#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

Page 39: T3CON11: Lazy Development using the Extension Builder

#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)

Page 40: T3CON11: Lazy Development using the Extension Builder

#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

Page 41: T3CON11: Lazy Development using the Extension Builder

#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

Page 42: T3CON11: Lazy Development using the Extension Builder

#T3CON11

?Questions?

Lazy Development using the Extension Builder

Page 43: T3CON11: 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