SlideShare a Scribd company logo
Andreas Zahner, Alkacon Software 
Workshop Track Nested containers in action 
03.11.2014
●Introduction 
●What are nested containers? 
●Possible use cases 
●Flexible template models 
●Tab / Accordion element 
●Configuration 
●The <cms:container> tag 
●Formatter configuration 
●Element views 
●Limitation 
●JSP access 
●Access parent element information 
●Example usage for flexible templates 
●Dynamic container creation 
2 
Agenda
●Short definition: Nested containers are containers that are placed inside other containers 
●They can be created by formatter JSPs or included JSP elements 
●Advantage: by using nested containers, more flexible pages and contents can be created 
3 
What are nested containers?
●Nested containers are not part of the content itself 
●If you place the content that renders the nested container a second time on the same or a different page, the elements in the nested container will not be inserted. For each element instance of the content that renders the nested container, the container is completely independent. 
●Nested containers are tight to a container page element 
●If you move a content that renders a nested container on a page (and the formatter does not change), the element in the nested container will move with it. If you remove the content, or change its formatter, the nested container will vanish and its elements are not visible anymore. 
4 
What are nested containers?
●Nested containers are similar to normal containers managed by the container page 
●When a content that creates a nested container is added to a page, the container will be stored similar to a top-level container in the container page 
●The only additional information is the element ID of the container's parent element 
●When an element that created a nested container is removed from a page, also the information about the nested container is removed from the container page 
5 
What are nested containers?
●Template frameworks using a grid layout like Bootstrap are often used to create responsive websites 
●In the common approach the layout of the grid columns is defined by the template developer and fixed in the template JSP 
●It is not possible to have a more flexible structure without changing and enhancing the template JSP 
● 
6 
Use cases – Flex. template models
●Nested containers can be used to create different grid column variations 
●This allows editors the creation of more complex layouts by using e.g. pre-defined rows 
●These rows dynamically create containers where the contents can be dragged into by editors 
7 
Use cases – Flex. template models
●Usually, the possible contents of a single tab are defined in the XSD of the content type 
●Instead of this approach, for each single tab of a tab / accordion, nested containers can be used 
●This allows the flexible usage of various already present different content types like texts, images, icon boxes, etc. 
8 
Use cases – Tab / Accordion
●Live Demo 
9 
Live Demo 
Demo 
Demo 
Demo 
Demo 
デモ
●New attributes for the <cms:container> tag 
●editableby: a comma separated list of OpenCms principals that are allowed to edit the container content. If empty it defaults to ROLE.ELEMENT_AUTHOR 
●param: passes a parameter as string that can be read by elements inside the container 
10 
Configuration – Container tag
●Other attributes for the <cms:container> tag 
●name: a unique name for the container 
●type: a type for the container, it can be used to select the formatter that is used to render a content in this container 
●maxElements: the number of elements that can be placed inside, the default is 100 
●width: the width of the container 
●tag: defines the tag that the <cms:container> tag is translated to. The default tag is <div> 
11 
Configuration – Container tag
●Other attributes for the <cms:container> tag 
●tagClass: a space separated list of CSS class names that are inserted as value of the "class“ attribute in the tag 
●detailview: defines if on a detail page the detail content should be shown in this container 
●detailonly: defines if the container is visible only on detail pages 
12 
Configuration – Container tag
●A container that has no content elements inside can show a default output in the page editor. To enable this feature, place any kind of HTML code in the body of the <cms:container> tag 
13 
Configuration – Container tag 
[…] 
<cms:container name="..." type="..." editableby="..." param="..."> 
<div class="servive-block rounded-3x servive-block-dark-blue"> 
<h2 class="heading-md">Empty container</h2> 
<p>Drag content elements here.</p> 
</div> 
</cms:container> 
[…]
●If a formatter creates nested containers, OpenCms needs this information to render the page correctly. 
●Therefore, in the formatter configuration of the content creating nested containers, the option „Nested Containers“ has to be checked 
14 
Configuration – Formatter
●Depending on the use case, nested containers might overlap their parent containers 
●Because of this, it can be difficult to place contents in nested container structures 
●Solution: the usage of different element views, where only specific content types can be dragged in containers 
15 
Configuration – Element views
●How to create and use an element view: 
●Create a new file of type „Element view“ in the Explorer view in the menu „Other options“ 
●Edit the file to configure the appearance 
●Edit the resource type configurations in the module or subsitemap configuration to assign specific types to the view 
16 
Configuration – Element views
●Setting the visibility of the element view is possible by using permissions on the element view file 
●Only users with at least the role „Editor“ can switch to that view 
17 
Configuration – Element views
●Currently, OpenCms supports a nested container structure of maximum 5 levels 
●This limit is fixed and cannot be increased at the moment 
18 
Configuration – Limitation
●Using the EL, it is possible to get information about the container where the element is placed into 
19 
JSP access – Container info 
<%@page buffer="none" session="false" trimDirectiveWhitespaces="true" %> 
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %> 
[…] 
<ul> 
<li>Name: ${cms.container.name}</li> 
<li>Type: ${cms.container.type}</li> 
<li>Maximum elements: ${cms.container.maxElements}</li> 
<li>Nested container: ${cms.container.nestedContainer}</li> 
</ul> 
[…]
●With „${cms.element.parent}“, the element info of type CmsContainerElementWrapper can be obtained 
●If the method returns null, no parent element exists 
●The wrapper provides access to the type info, the resource and the eventual settings 
20 
JSP access – Parent element info
●EL usage for parent element info 
21 
JSP access – Parent element info 
<%@page buffer="none" session="false" trimDirectiveWhitespaces="true" %> 
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %> 
[…] 
<c:if test="${cms.element.parent != null}"> 
<dl> 
<dt>Type ID</dt> 
<dd>${cms.element.parent.resource.typeId}</dd> 
<dt>Path</dt> 
<dd>${cms.element.parent.sitePath}</dd> 
<dt>Setting example</dt> 
<dd>marginbottom: ${cms.element.parent.setting.marginbottom.value}</dd> 
<dt>Parent present</dt> 
<dd>${not empty cms.element.parent.parent}</dd> 
</dl> 
</c:if> 
[…]
●The new OpenCms 9.5 demo uses nested containers 
●The basic template models can be created and edited only by users with the „Developer“ role 
●The template JSP has only one container 
●Template rows can be dragged in this „page“ container 
●Users with „Editor“ role can drag pre-configured layout rows in the template row containers which are editable by them 
22 
Example - Dynamic containers
23 
Example - Dynamic containers 
Page container 
Template row head with one container 
Template row foot with one container 
Template row content with one container 
Layout row 1 with 2 containers 
Content 
Content 
Layout row 1 with 3 containers 
Content 
Content 
Content
●Main template JSP with one container 
24 
Example - Dynamic containers 
[…] 
<head> 
[…] 
<cms:enable-ade/> 
<cms:headincludes type="css" closetags="false" /> 
<cms:headincludes type="javascript" /> 
</head><body> 
[…] 
<cms:container name="page-complete" type="page" width="1200" maxElements="15" editableby="ROLE.DEVELOPER" /> 
[…] 
</body> 
</html>
●Tab formatter JSP that generates nested containers 
25 
Example - Dynamic containers 
[…] 
<cms:formatter var="content" val="value" rdfa="rdfa"> 
[…] 
<div class="tab-content"> 
<c:forEach var="label" items="${content.valueList.Label}" varStatus="status"> 
[…] 
<cms:container name="tab-container${status.count}" type="layoutrowsonly" tagClass="tab-pane ${status.first? 'active':''}" maxElements="2"> 
<div class="alert alert-warning fade in"> 
<h4><fmt:message key="bootstrap.tabs.emptycontainer.headline"/></h4> 
<p><fmt:message key="bootstrap.tabs.emptycontainer.text"/></p> 
</div> 
</cms:container> 
</c:forEach> 
</div> 
[…] 
</cms:formatter> 
[…]
●Live Demo 
26 
Live Demo 
Demo 
Demo 
Demo 
Demo 
デモ
●Any Questions? 
27 
Any Questions? 
Fragen? 
Questions ? 
Questiones? 
¿Preguntas? 
質問
Andreas Zahner 
Alkacon Software GmbH 
http://www.alkacon.com 
http://www.opencms.org 
Thank you very much for your attention! 
28
Ad

