Éditer le titre depuis la liste des sujets

Page 1 sur 2 1, 2  Suivant

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

Résolu Éditer le titre depuis la liste des sujets

Message par Matriochka le Mer 30 Jan 2013 - 17:40

Bonjour à tous,

Dans le même ordre d’idée mon précédent topic : outils de modération depuis la liste des sujets, j’aimerais maintenant apprendre à créer le script qui me permettra, si possible, de modifier le titre d’un sujet directement depuis la liste des sujets.

Donc dans l’idéal, j’aimerais avoir un nouveau bouton à côté de ces boutons (pas très visibles car leur opacité a été réduite) :


Sur lequel je clique pour faire apparaître à la place du titre existant une zone de texte, où je pourrai effectuer une modification :


Avec éventuellement un petit bouton juste à droite de la zone de saisie pour valider la modification. Un peu à l’image des champs modifiables depuis le profil, au final…

Voilà à peu près ce que j’aimerais réaliser afin de fignoler la personnalisation de cette liste de sujets. Merci à tous ceux qui prendront le temps de lire ce message et surtout à ceux qui se pencheront sur le sujet Wink


Dernière édition par Matriochka le Dim 3 Mar 2013 - 10:55, édité 1 fois

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Dim 3 Fév 2013 - 9:48

Hop, je remonte un peu Smile

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Foufouw' le Dim 3 Fév 2013 - 13:29

Je t'aiderai pas pour le code, mais on pourrait déjà créer un 4è bouton avec la possibilité de modifier le 1er post, en gros Editer le sujet & donc son titre. Ca paraît déjà plus possible que ce que tu demande, non ? :0

Foufouw'
Nouveau membre

Masculin
Messages : 21
Inscrit(e) le : 08/02/2012

http://ac-one.forumactif.org/forum
Foufouw' a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Dim 3 Fév 2013 - 13:45

Merci pour ta réponse. Je sais que ce que je demande est possible, je ne sais juste pas le réaliser à l’heure actuelle, bien que j’aie quelques petites idées (infructueuses). J’attends donc quelqu’un pour m’apprendre à créer ce script Smile

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Lun 4 Fév 2013 - 21:20

Je remonte à nouveau.

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Mer 6 Fév 2013 - 11:16

Je remonte

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Arlem le Mer 6 Fév 2013 - 11:20

Yop,

Tu es sûre que la demande est possible ?
Autant la partie bouton avec le titre du topic qui se change en zone de texte pour éditer ça, je vois... autant le script pour récupérer l'id du premier post concerné ainsi que son contenu depuis la page des sous-forum, ça me parait un peu plus tendu.

Arlem
+ Hyperactif +

Messages : 2550
Inscrit(e) le : 30/06/2009

Arlem a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Mer 6 Fév 2013 - 11:23

Hello,

Merci pour ta réponse Arlem (encore toi :3)

Ça me semble possible, oui, pour l’avoir vu sur certains forums hébergés sur Forumactif. Bon après, si ça ne l’est vraiment pas, ça n’est pas grave, je me contenterai du système actuel… silent

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Ea le Mer 6 Fév 2013 - 11:40

Bonjour,


Il y a plusieurs solutions avec leurs problèmes :

  1. Le script répond au sujet en éditant le titre => problème = soit on met un message comme quoi le titre a été modifié, soit on supprime le message ( mais des gens pourrait avoir une notification pour rien ).

  2. On découpe tout les messages du sujet dans un nouveau sujet avec le nouveau titre => problème = le sujet change de lien + il faut l'identifiant du premier poste du sujet ( donc ouvrir le sujet )

  3. On ouvre l'édition du premier poste du sujet et édite le titre => problème = il faut ouvrir le sujet pour avoir l'identifiant du premier post du sujet

  4. On ouvre l'édition du dernier poste du sujet et édite le titre => problème = pour le moment, une édition du titre par une réponse ne modifie pas le titre dans l'index de recherche ( bug signalé il y a quelques temps mais toujours d'actualité )

Le mieux et le plus léger me semble la dernière solution, mais si pouvoir trouver le nouveau titre par la recherche est important il faudrait plutôt utiliser la première ou troisième.

Cordialement.

Ea
Aidactif
Aidactif

Messages : 23418
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Mer 6 Fév 2013 - 11:48

Merci pour ta réponse, Ea

Là comme ça, je dirai que la troisième solution est la plus intéressante, mais qu’entends-tu par :
Code:
il faut ouvrir le sujet pour avoir l'identifiant du premier post du sujet
Ça signifie que dès qu’on cliquera sur le bouton pour modifier la titre, on sera renvoyés vers l’interface d’édition du premier message ?

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Ea le Mer 6 Fév 2013 - 12:14

cela veut dire qu'il faut :

-> 1 requête pour charger la page du sujet
-> y prendre l'identifiant du premier message
-> 1 requête pour avoir la page d'édition du premier message
-> l'envoyer en ayant changé le titre

donc un code comme ceci :

Code:
/* saisie d'une page du sujet */
$.get("/t345178-editer-le-titre-depuis-la-liste-des-sujets", function(c) {
  /* prendre identifiant du premier message */
  var first_post_id = $(".post a[name]", c).first().attr("name");
  /* si pas on fait rien */
  if(!first_post_id) {
    return
  }
  /* saisie du formulaire d'édition du message */
  $.get("/post?p=" + first_post_id + "&mode=editpost", function(c) {
    /* envoi de ce formulaire en ayant changé le titre */
    $.post("/post", $('form[name="post"]', c).serialize().replace(/(^|&)subject=[^&]+(&|$)/, "$1subject=" + encodeURIComponent('nouveau titre') + "$2") + "&post=1",function(c){
      /* test pour voir si ça s'est bien passé */
      if(c.indexOf('Message enregistré avec succès')!=-1) alert('yeah réussi')
    })
  })
});
qu'il faudrait juste changer pour le nouveau titre, l'adresse du sujet et l'action à faire si ça s'est bien passé ( d'habitude retirer le champ texte et mettre le nouveau titre en directe ).

Ea
Aidactif
Aidactif

Messages : 23418
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Mer 6 Fév 2013 - 13:17

J’ai essayé le script en modifiant ce qu’il fallait, mais je ne vois rien apparaître dans la liste des sujets… J’avoue que je patauge un peu pour le coup, je débute avec ce langage alors j’ai du mal à suivre malgré les explications… pale

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Arlem le Mer 6 Fév 2013 - 13:33

J'y arrive de mon côté, thx pour le script Ea, tu avais modifié le script des outils de modération Matriochka ? Si oui donne le nous et on t'expliquera par étapes ce qu'il faut modifier que tu comprennes le principe. Wink

(Et btw felicidades pour ton rang d'aidactive à l'essai. o/)

Arlem
+ Hyperactif +

Messages : 2550
Inscrit(e) le : 30/06/2009

Arlem a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Mer 6 Fév 2013 - 13:38

Merci Arlem! (aidactive qui demande de l’aide Razz)

Voilà mon script pour les outils de modération :
Code:
/* adresse img modération lock */
var lock_img = "http://img11.hostingpics.net/pics/689379lock.png";
/* adresse img modération unlock */
var unlock_img = "http://img11.hostingpics.net/pics/269944lockunlock.png";
/* adresse img modération corbeille */
var trash_img = "http://img11.hostingpics.net/pics/781353bin.png";
/* adresse img modération supprimer */
var delete_img = "http://img11.hostingpics.net/pics/204355cross.png";
/* adresse cookie contenant le sid */
var cookie = my_getcookie('fa_nara_jdrforum_com_sid');
 
$(function() {
  /* Si l'utilisateur a les droits de modération, on affiche les outils de modération */
  if($('#is_allowed:contains("modérer")').length > 0) {
      $('.mod_tools').each(function() {
        /* Si le topic est verrouillé on affiche le bouton déverrouiller */
        if($(this).parent().parent().children('.row1').children('img').attr('title').slice(13,19) == "verrou") {
            $(this).append('<img src="'+unlock_img+'" class="mod_unlock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
        }
        /* Sinon on affiche le bouton verrouiller */ else {
            $(this).append('<img src="'+lock_img+'" class="mod_lock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
        }
      });
  }
  /* Clic sur le bouton déverrouiller */
  $('.mod_unlock').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
        $.get('/modcp.forum?t='+$(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/,'$1')+'&mode=unlock&sid='+cookie);
        $(this).addClass('mod_lock').removeClass('mod_unlock');
        $(this).attr('src',lock_img);
      }
  });
  /* Clic sur le bouton verrouiller */
  $('.mod_lock').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
        $.get('/modcp.forum?t='+$(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/,'$1')+'&mode=lock&sid='+cookie);
        $(this).addClass('mod_unlock').removeClass('mod_lock');
        $(this).attr('src',unlock_img);
      }
  });
  /* Clic sur le bouton corbeille */
  $('.mod_trash').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
        $.get('/modcp.forum?t='+$(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/,'$1')+'&mode=trash&sid='+cookie);
      }
  });
  /* Clic sur le bouton supprimer */
