logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
32 visiteur(s) et 0 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 108 402 093

  • Nb. de membres 8 693
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Bugs, Probs ... »» Balise [pageX]

Nouveau sujet
 Balise [pageX]#26304Répondre

6Contributeur(s)
SylvainAnonymePascalJireckB-Magjpb
3 Modérateur(s)
developpeurjpbJireck
Sylvain Sylvainicon_post
NPDS Forum Extender
-: Problèmes :-
 
SujetBalise [pageX] 
Votre Système d'Exploitation-: Linux  
Votre Package Web-: Apache + Php + MySql  
Votre version de PHP 
Version NPDS (voir statistiques du site)-: REvolution 
Type de problème-: Utilisation  
Votre hébergeur-: Autre(s)  
Votre PrioritéOK, j'attends  
Description du problèmeBonjour,
Je remarque que la balise [pageX] n'accepte qu'un caractère comme X. Plus de caractères provoque des erreurs d'affichage.
Ce qui autorise 9 pages (10 avec le 0). J'ai remarqué que les lettres de l'alphabet sont acceptées ce qui fait 36 pages et que la majuscules et les minuscules sont différenciées ce qui donne 82 pages.
C'est déjà pas mal mais [paget] n'est pas très explicite.
Est-il possible d'avoir droit à plusieurs caractères?
Où se trouve le code de cette balise? je pourrais y jeter un œil.