More Related Content

What's hot (20)

OpenCms Days 2015 Hidden features of OpenCms
OpenCms Days 2015 Hidden features of OpenCmsOpenCms Days 2015 Hidden features of OpenCms
OpenCms Days 2015 Hidden features of OpenCms
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and GruntOpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management ToolOpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management Tool
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Updating to OpenCms 9.5
OpenCms Days 2014 - Updating to OpenCms 9.5OpenCms Days 2014 - Updating to OpenCms 9.5
OpenCms Days 2014 - Updating to OpenCms 9.5
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological serviceOpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological service
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Next generation repository
OpenCms Days 2015  Next generation repositoryOpenCms Days 2015  Next generation repository
OpenCms Days 2015 Next generation repository
Alkacon Software GmbH & Co. KG
 
Thinking in Components
Thinking in ComponentsThinking in Components
Thinking in Components
Anton Ivanov
 
How browser work
How browser workHow browser work
How browser work
Manish Trivedi
 
How Browsers Work
How Browsers Work How Browsers Work
How Browsers Work
myposter GmbH
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
Women in Technology Poland
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh
 
How Browser Works?
How Browser Works?How Browser Works?
How Browser Works?
Vova Voyevidka
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your way
rafaelliu
 
Drupal training-1-in-mumbai
Drupal training-1-in-mumbaiDrupal training-1-in-mumbai
Drupal training-1-in-mumbai
vibrantuser
 