$(this).closest('tr').remove();
  $('.mod_delete').click(function() {

if(confirm('Vraiment supprimer ?')) {
 $(this).closest('tr').remove();
}

    // prendre le tid
    var tid= $("input[name=tid]:first").val() ||  ($("a[href*='&tid=']:first").attr("href")||"").replace(/^.*&tid=([a-f0-9]*)?.*$/,"$1");
    // prendre le fid
    var fid= location.href.replace(/^.*\/f([0-9]+)[p-].*$/,'$1');
    // prendre le topic_id
var topic_id= $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1');
    $.post("/modcp?tid="+tid,{f:fid, t:topic_id, tid: tid, mode:"delete",confirm:"1"});
  });
});

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Arlem le Mer 6 Fév 2013 - 13:52

(On peut pas être parfait. :3)

Alors, dans l'ordre, au tout début ajoute ceci en modifiant l'url de l'image que tu souhaites :
Code:
/* adresse img modération edit */
var edit_img= "adresse_img_edit";
Ensuite ici :
Code:
   /* Si l'utilisateur a les droits de modération, on affiche les outils de modération */
   if($('#is_allowed:contains("modérer")').length > 0) {
      $('.mod_tools').each(function() {
         /* Si le topic est verrouillé on affiche le bouton déverrouiller */
         if($(this).children('img').attr('alt').slice(13,19) == "verrou") {
            $(this).append('<img src="'+unlock_img+'" class="mod_unlock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
         }
         /* Sinon on affiche le bouton verrouiller */ else {
            $(this).append('<img src="'+lock_img+'" class="mod_lock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
         }
      }
      );
   }
Rajoute l'affichage de l'image d'édition à côté des autres en éditant ainsi :
Code:
   /* Si l'utilisateur a les droits de modération, on affiche les outils de modération */
   if($('#is_allowed:contains("modérer")').length > 0) {
      $('.mod_tools').each(function() {
         /* Si le topic est verrouillé on affiche le bouton déverrouiller */
         if($(this).children('img').attr('alt').slice(13,19) == "verrou") {
            $(this).append('<img src="'+edit_img+'" class="edit_topic"><img src="'+unlock_img+'" class="mod_unlock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
         }
         /* Sinon on affiche le bouton verrouiller */ else {
            $(this).append('<img src="'+edit_img+'" class="edit_topic"><img src="'+lock_img+'" class="mod_lock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
         }
      }
      );
   }
Et enfin on ajoute à la fin, juste avant le dernier "});" tout la partie de script pour afficher la zone d'édition toussa :
Code:
$('.edit_topic').click(function() {
/* On cache le titre et on affiche la zone d'édition */
      $(this).closest('tr').find('a.topictitle').hide().after('<input type="text" id="new_title" value="'+$(this).closest('tr').find('a.topictitle').text()+'"/><input type="submit" class="edit_title"/>');
   }
   );
   $('.edit_title').live('click', function() {
      /* saisie d'une page du sujet */
      $.get($(this).closest('tr').find('a.topictitle').attr('href'), function(c) {
         /* prendre identifiant du premier message */
         var first_post_id = $(".post a[name]", c).first().attr("name");
         /* si pas on fait rien */
         if(!first_post_id) {
            return
         }
         /* saisie du formulaire d'édition du message */
         $.get("/post?p=" + first_post_id + "&mode=editpost", function(c) {
            /* envoi de ce formulaire en ayant changé le titre */
            $.post("/post", $('form[name="post"]', c).serialize().replace(/(^|&)subject=[^&]+(&|$)/, "$1subject=" + encodeURIComponent($('#new_title').val()) + "$2") + "&post=1",function(c) {
               /* test pour voir si ça s'est bien passé */
               if(c.indexOf('Message enregistré avec succès')!=-1) alert('yeah réussi')
            }
            )
         }
         )
      });
});
J'viens de me rendre compte que j'ai oublié de réafficher le titre du topic édité une fois l'action faite donc si toi ou quelqu'un d'autre veux s'en occuper n'hésitez pas sinon je testerais ce soir là le travail m'appelle !


Dernière édition par Arlem le Sam 9 Fév 2013 - 16:53, édité 1 fois

Arlem
+ Hyperactif +

Messages : 2550
Inscrit(e) le : 30/06/2009

Arlem a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Ea le Mer 6 Fév 2013 - 14:42

j'avais fait ceci :

Code:
var lock_img = "http://img11.hostingpics.net/pics/689379lock.png";
var unlock_img = "http://img11.hostingpics.net/pics/269944lockunlock.png";
var trash_img = "http://img11.hostingpics.net/pics/781353bin.png";
var delete_img = "http://img11.hostingpics.net/pics/204355cross.png";
var rename_img = "http://i39.tinypic.com/2dkha3p.png";
var cookie = my_getcookie('fa_nara_jdrforum_com_sid');
$(function () {
    if ($('#is_allowed:contains("modérer")').length > 0) {
        $('.mod_tools').each(function () {
            if ($(this).parent().parent().children('.row1').children('img').attr('title').slice(13, 19) == "verrou") {
                $(this).append('<img src="' + rename_img + '" class="mod_rename"/><img src="' + unlock_img + '" class="mod_unlock"/><img src="' + trash_img + '" class="mod_trash"/><img src="' + delete_img + '" class="mod_delete"/>')
            } else {
                $(this).append('<img src="' + rename_img + '" class="mod_rename"/><img src="' + lock_img + '" class="mod_lock"/><img src="' + trash_img + '" class="mod_trash"/><img src="' + delete_img + '" class="mod_delete"/>')
            }
        })
    }
    $('.mod_unlock').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=unlock&sid=' + cookie);
            $(this).addClass('mod_lock').removeClass('mod_unlock');
            $(this).attr('src', lock_img)
        }
    });
    $('.mod_lock').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=lock&sid=' + cookie);
            $(this).addClass('mod_unlock').removeClass('mod_lock');
            $(this).attr('src', unlock_img)
        }
    });
    $('.mod_trash').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=trash&sid=' + cookie)
        }
    });
    $(this).closest('tr').remove();
    $('.mod_delete').click(function () {
        if (confirm('Vraiment supprimer ?')) {
            $(this).closest('tr').remove()
        }
        var tid = $("input[name=tid]:first").val() || ($("a[href*='&tid=']:first").attr("href") || "").replace(/^.*&tid=([a-f0-9]*)?.*$/, "$1");
        var fid = location.href.replace(/^.*\/f([0-9]+)[p-].*$/, '$1');
        var topic_id = $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/, '$1');
        $.post("/modcp?tid=" + tid, {
            f: fid,
            t: topic_id,
            tid: tid,
            mode: "delete",
            confirm: "1"
        })
    })
    $('.mod_rename').click(function () {
        var b = $(this);
        if (b.data('topictitle')) {
            b.closest('td').find('.modiftitle').replaceWith(b.data('topictitle'));
            b.removeData('topictitle');
        } else {
            var title = b.closest('td').find('a.topictitle').first();
            var num = title.attr('href').replace(/^\/t([1-9][0-9]*)(p[0-9]+)?-.*$/, "$1")
            b.data('topictitle', title.parent().html());
            $('<span class="modiftitle"><input type="text" value="' + title.html().replace(/"/g, "&quot;") + '" style="width:150px"> <input type="button" value="Mettre à jour" /></span>').replaceAll(title).find('input').last().click(function () {

                /* saisie d'une page du sujet */
                $.get("/t" + num + "-", function (c) {
                    /* prendre identifiant du premier message */
                    var first_post_id = $(".post a[name]", c).first().attr("name");
                    /* si pas on fait rien */
                    if (!first_post_id) {
                        return
                    }
                    /* saisie du formulaire d'édition du message */
                    $.get("/post?p=" + first_post_id + "&mode=editpost", function (c) {
                        /* envoi de ce formulaire en ayant changé le titre */
                        var nouveau_titre = $('this').parent().find('input').first().val();
                        $.post("/post", $('form[name="post"]', c).serialize().replace(/(^|&)subject=[^&]+(&|$)/, "$1subject=" + encodeURIComponent(nouveau_titre) + "$2") + "&post=1", function (c) {
                            /* test pour voir si ça s'est bien passé */
                            if (c.indexOf('Message enregistré avec succès') != -1) $(b.data()).replaceAll($(this).parent()).text(nouveau_titre);
                        })
                    })
                });
            });
        }
    });

});
Ou bien avec un prompt :

