SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Andreas Zahner, Alkacon Software
Modern templates with
nested containers
28.09.2015
● The new Unify demo template
● Overview
● Formatters and their element settings for different use cases
● Creating page layouts using nested containers
● Recap: What are nested containers?
● Advanced formatter logic for nested container creation
● Flexible HTML structure creation with template rows
● Model groups
● What are model groups?
● The advantages of model groups
● Creation, settings and usage of model groups
● Template development with SASS
● Advantages of using SASS
● Necessary components, plugins
● Grunt configuration example
2
Agenda
The new Unify demo template3
● Based on Bootstrap 3.3.5 / jQuery 1.11.3
● Unify theme 1.8 (available from
http://www.wrapbootstrap.com)
● Additional content types:
● Event
● Map
● Better CSS / JS handling by using minified files
generated with SASS and Grunt
4
Overview
● Enhancements and changes based on
experience made with demo template of
OpenCms 9.x
● Improved styling of contents using element
settings to add CSS class names
● Additional formatters for contents provide more
display variations
● Improved search functionality using the
<cms:search> tag (see workshop track
tomorrow)
5
Overview
● Improved layout generation with only 2 element
views (Default / Template) instead of 3
● Better separation of development and editing
● Experienced web developers create the main
page layout with template rows
● No need to generate HTML from scratch
● Full control over the page HTML structure
● Easy creation of given page structures
● Editors without technical knowledge use the
generated page templates and fill them with
contents
6
Overview
● New support for image drag and drop
● Images can be changed / added to contents using
the new image drag and drop functionality
● Formatter JSPs simply have to add the following
code
● The images' xPath is passed as parameter to the
"imageDnd" method
7
Image drag and drop
<cms:formatter var="content" val="value" rdfa="rdfa">
...
<img
src="<cms:link>${value.Image}</cms:link>"
class="..."
${content.imageDnd['Image']}
alt="..."
/>
● The formatters for the Unify demo use element
settings to directly apply CSS class names to
the HTML structure
● This allows experienced users full control over
the styles used to generate the output
● The formatter JSPs contain less logic to
generate the HTML / CSS structure
● Alternative formatters can be added to provide
settings that can be used by non-technical
editors
8
Formatters & their element settings
● Full control over the
applied CSS classes
● Maximum layout
flexibility
● For experienced
web developers
● Only a limited set of
layout variations
● No technical
knowledge required
● Easy to understand
9
CSS class settings Predefined options settings
Formatters & their element settings
Which kind of formatter settings is "better"
depends on the project requirements
● The text content type provides different
formatters demonstrating the different
approaches:
● Text as Icon Box Formatter (CSS)
● The wrapper CSS classes and icon CSS classes have
to be entered manually (using Combo box widgets)
● Text as Icon Box Formatter (Settings)
● Options for the color, rounded box corners
● Selection of the icon that should be displayed
Limitation of color, icon types and icon size
10
Formatters & their element settings
● Live Demo
11
Live Demo
Demo
Demo Demo
Demo
デモ
Creating page layouts using nested
containers
12
● 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 layouts, pages and contents can be
created
13
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 tied 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.
14
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
15
What are nested containers?
● The new Unify demo pages are built using
template row elements that are placed in other
template row elements
● To make this operable, specific template rows
are only droppable in containers that match the
needed container type
16
Advanced formatter logic for nested
container creation
● Template row content example
17
Advanced formatter logic for nested
container creation
Sets the matching
container type
● If the row does not match, no HTML output is
generated by the template row formatter
● Result: the page editor only marks the
matching containers as drop zones
18
Advanced formatter logic for nested
container creation
<c:choose>
<c:when test="${!content.value.Container.isSet
|| (content.value.Container.isSet
&& fn:containsIgnoreCase(cms.container.type,
content.value.Container))}">
</c:when>
<c:otherwise>
<%-- Required Container does not match, don't generate
output --%>
</c:otherwise>
</c:choose>
Advanced formatter logic for nested
container creation
19
Page container (page)
Template row "Header" (headsection)
Template row "Footer" (footsection)
Template row "Main section" (mainsection)
Template row "Container" or "Container Fluid" (container)
Template row "Column" (default)
Content Content
Template row "Column" (default)
Content Content Content
● Wrapper HTML of template row containers can
optionally be defined in the content
● This allows the developer full control over the
generated HTML structure
20
Flexible HTML structure creation
● The $(param) allows to add optional wrapper CSS
class names to the HTML in the element settings
dialog
● More possible settings are
● Link: Pass a link to the wrapper HTML structure using
the $(link) macro
● CSSHints: CSS classes than can be passed to child
elements
● Detail page settings: define detail or detail ony
containers
21
Flexible HTML structure creation
● Formatter logic to generate the pre markup
22
Flexible HTML structure creation
...
<c:if test="${content.value.PreMarkup.isSet}">
<c:set var="preMarkup"
value="${fn:replace(content.value.PreMarkup,
'$(param)', cms.element.setting.param.value)}"
/>
<c:set var="link" value="" />
<c:if test="${cms.element.setting.link.isSet}">
<c:set var="link">
<cms:link>${cms.element.setting.link}</cms:link>
</c:set>
</c:if>
${fn:replace(preMarkup, '$(link)', link)}
</c:if>
...
● For each created container of a template row,
pre and post markup can optionally be defined
● The class names have to be set in the "Grid
Class" field of the container, e.g. "col-xs-6 col-
md-3"
● With that approach, even complex responsive
behaviour (like push / pull of columns for
specific cases) can easily be defined by the
developer
23
Flexible HTML structure creation
● Live Demo
24
Live Demo
Demo
Demo Demo
Demo
デモ
Model groups25
● Model groups are pre defined content
structures that can be used by editors to
generate commonly used page items
● Example: creation of an "article" that is
composed of a text element with an image to
the left or right
26
What are model groups?
● No need for the editor to create more complex
layout structures from scratch
● More efficient workflow:
● Often used structures can be created with one
click
● Content elements of model groups can be reused
or copied depending on their use case
27
The advantages of model groups
● Model groups are maintained in the sitemap
editor
● Change the view to "Templates" to get a list of
Templates and existing model group pages
28
Creation of model groups
● Edit a model group page to change existing model
groups or create new ones
● Example:
● Drop a template row which you want to use as model
wrapper to the page
● Edit the element settings of this template row to create
a model group based on that row and its contents
● Add other contents to the template row columns, edit
their element settings if needed
● A content of type "modelgroup" is created
automatically by OpenCms in the current sitemap
".content/modelgroup/" folder
29
Creation of model groups
● In addition to the common element settings of a
content element, model groups have special
settings
30
Settings of model groups
● Use as group: This is set at the outer content
element, usually a template row.
If a model group is dropped on a page, two
different behaviours can be configured:
● Copy elements: all content elements belonging to
the model group are copied if dropped on a page
● Reuse elements: all content elements belonging
to the model group are reused
● Important: The outer element itself is always
reused!
● Group title, Group description: Should
contain information about the model group
31
Settings of model groups
● Each content element that is part of a model
group (except the wrapping element) can be
configured to either be copied or reused
32
Settings of model groups
● Available model groups are listed in the "Add
content" dialog of the page editor and can be
dropped on the page like other content
elements
33
Usage of model groups
● Reusable model groups like header and footer
cannot be edited on the pages where they are
used
● The only way to edit them is to change to the
model page with these groups
● They have different icons to identify them in the
list of avaible model groups (blue)
34
Usage of model groups
● Live Demo
35
Live Demo
Demo
Demo Demo
Demo
デモ
Template development with SASS36
● Definable variables
● Operational functions (e.g. lighten, darken)
● Joining of multiple files
● Fewer HTTP requests by creating one large
(minified) CSS file
● Reusable color schemes for theming
● In combination with Grunt:
● Better development workflow
● Faster development
37
Advantages of using SASS
38
Advantages of using SASS
Excerpt from defaultcolors.scss
...
// Main colors
$alkacon-red: #b31b34;
$alkacon-blue: #144382;
...
$blue: $alkacon-blue;
$blue-light: #2197db; // handmade looks better
$blue-lighter: lighten($blue-light, 42%);
$blue-dark: darken($blue, 10%);
$blue-darker: darken($blue, 15%);
$red: $alkacon-red;
$red-light: #ff264a; // handmade looks better
$red-lighter: lighten($red-light, 37%);
$red-dark: darken($red, 9%);
$red-darker: darken($red, 21%);
...
● Example: Unify template default colors SCSS
file
● Example: Unify template red SCSS file
39
Advantages of using SASS
Excerpt from style-red.scss
...
// Import default colors
@import 'defaultcolors';
// Main theme colors
$main-theme: $red;
$main-theme-hover: $red-light;
$main-theme-additional: $red-lighter;
// Navigation colors
$nav-main-bg: $white;
$nav-main-color: $navigation-text;
...
// Import the other files
@import 'imports';
● Node.js (JavaScript runtime): https://nodejs.org
● Grunt (Task runner)
● grunt-cli (Command line interface)
● grunt-contrib-watch
● grunt-contrib-sass
● grunt-contrib-cssmin
● grunt-contrib-uglify
● grunt-contrib-copy
● Ruby: https://www.ruby-lang.org
● Gem: sass
40
Necessary components, plugins
● Gruntfile.js excerpt from Unify demo template
● Task "sass":
41
Grunt configuration example
sass: {
dist: {
options: {
sourcemap: 'auto',
lineNumbers: true,
style: 'nested',
}, {
expand: true,
cwd: 'components/scss',
src: ['style-red.scss'],
dest: 'output/resources/css',
ext: '.css'
}
]
}
},
● Task "copy":
42
Grunt configuration example
copy: {
main: {
files: [{
expand: true,
flatten: true,
src: ['output/resources/css/*.min.css'],
dest: '/path-to-vfs-mount/
…/com.alkacon.unify.basics/resources/css/',
filter: 'isFile'
},{
expand: true,
flatten: true,
src: ['output/resources/js/*.min.js'],
dest: '/path-to-vfs-mount/
…/com.alkacon.unify.basics/resources/js/',
filter: 'isFile'
}],
},
},
● Live Demo
43
Live Demo
Demo
Demo Demo
Demo
デモ
44
Any Questions?
● 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!
45

