Forum CMS Made Simple FR

Version complète : Nouveau module pour faire un site immo / petites annonces / ...
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Comme annoncé sur une autre discussion, je suis en train de monter mon Nième module que j'oriente cette fois ci pour répondre aux besoins de sites type petite annonce, vente/location immobilière, recette cuisine et tout.

Pour les besoins de mon actuelle application j'ai tranché dans certains choix possible :

* J'ai pris la décision d'orienter mon module uniquement pour les développeurs et non pour l'utilisateur final, ce choix qui pourra m'être reproché a surtout l'énorme avantage d'enlever un point d'emmerde conséquent du point de vue de la gestion des entités, de leur paramétrage et la façon dont on gère le "tiens et si j'ajoutais une propriété dans mon entité juste pour rire".

* Je ne donnerais pas le module, je compte le revendre (combien? sans doute entre trente et une centaine d'euros selon la déclinaison) afin de rentrer dans mes frais qui s'élève en plusieurs mois de développement (ceci expliquant au passage mon mutisme sur cmsms.fr)

* Je n'ai pas pour vocation de former du développeur débutant avec ce module, vous avez intérêt à vous accrocher parce que j'ai sortie l'artillerie lourde de la POO : full php 5.3, héritage, interface, ... tout y passe




J'ai réussit à ce niveau de réalisation à produire un module qui permettrait de faire des sites immo/annonces dont le fonctionnement ne serait restreint d'aucune manière, configurable en moins d'un quart d'heure, déjà fonctionnel par défaut, customisable dans tous les sens, .... et je suis loin d'avoir terminer mon chantier.

Allez pour prouver que je suis sérieux quand je dis que je veux faire un module monstrueux, voici quelques fonctionnalités déjà testées avec succès par des utilisateurs :

Zéro ligne de code pour

définir votre base de donnée (auto-générés)
définir les formulaires de saisie (auto-générés)
définir un rendu sur le front-office (auto-générés)
définir un moteur de recherche multi-critère sur le front-office (auto-générés)
définir un lien dans un texte d'une page amenant vers la fiche d'une entité (auto-générés)

Extension et customisation possible (et encouragé!) :

de l'affichage par défaut des formulaires de saisie
de l'affichage par défaut des résultats sur le front-office
de l'affichage par défaut du moteur de recherche sur le front-office

Paramétrage centralisé et sécurisé :

pour définir la base de donnée
pour définir les contrôles de validation des formulaires
pour définir les moteurs de recherches
pour définir le rendu graphique des formulaires, des fiches en front-office, des moteurs de recherche, …
permet d'étendre le comportement par défaut du module
empêche une fois définit d'être modifié par le client final depuis le back-office

Gestion Poussée des principales opérations de base de donnée

Création / Suppression de table dans le schéma de CmsMadeSimple
Gestion des PK (primary key = clé primaire)
Gestion des FK (foreign key = clé étrangère)
Gestion des AK (associate key = clé associative pour les tables associatives)
Requêtes classiques : Select Update Delete
Requête par critères : =, >=, BETWEEN, AFTER, …
Requête oriente Objet (équivalent simpliste de l'ORM) : SELECT * FROM societe WHERE societe.contact.typecontact.libelle = 'Directeur Technique'

Alors vous allez me dire : mais d'un côté tu parles d'aucune ligne de code, et de l'autre on créé/supp des tables en base ??? comment ca se passe.

Ca se passe dans les fichiers de conf, exemple :

[Image: %5BClient%5D+1-%3E*%5BCommande%5D*]

donnera :

Code :
<?php
    class Client extends Entity
    {
        public function __construct()
        {
            parent::__construct('client');
    
            $this->add(new Field('client_id', CAST::$INTEGER,null, null, KEY::$PK    , null    , new HTML_FIELD_IDENTIFIANT()    , NULLABLE::$FALSE));
            $this->add(new Field('nom'    , CAST::$STRING    ,  80, null, null    , null    , new HTML_FIELD_TEXT()        , NULLABLE::$FALSE));
            $this->add(new Field('prenom'    , CAST::$STRING    ,  80, null, null    , null    , new HTML_FIELD_TEXT()        , NULLABLE::$TRUE));
        }
    }
    ?>


Code :
<?php
    class Commande extends Entity
    {
        public function __construct()
        {
            parent::__construct('commande');
    
            $this->add(new Field('commande_id'    , CAST::$INTEGER,null, null, KEY::$PK    , null        , new HTML_FIELD_IDENTIFIANT()    , NULLABLE::$FALSE));
            $this->add(new Field('numero'        , CAST::$INTEGER,null, null, null    , null        , new HTML_FIELD_TEXT()        , NULLABLE::$FALSE));
            $this->add(new Field('client_id'    , CAST::$INTEGER,null, null, KEY::$FK    , 'Client.client_id', new HTML_FIELD_SELECT()    , NULLABLE::$FALSE));
    
        }
    }
    ?>


et c'est tout ! avec juste ces deux fichiers, votre site internet gère les formulaires du back-office et l'exploitation des données en front-office sans coder une seule ligne supplémentaire

et quand je parle d’étendre les fonctionnalités du module c'est que tout le comportement de base du module peut être modifié en quelques lignes de code.

un exemple de code pour récupérer tous les clients ayant pour prénom "Jules"

Code :
$exemple = new Exemple();
$exemple->addCritere('prenom', TypeCritere::$EQ, array('Jules'));
$entitys = Core::selectByExemple(new Client(), $exemple);

un autre exemple pour récupérer toutes les commandes des clients ayant pour prénom "Jules"

Code :
$entitys = Core::makeDeepSearch(null, 'commande.client_id.prenom', array('Jules'));

Le travail n'est pas finit, encore beaucoup de chose à préparer pour avoir une première version beta. Patience donc.

En attendant je suis en train de monter un site de démonstration du module que l'on pourra visiter front/back-office. + d'info sur le sujet rapidement.

Voilà donc ce message sert surtout d'annonce afin de recevoir les premiers avis, si le sujet vous intéresse se sera avec plaisir que j’échangerais avec vous en privé ou ci dessous. Pareil si vous avez des questions, navré de ne pas rentrer trop dans les détails, un wiki dédié au projet est en écriture mais pas encore finit donc inutile de donner l'url pour l'instant Smile
Salut Bess,
donc si je comprends bien, c'est un générateur de module type annonce pour développeur?
Je suppose aussi que le rendu front est basé sur smarty?
Est-il compatible 110 ?

En tout cas, je suivrai avec intérêt et curiosité l'évolution.

Vu les demandes ici, ça risque d'intéresser d'autres personnes.
Salut Jissey

mon module est un hybride entre Skeleton et une pure API. Skeleton car il sera fournit sous forme de POC déjà fonctionnel que le développeur viendra modifier pour faire ce qu'il en veut. API par ce que je laisse énormément de possibilité d'utilisation de mes propres noyaux, ce qui permettra aux développeurs d'ajouter ses propres besoins sur ma base.

Le rendu back/front office est sous templates, donc full-smarty, c'est évidement ce qui me permet de laisser le développeur modifier le comportement d'affichage par défaut du module.

Note qu'une gestion back-office de ces templates est prévue, c'est l'une des seules conf qui sera accessible a l'utilisateur final car elle ne remet pas en cause les fondations du module, contrairement à la modification des entités.

Il n'est pas, mais il sera évidement compatible 1.10.x J'en ai même profité pour proposer certaines nouveautés aux développeurs de cmsms : http://forum.cmsmadesimple.org/viewtopic...=6&t=55180

Smile
J'ai utilisé à plusieurs reprises CTLModule Maker, plus orienté utilisateur final et donc moins pratique à customiser au final pour un dev, mais bien pratique quand même.
comme tu le dis : CTLModule Maker c'est sympa pour faire 3 tables la moitié d'une.

là j'ai pour objectif de gérer ce genre de schéma en BDD
[Image: %5BPersonne%7Bbg:green%7D%5D%5D%5E-%5BCl...ommande%5D]

et je doute trouver un module clickodrome fasse seul ce genre de chose : Héritage / Clé étrangère / Table associative /...

actuellement seule l'héritage n'est pas encore codé sur le mien Smile
je ne compare pas les modules (il manque des éléments Wink ), je dis juste qu'il existe un générateur pour faire des modules rapidement (clickodrôme Tongue ) sans grande prétention (pas de e-commerce).

Le tien sera certainement bien plus puissant (je n'en doute pas) car orienté (objet) développeur.

Je répète donc que je suivrai son évolution avec attention.
C'est plutôt une bonne nouvelle l'annonce d'un tel module Smile
no soucis, je n'avais pas mal interprété ton message précédent Wink
J'ai le plaisir de vous présenter comme promis le site qui référencera mon nouveau module : http://mmmfs.furie.be

Je tiens à m'excuser pour le délai entre mes différents messages, j'ai moins de temps libre que je ne le souhaiterais Big Grin

Cette toute première version est une présentation très courte de ce que peux proposer le module.

Afin de bien comprendre la puissance de l'API, je vous met à disposition deux choses :
* Le zip contenant la configuration du schéma des petites annonces : version 1.0.0
* Un accès en full droit sur le module sur simple demande, envoyez moi simplement un email avec votre pseudo forum à contact at furie point be.

(le wiki n'est toujours pas assez complet pour vous en donner l'url)

Notez que beaucoup de chose sont encore à faire sur mon POC pour le rendre utilisable "comme si" nous étions en environnement de production : gérer les dates d'annonces, mettre plus d'annonces, gérer les photos, ... tout cela sera rapidement implémenté ces prochaines semaines Smile

J'attends beaucoup des retours d'expériences dans ce genre de développement, n'hésitez donc surtout pas à me donner votre avis sur le tout (site, poc, noyau mmmfs, concept, ...). J'installerais rapidement un moyen centralisé pour récupérer les feedback, en attendant, vous pouvez m'envoyer des emails, je tacherais de répondre à chacun d'entre vous Smile

Merci à vous, bonne journée et bon test Smile
Sur le papier, enfin sur l'écran Big Grin ça a l'air d'être du lourd ! En plus tu réponds à un certrain besoin, les agences immobilières ça pullule, un peu partout... entre celles qui se créent et celles qui demandent une refonte de leur site, il y a de quoi faire.

Un export des annonces en xml ou rss est-il prévu, à usage des comparateurs d'annonces par exemple ?

Bon courage et bravo Smile
salut spamor

Citation :En plus tu réponds à un certrain besoin, les agences immobilières [...]

oui, j'ai clairement accès la démo de mon framework sur un besoin exprimé depuis des années sur cmsms mais que personne n'a réussit à répondre complètement..

Alors cela dit je n'ai pas la prétention d'y parvenir seul mais je penses qu'on peut partir de ce que j'ai fait pour arriver à combler ce genre de besoins : gestion de produit/annonce/... sans vente qui ne peuvent pas/mal être géré par les modules tels que products/CTLModule Maker du fait de la complexité du métier.


Citation :Un export des annonces en xml ou rss est-il prévu, à usage des comparateurs d'annonces par exemple ?

Rien n'est définit, je développe au fur et à mesure de mes envies et des besoins actuels de mon clients / du poc donc dans l'absolue je te répondrais : pourquoi pas :lol:



Sinon c'est avec beaucoup de douleur (temps libre nul) mais également avec beaucoup de plaisir que j'ai finit ce midi d'installer la première mise à jour de mon POC.

Ceux et celles qui souhaitent visiter le backoffice n'ont simplement qu'un email à m'envoyer à contact [at] furie point be en précisant leur pseudo du forum, je leur laisserais les accès sur le module qu'ils puissent voir ce que ça donne.

version 1.0.1 :

Citation : Mise à jour vers le framework mmmfs 1.0.3
Gestion des traces selon le même paramétrage que mmmfs
Ajout de 3 champs photos1-2-3 pour ajouter les photos aux petites annonces. (uniquement gérée dans le Back-Office pour l'instant)
Intégration de la librairie uploadify pour l'upload des fichiers
Diverses corrections de bugs
Intégration de 100 petites annonces auto-générées avec images inclues. (encore plus la prochaine fois)
Les templates personnalisés sont mieux documentés
La langue de la page est passée dans les templates personnalisés
Nouvelle action : action ='liste', renvois une liste complète de la recherche.
Nouveau paramètre pour les action liste & link : value='' => équivaut à un select *
Gestion des dates de création/modification des annonces.
Nouvelle présentation dans le Back-Office des formulaires
Suppression de code non générique dans le projet (utilisation de la chaine "Poc" & co)

La prochaine version utilisera les vignettes en front-office et apportera d'autres lots de fonctionnalités
et évidement c'est une fois installé que j’aperçois d'erreurs que je n'avais pas en local... :mad: (et merci à Jissey pour son retour rapide sur les vignettes)

la recherche frontale déconne et l'ajout de miniature en backoffice déconne aussi (un soucis de droit je penses)

prochaine mise à jour corrective dans les prochaines 24H.
et je m'arrêterais pour aujourd'hui hein...

Nouvelle version du poc 1.0.2 :

Citation : Mise à jour du framework mmmfs en version 1.0.5
Ajout des fonctions de filtrage dans le backoffice pour certains champs
Ajout de l'accès à la liste des villes dans le backoffice
Correction du moteur de recherche (critère par code postal était ko)
Ajout de la gestion des images dans le front-office (sur liste et fiche)
Ajout d'une lightbox pour les images de la fiche du front-office
Correction de l'upload des images dans le backoffice (c'était un pb de droit Unix)
Factorisation du code commun (75%) des actions Liste + toSearch + Link
Utilisation du super module CgSmartImage pour gérer les miniatures à la volée sur le FrontOffice
Nettoyage dans le code de nouvelles occurrences du terme 'poc'

Normalement les bugs sont corrigés avec cette version.

+ une page FAQ pour répondre plus rapidement à des questions que l'on peut se poser.

J'ai également ajouté le moyen d'échanger sur le sujet sans spammer ici. ça se passe sur le site en bas à droite. Que ce soit en terme d'idée ou de feedback du site

Spamor ça serait un plaisir d'y retrouver tes idées Wink
Bien noté Wink
Avant de partir en vacances, j'ai pris le temps de terminer un gros point : la documentation du code.

http://mmmfs.furie.be/apidoc/

chose faite donc. Pour ceux qui cherchaient à savoir comment était composé le framework MmmFS, voici déjà un bon avant gout.

Encore une fois je ne suis qu'en version Alpha, donc tout peut changer d'un moment à l'autre, mais ça avance plutôt bien Smile

A ce propos je tiens à remercier très chaleureusement Tito, Keeper, Jissey et Spamor qui ont proposé de très nombreuses fonctionnalité pour le Framework et pour le POC : http://mmmfs.uservoice.com/forums/126625-general

Bien que je n'ai rien pu faire ces derniers jours, j'ai bien l'intension de coder une bonne partie des idées proposées tellement elles sont prometteuses.

En vrac et dans un ordre plus que inexact :

* Pretty Url pour les annonces
* Pagination des résultats de recherche
* Export rss / xml pour google

Bonnes vacances à tous, on se revois rapidement Wink
prochaine version : n'apportera que le support à cmsmadesimple 1.10 ET pour le noyau ET pour le poc.

encore un peu de patience pour les fonctionnalités annoncées
je clôture ici, la vente en version stable d'un gestionnaire de petite annonce est effectif sur ce topic