9Fermer11
ZerosquareLe 25/10/2016 à 23:43
Y'a bien une solution qui élimine certains problèmes : tu introduis une balise spéciale, par exemple [refpost=numéro du post d'origine] qui a les effets suivants :
- ça affiche le contenu du post d'origine référencé
- ça affiche un signe distinctif indiquant qu'il s'agit d'un post provenant d'un autre topic (fond coloré différemment, icône particulière...)
- ça désactive la fonction d'édition pour ce post (ou ça redirige vers celle du post d'origine)

Lors du fork / de la digression, tu crées un post dans le nouveau topic pour chaque post d'origine, qui ne contient que la balise spéciale qui référence le post d'origine.

Gros avantage :
- ça ne modifie pas fondamentalement les principes de fonctionnement, et ça consomme peu d'espace en BDD.

Inconvénients :
- ça demande une requête pour chaque post "spécial", donc ça va ramer. Mais vu qu'il y a un cache, ça ne devrait le faire que lors du premier affichage de la page (par contre la gestion du cache devient un peu subtile : l'utilisateur peut avoir ou non les droits d'accès en lecture au topic d'origine, il y a donc deux rendus possibles pour la même page. Il faut aussi invalider le cache si le topic d'origine passe de public à privé ou inversement.)

- contrairement à de la simple copie ou du copy-on-write, on ne peut pas modifier un post à un endroit sans qu'il soit modifié partout ; et si le topic d'origine devient privé, les posts disparaissent partout. Mais c'est pas forcément plus mal, le contraire est complexe à gérer et risque d'embrouiller les gens.