diff --git a/.travis.yml b/.travis.yml index c565e87474..14e57a2065 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,9 @@ python: env: - TEST_APP="-e back_mysql zds.tutorial" + CFLAGS="-O0" - TEST_APP="-e back_mysql zds.article zds.forum zds.member zds.utils zds.gallery zds.mp zds.pages" + CFLAGS="-O0" - TEST_APP="-e front" notifications: diff --git a/Gulpfile.js b/Gulpfile.js index dffaeecce4..01a5751c7a 100644 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -10,14 +10,14 @@ var gulp = require("gulp"), var sourceDir = "assets/", destDir = "dist/", appFile = "js/app.js" - styleFile = "main.scss", + 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"], + 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"] imageminConfig = { optimizationLevel: 3, progressive: true, interlaced: true }; @@ -113,7 +113,11 @@ gulp.task("vendors", ["vendors-js", "vendors-css"], function() { * Compiles SASS files */ gulp.task("stylesheet", ["sprite", "vendors"], function() { - return gulp.src(sourceDir + sassDir + styleFile) + var files = []; + for (var i = 0; i < stylesFiles.length; i++) { + files.push(sourceDir + sassDir + stylesFiles[i]); + } + return gulp.src(files) .pipe($.sass({ sass: sourceDir + sassDir, imagePath: sourceDir + imagesDir @@ -136,7 +140,11 @@ gulp.task("stylesheet", ["sprite", "vendors"], function() { * Error-pages stylesheet */ gulp.task("errors", ["clean-errors"], function() { - return gulp.src(errorsDir + sassDir + styleFile) + var files = []; + for (var i = 0; i < stylesFiles.length; i++) { + files.push(sourceDir + sassDir + stylesFiles[i]); + } + return gulp.src(files) .pipe($.sass({ sass: errorsDir + sassDir, imagePath: errorsDir + imagesDir, @@ -157,7 +165,7 @@ gulp.task("sprite", function() { .pipe(sprite({ name: "sprite", style: "_sprite.scss", - cssPath: "../images", + cssPath: "../" + imagesDir, retina: true, prefix: "sprite-icon", processor: "scss", diff --git a/assets/images/sprite/diaspora-blue.png b/assets/images/sprite/diaspora-blue.png new file mode 100644 index 0000000000..c2782b96db Binary files /dev/null and b/assets/images/sprite/diaspora-blue.png differ diff --git a/assets/images/sprite/diaspora-light.png b/assets/images/sprite/diaspora-light.png new file mode 100644 index 0000000000..b9cd344c3a Binary files /dev/null and b/assets/images/sprite/diaspora-light.png differ diff --git a/assets/images/sprite/diaspora.png b/assets/images/sprite/diaspora.png new file mode 100644 index 0000000000..d00a4f8290 Binary files /dev/null and b/assets/images/sprite/diaspora.png differ diff --git a/assets/js/ajax-actions.js b/assets/js/ajax-actions.js index 4ea8127717..7bf0030ed9 100644 --- a/assets/js/ajax-actions.js +++ b/assets/js/ajax-actions.js @@ -18,10 +18,19 @@ this.data(dataAttribute, text); }; + function synchText() { + $("#mobile-menu [data-ajax-input]").each(function () { + var dataAjaxInput = $(this).data("ajax-input"); + console.log($(this).text(), $(".sidebar").find("button[data-ajax-input='" + dataAjaxInput + "']").text(), dataAjaxInput); + + $(this).text($(".sidebar").find("button[data-ajax-input='" + dataAjaxInput + "']").text()); + }); + } + /** * Karma of the messages */ - $(".topic-message").on("click", ".upvote, .downvote", function(e){ + $(".topic-message").on("click", "button.upvote, button.downvote", function(e){ var $thumb = $(this), $form = $(this).parents("form:first"), $karma = $thumb.parents(".message-karma:first"), @@ -69,6 +78,8 @@ } else { $downvote.removeClass("more-voted"); } + + $thumb.blur(); } }); @@ -115,6 +126,8 @@ $act.toggleText("content-on-click"); $act.toggleClass("blue yellow"); + + synchText(); } }); @@ -162,6 +175,8 @@ $act.toggleText("content-on-click"); $act.toggleClass("blue"); + + synchText(); } }); e.stopPropagation(); @@ -200,6 +215,8 @@ $act.toggleText("content-on-click"); $act.toggleClass("green blue"); $("[data-ajax-output='solve-topic']").toggleClass("empty"); + + synchText(); } }); e.stopPropagation(); @@ -275,4 +292,32 @@ e.stopPropagation(); e.preventDefault(); }); + + /* + * Mark a message useful + */ + $(".topic-message").on("click", "[data-ajax-input='mark-message-as-useful']", function(e){ + var $button = $(this), + $form = $button.parents("form:first"), + $message = $form.parents("article"), + $usefulText = $message.find("[data-ajax-output='mark-message-as-useful']"), + csrfmiddlewaretoken = $form.find("input[name=csrfmiddlewaretoken]").val(); + + $.ajax({ + url: $form.attr("action"), + type: "POST", + data: { + "csrfmiddlewaretoken": csrfmiddlewaretoken + }, + success: function(){ + $message.toggleClass("helpful"); + $button.toggleText("content-on-click"); + $usefulText.toggleClass("hidden"); + $button.blur(); + } + }); + + e.stopPropagation(); + e.preventDefault(); + }); })(jQuery); diff --git a/assets/js/cookies-banner.js b/assets/js/cookies-banner.js deleted file mode 100644 index e91ef33b54..0000000000 --- a/assets/js/cookies-banner.js +++ /dev/null @@ -1,47 +0,0 @@ -/* ===== Zeste de Savoir ==================================================== - Manage tracking cookies message - --------------------------------- - Authors: Sandhose - Alex-D / Alexandre Demode - ========================================================================== */ - -(function(document, undefined) { - var $banner = $("#cookies-banner"); - - function checkHasConsent(){ - if(document.cookie.indexOf("hasconsent=true") > -1){ - $("#gtm").after( - "" - ); - } else if(document.cookie.indexOf("hasconsent=false") === -1){ - // Accept for the next page - setHasConsent(true); - - // Show the banner - $banner.show(); - } - } - checkHasConsent(); - - - function setHasConsent(hasconsent){ - document.cookie = "hasconsent="+hasconsent+"; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/"; - } - - $("#reject-cookies").on("click", function(){ - setHasConsent(false); - $banner.slideUp(200); - }); - - $("#accept-cookies").on("click", function(){ - checkHasConsent(); - $banner.slideUp(200); - }); -})(document); \ No newline at end of file diff --git a/assets/js/editor.js b/assets/js/editor.js index 50440a75ee..52dddb274e 100644 --- a/assets/js/editor.js +++ b/assets/js/editor.js @@ -579,8 +579,10 @@ "use strict"; $(".md-editor").on("keydown", function(e){ - // the message is submitted if the user is pressing Ctrl and Enter and isn't pressing Alt, Shift and Super - if(e.ctrlKey && e.which === 13 && !e.altKey && !e.shiftKey && !e.metaKey){ + // the message is submitted if the user is pressing Ctrl or Cmd with Enter and isn't pressing Alt or Shift + if((e.ctrlKey || e.metaKey) && e.which === 13 && !e.altKey && !e.shiftKey){ + e.preventDefault(); + $(".message-submit > button[name=answer]").click(); } }); diff --git a/assets/js/forgot-password.js b/assets/js/forgot-password.js new file mode 100644 index 0000000000..1d88ed1162 --- /dev/null +++ b/assets/js/forgot-password.js @@ -0,0 +1,34 @@ +/** + * Display the form for recorvering a password. + */ +(function($, undefined){ + "use strict"; + if ($("#id_email").val() == '') + $("#form-email").addClass("hidden"); + else + $("#form-email").removeClass("hidden"); + + $("[data-forgot-password-button=email]").on("click", function(e) { + $("#form-email").toggleClass("hidden"); + $("#form-username").addClass("hidden"); + + $("#id_username").val(''); + + e.preventDefault(); + }); + + if ($("#id_username").val() == '') + $("#form-username").addClass("hidden"); + else + $("#form-username").removeClass("hidden"); + + $("[data-forgot-password-button=username]").on("click", function(e) { + $("#form-username").toggleClass("hidden"); + $("#form-email").addClass("hidden"); + + $("#id_email").val(''); + + e.preventDefault(); + }); +})(jQuery); + diff --git a/assets/scss/base/_base.scss b/assets/scss/base/_base.scss index a852fe05ab..15fff5a1ce 100644 --- a/assets/scss/base/_base.scss +++ b/assets/scss/base/_base.scss @@ -43,6 +43,9 @@ textarea { color: #000; padding: 0.2em 0; text-align: center; + position: fixed; + z-index: 9999; + width: 100%; } .a11y { diff --git a/assets/scss/base/_helpers.scss b/assets/scss/base/_helpers.scss index f758e0aa74..1e425a5b9d 100644 --- a/assets/scss/base/_helpers.scss +++ b/assets/scss/base/_helpers.scss @@ -73,7 +73,7 @@ hr.clearfix { display: none; } -@media only screen and ($media-extra-wide) { +@media only screen and #{$media-extra-wide} { .wide { display: inline; } @@ -82,7 +82,7 @@ hr.clearfix { } } -@media only screen and ($media-wide) { +@media only screen and #{$media-wide} { .screen { display: inline; } diff --git a/assets/scss/base/_icons.scss b/assets/scss/base/_icons.scss index f627542065..24f0e075bc 100644 --- a/assets/scss/base/_icons.scss +++ b/assets/scss/base/_icons.scss @@ -16,7 +16,7 @@ background-repeat: no-repeat; @include sprite(); } - + &.alert:after { @include sprite-position($alert); } @@ -133,6 +133,18 @@ } } + &.diaspora { + &:after { + @include sprite-position($diaspora); + } + &.blue:after { + @include sprite-position($diaspora-blue); + } + &.light:after { + @include sprite-position($diaspora-light); + } + } + &.facebook { &:after { @include sprite-position($facebook); diff --git a/assets/scss/base/_tables.scss b/assets/scss/base/_tables.scss index f056b82c30..7cf367d4df 100644 --- a/assets/scss/base/_tables.scss +++ b/assets/scss/base/_tables.scss @@ -1,3 +1,8 @@ +.table-wrapper { + max-width: 100%; + overflow: auto; +} + table { margin: 15px 0; border-top: 1px solid #DDD; diff --git a/assets/scss/components/_cookies-banner.scss b/assets/scss/components/_cookies-banner.scss index 57724f083e..018e8a97d1 100644 --- a/assets/scss/components/_cookies-banner.scss +++ b/assets/scss/components/_cookies-banner.scss @@ -1,4 +1,4 @@ -#cookies-banner { +#cookies-eu-banner { padding: 0 2.5%; background: #062E41; display: none; @@ -11,7 +11,7 @@ line-height: 23px; } - a { + #cookies-eu-more { display: inline-block; color: #EEE; padding: 4px 13px; @@ -26,7 +26,7 @@ } } - #reject-cookies { + #cookies-eu-reject { display: inline-block; background: none; border: none; @@ -41,7 +41,7 @@ } } - #accept-cookies { + #cookies-eu-accept { text-decoration: none; background: #EEE; color: $color-primary; @@ -59,15 +59,15 @@ } @media only screen and #{$media-mega-wide} { - #cookies-banner { - #accept-cookies { + #cookies-eu-banner { + #cookies-eu-accept { float: right; } } } @media only screen and #{$media-mobile} { - #cookies-banner { + #cookies-eu-banner { position: absolute; top: 50px; right: 0; @@ -75,12 +75,12 @@ left: 0; z-index: 10; - p { + span { margin-top: 40px; padding: 0 20px; } - a, #accept-cookies { + #cookies-eu-more, #cookies-eu-accept { display: block; width: 100%; height: 40px; @@ -88,7 +88,7 @@ margin: 15px 0 0 0 !important; text-align: center; } - a { + #cookies-eu-more { margin-top: 40px !important; line-height: 40px; } diff --git a/assets/scss/components/_editor.scss b/assets/scss/components/_editor.scss index 35792df64e..b70eacdf78 100644 --- a/assets/scss/components/_editor.scss +++ b/assets/scss/components/_editor.scss @@ -10,7 +10,6 @@ display: block; float: left; cursor: pointer; - background-color: #FFF; border-bottom: 1px solid transparent; text-decoration: none; color: #999; diff --git a/assets/scss/components/_header-dropdown.scss b/assets/scss/components/_header-dropdown.scss index 8d426f43a9..345316d6ee 100644 --- a/assets/scss/components/_header-dropdown.scss +++ b/assets/scss/components/_header-dropdown.scss @@ -17,6 +17,15 @@ color: #FFF; } + &.header-menu-dropdown .dropdown-list > li { + @for $i from 1 through 4 { + &:first-child:nth-last-child(#{$i}), + &:first-child:nth-last-child(#{$i}) ~ li { + width: 100% / $i; + } + } + } + .dropdown-list { width: 100%; padding: 0; @@ -43,14 +52,15 @@ a { display: block; width: 95%; - height: 25px; + min-height: 25px; line-height: 25px; color: #95d7f5; + overflow: hidden; transition: all $transition-duration ease; &:hover, &:focus { - text-indent: 3%; + padding-left: 3%; background-color: rgba(0, 0, 0, .3) } } diff --git a/assets/scss/components/_mobile-menu.scss b/assets/scss/components/_mobile-menu.scss index e94f1bdd2f..d10c6bf129 100644 --- a/assets/scss/components/_mobile-menu.scss +++ b/assets/scss/components/_mobile-menu.scss @@ -114,6 +114,19 @@ left: 2px; } } + + .icon { + display: inline-block; + width: 16px; + height: 16px; + margin: 7px; + line-height:30px; + padding-left: 5px; + &:after { + top: 0px; + left: 0px; + } + } } } .mobile-menu-link { @@ -155,6 +168,10 @@ color: #EEE; } + img, span { + vertical-align: middle; + } + img { float: left; margin: 5px 5px 5px 0; diff --git a/assets/scss/components/_pagination.scss b/assets/scss/components/_pagination.scss index 6c05e7a922..6e80191022 100644 --- a/assets/scss/components/_pagination.scss +++ b/assets/scss/components/_pagination.scss @@ -98,4 +98,18 @@ .pagination { border: 1px solid #d2d5d6; } -} \ No newline at end of file +} + +@media only screen and #{$media-mobile} { + .pagination { + li { + &.prev a, + &.next a { + min-width: 0px; + span { + display: none; + } + } + } + } +} diff --git a/assets/scss/components/_topic-message.scss b/assets/scss/components/_topic-message.scss index 6eb335c117..f2b9e19de0 100644 --- a/assets/scss/components/_topic-message.scss +++ b/assets/scss/components/_topic-message.scss @@ -288,90 +288,83 @@ border-bottom-color: transparent; background: none !important; height: 32px; - + } + span { &.upvote, &.downvote { &:not(.has-vote) { - text-indent: -9999px; - width: 0; - } - } - &.disabled { - &, - &:hover, - &:focus { - border-bottom-color: transparent; - - &:after { - opacity: .25 !important; - } + border-bottom: none; + opacity: .5; } } } - span.upvote, - span.downvote { - &:not(.has-vote) { - border-bottom: none; - opacity: .5; - } - } - - .tick { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - - &:hover:not(.disabled), - &:focus:not(.disabled) { - color: #555; - border-bottom-color: $color-success; - } - &.active:not(.disabled) { - color: #48a200; + button { + // Disable transition for text-indent + transition-property: opacity, border; + &.voted:hover { &:after { - opacity: 1; + opacity: .5; } } } + .upvote, .downvote { &:after { left: 10px; } + &.voted:after { + opacity: 1; + } + + &:hover, + &:focus { + &:not(.more-voted) { + border-bottom-color: transparent; + } + } + + &:not(.has-vote) { + text-indent: -9999px; + width: 0; + } + + &.more-voted { + font-weight: bold; + } } .upvote { color: $color-success; - &:hover:not(.disabled), - &:focus:not(.disabled), &.more-voted { border-bottom-color: $color-success; } - &:not(.has-vote){ - text-indent: -9999px; - width: 0; - } } .downvote { color: $color-danger; - &:hover:not(.disabled), - &:focus:not(.disabled), &.more-voted { border-bottom-color: $color-danger; } } - .voted:after { - opacity: 1; - } - .more-voted { - font-weight: bold; - } - button.more-voted { + + .tick { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + &:hover, &:focus { - border-bottom-color: transparent !important; + color: #555; + border-bottom-color: $color-success; + } + &.active { + color: #48a200; + + &:after { + opacity: 1; + } } } } @@ -475,18 +468,6 @@ form.topic-message { margin-top: 50px; } -@media only screen and #{$media-tablet} { - .topic-message .message .message-bottom .message-karma { - a, - span { - &.upvote.has-vote, - &.downvote.has-vote { - padding-left: 27px; - } - } - } -} - @media only screen and #{$media-mobile-tablet} { .topic-message { padding: 20px 0; @@ -566,14 +547,6 @@ form.topic-message { top: 35px; left: 7px; - a, - span { - &:not(.has-vote){ - border-bottom-width: 1px !important; - border-bottom-color: #D2D5D6; - } - } - .tick { text-indent: -9999px; margin-right: 1px; @@ -587,10 +560,6 @@ form.topic-message { .downvote { padding: 0 7px; text-align: center; - - &.has-vote { - min-width: 30px; - } } } } @@ -667,20 +636,11 @@ form.topic-message { .message-actions a { width: 0px; text-indent: -9999px; - } - .message-actions a, - .message-karma a { + &:after { left: 12px !important; } } - .message-karma { - a, - span { - margin-right: 1px; - margin-left: 0; - } - } .message-submit { display: block !important; width: 100%; @@ -702,4 +662,4 @@ form.topic-message { form.forum-message .message { padding-top: 0 !important; } -} \ No newline at end of file +} diff --git a/assets/scss/layout/_content.scss b/assets/scss/layout/_content.scss index 614fceb9d8..3fa1978e4e 100644 --- a/assets/scss/layout/_content.scss +++ b/assets/scss/layout/_content.scss @@ -317,9 +317,14 @@ padding: 0 5px; } - mathjax { - font-size: 16px; - font-size: 1.6rem; + .mathjax-wrapper { + max-width: 100%; + overflow: auto; + + mathjax { + font-size: 16px; + font-size: 1.6rem; + } } .footnote { diff --git a/assets/scss/layout/_footer.scss b/assets/scss/layout/_footer.scss index 196dd29b63..fafc69afaa 100644 --- a/assets/scss/layout/_footer.scss +++ b/assets/scss/layout/_footer.scss @@ -88,7 +88,11 @@ height: auto; .wrapper { - flex-direction: column; + flex-direction: column; + + .social { + -ms-flex: none; // fix IE ≥ 10 + } } .copyright, .social { diff --git a/assets/scss/layout/_sidebar.scss b/assets/scss/layout/_sidebar.scss index a7053da28f..aadf2fb3b0 100644 --- a/assets/scss/layout/_sidebar.scss +++ b/assets/scss/layout/_sidebar.scss @@ -140,7 +140,7 @@ /** * Sidebar link variations / icons */ - &.unread { + &.selected { font-weight: bold; } @@ -148,6 +148,19 @@ border-right: 7px solid transparent; } + img, span { + vertical-align: middle; + } + + .icon { + border-right: 7px solid transparent; + display: inline-block; + width: 16px; + height: 16px; + margin: 7px 5px; + line-height:30px; + } + &.ico-after { &:after { top: 7px; @@ -269,6 +282,10 @@ transition: visibility 0s linear 0, opacity $transition-duration, left $transition-duration; } } + + &.unread { + font-weight: bold; + } } button { @@ -323,6 +340,10 @@ margin-bottom: 5px; background-color: #FFF; + & + a { + font-weight: bold; + } + ol { margin-top: 5px; padding-top: 5px; @@ -337,4 +358,4 @@ } } } -} \ No newline at end of file +} diff --git a/assets/scss/main.scss b/assets/scss/main.scss index fffdf7ee16..34806ecddf 100644 --- a/assets/scss/main.scss +++ b/assets/scss/main.scss @@ -58,6 +58,7 @@ @import "pages/home"; @import "components/home-search-box"; @import "pages/gallery"; +@import "pages/api"; /*------------------------ 9. Components diff --git a/assets/scss/only-ie.scss b/assets/scss/only-ie.scss new file mode 100644 index 0000000000..2f71fc02a8 --- /dev/null +++ b/assets/scss/only-ie.scss @@ -0,0 +1,58 @@ +/** + * Zeste de Savoir + * IE style file + * @file only-ie.scss + */ + +@import "variables/variables"; + +@media only screen and #{$media-wide} { + .main-container { + overflow: hidden; + } + + .main { + position: relative; + } + + .main .content-container { + float: right; + } + + .main .content-container::before { + background: $color-sidebar-background; + padding:30px 0 50px 0; + min-height: 2000px; + position: absolute; + display: block; + content: " "; + width: 22.5%; + height: 100%; + left: -.625%; + top: 0; + } + + .home .main .content-container::before { + padding-top: 0; + top: 30px; + } + + .main .sidebar { + position: relative; + } + + .page-footer .wrapper > * { + display: inline-block; + position: relative; + + &.social { + position: absolute; + left: 0; + right: 0; + } + + &.links { + float: right; + } + } +} \ No newline at end of file diff --git a/assets/scss/pages/_api.scss b/assets/scss/pages/_api.scss new file mode 100644 index 0000000000..02e85d8e14 --- /dev/null +++ b/assets/scss/pages/_api.scss @@ -0,0 +1,3 @@ +#resources_container .footer { + display: none; +} \ No newline at end of file diff --git a/doc/source/conf.py b/doc/source/conf.py index 11adc917a7..84253107fc 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -200,14 +200,19 @@ # -- Options for LaTeX output --------------------------------------------- latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', + # The paper size ('letterpaper' or 'a4paper'). + #'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + #'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + 'preamble': "".join(( + # Unicode fallback to build pdf (https://github.com/rtfd/readthedocs.org/issues/416#issuecomment-61596994) + '\DeclareUnicodeCharacter{00A0}{ }', # NO-BREAK SPACE + '\DeclareUnicodeCharacter{251C}{+}', # BOX DRAWINGS LIGHT VERTICAL AND RIGHT + '\DeclareUnicodeCharacter{2514}{+}', # BOX DRAWINGS LIGHT UP AND RIGHT + )), } # Grouping the document tree into LaTeX files. List of tuples diff --git a/doc/source/forum.rst b/doc/source/forum.rst index 4183c5446d..2fd1ec45c5 100644 --- a/doc/source/forum.rst +++ b/doc/source/forum.rst @@ -69,11 +69,11 @@ Dans un forum Il existe actuellement 3 filtres pour filtrer les sujets dans un forum : -* Sujets résolus (`solve`) -* Sujets non résolus (`unsolve`) -* Sujets sans réponse (`noanswer`) +* Sujets résolus (``solve``) +* Sujets non résolus (``unsolve``) +* Sujets sans réponse (``noanswer``) -Il suffit d'ajouter `?filter=` à l'URL en remplaçant `` par un des 3 filtre ci-dessus. +Il suffit d'ajouter ``?filter=`` à l'URL en remplaçant ```` par un des 3 filtre ci-dessus. Suivre un sujet =============== @@ -85,7 +85,7 @@ Nous permettons à nos membres de "suivre" un sujet directement sur le site. "Su Dès lors vous pourrez par un simple clic allé au dernier message non lu. -Pour repérer qu'un message est lu ou pas, nous utilisons côté backend la classe `Ì€zds.forum.models.TopicRead`` qui retient la date de dernière lecture du topic. +Pour repérer qu'un message est lu ou pas, nous utilisons côté backend la classe ``zds.forum.models.TopicRead`` qui retient la date de dernière lecture du topic. De la même manière nous utilisons la classe ``zds.forum.models.TopicFollowed`` pour retenir le fait que vous suivez ou non un sujet. Pour suivre un sujet, deux méthodes sont envisageables : diff --git a/doc/source/images/member/reinitialisation-mot-de-passe-1.png b/doc/source/images/member/reinitialisation-mot-de-passe-1.png new file mode 100644 index 0000000000..238d8242cf Binary files /dev/null and b/doc/source/images/member/reinitialisation-mot-de-passe-1.png differ diff --git a/doc/source/images/member/reinitialisation-mot-de-passe-2.png b/doc/source/images/member/reinitialisation-mot-de-passe-2.png new file mode 100644 index 0000000000..b3b9dcc08a Binary files /dev/null and b/doc/source/images/member/reinitialisation-mot-de-passe-2.png differ diff --git a/doc/source/images/search/opensearch-firefox.png b/doc/source/images/search/opensearch-firefox.png new file mode 100644 index 0000000000..bec7e8e7c0 Binary files /dev/null and b/doc/source/images/search/opensearch-firefox.png differ diff --git a/doc/source/install/deploy-in-production.rst b/doc/source/install/deploy-in-production.rst index 31a3b4cead..2bafa5f784 100644 --- a/doc/source/install/deploy-in-production.rst +++ b/doc/source/install/deploy-in-production.rst @@ -398,7 +398,7 @@ Il est possible de personnaliser ZdS pour n'importe quel site communautaire de p 'code': u"GPL v3", 'url_license': u"http://www.gnu.org/licenses/gpl-3.0.html", 'provider_name': u"Progdupeupl", - 'provider_url': u"http://progdupeu.pl", + 'provider_url': u"http://pdp.microjoe.org/", }, 'licence_info_title': u'http://zestedesavoir.com/tutoriels/281/le-droit-dauteur-creative-commons-et-les-licences-sur-zeste-de-savoir/', 'licence_info_link': u'Le droit d\'auteur, Creative Commons et les licences sur Zeste de Savoir' diff --git a/doc/source/install/install-solr.rst b/doc/source/install/install-solr.rst index fca9f96f05..98da58d5b8 100644 --- a/doc/source/install/install-solr.rst +++ b/doc/source/install/install-solr.rst @@ -12,7 +12,7 @@ Prérequis sur linux Avant toute chose soyez-sûr d'avoir Java (disponible dans les dépôts de votre distribution, ou `sur le site officiel `__). -Téléchargez `l'archive Solr `__ ou entrez la commande ``wget wget http://archive.apache.org/dist/lucene/solr/4.9.0/solr-4.9.0.zip``. +Téléchargez `l'archive Solr `__ ou entrez la commande ``wget http://archive.apache.org/dist/lucene/solr/4.9.0/solr-4.9.0.zip``. Puis décompressez l'archive avec ``unzip solr-4.9.0.zip``. diff --git a/doc/source/member.rst b/doc/source/member.rst index 8fc8ae9d65..84c39bf258 100644 --- a/doc/source/member.rst +++ b/doc/source/member.rst @@ -126,3 +126,39 @@ Pour pouvoir communiquer entre modérateur, il est utile d'avoir un outil de sui Cet outil à deux rôles. Permettre d'identifier les membres *perturbateurs* mais aussi les membres *moteurs* qui pourrait faire l'objet d'un article ou d'une mise en avant de leurs projets. Pour modifier le karma d'un membre, il faut donc être modérateur sur le site. Sur la fiche profil d'un membre apparait alors un formulaire pour ajouter un bonus/malus et une liste des modifications précédentes montrant l'impact (+/-), le message, l'auteur du bonus/malus et la date d'effet de ce dernier. + +L'interface de réinitialisation de mot de passe +----------------------------------------------- + +Quand le membre du site oublie son mot de passe, il peut le réinitialiser. L'ancien mot de passe est supprimé et l'utilisateur peut en choisir un nouveau. +Pour cela, il se rend sur la page de réinitialisation de mot de passe (``membres/reinitialisation/``) à partir de la page de connexion. + + .. figure:: images/member/reinitialisation-mot-de-passe-1.png + +Sur cette page l'utilisateur, doit rentrer son nom d'utilisateur ou son adresse de courriel. Pour cela, il clique sur le lien pour que le formullaire apparaisse. +Quand l'utilisateur clique sur le bouton de validation, un jeton est généré aléatoirement et est stocké dans une base de données. + +Un message est envoyé à l'adresse de courriel de l'utilisateur. Ce courriel contient un lien de réinitialisation. Ce lien contient un paramètre, le jeton de réinitialisation et dirige l'utilisateur vers l'adresse ``membres/new_password/``. + + .. figure:: images/member/reinitialisation-mot-de-passe-2.png + +Cette page permet de changer le mot de passe de l'utilisateur. L'utilisateur remplit le formulaire et clique sur le bouton de validation. +Si le mot de passe et le champ confirmation correspondent et que le mot de passe respecte les règles métiers, le mot de passe est changé. +Le systéme affiche un message de confirmation du changement du mot de passe. + +.. attention:: + + - Il n'existe aucune restriction sur le nombre de demande de réinitialisation + - Un utilisateur peut avoir le même nom d'utilisateur que l'adresse email de quelqu'un d'autre. Exemple: + + ================ ======================= + username email + ================ ======================= + firm1 firm1@gmail.com + firm1@gmail.com firm1@zestedesavoir.com + ================ ======================= +.. attention:: + + - Le mot de passe doit faire au moins 6 caractères. + - Le lien est valable une heure. Si l'utilisateur ne clique pas sur le lien dans le temps imparti, un message d'erreur est affiché. + - Le jeton de réinitialisation de mot de passe n'est valide qu'une seule fois. Si l'utilisateur tente de changer son mot de passe avec le même jeton, une page 404 est affiché à l'utilisateur. \ No newline at end of file diff --git a/doc/source/utils/opensearch.rst b/doc/source/utils/opensearch.rst new file mode 100644 index 0000000000..33321dff92 --- /dev/null +++ b/doc/source/utils/opensearch.rst @@ -0,0 +1,8 @@ +=================================================== +Installer un plugin de recherche à votre navigateur +=================================================== + +Vous pouvez installer un plugin de recherche à votre navigateur en deux clics. + + .. figure:: ../images/search/opensearch-firefox.png + :align: center \ No newline at end of file diff --git a/output_solr.txt b/output_solr.txt deleted file mode 100644 index a99c4bf4ee..0000000000 --- a/output_solr.txt +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - - - text - - - - - diff --git a/package.json b/package.json index d1c96479c4..e443fb91a0 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "homepage": "https://github.com/zestedesavoir/zds-site", "dependencies": { "browserify": "^8.1.0", + "cookies-eu-banner": "1.2.6", "css-sprite": "^0.9.0", "del": "^1.1.1", "gulp": "^3.7.0", diff --git a/quotes.txt b/quotes.txt index b69d314c3d..03163e8ec3 100644 --- a/quotes.txt +++ b/quotes.txt @@ -21,3 +21,14 @@ Apprenez à votre rythme, sans vous presser ! La connaissance, de A à Zeste. Sea zeste and sun. Venez comme vous zestes. +Ici, on se tient au jus ! +T'es mignon mais t'es un tout p'tit citron. +Un pépin ? On a la solution ! +Pulpe Fiction. +Viens partager un zeste sur les faux-rhum des topiques. +L'union fait le zeste ! +Ô râge, oh ?! des zestes poires ! +Joignez le zeste à la parole ! +Qui sème le zeste récolte le savoir. +Les petits zestes font les grands agrumes. +Vous ne voulez pas un smoothie d'abord ? diff --git a/requirements.txt b/requirements.txt index 7d3f8b1fc2..cfb3393d70 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,18 +13,18 @@ django-model-utils==2.2 django-munin==0.1.5 python-memcached==1.53 lxml==3.4.0 -pygal==1.5.1 factory-boy==2.4.1 pygeoip==0.3.2 pillow==2.7.0 gitpython==0.3.5 -https://github.com/zestedesavoir/Python-ZMarkdown/archive/2.4.1-zds.12.zip +https://github.com/zestedesavoir/Python-ZMarkdown/archive/2.6.0-zds.5.zip easy-thumbnails==2.2 # Api dependencies -djangorestframework==3.0.2 +djangorestframework==3.1.1 +djangorestframework-xml==1.0.1 django-filter==0.8 django-oauth-toolkit==0.7.2 drf-extensions==0.2.6 -django-rest-swagger==0.2.8 +django-rest-swagger==0.2.9 django-cors-headers==1.0.0 diff --git a/server/deploy.sh b/server/deploy.sh index c467254da8..2c63fd9f1e 100644 --- a/server/deploy.sh +++ b/server/deploy.sh @@ -46,15 +46,15 @@ git checkout $1 git checkout -b $1 # Front commands -source /usr/local/nvm/nvm.sh +[ -s /usr/local/nvm.sh ] && . /usr/local/nvm/nvm.sh # Update packages npm install --production # Remove unused packages npm prune --production # Clean the front stuff -npm run gulp -- clean +npm run clean # Build the front stuff -npm run gulp -- build +npm run build # Update application data source ../bin/activate @@ -75,4 +75,4 @@ sudo service nginx reload # Display current branch and commit git status -echo "Commit deployé : `git rev-parse HEAD`" +echo "Commit deployé : `git rev-parse HEAD`" diff --git a/templates/article/includes/sidebar_actions.part.html b/templates/article/includes/sidebar_actions.part.html index 362e10853f..1c3d8e41bf 100644 --- a/templates/article/includes/sidebar_actions.part.html +++ b/templates/article/includes/sidebar_actions.part.html @@ -109,7 +109,7 @@

{% trans "Validation" %}

  • - {% trans "Envoyer un MP" %} @@ -140,7 +140,7 @@

    {% trans "Validation" %}

  • {% csrf_token %} -
    diff --git a/templates/article/includes/warn_typo.part.html b/templates/article/includes/warn_typo.part.html new file mode 100644 index 0000000000..bee432cd1f --- /dev/null +++ b/templates/article/includes/warn_typo.part.html @@ -0,0 +1,33 @@ +{% load i18n %} + +{% if user.is_authenticated and on_line %} + + {% if user not in authors.all and authors_reachable|length >= 1 %} + +
    + {% trans "Signaler une faute dans l'article" %} + + + {% endif %} +{% endif %} \ No newline at end of file diff --git a/templates/article/index.html b/templates/article/index.html index 8c068d4ac4..00709e2c64 100644 --- a/templates/article/index.html +++ b/templates/article/index.html @@ -80,7 +80,7 @@
      {% for subcat,slug in subcats %}
    • - + {{ subcat }}
    • diff --git a/templates/article/member/index.html b/templates/article/member/index.html index 3fa5fb284b..ce611f2770 100644 --- a/templates/article/member/index.html +++ b/templates/article/member/index.html @@ -78,17 +78,17 @@

      {% trans "Filtres" %}

      • - + {% trans "Publiés" %}
      • - + {% trans "En validation" %}
      • - + {% trans "Brouillons" %}
      • @@ -105,17 +105,17 @@

        {% trans "Filtres" %}

        Trier

        • - + Par ordre alphabétique
        • - + Par date de création
        • - + Par date de dernière modification
        • diff --git a/templates/article/validation/index.html b/templates/article/validation/index.html index 3b985c3ab2..9145b54ca3 100644 --- a/templates/article/validation/index.html +++ b/templates/article/validation/index.html @@ -22,12 +22,12 @@

          {% trans "Filtres" %}

          • - + {% trans "En cours de validation" %}
          • - + {% trans "En attente de validateur" %}
          • diff --git a/templates/article/view.html b/templates/article/view.html index 0e3a151c26..e6571395bd 100644 --- a/templates/article/view.html +++ b/templates/article/view.html @@ -113,8 +113,10 @@

            {% block content %} {{ article.txt|safe }} - {% include "article/includes/pager.part.html" %} + + {% include "article/includes/warn_typo.part.html" with article=article authors=authors%} + {% endblock %} diff --git a/templates/base.html b/templates/base.html index 9170d7a5f4..14a15b77dc 100644 --- a/templates/base.html +++ b/templates/base.html @@ -83,11 +83,18 @@ {% block canonical %}{% endblock %} {% endif %} + + {# Webfont async loading #} + {% block extra_css %} + {% endblock %} + {# favicons #} @@ -104,12 +111,15 @@ {# RSS links #} + + {# OpenSearch plugin autodiscovery #} + - @@ -129,13 +139,13 @@

          -
          +
          {% trans "Ce site utilise Google Analytics. En poursuivant votre navigation sur ce site, vous nous autorisez à déposer des cookies à des fins de mesure d'audience. Pour s'opposer à ce dépôt vous pouvez cliquer" %} - . - {% trans "En savoir plus" %} - + . + {% trans "En savoir plus" %} +
          @@ -270,7 +280,7 @@ {% with topics=user|interventions_privatetopics %} {% with unread_topics=topics.unread %} {% with total_topics=topics.total %} - + {% if total_topics > 0 %} {{ total_topics }} {% endif %} @@ -304,7 +314,7 @@ {% endif %}
        - + {% trans "Tous les messages" %} @@ -485,11 +495,11 @@ @@ -498,44 +508,46 @@
        - {% block pre_content %} - {% endblock %} - -
        -
        - {% if messages %} - {% for message in messages %} -
        - {{ message }} - {% trans "Masquer l'alerte" %} -
        - {% endfor %} - {% endif %} + {% block doc_api %} + {% block pre_content %} + {% endblock %} + +
        +
        + {% if messages %} + {% for message in messages %} +
        + {{ message }} + {% trans "Masquer l'alerte" %} +
        + {% endfor %} + {% endif %} - {% block content_out %} - {% captureas schema %} - {% block schema %}{% endblock %} - {% endcaptureas %} -
        -

        - {% block headline %}{% endblock %} -

        - - {% captureas headlinesub %} - {% block headline_sub %}{% endblock %} + {% block content_out %} + {% captureas schema %} + {% block schema %}{% endblock %} {% endcaptureas %} +
        +

        + {% block headline %}{% endblock %} +

        - {% if headlinesub %} -

        {{ headlinesub|safe }}

        - {% endif %} + {% captureas headlinesub %} + {% block headline_sub %}{% endblock %} + {% endcaptureas %} - {% block content %}{% endblock %} -
        - {% endblock %} -
        + {% if headlinesub %} +

        {{ headlinesub|safe }}

        + {% endif %} - {% block sidebar %}{% endblock %} -
        + {% block content %}{% endblock %} + + {% endblock %} +
        + + {% block sidebar %}{% endblock %} +
        + {% endblock %}
        @@ -581,15 +593,6 @@

        {{ headlin - {# Google Tag Manager #} - - - - - {# Javascript stuff start #} {% if debug %} @@ -599,6 +602,25 @@

        {{ headlin {% endif %} + {% block extra_js %} + {% endblock %} + + + + {# Google Analytics #} + {% if app.site.googleAnalyticsID and app.site.googleTagManagerID %} + + {% endif %} + {# MathJax #} @@ -608,6 +630,8 @@

        {{ headlin inlineMath: [['$', '$']], displayMath: [['$$','$$']], processEscapes: true, + processClass: "message-content|article-content", + ignoreClass: "page-container" }, TeX: { extensions: ["color.js", "cancel.js", "enclose.js", "bbox.js", "mathchoice.js", "newcommand.js", "verb.js", "unicode.js", "autobold.js", "mhchem.js"] }, messageStyle: "none", diff --git a/templates/base_content_page.html b/templates/base_content_page.html index 5c3cfc9cfc..74d90e1c05 100644 --- a/templates/base_content_page.html +++ b/templates/base_content_page.html @@ -7,9 +7,11 @@
        {% block headline %}{% endblock %}
        -
        - {% block content %}{% endblock %} -
        + {% block content_page %} +
        + {% block content %}{% endblock %} +
        + {% endblock %} {% block content_after %}{% endblock %} {% block content_ext %}{% endblock %} diff --git a/templates/email/mp/direct.html b/templates/email/base.html similarity index 65% rename from templates/email/mp/direct.html rename to templates/email/base.html index f1b8fa4bf7..9f255e45be 100644 --- a/templates/email/mp/direct.html +++ b/templates/email/base.html @@ -1,8 +1,9 @@ -{% load i18n %} - {{ msg }} - \ No newline at end of file + {% block content %} + {% endblock %} + + diff --git a/templates/email/base_from_staff.html b/templates/email/base_from_staff.html new file mode 100644 index 0000000000..148ddee3af --- /dev/null +++ b/templates/email/base_from_staff.html @@ -0,0 +1,19 @@ +{% extends "email/base.html" %} + +{% load i18n %} + +{% block content %} +

        + {% trans "Bonjour" %} {{ username }}, +

        + + {% block content_from_staff %} + {% endblock %} + +

        + {% trans "Cordialement," %} +

        +

        + {% trans "L'équipe" %} {{ site_name }} +

        +{% endblock %} diff --git a/templates/email/base_from_staff.txt b/templates/email/base_from_staff.txt new file mode 100644 index 0000000000..21d8324f36 --- /dev/null +++ b/templates/email/base_from_staff.txt @@ -0,0 +1,8 @@ +{% load i18n %} +{% trans "Bonjour" %} {{ username }}, + +{% block content_from_staff %}{% endblock %} + +{% trans "Cordialement," %} + +{% trans "L'équipe" %} {{ site_name }} diff --git a/templates/email/direct.html b/templates/email/direct.html new file mode 100644 index 0000000000..a0e7068584 --- /dev/null +++ b/templates/email/direct.html @@ -0,0 +1,7 @@ +{% extends "email/base.html" %} + +{% load i18n %} + +{% block content %} + {{ msg }} +{% endblock %} diff --git a/templates/email/mp/direct.txt b/templates/email/direct.txt similarity index 61% rename from templates/email/mp/direct.txt rename to templates/email/direct.txt index 0d666ce145..9c0a5df119 100644 --- a/templates/email/mp/direct.txt +++ b/templates/email/direct.txt @@ -1,2 +1,2 @@ {% load i18n %} -{{ msg }} \ No newline at end of file +{{ msg }} diff --git a/templates/email/forgot_password/confirm.html b/templates/email/forgot_password/confirm.html deleted file mode 100644 index d2398ca291..0000000000 --- a/templates/email/forgot_password/confirm.html +++ /dev/null @@ -1,26 +0,0 @@ -{% load i18n %} - - - - - - {% trans "Bonjour" %} {{ username }}, -
        -
        - {% trans "Vous recevez ce message parce qu'une réinitialisation du mot de passe de votre compte utilisateur a été demandée sur" %} {{ site_name }}. -
        -
        -
        - {% trans "ATTENTION" %} -
        - {% trans "Si vous n'avez pas demandé une réinitialisation du mot de passe, IGNOREZ et EFFACEZ ce courriel immédiatement ! Continuez uniquement si vous souhaitez que votre mot de passe soit réinitialisé !" %} -
        -
        - {% trans "Cliquez ou recopiez simplement le lien et complétez le reste du formulaire : " %} : {{ url }}. -
        -
        -
        - {% trans "Cordialement" %}, -
        - {% trans "L'équipe" %} {{ site_name }} - \ No newline at end of file diff --git a/templates/email/forum/new_post.html b/templates/email/forum/new_post.html new file mode 100644 index 0000000000..e82cd9f0f9 --- /dev/null +++ b/templates/email/forum/new_post.html @@ -0,0 +1,13 @@ +{% extends "email/base_from_staff.html" %} + +{% load i18n %} + +{% block content_from_staff %} +

        + {{ author }} {% trans "a répondu au sujet" %} "{{ title }}" {% trans "que vous suivez sur" %} {{ site_name }}. +

        + +

        + {% trans "Pour le lire," %} {% trans "cliquez ici" %} +

        +{% endblock %} diff --git a/templates/email/forum/new_post.txt b/templates/email/forum/new_post.txt new file mode 100644 index 0000000000..6a1bb6e167 --- /dev/null +++ b/templates/email/forum/new_post.txt @@ -0,0 +1,8 @@ +{% extends "email/base_from_staff.txt" %} +{% load i18n %} + +{% block content_from_staff %} +{{ author }} {% trans "a répondu au sujet" %} "{{ title }}" {% trans "que vous suivez sur" %} {{ site_name }}. + +{% trans "Pour le lire," %} {% trans "cliquez ou recopiez l'url suivante" %} : {{ url }} +{% endblock %} diff --git a/templates/email/member/confirm_forgot_password.html b/templates/email/member/confirm_forgot_password.html new file mode 100644 index 0000000000..95b08bd605 --- /dev/null +++ b/templates/email/member/confirm_forgot_password.html @@ -0,0 +1,24 @@ +{% extends "email/base_from_staff.html" %} + +{% load i18n %} + +{% block content_from_staff %} +

        + {% trans "Vous recevez ce message parce qu'une réinitialisation du mot de passe de votre compte utilisateur a été demandée sur" %} {{ site_name }}. +

        + +
        + +

        + {% trans "ATTENTION" %} +

        +

        + {% trans "Si vous n'avez pas demandé une réinitialisation du mot de passe, IGNOREZ et EFFACEZ ce courriel immédiatement ! Continuez uniquement si vous souhaitez que votre mot de passe soit réinitialisé !" %} +

        + +
        + +

        + {% trans "Cliquez ou recopiez simplement le lien et complétez le reste du formulaire" %} : {{ url }}. +

        +{% endblock %} diff --git a/templates/email/forgot_password/confirm.txt b/templates/email/member/confirm_forgot_password.txt similarity index 67% rename from templates/email/forgot_password/confirm.txt rename to templates/email/member/confirm_forgot_password.txt index f91607659f..d03fe90126 100644 --- a/templates/email/forgot_password/confirm.txt +++ b/templates/email/member/confirm_forgot_password.txt @@ -1,13 +1,16 @@ +{% extends "email/base_from_staff.txt" %} {% load i18n %} -{% trans "Bonjour" %} {{ username }}, -{% trans "Vous recevez ce message parce qu'une réinitialisation du mot de passe de votre compte utilisateur a été demandée sur" %} {{ site_name }}. +{% block content_from_staff %} +{% trans "Vous recevez ce message parce qu'une réinitialisation du mot de passe de votre compte utilisateur a été demandée sur" %} {{ site_name }} ({{ site_url }}). + +----- {% trans "ATTENTION" %} -{% trans "Si vous n'avez pas demandé une réinitialisation du mot de passe, IGNOREZ et EFFACEZ ce courriel immédiatement ! Continuez uniquement si vous souhaitez que votre mot de passe soit réinitialisé ! " %} -{% trans "Cliquez ou recopiez simplement le lien et complétez le reste du formulaire : " %} {{ url }}. +{% trans "Si vous n'avez pas demandé une réinitialisation du mot de passe, IGNOREZ et EFFACEZ ce courriel immédiatement ! Continuez uniquement si vous souhaitez que votre mot de passe soit réinitialisé !" %} +----- -{% trans "Cordialement," %} -{% trans "L'équipe" %} {{ site_name }} \ No newline at end of file +{% trans "Cliquez ou recopiez simplement le lien et complétez le reste du formulaire" %} : {{ url }}. +{% endblock %} diff --git a/templates/email/register/confirm.html b/templates/email/member/confirm_registration.html similarity index 57% rename from templates/email/register/confirm.html rename to templates/email/member/confirm_registration.html index 5a025583dd..e91f6ace1f 100644 --- a/templates/email/register/confirm.html +++ b/templates/email/member/confirm_registration.html @@ -1,28 +1,22 @@ +{% extends "email/base_from_staff.html" %} + {% load i18n %} - - - - - - {% trans "Bonjour" %} {{ username }}, -
        -
        + +{% block content_from_staff %}

        {% blocktrans %} Vous vous êtes inscrit sur {{ site_name }} et nous vous en remercions. En étant membre de notre communauté, vous aurez la possibilité de rédiger des tutoriels et des articles que vous pourrez ensuite publier et ainsi de rendre vos connaissances accessibles au plus grand nombre. Vous pourrez également échanger avec les autres membres sur nos forums ! -
        - Il ne vous reste plus qu'à activer votre profil ! Pour ce faire, visitez le lien ci-dessous : -
        - {{ url }} -
        -
        - A très bientôt ! -
        - L'équipe {{ site_name }} {% endblocktrans %}

        - - \ No newline at end of file +

        + {% blocktrans %} + Il ne vous reste plus qu'à activer votre profil ! Pour ce faire, visitez ce lien. + {% endblocktrans %} +

        +

        + {% trans "A très bientôt !" %} +

        +{% endblock %} diff --git a/templates/email/register/confirm.txt b/templates/email/member/confirm_registration.txt similarity index 55% rename from templates/email/register/confirm.txt rename to templates/email/member/confirm_registration.txt index 1990f1a1ff..34382b708b 100644 --- a/templates/email/register/confirm.txt +++ b/templates/email/member/confirm_registration.txt @@ -1,16 +1,17 @@ +{% extends "email/base_from_staff.txt" %} {% load i18n %} -{% trans "Bonjour" %} {{ username }}, +{% block content_from_staff %} {% blocktrans %} -Vous vous êtes inscrit sur {{site_name}} et nous vous en remercions. +Vous vous êtes inscrit sur {{ site_name }} ({{ site_url }}) et nous vous en remercions. En étant membre de notre communauté, vous aurez la possibilité de rédiger des tutoriels et des articles que vous pourrez ensuite publier et ainsi rendre votre savoir accessible au plus grand nombre. Vous pourrez également échanger avec les autres membres sur nos forums ! +{% endblocktrans %} -Il ne vous reste plus qu'à activer votre profil ! Pour ce faire, visitez le lien ci-dessous : - -{{ url }} +{% blocktrans %} +Il ne vous reste plus qu'à activer votre profil ! Pour ce faire, visitez le lien ci-dessous : {{ url }} +{% endblocktrans %} -A très bientôt ! -L'équipe {{site_name}} -{% endblocktrans %} \ No newline at end of file +{% trans "A très bientôt !" %} +{% endblock %} diff --git a/templates/email/mp/new.html b/templates/email/mp/new.html index 4640e980be..3516c2565e 100644 --- a/templates/email/mp/new.html +++ b/templates/email/mp/new.html @@ -1,20 +1,13 @@ +{% extends "email/base_from_staff.html" %} + {% load i18n %} - - - - - - {% trans "Bonjour" %} {{ username }}, -
        -
        - {{ author }} {% trans "vous a envoyé un message privé sur" %} {{app.site.litteral_name}}. -
        -
        - {% trans "Pour le lire" %}, {% trans "cliquez ici" %}. -
        -
        -
        - {% trans "Cordialement" %}, -
        - {% trans "L'équipe" %} {{app.site.litteral_name}} - + +{% block content_from_staff %} +

        + {{ author }} {% trans "vous a envoyé un message privé sur" %} {{ site_name }}. +

        + +

        + {% trans "Pour le lire," %} {% trans "cliquez ici" %}. +

        +{% endblock %} diff --git a/templates/email/mp/new.txt b/templates/email/mp/new.txt index f0ca60473f..5e15aec60a 100644 --- a/templates/email/mp/new.txt +++ b/templates/email/mp/new.txt @@ -1,10 +1,8 @@ +{% extends "email/base_from_staff.txt" %} {% load i18n %} -{% trans "Bonjour" %} {{ username }}, -{{ author }} {% trans "vous a envoyé un message privé sur" %} {{app.site.litteral_name}} +{% block content_from_staff %} +{{ author }} {% trans "vous a envoyé un message privé sur" %} {{ site_name }}. -{% trans "Pour le lire, cliquez ou recopiez l'url suivante" %} : {{ url }} - -{% trans "Cordialement" %}, - -{% trans "L'équipe" %} {{app.site.litteral_name}} +{% trans "Pour le lire," %} {% trans "cliquez ou recopiez l'url suivante" %} : {{ url }} +{% endblock %} diff --git a/templates/email/mp/new_participant.html b/templates/email/mp/new_participant.html new file mode 100644 index 0000000000..888f40b8d2 --- /dev/null +++ b/templates/email/mp/new_participant.html @@ -0,0 +1,13 @@ +{% extends "email/base_from_staff.html" %} + +{% load i18n %} + +{% block content_from_staff %} +

        + {{ author }} {% trans "vous a invité pour participer à une discussion privée sur" %} {{ site_name }}. +

        + +

        + {% trans "Pour le lire," %} {% trans "cliquez ici" %}. +

        +{% endblock %} diff --git a/templates/email/mp/new_participant.txt b/templates/email/mp/new_participant.txt new file mode 100644 index 0000000000..398c958adb --- /dev/null +++ b/templates/email/mp/new_participant.txt @@ -0,0 +1,8 @@ +{% extends "email/base_from_staff.txt" %} +{% load i18n %} + +{% block content_from_staff %} +{{ author }} {% trans "vous a invité pour participer à une discussion privée sur" %} {{ site_name }}. + +{% trans "Pour le lire," %} {% trans "cliquez ou recopiez l'url suivante" %} : {{ url }} +{% endblock %} diff --git a/templates/email/notification/new.html b/templates/email/notification/new.html deleted file mode 100644 index ec5b4df2a0..0000000000 --- a/templates/email/notification/new.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load i18n %} - - - - - - {% trans "Bonjour" %} {{ username }}, -
        -
        - {{ author }} {% trans "a répondu au sujet" %} "{{title}}" {% trans "que vous suivez sur" %} {{app.site.litteral_name}}. -
        -
        - {% trans "Pour le lire" %}, {% trans "cliquez ici" %} -
        -
        -
        - {% trans "Cordialement" %}, -
        - {% trans "L'équipe" %} {{app.site.litteral_name}} - \ No newline at end of file diff --git a/templates/email/notification/new.txt b/templates/email/notification/new.txt deleted file mode 100644 index 48fd2ca18b..0000000000 --- a/templates/email/notification/new.txt +++ /dev/null @@ -1,10 +0,0 @@ -{% load i18n %} -{% trans "Bonjour" %} {{ username }}, - -{{ author }} {% trans "a répondu au sujet" %} "{{title}}" {% trans "que vous suivez sur" %} {{app.site.litteral_name}} - -{% trans "Pour le lire, cliquez ou recopiez l'url suivante" %} : {{ url }} - -{% trans "Cordialement, - -L'équipe" %} {{app.site.litteral_name}} \ No newline at end of file diff --git a/templates/email/assoc/subscribe.html b/templates/email/pages/assoc_subscribe.html similarity index 59% rename from templates/email/assoc/subscribe.html rename to templates/email/pages/assoc_subscribe.html index 2ba52e90c2..39abd24dfa 100644 --- a/templates/email/assoc/subscribe.html +++ b/templates/email/pages/assoc_subscribe.html @@ -1,16 +1,14 @@ +{% extends "email/base.html" %} + {% load i18n %} - - - - - - - {% trans "Bonjour, membres du CA" %}, -
        -
        + +{% block content %}

        - {% blocktrans with asso_name=app.site.association.name %} - Le membre {{ username }} souhaiterait adhérer à {{asso_name}}. + {% trans "Bonjour membres du CA," %} +

        +

        + {% blocktrans %} + Le membre {{ username }} souhaiterait adhérer à {{ asso_name }}. {% endblocktrans %}

          @@ -25,10 +23,13 @@ {{ justification|linebreaks }}

          - {% trans "Cliquez ici pour voir son profil sur le site" %} : {{ profile_url }}.

          -

          {% trans "Cordialement" %},
          - {{app.member.bot_account}}

          - \ No newline at end of file +

          + {% trans "Cordialement," %} +

          +

          + {{ bot_name }} +

          +{% endblock %} diff --git a/templates/email/assoc/subscribe.txt b/templates/email/pages/assoc_subscribe.txt similarity index 66% rename from templates/email/assoc/subscribe.txt rename to templates/email/pages/assoc_subscribe.txt index 905b3dea3f..b51a65cc89 100644 --- a/templates/email/assoc/subscribe.txt +++ b/templates/email/pages/assoc_subscribe.txt @@ -1,8 +1,8 @@ {% load i18n %} -{% trans "Bonjour, membres du CA !" %} +{% trans "Bonjour membres du CA," %} -{% blocktrans with asso_name=app.site.association.name %} -Le membre {{ username }} demande à adhérer à {{asso_name}} ! +{% blocktrans %} +Le membre {{ username }} souhaiterait adhérer à {{ asso_name }}. {% endblocktrans %} {% trans "Identité" %} : {{ full_name }} @@ -17,4 +17,4 @@ Le membre {{ username }} demande à adhérer à {{asso_name}} ! {% trans "Cordialement," %} -{{app.member.bot_account}} \ No newline at end of file +{{ bot_name }} diff --git a/templates/forum/category/forum.html b/templates/forum/category/forum.html index 2e8adee868..b46ca24bee 100644 --- a/templates/forum/category/forum.html +++ b/templates/forum/category/forum.html @@ -108,21 +108,21 @@

          {% trans "Filtres" %}

          • {% trans "Sujets résolus" %}
          • {% trans "Sujets non résolus" %}
          • {% trans "Sujets sans réponse" %} diff --git a/templates/forum/find/post.html b/templates/forum/find/post.html index 61d287aef4..c8b352b23f 100644 --- a/templates/forum/find/post.html +++ b/templates/forum/find/post.html @@ -46,7 +46,7 @@
            - {{ post.topic.title }} + {{ post.topic.title }} {% if post.topic.subtitle %}

            {{ post.topic.subtitle }}

            {% endif %}
            @@ -54,7 +54,14 @@ {{ post.pubdate|format_date }} - {{ post.text|truncatechars:200|emarkdown|striptags }} + {% if post.is_visible %} + {{ post.text|truncatechars:200|emarkdown|striptags }} + {% else %} + {% if post.text_hidden %} + {% trans "Masqué par" %} {{ post.editor }} + : {{ post.text_hidden }} + {% endif %} + {% endif %} {% endfor %} diff --git a/templates/forum/find/topic.html b/templates/forum/find/topic.html old mode 100644 new mode 100755 index 91af51c6e3..46f250a5da --- a/templates/forum/find/topic.html +++ b/templates/forum/find/topic.html @@ -6,13 +6,13 @@ {% block title %} - {% trans "Sujets crées par" %} {{ usr.username }} + {% trans "Sujets créés par" %} {{ usr.username }} {% endblock %} {% block headline %} - {% trans "Sujets crées par" %} "{{ usr.username }}" + {% trans "Sujets créés par" %} "{{ usr.username }}" {% endblock %} @@ -21,7 +21,7 @@ {% with profile=usr|profile %}
          • {{ usr.username }}
          • {% endwith %} -
          • {% trans "Sujets crées" %}
          • +
          • {% trans "Sujets créés" %}
          • {% trans "Recherche" %}
          • {% endblock %} @@ -44,7 +44,7 @@
            - {{ topic.title }} + {{ topic.title }} {% if topic.subtitle %}

            {{ topic.subtitle }}

            {% endif %}
            @@ -52,7 +52,14 @@ {{ topic.pubdate|format_date }} - {{ topic.first_post.text|truncatechars:200|emarkdown|striptags }} + {% if topic.first_post.is_visible %} + {{ topic.first_post.text|truncatechars:200|emarkdown|striptags }} + {% else %} + {% if topic.first_post.text_hidden %} + {% trans "Masqué par" %} {{ topic.first_post.editor }} + : {{ topic.first_post.text_hidden }} + {% endif %} + {% endif %} {% endfor %} diff --git a/templates/forum/topic/index.html b/templates/forum/topic/index.html index 565acc6bc4..667333af33 100644 --- a/templates/forum/topic/index.html +++ b/templates/forum/topic/index.html @@ -231,19 +231,34 @@

            {% trans "Modération" %}

            • -
              + + {% if topic.is_locked %} + {% trans "Ouvrir le sujet" %} + {% else %} + {% trans "Fermer le sujet" %} + {% endif %} + + {% csrf_token %} -
            • diff --git a/templates/gallery/gallery/details.html b/templates/gallery/gallery/details.html index 5fc9b9b55b..92e968f553 100644 --- a/templates/gallery/gallery/details.html +++ b/templates/gallery/gallery/details.html @@ -117,22 +117,22 @@ -{% block sidebar_actions %} +{% block sidebar %} {% if gallery_mode.is_write %} - + {% endif %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/member/forgot_password/index.html b/templates/member/forgot_password/index.html index 658110297b..b629aee994 100644 --- a/templates/member/forgot_password/index.html +++ b/templates/member/forgot_password/index.html @@ -20,20 +20,36 @@ {% endblock %} - {% block content %} + {% if not user.is_authenticated %} {% if error %} {{ error }} {% endif %} -

              - {% trans "Si vous avez perdu votre mot de passe, vous pouvez utiliser ce formulaire pour le ré-initialiser. Saisissez votre identifiant dans le champ ci-dessous." %} -

              -

              - {% trans "Une fois le formulaire envoyé, vous recevrez un courriel demandant la validation de cette requête pour s'assurer qu'aucune tentative d'abus n'a eu lieu. Ce courriel contiendra également un lien sur lequel vous devrez cliquer pour avoir plus d'instructions." %} -

              + + {% blocktrans %} +

              + Si vous avez perdu votre mot de passe, vous pouvez utiliser ce formulaire pour le ré-initialiser. + Saisissez votre nom d'utilisateur ou votre adresse de courriel dans les champs ci-dessous. +

              + +

              + Une fois le formulaire envoyé, vous recevrez un courriel demandant la validation de cette + requête pour s'assurer qu'aucune tentative d'abus n'a eu lieu. + Ce courriel contiendra également un lien sur + lequel vous devrez cliquer pour avoir plus d'instructions. +

              + +

              Comment souhaitez vous retrouvez votre mot de passe ? +

              +

              + {% endblocktrans %} + {% crispy form %} {% else %}

              {% trans "Vous êtes connecté" %}

              {% endif %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/member/new_password/success.html b/templates/member/new_password/success.html index 258320bc35..7744b4ad72 100644 --- a/templates/member/new_password/success.html +++ b/templates/member/new_password/success.html @@ -3,13 +3,13 @@ {% block title %} - {% trans "Nouveau mot de passe réussi" %} + {% trans "La modification du mot de passe a été éffectuée" %} {% endblock %} {% block headline %} - {% trans "Nouveau mot de passe réussi" %} + {% trans "La modification du mot de passe a été éffectuée" %} {% endblock %} diff --git a/templates/member/profile.html b/templates/member/profile.html index 40b91f7db9..ddf1d9966f 100644 --- a/templates/member/profile.html +++ b/templates/member/profile.html @@ -1,4 +1,5 @@ {% extends "member/base.html" %} + {% load emarkdown %} {% load email_obfuscator %} {% load date %} @@ -79,7 +80,7 @@

              {% endif %}

            - {% if perms.member.change_profile %} + {% if perms.member.change_profile and not profile.is_private %}
            {% trans "Remarques sur cet utilisateur" %} ({{ profile.karma }}) :
            - {% if perms.member.change_profile %} + {% if perms.member.change_profile and profile.user.is_active %}
          + {% if not profile.is_private %}

          {% trans "Sanctions" %}

            {% if profile.can_write_now %} @@ -552,6 +560,7 @@

            {% trans "Sanctions" %}

            {% endif %}
          + {% endif %} {% endif %} {% endblock %} diff --git a/templates/member/register/token_success.html b/templates/member/register/token_success.html index 3392f3515f..772492b464 100644 --- a/templates/member/register/token_success.html +++ b/templates/member/register/token_success.html @@ -28,7 +28,6 @@

          {% trans "Confirmation d'inscription réussie" %} !

          {% trans "Vous pouvez maintenant vous connecter et partager avec tous les membres" %}. {% crispy form %} - {% trans "Mot de passe déjà oublié" %} ?

          {% endblock %} diff --git a/templates/misc/badge.part.html b/templates/misc/badge.part.html index b00884c9ea..189bc5dfaf 100644 --- a/templates/misc/badge.part.html +++ b/templates/misc/badge.part.html @@ -3,11 +3,13 @@ {% with status=member|state %} - {% if status == 'BAN'%} + {% if status == 'STAFF' %} + {% trans "Staff" %} + {% elif status == 'DOWN'%} + {% trans "Dead" %} + {% elif status == 'BAN'%} {% trans "Banni" %} {% elif status == 'LS'%} {% trans "LS" %} - {% elif status == 'STAFF' %} - {% trans "Staff" %} {% endif %} -{% endwith %} \ No newline at end of file +{% endwith %} diff --git a/templates/misc/member_item.part.html b/templates/misc/member_item.part.html index 2d606fa4af..017df05977 100644 --- a/templates/misc/member_item.part.html +++ b/templates/misc/member_item.part.html @@ -4,7 +4,7 @@ {% with profile=member|profile %} {% endif %} - {% if message.is_useful and not is_creator %} -

          - {% trans "Cette réponse a aidé l'auteur du sujet" %} -

          - {% endif %} +

          + {% trans "Cette réponse a aidé l'auteur du sujet" %} +

          {% if message.is_visible != False %}
          @@ -246,11 +247,21 @@ {% if topic.author = user or perms_change %}
          {% csrf_token %} -
          @@ -320,9 +331,7 @@ {% endif %} - {% if upvote_link %} -
          - {% endif %} + {% endif %} {% endif %} diff --git a/templates/misc/message_form.html b/templates/misc/message_form.html index d82e8c7806..cd9aa2ba15 100644 --- a/templates/misc/message_form.html +++ b/templates/misc/message_form.html @@ -9,7 +9,7 @@ {% elif not user.is_authenticated %}

          Pas encore inscrit ?

          @@ -72,4 +72,4 @@

          Pas encore inscrit ?

          -{% endif %} \ No newline at end of file +{% endif %} diff --git a/templates/misc/pagination.part.html b/templates/misc/pagination.part.html index 0c48546972..d65cd8b011 100644 --- a/templates/misc/pagination.part.html +++ b/templates/misc/pagination.part.html @@ -15,7 +15,9 @@ @@ -61,10 +63,12 @@ {% endif %}
        -{% endif %} \ No newline at end of file +{% endif %} diff --git a/templates/misc/social_buttons.part.html b/templates/misc/social_buttons.part.html index 97ff25f913..08071189cf 100644 --- a/templates/misc/social_buttons.part.html +++ b/templates/misc/social_buttons.part.html @@ -24,6 +24,13 @@

        {% trans "Partager" %}

        Google+ +
      • + + Diaspora* + +
      • {% trans "Messagerie Privée" %}
      • +
      • {% trans "Messagerie Privée" %}
      • {% endblock %} @@ -29,7 +29,7 @@ {% block sidebar %}