SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
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üller
http://t3con11-frankfurt.typo3.org/sessions/acceptedpapers/paper/lazy_development_using_the_extension_builder.html
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
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
Domain Driven Design
  ✗   Domain: What's 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
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
GUI Overview
Extension Properties       Extension Modeler




#T3CON11                    Lazy Development using the Extension Builder
Extension Properties


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




#T3CON11                  Lazy Development using the Extension Builder
Extension Properties


             ✗   Frontend Plugins
             ✗   Backend Modules




#T3CON11                 Lazy Development using the Extension Builder
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
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 Development using the Extension Builder
What has been built?
 Result 1:
 Directories and files created




#T3CON11                     Lazy Development using the Extension Builder
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
That's it !

           That's it ?

#T3CON11           Lazy Development using the Extension Builder
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
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
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
Edit Mode

             Class Parser



           Roundtrip Service



           Code Generator

#T3CON11            Lazy Development using the Extension Builder
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
      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
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
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
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
Summary
 Why use 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                          Lazy Development using the Extension Builder
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
#T3CON11
              ?
           Questions?

                Lazy Development using the Extension Builder
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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

MySQL Presentation
MySQL PresentationMySQL Presentation
MySQL Presentation
 
Php advance
Php advancePhp advance
Php advance
 
How PHP works
How PHP works How PHP works
How PHP works
 
Makefiles Bioinfo
Makefiles BioinfoMakefiles Bioinfo
Makefiles Bioinfo
 
Hands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 Framework
 
C make tutorial
C make tutorialC make tutorial
C make tutorial
 
makefiles tutorial
makefiles tutorialmakefiles tutorial
makefiles tutorial
 
PHP Tutorials
PHP TutorialsPHP Tutorials
PHP Tutorials
 
Fluent Development with FLOW3
Fluent Development with FLOW3Fluent Development with FLOW3
Fluent Development with FLOW3
 
Internationalization with TYPO3
Internationalization with TYPO3Internationalization with TYPO3
Internationalization with TYPO3
 
7 Tips on Getting Your Theme Approved the First Time
7 Tips on Getting Your Theme Approved the First Time7 Tips on Getting Your Theme Approved the First Time
7 Tips on Getting Your Theme Approved the First Time
 
microsoft help
microsoft helpmicrosoft help
microsoft help
 
Introduction to Makefile
Introduction to MakefileIntroduction to Makefile
Introduction to Makefile
 
TYPO3 + CKEditor: Heaven for TYPO3 Developer & Editor
TYPO3 + CKEditor: Heaven for TYPO3 Developer & EditorTYPO3 + CKEditor: Heaven for TYPO3 Developer & Editor
TYPO3 + CKEditor: Heaven for TYPO3 Developer & Editor
 
How PHP Works ?
How PHP Works ?How PHP Works ?
How PHP Works ?
 
Fluent Development with FLOW3 1.0
Fluent Development with FLOW3 1.0Fluent Development with FLOW3 1.0
Fluent Development with FLOW3 1.0
 
Composer the right way - SunshinePHP
Composer the right way - SunshinePHPComposer the right way - SunshinePHP
Composer the right way - SunshinePHP
 
Flask Introduction - Python Meetup
Flask Introduction - Python MeetupFlask Introduction - Python Meetup
Flask Introduction - Python Meetup
 
PyCon Taiwan 2013 Tutorial
PyCon Taiwan 2013 TutorialPyCon Taiwan 2013 Tutorial
PyCon Taiwan 2013 Tutorial
 
IPCSE12: Getting into FLOW3
IPCSE12: Getting into FLOW3IPCSE12: Getting into FLOW3
IPCSE12: Getting into FLOW3
 

Ähnlich wie T3CON11: Lazy Development using the Extension Builder

Alm tce parallel development
Alm tce parallel developmentAlm tce parallel development
Alm tce parallel developmentshalom938
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdfAbid Malik
 
Git for developers
Git for developersGit for developers
Git for developersHacen Dadda
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetesGöksel Pırnal
 
Practical git for developers
Practical git for developersPractical git for developers
Practical git for developersWim Godden
 
CISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentCISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentBrad Rippe
 
Categorizing Docker Hub Public Images
Categorizing Docker Hub Public ImagesCategorizing Docker Hub Public Images
Categorizing Docker Hub Public ImagesRoberto Hashioka
 
Acquia BLT for the Win, or How to speed up the project setup, development an...
Acquia BLT for the Win, or  How to speed up the project setup, development an...Acquia BLT for the Win, or  How to speed up the project setup, development an...
Acquia BLT for the Win, or How to speed up the project setup, development an...DrupalCamp Kyiv
 
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...CodelyTV
 
