Simple Machines Community Forum

SMF Support => Français (French) => Language Specific Support => Mods et Annonces => Topic started by: lucy453 on August 04, 2013, 08:31:09 AM

Title: Besoin d'améliorer le "new" en page d'accueil
Post by: lucy453 on August 04, 2013, 08:31:09 AM
Bonjour à tous,

Je viens encore solliciter votre aide  :-[

En page d'accueil, a gauche de chaque rubrique, SMF propose d'avoir une image différente suivant si il y a de nouveaux posts ou non dans la rubrique.
Le soucis est que l'image "new" disparait des qu'on a cliqué sur la rubrique, même si il y a plusieurs topics non lus encore à l'intérieur.

J'ai ouvert il y a un mois et les membres continuent de me dire que ça pose de réel problème et que ça leur ai désagréable. (J'avoue que je loupe aussi des conversations pour les mêmes raisons)

Ca fait 2 semaines que j'essaye en vain de modifier cela. j'ai vu des topics en parler et un changement de code qui permet de toujours laisser en "non lu", tant qu'on a pas cliqué sur "marquer comme lu"... le soucis c'est que cette modification empêche la rubrique de revenir en "new" lorsqu'il y a des nouveautés depuis le marquage comme lu fait manuellement.

Est ce que quelqu'un pourrait se pencher sur ce sujet avec moi?
Je vais jamais y arriver sinon et ça m'ennuie de pas réussir a le faire  :-[

J'essaye de reformuler mon "voeu" ^^
Est ce que quelqu'un peut m'aider pour avoir l'image "new" de la page d'accueil qui reste comme telle tant qu'on a pas cliqué sur tous les topics ayant des nouveautés?
Au moins rester en "new" jusqu'à la déconnexion, pas grave si ca ne prend les nouveautés que d'une connexion a l'autre. Ca serait déjà énorme.
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Zuki. on August 04, 2013, 09:18:32 AM
Bonjour,

De mémoire un problème dans le même style a été abordé...

Regarde ici : http://www.simplemachines.org/community/index.php?topic=488139.0

Peut-être une solution.

Ce n'est pas l'icône "new" (new.gif) mais plutôt on.gif (on.png suivant thème).
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: lucy453 on August 04, 2013, 02:25:34 PM
Je galère un peu, j'ai essayé la modification et vider les 3 tables, ca n'a pas marché et je n'arrive pas a les remttre, ca me met des erreurs sur certaine table. Du coup quand je clique sur "marquer comme lu" ca me met une erreur database :/

Edit j'ai vidé comme dit les tables: log_boards log mark_read log_topics pour celà simplement les VIDER.

Apres j'avais une erreur, donc j'ai mis la sauvegarde que j'avais faites.. elle est mal passée car maintenant quand je clique sur non lu ca me met:
"The database value you're trying to insert does not exist: id_msg"

Vous pouvez m'aider ou c'est mort? ^^
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: lucy453 on August 04, 2013, 03:09:31 PM
C'est bon j'ai pu changé et ça remarche

Par contre j'ai pas la solution :/
Est ce que je dois poster dans l'autre topic et le remonter plutot que d'écrire ici? Je pense que ce n'est pas top un doublon sur le sujet?
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Zuki. on August 05, 2013, 03:01:56 AM
Bonjour,

Pour ce qui est du post, je n'ai pas pouvoir de décision !
Mais à mon avis, comme c'est ton sujet continue ici...



QuotePar contre j'ai pas la solution

Tu veux dire que la modif expliquée ne fonctionne pas ?
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: lucy453 on August 05, 2013, 05:18:43 AM
Non ça ne fonctionne pas. J'ai essayé celle de Maximus qui était en version rapide car il n'avait pas le temps de se pencher dessus.

Lorsque je fais les modifications, je ne dois pas savoir ce que je dois supprimer exactement dans le fichier Sources/MessageIndex.php car je n'ai pas les mêmes écritures que ceux décrites par Maximus. Je suppose que c'est la que j'ai un soucis
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Zuki. on August 05, 2013, 06:00:30 AM
Tu n'as pas les mêmes codes, car un mod a surement modifié le fichier. C'est normal.

Il faut regarder avec un fichier MessageIndex.php original. Ensuite tu essayes de trouver l'endroit désigné.

Après il faut tâtonner pour mettre en place.

Pas simple, mais je ne vois que cette solution.
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: lucy453 on August 05, 2013, 06:34:08 AM
Oui c'est bien ça. J'ai trouvé ou est placé se fameux code a enlever.
Je prends ligne par ligne pour voir les différence et essayer de supprimer tout ce qu'il faut mais c'est pas évident.

Je vais essayer sur une copie a part, histoire de pouvoir tenter le coup sans pression.
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on August 05, 2013, 06:22:38 PM
Pour ne louper aucune discussion moi j'utilisais la fonctionnalité "Show unread posts since last visit." et "Show new replies to your posts." (désolé de pas l'avoir en français ;D). C'est très pratique surtout quand tu es admin/modo d'un forum. Bien sûr au début quand tu arrives t'as intérêt à marquer tous les sujets comme lu, ou alors de tout lire ::)

Ca ne te conviendrait pas ?

On ne m'avait jamais remonté ta remarque personnellement ^^

Amicalement,
DeathSign
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on August 06, 2013, 01:51:01 AM
bonjour,

j'avais déjà fait le test avec maximus23 sans succès pour la même demande que toi...

Il faut attendre que quelqu'un se penche sur le sujet

