Messages système ne s'affichent pas

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Messages système ne s'affichent pas

    Bonjour,

    Suite à une connexion de membre, les messages ne s'affichent pas. Ce n'est pas un problème de CSS car l'attribut « style="display: none;" » est intégré au HTML.
    Exemples de messages qui restent invisibles :
    Message
    Vous êtes connecté
    Erreur
    Vous n'êtes pas autorisé à accéder à cette ressource.
    Erreur
    Adresse courriel ou mot de passe incorrecte. Veuillez réessayer.
    Code source du message d'erreur ou d'info :
    Code:
    <article class="als-post als-messages" style="display: none;"><div class="als-postcontent als-postcontent-0 clearfix">
      <div id="system-message-container">
        <div id="system-message">
          <div class="alert alert-error">
            <a data-dismiss="alert" class="close">×</a>
            <h4 class="alert-heading">Erreur</h4>
            <div>
              <p class="alert-message">Adresse courriel ou mot de passe incorrecte. Veuillez réessayer.</p>
            </div>
            </div>
          </div>
        </div>
      </div>
    </article>
    J'utilise Joomla 3.4.8 (la dernière à ce jour).

    Quelqu'un aurait-il une piste pour m'aider ?

  • #2
    Re : Messages système ne s'affichent pas

    Bonjour,

    Le problème est lié au template, avec un style inline display: none. Modifier l'élément en question dans le source du template.
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : Messages système ne s'affichent pas

      C'est en effet bien lié au template qui a été généré par Artisteer 4.1.

      Voici comment Artisteer procède. Il génère systématiquement en HTML la zone <article> qui contiendra un éventuel message système.
      → S'il y a un message à afficher, il l'injecte en HTML dans cette zone <article>
      → S'il n'y a rien à afficher, il la masque en Javascript, en ajoutant un style « display:none » à la balise <article>.

      Le bug provient du script JS chargé de détecter si le message est vide. Il se situe dans templates/.../script.js vers la ligne 1252 :
      Code:
          $(function ($) {
              $('.als-messages').each(function () {
                  $(this).css('display', $(this).find('dl').length ? '' : 'none');
              });
          });
      Il recherche la présence d'une balise <dl> à l'intérieur de <article> et, s'il ne la trouve pas, il applique « display:none » à <article>.

      Or, le problème c'est que les messages sont générés sans <dl> avec cette version d'Artisteer.

      Il s'attend à quelque chose du style :
      Code:
      <article class="art-post art-messages">
        <div class="art-postcontent clearfix">
          <div id="system-message-container">
            <dl id="system-message">
              <dt class="warning">Avertissement</dt>
              <dd class="warning message">
                <ul>
                  <li>Cet utilisateur n'existe pas</li>
                </ul>
              </dd>
            </dl>
          </div>
        </div>
      </article>
      Or il génère quelque chose du style :
      Code:
      <article class="als-post als-messages">
        <div class="als-postcontent als-postcontent-0 clearfix">
          <div id="system-message-container">
            <div id="system-message">
              <div class="alert alert-warning">
              <a data-dismiss="alert" class="close">×</a>
              <h4 class="alert-heading">Avertissement</h4>
              <div>
                <p class="alert-message">Cet utilisateur n'existe pas</p>
              </div>
              </div>
            </div>
          </div>
        </div>
      </article>
      La solution est de modifier la fonction JS (templates/.../script.js vers la ligne 1252) :
      remplacer ceci :
      Code:
      $(this).css('display', $(this).find('dl').length ? '' : 'none');
      par cela :
      Code:
      $(this).css('display', $(this).find($('#system-message')).length ? '' : 'none');
      Ce qui nous donne :
      Code:
          $(function ($) {
              $('.als-messages').each(function () {
                  $(this).css('display', $(this).find($('#system-message')).length ? '' : 'none');
              });
          });
      Bisous !

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X