Code:
var lock_img = "http://img11.hostingpics.net/pics/689379lock.png";
var unlock_img = "http://img11.hostingpics.net/pics/269944lockunlock.png";
var trash_img = "http://img11.hostingpics.net/pics/781353bin.png";
var delete_img = "http://img11.hostingpics.net/pics/204355cross.png";
var rename_img = "http://i39.tinypic.com/2dkha3p.png";
var cookie = my_getcookie('fa_nara_jdrforum_com_sid');
$(function () {
    if ($('#is_allowed:contains("modérer")').length > 0) {
        $('.mod_tools').each(function () {
            if ($(this).parent().parent().children('.row1').children('img').attr('title').slice(13, 19) == "verrou") {
                $(this).append('<img src="' + rename_img + '" class="mod_rename"/><img src="' + unlock_img + '" class="mod_unlock"/><img src="' + trash_img + '" class="mod_trash"/><img src="' + delete_img + '" class="mod_delete"/>')
            } else {
                $(this).append('<img src="' + rename_img + '" class="mod_rename"/><img src="' + lock_img + '" class="mod_lock"/><img src="' + trash_img + '" class="mod_trash"/><img src="' + delete_img + '" class="mod_delete"/>')
            }
        })
    }
    $('.mod_unlock').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=unlock&sid=' + cookie);
            $(this).addClass('mod_lock').removeClass('mod_unlock');
            $(this).attr('src', lock_img)
        }
    });
    $('.mod_lock').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=lock&sid=' + cookie);
            $(this).addClass('mod_unlock').removeClass('mod_lock');
            $(this).attr('src', unlock_img)
        }
    });
    $('.mod_trash').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=trash&sid=' + cookie)
        }
    });
    $(this).closest('tr').remove();
    $('.mod_delete').click(function () {
        if (confirm('Vraiment supprimer ?')) {
            $(this).closest('tr').remove()
        }
        var tid = $("input[name=tid]:first").val() || ($("a[href*='&tid=']:first").attr("href") || "").replace(/^.*&tid=([a-f0-9]*)?.*$/, "$1");
        var fid = location.href.replace(/^.*\/f([0-9]+)[p-].*$/, '$1');
        var topic_id = $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/, '$1');
        $.post("/modcp?tid=" + tid, {
            f: fid,
            t: topic_id,
            tid: tid,
            mode: "delete",
            confirm: "1"
        })
    })
    $('.mod_rename').click(function () {
        var titre = $(this).closest('td').find('a.topictitle').first();
        var nouveau_titre = prompt('Nouveau titre ?', titre.text());
        if (nouveau_titre) {
            var num = titre.attr('href').replace(/^\/t([1-9][0-9]*)(p[0-9]+)?-.*$/, "$1")
            /* saisie d'une page du sujet */
            $.get("/t" + num + "-", function (c) {
                /* prendre identifiant du premier message */
                var first_post_id = $(".post a[name]", c).first().attr("name");
                /* si pas on fait rien */
                if (!first_post_id) {
                    return
                }
                /* saisie du formulaire d'édition du message */
                $.get("/post?p=" + first_post_id + "&mode=editpost", function (c) {
                    /* envoi de ce formulaire en ayant changé le titre */
                    $.post("/post", $('form[name="post"]', c).serialize().replace(/(^|&)subject=[^&]+(&|$)/, "$1subject=" + encodeURIComponent(nouveau_titre) + "$2") + "&post=1", function (c) {
                        /* test pour voir si ça s'est bien passé */
                        if (c.indexOf('Message enregistré avec succès') != -1) titre.text(nouveau_titre);
                    })
                })
            });
        }
    });

});

Ea
Aidactif
Aidactif

Messages : 23418
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Zeste le Mer 6 Fév 2013 - 15:45

Bonjour à tous ^^

Ea > J'ai essayé de mettre en place votre code, mais mes outils de modération ne s'affichent plus.

Code:

