Page 1 sur 2

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : lun. 6 juin 2016 17:31
par Kevicar
Hello,

Connaissez-vous une extension qui permet de cacher la réponse dans un post si un membre n'a pas répondu à la question ?

Je voudrais poster des énigmes sur un forum et que les membres puissent voir la réponse uniquement lorsqu'ils ont répondu !

Ou alors un autre système pour que tout le monde puisse participer sans voir les réponses à l'avance .. :roll:

Merci pour votre aide :D

Message modifié par : « Raphaël ».
Raison : Harmonisation du titre et ajout d’une icône de sujet.

RECHERCHE : Masquer la réponse dans un message

Posté : mar. 7 juin 2016 04:54
par Kevicar
J'ai trouvé cela [ [RC] Hide BBcode ] :
https://www.phpbb.com/community/viewtop ... &t=2279486

Encore en développement et des problème apparemment de compatibilité avec certaines extensions, mais je pense que je devrais pouvoir faire quelque chose avec !

:D

RECHERCHE : Masquer la réponse dans un message

Posté : mar. 7 juin 2016 11:17
par Kevicar
Le système fonctionne pour ce que je veux faire ... c'est a dire, cacher la réponse dans le premier post tant que le membre n'a pas répondu ! :D

Mais ensuite, il y a t'il une extension qui permette de cacher toutes les réponses tant que les membres n'ont pas participé au sujet ???

Car lorsque un membre à participé ... on voit sa réponse en dessous ... et pour les autres membres, il n y a plus d intérêt ! :roll:

Merci pour votre aide. ;)

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : jeu. 9 juin 2016 12:49
par Raphaël
Salut Kevicar,

quand tu dis : « c'est a dire, cacher la réponse dans le premier post tant que le membre n'a pas répondu ! », la formulation n’est pas bonne ce n’est pas une réponse mais un message si il s’agit du premier post/message du sujet. J’ai modifié le titre du sujet en conséquence.

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : sam. 11 juin 2016 16:32
par Kevicar
Oui c est un double problème avec une double question en fait !

Le premier problème est résolu car il cache bien la réponse dans le premier post.

Maintenant, je cherche à cacher toutes les réponses du sujet aux membres qui n'ont pas répondu.
De façon a ne plus voir les réponses des membres et ainsi résoudre les énigmes facilement.

:roll:

TUTO : Masquer le contenu du message à certains utilisateurs | BBCode HIDE for phpBB 3.1.x & 3.2.x

Posté : dim. 24 sept. 2017 16:50
par Raphaël
Salut,

le BBCode HIDE n’étant plus fonctionnel sous phpBB 3.2.x, voici une solution fonctionnelle sous phpBB 3.1.x & 3.2.x pour disposer de la même fonctionnalité. La démarche consiste à modifier le comportement du BBCode HIDDEN provenant de l’extension présentée sur le viewtopic.php?f=11&t=49 :




►  Pour interdire la lecture du message mis entre les balises du BBCode HIDDEN aux robots, aux invités (comportement par défaut de ce BBCode) plus à certains groupes :

Ouvrir : ./ext/vse/abbc3/core/bbcodes_parser.php

Trouver : peut correspondre à un résultat partiel dans une ligne de code ou à une ligne de code entière.

Code : Tout sélectionner

      if ($this->user->data['user_id'] == ANONYMOUS || $this->user->data['is_bot'])
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_ON'),
            $this->user->lang('ABBC3_HIDDEN_EXPLAIN'),
            'hidebox_hidden',
         );
      }
      else
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_OFF'),
            $matches[1],
            'hidebox_visible',
         );
      }

Remplacer par : remplacer les lignes de code précédemment trouvées par celles ci-dessous.

Code : Tout sélectionner

      if ($this->user->data['user_id'] == ANONYMOUS || $this->user->data['is_bot'] || $this->user->data['group_id'] == 5 || $this->user->data['group_id'] == 4)
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_ON'),
            $this->user->lang('ABBC3_HIDDEN_EXPLAIN'),
            'hidebox_hidden',
         );
      }
      else
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_OFF'),
            $matches[1],
            'hidebox_visible',
         );
      }
Ainsi, les invités, les robots ainsi que les membres des groupes ayant les ID 4 et 5 ne pourront pas lire le message mis entre les balises du BBCode HIDDEN. Cependant, tous les membres des autres groupes (n’ayant pas les ID 4 et 5) pourront lire le message mis entre les balises du BBCode HIDDEN.

►  Pour interdire la lecture du message mis entre les balises du BBCode HIDDEN uniquement à certains groupes :

Ouvrir : ./ext/vse/abbc3/core/bbcodes_parser.php

