SlideShare ist ein Scribd-Unternehmen logo
1 von 57
TYPO3 Photo Gallery Management
Daniel Lienert
 Frankfurt / Germany
 TYPO3 Developer
   Twitter: @dlienert

Michael Knoll
 Karlsruhe / Germany
 TYPO3 Developer
    Twitter: @kaktusmimi
   Introduction
   Concepts
   Backend / Frontend
   Build your own theme
   Searching TER for „gallery“
     ▪ 120 Extensions
Easy customization
Scalability
                   Lightroom Export
Backend Module

      Skinning   Usability
ArbitraryResolutions
                     Speed
Extendability   Clean Codebase
   Clean Codebase (Extbase approach)
   Extendable (Theming & API)
   Scalable (T3 caching)
   Easy to manage (BE Module)
   Strict seperation of gallery management and
    frontend representation
   All features known from„Big Galleries“
     EXIF, Lightbox, Multifile-Upload, Skinning, ...
   Well-integrated in TYPO3
   Flexible Resolution handling & caching
   Interfaces for Desktop Applications (e.g.
    Lightroom)
   Flexible Filtering of images
    (tags, categories, EXIF data, ...)
...that empower yag
Extbase +
   Fluid
                      YAG depends on
                        Extbase / Fluid
                        pt_extlist (powerfull
                         list generator)
pt_extlist
•Listing
•Filters
             YAG        pt_extbase (some
                         extbase / pre-
                         extbase helper
                         methods)
pt_extbase
•Helper
 methods
Gallery




                       Album 1             Album 2

             Version 2.0 will
              come up with
                Image 1      Image 2       Image 3



Resolution       PIDs!!!
               Resolution   Resolution
    1              2            3
   Image Management (Backend)
     Gallery -> Album -> Items


   Image Presentation (Frontend)
     Arbitrary Image-Collections
      ▪ Gallery – Album – Items
      ▪ Categories
      ▪ Tags
      ▪ ...
Source
images




           Filter
  Filter




            Category,
           Album, Tags
                ,
               ...
   A typoscript-defined representation
    of an image
   Define as many as you want
resolutionConfigs {
thumb {
      maxW = 150
      maxH = 150
    }
}                                                     imagID, „thumb“




                                   Image Repository


 Source               Resolution
 images                 cache
Meta Data
                               extraction




                   YAG
                            Album allocation
                 Importer


External Image
Resource
                              Filesystem-
                                Storage
   Currently implemented:
            Crawls directory and                 Uploads multiple
Directory   imports image files      Multifile   Files via SWF Uploader
Importer                             Uploader

            Extracts uploaded ZIP                Handles HTTP requests
 ZIP File   file and imports image   Remote      from Desktop
Uploader    files                    Uploader    applications, e.g.
                                                 Lightroom
...made for usability
•   Gallery List
    • Add, edit, delete
    • Drag & Drop sorting
•   Album List
    • Add, edit, delete
    • Drag & Drop sorting
    • Hide / unhide
    • Set gallery preview
     album
•   Album Edit List
    • Batch editing of
      albums
    • Reassign albums to
      galleries
•   Image List
    • Edit title / description
    • Define album thumb
    • Drag & Drop sorting
    • Change default
      sorting to title /
      capture date /
      filename
•   Image Edit List
    • Batch editing of
     images
•   Import images
    • Flash multifile uploader
    • Zip uploader
    • Import from Server
     directory
•   Maintenance
    • All facts on one page
    • Clear page cache of
     pages on which yag
     is installed
•   Maintenance
    • Clear / rebuild the
      resolution file cache
•   Content element
    overview shows
    detailed info
•   Maintenance
    • Gallery list
    • Specific gallery
    • Specific album
    • Specific image
•   Select theme
•   Item Selector
    • Select gallery /
      album / image with
      an easy to use JS
      powered selector
   Sure! (60+ pages)
...your personal look and feel
   Frontend rendering is done by themes
   Lightweight, powerful and easy to customize
   Easy to select while adding yag as content
    element
   Select the theme per plugin instance
     Different themes on the same page are possible
   YAG provides 1½
    themes out of the
    box
   Single image
    with detailed
    view
   Single image with
    lightbox
   Several other themes are available in TER
     yag_themepack_jquery
      ▪ Galleryview
      ▪ Crosslide
      ▪ Isotope
      ▪ superSized
      ▪ Rondell / Rondell Gallery
     yag_theme_perfectlightbox (alternative lightbox)
     yag_theme_fancybox (alternative lightbox)
   Some live examples ..
   Demonstration
Typoscript              HTML                  PHP
•   General Config     • Fluid Templates    • ViewHelper
•   List definition                         • Filters
•   Image resolution
•   CSS/JS Includes




               CSS                         Javascript

                                     • Effects
                                     • Lighbox
