Partage

[CMS] Wiking

PHP | MySQL | JS/FRAMEWORK | XHTML

Anonyme
13 octobre 2007 à 19:31:49

Bonjour,

Je suis DeadPixel, j'ai 15 ans et je suis étudiant dans le domaine des industries graphiques (PAO/impression). Je code des petits sites web par-ci par-là depuis quelques années, notemment grâce au SdZ.
Seulement voilà, il m'arrive d'utiliser des CMS lorsque j'ai un besoin particulier qui ne justifie pas de coder un site à partir de zéro (par ex. blog, forum, etc...). Dans ce cas-ci, j'étais à la recherche d'un outil qui me permette de créer un wiki, très complet et qui autorise des fonctions AJAX et Web 2.0. Seulement voilà, dans le domaine des "wikiwares", on est vite limités : soit on a MediaWiki, qui est de bonne facture mais ne me convient pas, soit des wikis "lights" (Dokuwiki, Wikini) qui sont beaucoup trop légers pour ce que je cherche.

Mon projet



Alors, que faire ? Rien ne me sied, donc comme dirait l'autre, on n'est jamais mieux servi que par soi-même. Mais ça serait bête de ma part de passer X mois à travailler dessus si je ne m'en sers que pour un seul site perso, qui n'a que quelques visiteurs... Hé bien, partageons donc ! Il s'agira donc d'un CMS qui sera distribué (sous licence libre bien évidemment), afin que tout le monde puisse profiter de ce wiki.

Il s'agirait donc d'un système nommé Wiking (le nom peut changer si vous avez de meilleures idées, parce que ce fin jeu de mot a été trouvé en 10 secondes) et qui fonctionnera grâce à PHP et MySQL.

Qu'est-ce qu'il a en plus ?



Ben ouais, ça sert à rien de réinventer la roue mais comme je l'ai déjà dit, ce wiki offrirait des améliorations plus "web 2.0" par rapport aux logiciels déjà disponibles. Entre autre :
  • Utilisation d'effets JS et d'AJAX (modérément, ça ne veut surtout pas dire que c'est des fonds clignotants à outrance)
  • Possibilité d'utiliser des tags pour les pages, et d'avoir un nuage de tags (remplacement des catégories)
  • Fonctions "sociales" de Web 2.0 (le principe même de wiki étant déjà très social, ne le prenez pas de travers) : cela implique gestion des rétroliens avec des blogs, interwikis un peu évolué, notation des articles, ...
  • Une mini-API pour permettre le partage des pages sur d'autres sites (si vous l'autorisez, donc les pages sont sous licence documentation libre)
  • Un vrai système de discussions, par auteur (donc pas une page modifiable par tous comme pour MW), éventuellement avec une gestion des chapitres ou des lignes
  • Un éditeur visuel (WYSIWYG) ou bien un visualisateur (comme sur le SdZ), en plus d'une saisie en source wiki
  • Et quelques autres idées éventuelles que vous pouvez proposer (ça fait déjà pas mal tout ça)


Cahier des charges



  • Basé uniquement sur PHP 5 et MySQL 4 ou 5 coté serveur
  • Pour le JS et l'AJAX, je pensait prendre le framework Mootools qui est léger et dispose de beaucoup de tutos ; mais j'hésite avec le Yahoo UI, plus complet mais avec peu de plugins dispos
    Edit : j'ai retenu le framework Mootools (oui j'ai ré-édité, au début j'avais opté pour le YUI)
  • Être valide XHTML et CSS
  • Le wiki doit rester totalement accessible malgré le Javascript : le code JS sera non intrusif et un équivalent non-JS des fonctions AJAX/déroulantes sera disponible pour les navigateurs sans Javascript ou pour les accès malvoyants. Doit donc être valide AAA aussi.
  • Multi-language et multi-thèmes.


Edit 14/10 @ 00:31 : voici une maquette du schmilblick, sans doute à modifier ; bon évidemment ça ne met pas en avant mes idées pour les effets et boîtes en JS, mais c'est déjà ça :

Image utilisateur


Ma demande



Pour réaliser ce projet, je suis à la recherche de :

