Changeset 70299 in spip-zone


Ignore:
Timestamp:
Mar 1, 2013, 11:41:18 AM (6 years ago)
Author:
cedric@…
Message:

Revision du modele de wrapper mail HTML : laisser les font-size naturelle du client mail, alleger la structure, correction des puces, fournir 2 classes .header et .footer
Fournir un filtre facteur_email_wrap_to_html applicable dans un squelette de mail par #FILTRE{facteur_email_wrap_to_html}
Si le mail est au format texte : la premiere ligne est le sujet, le reste le corps du mail

Le mail peut etre aussi dans un format HTML *simplifié*, detecte par le fait que le mail commence par < et finit par > et contient un </body> : dans ce cas le mail fournit un <title></title> qui fera le sujet et un <body></body> qui fera le corps HTML du texte, encapsulé dans le wrapper emails/texte.html
A titre experimental on prend aussi en charge une <intro></intro> qui sera injectee en texte de debut mais non affichee, pour servir d'introduction dans les clients mails qui affichent le debut du texte du message sous son titre dans la vue de la BAL

Location:
_plugins_/facteur/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/facteur/trunk/emails/texte.html

    r68993 r70299  
    44        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    55        <title>[(#ENV{sujet})]</title>
    6         <!-- Facebook sharing information tags -->
    7         <meta property="og:title" content="[(#ENV{sujet}|attribut_html)]">
    8         <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" />
     6        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    97        <style type="text/css">
    108                #outlook a {padding: 0;}
    119                body {width: 100% !important;}
    1210                body {margin: 0;padding: 0;}
    13                 img {border: none;font-size: 16px;font-weight: bold;height: auto;line-height: 100%;outline: none;text-decoration: none;text-transform: capitalize;}
     11                img {border: none;font-size: inherit;font-weight: bold;height: auto;line-height: 100%;outline: none;text-decoration: none;text-transform: capitalize;}
    1412                #backgroundTable {height: 100% !important;margin: 0;padding: 0;width: 100% !important;}
    15                 body, .backgroundTable {background-color: #FAFAFA;}
    16                 #templateContainer {border: 1px solid #DDDDDD;}
    17                 h1,.h1,h2,.h2,h3,.h3,h4,.h4 {color: #202020;display: block;font-family: 'Helvetica Neue',Helvetica,Arial;font-size: 22px;font-weight: bold;line-height: 100%;margin-bottom: 10px;text-align: left;}
    18                 h1,.h1 {font-size: 28px;} h2,.h2 {font-size: 26px;}
    19                 h3,.h3 {font-size: 22px;}       h4,.h4 {font-size: 20px;}
    20                 h5,.h5 {font-size: 18px;}       h6,.h6 {font-size: 16px;}
    21                 #templatePreheader {background-color: #FAFAFA;}
    22                 .preheaderContent div {color: #303030;font-family: 'Helvetica Neue',Helvetica,Arial;font-size: 12px;line-height: 100%;text-align: left;}
    23                 .preheaderContent div a:link, .preheaderContent div a:visited {color: #336699;font-weight: normal;text-decoration: underline;}
    24                 .preheaderContent div img {height: auto;max-width: 600px;}
     13                body, .backgroundTable {background-color: #DDDDDD;}
     14                #templateContainer {border: 1px solid #CCCCCC;max-width: 600px !important;}
     15                h1,.h1,h2,.h2,h3,.h3,h4,.h4 {color: #202020;display: block;font-family: 'Helvetica Neue',Helvetica,Arial;margin-bottom: 0.5em;text-align: left;}
    2516                #templateHeader {background-color: #FFFFFF;border-bottom: 0;}
    26                 .headerContent {color: #202020;font-family: 'Helvetica Neue',Helvetica,Arial;font-size: 34px;font-weight: bold;line-height: 100%;padding: 0;text-align: center;vertical-align: middle;}
    27                 .headerContent a:link, .headerContent a:visited {color: #336699;font-weight: normal;text-decoration: underline;}
    28                 #headerImage {height: auto;max-width: 600px !important;}
    29                 #templateContainer, .bodyContent {background-color: #FDFDFD;}
    30                 .bodyContent div {color: #303030;font-family: 'Helvetica Neue',Helvetica,Arial;font-size: 16px;line-height: 150%;text-align: left;}
     17                #templateContainer, .bodyContent {background-color: #FFFFFF;margin-top: 20px;}
     18                .bodyContent {border-top:10px solid [#(#LOGO_SITE_SPIP|couleur_extraire|couleur_eclaircir_si_foncee{168}|sinon{BBB})];border-bottom:10px solid [#(#LOGO_SITE_SPIP|couleur_extraire|couleur_eclaircir_si_foncee{168}|sinon{BBB})];}
     19                .bodyContent div {color: #222222;font-family: 'Helvetica Neue',Helvetica,Arial;line-height: 150%;text-align: left;}
    3120                .bodyContent div a:link, .bodyContent div a:visited {color: #336699;font-weight: normal;text-decoration: underline;}
    3221                .bodyContent img {display: inline;margin-bottom: 10px;}
    33                 #templateFooter {background-color: #FDFDFD;border-top: 0;}
    34                 .footerContent div {color: #707070;font-family: 'Helvetica Neue',Helvetica,Arial;font-size: 14px;line-height: 125%;text-align: left;}
    35                 .footerContent div a:link, .footerContent div a:visited {color: #336699;font-weight: normal;text-decoration: underline;}
    36                 .footerContent img {display: inline;}
    37                 #social {background-color: #FAFAFA;border: 1px solid #F5F5F5;}
    38                 #social div {text-align: center;}
    39                 #utility {background-color: #FDFDFD;border-top: 1px solid #F5F5F5;}
    40                 #utility div {text-align: center;}
    41                 .spip_code, .spip_cadre {color: #606060;font-family: Courier,"Courier New",monospace;}
     22                .bodyContent img.puce {display: inline;margin-bottom: 0;}
     23                .spip_code, .spip_cadre {color: #606060;font-family: Courier,"Courier New",monospace;font-size: 1em;}
    4224                .coloration_code ol {list-style: none;}
    43                 img.puce {margin-bottom: 0}
     25                .spip_logos {float: right;margin-left: 10px;}
     26                .text {word-wrap:break-word;}
     27                .header,.footer {background: #e9e9e9;padding: 20px;margin-left: -20px;margin-right: -20px;}
     28                .header hr,.footer hr {display: none}
    4429                @media only screen and (max-width: 640px) {
    4530                        html,body {width: 100% !important;}
    46                         #templatePreheader {width: 100% !important;}
    47                         .preheaderContent,.bodyContent,.footerContent {padding: 0 !important;}
    48                         #templateContainer {width: 100% !important;border: 0 !important;}
     31                        body, .backgroundTable {background-color: #ffffff !important;}
     32                        .bodyContent {padding:0 0 10px !important;border-top:0;border-bottom:0;}
     33                        #templateContainer {width: 100% !important;border: 0 !important;margin-top: 0}
    4934                        #templateBody {width: 100% !important;}
    50                         #templateFooter {width: 100% !important;}
    51                         #canspamBar {width: auto !important;}
    5235                        .padding {padding-left:0 !important;padding-right:0 !important;}
    53                         .text {font-size: 16px !important;color: #101010 !important;}
     36                        .text {color: #101010 !important;}
     37                        .header,.footer {padding: 10px;margin-left: -10px;margin-right: -10px;}
    5438                }
    5539                @media only screen and (max-device-width: 480px) {
    5640                        html,body {width: 320px !important;}
    57                         #templatePreheader {width: 320px !important;display: none;}
    58                         .preheaderContent,.bodyContent,.footerContent {padding: 0 !important;}
    59                         #templateContainer {width: 320px !important;border: 0 !important;}
     41                        body, .backgroundTable {background-color: #ffffff !important;}
     42                        .bodyContent {padding: 0 0 10px !important;border-top:0;border-bottom:0;}
     43                        #templateContainer {width: 320px !important;border: 0 !important;margin-top: 0;}
    6044                        #templateBody {width: 320px !important;}
    61                         #templateFooter {width: 320px !important;}
    62                         #canspamBar {width: auto !important;}
    6345                        .padding {padding-left:0 !important;padding-right:0 !important;}
    64                         .text {font-size: 16px !important;color: #101010 !important;}
     46                        .text {color: #101010 !important;}
    6547                }
    6648        </style>
     
    6951                        style="margin: 0;padding: 0;width: 100% !important;">
    7052<center>
     53        [<div style="display: none;">(#ENV{intro,''})</div>]
    7154        <table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" id="backgroundTable"
    7255                                 style="margin: 0;padding: 0;height: 100% !important;width: 100% !important;">
    7356                <tr>
    7457                        <td align="center" valign="top">
    75                                 <!-- // Begin Template Preheader \\ -->
    76                                 <table border="0" cellpadding="0" cellspacing="0" width="600" id="templatePreheader"
    77                                                          style="background-color: #FAFAFA;">
    78                                         <tr>
    79                                                 <td valign="top" class="preheaderContent" style="padding:10px;">
    80 
    81                                                         <!-- // Begin Module: Standard Preheader \\ -->
    82                                                         <table border="0" cellpadding="10" cellspacing="0" width="100%">
    83                                                                 <tr>
    84                                                                         <td valign="top">
    85                                                                                 <div style="color: #303030;font-family: 'Helvetica Neue',Helvetica,Arial;font-size: 12px;line-height: 100%;text-align: left;">
    86                                                                                         <br>
    87                                                                                 </div>
    88                                                                         </td>
    89                                                                         <td valign="top" width="180">
    90                                                                         </td>
    91                                                                 </tr>
    92                                                         </table>
    93                                                         <!-- // End Module: Standard Preheader \\ -->
    94                                                 </td>
    95                                         </tr>
    96                                 </table>
    9758                                <!-- // End Template Preheader \\ -->
    9859                                <table border="0" cellpadding="0" cellspacing="0" width="600" id="templateContainer"
    99                                                          style="border: 1px solid #DDDDDD;background-color: #FDFDFD;">
     60                                                         style="border: 1px solid #CCCCCC;background-color: #FFFFFF;max-width: 600px !important;">
    10061                                        <tr>
    10162                                                <td align="center" valign="top">
     
    10364                                                        <table border="0" cellpadding="0" cellspacing="0" width="600" id="templateBody">
    10465                                                                <tr>
    105                                                                         <td valign="top" class="bodyContent" style="background-color: #FDFDFD;padding:10px;">
     66                                                                        <td valign="top" class="bodyContent" style="background-color: #FFFFFF;padding:10px;">
    10667
    10768                                                                                <!-- // Begin Module: Standard Content \\ -->
     
    10970                                                                                        <tr>
    11071                                                                                                <td valign="top">
    111                                                                                                         <div class='text' style="color:#303030;font-family:'Helvetica Neue',Helvetica,Arial;font-size:16px;line-height:150%;text-align:left;word-wrap:break-word;">
     72                                                                                                        <div class='text' style="color:#222222;font-family: 'Helvetica Neue',Helvetica,Arial;font-size:100%;line-height:150%;text-align:left;word-wrap:break-word;">
    11273                                                                                                                [(#ENV*{html,#ENV*{texte}|replace{'<','&lt;'}|facteur_nl2br_si_pas_autobr|propre|replace{'<br />\s*<br />(\s*<br />)+?','<br /> <br />'}|concat{'<br /> <br />'}})]
    11374                                                                                                        </div>
     75                                                                                                </td>
     76                                                                                        </tr>
     77                                                                                        <tr>
     78                                                                                                <td align="left" valign="top"
     79                                                                                                                style="color:#A39F9A !important;font-family: 'Helvetica Neue',Helvetica,Arial !important;font-size:90% !important;font-weight:normal !important;font-style:normal !important;text-decoration:none !important;vertical-align:top !important;text-align:left !important;">
     80                                                                                                        <br/>
     81                                                                                                        <br/>
     82                                                                                                        &mdash; Envoyé par <a href="#URL_SITE_SPIP/">#NOM_SITE_SPIP</a>
     83                                                                                                        <br/>
    11484                                                                                                </td>
    11585                                                                                        </tr>
     
    12898        </table>
    12999</center>
    130 <center>
    131         <br/>
    132         <br/>
    133         <br/>
    134         <table border="0" cellpadding="0" cellspacing="0" width="100%"
    135                                  style="background:#EEEEEE  !important; border-top:1px solid #DDDDDD; clear:both;" id="canspamBarWrapper">
    136                 <tr>
    137                         <td align="center" valign="top" style="padding:20px;padding-bottom: 0;" class="padding">
    138                                 <table border="0" cellpadding="0" cellspacing="0" width="600" id="canspamBar">
    139                                         <tr>
    140                                                 <td align="left" valign="top"
    141                                                                 style="color:#303030 !important;font-family:Verdana,Arial,Sans !important;font-size:13px !important;font-weight:normal !important;font-style:normal !important;text-decoration:none !important;vertical-align:top !important;text-align:left !important;">
    142                                                         <a href="#URL_SITE_SPIP/">#NOM_SITE_SPIP</a>
    143                                                         <br/>
    144                                                         <br/>
    145                                                 </td>
    146                                         </tr>
    147                                 </table>
    148                         </td>
    149                 </tr>
    150         </table>
    151 </center>
    152100</body>
    153101</html>
  • _plugins_/facteur/trunk/facteur_fonctions.php

    r62827 r70299  
    88
    99if (!defined("_ECRIRE_INC_VERSION")) return;
     10
     11/**
     12 * Transformer un mail texte ou HTML simplifie en mail HTML complet avec le wrapper emails/texte.html
     13 * Si le mail est un mail texte :
     14 *   la premiere ligne est le sujet
     15 *   le reste est le corps du mail
     16 *
     17 * Si le mail est un mail HTML simplifie :
     18 *   le sujet est entre <title></title>
     19 *   le corps est entre <body></body>
     20 *   une eventuelle intro peut etre fournie entre <intro></intro>
     21 *
     22 * @param string $texte_ou_html
     23 * @return string
     24 */
     25function facteur_email_wrap_to_html($texte_ou_html){
     26        $texte_ou_html = trim($texte_ou_html);
     27
     28        $contexte = array("sujet"=>"","texte"=>"","intro"=>"");
     29
     30        // tester si le mail est en html (simplifie)
     31        if (substr($texte_ou_html,0,1)=="<"
     32          AND substr($texte_ou_html,-1,1)==">"
     33          AND stripos($texte_ou_html,"</body>")!==false){
     34
     35                // dans ce cas on ruse un peu : extraire le sujet du title
     36                $sujet = "";
     37                if (preg_match(",<title>(.*)</title>,Uims",$texte_ou_html,$m)){
     38                        $contexte['sujet'] = $m[1];
     39                        $texte_ou_html = preg_replace(",<title>(.*)</title>,Uims","",$texte_ou_html,1);
     40                        $texte_ou_html = trim($texte_ou_html);
     41                }
     42                if (preg_match(",<intro>(.*)</intro>,Uims",$texte_ou_html,$m)){
     43                        $contexte['intro'] = $m[1];
     44                        $texte_ou_html = preg_replace(",<intro>(.*)</intro>,Uims","",$texte_ou_html,1);
     45                        $texte_ou_html = trim($texte_ou_html);
     46                }
     47                $contexte['html'] = preg_replace(",</?body>,ims","",$texte_ou_html);
     48        }
     49        else {
     50                // la premiere ligne est toujours le sujet
     51                $texte_ou_html = explode("\n",$texte_ou_html);
     52                $contexte['sujet'] = trim(array_shift($texte_ou_html));
     53                $contexte['texte'] = trim(implode("\n",$texte_ou_html));
     54        }
     55
     56        return recuperer_fond("emails/texte",$contexte);
     57}
    1058
    1159        /*
  • _plugins_/facteur/trunk/paquet.xml

    r68993 r70299  
    22        prefix="facteur"
    33        categorie="communication"
    4         version="2.3.1"
     4        version="2.4.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.