bonne journée
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: lucy453 on August 11, 2013, 01:37:36 PM
Merci pour vos réponses. Dommage, je ne trouve pas la solution. Et le fait de venir d'un forumactif.. les membres ont l'air de vouloir les fonctionnalités de SMF mais surtout ne pas perdre cette fameuse image qui reste en nouveau jusqu'a ce que tout les topics soient lu

Pour être précise je cherche a ce que l'image reste en nouveau tant qu'on s'est pas déconnecté. Si ca prend les messages non lus d'une connexion a l'autre ça me va.

Y a un endroit sur ce forum ou l'on peut faire une demande mais payante? On ne sait jamais, si quelqu'un voulait s'y lancer pour faire un mod et que c'est dans mes possibilités, j'aimerais bien, j'en ai tellement marre qu'on m'écrive pour ça
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Zuki. on August 12, 2013, 07:11:08 AM
Bonjour,

Peut-être une solution de remplacement en attendant...

Réglage dans Profil > Modifier le profil > Notifications et E-mails

Il y a des possibilités pour recevoir une notification => à étudier !  ;)




Edit

Regarde ceci ça correspond un peut à ce que tu cherches => http://custom.simplemachines.org/mods/index.php?mod=3689

Ou bien ici : http://custom.simplemachines.org/mods/index.php?mod=2146

Je n'ai pas testé  :-[
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on August 12, 2013, 04:00:46 PM
Je lis le désespoir =) Mais forumactif faut pas abuser ^^

Ca doit pas être bien difficile, jme jetterais à l'eau (ou où vous voulez) pendant ce long week-end même si je n'ai pas forcément le temps :s

(ça a pas l'air d'être ça malheureusement Zuki)

Amicalement,
DeathSign
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on August 13, 2013, 03:11:57 AM
Bonjour,
on avait déjà bien avancé avec Maximus23, donc je suis bien sur toujours preneur et éventuellement testeur...

merci  ;)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on August 13, 2013, 07:15:10 PM
Bonsoir,

Tu peux toujours tester ceci : http://www.simplemachines.org/community/index.php?topic=465097.msg3248028#msg3248028 (http://www.simplemachines.org/community/index.php?topic=465097.msg3248028#msg3248028)

:)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on August 14, 2013, 06:39:48 AM
Bonjour,

comprend pas l'anglais à ce niveau ..  :( :(