Merci. 
Inclure la signature
notification par Emailtrue 
..::..
Anonyme Anonymeicon_post
Rien compris à cette demande
Pascal Pascalicon_post
Seul l’alphabet Berbère fait 36 lettres. (82, je ne trouve pas l'algorithme, peut être 36 x 2 + 10 chiffres)
PageX -> http://www.npds.org/static.php?op=runner-npds5.0.txt

Message édité par : Pascal / 19-05-2015 12:59

Sylvain Sylvainicon_post
Oui, tu as raison. Il n'y a que 2x26+10=62 possibilités, quoi que, avec l'utf8...
J'ai bien lu la page que tu indiques. Ils disent bien que X peut être remplacé par UN caractère. Ce serait tellement mieux qu'on puise attribuer n'importe quel nombre à une page...
C'est pour essayer de le faire que je demande où est le code de [pageX].
Ce ne doit pas être bien difficile de lire ce qu'il y a entre [page et ].

Sylvain.
Jireck Jireckicon_post
section .php
Sylvain Sylvainicon_post
Bon, c'est fait.
Ça a été long, mais ça marche.Dans sections.php il a fallut modifier le fonction "viewarticle".

global $numpage;
$numpage=$page;

sert à faire fonctionner le programme de construction des listes de pages (voir http://www.npds.org/viewtopic.php?topic=26307&forum=9).

function viewarticle($artid, $page) {
   global $NPDS_Prefix;
   global $prev, $user;
   global $numpage;
   $numpage=$page;
   if (file_exists("sections.config.php"))
      !include! ("sections.config.php");

   if ($page=="")
      sql_query("update ".$NPDS_Prefix."seccont set counter=counter+1 where artid='$artid'");

   $result_S = sql_query("select artid, secid, title, content, counter, userlevel from ".$NPDS_Prefix."seccont where artid='$artid'");
   list($artid, $secid, $title, $Xcontent, $counter, $userlevel) = sql_fetch_row($result_S);
   list($secid, $secname, $rubid) = sql_fetch_row(sql_query("select secid, secname, rubid from ".$NPDS_Prefix."sections where secid='$secid'"));
   list($rubname) = sql_fetch_row(sql_query("select rubname from ".$NPDS_Prefix."rubriques where rubid='$rubid'"));
   $tmp_auto=explode(",",$userlevel);
   while (list(,$userlevel)=each($tmp_auto)) {
      $okprint=autorisation_section($userlevel);
      if ($okprint) break;
   }
   if ($okprint) {
      $old_title=$title;
         $pindex=substr(substr($page,5),0,-1);
         if ($pindex!="") {$pindex=" - ".translate("Next Page")." ".$pindex;}
         if ($sections_chemin) {
            $title=aff_langue($rubname)." - ".aff_langue($secname)." - ".aff_langue($title)." ".$pindex;
         } else {
            $title=aff_langue($title)." ".$pindex;
         }
         !include!("header.php");
      $title=aff_langue($old_title);

      global $SuperCache;
      if ($SuperCache) {
         $cache_obj = new cacheManager();
         $cache_obj->startCachingPage();
      } else {
         $cache_obj = new SuperCacheEmpty();
      }
      if (($cache_obj->genereting_output==1) or ($cache_obj->genereting_output==-1) or (!$SuperCache)) {
         $words = sizeof(explode(" ", $Xcontent));
         if ($prev==1) {echo "<input class=\"bouton_standard\" type=\"button\" value=\"".translate("Back to console")."\" !onclick!=\"!javascript!:history.back()\" /><br /><br />";}
         if (function_exists("themesection_title")) {
            themesection_title($title);
         } else {
            opentable();
            echo $title;
            closetable();
         }
         opentable();
//         echo "<p align=\"right\">($words ".translate("total words in this text)")."  -  
//         ".translate("read:")." $counter ".translate("times")."    
//         <a href=\"sections.php?op=printpage&artid=$artid\"><img src=\"";
//         if ($ibid=theme_image("box/print.gif")) {$imgtmp=$ibid;} else {$imgtmp="images/print.gif";}
//         echo "$imgtmp\" border=\"0\" alt=\"" . translate("Printer Friendly Page")."\" align=\"center\" /></a></p>";
         echo "<div class=\"separ\"></div>";
         if ($page!="") {
//          $Xcontent=substr($Xcontent,strpos($Xcontent,$page)+7);
            $Xcontent=substr($Xcontent,strpos($Xcontent,$page)+strlen($page));

            $multipage=true;
         } else {
            $multipage=false;}
         $pos_page=strpos($Xcontent,"[page");
         $longueur=mb_strpos($Xcontent,"]",$pos_page)-$pos_page+1;
        if ($pos_page) {
            $pageS=substr($Xcontent,$pos_page,$longueur);
            $Xcontent=substr($Xcontent,0,$pos_page)."<p align=\"center\"><a href=\"sections.php?op=viewarticle&artid=$artid&page=$pageS\" class=\"noir\">".translate("Next Page")."</a></p>";
         } else if($multipage) {
//            $Xcontent.="<p align=\"center\"><a href=\"sections.php?op=viewarticle&artid=$artid\" class=\"noir\">".translate("Top of the article")."</a></p>";
            $Xcontent.="<p align=\"center\"><a href=\"sections.php?op=viewarticle&artid=$artid&page=[page0]\" class=\"noir\">".translate("Top of the article")."</a></p>";
         }
         $Xcontent=aff_code(aff_langue($Xcontent));
         echo meta_lang($Xcontent);
//         echo "<br /><br />";
         echo "<div class=\"separ\"></div>";
//         echo "<br />";

         if ($togglesection)
            !include!_once ("lib/togglediv.class.php");

         $artidtempo=$artid;
         if ($rubname!="Divers") {
            $rowcolor=tablos();
            $rowcolor=tablos();
            echo "<span class=\"noir\"><b>".translate("Back to chapter:")."</b></span>";
            echo "<table width=\"100%\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\" $rowcolor>
            <tr><td><ul><li><a href=\"sections.php?op=listarticles&secid=$secid\" class=\"noir\">".aff_langue($secname)."</a></li></ul></td></tr></table>";

            $result3 = sql_query("select artid, secid, title, userlevel from ".$NPDS_Prefix."seccont where (artid<>'$artid' and secid='$secid') order by ordre");
            $nb_article = sql_num_rows($result3);
            if ($togglesection)
               $toggle = new ToggleDiv(2);
            if ($nb_article > 0) {
//               echo "<br />";
               if ($togglesection)
                  echo $toggle->Img();
               echo "<span class=\"noir\"><b>".translate("Other courses in chapter:")."</b></span>";
               if ($togglesection)
                  echo $toggle->Begin();
               echo "<table width=\"100%\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\" $rowcolor><tr><td><ul>";
               while (list($artid, $secid, $title, $userlevel) = sql_fetch_row($result3)) {
                  $okprint2=autorisation_section($userlevel);
                  if ($okprint2) {
                     echo "<li><a href=\"sections.php?op=viewarticle&artid=$artid\" class=\"noir\">".aff_langue($title)."</a></li>";
                  }
              }
              echo "</ul></td></tr></table>";
              if ($togglesection)
                 echo $toggle->End();
            }
         }
         $artid=$artidtempo;
         $resultconnexe = sql_query("select id2 from ".$NPDS_Prefix."compatsujet where id1='$artid'");
         if (sql_num_rows($resultconnexe) > 0) {
            echo "<br />";
            if ($togglesection)
               echo "<br />".$toggle->Img();
            echo "<span class=\"noir\"><b>".translate("You may be interested in:")."</b></span>";
            if ($togglesection)
               echo $toggle->Begin();
            echo "<table width=\"100%\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\" $rowcolor><tr><td><ul>";
            while(list($connexe) = sql_fetch_row($resultconnexe)) {
               $resultpdtcompat = sql_query("select artid, title, userlevel from ".$NPDS_Prefix."seccont where artid='$connexe'");
               list($artid2, $title, $userlevel) = sql_fetch_row($resultpdtcompat);
               $okprint2=autorisation_section($userlevel);
               if ($okprint2) {
                  echo "<li><a href=\"sections.php?op=viewarticle&artid=$artid2\" class=\"noir\">".aff_langue($title)."</a></li>";
               }
            }
            echo "</ul></td></tr></table>";
            if ($togglesection)
               echo $toggle->End();
         }
         closetable();
      }
      sql_free_result($result_S);
      if ($SuperCache) {
         $cache_obj->endCachingPage();
      }
      !include! ('footer.php');
   } else {
      header("Location: sections.php");
   }
}


Attention, je ne garanti pas le fonctionnement dans toutes les configurations,
notamment l'impression des pages.

Le résultat:
http://busmuli.chez.com/sections.php?choice_user_language=french&op=viewarticle&artid=3&page=[page10]
B-Mag B-Magicon_post
Slt
:b
Moi je dis CHAPEAU!

Cela fait dix ans que je l'attendais ce fils d'Ariane, indispensable sur un site de contenu :b :D :D

Le top des top serait de le faire apparaitre en bas de page sur forme de ligne

je n'arrive pas à retrouver le post que Hotfirenet avait poster sur le sujet il y a tres longtemps

De memoire il parlait d'un Module pagination
retrouvé: en 2007

Message édité par : B-Mag / 27-05-2015 09:40

Sylvain Sylvainicon_post
> Moi je dis CHAPEAU!
Merci B-Mag.

>Le top des top serait de le faire apparaitre en bas de page sur forme de ligne.
Essaye, ce ne doit pas être bien difficile de passer d'une liste verticale à une liste horizontale.

Au fait, on est hors sujet. Ici c'est la numérotation des pages. Le 'fil d'Ariane' c'est là:
http://www.npds.org/viewtopic.php?topic=26307&forum=9
:-)


Sylvain Sylvainicon_post
Au fait, la numérotation des page est dans une zone texte elle peut donc gérer aussi la numérotation romaine 'XXVI' souvent utilisée pour les annexes.

Message édité par : Sylvain / 27-05-2015 17:49


Message édité par : Sylvain / 28-05-2015 09:48

Jireck Jireckicon_post
Super Sylvain
jpb jpbicon_post
Bravo

j'ai implémenté une partie de ton code dans la version alpha14 ...

c'est en cours de test ...

il semble que l'on ai un problème (et que l'on puisse avoir) des problème lié au contenu (html mal formaté...? mais pas sur ) des articles ...

