Bonjour,
Nous avons constaté un bug un peu bizarre dans jcms.
Explication : On a un type perso "document offre". Ce type contient titre, description et un file document.
Le but? Ce document offre est accessible à certains groupes de travail uniquement et lorsqu'ils sauvent ce document offre, le file document référencé est automatiquement classé dans une catégorie et il se voit assigné des droits d'accès spécifiques (en l'occurence pour etre visible par tout le monde, sinon par défaut les file document nécessitent de s'identifier)
Bref, j'ai fait un datacontroller sur le type DocumentOffre qui fait ceci :
if (oData instanceof DocumentOffre){
DocumentOffre obj = (DocumentOffre)oData;
FileDocument clone = obj.getDocument();
clone = (FileDocument) clone.clone();
clone.addCategory(channel.getCategory("n5006"));_
clone.addAuthorizedGroup(channel.getGroup("c54552"));_
clone.performUpdate(channel.getDefaultAdmin());
}
Problème : Lorsqu'on veut créer un nouveau contenu de type document offre, on rempli le titre, la description, puis on doit choisir ou uploader un file document. Pour ce faire, JCMS génère un bouton "parcourir" ainsi qu'une icone avec une flèche verte vers le haut "déposer un document".
Selon qu'on clique sur "parcourir" ou "déposer un document", le résultat n'est pas le même!
En effet, lorsqu'on clique sur "parcourir, les droits d'accès du document ne sont pas sauvé dans le store! Alors que si on clique sur "déposer un document" tout se passe comme attendu.
D'où vient cette différence?
Pour contourner le problème, on a du faire ceci dans le data controller :
if (oData instanceof DocumentOffre) {
DocumentOffre obj = (DocumentOffre)oData;
FileDocument clone = obj.getDocument();
clone = (FileDocument) clone.clone();
clone.addCategory(channel.getCategory("n5006"));_
TreeSet groups = new TreeSet();
groups.add(channel.getGroup("c54552"));_
clone.setAuthorizedGroupSet(groups);
clone.performUpdate(channel.getDefaultAdmin());
}
Merci de regarder,
Michel