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=
+ {% trans "Bonjour" %} {{ username }},
+
+ {% trans "Cordialement," %}
+
+ {% trans "L'équipe" %} {{ site_name }}
+
+ {{ author }} {% trans "a répondu au sujet" %} "{{ title }}" {% trans "que vous suivez sur" %} {{ site_name }}.
+
+ {% trans "Pour le lire," %} {% trans "cliquez ici" %}
+
+ {% 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 "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 }}.
+
{% 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 !
-
+ {% blocktrans %}
+ Il ne vous reste plus qu'Ã activer votre profil ! Pour ce faire, visitez ce lien.
+ {% endblocktrans %}
+
+ {% trans "A très bientôt !" %}
+
+ {{ author }} {% trans "vous a envoyé un message privé sur" %} {{ site_name }}.
+
+ {% trans "Pour le lire," %} {% trans "cliquez ici" %}.
+
+ {{ author }} {% trans "vous a invité pour participer à une discussion privée sur" %} {{ site_name }}.
+
+ {% trans "Pour le lire," %} {% trans "cliquez ici" %}.
+
- {% 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 %}
{% trans "Validation" %}
{% trans "Validation" %}
{{ title }}
{% for subcat,slug in subcats %}
{% trans "Filtres" %}
{% trans "Filtres" %}
Trier
{% trans "Filtres" %}
{% 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 @@
- {% 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 %}
- {{ headlinesub|safe }}
+ {% endif %}
- {% block sidebar %}{% endblock %}
- {{ 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 @@
-
- {% 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 %}
+
+
+
+ {% trans "ATTENTION" %}
+
+
+
+
-
+
+{% block content_from_staff %}
- 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 %}
-
- {{ 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 "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 %}
@@ -25,10 +23,13 @@
{{ justification|linebreaks }}
- {% trans "Cliquez ici pour voir son profil sur le site" %} : {{ profile_url }}.
-{% trans "Cordialement" %},
- {{app.member.bot_account}}
+ {% 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 @@{{ post.topic.subtitle }}
{% 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 @@{% 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 %} - - {% endif %} + {% if message.is_visible != False %}