URL: https://linuxfr.org/wiki/organisation-code-linuxfr Title: Organisation Code LinuxFr Authors: BAud Date: 2011年03月10日T21:03:47+01:00 License: CC By-SA Tags: opensuse Score: 0 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/linuxfrorg/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/linuxfrorg/linuxfr.org/commits/main) ## Installation ## Suivre les instructions fournies dans le [README](https://github.com/linuxfrorg/linuxfr.org#install) ## 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](http://fr.wikipedia.org/wiki/Haml "Définition Wikipédia") pour une syntaxe simplifiée des pages web. * [[[CSS]]] : Le code de vos CSS, ou vos modifications des CSS existantes. ### 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/linuxfrorg/linuxfr.org/ en étant connecté 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_ (aka `pull request`), on écrit ensuite un gentil message qui explique le pourquoi de la demande. * Ne pas oublier de faire une entrée dans le [suivi](http://linuxfr.org/suivi). Cela fonctionne très bien pour une contribution ponctuelle, à un instant t. Pour autant, si plus tard vous voulez de nouveau faire une modification, il est bon de resynchroniser son dépôt sur le main. Pour ce faire, il faut lancer `git remote add nono https://github.com/linuxfrorg/linuxfr.org.git` qui ajoute le dépot de nono comme dépôt distant puis lancer `git pull nono main` pour _merger_ le dépôt de nono avec la branche main locale. J'ai aussi testé d'éditer le fichier de mon fork, mais cela semblait compliquer le merge (je n'avais qu'une ligne à modifier, mon fichier datant de 6 mois, cela faisait une vingtaine de lignes modifiées... non prises en compte dans l'intermède : la modif' s'appliquant à la version « actuelle » et non à celle que j'ai prise il y a six mois... je ne sais pas si je suis clair, là ?). Bref pour une petite modif', éditer un fichier du dépôt `linuxfrorg/linuxfr.org` créer le patch avec un nom compréhensible, puis créer la _pull-request_ dans la foulée avec une description correcte et l'entrée de suivi idoine. ### 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/linuxfrorg/linuxfr.org/commit/31136bfef98b754b5a951926c9310742a9e56178) une modification simple de css (à reporter pour les autres CSS) * [ajout lien devant commentaire](https://github.com/linuxfrorg/linuxfr.org/commit/36d1fde886dadf447b09f886517b8da1247c26a2) une modification de css, de la vue et de javascript * [amélioration de l'aide Markdown](https://github.com/linuxfrorg/linuxfr.org/commit/ebc270de1d19f35f2fda3668b36ab9235bff4107) modification de la vue (fichier Haml) * [ajout fonctionnalité pour ne pas afficher les avatars](https://github.com/linuxfrorg/linuxfr.org/commit/ecc5a775b4278d755ca6395a671c29a6b7c0c376) modification css, vue et "helper" * [amélioration mise en forme du tableau de bord](https://github.com/linuxfrorg/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](https://github.com/tanoku/redcarpet) pour le rendu Markdown * sanitizer * à compléter (markdown, bibliothèque pour les langages pygmentize -L lexer) Voir https://github.com/linuxfrorg/linuxfr.org/tree/main/vendor/assets/javascripts pour les scripts utilisés. Voir aussi cette [dépêche sur l'architecture logicielle](http://linuxfr.org/news/architecture-logicielle-de-la-nouvelle-version-de-linuxfrorg). ### gestion de l'application ### Indiquer les url correspondant à l'arborescence (dashboard = tableau de bord), trier par ordre alphabétique. app/ https://github.com/linuxfrorg/linuxfr.org/tree/main/app liste de toutes les fonctionnalités app/assets https://github.com/linuxfrorg/linuxfr.org/tree/main/app/assets tout ce dont vous avez besoin pour les CSS app/mailers app/views https://github.com/linuxfrorg/linuxfr.org/tree/main/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 -> liste des images spécifiques aux css contribuées 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)

AltStyle によって変換されたページ (->オリジナル) /