Repository: zestedesavoir/zds-site

Issue:
Accès rapide vers le sujet de la bêta
Aujourd'hui, pour accéder au sujet créé pour la mise en bêta de son contenu, hormis à la mise à jour de la version d'un beta, il faut obligatoirement retrouver le sujet dans la liste des sujets du forum "Contenu en cours de rédaction" ou dans la liste des sujets suivis.

Il pourrait être très pratique d'avoir un accès rapide vers ce sujet directement à partir de la sidebar de son contenu en cours de rédaction.

Je tag facile mais il y a plusieurs règles à respecter :
- Ce lien n'est visible que par les auteurs du contenu, voire aux membres du staff aussi (à discuter).
- Ce lien n'est visible que sur la version hors ligne, voire que sur la version en bêta du tuto (à discuter).
- Il est possible qu'il n'y a pas l'information à partir des templates, il faut donc du dev back pour la récupérer.



Discussion:
En fait, ça existe déjà sur la version bêta du contenu : http://beta.zestedesavoir.com/contenus/beta/822/3163/

Mais il semblerait que le lien ne soit présent que sur les contenus créés après la ZEP-12.

J'ai parfois le lien aussi mais pas tout le temps. Je connais pas trop la règle d'affichage. Je pensais que c'était lors d'une mise en bêta seulement qu'il affichait le lien vers le sujet dans l'encadré orange. 

Ah oui, c'est bizarre. La présence du lien n'a pas de rapport avec la date de création ou de mise en bêta (avant ou après la ZEP-12).

Bien, après des recherches dans les sources, le lien devrait être affiché dès lors qu'un sujet existe.

Je passe donc l'issue en BUG.

D'ailleurs, j'enlève le tag facile parce que je ne suis pas certain que ça l'est.

> J'ai parfois le lien aussi mais pas tout le temps. Je connais pas trop la règle d'affichage. Je pensais que c'était lors d'une mise en bêta seulement qu'il affichait le lien vers le sujet dans l'encadré orange.

En fait, en checkant un peu les sources, il y a un oubli : ce lien ne s'affiche pas dans les parties/chapitres, et c'est à mon avis ça qui doit te perturber. Régler ça est facile, édition de la template correspondante et zou.

Au delà de ça, ledit message ne s'affiche que quand on consulte le contenu sous ça version "bêta", donc à priori pas quand on se promène dans son historique. Si c'est ça que tu souhaite (donc l'avoir "à gauche"), c'est relativement facile aussi, puisque les contenus on un champ vers le sujet bêta en BDD, et encore une fois, il "suffit" d'éditer la template.

Tu peux remettre facile :) (ou j'ai pas compris)

> En fait, en checkant un peu les sources, il y a un oubli : ce lien ne s'affiche pas dans les parties/chapitres, et c'est à mon avis ça qui doit te perturber. Régler ça est facile, édition de la template correspondante et zou.

A la racine de mon contenu, je ne vois pas le lien. Par contre, mon tutoriel est un moyen tuto donc je suis au niveau d'une partie automatiquement (je suppose) mais il m'est arrivé de voir le lien. Donc, je sais pas trop où donner de la tête.

> Au delà de ça, ledit message ne s'affiche que quand on consulte le contenu sous ça version "bêta", donc à priori pas quand on se promène dans son historique. Si c'est ça que tu souhaite (donc l'avoir "à gauche"), c'est relativement facile aussi, puisque les contenus on un champ vers le sujet bêta en BDD, et encore une fois, il "suffit" d'éditer la template.

D'après la 2ème règle à respecter que j'ai marqué dans mon premier message : 

> Ce lien n'est visible que sur la version hors ligne, voire que sur la version en bêta du tuto (à discuter).

Ca me semble pertinent de le mettre uniquement dans la version en bêta. Mais, maintenant que tu re-soulèves la question et que j'y repense, le lien devrait être affiché sur toutes les versions après la mise en bêta (version en bêta comprise) puisque tu places rarement une version en bêta sans y contribuer après.

> Tu peux remettre facile :) (ou j'ai pas compris)

C'est justement parce que je n'y comprends rien que je ne prends pas la responsabilité de placer le tag facile. :)

> Mais, maintenant que tu re-soulèves la question et que j'y repense, le lien devrait être affiché sur toutes les versions après la mise en bêta (version en bêta comprise) puisque tu places rarement une version en bêta sans y contribuer après.

Est-ce que ça ne risque pas de prendre de la place pour rien ? Je veux dire, on peut y accéder assez rapidement en cliquant sur "Voir la version bêta" puis "Voire le sujet".

@Vayel Le sujet de ce ticket est justement que le lien "Voir le sujet" n'existe pas chez moi. :)

Ouep. Mais ce que je veux dire, c'est que je ne suis pas sûr que ce soit utile d'afficher le lien ailleurs que sur la version bêta (affichage actuellement pas toujours fait).

Je ne sais pas pour toi mais pour moi, voici comment je gère mes tutoriels :
1. Je rédige mon tutoriel.
2. Je passe mon tutoriel en bêta.
3. Je modifie le tutoriel avec les retours de la communauté ou les miens.

A l'étape 2, mon tutoriel offline est la version en bêta. Normalement, j'aurais aucun problème pour accéder au sujet puisque le lien devrait m'être proposé (j'utilise le conditionnel partout parce que le bug concerne son absence).