Weitere ähnliche Inhalte

Was ist angesagt?

OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9
OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9
OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9Alkacon 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 GruntAlkacon 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
 
Thinking in Components
Thinking in ComponentsThinking in Components
Thinking in ComponentsAnton Ivanov
 
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
 
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 serviceAlkacon Software GmbH & Co. KG
 
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 KrausWomen in Technology Poland
 
Drupal training-1-in-mumbai
Drupal training-1-in-mumbaiDrupal training-1-in-mumbai
Drupal training-1-in-mumbaivibrantuser
 
Making views - DrupalGov Canberra 2017
Making views - DrupalGov Canberra 2017Making views - DrupalGov Canberra 2017
Making views - DrupalGov Canberra 2017Donna Benjamin
 
Nuxeo WebEngine: a practical introduction
Nuxeo WebEngine: a practical introductionNuxeo WebEngine: a practical introduction
Nuxeo WebEngine: a practical introductionNuxeo
 
SHOW202: How to customize Lotus Quickr Templates Using HTML, Javascript and C...
SHOW202: How to customize Lotus Quickr Templates Using HTML, Javascript and C...SHOW202: How to customize Lotus Quickr Templates Using HTML, Javascript and C...
SHOW202: How to customize Lotus Quickr Templates Using HTML, Javascript and C...Brian O'Gorman
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Grzegorz Bartman
 
