Vous n'êtes pas identifié(e).

Annonce

ATTENTION

  • Prenez le temps de rechercher si quelqu'un n'a pas déjà proposé une solution à votre problème. Sur le forum français et sur le wiki
  • Pensez à mettre à jour votre version de Cms Made Simple. Nous ne faisons de support que sur LA dernière version de CmsMadeSimple.
  • Renseignez impérativement le formulaire de nouveau message de manière la plus complète que possible. Ces informations demandées nous permettent de mieux vous aider
  • Ajoutez [Résolu] au début du titre de votre 1er message lorsqu'une solution a été trouvée.

#1 01/02/2012 16:08:23

toniodesbois
Membre
Inscription : 20/05/2009
Messages : 83

[Résolu] Notification de nouveau message

#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.10.3
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

A la demande d'un client, je cherche un système de notification de nouveau message.
J'utilise CGBlog avec 2 catégories : une publique qui s'affiche en page d'accueil et une autre réservé aux adhérents. Cette dernière s'affiche lorsqu'on clique sur "Infos adhérents" dans le menu.

Le soucis est que l'on ne voit pas du premier coup d'oeil si il y a des nouveaux messages dans "Infos adhérents".

J'ai abandonné l'idée de notifier le nombre de nouveaux messages car je ne sais pas où récupérer la date de dernière connexion par FEUser... Si quelqu'un à une idée ?

J'ai donc penser à afficher la date du dernier post en notification à côté de "Infos adhérents".
Par ex : "Infos adhérents - 12/01" pour un dernier message le 12 janvier.

Balise utilisateur {last_blog} :

global $gCms;
$db = $gCms->GetDb();
$query = "
SELECT cgblog_date 
FROM cms_module_cgblog AS b 
INNER JOIN cms_module_cgblog_blog_categories AS bc
ON b.cgblog_id=bc.blog_id
WHERE bc.category_id=2

ORDER By b.cgblog_id DESC LIMIT 0,1";
$dbresult = &$db->Execute($query);
    while ($dbresult && !$dbresult->EOF)
    {
$cgdate = $dbresult->fields['cgblog_date'];
$jour = substr("$cgdate", -11, 2);
$mois = substr("$cgdate", -14, 2);
echo "{$jour}/{$mois}";
    $dbresult->MoveNext();
}
if ($dbresult) 

$dbresult->Close();

Pour tester, j'ai créé une div :

      <div id="notif">
         <a href="index.php" class="notification" data-notification="{last_blog}">test</a>
      </div>

Tout cela fonctionne bien.

J'aimerais juste que ça apparaisse dans mon menu à côté de "Infos adhérents" mais je ne sais pas où placer mon code.

Merci pour vos réponses,
Antoine

Dernière modification par toniodesbois (23/02/2012 02:00:16)


CMSMS 1.6
90plan OVH

Hors ligne

 

#2 01/02/2012 17:22:10

jissey
Administrateur
Lieu : Volx
Inscription : 30/10/2009
Messages : 1 773
Site Web

Re : [Résolu] Notification de nouveau message

bonjour,
à vue de nez, je dirai de placer ton udt dans le gabarit du menu en testant l'alias de la page traitée.
Pour optimiser ton udt, vu que tu fais un LIMIT 0,1, la boucle while est inutile et $db->execute peut être avantageusement remplacé par $db->getOne...

Dernier point, la table feusers_history devrait te donner la date de dernière connexion du user FEU.


Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.

Formateur CMSMS à Manosque, Nice, Marseille, Lyon, Dijon ...
Création de site avec CMSMS.

Module UsersGuide. Un fork de OwnersManual.

C'est en se plantant qu'on devient cultivé.

Hors ligne

#3 01/02/2012 19:02:34

toniodesbois
Membre
Inscription : 20/05/2009
Messages : 83

Re : [Résolu] Notification de nouveau message

Merci pour la rapidité. J'ai bien modifié l'udt.

J'arrive à tester l'alias sur la page active mais pas sur le lien du menu non-actif (dernier else). En gros, la date du dernier article s'affiche bien à côté de Infos adhérents mais uniquement quand je clique dessus...

