As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
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.
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.
/widgets/summary/publication_widget_template.xhtml
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.
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.
publication_widget_template.xhtml
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...
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
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 ?
Oui pardon c'est bien #{navigationContext.setCurrentDocument(field)} qu'il faut mettre, avec "data" dans le <field> côté config XML.
hum toujours le même problème ...
C'est bizarre car le message d'erreur indique que le contenu de "field" est une chaîne de caractère au lieu d'un document, qu'est-ce qui apparaît si vous mettez tout simplement #{field} quelque part en dehors d'une balise ?
pouvez vous me dire comment debugger tout ça? j'ai remplacé <c:set var="actualCurrentDocument" value="currentDocument" /> par <c:set var="actualCurrentDocument" value="#{field}" />
mais l'objet #{publishActions.publishedDocument} est toujours false
Comment faire pour connaitre les valeurs des différents objets ? Encore merci
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}.
<c:set var="actualCurrentDocument" value="currentDocument" />
#{navigationContext.setCurrentDocument(actualCurrentDocument)}
#{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)
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...
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}
currentDocument
#{publishActions.publishedDocument}
false
#{publishActions.getPublishedDocuments()}
#{publishActions.getPublishedDocuments().size() > 0}
A vous de jouer maintenant, je pense que vous avez tout ce qu'il faut pour vous en sortir 🙂
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 ???...
j'ai enfin quelque chose qui fonctionne,
je me permets de revenir, car je n'arrive pas à supprimer l'affichage des meta données communes.