Web browser architecture.87 to 88
Web browser architecture.87 to 88Web browser architecture.87 to 88
Web browser architecture.87 to 88myrajendra
 
Introduction to Browser Internals
Introduction to Browser InternalsIntroduction to Browser Internals
Introduction to Browser InternalsSiva Arunachalam
 

Was ist angesagt? (20)

OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9
OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9
OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9
 
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
 
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
 
OpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management ToolOpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management Tool
 
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
 
Thinking in Components
Thinking in ComponentsThinking in Components
Thinking in Components
 
OpenCms Days 2015 Next generation repository
OpenCms Days 2015  Next generation repositoryOpenCms Days 2015  Next generation repository
OpenCms Days 2015 Next generation repository
 
How Browsers Work
How Browsers Work How Browsers Work
How Browsers Work
 
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 ...
 
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
 
How browser work
How browser workHow browser work
How browser work
 
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
 
Drupal training-1-in-mumbai
Drupal training-1-in-mumbaiDrupal training-1-in-mumbai
Drupal training-1-in-mumbai
 
Making views - DrupalGov Canberra 2017
Making views - DrupalGov Canberra 2017Making views - DrupalGov Canberra 2017
Making views - DrupalGov Canberra 2017
 
Nuxeo WebEngine: a practical introduction
Nuxeo WebEngine: a practical introductionNuxeo WebEngine: a practical introduction
Nuxeo WebEngine: a practical introduction
 