Nuxeo WebEngine: a practical introduction
Nuxeo WebEngine: a practical introductionNuxeo WebEngine: a practical introduction
Nuxeo WebEngine: a practical introduction
Nuxeo
 
Introduction to Browser Internals
Introduction to Browser InternalsIntroduction to Browser Internals
Introduction to Browser Internals
Siva Arunachalam
 
Introduction to Moodle Development
Introduction to Moodle DevelopmentIntroduction to Moodle Development
Introduction to Moodle Development
moorejon
 
Custom gutenberg block development with React
Custom gutenberg block development with ReactCustom gutenberg block development with React
Custom gutenberg block development with React
Imran Sayed
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2
Grzegorz Bartman
 
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and GruntOpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological serviceOpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological service
Alkacon Software GmbH & Co. KG
 
Thinking in Components
Thinking in ComponentsThinking in Components
Thinking in Components
Anton Ivanov
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
Women in Technology Poland
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your way
rafaelliu
 
Drupal training-1-in-mumbai
Drupal training-1-in-mumbaiDrupal training-1-in-mumbai
Drupal training-1-in-mumbai
vibrantuser
 
Nuxeo WebEngine: a practical introduction
Nuxeo WebEngine: a practical introductionNuxeo WebEngine: a practical introduction
Nuxeo WebEngine: a practical introduction
Nuxeo
 
Introduction to Browser Internals
Introduction to Browser InternalsIntroduction to Browser Internals
Introduction to Browser Internals
Siva Arunachalam
 
Introduction to Moodle Development
Introduction to Moodle DevelopmentIntroduction to Moodle Development
Introduction to Moodle Development
moorejon
 
Custom gutenberg block development with React
Custom gutenberg block development with ReactCustom gutenberg block development with React
Custom gutenberg block development with React
Imran Sayed
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2
Grzegorz Bartman
 

Viewers also liked (13)

OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - OpenCms on open clouds
OpenCms Days 2012 - OpenCms on open cloudsOpenCms Days 2012 - OpenCms on open clouds
OpenCms Days 2012 - OpenCms on open clouds
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud servicesOpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spotOpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms
 
OpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernmentOpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernment
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 How do you develop for OpenCms?
OpenCms Days 2015 How do you develop for OpenCms?OpenCms Days 2015 How do you develop for OpenCms?
OpenCms Days 2015 How do you develop for OpenCms?
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - Outsourcing OpenCms Template Design
OpenCms Days 2013 - Outsourcing OpenCms Template DesignOpenCms Days 2013 - Outsourcing OpenCms Template Design
OpenCms Days 2013 - Outsourcing OpenCms Template Design
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - Social Connect for OpenCms Portal
OpenCms Days 2013 - Social Connect for OpenCms PortalOpenCms Days 2013 - Social Connect for OpenCms Portal
OpenCms Days 2013 - Social Connect for OpenCms Portal
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - OpenCms 8.5: Accessing the VFS repository using CMIS
OpenCms Days 2012 - OpenCms 8.5: Accessing the VFS repository using CMISOpenCms Days 2012 - OpenCms 8.5: Accessing the VFS repository using CMIS
OpenCms Days 2012 - OpenCms 8.5: Accessing the VFS repository using CMIS
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - Start rolling with OpenCms 9
OpenCms Days 2013 - Start rolling with OpenCms 9OpenCms Days 2013 - Start rolling with OpenCms 9
OpenCms Days 2013 - Start rolling with OpenCms 9
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationOpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
Alkacon Software GmbH & Co. KG
 
Internal and external business environment
Internal and external business environmentInternal and external business environment
Internal and external business environment
Aashish Sahi
 
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud servicesOpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spotOpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms
 
OpenCms Days 2013 - Outsourcing OpenCms Template Design
OpenCms Days 2013 - Outsourcing OpenCms Template DesignOpenCms Days 2013 - Outsourcing OpenCms Template Design
OpenCms Days 2013 - Outsourcing OpenCms Template Design
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - OpenCms 8.5: Accessing the VFS repository using CMIS
OpenCms Days 2012 - OpenCms 8.5: Accessing the VFS repository using CMISOpenCms Days 2012 - OpenCms 8.5: Accessing the VFS repository using CMIS
OpenCms Days 2012 - OpenCms 8.5: Accessing the VFS repository using CMIS
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationOpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
Alkacon Software GmbH & Co. KG
 
Internal and external business environment
Internal and external business environmentInternal and external business environment
Internal and external business environment
Aashish Sahi
 
Ad

Similar to OpenCms Days 2014 - Nested containers in action (20)

Caching in drupal
Caching in drupalCaching in drupal
Caching in drupal
Vivek Panicker
 
Aem best practices
Aem best practicesAem best practices
Aem best practices
Jitendra Tomar
 
OpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensionsOpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensions
Alkacon Software GmbH & Co. KG
 
Ez platform meetup, madrid 21 marzo 2018 english
Ez platform meetup, madrid 21 marzo 2018   englishEz platform meetup, madrid 21 marzo 2018   english
Ez platform meetup, madrid 21 marzo 2018 english
crevillo
 
Ch05 state management
Ch05 state managementCh05 state management
Ch05 state management
Madhuri Kavade
 
The Naked Bundle - Tryout
The Naked Bundle - TryoutThe Naked Bundle - Tryout
The Naked Bundle - Tryout
Matthias Noback
 
Decoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
Decoupling Drupal mit dem Lupus Nuxt.js Drupal StackDecoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
Decoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
nuppla
 
Webdev bootcamp
Webdev bootcampWebdev bootcamp
Webdev bootcamp
DSCMESCOE
 
Custom gutenberg block development in react
Custom gutenberg block development in reactCustom gutenberg block development in react
Custom gutenberg block development in react
Imran Sayed
 
Nuxeo World Session: Layouts and Content Views
Nuxeo World Session: Layouts and Content ViewsNuxeo World Session: Layouts and Content Views
Nuxeo World Session: Layouts and Content Views
Nuxeo
 
Magento Presentation Layer
Magento Presentation LayerMagento Presentation Layer
Magento Presentation Layer
Volodymyr Kublytskyi
 
Unit 2 - Data Binding.pptx
Unit 2 - Data Binding.pptxUnit 2 - Data Binding.pptx
Unit 2 - Data Binding.pptx
Malla Reddy University
 
