You are not logged in Log in Join
You are here: Home » Members » ngouzy's Home » Products » CPSZWiki » CPSZWiki-0.0.1 » README.txt

Log in
Name

Password

 

README.txt

A wiki engine for CPS 3 based on Zwiki.
CPSZWiki is released under the GNU General Public License.
Contact : Nicolas Gouzy <[email protected]>

CPS is released under the GNU General Public License.
See http://www.cps-project.org/

ZWiki is released under the GNU General Public License.
(c) 1999-2004 Simon Michael <[email protected]> for the zwiki community.
See http://zwiki.org

==============================================================================

Wiki pour CPS 3 basé sur ZWiki
CPSZWiki est sous licence GPL
Contact : Nicolas Gouzy <[email protected]>


Ce produit est une adaptation de ZWiki dans le but de le faire
fonctionner avec CPS 3.
Cette version est une version de travail de nombreux bugs existent.
J'ai essayé de faire en sorte de n'avoir ni à toucher au produit ZWiki (pas
complètement réussi, voir INSTALL.txt) ni aux produits de CPS et d'éviter les
recopies de codes.


Voici les problèmes que j'ai rencontrés dans cette adaptation et les solutions
que j'ai essayées d'y apporter :

- i18n
ZWiki utilise PlacelessTranslationService pour l'i18n.
CPS utilise Localizer/TranslationService pour l'i18n.
L'utilisation simultanée de PlacelessTranslationService et TranslationService
casse l'i18n de CPS, donc pour le moment CPSZWiki n'est pas i18n.

- Compatibilité avec CPS
ZWiki ne semble pas marcher "out of the box" dans CPS donc ma démarche a été
de créer une nouvelle classe CPSZWiki qui hérite à la fois de CPSBaseDocument
et de ZWikiPage ce qui entraîne pas mal de problèmes de recouvrement de noms
que j'ai tentés de solutionner au cas pas cas voir plus loin.

- self.id versus self.id()
CPSBaseDocument a besoin d'avoir un attribut id or ZWiki a besoin d'une
méthode id(). J'ai donc créé une classe hackId qui permet à la fois d'appeler
id comme un attribut et comme une méthode.
La méthode __setattr__() de CPSZWiki permet de se prévenir d'une redéfinition
de l'attribut id sans utiliser hackId.
La mise en place de cette "rustine" est faite dans la méthode __init__() de
CPSZWiki.

- edit()
ZWikiPage et CPSBaseDocument ont tous les deux une méthode edit(). De plus
le script content_create responsable de la création de nouveau objet dans CPS
appelle automatiquement la méthode edit() de l'objet qu'il crée. C'est
pourquoi j'ai tenté de redéfinir cette méthode au sein de CPSZWiki afin
qu'elle appelle la méthode edit() de ZWikiPage et/ou de CPSBaseDocument en
fonction des cas.
Je ne connais pas assez ZWiki et CPSBaseDocument pour être sûr que j'ai fait
ça correctement et que ça marche dans tous les cas.

- pageWithId()
J'ai redéfini au sein de CPSZWiki cette méthode car le pageWithId() originale
de ZWikiPage fait appelle à la méthode __getitem__() du folder qui contient
l'objet (ex: f[id]) or apparemment ça plante lorsque le folder en question est
un CPS Proxy Folder. J'ai donc recopié le code de cette méthode en changeant
tous les "f[id]" par getattr(f, id).

- __call__()
Vu l'ordre d'héritage choisi (CPSBaseDocument puis ZWikiPage) le __call__()
par défaut est celui de CPSBaseDocument, donc redéfinition pour que cela
soit celui de ZWikiPage.

- install.py
J'ai essayé de faire se script en me basant sur celui de ZWiki, de ceux de
différents produits CPS et la doc CPS trouvée ici ou là.
Sans aucun doute il doit y manquer des choses...

- ZPT
Pour le moment toutes les ZPT du produit original ont été recopiées en l'état
dans CPSZWiki.


Les problèmes restants :
- Je me suis concentré sur le fait de pouvoir instancier CPSZWiki
et ensuite l'éditer. Je ne me suis pas encore penché sur les autres
fonctionnalités.
- Pour le moment le titre du CPSZWiki à la création doit impérativement être
écrit en minuscule. Sinon dès la première édition un nouveau CPSZWiki est
généré à partir du premier. J'ai l'impression que deux logiques "s'affrontent"
dans ce cas. D'un côté CPS qui essaie de faire un "lower()" sur l'id de
l'objet et ZWiki qui essaie de faire un capitalize().



CPS est sous licence GPL.
See http://www.cps-project.org/

ZWiki est sous licence GPL
(c) 1999-2004 Simon Michael <[email protected]> for the zwiki community.
See http://zwiki.org