Astuces Forumactif
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Membres connectés récemment
Voir tous les membres

[PHPBB3] Cacher un sujet à un membre qui n'a pas encore poster dedans


2 participants

Voir le sujet précédent Voir le sujet suivant Aller en bas

Emc2
Emc2
http://polisetsophia.forumactif.org/

MessageEmc2 Dim 12 Juil 2020 - 8:43

  • Version du forum :
    PHPBB3
  • Templates modifiés :
    non
  • Navigateur :
    Chrome
Bonjour,

L'idée serait de pouvoir cacher un sujet aux membres qui n'aurait pas encore posté de message dedans. Cependant, ils doivent avoir la possibilité lire le premier message du fil.
Dès qu'un message est posté, son auteur peut lire tout le sujet.

Merci
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Dim 12 Juil 2020 - 20:38

Hello Bruno,

alors ta demande est très particulière :


L'idée serait de pouvoir cacher un sujet aux membres qui n'aurait pas encore posté de message dedans

Il faut imaginer que tu peux avoir une dizaine de pages sur le sujet donc des requêtes importantes en fonction des pages pour trouver si le membre a déjà posté!!

Et de toutes façons peut être contourné, vu que l'on agit pas sur le serveur...



Cependant, ils doivent avoir la possibilité lire le premier message du fil.

Ceci sera pratiquement impossible a réaliser Bruno.

L'idéal est de placer un la balise hide dans le premier message qui agit directement sur le serveur donc impossible a gruger.
Cette balise masque le contenu tant qu'une personne n'a pas répondu au sujet.

Le visu reste accessible aux admins il me semble..



Emc2
Emc2
http://polisetsophia.forumactif.org/

MessageEmc2 Mar 14 Juil 2020 - 19:44

Bonsoir,

Que le visu reste accessible aux admin, cela ne pose aucun problème.
Si c'est plus pratique de cacher tout le sujet, premier message compris, aux membres n'ayant pas posté, je peux m'en accommoder et contourner le problème.
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mar 14 Juil 2020 - 20:04

Bonsoir,

j'ai peut être une solution Bruno hinhin .
Je reviens vers toi dès que j'ai quelque chose de bien concret .
Par contre, est-ce que les invités doivent voir quelque chose ou alors avoir un affichage mentionnant une connexion ou un enregistrement ?
Emc2
Emc2
http://polisetsophia.forumactif.org/

MessageEmc2 Jeu 16 Juil 2020 - 19:58

Aucune importance pour les invités, il n'auront pas accès à la lecture du forum. Ils ne verront même pas qu'il existe.
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Ven 17 Juil 2020 - 18:31

Salut Bruno,

alors peux tu tester ceci:

Si le membre n'a pas répondu, il verra le premier message mais pas les suivants.


Dans le template viewtopic_body:
Affichage/Templates/Général/viewtopic_body

Recherches ceci:
Code:

{postrow.displayed.POSTER_AVATAR}

<br /><strong style="font-size:1.2em">{postrow.displayed.POSTER_NAME}</strong>

Remplaces par:

Code:

{postrow.displayed.POSTER_AVATAR}

<br /><strong style="font-size:1.2em" class="M14_user">{postrow.displayed.POSTER_NAME}</strong>


Penser a enregistrer puis à valider en cliquant respectivement sur   Enregistr puis Ajout


Une class a été ajouté au pseudo.

Ensuite je vais importer tous les membres dans une div (qui sera masquée via la C.S.S )ayant posté dans le sujet quelque soit le nombre de page.


Le style a déposer:

Dans la feuille de style:
Affichage/Images et Couleurs/Couleurs/Feuille de style

Ajouter ceci:

Code:

/*ON MASQUE L IMPORTATION DES MEMBRES*/
.M14_importeUsEr{display:none;}

/*DEBUT DU TAG*/
/*LE CONTENEUR*/
.M14_no_post
{
background-color:white;
border:1px solid black;
border-radius:2px;
padding:8px 12px;
}
/*LA BALISE P DANS LE CONTENEUR*/
.M14_no_post p
{
display:inline;
position:relative;
top:1px;
color:darkred;
font-size:12px;
}
/*LE LIEN DANS LE CONTENEUR*/
.M14_no_post a[href]
{
color:darkred;
font-size:12px;
font-weight:bold;
font-style=italic;
}

Penser a cliquer sur le bouton [PHPBB3] Cacher un sujet à un membre qui n'a pas encore poster dedans Sans_t10


Puis le script:


Modules/HTML&JAVASCRIPT/Gestion des codes Javascript/Créer un nouveau Javascript

Mettre un titre explicite.

Cocher  Sur les sujets

Déposer ceci:

Code:

$(function(){    
var y= _userdata["username"];
$('h1.page-title').before('<div class="M14_importeUsEr"></div>');
var $this=$('.M14_importeUsEr');
$('div[class*="post--"]').find('.M14_user a[href^="/u"]').each(function(){
var pseudo=$(this).text();
$this.append('<strong class="actuel M14_user_id">'+pseudo+'</strong>');
});
$('p.pagination:first span').find('a[href^="/t"]:not(.pag-img)').each(function(){
var link=$(this).attr('href');
$.get(link, function(data){
$(data).find('div[class*="post--"]').find('.M14_user a[href^="/u"]').each(function(){
var hpseudo=$(this).text();
$this.append('<strong class="page M14_user_id">'+hpseudo+'</strong><br />');
});});});
  //LE LIEN DE L IMAGE DANS LE TAG
  var img="https://i.imgur.com/b8PNmbE.png";
  // LE TITRE DU SUJET
var topic=$('h1.page-title a[href^="/t"]').text();
 // LIEN DU SUJET
var reply=$('a[href$="mode=reply"]:first').attr('href');
var message ='<img style="margin-right:6px;vertical-align: middle;" src="'+img+'" /><p>Bonjour '+y+' , <br />pour voir la suite de ce sujet [ '+topic+' ] ,<br /> vous devez  <a href="'+reply+'"  title="Cliquez ici pour répondre">répondre en cliquant ici.</a> </p>';
var test=$('.M14_user_id:contains('+y+')').length;
if(!test){$('.post:eq(0)').nextAll().find('.content').html('<div class="M14_no_post">'+message+'</div>');}});

Penser a cliquer sur le bouton Valid


Il est impératif d'activer la Toolbar Bruno pour le fonctionnement de ce script.


Le résultat imagé:
[PHPBB3] Cacher un sujet à un membre qui n'a pas encore poster dedans 1156

La capture montre le pseudo du membre dans la toolbar et si ce dernier est absent dans la liste , il recevra le tag.

Le tag incitera le membre (avec son pseudo) a répondre car il aura le lien direct dans le tag du sujet (aussi mentionné).




Si tu désires désactiver le tag pour les admins, ce sera ce script:

Code:
$(function(){   
 
if(_userdata["user_level"] ==1)return;
var y= _userdata["username"];
$('h1.page-title').before('<div class="M14_importeUsEr"></div>');
var $this=$('.M14_importeUsEr');
$('div[class*="post--"]').find('.M14_user a[href^="/u"]').each(function(){
var pseudo=$(this).text();
$this.append('<strong class="actuel M14_user_id">'+pseudo+'</strong>');
});
$('p.pagination:first span').find('a[href^="/t"]:not(.pag-img)').each(function(){
var link=$(this).attr('href');
$.get(link, function(data){
$(data).find('div[class*="post--"]').find('.M14_user a[href^="/u"]').each(function(){
var hpseudo=$(this).text();
$this.append('<strong class="page M14_user_id">'+hpseudo+'</strong><br />');
});});});
 
  //LE LIEN DE L IMAGE DANS LE TAG
  var img="https://i.imgur.com/b8PNmbE.png";
  // LE TITRE DU SUJET
var topic=$('h1.page-title a[href^="/t"]').text();
 // LIEN DU SUJET
var reply=$('a[href$="mode=reply"]:first').attr('href');
var message ='<img style="margin-right:6px;vertical-align: middle;" src="'+img+'" /><p>Bonjour '+y+' , <br />pour voir la suite de ce sujet [ '+topic+' ] ,<br /> vous devez  <a href="'+reply+'"  title="Cliquez ici pour répondre">répondre en cliquant ici.</a> </p>';
var test=$('.M14_user_id:contains('+y+')').length;
if(!test){$('.post:eq(0)').nextAll().find('.content').html('<div class="M14_no_post">'+message+'</div>');}


});




Si tu désires désactiver le tag pour les modos, ce sera ce script:

Code:
$(function(){   
 
if(_userdata["user_level"] ==1||_userdata["user_level"] ==2)return;
var y= _userdata["username"];
$('h1.page-title').before('<div class="M14_importeUsEr"></div>');
var $this=$('.M14_importeUsEr');
$('div[class*="post--"]').find('.M14_user a[href^="/u"]').each(function(){
var pseudo=$(this).text();
$this.append('<strong class="actuel M14_user_id">'+pseudo+'</strong>');
});
$('p.pagination:first span').find('a[href^="/t"]:not(.pag-img)').each(function(){
var link=$(this).attr('href');
$.get(link, function(data){
$(data).find('div[class*="post--"]').find('.M14_user a[href^="/u"]').each(function(){
var hpseudo=$(this).text();
$this.append('<strong class="page M14_user_id">'+hpseudo+'</strong><br />');
});});});
 
  //LE LIEN DE L IMAGE DANS LE TAG
  var img="https://i.imgur.com/b8PNmbE.png";
  // LE TITRE DU SUJET
var topic=$('h1.page-title a[href^="/t"]').text();
 // LIEN DU SUJET
var reply=$('a[href$="mode=reply"]:first').attr('href');
var message ='<img style="margin-right:6px;vertical-align: middle;" src="'+img+'" /><p>Bonjour '+y+' , <br />pour voir la suite de ce sujet [ '+topic+' ] ,<br /> vous devez  <a href="'+reply+'"  title="Cliquez ici pour répondre">répondre en cliquant ici.</a> </p>';
var test=$('.M14_user_id:contains('+y+')').length;
if(!test){$('.post:eq(0)').nextAll().find('.content').html('<div class="M14_no_post">'+message+'</div>');}


});



Et voilou.
Emc2
Emc2
http://polisetsophia.forumactif.org/

MessageEmc2 Dim 19 Juil 2020 - 13:15

Merci Philou ! Juste une question; Qu'est-ce que tu appelles le tag ?
En tout cas je vais tester cela Mardi, car je m'absente ce soir pour deux jours.
Dès que j'ai opéré, je reviens pour baliser le sujet.

Encore merci.
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Dim 19 Juil 2020 - 17:44

Salut Bruno,
le tag est représenté dans la capture mon ami impeccable .
Emc2
Emc2
http://polisetsophia.forumactif.org/

MessageEmc2 Dim 19 Juil 2020 - 21:43

En jetant un œil, je n'ai pas repéré l'endroit ou je devais définir le sujet qui doit être caché.
Tel que le code est fait, il va cacher tous les sujets du forum ou le membre n'a pas posté. Mais comme il faut que cela se fasse uniquement sur un sujet que l'on aura déterminé, je suppose qu'il faut le préciser dans le script et que ça se passe au niveau de ces deux lignes;
Code:

  // LE TITRE DU SUJET
var topic=$('h1.page-title a[href^="/t"]').text();
 // LIEN DU SUJET
var reply=$('a[href$="mode=reply"]:first').attr('href');
Mais je ne sais pas exactement ou préciser le sujet qui doit être caché.
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Lun 20 Juil 2020 - 5:18

Salut Bruno,

j'étais partis sur tous les sujets en fait ...



Ce sera ce script alors:

Il faut remplacer dans le script:
Code:

/t203-test-nouveau-sujet
Par le lien du sujet en question.
Code:

$(function(){   
//le sujet
var sujet=$('h1.page-title a[href="/t203-test-nouveau-sujet"]').length;
if(sujet)
{
 var y= _userdata["username"];
 
    $('h1.page-title').before('<div class="M14_importeUsEr"></div>');
    var $this=$('.M14_importeUsEr');
    $('div[class*="post--"]').find('.M14_user a[href^="/u"]').each(function(){
    var pseudo=$(this).text();
    $this.append('<strong class="actuel M14_user_id">'+pseudo+'</strong>');
    });
    $('p.pagination:first span').find('a[href^="/t"]:not(.pag-img)').each(function(){
    var link=$(this).attr('href');
    $.get(link, function(data){
    $(data).find('div[class*="post--"]').find('.M14_user a[href^="/u"]').each(function(){
    var hpseudo=$(this).text();
    $this.append('<strong class="page M14_user_id">'+hpseudo+'</strong><br />');
    });});});
      //LE LIEN DE L IMAGE DANS LE TAG
      var img="https://i.imgur.com/b8PNmbE.png";
      // LE TITRE DU SUJET
    var topic=$('h1.page-title a[href^="/t"]').text();
    // LIEN DU SUJET
    var reply=$('a[href$="mode=reply"]:first').attr('href');
    var message ='<img style="margin-right:6px;vertical-align: middle;" src="'+img+'" /><p>Bonjour '+y+' , <br />pour voir la suite de ce sujet [ '+topic+' ] ,<br /> vous devez  <a href="'+reply+'"  title="Cliquez ici pour répondre">répondre en cliquant ici.</a> </p>';
    var test=$('.M14_user_id:contains('+y+')').length;
 
    if(!test)
    {
      $('.post:eq(0)').nextAll().find('.content').html('<div class="M14_no_post">'+message+'</div>');
    }
}
});



Je vais voir a trouver quelque chose de plus simple Bruno.
Emc2
Emc2
http://polisetsophia.forumactif.org/

MessageEmc2 Lun 20 Juil 2020 - 17:20

Ok, je fais ça demain. Et ne t'embête pas trop, car là, c'est déjà assez simple à mettre en place. Il n'y a pas de difficulté, tu as tout mâché le travail.
Merci
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Lun 20 Juil 2020 - 19:38

Merci Bruno,
mais je suis confronté à une pagination capricieuse et cela ne fonctionne pas chez moi,
tu pourras me remonter l'information si tu as plus d'une page, l'idéal serait sur trois pages.

Si une page aucun soucis , mais c'est au delà.....

Emc2
Emc2
http://polisetsophia.forumactif.org/

MessageEmc2 Mar 21 Juil 2020 - 21:50

Ok, je vais faire un test sur une fil à plusieurs pages. Pour le moment, cela marche parfaitement bien, le test que j'ai fait était sur un fil à une seule page.
Je te dis ça demain.
Emc2
Emc2
http://polisetsophia.forumactif.org/

MessageEmc2 Ven 24 Juil 2020 - 11:05

Effectivement, lorsque qu'il y a plusieurs page, à partir de la seconde, le script n'agit plus. Dans mon cas, ce n'est pas gênant, car le fil qui sera visé n'aura jamais plus d'une page.

Pour aller un poil plus loin, si je veux que le script agisse sur tout un forum, je suppose que je dois modifier cette ligne de code:
Code:
//le sujet
var sujet=$('h1.page-title a[href="/t203-test-nouveau-sujet"]').length;
if(sujet)
{
par
Code:
//le forum
var forum=$('h1.page-title a[href="/f15-mairie-election-isoloir"]').length;
if(forum)
{
si il s'agit du forum n°15 par exemple ?
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Ven 24 Juil 2020 - 18:35

Alors , si c'est que pour une seule page il faut simplifier le script afin qu'il n'agisse que sur la page en cours et j'ai aussi modifié la structure afin que cela soit plus fiable:

Pour un sujet, il faut trouver le nombre du sujet et le placer
dans la variable entre les doubles guillemets:

Code:
var num="447";

Code:
$(function(){ 
var num="447";
var btn=$('input[type="hidden"][name="t"]').val();     
if(btn==num)
{
    var y= _userdata["username"];
   
        $('h1.page-title').before('<div class="M14_importeUsEr"></div>');
        var $this=$('.M14_importeUsEr');
        $('div[class*="post--"]').find('.M14_user a[href^="/u"]').each(function(){
        var pseudo=$(this).text();
        $this.append('<strong class="actuel M14_user_id">'+pseudo+'</strong>');
        });
     
          //LE LIEN DE L IMAGE DANS LE TAG
          var img="https://i.imgur.com/b8PNmbE.png";
          // LE TITRE DU SUJET
        var topic=$('h1.page-title a[href^="/t"]').text();
        // LIEN DU SUJET
        var reply=$('a[href$="mode=reply"]:first').attr('href');
        var message ='<img style="margin-right:6px;vertical-align: middle;" src="'+img+'" /><p>Bonjour '+y+' , <br />pour voir la suite de ce sujet [ '+topic+' ] ,<br /> vous devez  <a href="'+reply+'"  title="Cliquez ici pour répondre">répondre en cliquant ici.</a> </p>';
        var test=$('.M14_user_id:contains('+y+')').length;
   
        if(!test)
        {
          $('.post:eq(0)').nextAll().find('.content').html('<div class="M14_no_post">'+message+'</div>');
        }
    }
    });

Ensuite pour tout un forum:

Il faut repérer le chiffre ou le nombre du forum comme le montre cette capture:

[PHPBB3] Cacher un sujet à un membre qui n'a pas encore poster dedans 1158

En bas à gauche tu découvres le chiffre ou le nombre, pour le script ce sera le chiffre quatre qu'il faut retenir:

Il faudra le reporter ici et bien penser a mettre le trait d'union à la suite:
Car admettons que tu ais un forum "4" et "41" et si tu oublies de mettre ce trait d'union , tu risques d'avoir des ennuis Bruno.

Code:
if($('a.nav[href^="/f4-"]').length) {

Exemple avec le forum 1
Code:
if($('a.nav[href^="/f1-"]').length) {

Exemple avec le forum 352
Code:
if($('a.nav[href^="/f352-"]').length) {








Le script complet:

Code:
$(function(){ 
if($('a.nav[href^="/f4-"]').length) {
    var y= _userdata["username"];
   
        $('h1.page-title').before('<div class="M14_importeUsEr"></div>');
        var $this=$('.M14_importeUsEr');
        $('div[class*="post--"]').find('.M14_user a[href^="/u"]').each(function(){
        var pseudo=$(this).text();
        $this.append('<strong class="actuel M14_user_id">'+pseudo+'</strong>');
        });
     
          //LE LIEN DE L IMAGE DANS LE TAG
          var img="https://i.imgur.com/b8PNmbE.png";
          // LE TITRE DU SUJET
        var topic=$('h1.page-title a[href^="/t"]').text();
        // LIEN DU SUJET
        var reply=$('a[href$="mode=reply"]:first').attr('href');
        var message ='<img style="margin-right:6px;vertical-align: middle;" src="'+img+'" /><p>Bonjour '+y+' , <br />pour voir la suite de ce sujet [ '+topic+' ] ,<br /> vous devez  <a href="'+reply+'"  title="Cliquez ici pour répondre">répondre en cliquant ici.</a> </p>';
        var test=$('.M14_user_id:contains('+y+')').length;
   
        if(!test)
        {
          $('.post:eq(0)').nextAll().find('.content').html('<div class="M14_no_post">'+message+'</div>');
        }
    };
    });

Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mar 28 Juil 2020 - 16:39


Hello

Si ton sujet est résolu, merci de suivre la procédure suivante:
Un tag précédent ton premier message est présent.

Il te suffira de cliquer sur ce dernier pour mettre ton sujet en résolu.
Comme le mentionne le règlement.

Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 29 Juil 2020 - 18:18


Hello


Entraide corbeillée

5 jours sans réponse de ta part

Merci de lire à nouveau le règlement .



Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Ven 31 Juil 2020 - 3:51


Hello


Sujet résolu et déplacé dans le forum adéquate

A bientôt pour une prochaine demande clin oeil



Voir le sujet précédent Voir le sujet suivant Revenir en haut

Créer un compte ou se connecter pour répondre

Vous devez être membre pour répondre.

S'enregistrer

Rejoignez notre communauté ! C'est facile !


S'enregistrer

Connexion

Vous êtes déjà membre ? Aucun soucis, cliquez ici pour vous connecter.


Connexion

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum