Dotclear

Changeset 3006


Ignore:
Timestamp:
03/24/11 14:43:17 (13 years ago)
Author:
kwon
Message:

Newsletter 3.7.13 : closes #600, #564, #597, #650, #622, #588

Location:
plugins/newsletter/trunk
Files:
28 edited

Legend:

Unmodified
Added
Removed
  • plugins/newsletter/trunk/_admin.php

    r2800 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
     
    2020     'index.php?pf=newsletter/icon.png', 
    2121     preg_match('/plugin.php\?p='.newsletterPlugin::pname().'(&.*)?$/', $_SERVER['REQUEST_URI']), 
    22      $core->auth->check('usage,admin', $core->blog->id) 
     22     $core->auth->check('newsletter,contentadmin', $core->blog->id) 
    2323     ); 
    2424 
    25 // Adding behaviors 
    26 $core->addBehavior('pluginsBeforeDelete', array('dcBehaviorsNewsletter', 'pluginsBeforeDelete')); 
    27 $core->addBehavior('adminAfterPostCreate', array('dcBehaviorsNewsletter', 'adminAutosend')); 
    28 $core->addBehavior('adminAfterPostUpdate', array('dcBehaviorsNewsletter', 'adminAutosendUpdate')); 
    29  
    30 // Adding import/export behavior 
    31 $core->addBehavior('exportFull',array('dcBehaviorsNewsletter','exportFull')); 
    32 $core->addBehavior('exportSingle',array('dcBehaviorsNewsletter','exportSingle')); 
    33 $core->addBehavior('importInit',array('dcBehaviorsNewsletter','importInit')); 
    34 $core->addBehavior('importFull',array('dcBehaviorsNewsletter','importFull')); 
    35 $core->addBehavior('importSingle',array('dcBehaviorsNewsletter','importSingle')); 
    36  
    37 // Dynamic method 
    38 $core->rest->addFunction('prepareALetter', array('newsletterRest','prepareALetter')); 
    39 $core->rest->addFunction('sendLetterBySubscriber', array('newsletterRest','sendLetterBySubscriber')); 
    40  
     25// Adding permission 
     26$core->auth->setPermissionType('newsletter',__('manage newsletter')); 
     27 
     28if ($core->auth->check('newsletter,contentadmin',$core->blog->id)) { 
     29     // Adding behaviors 
     30     $core->addBehavior('pluginsBeforeDelete', array('dcBehaviorsNewsletter', 'pluginsBeforeDelete')); 
     31     $core->addBehavior('adminAfterPostCreate', array('dcBehaviorsNewsletter', 'adminAutosend')); 
     32     $core->addBehavior('adminAfterPostUpdate', array('dcBehaviorsNewsletter', 'adminAutosendUpdate')); 
     33      
     34     // Adding import/export behavior 
     35     $core->addBehavior('exportFull',array('dcBehaviorsNewsletter','exportFull')); 
     36     $core->addBehavior('exportSingle',array('dcBehaviorsNewsletter','exportSingle')); 
     37     $core->addBehavior('importInit',array('dcBehaviorsNewsletter','importInit')); 
     38     $core->addBehavior('importFull',array('dcBehaviorsNewsletter','importFull')); 
     39     $core->addBehavior('importSingle',array('dcBehaviorsNewsletter','importSingle')); 
     40      
     41     // Dynamic method 
     42     $core->rest->addFunction('prepareALetter', array('newsletterRest','prepareALetter')); 
     43     $core->rest->addFunction('sendLetterBySubscriber', array('newsletterRest','sendLetterBySubscriber')); 
     44} 
     45      
    4146// Loading widget 
    4247require dirname(__FILE__).'/_widgets.php'; 
     
    293298               $letter_content .= $post['p_letter_footer']; 
    294299                
    295                $letter_content = newsletterLetter::mb_wordwrap($letter_content); 
     300               //$letter_content = newsletterLetter::mb_wordwrap($letter_content); 
    296301          } 
    297302                
  • plugins/newsletter/trunk/_define.php

    r2810 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
     
    1616     /* Description*/    "Manage your newsletters in Dotclear 2", 
    1717     /* Author */        "Benoit de Marne", 
    18      /* Version */       "3.7.13alpha2", 
     18     /* Version */       "3.7.13alpha16", 
    1919     /* Permissions */   "usage,contentadmin", 
    2020     /* Priority */      null 
  • plugins/newsletter/trunk/_install.php

    r2395 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/_prepend.php

    r2800 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/_public.php

    r2685 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/_uninstall.php

    r2390 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/_widgets.php

    r2390 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/changelog.txt

    r2810 r3006  
    33* Ticket #545 : page récapitulative des newsletter 
    44* Ticket #599 : fonctionnement autonome du widget 
    5 * Ticket #564 : vérification du by 
    6 * Change le format des posts de la newsletter pour éviter un bug d'envoi sur la lettre auto  
    7      ° (post_url_format = {y}/{m}/{d}/{t}/{id})   
    8 * Ticket #588 : ajouter la possibilité de définir les permissions 
    9 * Ticket #597 : bug avec Restreindre l'aperçu à l'extrait des billets 
    105--------- TODO ----------- 
    116 
     
    149* Ticket #600 : Statut confirmé à l'inscription 
    1510* Changement des valeurs par défaut 
     11* Ticket #564 : vérification du by 
     12* Ticket #597 : bug avec Restreindre l'aperçu à l'extrait des billets 
     13* Ticket #650 : Newsletter : liens corrompus dans certains envois 
     14* Change le format des posts de la newsletter pour éviter un bug d'envoi sur la lettre auto  
     15     (post_url_format = {y}/{m}/{d}/{t}/{id}) 
     16     => changement automatique non possible car l'url est fixée par Dotclear 
     17* Ticket #622 : (%s) dans le message de suppression d'un abonné       
     18* Ticket #588 : ajouter la possibilité de définir les permissions 
     19* Ajout d'un onglet avec le nombre d'abonnés 
    1620 
    1721Newsletter 3.7.12 - 2010-12-16 
  • plugins/newsletter/trunk/inc/class.captcha.php

    r2503 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/inc/class.dc.newsletter.php

    r2643 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/inc/class.newsletter.admin.php

    r2810 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
     
    13981398     } 
    13991399 
    1400  
     1400     /** 
     1401     * print statistics 
     1402     */ 
     1403     public static function displayTabResume() 
     1404     { 
     1405          global $core; 
     1406          try { 
     1407               $blog = &$core->blog; 
     1408 
     1409               echo newsletterSubscribersList::fieldsetResumeSubscribers(); 
     1410               echo newsletterLettersList::fieldsetResumeLetters(); 
     1411               // todo : statistics sending letters 
     1412 
     1413          } catch (Exception $e) {  
     1414               $core->error->add($e->getMessage());  
     1415          } 
     1416 
     1417     } 
    14011418} 
    14021419 
  • plugins/newsletter/trunk/inc/class.newsletter.core.php

    r2810 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
     
    899899                         } else { 
    900900                              $news_content = text::cutString($news_content,$newsletter_settings->getSizeContentPost()); 
    901                               $news_content = newsletterTools::cutHtmlString($news_content,$newsletter_settings->getSizeContentPost()); 
     901                              //$news_content = newsletterTools::cutHtmlString($news_content,$newsletter_settings->getSizeContentPost()); 
     902                              $news_content = newsletterTools::truncateHtmlString($news_content,$newsletter_settings->getSizeContentPost(),'...',false,true); 
    902903                              $news_content = html::decodeEntities($news_content); 
    903                               $news_content = preg_replace('/<\/p>$/',"...</p>",$news_content);                               
     904                              //$news_content = preg_replace('/<\/p>$/',"...</p>",$news_content);                             
    904905                         } 
    905906 
  • plugins/newsletter/trunk/inc/class.newsletter.cron.php

    r2503 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/inc/class.newsletter.letter.php

    r2810 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
     
    11181118 
    11191119                    $replacements[0] .= '<p class="post-info">'; 
    1120                     $replacements[0] .= '('.$rs_attach_posts->getDate($format).'&nbsp;'.__('by ').'&nbsp;'.$rs_attach_posts->getAuthorCN().')'; 
     1120                    $replacements[0] .= '('.$rs_attach_posts->getDate($format).'&nbsp;'.__('by').'&nbsp;'.$rs_attach_posts->getAuthorCN().')'; 
    11211121                    $replacements[0] .= '</p>'; 
    11221122                
     
    12141214                         } else { 
    12151215                              //$news_content = text::cutString($news_content,$newsletter_settings->getSizeContentPost()); 
    1216                               $news_content = newsletterTools::cutHtmlString($news_content,$newsletter_settings->getSizeContentPost()); 
     1216                              //$news_content = newsletterTools::cutHtmlString($news_content,$newsletter_settings->getSizeContentPost()); 
     1217                              $news_content = newsletterTools::truncateHtmlString($news_content,$newsletter_settings->getSizeContentPost(),'',false,true); 
    12171218                              $news_content = html::decodeEntities($news_content); 
    1218                               $news_content = preg_replace('/<\/p>$/',"...</p>",$news_content); 
     1219                              //$news_content = preg_replace('/<\/p>$/',"...</p>",$news_content); 
    12191220                         } 
    12201221 
     
    12861287               { 
    12871288                    $replacements[0] .= $rs_attach_posts->post_title.'<br/>'; 
    1288                     $replacements[0] .= '('.$rs_attach_posts->getDate($format).' '.__('by ').' '.$rs_attach_posts->getAuthorCN().')<br/>'; 
     1289                    $replacements[0] .= '('.$rs_attach_posts->getDate($format).' '.__('by').' '.$rs_attach_posts->getAuthorCN().')<br/>'; 
    12891290                
    12901291                    // On n'affiche pas les miniatures en mode texte 
  • plugins/newsletter/trunk/inc/class.newsletter.letters.php

    r2645 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
     
    1414class newsletterLettersList extends adminGenericList 
    1515{ 
     16     /** 
     17      * Count letters 
     18      */   
     19     private static function countLetters($state = '1') 
     20     { 
     21          global $core; 
     22           
     23          $params['post_type'] = 'newsletter'; 
     24          $params['post_status'] = $state; 
     25          $params['no_content'] = true; 
     26 
     27          $counter = $core->blog->getPosts($params,true); 
     28          return $counter->f(0); 
     29     } 
     30           
     31     public static function fieldsetResumeLetters() 
     32     { 
     33          $state_combo = array( 
     34                         __('pending') => '-2', 
     35                         __('scheduled') => '-1', 
     36                         __('unpublish') => '0', 
     37                         __('publish') => '1' 
     38                    );              
     39 
     40          $resume_content = 
     41                    '<fieldset>'. 
     42                    '<legend>'.__('Statistics letters').'</legend>'. 
     43                    '<table summary="resume_letters" class="minimal">'. 
     44                    '<thead>'. 
     45                         '<tr>'. 
     46                              '<th>'.__('State').'</th>'. 
     47                              '<th>'.__('Count').'</th>'. 
     48                         '</tr>'. 
     49                    '</thead>'. 
     50                    '<tbody id="classes-list">'; 
     51 
     52                    foreach($state_combo as $k=>$v) { 
     53                         $resume_content .=  
     54                              '<tr class="line">'. 
     55                              '<td>'.$k.'</td>'. 
     56                              '<td>'.self::countLetters($v).'</td>'. 
     57                              '</tr>'. 
     58                              ''; 
     59                    } 
     60 
     61          $resume_content .=  
     62                    '</tbody>'. 
     63                    '</table>'. 
     64                    '</fieldset>'. 
     65                    ''; 
     66           
     67          return $resume_content; 
     68     }     
     69      
    1670     /** 
    1771      * Display list of newsletters 
  • plugins/newsletter/trunk/inc/class.newsletter.mail.php

    r2800 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
     
    168168                          
    169169                    $subject = mail::B64Header($_subject); 
    170                     $_body = (function_exists('imap_8bit') ? imap_8bit($_body) : $_body);                 
     170                    $_body = (function_exists('imap_8bit') ? imap_8bit($_body) : $_body); 
    171171                    mail::sendMail($_email, $subject, $_body, $headers); 
    172172                    return true; 
  • plugins/newsletter/trunk/inc/class.newsletter.mailing.php

    r2800 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/inc/class.newsletter.settings.php

    r2810 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/inc/class.newsletter.subscriber.php

    r2645 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/inc/class.newsletter.subscribers.php

    r2800 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
     
    1414class newsletterSubscribersList extends adminGenericList 
    1515{ 
     16     /** 
     17      * Count subscribers 
     18      */   
     19     private static function countSubscribers($state = 'enabled') 
     20     { 
     21          $params['state'] = $state; 
     22          $counter = newsletterCore::getSubscribers($params,true); 
     23          return $counter->f(0); 
     24     } 
     25           
     26     public static function fieldsetResumeSubscribers() 
     27     { 
     28          $state_combo = array(__('pending') => 'pending', 
     29                              __('enabled') => 'enabled', 
     30                              __('suspended') => 'suspended', 
     31                              __('disabled') => 'disabled'); 
     32                                    
     33          $resume_content = 
     34                    '<fieldset>'. 
     35                    '<legend>'.__('Statistics subscribers').'</legend>'. 
     36                    '<table summary="resume" class="minimal">'. 
     37                    '<thead>'. 
     38                         '<tr>'. 
     39                              '<th>'.__('State').'</th>'. 
     40                              '<th>'.__('Count').'</th>'. 
     41                         '</tr>'. 
     42                    '</thead>'. 
     43                    '<tbody id="classes-list">'; 
     44 
     45                    foreach($state_combo as $k=>$v) { 
     46                         $resume_content .=  
     47                              '<tr class="line">'. 
     48                              '<td>'.$k.'</td>'. 
     49                              '<td>'.self::countSubscribers($v).'</td>'. 
     50                              '</tr>'. 
     51                              ''; 
     52                    } 
     53 
     54          $resume_content .=  
     55                    '</tbody>'. 
     56                    '</table>'. 
     57                    '</fieldset>'. 
     58                    ''; 
     59           
     60          return $resume_content; 
     61     } 
     62      
    1663     /** 
    1764      * Display data table for subscribers 
     
    65112                
    66113               echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
    67                 
    68                 
    69114          } 
    70115     } 
  • plugins/newsletter/trunk/inc/class.newsletter.tools.php

    r2800 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
     
    201201         return($str); 
    202202     }     
     203 
     204      
     205     /** 
     206      * Truncates text. 
     207      * 
     208      * Cuts a string to the length of $length and replaces the last characters 
     209      * with the ending if the text is longer than length. 
     210      * 
     211      * @param string  $text String to truncate. 
     212      * @param integer $length Length of returned string, including ellipsis. 
     213      * @param mixed $ending If string, will be used as Ending and appended to the trimmed string. Can also be an associative array that can contain the last three params of this method. 
     214      * @param boolean $exact If false, $text will not be cut mid-word 
     215      * @param boolean $considerHtml If true, HTML tags would be handled correctly 
     216      * @return string Trimmed string. 
     217      *  
     218      * Fonction extraite : http://www.ycerdan.fr/php/tronquer-un-texte-en-conservant-les-tags-html-en-php/ 
     219      */ 
     220       
     221     function truncateHtmlString($text, $length = 100, $ending = '...', $exact = true, $considerHtml = false) { 
     222         if (is_array($ending)) { 
     223             extract($ending); 
     224         } 
     225         if ($considerHtml) { 
     226             if (mb_strlen(preg_replace('/<.*?>/', '', $text)) <= $length) { 
     227                 return $text; 
     228             } 
     229             $totalLength = mb_strlen($ending); 
     230             $openTags = array(); 
     231             $truncate = ''; 
     232             preg_match_all('/(<\/?([\w+]+)[^>]*>)?([^<>]*)/', $text, $tags, PREG_SET_ORDER); 
     233             foreach ($tags as $tag) { 
     234                 if (!preg_match('/img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param/s', $tag[2])) { 
     235                     if (preg_match('/<[\w]+[^>]*>/s', $tag[0])) { 
     236                         array_unshift($openTags, $tag[2]); 
     237                     } else if (preg_match('/<\/([\w]+)[^>]*>/s', $tag[0], $closeTag)) { 
     238                         $pos = array_search($closeTag[1], $openTags); 
     239                         if ($pos !== false) { 
     240                             array_splice($openTags, $pos, 1); 
     241                         } 
     242                     } 
     243                 } 
     244                 $truncate .= $tag[1]; 
     245       
     246                 $contentLength = mb_strlen(preg_replace('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', ' ', $tag[3])); 
     247                 if ($contentLength + $totalLength > $length) { 
     248                     $left = $length - $totalLength; 
     249                     $entitiesLength = 0; 
     250                     if (preg_match_all('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', $tag[3], $entities, PREG_OFFSET_CAPTURE)) { 
     251                         foreach ($entities[0] as $entity) { 
     252                             if ($entity[1] + 1 - $entitiesLength <= $left) { 
     253                                 $left--; 
     254                                 $entitiesLength += mb_strlen($entity[0]); 
     255                             } else { 
     256                                 break; 
     257                             } 
     258                         } 
     259                     } 
     260       
     261                     $truncate .= mb_substr($tag[3], 0 , $left + $entitiesLength); 
     262                     break; 
     263                 } else { 
     264                     $truncate .= $tag[3]; 
     265                     $totalLength += $contentLength; 
     266                 } 
     267                 if ($totalLength >= $length) { 
     268                     break; 
     269                 } 
     270             } 
     271       
     272         } else { 
     273             if (mb_strlen($text) <= $length) { 
     274                 return $text; 
     275             } else { 
     276                 $truncate = mb_substr($text, 0, $length - strlen($ending)); 
     277             } 
     278         } 
     279         if (!$exact) { 
     280             $spacepos = mb_strrpos($truncate, ' '); 
     281             if (isset($spacepos)) { 
     282                 if ($considerHtml) { 
     283                     $bits = mb_substr($truncate, $spacepos); 
     284                     preg_match_all('/<\/([a-z]+)>/', $bits, $droppedTags, PREG_SET_ORDER); 
     285                     if (!empty($droppedTags)) { 
     286                         foreach ($droppedTags as $closingTag) { 
     287                             if (!in_array($closingTag[1], $openTags)) { 
     288                                 array_unshift($openTags, $closingTag[1]); 
     289                             } 
     290                         } 
     291                     } 
     292                 } 
     293                 $truncate = mb_substr($truncate, 0, $spacepos); 
     294             } 
     295         } 
     296       
     297         $truncate .= $ending; 
     298       
     299         if ($considerHtml) { 
     300             foreach ($openTags as $tag) { 
     301                 $truncate .= '</'.$tag.'>'; 
     302             } 
     303         } 
     304       
     305         return $truncate; 
     306     }     
     307      
     308      
    203309      
    204310      
  • plugins/newsletter/trunk/inc/class.template.php

    r2800 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/inc/db-schema.php

    r2390 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
  • plugins/newsletter/trunk/index.php

    r2810 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009-2010 Benoit de Marne. 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77# Many thanks to Association Dotclear and special thanks to Olivier Le Bris 
     
    1313 
    1414if (!defined('DC_CONTEXT_ADMIN')) exit; 
    15 dcPage::check('usage,admin'); 
     15//dcPage::check('usage,admin'); 
     16dcPage::check('newsletter,contentadmin'); 
    1617 
    1718# Settings compatibility test 
     
    727728     case 'delete': 
    728729     { 
     730          $letters_id = array(); 
    729731          if(!empty($_POST['letters_id'])) $letters_id = $_POST['letters_id']; 
    730732          newsletterLettersList::lettersActions($letters_id); 
     
    843845               "dotclear.msg.please_wait = '".html::escapeJS(__('Waiting...'))."';\n". 
    844846               "dotclear.msg.subscribers_found = '".html::escapeJS(__('%s subscribers found'))."';\n". 
     847               "dotclear.msg.confirm_delete_subscribers = '".html::escapeJS(__('Are you sure you want to delete selected subscribers?'))."';\n". 
    845848               "\n//]]>\n". 
    846849               "</script>\n"; 
     
    856859               "//<![CDATA[\n". 
    857860               "dotclear.msg.confirm_delete_letters = '".html::escapeJS(__('Are you sure you want to delete selected letters?'))."';\n". 
     861               "dotclear.msg.confirm_delete_subscribers = '".html::escapeJS(__('Are you sure you want to delete selected subscribers?'))."';\n". 
    858862               "\n//]]>\n". 
    859863               "</script>\n"; 
     
    927931               echo '<p><a href="plugin.php?p=newsletter&amp;m=planning" class="multi-part">'.__('Planning').'</a></p>'; 
    928932               echo '<p><a href="plugin.php?p=newsletter&amp;m=maintenance" class="multi-part">'.__('Maintenance').'</a></p>'; 
     933               echo '<p><a href="plugin.php?p=newsletter&amp;m=resume" class="multi-part">'.__('Resume').'</a></p>'; 
    929934          } 
    930935          break; 
     
    942947               echo '<p><a href="plugin.php?p=newsletter&amp;m=planning" class="multi-part">'.__('Planning').'</a></p>'; 
    943948               echo '<p><a href="plugin.php?p=newsletter&amp;m=maintenance" class="multi-part">'.__('Maintenance').'</a></p>'; 
     949               echo '<p><a href="plugin.php?p=newsletter&amp;m=resume" class="multi-part">'.__('Resume').'</a></p>'; 
    944950          } 
    945951          break; 
     
    961967               echo '<p><a href="plugin.php?p=newsletter&amp;m=planning" class="multi-part">'.__('Planning').'</a></p>'; 
    962968               echo '<p><a href="plugin.php?p=newsletter&amp;m=maintenance" class="multi-part">'.__('Maintenance').'</a></p>'; 
     969               echo '<p><a href="plugin.php?p=newsletter&amp;m=resume" class="multi-part">'.__('Resume').'</a></p>'; 
    963970          } 
    964971          break; 
     
    979986               echo '<p><a href="plugin.php?p=newsletter&amp;m=planning" class="multi-part">'.__('Planning').'</a></p>'; 
    980987               echo '<p><a href="plugin.php?p=newsletter&amp;m=maintenance" class="multi-part">'.__('Maintenance').'</a></p>'; 
     988               echo '<p><a href="plugin.php?p=newsletter&amp;m=resume" class="multi-part">'.__('Resume').'</a></p>'; 
    981989          } 
    982990          break; 
     
    9961004               echo '<p><a href="plugin.php?p=newsletter&amp;m=planning" class="multi-part">'.__('Planning').'</a></p>'; 
    9971005               echo '<p><a href="plugin.php?p=newsletter&amp;m=maintenance" class="multi-part">'.__('Maintenance').'</a></p>'; 
     1006               echo '<p><a href="plugin.php?p=newsletter&amp;m=resume" class="multi-part">'.__('Resume').'</a></p>'; 
    9981007          } 
    9991008          break; 
     
    10121021               echo '<p><a href="plugin.php?p=newsletter&amp;m=planning" class="multi-part">'.__('Planning').'</a></p>'; 
    10131022               echo '<p><a href="plugin.php?p=newsletter&amp;m=maintenance" class="multi-part">'.__('Maintenance').'</a></p>'; 
     1023               echo '<p><a href="plugin.php?p=newsletter&amp;m=resume" class="multi-part">'.__('Resume').'</a></p>'; 
    10141024          } 
    10151025          break; 
     
    10271037               echo '<p><a href="plugin.php?p=newsletter&amp;m=planning" class="multi-part">'.__('Planning').'</a></p>'; 
    10281038               echo '<p><a href="plugin.php?p=newsletter&amp;m=maintenance" class="multi-part">'.__('Maintenance').'</a></p>'; 
     1039               echo '<p><a href="plugin.php?p=newsletter&amp;m=resume" class="multi-part">'.__('Resume').'</a></p>'; 
    10291040          } 
    10301041          break; 
     
    10421053               echo '<p><a href="plugin.php?p=newsletter&amp;m=planning" class="multi-part">'.__('Planning').'</a></p>'; 
    10431054               echo '<p><a href="plugin.php?p=newsletter&amp;m=maintenance" class="multi-part">'.__('Maintenance').'</a></p>'; 
     1055               echo '<p><a href="plugin.php?p=newsletter&amp;m=resume" class="multi-part">'.__('Resume').'</a></p>'; 
    10441056          } 
    10451057          break; 
     
    10571069               echo '</div>'; 
    10581070               echo '<p><a href="plugin.php?p=newsletter&amp;m=maintenance" class="multi-part">'.__('Maintenance').'</a></p>'; 
     1071               echo '<p><a href="plugin.php?p=newsletter&amp;m=resume" class="multi-part">'.__('Resume').'</a></p>'; 
    10591072          } 
    10601073          break; 
     
    10721085               tabsNewsletter::displayTabMaintenance(); 
    10731086               echo '</div>'; 
     1087               echo '<p><a href="plugin.php?p=newsletter&amp;m=resume" class="multi-part">'.__('Resume').'</a></p>'; 
    10741088          } 
    10751089          break; 
     1090           
     1091          case 'tab_resume': 
     1092          { 
     1093               echo '<p><a href="plugin.php?p=newsletter&amp;m=subscribers" class="multi-part">'.__('Subscribers').'</a></p>'; 
     1094               echo '<p><a href="plugin.php?p=newsletter&amp;m=addedit" class="multi-part">'.$edit_subscriber.'</a></p>'; 
     1095               echo '<p><a href="plugin.php?p=newsletter&amp;m=letters" class="multi-part">'.__('Letters').'</a></p>'; 
     1096               echo '<p><a href="plugin.php?p=newsletter&amp;m=messages" class="multi-part">'.__('Messages').'</a></p>'; 
     1097               echo '<p><a href="plugin.php?p=newsletter&amp;m=editCSS" class="multi-part">'.__('CSS for letters').'</a></p>';          
     1098               echo '<p><a href="plugin.php?p=newsletter&amp;m=settings" class="multi-part">'.__('Settings').'</a></p>'; 
     1099               echo '<p><a href="plugin.php?p=newsletter&amp;m=planning" class="multi-part">'.__('Planning').'</a></p>'; 
     1100               echo '<p><a href="plugin.php?p=newsletter&amp;m=maintenance" class="multi-part">'.__('Maintenance').'</a></p>'; 
     1101               echo '<div class="multi-part" id="tab_resume" title="'.__('Resume').'">'; 
     1102               tabsNewsletter::displayTabResume(); 
     1103               echo '</div>'; 
     1104          } 
     1105          break;          
    10761106      
    10771107          default: 
  • plugins/newsletter/trunk/js/_newsletter.js

    r1635 r3006  
    99          var action=$(this).find('select[name="op"]').val(); 
    1010          if(action=='remove'){ 
    11                return window.confirm(dotclear.msg.confirm_delete_user); 
     11               return window.confirm(dotclear.msg.confirm_delete_subscribers); 
    1212          } 
    1313          return true; 
  • plugins/newsletter/trunk/locales/fr/main.lang.php

    r2804 r3006  
    649649#inc/class.newsletter.core.php:1029 
    650650$GLOBALS['__l10n'][', by'] = ', par'; 
     651$GLOBALS['__l10n']['by'] = 'par'; 
    651652 
    652653#inc/class.newsletter.core.php:1092 
     
    10601061#index.php:856 
    10611062$GLOBALS['__l10n']['Are you sure you want to delete selected letters?'] = 'Êtes-vous sûr de vouloir supprimer les lettres sélectionnées?'; 
     1063$GLOBALS['__l10n']['Are you sure you want to delete selected subscribers?'] = 'Êtes-vous sûr de vouloir supprimer les abonnés sélectionnés?'; 
    10621064 
    10631065#index.php:883 
     
    13001302$GLOBALS['__l10n']['Error deleting account!'] = 'Erreur lors de la suppression du compte !'; 
    13011303 
     1304$GLOBALS['__l10n']['Statistics subscribers'] = 'Statistiques des abonnés'; 
     1305 
     1306$GLOBALS['__l10n']['Statistics letters'] = 'Statistiques des lettres'; 
     1307 
     1308$GLOBALS['__l10n']['Statistics sending letters'] = 'Statistiques des envois de lettres'; 
     1309 
     1310$GLOBALS['__l10n']['Count'] = 'Total'; 
     1311 
    13021312?> 
  • plugins/newsletter/trunk/locales/fr/main.po

    r2804 r3006  
    773773msgstr "<strong>Attention :</strong> vous êtes priés de sauvegarder votre base de données avant d'utiliser cette option" 
    774774 
     775msgid "Statistics subscribers" 
     776msgstr "Statistiques des abonnés" 
     777 
     778msgid "Statistics letters" 
     779msgstr "Statistiques des lettres" 
     780 
     781msgid "Statistics sending letters" 
     782msgstr "Statistiques des envois de lettres" 
     783 
     784msgid "Count" 
     785msgstr "Total" 
     786 
    775787#: inc/class.newsletter.admin.php:1261 
    776788#: inc/class.newsletter.admin.php:1262 
     
    846858msgstr ", par" 
    847859 
     860msgid "by" 
     861msgstr "par" 
     862 
     863 
    848864#: inc/class.newsletter.core.php:1092 
    849865#: inc/class.newsletter.core.php:1336 
     
    13771393msgid "Are you sure you want to delete selected letters?" 
    13781394msgstr "Êtes-vous sûr de vouloir supprimer les lettres sélectionnées?" 
     1395 
     1396msgid "Are you sure you want to delete selected subscribers?" 
     1397msgstr "Êtes-vous sûr de vouloir supprimer les abonnés sélectionnés?" 
    13791398 
    13801399#: index.php:883 
  • plugins/newsletter/trunk/locales/fr/resources.php

    r2021 r3006  
    33# This file is part of Newsletter, a plugin for Dotclear. 
    44#  
    5 # Copyright (c) 2009 Benoit de Marne 
     5# Copyright (c) 2009-2011 Benoit de Marne. 
    66# benoit.de.marne@gmail.com 
    77#  
Note: See TracChangeset for help on using the changeset viewer.

Sites map