Top Banner
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
43

T3CON11: Lazy Development using the Extension Builder

Dec 05, 2014

Download

Technology

Steffen Müller

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
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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