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 OSbenko
 
How browsers work landscape
How browsers work landscapeHow browsers work landscape
How browsers work landscapeanandkishore
 
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 IrishNagamurali Reddy
 
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...Carlos de la Guardia
 
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 FutureVincenzo Barone
 
Plone -- Evolving Python CMS
Plone -- Evolving Python CMSPlone -- Evolving Python CMS
Plone -- Evolving Python CMSTsungWei Hu
 
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 DeadlinesPantheon
 
Contentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshopContentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshopIvo Lukac
 
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 languagesSébastien Corbin
 
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
 
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]Aaron Gustafson
 
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Érico Andrei
 
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 SteeleT. Kim Nguyen
 
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 TechnologyMark Proctor
 
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 marrCharles Chuang
 
Internet Explorer 8
Internet Explorer 8Internet Explorer 8
Internet Explorer 8David Chou
 
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 governmentsIntercommunale Leiedal
 
Building bridges - Plone Conference 2015 Bucharest
Building bridges   - Plone Conference 2015 BucharestBuilding bridges   - Plone Conference 2015 Bucharest
Building bridges - Plone Conference 2015 BucharestAndreas Jung
 

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

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
#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
 
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
 
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
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
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
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 

Recently uploaded (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
#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
 
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
 
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
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
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
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 

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