Trouver : peut correspondre à un résultat partiel dans une ligne de code ou à une ligne de code entière.

Code : Tout sélectionner

      if ($this->user->data['user_id'] == ANONYMOUS || $this->user->data['is_bot'])
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_ON'),
            $this->user->lang('ABBC3_HIDDEN_EXPLAIN'),
            'hidebox_hidden',
         );
      }
      else
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_OFF'),
            $matches[1],
            'hidebox_visible',
         );
      }

Remplacer par : remplacer les lignes de code précédemment trouvées par celles ci-dessous.

Code : Tout sélectionner

      if ($this->user->data['group_id'] == 5 || $this->user->data['group_id'] == 4)
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_ON'),
            $this->user->lang('ABBC3_HIDDEN_EXPLAIN'),
            'hidebox_hidden',
         );
      }
      else
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_OFF'),
            $matches[1],
            'hidebox_visible',
         );
      }
Ainsi, les membres des groupes ayant les ID 4 et 5 ne pourront pas lire le message mis entre les balises du BBCode HIDDEN. Cependant, les robots, les invités ainsi que les membres des tous les autres groupes (n’ayant pas les ID 4 et 5) pourront lire le message mis entre les balises du BBCode HIDDEN.

►  Pour autoriser la lecture du message mis entre les balises du BBCode HIDDEN uniquement à certains groupes :

Ouvrir : ./ext/vse/abbc3/core/bbcodes_parser.php

Trouver : peut correspondre à un résultat partiel dans une ligne de code ou à une ligne de code entière.

Code : Tout sélectionner

      if ($this->user->data['user_id'] == ANONYMOUS || $this->user->data['is_bot'])
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_ON'),
            $this->user->lang('ABBC3_HIDDEN_EXPLAIN'),
            'hidebox_hidden',
         );
      }
      else
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_OFF'),
            $matches[1],
            'hidebox_visible',
         );
      }

Remplacer par : remplacer les lignes de code précédemment trouvées par celles ci-dessous.

Code : Tout sélectionner

      if ($this->user->data['group_id'] == 5 || $this->user->data['group_id'] == 4)
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_OFF'),
            $matches[1],
            'hidebox_visible',
         );
      }
      else
      {
         $replacements = array(
            $this->user->lang('ABBC3_HIDDEN_ON'),
            $this->user->lang('ABBC3_HIDDEN_EXPLAIN'),
            'hidebox_hidden',
         );
      }
Ainsi, les membres des groupes ayant les ID 4 et 5 pourront lire le message mis entre les balises du BBCode HIDDEN. Cependant, les robots, les invités ainsi que les membres des tous les autres groupes (n’ayant pas les ID 4 et 5) ne pourront pas lire le message mis entre les balises du BBCode HIDDEN.

Pour connaitre l’ID d’un groupe :
  1. se rendre dans le PCA ;
  2. dans l’onglet « MEMBRES ET GROUPES » ;
  3. sur la page « Gérer les groupes » ;
  4. survoler avec la souris le bouton « Paramètres » correspondant à un groupe ;
  5. le lien se termine par g=33 est l’ID du groupe dans cet exemple.

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : sam. 21 oct. 2017 18:02
par Raphaël
Salut,

pour disposer de deux BBCodes HIDDEN (provenant de l’extension « Advanced BBCode Box »), pour lesquels, par exemple, le premier ayant le comportement par défaut de l’extension et le second ayant le comportement de l’une des possibilités exposées dans le précédent viewtopic.php?p=3804#p3804, suivre la démarche suivante.