[Codeurs PHP]
Si vous êtes intéressés pour développer ce wiki, c'est là la grosse partie : le codage de tout le wiki ! Vous devez :
Être très motivés : participer à l'élaboration d'un CMS libre ne se fait pas en dix jours et ce n'est pas un travail facile.</li> Être capable d'utiliser la POO (classes) : Wiking est conçu d'une façon totalement orientée objet ; le tout sera séparé en deux. Classes et méthodes d'un côté, qui seront utilisées par des fichiers de traitement de l'autre.</li> Vous devez savoir utiliser MySQL</li> Vous devez savoir vous plier à des conventions de codage et de documentation ; si vous n'avez jamais travaillé sur un projet collaboratif, sachez que vous devrez sans doute changer votre manière de coder.</li> </ul></span></span></span>

[Codeurs Javascript]
Si vous connaissez le language Javascript, ce poste est fait pour vous ! Il vous faut :Être capable de travailler avec un framework (Mootools ou YUI)</li> Savoir coder de façon non intrusive dans le code XHTML</li> Savoir créer des solutions de substitution accessibles aux personnes ne disposant pas de JS</li> </ul></span></span></span>

Informations supplémentaires



Le travail étant collaboratif, je compte me tourner vers la solution d'un serveur <acronym title="Subversion">SVN</acronym> - si vous êtes intéressés, vous aurez à l'utiliser, ce n'est pas grave si vous ne savez pas l'utiliser, c'est assez simple mais très pratique. Ce serveur serait disponible grâce à Sourceforge, qui devrait pouvoir nous accepter pour héberger notre travail.


Contact



Vous êtes intéressés ? Envoyez-moi un message privé (cliquez sur mon profil pour ça). Présentez-vous, dites-moi en quoi vous pouvez m'aider, si vous le pouvez montrez-moi sur quoi vous avez déjà travaillé, et je vous répondrai le plus rapidement possible ;)

Rémunération



Pas pour le moment : nous restons un projet libre, et comme nous ne faisons que débuter le projet, on ne peut rien gagner pour l'instant. Dans le futur, ça reste possible (donations, etc), mais ne vous engagez pas pour gagner de l'argent...


Projet Sourceforge



Edit 19/10/07 @ 21:35 : J'ai proposé le projet à Sourceforge, ne serais-ce que pour avoir un serveur SVN (même si c'est juste pour moi ^^ pour l'instant) ; il a été accepté, c'par ici pour la page projet (un site provisoire arrivera avec le temps).

Voilà, dites-moi aussi si le projet vous intéresse !
DeadPixel
Anonyme
19 octobre 2007 à 20:09:12

Up ? Passke si personne n'est intéressé au bout d'une semaine, tqvu j'annule tout.
19 octobre 2007 à 21:44:42

Je ne peux pas t'aider, mais c'est un bonne idée ^^

Bonne chance pour ton projet :D
Anonyme
26 octobre 2007 à 22:01:28

Up... toujours personne ?

Je vais profiter de ces vacances pour bien démarrer le projet, j'ai déjà commencé à structurer le tout et poser les premières lignes de code sur le SVN... mais bon si je le fais tout seul j'en ai pour un moment...

PS : j'ai fini par choisir YUI au lieu de Mootools pour le framework JS, il est plus complet et donne un code plus propre à mon goût.
27 octobre 2007 à 12:28:46

Très interressant comme projet, bonne chance pour la suite ;)
Anonyme
29 octobre 2007 à 18:30:36

Re-up... c'est bien gentil de voir que les gens sont intéressés par le projet, ça me motive, mais je me sens toujours seul :/
29 octobre 2007 à 19:08:59

Je t'aurais bien aidé mais moi et la POO ça fait 2 :p
Anonyme
29 octobre 2007 à 20:17:14

C'est pas bien compliqué une fois que t'as compris, des tutos existent ; je te conseille de lire la première partie de celui-là pour bien comprendre les bases et celui-là pour rentrer dans les détails. Tu devras sans doute t'exercer et les relire plusieurs fois ; c'est normal de ne pas bien comprendre au début, ce sont des notions assez compliquées à assimiler (moi aussi, j'ai mis longtemps avant de percuter le principe, et certains trucs particuliers me passent encore au-dessus de la tête).

Mais je reste dans une POO assez simple ; juste regrouper les fonctions dans des classes, et faire des instances, de manière à ce que toutes les fonctions et variables soient accessibles dans les plugins et le code sous la forme
  1. <?php
  2. // On crée une instance de classe
  3. $w = new wikingCore();
  4. $w->template->showHead(); // Pour les fonctions (= méthodes)
  5. echo $w->conf->lock_key; // Pour les variables (= attributs)
  6. ?>


Ca garde une logique dans la manière de coder, on voit mieux ce qu'on fait : comme son nom l'indique, on classe les fonctions et les variables au lieu d'en avoir douze mille avec des noms à rallonge qui sont étalées au pif (ça permet aussi une bonne organisation des fichiers) ; on sait précisément où se trouve telle méthode (ici, showHead se trouvera dans wikingTemplate.class.php, parce que ce fichier contient la classe wikingTemplate d'où notre méthode sort).