var lock_img = "http://img11.hostingpics.net/pics/689379lock.png";
var unlock_img = "http://img11.hostingpics.net/pics/269944lockunlock.png";
var trash_img = "http://img11.hostingpics.net/pics/781353bin.png";
var delete_img = "http://img11.hostingpics.net/pics/204355cross.png";
var rename_img = "http://i39.tinypic.com/2dkha3p.png";
var cookie = my_getcookie('fa_nara_jdrforum_com_sid');
$(function () {
    if ($('#is_allowed:contains("modérer")').length > 0) {
        $('.mod_tools').each(function () {
            if ($(this).parent().parent().children('.row1').children('img').attr('title').slice(13, 19) == "verrou") {
                $(this).append('<img src="' + rename_img + '" class="mod_rename"/><img src="' + unlock_img + '" class="mod_unlock"/><img src="' + trash_img + '" class="mod_trash"/><img src="' + delete_img + '" class="mod_delete"/>')
            } else {
                $(this).append('<img src="' + rename_img + '" class="mod_rename"/><img src="' + lock_img + '" class="mod_lock"/><img src="' + trash_img + '" class="mod_trash"/><img src="' + delete_img + '" class="mod_delete"/>')
            }
        })
    }
    $('.mod_unlock').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=unlock&sid=' + cookie);
            $(this).addClass('mod_lock').removeClass('mod_unlock');
            $(this).attr('src', lock_img)
        }
    });
    $('.mod_lock').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=lock&sid=' + cookie);
            $(this).addClass('mod_unlock').removeClass('mod_lock');
            $(this).attr('src', unlock_img)
        }
    });
    $('.mod_trash').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=trash&sid=' + cookie)
        }
    });
    $(this).closest('tr').remove();
    $('.mod_delete').click(function () {
        if (confirm('Vraiment supprimer ?')) {
            $(this).closest('tr').remove()
        }
        var tid = $("input[name=tid]:first").val() || ($("a[href*='&tid=']:first").attr("href") || "").replace(/^.*&tid=([a-f0-9]*)?.*$/, "$1");
        var fid = location.href.replace(/^.*\/f([0-9]+)[p-].*$/, '$1');
        var topic_id = $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/, '$1');
        $.post("/modcp?tid=" + tid, {
            f: fid,
            t: topic_id,
            tid: tid,
            mode: "delete",
            confirm: "1"
        })
    })
    $('.mod_rename').click(function () {
        var b = $(this);
        if (b.data('topictitle')) {
            b.closest('td').find('.modiftitle').replaceWith(b.data('topictitle'));
            b.removeData('topictitle');
        } else {
            var title = b.closest('td').find('a.topictitle').first();
            var num = title.attr('href').replace(/^\/t([1-9][0-9]*)(p[0-9]+)?-.*$/, "$1")
            b.data('topictitle', title.parent().html());
            $('<span class="modiftitle"><input type="text" value="' + title.html().replace(/"/g, "&quot;") + '" style="width:150px"> <input type="button" value="Mettre à jour" /></span>').replaceAll(title).find('input').last().click(function () {
 
                /* saisie d'une page du sujet */
                $.get("/t" + num + "-", function (c) {
                    /* prendre identifiant du premier message */
                    var first_post_id = $(".post a[name]", c).first().attr("name");
                    /* si pas on fait rien */
                    if (!first_post_id) {
                        return
                    }
                    /* saisie du formulaire d'édition du message */
                    $.get("/post?p=" + first_post_id + "&mode=editpost", function (c) {
                        /* envoi de ce formulaire en ayant changé le titre */
                        var nouveau_titre = $('this').parent().find('input').first().val();
                        $.post("/post", $('form[name="post"]', c).serialize().replace(/(^|&)subject=[^&]+(&|$)/, "$1subject=" + encodeURIComponent(nouveau_titre) + "$2") + "&post=1", function (c) {
                            /* test pour voir si ça s'est bien passé */
                            if (c.indexOf('Message enregistré avec succès') != -1) $(b.data()).replaceAll($(this).parent()).text(nouveau_titre);
                        })
                    })
                });
            });
        }
    });
 
});

Mon ancien code (qui marche !) est le suivant :
Code:
/* adresse img modération lock */
var lock_img = "http://illiweb.com/fa/subsilver/topic_lock.gif";
/* adresse img modération unlock */
var unlock_img = "http://illiweb.com/fa/subsilver/topic_unlock.gif";
/* adresse img modération corbeille */
var trash_img = "http://illiweb.com/fa/subsilver/topic_trashcan.gif";
/* adresse img modération supprimer */
var delete_img = "http://illiweb.com/fa/subsilver/topic_delete.gif";
/* adresse cookie contenant le sid (ne pas éditer) */
var cookie = my_getcookie('fa_'+location.hostname.replace(/\./g,'_')+'_sid');
$(function() {
  /* Si l'utilisateur a les droits de modération, on affiche les outils de modération */
  if($('#is_allowed:contains("modérer")').length > 0) {
      $('.mod_tools').each(function() {
        /* Si le topic est verrouillé on affiche le bouton déverrouiller */
        if($(this).children('img').attr('alt').slice(13,19) == "verrou") {
            $(this).append('<img src="'+unlock_img+'" class="mod_unlock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
        }
        /* Sinon on affiche le bouton verrouiller */ else {
            $(this).append('<img src="'+lock_img+'" class="mod_lock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
        }
      }
      );
  }
  /* Clic sur le bouton déverrouiller */
  $('.mod_unlock').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
        $.get('/modcp.forum?t='+$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1')+'&mode=unlock&sid='+cookie);
        $(this).addClass('mod_lock').removeClass('mod_unlock');
        $(this).attr('src',lock_img);
      }
  }
  );
  /* Clic sur le bouton verrouiller */
  $('.mod_lock').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
        $.get('/modcp.forum?t='+$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1')+'&mode=lock&sid='+cookie);
        $(this).addClass('mod_unlock').removeClass('mod_lock');
        $(this).attr('src',unlock_img);
      }
  }
  );
  /* Clic sur le bouton corbeille */
  $('.mod_trash').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
        $.get('/modcp.forum?t='+$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1')+'&mode=trash&sid='+cookie);
        $(this).closest('tr').remove();
      }
  }
  );
  /* Clic sur le bouton supprimer */
  $('.mod_delete').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
        // prendre le tid
        var tid= $("input[name=tid]:first").val() ||  ($("a[href*='&tid=']:first").attr("href")||"").replace(/^.*&tid=([a-f0-9]*)?.*$/,"$1");
        // prendre le fid
        var fid= location.href.replace(/^.*\/f([0-9]+)[p-].*$/,'$1');
        // prendre le topic_id
        var topic_id= $(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1');
        $.post("/modcp?tid="+tid, {
            f:fid, t:topic_id, tid: tid, mode:"delete",confirm:"1"
        }
        );
        $(this).closest('tr').remove();
      }
  }
  );
}
);

Si vous avez une idée de ce qu'il faudrait modifier pour que les modérateurs puissent avoir les boutons de modérations au survol d'un topic ainsi que la possibilité de modifier le titre du topic depuis la liste des sujets... Lunette

Bonne journée.

Zeste
# Tropactif #

Féminin
Messages : 1366
Inscrit(e) le : 28/11/2010

Zeste a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Mer 6 Fév 2013 - 15:54

@Daylaton, tu pourrais créer ton propre sujet pour cette demande : "avoir les boutons de modérations au survol d'un topic". Ça n’a rien à voir avec le topic en cours…

Arlem et Ea : J’ai essayé vos deux scripts, mais malheureusement, mes outils de modération on disparu. Voilà ce que j’ai (j’ai peut-être fait une boulette quelque part) :
Code:
/* adresse img modération edit */
var edit_img= "http://img11.hostingpics.net/pics/630345documentpencil.png";
/* adresse img modération lock */
var lock_img = "http://img11.hostingpics.net/pics/689379lock.png";
/* adresse img modération unlock */
var unlock_img = "http://img11.hostingpics.net/pics/269944lockunlock.png";
/* adresse img modération corbeille */
var trash_img = "http://img11.hostingpics.net/pics/781353bin.png";
/* adresse img modération supprimer */
var delete_img = "http://img11.hostingpics.net/pics/204355cross.png";
/* adresse cookie contenant le sid */
var cookie = my_getcookie('fa_nara_jdrforum_com_sid');
 
$(function() {
    /* Si l'utilisateur a les droits de modération, on affiche les outils de modération */
  if($('#is_allowed:contains("modérer")').length > 0) {
      $('.mod_tools').each(function() {
        /* Si le topic est verrouillé on affiche le bouton déverrouiller */
        if($(this).children('img').attr('alt').slice(13,19) == "verrou") {
            $(this).append('<img src="'+edit_img+'" class="edit_topic"><img src="'+unlock_img+'" class="mod_unlock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
        }
        /* Sinon on affiche le bouton verrouiller */ else {
            $(this).append('<img src="'+edit_img+'" class="edit_topic"><img src="'+lock_img+'" class="mod_lock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
        }
      }
      );
  }

  /* Clic sur le bouton déverrouiller */
  $('.mod_unlock').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
        $.get('/modcp.forum?t='+$(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/,'$1')+'&mode=unlock&sid='+cookie);
        $(this).addClass('mod_lock').removeClass('mod_unlock');
        $(this).attr('src',lock_img);
      }
  });
  /* Clic sur le bouton verrouiller */
  $('.mod_lock').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
        $.get('/modcp.forum?t='+$(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/,'$1')+'&mode=lock&sid='+cookie);
        $(this).addClass('mod_unlock').removeClass('mod_lock');
        $(this).attr('src',unlock_img);
      }
  });
  /* Clic sur le bouton corbeille */
  $('.mod_trash').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
        $.get('/modcp.forum?t='+$(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/,'$1')+'&mode=trash&sid='+cookie);
      }
  });
  /* Clic sur le bouton supprimer */