► Au préalable il est nécessaire d’effectuer des modifications avant d’installer l’extension présentée sur le viewtopic.php?f=11&t=49 (test réalisé sur la version 3.1.4). Dans cet exemple, deux BBCodes HIDDEN seront créés sur le forum par l’extension, l’un nommé HIDDEN pour masquer le message aux invités & robots et un autre nommé HIDDEN2 pour autoriser la lecture uniquement à certains groupes de membres.
  1. si l’extension « Advanced BBCode Box 3 » est installée (quelle soit activée ou désactivée) :
    1. Désactiver : l’extension (si activée)
    2. Supprimer : ses données
    3. Supprimer : ses fichiers sur son espace FTP
    4. Poursuivre : à l’étape 2.a.
  2. si l’extension « Advanced BBCode Box 3 » n’est pas installée (ni activée, ni désactivée), passer à l’étape suivante :
    1. Télécharger une archive originale de cette extension ;
    2. Ouvrir : ./ext/vse/abbc3/core/bbcodes_parser.php
    3. Trouver : peut correspondre à un résultat partiel dans une ligne de code ou à une ligne de code entière.

      Code : Tout sélectionner

            $text = preg_replace_callback('#<!-- ABBC3_BBCODE_HIDDEN -->(.*?)<!-- ABBC3_BBCODE_HIDDEN -->#s', array($this, 'hidden_pass'), $text);
    4. Ajouter après : ajouter ce code sur une nouvelle ligne, située après les lignes de code précédemment trouvées.

      Code : Tout sélectionner

            $text = preg_replace_callback('#<!-- ABBC3_BBCODE_HIDDEN2 -->(.*?)<!-- ABBC3_BBCODE_HIDDEN2 -->#s', array($this, 'hidden_pass2'), $text);
    5. Trouver : peut correspondre à un résultat partiel dans une ligne de code ou à une ligne de code entière.

      Code : Tout sélectionner

            return vsprintf('<div class="hidebox %3$s"><div class="hidebox_title %3$s">%1$s</div><div class="%3$s">%2$s</div></div>', $replacements);
         }
    6. Ajouter après : ajouter ce code sur une nouvelle ligne, située après les lignes de code précédemment trouvées.

      Code : Tout sélectionner

         /**
          * Convert Hidden BBCode into its final appearance
          *
          * @param array $matches
          * @return string HTML render of hidden bbcode
          * @access protected
          */
         protected function hidden_pass2($matches)
         {
            if ($this->user->data['group_id'] == 4 || $this->user->data['group_id'] == 5)
            {
               $replacements = array(
                  $this->user->lang('ABBC3_HIDDEN2_OFF'),
                  $matches[1],
                  'hidebox_visible',
               );
            }
            else
            {
             $replacements = array(
               $this->user->lang('ABBC3_HIDDEN_ON'),
               $this->user->lang('ABBC3_HIDDEN2_EXPLAIN'),
               'hidebox_hidden',
             );
            }

            return vsprintf('<div class="hidebox %3$s"><div class="hidebox_title %3$s">%1$s</div><div class="%3$s">%2$s</div></div>', $replacements);
         }
    7. Ouvrir : ./ext/vse/abbc3/language/fr/abbc3.php
    8. Trouver : peut correspondre à un résultat partiel dans une ligne de code ou à une ligne de code entière.

      Code : Tout sélectionner

         'ABBC3_HIDDEN_OFF'         => 'Contenu caché (accès aux membres seulement)',
    9. Ajouter après : ajouter ce code sur une nouvelle ligne, située après les lignes de code précédemment trouvées.

      Code : Tout sélectionner

         'ABBC3_HIDDEN2_OFF'         => 'Contenu caché (accès à certains membres seulement)',
    10. Trouver : peut correspondre à un résultat partiel dans une ligne de code ou à une ligne de code entière.

      Code : Tout sélectionner

         'ABBC3_HIDDEN_EXPLAIN'      => 'Vous devez être inscrit et connecté sur ce forum pour voir le contenu caché.',
    11. Ajouter après : ajouter ce code sur une nouvelle ligne, située après les lignes de code précédemment trouvées.

      Code : Tout sélectionner

         'ABBC3_HIDDEN2_EXPLAIN'      => 'Vous devez être inscrit, connecté sur ce forum et faire partie de certains groupes pour voir le contenu caché.',
    12. Trouver : peut correspondre à un résultat partiel dans une ligne de code ou à une ligne de code entière.

      Code : Tout sélectionner

         'ABBC3_HIDDEN_HELPLINE'      => 'Masquer aux invités : [hidden]text[/hidden]',
    13. Ajouter après : ajouter ce code sur une nouvelle ligne, située après les lignes de code précédemment trouvées.

      Code : Tout sélectionner

         'ABBC3_HIDDEN2_HELPLINE'   => 'Masquer à tous sauf certains groupes : [hidden2]text[/hidden2]',
    14. Ouvrir : ./ext/vse/abbc3/migrations/v310_m4_install_data.php
    15. Trouver : peut correspondre à un résultat partiel dans une ligne de code ou à une ligne de code entière.

      Code : Tout sélectionner

               'bbcode_tpl'      => '<!-- ABBC3_BBCODE_HIDDEN -->{TEXT}<!-- ABBC3_BBCODE_HIDDEN -->',
            ),
    16. Ajouter après : ajouter ce code sur une nouvelle ligne, située après les lignes de code précédemment trouvées.

      Code : Tout sélectionner

            'hidden2' => array(
               'bbcode_helpline'   => 'ABBC3_HIDDEN2_HELPLINE',
               'bbcode_match'      => '[hidden2]{TEXT}[/hidden2]',
               'bbcode_tpl'      => '<!-- ABBC3_BBCODE_HIDDEN2 -->{TEXT}<!-- ABBC3_BBCODE_HIDDEN2 -->',
            ),
    17. Ouvrir : ./ext/vse/abbc3/images/icons/
    18. Trouver & copier : le fichier. hidden.gif
    19. Renommer : le fichier. hidden2.gif
    20. Transférer : les fichiers de l’extension modifiée sur son espace FTP
    21. Activer : l’extension.

