Skapa en anpassad verktygsfältslayout creating-custom-toolbar-layout
Verktygsfältslayouter layout
När du skapar ett anpassat formulär kan du ange en verktygsfältslayout för formuläret. Verktygsfältets layout definierar kommandona och layouten för verktygsfältet i formuläret.
Verktygsfältslayouten använder i hög grad klientbearbetning som styrs av komplex JavaScript- och CSS-kod. Det kan vara komplicerat att organisera och optimera serveringen av den här koden. För att underlätta hanteringen av det här problemet tillhandahåller AEM biblioteksmappar på klientsidan, som gör att du kan lagra din klientkod i databasen, ordna den i kategorier och definiera när och hur varje kodkategori ska skickas till klienten. Klientsidans bibliotekssystem tar sedan hand om att skapa rätt länkar på den slutliga webbsidan för att läsa in rätt kod. Mer information finns i Hur klientbibliotek fungerar i AEM.
Exempellayout för verktygsfältet
Adaptiva formulär har en uppsättning färdiga layouter:
Verktygsfältslayouter som finns färdiga
Dessutom kan du skapa en anpassad verktygsfältslayout.
Följande procedur beskriver stegen för att skapa ett anpassat verktygsfält som visar tre åtgärder i verktygsfältet och de andra åtgärderna i en listruta i verktygsfältet.
Det bifogade innehållspaketet innehåller hela koden som beskrivs nedan. När du har installerat innehållspaketet öppnar du /content/forms/af/CustomLayoutDemo.html
för att visa en demo av den anpassade verktygsfältslayouten.
CustomToolbarLayoutDemo.zip
Hämta fil
Demonstrera anpassad verktygsfältslayout
Skapa en anpassad verktygsfältslayout layout-1
-
Skapa en mapp för att behålla dina anpassade verktygsfältslayouter. Till exempel:
/apps/customlayout/toolbar
.Om du vill skapa en anpassad layout kan du använda (och anpassa) någon av de färdiga verktygsfältslayouterna som finns i följande mapp:
/libs/fd/af/layouts/toolbar
Kopiera till exempel noden
mobileFixedToolbarLayout
från mappen/libs/fd/af/layouts/toolbar
till mappen/apps/customlayout/toolbar
.Kopiera även toolbarCommon.jsp till mappen
/apps/customlayout/toolbar
.note note NOTE Mappen som du skapar för att behålla de anpassade layouterna kommer att skapas med mappen apps
. -
Byt namn på den kopierade noden
mobileFixedToolbarLayout
tillcustomToolbarLayout.
Ange även en relevant beskrivning för noden. Ändra till exempel jcr:description för noden till Anpassad layout för verktygsfältet.
Egenskapen
guideComponentType
för noden avgör layouttypen. I det här fallet är layouttypen ett verktygsfält och visas därför i listrutan för val av verktygsfältslayout.En nod med relevant beskrivning
Din nya anpassade verktygsfältslayout visas i dialogrutan Anpassat formulärverktygsfält .
Lista över tillgängliga verktygsfältslayouter
note note NOTE Beskrivningen som uppdaterades i föregående steg visas i listrutan Layout. -
Välj den här anpassade verktygsfältslayouten och klicka på OK.
Lägg till clientlib (javascript och css) i noden
/etc/customlayout
och ta med referensen för clientlib icustomToolbarLayout.jsp
.Sökväg till filen customToolbarLayout.css
Exempel
customToolbarLayout.jsp
:code language-jsp <%@include file="/libs/fd/af/components/guidesglobal.jsp" %> <cq:includeClientLib categories="customtoolbarlayout" /> <c:if test="${isEditMode}"> <cq:includeClientLib categories="customtoolbarlayoutauthor" /> </c:if> <div class="guidetoolbar mobileToolbar mobilecustomToolbar" data-guide-position-class="guide-element-hide"> <div data-guide-scroll-indicator="true"></div> <%@include file="../toolbarCommon.jsp" %> </div>
note note NOTE Lägg till guideverktygsfältsklassen för layouten. Den färdiga formateringen för verktygsfältet definieras i förhållande till klassen för guideverktygsfält. Exempel
toolBarCommon.jsp
:code language-jsp <%@taglib prefix="fn" uri="https://java.sun.com/jsp/jstl/functions"%> <%-------------------- This code iterates over all the tool bar items using the guideToolbar bean. If the number of toolbar items are more than 3, then we create a dropdown menu using bootstrap for other actions present in the toolbar. In both desktop and mobile devices, the layout is different. ---------------------------------%> <c:forEach items="${guideToolbar.items}" var="toolbarItem" varStatus="loop"> <c:choose> <c:when test="${loop.index gt 2}"> <c:choose> <c:when test="${loop.index eq 3}"> <div class="btn-group dropdown"> <button type="button" class="btn btn-primary dropdown-toggle label" data-toggle="dropdown">Actions <span class="caret"></code></button> <button type="button" class="btn btn-primary dropdown-toggle icon" data-toggle="dropdown"><span class="glyphicon glyphicon-th-list"></code></button> <ul class="dropdown-menu" role="menu"> <li> <div id="${toolbarItem.id}_guide-item"> <sling:include path="${toolbarItem.path}" resourceType="${toolbarItem.resourceType}"/> </div> </li> <c:if test="${loop.index eq (fn:length(guideToolbar.items)-1)}"> </ul> </div> </c:if> </c:when> <c:when test="${loop.index eq (fn:length(guideToolbar.items)-1)}"> <li> <div id="${toolbarItem.id}_guide-item"> <sling:include path="${toolbarItem.path}" resourceType="${toolbarItem.resourceType}"/> </div> </li> </ul> </div> </c:when> <c:otherwise> <li> <div id="${toolbarItem.id}_guide-item"> <sling:include path="${toolbarItem.path}" resourceType="${toolbarItem.resourceType}"/> </div> </li> </c:otherwise> </c:choose> </c:when> <c:otherwise> <div id="${toolbarItem.id}_guide-item"> <sling:include path="${toolbarItem.path}" resourceType="${toolbarItem.resourceType}"/> </div> </c:otherwise> </c:choose> </c:forEach>
CSS:n som finns inuti clientlib-noden:
code language-css .mobilecustomToolbar .dropdown { display: inline-block; } .mobilecustomToolbar .dropdown { float: right; } .mobilecustomToolbar .dropdown > button { padding: 6px 12px; } .mobilecustomToolbar .dropdown .guideFieldWidget, .mobilecustomToolbar .dropdown .guideFieldWidget button { width: 100%; } .mobilecustomToolbar .dropdown .caret{ border-bottom: 6px solid; border-right: 6px solid transparent; border-left: 6px solid transparent; border-top: transparent; } .mobilecustomToolbar .dropdown-menu{ top: auto; bottom: 100%; } .mobilecustomToolbar .btn-group { vertical-align: super; } .mobilecustomToolbar .glyphicon { font-size: 24px; } @media (max-width: 767px){ .mobilecustomToolbar .dropdown .guideButton .iconButton-icon { display: none; } .mobilecustomToolbar .dropdown .guideButton .iconButton-label { display: inline-block; } .mobilecustomToolbar .dropdown .guideButton button { background-color: #013853; } .mobilecustomToolbar .btn-group { vertical-align: top; } }
Vyn Skrivbord i verktygsfältet för anpassad layout