Skip to content
Extraits de code Groupes Projets
  1. déc. 16, 2010
  2. déc. 09, 2010
    • cerdic's avatar
      report merge de r16615 · 81e9b407
      cerdic a rédigé
      La constante _EXTENSION_SQUELETTE qui indique l'extension d'un
      sauelette avait beaucoup trop d'occurrences dans le code,
      ce qui ne permet pas facilement de mettre en place une strategie
      ou plusieurs extensions seraient possibles simultanement.
      Il n'y a besoin que d'une seule occurrence en fait,
      dans la fonction {{{trouve_modele}}} sur laquelle toutes les autres se
      rabattent.
      
      Pour le decompilateur, il faut se baseru sur l'extension du
      fichier de depart pour retrouver l'information, et n'avoir
      qu'un seul point d'entree poureviter de gerer une valeur par defaut.
      
      Pour le debusqueur, on donne le nom du squelette sans l'extension
      puisque justement il est possible qu'il y ait le choix.
      81e9b407
  3. sept. 18, 2010
  4. août 20, 2010
  5. mars 13, 2010
  6. fév. 17, 2010
  7. fév. 10, 2010
  8. jan. 04, 2010
  9. nov. 29, 2009
  10. nov. 12, 2009
  11. août 21, 2009
  12. août 11, 2009
    • esj's avatar
      Bon, il y avait tout ce qu'il faut pour gérer les notes proprement, mais un... · 3f8df34d
      esj a rédigé
      Bon, il y avait tout ce qu'il faut pour gérer les notes proprement, mais un bout seulement dans plein d'endroits différents, jamais le même. Donc, on enrichit 'l'interface de la fonction surchargeable inc_notes_dist, qui sait empiler et dépiler les contextes à la demande, sans en oublier. Le test unitaire donne la mêmeche qu'en 2.0 (mais n'est pas à jour lui-même). 
      3f8df34d
  13. août 09, 2009
    • esj's avatar
      Lors d'une inclusion par {{{#INCLURE}}}, le débusqueur donne à présent le... · 20677a77
      esj a rédigé
      Lors d'une inclusion par {{{#INCLURE}}}, le débusqueur donne à présent le squelette incluant et le numéro de ligne où cette balise utilise le fond fautif. Particulièrement utile lorsque plusieurs {{{#INCLURE}}} sont susceptibles d'être responsable de l'erreur.
      
      Pour parvenir à ça, il a fallu retarder la dénonciation de squelette inconnu,
      qui n'est plus assurée par public_styliser mais par récuperer_fond. Il s'ensuit que les fonctions public_parametrer et evaluer_fond (sur le trajet entre les deux fonctions susnommées) voient la spécification de leur résultat légèrement changer. Elles retournent:
          * False si le squellette existe mais a provoqué des erreurs de compilation (déjà signalées au moment de retourner le résultat);
          * la chaîne vide si le squelette est inconnu (et aucune erreur n'est encore signalée);
          * la page attendue si tout s'est bien passé (rien de changé ici).
      
      Dans le deuxième cas, la fonction recuperer_fond regarde si son troisième argument (les options) contient un index nommé 'compil', qui lui sert alors à localiser l'erreur. Pour l'instant seul {{{#INCLURE}}} fournit cette information. Affaire à suivre.
      20677a77
  14. août 04, 2009
  15. juil. 28, 2009
  16. juin 14, 2009
  17. avr. 19, 2009
    • cerdic's avatar
      correction d'un manque dans l'api de styliser : · 36c034e2
      cerdic a rédigé
      passer le contexte au lieu du seul id_rubrique qui sera calcule directement dans styliser
      du coup le contexte peut etre passe au pipeline, ce qui permet la stylisation des objets en fonction d'information qui lui sont propres
      36c034e2
  18. fév. 21, 2009
  19. déc. 23, 2008
    • esj's avatar
      Bonne année vieille branche! · d222863d
      esj a rédigé
      Dépot obtenu par:
      
      {{{
      for i in $(grep  -l '(c) 2001-' * */* */*/* 2> /dev/null)
      do
      sed 's/(c) 2001-2008/(c) 2001-2009/' $i > /tmp/x
      mv /tmp/x $i
      done
      }}}
      d222863d
  20. déc. 10, 2008
  21. nov. 24, 2008
  22. sept. 24, 2008
  23. sept. 07, 2008
    • esj's avatar
      Duplication dans le cache et encore les valeurs d'office pour les dates. · 267785d4
      esj a rédigé
      [12552] avait éliminé une des raisons des doublons dans le cache, mais il y en avait deux autres:
      
       * les valeurs d'office pour les dates, à force d'êtré déplacées en amont impactaient à présent sur le nom du cache; on revient à la sémantique antérieure sans possibilité de critère conditionnels dessus même avec {{{INCLURE*}}} (qui ne se différence donc de {{{INCLURE}}} que pour {{{ lang }}}); seul changement: l'insertion est beaucoup plus en aval, pour qu'un jour ce soit intégré au compilateur, c'est visiblement la seule solution propre.
      
       * lier le md5 du nom du cache à la globale {{{ $fond }}} interdit de fait tout partage de cache entre deux pages de fond différent incluant un même squelette; ce choix ne doit pas être imposé par la fonction standard. Au besoin, on peut toujours concaténer cette valeur maintenant ignorée à la globale {{{ marqueur}}}.
      
      Ca ne suffit cependant pas à revenir à l'absence de doublons dans la cache comme en 1.9, car la fonction {{{balise_FORMULAIRE__dyn}}}, en prenant en charge toutes les constructions de contexte pour balises dynamiques, a rajouté dedans des valeurs qui ne servent pas toujours. Il faut remplacer {{{ array_merge }}} par une opération plus précise, fondée sur un nommage commun à tous les formulaires CVT.
      267785d4
  24. août 29, 2008
    • esj's avatar
      Encore un peu de ménage dans l'interface au compilateur: · 2cb6c290
      esj a rédigé
      	- public/parametrer determine le squelette, applique son code compilé et retourne la page (seul changement: il ne détermine plus le nom)
      
      	- public/composer determine le nom de la fonction principale du code compilé, le charge et retourne en valeur un tableau formé de ce nom et ce code.
      
      Par ailleurs, les fonctions d'appel à SQL présentes dans le code compilé sont mises dans un nouveau fichier, public/quete.
      
      Tout ça devrait permettre aux modèles de charger ces fonctions sans charger les fonctions de détermination de squelette, et de charger les deux fichiers ci-desss par charger_fonction uniquement.
      2cb6c290
  25. août 28, 2008
    • amemo's avatar
      autodoc · 6b555850
      amemo a rédigé
      6b555850
    • esj's avatar
      La fonction {{{evaluer_fond}}} avait 4 arguments dont le 3e n'était pas... · 49861e5e
      esj a rédigé
      La fonction {{{evaluer_fond}}} avait 4 arguments dont le 3e n'était pas utilisé, et du coup plusieurs de ses appels donnaient comme 3e argument ce qui se voulait le dernier (le nom du serveur). On corrige en éliminant le paramètre superflu (attention pour ceux qui avaient bon donc).
      
      Par ailleurs, cette fonction ressemble fortement à une autre, {{{recuperer_fond}}}, qui n'est vraiment indispensable qu'au code compilé. En conséquence, {{{recuperer_fond}}} migre dans le fichier chargé uniquement en cas d'exécution de squelette et ne doit plus être utilisée afin de clarifier l'interface aux fonctions du compilateur.
      
      Ce ménage permet de réduire quelques inclusions superflues, et de commencer à retrouver un découpage plus fonctionnel du compilateur: {{{public/assembler}}} ne devrait être chargé que pour les pages initiales, Ajax ou non, qui doivent traiter les variables d'URL, les autres pages devant pouvoir ne charger que {{{public/parametrer}}}. On n'y est pas encore, mais on s'en approche.
      49861e5e
    • esj's avatar
      Amélioration de la mise en squelette des anciennes actions ical et rss, afin... · baa8f601
      esj a rédigé
      Amélioration de la mise en squelette des anciennes actions ical et rss, afin de retrouver la même clé qu'auparavant, et éviter de charger inc/acces à chaque exécution de squelette. Le pb signalé dans [12404] est donc évacué.
      baa8f601
    • esj's avatar
      Co-existence de plusieurs {{{type_urls}}} au cours du même processus. · 73a2ed60
      esj a rédigé
      La fabrication des URL publiques des entités a toujours été modulable, mais pas dans un même processus, ce qui posait deux limitations:
      
      - la production de ces URLs publiques à partir de l'espace privé oblige à passer par un script de redirection, couteux, obscur et peu extensible;
      
      - dans le cas du multi-site, impossible d'avoir autant de nommages différents que de sites, les fonctions produisant les URLs portant le même nom dans tous les système de nommage.
      
      Cette restriction est à présent levée, apparamment sans problème de compatibilité:
      
      Les fonctions {{{generer_url_{article, auteur, breve, mot, rubique, site} }}} sont déclarées obsolètes et remplacées par:
      
      {{{ function generer_url_entite($id='', $entite='', $args='', $ancre='', prive='', $type='') }}}
      
      un appel comme {{{ generer_url_article(id, arg, ancre) }}} s'écrit à présent {{{{ generer_url_entite(id, 'article', arg, ancre) }}}. Cette transformation étant prise en charge par {{{vieilles_def.php}}}, tandis que le code de SPIP a déjà évacué ces appels.
      
      Le 5e  argument permet de forcer la production d'une URL de lecture alors qu'on est dans l'espace d'écriture et inversement. Le 6e argument permet de forcer l'utilisation d'un jeu d'URL différent de celui spécifié par la meta {{{type_urls}}}. Ces argument rend superflu la fonction {{{charger_generer_url}}} qui disparait complètement.
      
      La fonction {{{generer_url_entite}}} ne fait que lire le fichier X ainsi spécifier puis passe la main soit aux fonctions {{{generer_url_ecrire_article}}} etc dans le cas des URLs en écriture, soit sinon à la fonction {{{urls_}}}X{{{_dist}}}. Celle-ci a un double rôle: si son deuxième argument est numérique (ou une chaîne interprétable ainsi) elle produit l'URL de l'entité SQL ainsi désignée,  à sa manière (propre, arbo, html...); si son deuxième argument est une chaîne, c'est une URL à partir de laquelle la fonction retrouve la table SQL et le numéro de l'entité (comme auparavant).
      
      Pour ceux qui ont des jeux de fonctions {{{generer_url_...}}} personnels, il est normalement pas nécessaire de le réécrire pour en disposer, mais c'est préférable pour qu'il puisse co-exister avec les autres au besoin.
      
      A noter qu'on ne peut actuellement faire co-exister Propre et Arbo car elles déclarent le même pipeline ({{{creer_chaine_url}}}), il faudrait revoir ce code.
      
      Je laisse en test un moment avant de basculer sur la branche 2, d'autant qu'il faudrait statuer sur le fichier {{{tourner}}} qui au bord du fork.
      73a2ed60
  26. août 26, 2008
    • esj's avatar
      Introduction dans les squelettes {{{prive/rss}}} du contrôle de sécurité, et... · 9645e3c3
      esj a rédigé
      Introduction dans les squelettes {{{prive/rss}}} du contrôle de sécurité, et changement des liens des boutons donnant un flux RSS privé qui appellent à présent directement un squelette ({{{prive/rss.html}}}), et non plus le script {{{action/rss.php}}}. Réécriture de celui-ci, qui accepte toujours les anciens liens et leur communique le résultat attendu malgré ces changements, au prix d'un deuxième contrôle de sécurité. Mais il faudrait évacuer complètement ce script et retourner une redirection définitive, pas triviale car le hash n'est pas le même entre les deux versions.
      9645e3c3
  27. août 24, 2008
  28. août 07, 2008
    • amemo's avatar
      autodoc · 606cf1ac
      amemo a rédigé
      606cf1ac
    • esj's avatar
      Le validateur en boucle ne pouvait pas s'appliquer sur les répertoires des... · f3bf27c2
      esj a rédigé
      Le validateur en boucle ne pouvait pas s'appliquer sur les répertoires des squelettes de l'espace privé à cause d'une sécurité trop stricte. Du coup:
      
      	- la fonction surchargeable {{{public_composer}}} retourne en valeur le code compilé du squelette, plutôt qu'un résultat mal défini (ça aurait dû être fait depuis longtemps);
      
      	- au passage, elle ne teste plus l'existence d'un fichier associé au squelette de suffixe {{{fonctions.php3}}}, seulement {{{_fonctions.php}}};
      
      	- le validateur exploite directement ce résultat pour calculer la page, ce qui évite le contrôle de sécurité excessif induit par le {{{recuperer_page}}} sur soi-même antérieur (ça garantit aussi qu'on tombera bien sur ce squelette, et c'est plus rapide)
      
      Cette extension du validateur a permis d'exécuter
      
      {{{./?exec=valider_xml&var_url=../prive/formulaires&ext=html}}}
      
      et de détecter des erreurs, certaines corrigées par les dépots suivants, mais d'autres posent problème:
      
      	- le formulaire {{{menu_lang}}} n'a pas de {{{div}}} après {{{form}}} comme le veut XHTML strict, mais la rajouter l'empêche son AJAX de fonctionner (pas corrigé, à revoir);
      
      	- les formulaires {{{editer_mot}}} et {{{editer_site}}} annoncent un {{{id}}} par un {{{label}}} mais celui-ci ne figure pas directement dans le formulaire, c'est une inclusion ou un filtre qui le donne, et le validateur croit bien faire en signalant l'absence, et il n'a pas vraiment tort sur le plan méthodologique; il faudrait les reconcevoir.
      
      Pour le validateur lui-même, il reste encore à fournir une URL correcte pour la validation d'un unique squelette privé. Là aussi un peu de méthode ne ferait pas de mal:
      
      	- ne pas utiliser le paramètre {{{action}}} dans un environnement de squelette privé, ça clashe avec le répertoire public {{{action}}}, car le validateur n'a pas cette notion d'espace;
      
      	- indiquer qq part les types des arguments (id_* ==> nombre etc).
      
      Un tâche à ouvrir, car ça prendra des mois.
      f3bf27c2
  29. août 01, 2008
    • esj's avatar
      La balise EXPOSE n'était pas opérationnelle en multi-base, c'est réparé.... · c4f7b682
      esj a rédigé
      La balise EXPOSE n'était pas opérationnelle en multi-base, c'est réparé. Incidemment, les fonctions {{{quete_*}}} qui ne prévoyaient pss le paramètre optionnel indiquant la base le prévoient à présent. La fonction {{{calculer_hierarchie}}} disparaît, n'étant utilisée que pour cette balise, et donc de manière lacunaire.
      c4f7b682
  30. juil. 08, 2008
    • marcimat's avatar
      Suppression (revert) des fonctions de cache sur sql_getfetsel et... · 27621f71
      marcimat a rédigé
      Suppression (revert) des fonctions de cache sur sql_getfetsel et sql_fetsel_cache introduites par [11842] et [12002].
      
      Synthèse de petites discussions :
      - Ces fonctions avaient été introduites car la compilation de squelettes peut induire de nombreuses requetes identiques.
      - Cependant, ce n'est pas à cette api SQL de gérer des caches, mais au compilateur qui doit pouvoir optimiser le code généré.
      - Il y avait trop de risques en cas d'accès concurrent à une même donnée que l'information rendue ne soit pas fraîche.
      
      27621f71
  31. juin 19, 2008
    • cerdic's avatar
      optimisations du nombre de requetes sql hors compilation : · 644b34f0
      cerdic a rédigé
      on introduit un sql_fetsel_cache qui cache les resultats, a utiliser sur les requetes identiques repetitives dans un meme hit
      on applique aux requetes de parametrer qui coutent en cas d'inclusions nombreuses
      sql_getfetsel passe par sql_fetsel_cache systematiquement (on presume que cette valeur unique est suceptible de servir plusieurs fois)
      fichier_copie_locale economise aussi une ou deux requetes par document distant deja rapatrie
      644b34f0
  32. juin 17, 2008
    • Fil's avatar
      utiliser le | pour separer les filtres, ca permet plus de coherence... · f5713b6c
      Fil a rédigé
      utiliser le | pour separer les filtres, ca permet plus de coherence {{{#FILTRE{compacte_head|liens_absolus} }}} et ca evite d'avoir a gerer des guillemets pour echapper a la virgule ; par defaut on passe inc-head en liens_absolus (un souci de moins pour les urls arborescentes
      f5713b6c
  33. mai 16, 2008
Chargement en cours