SlideShare a Scribd company logo
1 of 33
Download to read offline
www.vienna.info
     realising the official
Viennese tourism website
               with Plone
overview

+ facts & figures (about vienna.info)
+ using Plone as back-end and usability
+ separated front-end using skinny
+ partial caching with Varnish and ESI
+ Wienlets (a Portlets alternative)
facts & figures » history

+ before: proprietary, custom build CMS
+ 10+ editors working full-time
+ heavy customizations necessary to meet the
  demands of content and editors
facts & figures » economical

+ Vienna is among the top-10 destinations in
  Europe
+ Overnight stays
  + 2008: 10.2 million
  + 01-08 2009: 6.3 million
+ Touristic value added: ~ 4 billion Euro / year
facts & figures » stats

            + 13 languages
              (12 in Plone, Chinese in China)
            + 5,500 articles
            + 3,500 images
            + 320,000 visits/month
            + 1.7 million pageviews/month
            + 2,000 events, 390 hotels (external)
using Plone as editorial back-end
+ securely seperated back-end
+ good language management
+ quick navigation and link-management
+ efficient media management
using Plone as editorial back-end

link-management » problem

 + default link-popup is not
   suitable for multiple languages
    (editors don't speak Arabic or Japanese)
 + Too slow and inefficient
    (lots of clicks)
 + No indication of language and
   workflow-state
using Plone as editorial back-end

link-management » approach
 + jQuery dialog
    tabbed interface
 + search with
   autocomplete
    (title or path)
 + display workflow-state
   icons
 + usable everywhere
    (TinyMCE, Category-Layout, …)
using Plone as editorial back-end

demo: Link-Dialog
using Plone as editorial back-end

media-management » problem



 + need alternative text in 12 languages
    LinguaPlone doesn't provide „multilingual“ objects
    auto-translating images on creation
 + use correct language automatically
    (in RichText, galleries, etc.)
 + unified dialog for searching images everywhere
using Plone as editorial back-end

media-management » approach
 + jQuery dialog
 + search based lookup by title
    title = keywords (autocomplete id)
 + display title and keywords as
   context info
 + filter images by aspect-ratio
   tags
    automatically assigned on upload

    using collective.searchtool, archetypes.searchwidget
using Plone as editorial back-end

demo: Media-Browser
using Plone as editorial back-end

category-layout » requirements

                            + index page for folders
                            + teasers of contained articles
                            + easy handling is vital
                            + different layout options
                                + two, two-by-two or three columns
                                + columns contain teasers or
                                  RichText
using Plone as editorial back-end

category-layout » approach
                                    + ajax based solution
                                     quick editing

                                    + use Link-Dialog
                                     (select articles)
                                    + use Media-Browser
                                     (select images)
                                    + drag & drop sorting
                                    + progressive disclosure
                                     (lots of controls)
using Plone as editorial back-end

demo: Category-Layout
separated front-end using skinny

+ Existing ways of skinning
  + conventional
  + jbot
  + Deliverance
  + Separate application
  + Skinny
+ How Skinny works
separate front-end using skinny

ways of skinning » conventional

 + it's complicated
    (front-end developers have to be hardcore coders)
 + they have to know about portlets, viewlets,
   ZCML, Python, CMF skins
 + works fine for small changes to Plone skin
 + the bigger the changes the uglier
separate front-end using skinny

ways of skinning » jbot

 + fixes some problems with the convenitional way
 + no more ZCML for overriding templates
 + shares some problems with conventional
 + still modifying an already heavy skin
 + still need to know a lot of technology
    (register new viewlets etc.)
separate front-end using skinny

ways of skinning » Deliverance
 + proxy between Plone and the browser
 + transforms Plone's HTML (only rearranging it)
 + then putting CSS on top of it
 + no separation between edit and public interface
 + dynamic content only in the conventional way
 + still renders the full Plone interface: slow
 + more components involved than conventional
separate front-end using skinny

ways of skinning » separate app.

 + full separation between public and editing
   interface
 + choose out of Django, BFG, bobo, …
 + can't use the same ZODB
    (without using the same software)
 + a separate database
    complication: extract all data etc.
separate front-end using skinny

ways of skinning » Skinny
 + full separation of public and editing interface
    (separate URLs)
 + works within Plone and with ZPT (and views)
 + render your own HTML
    (for sites with strict requirements)
 + only render what you need: fast public interface
 + don't mess with the editing interface
    (we want to keep it the way it is!)
 + doesn't work for community websites
separate front-end using skinny

how Skinny works

 + it's a package to include in
   your buildout
    (comes with an example skin)
 + only templates and resources
   for designers
separate front-end using skinny

how Skinny works
separate front-end using skinny

how Skinny works

 + two rewrite rules per site
    (one for public, one for edit interface)
 + no new technology or extra configuration
 + you can reuse Plone views, viewlets, portlets
 + but for large sites, you probably want to roll
   your own everything
partial caching with Varnish and ESI
partial caching with Varnish and ESI

how it works


 + caching server
 + retrieve content from Plone and cache it,
   deliver from cache if applicable
partial caching with Varnish and ESI

how it works
 + application (Plone) sets caching headers
    (for both Varnish and browser)
 + define additional rules in Varnish's .vcl file like:
     + Turn on ESI
         (edge side includes)
     + Cache rules for ESI parts
         (ESI caching headers are ignored)
     + Add login state to the hash
partial caching with Varnish and ESI

how we use it
 + we don't use CacheFu
    we use plone.postpublicationhook to set headers
 + total control (and better understanding of)
   over caching headers
 + HTML has 1 hour of TTL in Varnish
    (no caching in browser)
 + some parts of the site change per user
    (myVienna, geotargeted)
 + the rest should still be cached by Varnish → ESI
partial caching with Varnish and ESI

how we use it
partial caching with Varnish and ESI

how we use it
Wienlets (a Portlets alternative)

+ normal browser views (not viewlets)
+ retrieve and store information using annotations
+ base classes exist for globally or locally
  configured wienlets
+ easier to write than Plone 3 portlets
Wienlets (a Portlets alternative)

+ one portlet is actually two views
  + edit view (in Plone)
  + public view (in Skinny)
+ special requirement:
 block individual wienlets from inheriting
+ three states: inherit, on, or off
questions?

+ Fabian Büchler (WIENFLUSS)
  buechler@wienfluss.net

+ Daniel Nouri
  daniel.nouri@gmail.com

More Related Content

Similar to vienna.info: Realising the official Viennese tourism website with Plone.

How to start developing apps for Firefox OS
How to start developing apps for Firefox OSHow to start developing apps for Firefox OS
How to start developing apps for Firefox OS
benko
 
How browsers work landscape
How browsers work landscapeHow browsers work landscape
How browsers work landscape
anandkishore
 
Ext Js In Action January 2010 (Meap Edition)
Ext Js In Action January 2010 (Meap Edition)Ext Js In Action January 2010 (Meap Edition)
Ext Js In Action January 2010 (Meap Edition)
Goran Kljajic
 

Similar to vienna.info: Realising the official Viennese tourism website with Plone. (20)

How to start developing apps for Firefox OS
How to start developing apps for Firefox OSHow to start developing apps for Firefox OS
How to start developing apps for Firefox OS
 
How browsers work landscape
How browsers work landscapeHow browsers work landscape
How browsers work landscape
 
How Browsers Work -By Tali Garsiel and Paul Irish
How Browsers Work -By Tali Garsiel and Paul IrishHow Browsers Work -By Tali Garsiel and Paul Irish
How Browsers Work -By Tali Garsiel and Paul Irish
 
A winning combination: Plone as CMS and your favorite Python web framework as...
A winning combination: Plone as CMS and your favorite Python web framework as...A winning combination: Plone as CMS and your favorite Python web framework as...
A winning combination: Plone as CMS and your favorite Python web framework as...
 
Duncan Booth Kupu, Past Present And Future
Duncan Booth   Kupu, Past Present And FutureDuncan Booth   Kupu, Past Present And Future
Duncan Booth Kupu, Past Present And Future
 
Plone -- Evolving Python CMS
Plone -- Evolving Python CMSPlone -- Evolving Python CMS
Plone -- Evolving Python CMS
 
Streamlined Drupal 8: Site Building Strategies for Tight Deadlines
Streamlined Drupal 8: Site Building Strategies for Tight DeadlinesStreamlined Drupal 8: Site Building Strategies for Tight Deadlines
Streamlined Drupal 8: Site Building Strategies for Tight Deadlines
 
Contentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshopContentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshop
 
Bring drupal 8 to all in their native languages
Bring drupal 8 to all in their native languagesBring drupal 8 to all in their native languages
Bring drupal 8 to all in their native languages
 
Web browser
Web browserWeb browser
Web browser
 
Ext Js In Action January 2010 (Meap Edition)
Ext Js In Action January 2010 (Meap Edition)Ext Js In Action January 2010 (Meap Edition)
Ext Js In Action January 2010 (Meap Edition)
 
HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]
HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]
HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]
 
