CMS Automne
http://www.automne-cms.org/forum/

Les objets polymod
http://www.automne-cms.org/forum/viewtopic.php?f=2&t=563
Page 1 sur 1

Auteur:  Chrys [ Mer Août 12, 2009 9:59 am ]
Sujet du message:  Les objets polymod

Contexte :
J'ai créé un module qui contient des objets "Article" et des objets "Commentaire". Le premier est une ressource primaire soumis à validation, le second n'est pas soumis à validation. Un Article peut avoir plusieurs Commentaires.

Quelques questions :
- Lors d'une recherche (en utilisant le tag <atm-search ... />) est-il possible de fournir un paramètre me permettant d'obtenir à la fois les articles validés et les articles en cours de validation ? Si oui, puis-je connaitre l'état dans lequel se trouve l'article ?
- Lorsque j'ajoute un commentaire (depuis le site grâce à l'utilisation du tag <atm-form ... /> et à la mise en place d'un traitement ad'hoc), logiquement, mon objet Article se met dans l'état "Attente de validation". Puis-je valider cette ressource après l'ajout du commentaire ?
- Est-il possible de valider l'ajout d'un commentaire mais pas la modification de contenu de l'article ?

Auteur:  Sébastien [ Mer Août 12, 2009 10:09 am ]
Sujet du message:  Re: Les objets polymod

Chrys a écrit:
- Lors d'une recherche (en utilisant le tag <atm-search ... />) est-il possible de fournir un paramètre me permettant d'obtenir à la fois les articles validés et les articles en cours de validation ?

Oui, il faut faire une recherche dans le domaine "edited" (non validé) :
Code :
<atm-search what="objet" name="searchName" public="false">...</atm-search>

Chrys a écrit:
Si oui, puis-je connaitre l'état dans lequel se trouve l'article ?

Oui mais en PHP via le code suivant (ou $object est l'article dont tu veux connaitre l'état) :
Code :
if ($object->getStatus()->getEditions() & RESOURCE_EDITION_CONTENT) {
//l'article est en attente de validation
}

Chrys a écrit:
- Lorsque j'ajoute un commentaire (depuis le site grâce à l'utilisation du tag <atm-form ... /> et à la mise en place d'un traitement ad'hoc), logiquement, mon objet Article se met dans l'état "Attente de validation". Puis-je valider cette ressource après l'ajout du commentaire ?

Oui via le code suivant (ou $object est l'article en attente de validation et $codename le codename du module de l'article) :
Code :
$validation = new CMS_resourceValidation($codename, RESOURCE_EDITION_CONTENT, $object);
$mod = CMS_modulesCatalog::getByCodename($codename);
$mod->processValidation($validation, VALIDATION_OPTION_ACCEPT);

Chrys a écrit:
- Est-il possible de valider l'ajout d'un commentaire mais pas la modification de contenu de l'article ?

Non ça n'est pas possible car un commentaire fait parti du contenu d'un article et ajouter/supprimer un commentaire est une modification du contenu de l'article.

Auteur:  Sébastien [ Mer Août 12, 2009 10:17 am ]
Sujet du message:  Re: Les objets polymod

Juste deux petites explications concernant ces codes :
Code :
if ($object->getStatus()->getEditions() & RESOURCE_EDITION_CONTENT) {
//l'article est en attente de validation
}

L'état de validation d'un élément est une information codée en binaire, l'opérateur de vérification du statut est donc un opérateur sur les bits (http://www.php.net/manual/fr/language.operators.bitwise.php). Ici le & simple (ce n'est donc pas une erreur).

Code :
$validation = new CMS_resourceValidation($codename, RESOURCE_EDITION_CONTENT, $object);
$mod = CMS_modulesCatalog::getByCodename($codename);
$mod->processValidation($validation, VALIDATION_OPTION_ACCEPT);


Ici on déclare un objet de validation (resourceValidation) qui prendra en charge les informations relatives à la validation de l'objet à valider. On passe ensuite cet objet de validation au module responsable de l'objet à valider pour qu'il pilote la validation en fonction des caractéristiques de l'objet à valider. C'est un processus un peu tordu, je l'accorde :P

Auteur:  Chrys [ Mer Août 12, 2009 10:40 am ]
Sujet du message:  Re: Les objets polymod

Questions subsidiaires :
Dans le code
Code :
<atm-search what="objet" name="searchName" public="false">...</atm-search>

Les objets supprimé en attente de validation (validation de la suppression) sont-ils remontés ?

Dans ce code
Code :
if ($object->getStatus()->getEditions() & RESOURCE_EDITION_CONTENT) {
//l'article est en attente de validation
}

Est-ce que je teste également les objets supprimés ?
Puis savoir si c'est un objet modifié en attente de validation ou un objet supprimé en attente de validation ?

Merci pour ces premiers éléments très clairs.

Auteur:  Sébastien [ Mer Août 12, 2009 11:00 am ]
Sujet du message:  Re: Les objets polymod

Chrys a écrit:
Dans le code
Code :
<atm-search what="objet" name="searchName" public="false">...</atm-search>

Les objets supprimé en attente de validation (validation de la suppression) sont-ils remontés ?

Oui puisque tant que la suppression n'est pas validée, l'objet existe toujours. Tu obtiens d'ailleurs les objets en attente de suppression même sans le public="false" à partir du moment ou ils ont été validés une fois. Par contre avec le public="false" tu obtiens aussi les éléments dont les dates de publications sont invalides actuellement.

Chrys a écrit:
Dans ce code
Code :
if ($object->getStatus()->getEditions() & RESOURCE_EDITION_CONTENT) {
//l'article est en attente de validation
}

Est-ce que je teste également les objets supprimés ?

Non, là tu ne teste que la modification de contenu en attente de validation.

Chrys a écrit:
Puis savoir si c'est un objet modifié en attente de validation ou un objet supprimé en attente de validation ?

Voila le code pour savoir si un objet est en attente de suppression :
Code :
if ($object->getStatus()->getProposedFor() == RESOURCE_LOCATION_DELETED) {
//élément en attente du suppression
}


D'une manière générale, le nombre de cas de figure est aussi important que le nombre d'images se trouvant dans /automne/admin/img/status (important donc ...).

Si tu veux pouvoir traiter différents cas de figure, je te conseille de jeter un oeil aux fonctions _getStatusLabel et getHTML de la classe CMS_resourceStatus (automne/classes/workflow). Ce sont ces fonctions qui génèrent l'icône de statut (ainsi que le texte alternatif sur ces icônes) présente pour chaque ressource Automne. ça te permettra de voir les tests effectués dans chacun des cas existant.

Seb

Page 1 sur 1 Le fuseau horaire est UTC [Heure d’été]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/