Ainsi, les membres des groupes ayant les ID 4 et 5 pourront lire le message mis entre les balises du BBCode HIDDEN2. Cependant, les robots, les invités ainsi que les membres des tous les autres groupes (n’ayant pas les ID 4 et 5) ne pourront pas lire le message mis entre les balises du BBCode HIDDEN2.

C’est à l’étape n°2.f. que l’on détermine quels sont les groupes auxquels on souhaite attribuer la lecture du contenu mis entre les balises du BBCode HIDDEN2. À modifier en conséquence en fonction des ID de groupes à autoriser.

Pour connaitre l’ID d’un groupe :
  1. se rendre dans le PCA ;
  2. dans l’onglet « MEMBRES ET GROUPES » ;
  3. sur la page « Gérer les groupes » ;
  4. survoler avec la souris le bouton « Paramètres » correspondant à un groupe ;
  5. le lien se termine par g=33 est l’ID du groupe dans cet exemple.

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : dim. 22 oct. 2017 13:00
par Beaware
Bonjour Raphaël,

Je viens de tester en suivant la procédure à la lettre, j'ai un joli plantage :

Code : Tout sélectionner

( ! ) Parse error: syntax error, unexpected 'protected' (T_PROTECTED) in E:\wamp64\www\ext\vse\abbc3\core\bbcodes_parser.php on line 115
Call Stack
#   Time   Memory   Function   Location
1   0.0020   262912   {main}( )   ...\index.php:0
2   3.3372   22084792   phpbb\user->setup( )   ...\index.php:31
3   3.3372   22100704   phpbb\event\dispatcher->trigger_event( )   ...\user.php:219
4   3.3372   22100992   phpbb\event\dispatcher->dispatch( )   ...\dispatcher.php:46
5   3.3372   22100992   Symfony\Component\EventDispatcher\EventDispatcher->dispatch( )   ...\dispatcher.php:60
6   3.3372   22100896   Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->getListeners( )   ...\EventDispatcher.php:45
7   3.3372   22100896   Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->lazyLoad( )   ...\ContainerAwareEventDispatcher.php:128
8   3.3712   24680224   Symfony\Component\DependencyInjection\ContainerBuilder->get( )   ...\ContainerAwareEventDispatcher.php:183
9   3.3712   24680576   Symfony\Component\DependencyInjection\ContainerBuilder->createService( )   ...\ContainerBuilder.php:476
10   3.3712   24681312   Symfony\Component\DependencyInjection\ContainerBuilder->resolveServices( )   ...\ContainerBuilder.php:905
11   3.3712   24681968   Symfony\Component\DependencyInjection\ContainerBuilder->resolveServices( )   ...\ContainerBuilder.php:990
12   3.3712   24682048   Symfony\Component\DependencyInjection\ContainerBuilder->get( )   ...\ContainerBuilder.php:993
13   3.3712   24682320   Symfony\Component\DependencyInjection\ContainerBuilder->createService( )   ...\ContainerBuilder.php:476
14   3.3722   24683920   Symfony\Component\DependencyInjection\ContainerBuilder->resolveServices( )   ...\ContainerBuilder.php:905
15   3.3742   24968896   Symfony\Component\DependencyInjection\ContainerBuilder->resolveServices( )   ...\ContainerBuilder.php:990
16   3.3742   24968992   Symfony\Component\DependencyInjection\ContainerBuilder->get( )   ...\ContainerBuilder.php:993
17   3.3742   24969296   Symfony\Component\DependencyInjection\ContainerBuilder->createService( )   ...\ContainerBuilder.php:476
18   3.3772   25259040   newInstanceArgs ( )   ...\ContainerBuilder.php:936
19   3.3772   25259376   phpbb\textformatter\s9e\parser->__construct( )   ...\ContainerBuilder.php:936
20   5.1243   30265608   phpbb\event\dispatcher->trigger_event( )   ...\parser.php:69
21   5.1243   30265896   phpbb\event\dispatcher->dispatch( )   ...\dispatcher.php:46
22   5.1243   30265896   Symfony\Component\EventDispatcher\EventDispatcher->dispatch( )   ...\dispatcher.php:60
23   5.1243   30265800   Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->getListeners( )   ...\EventDispatcher.php:45
24   5.1243   30265800   Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->lazyLoad( )   ...\ContainerAwareEventDispatcher.php:128
25   5.1243   30265800   Symfony\Component\DependencyInjection\ContainerBuilder->get( )   ...\ContainerAwareEventDispatcher.php:183
26   5.1243   30266136   Symfony\Component\DependencyInjection\ContainerBuilder->createService( )   ...\ContainerBuilder.php:476
27   5.1243   30266952   Symfony\Component\DependencyInjection\ContainerBuilder->resolveServices( )   ...\ContainerBuilder.php:905
28   5.1243   30267688   Symfony\Component\DependencyInjection\ContainerBuilder->resolveServices( )   ...\ContainerBuilder.php:990
29   5.1243   30267784   Symfony\Component\DependencyInjection\ContainerBuilder->get( )   ...\ContainerBuilder.php:993
30   5.1243   30268088   Symfony\Component\DependencyInjection\ContainerBuilder->createService( )   ...\ContainerBuilder.php:476
31   5.1243   30268848   __construct ( )   ...\ContainerBuilder.php:934
32   5.1243   30269136   spl_autoload_call ( )   ...\ContainerBuilder.php:934
33   5.1253   30269504   phpbb\class_loader->load_class( )   ...\ContainerBuilder.php:934


