Les projets en cours sont les suivants :
Le site bulle-immobiliere.org est conçu à partir du gestionnaire de contenu Drupal.
Drupal permet de gérer du contenu sur un mode collaboratif.
Des tutoriels facilitent la prise en main du gestionnaire de contenu :
http://www.bulle-immobiliere.org/prise_en_main_cms
To-do List :
Développement :
* Corriger le bug et mettre le site à l'heure.
* Installer un MOD permettant de noter les posts.
* Installer un MOD permettant d'ignorer certains membres (choix personnel de chaque internaute).
* Intégrer PhpBB à Drupal (module existant)
L'association Bulle Immobilière développe un site internet libre de petites annonces immobilières. Ce site n'est pas opérationnel, mais le sera prochainement. Nous comptons sur le soutien des communautés libres pour aider à la libération du marché de l'immobilier.
Le code source est stocké sur un serveur SVN.
svn --username foo --password bar co http://devel.bulle-immobiliere.org/projets /mon/repertoire/local
Checkout anonyme :svn co http://devel.bulle-immobiliere.org/projets
Interface web : http://devel.bulle-immobiliere.org/websvn
Le développement se fera sous Drupal 6.3, avec le langage PHP. Compte-tenu du fait que le site comporte des fonctionnalités de site personnel (url personnalisée pour chaque annonce, mini blog pour chaque annonce, fonctionnalités web 2.0, cartographie), nous allons utiliser le gestionnaire de contenu Drupal. Nous pourrons ainsi développer une grande partie du site sans écrire une seule ligne de code.
Les fonctionnalités additionnelles seront développées sous forme de modules personnalisés, en utilisant l'API de Drupal, ainsi que les API de CCK et Views.
Les principaux fils de discussion :
Le projet est coordonné par Jean-Michel Pouré, qui a pris l'initiative du projet et assure la majorité du développement. Tout développeur Drupal de talent pourra devenir leader s'il le souhaite.
Pour décrire le projet en quelques mots :
Notre service est novateur pour trois raisons :
Une description plus détaillée :
Pour rejoindre l'équipe de développement :
Participants, par ordre alphabétique :
SSH = APACHE/SSH/SFTP/SVN = espace personnel Apache + PHP5 + accès SSH par clé RSA/DSA + accès SVN
PG = accès PostgreSQL
DRUPAL = accès CMS
Leader projet : jmpoure
Le projet pourra avoir plusieurs leaders, dès que certains participants montrent une aptitude particulière.
Un site de petites annonces doit atteindre rapidement une masse critiques d'annonces. Pour arriver rapidement à une masse critique, nous ciblons tous les besoins courants :
La gestion du développement est celle de tout logiciel libre :
Les étapes à respecter :
Logiciels open-source pour la gestion d'annonces immobilières, fonctionnant sous PHP :
Modules Drupal :
Modules Joomla :
Sites web 2.0 offrant des fonctionnalités intéressantes, méritant d'être étudiées :
En dehors de l'immobilier, des concepts très proches :
Merci de nous signaler tout site internet intéressant, avec des fonctionnalités Web 2.0.
Les grandes lignes font l'objet d'une discussion sur le forum.
Nous utilisons un framework simple, constitué de :
Les librairies et applications sont écrites en PHP :
Nous développerons un thème spécifique, adapté à un site de petites annonces.
Les modules de Drupal nécessaires :
Ce module permettra de saisir les informations personnelle de chaque vendeur.
Champs :
* civilite
* nom
* prenom
* adresse1 domicile
* adresse2 domicile
* code postal
* ville
* pays
* tel_fixe_domicile
* tel_fixe_bureau
* tel_mobile
* email
Langes parlées : Français, anglais, etc ...
Informations autorisant la publication d'informations sur le Net :
* publier_nom (booléen)
* publier_email (booléen)
* publier_tel_fixe_domicile (booléen)
* publier_tel_fixe_bureau (booléen)
Le vendeur doit nécessaire publier un email ou un téléphone, de sorte qu'on puisse le contacter directement sans passer par un serveur central. Un internaute découvrant l'annonce sur un flux RSS doit pouvoir réagir immédiatement, sans intermédiaire.
Outils :
CCK, Views
On doit considérer l'outil comme un site de petites annonces, mais aussi comme un central d'agrégation de flux et de republication de ces flux. Comme le fait Drupal avec les Flux RSS. C'est la clé du succès, car cette fonctionnalité doit permettre de gérer une base unique pour plusieurs pays et/ou régions.
Drupal comprend un système de blog, couplé à une base de données.
Pour développer la solution, on utilisera un mélange des modules CCK, Blog, Googlemaps, etc...
Si la solution est trop lourde, on codera en dur dans un module CCK spécifique.
Le site personnel comprend plusieurs pages prédéfinies :
La page d'accueil présente les caractéristiques principales du bien :
Des pages permettent de découvrir le bien détail.
La page visite du bien liste les différentes pièces de l'habitation.
On distingue les pièces suivantes:
Pour chaque pièces, on renseigne :
et l'on upload une ou plusieurs photos et vidéos.
On obtient une page de blog avec une sorte de visite guidée.
La page terrain permet de se faire une image du bien en situation (une photo en recul) et de visiter le terrain. On indique la surface du terrain, de la maison au sol. Ce sont principalement du texte et des photos.
Sur cette page, on rassemble les informations suivantes :
Cette page décrit la situation du quartier, la présence d'écoles, les installations collectives, les transports en commun, etc ... On pourra éventuellement utiliser un projet collaboratif, mais on peut également laisser le vendeur saisir des informations concernant son quartier.
Exemple : si à proximité d'un parc, saisir le parc sur la carte et publier une photo.
La législation du Royaume-Uni impose à chaque vendeur de fournir une documentation complète, avec toutes les informations concernant le bien immobilier : surface, plan, bilan éngergétique, etc ... Cette documentation est bien pratique car elle fait office de brochure commerciale.
Sur notre site, il doit être possible pour tout internaute de télécharger le site personnel d'un bien immobilier au format PDF, ce qui constitue une brochure commerciale.
On présente à l'utilisateur un carte Google maps et quelques choix simple :
maison, appartement, surface, nombre de chambres, prix, etc ...
Les biens s'affichent à l'écran et l'on peu accéder aux sites personnels correspondant par un simple clic.
Ce serait bien de prévoir une API publique, dans un format ouvert, utilisable par des applications tierces.
Flux RSS :
En fait, toute recherche personnalisée doit pouvoir être exportée sous forme de flux RSS.
Exemple : http://www.bulle-immobiliere.org/rss?query
affiche un flux RSS selon une requête.
Export vers des sites de petites annonces gratuites :
Référencement Google :
Eventuellement, on peut imaginer une API publique, utilisable par des logiciels du marché.
Au minimum, on peut fournir un module PHP permettant d'afficher un formulaire de recherche de bien, utilisable sur tout type de site communautaire. Prenons le cas d'un blog sur Paris. Le concepteur doit pouvoir interfacer son blog avec un outil de requête. L'outil interrogera en fait un flux RSS et fournira les réponses instantanément, sous un format facile à lire.
JMP : Nous allons partir des specs de RETS 2.0 pour bâtir la base de donnée SQL correspondante.
Ensuite on écrira les procédures server-side pour générer les fichiers XML à la volée, dans la base de données.
Je ferai un démo.
Merci à Discotonio, fichier Excel en bas de page.
Type Clé Taille Plage Clé externe Null autorisé commentaire
PAYS (référentiel) ? pour pouvoir s'interfacer avec mappy ou google earth, il faut une identification claire du lieu par pays. Or le code postal est quelque chose de français...
VILLE (référentiel)
VILLE_CodePostal number X 0-5
VILLE_Nom varchar 100
VILLE_DEPARTEMENT_Numero varchar 3 X
VILLE_REGION_Numero number 0 X
DEPARTEMENT (référentiel)
DEPARTEMENT_Numero varchar X 3
DEPARTEMENT_Nom varchar 100
REGION (référentiel)
REGION_Numero number X
REGION_Nom varchar 100
ADRESSE_BIS (référentiel) (bis ter...)
BIS_ID num auto X
BIS_Nom varchar 5
TYPE (référentiel) (appart maison terrain...)
TYPE_ID num auto X
TYPE_Nom varchar 20
ADRESSE
ADRESSE_ID num auto X
ADRESSE_NoRue number 1-10000 X
ADRESSE_BIS_ID num auto X X
ADRESSE_NomRue varchar 100 X
ADRESSE_VILLE_CodePostal number 0-5 X
ADRESSE_Complement1 varchar 150
ADRESSE_Complement2 varchar 150
USER acheteur ou vendeur
USER_ID num auto X
USER_Nom varchar 100
USER_Prenom varchar 100
USER_Telephone number 10 chiffres X
USER_TelephonePortable number 10 chiffres X
USER_TelephoneAutre number 10 chiffres X un 3eme tél si besoin
USER_TelephoneAutreInformations varchar 30 X infos sur le type du 3ème tél
USER_Mail varchar 100
USER_PHOTO_ID num auto X X photo, avatar de la USER ?
USER_NickName varchar 100 X utilise t'on des nick names ?
USER_InformationsDisponibiliteContact varchar 300 X informations sur les horaires quand appeler... et autres
USER_PublierNom bool
USER_PublierMail bool
USER_PublierTelephones bool
USER_PublierNom bool
LIEU_TRAVAIL Permet d'ajouter des lieux de travail à un acheteur pour calculer automatiquement (via mappy ou google earth) la distance en km aux lieux de travail
LIEU_TRAVAIL_ADRESSE_ID num auto X X
LIEU_TRAVAIL_USER_ID num auto X X
VENDEUR
VENDEUR_ID num auto X
VENDEUR_USER_ID num auto X
VENDEUR_ADRESSE_ID num auto X
BIEN
BIEN_ID num auto X
BIEN_NoRue varchar 10 X
BIEN_NomRue varchar 100 X
BIEN_ADRESSE_ID num auto X
BIEN_VENDEUR_ID num auto X
BIEN_TYPE_ID num auto X
BIEN_SurfaceHabitable number
BIEN_SurfaceTerrain number En Carrez pour les apparts
BIEN_NbPieces number
BIEN_Accessible bool avec ascenseur pour les apparts ou de plain pied pour les maisons
BIEN_Etage bool étage pour les apparts
BIEN_Ascenseur bool ascenseur pour les apparts
BIEN_Handicape bool permet de savoir si le bien est adapte aux handicapés
BIEN_Piscine bool piscine pour les maisons
BIEN_ImpotsFonciersAnnuels number prix impots fonciers par mois
BIEN_Charges number prix charges par mois
BIEN_DepensesChauffage number prix chauffage par mois
BIEN_NbPlacesParking number nombre de places de parking privatives
BIEN_Commentaires varchar 2000 un commentaire avec format HTML autorisé (gras, souligné...)
BIEN_DistanceEcolePrimaire number Distance en km de la primaire la plus proche
BIEN_DistanceCollege number Distance en km du collège le plus proche
BIEN_DistanceLycee number Distance en km du lycée le plus proche
BIEN_DistanceCommerces number Distance en km des commerces de proximité (au minimum pain, tabac, journaux, épicerie)
PHOTO
PHOTO_ID num auto X
PHOTO_Commentaire varchar 1000 X un commentaire avec format HTML autorisé (gras, souligné...)
PHOTO_Blob blob
PHOTO_BIEN (association BIEN <-> PHOTO)
BIEN_ID num auto X X
PHOTO_ID num auto X X
PRIX (permet un historique de prix)
PRIX_ID num auto X
PRIX_Montant double
PRIX_Date date
PRIX_BIEN_ID num auto X
RECHERCHE
RECHERCHE_ID num auto X
RECHERCHE_USER_ID num auto X
RECHERCHE_MontantMaxi double
RECHERCHE_DateMini date X
RECHERCHE_SurfaceHabitableMini double
RECHERCHE_SurfaceTerrainMini double X
RECHERCHE_NbPlacesParkingsMini double X
RECHERCHE_Piscine bool X
RECHERCHE_Ascenseur bool X
RECHERCHE_Accessible bool X
RECHERCHE_NbPieces number X
RECHERCHE_DistanceEcolePrimaireMaxi number X
RECHERCHE_DistanceCollegeMaxi number X
RECHERCHE_DistanceLyceeMaxi number X
RECHERCHE_DistanceCommercesMaxi number X
RECHERCHE_DepensesChauffageMaxi number X
RECHERCHE_EnvoiMailAuto bool Envoi automatique de mail
RECHERCHE_EnvoiMailAutoTousLes number Délai entre chaque envoi automatique de mails
RECHERCHE_EnvoiMailDateDernierEnvoi date champ interne pour retenir la date du dernier envoi
RECHERCHE_TYPE (association RECHERCHE TYPE) permet de faire une seule recherche concernant plusieurs types de bien
RECHERCHE_ID num auto X X
TYPE_ID num auto X X
EMPLACEMENT permet d'associer des emplacements à une recherche
EMPLACEMENT_RECHERCHE_ID num auto X X
EMPLACEMENT_VILLE_CodePostal number X X
EMPLACEMENT_DEPARTEMENT_Numero varchar X X
EMPLACEMENT_REGION_Numero number X X
27 Juin 2008 en chat
Notre plate-forme de développement fonctionne sous Linux sur un serveur dédié, avec un accès SVN pour installer les modules et partager le code. Si vous n'êtes pas très à l'aise en raison des faiblesses de Windows ou si vous avez peur du traditionnel écran bleu à l'issue de plusieurs installations/réinstallations, utilisez les outils distants mis à votre disposition.
Nous vous offrons un environnement complet :
Il nous manque encore un serveur de chat IRC pour faire des réunions. Merci de nous faire des propositions. Il faudrait avoir une trace écrite de chaque réunion et la possibilité de modérer les accès.
La gestion des versions s'effectue en utilisant SVN et l'interface graphique RapidSVN.
Vous pouvez télécharger la dernière version ici :
http://www.rapidsvn.org/download/nightly
RapidSVN fonctionne sous GNU/Linux, MacOsX et Windows.
Notre répository utilise le protocole DAV.
1) Checkout : récupérer une copie locale
C'est l'équivalent de la commande Unix :
svn co http://devel.bulle-immobiliere.org/projets /path/to/my/directory