bonne journée
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on September 08, 2013, 03:53:25 PM
Pour revenir à ce sujet, c'est pas si évident car SMF n'a pas été conçu dans cette optique là. Il m'a fallut bien plus de temps que prévu mais j'ai cependant réussi à concocter quelque chose qui marcherait bien (sans garantie ni même que ça ne toucherait pas d'autres fonctionnalités/mods !)

La vérification a lieu sur la page qui liste les catégories et sections du forum (boardindex) où je rajoute une requête qui va chercher le nombre de sujet non lu et corriger ensuite les icônes. Si vous utilisez des sous-sections, l'icône d'une sous-section à la page de la section peut être faussée mais sur la page générale (boardindex) elle est bien mise à jour. Je vous laisse le corriger en y rajoutant les vérifs similaires dans MessageIndex. (fait dans la suite des modifications)

D'abord on va retirer le fait que la section soit marquée comme lue juste en cliquant dessus (source (http://www.simplemachines.org/community/index.php?topic=465097.msg3248028#msg3248028)) :

Editer Sources/Display.php
Chercher et supprimer (ou commenter) :
// Mark board as seen if we came using last post link from BoardIndex. (or other places...)
if (isset($_REQUEST['boardseen']))
{
$smcFunc['db_insert']('replace',
'{db_prefix}log_boards',
array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
array($modSettings['maxMsgID'], $user_info['id'], $board),
array('id_member', 'id_board')
);
}


Editer Sources/MessageIndex.php
Chercher et supprimer (ou commenter) :
$smcFunc['db_insert']('replace',
'{db_prefix}log_boards',
array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
array($modSettings['maxMsgID'], $user_info['id'], $board),
array('id_member', 'id_board')
);

if (!empty($board_info['parent_boards']))
{
$smcFunc['db_query']('', '
UPDATE {db_prefix}log_boards
SET id_msg = {int:id_msg}
WHERE id_member = {int:current_member}
AND id_board IN ({array_int:board_list})',
array(
'current_member' => $user_info['id'],
'board_list' => array_keys($board_info['parent_boards']),
'id_msg' => $modSettings['maxMsgID'],
)
);

// We've seen all these boards now!
foreach ($board_info['parent_boards'] as $k => $dummy)
if (isset($_SESSION['topicseen_cache'][$k]))
unset($_SESSION['topicseen_cache'][$k]);
}

if (isset($_SESSION['topicseen_cache'][$board]))
unset($_SESSION['topicseen_cache'][$board]);


Ensuite on va rajouter mes vérifs :

EDIT: Des modifications de cette partie ont eu lieu, la suite se situe dans le message http://www.simplemachines.org/community/index.php?topic=508952.msg3616419#msg3616419


Editer Sources/BoardIndex.php
(à défaire si celles-ci ont été appliquées)
Chercher :
Quotefunction BoardIndex()
{
   global $txt, $user_info, $sourcedir, $modSettings, $context, $settings, $scripturl;
Remplacer par :
Quotefunction BoardIndex()
{
   global $txt, $user_info, $sourcedir, $modSettings, $context, $settings, $scripturl, $smcFunc;

Puis,
Chercher :

Quote   // Retrieve the categories and boards.
   require_once($sourcedir . '/Subs-BoardIndex.php');
   $boardIndexOptions = array(
      'include_categories' => true,
      'base_level' => 0,
      'parent_id' => 0,
      'set_latest_post' => true,
      'countChildPosts' => !empty($modSettings['countChildPosts']),
   );
   $context['categories'] = getBoardIndex($boardIndexOptions);

Ajouter après :

Quote
   // BEGIN - topic 508952
   // Grab all board ids into our array
   $request = $smcFunc['db_query']('', '
      SELECT b.id_board
      FROM {db_prefix}boards AS b
      WHERE ' . $user_info['query_see_board'] . (!empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > 0 ? '
         AND b.id_board != {int:recycle_board}' : ''),
      array(
         'recycle_board' => (int) $modSettings['recycle_board'],
      )
   );
   $unreadboards = array();
   while ($row = $smcFunc['db_fetch_assoc']($request))
      $unreadboards[$row['id_board']] = 0;
   $smcFunc['db_free_result']($request);

   // Don't try to go further if there are no boards =)
   if (!empty($unreadboards))
   {
      // Get the real number of unread topics by boards
      $request = $smcFunc['db_query']('', '
         SELECT t.id_board, COUNT(*) AS num_topics
         FROM {db_prefix}topics AS t
            LEFT JOIN {db_prefix}log_topics AS lt ON (lt.id_topic = t.id_topic AND lt.id_member = {int:current_member})
            LEFT JOIN {db_prefix}log_mark_read AS lmr ON (lmr.id_board = t.id_board AND lmr.id_member = {int:current_member})
         WHERE t.id_board IN ({array_int:boards})
            AND IFNULL(lt.id_msg, IFNULL(lmr.id_msg, 0)) < t.id_last_msg' . ($modSettings['postmod_active'] ? '
            AND t.approved = {int:is_approved}' : '') . '
         GROUP BY t.id_board',
         array(
            'boards' => array_keys($unreadboards),
            'current_member' => $user_info['id'],
            'is_approved' => 1,
         )
      );

      while ($row = $smcFunc['db_fetch_assoc']($request))
         $unreadboards[$row['id_board']] = $row['num_topics'];
      $smcFunc['db_free_result']($request);

      foreach ($context['categories'] as $cat_id => $boards)
      {
         foreach ($boards['boards'] as $board_id => $board)
         {
            // No new topic but board marked as new? Correct it.
            if ($unreadboards[$board['id']] == 0 && !empty($board['new']))
            {
               $smcFunc['db_insert']('replace',
                  '{db_prefix}log_boards',
                  array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
                  array($modSettings['maxMsgID'], $user_info['id'], $board['id']),
                  array('id_member', 'id_board')
               );
               
               // Update for the current session
               $context['categories'][$cat_id]['boards'][$board_id]['new'] = 0;
            }
            
            // Process children too!
            foreach ($board['children'] as $child_id => $child)
            {
               if ($unreadboards[$child['id']] == 0 && !empty($child['new']))
               {
                  $smcFunc['db_insert']('replace',
                     '{db_prefix}log_boards',
                     array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
                     array($modSettings['maxMsgID'], $user_info['id'], $child['id']),
                     array('id_member', 'id_board')
                  );
                  
                  $context['categories'][$cat_id]['boards'][$board_id]['children'][$child_id]['new'] = 0;
               }
            }
         }
      }
   }
   // END - topic 508952

Faites des tests, faites des retours, dites moi et corrigez si vous pouvez =)

Amicalement,
DeathSign
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on September 10, 2013, 02:12:22 PM
Bonsoir,
merci pour le boulot ! la je pars en vacances et je ferai bien sur le test et le retour dès que possible

;)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on September 12, 2013, 10:08:37 AM
Bonjour,

J'ai testé sur un forum sans sous-sections et là pas de soucis rencontrés. Le seul point est pour les fichiers devant-être approuvés là il y a encore une amélioration à faire sinon pour un forum standard pas de soucis. Tout le monde demande cette modification mais peut de retour pour le travail effectué par notre ami DeathSign.

:)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on September 12, 2013, 03:38:02 PM
Bonsoir,
très vite testé chez moi et j'ai un message d'erreur syntaxe...  je pars en vacances demain retour dans 15j pas le temps de chercher ce soir... mais mon forum n'est pas très standard comme tu dis maximus !!!  ;)

allez faite vos retours ... il le mérite bien c'est pour nous qu'il bosse dans l'ombre  :P
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on September 13, 2013, 04:38:03 PM
Quote from: maximus23 on September 12, 2013, 10:08:37 AM
Le seul point est pour les fichiers devant-être approuvés là il y a encore une amélioration à faire sinon pour un forum standard pas de soucis.
Hmm j'ai du mal à voir, tu peux me remettre dans le contexte ? ^^

Quote from: Web68 on September 12, 2013, 03:38:02 PM
allez faite vos retours ... il le mérite bien c'est pour nous qu'il bosse dans l'ombre  :P
Le truc c'est que ce n'est pas une modification anodine (si vous pouvez vous en passez, je vous conseille de laisser tel que c'est !). Du coup je sais qu'il y a des cas que je n'ai pas prévu comme celui de Maximus ci-dessus mais j'ai du mal à visualiser :/ J'ai essayé de comprendre le fonctionnement la semaine dernière, donc c'est assez frais pour des modifications =) N'hésitez pas à proposer des améliorations niveau code ;)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on September 13, 2013, 07:20:49 PM
Bonsoir DeathSign,

Ce week-end je vais remettre un forum clean pour faire un test concret et je vais le mettre sur un gros forum en production avec sections et sous-sections pour tests et ou il y aura des retours avérés. Je te dirai ce qu'il en est au moins on aura là un fonctionnement en mode réel.