Containerization and version control system
Containerization and version control systemContainerization and version control system
Containerization and version control systemRohit Verma
 
TYPO3 CMS deployment with Jenkins CI
TYPO3 CMS deployment with Jenkins CITYPO3 CMS deployment with Jenkins CI
TYPO3 CMS deployment with Jenkins CIderdanne
 
Clean architecture - Protecting the Domain
Clean architecture - Protecting the DomainClean architecture - Protecting the Domain
Clean architecture - Protecting the DomainVictor Rentea
 
DCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application PackagesDCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application PackagesDocker, Inc.
 
New in Plone 3.3. What to expect from Plone 4
New in Plone 3.3. What to expect from Plone 4New in Plone 3.3. What to expect from Plone 4
New in Plone 3.3. What to expect from Plone 4Quintagroup
 
Tell Me Quando - Implementing Feature Flags
Tell Me Quando - Implementing Feature FlagsTell Me Quando - Implementing Feature Flags
Tell Me Quando - Implementing Feature FlagsJorge Ortiz
 
Software Developer’s Project Documentation Template
Software Developer’s Project Documentation TemplateSoftware Developer’s Project Documentation Template
Software Developer’s Project Documentation TemplateSalim M Bhonhariya
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan
 
dominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptxdominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptxUlrich Krause
 
cbmanual
cbmanualcbmanual
cbmanualMatt D
 

Ähnlich wie T3CON11: Lazy Development using the Extension Builder (20)

Alm tce parallel development
Alm tce parallel developmentAlm tce parallel development
Alm tce parallel development
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdf
 
Git for developers
Git for developersGit for developers
Git for developers
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
Practical git for developers
Practical git for developersPractical git for developers
Practical git for developers
 
Automation in Drupal
Automation in DrupalAutomation in Drupal
Automation in Drupal
 
CISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentCISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 Development
 
Categorizing Docker Hub Public Images
Categorizing Docker Hub Public ImagesCategorizing Docker Hub Public Images
Categorizing Docker Hub Public Images
 
Acquia BLT for the Win, or How to speed up the project setup, development an...
Acquia BLT for the Win, or  How to speed up the project setup, development an...Acquia BLT for the Win, or  How to speed up the project setup, development an...
Acquia BLT for the Win, or How to speed up the project setup, development an...
 
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
 
Containerization and version control system
Containerization and version control systemContainerization and version control system
Containerization and version control system
 
TYPO3 CMS deployment with Jenkins CI
TYPO3 CMS deployment with Jenkins CITYPO3 CMS deployment with Jenkins CI
TYPO3 CMS deployment with Jenkins CI
 
Clean architecture - Protecting the Domain
Clean architecture - Protecting the DomainClean architecture - Protecting the Domain
Clean architecture - Protecting the Domain
 
DCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application PackagesDCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application Packages
 
New in Plone 3.3. What to expect from Plone 4
New in Plone 3.3. What to expect from Plone 4New in Plone 3.3. What to expect from Plone 4
New in Plone 3.3. What to expect from Plone 4
 
Tell Me Quando - Implementing Feature Flags
Tell Me Quando - Implementing Feature FlagsTell Me Quando - Implementing Feature Flags
Tell Me Quando - Implementing Feature Flags
 
Software Developer’s Project Documentation Template
Software Developer’s Project Documentation TemplateSoftware Developer’s Project Documentation Template
Software Developer’s Project Documentation Template
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
 
dominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptxdominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptx
 
cbmanual
cbmanualcbmanual
cbmanual
 

Mehr von Steffen Müller

The art of writing bug reports
The art of writing bug reportsThe art of writing bug reports
The art of writing bug reportsSteffen Müller
 
BDD Einführung @TYPO3camp RheinRuhr 2012
BDD Einführung @TYPO3camp RheinRuhr 2012BDD Einführung @TYPO3camp RheinRuhr 2012
BDD Einführung @TYPO3camp RheinRuhr 2012Steffen Müller
 
Logging session @TYPO3camp Stuttgart 2013
Logging session @TYPO3camp Stuttgart 2013Logging session @TYPO3camp Stuttgart 2013
Logging session @TYPO3camp Stuttgart 2013Steffen Müller
 
Refactoring TYPO3 Logging
Refactoring TYPO3 LoggingRefactoring TYPO3 Logging
Refactoring TYPO3 LoggingSteffen Müller
 
The 36 chambers of TYPO3 Logging
The 36 chambers of TYPO3 LoggingThe 36 chambers of TYPO3 Logging
The 36 chambers of TYPO3 LoggingSteffen Müller
 
DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink
DevsMeetUp Freiburg: Behavior Driven Development with Behat/MinkDevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink
DevsMeetUp Freiburg: Behavior Driven Development with Behat/MinkSteffen Müller
 

Mehr von Steffen Müller (6)

The art of writing bug reports
The art of writing bug reportsThe art of writing bug reports
The art of writing bug reports
 
BDD Einführung @TYPO3camp RheinRuhr 2012
BDD Einführung @TYPO3camp RheinRuhr 2012BDD Einführung @TYPO3camp RheinRuhr 2012
BDD Einführung @TYPO3camp RheinRuhr 2012
 
Logging session @TYPO3camp Stuttgart 2013
Logging session @TYPO3camp Stuttgart 2013Logging session @TYPO3camp Stuttgart 2013
Logging session @TYPO3camp Stuttgart 2013
 
Refactoring TYPO3 Logging
Refactoring TYPO3 LoggingRefactoring TYPO3 Logging
Refactoring TYPO3 Logging
 
The 36 chambers of TYPO3 Logging
The 36 chambers of TYPO3 LoggingThe 36 chambers of TYPO3 Logging
The 36 chambers of TYPO3 Logging
 
DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink
DevsMeetUp Freiburg: Behavior Driven Development with Behat/MinkDevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink
DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink
 

Kürzlich hochgeladen

UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 

Kürzlich hochgeladen (20)

UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 

T3CON11: Lazy Development using the Extension Builder

  • 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üller http://t3con11-frankfurt.typo3.org/sessions/acceptedpapers/paper/lazy_development_using_the_extension_builder.html
  • 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. 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. Domain Driven Design ✗ Domain: What's 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. 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. GUI Overview Extension Properties Extension Modeler #T3CON11 Lazy Development using the Extension Builder
  • 7. Extension Properties ✗ Name, Description, ... ✗ Category, Version, ... ✗ Author #T3CON11 Lazy Development using the Extension Builder
  • 8. Extension Properties ✗ Frontend Plugins ✗ Backend Modules #T3CON11 Lazy Development using the Extension Builder
  • 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. Modeling your Domain The Modeler #T3CON11 Lazy Development using the Extension Builder
  • 11. Modeling your Domain Add Blog Model #T3CON11 Lazy Development using the Extension Builder
  • 12. Modeling your Domain Domain Object settings #T3CON11 Lazy Development using the Extension Builder
  • 13. Modeling your Domain Controller Actions #T3CON11 Lazy Development using the Extension Builder
  • 14. Modeling your Domain Model Properties #T3CON11 Lazy Development using the Extension Builder
  • 15. Modeling your Domain Add Author Model #T3CON11 Lazy Development using the Extension Builder
  • 16. Modeling your Domain Add Relation: Blog - Author #T3CON11 Lazy Development using the Extension Builder
  • 17. Modeling your Domain Configure Relation #T3CON11 Lazy Development using the Extension Builder
  • 18. Modeling your Domain Add Post Model #T3CON11 Lazy Development using the Extension Builder
  • 19. Modeling your Domain Add Properties #T3CON11 Lazy Development using the Extension Builder
  • 20. Modeling your Domain Add Relation: Blog - Post #T3CON11 Lazy Development using the Extension Builder
  • 21. Modeling your Domain Add Tag Model #T3CON11 Lazy Development using the Extension Builder
  • 22. Modeling your Domain Add Relation Post - Tag #T3CON11 Lazy Development using the Extension Builder
  • 23. Modeling your Domain Add Comment Model #T3CON11 Lazy Development using the Extension Builder
  • 24. Modeling your Domain Add Relation Post - Comment #T3CON11 Lazy Development using the Extension Builder
  • 25. Modeling your Domain A good reason to ask your boss for a bigger screen! #T3CON11 Lazy Development using the Extension Builder
  • 26. What has been built? Result 1: Directories and files created #T3CON11 Lazy Development using the Extension Builder
  • 27. What has been built? Result 2: Records in the Backend #T3CON11 Lazy Development using the Extension Builder
  • 28. What has been built? Result 3: Editing records #T3CON11 Lazy Development using the Extension Builder
  • 29. What has been built? Result 4: Frontend Output #T3CON11 Lazy Development using the Extension Builder
  • 30. That's it ! That's it ? #T3CON11 Lazy Development using the Extension Builder
  • 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. 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. 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. Edit Mode Class Parser Roundtrip Service Code Generator #T3CON11 Lazy Development using the Extension Builder
  • 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. 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. 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. 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. 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. Summary Why use 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 Lazy Development using the Extension Builder
  • 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. #T3CON11 ? Questions? Lazy Development using the Extension Builder
  • 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