Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Nouveau module pour faire un site immo / petites annonces / ...
#1

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
Sujet fermé


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)