SHOW202: How to customize Lotus Quickr Templates Using HTML, Javascript and C...
SHOW202: How to customize Lotus Quickr Templates Using HTML, Javascript and C...SHOW202: How to customize Lotus Quickr Templates Using HTML, Javascript and C...
SHOW202: How to customize Lotus Quickr Templates Using HTML, Javascript and C...
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2
 
How Browser Works?
How Browser Works?How Browser Works?
How Browser Works?
 
Web browser architecture.87 to 88
Web browser architecture.87 to 88Web browser architecture.87 to 88
Web browser architecture.87 to 88
 
Introduction to Browser Internals
Introduction to Browser InternalsIntroduction to Browser Internals
Introduction to Browser Internals
 

Andere mochten auch

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 servicesAlkacon 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 spotOpenCms
 
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 OpenCmsAlkacon 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 2013 - Outsourcing OpenCms Template Design
OpenCms Days 2013 - Outsourcing OpenCms Template DesignOpenCms Days 2013 - Outsourcing OpenCms Template Design
OpenCms Days 2013 - Outsourcing OpenCms Template DesignAlkacon 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 CMISAlkacon 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 documentationAlkacon Software GmbH & Co. KG
 
Internal and external business environment
Internal and external business environmentInternal and external business environment
Internal and external business environmentAashish Sahi
 

Andere mochten auch (17)

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
 
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
 
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
 
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 Days 2015 OCEE explained
OpenCms Days 2015 OCEE explainedOpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explained
 
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
 
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
 
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
 
OpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernmentOpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernment
 
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
 
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...
 
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
 
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?
 
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
 
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
 
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
 
Internal and external business environment
Internal and external business environmentInternal and external business environment
Internal and external business environment
 

Ähnlich wie OpenCms Days 2015 Modern templates with nested containers

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 ViewsNuxeo
 
Tech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityTech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityAlfresco Software
 
Customizing the Appearance and HTML Output of Visualforce Pages
Customizing the Appearance and HTML Output of VisualforcePages Customizing the Appearance and HTML Output of VisualforcePages
Customizing the Appearance and HTML Output of Visualforce Pages Mohammed Safwat Abu Kwaik
 
Introduction to BOOTSTRAP
Introduction to BOOTSTRAPIntroduction to BOOTSTRAP
Introduction to BOOTSTRAPJeanie Arnoco
 
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
 
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 englishcrevillo
 
Modern Theming & The Future of WordPress- Working with Full Site Editing and ...
Modern Theming & The Future of WordPress- Working with Full Site Editing and ...Modern Theming & The Future of WordPress- Working with Full Site Editing and ...
Modern Theming & The Future of WordPress- Working with Full Site Editing and ...WP Engine
 
An introduction to bootstrap
An introduction to bootstrapAn introduction to bootstrap
An introduction to bootstrapMind IT Systems
 
Stupid Index Block Tricks
Stupid Index Block TricksStupid Index Block Tricks
Stupid Index Block Trickshannonhill
 