Saisir les références du serveur :

Au premier checkout, RapidSVN demande votre user et mot de passe.
2) Commit : publier un fichier sur le serveur central
C'est l'équivalent de la commande Unix :
svn commit -m "Mon mesage" file

3) Update : récupérer les dernières mises à jour
C'est l'équivalent de la commande Unix
svn update

4) Autres fonctionnalités
Le menu parle de lui-même : delete, rename, revert, merge, etc ...
Attention : après chaque suppression, renommage, etc ... vous devez valider par un commit.
Vous pouvez visualiser le SVN en ligne, à l'adresse :
http://devel.bulle-immobiliere.org/websvn

Le gestionnaire contien un fil RSS, qui vous permettra de rester informé.
L'accès shell étant resteint par mesure de sécurité, il est recommandé d'utiliser le protocole sftp pour parcourir votre dossier personnel. Une chance, sous GNU/Linux, Gnome intègre SFTP :
1. Ouvrir un dossier dans l'explorateur de fichier.
Sélectionner le menu Se connecter à un serveur :

2. Renseigner la fenêtre de connexion :

3. Une icône est ajoutée au bureau.
Double-cliquer pour naviguer sur le serveur de développement :

Télécharger Putty :
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Choisir de préférence l'installeur complet, généré chaque jour :
http://tartarus.org/~simon/putty-snapshots/x86/putty-installer.exe
Installer Putty et lancer le gestionnaire de clés Putty-gen.
1. Cliquer sur SSH-2 DSA pour générer une clé DSA :

