Déployer un forum quand il y a un nouveau message

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

Résolu Déployer un forum quand il y a un nouveau message

Message par mdlettrage le Ven 22 Avr 2016 - 20:12

Bonjour,

Voici une question piège que j'aimerais vous soumettre ...

En fait, j'utilise un Javascript qui permet de "masquer/réduire" les catégories qui intéressent moins un utilisateur en cliquant sur la ligne de titre ou de les "déployer" en cliquant une nouvelle fois sur cette même ligne.

Ce que j'aurais aimé ajouter, dans la mesure où cela est possible, c'est une "fonction" qui déployrait automatiquement la catégorie dès qu'il y a un nouveau message dans un des forums de cette catégorie en question.

Actuellement, j'ai ceci (alors qu'il y a un nouveau message dans "au coin du bar") :



Et j'aimerais qu'automatiquement, on voit ceci :



Merci d'avance si vous pouvez m'aider sur cette amélioration supplémentaire.

L'adresse du forum est : www.csap-liege.forumactif.be


Dernière édition par mdlettrage le Lun 25 Avr 2016 - 18:45, édité 1 fois

mdlettrage
***

Masculin
Messages : 143
Inscrit(e) le : 19/01/2016

http://www.csap-liege.forumactif.be
mdlettrage a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Déployer un forum quand il y a un nouveau message

Message par Neptunia le Ven 22 Avr 2016 - 21:19

Bonjour ^^


Il nous faudrait :
- Le template index_box (uniquement si la structure est modifiée)
- Le javascript utilisé
- Le css afférent aux catégories

Neptunia
+ Hyperactif +

Féminin
Messages : 10392
Inscrit(e) le : 08/08/2010

http://www.planet-series.com/
Neptunia a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Déployer un forum quand il y a un nouveau message

Message par mdlettrage le Sam 23 Avr 2016 - 1:41

Coucou et déjà merci de te pencher sur mon cas,

voici le Java concerné :

Code:
/* categories retractables sans invision */
        $(function() {
          if(window.localStorage) {
            var b = JSON.parse(localStorage.getItem("catRet")) || {}
          }
          var f = 0;
          if($("body#phpbb").length) {
            var a = "div.table-title h2", e = "ul.topiclist", c = ":not(ul.topiclist.forums)"
          }else {
            $("#pun-intro").length ? (a = "div.page-title h2", e = "div.main-head", c = ":not(div.main-content)") : (a = "th.secondarytitle h2", e = "tr", c = ":not(tr)")
          }
          $(a).closest(e).css("cursor", "pointer").each(function() {
            var d = "c" + f++, a;
            window.localStorage ? b[d] && (a = !0) : a = !1;
            a && $(this).nextUntil(c).toggle();
            $(this).click(function() {
              $(this).nextUntil(c).toggle();
              window.localStorage && (b[d] ? delete b[d] : b[d] = 1, localStorage.setItem("catRet", JSON.stringify(b)))
            })
          })
        });

Voici le template INDEX_BOX mais je n'ai pas souvenir qu'une des modifs soit liée à ce qui nous concerne ici mais dans le doute ...

Code:
<ul class="linklist">
   <!-- BEGIN switch_user_logged_in -->
   <li><a href="{U_SEARCH_NEW}">{L_SEARCH_NEW}</a>&nbsp;•&nbsp;</li>
   <li><a href="{U_SEARCH_SELF}">{L_SEARCH_SELF}</a>&nbsp;•&nbsp;</li>
   <!-- END switch_user_logged_in -->
   <li><a href="{U_SEARCH_UNANSWERED}">{L_SEARCH_UNANSWERED}</a></li>
   <!-- BEGIN switch_user_logged_in -->
   <li class="rightside"><a href="{U_MARK_READ}" accesskey="m">{L_MARK_FORUMS_READ}</a></li>
   <!-- END switch_user_logged_in -->
</ul>

