12

Fil d'une campagne

BD

Ajoutez la valeur campaign au champ thread_type de la table thread :

ALTER TABLE `izendsms_thread` CHANGE `thread_type` `thread_type` ENUM('thread','folder','story','book','rss','newsletter','campaign');

Ajoutez la valeur sms au champ content_type de la table node_content :

ALTER TABLE `izendsms_node_content` CHANGE `content_type` `content_type` ENUM('text','file','download','infile','youtube','longtail','sms');

Créez la table content_sms :

CREATE TABLE `izendsms_content_sms` (
  `content_id` INT(10) UNSIGNED NOT NULL,
  `locale` enum('en','fr') NOT NULL DEFAULT 'fr',
  `text` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `izendsms_content_sms` ADD PRIMARY KEY (`content_id`,`locale`);
ALTER TABLE `izendsms_content_sms` MODIFY `content_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
Configuration

Dans le fichier config.inc, ajoutez le type de fil campaign au paramètre $supported_threads :

  1. global $supported_threads;
  2.  
  3. $supported_threads=array('thread', 'folder', 'story', 'book', 'rss', 'newsletter', 'campaign'); // 'thread', 'folder', 'story', 'book', 'rss', 'newsletter'

Ajoutez la description du contenu sms au paramètre $contents_model :

  1. global $contents_model, $supported_contents, $limited_contents;
  2.  
  3. $contents_model = array(
  4.     'text'      =>  array('text' => array('type' => 'string', 'null' => true), 'eval' => array('type' => 'boolean', 'default' => false)),
  5.     'infile'    =>  array('path' => array('type' => 'string', 'null' => true)),
  6.     'download'  =>  array('name' => array('type' => 'string', 'null' => true), 'path' => array('type' => 'string', 'null' => true)),
  7.     'file'      =>  array('path' => array('type' => 'string', 'null' => true), 'start' => array('type' => 'number', 'default' => 0), 'end' => array('type' => 'number', 'default' => 0), 'format' => array('type' => 'string', 'null' => true), 'lineno' => array('type' => 'boolean', 'default' => true)),
  8.     'youtube'   =>  array('id' => array('type' => 'string', 'null' => true), 'width' => array('type' => 'number', 'default' => 0), 'height' => array('type' => 'number', 'default' => 0), 'miniature' => array('type' => 'string', 'null' => true), 'title' => array('type' => 'string', 'null' => true), 'autoplay' => array('type' => 'boolean'), 'controls' => array('type' => 'boolean'), 'fs' => array('type' => 'boolean'), 'rel' => array('type' => 'boolean'), 'theme' => array('type' => 'enum', 'default' => 'dark')),
  9. //  'longtail'  =>  array('file' => array('type' => 'string', 'null' => true), 'image' => array('type' => 'string', 'null' => true), 'width' => array('type' => 'number', 'default' => 0), 'height' => array('type' => 'number', 'default' => 0), 'icons' => array('type' => 'boolean'), 'skin' => array('type' => 'string', 'null' => true), 'controlbar' => array('type' => 'enum', 'default' => 'none'), 'duration' => array('type' => 'number', 'default' => 0), 'autostart' => array('type' => 'boolean'), 'repeat' => array('type' => 'boolean')),
  10.     'sms'       =>  array('text' => array('type' => 'string', 'null' => true)),
  11. );

Ajoutez le type sms au paramètre $supported_contents :

  1. $supported_contents=array('text', 'infile', 'download', 'file', 'youtube', 'sms');  // 'text', 'infile', 'download', 'file', 'youtube', 'longtail'

Limitez les types de contenus pour un fil de type campaign à sms en éditant le paramètre $limited_contents :

  1. $limited_contents=array('rss' => array('text'), 'newsletter' => array('text'), 'campaign' => array('sms'));
Code

Ajoutez l'option campaign au sélecteur de type de fil dans la vue editing/threadeditsummary en français et en anglais :

  1. <?php elseif ($type == 'campaign'): ?>
  2. <option value="campaign"<?php if ($thread_type == 'campaign'): ?> selected="selected"<?php endif; ?>>Campagne</option>
  3. <?php endif; ?>
  1. <?php elseif ($type == 'campaign'): ?>
  2. <option value="campaign"<?php if ($thread_type == 'campaign'): ?> selected="selected"<?php endif; ?>>Campaign</option>
  3. <?php endif; ?>

Ajoutez l'option campaign au sélecteur de type de fil dans la vue editing/threadeditall en français et en anglais :

  1. <?php elseif ($type == 'campaign'): ?>
  2. <option value="campaign"<?php if ($new_thread_type == 'campaign'): ?> selected="selected"<?php endif; ?>>Campagne</option>
  3. <?php endif; ?>
  1. <?php elseif ($type == 'campaign'): ?>
  2. <option value="campaign"<?php if ($new_thread_type == 'campaign'): ?> selected="selected"<?php endif; ?>>Campaign</option>
  3. <?php endif; ?>

Ajoutez le traitement du type de contenu sms dans la vue editing/nodecontenteditor en français et en anglais :

  1. <?php elseif ($type == 'sms'): ?>
  2. <option value="sms" <?php echo $selected == 'sms' ? 'selected="selected"' : ''; ?>>SMS</option>
  3. <?php endif; ?>

Ajoute l'option sms au sélecteur de type de contenu.

  1.     $content_sms_text='';

Initialise la variable contenant le texte du SMS avant d'extraire les données collectées par le bloc nodecontenteditor.

  1. <?php case 'sms': ?>
  2. <label>SMS&nbsp;:</label>
  3. <?php break; ?>

Affiche le label du contenu.

  1. <?php case 'sms': ?>
  2. <textarea id="content_sms_text_<?php echo $i; ?>" name="content_sms_text[<?php echo $i; ?>]" cols="80" rows="5"><?php echo htmlspecialchars($content_sms_text, ENT_COMPAT, 'UTF-8'); ?></textarea>
  3. <?php break; ?>

Affiche le champ de saisie du texte du SMS.

Ajoutez l'affichage d'un contenu de type sms à la vue nodecontent :

  1.         case 'sms':
  2.             $text = $c['text'];
  3.             if ($text) {
  4.                 echo '<div class="sms">', PHP_EOL;
  5.                 echo '<p>', htmlspecialchars($text, ENT_COMPAT, 'UTF-8'), '</p>', PHP_EOL;
  6.                 echo '</div>', PHP_EOL;
  7.             }
  8.             break;

Ajoutez la préparation de paramètres de la vue pour un contenu de type sms dans le bloc nodecontent :

  1.                 case 'sms':
  2.                     $text=$c['content_sms_text'];
  3.                     $contents[] = compact('type', 'text');
  4.                     break;
Test

Connectez-vous en tant qu'administrateur. Naviguez dans l'éditeur jusqu'à la liste des fils. Créez un fil du type Campagne avec le titre Bar Foo.

NOTE : Ce fil contient les campagnes gérées par un client. Dans le chapitre suivant, nous allons le créer automatiquement dès l'enregistrement d'un nouvel utilisateur.

Éditez le fil Bar Foo.

Créez un contenu avec le titre Le moteur web. Éditez-le.

Entrez Première campagne de promotion d'iZend auprès des éditeurs de logiciels comme extrait et le mot clé iZend moteur web dans le nuage.

Ajoutez un contenu du type SMS.

Tapez Créez votre site multimédias en quelques minutes avec iZend - Le moteur web : http://www.izend.org comme texte du SMS.

un type # ou le #

ignoré

le contenu

Affichez le noeud.

Créez votre site multimédias en quelques minutes avec iZend - Le moteur web : http://www.izend.org

Git
  1. /izendsms.com
    1. blocks
      1. nodecontent.php
    2. includes
      1. config.inc
    3. views
      1. nodecontent.phtml
      2. en
        1. editing
          1. nodecontenteditor.phtml
          2. threadeditall.phtml
          3. threadeditsummary.phtml
      3. fr
        1. editing
          1. nodecontenteditor.phtml
          2. threadeditall.phtml
          3. threadeditsummary.phtml

Commettez cette version :

$ git status
$ git add blocks/nodecontent.php includes/config.inc views/en/editing/nodecontenteditor.phtml views/en/editing/threadeditall.phtml views/en/editing/threadeditsummary.phtml views/fr/editing/nodecontenteditor.phtml views/fr/editing/threadeditall.phtml views/fr/editing/threadeditsummary.phtml views/nodecontent.phtml
$ git commit -m'Adds thread type campaign'

IMPORTANT : Éditez le connecteur à la BD défini dans le fichier includes/db.inc. Suivez les instructions dans le fichier SMS pour mettre à jour la BD.

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].