diff --git a/app/assets/assets/help/en/reputation.md b/app/assets/assets/help/en/reputation.md
index 8339c7147..12464baba 100644
--- a/app/assets/assets/help/en/reputation.md
+++ b/app/assets/assets/help/en/reputation.md
@@ -16,8 +16,7 @@ These rules are subject to change, especially as the number of users grows.
| Action | Reputation gain |
|----------------------------------------------------------------|--------------------------|
-| Your email is verified | +15pts
-| You link your account to one of your social network's profile | +15pts
+| Verify you email or link a third-party account | +15pts
| One of your comments is voted up | +2pts
| One of your sourced comment is voted up | +3pts
| Someone approves one of your modifications in history | +5pts
diff --git a/app/assets/assets/help/fr/privacy.md b/app/assets/assets/help/fr/privacy.md
index 2605fa02f..017be16fa 100644
--- a/app/assets/assets/help/fr/privacy.md
+++ b/app/assets/assets/help/fr/privacy.md
@@ -2,7 +2,7 @@ Nous ne vendrons **jamais** vos données personelles et il n'y a pas grand chose
toutes les façons : on ne collecte que ce dont on a besoin pour faire fonctionner le site.
Vous devez par contre considérer toutes vos intéractions (votes, commentaires...)
-comme **publiques**. Vous êtes libre d'utiliser votre vrai non ou juste un bon view
+comme **publiques**. Vous êtes libre d'utiliser votre vrai nom ou juste un bon vieux
pseudonyme si c'est ce que vous préférez.
Bien que rien ne soit infaible, nous faisons attention à la sécurité et essayons de suivre les
diff --git a/app/assets/assets/help/fr/reputation.md b/app/assets/assets/help/fr/reputation.md
index cfd393595..a7487cb20 100644
--- a/app/assets/assets/help/fr/reputation.md
+++ b/app/assets/assets/help/fr/reputation.md
@@ -12,15 +12,15 @@ Gagner en réputation vous permet de débloquer des nouveaux
[privilèges](/help/privileges). Vous pouvez gagner jusqu'à 25 points de réputation par
jour (les compteurs sont réinitialisés à minuit).
-Ces règles sont sujettes à évolution dans le temps.
+Ces règles sont sujettes à évolution dans le temps, en particulier avec la
+montée du nombre d'utilisateurs.
# Pour gagner de la réputation
| Action | Gain |
|----------------------------------------------------------------|------------------|
-| Faire vérifier son email | +15pts
-| Relier au moins un compte tierce (Facebook) | +15pts
+| Vérifier son email ou relier un compte tierce (Facebook) | +15pts
| Un de vos commentaires recoit un vote positif | +2pts
| Un de vos commentaires **sourcé** recoit un vote positif | +3pts
| Quelqu'un approuve une de vos modifications dans l'historique | +5pts
diff --git a/app/assets/assets/locales/en/home.json b/app/assets/assets/locales/en/home.json
index fd478cead..702e609dc 100644
--- a/app/assets/assets/locales/en/home.json
+++ b/app/assets/assets/locales/en/home.json
@@ -9,7 +9,7 @@
"creatingAnAccount": "creating an account",
"invitation": "Ask for an invitation",
"inviteFriend": "Invite a friend",
- "footer": "Created with {{iconLove}} in New Caledonia using ",
+ "footer": "Created with {{iconLove}} using ",
"emailPlaceholder": "Email address",
"inviteSuccess": "Invitation request confirmed !",
"error_invalid_email": "Invalid email address"
diff --git a/app/assets/assets/locales/en/main.json b/app/assets/assets/locales/en/main.json
index e29e14be9..691611177 100644
--- a/app/assets/assets/locales/en/main.json
+++ b/app/assets/assets/locales/en/main.json
@@ -35,6 +35,7 @@
"remove": "Remove",
"delete": "Delete",
"reply": "Reply",
+ "addToThread": "Add to thread",
"approve": "Approve",
"refute": "Refute",
"edit": "Edit",
diff --git a/app/assets/assets/locales/en/videoDebate.json b/app/assets/assets/locales/en/videoDebate.json
index e04aadb9a..9ae036e26 100644
--- a/app/assets/assets/locales/en/videoDebate.json
+++ b/app/assets/assets/locales/en/videoDebate.json
@@ -23,8 +23,8 @@
"loadMore_replies": "Load more replies ({{count}})",
"loadMore_comments": "Load more comments ({{count}})",
"replyingTo": "Replying to",
- "approve": "Confirm",
- "approve_reply": "Confirm this comment",
+ "approve": "Approve",
+ "approve_reply": "Approve this comment",
"refute": "Refute",
"refute_reply": "Refute this comment",
"revealForm": "Add a source or comment"
diff --git a/app/assets/assets/locales/fr/errors.json b/app/assets/assets/locales/fr/errors.json
index 210a43cbc..f35a1ea07 100644
--- a/app/assets/assets/locales/fr/errors.json
+++ b/app/assets/assets/locales/fr/errors.json
@@ -14,7 +14,7 @@
"action_already_done": "Cette action a déjà été effectuée",
"unauthenticated": "Vous devez vous connecter pour effectuer cette action",
"unauthorized": "Merci de vous (re)connecter pour continuer",
- "noInternet": "La connection au serveur a échoué, éssayez de rafraichir la page"
+ "noInternet": "La connection au serveur a échoué, essayez de rafraichir la page"
},
"client": {
"joinCrashed": "La connection au serveur a échouée",
diff --git a/app/assets/assets/locales/fr/home.json b/app/assets/assets/locales/fr/home.json
index 1d85cd27c..f3514f02b 100644
--- a/app/assets/assets/locales/fr/home.json
+++ b/app/assets/assets/locales/fr/home.json
@@ -9,7 +9,7 @@
"creatingAnAccount": "créant un compte",
"invitation": "Demander une invitation",
"inviteFriend": "Inviter un ami",
- "footer": "Créé avec {{iconLove}} en Nouvelle-Calédonie à l'aide d'",
+ "footer": "Créé avec {{iconLove}} à l'aide d'",
"emailPlaceholder": "Adresse email",
"inviteSuccess": "Demande d'invitation enregistrée !",
"error_invalid_email": "Adresse email invalide"
diff --git a/app/assets/assets/locales/fr/main.json b/app/assets/assets/locales/fr/main.json
index 3674ca2d1..8365403bf 100644
--- a/app/assets/assets/locales/fr/main.json
+++ b/app/assets/assets/locales/fr/main.json
@@ -34,6 +34,7 @@
"remove": "Retirer",
"delete": "Supprimer",
"reply": "Répondre",
+ "addToThread": "Ajouter à la suite",
"approve": "Confirmer",
"refute": "Réfuter",
"edit": "Éditer",
diff --git a/app/assets/assets/locales/fr/videoDebate.json b/app/assets/assets/locales/fr/videoDebate.json
index 7b96427cd..991dd4664 100644
--- a/app/assets/assets/locales/fr/videoDebate.json
+++ b/app/assets/assets/locales/fr/videoDebate.json
@@ -23,10 +23,10 @@
"loadMore_replies": "Charger plus de réponses ({{count}})",
"loadMore_comments": "Charger plus de commentaires ({{count}})",
"replyingTo": "En réponse à",
- "approve": "Confirmer",
- "approve_reply": "Confirmer ce commentaire",
- "refute": "Réfuter",
- "refute_reply": "Réfuter ce commentaire",
+ "approve": "J'approuve",
+ "approve_reply": "J'approuve ce commentaire",
+ "refute": "Je réfute",
+ "refute_reply": "Je réfute ce commentaire",
"revealForm": "Ajouter une source ou un commentaire"
},
"video": {
diff --git a/app/components/Comments/CommentDisplay.jsx b/app/components/Comments/CommentDisplay.jsx
index 24043828e..0c7f599cc 100644
--- a/app/components/Comments/CommentDisplay.jsx
+++ b/app/components/Comments/CommentDisplay.jsx
@@ -19,8 +19,13 @@ import {flashErrorUnauthenticated} from '../../state/flashes/reducer'
import UserPicture from '../Users/UserPicture'
import { USER_PICTURE_SMALL } from '../../constants'
import MediaLayout from '../Utils/MediaLayout'
+import Vote from './Vote'
+// TODO Use ReputationGuard to protect actions
+// Add the following possibilities to reputationGuard :
+// onUnauthorized = "hide" | "showMessage" | "flash"
+
@connect(({CurrentUser, VideoDebate}, props) => ({
currentUser: CurrentUser.data,
myVote: VideoDebate.comments.voted.get(props.comment.id, 0),
@@ -36,27 +41,97 @@ export class CommentDisplay extends React.PureComponent {
this.showRepliesToggle = this.showRepliesToggle.bind(this)
// Authenticated actions
- this.vote = this.actionAuthenticated(this.vote.bind(this))
this.actionReply = this.actionAuthenticated(this.actionReply.bind(this))
this.handleFlag = this.actionAuthenticated(this.handleFlag.bind(this))
}
- getRemoveOrFlag() {
- const { currentUser, comment, isFlagged, t } = this.props
- if (currentUser.id === comment.user.id)
- return (
-
-
- {t('actions.delete')}
-
- )
- else return (
-
+ render() {
+ const { user, text, source, score, inserted_at, approve } = this.props.comment
+ const { t, withoutActions, withoutHeader, replyingTo, nesting, replies, myVote, isVoting, hideThread, className, richMedias=true } = this.props
+ const approveClass = approve !== null && (approve ? 'approve' : 'refute')
+ const isOwnComment = this.props.comment.user.id === this.props.currentUser.id
+
+ return (
+