Meetup: The big change coming to WordPress in 2018 - Gutenberg
Meetup: The big change coming to WordPress in 2018 - GutenbergMeetup: The big change coming to WordPress in 2018 - Gutenberg
Meetup: The big change coming to WordPress in 2018 - GutenbergEvan Mullins
 
Meetup: The big change coming to WordPress in 2018 - Gutenberg
Meetup: The big change coming to WordPress in 2018 - GutenbergMeetup: The big change coming to WordPress in 2018 - Gutenberg
Meetup: The big change coming to WordPress in 2018 - GutenbergMickey Mellen
 
Web components - An Introduction
Web components - An IntroductionWeb components - An Introduction
Web components - An Introductioncherukumilli2
 
Understanding the Web Page Layout
Understanding the Web Page LayoutUnderstanding the Web Page Layout
Understanding the Web Page LayoutJhaun Paul Enriquez
 
Why NextCMS: Layout Editor
Why NextCMS: Layout EditorWhy NextCMS: Layout Editor
Why NextCMS: Layout EditorPhuoc Nguyen Huu
 
Twitter bootstrap training_session_ppt
Twitter bootstrap training_session_pptTwitter bootstrap training_session_ppt
Twitter bootstrap training_session_pptRadheshyam Kori
 
Tips and Tricks for LiveWhale Development
Tips and Tricks for LiveWhale DevelopmentTips and Tricks for LiveWhale Development
Tips and Tricks for LiveWhale DevelopmentNaomi Royall
 
Contributions: what they are and how to find them
Contributions: what they are and how to find themContributions: what they are and how to find them
Contributions: what they are and how to find themPedro Cambra
 

Ähnlich wie OpenCms Days 2015 Modern templates with nested containers (20)

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
 
Tech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityTech Talk Live on Share Extensibility
Tech Talk Live on Share Extensibility
 
Unit 2 - Data Binding.pptx
Unit 2 - Data Binding.pptxUnit 2 - Data Binding.pptx
Unit 2 - Data Binding.pptx
 
Customizing the Appearance and HTML Output of Visualforce Pages
Customizing the Appearance and HTML Output of VisualforcePages Customizing the Appearance and HTML Output of VisualforcePages
Customizing the Appearance and HTML Output of Visualforce Pages
 
Introduction to BOOTSTRAP
Introduction to BOOTSTRAPIntroduction to BOOTSTRAP
Introduction to BOOTSTRAP
 
Dsc Charusat Learning React Part 1
Dsc Charusat Learning React Part 1 Dsc Charusat Learning React Part 1
Dsc Charusat Learning React Part 1
 
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
 
Modern Theming & The Future of WordPress- Working with Full Site Editing and ...
Modern Theming & The Future of WordPress- Working with Full Site Editing and ...Modern Theming & The Future of WordPress- Working with Full Site Editing and ...
Modern Theming & The Future of WordPress- Working with Full Site Editing and ...
 
An introduction to bootstrap
An introduction to bootstrapAn introduction to bootstrap
An introduction to bootstrap
 
Stupid Index Block Tricks
Stupid Index Block TricksStupid Index Block Tricks
Stupid Index Block Tricks
 
Meetup: The big change coming to WordPress in 2018 - Gutenberg
Meetup: The big change coming to WordPress in 2018 - GutenbergMeetup: The big change coming to WordPress in 2018 - Gutenberg
Meetup: The big change coming to WordPress in 2018 - Gutenberg
 
Meetup: The big change coming to WordPress in 2018 - Gutenberg
Meetup: The big change coming to WordPress in 2018 - GutenbergMeetup: The big change coming to WordPress in 2018 - Gutenberg
Meetup: The big change coming to WordPress in 2018 - Gutenberg
 
Web components - An Introduction
Web components - An IntroductionWeb components - An Introduction
Web components - An Introduction
 
Understanding the Web Page Layout
Understanding the Web Page LayoutUnderstanding the Web Page Layout
Understanding the Web Page Layout
 
Chapter 12
Chapter 12Chapter 12
Chapter 12
 
Why NextCMS: Layout Editor
Why NextCMS: Layout EditorWhy NextCMS: Layout Editor
Why NextCMS: Layout Editor
 
Twitter bootstrap training_session_ppt
Twitter bootstrap training_session_pptTwitter bootstrap training_session_ppt
Twitter bootstrap training_session_ppt
 
Tips and Tricks for LiveWhale Development
Tips and Tricks for LiveWhale DevelopmentTips and Tricks for LiveWhale Development
Tips and Tricks for LiveWhale Development
 
Magento Presentation Layer
Magento Presentation LayerMagento Presentation Layer
Magento Presentation Layer
 
Contributions: what they are and how to find them
Contributions: what they are and how to find themContributions: what they are and how to find them
Contributions: what they are and how to find them
 

Mehr von 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 portalsAlkacon 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-TSAlkacon 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.5Alkacon Software GmbH & Co. KG
 
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 extensionsAlkacon Software GmbH & Co. KG
 

Mehr von Alkacon Software GmbH & Co. KG (11)

OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta
 
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
 
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
 
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
 
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, ...
 
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?
 
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
 
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
 
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
 
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
 
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
 

Kürzlich hochgeladen

%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfryanfarris8
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 

Kürzlich hochgeladen (20)

%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 