AlbumList.Extlist.ts

AlbumList.ts

GalleryList.Extlist.ts

GalleryList.ts

General.ts                Define the configuration and
                             General look and behaviour
                              pt_extlist configuration
                         of the resolution definition. view
                                gallery / album / item
ItemList.Extlist.ts

ItemList.ts

Item.ts

Theme.ts
Typoscript
Code
plugin.tx_yag.settings.themes {
   myFancyTheme < plugin.tx_yag.settings.themes.default
   myFancyTheme {
                                   thumb = GIFBUILDER
                                   thumb {
        resolutionConfigs {          XY = [10.w],[10.h]
           thumb {
               width = 150c          10 = IMAGE
               height = 150c         10 {
           }                                file.maxH = 170
                                            file.maxW = 170
        }
                                            file.import.field = yagImage
                                          }
        includeJS.fancy = EXT:myFencyTheme/Resources/…/fancy.js
        includeCSS.fancy = EXT:myFencyTheme/Resources/…/fancy.css
                                  20 = IMAGE
                                   20 {
                                     file = EXT:yag/Tests/TestImages/watermark.png
        aThemeSpecificVariable = 42 offset = [10.w]-100,[10.h]-70
                                     }
        controller.ItemList.list {
                                 }
            template = EXT:fancy/…/Templates/…/List.html
        }
    }
}
Template
Code
    …
    <f:for each="{listData}" key="rowIndex" as="listRow">
       <div class=image">
           <yag:image item="{listRow.image.value}" resolutionName="thumb" />
       </div>
    </f:for>
    …


Output

…
<div class=image>
  <img alt=„A Title" title=„A Title"
          src="typo3temp/yag/00/81x4e876324374b0.jpg„ width="150" height="100">
</div>
…
Access Typoscript Settings
 Typoscript
Code
 plugin.tx_yag.settings.themes.myFancyTheme {
    specialClass= foo
 }



 Template
<div class={config.specialClass}>
  <yag:image item="{listRow.image.value}" resolutionName="thumb" />
</div>
Include Javascript


   Inline Javascript with Fluid can be pure pain.
   Our approach: JS Template ViewHelper

Template

<yag:Javascript.template
       templatePath="EXT:../JSTemplates/CustomScript.js"
       addToHead=„1"
       arguments="{key1:‚value', key2:‚value2'}
/>
Include Javascript

    Javscript Template
function demo() {

    if(###key1### == value) {
         alert(###LLL:tx_yag_controller_gallery.sortingSaved###);
    }
}
   YAG 1.x: All records are stored on PID 0
     No possibility to set permissions for galleries to
      authors in backend / user in frontend
     No multipage installations


   YAG 2.x
     Sysfolder / Page selector in BE module
     Sysfolder / Page selector to CE
     Keep it simple and usable!
   Our goal:
     Having generic categories for multiple extensions
     Having (ExtJs) Tree-Widget for editing categories
   Let FE Users
     Create / Edit / Delete
      ▪ Galleries
      ▪ Albums
     Upload / Edit / Delete
      ▪ Images
    in Frontend
   Our Website
     http://www.yag-gallery.de


   YAG on forge.typo3.org
     http://forge.typo3.org/projects/extension-yag


   Code on GitHub
     https://github.com/yag-gallery/yag
YAG - Yet another gallery (2012)
YAG - Yet another gallery (2012)

Weitere ähnliche Inhalte

Ähnlich wie YAG - Yet another gallery (2012)

Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptxMicrosoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
tutorialsruby
 
Be nice to your designers
Be nice to your designersBe nice to your designers
Be nice to your designers
Pai-Cheng Tao
 
UKOUG 2011 - Drag, Drop and other Stuff. Using your Database as a File Server
UKOUG 2011 - Drag, Drop and other Stuff. Using your Database as a File ServerUKOUG 2011 - Drag, Drop and other Stuff. Using your Database as a File Server
UKOUG 2011 - Drag, Drop and other Stuff. Using your Database as a File Server
Marco Gralike
 
MozTW Jetpack Workshop: Taipei
MozTW Jetpack Workshop: TaipeiMozTW Jetpack Workshop: Taipei
MozTW Jetpack Workshop: Taipei
littlebtc
 

Ähnlich wie YAG - Yet another gallery (2012) (20)

YAG - Yet Another Gallery
YAG - Yet Another GalleryYAG - Yet Another Gallery
YAG - Yet Another Gallery
 
YAG - Yet Another Gallery / T3CON11
YAG - Yet Another Gallery / T3CON11YAG - Yet Another Gallery / T3CON11
YAG - Yet Another Gallery / T3CON11
 
Hppg r819 gallery presentation, search by color introduced
Hppg r819 gallery presentation, search by color introducedHppg r819 gallery presentation, search by color introduced
Hppg r819 gallery presentation, search by color introduced
 
jQuery-3-UI
jQuery-3-UIjQuery-3-UI
jQuery-3-UI
 
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptxMicrosoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-3-UI.pptx
 
JQuery-Tutorial
 JQuery-Tutorial JQuery-Tutorial
JQuery-Tutorial
 
CUST-1 Share Document Library Extension Points
CUST-1 Share Document Library Extension PointsCUST-1 Share Document Library Extension Points
CUST-1 Share Document Library Extension Points
 
Be nice to your designers
Be nice to your designersBe nice to your designers
Be nice to your designers
 
itPage LDC 09 Presentation
itPage LDC 09 PresentationitPage LDC 09 Presentation
itPage LDC 09 Presentation
 
Image galley ppt
Image galley pptImage galley ppt
Image galley ppt
 
Creating Custom Templates for Joomla! 2.5
Creating Custom Templates for Joomla! 2.5Creating Custom Templates for Joomla! 2.5
Creating Custom Templates for Joomla! 2.5
 
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine DevelopmentEECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
 
Styling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS EditionStyling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS Edition
 
Hppg
HppgHppg
Hppg
 
Rails 3 (beta) Roundup
Rails 3 (beta) RoundupRails 3 (beta) Roundup
Rails 3 (beta) Roundup
 
Drupal 8 theming deep dive
Drupal 8 theming deep diveDrupal 8 theming deep dive
Drupal 8 theming deep dive
 
UKOUG 2011 - Drag, Drop and other Stuff. Using your Database as a File Server
UKOUG 2011 - Drag, Drop and other Stuff. Using your Database as a File ServerUKOUG 2011 - Drag, Drop and other Stuff. Using your Database as a File Server
UKOUG 2011 - Drag, Drop and other Stuff. Using your Database as a File Server
 
A Dexterity Intro for Recovering Archetypes Addicts
A Dexterity Intro for Recovering Archetypes AddictsA Dexterity Intro for Recovering Archetypes Addicts
A Dexterity Intro for Recovering Archetypes Addicts
 
CSS and image optimization
CSS and image optimizationCSS and image optimization
CSS and image optimization
 
MozTW Jetpack Workshop: Taipei
MozTW Jetpack Workshop: TaipeiMozTW Jetpack Workshop: Taipei
MozTW Jetpack Workshop: Taipei
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 

YAG - Yet another gallery (2012)

  • 1. TYPO3 Photo Gallery Management
  • 2. Daniel Lienert Frankfurt / Germany TYPO3 Developer Twitter: @dlienert Michael Knoll Karlsruhe / Germany TYPO3 Developer Twitter: @kaktusmimi
  • 3. Introduction  Concepts  Backend / Frontend  Build your own theme
  • 4.
  • 5. Searching TER for „gallery“ ▪ 120 Extensions
  • 6. Easy customization Scalability Lightroom Export Backend Module Skinning Usability ArbitraryResolutions Speed Extendability Clean Codebase
  • 7. Clean Codebase (Extbase approach)  Extendable (Theming & API)  Scalable (T3 caching)  Easy to manage (BE Module)  Strict seperation of gallery management and frontend representation  All features known from„Big Galleries“  EXIF, Lightbox, Multifile-Upload, Skinning, ...
  • 8. Well-integrated in TYPO3  Flexible Resolution handling & caching  Interfaces for Desktop Applications (e.g. Lightroom)  Flexible Filtering of images (tags, categories, EXIF data, ...)
  • 10. Extbase + Fluid  YAG depends on  Extbase / Fluid  pt_extlist (powerfull list generator) pt_extlist •Listing •Filters YAG  pt_extbase (some extbase / pre- extbase helper methods) pt_extbase •Helper methods
  • 11. Gallery Album 1 Album 2 Version 2.0 will come up with Image 1 Image 2 Image 3 Resolution PIDs!!! Resolution Resolution 1 2 3
  • 12. Image Management (Backend)  Gallery -> Album -> Items  Image Presentation (Frontend)  Arbitrary Image-Collections ▪ Gallery – Album – Items ▪ Categories ▪ Tags ▪ ...
  • 13. Source images Filter Filter Category, Album, Tags , ...
  • 14. A typoscript-defined representation of an image  Define as many as you want
  • 15. resolutionConfigs { thumb { maxW = 150 maxH = 150 } } imagID, „thumb“ Image Repository Source Resolution images cache
  • 16. Meta Data extraction YAG Album allocation Importer External Image Resource Filesystem- Storage
  • 17. Currently implemented: Crawls directory and Uploads multiple Directory imports image files Multifile Files via SWF Uploader Importer Uploader Extracts uploaded ZIP Handles HTTP requests ZIP File file and imports image Remote from Desktop Uploader files Uploader applications, e.g. Lightroom
  • 19.
  • 20. Gallery List • Add, edit, delete • Drag & Drop sorting
  • 21. Album List • Add, edit, delete • Drag & Drop sorting • Hide / unhide • Set gallery preview album
  • 22. Album Edit List • Batch editing of albums • Reassign albums to galleries
  • 23. Image List • Edit title / description • Define album thumb • Drag & Drop sorting • Change default sorting to title / capture date / filename
  • 24. Image Edit List • Batch editing of images
  • 25. Import images • Flash multifile uploader • Zip uploader • Import from Server directory
  • 26. Maintenance • All facts on one page • Clear page cache of pages on which yag is installed
  • 27. Maintenance • Clear / rebuild the resolution file cache
  • 28. Content element overview shows detailed info
  • 29. Maintenance • Gallery list • Specific gallery • Specific album • Specific image • Select theme
  • 30. Item Selector • Select gallery / album / image with an easy to use JS powered selector
  • 31. Sure! (60+ pages)
  • 33. Frontend rendering is done by themes  Lightweight, powerful and easy to customize  Easy to select while adding yag as content element
  • 34. Select the theme per plugin instance  Different themes on the same page are possible
  • 35.
  • 36. YAG provides 1½ themes out of the box
  • 37. Single image with detailed view
  • 38. Single image with lightbox
  • 39. Several other themes are available in TER  yag_themepack_jquery ▪ Galleryview ▪ Crosslide ▪ Isotope ▪ superSized ▪ Rondell / Rondell Gallery  yag_theme_perfectlightbox (alternative lightbox)  yag_theme_fancybox (alternative lightbox)
  • 40. Some live examples ..
  • 41. Demonstration
  • 42.
  • 43. Typoscript HTML PHP • General Config • Fluid Templates • ViewHelper • List definition • Filters • Image resolution • CSS/JS Includes CSS Javascript • Effects • Lighbox
  • 44. AlbumList.Extlist.ts AlbumList.ts GalleryList.Extlist.ts GalleryList.ts General.ts Define the configuration and General look and behaviour pt_extlist configuration of the resolution definition. view gallery / album / item ItemList.Extlist.ts ItemList.ts Item.ts Theme.ts
  • 45. Typoscript Code plugin.tx_yag.settings.themes { myFancyTheme < plugin.tx_yag.settings.themes.default myFancyTheme { thumb = GIFBUILDER thumb { resolutionConfigs { XY = [10.w],[10.h] thumb { width = 150c 10 = IMAGE height = 150c 10 { } file.maxH = 170 file.maxW = 170 } file.import.field = yagImage } includeJS.fancy = EXT:myFencyTheme/Resources/…/fancy.js includeCSS.fancy = EXT:myFencyTheme/Resources/…/fancy.css 20 = IMAGE 20 { file = EXT:yag/Tests/TestImages/watermark.png aThemeSpecificVariable = 42 offset = [10.w]-100,[10.h]-70 } controller.ItemList.list { } template = EXT:fancy/…/Templates/…/List.html } } }
  • 46. Template Code … <f:for each="{listData}" key="rowIndex" as="listRow"> <div class=image"> <yag:image item="{listRow.image.value}" resolutionName="thumb" /> </div> </f:for> … Output … <div class=image> <img alt=„A Title" title=„A Title" src="typo3temp/yag/00/81x4e876324374b0.jpg„ width="150" height="100"> </div> …
  • 47. Access Typoscript Settings Typoscript Code plugin.tx_yag.settings.themes.myFancyTheme { specialClass= foo } Template <div class={config.specialClass}> <yag:image item="{listRow.image.value}" resolutionName="thumb" /> </div>
  • 48. Include Javascript  Inline Javascript with Fluid can be pure pain.  Our approach: JS Template ViewHelper Template <yag:Javascript.template templatePath="EXT:../JSTemplates/CustomScript.js" addToHead=„1" arguments="{key1:‚value', key2:‚value2'} />
  • 49. Include Javascript Javscript Template function demo() { if(###key1### == value) { alert(###LLL:tx_yag_controller_gallery.sortingSaved###); } }
  • 50.
  • 51. YAG 1.x: All records are stored on PID 0  No possibility to set permissions for galleries to authors in backend / user in frontend  No multipage installations  YAG 2.x  Sysfolder / Page selector in BE module  Sysfolder / Page selector to CE  Keep it simple and usable!
  • 52. Our goal:  Having generic categories for multiple extensions  Having (ExtJs) Tree-Widget for editing categories
  • 53. Let FE Users  Create / Edit / Delete ▪ Galleries ▪ Albums  Upload / Edit / Delete ▪ Images in Frontend
  • 54.
  • 55. Our Website  http://www.yag-gallery.de  YAG on forge.typo3.org  http://forge.typo3.org/projects/extension-yag  Code on GitHub  https://github.com/yag-gallery/yag