SlideShare a Scribd company logo
1 of 73
The Tesseract
                                       Project
                                       Display any piece of information in your
                                       web site


                                       François Suter, Senior TYPO3 developer, fsuter@cobweb.ch
                                       David Méndez, Managing Partner, dmendez@cobweb.ch




T3CON10 - Frankfurt, October 2, 2010
the projectʼs
actors
cobweb.ch
       web agency, since 1996

       > 6 years TYPO3 expertise

       n°1 integrator in Western Switzerland

       experienced team
         consultancy
         webdesign
         TYPO3 & Magento developers

       SME, major companies & NPO's
ecodev.ch

       Swiss IT services


       > 4 years TYPO3 expertise


       7 people
tesseract team
tesseract team
        François Suter, Cobweb
         Lead Developer
         TYPO3 core team member
tesseract team
        François Suter, Cobweb
         Lead Developer
         TYPO3 core team member

        Fabien Udriot, Ecodev
         Developer
tesseract team
        François Suter, Cobweb
         Lead Developer
         TYPO3 core team member

        Fabien Udriot, Ecodev
         Developer

        Roberto Presedo, Cobweb
         Developer
         TYPO3 certified integrator
tesseract team
        François Suter, Cobweb
         Lead Developer
         TYPO3 core team member

        Fabien Udriot, Ecodev
         Developer

        Roberto Presedo, Cobweb
         Developer
         TYPO3 certified integrator

        David Méndez, Cobweb
         Business Development
the
origin
the
problem
contacts     job offers
      chocolates        members
      racesdocuments
                  real estate
 news   watches
                     sports results
               books
  pharmacies
         meetings      locations
                  magazines
       staff        press releases
proceedings
itʼs all
stuff
stuff
stuff


        list
stuff


        list
        browse
stuff


        list
        browse
        view details
stuff


        list
        browse
        view details
        search
stuff


        list
        browse
        view details
        search
        cross-link
timeline
  2006:
      1st thoughts @ T3DD06
  2007:
      early development
  2008:
      1st draft @ T3DD08
  2008-2010:

development
             
& trial by fire

  T3CON10:
 tesseract publication
the
solution
modularity
Data       Data                                    Data
  Filter   Provider                                Consumer




                      re
                                                   View




                       qu
                           es




                                              ut
                                          tp
                            t




                                         ou
                            Controller
  Data       Data
  Filter   Provider




           ...                            output
                            request



Model
Data       Data                                    Data
  Filter   Provider                                Consumer




                      re
                                                   View




                       qu
                           es




                                              ut
                                          tp
                            t




                                         ou
                            Controller
  Data       Data
  Filter   Provider




           ...                            output
                            request



Model
Data       Data                                    Data
  Filter   Provider                                Consumer




                      re
                                                   View




                       qu
                           es




                                              ut
                                          tp
                            t




                                         ou
                            Controller
  Data       Data
  Filter   Provider




           ...                            output
                            request



Model
Data       Data                                    Data
  Filter   Provider                                Consumer




                      re
                                                   View




                       qu
                           es




                                              ut
                                          tp
                            t




                                         ou
                            Controller
  Data       Data
  Filter   Provider




           ...                            output
                            request



Model
Data       Data                                    Data
  Filter   Provider                                Consumer




                      re
                                                   View




                       qu
                           es




                                              ut
                                          tp
                            t




                                         ou
                            Controller
  Data       Data
  Filter   Provider




           ...                            output
                            request



Model
Data       Data                                    Data
  Filter   Provider                                Consumer




                      re
                                                   View




                       qu
                           es




                                              ut
                                          tp
                            t




                                         ou
                            Controller
  Data       Data
  Filter   Provider




           ...                            output
                            request



Model
Data       Data                                    Data
  Filter   Provider                                Consumer




                      re
                                                   View




                       qu
                           es




                                              ut
                                          tp
                            t




                                         ou
                            Controller
  Data       Data
  Filter   Provider




           ...                            output
                            request



Model
Data       Data                                    Data
  Filter   Provider                                Consumer




                      re
                                                   View




                       qu
                           es




                                              ut
                                          tp
                            t




                                         ou
                            Controller
  Data       Data
  Filter   Provider




           ...                            output
                            request



Model
dataquery (SQL)
  Data                     Data
           googlequery (Google box)                                   Data
  Filter                 Provider                                   Consumer
           tagpackprovider (Tag Pack)




                                    re
                                                                    View




                                        qu
                                         es




                                                               ut
                                                           tp
                                             t




                                                          ou
                                             Controller
  Data                     Data
  Filter                 Provider




                        ...                                output
                                             request



Model
dataquery (SQL)
  Data                     Data                      templatedisplay (HTML)
                                                                      Data
           googlequery (Google box)
  Filter                 Provider                    phpdisplay (PHP)
                                                                    Consumer
           tagpackprovider (Tag Pack)




                                    re
                                                                    View




                                        qu
                                         es




                                                               ut
                                                           tp
                                             t




                                                          ou
                                             Controller
  Data                     Data
  Filter                 Provider




                        ...                                output
                                             request



Model
dataquery (SQL)
  Data                     Data                    templatedisplay (HTML)
                                                                    Data
           googlequery (Google box)
  Filter                 Provider                  phpdisplay (PHP)
                                                                  Consumer
           tagpackprovider (Tag Pack)




                                       re
                                                                  View




                                        qu
                                            es




                                                            ut
                                                         tp
                                             t




                                                       ou
                                    displaycontroller
                                             Controller
                                    displaycontroller_advanced
  Data                     Data
  Filter                 Provider




                        ...                              output
                                             request



