Skip to content

Commit

Permalink
Merge d19bf8c into 19bd147
Browse files Browse the repository at this point in the history
  • Loading branch information
SpaceFox committed Sep 8, 2014
2 parents 19bd147 + d19bf8c commit 205d7bd
Show file tree
Hide file tree
Showing 100 changed files with 4,670 additions and 917 deletions.
11 changes: 11 additions & 0 deletions .gitignore
Expand Up @@ -92,6 +92,11 @@ local.properties
#############
.idea/

#############
## Sphinx
#############

build/

#############
## OS detritus
Expand All @@ -109,3 +114,9 @@ $RECYCLE.BIN/

# Mac crap
.DS_Store

#############
## Gedit
#############

*.*~
21 changes: 14 additions & 7 deletions CONTRIBUTING.md
Expand Up @@ -12,19 +12,26 @@ Les contributions externes sont les bienvenues !

# Contribuer à Zeste De Savoir
1. Créez une branche pour contenir votre travail
2. Faites vos modifications
3. Ajoutez un test pour votre modification. Seules les modifications de documentation et les réusinages n'ont pas besoin de nouveaux tests
4. Assurez-vous que l'intégralité des tests passent : `python manage.py test`
1. Faites vos modifications
1. Ajoutez un test pour votre modification. Seules les modifications de documentation et les réusinages n'ont pas besoin de nouveaux tests
1. Assurez-vous que l'intégralité des tests passent : `python manage.py test`
1. Assurez-vous que le code suit la [PEP-8](http://legacy.python.org/dev/peps/pep-0008/) : `flake8 --exclude=migrations,urls.py --max-line-length=120 --ignore=F403,E126,E127,E128 zds`
1. Si vous avez fait des modifications du _front_, jouez les tests associés : `gulp test`
1. Si vous modifiez le modèle (les fichiers models.py), n'oubliez pas de créer les fichiers de migration : `python manage.py schemamigration app_name --auto`

5. Poussez votre travail et faites une _pull request_

# Quelques bonnes pratiques
* Respectez [les conventions de code de Django](https://docs.djangoproject.com/en/1.6/internals/contributing/writing-code/coding-style/), ce qui inclut la [PEP 8 de Python](http://legacy.python.org/dev/peps/pep-0008/)
* Le code et les commentaires sont en anglais
* Le _workflow_ Git utilisé est le [git flow](http://nvie.com/posts/a-successful-git-branching-model/) à quelques détails près :
* Les contributions se font uniquement sur la branche `dev` (appelée `develop` dans le git flow standard)
* Lorsqu'on décide que `dev` est prête pour la prod, la branche est mergée dans `master` (les branches `releases` dans le git flow standard). Dès lors, cette branche ne reçoit plus que des corrections, aucune nouvelle fonctionnalité.
* Le _workflow_ Git utilisé est le [Git flow](http://nvie.com/posts/a-successful-git-branching-model/). En détail :
* Les arrivées fonctionnalités et corrections de gros bugs hors release se font via des PR.
* Ces PR sont unitaires. Aucune PR qui corrige plusieurs problèmes ou apporte plusieurs fonctionnalité ne sera accepté ; la règle est : une fonctionnalité ou une correction = une PR.
* Ces PR sont mergées dans la branche `dev` (appelée `develop` dans le git flow standard), après une QA légère. `dev` ne devrait contenir que des merge de PR, aucun commit direct.
* Pensez à préfixer vos branches selon l'objet de votre PR : `hotfix-XXX`, `feature-XXX`, etc.
* La branche `prod` (appelée `master` dans le git flow standard) contient exclusivement le code en production, pas la peine d'essayer de faire le moindre _commit_ dessus !

Tous les détails sur le workflow se trouvent [sur la page dédiée](workflow.md).

* Votre test doit échouer sans votre modification, et réussir avec
* Faites des messages de _commit_ clairs et en français
Expand All @@ -43,7 +50,7 @@ Les contributions externes sont les bienvenues !
```

## Les commits
* Pour les commits, nous suivons le même ordre d'idée des standards git, à savoir :
* Pour les commits, nous suivons le même ordre d'idée des standards Git, à savoir :
* La première ligne du commit ne doit pas faire plus de 50 caractères
* Si besoin, complétez votre commit via des commentaires, en respectant une limite de 70 caractères par ligne
* Bien que le code soit en anglais, le commit doit être de préférence en français
Expand Down
26 changes: 16 additions & 10 deletions Gulpfile.js
Expand Up @@ -5,7 +5,7 @@ var gulp = require("gulp"),
mainBowerFiles = require('main-bower-files');

var paths = {
scripts: "assets/js/**",
scripts: ["assets/js/**", "!assets/js/_**"],
images: "assets/images/**",
smileys: "assets/smileys/**",
errors_main: "errors/scss/main.scss",
Expand All @@ -25,9 +25,11 @@ var paths = {
sprite: "assets/images/sprite@2x/*.png"
};



gulp.task("clean", function() {
return gulp.src(["dist/*"])
.pipe($.clean());
return gulp.src(["dist/*"], { read: false })
.pipe($.rimraf());
});

gulp.task("script", ["test"], function() {
Expand All @@ -43,8 +45,8 @@ gulp.task("script", ["test"], function() {
});

gulp.task("clean-errors", function() {
return gulp.src(["errors/css/*"])
.pipe($.clean());
return gulp.src(["errors/css/*"], { read: false })
.pipe($.rimraf());
});

gulp.task("errors", ["clean-errors"], function() {
Expand Down Expand Up @@ -95,7 +97,9 @@ gulp.task("sprite", function() {
return output;
}
}));
sprite.img.pipe(gulp.dest("dist/images"));
sprite.img
.pipe($.imagemin({ optimisationLevel: 3, progressive: true, interlaced: true }))
.pipe(gulp.dest("dist/images"));
sprite.css.pipe(gulp.dest(paths.styles.sass));
return sprite.css;
});
Expand All @@ -117,11 +121,13 @@ gulp.task("smileys", function() {
});

gulp.task("vendors", function() {
return gulp.src(mainBowerFiles())
var vendors = mainBowerFiles();
vendors.push("assets/js/_**");

return gulp.src(vendors)
.pipe($.newer("dist/js/vendors.js"))
.pipe($.flatten()) // remove folder structure
.pipe($.size({ title: "vendors", showFiles: true }))
.pipe(gulp.dest("dist/js/vendors"))
.pipe($.concat("vendors.js"))
.pipe($.size({ title: "vendors.js" }))
.pipe(gulp.dest("dist/js"))
Expand All @@ -144,7 +150,7 @@ gulp.task("watch", function(cb) {
gulp.watch(paths.images, ["images"]);
gulp.watch(paths.styles_path, ["stylesheet"]);
gulp.watch(paths.errors_path, ["errors"]);
gulp.watch(paths.sprite, ["sprite", "stylesheet"]);
gulp.watch(paths.sprite, ["stylesheet"]); // stylesheet task already lauch sprite

gulp.watch("dist/*/**", function(file) {
var filePath = path.join("static/", path.relative(path.join(__dirname, "dist/"), file.path)); // Pour que le chemin ressemble à static/.../...
Expand Down Expand Up @@ -172,8 +178,8 @@ gulp.task("pack", ["build"], function() {
.pipe(gulp.dest("dist/"));
});

gulp.task("travis", ["test"]);

gulp.task("travis", ["pack"]);

gulp.task("build", ["smileys", "images", "sprite", "stylesheet", "vendors", "script", "merge-scripts"]);

Expand Down
76 changes: 17 additions & 59 deletions README.md
@@ -1,55 +1,34 @@
[![Build Status](https://travis-ci.org/zestedesavoir/zds-site.svg?branch=dev)](https://travis-ci.org/zestedesavoir/zds-site)
[![Coverage Status](https://coveralls.io/repos/zestedesavoir/zds-site/badge.png?branch=dev)](https://coveralls.io/r/zestedesavoir/zds-site?branch=dev)
[![Licnce GPL](http://img.shields.io/badge/license-GPL-yellow.svg)](http://www.gnu.org/licenses/quick-guide-gplv3.fr.html)
[![Licence GPL](http://img.shields.io/badge/license-GPL-yellow.svg)](http://www.gnu.org/licenses/quick-guide-gplv3.fr.html)





Zeste de Savoir
===============
# Zeste de Savoir

Site internet communautaire codé à l'aide du framework [Django](https://www.djangoproject.com/) 1.6 et de [Python](https://www.djangoproject.com/) 2.7.

* Lien du site : [zestedesavoir](http://www.zestedesavoir.com)

## Fonctionnalités implementées




Fonctionnalités implementées
----------------------------

- Membres
- Tutoriels
- Articles
- Membres
- Forums
- Messages privés
- Galeries d'images
- Recherche





Fonctionnalités à venir
-----------------------
## Fonctionnalités à venir

Elles sont reportées essentiellement dans le [bugtraker](https://github.com/zestedesavoir/zds-site/issues).





Comment démarrer une instance de ZdS ?
--------------------------------------

## Comment démarrer une instance de ZdS ?

### Installation d'une version locale de ZdS
- [Intallation sur Windows](doc/install-windows.md)
- [Intallation sur Linux](doc/install-linux.md)
- [Intallation sur OS X](doc/install-os-x.md)

- [Installation de Solr](doc/install-solr.md) pour gérer la recherche

### Mettre à jour votre version locale de ZdS
Après avoir mis à jour votre dépot, vous devez executer les commandes suivantes (depuis la racine de votre projet) pour mettre à jour les dépendances.
Expand All @@ -59,12 +38,11 @@ python manage.py migrate
pip install --upgrade -r requirements.txt
```


### Données de test
Pour bénéficier de données de test, exécutez les commandes suivantes, dans l'ordre, à la fin des précédentes :

```console
python manage.py loaddata fixtures/users.yaml fixtures/forums.yaml fixtures/topics.yaml fixtures/mps.yaml fixtures/categories.yaml fixtures/licences.yaml
python manage.py loaddata fixtures/*.yaml

```

Expand All @@ -81,44 +59,24 @@ Cela va créer plusieurs entitées :
* 3 catégories et 2 sous-catégories


### Conseils de developpement

Avant de faire une Pull Request (PR), vérifiez que votre code passe tous les tests unitaires et qu'il est compatible [PEP-8](http://legacy.python.org/dev/peps/pep-0008/) en exécutant les commandes suivantes, pour le back :

```console
python manage.py test
flake8 --exclude=migrations,urls.py --max-line-length=120 --ignore=F403,E126,E127,E128 zds
```
### Génération de la documentation complète

Pour le front :
La documenation de ZdS est générée par Sphinx, et elle doit être mise à jour à chaque modification ou ajout d'une fonctionnalité du site.

```console
gulp test
```
Pour générer la documentation rendez vous dans le répertoire `zds-site/doc/sphinx` depuis votre terminal, et lancez la commande `make html`.

Si vous modifiez le modèle (les fichiers models.py), n'oubliez pas de créer les fichiers de migration :

```console
python manage.py schemamigration app_name --auto
```

Si vous avez une connexion lente et que vous ne voulez travailler que sur une branche précise, vous pouvez toujours ne récupérer que celle-ci :

```console
git clone https://github.com/zestedesavoir/zds-site.git -b LA_BRANCHE --depth 1
```
Vous pourrez ensuite la consulter en ouvrant le fichier `zds-site/doc/sphinx/build/html/index.html`

### Conseils de developpement

Vous trouverez tout sur [la page dédiée de la documentation](CONTRIBUTING.md)

En savoir plus
--------------
## En savoir plus

- [Comment déployer ZDS sur un serveur de production ?](doc/deploy.md)
- [Contribuer](CONTRIBUTING.md)
- [Comment contribuer et conseils de développement](CONTRIBUTING.md)
- [Comment contribuer : comprendre comment suivre le workflow (sur zds)](http://zestedesavoir.com/forums/sujet/324/comment-contribuer-comprendre-comment-suivre-le-workflow/)



- [Les détails du workflow utilisé sur Zeste de Savoir](doc/workflow.md)


Zeste de Savoir est basé sur un fork de [Progdupeu.pl](http://progdupeu.pl) ([Dépôt Bitbucket](https://bitbucket.org/MicroJoe/progdupeupl/)).
Binary file modified assets/images/logo.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/logo@2x.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions assets/js/_custom.modernizr.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 7 additions & 8 deletions assets/js/autocompletion.js
Expand Up @@ -118,17 +118,17 @@
selected = selected || this.selected;
var input = this.$input.val();
var lastChar = input.substr(-1);
if((lastChar === "," || lastChar === " " || selected === -1) && this.options.type === "multiple")
if((lastChar === "," || selected === -1) && this.options.type === "multiple")
return false;

var completion = this.getFromCache(selected);
if(!completion)
return false;

if(this.options.type === "multiple") {
var lastSpace = input.replace(",", " ").lastIndexOf(" ");
if(lastSpace){
input = input.substr(0, lastSpace + 1) + completion.value + ", ";
var lastComma = input.lastIndexOf(",");
if(lastComma !== -1){
input = input.substr(0, lastComma + 2) + completion.value + ", ";
this.$input.val(input);
} else {
this.$input.val(completion.value + ", ");
Expand All @@ -148,9 +148,9 @@
},

extractWords: function(input){
input = input.replace(/ /g, ","); // Replace space with comas
//input = input.replace(/ /g, ","); // Replace space with comas
var words = $.grep(
input.split(","), // Remove empty
$.map(input.split(","), $.trim), // Remove empty
function(e){
return e === "" || e === undefined;
},
Expand All @@ -162,8 +162,7 @@

parseInput: function(input){
if(this.options.type === "multiple") {
var lastChar = input.substr(-1);
if(lastChar === "," || lastChar === " ")
if(input.substr(-1) === "," || input.substr(-2) === ", ")
return false;

var words = this.extractWords(input);
Expand Down
14 changes: 9 additions & 5 deletions assets/scss/_all-supports.scss
Expand Up @@ -134,13 +134,12 @@
width: 100%;
max-width: 240px;
height: 60px;
// TODO : Améliorer l'image du logo (prendre la version vecto et faire une image à fond transparent)
background: url('../images/logo.png') no-repeat center center;
background-image: url('../images/logo.png') no-repeat center center;
background-size: 100% auto;

&:hover,
&:focus {
opacity: .7;
background-color: $header-hover;
}
}

Expand Down Expand Up @@ -592,6 +591,10 @@
color: #FFF;
text-shadow: rgba(0, 0, 0, 0.2) 0 0 2px;

.alert-box-text {
display: block;
}

.close-alert-box {
display: block;
position: absolute;
Expand Down Expand Up @@ -2024,7 +2027,8 @@
}

// Code inline
p code {
p code,
li code {
color: #A00;
background: #EEE;
border: 1px solid #CCC;
Expand Down Expand Up @@ -2600,7 +2604,7 @@ form.topic-message {
background: #777;

&.staff {
background: #48a200;
background: $upvote-green;
}
}

Expand Down
1 change: 1 addition & 0 deletions assets/scss/_base.scss
Expand Up @@ -27,6 +27,7 @@ html {
width: 100%;
font-size: 62.5%;
overflow-x: hidden;
word-wrap: break-word;
}
body {
background: $body-background;
Expand Down

0 comments on commit 205d7bd

Please sign in to comment.