WebsiteStructure
WebsiteStructureWebsiteStructure
WebsiteStructure
tutorialsruby
 
WebsiteStructure
WebsiteStructureWebsiteStructure
WebsiteStructure
tutorialsruby
 
Extension Javascript
Extension JavascriptExtension Javascript
Extension Javascript
Yatin Gupta
 
Dsc Charusat Learning React Part 1
Dsc Charusat Learning React Part 1 Dsc Charusat Learning React Part 1
Dsc Charusat Learning React Part 1
JainamMehta19
 
2D Page Layout
2D Page Layout2D Page Layout
2D Page Layout
Unfold UI
 
Chapter 23
Chapter 23Chapter 23
Chapter 23
application developer
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
WebStackAcademy
 
Asp.net c# MVC-5 Training-Day-2 of Day-9
Asp.net c# MVC-5 Training-Day-2 of Day-9Asp.net c# MVC-5 Training-Day-2 of Day-9
Asp.net c# MVC-5 Training-Day-2 of Day-9
AHM Pervej Kabir
 
OpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensionsOpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensions
Alkacon Software GmbH & Co. KG
 
Ez platform meetup, madrid 21 marzo 2018 english
Ez platform meetup, madrid 21 marzo 2018   englishEz platform meetup, madrid 21 marzo 2018   english
Ez platform meetup, madrid 21 marzo 2018 english
crevillo
 
The Naked Bundle - Tryout
The Naked Bundle - TryoutThe Naked Bundle - Tryout
The Naked Bundle - Tryout
Matthias Noback
 
Decoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
Decoupling Drupal mit dem Lupus Nuxt.js Drupal StackDecoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
Decoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
nuppla
 
Webdev bootcamp
Webdev bootcampWebdev bootcamp
Webdev bootcamp
DSCMESCOE
 
Custom gutenberg block development in react
Custom gutenberg block development in reactCustom gutenberg block development in react
Custom gutenberg block development in react
Imran Sayed
 
Nuxeo World Session: Layouts and Content Views
Nuxeo World Session: Layouts and Content ViewsNuxeo World Session: Layouts and Content Views
Nuxeo World Session: Layouts and Content Views
Nuxeo
 
Extension Javascript
Extension JavascriptExtension Javascript
Extension Javascript
Yatin Gupta
 
Dsc Charusat Learning React Part 1
Dsc Charusat Learning React Part 1 Dsc Charusat Learning React Part 1
Dsc Charusat Learning React Part 1
JainamMehta19
 
2D Page Layout
2D Page Layout2D Page Layout
2D Page Layout
Unfold UI
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
WebStackAcademy
 
Asp.net c# MVC-5 Training-Day-2 of Day-9
Asp.net c# MVC-5 Training-Day-2 of Day-9Asp.net c# MVC-5 Training-Day-2 of Day-9
Asp.net c# MVC-5 Training-Day-2 of Day-9
AHM Pervej Kabir
 
Ad

More from Alkacon Software GmbH & Co. KG (14)

OpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCmsOpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCms
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 OpenCms X marks the spot
OpenCms Days 2015 OpenCms X marks the spotOpenCms Days 2015 OpenCms X marks the spot
OpenCms Days 2015 OpenCms X marks the spot
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explainedOpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explained
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals companyOpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals company
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portalsOpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portals
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TSOpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms 9 - A video tube?
OpenCms Days 2014 - OpenCms 9 - A video tube?OpenCms Days 2014 - OpenCms 9 - A video tube?
OpenCms Days 2014 - OpenCms 9 - A video tube?
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Using the SOLR collector
OpenCms Days 2014 - Using the SOLR collectorOpenCms Days 2014 - Using the SOLR collector
OpenCms Days 2014 - Using the SOLR collector
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
Alkacon Software GmbH & Co. KG
 
Open cms days 2013 - all dressed up_release
Open cms days 2013 - all dressed up_releaseOpen cms days 2013 - all dressed up_release
Open cms days 2013 - all dressed up_release
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCmsOpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCms
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portalsOpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portals
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TSOpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
Alkacon Software GmbH & Co. KG
 