PS : J'ai pas posté sur phpbb-fr.com car il n'y a pas 24H, mais j'ai modifié ma réponse. Sur quel forum on peu continuer la discussion ?

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : dim. 22 oct. 2017 19:46
par Raphaël
Salut Beaware,

je n'ai pas encore de boule de cristal, quel est ton sujet sur -fr ? Tu peux continuer ici, il n’y a pas de problème.

Envoie moi ton fichier ./ext/vse/abbc3/core/bbcodes_parser.php car il semble contenir une erreur/un oubli.

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : dim. 22 oct. 2017 20:02
par Beaware
Pas de boule de cristal pour un programmeur comme toi ? :lol: .

Non sérieusement, le sujet est ici : http://forums.phpbb-fr.com/message1650041.html#p1650041

Le fichier joint (je l'ai compressé en RAR, le forum prend pas le fichier en php directe :mrgreen:

bbcodes_parser.rar
(1.2 Kio) Téléchargé 361 fois

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : lun. 23 oct. 2017 03:46
par Raphaël
Voilà qui est corrigé :
bbcodes_parser.zip
(1.2 Kio) Téléchargé 354 fois


Tu n’as pas respecté l’étape 2.e. qui indique deux lignes de code à trouver dont la seconde est :

Code : Tout sélectionner

   }

C’est après celle-ci, sur une nouvelle ligne, qu’il faut copier le code indiqué à l’étape 2.f. dont tu n’as pas respecté aussi le contenu car tu as omis le code suivant à la fin :

Code : Tout sélectionner

   }

Bref, relis-toi la prochaine fois, cela évitera de te faire perdre du temps inutilement. ;)

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : lun. 23 oct. 2017 19:34
par Beaware
Franchement un grand merci Raphael, ça fonctionne nickel. Je n'ai pas été assez concentré pour faire cette modif. Je comprend pas ce que j'ai pu bouiner :mrgreen: .

J'en ai profité pour rajouté un groupe de plus dans la balise [Hidden] de base.

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : mer. 16 mai 2018 17:23
par gipi69
Bonjour
Il serait sage de définir les groupes car pour moi 4 ou 5 il faut que je cherche.
Ce n'est pas que j'aime le boulot trop mâché mais c'est comme les sites abrégés il suffit de rajouter des parenthèses et mettre les groupes concernés en clair.
Comme ça les petits comme moi ou les débutants comprennent mieux
En attendant merci pour votre formidable travail
Gipi69

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : ven. 18 mai 2018 04:57
par Raphaël
Salut gipi69,

si tu veux connaitre l’ID du groupe auquel tu souhaites attribuer le BBCode, regarde en fin de message l’indication « Pour connaitre l’ID d’un groupe : ».

Bonne continuation. ;)

RECHERCHE : Masquer le ou les messages dans les sujets

Posté : dim. 28 oct. 2018 12:41
par Beaware
Bonjour,

Je viens de faire la mise à jour de cette extension (de 3.1.4 => 3.2.1) la balise Hidden 2 ne fonctionne plus du coup. Le fichier modifié "./ext/vse/abbc3/core/bbcodes_parser.php" n'existe plus. Il y a une technique pour palier à ça ?

Merci d'avance.