Model
dataquery (SQL)
    Data                      Data                    templatedisplay (HTML)
                                                                       Data
              googlequery (Google box)
datafilter r
    Filte                   Provider                  phpdisplay (PHP)
                                                                     Consumer
              tagpackprovider (Tag Pack)




                                          re
                                                                     View




                                           qu
                                               es




                                                               ut
                                                            tp
                                                t




                                                          ou
                                       displaycontroller
                                                Controller
                                       displaycontroller_advanced
     Data                     Data
     Filter                 Provider




                           ...                              output
                                                request



Model
dataquery (SQL)
    Data                      Data                    templatedisplay (HTML)
                                                                       Data
              googlequery (Google box)
datafilter r
    Filte                   Provider                  phpdisplay (PHP)
                                                                     Consumer
              tagpackprovider (Tag Pack)




                                          re
                                                                     View




                                           qu
                                               es




                                                               ut
                                                            tp
                                                t




                                                          ou
                                       displaycontroller
                                                Controller
                                       displaycontroller_advanced
     Data                     Data
     Filter                 Provider




                           ...                              output
                                                request
                  tesseract
                  expressions
Model             overlays
                  context
real-word
cases
International Motorcycle Federation
A wide variety of data imported from external systems
International Motorcycle Federation
A wide variety of data imported from external systems
International Motorcycle Federation
A wide variety of data imported from external systems


   Data Provider
International Motorcycle Federation
A wide variety of data imported from external systems


   Data Provider
International Motorcycle Federation
A wide variety of data imported from external systems


   Data Provider




    Data Filter
International Motorcycle Federation
A wide variety of data imported from external systems


   Data Provider




    Data Filter
International Motorcycle Federation
A wide variety of data imported from external systems


   Data Provider                               Data Consumer




    Data Filter
International Motorcycle Federation
A wide variety of data imported from external systems


   Data Provider                               Data Consumer




    Data Filter
International Motorcycle Federation
A wide variety of data imported from external systems


   Data Provider                               Data Consumer




                            Controller




    Data Filter
International Motorcycle Federation
A wide variety of data imported from external systems


   Data Provider                               Data Consumer




                            Controller




    Data Filter
International Motorcycle Federation
A wide variety of data imported from external systems


   Data Provider                               Data Consumer




                            Controller




                                                   Output
    Data Filter
Manpower Switzerland SA
Manpower Switzerland SA
Manpower Switzerland SA
Manpower Switzerland SA
Manpower Switzerland SA
a quick
example
The data provider
The data consumer
The controller
Mapping the data
The result
data
filters
extbase? fluid?
flow3? phoenix?
2008
fluiddisplay
future-
proof?
enjoy & share it...

         find the extensions in the TER

         official website
         www.typo3-tesseract.com


         contacts
         François Suter   David Méndez
         Lead Developer   Business development
            @fsuter         @davidmendez

More Related Content

Similar to T3CON10: The Tesseract Project for TYPO3

Emerson Exchange 3D plots Process Analysis
Emerson Exchange 3D plots Process AnalysisEmerson Exchange 3D plots Process Analysis
Emerson Exchange 3D plots Process AnalysisEmerson Exchange
 
Introduction of e-Journal Local Hosting and Services - Dr. Kwang Young Kim
Introduction of e-Journal Local Hosting and Services - Dr. Kwang Young KimIntroduction of e-Journal Local Hosting and Services - Dr. Kwang Young Kim
Introduction of e-Journal Local Hosting and Services - Dr. Kwang Young Kimtulipbiru64
 
Reactive Stream Processing in Industrial IoT using DDS and Rx
Reactive Stream Processing in Industrial IoT using DDS and RxReactive Stream Processing in Industrial IoT using DDS and Rx
Reactive Stream Processing in Industrial IoT using DDS and RxSumant Tambe
 
It symposium 2011-ods821_data_replication_04-11-2011
It symposium 2011-ods821_data_replication_04-11-2011It symposium 2011-ods821_data_replication_04-11-2011
It symposium 2011-ods821_data_replication_04-11-2011Greg Turmel
 
eBay EDW元数据管理及应用
eBay EDW元数据管理及应用eBay EDW元数据管理及应用
eBay EDW元数据管理及应用mysqlops
 
ReComp, the complete story: an invited talk at Cardiff University
ReComp, the complete story:  an invited talk at Cardiff UniversityReComp, the complete story:  an invited talk at Cardiff University
ReComp, the complete story: an invited talk at Cardiff UniversityPaolo Missier
 
Efficient Re-computation of Big Data Analytics Processes in the Presence of C...
Efficient Re-computation of Big Data Analytics Processes in the Presence of C...Efficient Re-computation of Big Data Analytics Processes in the Presence of C...
Efficient Re-computation of Big Data Analytics Processes in the Presence of C...Paolo Missier
 
PyTorch 튜토리얼 (Touch to PyTorch)
PyTorch 튜토리얼 (Touch to PyTorch)PyTorch 튜토리얼 (Touch to PyTorch)
PyTorch 튜토리얼 (Touch to PyTorch)Hansol Kang
 
Data citationworkshop idcc_2014 Altman
Data citationworkshop idcc_2014 AltmanData citationworkshop idcc_2014 Altman
Data citationworkshop idcc_2014 AltmanMicah Altman
 
IRJET- On-AIR Based Information Retrieval System for Semi-Structure Data
IRJET-  	  On-AIR Based Information Retrieval System for Semi-Structure DataIRJET-  	  On-AIR Based Information Retrieval System for Semi-Structure Data
IRJET- On-AIR Based Information Retrieval System for Semi-Structure DataIRJET Journal
 
IRJET- Pervasive Computing Service Discovery in Secure Framework Environment
IRJET- Pervasive Computing Service Discovery in Secure Framework EnvironmentIRJET- Pervasive Computing Service Discovery in Secure Framework Environment
IRJET- Pervasive Computing Service Discovery in Secure Framework EnvironmentIRJET Journal
 
Breaking down data silos with the open data protocol
Breaking down data silos with the open data protocolBreaking down data silos with the open data protocol
Breaking down data silos with the open data protocolWoodruff Solutions LLC
 
USUGM 2014 - Dana Vanderwall (Bristol-Myers Squibb): Instant JChem
USUGM 2014 - Dana Vanderwall (Bristol-Myers Squibb): Instant JChem USUGM 2014 - Dana Vanderwall (Bristol-Myers Squibb): Instant JChem
USUGM 2014 - Dana Vanderwall (Bristol-Myers Squibb): Instant JChem ChemAxon
 
Provinance in scientific workflows in e science
Provinance in scientific workflows in e scienceProvinance in scientific workflows in e science
Provinance in scientific workflows in e sciencebdemchak
 
Automatic Text Classification Of News Blog using Machine Learning
Automatic Text Classification Of News Blog using Machine LearningAutomatic Text Classification Of News Blog using Machine Learning
Automatic Text Classification Of News Blog using Machine LearningIRJET Journal
 
Europe User Conference: BPT - Transforming data into insight
Europe User Conference: BPT - Transforming data into insightEurope User Conference: BPT - Transforming data into insight
Europe User Conference: BPT - Transforming data into insightKBC (A Yokogawa Company)
 
Microsoft SQL Server - StreamInsight Overview Presentation
Microsoft SQL Server - StreamInsight Overview PresentationMicrosoft SQL Server - StreamInsight Overview Presentation
Microsoft SQL Server - StreamInsight Overview PresentationMicrosoft Private Cloud
 
Mike Taulty OData (NxtGen User Group UK)
Mike Taulty OData (NxtGen User Group UK)Mike Taulty OData (NxtGen User Group UK)
Mike Taulty OData (NxtGen User Group UK)ukdpe
 
The Rise of the Citizen Data Scientist
The Rise of the Citizen Data ScientistThe Rise of the Citizen Data Scientist
The Rise of the Citizen Data ScientistPlatfora
 
How to expose research data in EOSC
How to expose research data in EOSCHow to expose research data in EOSC
How to expose research data in EOSCEUDAT
 

Similar to T3CON10: The Tesseract Project for TYPO3 (20)

Emerson Exchange 3D plots Process Analysis
Emerson Exchange 3D plots Process AnalysisEmerson Exchange 3D plots Process Analysis
Emerson Exchange 3D plots Process Analysis
 
Introduction of e-Journal Local Hosting and Services - Dr. Kwang Young Kim
Introduction of e-Journal Local Hosting and Services - Dr. Kwang Young KimIntroduction of e-Journal Local Hosting and Services - Dr. Kwang Young Kim
Introduction of e-Journal Local Hosting and Services - Dr. Kwang Young Kim
 
Reactive Stream Processing in Industrial IoT using DDS and Rx
Reactive Stream Processing in Industrial IoT using DDS and RxReactive Stream Processing in Industrial IoT using DDS and Rx
Reactive Stream Processing in Industrial IoT using DDS and Rx
 
It symposium 2011-ods821_data_replication_04-11-2011
It symposium 2011-ods821_data_replication_04-11-2011It symposium 2011-ods821_data_replication_04-11-2011
It symposium 2011-ods821_data_replication_04-11-2011
 
eBay EDW元数据管理及应用
eBay EDW元数据管理及应用eBay EDW元数据管理及应用
eBay EDW元数据管理及应用
 
ReComp, the complete story: an invited talk at Cardiff University
ReComp, the complete story:  an invited talk at Cardiff UniversityReComp, the complete story:  an invited talk at Cardiff University
ReComp, the complete story: an invited talk at Cardiff University
 
Efficient Re-computation of Big Data Analytics Processes in the Presence of C...
Efficient Re-computation of Big Data Analytics Processes in the Presence of C...Efficient Re-computation of Big Data Analytics Processes in the Presence of C...
Efficient Re-computation of Big Data Analytics Processes in the Presence of C...
 
PyTorch 튜토리얼 (Touch to PyTorch)
PyTorch 튜토리얼 (Touch to PyTorch)PyTorch 튜토리얼 (Touch to PyTorch)
PyTorch 튜토리얼 (Touch to PyTorch)
 
Data citationworkshop idcc_2014 Altman
Data citationworkshop idcc_2014 AltmanData citationworkshop idcc_2014 Altman
Data citationworkshop idcc_2014 Altman
 
IRJET- On-AIR Based Information Retrieval System for Semi-Structure Data
IRJET-  	  On-AIR Based Information Retrieval System for Semi-Structure DataIRJET-  	  On-AIR Based Information Retrieval System for Semi-Structure Data
IRJET- On-AIR Based Information Retrieval System for Semi-Structure Data
 
IRJET- Pervasive Computing Service Discovery in Secure Framework Environment
IRJET- Pervasive Computing Service Discovery in Secure Framework EnvironmentIRJET- Pervasive Computing Service Discovery in Secure Framework Environment
IRJET- Pervasive Computing Service Discovery in Secure Framework Environment
 
Breaking down data silos with the open data protocol
Breaking down data silos with the open data protocolBreaking down data silos with the open data protocol
Breaking down data silos with the open data protocol
 
USUGM 2014 - Dana Vanderwall (Bristol-Myers Squibb): Instant JChem
USUGM 2014 - Dana Vanderwall (Bristol-Myers Squibb): Instant JChem USUGM 2014 - Dana Vanderwall (Bristol-Myers Squibb): Instant JChem
USUGM 2014 - Dana Vanderwall (Bristol-Myers Squibb): Instant JChem
 
Provinance in scientific workflows in e science
Provinance in scientific workflows in e scienceProvinance in scientific workflows in e science
Provinance in scientific workflows in e science
 
Automatic Text Classification Of News Blog using Machine Learning
Automatic Text Classification Of News Blog using Machine LearningAutomatic Text Classification Of News Blog using Machine Learning
Automatic Text Classification Of News Blog using Machine Learning
 
Europe User Conference: BPT - Transforming data into insight
Europe User Conference: BPT - Transforming data into insightEurope User Conference: BPT - Transforming data into insight
Europe User Conference: BPT - Transforming data into insight
 
Microsoft SQL Server - StreamInsight Overview Presentation
Microsoft SQL Server - StreamInsight Overview PresentationMicrosoft SQL Server - StreamInsight Overview Presentation
Microsoft SQL Server - StreamInsight Overview Presentation
 
Mike Taulty OData (NxtGen User Group UK)
Mike Taulty OData (NxtGen User Group UK)Mike Taulty OData (NxtGen User Group UK)
Mike Taulty OData (NxtGen User Group UK)
 
The Rise of the Citizen Data Scientist
The Rise of the Citizen Data ScientistThe Rise of the Citizen Data Scientist
The Rise of the Citizen Data Scientist
 
How to expose research data in EOSC
How to expose research data in EOSCHow to expose research data in EOSC
How to expose research data in EOSC
 

Recently uploaded

Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 