:)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on September 14, 2013, 12:27:25 PM
Bonjour,

Voilà c'est en production sur divers sites et les retours sont très bons.
Pas de soucis pour les sections et sous-sections.
Pas de latence sur de gros forums. Mutualisés et dédiés les deux testés.
Pas de problèmes sur les messages à approuver (sans mods qui le modifie).
Pas de problèmes avec les fonction Messages lus et Non lus.
Pas de problèmes si on lis ses messages via les réponses aux messages et Messages depuis votre dernière visite.

Voilà pour le moment les retours reçus.

:)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on September 14, 2013, 04:32:33 PM
Cool =)

Pour les sous-sections on pourrait corriger assez facilement en adaptant le code que j'ai donné -> Dans MessageIndex, s'il y a des sous-sections on fait la routine qui corrige les icônes sinon on fait rien.

Par contre je n'ai toujours pas compris le coup des fichiers approuvés ^^
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on September 14, 2013, 04:39:47 PM
Bonsoir,

Pour les fichiers approuvés là j'ai parlé trop vite il y avait une modification que j'avais faite dans le code et je n'y ai plus pensé d'où ma notation sans mods ou modifications.

Pour le moment rien de spécial à signaler tout roule.

Donc à suivre pour la suite.

:)

Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: lucy453 on September 24, 2013, 04:59:25 AM
Bonjour à tous,

J'ai eu un pépin, trop malade.. je reviens ici et je vois que vous vous êtes penché sur le sujet, je suis super contente, merci beaucoup Deathsign et maximus :)

Je vais tenter de faire les modifications dans la journée voir si tout se passe bien.

Encore merci en tout cas pour votre temps et je reviens vous dire ce qu'il en est pour moi  ;)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: lucy453 on September 24, 2013, 11:06:43 AM
Verdict --> A priori ... aucune interaction néfaste tout fonctionne et c'est exactement la façon dont je voulais que cela marche!

Merci beaucoup beaucoup, j'aurais été incapable de le faire moi même. Merci pour votre temps et votre aide  :laugh:
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on September 24, 2013, 06:39:39 PM
Super ! Je croyais que t'avais fini par aller voir ailleurs ;)

Merci pour les retours !
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: lucy453 on September 25, 2013, 04:20:53 AM
Ho non juste un aléas qui fait que j'étais absente.
Si je demande de l'aide (donc du temps) c'est que je ne peux le faire moi même et que je respecte TON retour ;)

Encore merci, j'ai eu d'excellents retours des membres également qui sont super content d'avoir cette fonction
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on September 26, 2013, 06:30:32 PM
Quote from: lucy453 on September 25, 2013, 04:20:53 AM
Si je demande de l'aide (donc du temps) c'est que je ne peux le faire moi même et que je respecte TON retour ;)
Mais je suis là pour aider et je disais juste ça par rapport à ma réponse très tardive (transition dans ma vie) ;)

J'ai fait des modifications au niveau du code que je posterai ce week-end car je n'ai pas terminé. Au menu, le bout de code manquant quand on est dans une section qui comporte des sous-sections, une gestion de la corbeille et des optimisations.

Je ne gèrerai pas les sous-sous-sections pour des questions de performances et parce que les choix de conception d'SMF me contraignent pour ce faire. On déconseille toujours d'aller trop bas dans les niveaux des sections ;)

A suivre...
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on September 26, 2013, 06:33:55 PM
Bonsoir,

Après plusieurs jours de tests un bug revient constamment :

Après avoir posté dans une section ou il reste des messages non lu l'icône de section repasse en mode off.

Voilà pour le seul retour de bug que j'ai dans l'ensemble des forums.

Merci et bonne fin de soirée.

:)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: lucy453 on September 28, 2013, 10:23:40 AM
Bonjour,

Les modifications a me venir sont tops, c'est super :)
(Perso j'ai quelques sous-sections mais pas de sous sous sous sous section :P)

Sinon j'ai la même chose que ce que rapporte Maximus dés que l'on poste, je n'ai rien vu d'autres ;)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on September 29, 2013, 07:02:43 AM
Je n'arrive pas à reproduire le bug, serait-ce dans des sections où des messages doivent être approuvés par un modérateur ?
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on September 29, 2013, 08:03:46 AM
Bonjour,

Non dans des sections normales :)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on September 29, 2013, 08:17:48 AM
Me faudrait des détails, voire de me refaire un scénario avec deux membres.

Je viens de m'installer un nouveau forum et RAS. Ca peut aussi être causé par un mod. :s
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on September 29, 2013, 08:28:21 AM
Bonjour,

J'ai un forum sans mods avec le thème par défaut et cela le fait aussi.

Donc je récapitule si il y a plusieurs messages et que l'on répond à un message non lu dans une section simple ou une sous-section l'icône de section passe en mode "off" malgré les messages non lus restant.

:)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on September 29, 2013, 03:53:56 PM
Testé en créant un nouveau topic dans une section avec des messages non lus + la même avec une simple réponse dans un topic existant, l'icône de section est toujours en "on" :s

EDIT: En postant dans une sous-section effectivement la section parente perd l'icône, c'est bien ce bug ? Quand c'est dans une même section, j'ai rien vu.
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on September 30, 2013, 04:31:50 AM
Bonjour,

Voici une solution en faisant une petite modification au code de DeathSign on emploiera la comparaison directe des messages non lus. Je remets tout le code ce sera plus clair pour tous.

Le code final ici : http://www.simplemachines.org/community/index.php?topic=508952.msg3616713#msg3616713

Voilà j'espère n'avoir rien oublié :)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on September 30, 2013, 01:19:35 PM
C'est une autre approche qui rend une bonne partie de mon code obsolète ;)

