Skip to content

Commit

Permalink
Recherche sur les articles (rebase de #1873)
Browse files Browse the repository at this point in the history
  • Loading branch information
pierre-24 committed May 7, 2015
1 parent 4d29e17 commit 49f91b1
Show file tree
Hide file tree
Showing 54 changed files with 334 additions and 973 deletions.
23 changes: 3 additions & 20 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,8 @@ python:
- 2.7

env:
global:
- secure: "azmDZZQZzf88zpbkYpLpxI66vpEVyv+kniW0QdWAt4qlys8P5OcO3VJBR5YT85vlvnjN9b6raWQAL1ymee0WmVdTmzXed8XjZv7t9QXVw7pfezxMKlEftVp/4Cu4wtvbew0ViZXNWV2hNXHzEqlhgnoIOq94i0UzZ7grMrI0xm0="
matrix:
- TEST_APP="-e back_mysql"
- TEST_APP="-e front"
- TEST_APP="-e back_mysql"
- TEST_APP="-e front"

notifications:
irc:
Expand Down Expand Up @@ -48,6 +45,7 @@ install:
- sudo apt-get install texlive-xetex
- sudo apt-get install texlive-lang-french
- sudo apt-get install texlive-latex-extra
- sudo apt-get install libgeoip-dev

# Add fonts
- sudo wget -P /usr/share/fonts/truetype https://www.dropbox.com/s/ema28tjn52960mq/Merriweather.zip
Expand Down Expand Up @@ -80,18 +78,3 @@ script:

after_success:
- coveralls
- |
COMMIT_MSG=`git rev-list --format=%B --max-count=1 $TRAVIS_COMMIT`
if [[ "$TEST_APP" == *"front"* ]] && [[ "$TRAVIS_PULL_REQUEST" == false ]] && [[ ! -z "$TRAVIS_TAG" ]] && [[ ! "$TRAVIS_TAG" == *"-build" ]]
then
# Adding GitHub OAuth token to login
echo "machine github.com login $GITHUB_TOKEN password x-oauth-basic" > ~/.netrc
git config --global url."https://".insteadOf git://
git config --global user.name "Build bot"
git config --global user.email "zestedesavoir@gmail.com"
git config --global push.default simple
# Run script
./scripts/push_front.sh $TRAVIS_TAG
fi
132 changes: 90 additions & 42 deletions Gulpfile.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
var gulp = require("gulp"),
$ = require("gulp-load-plugins")(),
browserify = require("browserify"),
watchify = require("watchify"),
source = require("vinyl-source-stream"),
sprite = require("css-sprite").stream,
path = require("path"),
del = require("del");

var sourceDir = "assets",
destDir = "dist",
errorsDir = "errors",
sassDir = "scss",
imagesDir = "images",
scriptsDir = "js",
vendorsDir = "vendors",
spriteDir = "sprite",
var sourceDir = "assets/",
destDir = "dist/",
appFile = "js/app.js"
stylesFiles = ["main.scss", "only-ie.scss"],
sassDir = "scss/",
imagesDir = "images/",
scriptsDir = "js/",
vendorsDir = "vendors/",
spriteDir = "sprite/",
vendorsCSS = ["node_modules/normalize.css/normalize.css"],
vendorsJS = ["node_modules/jquery/dist/jquery.js", "node_modules/cookies-eu-banner/dist/cookies-eu-banner.js"],
autoprefixerConfig = ["last 1 version", "> 1%", "ff >= 20", "ie >= 8", "opera >= 12", "Android >= 2.2"],
autoprefixerConfig = ["last 1 version", "> 1%", "ff >= 20", "ie >= 8", "opera >= 12", "Android >= 2.2"]
imageminConfig = { optimizationLevel: 3, progressive: true, interlaced: true };

/**
Expand All @@ -24,9 +27,9 @@ var sourceDir = "assets",
gulp.task("clean", function(cb) {
del([
destDir,
path.join(sourceDir, "{" + scriptsDir + "," + sassDir + "}", vendorsDir),
path.join(sourceDir, "bower_components/"),
path.join(sourceDir, sassDir, "_sprite.scss")
sourceDir + "{" + scriptsDir + "," + sassDir + "}/" + vendorsDir,
sourceDir + "bower_components/",
sourceDir + sassDir + "_sprite.scss"
], cb);
});

Expand All @@ -37,100 +40,145 @@ gulp.task("clean-errors", function(cb) {
del(["errors/css/*"], cb);
});

/**
* Bundles JS files using browserify (unused yet)
*/
gulp.task("bundle", function() {
var bundler = watchify(browserify({
entries: ["./" + sourceDir + appFile],
insertGlobals: true,
cache: {},
packageCache: {},
fullpaths: true
}));

bundler.on("update", rebundle);

function rebundle() {
return bundler.bundle()
.on("error", $.notify.onError({
title: "Browserify error",
message: "<%= error.message %>"
}))
.pipe(source(appFile))
.pipe($.streamify($.size({ title: "App file" })))
.pipe(gulp.dest(destDir))
.pipe($.rename({ suffix: ".min" }))
.pipe($.streamify($.uglify().on('error', $.notify.onError({
title: "Javascript error",
message: "<%= error.message %>"
}))))
.pipe($.streamify($.size({ title: "App file (minified)" })))
.pipe(gulp.dest(destDir));
}

return rebundle();
});

/**
* Copy vendors style files (i.e. normalize.css)
*/
gulp.task("vendors-css", function() {
return gulp.src(vendorsCSS)
.pipe($.rename({ prefix: "_", extname: ".scss" }))
.pipe(gulp.dest(path.join(sourceDir, sassDir, vendorsDir)));
.pipe(gulp.dest(sourceDir + sassDir + vendorsDir));
});

/**
* Copy vendors script fules (i.e. jquery.js)
*/
gulp.task("vendors-js", function() {
return gulp.src(vendorsJS)
.pipe(gulp.dest(path.join(sourceDir, scriptsDir, vendorsDir)));
.pipe(gulp.dest(sourceDir + scriptsDir + vendorsDir));
});

/**
* Copy, concat and minify vendors files
*/
gulp.task("vendors", ["vendors-js", "vendors-css"], function() {
return gulp.src(path.join(sourceDir, scriptsDir, vendorsDir, "*.js"))
return gulp.src(sourceDir + scriptsDir + vendorsDir + "*.js")
.pipe($.concat("vendors.js"))
.pipe($.size({ title: "Scripts (vendors)" }))
.pipe(gulp.dest(path.join(destDir, scriptsDir)))
.pipe(gulp.dest(destDir + scriptsDir))
.pipe($.rename({ suffix: ".min" }))
.pipe($.size({ title: "Scripts (vendors, minified)" }))
.pipe($.uglify().on('error', $.notify.onError({
title: "Javascript error",
message: "<%= error.message %>"
})))
.pipe(gulp.dest(path.join(destDir, scriptsDir)));
.pipe(gulp.dest(destDir + scriptsDir));
});

/**
* Compiles SASS files
*/
gulp.task("stylesheet", ["sprite", "vendors"], function() {
var files = stylesFiles.map(function(filename) {
return path.join(sourceDir, sassDir, filename);
});
var files = [];
for (var i = 0; i < stylesFiles.length; i++) {
files.push(sourceDir + sassDir + stylesFiles[i]);
}
return gulp.src(files)
.pipe($.sass())
.pipe($.sass({
sass: sourceDir + sassDir,
imagePath: sourceDir + imagesDir
}))
.on("error", $.notify.onError({
title: "SASS Error",
message: "<%= error.message %>"
}))
.on("error", function() { this.emit("end"); })
.pipe($.autoprefixer(autoprefixerConfig, { cascade: true }))
.pipe($.size({ title: "Stylesheet" }))
.pipe(gulp.dest(path.join(destDir, "css/")))
.pipe(gulp.dest(destDir + "css/"))
.pipe($.rename({ suffix: ".min" }))
.pipe($.minifyCss())
.pipe($.size({ title: "Stylesheet (minified)" }))
.pipe(gulp.dest(path.join(destDir, "css/")));
.pipe(gulp.dest(destDir + "css/"));
});

/**
* Error-pages stylesheet
*/
gulp.task("errors", ["clean-errors"], function() {
return gulp.src(path.join(errorsDir, sassDir, "main.scss"))
var files = [];
for (var i = 0; i < stylesFiles.length; i++) {
files.push(sourceDir + sassDir + stylesFiles[i]);
}
return gulp.src(files)
.pipe($.sass({
includePaths: [path.join(sourceDir, sassDir)]
sass: errorsDir + sassDir,
imagePath: errorsDir + imagesDir,
includePaths: [sourceDir + imagesDir]
}))
.pipe($.autoprefixer(autoprefixerConfig, { cascade: true }))
.pipe(gulp.dest(path.join(errorsDir, "css/")))
.pipe(gulp.dest(errorsDir + "css/"))
.pipe($.rename({ suffix: ".min" }))
.pipe($.minifyCss())
.pipe(gulp.dest(path.join(errorsDir, "css/")));
.pipe(gulp.dest(errorsDir + "css/"));
});

/**
* Generates Sprite files (SASS + image)
*/
gulp.task("sprite", function() {
return gulp.src(path.join(sourceDir, imagesDir, spriteDir, "*"))
return gulp.src(sourceDir + imagesDir + spriteDir + "*")
.pipe(sprite({
name: "sprite",
style: "_sprite.scss",
cssPath: "../" + imagesDir + "/",
cssPath: "../" + imagesDir,
retina: true,
prefix: "sprite-icon",
processor: "scss",
template: path.join(sourceDir, sassDir, "sprite-template.mustache")
template: sourceDir + sassDir + "sprite-template.mustache"
}))
.pipe($.if("*.png", gulp.dest(path.join(destDir, imagesDir)), gulp.dest(path.join(sourceDir, sassDir))));
.pipe($.if("*.png", gulp.dest(destDir + imagesDir), gulp.dest(sourceDir + sassDir)));
});

/**
* Process images files
*/
gulp.task("images", ["stylesheet"], function() {
return gulp.src(path.join(sourceDir, "{" + imagesDir + ",smileys}", "*.{png,gif}"))
return gulp.src([sourceDir + "{" + imagesDir + ",smileys/}" + "*.{png,gif}"])
.pipe($.imagemin(imageminConfig))
.pipe($.size({ title: "Images" }))
.pipe(gulp.dest(destDir));
Expand All @@ -140,24 +188,24 @@ gulp.task("images", ["stylesheet"], function() {
* Scripts concat and minify
*/
gulp.task("scripts", function() {
return gulp.src(path.join(sourceDir, scriptsDir, "*.js"))
return gulp.src(sourceDir + scriptsDir + "*.js")
.pipe($.concat("main.js", { newLine: "\r\n\r\n" }))
.pipe($.size({ title: "Scripts" }))
.pipe(gulp.dest(path.join(destDir, scriptsDir)))
.pipe(gulp.dest(destDir + scriptsDir))
.pipe($.rename({ suffix: ".min" }))
.pipe($.uglify().on('error', $.notify.onError({
title: "Javascript error",
message: "<%= error.message %>"
})))
.pipe($.size({ title: "Scripts (minified)" }))
.pipe(gulp.dest(path.join(destDir, scriptsDir)));
.pipe(gulp.dest(destDir + scriptsDir));
});

/**
* Check JS code style and syntax using JSHint
*/
gulp.task("jshint", function() {
return gulp.src([path.join(sourceDir, scriptsDir, "*.js"), "!" + path.join(sourceDir, scriptsDir, "_custom.modernizr.js")])
return gulp.src([sourceDir + scriptsDir + "*.js", "!" + sourceDir + scriptsDir + "_custom.modernizr.js"])
.pipe($.jshint())
.pipe($.jshint.reporter("jshint-stylish"));
});
Expand All @@ -166,26 +214,26 @@ gulp.task("jshint", function() {
* Merge vendors and app scripts
*/
gulp.task("merge-scripts", ["vendors", "scripts"], function() {
return gulp.src(path.join(destDir, scriptsDir, "{vendors,main}.js"))
return gulp.src([destDir + scriptsDir + "vendors.js", destDir + scriptsDir + "main.js"])
.pipe($.concat("all.js"))
.pipe($.size({ title: "Scripts (all)" }))
.pipe(gulp.dest(path.join(destDir, scriptsDir)))
.pipe(gulp.dest(destDir + scriptsDir))
.pipe($.rename({ suffix: ".min" }))
.pipe($.uglify().on('error', $.notify.onError({
title: "Javascript error",
message: "<%= error.message %>"
})))
.pipe($.size({ title: "Scripts (all, minified)" }))
.pipe(gulp.dest(path.join(destDir, scriptsDir)));
.pipe(gulp.dest(destDir + scriptsDir));
});

/**
* Watch for files changes, then recompiles and livereloads
*/
gulp.task("watch", function() {
gulp.watch(path.join(sourceDir, scriptsDir, "*.js"), ["jshint", "scripts"]);
gulp.watch([path.join(sourceDir, imagesDir, "*.png"), path.join(sourceDir, "smileys/*")], ["images"]);
gulp.watch([path.join(sourceDir, sassDir, "**/*.scss"), "!" + path.join(sourceDir, sassDir, "_sprite.scss")], ["stylesheet"]);
gulp.watch(sourceDir + scriptsDir + "*.js", ["jshint", "scripts"]);
gulp.watch([sourceDir + imagesDir + "*.png", sourceDir + "smileys/*"], ["images"]);
gulp.watch([sourceDir + sassDir + "**/*.scss", "!" + sourceDir + sassDir + "_sprite.scss"], ["stylesheet"]);

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
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ Cela va créer plusieurs entitées :
* 3 catégories et 2 sous-catégories
* 4 aides pour l'écriture des tutoriels

Pour en savoir plus sur cette commande, [consulter la documentation](http://zds-site.readthedocs.org/fr/latest/utils/fixture_loaders.html).

### La documentation complète

Expand All @@ -95,7 +94,7 @@ Vous trouverez tout sur [la page dédiée de la documentation](CONTRIBUTING.md)

## En savoir plus

- [Comment déployer ZDS sur un serveur de production ?](http://zds-site.readthedocs.org/fr/latest/install/deploy-in-production.html)
- [Comment déployer ZDS sur un serveur de production ?](http://zds-site.readthedocs.org/fr/latest/install/deploiement-production.html)
- [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](http://zds-site.readthedocs.org/fr/latest/workflow.html)
Expand Down
3 changes: 1 addition & 2 deletions assets/js/ajax-actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

/**
* Toggle the text of the element by the text of an attribute
*
*
* @param {string} dataAttribute
*/
$.fn.toggleText = function(dataAttribute){
Expand Down Expand Up @@ -285,7 +285,6 @@

$(data).insertAfter($form);

/* global MathJax */
if ($(data).find("mathjax").length > 0)
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
}
Expand Down
8 changes: 4 additions & 4 deletions assets/js/forgot-password.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*/
(function($, undefined){
"use strict";
if ($("#id_email").val() === "")
if ($("#id_email").val() == '')
$("#form-email").addClass("hidden");
else
$("#form-email").removeClass("hidden");
Expand All @@ -12,12 +12,12 @@
$("#form-email").toggleClass("hidden");
$("#form-username").addClass("hidden");

$("#id_username").val("");
$("#id_username").val('');

e.preventDefault();
});

if ($("#id_username").val() === "")
if ($("#id_username").val() == '')
$("#form-username").addClass("hidden");
else
$("#form-username").removeClass("hidden");
Expand All @@ -26,7 +26,7 @@
$("#form-username").toggleClass("hidden");
$("#form-email").addClass("hidden");

$("#id_email").val("");
$("#id_email").val('');

e.preventDefault();
});
Expand Down
4 changes: 1 addition & 3 deletions doc/source/front-end.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ Il s'agit donc de la partie du code définissant le design et l'affichage, mais
+ `SASS (en) <http://sass-lang.com/>`__ pour les feuilles de style ;
+ Javascript pour les interactions.

`NodeJS (en) <https://nodejs.org/>`__, `NPM (en) <https://www.npmjs.com/>`__ (gestionnaire de paquet pour NodeJS) et `Gulp (en) <http://gulpjs.com/>`__ sont utilisés pour générer le code final minifié et cohérent. Le développement du *front-end* requiert donc des outils spécifiques dont l'installation `est expliquée ici <install/frontend-install.html>`__.

Pour éviter d'installer les outils front en production pour des questions de fiabilité, le front est automatiquement généré par travis et poussé sur le dépot dès qu'un tag (qui correspond à une release) est poussé sur GitHub. `scripts/push_front.sh <https://github.com/zestedesavoir/zds-site/tree/dev/scripts/push_front.sh>`__ est donc lancé avec l'utilisateur `ZDS-Bot <https://github.com/zds-bot>`__ dès qu'un tag est poussé sur le dépot. Ce script crée un nouveau tag avec *-build* en suffixe, contenant un commit avec le front généré, qui sera déployé en (pré-)production.
`NodeJS (en) <https://nodejs.org/>`__, `NPM (en) <https://www.npmjs.com/>`__ (gestionaire de paquet pour NodeJS) et `Gulp (en) <http://gulpjs.com/>`__ sont utilisés pour générer le code final minifié et cohérent. Le développement du *front-end* requiert donc des outils spécifiques dont l'installation `est expliquée ici <install/frontend-install.html>`__.

.. toctree::
:maxdepth: 2
Expand Down
Loading

0 comments on commit 49f91b1

Please sign in to comment.