You are not logged in linkOpaque.gif Log in linkOpaque.gif Join
You are here: Home » Members » kikan's Home » Afficher toutes les pages d'un dossier à la queue leuleu

Une communauté active ?
Trouvez vous facilement les réponses à vos questions sur ZOPE, PLONE ou CPS (ou autres interfaces)
oui trés facilement
ca va
moyennement il faut pas mal chercher
non c'est assez dur
quasiment jamais

[ Results | Polls ]
Votes: 437
About
Created by
kikan
Document Post dans le forum
Last modified
14/02/05
State
published

Afficher toutes les pages d'un dossier à la queue leuleu


Pour participer à cette discussion, cliquez ici pour vous inscrire.

Auteur Discussion
kikan
Afficher toutes les pages d'un dossier à la queue leuleu
Jolie expression que voilà... Je cherche à créer une vue par défaut (un index_html pour l'instant) pour un dossier, qui affiche l'un derrière l'autre les contenus des Documents du dossier.
Exemple : dans un dossier, je publie trois documents : titi, toto, et tutu.
Je voudrais créer une page index_html (une ZPT), qui affiche le contenu (titre + description + contenu) de chacun de ces documents l'un après l'autre, dans la même page.

Je pense qu'il faut faire un tal:repeat, j'ai essayé, mais je ne parviens qu'à exploiter les métadata (titre, description...). Je dois donc manipuler des brains, et il faudrait que j'accède à l'objet lui-même, mais j'ai oublié comment faire...
Posté le 14/02/2005 @ 17:33

amine
getObject()?

exemple python:
for items in container.catalog():
        objet =items.getObject()
        print objet.getId()
return printed

Posté le 14/02/2005 @ 17:43

kikan
getObject : ça ne marche pas

J'essaie effectivement GetObject, mais sans succès (d'ailleurs, container.catalog() ne rend rien de bien chez moi).

J'ai fait ça :

cat = container.objectValues()

for items in cat:

objet =items.getObject()

print objet.getId()

return printed

Mais getObject() ne passe pas...

Error Type: AttributeError Error Value: getObject

un autre indice ?

Posté le 14/02/2005 @ 18:45

amine
essaye ça...

Document sans nom

si tu utilises un zcatalog:

for items in container.catalog():
      objet = items.getObject()
      print "<hr> l'objet dont le id est %s contient les proprietes suivantes:<br>" %(objet.getId() )
      for propriete in objet.propertyIds():
                print propriete + " : " + str(objet.getProperty(propriete) ) + "<br>"
return printed

sinon :
for objet in container.objectValues():

      print "<hr> l'objet dont le id est %s contient les proprietes suivantes:<br>" %(objet.getId() )
      for propriete in objet.propertyIds():
                print propriete + " : " + str(objet.getProperty(propriete) ) + "<br>"
return printed



helas, je n'ai pas eu le temps de tester, j'ai peut etre laissé trainer un chtit bug....

Posté le 14/02/2005 @ 19:38

zyons
re

Je ne suis pas certain que faire appel au catalogue pour lister le contenu d'un dossier soit la meilleure solution en terme de performances.

De plus, utiliser "objectValues" présente le risque de se prendre un "insufficient privileges" dès qu'un objet sera privé dans ce dossier.

Perso j'essayerais plutot ça dans un python script :

checkPermission = context.portal_membership.checkPermission

objects = [obj for obj in mycontainer.getFolderListingFolderContents(suppressHiddenFiles=1) if checkPermission(View, obj)]

return objects

Ensuite il suffit d'appeler ce script depuis la page template :

tal:define="results python:here.mypythonscript()"

Puis de faire une boucle sur chacun de ces objets pour afficher les champs :

{tal:loop tal:repeat="item results"}

{span tal:replace="item/fieldname" /}

{/tal:loop}

Voilà. Il se peu que le "checkPermission" soit inutilé en fait, à tester. Il sera toujours possible de trier la liste des objets dans le script python en rajoutant une ligne.

Posté le 15/02/2005 @ 08:12

kikan
Merci !

Merci pour tous vos conseils, ça m'a bien mis sur le chemin.

J'ai écrit ça pour l'instant, dans une ZPT :

{span tal:define="items python:container.objectValues(CHUReimsSiteDocument)"}

{span tal:repeat="item items"}

{span tal:replace="item/Title" /}

{span tal:content="structure item/text" /}

{/span}

{/span}

Et le plus difficile était de trouver cette ligne

{span tal:content="structure item/text" /}

qui permet d'afficher le contenu de mes documents.

Cependant, les accents ne s'affichent pas bien (le mot "modérateurs" s'affiche "modérateurs").

J'ai du oublier quelque chose... et je ne sais pas si je peux convertir l'unicode en cours de route dans une ZPT.

Posté le 15/02/2005 @ 14:00

kikan
Présentation de mes posts...

Désolé pour la présentation pourrie de mes posts... Où trouver de quoi publier mieux ? :-)

Posté le 15/02/2005 @ 14:01

kikan
Coercing to unicode

J'ai trouvé comment convertir mon texte unicode en texte iso-8859-1 depuis la ZPT

{span tal:content="structure python:unicode(str(item.text), utf-8).encode(iso-8859-1)" /}

Remarque : si on ne transforme pas item.text avec str(item.text), on a l'erreur suivante : coercing to Unicode

Posté le 15/02/2005 @ 17:51

Recherche
Log in
Syndication
« August 2008 »
Su Mo Tu We Th Fr Sa
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31