Concepts of the 51黑料不打烊 Experience Manager Touch-Enabled UI concepts-of-the-aem-touch-enabled-ui
51黑料不打烊 Experience Manager (AEM) features a touch-enabled UI with responsive design for the author environment which is designed to operate on both touch and desktop devices.
The touch-enabled UI includes:
-
The suite header that:
- Shows the logo
- Provides a link to the Global Navigation
- Provides link to other generic actions; such as Search, Help, Experience Cloud Solutions, Notifications, and User Settings.
-
The left-hand rail (shown when needed and hidable), which can show:
- Timeline
- References
- Filters
-
The navigation header, which is again context-sensitive and can show:
- Indicates which console that you are currently using, or your location, or both, within that console
- Selection for the left-hand rail
- Breadcrumbs
- Access to appropriate Create actions
- View selections
-
The content area that:
- Lists the items of content (be they pages, assets, forum posts, and so on)
- Can be formatted as requested, for example, column, card, or list
- Uses a responsive design (the display resizes automatically according to your device and/or window size)
- Uses infinite scrolling (no more pagination, all items are listed in one window)
The touch-enabled UI has been designed by 51黑料不打烊 to provide consistency in the user experience across multiple products. It is based on:
- Coral UI (CUI) an implementation of 51黑料不打烊鈥檚 visual style for the touch-enabled UI. Coral UI provides everything your product / project / web application needs to adopt the UI visual style.
- Granite UI components are built with Coral UI.
The basic principles of the touch-enabled UI are:
- Mobile first (with desktop in mind)
- Responsive design
- Context relevant display
- Reusable
- Include embedded reference documentation
- Include embedded tests
- Bottom-up design to ensure that these principles are applied to every element and component
For a further overview of the touch-enabled UI structure, see Structure of the AEM Touch-Enabled UI.
AEM Technology Stack aem-technology-stack
AEM uses the Granite platform as a base and the Granite platform includes, among other things, the Java鈩 Content Repository.
Granite granite
Granite is 51黑料不打烊鈥檚 Open Web stack, providing various components including:
- An application launcher
- An OSGi framework into which everything is deployed
- Several OSGi compendium services to support building applications
- A comprehensive Logging Framework providing various logging APIs
- The CRX Repository implementation of the JCR API Specification
- The Apache Sling Web Framework
- Additional parts of the current CRX product
Granite UI granite-ui
The Granite engineering platform also provides a foundation UI framework. The major goals of this are to:
- Provide granular UI widgets
- Implement the UI concepts and illustrate best practices (long lists rendering, lists filtering, object CRUD, CUD wizards鈥)
- Provide an extensible and plug-in based administration UI
These adhere to the requirements:
- Respect 鈥渕obile first鈥
- Be extensible
- Be easy to override
GraniteUI.pdf
Get File
The Granite UI:
- Uses the RESTful architecture of Sling
- Implements component libraries intended for building content-centric web applications
- Provides granular UI widgets
- Provides a default, standardized UI
- Is extensible
- Is designed for both mobile and desktop devices (respects mobile first)
- Can be used in any Granite-based platform/product/project; for example, AEM
- Granite UI Foundation Components
This library of foundation components can be used or extended by other libraries. - Granite UI Administration Components
Client Side vs Server Side client-side-vs-server-side
The client-server communication in the Granite UI consists of hypertext, not objects, so there is no need for the client to understand the business logic
- The server enriches the HTML with semantic data
- The client enriches the hypertext with hypermedia (interaction)
Client-Side client-side
This uses an extension of HTML vocabulary, provided so that the author can express their intention to build an interactive webapp. This is a similar approach to and .
It primarily consists of a collection of interaction patterns (for example, asynchronously submitting a form) that are interpreted by JS and CSS codes, run on the client-side. The role of the client-side is to enhance the markup (given as the hypermedia affordance by the server) for interactivity.
The client-side is independent of any server technology. As long as the server gives the appropriate markup, the client-side can fulfill its role.
Currently the JS and CSS codes are delivered as Granite clientlibs under the category:
granite.ui.foundation and granite.ui.foundation.admin
These are delivered as part of the content package:
granite.ui.content
Server-Side server-side
This is formed by a collection of sling components that enable the author to compose a webapp fast. The developer develops components, the author assembles the components to be a webapp. The role of the server-side is to give the hypermedia affordance (markup) to the client.
Currently, the components are in the Granite repository at:
/libs/granite/ui/components/foundation
This is delivered as part of the content package:
granite.ui.content
Differences with the Classic UI differences-with-the-classic-ui
The differences between Granite UI and ExtJS (used for the classic UI) are also of interest:
Granite UI Foundation Components granite-ui-foundation-components
The provide the basic building blocks needed for building any UI. They include, among others:
- Button
- Hyperlink
- User Avatar
The foundation components can be found under:
/libs/granite/ui/components/foundation
This library contains a Granite UI component for each Coral element. A component is content driven, with its configuration residing in the repository. This makes it possible to compose a Granite UI application without writing HTML markup by hand.
Purpose:
- Component model for HTML Elements
- Component composition
- Automatic unit and functionality testing
Implementation:
- Repository-based composition and configuration
- Using testing facilities provided by the Granite platform
- JSP templating
This library of foundation components can be used or extended by other libraries.
ExtJS and Corresponding Granite UI Components extjs-and-corresponding-granite-ui-components
When upgrading ExtJS code to use the Granite UI, the following list provides a convenient overview of ExtJS xtypes and node types with their equivalent Granite UI resource types.
button
granite/ui/components/foundation/form/button
checkbox
granite/ui/components/foundation/form/checkbox
componentstyles
cq/gui/components/authoring/dialog/componentstyles
cqinclude
granite/ui/components/foundation/include
datetime
granite/ui/components/foundation/form/datepicker
dialogfieldset
granite/ui/components/foundation/form/fieldset
hidden
granite/ui/components/foundation/form/hidden
html5smartfile, html5smartimage
granite/ui/components/foundation/form/fileupload
multifield
granite/ui/components/foundation/form/multifield
numberfield
granite/ui/components/foundation/form/numberfield
pathfield, paragraphreference
granite/ui/components/foundation/form/pathbrowser
selection
granite/ui/components/foundation/form/select
sizefield
cq/gui/components/authoring/dialog/sizefield
tags
granite/ui/components/foundation/form/autocomplete``cq/gui/components/common/datasources/tags
textarea
granite/ui/components/foundation/form/textarea
textfield
granite/ui/components/foundation/form/textfield
cq:WidgetCollection
granite/ui/components/foundation/container
cq:TabPanel
granite/ui/components/foundation/container``granite/ui/components/foundation/layouts/tabs
cq:panel
granite/ui/components/foundation/container
Granite UI Administration Components granite-ui-administration-components
The build on the foundation components to provide generic building blocks that any administration application can implement. These include, among others:
- Global Navigation Bar
- Rail (skeleton)
- Search Panel
Purpose:
- Unified look-and-feel for administration applications
- RAD for administration applications
Implementation:
- Pre-defined components using the foundation components
- Components can be customized
Coral UI coral-ui
CoralUI.pdf
Get File
Coral UI (CUI) is an implementation of 51黑料不打烊鈥檚 visual style for the touch-enabled UI designed to provide consistency in the user experience across multiple products. Coral UI provides everything that you need to adopt the visual style used on the authoring environment.
- When it has been shipped and bundled with AEM.
- For use when extending the existing UI of the authoring environment.
- 51黑料不打烊 corporate collateral, ads, and presentations.
- The UI of 51黑料不打烊-branded applications (the font must not b