Visualiser une révision

Organisation Code LinuxFr

baud123 : réorganisation + précisions (31 octobre 2011 22:31:02)

Le code de [[[LinuxFr.org]]] est disponible sous licence GNU Affero General Public License

* voir [la page code source du site](http://linuxfr.org/code_source_du_site)
* une copie [~37 Mo] est [disponible sur github](https://github.com/nono/linuxfr.org)
* vous pouvez suivre l'[application des modifications au site via le changelog](http://linuxfr.org/changelog), celui sur [github donne directement les liens d'accès aux commits](https://github.com/nono/linuxfr.org/commits/master)

## Organisation générale ##

Le code répond à un modèle MVC ou [Modèle-vue-contrôleur](http://fr.wikipedia.org/wiki/Mod%C3%A8le-Vue-Contr%C3%B4leur) et se base sur [[Haml]] pour une syntaxe simplifiée des pages web.

* [[[CSS]]] : Le code de vos CSS, ou vos modifications des CSS existantes.

## Proposer des patchs ##

Nul besoin de s'y connaître en Ruby on rails pour proposer des patchs, que ce soit esthétique ou dans les CSS.  
Vous pouvez regarder quelques commits significatifs pour identifier comment procéder, par exemple :

* [ajouter un curseur en forme de pointeur sur les liens de vote](https://github.com/nono/linuxfr.org/commit/31136bfef98b754b5a951926c9310742a9e56178) une modification simple de css (à faire pour les autres)
* [ajout lien devant commentaire](https://github.com/nono/linuxfr.org/commit/36d1fde886dadf447b09f886517b8da1247c26a2) une modification de css, de la vue et de javascript
* [amélioration de l'aide Mardown](https://github.com/nono/linuxfr.org/commit/ebc270de1d19f35f2fda3668b36ab9235bff4107) modification de la vue (fichier Haml)
* [ajout fonctionnalité pour ne pas afficher les avatars](https://github.com/nono/linuxfr.org/commit/ecc5a775b4278d755ca6395a671c29a6b7c0c376) modification css, vue et "helper"
* [amélioration mise en forme du tableau de bord](https://github.com/nono/linuxfr.org/commit/bcca6216650bd6fcd907396d3916582561bbcce7) modification vue du dashboard, css, contrôleur, ajout d'une icône
* trouver d'autres commits significatifs pour exemples de patchs

### Déroulement d'une demande de _pull_

Premièrement, il faut un compte sur GitHub, ensuite, il faut se rendre sur https://github.com/nono/linuxfr.org/ en étant loggué et cliquer sur le bouton en haut à gauche intitulé _fork_. Ensuite, on obtient une URL pour pouvoir cloner le dépôt Git (avec des droit d'écriture lors d'un push).

On peut ensuite modifier les fichiers et faire ses `commit`, une fois les modifications terminées, il ne faut pas oublier de faire un `git push`. On revient sur GitHub et dans son compte, on clique sur le bouton _demande de pull_, on écrit ensuite un gentil message à NoNo< qui explique le pourquoi de la demande.

Ci-dessous, l'organisation détaillée des arborescences.

## Arborescence du code ##

Du fait du modèle MVC, pour identifier une modification, vous pouvez procéder ainsi :

* retrouvez le fichier .haml concerné (dans les views/), 
* remontez au besoin au contrôleur (dans les controllers/)
* cherchez la définition des objets et leurs méthodes associées (dans les models/)

### gestion de l'application ###

Indiquer les url correspondant à l'arborescence (dashboard = tableau de bord), trier par ordre alphabétique.  

app/ https://github.com/nono/linuxfr.org/tree/master/app liste des fonctionnalités 
app/mailers  
app/views https://github.com/nono/linuxfr.org/tree/master/app/views  liste des vues  # Comprendre MVC : modèle, vue, contrôleur

Du fait du modèle MVC, pour identifier une modification, vous pouvez procéder ainsi :

* retrouvez le fichier .haml concerné (dans les views/), 
** pour ce qui est esthétique
* remontez au besoin au contrôleur (dans les controllers/), 
** pour ajouter un peu de logique métier ou simplement des attributs à afficher ou calculer
* cherchez la définition des objets et leurs méthodes associées (dans les models/), 
** pour toutes les données disponibles


## Proposer des patchs ##

Nul besoin de s'y connaître en Ruby on rails pour proposer des patchs, que ce soit esthétique ou dans les CSS.

### Déroulement d'une demande de _pull_

Premièrement, il faut un compte sur GitHub.

* Ensuite, il faut se rendre sur https://github.com/nono/linuxfr.org/ en étant loggué et cliquer sur le bouton en haut à gauche intitulé _fork_. Ensuite, on obtient une URL pour pouvoir cloner le dépôt Git (avec des droit d'écriture lors d'un push).
** On peut ensuite modifier les fichiers et faire ses `commit`, une fois les modifications terminées, il ne faut pas oublier de faire un `git push`. 
* Il est aussi possible d'éditer un fichier directement sur github, cela crée automatiquement un fork (s'il n'existait pas) et une branche spécifique pour le fichier édité
* On revient sur GitHub et dans son compte, on clique sur le bouton _demande de pull_, on écrit ensuite un gentil message à NoNo< qui explique le pourquoi de la demande.
* Ne pas oublier de faire une entrée dans le [suivi](http://linuxfr.org/suivi) (voir [[[suivi]]] pour les bonnes pratiques).


### Exemples de contributions pour s'y retrouver dans le code
Vous pouvez regarder quelques commits significatifs pour identifier comment procéder, par exemple :

* [ajouter un curseur en forme de pointeur sur les liens de vote](https://github.com/nono/linuxfr.org/commit/31136bfef98b754b5a951926c9310742a9e56178) une modification simple de css (à reporter pour les autres CSS)
* [ajout lien devant commentaire](https://github.com/nono/linuxfr.org/commit/36d1fde886dadf447b09f886517b8da1247c26a2) une modification de css, de la vue et de javascript
* [amélioration de l'aide Mardown](https://github.com/nono/linuxfr.org/commit/ebc270de1d19f35f2fda3668b36ab9235bff4107) modification de la vue (fichier Haml)
* [ajout fonctionnalité pour ne pas afficher les avatars](https://github.com/nono/linuxfr.org/commit/ecc5a775b4278d755ca6395a671c29a6b7c0c376) modification css, vue et "helper"
* [amélioration mise en forme du tableau de bord](https://github.com/nono/linuxfr.org/commit/bcca6216650bd6fcd907396d3916582561bbcce7) modification vue du dashboard, css, contrôleur, ajout d'une icône
* trouver d'autres commits significatifs pour exemples de patchs

Ci-dessous, l'organisation détaillée des arborescences.

## Arborescence du code

### bibliothèques utilisées

LinuxFr.org respecte les bonnes pratiques du RoR et s'appuie sur des bibliothèques existantes lorsque cela est possible :

* albino
* jquery
* rake
* redcarpet
* sanitizer
* à compléter (markdown, bibliothèque pour les langages pygmentize -L lexer)

Voir https://github.com/nono/linuxfr.org/tree/master/vendor/assets/javascripts pour les scripts utilisés.

### gestion de l'application ###

Indiquer les url correspondant à l'arborescence (dashboard = tableau de bord), trier par ordre alphabétique.  

app/ https://github.com/nono/linuxfr.org/tree/master/app liste de toutes les fonctionnalités 
app/assets https://github.com/nono/linuxfr.org/tree/master/app/assets tout ce dont vous avez besoin pour les CSS
app/mailers  
app/views https://github.com/nono/linuxfr.org/tree/master/app/views  liste des vues, correspond généralement à l'URL  


### liste détaillée de l'arborescence du code

```text
app/views/sections
app/views/diaries
app/views/home
app/views/tags
app/views/trackers
app/views/layouts
app/views/sessions
app/views/news
app/views/posts
app/views/links
app/views/static
app/views/redaction
app/views/redaction/paragraphs
app/views/redaction/news
app/views/redaction/links
app/views/devise
app/views/devise/unlocks
app/views/devise/passwords
app/views/devise/registrations
app/views/devise/shared
app/views/devise/mailer
app/views/devise/confirmations
app/views/news_notifications
app/views/shared
app/views/admin
app/views/admin/sections
app/views/admin/friend_sites
app/views/admin/responses
app/views/admin/categories
app/views/admin/accounts
app/views/admin/pages
app/views/admin/logos
app/views/admin/banners
app/views/admin/stylesheets
app/views/admin/forums
app/views/comments
app/views/users
app/views/stylesheets
app/views/forums
app/views/nodes
app/views/search
app/views/boards
app/views/moderation
app/views/moderation/news
app/views/moderation/polls
app/views/polls
app/views/dashboard
app/views/wiki_pages

app/controllers
app/controllers/redaction
app/controllers/admin
app/controllers/moderation

app/models
```
  
### gestion des CSS ### 

app/stylesheets CSS par défaut  
```text
app/helpers

public/errors
public/fonts
public/javascripts
public/stylesheets
public/stylesheets/contrib
public/stylesheets/pygments

public/images
public/images/icones
public/images/sections
```
public/images/contrib https://github.com/nono/linuxfr.org/tree/master/public/images/contrib liste des images spécifiques aux css contribuées  
```text
public/images/contrib/retro
public/images/contrib/RonRonnement
public/images/contrib/ice
public/images/contrib/kitch
public/images/contrib/grises
public/images/contrib/grayscale
public/images/contrib/grayscale/blocks
public/images/contrib/grayscale/bg
public/images/contrib/grayscale/notice
public/images/contrib/grayscale/icons
public/images/contrib/grayscale/comments
public/images/contrib/grayscale/avatars
public/images/contrib/grayscale/flags
public/images/contrib/opensuse
public/images/contrib/edition_papier
public/images/contrib/sky
public/images/contrib/black_bling
public/images/contrib/black_bling/markitup
public/images/contrib/kaiska
public/images/contrib/colors
public/images/contrib/colors/scalable

public/images/logos
public/images/langs
```

### divers ###

```text
config/
config/templates
config/locales
config/environments
config/initializers
db/
db/migrate
db/pages
lib/
lib/tasks
public/
public/tmp
public/images/nouvelles
public/images/nouvelles/concours_dlfp2009
public/images/markitup
public/images/news
public/images/news/rechargeable_batteries
public/images/news/plantuml
public/images/deontologie
public/images/cuisine
public/images/dessins
public/images/dessins/concours_perenoel2006
public/images/dessins/concours_perenoel2006/lettre_pere_noel_clem
public/images/dessins/concours_perenoel2006/lettre_geekscottes
public/images/dessins/concours_antidrm
public/images/dessins/concours_antidrm/drm_noel
public/images/dessins/concours_antidrm/drm_enferme
public/images/dessins/concours_antidrm/DRM_un_droit_en_moins
public/images/dessins/concours_antidrm/itubes
public/images/dessins/concours_antidrm/drm_oreilles
public/images/dessins/concours_antidrm/drm_creativite
public/images/dessins/concours_antidrm/iShackle
public/images/dessins/concours_antidrm/antidrm-bras
public/images/dessins/concours_antidrm/supermajor
public/images/dessins/concours_antidrm/geekscottes
public/images/dessins/concours_antidrm/drm_musique_clefs
public/images/dessins/concours_antidrm/nouveau_drm
public/images/dessins/concours_antidrm/drm_is_toxic
public/images/dessins/concours_antidrm/protection_des_livres
public/images/dessins/concours_antidrm/do-re-mi
public/images/dessins/concours_antidrm/antidrm
public/images/dessins/concours_antidrm/liberte_de
public/images/dessins/concours_antidrm/stopdrm

public/association
public/board
app/uploaders

script/
spec/
spec/lib
spec/models
spec/factories
spec/controllers
spec/support
spec/requests
tmp/
tmp/sessions
vendor/
vendor/plugins
vendor/plugins/haml
```

(à trier)