Changeset 50047 in spip-zone


Ignore:
Timestamp:
Jul 28, 2011, 3:46:29 PM (10 years ago)
Author:
cedric@…
Message:

debut de boite de reception unifiee (messages, annonces, penses betes)

Location:
_core_/plugins/organiseur
Files:
8 added
4 deleted
5 edited
2 copied

Legend:

Unmodified
Added
Removed
  • _core_/plugins/organiseur/inc/messages.php

    r46354 r50047  
    11<?php
    2 /*
    3  * Plugin messagerie
    4  * Licence GPL
    5  * (c) 2008 C.Morin Yterium
    6  *
    7  */
    82
     3/***************************************************************************\
     4 *  SPIP, Systeme de publication pour l'internet                           *
     5 *                                                                         *
     6 *  Copyright (c) 2001-2011                                                *
     7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
     8 *                                                                         *
     9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
     10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
     11\***************************************************************************/
     12
     13if (!defined('_ECRIRE_INC_VERSION')) return;
    914
    1015include_spip('inc/filtres');
     
    3035       
    3136        if (!count($dests)
    32           AND !count(   $dests = pipeline('messagerie_destiner',$dest)))
     37          AND !count(   $dests = pipeline('messagerie_destiner',$dests)))
    3338                        $erreurs[$obli='destinataire'] = (isset($erreurs[$obli])?$erreurs[$obli]:'') . _T('formulaires:info_obligatoire_rappel');
    3439       
     
    5964        if (count($email_dests)) {
    6065                // retrouver les id des emails
    61                 $res = sql_select('id_auteur,email','spip_auteurs','email IN ('.implode(',',array_map('sql_quote',$email_dests)).')');
     66                $res = sql_select('id_auteur,email','spip_auteurs',sql_in('email', $email_dests).')');
    6267                $auteurs_dest_found = array();
    6368                while ($row = spip_fetch_array($res)){
     
    7580 * @param string $texte
    7681 * @param array $auteurs_dest
    77  * @param bool $general
     82 * @param bool $type
    7883 * @return int
    7984 */
    80 function messagerie_messager($objet, $texte, $auteurs_dest=array(),$general = false){
     85function messagerie_messager($objet, $texte, $auteurs_dest=array(),$type = ''){
     86        $type = substr($type,0,6);
     87        if (!in_array($type,array('normal','genera','pb','affich')))
     88                $type = 'normal';
    8189        $out = false;
    8290        if (count($auteurs_dest) OR $general){
     
    8593                'titre' => safehtml($objet),
    8694                'texte' => safehtml($texte),
    87                 'type' => $general?'genera':'normal',
     95                'type' => $type,
    8896                'date_heure' => 'NOW()',
    8997                'date_fin' => 'NOW()',
     
    97105                        if (!$general) {
    98106                                foreach($auteurs_dest as $id)
    99                                         $insert[] = array('id_message'=>$id_message,'id_auteur'=>$id,'vu'=>'non');
     107                                        $insert[] = array('id_objet'=>$id_message,'objet'=>'message','id_auteur'=>$id,'vu'=>'non');
    100108                        }
    101109                        else {
    102110                                $res = sql_select('id_auteur','spip_auteurs');
    103111                                while ($row = sql_fetch($res))
    104                                         $insert[] = array('id_message'=>$id_message,'id_auteur'=>$row['id_auteur'],'vu'=>'non');
     112                                        $insert[] = array('id_objet'=>$id_message,'objet'=>'message','id_auteur'=>$row['id_auteur'],'vu'=>'non');
    105113                        }
    106                         sql_insertq_multi('spip_auteurs_messages',$insert);
     114                        sql_insertq_multi('spip_auteurs_liens',$insert);
    107115
    108116                        $out = $id_message;                     
     
    139147function messagerie_marquer_lus($id_auteur,$liste){
    140148        $liste = array_map('intval',$liste);
    141         sql_updateq('spip_auteurs_messages',array('vu'=>'oui'),array('id_auteur='.intval($id_auteur),'id_message IN ('.implode(',',$liste).')'));
     149        sql_updateq('spip_auteurs_liens',array('vu'=>'oui'),array('id_auteur='.intval($id_auteur),"objet='message'",sql_in('id_message',$liste)));
    142150        include_spip('inc/invalideur');
    143151        suivre_invalideur("message/".implode(',',$liste));
     
    152160function messagerie_marquer_non_lus($id_auteur,$liste){
    153161        $liste = array_map('intval',$liste);
    154         sql_updateq('spip_auteurs_messages',array('vu'=>'non'),array('id_auteur='.intval($id_auteur),'id_message IN ('.implode(',',$liste).')'));
     162        sql_updateq('spip_auteurs_liens',array('vu'=>'non'),array('id_auteur='.intval($id_auteur),"objet='message'",sql_in('id_message',$liste)));
    155163        include_spip('inc/invalideur');
    156164        suivre_invalideur("message/".implode(',',$liste));
     
    165173function messagerie_effacer($id_auteur,$liste){
    166174        $liste = array_map('intval',$liste);
    167         sql_updateq('spip_auteurs_messages',array('vu'=>'pou'),array('id_auteur='.intval($id_auteur),'id_message IN ('.implode(',',$liste).')'));
     175        sql_updateq('spip_auteurs_liens',array('vu'=>'pou'),array('id_auteur='.intval($id_auteur),"objet='message'",sql_in('id_message',$liste)));
    168176        include_spip('inc/invalideur');
    169177        suivre_invalideur("message/".implode(',',$liste));
  • _core_/plugins/organiseur/lang/organiseur_fr.php

    r47669 r50047  
    1212        'cal_par_semaine' => 'semaine',
    1313
     14        // I
     15        'info_message_de' => 'De',
     16        'info_type_message_rv' => 'Rendez-vous',
     17        'info_type_message_affich' => 'Annonce',
     18        'info_type_message_pb' => 'Pense-bête',
     19        'info_type_message_normal' => 'Message',
     20        'info_message_non_lu' => 'Nouveau message',
     21        'info_1_message_nonlu' => '1 nouveau message',
     22        'info_nb_messages_nonlus' => '@nb@ nouveaus messages',
     23
    1424        // L
    15         'loading' => 'Chargement...'
     25        'loading' => 'Chargement...',
     26
     27        // T
     28        'titre_boite_reception' => 'Boîte de reception',
     29        'titre_boite_envoi' => 'Boîte d\'envoi',
    1630);
    1731
  • _core_/plugins/organiseur/organiseur_fonctions.php

    r50022 r50047  
    2323        $boucle->where[] =
    2424                array("'OR'",
    25                         array("'='","'auteurs_liens.id_auteur'","sql_quote($_auteur)"),
    26                         array("'='","'".$boucle->id_table.".type'","sql_quote('affich')"),
     25                        array(
     26                                "'AND'",
     27                                array("'='","'auteurs_liens.id_auteur'","sql_quote($_auteur)"),
     28                                array("'!='","'auteurs_liens.vu'","'\'pou\''"),
     29                        ),
     30                        array("'OR'",
     31                                array("'='","'".$boucle->id_table.".type'","sql_quote('affich')"),
     32                                array(
     33                                        "'AND'",
     34                                        array("'='","'".$boucle->id_table.".type'","sql_quote('pb')"),
     35                                        array("'='","'".$boucle->id_table.".id_auteur'","sql_quote($_auteur)"),
     36                                )
     37                        )
     38                );
     39}
     40function critere_MESSAGES_non_lu_dist($idb, &$boucles, $crit) {
     41        $boucle = &$boucles[$idb];
     42        $boucle->where[] =
     43                array("'OR'",
     44                "'auteurs_liens.vu IS NULL'",
     45                "sql_in('auteurs_liens.vu',array('pou','oui'),'NOT',\$connect)"
    2746                );
    2847}
  • _core_/plugins/organiseur/plugin.xml

    r50022 r50047  
    1717        </bouton>
    1818        <bouton id='messagerie' parent="outils_collaboratifs">
    19                 <icone>images/message-16.png</icone>
     19                <icone>images/messagerie-16.png</icone>
    2020                <titre>info_messagerie_interne</titre>
    2121        </bouton>
  • _core_/plugins/organiseur/prive/objets/liste/messages-recus.html

    r46354 r50047  
    1 <script type='text/javascript' src='#CHEMIN{formulaires/messages_recus.js}'></script>
    2 <B_recus>
    3 [<p class='pagination'>(#PAGINATION{page})</p>]
    4 <ul class='liste_items messages recus'>
    5 <BOUCLE_recus(MESSAGES auteurs_messages){auteurs_messages.id_auteur=#ENV{id_auteur}}{auteurs_messages.vu!=pou}{!par date_heure}{pagination 10}>
    6 <li class='item[ (#EXPOSE{on})
    7 <?php include_spip('inc/messages');messagerie_marquer_lus('#ENV{id_auteur}',array('#ID_MESSAGE'));?>
    8 ]' id='message_#ID_MESSAGE'><div class='message[ (#VU|=={non}|?{new})]'><input type='checkbox' name='selectionne[]' value='#ID_MESSAGE' class='checkbox' /><a href='[(#SELF|parametre_url{id_message,''})]' class='plier' title='<:messagerie:replier:>' onclick="jQuery('#message_#ID_MESSAGE').removeClass('on');return false;"><img src='[(#CHEMIN{habillage/replier.png}|sinon{#CHEMIN{habillage/replier.gif}})]' alt='<:messagerie:replier:>' /></a>
    9 <span class="repondre"><a href="[(#ENV{_url_ecrire_message}|parametre_url{repondre,#ID_MESSAGE})]" title='<:messagerie:repondre_message|attribut_html:>'><img src='#CHEMIN{habillage/repondre.png}' alt='<:messagerie:repondre_message|attribut_html:>' /></a></span>
    10 <span class='from'>
    11 <BOUCLE_from(AUTEURS){id_auteur}{tout}>#SET{nom,#NOM}</BOUCLE_from>
    12 [(#TYPE|=={genera}|?{' '})<:messagerie:titre_message_general:>]
    13 [<:ecrire_message:de:> <a href='#URL_AUTEUR{#ID_AUTEUR}'>(#GET{nom})</a><em>, </em>]</span>
    14 <span class='date'> [(#DATE_HEURE|affdate_jourcourt)] - [(#DATE_HEURE|heures)]h[(#DATE_HEURE|minutes)]</span>
    15 <h3><a href='[(#SELF|parametre_url{id_message,#ID_MESSAGE})]' onclick="lit_message(#ID_MESSAGE,'#URL_ACTION_AUTEUR{liremessage,#ID_MESSAGE}');return false;">#TITRE</a></h3>
    16 <span class='intro'>[(#TEXTE|couper{80}|PtoBR)]</span>
    17 <div class='texte'>#TEXTE</div>
    18 </div></li>
    19 </BOUCLE_recus>
    20 </ul>
    21 </B_recus>
     1[(#SET{defaut_tri,#ARRAY{
     2        date_heure,#ENV{date_sens,-1},
     3        titre,1,
     4        id_article,1
     5}})
     6]#SET{icone_type,#ARRAY{pb,pensebete-16.png,affich,annonce-16.png}}
     7<BOUCLE_compte_non_lus(MESSAGES auteurs){destinataire #ENV{id_auteur}}{type!=pb}{type?}{where?}{statut?}{recherche?}{non_lu}>[(#NOM|vide)]</BOUCLE_compte_non_lus>
     8#SET{nonlus,#TOTAL_BOUCLE}
     9<//B_compte_non_lus>
     10<B_mess_rec>
     11#ANCRE_PAGINATION
     12<div class="liste-objets messages">
     13<table class='spip liste'>
     14[<caption><strong class="caption">(#ENV*{titre,#GET{nonlus}|singulier_ou_pluriel{organiseur:info_1_message_nonlu,organiseur:info_nb_messages_nonlus}
     15        |sinon{#GRAND_TOTAL|singulier_ou_pluriel{info_1_message,info_nb_messages}}
     16        })</strong></caption>]
     17        <thead>
     18                <tr class='first_row'>
     19                        <th class='new'></th>
     20                        <th class='type'>[(#TRI{type,<span title="<:organiseur:lien_trier_type|attribut_html:>">#</span>,ajax})]</th>
     21                        <th class='isrv'>[(#CHEMIN_IMAGE{heure-16.png}|balise_img{<:organiseur:info_type_message_rv:>})]</th>
     22                        <th class='from'>[(#TRI{nom,<:organiseur:info_message_de:>,ajax})]</th>
     23                        <th class='titre principale'>[(#TRI{titre,<:info_titre:>,ajax})]</th>
     24                        <th class='date secondaire'>[(#TRI{date_heure,<:date:>,ajax})]</th>
     25                        <th class=''></th>
     26                </tr>
     27        </thead>
     28        <tbody>
     29        <BOUCLE_mess_rec(MESSAGES auteurs){destinataire #ENV{id_auteur}}{type?}{where?}{statut?}{recherche?}{tri #ENV{par,date_heure},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
     30                [(#SET{vu,[(#TYPE|=={pb}|ou{#VU|match{^(oui|pou)$}})]})]
     31                <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][(#GET{vu}|non)new]">
     32                        <td class='new'>[(#GET{vu}|?{'',#CHEMIN_IMAGE{pictonew-16.png}|balise_img{<:organiseur:info_message_non_lu:>}})]</td>
     33                        <td class='type'>[(#CHEMIN_IMAGE{#GET{icone_type}|table_valeur{#TYPE}|sinon{message-16.png}}|balise_img{#VAL{organiseur:info_type_message_}|concat{#TYPE}|_T})]</td>
     34                        <td class='isrv'>[(#RV|=={oui}|oui)[(#CHEMIN_IMAGE{heure-16.png}|balise_img{<:organiseur:info_type_message_rv:>})]]</td>
     35                        <td class="from"><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a></td>
     36                        <td class='titre principale'>
     37                                <a
     38                                        href="[(#ID_MESSAGE|generer_url_entite{message})]">#TITRE</a>
     39                        </td>
     40                        <td class='date secondaire'>
     41                                [(#RV|=={oui}|?{
     42                                        [(#DATE_HEURE|affdate_debut_fin{#DATE_FIN,oui,abbr})]
     43                                ,
     44                                        [(#DATE_HEURE|affdate_jourcourt)]
     45                                })]
     46                        </td>
     47                        <td class=''></td>
     48                </tr>
     49        </BOUCLE_mess_rec>
     50        </tbody>
     51</table>
     52[<p class='pagination'>(#PAGINATION{prive})</p>]
     53</div>
     54</B_mess_rec>[
     55<div class="liste-objets messages"><strong class="caption">(#ENV*{sinon,''})</strong></div>
     56]<//B_mess_rec>
     57
  • _core_/plugins/organiseur/prive/style_prive_plugin_organiseur.html

    r50024 r50047  
    3232.item.message .rv {color:#666;font-size:0.9em;padding-#GET{left}:20px;background:url(#CHEMIN_IMAGE{heure-16.png}) no-repeat [(#GET{left}) ]top;}
    3333.item.message .rv.on {color:#000;background-image:url(#CHEMIN_IMAGE{heure-on-16.png});}
     34
     35.liste-objets.messages tr > .new,
     36.liste-objets.messages tr > .type,
     37.liste-objets.messages tr > .isrv {width: 16px; padding-left:2px;padding-right:2px;text-align:center;}
     38.liste-objets.messages tr.new td {font-weight: bold;}
Note: See TracChangeset for help on using the changeset viewer.