Par contre j'ai fait pas mal de changements sur ce que je devais poster pour prendre en compte les sous-sections.

Ma méthodologie était bonne mais j'étais resté heurté sur un véritable bug hier soir. Je regarde en profondeur et vous dirais quoi.
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on September 30, 2013, 06:46:24 PM
C'est bon, je corrige l'icône à la volée dans le code. Impossible de mettre à jour la base de données car : Si l'ID du dernier message de la sous-section est plus grand que celui de la section, la section passe automatiquement en lu ("off") sans passer par "on" quand c'est le cas...

J'ai détecté deux autres bugs qui sont corrigés dans ce code qui est plus précis.

Pour ceux qui ont appliquées mes premières modifs, faut défaire tout ce qui est du fichier Sources/BoardIndex.php (donc garder les premières de Sources/Display.php et Sources/MessageIndex.php), puis faire ce qui suit.

Pour les autres, le début des modifs sont dans mon message précédent http://www.simplemachines.org/community/index.php?topic=508952.msg3605771#msg3605771

Editer Sources/BoardIndex.php
Chercher :
// Retrieve the categories and boards.
require_once($sourcedir . '/Subs-BoardIndex.php');
$boardIndexOptions = array(
'include_categories' => true,
'base_level' => 0,
'parent_id' => 0,
'set_latest_post' => true,
'countChildPosts' => !empty($modSettings['countChildPosts']),
);
$context['categories'] = getBoardIndex($boardIndexOptions);


Ajouter après :
// BEGIN - topic 508952
changeSectionReadIcon($context['categories'], false);
// END - topic 508952


Editer Sources/MessageIndex.php
Chercher :
$boardIndexOptions = array(
'include_categories' => false,
'base_level' => $board_info['child_level'] + 1,
'parent_id' => $board_info['id'],
'set_latest_post' => false,
'countChildPosts' => !empty($modSettings['countChildPosts']),
);
$context['boards'] = getBoardIndex($boardIndexOptions);


Ajouter après :
// BEGIN - topic 508952
changeSectionReadIcon($context['boards'], true);
// END - topic 508952


Editer Sources/Sub-BoardIndex.php
Chercher :
?>

Ajouter avant :
// BEGIN - topic 508952
function changeSectionReadIcon(&$mycontext, $isSub = false)
{
global $user_info, $modSettings, $smcFunc;

if ($user_info['is_guest'] || empty($mycontext))
return;

// Some workaround to make the function a little more generic...
if ($isSub)
$categories = array(array('boards' => &$mycontext));
else
$categories = &$mycontext;

// Make a list of boards to check
$unreadboards = array();
foreach ($categories as $cat_id => $cat)
{
foreach ($cat['boards'] as $board_id => $board)
{
if (!empty($modSettings['recycle_enable']) && $board['id'] == $modSettings['recycle_board']) // Don't notify for the recycle bin
$categories[$cat_id]['boards'][$board_id]['new'] = 0;
else
$unreadboards[$board['id']] = 0;

foreach ($board['children'] as $child_id => $child)
{
if (!empty($modSettings['recycle_enable']) && $child['id'] == $modSettings['recycle_board'])
$categories[$cat_id]['boards'][$board_id]['children'][$child_id]['new'] = 0;
else
$unreadboards[$child['id']] = 0;
}
}
}

// Get the real number of unread topics by boards
$request = $smcFunc['db_query']('', '
SELECT t.id_board, COUNT(*) AS num_topics
FROM {db_prefix}topics AS t
LEFT JOIN {db_prefix}log_topics AS lt ON (lt.id_topic = t.id_topic AND lt.id_member = {int:current_member})
LEFT JOIN {db_prefix}log_mark_read AS lmr ON (lmr.id_board = t.id_board AND lmr.id_member = {int:current_member})
WHERE t.id_board IN ({array_int:boards})
AND IFNULL(lt.id_msg, IFNULL(lmr.id_msg, 0)) < t.id_last_msg' . ($modSettings['postmod_active'] ? '
AND t.approved = {int:is_approved}' : '') . '
GROUP BY t.id_board',
array(
'boards' => array_keys($unreadboards),
'current_member' => $user_info['id'],
'is_approved' => 1,
)
);

while ($row = $smcFunc['db_fetch_assoc']($request))
$unreadboards[$row['id_board']] = $row['num_topics'];
$smcFunc['db_free_result']($request);

foreach ($categories as $cat_id => $cat)
{
foreach ($cat['boards'] as $board_id => $board)
{
$childrenHasNew = 0;

// Women and children first!
foreach ($board['children'] as $child_id => $child)
{
if (!isset($unreadboards[$child['id']]))
continue;

// No new topic but board marked as new? Correct it.
if (empty($unreadboards[$child['id']]) && !empty($child['new']))
{
$smcFunc['db_insert']('replace',
'{db_prefix}log_boards',
array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
array($modSettings['maxMsgID'], $user_info['id'], $child['id']),
array('id_member', 'id_board')
);

// Update for the current session
$categories[$cat_id]['boards'][$board_id]['children'][$child_id]['new'] = 0;
}

$childrenHasNew += $unreadboards[$child['id']];
}

if (!isset($unreadboards[$board['id']]))
continue;

// No new topic here and in children section but not marked as read? Do sth
if (empty($unreadboards[$board['id']]) && empty($childrenHasNew) && (!empty($board['new']) || !empty($board['children_new'])))
{
$smcFunc['db_insert']('replace',
'{db_prefix}log_boards',
array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
array($modSettings['maxMsgID'], $user_info['id'], $board['id']),
array('id_member', 'id_board')
);

$categories[$cat_id]['boards'][$board_id]['new'] = 0;
$categories[$cat_id]['boards'][$board_id]['children_new'] = 0;
}
// New topics just in children?
elseif (empty($unreadboards[$board['id']]) && !empty($childrenHasNew) && (!empty($board['new']) || empty($board['children_new'])))
{
$smcFunc['db_insert']('replace',
'{db_prefix}log_boards',
array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
array($modSettings['maxMsgID'], $user_info['id'], $board['id']),
array('id_member', 'id_board')
);

$categories[$cat_id]['boards'][$board_id]['new'] = 0;
$categories[$cat_id]['boards'][$board_id]['children_new'] = 1;
}
// Some topic in it but not marked as new? Ok but we can't update the db due to a weird behavior...
elseif (!empty($unreadboards[$board['id']]) && empty($board['new']))
$categories[$cat_id]['boards'][$board_id]['new'] = 1;
}
}
}
// END - topic 508952


Pareil, à vos feedbacks ;)

Amicalement,
DeathSign
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on September 30, 2013, 09:10:07 PM
Bonjour,

Je teste cela dès que j'ai un moment :)

Edit :

Voilà c'est en production sur divers sites et les retours sont très bons.

Pas de soucis pour les sections et sous-sections.

Pas de latence sur de gros forums. Mutualisés et dédiés les deux testés.

Pas de problèmes sur les messages à approuver (sans mods qui le modifie).

Pas de problèmes avec les fonction Messages lus et Non lus.

Pas de problèmes si on lis ses messages via les réponses aux messages et Messages depuis votre dernière visite.

Réponse aux messages en laissant des messages non lus (bug résolu).



Voilà pour le moment les retours reçus.
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on October 01, 2013, 10:33:46 AM
Je vous remets le code complet pour une meilleure compréhension cela évitera des erreurs. Faites bien attention à la syntaxe et merci à DeathSign pour le temps passé sur cette modification :)


Editer Sources/Display.php
Chercher et supprimer (ou commenter) :

Edit Sources/Display.php
Search and Delete or writing multiple line comments. The multiple line PHP comment begins with " /* " and ends with " */ ".



        // Mark board as seen if we came using last post link from BoardIndex. (or other places...)
        if (isset($_REQUEST['boardseen']))
        {
            $smcFunc['db_insert']('replace',
                '{db_prefix}log_boards',
                array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
                array($modSettings['maxMsgID'], $user_info['id'], $board),
                array('id_member', 'id_board')
            );
        }

       



Editer Sources MessageIndex.php
Rechercher pour supprimer (ou commenter) :

Edit Sources/MessageIndex.php
Search and Delete or writing multiple line comments. The multiple line PHP comment begins with " /* " and ends with " */ ".


        $smcFunc['db_insert']('replace',
            '{db_prefix}log_boards',
            array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
            array($modSettings['maxMsgID'], $user_info['id'], $board),
            array('id_member', 'id_board')
        );

        if (!empty($board_info['parent_boards']))
        {
            $smcFunc['db_query']('', '
                UPDATE {db_prefix}log_boards
                SET id_msg = {int:id_msg}
                WHERE id_member = {int:current_member}
                    AND id_board IN ({array_int:board_list})',
                array(
                    'current_member' => $user_info['id'],
                    'board_list' => array_keys($board_info['parent_boards']),
                    'id_msg' => $modSettings['maxMsgID'],
                )
            );

            // We've seen all these boards now!
            foreach ($board_info['parent_boards'] as $k => $dummy)
                if (isset($_SESSION['topicseen_cache'][$k]))
                    unset($_SESSION['topicseen_cache'][$k]);
        }

        if (isset($_SESSION['topicseen_cache'][$board]))
            unset($_SESSION['topicseen_cache'][$board]);


Chercher :

Search :


    $boardIndexOptions = array(
        'include_categories' => false,
        'base_level' => $board_info['child_level'] + 1,
        'parent_id' => $board_info['id'],
        'set_latest_post' => false,
        'countChildPosts' => !empty($modSettings['countChildPosts']),
    );
    $context['boards'] = getBoardIndex($boardIndexOptions);


Ajouter Après :

Add After :


    // BEGIN - topic 508952
    changeSectionReadIcon($context['boards'], true);
    // END - topic 508952

   



Editer Sources/Subs-BoardIndex.php
Chercher la fin de fichier :

Edit Sources/Subs-BoardIndex.php
search position="end" :

?>

Ajouter Avant :

Add Before :


