Sto cercando di creare un componente per una semplice fisarmonica, in cui i blocchi di contenuto sono trattenuti sotto intestazioni e solo una intestazione è visibile alla volta. La mia implementazione preferita utilizza due componenti, uno per rappresentare l'intera fisarmonica e un secondo componente per una singola voce.Componenti Adobe CQ che limitano i componenti secondari
L'idea è che un autore di contenuti possa estrarre la fisarmonica dal sidekick, quindi rilasciare uno o più elementi di fisarmonica nella fisarmonica, ma non consentire la rimozione di altri componenti qui. Gli oggetti per fisarmonica dovrebbero poter essere lasciati cadere nel componente fisarmonica e non in nessun'altra parsys.
Il mio problema è che al momento è possibile aggiungere altri contenuti alla fisarmonica e aggiungere elementi fisarmonica al di fuori della fisarmonica.
Il primo tentativo di risolvere questo era:
foobar/components/accordion
foobar/components/accordion/accordion.jsp
foobar/components/accordion/cq:editConfig
foobar/components/accordion/dialog
foobar/components/accordion/accordionitem
foobar/components/accordion/accordionitem/accordionitem.jsp
foobar/components/accordion/accordionitem/cq:editConfig
foobar/components/accordion/accordionitem/dialog
Questi sono i file di configurazione di questo sono:
fisarmonica/.content.xml
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
cq:isContainer="{Boolean}true"
jcr:primaryType="cq:Component"
jcr:title="Accordion"
sling:resourceSuperType="foundation/components/parbase"
allowedChildren="[*/accordion/accordionitem]"
allowedParents="[*/parsys]"
componentGroup="General"/>
fisarmonica/_cq_editConfig.xml
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
cq:actions="[-,edit,-,delete]"
cq:layout="editbar"
jcr:primaryType="cq:EditConfig">
<cq:listeners
jcr:primaryType="cq:EditListenersConfig"
aftercopy="REFRESH_PAGE"
afterdelete="REFRESH_PAGE"
afterinsert="REFRESH_PAGE"/>
</jcr:root>
La finestra di dialogo è vuota ed esiste solo in modo che il componente venga visualizzato nel sidekick.
accordion.jsp include semplicemente le parsys di base. dialogo voce/accordionitem/.content.xml
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="cq:Component"
jcr:title="Accordion Item"
sling:resourceSuperType="foundation/components/parbase"
allowedParents="[*/accordion]"
componentGroup="General"/>
La fisarmonica
fisarmonica prende nel titolo. EditConfig aggiunge semplicemente la barra degli strumenti, ma nessun listener.
accordionitem.jsp emette il titolo estratto dalla finestra di dialogo e ha un parsys.
Il mio problema sembra essere che i parsys non stanno usando le regole per i componenti di fisarmonica e fisarmonica. Invece sembrano ereditare dal prossimo parsys invece, a meno che non venga sovrascritto.
Posso impostare correttamente i componenti utilizzando la modalità di modifica sulla pagina e selezionando i componenti appropriati, ma che imposta le informazioni rispetto al modello, il che significa che è necessario eseguire la stessa configurazione per ogni modello di pagina. Quello che voglio è averlo definito nella definizione del componente, in modo che esista una volta.
Dopo primo crei i componenti ho trovato questo blog, che descrive esattamente la stessa scenerio: http://jenikya.com/blog/2012/03/cq5-accordion-component.html
Utilizzando tale come riferimento, ho provato ad aggiungere un'estensione PARSYS utilizzare all'interno accordion.jsp invece. Questo non ha fatto alcuna differenza per il codice, quindi anche le mie parsys personalizzate consentivano l'aggiunta di componenti diversi dall'elemento fisarmonica.
Qualsiasi consiglio su ciò che è sbagliato o altri approcci da adottare sarà molto apprezzato.
Sareste in grado di andare più in dettaglio di come si dovrebbe aggiungere i componenti per il componente dopo aver ottenuto i valori del tuo multi-campo? –