T3CON10: The Tesseract Project for TYPO3

  • 1. The Tesseract Project Display any piece of information in your web site François Suter, Senior TYPO3 developer, fsuter@cobweb.ch David Méndez, Managing Partner, dmendez@cobweb.ch T3CON10 - Frankfurt, October 2, 2010
  • 3. cobweb.ch web agency, since 1996 > 6 years TYPO3 expertise n°1 integrator in Western Switzerland experienced team  consultancy  webdesign  TYPO3 & Magento developers SME, major companies & NPO's
  • 4. ecodev.ch Swiss IT services > 4 years TYPO3 expertise 7 people
  • 6. tesseract team François Suter, Cobweb Lead Developer TYPO3 core team member
  • 7. tesseract team François Suter, Cobweb Lead Developer TYPO3 core team member Fabien Udriot, Ecodev Developer
  • 8. tesseract team François Suter, Cobweb Lead Developer TYPO3 core team member Fabien Udriot, Ecodev Developer Roberto Presedo, Cobweb Developer TYPO3 certified integrator
  • 9. tesseract team François Suter, Cobweb Lead Developer TYPO3 core team member Fabien Udriot, Ecodev Developer Roberto Presedo, Cobweb Developer TYPO3 certified integrator David Méndez, Cobweb Business Development
  • 12. contacts job offers chocolates members racesdocuments real estate news watches sports results books pharmacies meetings locations magazines staff press releases proceedings
  • 14. stuff
  • 15. stuff list
  • 16. stuff list browse
  • 17. stuff list browse view details
  • 18. stuff list browse view details search
  • 19. stuff list browse view details search cross-link
  • 20. timeline 2006: 1st thoughts @ T3DD06 2007: early development 2008: 1st draft @ T3DD08 2008-2010: development & trial by fire T3CON10: tesseract publication
  • 22.
  • 23.
  • 25. Data Data Data Filter Provider Consumer re View qu es ut tp t ou Controller Data Data Filter Provider ... output request Model
  • 26. Data Data Data Filter Provider Consumer re View qu es ut tp t ou Controller Data Data Filter Provider ... output request Model
  • 27. Data Data Data Filter Provider Consumer re View qu es ut tp t ou Controller Data Data Filter Provider ... output request Model
  • 28. Data Data Data Filter Provider Consumer re View qu es ut tp t ou Controller Data Data Filter Provider ... output request Model
  • 29. Data Data Data Filter Provider Consumer re View qu es ut tp t ou Controller Data Data Filter Provider ... output request Model
  • 30. Data Data Data Filter Provider Consumer re View qu es ut tp t ou Controller Data Data Filter Provider ... output request Model
  • 31. Data Data Data Filter Provider Consumer re View qu es ut tp t ou Controller Data Data Filter Provider ... output request Model
  • 32. Data Data Data Filter Provider Consumer re View qu es ut tp t ou Controller Data Data Filter Provider ... output request Model
  • 33. dataquery (SQL) Data Data googlequery (Google box) Data Filter Provider Consumer tagpackprovider (Tag Pack) re View qu es ut tp t ou Controller Data Data Filter Provider ... output request Model
  • 34. dataquery (SQL) Data Data templatedisplay (HTML) Data googlequery (Google box) Filter Provider phpdisplay (PHP) Consumer tagpackprovider (Tag Pack) re View qu es ut tp t ou Controller Data Data Filter Provider ... output request Model
  • 35. dataquery (SQL) Data Data templatedisplay (HTML) Data googlequery (Google box) Filter Provider phpdisplay (PHP) Consumer tagpackprovider (Tag Pack) re View qu es ut tp t ou displaycontroller Controller displaycontroller_advanced Data Data Filter Provider ... output request Model
  • 36. dataquery (SQL) Data Data templatedisplay (HTML) Data googlequery (Google box) datafilter r Filte Provider phpdisplay (PHP) Consumer tagpackprovider (Tag Pack) re View qu es ut tp t ou displaycontroller Controller displaycontroller_advanced Data Data Filter Provider ... output request Model
  • 37. dataquery (SQL) Data Data templatedisplay (HTML) Data googlequery (Google box) datafilter r Filte Provider phpdisplay (PHP) Consumer tagpackprovider (Tag Pack) re View qu es ut tp t ou displaycontroller Controller displaycontroller_advanced Data Data Filter Provider ... output request tesseract expressions Model overlays context
  • 39. International Motorcycle Federation A wide variety of data imported from external systems
  • 40. International Motorcycle Federation A wide variety of data imported from external systems
  • 41. International Motorcycle Federation A wide variety of data imported from external systems Data Provider
  • 42. International Motorcycle Federation A wide variety of data imported from external systems Data Provider
  • 43. International Motorcycle Federation A wide variety of data imported from external systems Data Provider Data Filter
  • 44. International Motorcycle Federation A wide variety of data imported from external systems Data Provider Data Filter
  • 45. International Motorcycle Federation A wide variety of data imported from external systems Data Provider Data Consumer Data Filter
  • 46. International Motorcycle Federation A wide variety of data imported from external systems Data Provider Data Consumer Data Filter
  • 47. International Motorcycle Federation A wide variety of data imported from external systems Data Provider Data Consumer Controller Data Filter
  • 48. International Motorcycle Federation A wide variety of data imported from external systems Data Provider Data Consumer Controller Data Filter
  • 49. International Motorcycle Federation A wide variety of data imported from external systems Data Provider Data Consumer Controller Output Data Filter
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 70. 2008
  • 73. enjoy & share it... find the extensions in the TER official website www.typo3-tesseract.com contacts François Suter David Méndez Lead Developer Business development @fsuter @davidmendez