// BEGIN - topic 508952
function changeSectionReadIcon(&$mycontext, $isSub = false)
{
    global $user_info, $modSettings, $smcFunc;

    if ($user_info['is_guest'] || empty($mycontext))
        return;

    // Some workaround to make the function a little more generic...
    if ($isSub)
        $categories = array(array('boards' => &$mycontext));
    else
        $categories = &$mycontext;

    // Make a list of boards to check
    $unreadboards = array();
    foreach ($categories as $cat_id => $cat)
    {
        foreach ($cat['boards'] as $board_id => $board)
        {
            if (!empty($modSettings['recycle_enable']) && $board['id'] == $modSettings['recycle_board']) // Don't notify for the recycle bin
                $categories[$cat_id]['boards'][$board_id]['new'] = 0;
            else
                $unreadboards[$board['id']] = 0;

            foreach ($board['children'] as $child_id => $child)
            {
                if (!empty($modSettings['recycle_enable']) && $child['id'] == $modSettings['recycle_board'])
                    $categories[$cat_id]['boards'][$board_id]['children'][$child_id]['new'] = 0;
                else
                    $unreadboards[$child['id']] = 0;
            }
        }
    }

    // Get the real number of unread topics by boards
    $request = $smcFunc['db_query']('', '
        SELECT t.id_board, COUNT(*) AS num_topics
        FROM {db_prefix}topics AS t
            LEFT JOIN {db_prefix}log_topics AS lt ON (lt.id_topic = t.id_topic AND lt.id_member = {int:current_member})
            LEFT JOIN {db_prefix}log_mark_read AS lmr ON (lmr.id_board = t.id_board AND lmr.id_member = {int:current_member})
        WHERE t.id_board IN ({array_int:boards})
            AND IFNULL(lt.id_msg, IFNULL(lmr.id_msg, 0)) < t.id_last_msg' . ($modSettings['postmod_active'] ? '
            AND t.approved = {int:is_approved}' : '') . '
        GROUP BY t.id_board',
        array(
            'boards' => array_keys($unreadboards),
            'current_member' => $user_info['id'],
            'is_approved' => 1,
        )
    );

    while ($row = $smcFunc['db_fetch_assoc']($request))
        $unreadboards[$row['id_board']] = $row['num_topics'];
    $smcFunc['db_free_result']($request);

    foreach ($categories as $cat_id => $cat)
    {
        foreach ($cat['boards'] as $board_id => $board)
        {
            $childrenHasNew = 0;

            // Women and children first!
            foreach ($board['children'] as $child_id => $child)
            {
                if (!isset($unreadboards[$child['id']]))
                    continue;

                // No new topic but board marked as new? Correct it.
                if (empty($unreadboards[$child['id']]) && !empty($child['new']))
                {
                    $smcFunc['db_insert']('replace',
                        '{db_prefix}log_boards',
                        array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
                        array($modSettings['maxMsgID'], $user_info['id'], $child['id']),
                        array('id_member', 'id_board')
                    );

                    // Update for the current session
                    $categories[$cat_id]['boards'][$board_id]['children'][$child_id]['new'] = 0;
                }

                $childrenHasNew += $unreadboards[$child['id']];
            }

            if (!isset($unreadboards[$board['id']]))
                continue;

            // No new topic here and in children section but not marked as read? Do sth
            if (empty($unreadboards[$board['id']]) && empty($childrenHasNew) && (!empty($board['new']) || !empty($board['children_new'])))
            {
                $smcFunc['db_insert']('replace',
                    '{db_prefix}log_boards',
                    array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
                    array($modSettings['maxMsgID'], $user_info['id'], $board['id']),
                    array('id_member', 'id_board')
                );

                $categories[$cat_id]['boards'][$board_id]['new'] = 0;
                $categories[$cat_id]['boards'][$board_id]['children_new'] = 0;
            }
            // New topics just in children?
            elseif (empty($unreadboards[$board['id']]) && !empty($childrenHasNew) && (!empty($board['new']) || empty($board['children_new'])))
            {
                $smcFunc['db_insert']('replace',
                    '{db_prefix}log_boards',
                    array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
                    array($modSettings['maxMsgID'], $user_info['id'], $board['id']),
                    array('id_member', 'id_board')
                );

                $categories[$cat_id]['boards'][$board_id]['new'] = 0;
                $categories[$cat_id]['boards'][$board_id]['children_new'] = 1;
            }           
            // Some topic in it but not marked as new? Ok but we can't update the db due to a weird behavior...
            elseif (!empty($unreadboards[$board['id']]) && empty($board['new']))
                $categories[$cat_id]['boards'][$board_id]['new'] = 1;
        }
    }
}
// END - topic 508952





Editer Sources/BoardIndex.php
Chercher :

Edit Sources/BoardIndex.php
Search :


    // Retrieve the categories and boards.
    require_once($sourcedir . '/Subs-BoardIndex.php');
    $boardIndexOptions = array(
        'include_categories' => true,
        'base_level' => 0,
        'parent_id' => 0,
        'set_latest_post' => true,
        'countChildPosts' => !empty($modSettings['countChildPosts']),
    );
    $context['categories'] = getBoardIndex($boardIndexOptions);


Ajouter Après :

Add After :


    // BEGIN - topic 508952
    changeSectionReadIcon($context['categories'], false);
    // END - topic 508952






Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on October 01, 2013, 01:48:24 PM
Les retours sont rapides chez toi ^^

Si tu connais des mods qui pourraient être perturbés par ces modifs, je suis preneur pour tester ;)

En tout cas, je n'aurais jamais passé autant de temps pour des modifs sur un topic ici ^^'

Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on October 02, 2013, 12:53:50 PM
Bonjour,

Tout fonctionne sans le moindre problème jusque maintenant et rien à signaler sur les forums programmés sur mesure.

:)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on October 05, 2013, 02:41:04 AM
Bonjour,
de retour de vacances je vais refaire un test chez moi... MERCI
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on October 05, 2013, 02:48:05 AM
Bonjour,
Maximus tu peux confirmer c'est bien le fichier
MessageIndex.php et pas MessagesIndex.php il y a les deux dans ton post ?