<!-- BEGIN catrow -->
   <!-- BEGIN tablehead -->
      <div class="forabg">
         <div class="inner"><span class="corners-top"><span></span></span>
                       
    <ul class="topiclist">
            <li class="header index">
              <dl class="icon">
                <dd class="dterm"><div class="table-title">{catrow.tablehead.L_FORUM}</div></dd>
                <dd class="topics">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{L_TOPICS}</dd>
                <dd class="posts">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{L_POSTS}</dd>
                <dd class="lastpost"><span>{L_LASTPOST}</span></dd>
              </dl>
            </li>
          </ul>
                         
                          <ul class="topiclist forums">
   <!-- END tablehead -->

   <!-- BEGIN forumrow -->
            <li class="row">
               <dl class="icon" style="background:url({catrow.forumrow.FORUM_FOLDER_IMG}) no-repeat scroll {catrow.forumrow.INC_LEVEL} 50%;">
                  <dd class="dterm">
                     <div style="display: block; margin : 0 {catrow.forumrow.INC_LEVEL_RIGHT} 0 {catrow.forumrow.INC_LEVEL_LEFT};">
                        <h{catrow.forumrow.LEVEL} class="hierarchy">
                        <a href="{catrow.forumrow.U_VIEWFORUM}" class="forumtitle">{catrow.forumrow.FORUM_NAME}</a>
                        </h{catrow.forumrow.LEVEL}>
                        <br />
                        {catrow.forumrow.FORUM_DESC}

                        <!-- BEGIN switch_moderators_links -->
                           {catrow.forumrow.switch_moderators_links.L_MODERATOR}{catrow.forumrow.switch_moderators_links.MODERATORS}
                        <!-- END switch_moderators_links -->
                        {catrow.forumrow.L_LINKS}{catrow.forumrow.LINKS}
                        <strong>{forumrow.L_SUBFORUM_STR}</strong> {forumrow.SUBFORUMS}
                     </div>
                  </dd>
                  <dd class="topics">{catrow.forumrow.TOPICS} <dfn>{L_TOPICS}</dfn></dd>
                  <dd class="posts">{catrow.forumrow.POSTS} <dfn>{L_POSTS}</dfn></dd>
                  <dd class="lastpost">
                            <!-- BEGIN avatar -->
                            <span class="lastpost-avatar">{catrow.forumrow.avatar.LAST_POST_AVATAR}</span>
                            <!-- END avatar -->

                     <span>
                     <!-- BEGIN switch_topic_title -->
                     <a href="{catrow.forumrow.U_LATEST_TOPIC}" title="{catrow.forumrow.LATEST_TOPIC_TITLE}">{catrow.forumrow.LATEST_TOPIC_NAME}</a><br />
                     <!-- END switch_topic_title -->
                     {catrow.forumrow.USER_LAST_POST}
                     </span>
                  </dd>
               </dl>
            </li>
   <!-- END forumrow -->

   <!-- BEGIN tablefoot -->
            </ul>

         <span class="corners-bottom"><span></span></span></div>
      </div>
   <!-- END tablefoot -->
<!-- END catrow -->

<!-- BEGIN switch_on_index -->
<ul class="linklist">
   <li><a href="{U_TODAY_ACTIVE}">{L_TODAY_ACTIVE}</a>&nbsp;•&nbsp;</li>
   <li><a href="{U_TODAY_POSTERS}">{L_TODAY_POSTERS}</a>&nbsp;•&nbsp;</li>
   <li class="last"><a href="{U_OVERALL_POSTERS}">{L_OVERALL_POSTERS}</a></li>
   <!-- BEGIN switch_delete_cookies -->
   <li class="rightside"><a href="{switch_on_index.switch_delete_cookies.U_DELETE_COOKIES}" rel="nofollow">{switch_on_index.switch_delete_cookies.L_DELETE_COOKIES}</a></li>
   <!-- END switch_delete_cookies -->
</ul>
<!-- END switch_on_index -->

Dans le CSS, il n'y a rien de spécial si ce n'est le centrage des titres donc ....

mdlettrage
***

Masculin
Messages : 143
Inscrit(e) le : 19/01/2016

http://www.csap-liege.forumactif.be
mdlettrage a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Déployer un forum quand il y a un nouveau message

Message par Milouze14 le Sam 23 Avr 2016 - 6:20

Salut mdlettrage et Neptunia Wink ,


en ajoutant après le script existant ceci:

Code:

$(function(){
$('dd.lastpost img[title="Voir le message le plus récent"]').closest('.topiclist').show();
});



Ce qui donnera:
Code:
    /* categories retractables sans invision */
            $(function() {
              if(window.localStorage) {
                var b = JSON.parse(localStorage.getItem("catRet")) || {}
              }
              var f = 0;
              if($("body#phpbb").length) {
                var a = "div.table-title h2", e = "ul.topiclist", c = ":not(ul.topiclist.forums)"
              }else {
                $("#pun-intro").length ? (a = "div.page-title h2", e = "div.main-head", c = ":not(div.main-content)") : (a = "th.secondarytitle h2", e = "tr", c = ":not(tr)")
              }
              $(a).closest(e).css("cursor", "pointer").each(function() {
                var d = "c" + f++, a;
                window.localStorage ? b[d] && (a = !0) : a = !1;
                a && $(this).nextUntil(c).toggle();
                $(this).click(function() {
                  $(this).nextUntil(c).toggle();
                  window.localStorage && (b[d] ? delete b[d] : b[d] = 1, localStorage.setItem("catRet", JSON.stringify(b)))
                })
              })
            });
$(function(){
$('dd.lastpost img[title="Voir le message le plus récent"]').closest('.topiclist').show();
});


Penses à cliquer sur le bouton

a++

Milouze14
+ Hyperactif +

Masculin
Messages : 4563
Inscrit(e) le : 18/04/2005

http://www.milouze14.com/
Milouze14 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Déployer un forum quand il y a un nouveau message

Message par mdlettrage le Sam 23 Avr 2016 - 13:48

Coucou Milouze14 et Neptunia.

Tout d'abord, c'est génial, cela fonctionne à merveille donc un tout grand merci.

Maintenant, je vais pousser le bouchon un peu plus loin (je ne m'appelle pas maurice)... et je m'explique :

1- Imaginons que le forum contiennent 3 catégories (auto/moto/camion)
2- Le membre qui n'aime pas les camions réduit la catégorie pour ne pas la voir
3- Avec la modif de ce jour, il va devoir minimiser la catégorie à chaque visite s'il y a un nouveau message donc mon idée est contre-productive pour lui.
4- Par contre, pour les modo et admin, là c'est super génial et c'était, en fait, mon but premier. Je souhaitais voir tous les nouveaux messages même si la catégorie était minimisée.

La question bonus est donc la suivante :

Serait-il possible de pousser le vice et de repousser les limites en faisant en sorte que la modif de Milouze14 ne soit effective que pour ceux qui ont le droit de modération sur la catégorie ou pour un groupe donné si la variable est plus facile à utiliser ?

Si cela n'est pas possible, aucun soucis, je suis très heureux du résultat actuel et il m'appartiendra de rendre un max de membres heureux donc le choix se confirmera ou non avec le temps.

Maintenant, si cela n'est pas possible, merci de me le signaler que je passe le sujet en résolu pour qu'il puisse en aider d'autres.

Bon week-end à tous

mdlettrage
***

Masculin
Messages : 143
Inscrit(e) le : 19/01/2016

http://www.csap-liege.forumactif.be
mdlettrage a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Déployer un forum quand il y a un nouveau message

Message par Milouze14 le Lun 25 Avr 2016 - 16:54

Salut mdlettrage,

tu as poussé le bouchon trop loin alors Very Happy .
Non cela va être très compliqué a mettre en œuvre chez ami Wink .

a++

Milouze14
+ Hyperactif +

Masculin
Messages : 4563
Inscrit(e) le : 18/04/2005

http://www.milouze14.com/
Milouze14 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Déployer un forum quand il y a un nouveau message

Message par mdlettrage le Lun 25 Avr 2016 - 17:32

Coucou Milouze14

bon ok, on va dire que l'informatique gagne pour une fois.

j'avais pensé qu'on aurait pu utiliser le paramètre "vous pouvez modérer ce forum" ... mais bon allez, pour une fois, je m'avoue vaincu.

Merci de ton aide

mdlettrage
***

Masculin
Messages : 143
Inscrit(e) le : 19/01/2016

http://www.csap-liege.forumactif.be
mdlettrage a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Déployer un forum quand il y a un nouveau message

Message par Milouze14 le Lun 25 Avr 2016 - 17:55

Re,
on peut le faire que pour les groupes, exemple pour les membres du groupe 1:
Le groupe 1 correspond aux admins:

Le script devra donc être modifié ainsi:
Code:

$(function(){if(_userdata["user_level"] ==1)
$(function(){
$('dd.lastpost img[title="Voir le message le plus récent"]').closest('.topiclist').show();
})});
Mais pour différencier les droits pour chaque catégorie, humm je doute que cela soit possible.

a++

Milouze14
+ Hyperactif +

Masculin
Messages : 4563
Inscrit(e) le : 18/04/2005

http://www.milouze14.com/
Milouze14 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Déployer un forum quand il y a un nouveau message

Message par mdlettrage le Lun 25 Avr 2016 - 18:00

Re coucou,

cela est largement suffisant car le groupe 2 chez moi correspond à ceux qui gèrent donc tu as fort probablement trouvé la solution miracle ... J'essaye

mdlettrage
***

Masculin
Messages : 143
Inscrit(e) le : 19/01/2016

http://www.csap-liege.forumactif.be
mdlettrage a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Déployer un forum quand il y a un nouveau message

Message par mdlettrage le Lun 25 Avr 2016 - 18:44

GENIAL ...

En fait, il "suffit" de prendre ton code et de le mettre pour chaque groupe concerné en mettant son numéro correspondant donc on a atteint les sommets de la perfection ...

Bon, que pourrait-on encore demander de plus ?....

Rien, c'est parfait.

Merci 1000 fois et j'espère que cela en aidera bien d'autres.

Marc

mdlettrage
***

Masculin
Messages : 143
Inscrit(e) le : 19/01/2016

http://www.csap-liege.forumactif.be
mdlettrage a été remercié(e) par l'auteur de ce sujet.

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


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