SEO challenges of a
Single Page Application using Plone
SEO challenges of a
Single Page Application using PloneSEO challenges of a
Single Page Application using Plone
SEO challenges of a
Single Page Application using Plone
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric SteelePlone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
 
Plone Futures
Plone FuturesPlone Futures
Plone Futures
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
 
NPO 網站改造觀摩賽 - Day 3 - Plone Team Report by marr
NPO 網站改造觀摩賽 - Day 3 - Plone Team Report by marrNPO 網站改造觀摩賽 - Day 3 - Plone Team Report by marr
NPO 網站改造觀摩賽 - Day 3 - Plone Team Report by marr
 
Internet Explorer 8
Internet Explorer 8Internet Explorer 8
Internet Explorer 8
 
Digitale Regio Kortrijk: A Drupal multi-site environment for local governments
Digitale Regio Kortrijk: A Drupal multi-site environment for local governmentsDigitale Regio Kortrijk: A Drupal multi-site environment for local governments
Digitale Regio Kortrijk: A Drupal multi-site environment for local governments
 
Building bridges - Plone Conference 2015 Bucharest
Building bridges   - Plone Conference 2015 BucharestBuilding bridges   - Plone Conference 2015 Bucharest
Building bridges - Plone Conference 2015 Bucharest
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
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
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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
 
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...
 

vienna.info: Realising the official Viennese tourism website with Plone.

  • 1. www.vienna.info realising the official Viennese tourism website with Plone
  • 2. overview + facts & figures (about vienna.info) + using Plone as back-end and usability + separated front-end using skinny + partial caching with Varnish and ESI + Wienlets (a Portlets alternative)
  • 3. facts & figures » history + before: proprietary, custom build CMS + 10+ editors working full-time + heavy customizations necessary to meet the demands of content and editors
  • 4. facts & figures » economical + Vienna is among the top-10 destinations in Europe + Overnight stays + 2008: 10.2 million + 01-08 2009: 6.3 million + Touristic value added: ~ 4 billion Euro / year
  • 5. facts & figures » stats + 13 languages (12 in Plone, Chinese in China) + 5,500 articles + 3,500 images + 320,000 visits/month + 1.7 million pageviews/month + 2,000 events, 390 hotels (external)
  • 6. using Plone as editorial back-end + securely seperated back-end + good language management + quick navigation and link-management + efficient media management
  • 7. using Plone as editorial back-end link-management » problem + default link-popup is not suitable for multiple languages (editors don't speak Arabic or Japanese) + Too slow and inefficient (lots of clicks) + No indication of language and workflow-state
  • 8. using Plone as editorial back-end link-management » approach + jQuery dialog tabbed interface + search with autocomplete (title or path) + display workflow-state icons + usable everywhere (TinyMCE, Category-Layout, …)
  • 9. using Plone as editorial back-end demo: Link-Dialog
  • 10. using Plone as editorial back-end media-management » problem + need alternative text in 12 languages LinguaPlone doesn't provide „multilingual“ objects auto-translating images on creation + use correct language automatically (in RichText, galleries, etc.) + unified dialog for searching images everywhere
  • 11. using Plone as editorial back-end media-management » approach + jQuery dialog + search based lookup by title title = keywords (autocomplete id) + display title and keywords as context info + filter images by aspect-ratio tags automatically assigned on upload using collective.searchtool, archetypes.searchwidget
  • 12. using Plone as editorial back-end demo: Media-Browser
  • 13. using Plone as editorial back-end category-layout » requirements + index page for folders + teasers of contained articles + easy handling is vital + different layout options + two, two-by-two or three columns + columns contain teasers or RichText
  • 14. using Plone as editorial back-end category-layout » approach + ajax based solution quick editing + use Link-Dialog (select articles) + use Media-Browser (select images) + drag & drop sorting + progressive disclosure (lots of controls)
  • 15. using Plone as editorial back-end demo: Category-Layout
  • 16. separated front-end using skinny + Existing ways of skinning + conventional + jbot + Deliverance + Separate application + Skinny + How Skinny works
  • 17. separate front-end using skinny ways of skinning » conventional + it's complicated (front-end developers have to be hardcore coders) + they have to know about portlets, viewlets, ZCML, Python, CMF skins + works fine for small changes to Plone skin + the bigger the changes the uglier
  • 18. separate front-end using skinny ways of skinning » jbot + fixes some problems with the convenitional way + no more ZCML for overriding templates + shares some problems with conventional + still modifying an already heavy skin + still need to know a lot of technology (register new viewlets etc.)
  • 19. separate front-end using skinny ways of skinning » Deliverance + proxy between Plone and the browser + transforms Plone's HTML (only rearranging it) + then putting CSS on top of it + no separation between edit and public interface + dynamic content only in the conventional way + still renders the full Plone interface: slow + more components involved than conventional
  • 20. separate front-end using skinny ways of skinning » separate app. + full separation between public and editing interface + choose out of Django, BFG, bobo, … + can't use the same ZODB (without using the same software) + a separate database complication: extract all data etc.
  • 21. separate front-end using skinny ways of skinning » Skinny + full separation of public and editing interface (separate URLs) + works within Plone and with ZPT (and views) + render your own HTML (for sites with strict requirements) + only render what you need: fast public interface + don't mess with the editing interface (we want to keep it the way it is!) + doesn't work for community websites
  • 22. separate front-end using skinny how Skinny works + it's a package to include in your buildout (comes with an example skin) + only templates and resources for designers
  • 23. separate front-end using skinny how Skinny works
  • 24. separate front-end using skinny how Skinny works + two rewrite rules per site (one for public, one for edit interface) + no new technology or extra configuration + you can reuse Plone views, viewlets, portlets + but for large sites, you probably want to roll your own everything
  • 25. partial caching with Varnish and ESI
  • 26. partial caching with Varnish and ESI how it works + caching server + retrieve content from Plone and cache it, deliver from cache if applicable
  • 27. partial caching with Varnish and ESI how it works + application (Plone) sets caching headers (for both Varnish and browser) + define additional rules in Varnish's .vcl file like: + Turn on ESI (edge side includes) + Cache rules for ESI parts (ESI caching headers are ignored) + Add login state to the hash
  • 28. partial caching with Varnish and ESI how we use it + we don't use CacheFu we use plone.postpublicationhook to set headers + total control (and better understanding of) over caching headers + HTML has 1 hour of TTL in Varnish (no caching in browser) + some parts of the site change per user (myVienna, geotargeted) + the rest should still be cached by Varnish → ESI
  • 29. partial caching with Varnish and ESI how we use it
  • 30. partial caching with Varnish and ESI how we use it
  • 31. Wienlets (a Portlets alternative) + normal browser views (not viewlets) + retrieve and store information using annotations + base classes exist for globally or locally configured wienlets + easier to write than Plone 3 portlets
  • 32. Wienlets (a Portlets alternative) + one portlet is actually two views + edit view (in Plone) + public view (in Skinny) + special requirement: block individual wienlets from inheriting + three states: inherit, on, or off
  • 33. questions? + Fabian Büchler (WIENFLUSS) buechler@wienfluss.net + Daniel Nouri daniel.nouri@gmail.com