$(this).closest('tr').remove();
  $('.mod_delete').click(function() {
 
if(confirm('Vraiment supprimer ?')) {
 $(this).closest('tr').remove();
}
 
    // prendre le tid
    var tid= $("input[name=tid]:first").val() ||  ($("a[href*='&tid=']:first").attr("href")||"").replace(/^.*&tid=([a-f0-9]*)?.*$/,"$1");
    // prendre le fid
    var fid= location.href.replace(/^.*\/f([0-9]+)[p-].*$/,'$1');
    // prendre le topic_id
var topic_id= $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1');
    $.post("/modcp?tid="+tid,{f:fid, t:topic_id, tid: tid, mode:"delete",confirm:"1"});
  });

$('.edit_topic').click(function() {
/* On cache le titre et on affiche la zone d'édition */
      $(this).closest('tr').find('a.topictitle').hide().after('<input type="text" id="new_title" value="'+$(this).closest('tr').find('a.topictitle').html()+'"/><input type="submit" class="edit_title"/>');
  }
  );
  $('.edit_title').live('click', function() {
      /* saisie d'une page du sujet */
      $.get($(this).closest('tr').find('a.topictitle').attr('href'), function(c) {
        /* prendre identifiant du premier message */
        var first_post_id = $(".post a[name]", c).first().attr("name");
        /* si pas on fait rien */
        if(!first_post_id) {
            return
        }
        /* saisie du formulaire d'édition du message */
        $.get("/post?p=" + first_post_id + "&mode=editpost", function(c) {
            /* envoi de ce formulaire en ayant changé le titre */
            $.post("/post", $('form[name="post"]', c).serialize().replace(/(^|&)subject=[^&]+(&|$)/, "$1subject=" + encodeURIComponent($('#new_title').val()) + "$2") + "&post=1",function(c) {
              /* test pour voir si ça s'est bien passé */
              if(c.indexOf('Message enregistré avec succès')!=-1) alert('yeah réussi')
            }
            )
        }
        )
      });
});


});
(Là, en suivant les indications données par Arlem, mais même chose avec le script donné par Ea)

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Xoumi le Jeu 7 Fév 2013 - 0:07

Salut Matriochka,

Félicitations pour ta promotion Very Happy

Je suis avec attention le sujet et je travaille également sur la mise en place de ce type d'outils. Je remercie beaucoup Ea et Arlem pour leurs apports mutuels.

Est-ce que tu peux essayer le script suivant sur ton forum et me dire s'il fonctionne ? Après avoir un test sur mon forum phpbb2, cela fonctionne. J'ai simplement suivi les conseils d'Arlem car les deux scripts donnés par Ea conduisent (en effet) à la suppression des outils. Par contre, j'attends avec impatience qu'Arlem nous affiche le titre après le "Yeah réussi" Razz

