38

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','sms');

Créez la table content_sms :

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

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

  1. $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. $contents_model = array(
  2.     'text'      =>  array('text' => array('type' => 'string', 'null' => true), 'eval' => array('type' => 'boolean', 'default' => false)),
  3.     'infile'    =>  array('path' => array('type' => 'string', 'null' => true)),
  4.     'download'  =>  array('name' => array('type' => 'string', 'null' => true), 'path' => array('type' => 'string', 'null' => true)),
  5.     '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)),
  6.     'youtube'   =>  array('id' => array('type' => 'string', 'null' => true), 'width' => array('type' => 'number', 'default' => 0), 'height' => array('type' => 'number', 'default' => 0), 'center' => array('type' => 'boolean'), 'miniature' => array('type' => 'string', 'null' => true), 'title' => array('type' => 'string', 'null' => true), 'autoplay' => array('type' => 'boolean')),
  7.     'sms'       =>  array('text' => array('type' => 'string', 'null' => true)),
  8. );

Ajoutez le type sms au paramètre $supported_contents :

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

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 après l'option newsletter au sélecteur de type de fil dans la vue editing/threadeditsummary en français et en anglais :

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

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

  1. <?php elseif ($type == 'newsletter'): ?>
  2. <option value="newsletter"<?php if ($new_thread_type == 'newsletter'): ?> selected="selected"<?php endif; ?>>Infolettre</option>
  3. <?php elseif ($type == 'campaign'): ?>
  4. <option value="campaign"<?php if ($new_thread_type == 'campaign'): ?> selected="selected"<?php endif; ?>>Campagne</option>
  5. <?php endif; ?>
  1. <?php elseif ($type == 'newsletter'): ?>
  2. <option value="newsletter"<?php if ($new_thread_type == 'newsletter'): ?> selected="selected"<?php endif; ?>>Newsletter</option>
  3. <?php elseif ($type == 'campaign'): ?>
  4. <option value="campaign"<?php if ($new_thread_type == 'campaign'): ?> selected="selected"<?php endif; ?>>Campaign</option>
  5. <?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 == 'youtube'): ?>
  2. <option value="youtube" <?php echo $selected == 'youtube' ? 'selected="youtube"' : ''; ?>>YouTube</option>
  3. <?php elseif ($type == 'sms'): ?>
  4. <option value="sms" <?php echo $selected == 'sms' ? 'selected="selected"' : ''; ?>>SMS</option>
  5. <?php endif; ?>

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

  1.     $content_sms_text='';
  2.     extract($c);    /* content_id content_number content_ignored content_type ... */

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; ?>
  4. <?php endswitch; ?>

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 if ($content_sms_text): ?><?php echo htmlspecialchars($content_sms_text, ENT_COMPAT, 'UTF-8'); ?><?php endif; ?></textarea>
  3. <?php break; ?>
  4. <?php endswitch; ?>

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. Ajoutez un fil du type Campagne avec le titre BarFoo.

NOTE : Ce fil contient les campagnes gérées par un client. Dans un chapitre ultérieur, il sera créé automatiquement dès l'enregistrement d'un nouvel utilisateur.

Éditez le fil BarFoo.

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 les mots clés iZend moteur web dans le nuage. Décochez toutes les options.

Appuyez sur Éditer.

Ajoutez un contenu du type SMS.

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

un type # ou le #

ignoré

le contenu

Appuyez sur Modifier.

Affichez le noeud.

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

Cliquez sur le clavier pour revenir en mode édition.

Appuyez sur le drapeau pour afficher la version en anglais.

Entrez le titre The web engine.

Entrez First promotional campaign of iZend for software editors comme extrait et les mots clés iZend web engine dans le nuage. Appuyez sur Éditer.

Entrez Create your multimedia website in a few minutes with iZend - The web engine: https://www.izend.org comme texte du SMS. Appuyez sur Modifier.

Affichez le noeud.

Create your multimedia website in a few minutes with iZend - The web engine: https://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

Commitez cette version :

$ git status
$ git add --update
$ git commit -m'Adds thread type campaign'

Espace client, Affichage des campagnes

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].