Merci
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on October 05, 2013, 03:06:27 AM
Je ne trouve pas
$smcFunc['db_insert']('replace',
            '{db_prefix}log_boards',
            array('id_msg' => 'int', 'id_member' => 'int', 'id_board' => 'int'),
            array($modSettings['maxMsgID'], $user_info['id'], $board),
            array('id_member', 'id_board')
        );

        if (!empty($board_info['parent_boards']))
        {
            $smcFunc['db_query']('', '
                UPDATE {db_prefix}log_boards
                SET id_msg = {int:id_msg}
                WHERE id_member = {int:current_member}
                    AND id_board IN ({array_int:board_list})',
                array(
                    'current_member' => $user_info['id'],
                    'board_list' => array_keys($board_info['parent_boards']),
                    'id_msg' => $modSettings['maxMsgID'],
                )
            );

            // We've seen all these boards now!
            foreach ($board_info['parent_boards'] as $k => $dummy)
                if (isset($_SESSION['topicseen_cache'][$k]))
                    unset($_SESSION['topicseen_cache'][$k]);
        }

        if (isset($_SESSION['topicseen_cache'][$board]))
            unset($_SESSION['topicseen_cache'][$board]);
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Zuki. on October 05, 2013, 03:17:17 AM
Bonjour,

C'est dans ./Sources/MessageIndex.php

Ligne 140 (Fichier originel) => $smcFunc['db_insert']('replace',
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on October 05, 2013, 04:23:42 AM
ok je vais télécharger le fichier d'origine pour comprendre merci à toi
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: DeathSign on October 05, 2013, 04:26:42 AM
C'est normal tu l'avais déjà supprimé... Maximus a résumé toutes les modifs depuis une nouvelle install dans son post.

Reprend mon post qui part du cas où tu as appliqué les précédentes http://www.simplemachines.org/community/index.php?topic=508952.msg3616419#msg3616419 (faut tout lire donc remettre Sources/BoardIndex.php comme avant)

Et en effet il y avait une faute de frappe dans MessageIndex

EDIT : Me suis permis de supprimer la ligne MessageIndex erronée et en trop sur le post de Maximus
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on October 05, 2013, 04:37:23 AM
Bonjour,

Pas de soucis DeathSign tu as très bien fait merci à toi :)

Rien à signaler tout roule impeccablement sur tout les forums et ils sont très content :)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on October 05, 2013, 04:51:28 AM
Non je  rien changé car des erreurs étaient apparues... mais je ne suis pas avec un fichier d'origine je pense donc pas possible pour moi... c'est peut etre un mod qui me change le fichier...

ligne 141 j'ai dans mon fichier
if (isset($_SESSION['topicseen_cache'][$board]))
unset($_SESSION['topicseen_cache'][$board]);

$request = $smcFunc['db_query']('', '
SELECT sent
FROM {db_prefix}log_notify
WHERE id_board = {int:current_board}
AND id_member = {int:current_member}
LIMIT 1',
array(
'current_board' => $board,
'current_member' => $user_info['id'],
)
);
$context['is_marked_notify'] = $smcFunc['db_num_rows']($request) != 0;
if ($context['is_marked_notify'])
{
list ($sent) = $smcFunc['db_fetch_row']($request);
if (!empty($sent))
{
$smcFunc['db_query']('', '
UPDATE {db_prefix}log_notify
SET sent = {int:is_sent}
WHERE id_board = {int:current_board}
AND id_member = {int:current_member}',
array(
'current_board' => $board,
'current_member' => $user_info['id'],
'is_sent' => 0,
)
);
}

Content pour ceux qui pourront l'utiliser et bon boulot si Maximus dit pas de problème c'est que c'est bon...
Bon week
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on October 05, 2013, 04:55:14 AM
Bonjour,

Mets ton fichier en attache que l'on regarde cela :)



Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on October 05, 2013, 04:59:52 AM
Merci si tu peux juste me dire si c'est une grosse modif ou pas....  ;)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on October 05, 2013, 06:08:53 AM
Bonjour,

Voilà corrigé :)
Tu dois faire attention quand tu retires des morceaux de code il vaut mieux les commenter que de les supprimer tu t'y retrouverais beaucoup mieux :)

Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on October 05, 2013, 06:32:23 AM
ok merci et ok pour le conseil  ;)
si on install un mod il supprime ou commente le code ???

bonne journée
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on October 05, 2013, 06:56:26 AM
Bonjour,

Et alors tu as su tout installer correctement ?

Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on October 05, 2013, 08:13:07 AM
install nickel ! ;) pas de bug lors de la mise en ligne
encore merci à tous les deux

maintenant je test tout mais bon si vous avez fait les test c'est du 100%
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on October 05, 2013, 11:50:56 AM
Bonsoir,

Tu peux quand même donner ton avis car avec certains mods on a parfois des surprises.

:)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Web68 on October 06, 2013, 02:58:02 AM
exact ! pour l'instant aucun souci ... si jamais je reviendrai ... :P

mods en place:
MetaTags Modification
Float BBCODE
Separated Birthdays from Events
Age And Location
Users Online Today
Sitemap
View Voters at Polls
Ad Managment
InLine Attachments
Only count members in stats
AjaxChat Integration
Tapatalk SMF 2.0 RC5/Final plugin
Aeva Media
Online status on login
Simple Audio Video Embedder
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Papoune57 on December 20, 2013, 06:31:45 PM
Bonsoir,mit en place aujourd'hui et je vous tiendrai au courant de mes tests.

Merci pour tout ce que vous faites.
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Bruno36 on December 29, 2013, 10:33:04 AM
je vient de faire la modification ce qui provoque une page blanche quand je veut lire un sujet..
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: maximus23 on December 29, 2013, 10:37:41 AM
Bonjour,

Tu es certain de ne pas avoir fait d'erreurs dans ton code ?

Tu as bien fais la dernière modification récapitulative ?

:)
Title: Re: Besoin d'améliorer le "new" en page d'accueil
Post by: Bruno36 on December 30, 2013, 10:54:12 AM
Je vient de refaire la modification et la plus de message d'erreur, merci