SlideShare a Scribd company logo
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)

More Related Content

Similar to YAG - Yet another gallery (2012)

YAG - Yet Another Gallery
YAG - Yet Another GalleryYAG - Yet Another Gallery
YAG - Yet Another Gallery
Daniel Lienert
 
YAG - Yet Another Gallery / T3CON11
YAG - Yet Another Gallery / T3CON11YAG - Yet Another Gallery / T3CON11
YAG - Yet Another Gallery / T3CON11
Daniel Lienert
 
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
Remigijus Kiminas
 
jQuery-3-UI
jQuery-3-UIjQuery-3-UI
jQuery-3-UI
guestcf600a
 
JQuery-Tutorial
 JQuery-Tutorial JQuery-Tutorial
JQuery-Tutorial
tutorialsruby
 
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
 
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
Alfresco Software
 
Be nice to your designers
Be nice to your designersBe nice to your designers
Be nice to your designers
Pai-Cheng Tao
 
itPage LDC 09 Presentation
itPage LDC 09 PresentationitPage LDC 09 Presentation
itPage LDC 09 Presentation
Eric Landmann
 
Image galley ppt
Image galley pptImage galley ppt
Image galley ppt
Chaitanya Chandurkar
 
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
Don Cranford
 
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
FortySeven Media
 
Styling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS EditionStyling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS Edition
bensmithett
 
Hppg
HppgHppg
Rails 3 (beta) Roundup
Rails 3 (beta) RoundupRails 3 (beta) Roundup
Rails 3 (beta) Roundup
Wayne Carter
 
Drupal 8 theming deep dive
Drupal 8 theming deep diveDrupal 8 theming deep dive
Drupal 8 theming deep dive
Romain Jarraud
 
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
 
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
David Glick
 
CSS and image optimization
CSS and image optimizationCSS and image optimization
CSS and image optimization
Stoyan Stefanov
 
MozTW Jetpack Workshop: Taipei
MozTW Jetpack Workshop: TaipeiMozTW Jetpack Workshop: Taipei
MozTW Jetpack Workshop: Taipei
littlebtc
 

Similar to 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
 
JQuery-Tutorial
 JQuery-Tutorial JQuery-Tutorial
JQuery-Tutorial
 
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
 
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
 

Recently uploaded

A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
SAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloudSAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloud
maazsz111
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Precisely
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 

Recently uploaded (20)

A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
SAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloudSAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloud
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 

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