A l'étape 3, mon tutoriel offline est une version plus récente que celle que je propose actuellement en bêta. Le lien ne m'est donc plus proposé alors que je contribue directement à des retours faits sur mon tutoriel en bêta.

Ce n'est pas pratique et je suis obligé de resoumettre mon tutoriel en bêta pour accéder au lien.

> Ce n'est pas pratique et je suis obligé de resoumettre mon tutoriel en bêta pour accéder au lien.

Nop, tu peux cliquer dans la sidebar sur "Voir la version bêta". Tu auras alors le bandeau orange "Cette version est en bêta", suivi normalement du lien vers le sujet correspondant.

Autant te dire que si moi je n'y ai pas pensé alors que je suis au fait de la technique, je vois mal un auteur lambda y penser.

Ceci dit, pour donner des infos complémentaires au bug et en sachant que la toute dernière version de mon contenu est en bêta :
- Si je consulte mon tutoriel par la liste de mes contenus avec une URL du type : https://zestedesavoir.com/contenus/839/developper-et-publier-une-app-android-material-design/, je n'ai pas le lien vers le sujet.
- Si je consulte mon tutoriel par l'URL de la bêta mais sur le même commit que le point précédent, j'ai le lien vers la beta (https://zestedesavoir.com/contenus/beta/839/developper-et-publier-une-app-android-material-design/).


Resolving patch:
diff --git a/zds/tutorialv2/mixins.py b/zds/tutorialv2/mixins.py
--- a/zds/tutorialv2/mixins.py
+++ b/zds/tutorialv2/mixins.py
@@ -12,6 +12,7 @@
 
 from zds.tutorialv2.models.models_database import PublishableContent, PublishedContent, ContentRead
 from zds.tutorialv2.utils import mark_read
+from zds.forum.models import Topic
 
 
 class SingleContentViewMixin(object):
@@ -223,6 +224,7 @@ class SingleContentDetailViewMixin(SingleContentViewMixin, DetailView):
         * context['content'] contains `self.versioned_object`
         * context['can_edit'] is set
         * context['version'] is set (if different from `self.object.sha_draft`)
+        * context['beta_topic'] is set (if any)
     """
 
     def get(self, request, *args, **kwargs):
@@ -249,6 +251,12 @@ def get_context_data(self, **kwargs):
         if self.sha != self.object.sha_draft:
             context["version"] = self.sha
 
+        if self.object.beta_topic:
+            beta_topic = Topic.objects.get(pk=self.object.beta_topic.pk)
+
+            if beta_topic:
+                context['beta_topic'] = beta_topic
+
         return context
 
 
diff --git a/zds/tutorialv2/views/views_contents.py b/zds/tutorialv2/views/views_contents.py
--- a/zds/tutorialv2/views/views_contents.py
+++ b/zds/tutorialv2/views/views_contents.py
@@ -213,17 +213,6 @@ def get_object(self, queryset=None):
 
         return obj
 
-    def get_context_data(self, **kwargs):
-        context = super(DisplayBetaContent, self).get_context_data(**kwargs)
-
-        if self.object.beta_topic:
-            beta_topic = Topic.objects.get(pk=self.object.beta_topic.pk)
-
-            if beta_topic:
-                context['beta_topic'] = beta_topic
-
-        return context
-
 
 class EditContent(LoggedWithReadWriteHability, SingleContentFormViewMixin):
     template_name = 'tutorialv2/edit/content.html'
@@ -1011,17 +1000,6 @@ def get_object(self, queryset=None):
 
         return obj
 
-    def get_context_data(self, **kwargs):
-        context = super(DisplayBetaContainer, self).get_context_data(**kwargs)
-
-        if self.object.beta_topic:
-            beta_topic = Topic.objects.get(pk=self.object.beta_topic.pk)
-
-            if beta_topic:
-                context['beta_topic'] = beta_topic
-
-        return context
-
 
 class EditContainer(LoggedWithReadWriteHability, SingleContentFormViewMixin):
     template_name = 'tutorialv2/edit/container.html'


Test patch: