Boutons suivant et précédent pour la messagerie privée

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

  • 0

Tutoriel Boutons suivant et précédent pour la messagerie privée

Message par Shadow Jeu 25 Juin 2015 - 11:44

Boutons suivant et précédent pour la messagerie privée

Ce tutoriel vous permet d'ajouter deux boutons (suivant et / ou précédent) afin de passer d'un message privé à un autre sans avoir à repasser par la boîte de réception.

Voir illustration :

Création du script


Panneau d'administration  Modules  HTML & JAVASCRIPT - Gestion des codes Javascript

Assurez-vous que la gestion des codes Javascript soit activée, puis créez un nouveau javascript ayant pour titre "Boutons Précédent & Suivant MP" et pour placement "Sur toutes les pages" (plus d'informations sur la gestion des scripts).

Code:
$(function(){
    "use strict";
    var a=["inbox","savebox"],b,dl=document.location.search;
    for(b in a){
        if(dl.indexOf("folder="+a[b]+"&mode=read&p=")!=-1){
            (function(box){
                $.get("/privmsg?folder="+box,function(mpStart){
                    var messages=$("a[href^='/privmsg?folder="+box+"&mode=read&p=']",mpStart).toArray();
                    var linkToObject=function(lc){return {"href":lc.href,"title":lc.title,"text":lc.textContent}};
                    var setButtons=function(){
                        var getPid=function(a){return /p=(\d+)/.exec(a)[1]},message;
                        for(i=0;i<messages.length;i++){
                            message=messages[i];
                            if(getPid(dl)==getPid(message.href)){
                                if(i||i<messages.length-1){
                                    var $navMP=$("<div>",{id:"navMP"});
                                    if(i<messages.length-1)$navMP.append($('<a>',{"id":"navMP-precedent","href":messages[i+1].href,"title":messages[i+1].title||messages[i+1].text}));
                                    if(i)$navMP.append($('<a>',{"id":"navMP-suivant","href":messages[i-1].href,"title":messages[i-1].title||messages[i-1].text}));
                                    $("#navMP").length?$("#navMP").html($navMP.html()):$("form[action^='/privmsg']").before($navMP);
                                }
                                break;
                            }
                        }
                    };
                    var requests=$("a[href^='/privmsg?folder="+box+"&start=']",mpStart).slice(0,-1).toArray();
                    if(requests.length){
                        requests=requests.map(function(e){return $.get(e.href)});
                        $.when.apply(null,requests).done(function(){
                            var d_msg,requestData;
                            if(requests.length>1){
                                for(i=0;i<arguments.length;i++){
                                    requestData=arguments[i][0];
                                    d_msg=$("a[href^='/privmsg?folder="+box+"&mode=read&p=']",requestData).toArray();
                                    messages=messages.concat(d_msg);
                                }
                                messages.map(linkToObject);
                                setButtons();
                            }else{
                                requestData=arguments[0];
                                d_msg=$("a[href^='/privmsg?folder="+box+"&mode=read&p=']",requestData).toArray();
                                messages=messages.concat(d_msg).map(linkToObject);
                                setButtons();
                            }
                        });
                    }else{
                        messages=messages.map(linkToObject);
                        setButtons();
                    }
                });
            }(a[b]));
        }
    }
});

N'oubliez pas de cliquer sur le bouton Valider pour sauvegarder les modifications.

Insertion du CSS


Panneau d'administration  Affichage  Images et Couleurs - Couleurs (Onglet Feuille de style CSS)

Ajoutez le code suivant :

Code:
#navMP{
    height:16px;
    height:1rem;
}
#navMP>a{
    display:inline-block;
    padding-left:.75em;
    padding-right:.75em;
    font-size:1.2em;
    line-height:1.2em;
    color:#000000;
    background:#ffffff;
    text-decoration:none !important;
    border:1px solid #aaa;
}
#navMP>a:hover{
    color:#ffffff;
    background:#000000;
    text-decoration:none !important;
}
#navMP-precedent{
    float:left;
    border-radius:.6em 0 0 .6em;
}
#navMP-suivant{
    float:right;
    border-radius:0 1.2em 1.2em 0;
}
#navMP-precedent::before{
    content:"Précédent";
}
#navMP-suivant::before{
    content:"Suivant";
}

N'oubliez pas de cliquer sur le bouton Valider pour sauvegarder les modifications.

Remarques techniques


  • Le code javascript est conçu pour être compatible avec les versions (PhpBB2, PhpBB3, PunBB, Invision et ModernBB). Si vous souhaitez décider par vous même où placer les boutons suivant et précédent, il vous suffit d'éditer votre template "privmsgs_read_body" et d'y ajouter le code suivant où vous le désirez :

    Panneau d'administration  Affichage  Templates  Poster & Messages privés, privmsgs_read_body

    Code:
    <div id="navMP"></div>

  • L'affichage des boutons peut prendre plus ou moins de temps selon votre vitesse de connexion et la configuration du nombre de sujets par page de votre forum, plus le nombre de sujets par page est faible, plus le script sera obligé de faire des requêtes, plus il sera lent. Vous pouvez vérifier la valeur du nombre de sujets par page ainsi :

    Panneau d'administration  Général  Messages et Email  Configuration, Nombre de sujets par page




Dernière édition par Walt le Mer 14 Juil 2021 - 16:01, édité 7 fois (Raison : Typo,Mise à jour du script et du CSS + support modernBB)
Shadow

Shadow
Modéractive
Modéractive

Féminin
Messages : 24353
Inscrit(e) le : 30/03/2007

Voir le profil de l'utilisateur
Shadow a été remercié(e) par l'auteur de ce sujet.

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

- Sujets similaires

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