2. Bouger la souris pour générer la clé.
Une barre indique la progression :

3. Saisir une phrase de protection dans key passphrase,
par exemple "Ma grand-mère s'appelle Pierrette" :

4. Sauvergarder le jeu de clé privé, sous le nom key.ppk.
Vous ne devrez transmettre ce fichier sous aucun prétexte :

5. Sauvegarder la clé publique, sous le nom de key.pub
Vous pourrez nous transmettre cette clé par email :

6. Conservez le fichier key.ppk précieusement.
Il vous servira à vous connecter sous WinSCP.
7. Faites-nous parvenir key.pub par email.
Au préalable, vous avez suivi le tutoriel Putty :
Télécharger et installer WinSCP (préférer les dernières versions bêta) : http://winscp.net/eng/download.php
Lancer l'exécutable WinSCP.
Dans le menu de gauche, cliquer sur Sessions sauvées.
Cliquer sur le bouton Nouveau Dossier, saisir un nom de dossier et cliquer sur OK :

Cliquer sur le bouton Nouvelle pour saisir les coordonnées de la connexion.
Renseigner la connexion :

Cliquer sur Sauver après avoir rempli le formulaire.
Cliquer sur Connecter pour établir la connexion :

Bravo, vous êtes connecté !
Se connecter à la base de données portant votre nom d'utilisateur.
Cette base de données est votre espace de jeu vous permettant de tester du code SQL :

