Bonjour à tous,

Je souhaiterais mettre en place sur mon back-office un système comme sur WordPress.

C’est à dire, quand un utilisateur édite un article et qu’un autre utilisateur veut aussi éditer le même article, il y a un message d’avertissement disant que cet article est déjà en cours d’édition.
Et lui propose de prendre la main.

Est-ce que quelqu’un aurait une idée de comment faire ou vers où orienter mes recherches ?

Merci d’avance :)

5 réponses


Salut,
Solution 1 :
ajouter un champ 'edit_en_cours' , mettre valeur 1 de quand edition.
quand tu lis, vérifier si edit_en_cour = 1 .................
quand tu ecris, mettre 0 dans edit_en_cours

solution 2 :
sans ajouter de champ.
quand tu edite, sauvegarder original.
quand tu ecris, relire et comparer avec original.
si relecture <> original message 'enregistrement modifier par un autre utilisateur, sauvegarder quand même ?'

voilou,

bon courage.

@plus

Pierre

Salut,
Avec les sessions tu peux très bien enregistrer l'article que tu édites et quand un admin ce connecte a un article, tu vérifie toutes les sessions utilisateur en cour pour vérifier si quelqu'un l'édite en ce moment.

Merci pour vos idées.

Sinon, j’ai pensé aussi à faire deux champs en BDD :

  • Un champ edit_user_id qui sauvegarde l’id de l’utilisateur qui édite l’article
  • Un champ edit_time qui garde la date now() et qui est sauvegarder toutes les 30sec en ajax.

Du coup, si un autre utilisateur charge cette page d’édition de l’article, je vérifie si edit_user_id == user_id, si c’est faux, je vérifie que la edit_time est supérieure à 30sec.

Si c’est ok, c’est que personne n’édite l’article en ce moment, sinon je l’informe que quelqu’un édite l’article et je peux lui proposer de prendre la main.

S’il prend la main, l’autre utilisateur sera averti, car au moment d’enregistrer son edit_user_id et time_edit je peux voir qu’ils ont changé !

Salut, l'idée est pas mal, je pense que ça peut fonctionner a tester avec des cas chiant du style si plusieurs personnes se connectent avec le même compte (Genre admin). Si tu as plusieurs onglets ouverts, etc.

On peut ajouter un troisième champ edit_token généré à la première sauvegarde en ajax.