onglet contenu
Bonjour, quelqu'un peut il me dire si, via syudio, on peut modifier l'onglet “Contenu” d'un document ? Et où peut on trouver les sources pour la parie “publication” située en dessous des méta données communes ? merci d'avance.
merci ! il y a juste une chose qui m'échappe, pourquoi si je fais : <nxu:set var=“publishedDocuments”
value="#{publishActions.getPublishedDocumentsFor(tree.name)}" cache="false">
j'ai bien #{publishActions.getPublishedDocumentsFor(tree.name)} qui n'est pas vide mais #{publishedDucuments} qui est vide ???…
{navigationContext.setCurrentDocument(field)}
<nxu:repeat value="#{availablePublicationTrees}" var="tree"
styleClass="dataOutput">
<nxu:set var="publishedDocuments"
value="#{publishActions.getPublishedDocumentsFor(tree.name)}" cache="false">
Un grand grand merci pour votre aide !
Bon au final j'ai fait un essai, je me suis rendu compte qu'il manquait les crochets autour du currentDocument
. Par ailleurs j'ai effectivement #{publishActions.publishedDocument}
qui retourne false
même si le document est publié, mon hack n'est donc pas parfait mais #{publishActions.getPublishedDocuments()}
fonctionne bien, vous pouvez donc remplacer le test par #{publishActions.getPublishedDocuments().size() > 0}
A vous de jouer maintenant, je pense que vous avez tout ce qu'il faut pour vous en sortir :)
ok je comprends mieux, pour le field j'ai ça : DocumentModelImpl(91a77890-76e6-4c5a-a8ff-a19b6414639b, path=/default-domain/workspaces/SI/convention de test, title=convention de test) c'est un type de document “convention” donc un custom j'ai essayé avec un type de document note, mais même résultat, #{publishActions.publishedDocument} est toujours false …
du coup il n'affiche rien…
Bonjour,
Le <c:set var="actualCurrentDocument" value="currentDocument" />
sert juste à sauvegarder le “vrai” current document pour le remettre à la fin (#{navigationContext.setCurrentDocument(actualCurrentDocument)}
), histoire d'éviter que le reste de la page ne croie que l'on se trouve vraiment sur #{field}
.
Pour afficher à l'écran le contenu d'une variable le plus simple est d'écrire directement #{field}, ou #{currentDocument}, etc. en dehors d'une balise, comme du texte quoi. Ou alors le mettre dans un h:outputText :
<h:outputText value="#{field}" />
(PS : Pour pouvoir faire vos essais facilement, au cas où vous ne connaissez pas déjà l'astuce on peut activer le mode développeur dans nuxeo.conf pour pouvoir voir en direct les changements faits sur le widget dans nxserver/nuxeo.war/widgets)
pouvez vous me dire comment debugger tout ça? j'ai remplacé par
mais l'objet #{publishActions.publishedDocument} est toujours false
Comment faire pour connaitre les valeurs des différents objets ? Encore merci
si je comprends bien, à l'entrée de mon template, dans le champ “field”, je met bien “data” ? parce que si je fais ça, et que je suis votre manipulation, j'ai droit à un : Cannot convert currentDocument of type class java.lang.String to interface org.nuxeo.ecm.core.api.DocumentModel
je pense que c'est ; #{navigationContext.setCurrentDocument(field)} qui pose problème c'est moi qui n'envoies pas la bonne donnée d'entrée ?
hum toujours le même problème … stackTrace : javax.servlet.ServletException: /widgets/**_publish.xhtml: Cannot convert currentDocument of type class java.lang.String to interface org.nuxeo.ecm.core.api.DocumentModel
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
En tout cas je pense que vous n'êtes pas loin de la solution, en jouant un peu sur la config du widget et l'utilisation des données dans le template vous devriez arriver à quelque chose.
Ah effectivement ça devient ardu, les méthodes “publishActions” sont toutes centrées sur le document courant. Du coup vous devriez pouvoir contourner ça en… remplaçant temporairement le document courant, avec quelque chose comme :
<c:set var="actualCurrentDocument" value="currentDocument" />
#{navigationContext.setCurrentDocument(field)}
<nxu:set var="publishedDocuments"
value="#{publishActions.getPublishedDocumentsFor(tree.name)}"
cache="false">
...
</nxu:set>
#{navigationContext.setCurrentDocument(actualCurrentDocument)}
Notez bien la désactivation du cache.
EDIT: Corrigé erreur dans le code
c'est exactement ce que j'ai fait, le soucis c'est que je ne trouve pas comment faire fonctionner mon template sur le document courant, publishActions.publishedDocument ne pointe jamais sur le document correct, j'ai essayé de mapper avec “data”, mais… rien…
Pour afficher les sections de publications dans le listing d'un répertoire, il suffit en gros de combiner les deux :
Créez une nouvelle content view qui ressemble à celle par défaut, mais avec par exemple une nouvelle colonne que vous appelez Publications. Son contenu sera alors un widget de type “Template” dont vous fournirez le .xhtml ; utiliser le publication_widget_template.xhtml
tel quel ne fonctionnera probablement pas mais pour peu que vous ayez les connaissances techniques pour l'adapter à vos besoins, ça peut être un bon point de départ.
ok merci. Mais j'aimerai en fait faire un vue d'un répertoire, avec la liste des documents disponibles et leurs sections de publications. Je n'arrive pas à modifier les templates dispo pour afficher cette information. Auriez vous une idée ? encore merci pour votre aide.
Bonjour,
Pour votre première question il faut regarder sur une page d'un Type de document la partie “> Tabs > Content views”, où l'on peut choisir comment est présenté l'onglet Contenu (ainsi que la poubelle). Il suffit donc de créer une nouvelle Content view avec les paramètres qui vous conviennent, puis de l'affecter au type de document.
Pour la publication, le fichier à modifier est /widgets/summary/publication_widget_template.xhtml
.