Ouvrir le schéma public et cliquer sur l'icône table.
Sélectionner Ajouter une table dans le menu contextuel (clic droit) :

Renseigner le nom de la table.
Toutes les tables commencent par bio (bulle-immo.org).
De cette manière, on pourra facilement différencier nos tables en cas d'intégration dans des outils tiers.

Renseigner des champs. Vous pourrez par la suite modifier les noms des champs, leur type, etc ..
Utilisez comme préfixe le nom de la table ou un acronyme, pour éviter les homonymes lors de jointures.
Dans le cas présent, le préfix est "user_".
Notez que toute table doit comporter un champ identifiant SERIAL et un champ timestamp.
Le champ timestamp nous permettra de lancer le code server-side.

Ajouter une contrainte de clé primaire :

Valider. La table est créée.
La copie d'écran est légèrement postérieure et comporte quelques champs supplémentaires.
Le code SQL apparaît dans le panneau SQL :

Vous pouvez maintenant modifier la table, ajouter des clés externes (foreign keys), placer des indexes, etc ...
Le fichier SVN contenant les définitions SQL est tables.sql :
http://devel.bulle-immobiliere.org/websvn/listing.php?repname=projets&pa...
A chaque fois, vous pouvez y reporter vos modifications par copier-coller depuis pgAdmin et faire un commit.
Télécharger et installer pgAdmin3 à cette adresse : http://www.pgadmin.org
Lancer pgAdmin3 et sélectionner le menu ajouter un serveur :

Saisir les données de connexion :

Vous avez accès à une base de données personnelle, portant le même nom que votre user :

Les accès sont restreints.
Vous avez accès à votre base de données (user) et la base de données dev et drupal (partagées par tous).
Drupal 6 overview (35 minutes):
An overview of some of the new features in Drupal 6. Includes a step-by-step look at the installation process.
Titre original : Implementing Drupal (51 minutes):
Source : http://video.google.fr/videoplay?docid=-4603504844034540440&q=drupal&ei=...
Titre original : Using CCK and Views (29 minutes) :
Auteur : http://learn.awakenedvoice.com/2007/07/30/drupal-cck-and-views-tutorial
Court tutoriel pour créer une page sous CCK et faire le formulaire de recherche sous Views.
Remarque : nous allons créer une revue de presse personnalisée sur ce mode.
Les fonctionnalités sont super-puissantes.
Titre original : Custom Drupal Contact Form
Source : http://learn.awakenedvoice.com/2007/10/28/custom-drupal-contact-form/
This video tutorial shows you how to create a secure, custom contact form using the Drupal content management platform. The following modules are used in creating this form. Akismet, Content Construction Kit, Form Store, MyCaptcha and Notify.
Drupal input format (21 minutes):
This video screencast gives you a closer look at the significance of input formats in the Drupal content management platform. Input formats are important because they define the rules for the types of content you can include in fields in a node, block, page, etc.
Auteur : http://learn.awakenedvoice.com/2007/09/01/drupal-input-formats
Conférences Drupal au FOSDEM 2008
http://lvb.net/item/6026
Les moyens techniques couvrent les serveurs et les services d'hébergement :
Deux machines puissantes suffisent à créer un site gérant plusieurs milliers de connexions.
L'association est déjà propriétaire d'une machine DELL 1U PowerEdge SC1425.
Nous prévoyons l'achat d'une seconde machine, quadri-coeur, au format 2U.
Actuellement, l'association est propriétaire d'un serveur DELL :
Aujourd'hui, ce serveur se trouve en Suisse.
Ce serveur est fragile et ne peux pas voyager par la poste.
Il faut compter un budget d'environ 150€ à 200€ pour aller le chercher en Suisse et le ramener en France.
A terme, nous utiliserons ce serveur comme serveur de base de données PostgreSQL.
Quelques photos :
Ce serveur est destiné à héberger le serveur d'application (Apache, Php ...).
Il est assemblé à partir de composants du commerce, pour un prix minimum.
Le boîtier nous a été livré le 20 Février 2008.
La facture de ce boîtier est visible dans la comptabilité.
Une photo du boîtier prise sans flash (désolé pour la faible qualité de la photo) :

