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.

0 votes

11 answers

2454 views

ANSWER



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 ???…

0 votes



j'ai enfin quelque chose qui fonctionne, <c:set var="actualCurrentDocument" value="#{currentDocument}" />

{navigationContext.setCurrentDocument(field)}

<nxu:repeat value="#{availablePublicationTrees}" var="tree"

             styleClass=&quot;dataOutput&quot;&gt;

<nxu:set var="publishedDocuments"

                value=&quot;#{publishActions.getPublishedDocumentsFor(tree.name)}&quot; cache=&quot;false&quot;&gt;

Un grand grand merci pour votre aide !

09/05/2013


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 :)

0 votes



je me permets de revenir, car je n'arrive pas à supprimer l'affichage des meta données communes. Pourriez vous m'en dire plus ? merci
10/01/2013


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…

0 votes



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)

0 votes



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

0 votes



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 ?

0 votes



Oui pardon c'est bien #{navigationContext.setCurrentDocument(field)} qu'il faut mettre, avec "data" dans le <field> côté config XML.
09/04/2013

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)
09/04/2013

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 ?

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.

09/04/2013


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

0 votes



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…

0 votes



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.

0 votes



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.

0 votes



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.

0 votes