SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances (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
 

Similaire à 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
 

Similaire à 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
 

Plus de 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
 

Plus de 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
 

Dernier

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 

Dernier (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 

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