OpenCms Days 2015 Modern templates with nested containers

  • 1. Andreas Zahner, Alkacon Software Modern templates with nested containers 28.09.2015
  • 2. ● The new Unify demo template ● Overview ● Formatters and their element settings for different use cases ● Creating page layouts using nested containers ● Recap: What are nested containers? ● Advanced formatter logic for nested container creation ● Flexible HTML structure creation with template rows ● Model groups ● What are model groups? ● The advantages of model groups ● Creation, settings and usage of model groups ● Template development with SASS ● Advantages of using SASS ● Necessary components, plugins ● Grunt configuration example 2 Agenda
  • 3. The new Unify demo template3
  • 4. ● Based on Bootstrap 3.3.5 / jQuery 1.11.3 ● Unify theme 1.8 (available from http://www.wrapbootstrap.com) ● Additional content types: ● Event ● Map ● Better CSS / JS handling by using minified files generated with SASS and Grunt 4 Overview
  • 5. ● Enhancements and changes based on experience made with demo template of OpenCms 9.x ● Improved styling of contents using element settings to add CSS class names ● Additional formatters for contents provide more display variations ● Improved search functionality using the <cms:search> tag (see workshop track tomorrow) 5 Overview
  • 6. ● Improved layout generation with only 2 element views (Default / Template) instead of 3 ● Better separation of development and editing ● Experienced web developers create the main page layout with template rows ● No need to generate HTML from scratch ● Full control over the page HTML structure ● Easy creation of given page structures ● Editors without technical knowledge use the generated page templates and fill them with contents 6 Overview
  • 7. ● New support for image drag and drop ● Images can be changed / added to contents using the new image drag and drop functionality ● Formatter JSPs simply have to add the following code ● The images' xPath is passed as parameter to the "imageDnd" method 7 Image drag and drop <cms:formatter var="content" val="value" rdfa="rdfa"> ... <img src="<cms:link>${value.Image}</cms:link>" class="..." ${content.imageDnd['Image']} alt="..." />
  • 8. ● The formatters for the Unify demo use element settings to directly apply CSS class names to the HTML structure ● This allows experienced users full control over the styles used to generate the output ● The formatter JSPs contain less logic to generate the HTML / CSS structure ● Alternative formatters can be added to provide settings that can be used by non-technical editors 8 Formatters & their element settings
  • 9. ● Full control over the applied CSS classes ● Maximum layout flexibility ● For experienced web developers ● Only a limited set of layout variations ● No technical knowledge required ● Easy to understand 9 CSS class settings Predefined options settings Formatters & their element settings Which kind of formatter settings is "better" depends on the project requirements
  • 10. ● The text content type provides different formatters demonstrating the different approaches: ● Text as Icon Box Formatter (CSS) ● The wrapper CSS classes and icon CSS classes have to be entered manually (using Combo box widgets) ● Text as Icon Box Formatter (Settings) ● Options for the color, rounded box corners ● Selection of the icon that should be displayed Limitation of color, icon types and icon size 10 Formatters & their element settings
  • 11. ● Live Demo 11 Live Demo Demo Demo Demo Demo デモ
  • 12. Creating page layouts using nested containers 12
  • 13. ● 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 layouts, pages and contents can be created 13 What are nested containers?
  • 14. ● 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 tied 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. 14 What are nested containers?
  • 15. ● 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 15 What are nested containers?
  • 16. ● The new Unify demo pages are built using template row elements that are placed in other template row elements ● To make this operable, specific template rows are only droppable in containers that match the needed container type 16 Advanced formatter logic for nested container creation
  • 17. ● Template row content example 17 Advanced formatter logic for nested container creation Sets the matching container type
  • 18. ● If the row does not match, no HTML output is generated by the template row formatter ● Result: the page editor only marks the matching containers as drop zones 18 Advanced formatter logic for nested container creation <c:choose> <c:when test="${!content.value.Container.isSet || (content.value.Container.isSet && fn:containsIgnoreCase(cms.container.type, content.value.Container))}"> </c:when> <c:otherwise> <%-- Required Container does not match, don't generate output --%> </c:otherwise> </c:choose>
  • 19. Advanced formatter logic for nested container creation 19 Page container (page) Template row "Header" (headsection) Template row "Footer" (footsection) Template row "Main section" (mainsection) Template row "Container" or "Container Fluid" (container) Template row "Column" (default) Content Content Template row "Column" (default) Content Content Content
  • 20. ● Wrapper HTML of template row containers can optionally be defined in the content ● This allows the developer full control over the generated HTML structure 20 Flexible HTML structure creation
  • 21. ● The $(param) allows to add optional wrapper CSS class names to the HTML in the element settings dialog ● More possible settings are ● Link: Pass a link to the wrapper HTML structure using the $(link) macro ● CSSHints: CSS classes than can be passed to child elements ● Detail page settings: define detail or detail ony containers 21 Flexible HTML structure creation
  • 22. ● Formatter logic to generate the pre markup 22 Flexible HTML structure creation ... <c:if test="${content.value.PreMarkup.isSet}"> <c:set var="preMarkup" value="${fn:replace(content.value.PreMarkup, '$(param)', cms.element.setting.param.value)}" /> <c:set var="link" value="" /> <c:if test="${cms.element.setting.link.isSet}"> <c:set var="link"> <cms:link>${cms.element.setting.link}</cms:link> </c:set> </c:if> ${fn:replace(preMarkup, '$(link)', link)} </c:if> ...
  • 23. ● For each created container of a template row, pre and post markup can optionally be defined ● The class names have to be set in the "Grid Class" field of the container, e.g. "col-xs-6 col- md-3" ● With that approach, even complex responsive behaviour (like push / pull of columns for specific cases) can easily be defined by the developer 23 Flexible HTML structure creation
  • 24. ● Live Demo 24 Live Demo Demo Demo Demo Demo デモ
  • 26. ● Model groups are pre defined content structures that can be used by editors to generate commonly used page items ● Example: creation of an "article" that is composed of a text element with an image to the left or right 26 What are model groups?
  • 27. ● No need for the editor to create more complex layout structures from scratch ● More efficient workflow: ● Often used structures can be created with one click ● Content elements of model groups can be reused or copied depending on their use case 27 The advantages of model groups
  • 28. ● Model groups are maintained in the sitemap editor ● Change the view to "Templates" to get a list of Templates and existing model group pages 28 Creation of model groups
  • 29. ● Edit a model group page to change existing model groups or create new ones ● Example: ● Drop a template row which you want to use as model wrapper to the page ● Edit the element settings of this template row to create a model group based on that row and its contents ● Add other contents to the template row columns, edit their element settings if needed ● A content of type "modelgroup" is created automatically by OpenCms in the current sitemap ".content/modelgroup/" folder 29 Creation of model groups
  • 30. ● In addition to the common element settings of a content element, model groups have special settings 30 Settings of model groups
  • 31. ● Use as group: This is set at the outer content element, usually a template row. If a model group is dropped on a page, two different behaviours can be configured: ● Copy elements: all content elements belonging to the model group are copied if dropped on a page ● Reuse elements: all content elements belonging to the model group are reused ● Important: The outer element itself is always reused! ● Group title, Group description: Should contain information about the model group 31 Settings of model groups
  • 32. ● Each content element that is part of a model group (except the wrapping element) can be configured to either be copied or reused 32 Settings of model groups
  • 33. ● Available model groups are listed in the "Add content" dialog of the page editor and can be dropped on the page like other content elements 33 Usage of model groups
  • 34. ● Reusable model groups like header and footer cannot be edited on the pages where they are used ● The only way to edit them is to change to the model page with these groups ● They have different icons to identify them in the list of avaible model groups (blue) 34 Usage of model groups
  • 35. ● Live Demo 35 Live Demo Demo Demo Demo Demo デモ
  • 37. ● Definable variables ● Operational functions (e.g. lighten, darken) ● Joining of multiple files ● Fewer HTTP requests by creating one large (minified) CSS file ● Reusable color schemes for theming ● In combination with Grunt: ● Better development workflow ● Faster development 37 Advantages of using SASS
  • 38. 38 Advantages of using SASS Excerpt from defaultcolors.scss ... // Main colors $alkacon-red: #b31b34; $alkacon-blue: #144382; ... $blue: $alkacon-blue; $blue-light: #2197db; // handmade looks better $blue-lighter: lighten($blue-light, 42%); $blue-dark: darken($blue, 10%); $blue-darker: darken($blue, 15%); $red: $alkacon-red; $red-light: #ff264a; // handmade looks better $red-lighter: lighten($red-light, 37%); $red-dark: darken($red, 9%); $red-darker: darken($red, 21%); ... ● Example: Unify template default colors SCSS file
  • 39. ● Example: Unify template red SCSS file 39 Advantages of using SASS Excerpt from style-red.scss ... // Import default colors @import 'defaultcolors'; // Main theme colors $main-theme: $red; $main-theme-hover: $red-light; $main-theme-additional: $red-lighter; // Navigation colors $nav-main-bg: $white; $nav-main-color: $navigation-text; ... // Import the other files @import 'imports';
  • 40. ● Node.js (JavaScript runtime): https://nodejs.org ● Grunt (Task runner) ● grunt-cli (Command line interface) ● grunt-contrib-watch ● grunt-contrib-sass ● grunt-contrib-cssmin ● grunt-contrib-uglify ● grunt-contrib-copy ● Ruby: https://www.ruby-lang.org ● Gem: sass 40 Necessary components, plugins
  • 41. ● Gruntfile.js excerpt from Unify demo template ● Task "sass": 41 Grunt configuration example sass: { dist: { options: { sourcemap: 'auto', lineNumbers: true, style: 'nested', }, { expand: true, cwd: 'components/scss', src: ['style-red.scss'], dest: 'output/resources/css', ext: '.css' } ] } },
  • 42. ● Task "copy": 42 Grunt configuration example copy: { main: { files: [{ expand: true, flatten: true, src: ['output/resources/css/*.min.css'], dest: '/path-to-vfs-mount/ …/com.alkacon.unify.basics/resources/css/', filter: 'isFile' },{ expand: true, flatten: true, src: ['output/resources/js/*.min.js'], dest: '/path-to-vfs-mount/ …/com.alkacon.unify.basics/resources/js/', filter: 'isFile' }], }, },
  • 43. ● Live Demo 43 Live Demo Demo Demo Demo Demo デモ
  • 44. 44 Any Questions? ● Any Questions? Fragen? Questions ? Questiones? ¿Preguntas?質問
  • 45. Andreas Zahner Alkacon Software GmbH http://www.alkacon.com http://www.opencms.org Thank you very much for your attention! 45