Les composants seront commandés au dernier moment avant le lancement du site de petites annonces.
Actuellement, nous louons un serveur chez OVH .
Il s'agit d'un matériel bi-coeur fonctionnant sous Linux.
Les factures sont visibles dans la comptabilité.
A terme, nous allons faire héberger nos deux machines chez un prestataire,
qui nous propose d'héberger nos deux machines pour 150€/mois environ.
J'apporterai plus de précisions plus tard.
Le site internet de la bulle immobilière est conçu dans un gestionnaire de contenu appelé Drupal.
Bulle immobilière a besoin de vos compétences informatiques pour étendre les fonctionnalités du site et ajouter un gestionnaire de petites annonces. Pour participer, visitez le forum des développeurs. De bonnes connaissances en PHP et en bases de données sont requises. Il y a également quelques graphiques à construire en Flash.
Si vous souhaitez participer à l'effort rédactionnel, écrire des billets ou tenir un blog, vous pouvez faire une demande de code d'accès au portail.
Nous offrirons prochainement la possibilité aux internautes de rediger des billets et de publier leur propre blog.
Le gestionnaire de contenu utilisé par bulle-immobiliere.org est Drupal.
Ce document regroupe des tutoriels facilitant la prise en main.
Auteur : jmpoure
Dans ce tutoriel, nous allons publier l'image les_super_heros_de_l_immobilier.png sur une page.
Copie d'écran :

Copie d'écran :

Copie d'écran :

Copie d'écran :

Copie d'écran :

Copie d'écran :
Le résultat :

Le tutoriel présente les modules CCK (création de formulaires en page) et VIEWS (création de vues en liste) : http://learn.awakenedvoice.com/2007/07/30/drupal-cck-and-views-tutorial
Drupal stocke les différentes versions d'une page HTML, avec les avantages de la traçabilité :
Copie d'écran :

Copie d'écran :
Nous demandons d'utiliser systématiquement les fonctions de traçabilité, sans quoi le gestionnaire de contenu deviendra ingérable.
Les moteurs de recherche adorent les URL longues et lisibles.
Dans ce tutoriel, nous allons définir une URL personnalisée pour cette page.
Copie d'écran :

Copie d'écran :