Code:
/* adresse img modération edit */
var edit_img= "http://img11.hostingpics.net/pics/630345documentpencil.png";
/* adresse img modération lock */
var lock_img = "http://img11.hostingpics.net/pics/689379lock.png";
/* adresse img modération unlock */
var unlock_img = "http://img11.hostingpics.net/pics/269944lockunlock.png";
/* adresse img modération corbeille */
var trash_img = "http://img11.hostingpics.net/pics/781353bin.png";
/* adresse img modération supprimer */
var delete_img = "http://img11.hostingpics.net/pics/204355cross.png";
/* adresse cookie contenant le sid */
        var cookie = my_getcookie('fa_'+location.hostname.replace(/\./g,'_')+'_sid');
        $(function() {
          /* Si l'utilisateur a les droits de modération, on affiche les outils de modération */
          if($('#is_allowed:contains("modérer")').length > 0) {
              $('.mod_tools').each(function() {
                /* Si le topic est verrouillé on affiche le bouton déverrouiller */
                if($(this).children('img').attr('alt').slice(13,19) == "verrou") {
                    $(this).append('<img src="'+edit_img+'" class="edit_topic"/><img src="'+unlock_img+'" class="mod_unlock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
                }
                /* Sinon on affiche le bouton verrouiller */ else {
                    $(this).append('<img src="'+edit_img+'" class="edit_topic"/><img src="'+lock_img+'" class="mod_lock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
                }
              }
              );
          }
          /* Clic sur le bouton déverrouiller */
          $('.mod_unlock').click(function() {
              if (confirm("Êtes-vous sûr ?")) {
                $.get('/modcp.forum?t='+$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1')+'&mode=unlock&sid='+cookie);
                $(this).addClass('mod_lock').removeClass('mod_unlock');
                $(this).attr('src',lock_img);
              }
          }
          );
          /* Clic sur le bouton verrouiller */
          $('.mod_lock').click(function() {
              if (confirm("Êtes-vous sûr ?")) {
                $.get('/modcp.forum?t='+$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1')+'&mode=lock&sid='+cookie);
                $(this).addClass('mod_unlock').removeClass('mod_lock');
                $(this).attr('src',unlock_img);
              }
          }
          );
          /* Clic sur le bouton corbeille */
          $('.mod_trash').click(function() {
              if (confirm("Êtes-vous sûr ?")) {
                $.get('/modcp.forum?t='+$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1')+'&mode=trash&sid='+cookie);
                $(this).closest('tr').remove();
              }
          }
          );
          /* Clic sur le bouton supprimer */
          $('.mod_delete').click(function() {
              if (confirm("Êtes-vous sûr ? Si vous n'êtes pas un Administrateur, merci de ne pas effectuer cette action sans accord préalable.")) {
                // prendre le tid
                var tid= $("input[name=tid]:first").val() ||  ($("a[href*='&tid=']:first").attr("href")||"").replace(/^.*&tid=([a-f0-9]*)?.*$/,"$1");
                // prendre le fid
                var fid= location.href.replace(/^.*\/f([0-9]+)[p-].*$/,'$1');
                // prendre le topic_id
                var topic_id= $(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1');
                $.post("/modcp?tid="+tid, {
                    f:fid, t:topic_id, tid: tid, mode:"delete",confirm:"1"
                }
                );
                $(this).closest('tr').remove();
              }
          }
          );
          $('.edit_topic').click(function() {
        /* On cache le titre et on affiche la zone d'édition */
              $(this).closest('tr').find('a.topictitle').hide().after('<input type="text" id="new_title" value="'+$(this).closest('tr').find('a.topictitle').html()+'"/><input type="submit" class="edit_title"/>');
          }
          );
          $('.edit_title').live('click', function() {
              /* saisie d'une page du sujet */
              $.get($(this).closest('tr').find('a.topictitle').attr('href'), function(c) {
                /* prendre identifiant du premier message */
                var first_post_id = $(".post a[name]", c).first().attr("name");
                /* si pas on fait rien */
                if(!first_post_id) {
                    return
                }
                /* saisie du formulaire d'édition du message */
                $.get("/post?p=" + first_post_id + "&mode=editpost", function(c) {
                    /* envoi de ce formulaire en ayant changé le titre */
                    $.post("/post", $('form[name="post"]', c).serialize().replace(/(^|&)subject=[^&]+(&|$)/, "$1subject=" + encodeURIComponent($('#new_title').val()) + "$2") + "&post=1",function(c) {
                      /* test pour voir si ça s'est bien passé */
                      if(c.indexOf('Message enregistré avec succès')!=-1) alert('yeah réussi')
                    }
                    )
                }
                )
              });
        });
 });

Bien cordialement,
Xoumi.

Xoumi
*****

Messages : 604
Inscrit(e) le : 23/09/2010

http://www.harrypotter2005.net
Xoumi a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Jeu 7 Fév 2013 - 9:15

Hello Xoumi Smile

Merci de t’intéresser au problème. Hélas, je ne sais pas ce qu’il passe de mon côté, mais même avec le script que tu me donnes ici, mes outils se font la malle… Décidément ! Je ne comprends pas trop ce qui bug avec mon forum… Non !

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Sam 9 Fév 2013 - 9:55

Hop là, je remonte Smile

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Ea le Sam 9 Fév 2013 - 10:04

@Matriochka a écrit:Arlem et Ea : J’ai essayé vos deux scripts, mais malheureusement, mes outils de modération on disparu. Voilà ce que j’ai (j’ai peut-être fait une boulette quelque part) :
Code:
...
(Là, en suivant les indications données par Arlem, mais même chose avec le script donné par Ea)
Les deux scripts que j'ai donné devraient fonctionner sur le forum http://nara.jdrforum.com/ si :

Code:
<a name="{postrow.displayed.U_POST_ID}"></a>
Était bien remis dans viewtopic_body.

( autrement il faudrait changer le script pour qu'il prenne l'identifiant du premier post par le bouton de citation ou édition )

Cordialement.

Ea
Aidactif
Aidactif

Messages : 23418
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Sam 9 Fév 2013 - 10:15

Merci Ea, j’ai bien remis la ligne dans mon template (comprends pas pourquoi elle n’y était plus, d’ailleurs)… mais je n’arrive toujours pas à faire apparaître les outils de modération. Je ne comprends pas du tout ce qui bloque avec mon forum Non !

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Ea le Sam 9 Fév 2013 - 11:07

Dans le http://nara.jdrforum.com/99813.js présent, il y a un ; qui manque après :

Code:
tid:tid,mode:"delete",confirm:"1"})})
et un ; manquant après :

Code:
var num=title.attr('href').replace(/^\/t([1-9][0-9]*)(p[0-9]+)?-.*$/,"$1")

Ea
Aidactif
Aidactif

Messages : 23418
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Sam 9 Fév 2013 - 11:15

Ah, bien vu ! Nickel, j’ai mes outils qui s’affichent et le nouveau bouton pour renommer, ça prend forme cette affaire Smile

J’ai testé le bouton, donc quand je clique, ça me met bien le champ de saisie et le bouton pour valider, mais quand je teste le renommage :
1 - le bouton "mettre à jour" n’a pas d’effet,
2 - quand j’actualise après avoir testé, ça remplace mon titre par la mention "undefined"

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Arlem le Sam 9 Fév 2013 - 12:19

Yop (coucou Xoumi :3) !

Alors pour ceux qui utilisent le code que j'ai donné plus haut, après :
Code:
$('.edit_title').live('click', function() {
Ajoutez :
Code:
var temp = $(this);
Puis remplacez :
Code:
if(c.indexOf('Message enregistré avec succès')!=-1) alert('yeah réussi')
Par :
Code:
if(c.indexOf('Message enregistré avec succès')!=-1) {
               temp.closest('tr').find('a.topictitle').show().text($('#new_title').val());
               temp.parent().find('#new_title').hide();
               temp.parent().find('.edit_title').hide();
               }
Ça fonctionne plutôt bien chez moi, y'a juste le temps que les données transitent donc petit temps de latence entre la validation et l'affichage du nouveau titre.

Pour les flemmards, le code complet :
Spoiler:
Code:
/* adresse img modération edit */
var edit_img= "http://illiweb.com/fa/prosilver/icon_user_profile.png";
/* adresse img modération lock */
var lock_img = "http://illiweb.com/fa/subsilver/topic_lock.gif";
/* adresse img modération unlock */
var unlock_img = "http://illiweb.com/fa/subsilver/topic_unlock.gif";
/* adresse img modération corbeille */
var trash_img = "http://illiweb.com/fa/subsilver/topic_trashcan.gif";
/* adresse img modération supprimer */
var delete_img = "http://illiweb.com/fa/subsilver/topic_delete.gif";
/* adresse cookie contenant le sid (ne pas éditer) */
var cookie = my_getcookie('fa_'+location.hostname.replace(/\./g,'_')+'_sid');
$(function() {
   /* Si l'utilisateur a les droits de modération, on affiche les outils de modération */
   if($('#is_allowed:contains("modérer")').length > 0) {
      $('.mod_tools').each(function() {
         /* Si le topic est verrouillé on affiche le bouton déverrouiller */
         if($(this).children('img').attr('alt').slice(13,19) == "verrou") {
            $(this).append('<img src="'+edit_img+'" class="edit_topic"><img src="'+unlock_img+'" class="mod_unlock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
         }
         /* Sinon on affiche le bouton verrouiller */ else {
            $(this).append('<img src="'+edit_img+'" class="edit_topic"><img src="'+lock_img+'" class="mod_lock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
         }
      }
      );
   }
   /* Clic sur le bouton déverrouiller */
   $('.mod_unlock').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
         $.get('/modcp.forum?t='+$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1')+'&mode=unlock&sid='+cookie);
         $(this).addClass('mod_lock').removeClass('mod_unlock');
         $(this).attr('src',lock_img);
      }
   }
   );
   /* Clic sur le bouton verrouiller */
   $('.mod_lock').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
         $.get('/modcp.forum?t='+$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1')+'&mode=lock&sid='+cookie);
         $(this).addClass('mod_unlock').removeClass('mod_lock');
         $(this).attr('src',unlock_img);
      }
   }
   );
   /* Clic sur le bouton corbeille */
   $('.mod_trash').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
         $.get('/modcp.forum?t='+$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1')+'&mode=trash&sid='+cookie);
         $(this).closest('tr').remove();
      }
   }
   );
   /* Clic sur le bouton supprimer */
   $('.mod_delete').click(function() {
      if (confirm("Êtes-vous sûr ?")) {
         // prendre le tid
         var tid= $("input[name=tid]:first").val() ||  ($("a[href*='&tid=']:first").attr("href")||"").replace(/^.*&tid=([a-f0-9]*)?.*$/,"$1");
         // prendre le fid
         var fid= location.href.replace(/^.*\/f([0-9]+)[p-].*$/,'$1');
         // prendre le topic_id
         var topic_id= $(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1');
         $.post("/modcp?tid="+tid, {
            f:fid, t:topic_id, tid: tid, mode:"delete",confirm:"1"
         }
         );
         $(this).closest('tr').remove();
      }
   }
   );
   /* Clic sur le bouton edit */
   $('.edit_topic').click(function() {
      $(this).closest('tr').find('a.topictitle').hide().after('<input type="text" id="new_title" value="'+$(this).closest('tr').find('a.topictitle').text()+'"/><input type="submit" class="edit_title"/>');
   }
   );
   $('.edit_title').live('click', function() {
   var temp = $(this);
      /* saisie d'une page du sujet */
      $.get($(this).closest('tr').find('a.topictitle').attr('href'), function(c) {
         /* prendre identifiant du premier message */
         var first_post_id = $(".post a[name]", c).first().attr("name");
         /* si pas on fait rien */
         if(!first_post_id) {
            return
         }
         /* saisie du formulaire d'édition du message */
         $.get("/post?p=" + first_post_id + "&mode=editpost", function(c) {
            /* envoi de ce formulaire en ayant changé le titre */
            $.post("/post", $('form[name="post"]', c).serialize().replace(/(^|&)subject=[^&]+(&|$)/, "$1subject=" + encodeURIComponent($('#new_title').val()) + "$2") + "&post=1",function(c) {
               /* test pour voir si ça s'est bien passé */
               if(c.indexOf('Message enregistré avec succès')!=-1) {
               temp.closest('tr').find('a.topictitle').show().text($('#new_title').val());
               temp.parent().find('#new_title').hide();
               temp.parent().find('.edit_title').hide();
               }
            }
            )
         }
         )
      });
});
});


Dernière édition par Arlem le Sam 9 Fév 2013 - 16:51, édité 1 fois

Arlem
+ Hyperactif +

Messages : 2550
Inscrit(e) le : 30/06/2009

Arlem a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Xoumi le Sam 9 Fév 2013 - 16:17

Coucou Arlem,

Tout fonctionne implacablement chez moi !

Merci à Matriochka pour avoir initié ce sujet ! Cependant, je ne comprends pas pourquoi le code d'Arlem ne fonctionne pas chez elle Sad

Edit : Par contre, pour le titre en couleur, j'ai un bug chez moi Smile


Dernière édition par Xoumi le Sam 9 Fév 2013 - 16:43, édité 1 fois

Xoumi
*****

Messages : 604
Inscrit(e) le : 23/09/2010

http://www.harrypotter2005.net
Xoumi a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Arlem le Sam 9 Fév 2013 - 16:42

Maintenant qu'elle a remis les points virgules à leur place mon script devrait fonctionner également, vu qu'il fonctionne également chez toi y'a plus de raison. Smile

Edit : Je vais tester pour le titre en couleur.

Edit2 : Effectivement, je n'avais pas prévu la possibilité qu'il y ait du html dans le titre du sujet, du coup, ici :
Code:
   $('.edit_topic').click(function() {
      $(this).closest('tr').find('a.topictitle').hide().after('<input type="text" id="new_title" value="'+$(this).closest('tr').find('a.topictitle').html()+'"/><input type="submit" class="edit_title"/>');
   }
   );
Changez le .html() par .text() et le problème ne devrait plus se produire. Wink (j'ai édité mes posts précédents en le corrigeant)

Arlem
+ Hyperactif +

Messages : 2550
Inscrit(e) le : 30/06/2009

Arlem a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Matriochka le Dim 10 Fév 2013 - 11:37

Hrrrmmmm… J’ai essayé de mettre ton nouveau script (celui donné ici), Arlem, mais rien à faire, il ne veut pas fonctionner chez moi… scratch

Est-ce qu’il y a quelques chose de particulier à faire dans mon template ou quoi ?
Code:
<!-- BEGIN topics_list_box --><!-- BEGIN row --><!-- BEGIN header_table --><!-- BEGIN multi_selection -->
<script type="text/javascript">
function check_uncheck_main_{topics_list_box.row.header_table.BOX_ID}() {
   var all_checked = true;
   for (i = 0; (i < document.{topics_list_box.FORMNAME}.elements.length) && all_checked; i++) {
      if (document.{topics_list_box.FORMNAME}.elements[i].name == '{topics_list_box.FIELDNAME}[]{topics_list_box.row.header_table.BOX_ID}') {
         all_checked = document.{topics_list_box.FORMNAME}.elements[i].checked;
      }
   }
   document.{topics_list_box.FORMNAME}.all_mark_{topics_list_box.row.header_table.BOX_ID}.checked = all_checked;
}
function check_uncheck_all_{topics_list_box.row.header_table.BOX_ID}() {
   for (i = 0; i < document.{topics_list_box.FORMNAME}.length; i++) {
      if (document.{topics_list_box.FORMNAME}.elements[i].name == '{topics_list_box.FIELDNAME}[]{topics_list_box.row.header_table.BOX_ID}') {
         document.{topics_list_box.FORMNAME}.elements[i].checked = document.{topics_list_box.FORMNAME}.all_mark_{topics_list_box.row.header_table.BOX_ID}.checked;
      }
   }
}
</script>
<!-- END multi_selection -->

<table class="forumline" width="100%" border="0" cellspacing="1" cellpadding="0">
   <tr>
      <th colspan="{topics_list_box.row.header_table.COLSPAN}" align="center" nowrap="nowrap"> {topics_list_box.row.L_TITLE} </th>
      <th align="center" nowrap="nowrap" width="80"> {topics_list_box.row.L_REPLIES} </th>
      <th align="center" nowrap="nowrap" width="100"> {topics_list_box.row.L_AUTHOR} </th>
      <th align="center" nowrap="nowrap" width="50"> {topics_list_box.row.L_VIEWS} </th>
      <th align="center" nowrap="nowrap" width="150"> {topics_list_box.row.L_LASTPOST} </th>
      <!-- BEGIN multi_selection -->
      <th align="center" nowrap="nowrap" width="20"><input onclick="check_uncheck_all_{topics_list_box.row.header_table.BOX_ID}();" type="checkbox" name="all_mark_{topics_list_box.row.header_table.BOX_ID}" value="0" /></th>
   <!-- END multi_selection -->
   </tr>
   <!-- BEGIN pagination -->
   <tr>
      <td class="row1" colspan="7" align="right"><span class="gensmall">{PAGINATION}</span></td>
   </tr>
   <!-- END pagination -->
   <!-- END header_table --><!-- BEGIN header_row -->
   <tr>
      <td class="row3" colspan="{topics_list_box.row.COLSPAN}"><span class="gensmall"> <b>{topics_list_box.row.L_TITLE}</b></span></td>
   </tr>
<!-- END header_row -->

<!-- BEGIN topic -->
{topics_list_box.row.END_TABLE_STICKY}
   <tr>
      <!-- BEGIN single_selection -->
      <td class="{topics_list_box.row.ROW_CLASS}" align="center" valign="middle" width="20"><input type="radio" name="{topics_list_box.FIELDNAME}" value="{topics_list_box.row.FID}" {topics_list_box.row.L_SELECT} /></td>
      <!-- END single_selection -->
      <td class="{topics_list_box.row.ROW_FOLDER_CLASS}" align="center" valign="middle" width="20"><img title="{topics_list_box.row.L_TOPIC_FOLDER_ALT}" src="{topics_list_box.row.TOPIC_FOLDER_IMG}" alt="{topics_list_box.row.L_TOPIC_FOLDER_ALT}" /></td>
      <!-- BEGIN icon -->
      <td class="{topics_list_box.row.ROW_CLASS}" align="center" valign="middle" width="20">{topics_list_box.row.ICON}</td>
      <!-- END icon -->
      <td class="{topics_list_box.row.ROW_CLASS}" onmouseover='this.className="row2"' onmouseout='this.className="{topics_list_box.row.ROW_CLASS}"' width="100%">
         <div class="topictitle">
            {topics_list_box.row.NEWEST_POST_IMG}{topics_list_box.row.PARTICIPATE_POST_IMG}{topics_list_box.row.TOPIC_TYPE}
            <h2 class="topic-title">
               <a class="topictitle" href="{topics_list_box.row.U_VIEW_TOPIC}">{topics_list_box.row.TOPIC_TITLE}</a>
            </h2>
         </div>
                 
                        <div class="mod_tools"></div>
                 
         <!-- BEGIN switch_description -->
         <span class="genmed">
            <br />
            {topics_list_box.row.topic.switch_description.TOPIC_DESCRIPTION}
         </span>
         <!-- END switch_description -->
         <span class="gensmall">{topics_list_box.row.TOPIC_ANNOUNCES_DATES}{topics_list_box.row.TOPIC_CALENDAR_DATES}</span> 
         <span class="gensmall">{topics_list_box.row.GOTO_PAGE}<!-- BEGIN nav_tree -->{topics_list_box.row.TOPIC_NAV_TREE} <!-- END nav_tree --></span>
      </td>

      <td class="row2" align="center" valign="middle"><span class="postdetails">{topics_list_box.row.REPLIES}</span></td>
      <td class="row3" align="center" valign="middle"><span class="name"><strong>{topics_list_box.row.TOPIC_AUTHOR}</strong></span></td>
      <td class="row2" align="center" valign="middle"><span class="postdetails">{topics_list_box.row.VIEWS}</span></td>
      <td class="row3Right" onmouseover='this.className="row1"' onmouseout='this.className="row3Right"' align="center" valign="middle" nowrap="nowrap"><span class="postdetails">{topics_list_box.row.LAST_POST_TIME}<br />{topics_list_box.row.LAST_POST_AUTHOR} {topics_list_box.row.LAST_POST_IMG}</span></td>
<!-- BEGIN multi_selection -->
      <td class="row2" align="center" valign="middle"><span class="postdetails"><input onclick="javascript:check_uncheck_main_{topics_list_box.row.BOX_ID}();" type="checkbox" name="{topics_list_box.FIELDNAME}[]{topics_list_box.row.BOX_ID}" value="{topics_list_box.row.FID}" {topics_list_box.row.L_SELECT} /></span></td>
   <!-- END multi_selection -->
   </tr>
   <!-- END topic --><!-- BEGIN no_topics -->
   <tr>
      <td class="row1" colspan="{topics_list_box.row.COLSPAN}" align="center" valign="middle" height="30"><span class="gen">{topics_list_box.row.L_NO_TOPICS}</span></td>
   </tr>
   <!-- END no_topics --><!-- BEGIN bottom -->
   <tr>
      <td class="catBottom" colspan="{topics_list_box.row.COLSPAN}" valign="middle">
         <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
               <td> <span class="gensmall">{PAGINATION}</span></td>
               <td align="right"><a href="#top">{L_BACK_TO_TOP}</a> </td>
            </tr>
         </table>
      </td>
   </tr>
<!-- END bottom --><!-- BEGIN footer_table -->
</table><!-- END footer_table --><!-- BEGIN spacer --><br class="gensmall" /><!-- END spacer --><!-- END row --><!-- END topics_list_box -->

Parce qu’avec celui de Ea, ici, je n’ai aucun problème (mais à partir de celui-ci, je ne sais pas comment modifier, après) :
Code:
var lock_img = "http://img11.hostingpics.net/pics/689379lock.png";
var unlock_img = "http://img11.hostingpics.net/pics/269944lockunlock.png";
var trash_img = "http://img11.hostingpics.net/pics/781353bin.png";
var delete_img = "http://img11.hostingpics.net/pics/204355cross.png";
var rename_img = "http://img11.hostingpics.net/pics/630345documentpencil.png";
var cookie = my_getcookie('fa_nara_jdrforum_com_sid');
$(function () {
    if ($('#is_allowed:contains("modérer")').length > 0) {
        $('.mod_tools').each(function () {
            if ($(this).parent().parent().children('.row1').children('img').attr('title').slice(13, 19) == "verrou") {
                $(this).append('<img src="' + rename_img + '" class="mod_rename"/><img src="' + unlock_img + '" class="mod_unlock"/><img src="' + trash_img + '" class="mod_trash"/><img src="' + delete_img + '" class="mod_delete"/>')
            } else {
                $(this).append('<img src="' + rename_img + '" class="mod_rename"/><img src="' + lock_img + '" class="mod_lock"/><img src="' + trash_img + '" class="mod_trash"/><img src="' + delete_img + '" class="mod_delete"/>')
            }
        })
    }
    $('.mod_unlock').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=unlock&sid=' + cookie);
            $(this).addClass('mod_lock').removeClass('mod_unlock');
            $(this).attr('src', lock_img)
        }
    });
    $('.mod_lock').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=lock&sid=' + cookie);
            $(this).addClass('mod_unlock').removeClass('mod_lock');
            $(this).attr('src', unlock_img)
        }
    });
    $('.mod_trash').click(function () {
        if (confirm("Êtes-vous sûr ?")) {
            $.get('/modcp.forum?t=' + $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]).*$/, '$1') + '&mode=trash&sid=' + cookie)
        }
    });
    $(this).closest('tr').remove();
    $('.mod_delete').click(function () {
        if (confirm('Vraiment supprimer ?')) {
            $(this).closest('tr').remove()
        }
        var tid = $("input[name=tid]:first").val() || ($("a[href*='&tid=']:first").attr("href") || "").replace(/^.*&tid=([a-f0-9]*)?.*$/, "$1");
        var fid = location.href.replace(/^.*\/f([0-9]+)[p-].*$/, '$1');
        var topic_id = $(this).parent().parent().find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/, '$1');
        $.post("/modcp?tid=" + tid, {
            f: fid,
            t: topic_id,
            tid: tid,
            mode: "delete",
            confirm: "1"
        })
    });
    $('.mod_rename').click(function () {
        var b = $(this);
        if (b.data('topictitle')) {
            b.closest('td').find('.modiftitle').replaceWith(b.data('topictitle'));
            b.removeData('topictitle');
        } else {
            var title = b.closest('td').find('a.topictitle').first();
            var num = title.attr('href').replace(/^\/t([1-9][0-9]*)(p[0-9]+)?-.*$/, "$1");
            b.data('topictitle', title.parent().html());
            $('<span class="modiftitle"><input type="text" value="' + title.html().replace(/"/g, "&quot;") + '" style="width:150px"> <input type="button" value="OK" /></span>').replaceAll(title).find('input').last().click(function () {
 
                /* saisie d'une page du sujet */
                $.get("/t" + num + "-", function (c) {
                    /* prendre identifiant du premier message */
                    var first_post_id = $(".post a[name]", c).first().attr("name");
                    /* si pas on fait rien */
                    if (!first_post_id) {
                        return
                    }
                    /* saisie du formulaire d'édition du message */
                    $.get("/post?p=" + first_post_id + "&mode=editpost", function (c) {
                        /* envoi de ce formulaire en ayant changé le titre */
                        var nouveau_titre = $('this').parent().find('input').first().val();
                        $.post("/post", $('form[name="post"]', c).serialize().replace(/(^|&)subject=[^&]+(&|$)/, "$1subject=" + encodeURIComponent(nouveau_titre) + "$2") + "&post=1", function (c) {
                            /* test pour voir si ça s'est bien passé */
                            if (c.indexOf('Message enregistré avec succès') != -1) $(b.data()).replaceAll($(this).parent()).text(nouveau_titre);
                        })
                    })
                });
            });
        }
    });
 
});

Arf, décidément ! C’est moi l’auteure du topic et c’est moi qui ai le plus de problème Razz

Matriochka
+ Hyperactif +

Messages : 7604
Inscrit(e) le : 14/07/2010

Matriochka a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Éditer le titre depuis la liste des sujets

Message par Arlem le Dim 10 Fév 2013 - 12:55

Apparemment tu n'as pas pris en compte les dernières modifications qu'on avait donné ici.

Le plus simple, ou du moins plus facile que de chercher d'où viennent les erreurs de compatibilité entre les différents scripts postés, c'est de reprendre au début en faisant les modifications données ici puis en récupérant le script JS donné ici (en modifiant juste l'url des icones des boutons).

Je viens de refaire la démarche de A à Z chez moi et ça fonctionne, normalement y'a pas de raisons que ça plante chez toi... mais on est jamais à l'abri d'une surprise ! Razz

Arlem
+ Hyperactif +

Messages : 2550
Inscrit(e) le : 30/06/2009

Arlem a été remercié(e) par l'auteur de ce sujet.

Page 1 sur 2 1, 2  Suivant

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