T3CON11: Lazy Development using the Extension Builder

Post on 05-Dec-2014

7077 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

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: typo3@ndh-websolutions.de

Twitter: @t3ndh

Web: www.ndh-websolutions.de

Steffen MüllerMail: typo3@t3node.com

Twitter: @t3node

Blog: www.t3node.com

Lazy Development using the Extension Builder

top related