Mais j'imagine que t'essaie de lire du chinois :p donc essaye de lire les tutos (même si tu ne rejoins pas le projet, ça te sera toujours profitable pour ta connaissance personnelle du PHP).

Merci au moins de t'être proposé ;)
Anonyme
Anonyme
17 novembre 2007 à 12:25:05

Up après un mois... :/
17 novembre 2007 à 14:28:43

Je up ton projet qui m'a lair cool !!
Anonyme
9 décembre 2007 à 18:20:12

Re-Up... un projet à but novateur et totalement libre devrait pourtant avoir du succès chez les zéros, non ? :D
Anonyme
27 janvier 2008 à 17:49:02

Up après presque un mois et demi... le développement a progressé, et ça va s'accélérer : Dominus m'a contacté par MP et a été intégré comme développeur PHP - une fois qu'il s'y mettra à fond, ça ira plus vite que tout seul ; de plus je reçois mon MacBook dans deux semaines, donc je pourrais normalement pouvoir bosser à l'internat plutôt que seulement le week-end.

Un petit site en anglais a été fait sur notre page SourceForge : http://wikingcms.sourceforge.net

Avancement, cahier des charges sont montrés... les templates, le cache, l'ouverture et la gestion des fichiers XML a été faite, je vais attaquer le stockage via MySQL, l'affichage des révisions, la gestion des utilisateurs, les tags et l'éditeur HTML, et après on pourra attaquer le Javascript (plus tôt si un développeur JS nous rejoint).
(À ce propos j'ai retourné ma veste : on repasse de YUI à Mootools pour le framework).
J'ai pensé à une modification des pages encore plus simple qu'une boîte déroulante comme prévu : cliquer 2 ou 3 fois sur le texte pour l'éditer en live, comme ce truc mais en plus avancé (un peu de WYSIWYG, prévisu & co, faudra que je maquette ça).
J'ai aussi un truc de multi-upload super sympa en live (un peu comme pour Youtube, mais avec plusieurs fichiers) : idéal pour les images, vidéos, fichiers joints...

Donc hop, les affaires reprennent... qui qu'est intéressé ?
Anonyme
16 mars 2008 à 17:29:02

Nouvelles du front... le développement a pas mal avancé (pas encore sur le SVN), ça s'organise un peu mieux, j'ai mis sur le site des plans de la structure (c'est une structure <acronym title="Modèle Vue Contrôleur">MVC</acronym>, voir ici pour plus d'infos) et du système de fichiers. Si jamais y'en a qui sont intéressés...

Donc hey, on recrute toujours, appel à la population ;)
Anonyme
8 avril 2008 à 20:22:55

Bon, petit up et récapitulatif des derniers changements...

  • @pocalyps0 a rejoint l'équipe, nous voilà 3 codeurs PHP/MySQL (mais pour l'instant y'a que moi qui travaille... faut que je finisse le modèle de base, j'arrête pas de le changer :D )
  • Pour supporter plusieurs SGBD, j'ai choisi d'utiliser PDO. Ca simplifiera le codage, mais ça signifie qu'il faudra au minimum PHP 5.1 (ou PHP 5.0.x mais il faudra pouvoir l'activer manuellement). Ca réduit la compatibilité immédiate mais c'est mieux pour l'avenir ; PDO sera mis en avant pour gérer ses BDD dans PHP 6, alors autant se préparer. Merci à Draeli pour son tuto qui m'a fait découvrir PDO ;)
  • Le système des fichiers a encore été refait, d'une part pour le simplifier et d'autre part pour mieux réfléter le système MVC. La racine sera ainsi composée d'un fichier index.php, d'un dossier core qui regroupera tout le code général et d'un dossier data qui contient les données utilisateur (configuration, thèmes, plugins, cache, enregistrement des pages)...


Voilà, encore pas mal de bugs à corriger, des fonctions à implémenter et on aura la première base de développement. Je m'occupe de le faire sinon c'est ingérable, mais une fois que ce sera fait je le mettrais sur le SVN et d'autres personnes pourront venir développer avec moi, ce qui accélérera grandement le développement :)

[CMS] Wiking

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
  • Editeur
  • Markdown