Changeset 7572 in spip-zone


Ignore:
Timestamp:
Nov 26, 2006, 6:05:28 AM (13 years ago)
Author:
patfr@…
Message:
 
Location:
_plugins_/_stable_/qcm
Files:
4 edited
1 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/qcm/lang/qcm_en.php

    r6909 r7572  
    55$GLOBALS[$GLOBALS['idx_lang']] = array(
    66
    7 'qcm_titre' => "MCQ",
     7'qcm_titre' => "Here is an MCQ",
    88
    99'qcm_reponseJuste' => " You were correct!",
  • _plugins_/_stable_/qcm/lang/qcm_fr.php

    r6881 r7572  
    55$GLOBALS[$GLOBALS['idx_lang']] = array(
    66
    7 'qcm_titre' => "Un QCM",
     7'qcm_titre' => "Voici un QCM",
    88
    99'qcm_reponseJuste' => "La réponse est juste",
  • _plugins_/_stable_/qcm/plugin.xml

    r7276 r7572  
    1919  </description>
    2020  <lien>[Mode d'emploi->http://www.spip-contrib.net/Un-QCM-dans-vos-articles]</lien> <!-- URI de documentation -->
    21   <options>qcm_options.php</options>
     21  <fonctions>qcm_fonctions.php</fonctions>
     22  <options></options>
    2223  <prefix>qcm</prefix>
    2324  <pipeline>
     
    3031  </pipeline>
    3132  <pipeline>
    32         <nom>pre_typo</nom>
     33        <nom>pre_propre</nom>
     34        <inclure>qcm_pipelines.php</inclure>
     35  </pipeline>
     36  <pipeline>
     37        <nom>post_propre</nom>
    3338        <inclure>qcm_pipelines.php</inclure>
    3439  </pipeline>
  • _plugins_/_stable_/qcm/qcm_fonctions.php

    r7471 r7572  
    11<?php
    22
    3 if (!function_exists("introduction")) {
     3// filtre qui evite d'afficher le résultat obtenu par certains plugins
     4// grace aux espions : <!-- PLUGIN-DEBUT --> et <!-- PLUGIN-FIN -->
     5// voir aussi : backend.html, backend-breves.html
    46
    5         function introduction ($type, $texte, $chapo='', $descriptif='') {
    6                 switch ($type) {
    7                         case 'articles':
    8                                 if ($descriptif)
    9                                         return propre($descriptif);
    10                                 else if (substr($chapo, 0, 1) == '=')   // article virtuel
    11                                         return '';
    12                                 else
    13                                         return PtoBR(propre(supprimer_tags(couper_intro(pas_de_qcm_introduction($chapo."\n\n\n".$texte), 500))));
    14                                 break;
    15                         case 'breves':
    16                                 return PtoBR(propre(supprimer_tags(couper_intro(pas_de_qcm_introduction($texte), 300))));
    17                                 break;
    18                         case 'forums':
    19                                 return PtoBR(propre(supprimer_tags(couper_intro(pas_de_qcm_introduction($texte), 600))));
    20                                 break;
    21                         case 'rubriques':
    22                                 if ($descriptif)
    23                                         return propre(pas_de_qcm_introduction($descriptif));
    24                                 else
    25                                         return PtoBR(propre(supprimer_tags(couper_intro(pas_de_qcm_introduction($texte), 600))));
    26                                 break;
    27                 }
    28         }
    29 }
    30 
    31 function pas_de_qcm_introduction($texte) {
     7if (!function_exists("pas_de_plugin")) {       
     8 function pas_de_plugin($texte){
     9                return preg_replace(",<!-- PLUGIN-DEBUT -->.*<!-- PLUGIN-FIN -->,UimsS", '', $texte);
     10 }
     11}
     12/*
     13function pas_de_plugin($texte) {
    3214        $texte = preg_replace("/<qcm>[\s\n\t]*\nT\s+([^\n]*)/", "[\\1]\n<qcm>", $texte);
    3315        $texte = preg_replace(',<(qcm)>(.*)<\/\1>,UimsS', '', $texte);
    3416        return $texte;
    3517}
     18*/
    3619?>
  • _plugins_/_stable_/qcm/qcm_pipelines.php

    r7276 r7572  
    1010                        dans un tableau et retourne le code HTML du QCM
    1111  Mode d'emploi          :      http://www.spip-contrib.net/Un-QCM-dans-vos-articles
     12 
     13  Titre du QCM :
     14        - soit sur une ligne de la forme 'T Voici mon titre' placee entre les
     15          balises <qcm> et </qcm>
     16        - soit entre les balises <qcm-titre> et </qcm-titre>
     17        - soit entre les balises <intro> et </intro>
     18                (Spip s'en servira egalement en cas d'absence de descriptif pour
     19                calculer la balise #INTRODUCTION utilisee pour resumer l'article)
     20
     21  Calcul de #INTRODUCTION : si introduction() n'est pas surchargee, Spip cherche
     22  d'abord le descriptif, puis en cas d'echec, le contenu du texte situé entre
     23  les balises <intro> et </intro>. En dernier lieu, Spip utilise les 500 premiers
     24  caractères du chapeau suivi du texte.
     25  Attention donc : pour ne pas faire apparaitre le contenu du QCM avec les
     26  reponses, il vaut mieux penser à bien définir :
     27        - soit le descriptif de l'article
     28        - soit une introduction placee entre les balises <intro> et </intro>
     29                (utiliser dans ce cas les balises <qcm-titre> et </qcm-titre>
     30                pour definir le titre du QCM)
     31        - soit le titre du QCM place entre les balises <intro> et </intro>
     32 
    1233*/
    1334 
    1435 define(_QCM_DEBUT, '<qcm>');
    1536 define(_QCM_FIN, '</qcm>');
     37 define(_QCM_TITRE_DEBUT, '<qcm-titre>');
     38 define(_QCM_TITRE_FIN, '</qcm-titre>');
    1639 
    1740// cette fonction remplit le tableau $qcms sur la question $indexQCM
     
    2447      case 'T' :
    2548                // On extrait le titre
    26                 $titreQCM=substr($li,1);
     49                $titreQCM=propre(substr($li,1));
    2750                break;
    2851
     
    78101} // function
    79102
    80 // cette fonction retourne true si un qcm est trouve, false dans le cas contraire
     103// cette fonction retourne le texte entre deux balises si elles sont presentes
     104// et false dans le cas contraire
     105function qcm_recupere_le_titre(&$chaine, $ouvrant, $fermant) {
     106  // si les balises ouvrantes et fermantes ne sont pas presentes, c'est mort
     107  if (strpos($chaine, $ouvrant)===false || strpos($chaine, $fermant)===false) return false;
     108  list($texteAvant, $suite) = explode($ouvrant, $chaine, 2);
     109  list($texte, $texteApres) = explode($fermant, $suite, 2);
     110  // on supprime les balises de l'affichage...
     111  $chaine = $texteAvant.'<!QCM-DEBUT-#0>'.$texteApres;
     112  return trim($texte);
     113}
     114
     115
     116// cette fonction modifie $chaine et retourne true si un qcm est trouve, false dans le cas contraire
    81117function qcm_recupere_une_question(&$chaine, &$indexQCM, &$titreQCM) {
    82118  global $qcms;
     
    180216        $indexQCM = intval($eregResult[1]);
    181217        list($texteAvant, $texteApres) = explode($eregResult[0], $chaine, 2);
    182         $chaine = "$texteAvant<!-- QCM-DEBUT #$indexQCM -->\n"
     218        $chaine = "$texteAvant<!QCM-DEBUT-#$indexQCM>\n"
    183219                . qcm_affiche_la_question($indexQCM, isset($_POST["var_correction"]), $gestionPoints)
    184                 . "<!-- QCM-FIN #$indexQCM -->\n"
     220                . "<!QCM-FIN-#$indexQCM>\n"
    185221                . qcm_inserer_les_qcm($texteApres, $gestionPoints);
    186222  }
     
    194230  // initialisation 
    195231  global $qcms, $qcm_score;
    196   $titreQCM = _T('qcm:qcm_titre');
     232  $titreQCM = false;
    197233  $indexQCM =  $qcm_score = 0;
    198234  $qcms['nbquestions'] = $qcms['totalscore'] = $qcms['totalpropositions'] = 0;
    199235 
     236  // on cherche les questions
    200237  while (qcm_recupere_une_question($chaine, $indexQCM, $titreQCM)) {
    201238    $qcms['totalpropositions'] +=  count($qcms[$indexQCM]['propositions']);
     
    207244  $gestionPoints = $qcms['totalscore']<>$qcms['nbquestions'];
    208245
     246  // trouver un titre, coute que coute...
     247  if (!$titreQCM) $titreQCM = qcm_recupere_le_titre($chaine, _QCM_TITRE_DEBUT, _QCM_TITRE_FIN);
     248  if (!$titreQCM) $titreQCM = qcm_recupere_le_titre($chaine, '<intro>', '</intro>');
     249  if (!$titreQCM) $titreQCM = _T('qcm:qcm_titre');
     250 
    209251  // reinserer les qcms mis en forme
    210252  $chaine = qcm_inserer_les_qcm($chaine, $gestionPoints);
     
    224266                                . '<div class="spip_qcm_bouton_corriger" align="right">[ <a href="'
    225267                                . parametre_url(self(),'var_mode','recalcul').'">'._T('qcm:qcm_reinitialiser').'</a> ]</div>';
    226      // unset($_POST["var_correction"]);
    227268  }
    228   $chaine = str_replace('<!-- QCM-DEBUT #0 -->', $tete.'<!-- QCM-DEBUT #0 -->', $chaine);
    229   $chaine = str_replace('<!-- QCM-FIN #'.($indexQCM-1).' -->', $pied.'</div>', $chaine);
     269 
     270  // introduire l'entete et le pied
     271  $chaine = preg_replace(',(<!QCM-DEBUT-#0>),', $tete."\\1", $chaine, 1);
     272  $chaine = str_replace($temp='<!QCM-FIN-#'.($indexQCM-1).'>', $temp.$pied.'</div>', $chaine);
    230273
    231274  unset($qcms);
    232   return $chaine;
     275  return "<!PLUGIN-DEBUT>$chaine<!PLUGIN-FIN>";
    233276}
    234277
     
    262305}
    263306
    264 function qcm_pre_typo($texte) {
     307function qcm_pre_propre($texte) {
    265308        return qcm_qcm($texte);
    266309}       
    267310
     311function qcm_post_propre($texte) {
     312        return preg_replace(',<!((QCM|PLUGIN)-(DEBUT|FIN)(-#[0-9]+)?)>,UimsS', '<!-- \\1 -->', $texte);
     313}       
     314
     315
    268316?>
Note: See TracChangeset for help on using the changeset viewer.