Editor's Notes

  1. DME
  2. DME
  3. Founded in 1996, Cobweb is a Swiss web agency in Geneva. With over 6 years experience on TYPO3, we are the leading TYPO3 integrator in Western Swizerland. Our experienced team consists of 10 senior consultant, webdesigner and developer. Our clients are local Small and Medium Entreprises, Major companies like Manpower or non-profit organizations like International Federation of Red Cross and Red Crescent Societies.
  4. Ecodev is a Swiss IT services company based in Neuchâtel. Ecodev has been using TYPO3 since 2006 and consists of a team 7 people.
  5. François is the initiator and architect of the project. He was supported by Fabien and Roberto. My self, as usual for business developers, I haven't really worked on the project... but I had the pleasure to experience it on various client projects.
  6. François is the initiator and architect of the project. He was supported by Fabien and Roberto. My self, as usual for business developers, I haven't really worked on the project... but I had the pleasure to experience it on various client projects.
  7. François is the initiator and architect of the project. He was supported by Fabien and Roberto. My self, as usual for business developers, I haven't really worked on the project... but I had the pleasure to experience it on various client projects.
  8. François is the initiator and architect of the project. He was supported by Fabien and Roberto. My self, as usual for business developers, I haven't really worked on the project... but I had the pleasure to experience it on various client projects.
  9. Over the years we worked on a large number of web sites. Our experience is that - although every web site is different - there’s one particular requirement that we need to meet in most projects. So we set out to create a general solution to this recurring need.
  10. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  11. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  12. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  13. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  14. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  15. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  16. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  17. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  18. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  19. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  20. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  21. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  22. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  23. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  24. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  25. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  26. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  27. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  28. So what’s that requirement? It’s the need to display variously structured information on the web site. This can be... - contacts, locations, pieces of real estate, job offers, pharmacies, you name it to sum it up “stuff”
  29. Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity And what do we want to do with that stuff? Most of the time, always the same: - list it - browse it - view its details - search it - and create cross-links between various pieces of information If you don’t have some special solution, you find yourself repeating the same developments over and over The TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information This is not a solution
  30. Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity And what do we want to do with that stuff? Most of the time, always the same: - list it - browse it - view its details - search it - and create cross-links between various pieces of information If you don’t have some special solution, you find yourself repeating the same developments over and over The TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information This is not a solution
  31. Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity And what do we want to do with that stuff? Most of the time, always the same: - list it - browse it - view its details - search it - and create cross-links between various pieces of information If you don’t have some special solution, you find yourself repeating the same developments over and over The TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information This is not a solution
  32. Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity And what do we want to do with that stuff? Most of the time, always the same: - list it - browse it - view its details - search it - and create cross-links between various pieces of information If you don’t have some special solution, you find yourself repeating the same developments over and over The TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information This is not a solution
  33. Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity And what do we want to do with that stuff? Most of the time, always the same: - list it - browse it - view its details - search it - and create cross-links between various pieces of information If you don’t have some special solution, you find yourself repeating the same developments over and over The TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information This is not a solution
  34. Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity And what do we want to do with that stuff? Most of the time, always the same: - list it - browse it - view its details - search it - and create cross-links between various pieces of information If you don’t have some special solution, you find yourself repeating the same developments over and over The TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information This is not a solution
  35. Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity And what do we want to do with that stuff? Most of the time, always the same: - list it - browse it - view its details - search it - and create cross-links between various pieces of information If you don’t have some special solution, you find yourself repeating the same developments over and over The TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information This is not a solution
  36. In 2006 I presented my first thoughts about the need for a general solution at T3DD06. Nothing much happened afterwards, but in late 2007 I had an opportunity to develop a first rough solution, which was presented during T3DD08 In 2008 several large projects gave us the opportunity to start the real development and to put the solution to test on large, high-traffic web sites. The project matured all the way to the current day and we chose T3CON10 as a deadline for going public.
  37. So now on to the solution itself. What’s the possible solution to this conundrum? You can see it coming: a generic solution. Big words Does that scare you? It should.
  38. Generic solutions... That’s often how it ends up. You want to do everything and you end up with an overly complex structure which nobody understands anymore after a while. But it needs not be so There are clever generic solutions! They rely on a simple principle: modularity
  39. Generic solutions... That’s often how it ends up. You want to do everything and you end up with an overly complex structure which nobody understands anymore after a while. But it needs not be so There are clever generic solutions! They rely on a simple principle: modularity
  40. How did we make this modularity come true? This is the architecture of our solution. At the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data. This data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE. How can that work? Data Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern. On top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).
  41. How did we make this modularity come true? This is the architecture of our solution. At the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data. This data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE. How can that work? Data Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern. On top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).
  42. How did we make this modularity come true? This is the architecture of our solution. At the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data. This data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE. How can that work? Data Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern. On top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).
  43. How did we make this modularity come true? This is the architecture of our solution. At the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data. This data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE. How can that work? Data Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern. On top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).
  44. How did we make this modularity come true? This is the architecture of our solution. At the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data. This data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE. How can that work? Data Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern. On top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).
  45. How did we make this modularity come true? This is the architecture of our solution. At the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data. This data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE. How can that work? Data Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern. On top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).
  46. The modularity translates into a number of extensions, each with its own specialization. Data Providers: dataquery (SQL-based), googlequery (Google Search Appliance or Google Mini), tagpackprovider (Tag Pack) Data Consumers: templatedisplay (HTML templates), phpdisplay (straight templating in PHP) Controllers: displaycontroller and displaycontroller_advanced which allows for more complicated interactions between the components Data Filters: only datafilter, but it’s very powerful and we’ll come back to that later Additionally there are a number of related extensions: tesseract (which is obviously a base extension), expressions (used by datafilter, more later), overlays (used by dataquery to transparently handle translations) and context (used to define some global values in TypoScript which can be picked up with datafilter - this is a more advanced concept of Tesseract, which I will not cover here)
  47. The modularity translates into a number of extensions, each with its own specialization. Data Providers: dataquery (SQL-based), googlequery (Google Search Appliance or Google Mini), tagpackprovider (Tag Pack) Data Consumers: templatedisplay (HTML templates), phpdisplay (straight templating in PHP) Controllers: displaycontroller and displaycontroller_advanced which allows for more complicated interactions between the components Data Filters: only datafilter, but it’s very powerful and we’ll come back to that later Additionally there are a number of related extensions: tesseract (which is obviously a base extension), expressions (used by datafilter, more later), overlays (used by dataquery to transparently handle translations) and context (used to define some global values in TypoScript which can be picked up with datafilter - this is a more advanced concept of Tesseract, which I will not cover here)
  48. The modularity translates into a number of extensions, each with its own specialization. Data Providers: dataquery (SQL-based), googlequery (Google Search Appliance or Google Mini), tagpackprovider (Tag Pack) Data Consumers: templatedisplay (HTML templates), phpdisplay (straight templating in PHP) Controllers: displaycontroller and displaycontroller_advanced which allows for more complicated interactions between the components Data Filters: only datafilter, but it’s very powerful and we’ll come back to that later Additionally there are a number of related extensions: tesseract (which is obviously a base extension), expressions (used by datafilter, more later), overlays (used by dataquery to transparently handle translations) and context (used to define some global values in TypoScript which can be picked up with datafilter - this is a more advanced concept of Tesseract, which I will not cover here)
  49. The modularity translates into a number of extensions, each with its own specialization. Data Providers: dataquery (SQL-based), googlequery (Google Search Appliance or Google Mini), tagpackprovider (Tag Pack) Data Consumers: templatedisplay (HTML templates), phpdisplay (straight templating in PHP) Controllers: displaycontroller and displaycontroller_advanced which allows for more complicated interactions between the components Data Filters: only datafilter, but it’s very powerful and we’ll come back to that later Additionally there are a number of related extensions: tesseract (which is obviously a base extension), expressions (used by datafilter, more later), overlays (used by dataquery to transparently handle translations) and context (used to define some global values in TypoScript which can be picked up with datafilter - this is a more advanced concept of Tesseract, which I will not cover here)
  50. The modularity translates into a number of extensions, each with its own specialization. Data Providers: dataquery (SQL-based), googlequery (Google Search Appliance or Google Mini), tagpackprovider (Tag Pack) Data Consumers: templatedisplay (HTML templates), phpdisplay (straight templating in PHP) Controllers: displaycontroller and displaycontroller_advanced which allows for more complicated interactions between the components Data Filters: only datafilter, but it’s very powerful and we’ll come back to that later Additionally there are a number of related extensions: tesseract (which is obviously a base extension), expressions (used by datafilter, more later), overlays (used by dataquery to transparently handle translations) and context (used to define some global values in TypoScript which can be picked up with datafilter - this is a more advanced concept of Tesseract, which I will not cover here)
  51. How does that translate into real projects? Tesseract is not some conceptual piece of code. It has been powering large web site for about two years. Let’s look at a couple of them to better understand how the Tesseract components are called into action.
  52. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  53. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  54. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  55. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  56. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  57. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  58. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  59. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  60. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  61. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  62. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  63. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  64. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  65. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  66. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  67. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  68. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  69. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  70. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  71. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  72. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  73. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  74. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  75. The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3. Thanks to Tesseract no specific extension needed to be developed to display this data. The workhorse here is Data Query. We use SQL to query any of the imported tables. Here’s an example query, aimed at retrieving a list of races. This query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season. On the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering. Finally everything is bound together by a Display Controller. When the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller. You can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.
  76. A second example of real-life, large web site using Tesseract is Manpower Switzerland. Here again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system. This project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers. The overall schema is the same as before, so I’ll mention what is really specific here. One interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys. The querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards. Here are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.
  77. A second example of real-life, large web site using Tesseract is Manpower Switzerland. Here again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system. This project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers. The overall schema is the same as before, so I’ll mention what is really specific here. One interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys. The querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards. Here are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.
  78. A second example of real-life, large web site using Tesseract is Manpower Switzerland. Here again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system. This project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers. The overall schema is the same as before, so I’ll mention what is really specific here. One interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys. The querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards. Here are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.
  79. A second example of real-life, large web site using Tesseract is Manpower Switzerland. Here again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system. This project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers. The overall schema is the same as before, so I’ll mention what is really specific here. One interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys. The querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards. Here are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.
  80. A second example of real-life, large web site using Tesseract is Manpower Switzerland. Here again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system. This project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers. The overall schema is the same as before, so I’ll mention what is really specific here. One interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys. The querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards. Here are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.
  81. A second example of real-life, large web site using Tesseract is Manpower Switzerland. Here again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system. This project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers. The overall schema is the same as before, so I’ll mention what is really specific here. One interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys. The querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards. Here are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.
  82. To go a step further in understanding how Tesseract works, let’s step through a simple, but more detailed example. Image the following scenario: you want to display a list of BE users on your web site, so that people can easily get in touch with the site’s administrators. This is not possible by default in TYPO3 and you would normally have to develop a custom extension or some other workaround.
  83. This example is actually a summary of the first Tesseract tutorial, which is available on the Tesseract web site and is included in the proceeding of this conference. To get a list of BE users we’re going to use “dataquery”, since it allows us to send a SQL query to the TYPO3 database. We choose to select just the admin’s name, username and e-mail address.
  84. A simple HTML template is more than enough for this example (as it is - in our experience - 99% of the time). The syntax is fairly simple. It relies on markers close to the usual TYPO3 syntax, plus some control elements like loops and conditions. We’ll come back to this component later.
  85. As a controller we use an instance of extension “displaycontroller”, which acts as a FE plugin. As can be expected from a controller, it defines the relations between the various components. In this case we just have a Data Provider and a Data Consumer. Now that these two components have been related with one another, we can go back to the Data Consumer and take the next step...
  86. ...which is to map the data coming from the database to the markers that we placed in the template. This is easily achieved with a convenient point and click interface. Each marker can be matched to one field. There are different field types, which - roughly - correspond to the base content object types. Additional TypoScript can be entered for each field.
  87. Bingo, a list of BE users in under 5 minutes. This is a very simple example of what can be achieved with Tesseract. It’s far more powerful that this, but this example highlights a typical workflow.
  88. I would like to dwell a bit longer on one particular component type: the Data Filter. Its flexibility is one important reason for Tesseract’s capability to handle most situations that you can throw at it. We discussed before the danger that looms over all generic solutions: as they try to cover all situations they grow ever more complex until they become unwieldy and unmaintainable. One way we avoided this pitfall in Tesseract is to exclude some features from it: one such feature is search forms. It comes at a little additional efforts for site administrators, but let me try to convince you of this choice.
  89. The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time. And there are often very precise design requirements too. Look at this first form. That’s just simple drop-down menu to select years. Next form. There’s still the year selector, but a few more have been added to that. Next is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages. And then there are some really sophisticated forms, with many fields, requiring some unusual layouts Here’s another one to search for watches on many criteria. This whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software. This is the reason why we chose to leave form building completely out of Tesseract.
  90. The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time. And there are often very precise design requirements too. Look at this first form. That’s just simple drop-down menu to select years. Next form. There’s still the year selector, but a few more have been added to that. Next is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages. And then there are some really sophisticated forms, with many fields, requiring some unusual layouts Here’s another one to search for watches on many criteria. This whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software. This is the reason why we chose to leave form building completely out of Tesseract.
  91. The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time. And there are often very precise design requirements too. Look at this first form. That’s just simple drop-down menu to select years. Next form. There’s still the year selector, but a few more have been added to that. Next is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages. And then there are some really sophisticated forms, with many fields, requiring some unusual layouts Here’s another one to search for watches on many criteria. This whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software. This is the reason why we chose to leave form building completely out of Tesseract.
  92. The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time. And there are often very precise design requirements too. Look at this first form. That’s just simple drop-down menu to select years. Next form. There’s still the year selector, but a few more have been added to that. Next is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages. And then there are some really sophisticated forms, with many fields, requiring some unusual layouts Here’s another one to search for watches on many criteria. This whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software. This is the reason why we chose to leave form building completely out of Tesseract.
  93. The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time. And there are often very precise design requirements too. Look at this first form. That’s just simple drop-down menu to select years. Next form. There’s still the year selector, but a few more have been added to that. Next is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages. And then there are some really sophisticated forms, with many fields, requiring some unusual layouts Here’s another one to search for watches on many criteria. This whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software. This is the reason why we chose to leave form building completely out of Tesseract.
  94. The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time. And there are often very precise design requirements too. Look at this first form. That’s just simple drop-down menu to select years. Next form. There’s still the year selector, but a few more have been added to that. Next is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages. And then there are some really sophisticated forms, with many fields, requiring some unusual layouts Here’s another one to search for watches on many criteria. This whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software. This is the reason why we chose to leave form building completely out of Tesseract.
  95. The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time. And there are often very precise design requirements too. Look at this first form. That’s just simple drop-down menu to select years. Next form. There’s still the year selector, but a few more have been added to that. Next is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages. And then there are some really sophisticated forms, with many fields, requiring some unusual layouts Here’s another one to search for watches on many criteria. This whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software. This is the reason why we chose to leave form building completely out of Tesseract.
  96. The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time. And there are often very precise design requirements too. Look at this first form. That’s just simple drop-down menu to select years. Next form. There’s still the year selector, but a few more have been added to that. Next is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages. And then there are some really sophisticated forms, with many fields, requiring some unusual layouts Here’s another one to search for watches on many criteria. This whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software. This is the reason why we chose to leave form building completely out of Tesseract.
  97. The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time. And there are often very precise design requirements too. Look at this first form. That’s just simple drop-down menu to select years. Next form. There’s still the year selector, but a few more have been added to that. Next is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages. And then there are some really sophisticated forms, with many fields, requiring some unusual layouts Here’s another one to search for watches on many criteria. This whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software. This is the reason why we chose to leave form building completely out of Tesseract.
  98. The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time. And there are often very precise design requirements too. Look at this first form. That’s just simple drop-down menu to select years. Next form. There’s still the year selector, but a few more have been added to that. Next is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages. And then there are some really sophisticated forms, with many fields, requiring some unusual layouts Here’s another one to search for watches on many criteria. This whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software. This is the reason why we chose to leave form building completely out of Tesseract.
  99. Instead forms can be built with any solution you choose: any of the existing form extensions, a custom-made plugin, even the standard mailform for simple cases. Thanks to the expressions library, the Data Filter can retrieve data from many sources including any GET/POST variables, TypoScript values, FE user values, etc. Thus it does not matter how a search form is built nor how filters or restrictions are defined. It’s possible to catch all these values using a Data Filter. These values then get injected into the Data Consumer to restrict its selection. This is very powerful.
  100. So, Tesseract, fine and dandy. But there’s extbase, fluid, flow3, phoenix and all that. With all the wonders promised by recent and upcoming new technologies, you may wonder why we invested so much in the Tesseract project.
  101. First of all the actual development started back in early 2008. Back then extbase didn’t exist and neither did fluid, flow3 was not even alpha and phoenix was still only conceptual. So we built a solution on an existing base, but we tried to make it as independent as possible: if you consider the whole Tesseract architecture, it’s really just the controller who are built as pibase plugins. The other components are independent. There could be an extbase-based controller.
  102. There’s already a Fluid-based Data Consumer on Forge. It’s not released yet because it depends on changes in Fluid that are not stable yet, but which enable Fluid to run outside of an Extbase context. But in the very near future it will be possible to also use Fluid within Tesseract.
  103. What with further in the future, with TYPO3 v5? This is very hard to say for now. There are talks about trying to create generic domain models. This might render Tesseract obsolete, but we’re not there yet. The modular structure of Tesseract can certainly be reproduced in the v5 and some of the logic reused. In the meantime Tesseract helps solve real-world problems in a very flexible way and we’re very happy about releasing it to the community.
  104. All extensions that make up Tesseract have been released to the TER on Monday this week. We have also set up a dedicated web site with a global overview of the project and some tutorials. We plan to release more tutorials in the future, as well as tips & tricks and examples of advanced usage. So go and look at the web site and watch the introductory screencast. Try out Tesseract and give us your feedback. We hope you will find it as useful as we do.