Recently uploaded (20)

Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 

OpenCms Days 2014 - Nested containers in action

  • 1. Andreas Zahner, Alkacon Software Workshop Track Nested containers in action 03.11.2014
  • 2. ●Introduction ●What are nested containers? ●Possible use cases ●Flexible template models ●Tab / Accordion element ●Configuration ●The <cms:container> tag ●Formatter configuration ●Element views ●Limitation ●JSP access ●Access parent element information ●Example usage for flexible templates ●Dynamic container creation 2 Agenda
  • 3. ●Short definition: Nested containers are containers that are placed inside other containers ●They can be created by formatter JSPs or included JSP elements ●Advantage: by using nested containers, more flexible pages and contents can be created 3 What are nested containers?
  • 4. ●Nested containers are not part of the content itself ●If you place the content that renders the nested container a second time on the same or a different page, the elements in the nested container will not be inserted. For each element instance of the content that renders the nested container, the container is completely independent. ●Nested containers are tight to a container page element ●If you move a content that renders a nested container on a page (and the formatter does not change), the element in the nested container will move with it. If you remove the content, or change its formatter, the nested container will vanish and its elements are not visible anymore. 4 What are nested containers?
  • 5. ●Nested containers are similar to normal containers managed by the container page ●When a content that creates a nested container is added to a page, the container will be stored similar to a top-level container in the container page ●The only additional information is the element ID of the container's parent element ●When an element that created a nested container is removed from a page, also the information about the nested container is removed from the container page 5 What are nested containers?
  • 6. ●Template frameworks using a grid layout like Bootstrap are often used to create responsive websites ●In the common approach the layout of the grid columns is defined by the template developer and fixed in the template JSP ●It is not possible to have a more flexible structure without changing and enhancing the template JSP ● 6 Use cases – Flex. template models
  • 7. ●Nested containers can be used to create different grid column variations ●This allows editors the creation of more complex layouts by using e.g. pre-defined rows ●These rows dynamically create containers where the contents can be dragged into by editors 7 Use cases – Flex. template models
  • 8. ●Usually, the possible contents of a single tab are defined in the XSD of the content type ●Instead of this approach, for each single tab of a tab / accordion, nested containers can be used ●This allows the flexible usage of various already present different content types like texts, images, icon boxes, etc. 8 Use cases – Tab / Accordion
  • 9. ●Live Demo 9 Live Demo Demo Demo Demo Demo デモ
  • 10. ●New attributes for the <cms:container> tag ●editableby: a comma separated list of OpenCms principals that are allowed to edit the container content. If empty it defaults to ROLE.ELEMENT_AUTHOR ●param: passes a parameter as string that can be read by elements inside the container 10 Configuration – Container tag
  • 11. ●Other attributes for the <cms:container> tag ●name: a unique name for the container ●type: a type for the container, it can be used to select the formatter that is used to render a content in this container ●maxElements: the number of elements that can be placed inside, the default is 100 ●width: the width of the container ●tag: defines the tag that the <cms:container> tag is translated to. The default tag is <div> 11 Configuration – Container tag
  • 12. ●Other attributes for the <cms:container> tag ●tagClass: a space separated list of CSS class names that are inserted as value of the "class“ attribute in the tag ●detailview: defines if on a detail page the detail content should be shown in this container ●detailonly: defines if the container is visible only on detail pages 12 Configuration – Container tag
  • 13. ●A container that has no content elements inside can show a default output in the page editor. To enable this feature, place any kind of HTML code in the body of the <cms:container> tag 13 Configuration – Container tag […] <cms:container name="..." type="..." editableby="..." param="..."> <div class="servive-block rounded-3x servive-block-dark-blue"> <h2 class="heading-md">Empty container</h2> <p>Drag content elements here.</p> </div> </cms:container> […]
  • 14. ●If a formatter creates nested containers, OpenCms needs this information to render the page correctly. ●Therefore, in the formatter configuration of the content creating nested containers, the option „Nested Containers“ has to be checked 14 Configuration – Formatter
  • 15. ●Depending on the use case, nested containers might overlap their parent containers ●Because of this, it can be difficult to place contents in nested container structures ●Solution: the usage of different element views, where only specific content types can be dragged in containers 15 Configuration – Element views
  • 16. ●How to create and use an element view: ●Create a new file of type „Element view“ in the Explorer view in the menu „Other options“ ●Edit the file to configure the appearance ●Edit the resource type configurations in the module or subsitemap configuration to assign specific types to the view 16 Configuration – Element views
  • 17. ●Setting the visibility of the element view is possible by using permissions on the element view file ●Only users with at least the role „Editor“ can switch to that view 17 Configuration – Element views
  • 18. ●Currently, OpenCms supports a nested container structure of maximum 5 levels ●This limit is fixed and cannot be increased at the moment 18 Configuration – Limitation
  • 19. ●Using the EL, it is possible to get information about the container where the element is placed into 19 JSP access – Container info <%@page buffer="none" session="false" trimDirectiveWhitespaces="true" %> <%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %> […] <ul> <li>Name: ${cms.container.name}</li> <li>Type: ${cms.container.type}</li> <li>Maximum elements: ${cms.container.maxElements}</li> <li>Nested container: ${cms.container.nestedContainer}</li> </ul> […]
  • 20. ●With „${cms.element.parent}“, the element info of type CmsContainerElementWrapper can be obtained ●If the method returns null, no parent element exists ●The wrapper provides access to the type info, the resource and the eventual settings 20 JSP access – Parent element info
  • 21. ●EL usage for parent element info 21 JSP access – Parent element info <%@page buffer="none" session="false" trimDirectiveWhitespaces="true" %> <%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %> […] <c:if test="${cms.element.parent != null}"> <dl> <dt>Type ID</dt> <dd>${cms.element.parent.resource.typeId}</dd> <dt>Path</dt> <dd>${cms.element.parent.sitePath}</dd> <dt>Setting example</dt> <dd>marginbottom: ${cms.element.parent.setting.marginbottom.value}</dd> <dt>Parent present</dt> <dd>${not empty cms.element.parent.parent}</dd> </dl> </c:if> […]
  • 22. ●The new OpenCms 9.5 demo uses nested containers ●The basic template models can be created and edited only by users with the „Developer“ role ●The template JSP has only one container ●Template rows can be dragged in this „page“ container ●Users with „Editor“ role can drag pre-configured layout rows in the template row containers which are editable by them 22 Example - Dynamic containers
  • 23. 23 Example - Dynamic containers Page container Template row head with one container Template row foot with one container Template row content with one container Layout row 1 with 2 containers Content Content Layout row 1 with 3 containers Content Content Content
  • 24. ●Main template JSP with one container 24 Example - Dynamic containers […] <head> […] <cms:enable-ade/> <cms:headincludes type="css" closetags="false" /> <cms:headincludes type="javascript" /> </head><body> […] <cms:container name="page-complete" type="page" width="1200" maxElements="15" editableby="ROLE.DEVELOPER" /> […] </body> </html>
  • 25. ●Tab formatter JSP that generates nested containers 25 Example - Dynamic containers […] <cms:formatter var="content" val="value" rdfa="rdfa"> […] <div class="tab-content"> <c:forEach var="label" items="${content.valueList.Label}" varStatus="status"> […] <cms:container name="tab-container${status.count}" type="layoutrowsonly" tagClass="tab-pane ${status.first? 'active':''}" maxElements="2"> <div class="alert alert-warning fade in"> <h4><fmt:message key="bootstrap.tabs.emptycontainer.headline"/></h4> <p><fmt:message key="bootstrap.tabs.emptycontainer.text"/></p> </div> </cms:container> </c:forEach> </div> […] </cms:formatter> […]
  • 26. ●Live Demo 26 Live Demo Demo Demo Demo Demo デモ
  • 27. ●Any Questions? 27 Any Questions? Fragen? Questions ? Questiones? ¿Preguntas? 質問
  • 28. Andreas Zahner Alkacon Software GmbH http://www.alkacon.com http://www.opencms.org Thank you very much for your attention! 28