{if $node->parent == true or $node->current == true}
  {assign var='classes' value='menuactive'}
  {if $node->parent == true}
    {assign var='classes' value='menuactive menuparent'}
  {/if}
  {if $node->children_exist == true and $node->depth < $number_of_levels}
    {assign var='classes' value=$classes|cat:' parent'}
  {/if}
  <li class="{$classes}">
    <a href="{$node->url}"
      {if $page_alias == 'infos_adherents'}
          class="{$classes} notification" data-notification="{last_blog}">
      {else}
          class="{$classes}">
      {/if}
    <span>{$node->menutext}</span></a>

{elseif $node->children_exist == true and $node->depth < $number_of_levels and $node->type != 'sectionheader' and $node->type != 'separator'}
<li class="parent"><a href="{$node->url}" class="parent"><span>{$node->menutext}</span></a>

{elseif $node->current == true}
<li class="currentpage"><h3><span>{$node->menutext}</span></h3>

{elseif $node->type == 'sectionheader'}
<li class="sectionheader"><span>{$node->menutext}</span>

{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />

{else}
<li><a href="{$node->url}"><span>{$node->menutext}</span></a>

{/if}

Dernière modification par toniodesbois (01/02/2012 19:28:52)


CMSMS 1.6
90plan OVH

Hors ligne

#4 01/02/2012 23:21:56

jissey
Administrateur
Lieu : Volx
Inscription : 30/10/2009
Messages : 1 773
Site Web

Re : [Résolu] Notification de nouveau message

re,
j'ai pas regardé dans le détail, mais il faut refaire le test du page_alias dans tout les cas de figures, sauf sectionheader et separator.
Autrement dit, à chaque fois que le lien va être généré, il faut refaire le test

[== PHP ==]
{if $node->parent == true or $node->current == true}
  {assign var='classes' value='menuactive'}
  {if $node->parent == true}
    {assign var='classes' value='menuactive menuparent'}
  {/if}
  {if $node->children_exist == true and $node->depth < $number_of_levels}
    {assign var='classes' value=$classes|cat:' parent'}
  {/if}
  <li class="{$classes}">
    <a href="{$node->url}"
      {if $page_alias == 'infos_adherents'}
          class="{$classes} notification" data-notification="{last_blog}">
      {else}
          class="{$classes}">
      {/if}
    <span>{$node->menutext}</span></a>

{elseif $node->children_exist == true and $node->depth < $number_of_levels and $node->type != 'sectionheader' and $node->type != 'separator'}
{if $page_alias == 'infos_adherents'}
          <li class="parent"><a href="{$node->url}" class="parent {$classes}" data-notification="{last_blog}"><span>{$node->menutext}</span></a>
      {else}
         <li class="parent"><a href="{$node->url}" class="parent"><span>{$node->menutext}</span></a>
{/if}
{elseif $node->current == true}
<li class="currentpage"><h3><span>{$node->menutext}</span></h3>

{elseif $node->type == 'sectionheader'}
<li class="sectionheader"><span>{$node->menutext}</span>

{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />

{else}
{if $page_alias == 'infos_adherents'}
<li><a href="{$node->url}" class="{$classes} notification" data-notification="{last_blog}"><span>{$node->menutext}</span></a>
{else}
<li><a href="{$node->url}"><span>{$node->menutext}</span></a>
{/if}
{/if}

Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.

Formateur CMSMS à Manosque, Nice, Marseille, Lyon, Dijon ...
Création de site avec CMSMS.

Module UsersGuide. Un fork de OwnersManual.

C'est en se plantant qu'on devient cultivé.

Hors ligne

#5 02/02/2012 10:45:44

toniodesbois
Membre
Inscription : 20/05/2009
Messages : 83

Re : [Résolu] Notification de nouveau message

En fait $page_alias == 'infos_adherents' teste si la page active est Infos adhérents.

Quand j'applique tes tests, lorsque je clique sur Infos adhérents, tous les liens du menu prennent la classe 'notification' car la page active est bien 'infos_adhérents'.

Si je clique sur un autre lien, aucun ne prend la classe.

J'ai essayé {if $node->menutext == 'Infos adhérents'} mais ça ne fonctionne pas...

Dernière modification par toniodesbois (02/02/2012 10:49:34)


CMSMS 1.6
90plan OVH

Hors ligne

#6 02/02/2012 23:06:50

jissey
Administrateur
Lieu : Volx
Inscription : 30/10/2009
Messages : 1 773
Site Web

Re : [Résolu] Notification de nouveau message

RE,
fourni moi le gabarit complet, je chercherai mieux.


Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.

Formateur CMSMS à Manosque, Nice, Marseille, Lyon, Dijon ...
Création de site avec CMSMS.

Module UsersGuide. Un fork de OwnersManual.

C'est en se plantant qu'on devient cultivé.

Hors ligne

#7 03/02/2012 00:22:32

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 3 401
Site Web

Re : [Résolu] Notification de nouveau message

J'ai essayé {if $node->menutext == 'Infos adhérents'} mais ça ne fonctionne pas...

ça fonctionne parfaitement si le "texte du menu" est Infos adhérents...
Le problème est qu'on ne sait pas si ta page info adhérents est parente, avec ou sans enfants ou si elle est enfant.
Voilà le gabarit left simple navigation + 1 col qui reprend tous les cas (sauf section header et separator) :

{* CSS classes used in this template:
.activeparent - The top level parent when a child is the active/current page
li.active0n h3 - n is the depth/level of the node. To style the active page for each level separately. The active page is not clickable.
.clearfix - Used for the unclickable h3 to use the entire width of the li, just like the anchors. See the Tools stylesheet in the default CMSMS installation.
li.sectionheader h3 - To style section header
li.separator - To style the ruler for the separator *} 

{assign var='number_of_levels' value=10000}
{if isset($menuparams.number_of_levels)}
  {assign var='number_of_levels' value=$menuparams.number_of_levels}
{/if}

{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}

{if $node->parent == true or $node->current == true}
  {assign var='classes' value='menuactive'}
  {if $node->parent == true}
    {assign var='classes' value='menuactive menuparent'}
  {/if}
  {if $node->children_exist == true and $node->depth < $number_of_levels}
    {assign var='classes' value=$classes|cat:' parent'}
  {/if}
{if $node->menutext == 'Infos adhérents'}
  <li class="{$classes}"><a class="{$classes}" href="{$node->url}"><span>{$node->menutext}{last_blog}</span></a>
{else}
<li class="{$classes}"><a class="{$classes}" href="{$node->url}"><span>{$node->menutext}</span></a>
{/if}

{elseif $node->children_exist == true and $node->depth < $number_of_levels and $node->type != 'sectionheader' and $node->type != 'separator'}
{if $node->menutext == 'Infos adhérents'}
  <li class="parent"><a class="parent" href="{$node->url}"><span>{$node->menutext}{last_blog}</span></a>
{else}
<li class="parent"><a class="parent" href="{$node->url}"><span>{$node->menutext}</span></a>
{/if}
{elseif $node->current == true}
{if $node->menutext == 'Infos adhérents'}
  <li class="currentpage"><h3><span>{$node->menutext}{last_blog}</span></h3>
{else}
<li class="currentpage"><h3><span>{$node->menutext}</span></h3>
{/if}
{elseif $node->type == 'sectionheader'}
<li class="sectionheader"><span>{$node->menutext}</span>

{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />

{else}
{if $node->menutext == 'Infos adhérents'}
  <li><a href="{$node->url}"><span>{$node->menutext}{last_blog}</span></a>
{else}
<li><a href="{$node->url}"><span>{$node->menutext}</span></a>
{/if}
{/if}

{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}

Dernière modification par Jean le Chauve (03/02/2012 00:29:44)

Hors ligne

#8 18/02/2012 02:02:23

toniodesbois
Membre
Inscription : 20/05/2009
Messages : 83

Re : [Résolu] Notification de nouveau message

Bonjour,

Merci pour vos réponses. Je n'avais pas reçu de suivi pour cette discussion, je ne pensais pas qu'elle s'était poursuivie... Voici les précisions que vous souhaitiez :

@jissey

Voici le gabarit entier :

{* CSS classes used in this template:
.activeparent - The top level parent when a child is the active/current page
li.active0n h3 - n is the depth/level of the node. To style the active page for each level separately. The active page is not clickable.
.clearfix - Used for the unclickable h3 to use the entire width of the li, just like the anchors. See the Tools stylesheet in the default CMSMS installation.
li.sectionheader h3 - To style section header
li.separator - To style the ruler for the separator *} 

{assign var='number_of_levels' value=10000}
{if isset($menuparams.number_of_levels)}
  {assign var='number_of_levels' value=$menuparams.number_of_levels}
{/if}

{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}

{if $node->parent == true or $node->current == true}
  {assign var='classes' value='menuactive'}
  {if $node->parent == true}
    {assign var='classes' value='menuactive menuparent'}
  {/if}
  {if $node->children_exist == true and $node->depth < $number_of_levels}
    {assign var='classes' value=$classes|cat:' parent'}
  {/if}
  <li class="{$classes}">
    <a href="{$node->url}"
      {if $page_alias == 'infos_adherents'}
          class="{$classes} notification" data-notification="{last_blog}">
      {else}
          class="{$classes}">
      {/if}
    <span>{$node->menutext}</span></a>

{elseif $node->children_exist == true and $node->depth < $number_of_levels and $node->type != 'sectionheader' and $node->type != 'separator'}

{if $page_alias == 'infos_adherents'}
          <li class="parent"><a href="{$node->url}" class="parent {$classes}" data-notification="{last_blog}"><span>{$node->menutext}</span></a>
      {else}
         <li class="parent"><a href="{$node->url}" class="parent"><span>{$node->menutext}</span></a>
{/if}

{elseif $node->current == true}
<li class="currentpage"><h3><span>{$node->menutext}</span></h3>

{elseif $node->type == 'sectionheader'}
<li class="sectionheader"><span>{$node->menutext}</span>

{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />

{else}
{if $node->menutext == 'Infos adhérents'}
<li><a href="{$node->url}" class="{$classes} notification" data-notification="{last_blog}"><span>{$node->menutext}</span></a>
{else}
<li><a href="{$node->url}"><span>{$node->menutext}</span></a>
{/if}

{/if}

{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}

@Jean le Chauve

Ma page Infos adhérents est parente et sans enfant.


CMSMS 1.6
90plan OVH

Hors ligne

#9 18/02/2012 10:17:07

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 3 401
Site Web

Hors ligne

#10 21/02/2012 17:50:14

toniodesbois
Membre
Inscription : 20/05/2009
Messages : 83

Re : [Résolu] Notification de nouveau message

J'essaye avec le nouveau gabarit mais rien ne se passe.
J'ai un peu modifié celui-ci pour rajouter la propriété data-notification="{last_blog}" au lien et la classe css "notification".

Comme ceci par exemple pour la class="parent" :

si oui

class="parent notification" data-notification="{last_blog}"

sinon

class="parent"

J'ai essayé mais ça ne fonctionne pas non plus.

{* CSS classes used in this template:
.activeparent - The top level parent when a child is the active/current page
li.active0n h3 - n is the depth/level of the node. To style the active page for each level separately. The active page is not clickable.
.clearfix - Used for the unclickable h3 to use the entire width of the li, just like the anchors. See the Tools stylesheet in the default CMSMS installation.
li.sectionheader h3 - To style section header
li.separator - To style the ruler for the separator *} 

{assign var='number_of_levels' value=10000}
{if isset($menuparams.number_of_levels)}
  {assign var='number_of_levels' value=$menuparams.number_of_levels}
{/if}

{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}

{if $node->parent == true or $node->current == true}
  {assign var='classes' value='menuactive'}
  {if $node->parent == true}
    {assign var='classes' value='menuactive menuparent'}
  {/if}
  {if $node->children_exist == true and $node->depth < $number_of_levels}
    {assign var='classes' value=$classes|cat:' parent'}
  {/if}
{if $node->menutext == 'Infos adhérents'}
  <li class="{$classes}"><a class="{$classes} notification" data-notification="{last_blog}" href="{$node->url}"><span>{$node->menutext}</span></a>
{else}
<li class="{$classes}"><a class="{$classes}" href="{$node->url}"><span>{$node->menutext}</span></a>
{/if}

{elseif $node->children_exist == true and $node->depth < $number_of_levels and $node->type != 'sectionheader' and $node->type != 'separator'}
{if $node->menutext == 'Infos adhérents'}
  <li class="parent"><a class="parent notification" data-notification="{last_blog}" href="{$node->url}"><span>{$node->menutext}</span></a>
{else}
<li class="parent"><a class="parent" href="{$node->url}"><span>{$node->menutext}</span></a>
{/if}
{elseif $node->current == true}
{if $node->menutext == 'Infos adhérents'}
  <li class="currentpage notification" data-notification="{last_blog}"><h3><span>{$node->menutext}</span></h3>
{else}
<li class="currentpage"><h3><span>{$node->menutext}</span></h3>
{/if}
{elseif $node->type == 'sectionheader'}
<li class="sectionheader"><span>{$node->menutext}</span>

{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />

{else}
{if $node->menutext == 'Infos adhérents'}
  <li><a href="{$node->url} class="notification" data-notification="{last_blog}"><span>{$node->menutext}</span></a>
{else}
<li><a href="{$node->url}"><span>{$node->menutext}</span></a>
{/if}
{/if}

{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}

Dernière modification par toniodesbois (21/02/2012 17:57:32)


CMSMS 1.6
90plan OVH

Hors ligne

#11 21/02/2012 20:18:18

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 3 401
Site Web

Hors ligne

#12 21/02/2012 23:39:01

toniodesbois
Membre
Inscription : 20/05/2009
Messages : 83

Re : [Résolu] Notification de nouveau message

J'ai mis ton gabarit et remplacé {last_blog} par essai.

Dernière modification par toniodesbois (23/02/2012 02:01:16)


CMSMS 1.6
90plan OVH

Hors ligne

#13 22/02/2012 18:51:33

toniodesbois
Membre
Inscription : 20/05/2009
Messages : 83

Re : [Résolu] Notification de nouveau message

En gros tout se passe comme si le test {if $node->menutext == 'Infos adhérents'} n'était jamais vrai.


CMSMS 1.6
90plan OVH

Hors ligne

#14 22/02/2012 21:55:59

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 3 401
Site Web

Hors ligne

#15 22/02/2012 22:14:24

toniodesbois
Membre
Inscription : 20/05/2009
Messages : 83

Re : [Résolu] Notification de nouveau message

Ça à l'air d'être ça pourtant :

stdClass Object
(
    [id] => 31
    [pagetitle] => Infos adhérents
    [url] => http://www.unssf.org/index.php?page=unssf_syndicat-des-sages-femmes_un-info-lettre
    [accesskey] => 
    [type] => content
    [tabindex] => 
    [titleattribute] => 
    [modified] => 1329941636
    [created] => 1305548080
    [hierarchy] => 7
    [depth] => 1
    [prevdepth] => 1
    [children_exist] => 
    [haschildren] => 
    [menutext] => Infos adhérents
    [raw_menutext] => Infos adhérents
    [target] => 
    [index] => 5
    [alias] => unssf_syndicat-des-sages-femmes_un-info-lettre
    [parent] => 
    [extra1] => 
    [extra2] => 
    [extra3] => 
    [current] => 1
)

CMSMS 1.6
90plan OVH

Hors ligne

#16 22/02/2012 23:42:39

jissey
Administrateur
Lieu : Volx
Inscription : 30/10/2009
Messages : 1 773
Site Web

Re : [Résolu] Notification de nouveau message

bonsoir,
à mon avis c'est le caractère accentué "adhérent" qui pose problème.
Essaie en testant :
{if $node->id == 31}


Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.

Formateur CMSMS à Manosque, Nice, Marseille, Lyon, Dijon ...
Création de site avec CMSMS.

Module UsersGuide. Un fork de OwnersManual.

C'est en se plantant qu'on devient cultivé.

Hors ligne

#17 23/02/2012 01:59:44

toniodesbois
Membre
Inscription : 20/05/2009
Messages : 83

Re : [Résolu] Notification de nouveau message

Ça marche !

Je vais tenter aussi de notifier les nombres de messages depuis la dernière connexion grâce à feusers_history. Je vais essayer seul, si je n'y arrive pas j'ouvrirai une nouvelle discussion.

Merci beaucoup smile

Dernière modification par toniodesbois (23/02/2012 02:14:14)


CMSMS 1.6
90plan OVH

Hors ligne

Pied de page des forums

  Flux Rss Twitter FaceBook
fermer

Fin définitive du support 1.6.x sur le forum français

C'était le 8 juin 2011, la team org annonçait la fin du support de la branche 1.6.x, la dernière à supporter php 4.x et 5.1/5.2, nous avions de notre côté accepté d'étendre bénévolement le support de [lire la suite]