(pourra tu me transmettre par mail ton fichier section.php )
Sylvain Sylvainicon_post
OK.
B-Mag B-Magicon_post
c'est sympa mais il dommage de ne pas voir le nb de page qui compose l'article, comme le faisait le travail de hotfirenet
jpb jpbicon_post
on doit pouvoir lol
B-Mag B-Magicon_post
pour ceux qui ont acces au post

http://www.npds.org/viewtopic.php?topic=22712&forum=42&ancre=1&start=0#4222712181773
jpb jpbicon_post
oui c'était bien e qu'il avait fait bien qu'on est pas besoin de faire de req sql ...

ceci dit c'est inapplicable pour rubrique ou les balise de pages sont noyées dans du texte donc c'est plus complexe ...

quand aux classes on les a dans le framework ..
Sylvain Sylvainicon_post
> dommage de ne pas voir le nb de page qui compose l'article
Dans mon code le nombre total de pages est dans la variable globale $ndepages. Donc il n'y a aucun problème pour l'afficher.

Je rappelle que dans ce code le champ de la balise est un champ texte.
Si dans la rubrique on trouve:
[pageIntroduction]...[pagePage 1]...[pagePage 2]...[pagePage 3]...[pageConclusion]...[pageRemerciements]...[pageIndex]...[pagePage I]...[pagePage IV]...
Le listage des nom de pages donne:
Introduction
Page 1
Page 2
Page 3
Conclusion
Remerciements
Index
Page I
Page IV

Et le code fournit
le nombre totale de pages $ndepages,
la page courante $numpage, qu'il faudrait renommer en $nompagecourante
la page précédente $pageprec,
la page suivante $pageS.
Je pense qu'avec ça on doit pouvoir tout faire.

Attention quand j'ai commencé ce code je n'avais pas tout ça en tête alors il y a des parties qui sont inadaptées à un usage généralisé. Par exemple la première page est appellée "0" ([page0]) alors qu'elle doit être définie par la lecture de la première occurrence de la balise [page], mais c'est très facile à corriger.

Il y a encore le problème du texte avant la première balise qui n'est pas réglé. J'avais détourné le problème en n'en mettant pas. Si on veut un code "idiot proof" il faudra le régler.

Il faudrait tendre vers l'esprit Linux: chaque partie de code = un fonction précise.
Ici on devrait avoir en sortie:
-Nom de chaque page
-première page
-page courante
-page précédente
-nombre totale de pages.

Ya plus qu'à!...

La dernière version se trouve ici:
http://busmuli.chez.com/travail/sections-viewarticle.txt


Message édité par : Sylvain / 26-12-2015 20:10

jpb jpbicon_post
oui pour le nombre de page

ce qui est inquiétant c'est le mb_strpos
sur un site en utf8 cela ne fonctionne pas meme en rajoutant l'encoding en cours il me reste des problème de comptage ...... :-? :-?
jpb jpbicon_post

         $longueur=mb_strpos($Xcontent,']',$pos_page,'iso-8859-1')-$pos_page+1; 



avec ca le comptage semble correcte et ca fonctionne meme si le site est en utf8 MAIS cela ne tolère aucun caractères utf-8 dans le text .....sinon ca déraille