[SPIP] ~v3.0.17-->v3.0.19
authorLudovic CHEVALIER <ludovic@beurresarrasin.net>
Fri, 22 May 2015 07:44:17 +0000 (09:44 +0200)
committerLudovic CHEVALIER <ludovic@beurresarrasin.net>
Fri, 22 May 2015 07:44:17 +0000 (09:44 +0200)
241 files changed:
www/CHANGELOG.txt
www/config/ecran_securite.php
www/ecrire/action/referencer_traduction.php
www/ecrire/auth/spip.php
www/ecrire/base/dump.php
www/ecrire/base/objets.php
www/ecrire/base/trouver_table.php
www/ecrire/inc/autoriser.php
www/ecrire/inc/cvt_configurer.php
www/ecrire/inc/distant.php
www/ecrire/inc/filtres.php
www/ecrire/inc/lang.php
www/ecrire/inc/lang_liste.php
www/ecrire/inc/lien.php
www/ecrire/inc/log.php
www/ecrire/inc/minipres.php
www/ecrire/inc/pipelines.php
www/ecrire/inc/pipelines_ecrire.php
www/ecrire/inc/presentation_mini.php
www/ecrire/inc/queue.php
www/ecrire/inc/session.php
www/ecrire/inc/texte_mini.php
www/ecrire/inc/traduire.php
www/ecrire/inc/urls.php
www/ecrire/inc/utils.php
www/ecrire/inc_version.php
www/ecrire/iterateur/data.php
www/ecrire/lang/ecrire_fr.php
www/ecrire/lang/ecrire_oc_ni_mis.php [new file with mode: 0644]
www/ecrire/lang/public_hr.php [new file with mode: 0644]
www/ecrire/lang/public_oc_ni_mis.php [new file with mode: 0644]
www/ecrire/lang/spip_fr.php
www/ecrire/lang/spip_hr.php [new file with mode: 0644]
www/ecrire/lang/spip_oc_ni_mis.php [new file with mode: 0644]
www/ecrire/paquet.xml
www/ecrire/public/compiler.php
www/ecrire/public/sandbox.php
www/ecrire/req/mysql.php
www/ecrire/req/pg.php
www/ecrire/req/sqlite_generique.php
www/plugins-dist/breves/action/editer_breve.php
www/plugins-dist/breves/breves_administrations.php
www/plugins-dist/breves/breves_autoriser.php
www/plugins-dist/breves/formulaires/editer_breve.php
www/plugins-dist/compresseur/inc/compresseur.php
www/plugins-dist/compresseur/inc/compresseur_concatener.php
www/plugins-dist/compresseur/lib/JavascriptPacker/class.JavaScriptPacker.php
www/plugins-dist/compresseur/paquet.xml
www/plugins-dist/dump/formulaires/sauvegarder.html
www/plugins-dist/dump/formulaires/sauvegarder.php
www/plugins-dist/dump/paquet.xml
www/plugins-dist/dump/prive/squelettes/contenu/sauvegarder.html
www/plugins-dist/dump/prive/squelettes/contenu/sauvegarder_fonctions.php
www/plugins-dist/filtres_images/apple-touch-icon.png.html
www/plugins-dist/filtres_images/filtres/couleurs.php
www/plugins-dist/filtres_images/filtres/images_lib.php
www/plugins-dist/filtres_images/filtres/images_transforme.php
www/plugins-dist/filtres_images/filtres/images_typo.php
www/plugins-dist/filtres_images/inc/filtres_images_compat.php
www/plugins-dist/filtres_images/paquet.xml
www/plugins-dist/filtres_images/tests/couleur_extraire.php
www/plugins-dist/forum/action/editer_forum.php
www/plugins-dist/forum/action/instituer_forum.php
www/plugins-dist/forum/action/instituer_lot_forum.php
www/plugins-dist/forum/balise/formulaire_forum.php
www/plugins-dist/forum/balise/formulaire_forum_prive.php
www/plugins-dist/forum/base/forum.php
www/plugins-dist/forum/formulaires/activer_forums_objet.php
www/plugins-dist/forum/formulaires/forum.php
www/plugins-dist/forum/formulaires/forum_prive.php
www/plugins-dist/forum/forum_autoriser.php
www/plugins-dist/forum/forum_pipelines.php
www/plugins-dist/forum/inc/forum.php
www/plugins-dist/forum/inc/forum_insert.php
www/plugins-dist/forum/notifications/forumvalide.php
www/plugins-dist/forum/paquet.xml
www/plugins-dist/forum/prive/squelettes/contenu/controler_forum.html
www/plugins-dist/forum/prive/squelettes/inclure/boutons-filtres-statut-forum.html
www/plugins-dist/forum/public/forum.php
www/plugins-dist/forum/urls/generer_url_ecrire_forum.php
www/plugins-dist/mediabox/colorbox/black-greybox/colorbox.css
www/plugins-dist/mediabox/colorbox/black-greybox/colorbox_rtl.css
www/plugins-dist/mediabox/colorbox/black-simple/colorbox.css
www/plugins-dist/mediabox/colorbox/black-simple/colorbox_rtl.css
www/plugins-dist/mediabox/colorbox/black-striped/colorbox.css
www/plugins-dist/mediabox/colorbox/black-striped/colorbox_rtl.css
www/plugins-dist/mediabox/colorbox/bootstrap/colorbox.css
www/plugins-dist/mediabox/colorbox/bootstrap/colorbox_rtl.css
www/plugins-dist/mediabox/colorbox/fancybox/colorbox.css
www/plugins-dist/mediabox/colorbox/fancybox/colorbox_rtl.css
www/plugins-dist/mediabox/colorbox/thickbox/colorbox.css
www/plugins-dist/mediabox/colorbox/thickbox/colorbox_rtl.css
www/plugins-dist/mediabox/colorbox/white-shadow/colorbox.css
www/plugins-dist/mediabox/colorbox/white-shadow/colorbox_rtl.css
www/plugins-dist/mediabox/colorbox/white-simple/colorbox.css
www/plugins-dist/mediabox/colorbox/white-simple/colorbox_rtl.css
www/plugins-dist/mediabox/javascript/jquery.colorbox.js
www/plugins-dist/mediabox/paquet.xml
www/plugins-dist/medias/action/acceder_document.php
www/plugins-dist/medias/action/ajouter_documents.php
www/plugins-dist/medias/action/changer_mode_document.php
www/plugins-dist/medias/action/copier_local.php
www/plugins-dist/medias/action/dissocier_document.php
www/plugins-dist/medias/action/editer_document.php
www/plugins-dist/medias/action/supprimer_document.php
www/plugins-dist/medias/action/tourner.php
www/plugins-dist/medias/base/medias.php
www/plugins-dist/medias/formulaires/editer_document.html
www/plugins-dist/medias/formulaires/editer_document.php
www/plugins-dist/medias/inc/documenter_objet.php
www/plugins-dist/medias/inc/documents.php
www/plugins-dist/medias/inc/getdocument.php
www/plugins-dist/medias/inc/joindre_document.php
www/plugins-dist/medias/inc/marquer_doublons_doc.php
www/plugins-dist/medias/medias_autoriser.php
www/plugins-dist/medias/medias_fonctions.php
www/plugins-dist/medias/metadata/image.php
www/plugins-dist/medias/metadata/svg.php
www/plugins-dist/medias/modeles/document_case.html
www/plugins-dist/medias/modeles/document_desc.html
www/plugins-dist/medias/paquet.xml
www/plugins-dist/medias/prive/squelettes/inclure/document_infos.html
www/plugins-dist/medias/prive/style_prive_plugin_medias.html
www/plugins-dist/medias/urls/generer_url_document.php
www/plugins-dist/medias/urls/generer_url_ecrire_document.php
www/plugins-dist/mots/action/editer_mot.php
www/plugins-dist/mots/formulaires/editer_groupe_mot.php
www/plugins-dist/mots/formulaires/editer_mot.php
www/plugins-dist/mots/mots_administrations.php
www/plugins-dist/mots/paquet.xml
www/plugins-dist/mots/prive/squelettes/contenu/mots.html
www/plugins-dist/mots/prive/squelettes/navigation/mots.html
www/plugins-dist/mots/puce_statut/mot.php
www/plugins-dist/organiseur/inc/quete_calendrier.php
www/plugins-dist/organiseur/lang/organiseur_fr.php
www/plugins-dist/organiseur/organiseur_administrations.php
www/plugins-dist/organiseur/organiseur_fonctions.php
www/plugins-dist/organiseur/paquet.xml
www/plugins-dist/petitions/action/editer_petition.php
www/plugins-dist/petitions/action/editer_signature.php
www/plugins-dist/petitions/balise/formulaire_signature.php
www/plugins-dist/petitions/formulaires/signature.php
www/plugins-dist/petitions/petitions_autoriser.php
www/plugins-dist/petitions/petitions_fonctions.php
www/plugins-dist/porte_plume/paquet.xml
www/plugins-dist/revisions/afficher_diff/champ.php
www/plugins-dist/revisions/inc/diff.php
www/plugins-dist/revisions/inc/revisions.php
www/plugins-dist/revisions/inc/suivi_versions.php
www/plugins-dist/revisions/paquet.xml
www/plugins-dist/revisions/revisions_administrations.php
www/plugins-dist/safehtml/inc/safehtml.php
www/plugins-dist/sites/action/editer_site.php
www/plugins-dist/sites/action/instituer_syndic_article.php
www/plugins-dist/sites/action/syndiquer_site.php
www/plugins-dist/sites/balise/formulaire_site.php
www/plugins-dist/sites/genie/syndic.php
www/plugins-dist/sites/inc/feedfinder.php
www/plugins-dist/sites/inc/site.php
www/plugins-dist/sites/inc/syndic.php
www/plugins-dist/sites/puce_statut/site.php
www/plugins-dist/sites/sites_administrations.php
www/plugins-dist/sites/sites_autoriser.php
www/plugins-dist/statistiques/engines-list.txt
www/plugins-dist/statistiques/genie/popularites.php
www/plugins-dist/statistiques/genie/visites.php
www/plugins-dist/statistiques/inc/referenceurs.php
www/plugins-dist/statistiques/inc/statistiques.php
www/plugins-dist/statistiques/paquet.xml
www/plugins-dist/statistiques/prive/squelettes/contenu/stats_lang_fonctions.php
www/plugins-dist/statistiques/prive/squelettes/contenu/stats_referers.html
www/plugins-dist/statistiques/prive/squelettes/contenu/stats_repartition_fonctions.php
www/plugins-dist/statistiques/public/stats.php
www/plugins-dist/statistiques/stats_administrations.php
www/plugins-dist/statistiques/stats_autoriser.php
www/plugins-dist/statistiques/stats_pipelines.php
www/plugins-dist/svp/formulaires/charger_plugin.html
www/plugins-dist/svp/formulaires/inc-plugins_trouves.html
www/plugins-dist/svp/paquet.xml
www/plugins-dist/svp/prive/squelettes/inclure/plugin_detail.html
www/plugins-dist/svp/prive/style_prive_plugin_svp.html
www/plugins-dist/svp/svp_fonctions.php
www/plugins-dist/svp/tests_debug/depot.xml
www/plugins-dist/textwheel/inc/autoliens.php
www/plugins-dist/textwheel/inc/lien.php
www/plugins-dist/textwheel/inc/notes.php
www/plugins-dist/textwheel/inc/texte.php
www/plugins-dist/textwheel/inc/textwheel.php
www/plugins-dist/textwheel/paquet.xml
www/plugins-dist/urls_etendues/action/urls_actualiser.php
www/plugins-dist/urls_etendues/action/urls_liberer.php
www/plugins-dist/urls_etendues/action/urls_verrouiller.php
www/plugins-dist/urls_etendues/paquet.xml
www/plugins-dist/urls_etendues/urls/arbo.php
www/plugins-dist/urls_etendues/urls/html.php
www/plugins-dist/urls_etendues/urls/libres.php
www/plugins-dist/urls_etendues/urls/propres.php
www/plugins-dist/urls_etendues/urls/propres2.php
www/plugins-dist/urls_etendues/urls/propres_qs.php
www/plugins-dist/urls_etendues/urls/simple.php
www/plugins-dist/urls_etendues/urls/standard.php
www/plugins-dist/urls_etendues/urls_administrations.php
www/plugins-dist/vertebres/public/vertebrer.php
www/prive/echafaudage/contenu/objet.html
www/prive/formulaires/dater.html
www/prive/formulaires/editer_auteur.php
www/prive/formulaires/editer_logo.html
www/prive/formulaires/recherche_ecrire.html
www/prive/formulaires/selecteur/ajax_fonctions.php [new file with mode: 0644]
www/prive/formulaires/selecteur/inc-nav-rubriques_fonctions.php [new file with mode: 0644]
www/prive/formulaires/selecteur/navigateur_fonctions.php [new file with mode: 0644]
www/prive/formulaires/traduire.html
www/prive/javascript/ajaxCallback.js
www/prive/javascript/layer.js
www/prive/objets/liste/articles-trad.html
www/prive/objets/liste/articles.html
www/prive/squelettes/contenu/article.html
www/prive/squelettes/contenu/auteur.html
www/prive/squelettes/contenu/rubrique.html
www/prive/squelettes/hierarchie/infos_perso.html [new file with mode: 0644]
www/prive/squelettes/inclure/barre-nav.html
www/prive/themes/spip/clear.css
www/prive/themes/spip/icons.css.html
www/prive/themes/spip/images/aide-rtl-12.png [deleted file]
www/prive/themes/spip/images/aide-rtl-16.png [deleted file]
www/prive/themes/spip/images/aide_rtl-12.png [new file with mode: 0644]
www/prive/themes/spip/images/aide_rtl-16.png [new file with mode: 0644]
www/prive/themes/spip/lists.css.html
www/prive/themes/spip/minipres.css
www/prive/themes/spip/typo.css.html
www/squelettes-dist/css/clear.css
www/squelettes-dist/css/form.css
www/squelettes-dist/css/spip.css
www/squelettes-dist/css/typo.css
www/squelettes-dist/formulaires/ecrire_auteur.html
www/squelettes-dist/formulaires/mot_de_passe.php
www/squelettes-dist/formulaires/oubli.php
www/squelettes-dist/inc-rss-item.html
www/squelettes-dist/paquet.xml
www/squelettes-dist/robots.txt.html
www/svn.revision

index bab9dfb..2923a02 100644 (file)
@@ -1,4 +1,162 @@
 
+SPIP-Core spip-3.0.17 -> spip-3.0.19  08 mai 2015
+-------------------------------------------------------------
+
+r21519 | ben       |  (mer. 13 août 2014) | Allez reparton(ton) en dev pour un tour
+r21529 | ben       |  (jeu. 21 août 2014) | Pas d'onglet dans le nom de la fonction d'autorisation. Permet à un redacteur de pouvoir remodifier la langue et la couleur dans l'espace privé
+r21531 | eric      |  (ven. 22 août 2014) | Eviter des "illegal offset" si l'utilisateur n'est pas connecté (déjà corrigé en 3.1).
+r21536 | rasta     |  (ven. 05 sept. 2014) | Oups : mauvais "type" appelé pour la fonction d'autorisation pour celleux qui veulent la personnaliser : il ne faut pas garder le "configurer_" qui est déjà dans le "faire" !Cela ne change rien à la sécurité, c'est toujours l'autorisation "configurer" qui est appelée par défaut.
+r21539 | cedric    |  (mar. 09 sept. 2014) | Fix #2013 : le filtrage /auteur du statut de previsu introduit par r21500 n'etait pas pris en compte dans autoriser_previsualiser_dist() ce qui ne rendait plus visible le lien de prévisu sur les articles en cours de redaction.
+r21542 | b_b       |  (mar. 09 sept. 2014) | report de r21541 : maj url contrib (Francky)
+r21543 | suske     |  (mer. 10 sept. 2014) | Suite à forum.spip.net/fr_258607.html, retour partiel sur http://core.spip.org/projects/spip/repository/revisions/21272. On retire <math> de _PROTEGE_BLOCS car cela casse le fonctionnement annoncé dans la doc (http://www.spip.net/fr_article3016.html: "on peut en réalité ajouter <math>...</math> de manière très large (en clair : on peut ajouter <math> tout au début du texte, et </math> tout à la fin...).). L'incompatibilité perdure en 3.1-dev => revoir la doc ou revoir la rupture de compat ou proposer une màj élégante dans les textes ?
+r21544 | b_b       |  (mer. 10 sept. 2014) | pétouille (d'ailleurs je me demande pourquoi on ne colle toujours pas d'accents dans nos commentaires ?)
+r21555 | cedric    |  (jeu. 18 sept. 2014) | accessibilité : ce onkeypress provoquait un submit lorsqu'on quittait le focus de la recherche, en navigation au clavier. Il n'est pas necessaire, on le vire (Armony)
+r21556 | cedric    |  (ven. 19 sept. 2014) | la page infos_perso est une variante de la page auteur avec un id_auteur implicite. On la traite de maniere derogatoire pour que les plugins y ajoutent leurs blocs comme sur la page auteur (Philippe)
+r21557 | cedric    |  (sam. 20 sept. 2014) | Accessibilité : quand un formulaire est dans une zone aria-live="true", le screen reader vocalise chaque frappe de caractere par une relecture complete du bloc, ce qui est absolument insupportable. On devrait pouvoir ameliorer cela avec un aria-relevant adapté sur la zone, mais à tester/affiner. En attendant on pose un aria-live="off" sur les balises <form> contenues dans les blocs ajax, ce qui rétablit un confort d'utilisation acceptable (Armony) On pose tous ces attributs aria en JS, pour ne pas risquer d'avoir l'un sans l'autre.
+r21558 | cedric    |  (sam. 20 sept. 2014) | Accessibilité : expliciter la fonction du bouton qui fixe la reference des traductions (balise alt de <img> et title du <button> qui le contient) (Armony)
+r21559 | cedric    |  (sam. 20 sept. 2014) | Accessibilité : il y a plusieurs liens "Changer" sur la page article, qui ne sont pas contextualisés quand lus par un lecteur d'écran. On ajoute en complément ce sur quoi chacun porte, en class="over" car ils ne sont pas visuellement nécessaires (Armony)
+r21560 | cedric    |  (sam. 20 sept. 2014) | Accessibilite : ajouter un <h2> en tete de la zone wysiwyg pour permettre d'y acceder rapidement avec un lecteur d'ecran (Armony)Il faudra revoir la structure des hn mais c'est deja mieux comme ca.
+r21568 | cedric    |  (lun. 22 sept. 2014) | eviter que la liste devienne impraticable si un article a une centaine d'auteurs (ou plus)
+r21570 | cedric    |  (mer. 24 sept. 2014) | complement a r21568 : annuler un eventuel border et background sur le .inner (provient des box) (b_b)
+r21575 | cedric    |  (ven. 03 oct. 2014) | Lorsque le cron a plus de 5min de retard, on double la requete http par une image background (ou un lancement force si c'est un bot) car c'est sans doute que l'hebergement n'autorise pas les http sortantDevrait ameliorer le fonctionnement des crons sur les sites a faible trafic ou hebergement limite
+r21589 | marcimat  |  (jeu. 09 oct. 2014) | Report de r21588 : Lors de l'utilisation dans un squelette d'un filtre '|Classe::methode{...}' une erreur bloquante était générée par PHP. Ferme #3282 (merci witi).
+r21595 | cedric    |  (sam. 11 oct. 2014) | Report de r21528 : #2884 : les modeles block interrompent les enumerations parce que le <div class="base64" ..> qui les echappe est suivi de \n\n interprete comme une fin de listeil suffit de ne pas inserer ces deux retour qui etaient initialement la pour aider le paragraphage mais ne s'averent plus necessaires pour le bon fonctionnement de tous les raccourcisLes tests de textwheel permettent de verifier qu'on ne casse rien
+r21596 | cedric    |  (sam. 11 oct. 2014) | Fix #3276 : quand on a trop de sessions ouvertes (plus de 1000, personalisable par la constante _MAX_NB_SESSIONS_OUVERTES) on purge toutes les sessions anonymes de plus de 3h pour ne pas flooder le tmp/sessions.(Mecanisme de protection contre les bots qui postent sur le formulaire d'abonnement newsletter qui provoque la creation d'une session anonyme avec session_email)Cela permet de ne pas changer le comportement par defaut des sessions anonymes sauf en cas d'attaque/spam. Les gros sites pourront augmenter le seuil si besoin.
+r21612 | kent1     |  (lun. 13 oct. 2014) | Le khmer c'est le khmer
+r21616 | cedric    |  (mer. 15 oct. 2014) | Fix #3099 : 2 fichiers _fonctions manquant pour le selecteur ajax en squelette (patch plus doux que la version 3.1)
+r21646 | marcimat  |  (mer. 22 oct. 2014) | Report de r21645 : coquille et notice php en moins. Le sql_mode à la création d'une table mysql n'était pas ajouté.
+r21647 | marcimat  |  (mer. 22 oct. 2014) | Le  doit être défini ici.
+r21664 | marcimat  |  (mer. 22 oct. 2014) | Report de r21663 : #3309 : mettre un fil d'ariane vide pour la page infos_perso
+r21672 | b_b       |  (jeu. 23 oct. 2014) | report de r21633 : report ameliore de r21572 pour lire correctement les index a longueur fixee, et conserver la longueur qui est utile pour re-creer la table lors d'un dump par exemple cf #3260
+r21687 | cedric    |  (ven. 24 oct. 2014) | Bugfix : certains raccourisseurs d'URL transorment les ?articleXX en ?articleXX= ce qui provoquait le bug suivant quand on demande spip.php?article6434 :- on regarde le cache : rien en cache- du coup on analyse l'URL : ça matche articleXXX donc on redirige vers l'article XXXquand on demande spip.php?article6434= (noter le "=" à la fin de l'URL)- on regarde le cache : rien en cache- du coup on analyse l'URL : ça matche PAS articleXXX à cause du "="- on calcule la page => pas d'id article en url ni autre => page sommaire- on met en cacheLe coup suivant, on demande spip.php?article6434- on regarde en cache : et là subtilité, le contexte du cache est le même que pour l'URL spip.php?article6434= :array('article6434' => '', 'lang'=>'fr')du coup on a bien une page en cache, on la ressort et on l'envoie. Manque de bol c'était le sommaire !
+r21712 | b_b       |  (sam. 25 oct. 2014) | Report de r21706 : Bugfix de la regexp introduite par r21633 et r21572 utilisee par show_table ; elle ne savait pas lire une table simple sans aucun index (une seule parenthèse)
+r21735 | cedric    |  (mar. 28 oct. 2014) | Report partiel de r21734 : bugfix sur le selecteur ajax de rubriques quand la page contient plusieurs input id_parent
+r21747 | guytarr   |  (jeu. 30 oct. 2014) | Ferme #3289 : report de r21746, l'icone d'aide rtl n'était pas utilisée (George)
+r21752 | cedric    |  (jeu. 30 oct. 2014) | Report de r21750 : Un bug serieux sur la sauvegarde : lors de l'insertion on ne comptait pas sur la table destination mais sur la table source, ce qui entrainait systematiquement une double insertion (une fois en multi puis une fois un par un)Pouvait provoquer une erreur avec abandon qui manquait de log et n'etait pas signale dans le status. On corrige donc les consequences d'une telle erreur.
+r21754 | cedric    |  (jeu. 30 oct. 2014) | Report de r21753 : Fix #3327 : Respecter les CACA et les PROUT de Rastapopoulos dans la pagination (dont le modele peut être dynamique)(ie argumenter_inclure ignorait tous les arguments dynamiques qui suivaient un argument sans partie "x=", comme #INCLURE{#ENV{X,inclure/pied},id_article} qui est une inclusion directe d'un fichier, dont le contenu brut du fichier #ENV{X,inclure/pied} est importé, le reste du contexte ne servant pas+ un modificateur m manquant sur la regexp pour ne pas ingorer les valeurs multilignes)
+r21756 | guytarr   |  (jeu. 30 oct. 2014) | Report de r21755 : ferme #3326, on repasse par email_valide dans le traiter pour enregistrer en base un email "valide" et éviter les "Marie Toto <Marie@toto.com>" ou "Marie@toto.com "
+r21758 | cedric    |  (ven. 31 oct. 2014) | Report de r21751 : Une fonction base_prefixe_tables pour afficher le prefixe de la table sauvegardee dans l'interface
+r21759 | cedric    |  (ven. 31 oct. 2014) | Quand table_spip=false, ne pas se rabattre sur la description declaree dans l'API SPIP, ni essayer de prefixer par spip_+ flag exist true/false dans le resultat pour distinguer quand on a pris la declaration fallback ou quand on a trouve la table
+r21760 | cedric    |  (ven. 31 oct. 2014) | Fix #3270 (enfin) : trouver la description de la vraie table meme si le prefixe n'est pas spip_Faisait echouer les backup apres migration a cause du champ extra dans la vraie table mais pas dans la declaration sur laquelle on se basait
+r21767 | cedric    |  (ven. 31 oct. 2014) | Report de r21764 : Fix #3325 : cast recursif sur le object -> array en sortie de YQL
+r21768 | cedric    |  (sam. 01 nov. 2014) | r21759 modifie le comportement du flag exist et perturbe l'installation des extensions. On evite donc de risquer de la casse dans la version 3.0.x et on continue a ne peupler le flag exist que si il vaut true
+r21794 | cedric    |  (mer. 12 nov. 2014) | bug js potentiel sur le formulaire de login : il attendre document.ready pour manipuler le DOM (Alexis)
+r21798 | cedric    |  (jeu. 13 nov. 2014) | Report de r21797 : suite de r21795 : simplifier car l'imbrication (function($){$(function(){ console.log($);})})(jQuery) renvoit jQl et pas jQuery quand elle est lancee par jQl (a resoudre, Alexis)
+r21803 | cedric    |  (sam. 15 nov. 2014) | Report de r21802 : Report de http://zone.spip.org/trac/spip-zone/changeset/85675/
+r21807 | cedric    |  (sam. 15 nov. 2014) | Report de r21804 : le define _IS_BOT de fallback est fait apres l'inclusion de l'eventuel ecran de securite, qui est toujours plus a jour
+r21808 | cedric    |  (sam. 15 nov. 2014) | Report de r21805 : 2 bots de plus detectes par le radar : Genieo et InfegyAtlas
+r21809 | cedric    |  (sam. 15 nov. 2014) | Report de r21806 : Mise a jour de la detection des bots d'apres celle de l'ecran de securite
+r21813 | rasta     |  (lun. 17 nov. 2014) | Fix #3339 : Correction des autorisations pour configurer ses infos persos : pour voir les deux formulaires configurer_langage et configurer_preferences c'est toujours ok. Pour voir les deux onglets des pages qui les contiennent, on calque les autorisations sur les deux précédentes.
+r21814 | rasta     |  (lun. 17 nov. 2014) | ortho
+r21820 | b_b       |  (ven. 21 nov. 2014) | report de r21818 : La globale "visiteur_session" doit être initialisée au tableau vide et non à la chaîne vide, sinon on se prend un avertissemnent "Illegal string offset" dans les squelettes l'utilisant sur un visiteur non authentifié.
+r21833 | b_b       |  (mar. 25 nov. 2014) | fix #3353 : report de r21168 notice php en moins
+r21837 | kent1     |  (mer. 26 nov. 2014) | Indentation
+r21838 | kent1     |  (mer. 26 nov. 2014) | Indentation également
+r21840 | kent1     |  (mer. 26 nov. 2014) | Report de c21839Permettre de passer valider via pipeline si par exemple on est amené à rajouter des champs dans ce formulaire
+r21844 | cedric    |  (lun. 01 déc. 2014) | - MSIE 6.0 est un botnet, on le traite comme un bot- securite sur une variable mal protegee du plugin contact (il faut upgrader le plugin pour retrouver toutes les fonctionnalites)
+r21845 | cedric    |  (lun. 01 déc. 2014) | date
+r21849 | b_b       |  (lun. 01 déc. 2014) | report de r21848 : n'abbusons pas du b ^^
+r21851 | b_b       |  (lun. 01 déc. 2014) | report de r21850 : coquille de commentaire
+r21852 | cedric    |  (mar. 02 déc. 2014) | L'ouverture/fermeture immédiate d'une socket pour lancer le cron en async peut bloquer un process apache sur le serveur, qui reste en attente betement. Il suffit alors d'avoir beaucoup de site sur un serveur pour arriver parfois à consommer le MaxClient Apache, ce qui est embêtant.On essaye donc autant que possible de lire la réponse du serveur pour fermer proprement et libererer la connexion, en se donnant un timeout de 200ms. De temps en temps il arrivera qu'on parte comme un sauvage sans le faire, mais tant que ça reste statistiquement occasionnel c'est pas grave.
+r21857 | cedric    |  (dim. 07 déc. 2014) | Report de r21856 : oubli dans r21764 qui provoquait une erreur fatale
+r21859 | cedric    |  (dim. 07 déc. 2014) | Report de r21858 : Oups, pas de var_dump (shame)
+r21861 | kent1     |  (mer. 10 déc. 2014) | Report de r21860Le Dari (http://fr.wikipedia.org/wiki/Dari) est aussi une langue rtl
+r21880 | cedric    |  (lun. 15 déc. 2014) | id_table_objet() sur les tables non spip ne trouvait plus la clé primaire depuis r20312, un peu trop restrictif. On corrige en regardant la cle primaire du moment que la table est dans la base, qu'elle soit SPIP ou non
+r21885 | b_b       |  (sam. 20 déc. 2014) | report de r21884 / Fix #3367 : réparer l'affectation de rubriques à un auteur cassée par r21734
+r21887 | b_b       |  (sam. 20 déc. 2014) | report de r21886 / simplification (nicod)
+r21894 | cedric    |  (mer. 21 janv. 2015) | Si une fonction wrap_embed_html est definie, on l'appelle en lui passant le contenu source et le html qu'on s'apprete a embed dans le contenu riche. Cette fonction peut etre utilisee pour encapsuler ce contenu dans un markup qui l'indique comme non editable dans un editeur wysiwyg et qui porte la trace du raccourci source pour permettre la conversion html=>raccourcis SPIP
+r21899 | cedric    |  (sam. 07 févr. 2015) | perf issue : eviter une requete SQL a chaque affichage du formulaire de login anonyme
+r21900 | ben       |  (mar. 10 févr. 2015) | Voir le lien ajouter une image dans le cas de deux icones sur la même ligne #3384
+r21903 | fil       |  (sam. 14 févr. 2015) | nissart mistralien (report de [21902])
+r21911 | kent1     |  (lun. 16 févr. 2015) | typo et indentation
+r21918 | cedric    |  (lun. 23 févr. 2015) | Bugfix : un unset sur une valeur de session ne doit pas generer un cache de session pour un visiteur anonyme sans session (effet papillon d'un petit bug sur session_set qui provoque une generation du cache à l'infini). Cas typique : - le plugin panier verifie a chaque hit si le visiteur a un panier en session et sinon par precaution appelle session_set('id_panier') pour unset une evenuelle valeur- session_set peuple la valeur a null et appelle ajouter_session()- ajouter_session voit que le visiteur n'a pas de cookie session et genere un hash de session- il inspecte le tableau de session voit qu'il n'y a rien a enregistrer et rend la main ni vu ni connu (croyait-il).Mais comme on a renseigne $_COOKIE[spip_session] celui-ci est pris en compte dans la fonction spip_session() et genere un cache sessionné. Le plus drole c'est qu'on ne pose le cookie. Donc on recommence au hit suivant avec un nouvel identifiant de session, ce qui est une catastrophe en performance si le site utilise des balises #SESSION. Chaque hit sur le site génére un nouveau cache (donc calcul, donc ecriture sur le disque, donc gonflement du cache etc.)Pour mémoire quand on joue avec les sessions dans les plugins et les squelettes il faut toujours verifier que au final un curl anonyme sur le site est servi sans aucun "Calcul" ni "Ecriture du cache" dans spip.log.
+r21919 | cedric    |  (lun. 23 févr. 2015) | oups sur r21918, on ne sort que si $auteur_verif est vide
+r21959 | cedric    |  (mer. 25 mars 2015) | ssl:// a vecu, il faut utiliser tls:// car sinon les requetes https ne passent plus sur les serveurs avec une lib OpenSSL recente
+r21965 | eric      |  (dim. 29 mars 2015) | Eviter une notice dans le critère par si il est composé uniquement de deux éléments (ce qui est le cas le plus fréquent).
+r21967 | eric      |  (dim. 29 mars 2015) | Insérer la date du log en y intégrant clairement l'année : c'est plus lisible.
+r21975 | kent1     |  (mer. 08 avril 2015) | win_width.htc n'existe pas (enfin si, mais dans squelettes-dist) et donc il renvoie des erreurs 404 ici et à priori, celui de squelettes-dist ne concerne que ie5.5 à priori, je pense donc qu'il n'est pas pertinent de le dupliquer pour ce navigateur seulement
+r21984 | b_b       |  (ven. 10 avril 2015) | report de r21983 : spécifier l'unité des valeurs pour left et top appliqués au p inséré par ajaxcallback en fin de page (chankalan)
+r21985 | cedric    |  (sam. 11 avril 2015) | Une constante pour le timeout de connexion a la socket (par defaut a 10s au lieu de 30s)+ une globale pour interdire le fallback par fopen quand on ne veut pas risquer un double timeout si on sait que le host peut nous bloquer avec son firewall
+r22001 | erationa  |  (mer. 22 avril 2015) | dans certains cas particuliers, les filtres ne sont pas chargés par le selecteur. on les charge donc.corrige https://core.spip.net/issues/3381(en SPIP 3.1, le chargement est global sur le selecteur et permet d'éviter le problème)
+r22006 | b_b       |  (sam. 25 avril 2015) | report tardif de r19980 : corriger le title du lien vers la config du site dans le bandeau (klaus)
+r22007 | ben       |  (dim. 26 avril 2015) | Report de lang avant 3.0.18 ~/svn/spip-zone/_outils_/CReportLangTrunk30.ksh
+r22008 | ben       |  (dim. 26 avril 2015) | Report de lang avant 3.0.18 ~/svn/spip-zone/_outils_/CReportLangTrunk30.ksh
+r22009 | ben       |  (dim. 26 avril 2015) | SPIP 3.0.18
+r22010 | ben       |  (dim. 26 avril 2015) | SPIP 3.0.18
+r22012 | ben       |  (dim. 26 avril 2015) | Changelog ok SPIP 3.0.18( francky / maieul)
+r22016 | b_b       |  (dim. 26 avril 2015) | revert de r22007 (plus de reports de langues de 3.1 vers 3.0)
+r22017 | b_b       |  (dim. 26 avril 2015) | retour sur r22016 : cette modif n'avais rien à faire dans le revert
+r22019 | ben       |  (dim. 26 avril 2015) | oc_ni
+r22036 | gilles    |  (mer. 29 avril 2015) | corriger le bug des espaces dans les mots de passe : https://core.spip.net/issues/3409
+r22049 | eric      |  (dim. 03 mai 2015) | Reporter une vieille modif de la 3.1 (20373) concernant la surcharge par local_xx en 3.0.
+r22069 | kent1     |  (jeu. 07 mai 2015) | L'arménien s'écrit Հայերեն dans sa langue
+r22079 | cedric    |  (ven. 08 mai 2015) | Revert de r22019 : les nouveaux fichiers de langue sont pour SPIP 3.1
+
+SPIP-plugins-dist spip-3.0.17 -> spip-3.0.19  08 mai 2015
+-------------------------------------------------------------
+
+r84541 | frank     |  (mar. 09 sept. 2014) | Ce n'est plus spip-contrib.mais contrib.spip
+r84552 | cedric    |  (mer. 10 sept. 2014) | presenter les groupes dans l'ordre de la numerotation, puis par multi titre si pas de numerotation
+r84853 | cedric    |  (mer. 24 sept. 2014) | image_recadre peut recadrer une image pour respecter une proportion. Le premier argument est le ratio largeur:hauteur demandé, le second argument est alors un '+' pour agrandir avec des bandes ou un '-' pour reduire l'image.Exemple[(#LOGO_ARTICLE|image_recadre{16:9,'-'})]Permet d'avoir un logo au format 16:9 en recadrant l'image le moins possible.Cela permet de conserver l'image la plus grande possible qui respecte une proportion.
+r84938 | cedric    |  (mer. 01 oct. 2014) | Fix http://core.spip.org/issues/3278 : utiliser :hover et pas .hover comme selecteur CSS
+r84939 | cedric    |  (mer. 01 oct. 2014) | n'initialiser le padding de la box qu'au premier lancement et pas au chargement de la page car sinon certains navigateurs chargeent les images de background au chargement de la page, meme si la box ne sert jamais
+r84940 | cedric    |  (mer. 01 oct. 2014) | initialisation des dimensions de la box ne se faisait pas dans le cas modalbox, on deplace cette initialisation
+r84942 | cedric    |  (mer. 01 oct. 2014) | r83376 avait ressucité du code mort, mais manque de chance c'etait un bug en puissance et pas une feature : le resultat de la fonction depend d'un define qui n'est pas un argument de la fonction, on ne peut donc pas memoizer en fonction de ses arguments. Cela empechait la mise a jour des URLs, on retire donc cette appel (go0uz)
+r84944 | b_b       |  (mer. 01 oct. 2014) | report de r84899 / version 1.4.25: passer la taille max des urls propres et arbos à 80 caractères
+r84996 | cedric    |  (sam. 04 oct. 2014) | Ferme http://core.spip.org/issues/3272 : utiliser |ancre_url pour poser une ancre
+r85114 | cedric    |  (sam. 11 oct. 2014) | Fix http://core.spip.org/issues/3263 : les vignettes se calculent par leur URL, pas par le nom en clair du site (il est identique pour les sites courants mais pas pour les moteurs de recherche connus)
+r85122 | marcimat  |  (sam. 11 oct. 2014) | Report de r85121 : Chaîne de langue manquante
+r85219 | b_b       |  (mar. 14 oct. 2014) | version 0.8.9 : r83397 était insuffisant, il faut aussi définir cette propriété pour cboxLoadedContent (on pourrait l'appliquer directement à tous les éléments contenus dans la box mais ça peut poser problème)
+r85743 | cedric    |  (ven. 31 oct. 2014) | Report de r85728 : Quand on backup un SPIP qui utilise un prefixe de tables différent de 'spip', l'afficher pour rassurer le webmestre qui sait qu' il y a un prefixe et qui s'inquiète de ce que SPIP sauvegarde bien les bonnes tables.
+r85745 | cedric    |  (ven. 31 oct. 2014) | Report de r85731 : Afficher les erreurs rencontrees lors de la sauvegarde au lieu d'un message de reussite en cas d'echec
+r85750 | cedric    |  (ven. 31 oct. 2014) | eviter une erreur fatale eventuelle (si plugin migration present dans une vieille version)
+r85789 | cedric    |  (sam. 01 nov. 2014) | Tester l'existence du flag exist ET sa valeur
+r85817 | b_b       |  (mar. 04 nov. 2014) | version 0.8.10 : oubli dans r83397 et r85219, fix du box sizing aussi pour les boxes en rtl
+r85967 | maieul    |  (mar. 11 nov. 2014) | pas de raison que les forums privés ne réagissent pas au réglage de taille minimale
+r85968 | b_b       |  (mar. 11 nov. 2014) | revert de r85967 par svn merge -c -85967 .
+r85969 | maieul    |  (mar. 11 nov. 2014) | nous disons donc : pas de raison que les ofrums de l'espace privé échappe aux règles sur la longueur minimal. Merci à b_b pour le revert du commit trop fort
+r85973 | gilles    |  (mar. 11 nov. 2014) | report de [85972]
+r86007 | cedric    |  (mer. 12 nov. 2014) | Report de r86006 : ne pas generer une session anonyme a chaque POST de forum mais uniquement si un fichier a ete poste et si c'est une option autorisee+ generer toute de suite une erreur si un POST a ete fait alors que l'option n'est pas autorisee (car des BOTs qui spamment)(evite de generer des sessions anonymes en nombre pour rien)
+r86014 | cedric    |  (mer. 12 nov. 2014) | Report de r86013 : la bonne inclusion sur memoization (depuis http://zone.spip.org/trac/spip-zone/changeset/71370/_plugins_/memoization)
+r86132 | marcimat  |  (lun. 17 nov. 2014) | Report de r86131 : Résoudre une partie de #3345 : une url ​http://domain.tld/?2 acceptait par erreur (avec MYSQL) une url propre pouvant être "2-truc"
+r86211 | cedric    |  (ven. 21 nov. 2014) | report de r85649
+r86358 | tetue     |  (sam. 29 nov. 2014) | coquille
+r86393 | kent1     |  (lun. 01 déc. 2014) | Ne pas surcharger non plus ce formulaire
+r86394 | kent1     |  (lun. 01 déc. 2014) | oups
+r86418 | cedric    |  (mar. 02 déc. 2014) | Report de r86336 : Le header X-Spip-Visites ne fonctionnait plus depuis SPIP 3.0 suite a une salade de variables dans le pipeline affichage_entetes_final. On corrige.
+r86419 | cedric    |  (mar. 02 déc. 2014) | oups, mauvais numero de version dans r86418
+r86545 | cedric    |  (mar. 09 déc. 2014) | Bugfix temporisation 10s sur les revisions enfin trouve : la comparaison 0.0+titre_version < $date etait parfois vrai avec poutant titre_version qui contient $date, on rajoute donc une condition de non egalite au format texte pour exclure ce cas
+r86681 | cedric    |  (jeu. 11 déc. 2014) | eviter une erreur si extension n'est pas renseigne (cas tordus)
+r86686 | cedric    |  (ven. 12 déc. 2014) | Quand on minifie une CSS squelette, il faut prendre l'url de cette css, et pas l'url de la page courante comme base pour les urls absolues
+r86688 | cedric    |  (ven. 12 déc. 2014) | Retour sur r86686 : il faut fournir une url de 1er niveau publique si on est dans le public, et ecrire/ si on est dans ecrire/ puisque le fond css est calculé dans ce cas depuis ecrire/ et donc avec des urls relatives a ecrire/
+r86810 | xdjuj     |  (lun. 22 déc. 2014) | #3368 [Bug] [XML] [Validation] les urls de la forme http://domaine.com/spip.php?page=article&id_article=24 posent un problème de validation, les liens doivent être de la forme http://domaine.com/spip.php?page=article&amp;id_article=24 — problème également présent sur SPIP 2.x
+r86970 | cedric    |  (lun. 05 janv. 2015) | bugfix avec legendes longues sur la mediabox black-simple
+r87125 | cedric    |  (sam. 17 janv. 2015) | Un cache CSS qui ne dependait pas du host en cours, et donc qui entrainait parfois des injection croisees de domaine dans les css pour les sites etant visites sur plusieurs domaines
+r87162 | cedric    |  (mer. 21 janv. 2015) | Si une fonction wrap_embed_html est definie, on l'appelle en lui passant le contenu source et le html qu'on s'apprete a embed dans le contenu riche. Cette fonction peut etre utilisee pour encapsuler ce contenu dans un markup qui l'indique comme non editable dans un editeur wysiwyg et qui porte la trace du raccourci source pour permettre la conversion html=>raccourcis SPIP
+r87248 | cedric    |  (ven. 30 janv. 2015) | bugfix formulaire edition sur les modeles emb qui ont du js ou php
+r87340 | cedric    |  (mar. 03 févr. 2015) | Gerer une erreur eventuelle sur le formulaire mot de passe au lieu de faire croire que tout s'est bien passe
+r87399 | cedric    |  (mar. 10 févr. 2015) | Quand on vient de saisir 2 fois son nouveau mot de passe, on peut faire le cadeau de connexter directement l'utilisateur plutot que lui demander de le saisir une 3eme fois dans le formulaire de login (puisque de toute facon on lui rappelle son login, il a bien tout ce qu'il faut pour se connecter)
+r87400 | cedric    |  (mar. 10 févr. 2015) | Quand on vient de saisir 2 fois son nouveau mot de passe, on peut faire le cadeau de connexter directement l'utilisateur plutot que lui demander de le saisir une 3eme fois dans le formulaire de login (puisque de toute facon on lui rappelle son login, il a bien tout ce qu'il faut pour se connecter)
+r87489 | cedric    |  (mar. 17 févr. 2015) | Bugfix : sur les secteurs on affiche une icone pour voir tous les forums proposes sur les articles du secteur mais la page controler_forum n'affichait pas les resultats correspondants- on declare la jointure sur spip_articles pour le critere id_secteur- on filtre les messages sur id_secteur quand il est dans l'URL- on modifie l'url du lien pour passer les bons arguments et arriver sur les messages proposes dont le decompte correspond a ce qui est annonce sur l'icone
+r87514 | real3t    |  (mer. 18 févr. 2015) | Ajout du moteur de recherche Wow.com
+r87634 | cedric    |  (mer. 25 févr. 2015) | Les raccourcis glossaires sont deja personalisables avec une fonction glossaire_xxxx quand on mets une ancre #xxxx sur le raccourci glossaire.On etend un peu pour que si une ancre inconnue est passee on se rabatte sur la fonction glossaire_ si elle existe (c'est deja elle qui etait appelee si elle existait, en l'absence d'ancre)Du coup on passe l'ancre en 3eme argument pour que la fonction standard puisse l'utiliser pour savoir quoi faire.Exemple d'usage :<pre>define('_RACCOURCI_GLOSSAIRE', "/\[(@[^][<>]+)\]/S");function glossaire_($terme,$id,$ancre=null){       if ($ancre AND $ancre!="twitter") return $terme;        return glossaire_twitter($terme,$id,$ancre);}function glossaire_twitter($terme,$id,$ancre=null){        $terme = rawurlencode(ltrim($terme,"@"));       return "https://twitter.com/$terme";}function glossaire_seenthis($terme,$id,$ancre=null){       $terme = rawurlencode(ltrim($terme,"@"));       return "http://seenthis.net/people/$terme";}</pre>Et dans le texte on utilise[@spip] pour avoir un lien vers https://twitter.com/spip et [@spip#seenthis] pour avoir un lien vers http://senthis.net/people/spipdeclinable/personalisable a l'envie. Et si je mets [@spip#gplus] qui n'est pas defini je tombe sur @spip relative a mon site
+r87721 | pierrekuhn|  (mar. 03 mars 2015) | Ajout du moteur de recherche Assentice.com
+r87758 | marcimat  |  (ven. 06 mars 2015) | Report de r87757 : Déclarer le pipeline 'renseigner_document' ajouté par r74520.
+r87854 | cedric    |  (mer. 11 mars 2015) | Retablir l'affichage du message d'erreur quand le lien de changeemnt de mot de passe est invalide
+r88103 | erational |  (ven. 20 mars 2015) | report de  z88102. autoriser la lecture de css pour l'évalution du site en "mobile friendly"ttps://www.google.com/webmasters/tools/mobile-friendly/
+r88571 | maieul    |  (sam. 11 avril 2015) | nous disions : #DESCRIPTION passe déjà par propre, pas la peine de le faire 2 fois (pas de report en 3.1 parce que celle-ci utilise #DESCRIPTION*)
+r88815 | ben       |  (dim. 26 avril 2015) | Report de lang avant 3.0.18 ~/svn/spip-zone/_outils_/CReportLangTrunk30.ksh
+r88831 | b_b       |  (dim. 26 avril 2015) | revert de r88815 : plus de reports de langues de la 3.1 vers la 3.0
+r88861 | arno      |  (mar. 28 avril 2015) | Vignettes des portfolios en 150x150 (au lieu de 60x60).
+r88869 | arno      |  (mar. 28 avril 2015) | Corriger placement des vignettes (ajouter une classe .vignette).
+r88961 | franck    |  (sam. 02 mai 2015) | Evitons une redirection, ce n'est plus http://doc.spip.org mais http://code.spip.net
+r88974 | eric      |  (sam. 02 mai 2015) | Report de 88958 et 88962.Par défaut, la recherche des plugins se fait sur tous les états et non plus les états stables.Une classe nonstable est ajoutée sur les plugins trouvés dont l'état n'est pas stable.Cela permet de styler ces plugins pour l'instant juste avec une opacity moindre mais on pourra améliorer.
+r89102 | eric      |  (mer. 06 mai 2015) | On backporte la fonction de calcul de l'url de démo introduite en 3.1 afin de permettre que les plugins utilise cette nouvelle feature en 3.0 aussi sans poser de souci sur Plugins SPIP.Pour l'instant étant donné que l'on ne dispose pas d'item de langue demo en 3.0 dans SVP ou dans SPIP on n'affiche pas le lien (à voir avant de releaser)
+r89145 | gilles    |  (ven. 08 mai 2015) | Toute petite modification de la couleur recuperee par couleur_extraire => mise a jour du tests
+r89155 | cedric    |  (ven. 08 mai 2015) | Fix https://core.spip.net/issues/3380 : il faut verifier les droits d'associer/dissocier les documents a un objet dans le formulaire editer objet.Pour cela on cree 2 autorisations associerdocuments et dissocierdocuments qui par defaut reposent sur autoriser(modifier).+ n'afficher le lien 'modifier' sur un document que si on a bien le droit de le modifier
+r89156 | cedric    |  (ven. 08 mai 2015) | increment version
+
+
 SPIP-Core spip-3.0.16 -> spip-3.0.17  13 août 2014
 -------------------------------------------------------------
 
index 36b0044..bcf6179 100644 (file)
@@ -5,7 +5,7 @@
  * ------------------
  */
 
-define('_ECRAN_SECURITE', '1.1.9'); // 2014-03-13
+define('_ECRAN_SECURITE', '1.2.2'); // 2014-12-01
 
 /*
  * Documentation : http://www.spip.net/fr_article4200.html
@@ -26,8 +26,10 @@ if (!defined('_IS_BOT'))
                AND preg_match(
            // mots generiques
            ',bot|slurp|crawler|spider|webvac|yandex|'
+           // MSIE 6.0 est un botnet 99,9% du temps, on traite donc ce USER_AGENT comme un bot
+           . 'MSIE 6\.0|'
            // UA plus cibles
-           . '80legs|accoona|AltaVista|ASPSeek|Baidu|Charlotte|EC2LinkFinder|eStyle|Google|INA dlweb|Java VM|LiteFinder|Lycos|Rambler|Scooter|ScrubbyBloglines|Yahoo|Yeti'
+           . '80legs|accoona|AltaVista|ASPSeek|Baidu|Charlotte|EC2LinkFinder|eStyle|Google|Genieo|INA dlweb|InfegyAtlas|Java VM|LiteFinder|Lycos|Rambler|Scooter|ScrubbyBloglines|Yahoo|Yeti'
            . ',i',(string) $_SERVER['HTTP_USER_AGENT'])
        );
 
@@ -36,15 +38,19 @@ if (!defined('_IS_BOT'))
  * soit pas numérique (ce qui bloque l'exploitation de divers trous
  * de sécurité, dont celui de toutes les versions < 1.8.2f)
  * (sauf pour id_table, qui n'est pas numérique jusqu'à [5743])
+ * (id_base est une variable de la config des widgets de WordPress)
  */
 foreach ($_GET as $var => $val)
-       if ($_GET[$var] AND strncmp($var,"id_",3)==0 AND $var!='id_table')
+       if ($_GET[$var] AND strncmp($var,"id_",3)==0
+       AND !in_array($var, array('id_table','id_base')))
                $_GET[$var] = is_array($_GET[$var])?@array_map('intval',$_GET[$var]):intval($_GET[$var]);
 foreach ($_POST as $var => $val)
-       if ($_POST[$var] AND strncmp($var,"id_",3)==0 AND $var!='id_table')
+       if ($_POST[$var] AND strncmp($var,"id_",3)==0
+       AND !in_array($var, array('id_table','id_base')))
                $_POST[$var] = is_array($_POST[$var])?@array_map('intval',$_POST[$var]):intval($_POST[$var]);
 foreach ($GLOBALS as $var => $val)
-       if ($GLOBALS[$var] AND strncmp($var,"id_",3)==0 AND $var!='id_table')
+       if ($GLOBALS[$var] AND strncmp($var,"id_",3)==0
+       AND !in_array($var, array('id_table','id_base')))
                $GLOBALS[$var] = is_array($GLOBALS[$var])?@array_map('intval',$GLOBALS[$var]):intval($GLOBALS[$var]);
 
 /*
@@ -224,6 +230,15 @@ if (count($_FILES)){
                        unset($_FILES[$k]);
        }
 }
+/*
+ * et Contact trop laxiste avec une variable externe
+ * on bloque pas le post pour eviter de perdre des donnees mais on unset la variable et c'est tout
+ */
+if (isset($_REQUEST['pj_enregistrees_nom']) AND $_REQUEST['pj_enregistrees_nom']){
+       unset($_REQUEST['pj_enregistrees_nom']);
+       unset($_GET['pj_enregistrees_nom']);
+       unset($_POST['pj_enregistrees_nom']);
+}
 
 /*
  * reinstall=oui un peu trop permissif
index 260a408..114dffa 100644 (file)
@@ -13,7 +13,7 @@
 if (!defined('_ECRIRE_INC_VERSION')) return;
 
 /**
- * Definir le lien de traduction ver sun objet de reference
+ * Definir le lien de traduction verun objet de reference
  * si id_trad=0 : dereference le lien de traduction de id_objet
  * si id_trad=NN : reference le lien de traduction de id_objet vers NN
  * si id_objet=id_trad actuel et id_trad=new_id_trad : modifie la reference de tout le groupe de traduction
@@ -60,7 +60,7 @@ function action_referencer_traduction_dist($objet, $id_objet, $id_trad) {
        // on a fourni un id_trad nul : sortir id_objet du groupe de trad
        else {
                $old_id_trad = sql_getfetsel('id_trad',$table_objet_sql,"$id_table_objet=".intval($id_objet));
-         // supprimer le lien de traduction
+               // supprimer le lien de traduction
                sql_updateq($table_objet_sql, array("id_trad" => 0), "$id_table_objet=".intval($id_objet));
 
                // Verifier si l'ancien groupe ne comporte plus qu'un seul objet. Alors mettre a zero.
index 3c413a7..5da5853 100644 (file)
@@ -92,7 +92,14 @@ function auth_spip_formulaire_login($flux){
        // faut il encore envoyer md5 ?
        // on regarde si il reste des pass md5 en base pour des auteurs en statut pas poubelle
        // les hash md5 ont une longueur 32, les sha 64
-       $compat_md5 = sql_countsel("spip_auteurs", "length(pass)=32 AND statut<>'poubelle'");
+       // en evitant une requete sql a chaque affichage du formulaire login sans session
+       // (perf issue pour les sites qui mettent le formulaire de login sur la home)
+       $compat_md5 = false;
+       if (!isset($GLOBALS['meta']['sha_256_only']) OR _request('var_mode')){
+               $compat_md5 = sql_countsel("spip_auteurs", "length(pass)=32 AND statut<>'poubelle'");
+               if ($compat_md5 AND isset($GLOBALS['meta']['sha_256_only'])) effacer_meta('sha_256_only');
+               if (!$compat_md5) ecrire_meta('sha_256_only','oui');
+       }
 
        // javascript qui gere la securite du login en evitant de faire circuler le pass en clair
        $flux['data'].=
@@ -106,13 +113,13 @@ function auth_spip_formulaire_login($flux){
                ."var informe_auteur_en_cours = false;"
                ."var attente_informe = 0;"
                ."var compat_md5 = ".($compat_md5?"true;":"false;")
-               ."(function($){
-               $('#password')
+               ."jQuery(function(){
+               jQuery('#password')
                        .after(\"<em id='pass_securise'><img src='".chemin_image('cadenas-16.png')."' width='16' height='16' alt='" . attribut_html(_T('login_securise')) . "' title='" . attribut_html(_T('login_securise')) . "' \/><\/em>\");
                affiche_login_secure();
-               $('#var_login').change(actualise_auteur);
-               $('form#formulaire_login').submit(login_submit);
-       }(jQuery));"
+               jQuery('#var_login').change(actualise_auteur);
+               jQuery('form#formulaire_login').submit(login_submit);
+       });"
                ."/*]]>*/</script>";
 
        return $flux;
index 1ef8d30..8b2709d 100644 (file)
@@ -78,6 +78,18 @@ function base_lister_toutes_tables($serveur='', $tables=array(), $exclude = arra
        return $res;
 }
 
+/**
+ * Retrouver le prefixe des tables
+ * @param string $serveur
+ * @return string
+ */
+function base_prefixe_tables($serveur=''){
+       spip_connect($serveur);
+       $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
+       $prefixe = $connexion['prefixe'];
+       return $prefixe;
+}
+
 
 /**
  * Fabrique la liste a cocher des tables a traiter (copie, delete, sauvegarde)
@@ -510,9 +522,13 @@ function base_copier_tables($status_file, $tables, $serveur_source, $serveur_des
        $trouver_table = charger_fonction('trouver_table','base');
 
        foreach ($tables as $table){
-               // en principe, pas de spip_ dans le nom de table passe a trouver_table
-               $desc_source = $trouver_table(preg_replace(",^spip_,","",$table), $serveur_source, false);
-               if (!$desc_source)
+               // si table commence par spip_ c'est une table SPIP, renommer le prefixe si besoin
+               // sinon chercher la vraie table
+               $desc_source = false;
+               if (strncmp($table,"spip_",5)==0){
+                       $desc_source = $trouver_table(preg_replace(",^spip_,","",$table), $serveur_source, true);
+               }
+               if (!$desc_source OR !isset($desc_source['exist']) OR !$desc_source['exist'])
                        $desc_source = $trouver_table($table, $serveur_source, false);
 
                // verifier que la table est presente dans la base source
@@ -550,6 +566,9 @@ function base_copier_tables($status_file, $tables, $serveur_source, $serveur_des
                                                // mais si ca renvoie false c'est une erreur fatale => abandon
                                                if ($inserer_copie($table,$rows,$desc_dest,$serveur_dest)===false) {
                                                        // forcer la sortie, charge a l'appelant de gerer l'echec
+                                                       spip_log("Erreur fatale dans $inserer_copie table $table","dump"._LOG_ERREUR);
+                                                       $status['errors'][] = "Erreur fatale  lors de la copie de la table $table";
+                                                       ecrire_fichier($status_file,serialize($status));
                                                        // copie finie
                                                        return true;
                                                }
@@ -621,15 +640,23 @@ function base_copier_tables($status_file, $tables, $serveur_source, $serveur_des
 function base_inserer_copie($table,$rows,$desc_dest,$serveur_dest){
 
        // verifier le nombre d'insertion
-       $nb1 = sql_countsel($table);
+       $nb1 = sql_countsel($table,'','','',$serveur_dest);
        // si l'enregistrement est deja en base, ca fera un echec ou un doublon
        $r = sql_insertq_multi($table,$rows,$desc_dest,$serveur_dest);
-       $nb = sql_countsel($table);
+       $nb = sql_countsel($table,'','','',$serveur_dest);
        if ($nb-$nb1<count($rows)){
+               spip_log("base_inserer_copie : ".($nb-$nb1)." insertions au lieu de ".count($rows).". On retente 1 par 1","dump"._LOG_INFO_IMPORTANTE);
                foreach($rows as $row){
                        // si l'enregistrement est deja en base, ca fera un echec ou un doublon
                        $r = sql_insertq($table,$row,$desc_dest,$serveur_dest);
                }
+               // on reverifie le total
+               $r = 0;
+               $nb = sql_countsel($table,'','','',$serveur_dest);
+               if ($nb-$nb1<count($rows)){
+                       spip_log("base_inserer_copie : ".($nb-$nb1)." insertions au lieu de ".count($rows)." apres insertion 1 par 1","dump"._LOG_ERREUR);
+                       $r = false;
+               }
        }
        return $r;
 }
index aae6be1..42e07f7 100644 (file)
@@ -828,6 +828,20 @@ function lister_tables_spip($serveur=''){
        }
        return $tables[$serveur];
 }
+
+function lister_toutes_tables($serveur){
+       static $tables = array();
+       if (!isset($tables[$serveur])){
+               $tables[$serveur] = array();
+               if (!function_exists("sql_alltable"))
+                       include_spip("base/abstract_sql");
+               $ts = sql_alltable('%',$serveur); // toutes les tables
+               foreach ($ts as $t){
+                       $tables[$serveur][$t] = $t;
+               }
+       }
+       return $tables[$serveur];
+}
  
 /**
  * Retrouve le nom d'objet à partir de la table
@@ -939,7 +953,8 @@ function id_table_objet($type,$serveur='') {
                $trouver_table = charger_fonction('trouver_table', 'base');
 
        $ts=lister_tables_spip($serveur);
-       if (in_array($t,$ts)){
+       if (in_array($t,$ts)
+         OR in_array($t,lister_toutes_tables($serveur))){
                $desc = $trouver_table($t,$serveur);
                if (isset($desc['key']['PRIMARY KEY']))
                        return $desc['key']['PRIMARY KEY'];
index c181af0..7f42984 100644 (file)
@@ -103,7 +103,7 @@ function base_trouver_table_dist($nom, $serveur='', $table_spip = true){
 
        // base sous SPIP: gerer les abreviations explicites des noms de table
        if ($connexion['spip_connect_version']) {
-               if (isset($table_des_tables[$nom])) {
+               if ($table_spip AND isset($table_des_tables[$nom])) {
                        $nom = $table_des_tables[$nom];
                        $nom_sql = 'spip_' . $nom;
                }
@@ -120,7 +120,7 @@ function base_trouver_table_dist($nom, $serveur='', $table_spip = true){
                  AND $desc_cache=unserialize($desc_cache))
                  $connexion['tables'] = $desc_cache;
        }
-       if (!isset($connexion['tables'][$nom_sql])) {
+       if ($table_spip AND !isset($connexion['tables'][$nom_sql])) {
 
                if (isset($tables_principales[$nom_sql]))
                        $fdesc = $tables_principales[$nom_sql];
@@ -131,13 +131,11 @@ function base_trouver_table_dist($nom, $serveur='', $table_spip = true){
                        $nom_sql = 'spip_' . $nom;
                        $fdesc = &$tables_principales[$nom_sql];
                }
-               else {
-                       if (isset($tables_auxiliaires[$n=$nom])
-                         OR isset($tables_auxiliaires[$n='spip_'.$nom])) {
-                               $nom_sql = $n;
-                               $fdesc = &$tables_auxiliaires[$n];
-                       }  # table locale a cote de SPIP, comme non SPIP:
-               }
+               elseif (isset($tables_auxiliaires[$n=$nom])
+                 OR isset($tables_auxiliaires[$n='spip_'.$nom])) {
+                       $nom_sql = $n;
+                       $fdesc = &$tables_auxiliaires[$n];
+               }  # table locale a cote de SPIP, comme non SPIP:
        }
        if (!isset($connexion['tables'][$nom_sql])) {
 
@@ -152,8 +150,9 @@ function base_trouver_table_dist($nom, $serveur='', $table_spip = true){
                        // on retombe sur la description donnee dans les fichiers spip
                        $desc = $fdesc;
                }
-               else
+               else {
                        $desc['exist'] = true;
+               }
 
                $desc['table'] = $desc['table_sql'] = $nom_sql;
                $desc['connexion']= $serveur;
index 950ddbd..c3c91a9 100644 (file)
@@ -281,7 +281,12 @@ function autoriser_previsualiser_dist($faire, $type, $id, $qui, $opt) {
                                $champ = $c['champ'];
                                if (!isset($opt[$champ])) return false; // pas de champ passe a la demande => NIET
                                $previsu = explode(',',$c['previsu']);
-                               if (!in_array($opt[$champ],$previsu)) // le statut n'est pas dans ceux definis par la previsu => NIET
+                               // regarder si ce statut est autorise pour l'auteur
+                               if (in_array($opt[$champ]."/auteur",$previsu)){
+                                       if (!sql_countsel("spip_auteurs_liens","id_auteur=".intval($qui['id_auteur'])." AND objet=".sql_quote($type)." AND id_objet=".intval($id)))
+                                               return false;  // pas auteur de cet objet => NIET
+                               }
+                               elseif (!in_array($opt[$champ],$previsu)) // le statut n'est pas dans ceux definis par la previsu => NIET
                                        return false;
                        }
                }
@@ -1042,12 +1047,12 @@ function autoriser_base_reparer_dist($faire, $type, $id, $qui, $opt) {
  * @param  array  $opt   Options de cette autorisation
  * @return bool          true s'il a le droit, false sinon
 **/
-function autoriser_infosperso_onglet_dist($faire,$type,$id,$qui,$opt) {
+function autoriser_infosperso_dist($faire,$type,$id,$qui,$opt) {
        return true;
 }
 
 /**
- * Autorisation de voir l'onglet configurerlangage
+ * Autorisation de voir le formulaire configurer_langage
  *
  * Toujours OK
  * 
@@ -1058,12 +1063,28 @@ function autoriser_infosperso_onglet_dist($faire,$type,$id,$qui,$opt) {
  * @param  array  $opt   Options de cette autorisation
  * @return bool          true s'il a le droit, false sinon
 **/
-function autoriser_configurerlangage_onglet_dist($faire,$type,$id,$qui,$opt) {
+function autoriser_langage_configurer_dist($faire,$type,$id,$qui,$opt) {
        return true;
 }
 
 /**
- * Autorisation de voir l'onglet configurerpreferences
+ * Autorisation de voir l'onglet configurerlangage
+ *
+ * Calquée sur l'autorisation de voir le formulaire configurer_langage
+ * 
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+**/
+function autoriser_configurerlangage_dist($faire,$type,$id,$qui,$opt) {
+       return autoriser('configurer', '_langage', $id, $qui, $opt);
+}
+
+/**
+ * Autorisation de voir le formulaire configurer_preferences
  *
  * Toujours OK
  * 
@@ -1074,10 +1095,26 @@ function autoriser_configurerlangage_onglet_dist($faire,$type,$id,$qui,$opt) {
  * @param  array  $opt   Options de cette autorisation
  * @return bool          true s'il a le droit, false sinon
 **/
-function autoriser_configurerpreferences_onglet_dist($faire,$type,$id,$qui,$opt) {
+function autoriser_preferences_configurer_dist($faire,$type,$id,$qui,$opt) {
        return true;
 }
 
+/**
+ * Autorisation de voir l'onglet configurerpreferences
+ *
+ * Calquée sur l'autorisation de voir le formulaire configurer_preferences
+ * 
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+**/
+function autoriser_configurerpreferences_dist($faire,$type,$id,$qui,$opt) {
+       return autoriser('configurer', '_preferences', $id, $qui, $opt);
+}
+
 /**
  * Autorisation de voir le menu auteurs
  *
index 432cf26..ed20842 100644 (file)
@@ -27,7 +27,7 @@ function cvtconf_formulaire_charger($flux){
        ) {
                // Pour tous les formulaires CONFIGURER, ayant une fonction charger ou pas, on teste si autorisé
                include_spip('inc/autoriser');
-               if (!autoriser('configurer', "_$form")) {
+               if (!autoriser('configurer', '_'.substr($form,11))) {
                        return false;
                }
                
index e433095..31b5e51 100644 (file)
@@ -21,6 +21,7 @@ if (!defined('_INC_DISTANT_VERSION_HTTP')) define('_INC_DISTANT_VERSION_HTTP', "
 if (!defined('_INC_DISTANT_CONTENT_ENCODING')) define('_INC_DISTANT_CONTENT_ENCODING', "gzip");
 if (!defined('_INC_DISTANT_USER_AGENT')) define('_INC_DISTANT_USER_AGENT', 'SPIP-' . $GLOBALS['spip_version_affichee'] . " (" . $GLOBALS['home_server'] . ")");
 if (!defined('_INC_DISTANT_MAX_SIZE')) define('_INC_DISTANT_MAX_SIZE',2097152);
+if (!defined('_INC_DISTANT_CONNECT_TIMEOUT')) define('_INC_DISTANT_CONNECT_TIMEOUT',10);
 
 define('_REGEXP_COPIE_LOCALE', ',' .
        preg_replace('@^https?:@', 'https?:', $GLOBALS['meta']['adresse_site'])
@@ -661,8 +662,8 @@ function init_http($method, $url, $refuse_gz = false, $referer = '', $datas = ""
                $scheme = 'http';
                $noproxy = '';
        } elseif ($t['scheme']=='https') {
-               $scheme = 'ssl';
-               $noproxy = 'ssl://';
+               $scheme = 'tls';
+               $noproxy = 'tls://';
                if (!isset($t['port']) || !($port = $t['port'])) $t['port'] = 443;
        }
        else {
@@ -680,7 +681,8 @@ function init_http($method, $url, $refuse_gz = false, $referer = '', $datas = ""
        if (!$f){
                // fallback : fopen
                if (!need_proxy($host)
-                       AND !_request('tester_proxy')){
+                 AND !_request('tester_proxy')
+                 AND (!isset($GLOBALS['inc_distant_allow_fopen']) OR $GLOBALS['inc_distant_allow_fopen'])){
                        $f = @fopen($url, "rb");
                        spip_log("connexion vers $url par simple fopen");
                        $fopen = true;
@@ -702,14 +704,14 @@ function lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $
 
        $connect = "";
        if ($http_proxy){
-               if (defined('_PROXY_HTTPS_VIA_CONNECT') AND $scheme=="ssl"){
+               if (defined('_PROXY_HTTPS_VIA_CONNECT') AND $scheme=="tls"){
                        $path_host = (!$user ? '' : "$user@") . $host . (($port!=80) ? ":$port" : "");
                        $connect = "CONNECT " .$path_host." $vers\r\n"
                                ."Host: $path_host\r\n"
                                ."Proxy-Connection: Keep-Alive\r\n";
                }
                else {
-                       $path = (($scheme=='ssl') ? 'https://' : "$scheme://")
+                       $path = (($scheme=='tls') ? 'https://' : "$scheme://")
                                . (!$user ? '' : "$user@")
                                . "$host" . (($port!=80) ? ":$port" : "") . $path;
                }
@@ -724,10 +726,10 @@ function lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $
 
        if ($connect){
                $streamContext = stream_context_create(array('ssl' => array('verify_peer' => false, 'allow_self_signed' => true)));
-               $f = @stream_socket_client("tcp://$first_host:$port", $nError, $sError, 10, STREAM_CLIENT_CONNECT, $streamContext);
+               $f = @stream_socket_client("tcp://$first_host:$port", $nError, $sError, _INC_DISTANT_CONNECT_TIMEOUT, STREAM_CLIENT_CONNECT, $streamContext);
                spip_log("Recuperer $path sur $first_host:$port par $f (via CONNECT)","connect");
                if (!$f) return false;
-               stream_set_timeout($f, 10);
+               stream_set_timeout($f, _INC_DISTANT_CONNECT_TIMEOUT);
 
                fputs($f, $connect);
                fputs($f, "\r\n");
@@ -746,9 +748,13 @@ function lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $
                spip_log("OK CONNECT sur $first_host:$port","connect");
        }
        else {
-               $f = @fsockopen($first_host, $port);
+               $f = @fsockopen($first_host, $port, $errno, $errstr, _INC_DISTANT_CONNECT_TIMEOUT);
                spip_log("Recuperer $path sur $first_host:$port par $f");
-               if (!$f) return false;
+               if (!$f) {
+                       spip_log("Erreur connexion $errno $errstr",_LOG_ERREUR);
+                       return false;
+               }
+               stream_set_timeout($f, _INC_DISTANT_CONNECT_TIMEOUT);
        }
 
        $site = $GLOBALS['meta']["adresse_site"];
index 39fe12e..ae61ab2 100644 (file)
@@ -1161,7 +1161,7 @@ function affdate_heure($numdate) {
  * - Du 20 fevrier 2007 au 30 mars 2008
  * $horaire='oui' ou true permet d'afficher l'horaire, toute autre valeur n'indique que le jour
  * $forme peut contenir une ou plusieurs valeurs parmi
- *  - abbr (afficher le nom des jours en abbrege)
+ *  - abbr (afficher le nom des jours en abrege)
  *  - hcal (generer une date au format hcal)
  *  - jour (forcer l'affichage des jours)
  *  - annee (forcer l'affichage de l'annee)
@@ -1170,10 +1170,10 @@ function affdate_heure($numdate) {
  * @param string $date_fin
  * @param string $horaire
  * @param string $forme
- *   abbr pour afficher le nom du jour en abbrege (Dim. au lieu de Dimanche)
+ *   abbr pour afficher le nom du jour en abrege (Dim. au lieu de Dimanche)
  *   annee pour forcer l'affichage de l'annee courante
  *   jour pour forcer l'affichage du nom du jour
- *   hcal pour pour avoir un markup microformat abbr
+ *   hcal pour avoir un markup microformat abbr
  * @return string
  */
 function affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui', $forme=''){
@@ -2557,8 +2557,7 @@ function encoder_contexte_ajax($c,$form='', $emboite=NULL, $ajaxid='') {
        if ($ajaxid AND is_string($ajaxid)){
                $class .= ' ajax-id-'.$ajaxid;
        }
-       $compl = "aria-live='polite' aria-atomic='true' ";
-       return "<div class='$class' ".$compl."data-ajax-env='$env'$r>\n$emboite</div><!--ajaxbloc-->\n";
+       return "<div class='$class' "."data-ajax-env='$env'$r>\n$emboite</div><!--ajaxbloc-->\n";
 }
 
 // la procedure inverse de encoder_contexte_ajax()
index 169692e..a2e88b1 100644 (file)
@@ -110,7 +110,7 @@ function traduire_nom_langue($lang) {
 // C'est utilise par #LANG_DIR, #LANG_LEFT, #LANG_RIGHT.
 // http://doc.spip.org/@lang_dir
 function lang_dir($lang='', $droitier='ltr', $gaucher='rtl') {
-       static $lang_rtl = array('ar', 'fa', 'ku', 'ps', 'ur', 'he', 'heb', 'hbo', 'yi');
+       static $lang_rtl = array('ar', 'fa', 'ku', 'prs', 'ps', 'ur', 'he', 'heb', 'hbo', 'yi');
 
        return in_array(($lang ? $lang : $GLOBALS['spip_lang']), $lang_rtl) ?
                $gaucher : $droitier;
index 6be2016..9fe1e64 100644 (file)
@@ -91,7 +91,7 @@ $GLOBALS['codes_langues'] = array(
        'hi' => "&#2361;&#2367;&#2306;&#2342;&#2368;",
        'hr' => "hrvatski",
        'hu' => "magyar",
-       'hy' => "Armenian",
+       'hy' => "Հայերեն",// Arménien
        'ia' => "Interlingua",
        'id' => "Indonesia",
        'ie' => "Interlingue",
@@ -105,7 +105,7 @@ $GLOBALS['codes_langues'] = array(
        'ka' => "&#4325;&#4304;&#4320;&#4311;&#4323;&#4314;&#4312;",
        'kk' => "&#1179;&#1072;&#1079;&#1072;&#1179;&#32;&#1090;&#1110;&#1083;&#1110;", // Kazakh
        'kl' => "kalaallisut",
-       'km' => "Cambodian",
+       'km' => "&#6039;&#6070;&#6047;&#6070;&#6017;&#6098;&#6040;&#6082;&#6042;",// Khmer
        'kn' => "Kannada",
        'ko' => "&#54620;&#44397;&#50612;",
        'kok' => "&#2325;&#2379;&#2306;&#2325;&#2339;&#2368;", // Konkani
@@ -144,6 +144,7 @@ $GLOBALS['codes_langues'] = array(
        'oc_lnc' => "&ograve;c lengadocian",
        'oc_ni' => "&ograve;c ni&ccedil;ard",
        'oc_ni_la' => "&ograve;c ni&ccedil;ard (larg)",
+       'oc_ni_mis' => "&ograve;c nissart (mistralenc)",
        'oc_prv' => "&ograve;c proven&ccedil;au",
        'oc_gsc' => "&ograve;c gascon",
        'oc_lms' => "&ograve;c lemosin",
index 4f5dab3..9fc5d48 100644 (file)
@@ -169,7 +169,7 @@ function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='')
        // dans le cas d'un lien vers un doc, ajouter le type='mime/type'
        if ($type == 'document'
        AND $mime = sql_getfetsel('mime_type', 'spip_types_documents',
-                       "extension IN (SELECT extension FROM spip_documents where id_document =".sql_quote($id).")",
+                       "extension IN (".sql_get_select("extension","spip_documents","id_document=".sql_quote($id)).")",
                        '','','','',$connect)
        )
                $r['mime'] = $mime;
@@ -240,6 +240,7 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens
        if (strpos($texte,"<")!==false AND
          preg_match_all('/<[a-z_-]{3,}\s*[0-9|]+/iS', $texte, $matches, PREG_SET_ORDER)) {
                include_spip('public/assembler');
+               $wrap_embed_html = charger_fonction("wrap_embed_html","inc",true);
                foreach ($matches as $match) {
                        // Recuperer l'appel complet (y compris un eventuel lien)
 
@@ -300,6 +301,9 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens
                                // le remplacer dans le texte
                                if ($modele !== false) {
                                        $modele = protege_js_modeles($modele);
+                                       if ($wrap_embed_html){
+                                               $modele = $wrap_embed_html($mod,$modele);
+                                       }
                                        $rempl = code_echappement($modele, $echap);
                                        $texte = substr($texte, 0, $a)
                                                . $rempl
index ed13041..1a5fcb1 100644 (file)
@@ -59,7 +59,7 @@ function inc_log_dist($message, $logname=NULL, $logdir=NULL, $logsuf=NULL) {
                $debugverb = "$fi:L$l:$fu"."():";
        }
 
-       $m = date("d H:i:s").' '.$GLOBALS['ip'].' '.$pid.' '
+       $m = date("Y-m-d H:i:s").' '.$GLOBALS['ip'].' '.$pid.' '
          //distinguer les logs prives et publics dans les grep
                . $debugverb
                . (test_espace_prive()?':Pri:':':Pub:')
index 7b507b9..0de42ae 100644 (file)
@@ -119,10 +119,14 @@ function minipres($titre='', $corps="", $onload='', $all_inline = false)
                $titre = ($titre == 'install')
                  ?  _T('avis_espace_interdit')
                  : $titre . '&nbsp;: '. _T('info_acces_interdit');
+
+               $statut = isset($GLOBALS['visiteur_session']['statut']) ? $GLOBALS['visiteur_session']['statut'] : '';
+               $nom    = isset($GLOBALS['visiteur_session']['nom']) ? $GLOBALS['visiteur_session']['nom'] : '';
+
                $corps = generer_form_ecrire('accueil', '','',
-                                               $GLOBALS['visiteur_session']['statut']?_T('public:accueil_site'):_T('public:lien_connecter')
+                                               $statut ? _T('public:accueil_site') : _T('public:lien_connecter')
                );
-               spip_log($GLOBALS['visiteur_session']['nom'] . " $titre " . $_SERVER['REQUEST_URI']);
+               spip_log($nom . " $titre " . $_SERVER['REQUEST_URI']);
        }
 
        if (!_AJAX)
index 3b89189..b2eb236 100644 (file)
@@ -213,7 +213,7 @@ function f_queue(&$texte){
 
        // eviter une inclusion si rien a faire
        if (_request('action')=='cron'
-               OR queue_sleep_time_to_next_job()
+               OR queue_sleep_time_to_next_job()>0
          OR defined('_DEBUG_BLOCK_QUEUE')){
                return $texte;
        }
index c24698d..1cebc91 100644 (file)
@@ -122,6 +122,10 @@ function f_afficher_blocs_ecrire($flux) {
                if (!isset($o[$exec])){
                        $o[$exec] = trouver_objet_exec($exec);
                }
+               // cas particulier
+               if ($exec=="infos_perso"){
+                       $flux['args']['contexte']['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur'];
+               }
                $typepage = (isset($flux['args']['contexte']['type-page'])?$flux['args']['contexte']['type-page']:$exec);
                if ($fond == "prive/squelettes/navigation/$typepage"){
                        $flux['data']['texte'] = pipeline('affiche_gauche',array('args'=>$flux['args']['contexte'],'data'=>$flux['data']['texte']));
@@ -202,6 +206,11 @@ function f_queue_affiche_milieu($flux){
 function trouver_objet_exec($exec){
        static $objet_exec=array();
        if (!$exec) return false;
+       // cas particulier
+       if ($exec=="infos_perso"){
+               $exec = "auteur";
+               set_request('id_auteur',$GLOBALS['visiteur_session']['id_auteur']);
+       }
        if (!isset($objet_exec[$exec])){
                $objet_exec[$exec]=false;
                $infos = lister_tables_objets_sql();
index 1cbef7e..5754a1c 100644 (file)
-<?php\r
-\r
-/***************************************************************************\\r
- *  SPIP, Systeme de publication pour l'internet                           *\r
- *                                                                         *\r
- *  Copyright (c) 2001-2014                                                *\r
- *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *\r
- *                                                                         *\r
- *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *\r
- *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *\r
-\***************************************************************************/\r
-\r
-/**\r
- * Fonctions d'affichage pour l'espace privé (hors squelettes)\r
- *\r
- * @package SPIP\Core\Affichage\r
-**/\r
-if (!defined('_ECRIRE_INC_VERSION')) return;\r
-\r
-/**\r
- * Affiche un code html (echo) et log l'affichage car cet echo est anormal !\r
- * \r
- * Signale une fonction qui devrait retourner un contenu mais effectue\r
- * un echo à la place pour compatibilité ascendante\r
- *\r
- * @deprecated\r
- *     Utiliser des squelettes pour l'affichage !\r
- * \r
- * @param string $f\r
- *     Nom de la fonction\r
- * @param string $ret\r
- *     Code HTML à afficher\r
- * @return void\r
-**/\r
-function echo_log($f, $ret) {\r
-       spip_log("Page " . self() . " function $f: echo ".substr($ret,0,50)."...",'echo');\r
-       echo\r
-       (_SIGNALER_ECHOS?"#Echo par $f#" :"")\r
-               . $ret;\r
-}\r
-\r
-/**\r
- * Retourne le code HTML d'un début de cadre pour le centre de page (haut de page)\r
- * @return string Code HTML\r
- */\r
-function debut_grand_cadre(){ return "\n<div class='table_page'>\n";}\r
-\r
-/**\r
- * Retourne le code HTML d'une fin de cadre pour le centre de page (haut de page)\r
- * @return string Code HTML\r
- */\r
-function fin_grand_cadre(){ return "\n</div>";}\r
-\r
-// Debut de la colonne de gauche\r
-// div navigation fermee par creer_colonne_droite qui ouvre\r
-// div extra lui-meme ferme par debut_droite qui ouvre\r
-// div contenu lui-meme ferme par fin_gauche() ainsi que\r
-// div conteneur\r
-// http://doc.spip.org/@debut_gauche\r
-/**\r
- * Retourne le code HTML du début de la colonne gauche\r
- * @return string Code HTML\r
- */\r
-function debut_gauche() {      return "<div id='conteneur' class=''>\n<div id='navigation' class='lat' role='contentinfo'>\n";}\r
-\r
-/**\r
- * Retourne le code HTML de la fin de la colonne\r
- * @return string Code HTML\r
- */\r
-function fin_gauche(){return "</div></div><br class='nettoyeur' />";}\r
-\r
-/**\r
- * Retourne le code HTML du changement de colonne (passer de la gauche à la droite)\r
- * @return string Code HTML\r
- */\r
-function creer_colonne_droite(){\r
-       static $deja_colonne_droite;\r
-       if ($GLOBALS['spip_ecran']!='large' OR $deja_colonne_droite) return '';\r
-       $deja_colonne_droite = true;\r
-       return "\n</div><div id='extra' class='lat' role='complementary'>";\r
-}\r
-\r
-/**\r
- * Retourne le code HTML de la colonne droite et du centre de page\r
- * @return string Code HTML\r
- */\r
-function debut_droite() {\r
-       return liste_objets_bloques(_request('exec'))\r
-         . creer_colonne_droite()\r
-         . "</div>"\r
-         . "\n<div id='contenu'>";\r
-}\r
-\r
-// http://doc.spip.org/@liste_articles_bloques\r
-function liste_objets_bloques($exec,$contexte=array(),$auteur=null){\r
-       $res = '';\r
-       if ($GLOBALS['meta']["articles_modif"] != "non") {\r
-               include_spip('inc/drapeau_edition');\r
-               if (is_null($auteur))\r
-                       $auteur = $GLOBALS['visiteur_session'];\r
-               if ($en_cours=trouver_objet_exec($exec)\r
-                       AND $en_cours['edition']\r
-                       AND $type = $en_cours['type']\r
-                 AND ($id = $contexte[$en_cours['id_table_objet']] OR $id = _request($en_cours['id_table_objet']))) {\r
-                       // marquer le fait que l'objet est ouvert en edition par toto\r
-                       // a telle date ; une alerte sera donnee aux autres redacteurs\r
-                       signale_edition ($id,  $auteur, $type);\r
-               }\r
-\r
-               $objets_ouverts = liste_drapeau_edition($auteur['id_auteur']);\r
-               if (count($objets_ouverts)) {\r
-                       $res .= recuperer_fond('prive/objets/liste/objets-en-edition',array(),array('ajax'=>true));\r
-               }\r
-       }\r
-       return $res;\r
-}\r
-\r
-// Fin de page de l'interface privee.\r
-// Elle comporte une image invisible declenchant une tache de fond\r
-// http://doc.spip.org/@fin_page\r
-function fin_page(){\r
-       include_spip('inc/pipelines');\r
-       // avec &var_profile=1 on a le tableau de mesures SQL\r
-       $debug = ((_request('exec') !== 'valider_xml')\r
-               AND ((_request('var_mode') == 'debug')\r
-                       OR (isset($GLOBALS['tableau_des_temps']) AND $GLOBALS['tableau_des_temps'])\r
-                       AND isset($_COOKIE['spip_admin'])));\r
-       $t = '</div><div id="pied"><div class="largeur">'\r
-       . recuperer_fond('prive/squelettes/inclure/pied')\r
-       . "</div>"\r
-       . "</div></div>" // cf. div#page et div.largeur ouvertes dans conmmencer_page()\r
-       . ($debug?erreur_squelette():'')\r
-       . "</body></html>\n";\r
-       return f_queue($t);\r
-}\r
-\r
-function html_tests_js(){\r
-       if (_SPIP_AJAX AND !defined('_TESTER_NOSCRIPT')) {\r
-         // pour le pied de page (deja defini si on est validation XML)\r
-               define('_TESTER_NOSCRIPT',\r
-                       "<noscript>\n<div style='display:none;'><img src='"\r
-                       . generer_url_ecrire('test_ajax', 'js=-1')\r
-                       . "' width='1' height='1' alt='' /></div></noscript>\n");\r
-       }\r
-       return\r
-               (defined('_SESSION_REJOUER') ? _SESSION_REJOUER : '')\r
-       . (defined('_TESTER_NOSCRIPT') ? _TESTER_NOSCRIPT : '');\r
-}\r
-\r
-function info_maj_spip(){\r
-\r
-       $maj = $GLOBALS['meta']['info_maj_spip'];\r
-       if (!$maj)\r
-               return "";\r
-\r
-       $maj = explode('|',$maj);\r
-       // c'est une ancienne notif, on a fait la maj depuis !\r
-       if ($GLOBALS['spip_version_branche']!==reset($maj))\r
-               return "";\r
-\r
-       if (!autoriser('webmestre'))\r
-               return "";\r
-\r
-       array_shift($maj);\r
-       $maj = implode('|',$maj);\r
-\r
-       return "$maj<br />";\r
-}\r
-\r
-// http://doc.spip.org/@info_copyright\r
-function info_copyright() {\r
-       global $spip_version_affichee, $spip_lang;\r
-\r
-       $version = $spip_version_affichee;\r
-\r
-       //\r
-       // Mention, le cas echeant, de la revision SVN courante\r
-       //\r
-       if ($svn_revision = version_svn_courante(_DIR_RACINE)) {\r
-               $version .= ' ' . (($svn_revision < 0) ? 'SVN ':'')\r
-               . "[<a href='http://core.spip.org/trac/spip/changeset/"\r
-               . abs($svn_revision) . "' onclick=\"window.open(this.href); return false;\">"\r
-               . abs($svn_revision) . "</a>]";\r
-       }\r
-\r
-       // et la version de l'ecran de securite\r
-       $secu = defined('_ECRAN_SECURITE')\r
-               ? "<br />"._T('ecran_securite',array('version'=>_ECRAN_SECURITE))\r
-               : '';\r
-\r
-       return _T('info_copyright',\r
-                  array('spip' => "<b>SPIP $version</b> ",\r
-                        'lien_gpl' =>\r
-                        "<a href='". generer_url_ecrire("aide", "aide=licence&var_lang=$spip_lang") . "' onclick=\"window.open(this.href, 'spip_aide', 'scrollbars=yes,resizable=yes,width=740,height=580'); return false;\">" . _T('info_copyright_gpl')."</a>"))\r
-               . $secu;\r
-\r
-}\r
-\r
-// http://doc.spip.org/@formulaire_recherche\r
-function formulaire_recherche($page, $complement=""){\r
-       $recherche = _request('recherche');\r
-       $recherche_aff = entites_html($recherche);\r
-       if (!strlen($recherche)) {\r
-               $recherche_aff = _T('info_rechercher');\r
-               $onfocus = " onfocus=\"this.value='';\"";\r
-       } else $onfocus = '';\r
-\r
-       $form = '<input type="text" size="10" value="'.$recherche_aff.'" name="recherche" class="recherche" accesskey="r"' . $onfocus . ' />';\r
-       $form .= "<input type='image' src='" . chemin_image('rechercher-20.png') . "' name='submit' class='submit' alt='"._T('info_rechercher')."' />";\r
-       return "<div class='spip_recherche'>".generer_form_ecrire($page, $form . $complement, " method='get'")."</div>";\r
-}\r
-\r
-?>\r
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2014                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+/**
+ * Fonctions d'affichage pour l'espace privé (hors squelettes)
+ *
+ * @package SPIP\Core\Affichage
+**/
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+/**
+ * Affiche un code html (echo) et log l'affichage car cet echo est anormal !
+ * 
+ * Signale une fonction qui devrait retourner un contenu mais effectue
+ * un echo à la place pour compatibilité ascendante
+ *
+ * @deprecated
+ *     Utiliser des squelettes pour l'affichage !
+ * 
+ * @param string $f
+ *     Nom de la fonction
+ * @param string $ret
+ *     Code HTML à afficher
+ * @return void
+**/
+function echo_log($f, $ret) {
+       spip_log("Page " . self() . " function $f: echo ".substr($ret,0,50)."...",'echo');
+       echo
+       (_SIGNALER_ECHOS?"#Echo par $f#" :"")
+               . $ret;
+}
+
+/**
+ * Retourne le code HTML d'un début de cadre pour le centre de page (haut de page)
+ * @return string Code HTML
+ */
+function debut_grand_cadre(){ return "\n<div class='table_page'>\n";}
+
+/**
+ * Retourne le code HTML d'une fin de cadre pour le centre de page (haut de page)
+ * @return string Code HTML
+ */
+function fin_grand_cadre(){ return "\n</div>";}
+
+// Debut de la colonne de gauche
+// div navigation fermee par creer_colonne_droite qui ouvre
+// div extra lui-meme ferme par debut_droite qui ouvre
+// div contenu lui-meme ferme par fin_gauche() ainsi que
+// div conteneur
+// http://doc.spip.org/@debut_gauche
+/**
+ * Retourne le code HTML du début de la colonne gauche
+ * @return string Code HTML
+ */
+function debut_gauche() {      return "<div id='conteneur' class=''>\n<div id='navigation' class='lat' role='contentinfo'>\n";}
+
+/**
+ * Retourne le code HTML de la fin de la colonne
+ * @return string Code HTML
+ */
+function fin_gauche(){return "</div></div><br class='nettoyeur' />";}
+
+/**
+ * Retourne le code HTML du changement de colonne (passer de la gauche à la droite)
+ * @return string Code HTML
+ */
+function creer_colonne_droite(){
+       static $deja_colonne_droite;
+       if ($GLOBALS['spip_ecran']!='large' OR $deja_colonne_droite) return '';
+       $deja_colonne_droite = true;
+       return "\n</div><div id='extra' class='lat' role='complementary'>";
+}
+
+/**
+ * Retourne le code HTML de la colonne droite et du centre de page
+ * @return string Code HTML
+ */
+function debut_droite() {
+       return liste_objets_bloques(_request('exec'))
+         . creer_colonne_droite()
+         . "</div>"
+         . "\n<div id='contenu'>";
+}
+
+// http://doc.spip.org/@liste_articles_bloques
+function liste_objets_bloques($exec,$contexte=array(),$auteur=null){
+       $res = '';
+       if ($GLOBALS['meta']["articles_modif"] != "non") {
+               include_spip('inc/drapeau_edition');
+               if (is_null($auteur))
+                       $auteur = $GLOBALS['visiteur_session'];
+               if ($en_cours=trouver_objet_exec($exec)
+                       AND $en_cours['edition']
+                       AND $type = $en_cours['type']
+                 AND ($id = $contexte[$en_cours['id_table_objet']] OR $id = _request($en_cours['id_table_objet']))) {
+                       // marquer le fait que l'objet est ouvert en edition par toto
+                       // a telle date ; une alerte sera donnee aux autres redacteurs
+                       signale_edition ($id,  $auteur, $type);
+               }
+
+               $objets_ouverts = liste_drapeau_edition($auteur['id_auteur']);
+               if (count($objets_ouverts)) {
+                       $res .= recuperer_fond('prive/objets/liste/objets-en-edition',array(),array('ajax'=>true));
+               }
+       }
+       return $res;
+}
+
+// Fin de page de l'interface privee.
+// Elle comporte une image invisible declenchant une tache de fond
+// http://doc.spip.org/@fin_page
+function fin_page(){
+       include_spip('inc/pipelines');
+       // avec &var_profile=1 on a le tableau de mesures SQL
+       $debug = ((_request('exec') !== 'valider_xml')
+               AND ((_request('var_mode') == 'debug')
+                       OR (isset($GLOBALS['tableau_des_temps']) AND $GLOBALS['tableau_des_temps'])
+                       AND isset($_COOKIE['spip_admin'])));
+       $t = '</div><div id="pied"><div class="largeur">'
+       . recuperer_fond('prive/squelettes/inclure/pied')
+       . "</div>"
+       . "</div></div>" // cf. div#page et div.largeur ouvertes dans conmmencer_page()
+       . ($debug?erreur_squelette():'')
+       . "</body></html>\n";
+       return f_queue($t);
+}
+
+function html_tests_js(){
+       if (_SPIP_AJAX AND !defined('_TESTER_NOSCRIPT')) {
+         // pour le pied de page (deja defini si on est validation XML)
+               define('_TESTER_NOSCRIPT',
+                       "<noscript>\n<div style='display:none;'><img src='"
+                       . generer_url_ecrire('test_ajax', 'js=-1')
+                       . "' width='1' height='1' alt='' /></div></noscript>\n");
+       }
+       return
+               (defined('_SESSION_REJOUER') ? _SESSION_REJOUER : '')
+       . (defined('_TESTER_NOSCRIPT') ? _TESTER_NOSCRIPT : '');
+}
+
+function info_maj_spip(){
+
+       $maj = $GLOBALS['meta']['info_maj_spip'];
+       if (!$maj)
+               return "";
+
+       $maj = explode('|',$maj);
+       // c'est une ancienne notif, on a fait la maj depuis !
+       if ($GLOBALS['spip_version_branche']!==reset($maj))
+               return "";
+
+       if (!autoriser('webmestre'))
+               return "";
+
+       array_shift($maj);
+       $maj = implode('|',$maj);
+
+       return "$maj<br />";
+}
+
+// http://doc.spip.org/@info_copyright
+function info_copyright() {
+       global $spip_version_affichee, $spip_lang;
+
+       $version = $spip_version_affichee;
+
+       //
+       // Mention, le cas echeant, de la revision SVN courante
+       //
+       if ($svn_revision = version_svn_courante(_DIR_RACINE)) {
+               $version .= ' ' . (($svn_revision < 0) ? 'SVN ':'')
+               . "[<a href='http://core.spip.net/projects/spip/repository/revisions/"
+               . abs($svn_revision) . "' onclick=\"window.open(this.href); return false;\">"
+               . abs($svn_revision) . "</a>]";
+       }
+
+       // et la version de l'ecran de securite
+       $secu = defined('_ECRAN_SECURITE')
+               ? "<br />"._T('ecran_securite',array('version'=>_ECRAN_SECURITE))
+               : '';
+
+       return _T('info_copyright',
+                  array('spip' => "<b>SPIP $version</b> ",
+                        'lien_gpl' =>
+                        "<a href='". generer_url_ecrire("aide", "aide=licence&var_lang=$spip_lang") . "' onclick=\"window.open(this.href, 'spip_aide', 'scrollbars=yes,resizable=yes,width=740,height=580'); return false;\">" . _T('info_copyright_gpl')."</a>"))
+               . $secu;
+
+}
+
+// http://doc.spip.org/@formulaire_recherche
+function formulaire_recherche($page, $complement=""){
+       $recherche = _request('recherche');
+       $recherche_aff = entites_html($recherche);
+       if (!strlen($recherche)) {
+               $recherche_aff = _T('info_rechercher');
+               $onfocus = " onfocus=\"this.value='';\"";
+       } else $onfocus = '';
+
+       $form = '<input type="text" size="10" value="'.$recherche_aff.'" name="recherche" class="recherche" accesskey="r"' . $onfocus . ' />';
+       $form .= "<input type='image' src='" . chemin_image('rechercher-20.png') . "' name='submit' class='submit' alt='"._T('info_rechercher')."' />";
+       return "<div class='spip_recherche'>".generer_form_ecrire($page, $form . $complement, " method='get'")."</div>";
+}
+
+?>
index 2639568..7fa78cd 100644 (file)
@@ -278,7 +278,7 @@ function queue_schedule($force_jobs = null){
        }
 
        // rien a faire si le prochain job est encore dans le futur
-       if (queue_sleep_time_to_next_job() AND (!$force_jobs OR !count($force_jobs))){
+       if (queue_sleep_time_to_next_job()>0 AND (!$force_jobs OR !count($force_jobs))){
                spip_log("queue_sleep_time_to_next_job",'jq'._LOG_DEBUG);
                return;
        }
@@ -477,7 +477,7 @@ function queue_set_next_job_time($next) {
        // toujours relire la valeur pour comparer, pour tenir compte des maj concourrantes
        // et ne mettre a jour que si il y a un interet a le faire
        // permet ausis d'initialiser le nom de fichier a coup sur
-       $curr_next = $_SERVER['REQUEST_TIME'] + queue_sleep_time_to_next_job(true);
+       $curr_next = $_SERVER['REQUEST_TIME'] + max(0,queue_sleep_time_to_next_job(true));
        if (
                        ($curr_next<=$time AND $next>$time) // le prochain job est dans le futur mais pas la date planifiee actuelle
                        OR $curr_next>$next // le prochain job est plus tot que la date planifiee actuelle
@@ -505,8 +505,9 @@ function queue_set_next_job_time($next) {
 function queue_affichage_cron(){
        $texte = "";
 
+       $time_to_next = queue_sleep_time_to_next_job();
        // rien a faire si le prochain job est encore dans le futur
-       if (queue_sleep_time_to_next_job() OR defined('_DEBUG_BLOCK_QUEUE'))
+       if ($time_to_next>0 OR defined('_DEBUG_BLOCK_QUEUE'))
                return $texte;
 
        // ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
@@ -515,6 +516,11 @@ function queue_affichage_cron(){
        @touch($lock);
 
        // il y a des taches en attentes
+       // si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup
+       // on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic
+       $urgent = false;
+       if ($time_to_next<-300)
+               $urgent = true;
 
        $url_cron = generer_url_action('cron','',false,true);
 
@@ -544,13 +550,25 @@ function queue_affichage_cron(){
                        $errno, $errstr, 1);
 
                        if ($fp) {
+                               $timeout = 200; // ms
+                               stream_set_timeout($fp,0,$timeout * 1000);
                                $query = $parts['path'].($parts['query']?"?".$parts['query']:"");
                                $out = "GET ".$query." HTTP/1.1\r\n";
                                $out.= "Host: ".$parts['host']."\r\n";
                                $out.= "Connection: Close\r\n\r\n";
                                fwrite($fp, $out);
+                               spip_timer('read');
+                               $t = 0;
+                               // on lit la reponse si possible pour fermer proprement la connexion
+                               // avec un timeout total de 200ms pour ne pas se bloquer
+                               while (!feof($fp) AND $t<$timeout) {
+                                       @fgets($fp, 1024);
+                                       $t += spip_timer('read',true);
+                                       spip_timer('read');
+                               }
                                fclose($fp);
-                               return $texte;
+                               if (!$urgent)
+                                       return $texte;
                        }
                }
                // si fsockopen n'est pas dispo on essaye cURL :
@@ -562,12 +580,13 @@ function queue_affichage_cron(){
                        // cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
                        curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
                        // valeur mini pour que la requete soit lancee
-                       curl_setopt($ch, CURLOPT_TIMEOUT_MS, 100);
+                       curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
                        // lancer
                        curl_exec($ch);
                        // fermer
                        curl_close($ch);
-                       return $texte;
+                       if (!$urgent)
+                               return $texte;
                }
        }
 
index 1a94d17..97067ce 100644 (file)
@@ -19,7 +19,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
  *
  */
 
-$GLOBALS['visiteur_session'] = ''; # globale decrivant l'auteur
+$GLOBALS['visiteur_session'] = array(); # globale decrivant l'auteur
 
 /**
  * 3 actions sur les sessions, selon le type de l'argument:
@@ -65,15 +65,25 @@ function inc_session_dist($auteur=false)
  */
 function supprimer_sessions($id_auteur, $toutes=true, $actives=true) {
 
+       $nb_files = 0;
+       $nb_max_files = (defined('_MAX_NB_SESSIONS_OUVERTES')?_MAX_NB_SESSIONS_OUVERTES:1000);
        spip_log("supprimer sessions auteur $id_auteur");
        if ($toutes OR $id_auteur!==$GLOBALS['visiteur_session']['id_auteur']) {
                if ($dir = opendir(_DIR_SESSIONS)){
-                       $t = time()  - (4*_RENOUVELLE_ALEA);
+                       $t = $_SERVER['REQUEST_TIME']  - (4*_RENOUVELLE_ALEA); // 48h par defaut
+                       $t_short = $_SERVER['REQUEST_TIME']  - max(_RENOUVELLE_ALEA/4,3*3600); // 3h par defaut
                        while(($f = readdir($dir)) !== false) {
+                               $nb_files++;
                                if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)){
                                        $f = _DIR_SESSIONS . $f;
-                                       if (($actives AND $regs[1] == $id_auteur) OR ($t > filemtime($f)))
+                                       if (($actives AND $regs[1] == $id_auteur) OR ($t > filemtime($f))){
                                                spip_unlink($f);
+                                       }
+                                       // si il y a trop de sessions ouvertes, on purge les sessions anonymes de plus de 3H
+                                       // cd http://core.spip.org/issues/3276
+                                       elseif($nb_files>$nb_max_files AND !intval($regs[1]) AND ($t_short > filemtime($f))){
+                                               spip_unlink($f);
+                                       }
                                }
                        }
                }
@@ -102,12 +112,7 @@ function ajouter_session($auteur) {
        // Attention un visiteur peut avoir une session et un id=0,
        // => ne pas melanger les sessions des differents visiteurs
        $id_auteur = intval($auteur['id_auteur']);
-       if (!isset($_COOKIE['spip_session'])
-       OR !preg_match(',^'.$id_auteur.'_,', $_COOKIE['spip_session']))
-               $_COOKIE['spip_session'] = $id_auteur.'_'.md5(uniqid(rand(),true));
 
-       $fichier_session = fichier_session('alea_ephemere');
-       
        // Si ce n'est pas un inscrit (les inscrits ont toujours des choses en session)
        // on va vérifier s'il y a vraiment des choses à écrire
        if (!$id_auteur){
@@ -124,14 +129,28 @@ function ajouter_session($auteur) {
                                unset($auteur_verif[$variable]);
                        }
                }
-               
-               // Si après ça la session est vide alors on supprime l'éventuel fichier et on arrête là
-               if (!$auteur_verif){
-                       if (@file_exists($fichier_session)) spip_unlink($fichier_session);
+               // Si après ça la session est vide et qu'on a pas de cookie session, on arrete
+               if (!$auteur_verif AND !isset($_COOKIE['spip_session'])){
                        return false;
                }
        }
-       
+
+       if (!isset($_COOKIE['spip_session'])
+         OR !preg_match(',^'.$id_auteur.'_,', $_COOKIE['spip_session'])){
+               $_COOKIE['spip_session'] = $id_auteur.'_'.md5(uniqid(rand(),true));
+       }
+
+       $fichier_session = fichier_session('alea_ephemere');
+
+       // Si la session est vide alors on supprime l'éventuel fichier et on arrête là
+       if (!$id_auteur AND !$auteur_verif){
+               if (@file_exists($fichier_session)) spip_unlink($fichier_session);
+               // unset le COOKIE de session
+               // car il est pris en compte dans spip_session() qui va croire a tort qu'on est pas un visiteur anonyme
+               unset($_COOKIE['spip_session']);
+               return false;
+       }
+
        // Maintenant on sait qu'on a des choses à écrire
        // On s'assure d'avoir au moins ces valeurs
        $auteur['id_auteur'] = $id_auteur;
@@ -268,9 +287,17 @@ function session_get($nom) {
  * @return void
  */
 function session_set($nom, $val=null) {
-       // On ajoute la valeur dans la globale
-       $GLOBALS['visiteur_session'][$nom] = $val;
-       
+
+       if (is_null($val)){
+               // rien a faire
+               if (!isset($GLOBALS['visiteur_session'][$nom])) return;
+               unset($GLOBALS['visiteur_session'][$nom]);
+       }
+       else {
+               // On ajoute la valeur dans la globale
+               $GLOBALS['visiteur_session'][$nom] = $val;
+       }
+
        ajouter_session($GLOBALS['visiteur_session']);
        actualiser_sessions($GLOBALS['visiteur_session']);
 }
index f3c2429..b0aab8a 100644 (file)
@@ -75,12 +75,8 @@ function code_echappement($rempl, $source='', $no_transform=false, $mode=NULL) {
                $return .= "<$mode class=\"base64$source\" title=\"$base64\"></$mode>";
        }
 
-       return $return
-               . ((!$no_transform AND $mode == 'div')
-                       ? "\n\n"
-                       : ''
-               );
-;
+       return $return;
+
 }
 
 
@@ -156,7 +152,7 @@ function traiter_echap_math_dist($regs) {
        return $t;
 }
 
-define('_PROTEGE_BLOCS', ',<(html|code|cadre|frame|script|math)(\s[^>]*)?>(.*)</\1>,UimsS');
+define('_PROTEGE_BLOCS', ',<(html|code|cadre|frame|script)(\s[^>]*)?>(.*)</\1>,UimsS');
 
 // - pour $source voir commentaire infra (echappe_retour)
 // - pour $no_transform voir le filtre post_autobr dans inc/filtres
index 1bb4cc9..989e763 100644 (file)
@@ -140,9 +140,13 @@ function inc_traduire_dist($ori, $lang) {
                if (empty($GLOBALS[$var])) {
                        charger_langue($lang, $module);
 
-                       // surcharge perso -- on cherche (lang/)local_xx.php ...
-                       if (!isset($local['local_'.$lang]))
+                       // surcharge perso
+                       // -- on cherche (lang/)local_xx.php ...
+                       if (!isset($local['local_'.$lang])) {
+                               // redéfinir la langue en cours pour les surcharges (chercher_langue a pu le changer)
+                               $GLOBALS['idx_lang']= $var;
                                $local['local_'.$lang] = chercher_module_lang('local', $lang);
+                       }
                        if ($local['local_'.$lang])
                                surcharger_langue($local['local_'.$lang]);
                        // ... puis (lang/)local.php
index f98fa2a..9c21837 100644 (file)
@@ -165,7 +165,7 @@ function nettoyer_url_page($url, $contexte=array())
        $url_objets = urls_liste_objets();
        $raccourci_url_page_html = ',^(?:[^?]*/)?('. $url_objets . ')([0-9]+)(?:\.html)?([?&].*)?$,';
        $raccourci_url_page_id = ',^(?:[^?]*/)?('. $url_objets .')\.php3?[?]id_\1=([0-9]+)([?&].*)?$,';
-       $raccourci_url_page_spip = ',^(?:[^?]*/)?(?:spip[.]php)?[?]('. $url_objets .')([0-9]+)(&.*)?$,';
+       $raccourci_url_page_spip = ',^(?:[^?]*/)?(?:spip[.]php)?[?]('. $url_objets .')([0-9]+)=?(&.*)?$,';
 
        if (preg_match($raccourci_url_page_html, $url, $regs)
        OR preg_match($raccourci_url_page_id, $url, $regs)
index f9bee58..a76b0fd 100644 (file)
@@ -745,7 +745,7 @@ function queue_sleep_time_to_next_job($force=null) {
                return null;
        if (!$_SERVER['REQUEST_TIME'])
                $_SERVER['REQUEST_TIME'] = time();
-       return max(0,$queue_next_job_time-$_SERVER['REQUEST_TIME']);
+       return $queue_next_job_time-$_SERVER['REQUEST_TIME'];
 }
 
 
index 7de9fe6..f588dfd 100644 (file)
@@ -84,15 +84,19 @@ AND @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_secu
        include $f;
 
 /*
- * detecteur de robot d'indexation
- * utilise en divers endroits, centralise ici si l'ecran l'a pas deja fait
+ * Détecteur de robot d'indexation
  */
-if (!defined('_IS_BOT'))
+if (!defined('_IS_BOT')){
        define('_IS_BOT',
                isset($_SERVER['HTTP_USER_AGENT'])
-               AND preg_match(',bot|slurp|crawler|spider|webvac|yandex|INA dlweb|EC2LinkFinder|80legs,i',
-                       $_SERVER['HTTP_USER_AGENT'])
+               AND preg_match(
+               // mots generiques
+                       ',bot|slurp|crawler|spider|webvac|yandex|'
+                       // UA plus cibles
+                       . '80legs|accoona|AltaVista|ASPSeek|Baidu|Charlotte|EC2LinkFinder|eStyle|Google|Genieo|INA dlweb|InfegyAtlas|Java VM|LiteFinder|Lycos|Rambler|Scooter|ScrubbyBloglines|Yahoo|Yeti'
+                       . ',i', (string)$_SERVER['HTTP_USER_AGENT'])
        );
+}
 
 //
 // *** Parametrage par defaut de SPIP ***
@@ -290,7 +294,7 @@ $liste_des_authentifications = array(
 // pour specifier les versions de SPIP necessaires
 // il faut s'en tenir a un nombre de decimales fixe
 // ex : 2.0.0, 2.0.0-dev, 2.0.0-beta, 2.0.0-beta2
-$spip_version_branche = "3.0.17";
+$spip_version_branche = "3.0.19";
 // version des signatures de fonctions PHP
 // (= numero SVN de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes)
 $spip_version_code = 17873;
index 46d20ed..4ccaa43 100644 (file)
@@ -411,7 +411,7 @@ class IterateurDATA implements Iterator {
                                        $a = '.sprintf($tv,'$aa').';
                                        $b = '.sprintf($tv,'$bb').';
                                        if ($a <> $b)
-                                               return ($a ' . ($r[2] ? '>' : '<').' $b) ? -1 : 1;';
+                                               return ($a ' . ((isset($r[2]) and $r[2]) ? '>' : '<').' $b) ? -1 : 1;';
                                }
                        }
                }
@@ -518,7 +518,25 @@ function inc_plugins_to_array_dist() {
  * @return array
  */
 function inc_xml_to_array_dist($u) {
-       return @ObjectToArray(new SimpleXmlIterator($u));
+       return @XMLObjectToArray(new SimpleXmlIterator($u));
+}
+
+/**
+ *
+ * object -> tableau
+ *
+ * @param    object  $object The object to convert
+ * @return   array
+ *
+ */
+function inc_object_to_array( $object ) {
+    if( !is_object( $object ) && !is_array( $object ) ) {
+        return $object;
+    }
+    if( is_object( $object ) ) {
+        $object = get_object_vars( $object );
+    }
+    return array_map( 'inc_object_to_array', $object );
 }
 
 /**
@@ -535,7 +553,7 @@ function inc_yql_to_array_dist($u) {
                throw new Exception('YQL: r&#233;ponse vide ou mal form&#233;e');
                return false;
        }
-       return (array) $w;
+       return inc_object_to_array($w);
 }
 
 /**
@@ -679,7 +697,7 @@ function inc_ls_to_array_dist($u) {
  * @param Object $object
  * @return array|bool
  */
-function ObjectToArray($object){
+function XMLObjectToArray($object){
        $xml_array = array();
        for( $object->rewind(); $object->valid(); $object->next() ) {
                if(array_key_exists($key = $object->key(), $xml_array)){
@@ -690,7 +708,7 @@ function ObjectToArray($object){
                        foreach($vars['@attributes'] as $k => $v)
                        $xml_array[$key][$k] = $v;
                if($object->hasChildren()){
-                       $xml_array[$key][] = ObjectToArray(
+                       $xml_array[$key][] = XMLObjectToArray(
                                $object->current());
                }
                else{
index 3ce31cd..21c93b0 100644 (file)
@@ -726,6 +726,7 @@ dans une couleur qui indique leur état :',
 
        // N
        'nouvelle_version_spip' => 'La version @version@ de SPIP est disponible',
+       'nouvelle_version_spip_majeure' => 'Une nouvelle version majeure @version@ est disponible',
 
        // O
        'onglet_contenu' => 'Contenu',
diff --git a/www/ecrire/lang/ecrire_oc_ni_mis.php b/www/ecrire/lang/ecrire_oc_ni_mis.php
new file mode 100644 (file)
index 0000000..b9f13b1
--- /dev/null
@@ -0,0 +1,895 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/ecrire_?lang_cible=oc_ni_mis
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'activer_plugin' => 'Ativà lou plugin',
+       'affichage' => 'Afichage',
+       'aide_non_disponible' => 'Aquela partida de l’ajuda en ligna es pas encara dispounibla per aquela lenga.',
+       'annuler_recherche' => 'Anulà la recerca',
+       'auteur' => 'Autour :',
+       'avis_acces_interdit' => 'Achès prouhibit.',
+       'avis_article_modifie' => 'Mèfi, @nom_auteur_modif@ a travalhat soubre aquel article @date_diff@ minuta fa',
+       'avis_aucun_resultat' => 'Mìnga resultat.',
+       'avis_base_inaccessible' => 'Empoussible de si counetà a la basa de dounada @base@.',
+       'avis_chemin_invalide_1' => 'Lou camin qu’avès chausit',
+       'avis_chemin_invalide_2' => 'noun sembla vàlidou. Vourguès tournà a la pàgina prechedenta e verificà li informacioun prouvedi.',
+       'avis_connexion_echec_1' => 'La counessioun a la basa de dounada a souhit.',
+       'avis_connexion_echec_2' => 'Tournàs à la pàgina anterioura, e verificàs li informacioun qu’avès prouvedi.',
+       'avis_connexion_echec_3' => '<b>N.B.</b> Soubre touplen de servidou, devès <b>demandà</b> l’ativacioun dóu vouòstre achès a la basa de dounada denant de la poudé utilisà. Se noun vi poudès counetà, verificàs qu’avès ben realisat aquela demarcha.',
+       'avis_connexion_erreur_creer_base' => 'La basa de dounada a pas pouscut estre creada.',
+       'avis_connexion_erreur_nom_base' => 'Lou noum de la basa de dounada pòu countenì que dei letra, dei chifra o dei ligneta',
+       'avis_connexion_ldap_echec_1' => 'La counessioun au servidou LDAP a souhit.',
+       'avis_connexion_ldap_echec_2' => 'Tournàs a la pàgina prechedenta, e verificàs li infourmacioun qu’avès prouvedi. ',
+       'avis_connexion_ldap_echec_3' => 'D’un biais alternatiéu, noun utilisàs lou supouart LDAP per impourtà d’utilisaire.',
+       'avis_deplacement_rubrique' => 'Mèfi ! Aquela rùbrica counten @contient_breves@ brèva @scb@ : se la desplaçàs, vourguès ben entacà aquela casa de counfirmacioun.',
+       'avis_erreur_connexion_mysql' => 'Errour de counessioun SQL',
+       'avis_espace_interdit' => '<b>Espaci prouhibit</b><div>SPIP es ja instalat.</div>',
+       'avis_lecture_noms_bases_1' => 'Lou prougrama d’instalacioun a pas pouscut legì lu noum dei basa de dounada instaladi.',
+       'avis_lecture_noms_bases_2' => 'Sìa minga de basa es dispounibla, sìa la founcioun que permete de listà li basa es estada desativada
+               per de rasoun de segurtà (cen qu’es lou cas de plusiur aubergadour).',
+       'avis_lecture_noms_bases_3' => 'En la segounda alternativa, es proubable qu’una basa que pouòrta lou vouòstre noum de counessioun sigue utilisabla :',
+       'avis_non_acces_page' => 'Noun avès achès en aquela pàgina.',
+       'avis_operation_echec' => 'L’ouperacioun a souhit.',
+       'avis_operation_impossible' => 'Ouperacioun empoussibla',
+       'avis_suppression_base' => 'MÈFI, la supressioun dei dounada es irreversibla',
+
+       // B
+       'bouton_acces_ldap' => 'Ajustà l’achès a LDAP',
+       'bouton_ajouter' => 'Ajustà',
+       'bouton_annuler' => 'Anulà',
+       'bouton_cache_activer' => 'Reativà l’amagadou',
+       'bouton_cache_desactiver' => 'Desativà tempourariamen l’amagadou',
+       'bouton_demande_publication' => 'Demandà la publicacioun d’aquel article',
+       'bouton_desactive_tout' => 'Desativà tout',
+       'bouton_desinstaller' => 'Desinstalà',
+       'bouton_effacer_tout' => 'Escassà TOUT',
+       'bouton_envoyer_message' => 'Message definitiéu : mandà',
+       'bouton_fermer' => 'Fermà',
+       'bouton_mettre_a_jour_base' => 'Metre a jou la basa de dounada',
+       'bouton_modifier' => 'Moudificà',
+       'bouton_radio_afficher' => 'Afichà',
+       'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Aparèisse en la lista dei redatour counectat',
+       'bouton_radio_envoi_annonces_adresse' => 'Mandà li anounça à l’adressa :',
+       'bouton_radio_envoi_liste_nouveautes' => 'Mandà la lista dei nouvità',
+       'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Noun aparèisse en la lista dei redatour',
+       'bouton_radio_non_envoi_annonces_editoriales' => 'Noun mandà d’anounça editouriali',
+       'bouton_redirection' => 'REDIRECIOUN',
+       'bouton_relancer_installation' => 'Relançà l’instalacioun',
+       'bouton_suivant' => 'Seguent',
+       'bouton_tenter_recuperation' => 'Prouvà una recuperacioun',
+       'bouton_test_proxy' => 'Prouvà lou proxy',
+       'bouton_vider_cache' => 'Vuà l’amagadou',
+
+       // C
+       'cache_modifiable_webmestre' => 'Lou webmestre dóu sit pòu modificà aquèu paramètre.',
+       'calendrier_synchro' => 'S’utilisàs un lougiciau d’agènda coumpatible embé <b>iCal</b>, lou poudès sincronisà embé li informacioun d’estou sit.',
+       'config_activer_champs' => 'Ativà lu camp segoun',
+       'config_choix_base_sup' => 'endicà una basa soubre aquestou servidou',
+       'config_erreur_base_sup' => 'SPIP a pas achès à la lista dei basa achessibli',
+       'config_info_base_sup' => 'Se avès d’autri basa de dounada da interrougà pèr SPIP, embé lou siéu servidou SQL o embé un autre, lou fourmulari aquì souta, vi permete de li declarà. Se laissàs d’uni camp vuèi, lu identificant de counessioun a la basa principala seran utilisat.',
+       'config_info_base_sup_disponibles' => 'Basa suplementari jà interogable :',
+       'config_info_enregistree' => 'La counfiguracioun nouvela es estada registrada',
+       'config_info_logos' => 'Cada elemen dóu site pòu avé un logou, e un « logou de survol »',
+       'config_info_logos_utiliser' => 'Utilisà lu logo',
+       'config_info_logos_utiliser_non' => 'Noun utilisà lu logo',
+       'config_info_logos_utiliser_survol' => 'Utilisà lu logo de survol',
+       'config_info_logos_utiliser_survol_non' => 'Noun utilisà lu logo de survol',
+       'config_info_redirection' => 'En ativant aquela oupcioun, poudès creà dei article virtual, simple referença d’article publicat soubre d’autre sit o fouòra de SPIP.',
+       'config_redirection' => 'Article virtual',
+       'config_titre_base_sup' => 'Declaracioun d’una basa suplementari',
+       'config_titre_base_sup_choix' => 'Chausissès una basa suplementari',
+       'connexion_ldap' => 'Counessioun :',
+       'creer_et_associer_un_auteur' => 'Creà et assoucià un autour',
+
+       // D
+       'date_mot_heures' => 'oura',
+
+       // E
+       'ecran_securite' => ' + ecran de segurtà @version@',
+       'email' => 'e-mail',
+       'email_2' => 'e-mail:',
+       'en_savoir_plus' => 'N’en saupre de mai',
+       'entree_adresse_annuaire' => 'Adressa de l’anuari',
+       'entree_adresse_email' => 'La vouòstra adressa e-mail',
+       'entree_adresse_email_2' => 'Adressa e-mail',
+       'entree_base_donnee_1' => 'Adressa de la basa de dounada',
+       'entree_base_donnee_2' => '(Souventi fès, aquela adressa courrespouònde en aquela dóu vouòstre sit, de còu courrespouònde à la mencioun « localhost », d’autre còu, es laissada vuèia coumpletamen.)',
+       'entree_biographie' => 'Biougrafìa brèva, en quauque mot.',
+       'entree_chemin_acces' => '<b>Entrà</b> lou camin d’achès :',
+       'entree_cle_pgp' => 'La vouòstra clau PGP',
+       'entree_cle_pgp_2' => 'Clau PGP',
+       'entree_contenu_rubrique' => '(Countengut de la rùbrica en quauque mot.)',
+       'entree_identifiants_connexion' => 'Lu vouòstre identificant de counessioun...',
+       'entree_identifiants_connexion_2' => 'Identificant de counessioun',
+       'entree_informations_connexion_ldap' => 'Vourguès entrà en aqueu fourmulari li informacioun de counessioun au vouòstre anuari LDAD.
+Aqueli informacioun vi devon poudé estre prouvedi per l’aministratour dóu sistema, o de la taragnina.',
+       'entree_infos_perso' => 'Qu sias ?',
+       'entree_infos_perso_2' => 'Qu es l’autour ?',
+       'entree_interieur_rubrique' => 'Dintre la rùbrica:',
+       'entree_liens_sites' => '<b>Estac ipertèst</b> (referença, sit da visità...)',
+       'entree_login' => 'Lou vouòstre login',
+       'entree_login_connexion_1' => 'Lou login de counecioun',
+       'entree_login_connexion_2' => '(Courrespouònde de còu au vouòstre login d’accès FTP; de còu laissat vuèi)',
+       'entree_mot_passe' => 'Lou vouòstre mot de passa',
+       'entree_mot_passe_1' => 'Lou mot de passa de counecioun',
+       'entree_mot_passe_2' => '(Courrespouònde de còu au vouòstre mot de passa per lou FTP; de còu es laissat vuèi)',
+       'entree_nom_fichier' => 'Vourguès entrà lou noum dóu fichié @texte_compresse@:',
+       'entree_nom_pseudo' => 'Lou vouòstre noum o lou vouòstre pseudounime',
+       'entree_nom_pseudo_1' => '(Lou vouòstre noum o lou vouòstre pseudounime)',
+       'entree_nom_pseudo_2' => 'Noum o pseudounime',
+       'entree_nom_site' => 'Lou noum dóu vouòstre sit',
+       'entree_nom_site_2' => 'Noum dóu sit de l’autour',
+       'entree_nouveau_passe' => 'Mot de passa novèu',
+       'entree_passe_ldap' => 'Mot de passa',
+       'entree_port_annuaire' => 'Lou numerò de pouòrt de l’anuari',
+       'entree_signature' => 'Firma',
+       'entree_titre_obligatoire' => '<b>Titre</b> [Oubligatori]<br />',
+       'entree_url' => 'L’adressa (URL) dóu vouòstre sit',
+       'entree_url_2' => 'Adressa (URL) dóu sit',
+       'erreur_connect_deja_existant' => 'Un servidou esista jà embé aqueu noum',
+       'erreur_email_deja_existant' => 'Aquela adressa e-mail es jà registrada.',
+       'erreur_nom_connect_incorrect' => 'Aqueu noum de servidou noun es autourisat',
+       'erreur_plugin_attribut_balise_manquant' => 'Atribut @attribut@ mancant en la balisa @balise@.',
+       'erreur_plugin_desinstalation_echouee' => 'La desinstalacioun dóu plugin a souhit. Mà poudès lou desativà.',
+       'erreur_plugin_fichier_absent' => 'Fichié assent',
+       'erreur_plugin_fichier_def_absent' => 'Fichié de definicioun assent',
+       'erreur_plugin_nom_fonction_interdit' => 'Noum de founcioun prouhibit',
+       'erreur_plugin_nom_manquant' => 'Noum dóu plugin mancant',
+       'erreur_plugin_prefix_manquant' => 'Espaci de noumage dóu plugin noun definit',
+       'erreur_plugin_tag_plugin_absent' => '&lt;plugin&gt; assent dóu fichié de definicioun',
+       'erreur_plugin_version_manquant' => 'Mìnga versioun dóu plugin',
+
+       // H
+       'htaccess_a_simuler' => 'Avertissamen : la counfiguracioun dóu vouòstre servidou HTTP noun ten rasoun dei fichié @htaccess@. Per poudé assegurà una bouòna segurtà, vi cóu moudificà aquela counfiguracioun soubre aqueu pounch, o que li coustanta @constantes@ (definissable en lou fichié mes_options.php) aiguon dei repertori en defouòra de @document_root@ per valour.',
+       'htaccess_inoperant' => 'htaccess inouperant',
+
+       // I
+       'ical_info1' => 'Esta pàgina presenta de metoda diferenti da restà en countat embé la vida d’estou sit.',
+       'ical_info2' => 'Per avé mai d’informacioun soubre aqueli tècnica, noun esitàs de counsultà <a href="@spipnet@">la doucumentacioun de SPIP</a>.',
+       'ical_info_calendrier' => 'Li a doui calendari a la vouòstra dispousicioun. Lou premié es un plan dóu sit qu’anounça toui lu article publicat. Lou segount counten li anounça editoriali en mai dei vouòstre darrié message privat : v’es reservat graça a una clau persounala, que la poudès moudificà a cada moumen en renouvelant lou vouòstre mot de passa.',
+       'ical_methode_http' => 'Telecargamen',
+       'ical_methode_webcal' => 'Sincronisacioun (webcal://)',
+       'ical_texte_js' => 'Una ligna de javascript vi permete d’afichà simplamen, soubre toui lu vouòstre sit, lu article rechentamen publicat soubre estou sit. ',
+       'ical_texte_prive' => 'Estou calendari, d’usage estrech personal, v’infourma de l’atività editoriala privada d’estou sit (taca e apountamen persounal, article e brèva proupausat...).',
+       'ical_texte_public' => 'Estou calendari vi permete de sègre l’atività pùblica d’estou sit (article e brèva publicadi).',
+       'ical_texte_rss' => 'Poudès sindicà li nouvità d’estou sit en toui lu letour de fichié en format XML/RSS (Rich Site Summary). Es finda lou format que permete à SPIP de legì li nouvità publicadi soubre d’autre sit en utilisant un format d’escambi compatible (sit sindicat).',
+       'ical_titre_js' => 'Javascript',
+       'ical_titre_mailing' => 'Mailing-list',
+       'ical_titre_rss' => 'Fichié de sindicacioun',
+       'icone_accueil' => 'Acuèlh',
+       'icone_activer_cookie' => 'Ativà lou cookie de courrespoundença',
+       'icone_activite' => 'Atività',
+       'icone_admin_plugin' => 'Gestioun dei plugin',
+       'icone_administration' => 'Mantenença',
+       'icone_afficher_auteurs' => 'Afichà lu autour',
+       'icone_afficher_visiteurs' => 'Afichà lu visitaire',
+       'icone_arret_discussion' => 'Plus participà en aquela discussioun',
+       'icone_calendrier' => 'Calendari',
+       'icone_configuration' => 'Counfiguracioun',
+       'icone_creer_auteur' => 'Creà un nouvèl autour e l’assoucià en aquel article',
+       'icone_creer_mot_cle' => 'Creà un nouvèu mot clau e lou ligà en aquel article',
+       'icone_creer_rubrique_2' => 'Creà una novèla rùbrica',
+       'icone_developpement' => 'Desfouloupamen',
+       'icone_edition' => 'Edicioun',
+       'icone_ma_langue' => 'La mieu lenga',
+       'icone_mes_infos' => 'Li mieu infourmacioun',
+       'icone_mes_preferences' => 'Li mieu preferença',
+       'icone_modifier_article' => 'Moudificà aquel article',
+       'icone_modifier_rubrique' => 'Moudificà aquela rùbrica',
+       'icone_publication' => 'Publicacioun',
+       'icone_relancer_signataire' => 'Relançà lou signatari',
+       'icone_retour' => 'Retour',
+       'icone_retour_article' => 'Retour a l’article',
+       'icone_squelette' => 'Esquèletrou',
+       'icone_suivi_publication' => 'Segut de la publicacioun',
+       'icone_supprimer_cookie' => 'Suprimà lou cookie de courrespoundença',
+       'icone_supprimer_rubrique' => 'Suprimà aquela rùbrica',
+       'icone_supprimer_signature' => 'Suprimà aquela firma',
+       'icone_valider_signature' => 'Validà aquela firma',
+       'image_administrer_rubrique' => 'Poudès aministrà aquela rùbrica',
+       'info_1_article' => '1 article',
+       'info_1_auteur' => '1 autour',
+       'info_1_message' => '1 message',
+       'info_1_mot_cle' => '1 mot clau',
+       'info_1_rubrique' => '1 rùbrica',
+       'info_1_visiteur' => '1 visitour',
+       'info_activer_cookie' => 'Poudès ativà un <b>cookie de courrespoundença</b>; acò vi permeterà de passà facilamen dóu sit pùblicou au sit privat.',
+       'info_activer_menu_developpement' => 'Afichà lou menù Desfouloupamen',
+       'info_admin_etre_webmestre' => 'Mi dounà lu drech de webmestre',
+       'info_admin_gere_rubriques' => 'Aquel aministratour gèra li rùbrica seguenti:',
+       'info_admin_gere_toutes_rubriques' => 'Aquel aministratour gèra<b>touti li rùbrica</b>.',
+       'info_admin_gere_toutes_rubriques_2' => 'Gèri <b>touti li rùbrica</b>',
+       'info_admin_je_suis_webmestre' => 'Siéu <b>webmestre</b>',
+       'info_admin_statuer_webmestre' => 'Dounà en aquel aministratour lu drech de webmèstre',
+       'info_admin_webmestre' => 'Aquel aministratour es <b>webmestre</b>',
+       'info_administrateur' => 'Aministratour',
+       'info_administrateur_1' => 'Aministratour',
+       'info_administrateur_2' => 'dóu sit (<i>utilisàs embé precaucioun</i>)',
+       'info_administrateur_site_01' => 'Se siàs aministratour dóu sit, vourguès',
+       'info_administrateur_site_02' => 'clicà soubre aquel estac',
+       'info_administrateurs' => 'Aministratour',
+       'info_administrer_rubrique' => 'Poudès aministrà aquela rùbrica',
+       'info_adresse' => 'a l’adressa:',
+       'info_adresse_desinscription' => 'Adressa de desinscricioun',
+       'info_adresse_url' => 'Adressa (URL) dóu sit pùblicou',
+       'info_afficher_par_nb' => 'Afichà per',
+       'info_aide_en_ligne' => 'Ajuda en ligna SPIP',
+       'info_ajout_image' => 'Quoura ajustàs d’image couma doucumen jounch a un article,
+               SPIP pòu creà autoumaticamen, per vautre, de vigneta (miniatura) dei
+               image inseridi. Acò permet per isemple de creà
+               autoumaticamen una galarìa o un pouòrtafoliò.',
+       'info_ajouter_rubrique' => 'Ajustà un’autra rùbrica a aministrà:',
+       'info_annonce_nouveautes' => 'Anounça dei nouvità',
+       'info_article' => 'article',
+       'info_article_2' => 'article',
+       'info_article_a_paraitre' => 'Lu article post-datat per pareisse',
+       'info_articles_02' => 'article',
+       'info_articles_2' => 'Article',
+       'info_articles_auteur' => 'Lu article d’aquel autour',
+       'info_articles_miens' => 'Lu mieu article',
+       'info_articles_tous' => 'Toui lu article',
+       'info_articles_trouves' => 'Article troubat',
+       'info_attente_validation' => 'Lu vouòstre article en aspera de validacioun',
+       'info_aucun_article' => 'Mìnga article',
+       'info_aucun_auteur' => 'Mìnga autour',
+       'info_aucun_message' => 'Minga message',
+       'info_aucun_rubrique' => 'Mìnga rùbrica',
+       'info_aujourdhui' => 'Ancuei :',
+       'info_auteurs' => 'Lu autour',
+       'info_auteurs_par_tri' => 'autour@partri@',
+       'info_auteurs_trouves' => 'Autour troubat',
+       'info_authentification_externe' => 'Autentificacioun esterna',
+       'info_avertissement' => 'Avertissamen',
+       'info_barre_outils' => 'embé la siéu barra d’óutis ?',
+       'info_base_installee' => 'L’estrutura de la vouòstra basa de dounada es instalada.',
+       'info_bio' => 'Biougrafìa',
+       'info_cache_desactive' => 'L’amagadou es tempourariamen desativat.',
+       'info_chapeau' => 'Capèu',
+       'info_chapeau_2' => 'Capèu :',
+       'info_chemin_acces_1' => 'Oupcioun : <b>camin d’achès en l’anuari</b>',
+       'info_chemin_acces_2' => 'Devès ahura counfigurà lou camin d’accès ai infourmacioun en l’anuari. Aquela infourmacioun es necessari per legì lu proufiéu d’utilisaire amoulounat en l’anuari.',
+       'info_chemin_acces_annuaire' => 'Oupcioun: <b>camin d’accès en l’anuari</b>',
+       'info_choix_base' => 'Tèrsa tapa :',
+       'info_classement_1' => '<sup>é</sup> sus @liste@',
+       'info_classement_2' => '<sup>nt</sup> sus @liste@',
+       'info_code_acces' => 'Noun denembràs lu vouòtre code d’accès persounal!',
+       'info_compatibilite_html' => 'Nourma HTML da sègre',
+       'info_config_suivi' => 'S’aquela adressa courrespouònde a una mailing-list, poudès endicà aquì souta l’adressa que lu participant au sit si pouòdon inscriéure. Aquela adressa pòu estre una URL (per isemple la pàgina d’inscricioun a la lista per web), o una adressa e-mail embé un sujet especific (per isemple : <tt>@adresse_suivi@?subject=subscribe</tt>) :',
+       'info_config_suivi_explication' => 'Vi poudès abounà a la mailing-list d’estou sit. Receverès per courrié eletrounic li anounça dei article e brèva proupausat a la publicacioun.',
+       'info_confirmer_passe' => 'Counfirmà aqueu mot de passa nouvèu :',
+       'info_conflit_edition_avis_non_sauvegarde' => 'Mèfi, aquelu camp soun estat moudificat per quauqun. Vouòstri moudificacioun sus aquelu camp noun soun estadi registradi.',
+       'info_conflit_edition_differences' => 'Diferença :',
+       'info_conflit_edition_version_enregistree' => 'La versioun registrada :',
+       'info_conflit_edition_votre_version' => 'La vouòstra versioun :',
+       'info_connexion_base' => 'Prova de counessioun a la basa',
+       'info_connexion_base_donnee' => 'Counessioun a la vouòstra basa de dounada',
+       'info_connexion_ldap_ok' => '<b>La counessioun LDAP a reussit.</b><p> Poudès passà a la tapa seguenta.</p>',
+       'info_connexion_mysql' => 'La vouòstra counessioun SQL',
+       'info_connexion_ok' => 'La counessioun a reussit.',
+       'info_contact' => 'Countat',
+       'info_contenu_articles' => 'Countengut dei article',
+       'info_contributions' => 'Countribucioun',
+       'info_creation_paragraphe' => 'Per creà de paràgrafou, laissàs simplamen dei ligna vuèii.',
+       'info_creation_rubrique' => 'Denant de poudé escrieure d’article,<br /> devès creà au màncou una rùbrica.<br />',
+       'info_creation_tables' => 'Creacioun dei taula de la basa',
+       'info_creer_base' => '<b>Creà</b> una nouvela basa de dounada :',
+       'info_dans_rubrique' => 'En la rùbrica:',
+       'info_date_publication_anterieure' => 'Data anterioura de redacioun :',
+       'info_date_referencement' => 'DATA DE REFERENÇAMEN D’AQUEU SIT :',
+       'info_derniere_etape' => 'Es acabat !',
+       'info_descriptif' => 'Descritiéu :',
+       'info_desinstaller_plugin' => 'suprima li dounada e desativa lou plugin',
+       'info_discussion_cours' => 'Discussioun en cours',
+       'info_ecrire_article' => 'Denant de poudé escriéure d’article, devès au mancou creà una rùbrica.',
+       'info_email_envoi' => 'Adressa e-mail d’espedissioun (oupciounau)',
+       'info_email_envoi_txt' => 'Endicàs aquí l’adressa da utilisà per mandà lu e-mails (en mancança, s’utiliserà l’adressa destinatàri couma adressa d’espedissioun):',
+       'info_email_webmestre' => 'Adressa e-mail dau webmestre',
+       'info_envoi_email_automatique' => 'Espedissioun d’e-mails autoumatic',
+       'info_envoyer_maintenant' => 'Mandà ahura',
+       'info_etape_suivante' => 'Passà a la tapa seguenta',
+       'info_etape_suivante_1' => 'Poudès passà a la tapa seguenta.',
+       'info_etape_suivante_2' => 'Poudès passà a la tapa seguenta.',
+       'info_exceptions_proxy' => 'Ecepcioun per lou proxy',
+       'info_exportation_base' => 'Espourtacioun de la basa vers @archive@',
+       'info_facilite_suivi_activite' => 'Per fin de facilità lou segut de l’atività editouriala dóu sit, SPIP vi pòu fournì per e-mail, per isemple a una mailing-list dei redatour, l’anounça dei demanda de publicacioun e de validacioun d’article.',
+       'info_fichiers_authent' => 'Fichié d’autentificacioun « .htpasswd »',
+       'info_forums_abo_invites' => 'Lou vouòstre sit web counten de fòrou per lu abounat ; lu visitaire soun counvidat de si registrà sus lou sit public.',
+       'info_gauche_admin_tech' => '<b>Aquela pàgina es basta achessible ai respounsable dóu sit.</b><p> Douna achès ai diferenti founcioun de mantenença tecnica. D’uni d’entre eli implicoun un prouchedimen d’autentificacion especific, que
+ necessita d’avé un achès FTP au sit web.</p>',
+       'info_gauche_admin_vider' => '<b>Aquela pàgina es basta achessible ai respounsable dóu sit.</b><p> Douna achès ai diferenti founcioun de mantenença tecnica. D’uni d’entre eli implicoun un prouchedimen d’autentificacion especific, que necessita d’avé un achès FTP au sit web.</p>',
+       'info_gauche_auteurs' => 'Trouberès aquì toui lu autour dóu sit.
+ Lou sieu estatut es endicat per la coulou de la sieu icona (aministratour : verda; redatour : jauna).',
+       'info_gauche_auteurs_exterieurs' => 'Lu autour esteriour, sensa achès au sit, soun endicat per una icona blua ; lu autour escassat per una icona grìha.',
+       'info_gauche_messagerie' => 'La messagerìa vi permete d’escambià de message entre redatour, de counservà de nota de renembrança (per lou vouòstre usage persounal) o d’afichà d’anounça sus la pàgina d’acuèlh de l’espaci privat (se sias aministratour).',
+       'info_gauche_statistiques_referers' => 'Aquela pàgina presenta la lista dei <i>referit</i>, es a dire dei sit que countenon d’estac que menon drech au vouòstre sit, ma basta per ièr e ancuèi ; aquela lista es atualisada cada 24 oura.',
+       'info_gauche_visiteurs_enregistres' => 'Trouberès aquì lu visitour registrat en l’espaci public dóu sit (fòrou sus abounamen).',
+       'info_generation_miniatures_images' => 'Generacioun de miniatura dei image',
+       'info_gerer_trad_objets' => '@objets@ : gerà lu estac de traducioun',
+       'info_hebergeur_desactiver_envoi_email' => 'Lì soun d’aubergadour que desativon l’espedissioun autoumatica
+               d’e-mail dai sieu servidou. En aqueu cas, li founciounalità seguenti
+               de SPIP noun founciouneràn.',
+       'info_hier' => 'ièr :',
+       'info_identification_publique' => 'La vouòstra identitat publica...',
+       'info_image_process' => 'Vourguès seleciounà lou milhour mètodou de fabricacioun dei vigneta en clicant sus l’image courrespoundenta.',
+       'info_image_process2' => 'Se minga d’image parèisse, aloura lou servidou qu’auberga lou vouòstre sit noun es estat configurat per utilisà aquelu óutis. Se vourguès utilisà aqueli founcioun, contactàs lou respounsable tecnic e demandàs li estensioun « GD » o « Imagick ».',
+       'info_images_auto' => 'Image carculadi autoumaticamen',
+       'info_informations_personnelles' => 'Infourmacioun persounali',
+       'info_inscription' => 'Inscricioun lou',
+       'info_inscription_automatique' => 'Inscricioun autoumatica de redatour novèu',
+       'info_jeu_caractere' => 'Juèc de caratère dóu sit',
+       'info_jours' => 'jou',
+       'info_laisser_champs_vides' => 'laissà lu camp vuèi)',
+       'info_langues' => 'Lenga dóu sit',
+       'info_ldap_ok' => 'L’autentificacioun LDAP es instalada.',
+       'info_lien_hypertexte' => 'Estac ipertèst :',
+       'info_liste_nouveautes_envoyee' => 'La lista dei nouvità a estat mandada',
+       'info_liste_redacteurs_connectes' => 'Lista dei redatour counectat',
+       'info_login_existant' => 'Aqueu login jà esista.',
+       'info_login_trop_court' => 'Login tròu court.',
+       'info_login_trop_court_car_pluriel' => 'Le login déu countenì au mens @nb@ caratère.',
+       'info_logos' => 'Lu logou',
+       'info_maximum' => 'massimoum :',
+       'info_meme_rubrique' => 'En la mema rùbrica',
+       'info_message_en_redaction' => 'Lu vouòstre message en cours de redacioun',
+       'info_message_technique' => 'Message tècnicou :',
+       'info_messagerie_interne' => 'Messagerìa interna',
+       'info_mise_a_niveau_base' => 'Metuda à nivèu de la vouòstra basa SQL',
+       'info_mise_a_niveau_base_2' => '{{Mèfi!}} Avès instalat una versioun de fichié SPIP {anterioura} en aquela que si troubava avant soubre estou sit : la vouòstra basa de dounada risca d’estre perduda e lou vouòstre sit noun founciounerà plus.<br />{{Reinstalà lu fichié de SPIP.}}',
+       'info_modification_enregistree' => 'La vouòtra moudificacioun a estat registrada',
+       'info_modifier_auteur' => 'Moudificà l’autour :',
+       'info_modifier_rubrique' => 'Moudificà la rùbrica :',
+       'info_modifier_titre' => 'Moudificà: @titre@',
+       'info_mon_site_spip' => 'Lou mieu sit SPIP',
+       'info_moyenne' => 'mejana :',
+       'info_multi_cet_article' => 'Lenga d’aquest article :',
+       'info_multi_langues_choisies' => 'Vourguès seleciounà aquì souta li lenga que soun à dispousicioun dei redatour dóu vouòstre sit.
+  Li lenga ja emplegadi en lou vouòstre sit (afichadi en premié) noun si pouòdon desativà.',
+       'info_multi_objets' => '@objets@ : ativà lou menù de lenga',
+       'info_multi_secteurs' => '... basta per li rùbrica a la raïs dau sit ?',
+       'info_nb_articles' => '@nb@ article',
+       'info_nb_auteurs' => '@nb@ autour',
+       'info_nb_messages' => '@nb@ message',
+       'info_nb_mots_cles' => '@nb@ mot clau',
+       'info_nb_rubriques' => '@nb@ rùbrica',
+       'info_nb_visiteurs' => '@nb@ visitour',
+       'info_nom' => 'Noum',
+       'info_nom_destinataire' => 'Noum dau destinatàri',
+       'info_nom_pas_conforme' => 'lu tag html noun soun autourisat',
+       'info_nom_site' => 'Noum dóu vouòstre site',
+       'info_nombre_articles' => '@nb_articles@ article,',
+       'info_nombre_rubriques' => '@nb_rubriques@ rùbrica,',
+       'info_nombre_sites' => '@nb_sites@ sit,',
+       'info_non_deplacer' => 'Noun desplaçà...',
+       'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP pòu mandà regulieramen, l’anounça dei darrieri nouvità dóu sit (article e brèva publicadi darieramen).',
+       'info_non_envoi_liste_nouveautes' => 'Noun mandà la lista dei nouvità',
+       'info_non_modifiable' => 'noun pòu èstre modificat',
+       'info_non_suppression_mot_cle' => 'noun vouòli suprimà aqueu mot clau.',
+       'info_notes' => 'Nota',
+       'info_nouvel_article' => 'Article nòu',
+       'info_nouvelle_traduction' => 'nouvela traducioun :',
+       'info_numero_article' => 'ARTICLE NUMERÒ',
+       'info_obligatoire_02' => '(Oubligatori)',
+       'info_option_accepter_visiteurs' => 'Achetà l’inscricioun dei visitaire dóu sit public',
+       'info_option_ne_pas_accepter_visiteurs' => 'Refudà l’inscricioun dei visitour',
+       'info_options_avancees' => 'OUPCIOUN AVANÇADI',
+       'info_ou' => 'o... ',
+       'info_page_interdite' => 'Pàgina prouhibida',
+       'info_par_nom' => 'per noum',
+       'info_par_nombre_article' => 'per noumbre d’article',
+       'info_par_statut' => 'per estatut',
+       'info_par_tri' => '’(per @tri@)’',
+       'info_passe_trop_court' => 'Mot de passa tròu court.',
+       'info_passe_trop_court_car_pluriel' => 'Lou mot de passa dèu countenì au mens @nb@ caratère.',
+       'info_passes_identiques' => 'Li doui mot de passa noun soun identic.',
+       'info_plus_cinq_car' => 'mai de 5 caractère',
+       'info_plus_cinq_car_2' => '(mai de 5 caractère)',
+       'info_plus_trois_car' => '(mai de 3 caractère)',
+       'info_popularite' => 'poupularità : @popularite@ ; visita : @visites@',
+       'info_post_scriptum' => 'Post-Escrich',
+       'info_post_scriptum_2' => 'Post-Escrich :',
+       'info_pour' => 'per',
+       'info_preview_texte' => 'Es poussible de previsualisà lou sit couma se toui lu article e brèva (que àugue au màncou lou statut « proupausat ») èron publicat. Dèu aquela poussibilità estre duberda basta ai aministratour, a toui lu redatour, o a degun ?',
+       'info_procedez_par_etape' => 'proucedès tapa per tapa',
+       'info_procedure_maj_version' => 'la proucedura de metuda a jou dèu èstre lançada per adatà la basa de dounada a la nouvèla version de SPIP.',
+       'info_proxy_ok' => 'Prova dóu proxy ruèisset.',
+       'info_ps' => 'P.-S.',
+       'info_publier' => 'publicà',
+       'info_publies' => 'Lu vouòstre article publicat en ligna',
+       'info_question_accepter_visiteurs' => 'Se lu esquèletrou dóu vouòstre sit prevehon lou registramen de visitour sensa achès a l’espaci privat, vourguès ativà l’oupcioun seguenta :',
+       'info_question_inscription_nouveaux_redacteurs' => 'Achetàs li inscricioun de nouvèu redatour a
+ partì dau sit public ? Se l’achetàs, lu visitaire si pouran inscriéure
+ da un fourmulari autoumatisat e achederan aloura a l’espaci privat per
+ proupausà lu sieu article pròpi.<div class="notice">Dóu tems de la fasa d’inscricioun,
+ lu utilisaire recebon un courrié eletrounic automàticou
+ que li prouvedisse lu sieu code d’achès au sit privat. D’unu
+ aubergadour desativon l’espedissioun d’e-mails dai sieu servidou : en aqueu cas, l’inscricioun automatica es
+ empoussibla.</div>',
+       'info_qui_edite' => '@nom_auteur_modif@ a trabalhat sus aqueu countengut @date_diff@ minuta fa',
+       'info_racine_site' => 'Raìs dóu sit',
+       'info_recharger_page' => 'Vourguès recargà aquela pàgina en un moumentoun.',
+       'info_recherche_auteur_zero' => 'Minga de resultat troubat per « @cherche_auteur@ ».',
+       'info_recommencer' => 'Vourguès recoumençà.',
+       'info_redacteur_1' => 'Redatour',
+       'info_redacteur_2' => 'qu’a achès à l’espaci privat (<i>recoumandat</i>)',
+       'info_redacteurs' => 'Redatour',
+       'info_redaction_en_cours' => 'EN COURS DE REDACIOUN',
+       'info_redirection' => 'Redirecioun',
+       'info_redirection_activee' => 'La redirecioun es ativada.',
+       'info_redirection_boucle' => 'Prouvàs de redirigià l’article sus èu meme',
+       'info_redirection_desactivee' => 'La redirecioun a estat suprimada.',
+       'info_refuses' => 'Lu vouòstre article refudat',
+       'info_reglage_ldap' => 'Oupcioun: <b>Reglage de l’impourtacioun LDAP</b>',
+       'info_renvoi_article' => '<b>Redirecioun.</b> Aquel article remandà a la pàgina:',
+       'info_reserve_admin' => 'Lu aministratour soulet pouòdon moudificà aquela adressa.',
+       'info_restreindre_rubrique' => 'Restregne la gestioun a la rùbrica :',
+       'info_resultat_recherche' => 'Resultat de la recerca :',
+       'info_rubriques' => 'Rùbrica',
+       'info_rubriques_02' => ' rùbrica',
+       'info_rubriques_trouvees' => 'Rùbrica troubadi',
+       'info_sans_titre' => 'Sensa titre',
+       'info_selection_chemin_acces' => '<b>Seleciounàs</b> aquì souta lou camin d’achès en l’anuari :',
+       'info_signatures' => 'firma',
+       'info_site' => 'Sit',
+       'info_site_2' => 'sit : ',
+       'info_site_min' => 'sit',
+       'info_site_reference_2' => 'Sit referençat',
+       'info_site_web' => 'Sit Web :',
+       'info_sites' => ' sit',
+       'info_sites_lies_mot' => 'Lu sit referençat ligat en aqueu mot clau',
+       'info_sites_proxy' => 'Utilisà un proxy',
+       'info_sites_trouves' => 'Sit troubat',
+       'info_sous_titre' => 'Souta-titre :',
+       'info_statut_administrateur' => 'Aministratour',
+       'info_statut_auteur' => 'Estatut d’aquel autour :',
+       'info_statut_auteur_2' => 'Siéu',
+       'info_statut_auteur_a_confirmer' => 'Inscricioun de counfirmà',
+       'info_statut_auteur_autre' => 'Autre statut :',
+       'info_statut_redacteur' => 'Redatour',
+       'info_statut_utilisateurs_1' => 'Estatut predefinit dei utilisaire impourtat',
+       'info_statut_utilisateurs_2' => 'Chausissès lou statut qu’es atribuit ai persouna presenti en l’anuari LDAP coura si counetoun lou premié còu. Pi pourès moudificà aquela valour per cada autour au cas per cas.',
+       'info_suivi_activite' => 'Segut de l’atività editouriala',
+       'info_surtitre' => 'Soubretitre :',
+       'info_syndication_integrale_1' => 'Lou vouòstre sit proupausat de fichié de sindicacioun (veire « <a href="@url@">@titre@</a> »).',
+       'info_syndication_integrale_2' => 'Desiràs transmetre l’integralità dei article, o difusà lou coumpèndi de quauqui centena de caractère ?',
+       'info_table_prefix' => 'Poudès moudificà lou prefisse dóu noum dei taula de dounada (acò es indispensable quoura si vòu instalà plusiur sit en la mema basa de dounada). Aqueu prefisse s’ecriéu en letra minusculi, noun acentuadi, e sensa espaci.',
+       'info_taille_maximale_images' => 'SPIP va prouvà la talha massimala dei image que pòu tratà (en milioun de pixel).<br /> Lu image mai grani noun seran reduchi.',
+       'info_taille_maximale_vignette' => 'Talha massimala dei vigneta generadi per lou sistema :',
+       'info_terminer_installation' => 'Ahura poudès acabà la proucedura d’instalacioun estandarda.',
+       'info_texte' => 'Tèstou',
+       'info_texte_explicatif' => 'Tèstou espligatiéu',
+       'info_texte_long' => '(lou tèstou es lonc : aparèisse dounca en tros destint que seràn rempegat un còu validat.)',
+       'info_texte_message' => 'Tèstou dóu vouòstre message',
+       'info_texte_message_02' => 'Tèst dóu message',
+       'info_titre' => 'Titre :',
+       'info_total' => 'toutal : ',
+       'info_tous_articles_en_redaction' => 'Toi lu articles en cors de redaccion',
+       'info_tous_articles_presents' => 'Toui lu article publicat en aquela rùbrica',
+       'info_tous_articles_refuses' => 'Toui lu article refudat',
+       'info_tous_les' => 'toui lu :',
+       'info_tout_site' => 'Tout lou sit',
+       'info_tout_site2' => 'L’article noun a estat traduch en aquela lenga.',
+       'info_tout_site3' => 'L’article a estat traduch en aquela lenga, ma si pourtet puèi de moudificacioun a l’article de referença. La traducioun déu estre atualisada.',
+       'info_tout_site4' => 'L’article a estat traduch en aquela lenga, e la traducioun es atualisada.',
+       'info_tout_site5' => 'Article ouriginau.',
+       'info_tout_site6' => '<b>Mèfi :</b> soulamen lu article originau s’afichon.
+Li traducioun soun assouciadi a l’ouriginau,
+embé una coulou qu’endica lou sieu estat :',
+       'info_traductions' => 'Traducioun',
+       'info_travail_colaboratif' => 'Trabalh coulabouratiu sus lu article',
+       'info_un_article' => 'un article, ',
+       'info_un_site' => 'un sit, ',
+       'info_une_rubrique' => 'una rùbrica, ',
+       'info_une_rubrique_02' => '1 rùbrica',
+       'info_url' => 'URL :',
+       'info_url_proxy' => 'URL dóu proxy',
+       'info_url_site_pas_conforme' => 'l’URL dóu sit noun es valide.',
+       'info_url_test_proxy' => 'URL de prova',
+       'info_urlref' => 'Estac ipertèst :',
+       'info_utilisation_spip' => 'Ahura poudès coumençà d’utilisà lou sistema de publicacioun assistat...',
+       'info_visites_par_mois' => 'Afichage per mes :',
+       'info_visiteur_1' => 'Visitaire',
+       'info_visiteur_2' => 'dóu sit pùblicou',
+       'info_visiteurs' => 'Visitaire',
+       'info_visiteurs_02' => 'Visitaire dóu sit pùblicou',
+       'info_webmestre_forces' => 'Lu webmèstre soun atualamen definit en <tt>@file_options@</tt>.',
+       'install_adresse_base_hebergeur' => 'Adressa de la basa de dounada atribuit dau aubergadour',
+       'install_connect_ok' => 'La basa nova es ben estada declarada souta lou noum de servidou @connect@.',
+       'install_echec_annonce' => 'L’instalacioun va proubablamen souhì, o aboutì a un sit noun founciounal...',
+       'install_extension_mbstring' => 'SPIP noun founciouna embé :',
+       'install_extension_php_obligatoire' => 'SPIP esija l’estensioun PHP :',
+       'install_login_base_hebergeur' => 'Login de counecioun atribuit dau aubergadour',
+       'install_nom_base_hebergeur' => 'Noum de la basa atribuit dau aubergadour :',
+       'install_pas_table' => 'Basa atualamen sensa taula',
+       'install_pass_base_hebergeur' => 'Mot de passa de counecioun atribuit dau aubergadour',
+       'install_php_version' => 'PHP versioun @version@ insufisenta (minimum = @minimum@)',
+       'install_select_langue' => 'Seleciounàs una lenga pi clicàs sus lou boutoun « seguent » per coumença la proucedura d’instalacioun.',
+       'install_select_type_db' => 'endicà lou tipe de basa de dounada :',
+       'install_select_type_mysql' => 'MySQL',
+       'install_select_type_pg' => 'PostgreSQL',
+       'install_select_type_sqlite2' => 'SQLite 2',
+       'install_select_type_sqlite3' => 'SQLite 3',
+       'install_serveur_hebergeur' => 'Servidou de basa de dounada atribuit dau aubergadour',
+       'install_table_prefix_hebergeur' => 'Prefisse de taula atribuit dau aubergadour :',
+       'install_tables_base' => 'Taula de la basa',
+       'install_types_db_connus' => 'SPIP saup d’utilisà <b>MySQL</b> (lou mai repandut) e <b>SQLite</b>.',
+       'install_types_db_connus_avertissement' => 'Lou supouòrt de <b>PostgreSQL</b> es finda proupausat per fin d’esperimentacioun',
+       'instituer_erreur_statut_a_change' => 'L’estatut a jà estat moudificat',
+       'instituer_erreur_statut_non_autorise' => 'Noun poudès chausì aqueu estatut',
+       'intem_redacteur' => 'redatour',
+       'intitule_licence' => 'Licença',
+       'item_accepter_inscriptions' => 'Aceptà li inscricioun',
+       'item_activer_messages_avertissement' => 'Ativà lu message d’avertissamen',
+       'item_administrateur_2' => 'aministratour',
+       'item_afficher_calendrier' => 'Afichà en lou calendari',
+       'item_autoriser_syndication_integrale' => 'Difusì l’integralità dei article en lu fichié de sindicacioun',
+       'item_choix_administrateurs' => 'lu aministratour',
+       'item_choix_generation_miniature' => 'Generà autoumaticamen li miniatura dei image.',
+       'item_choix_non_generation_miniature' => 'Noun generà de miniatura dei image.',
+       'item_choix_redacteurs' => 'lu redatour',
+       'item_choix_visiteurs' => 'lu visitaire dóu sit pùblicou',
+       'item_creer_fichiers_authent' => 'Creà lu fichié .htpasswd',
+       'item_login' => 'Login',
+       'item_messagerie_agenda' => 'Ativà la messagerìa e l’agenda',
+       'item_mots_cles_association_articles' => 'ai article',
+       'item_mots_cles_association_rubriques' => 'ai rùbrica',
+       'item_mots_cles_association_sites' => 'ai sit referença o sindicat',
+       'item_non' => 'Noun',
+       'item_non_accepter_inscriptions' => 'Noun aceptà li inscricioun',
+       'item_non_activer_messages_avertissement' => 'Minga de message d’avertissamen',
+       'item_non_afficher_calendrier' => 'Noun afichà lou calendari',
+       'item_non_autoriser_syndication_integrale' => 'Difondre un coumpèndi soulamen',
+       'item_non_creer_fichiers_authent' => 'Noun creà aquelu fichié',
+       'item_non_messagerie_agenda' => 'Desativà la messagerìa et l’agenda',
+       'item_non_publier_articles' => 'Noun publicà lu article denant la data de publicacioun prevista.',
+       'item_nouvel_auteur' => 'Nouvel autour',
+       'item_nouvelle_rubrique' => 'Nouvela rùbrica',
+       'item_oui' => 'Ahì',
+       'item_publier_articles' => 'Publicà lu article, quauque sìgue la data de publicacioun',
+       'item_reponse_article' => 'Respouòsta a l’article',
+       'item_version_html_max_html4' => 'Si limità au HTML4 sus lou sit public',
+       'item_version_html_max_html5' => 'Autourisà lou HTML5',
+       'item_visiteur' => 'visitaire',
+
+       // J
+       'jour_non_connu_nc' => 'n.c.',
+
+       // L
+       'label_bando_outils' => 'Barra d’autis',
+       'label_bando_outils_afficher' => 'Afichà lu autis',
+       'label_bando_outils_masquer' => 'Mascà lu autis',
+       'label_choix_langue' => 'Seleciounàs la vouòstra lenga',
+       'label_nom_fichier_connect' => 'Endicàs lou noum utilisat per aqueu sevidour',
+       'label_slogan_site' => 'Eslougan dóu sit',
+       'label_taille_ecran' => 'Larguessa de l’ecran',
+       'label_texte_et_icones_navigation' => 'Menù de navigacioun',
+       'label_texte_et_icones_page' => 'Afichage en la pàgina',
+       'ldap_correspondance' => 'eritage dóu camp @champ@',
+       'ldap_correspondance_1' => 'Eritage dei camp LDAP',
+       'ldap_correspondance_2' => 'Per cada camp SPIP seguent, endicàs lou noum dóu camp LDAP courrespouòndant. Laissà vuèi per noun lou remplì, desseparà embé dei espaci o dei virgula per prouvà plusiur camp LDAP.',
+       'lien_ajouter_auteur' => 'Ajustà aquel autour',
+       'lien_ajouter_une_rubrique' => 'Ajoutà aquela rùbrica',
+       'lien_email' => 'e-mail',
+       'lien_nom_site' => 'NOUM DÓU SIT:',
+       'lien_retirer_auteur' => 'Retirà l’autour',
+       'lien_retirer_rubrique' => 'Retirà la rùbrica',
+       'lien_retirer_tous_auteurs' => 'Retirà toui lu autour',
+       'lien_retirer_toutes_rubriques' => 'Retirà touti li rùbrica toutes les rubriques',
+       'lien_site' => 'sit',
+       'lien_tout_decocher' => 'Destacà tout',
+       'lien_tout_deplier' => 'Desplegà tout',
+       'lien_tout_replier' => 'Repeglà tout',
+       'lien_tout_supprimer' => 'Suprimà tout',
+       'lien_trier_nom' => 'Trià per noum',
+       'lien_trier_nombre_articles' => 'Trià per noumbre d’article',
+       'lien_trier_statut' => 'Trià per estatut',
+       'lien_voir_en_ligne' => 'VEIRE EN LIGNA:',
+       'logo_article' => 'Logou de l’article',
+       'logo_auteur' => 'Logou de l’autour',
+       'logo_rubrique' => 'Logou de la rùbrica',
+       'logo_site' => 'Logou d’estou sit',
+       'logo_standard_rubrique' => 'Logou estandard dei rùbrica',
+       'logo_survol' => 'Logou per lou survol',
+
+       // M
+       'menu_aide_installation_choix_base' => 'Chausida de la vouòstra basa',
+       'module_fichier_langue' => 'Fichié de lenga',
+       'module_raccourci' => 'Escourcha',
+       'module_texte_affiche' => 'Tèstou afichat',
+       'module_texte_explicatif' => 'Poudès inserì li escorcha seguenti en lu esquèletrou dóu vouòstre sit public. Se tradureran autoumaticamen en li diferenti lenga per de li quali esista un fichié de lenga.',
+       'module_texte_traduction' => 'Aqueu fichié de lenga « @module@ » es dispounible en :',
+       'mois_non_connu' => 'noun counouissut',
+
+       // N
+       'nouvelle_version_spip' => 'La versioun @version@ de SPIP es dispounible',
+
+       // O
+       'onglet_contenu' => 'Countengut',
+       'onglet_declarer_une_autre_base' => 'Declarà un’autra basa',
+       'onglet_discuter' => 'Discutà',
+       'onglet_interactivite' => 'Interatività',
+       'onglet_proprietes' => 'Prouprietà',
+       'onglet_repartition_actuelle' => 'atualamen',
+       'onglet_sous_rubriques' => 'Souta-rùbrica',
+
+       // P
+       'page_pas_proxy' => 'Aquela pàgina noun déu passà dóu proxy',
+       'pas_de_proxy_pour' => 'Poudès endicàs li machina o lu doumani doun aqueu proxy noun déu s’aplicà (per isemple: @exemple@)',
+       'plugin_charge_paquet' => 'Cargamen dóu paquet @name@',
+       'plugin_charger' => 'Telecargà',
+       'plugin_erreur_charger' => 'errour : empoussible de cargà @zip@',
+       'plugin_erreur_droit1' => 'Lou repertori <code>@dest@</code> noun es accessible en escritura.',
+       'plugin_erreur_droit2' => 'Vourguès verificà lu drech sus aqueu repertori (e lou creà se besoun), o instalà lu fichié per FTP.',
+       'plugin_erreur_zip' => 'souhit pclzip : errour @status@',
+       'plugin_etat_developpement' => 'en desfouloupamen',
+       'plugin_etat_experimental' => 'esperimental',
+       'plugin_etat_stable' => 'estable',
+       'plugin_etat_test' => 'en prova',
+       'plugin_impossible_activer' => 'Empoussible d’ativà lou plugin @plugin@',
+       'plugin_info_automatique1' => 'Se souetàs autourisà l’instalacioun autoumatic dei plugin, vourguès :',
+       'plugin_info_automatique1_lib' => 'Se souetàs autourisà l’instalacioun autoumatic d’aquela biblioutéca, vourguès :',
+       'plugin_info_automatique2' => 'creà un repertori <code>@rep@</code> ;',
+       'plugin_info_automatique3' => 'verifica que lou servidou es autourisat a escrieure en aqueu repertori.',
+       'plugin_info_automatique_creer' => 'a creà a la raìs dau sit.',
+       'plugin_info_automatique_exemples' => 'isemple :',
+       'plugin_info_automatique_ftp' => 'Poudès instalà dei plugin, per FTP, en lou repertori <tt>@rep@</tt>',
+       'plugin_info_automatique_lib' => 'D’uni plugin necessiton de poudé telecargà dei fichié en lou repertori <code>lib/</code>, a creà se besoun a la raìs dau sit.',
+       'plugin_info_automatique_liste' => 'Lu vouòtre lista de plugin :',
+       'plugin_info_automatique_liste_officielle' => 'lu plugin óuficial',
+       'plugin_info_automatique_liste_update' => 'Metre a jou li lista',
+       'plugin_info_automatique_ou' => 'o...',
+       'plugin_info_automatique_select' => 'Seleciounàs aquì souta un plugin : SPIP lou telecarguera e l’instalera en lou repertori <code>@rep@</code> ; se aqueu plugin ja esistà, sera mes a jou.',
+       'plugin_info_credit' => 'Credit',
+       'plugin_info_erreur_xml' => 'La declaracioun d’aqueu plugin es ?! incorrecte ?!',
+       'plugin_info_install_ok' => 'Instalacioun rueisseda',
+       'plugin_info_necessite' => 'Necessita :',
+       'plugin_info_non_compatible_spip' => 'Aqueu plugin noun es coumpatible embé aquela versioun de SPIP',
+       'plugin_info_plugins_dist_1' => 'Lu plugin aquì souta soun cargat e ativat en lou repertori @plugins_dist@.',
+       'plugin_info_plugins_dist_2' => 'Noun soun deativable.',
+       'plugin_info_telecharger' => 'a telecargà sus @url@ e a instalà en @rep@',
+       'plugin_info_upgrade_ok' => 'Metuda a jou rueisseda',
+       'plugin_librairies_installees' => 'Biblioutéca instaladi',
+       'plugin_necessite_lib' => 'Aqueu plugin demanda la biblioutéca @lib@',
+       'plugin_necessite_plugin' => 'Demanda lou plugin @plugin@ en versioun @version@ minimum.',
+       'plugin_necessite_plugin_sans_version' => 'Demanda lou plugin @plugin@',
+       'plugin_necessite_spip' => 'Demanda SPIP en versioun @version@ minimum.',
+       'plugin_source' => 'source : ',
+       'plugin_titre_automatique' => 'Instalacioun autoumatic',
+       'plugin_titre_automatique_ajouter' => 'Ajustà dei plugin',
+       'plugin_titre_installation' => 'Instalacioun dóu plugin @plugin@',
+       'plugin_titre_modifier' => 'Lu miéu plugin',
+       'plugin_zip_active' => 'Countinuàs per l’ativà',
+       'plugin_zip_adresse' => 'endicàs aquì souta l’adressa d’un fichié zip de plugin a telecargà, o ben l’adressa d’una lista de plugin.',
+       'plugin_zip_adresse_champ' => 'Adressa dóu plugin o de la lista ',
+       'plugin_zip_content' => 'Counten lu fichié seguent (@taille@),<br />lest a instalà en lou repertori <code>@rep@</code>',
+       'plugin_zip_installe_finie' => 'Lou fichié @zip@ a estat deserat e instalat.',
+       'plugin_zip_installe_rep_finie' => 'Lou fichié @zip@ estat deserat e instalat en lou repertori @rep@',
+       'plugin_zip_installer' => 'Poudès ahura l’instalà.',
+       'plugin_zip_telecharge' => 'Lou fichié  @zip@ a estat telecargat',
+       'plugins_actif_aucun' => 'Minga plugin ativat.',
+       'plugins_actif_un' => 'Un plugin ativat.',
+       'plugins_actifs' => '@count@ plugin ativat.',
+       'plugins_actifs_liste' => 'Atiéu',
+       'plugins_compte' => '@count@ plugin',
+       'plugins_disponible_un' => 'Un plugin dispounible.',
+       'plugins_disponibles' => '@count@ plugin dispounible.',
+       'plugins_erreur' => 'Errour en lu plugin : @plugins@',
+       'plugins_liste' => 'Lista dei plugin',
+       'plugins_liste_dist' => 'Plugin ferouiat',
+       'plugins_recents' => 'Plugin réchent.',
+       'plugins_tous_liste' => 'Toui',
+       'plugins_vue_hierarchie' => 'Gerarquìa',
+       'plugins_vue_liste' => 'Lista',
+       'protocole_ldap' => 'Versioun dóu proutoucole :',
+
+       // Q
+       'queue_executer_maintenant' => 'Eseguì ahura',
+       'queue_info_purger' => 'Poudès supprimà toui lu travai en aspera et reinicialisà la lista embé lu travai periòdicou',
+       'queue_nb_jobs_in_queue' => '@nb@ travai en aspera',
+       'queue_next_job_in_nb_sec' => 'Travai que ven en @nb@ s',
+       'queue_no_job_in_queue' => 'Minga travai en aspera',
+       'queue_one_job_in_queue' => '1 travai en aspera',
+       'queue_purger_queue' => 'Reinitialisà la lista dei travai',
+       'queue_titre' => 'Lista dei travai',
+
+       // R
+       'repertoire_plugins' => 'Repertori :',
+       'required' => ' (oubligatori)',
+
+       // S
+       'sans_heure' => 'sensa oura',
+       'statut_admin_restreint' => 'admin limitat',
+       'statut_webmestre' => 'webmestre',
+
+       // T
+       'tache_cron_asap' => 'Tàcha CRON @function@ (ASAP)',
+       'tache_cron_secondes' => 'Tàcha CRON @function@ (touti li @nb@ s)',
+       'taille_cache_image' => 'Lu image que SPIP a carculat autoumaticamen (vigneta dei doucumen, titre presentat en forma gràfica, founcioun matemàtiqui en forma TeX...) oucupon un toutal de @taille@ en lou repertori @dir@.',
+       'taille_cache_infinie' => 'Aqueu site noun preve de limitacioun de talha dóu repertori de l’amagadou.',
+       'taille_cache_maxi' => 'SPIP prouva de limità la talha dóu repertori de l’amagador d’estou sit a cìrca <b>@octets@</b> de dounada.',
+       'taille_cache_moins_de' => 'La talha de l’amagadou es màncou de @octets@.',
+       'taille_cache_octets' => 'Ahura la talha de l’amagador es cìrca de @octets@.',
+       'taille_cache_vide' => 'L’amagadou es vuèi.',
+       'taille_repertoire_cache' => 'Talha dóu repertori amagadou',
+       'text_article_propose_publication' => 'Article proupausat per la publicacioun.',
+       'texte_acces_ldap_anonyme_1' => 'Certen servidou LDAP achèton minga d’achès anounime. En aqueu cas, cau spechificà un identificant d’achès inicial per poudé pi recercà d’informacion en l’annuari. Lu camp seguent si pouràn laissà vuèi en la majour part dei cas.',
+       'texte_admin_effacer_01' => 'Aquela coumanda escafa <i>tout</i> lou countengut de la basa de dounada,
+ embé <i>toui</i> lu achès redatour e aministratour. Coura l’aurès eseguit, deurès
+reinstalà SPIP per recreà una basa nouvèla couma pura un premié achès aministratour.',
+       'texte_adresse_annuaire_1' => '(Se lou vouòstre annuari es instalat soubre la mema màquina qu’estou sit web, si trata proubablamen de « localhost ».)',
+       'texte_ajout_auteur' => 'L’autour seguent es estat ajustat a l’article :',
+       'texte_annuaire_ldap_1' => 'S’avès achès a un annuari (LDAP), lou poudès utilisà per ',
+       'texte_article_statut' => 'Aquel article :',
+       'texte_article_virtuel' => 'Article virtual',
+       'texte_article_virtuel_reference' => '<b>Article virtual :</b> article referençat en lou vouòstre sit SPIP, mà redirigit vers una autra URL. Per suprimà la redirecioun, escassàs l’URL aquì soubre.',
+       'texte_aucun_resultat_auteur' => 'Minga resultat per « @cherche_auteur@ »',
+       'texte_auteur_messagerie' => 'Estou sit vi pòu endicà en permanença la lista dei redatour counetat, cen que vi permete d’escambià de message en diret. Poudès dechìdre de noun aparèisse en aquela lista (siès « invisible/a » dei autre utilisaire).',
+       'texte_auteurs' => 'LU AUTOUR',
+       'texte_choix_base_1' => 'Chausissès la vouòstra basa:',
+       'texte_choix_base_2' => 'Lou servidou SQL counten mai d’una basa de dounada.',
+       'texte_choix_base_3' => '<b>Chausissès</b> aquì souta aquela que lou vouòstre aubergadour v’a atribuit :',
+       'texte_choix_table_prefix' => 'Prefis dei taula :',
+       'texte_compatibilite_html' => 'Poudès demandà a SPIP de proudurre, sus lou sit pùblicou, de code coumptatible embé la norma <i>HTML 4</i>, o li permetre d’utilisà li poussibilità mai mouderni dóu <i>HTML 5</i>.',
+       'texte_compatibilite_html_attention' => 'Li a minga risc a ativà l’oupcioun <i>HTML 5>/i>, mà se lou fès, li pàgina dóu vouòstre sit deuran coumençà embé li mencioun seguent per està vàlidi : <code>&lt; !DOCTYPE html&gt;</code>.',
+       'texte_compte_element' => '@count@ elemen',
+       'texte_compte_elements' => '@count@ elemen',
+       'texte_conflit_edition_correction' => 'Vourguès countroulà aquì souta li diferença tra li doui versioun dóu tèstou ; poudès finda coupià li vouòstri moudificacioun, pi recoumençà.',
+       'texte_connexion_mysql' => 'Counsultàs li infourmacioun que lou vouòstre aubergadour fournisse : li devès troubà lou servidou de basa de dounada que proupausa e lu identificant persounal per vi counetà.',
+       'texte_contenu_article' => '(Countengut de l’article en quauque mot.)',
+       'texte_contenu_articles' => 'Segoun la maqueta que lou vouòstre sit a adoutada, poudès dechidre
+               que d’unu elemen dei article noun soun utilisat.
+               Utilisàs la lista aquì souta per endicà quau elemen soun dispounible.',
+       'texte_crash_base' => 'Se la vouòstra basa de dounada s’es
+                       encalada, poudès prouvà una reparacioun
+                       autoumatica.',
+       'texte_creer_rubrique' => 'Denant de poudé escrieure d’articles<br/>, devès creà una rùbrica.',
+       'texte_date_creation_article' => 'DATA DE CREACIOUN DE L’ARTICLE:', # on ajoute le ":"
+       'texte_date_creation_objet' => 'Data de créacioun :', # on ajoute le ":"
+       'texte_date_publication_anterieure' => 'Data de redacioun anterioura :',
+       'texte_date_publication_anterieure_nonaffichee' => 'Noun faire aparèisse de data de redacioun anterioura.',
+       'texte_date_publication_article' => 'DATA DE PUBLICACIOUN EN LIGNA:',
+       'texte_date_publication_objet' => 'Data de publicacioun en ligna :',
+       'texte_descriptif_rapide' => 'Descritiu rapide',
+       'texte_effacer_base' => 'Escassà la basa de dounada SPIP',
+       'texte_effacer_statistiques' => 'Escassà li estatìstica',
+       'texte_en_cours_validation' => 'Lu countengut aquì souta asperoun d’estre validat.',
+       'texte_enrichir_mise_a_jour' => 'Poudès enriquì la coumpaginacioun dóu vouòstre tèstou en utilisant d’« escourcha tipougràfica »',
+       'texte_fichier_authent' => '<b>Déu SPIP creà de fichié especial
+<tt>.htpasswd</tt> e <tt>.htpasswd-admin</tt> en lou repertori @dossier@ ?</b>
+<p>Aquelu fichié vi pouòdon servì per restrègne l’achès ai autour e aministratour en d’autre luèc dóu vouòstre sit (prougrama estèrnou d’estatìstica, per isemple).</p>
+<p>Se noun vi sièrve, poudès laissà aquesla oupcioun a la sieu valour predefinida (minga de creacioun de fichié).</p>',
+       'texte_informations_personnelles_1' => 'Ahura lou sistèma vi va creà un achès persounalisat au sit.',
+       'texte_informations_personnelles_2' => '(Nota : es una reinstalacioun, se lou vouòstre achès marcha encara, poudès',
+       'texte_introductif_article' => '(Test introdutiu de l’article.)',
+       'texte_jeu_caractere' => 'Es counsilhat d’emplegà, sus lou vouòstre sit, l’alfabet universal (<tt>utf-8</tt>) : permete d’afichà de tèstou en touti li lenga sensa proublema de coumpatibilitat embé lu navigatour mouderne.',
+       'texte_jeu_caractere_3' => 'Lou vouòstre sit es atualamen instalat dau juèc de carater :',
+       'texte_jeu_caractere_4' => 'En cas qu’aquò noun courrespouònde a la realità dei vouòstri dounada (après, per isemple, una restouracioun de basa de dounada), o <em>que coumencàs estou sit</em> e desiràs chausì un autre juèc de caracter, endicàs-lou aicí : ',
+       'texte_login_ldap_1' => '(Laissà vuèi per un achès anounime, o intrà lou camin coumplet, per isemple «<tt>uid=fabre, ou=users, dc=lou-mieu-doumìni, dc=com</tt>».)',
+       'texte_login_precaution' => 'Mèfi ! Aquò es lou login embé lou qual siès ahura counetat. 
+ Utilisàs aqueu fourmulari embé precaucioun...',
+       'texte_messagerie_agenda' => 'Una messagerìa permete ai redatour dóu sit de coumunicà diretamen tra elu en l’espaci privat dóu sit. Es assouciada a un agènda.',
+       'texte_mise_a_niveau_base_1' => 'Venès de metre a jou lu fichié SPIP.
+       Ahura cau metre a nivèu la basa de dounada
+       dóu sit.',
+       'texte_modifier_article' => 'Moudificà l’article :',
+       'texte_multilinguisme' => 'Se vourguès gerà d’ouget en mai d’una lenga, embé una navigacioun complessa, poudès ajustà un menù de selecioun de lenga sus aquelu ouget, en founcioun de l’ourganisacioun dóu vouòstre sit.',
+       'texte_multilinguisme_trad' => 'Poudès finda ativà un sistema de gestioun dei estac tra li diferenti traducioun sus certen ouget.',
+       'texte_non_compresse' => '<i>noun coumprimat</i> (lou vouòstre servidou noun supouòrta aquela founciounalità)',
+       'texte_nouvelle_version_spip_1' => 'Avès instalat una nouvèla versioun de SPIP.',
+       'texte_nouvelle_version_spip_2' => 'Aquela versioun nouvèla demanda una metuda a jou mai coumpleta qu’a l’acoustumada. Se siès webmèstre dóu sit, vourguès escassà lou fichié @connect@ e repilhà l’instalacioun per fin d’atualisà lu vouòstre parametre de counessioun a la basa de dounada.<p> (NB: s’avès denembrat lu vouòstre parametre de counessioun, regarjàs lou fichié @connect@ denant de lou suprimà...)</p>',
+       'texte_operation_echec' => 'Tournàs a la pàgina prechedenta, chausissès una autra basa o creàs nen una nouvèla. Verificàs li infourmacioun que lou vouòstre aubergadour v’a fournidi.',
+       'texte_plus_trois_car' => 'mai de 3 caracter',
+       'texte_plusieurs_articles' => 'Plusiur autour troubat da « @cherche_auteur@ »:',
+       'texte_port_annuaire' => '(La valour predefinida counven generalamen.)',
+       'texte_presente_plugin' => 'Aquela pàgina lista lu plugin dispounible sus lou sit. Poudès ativà lu plugin necessari en entacant la casa courrespoundenta.',
+       'texte_proposer_publication' => 'Quoura lou vouòstre article sera acabat,<br /> pourès proupausà la siéu publicacioun.',
+       'texte_proxy' => 'De còu que lì a (intranet, rets protegidi...), lu sit distant (doucumentacioun de SPIP, sit sindicat, eca.) soun achessible qu’ a travès un <i>proxy</i>. En aquèu cas, endicàs aquì souta la siéu adressa coum’acò @proxy_en_cours@. En general, laisserès aquèla casa vuèia',
+       'texte_publication_articles_post_dates' => 'Couma SPIP si deu coumpourtà embé lu article que la sieu
+               data de publicacioun es fissada a una 
+               escadença futura ?',
+       'texte_rappel_selection_champs' => '[Noun denembràs de seleciounà courretamen aqueu camp.]',
+       'texte_recalcul_page' => 'Se voulès
+recarculà soulamen una pàgina, passàs pulèu per l’espaci public et utilisàs lou boutoun « recarculà ».',
+       'texte_recuperer_base' => 'Reparà la basa de dounada',
+       'texte_reference_mais_redirige' => 'article referençat en lou vouòstre sit SPIP, ma redirigiat vèrs un’autra URL.',
+       'texte_requetes_echouent' => '<b>Quoura certeni requesta SQL souhon
+  sistematicamen e sensa rasoun aparenta, si pòu
+  qu’acò vengue de la basa de dounada.</b><p>
+  Lou vouòstre servidou SQL a la facultà de reparà li sieu
+  taula quoura li soun estadi degalhadi per achident. Aquì poudès prouvà aquela reparacioun ; se 
+  noun marcha, counservàs una còpia de l’afichage, que counten bessai
+ d’indìci de cen que noun marcha...</p><p>
+  Se lou proublema persiste, countactàs lou vouòstre
+  aubergadour.</p>',
+       'texte_selection_langue_principale' => 'Poudès seleciounà aquì souta la « lenga principala » dóu sit. Aquela chausida noun v’oubligia - gauch proun que noun - da escriéure lu vouòstre article en la lenga seleciounada, ma permete de determinà :
+ <ul><li> lou fourmat predefinit dei data soubre lou sit pùblicou ;</li>
+ <li> la natura dóu moutour tipougràficou que SPIP déu utilisà dau rendut dei tèstou;</li>
+ <li> la lenga utilisada en lu fourmulari dóu sit pùblicou;</li>
+ <li> la lenga presentada couma predefinida en l’espaci privat.</li></ul>',
+       'texte_sous_titre' => 'Souta-titre',
+       'texte_statistiques_visites' => '(barra founçadi :  dimènegue / curva founçadi : evoulucioun de la mejàna)',
+       'texte_statut_attente_validation' => 'en aspèra de validacioun',
+       'texte_statut_publies' => 'publicat en ligna',
+       'texte_statut_refuses' => 'refudat',
+       'texte_suppression_fichiers' => 'Utilisàs aquela coumanda da suprimà toui lu fichié que si troubon
+en l’amagadou SPIP. Acò permete per isemple de fourçà un nouvèu carcul de touti li pàgina
+s’avès fach dei moudificacioun empourtanti de grafisme o d’estrutura dóu sit.',
+       'texte_sur_titre' => 'Soubre-titre',
+       'texte_table_ok' => ': aquela taula va ben.',
+       'texte_tentative_recuperation' => 'Tentativa de reparacioun',
+       'texte_tenter_reparation' => 'Prouvà de reparà la basa de dounada',
+       'texte_test_proxy' => 'Da prouvà aqueu proxy, endicàs aquì l’adressa d’un sit web
+    que lou vourias prouvà.',
+       'texte_titre_02' => 'Titre :',
+       'texte_titre_obligatoire' => '<b>Titre</b> [Oubligatori]',
+       'texte_travail_article' => '@nom_auteur_modif@ a trabalhat sus aquel article @date_diff@ minuta fa',
+       'texte_travail_collaboratif' => 'Quoura es frequent que mai d’un redatour 
+  trabalhe sus lou meme article, lou sistema
+  pòu afichà lu article darieramen « dubèrt »
+  da evità li moudificacioun fach ensen.
+  Aquela oupcioun es desativada de maniera predefinida
+  da evità d’afichà de message d’avertimen
+  intempestiéu.',
+       'texte_vide' => 'vuèi',
+       'texte_vider_cache' => 'Vuà l’amagadou',
+       'titre_admin_tech' => 'Mantenença tècnica',
+       'titre_admin_vider' => 'Mantenença tècnica',
+       'titre_ajouter_un_auteur' => 'Ajustà un autour',
+       'titre_ajouter_un_mot' => 'Ajustà un mot-clau',
+       'titre_cadre_afficher_article' => 'Afichà lu article',
+       'titre_cadre_afficher_traductions' => 'Afichà l’estat dei traducioun dai lenga segenti :',
+       'titre_cadre_ajouter_auteur' => 'AJUSTÀ UN AUTOUR :',
+       'titre_cadre_interieur_rubrique' => 'En la rùbrica',
+       'titre_cadre_numero_auteur' => 'AUTOUR NÙMERO',
+       'titre_cadre_numero_objet' => '@objet@ NÙMERO :',
+       'titre_cadre_signature_obligatoire' => '<b>Firma</b> [Oubligatori]<br />',
+       'titre_config_contenu_notifications' => 'Noutificatioun',
+       'titre_config_contenu_prive' => 'En l’espaci privat',
+       'titre_config_contenu_public' => 'Soubre lou sit pùblicou',
+       'titre_config_fonctions' => 'Counfiguracioun dóu sit',
+       'titre_config_langage' => 'Counfigurà la lenga',
+       'titre_configuration' => 'Counfiguracioun dóu sit',
+       'titre_configurer_preferences' => 'Counfigurà li vouòstri preferença vos préférences',
+       'titre_conflit_edition' => 'Counflit dóu tems de l’edicioun',
+       'titre_connexion_ldap' => 'Oupcioun : <b>La vouòstra counessioun LDAP</b>',
+       'titre_groupe_mots' => 'GROUP DE MOT :',
+       'titre_identite_site' => 'Identità dóu sit',
+       'titre_langue_article' => 'Lenga de l’article',
+       'titre_langue_rubrique' => 'Lenga de la rùbrica',
+       'titre_langue_trad_article' => 'LENGA E TRADUCIOUN DE L’ARTICLE',
+       'titre_les_articles' => 'LU ARTICLE',
+       'titre_messagerie_agenda' => 'Messagerìa e agenda',
+       'titre_naviguer_dans_le_site' => 'Navigà en lou sit...',
+       'titre_nouvelle_rubrique' => 'Nouvèla rùbrica',
+       'titre_numero_rubrique' => 'RÙBRICA NÚMERO :',
+       'titre_page_articles_edit' => 'Moudificà : @titre@',
+       'titre_page_articles_page' => 'Lu article',
+       'titre_page_articles_tous' => 'Tout lou sit',
+       'titre_page_calendrier' => 'Calendari @nom_mois@ @annee@',
+       'titre_page_config_contenu' => 'Counfiguracioun dóu sit',
+       'titre_page_delete_all' => 'supressioun toutala e irreversibla',
+       'titre_page_recherche' => 'Resultat de la recerca @recherche@',
+       'titre_page_statistiques_referers' => 'Estatistica (estac intrant)',
+       'titre_page_upgrade' => 'Metuda a nivèu de SPIP',
+       'titre_publication_articles_post_dates' => 'Publicacioun dei article post-datat',
+       'titre_reparation' => 'Reparacioun',
+       'titre_suivi_petition' => 'Segut dei peticioun',
+       'tls_ldap' => 'Transport Layer Security :',
+       'trad_article_traduction' => 'Touti li versioun d’aquel article :',
+       'trad_delier' => 'Pus legà aquest article ai traducioun sieui',
+       'trad_lier' => 'Aquel article es una traducioun de l’article nùmero :',
+       'trad_new' => 'Escrieure una nouvèla traducioun',
+
+       // U
+       'utf8_convert_erreur_orig' => 'Errour : lou juèc de caractèr @charset@ es pas supourtat.',
+
+       // V
+       'version' => 'Versioun:'
+);
+
+?>
diff --git a/www/ecrire/lang/public_hr.php b/www/ecrire/lang/public_hr.php
new file mode 100644 (file)
index 0000000..e15f7d9
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/public?lang_cible=hr
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'accueil_site' => 'Početna stranica',
+       'article' => 'Članak',
+       'articles' => 'Članci',
+       'articles_auteur' => 'Članci ovoga autora',
+       'articles_populaires' => 'Najpopularniji članci',
+       'articles_rubrique' => 'Članci u ovoj rubrici',
+       'aucun_article' => 'Na ovoj adresi ne postoji nijedan članak.',
+       'aucun_auteur' => 'Na ovoj adresi ne postoji nijedan autor.',
+       'aucun_site' => 'Na ovoj adresi ne postoji nijedna web stranica.',
+       'aucune_breve' => 'Na ovoj adresi ne postoji nijedna vijest.',
+       'aucune_rubrique' => 'Na ovoj adresi ne postoji nijedna rubrika.',
+       'auteur' => 'Autor',
+       'autres' => 'Ostale',
+       'autres_breves' => 'Ostale vijesti',
+       'autres_groupes_mots_clefs' => 'Ostale grupe ključnih riječi',
+       'autres_sites' => 'Ostale web stranice',
+
+       // B
+       'bonjour' => 'Dobar dan',
+
+       // C
+       'commenter_site' => 'Komentirati web stranice',
+       'contact' => 'Kontakt',
+       'copie_document_impossible' => 'Nemoguće kopirati dokument',
+
+       // D
+       'date' => 'Datum',
+       'dernier_ajout' => 'Posljednji upis',
+       'dernieres_breves' => 'Posljednje vijesti',
+       'derniers_articles' => 'Posljednji članci',
+       'derniers_commentaires' => 'Posljednji komentari',
+       'derniers_messages_forum' => 'Posljednji forumski prilozi',
+
+       // E
+       'edition_mode_texte' => 'Mijenjati tekst',
+       'en_reponse' => 'Odgovor na:',
+       'en_resume' => 'Kratak sadržaj',
+       'envoyer_message' => 'Poslati poruku',
+       'espace_prive' => 'Redakcija',
+
+       // F
+       'formats_acceptes' => 'Prihvaćen format : @format@.',
+
+       // H
+       'hierarchie_site' => 'Hijerarhija web stranica',
+
+       // J
+       'jours' => 'Dani',
+
+       // L
+       'lien_connecter' => 'Priključiti se',
+
+       // M
+       'meme_auteur' => 'Od istog autora',
+       'meme_rubrique' => 'U istoj rubrici',
+       'memes_auteurs' => 'Od istih autora',
+       'message' => 'Poruka',
+       'messages_forum' => 'Poruka na forumu',
+       'messages_recents' => 'Nove poruke na forumu',
+       'mots_clef' => 'Ključna riječ',
+       'mots_clefs' => 'Ključne riječi',
+       'mots_clefs_meme_groupe' => 'Ključne riječi u istoj grupi',
+
+       // N
+       'navigation' => 'Navigacija',
+       'nom' => 'Ime',
+       'nouveautes' => 'Novosti',
+       'nouveautes_web' => 'Novo u internetu (WWW)',
+       'nouveaux_articles' => 'Novi članci',
+       'nouvelles_breves' => 'Nove vijesti',
+
+       // P
+       'page_precedente' => 'prethodna stranica',
+       'page_suivante' => 'slijedeća stranica',
+       'par_auteur' => 'od autora ',
+       'participer_site' => 'I Vi možete surađivati na uređenju naših stranica. Dovoljno je da unesete Vašu mail adresu. Nakon toga ćete primiti mail sa podacima koji će Vam omogućiti pristup redakcijskom sistemu.',
+       'plan_site' => 'Mapa weba',
+       'popularite' => 'Popularnost',
+       'poster_message' => 'Objaviti poruku',
+       'proposer_site' => 'U ovoj rubrici možete predložiti jednu novu stranicu :',
+
+       // R
+       'repondre_article' => 'Odgovoriti na ovaj članak',
+       'repondre_breve' => 'Odgovoriti na ovu vijest',
+       'resultats_recherche' => 'Rezultati pretrage',
+       'retour_debut_forums' => 'Natrag na početak foruma',
+       'rubrique' => 'Rubrika',
+       'rubriques' => 'Rubrike',
+
+       // S
+       'signatures_petition' => 'Potpis',
+       'site_realise_avec_spip' => 'Ostvareno uz pomoć SPIP',
+       'sites_web' => 'Web stranice',
+       'sous_rubriques' => 'Podrubrike',
+       'spam' => 'Spam',
+       'suite' => 'dalje',
+       'sur_web' => 'u internetu (WWW)',
+       'syndiquer_rubrique' => 'Aktivirati RSS za ovu rubriku',
+       'syndiquer_site' => 'Aktivirati RSS za cijeli web',
+
+       // T
+       'texte_lettre_information' => 'Ovo je poruka sa novostima s web stranica',
+       'texte_lettre_information_2' => 'Ovaj mail sadrži pregled novosti poslije:',
+
+       // V
+       'ver_imprimer' => 'Verzija za tiskanje',
+       'voir_en_ligne' => 'Vidjeti on-line',
+       'voir_squelette' => 'Pogledati kostur ovih stranica'
+);
+
+?>
diff --git a/www/ecrire/lang/public_oc_ni_mis.php b/www/ecrire/lang/public_oc_ni_mis.php
new file mode 100644 (file)
index 0000000..eb30e07
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/public?lang_cible=oc_ni_mis
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'accueil_site' => 'Acuèlh',
+       'article' => 'Article',
+       'articles' => 'Article',
+       'articles_auteur' => 'Article d’aquel autour',
+       'articles_populaires' => 'Lu article lu mai poupulari',
+       'articles_rubrique' => 'Article d’aquela rùbrica',
+       'aucun_article' => 'Lì es mìnga d’article en aquela adressa',
+       'aucun_auteur' => 'Lì es mìnga d’autour en aquela adressa',
+       'aucun_site' => 'Lì es mìnga de sit en aquela adressa',
+       'aucune_breve' => 'Lì es mìnga de brèva en aquela adressa',
+       'aucune_rubrique' => 'Lì es mìnga de rùbrica en aquela adressa',
+       'auteur' => 'Autour',
+       'autres' => 'Autre',
+       'autres_breves' => 'Autri brèva',
+       'autres_groupes_mots_clefs' => 'Autre groupe de mot clau',
+       'autres_sites' => 'Autre sit',
+
+       // B
+       'bonjour' => 'Bouònjou',
+
+       // C
+       'commenter_site' => 'Coumentà aqueu sit',
+       'contact' => 'Countat',
+       'copie_document_impossible' => 'Empoussible de coupià lou doucumen',
+
+       // D
+       'date' => 'Data',
+       'dernier_ajout' => 'Darrié ajust',
+       'dernieres_breves' => 'Darrieri brèva',
+       'derniers_articles' => 'Darrié article',
+       'derniers_commentaires' => 'Darrié coumentari',
+       'derniers_messages_forum' => 'Darrié message publicat en lu fòrou',
+
+       // E
+       'edition_mode_texte' => 'Edicioun en mòdou tèst de',
+       'en_reponse' => 'En respouòsta a :',
+       'en_resume' => 'En coumpendiat',
+       'envoyer_message' => 'Mandà un message',
+       'espace_prive' => 'Espaci privat',
+
+       // F
+       'formats_acceptes' => 'Fourmat achetat : @formats@.',
+
+       // H
+       'hierarchie_site' => 'Ierarquìa dóu sit',
+
+       // J
+       'jours' => 'jou',
+
+       // L
+       'lien_connecter' => 'Si counetà',
+
+       // M
+       'meme_auteur' => 'Dóu meme autour',
+       'meme_rubrique' => 'En la mema rùbrica',
+       'memes_auteurs' => 'Dei meme autour',
+       'message' => 'Message',
+       'messages_forum' => 'Message',
+       'messages_recents' => 'Lu message de fòrou lu mai rechent',
+       'mots_clef' => 'Mot clau',
+       'mots_clefs' => 'Mot clau',
+       'mots_clefs_meme_groupe' => 'Mot clau en lou meme groupe',
+
+       // N
+       'navigation' => 'navigacioun',
+       'nom' => 'Noum',
+       'nouveautes' => 'Li nouvità',
+       'nouveautes_web' => 'Nouvità soubre lou web',
+       'nouveaux_articles' => 'Article nòu',
+       'nouvelles_breves' => 'Brèva nouvèli',
+
+       // P
+       'page_precedente' => 'pàgina anterioura',
+       'page_suivante' => 'pàgina seguenta',
+       'par_auteur' => 'per ',
+       'participer_site' => 'Poudès participà a la vida d’estou sit e proupausà lu vouòstre article en v’inscrivant aquì souta. Receverès un e-mail que v’endiquerà lu vouòstre code d’achès a l’espaci privat dóu sit.',
+       'plan_site' => 'Plan dóu sit',
+       'popularite' => 'Poupularità',
+       'poster_message' => 'Poustà un message',
+       'proposer_site' => 'Poudès prepauà un sit a ajustà en aquela rùbrica :',
+
+       // R
+       'repondre_article' => 'Respouòndre en aquel article',
+       'repondre_breve' => 'Respouòndre en aquela brèva',
+       'resultats_recherche' => 'Resultat de la recerca',
+       'retour_debut_forums' => 'Retour au principi dei fòrou',
+       'rubrique' => 'Rùbrica',
+       'rubriques' => 'Rùbrica',
+
+       // S
+       'signatures_petition' => 'Firma',
+       'site_realise_avec_spip' => 'Sit realisat embé SPIP',
+       'sites_web' => 'Sit web',
+       'sous_rubriques' => 'Souta-rùbricas',
+       'spam' => 'Spam',
+       'suite' => 'suita',
+       'sur_web' => 'Soubre lou web',
+       'syndiquer_rubrique' => 'Sindicà aquela rùbrica',
+       'syndiquer_site' => 'Sindicà tout lou sit',
+
+       // T
+       'texte_lettre_information' => 'Vequì la letra d’informacioun dóu sit',
+       'texte_lettre_information_2' => 'Aquela letra fa lou chensimen dei nouvità publicadi despì',
+
+       // V
+       'ver_imprimer' => 'Versioun d’estampà',
+       'voir_en_ligne' => 'Veire en ligna',
+       'voir_squelette' => 'Veire l’esquelètrou d’aquela pàgina'
+);
+
+?>
index 7dede6c..dc1fc6f 100644 (file)
@@ -675,6 +675,7 @@ et vous reconnecter au site.
        'titre_titre_document' => 'Titre du document :',
        'todo' => 'à venir',
        'trad_reference' => '(référence des traductions)',
+       'trad_definir_reference' => 'Choisir "@titre@" comme référence des traductions',
 
        // Z
        'zbug_balise_b_aval' => ' : balise B en aval',
diff --git a/www/ecrire/lang/spip_hr.php b/www/ecrire/lang/spip_hr.php
new file mode 100644 (file)
index 0000000..754294a
--- /dev/null
@@ -0,0 +1,719 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/spip?lang_cible=hr
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // 0
+       '0_URL' => 'http://listes.rezo.net/mailman/listinfo/spip-dev',
+       '0_langue' => 'Hrvatski [hr]',
+       '0_liste' => 'spip-dev@rezo.net',
+       '0_mainteneur' => 'Alexander Gehrecke (a_gehrecke(at)ambinet.de)',
+
+       // A
+       'access_interface_graphique' => 'Natrag u potpuni grafički interface',
+       'access_mode_texte' => 'Pojednostavljeni text interface',
+       'admin_debug' => 'debug',
+       'admin_modifier_article' => 'Izmijeniti ovaj članak',
+       'admin_modifier_auteur' => 'Izmjeniti podatke ovoga autora',
+       'admin_modifier_breve' => 'Izmjeniti ovu vijest',
+       'admin_modifier_mot' => 'Izmjeniti ovu ključnu riječ',
+       'admin_modifier_rubrique' => 'Izmjeniti ovu rubriku',
+       'admin_recalculer' => 'Osvježiti ovu stranicu',
+       'afficher_calendrier' => 'Prikazati kalendar',
+       'afficher_trad' => 'pokaži prijevode',
+       'alerte_maj_impossible' => '<b>Pozor!</b> Neuspjeo pokušaj promjene verzije SQL baze podataka u verziju @version@, moguće uslijed nedostatnih prava. Molimo stupite u kontakt s Vašim ISP.',
+       'alerte_modif_info_concourante' => 'UPOZORENJE : Ova informacija je drugdje već promjenjena. Trenutna vrijednost je :',
+       'analyse_xml' => 'XML analiza',
+       'annuler' => 'Poništiti',
+       'antispam_champ_vide' => 'Molim ostavite ovo polje prazno:',
+       'articles_recents' => 'Najnoviji članci',
+       'avis_archive_incorrect' => 'datoteka (arhiva) nije ispravna SPIP datoteka',
+       'avis_archive_invalide' => 'datoteka (arhiva) nije ispravna',
+       'avis_attention' => 'POZOR!',
+       'avis_champ_incorrect_type_objet' => 'Nevaljan naziv polja @name@ za objekt vrste @type@',
+       'avis_colonne_inexistante' => 'Kolona @col@ ne postoji',
+       'avis_erreur' => 'Greška: vidi dolje',
+       'avis_erreur_connexion' => 'Greška pri priključivanju',
+       'avis_erreur_cookie' => 'problem sa cookiem',
+       'avis_erreur_fonction_contexte' => 'Programska greška. Ova funkcija ne smije biti pozvana u ovom kontekstu.',
+       'avis_erreur_mysql' => 'SQL greška',
+       'avis_erreur_sauvegarde' => 'Greška u sigurnosnoj kopiji (backup) (@type@ @id_objet@)!',
+       'avis_erreur_visiteur' => 'Problem pri ulasku u privatnu dio',
+
+       // B
+       'barre_a_accent_grave' => 'Umetnite veliko A sa silaznim akcentom',
+       'barre_aide' => 'Upotrijebite tipografske kratice da biste oplemenili izgled',
+       'barre_e_accent_aigu' => 'Umetnite veliko E s uzlaznim akcentom',
+       'barre_eo' => 'Umetnite oe-ligaturu',
+       'barre_eo_maj' => 'Umetnite veliku OE-ligaturu',
+       'barre_euro' => 'Umetnite € simbol',
+       'barre_gras' => 'koristite {{debelo otisnuta slova}}',
+       'barre_guillemets' => 'umetnite u "dvostruke navodnike"',
+       'barre_guillemets_simples' => 'umetnite u ‘jednostruke navodnike’',
+       'barre_intertitre' => 'promijenite u {{{podnaslov}}}',
+       'barre_italic' => 'koristite {kurziv}',
+       'barre_lien' => 'promjenite u [hiperlink->http://...]',
+       'barre_lien_input' => 'Unesite cilj hiperlinka (možete unijeti internet URL u obliku http://www.mysite.com ili jednostavno broj članka na ovim web stranicama).',
+       'barre_note' => 'Promjenite u [[napomenu]]',
+       'barre_paragraphe' => 'Napraviti paragraf',
+       'barre_quote' => '<quote>citirajte poruku</quote>',
+       'bouton_changer' => 'Izmjeniti',
+       'bouton_chercher' => 'Tražiti',
+       'bouton_choisir' => 'Birati',
+       'bouton_deplacer' => 'Premjestiti',
+       'bouton_download' => 'Preuzimanje',
+       'bouton_enregistrer' => 'Sačuvati',
+       'bouton_radio_desactiver_messagerie_interne' => 'Deaktivirati interne poruke',
+       'bouton_radio_envoi_annonces' => 'Poslati autorske objave',
+       'bouton_radio_non_envoi_annonces' => 'Ne slati nikakve objave',
+       'bouton_radio_non_envoi_liste_nouveautes' => 'Ne slati listu posljednjih vijesti',
+       'bouton_recharger_page' => 'osvježiti ovu stranicu',
+       'bouton_telecharger' => 'Otprema',
+       'bouton_upload' => 'uploadati',
+       'bouton_valider' => 'Potvrditi',
+
+       // C
+       'cal_apresmidi' => 'poslijepodne (p.m.)',
+       'cal_jour_entier' => 'cijeli dan',
+       'cal_matin' => 'prijepodne (a.m.)',
+       'cal_par_jour' => 'dnevni kalendar',
+       'cal_par_mois' => 'mjesečni kalendar',
+       'cal_par_semaine' => 'tjedni kalendar',
+       'choix_couleur_interface' => 'boja',
+       'choix_interface' => 'izbor sučelja',
+       'colonne' => 'Stupac',
+       'confirm_changer_statut' => 'Potrebna potvrda: Odabrali ste promjenu statusa ovoga članka. Želite li nastaviti?',
+       'correcte' => 'ispravno',
+
+       // D
+       'date_aujourdhui' => 'danas',
+       'date_avant_jc' => 'p.n.e.',
+       'date_dans' => 'u @delai@',
+       'date_de_mois_1' => '@j@ siječnja',
+       'date_de_mois_10' => '@j@ listopada',
+       'date_de_mois_11' => '@j@ studenog',
+       'date_de_mois_12' => '@j@ prosinca',
+       'date_de_mois_2' => '@j@ veljače',
+       'date_de_mois_3' => '@j@ ožujka',
+       'date_de_mois_4' => '@j@ travnja',
+       'date_de_mois_5' => '@j@ svibnja',
+       'date_de_mois_6' => '@j@ lipnja',
+       'date_de_mois_7' => '@j@ srpnja',
+       'date_de_mois_8' => '@j@ kolovoza',
+       'date_de_mois_9' => '@j@ rujna',
+       'date_demain' => 'sutra',
+       'date_fmt_heures_minutes' => '@h@:@m@',
+       'date_fmt_heures_minutes_court' => '@h@h@m@',
+       'date_fmt_jour' => '@nomjour@ @jour@',
+       'date_fmt_jour_heure' => '@jour@ u @heure@',
+       'date_fmt_jour_heure_debut_fin' => '@jour@ od @heure_debut@ do @heure_fin@', # MODIF
+       'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ od @heure_debut@@dtabbr@ do @dtend@@heure_fin@@dtabbr@', # MODIF
+       'date_fmt_jour_mois' => '@jourmois@',
+       'date_fmt_jour_mois_annee' => '@jourmois@ @annee@',
+       'date_fmt_mois_annee' => '@nommois@ @annee@',
+       'date_fmt_nomjour' => '@nomjour@ @date@',
+       'date_fmt_nomjour_date' => '@nomjour@, @date@',
+       'date_fmt_periode' => 'Od @date_debut@ do @date_fin@',
+       'date_fmt_periode_abbr' => 'Od @dtart@@date_debut@@dtabbr@ do @dtend@@date_fin@@dtabbr@',
+       'date_fmt_periode_from' => 'Od',
+       'date_fmt_periode_to' => 'do',
+       'date_fmt_saison_annee' => '@saison@ @annee@',
+       'date_heures' => 'sati',
+       'date_hier' => 'jučer',
+       'date_il_y_a' => 'prije @delai@',
+       'date_jnum1' => '1.',
+       'date_jnum10' => '10.',
+       'date_jnum11' => '11.',
+       'date_jnum12' => '12.',
+       'date_jnum13' => '13.',
+       'date_jnum14' => '14.',
+       'date_jnum15' => '15.',
+       'date_jnum16' => '16.',
+       'date_jnum17' => '17.',
+       'date_jnum18' => '18.',
+       'date_jnum19' => '19.',
+       'date_jnum2' => '2.',
+       'date_jnum20' => '20.',
+       'date_jnum21' => '21.',
+       'date_jnum22' => '22.',
+       'date_jnum23' => '23.',
+       'date_jnum24' => '24.',
+       'date_jnum25' => '25.',
+       'date_jnum26' => '26.',
+       'date_jnum27' => '27.',
+       'date_jnum28' => '28.',
+       'date_jnum29' => '29.',
+       'date_jnum3' => '3.',
+       'date_jnum30' => '30.',
+       'date_jnum31' => '31.',
+       'date_jnum4' => '4.',
+       'date_jnum5' => '5.',
+       'date_jnum6' => '6.',
+       'date_jnum7' => '7.',
+       'date_jnum8' => '8.',
+       'date_jnum9' => '9.',
+       'date_jour_1' => 'Nedjelja',
+       'date_jour_1_abbr' => 'ne.',
+       'date_jour_1_initiale' => 'n.',
+       'date_jour_2' => 'Ponedjeljak',
+       'date_jour_2_abbr' => 'pon.',
+       'date_jour_2_initiale' => 'p.',
+       'date_jour_3' => 'Utorak',
+       'date_jour_3_abbr' => 'uto.',
+       'date_jour_3_initiale' => 'u.',
+       'date_jour_4' => 'Srijeda',
+       'date_jour_4_abbr' => 'sri.',
+       'date_jour_4_initiale' => 's.',
+       'date_jour_5' => 'Četvrtak',
+       'date_jour_5_abbr' => 'čet.',
+       'date_jour_5_initiale' => 'č.',
+       'date_jour_6' => 'Petak',
+       'date_jour_6_abbr' => 'pe.',
+       'date_jour_6_initiale' => 'p.',
+       'date_jour_7' => 'Subota',
+       'date_jour_7_abbr' => 'sub.',
+       'date_jour_7_initiale' => 's.',
+       'date_jours' => 'dana',
+       'date_minutes' => 'minuta',
+       'date_mois' => 'mjeseci',
+       'date_mois_1' => 'Sječanj',
+       'date_mois_10' => 'Listopad',
+       'date_mois_10_abbr' => 'list.',
+       'date_mois_11' => 'Studeni',
+       'date_mois_11_abbr' => 'stud.',
+       'date_mois_12' => 'Prosinac',
+       'date_mois_12_abbr' => 'pros.',
+       'date_mois_1_abbr' => 'sije.',
+       'date_mois_2' => 'Veljača',
+       'date_mois_2_abbr' => 'velj.',
+       'date_mois_3' => 'Ožujak',
+       'date_mois_3_abbr' => 'ožuj.',
+       'date_mois_4' => 'Travanj',
+       'date_mois_4_abbr' => 'trav.',
+       'date_mois_5' => 'Svibanj',
+       'date_mois_5_abbr' => 'svib.',
+       'date_mois_6' => 'Lipanj',
+       'date_mois_6_abbr' => 'lip.',
+       'date_mois_7' => 'Srpanj',
+       'date_mois_7_abbr' => 'srp.',
+       'date_mois_8' => 'Kolovoz',
+       'date_mois_8_abbr' => 'kolov.',
+       'date_mois_9' => 'Rujan',
+       'date_mois_9_abbr' => 'ruj.',
+       'date_saison_1' => 'zima',
+       'date_saison_2' => 'proljeće',
+       'date_saison_3' => 'ljeto',
+       'date_saison_4' => 'jesen',
+       'date_secondes' => 'sekunde',
+       'date_semaines' => 'tjedana',
+       'date_un_mois' => 'mjesec',
+       'date_une_heure' => 'sat',
+       'date_une_minute' => 'minuta',
+       'date_une_seconde' => 'sekundi',
+       'date_une_semaine' => 'tjedana',
+       'dirs_commencer' => ' da biste doista započeli instalaciju',
+       'dirs_preliminaire' => 'Priprema: <b>podešavanje dozvole pristupa</b>',
+       'dirs_probleme_droits' => 'Problem sa dozvolama pristupa',
+       'dirs_repertoires_absents' => '<p><b>Slijedeći direktoriji nisu nađeni: </b></p><ul>@bad_dirs@.</ul>
+  <p>Mogući uzrok može biti greška u pisanju malih / velikih slova.
+  Uvjerite se da su mala i velika slova ovih direktorija istovjetna sa gore prikazanim imenima. Ako to nije slučaj, promijenite nazive direktorija koristeći Vaš FTP program.</p>
+  <p>Kada to napravite, onda možete',
+       'dirs_repertoires_suivants' => '<p><b>U slijedeće direktorije nije moguće pisati: </b></p><ul>@bad_dirs@</ul>
+ <p>Da biste to promijenili, upotrijebite Vaš FTP program i promijenite dozvole pristupa za svaki od navedenih direktorija. Ovo je detaljno objašnjeno u uputi za instalaciju.</p>
+  <p>Kada to napravite, onda možete ',
+       'double_occurrence' => 'Dvije instance',
+
+       // E
+       'en_cours' => 'obrada',
+       'envoi_via_le_site' => 'Poslati preko web stranica',
+       'erreur' => 'Greška',
+       'erreur_balise_non_fermee' => 'poslednja oznaka nije zatvorena:',
+       'erreur_technique_ajaxform' => 'Ops. Neočekivana greška onemogućila je slanje formulara. Možete ponovno pokušati.',
+       'erreur_technique_enregistrement_champs' => 'Tehnička pogreška onemogućila je uredno pohranjivanje polja @champs@.',
+       'erreur_technique_enregistrement_impossible' => 'Tehnička pogreška onemogućila je uredno pohranjivanje.',
+       'erreur_texte' => 'greška/greške',
+       'etape' => 'Stupanj',
+
+       // F
+       'fichier_introuvable' => 'Datoteka nije pronađena: @fichier@',
+       'form_auteur_confirmation' => 'Potvrdite mail adresu',
+       'form_auteur_email_modifie' => 'Vaša mail adresa je promjenjena.',
+       'form_auteur_envoi_mail_confirmation' => 'Potvrda je upravo poslana putem elektroničke pošte na @email@. Otvorite navedenu web adresu iz poruke kako biste potvrdili potvrdili vašu mail adresu.',
+       'form_auteur_mail_confirmation' => 'Dobar dan,
+
+Zatražili ste izmjenu vaše mail adrese.
+Kako biste potvrdili svoju novu adresu, potrebno je samo pristupiti niže navedenoj adresi
+(u protivnom će vaš upit biti zanemaren) :
+
+    @url@
+',
+       'form_deja_inscrit' => 'Već ste se registrirali.',
+       'form_email_non_valide' => 'Vaša mail adresa je neispravna.',
+       'form_forum_access_refuse' => 'Više nemate pristupa ovime web stranicama.',
+       'form_forum_bonjour' => 'Dobar dan @nom@,',
+       'form_forum_confirmer_email' => 'Kako biste potvrdili vašu mail adresu, pođite na slijedeću adresu : @url_confirm@',
+       'form_forum_email_deja_enregistre' => 'Ova mail adresa je već registrirana, stoga možete koristiti Vašu uobičajenu lozinku.',
+       'form_forum_identifiant_mail' => 'Vaši novi podaci su vam upravo poslani na Vašu mail adresu.',
+       'form_forum_identifiants' => 'Osobni podaci',
+       'form_forum_indiquer_nom_email' => 'Unesite ovdje Vaše ime i mail adresu. Ubrzo ćete primiti mail sa Vašim osobnim podacima.',
+       'form_forum_login' => 'login:',
+       'form_forum_message_auto' => '(ovo je automatska poruka)',
+       'form_forum_pass' => 'lozinka:',
+       'form_forum_probleme_mail' => 'Problem sa mailom: lozinka Vam nije mogla biti poslana.',
+       'form_forum_voici1' => 'Ovdje su Vaši osobni podaci za pristup web stranicama
+"@nom_site_spip@" (@adresse_site@):',
+       'form_forum_voici2' => 'Ovdje su Vaši osobni podaci za pisanje članaka na web stranicama
+"@nom_site_spip@" (@adresse_login@):',
+       'form_indiquer_email' => 'Unesite Vašu mail adresu.',
+       'form_indiquer_nom' => 'Unesite Vaše ime.',
+       'form_indiquer_nom_site' => 'Unesite ime Vaših web stranica.',
+       'form_pet_deja_enregistre' => 'Ove web stranice su već registrirane',
+       'form_pet_signature_pasprise' => 'Vaš potpis je ignoriran.',
+       'form_prop_confirmer_envoi' => 'Potvrditi odašiljanje',
+       'form_prop_description' => 'opis / komentar',
+       'form_prop_enregistre' => 'Vaš prijedlog je upamćen, i bit će objavljen nakon što ga provjeri administrator ovih web stranica.',
+       'form_prop_envoyer' => 'poslati poruku',
+       'form_prop_indiquer_email' => 'Unesite ispravnu mail adresu',
+       'form_prop_indiquer_nom_site' => 'Unesite ime web stranica.',
+       'form_prop_indiquer_sujet' => 'Unesite temu',
+       'form_prop_message_envoye' => 'Poruka poslana',
+       'form_prop_non_enregistre' => 'Vaš prijedlog nije upamćen.',
+       'form_prop_sujet' => 'Tema',
+       'form_prop_url_site' => 'URL web stranica',
+       'forum_non_inscrit' => 'Ili još niste registrirani ili je adresa ili lozinka netočna.',
+       'forum_par_auteur' => '- @auteur@',
+       'forum_titre_erreur' => 'Greška...',
+
+       // I
+       'ical_texte_rss_articles' => 'Adresa "backend"-datoteke sa člancima ovih web stranica je:',
+       'ical_texte_rss_articles2' => 'Također, možete pristupiti "backend"-datotekama sa člancima pojedinačnih rubrika ovih web stranica:',
+       'ical_texte_rss_breves' => 'Osim toga, tu je i datoteka koja sadrži vijesti ovih web stranica. Odabiranjem rubrike ćete dobiti samo vijesti iz te rubrike.',
+       'icone_a_suivre' => 'aktivnosti',
+       'icone_admin_site' => 'administriranje stranica',
+       'icone_agenda' => 'kalendar',
+       'icone_aide_ligne' => 'pomoć',
+       'icone_articles' => 'članci',
+       'icone_auteurs' => 'autori',
+       'icone_brouteur' => 'brzi pregled',
+       'icone_configuration_site' => 'konfiguracija',
+       'icone_configurer_site' => 'konfigurirajte Vaše stranice',
+       'icone_creer_nouvel_auteur' => 'dodati novog autora',
+       'icone_creer_rubrique' => 'dodati novu rubriku',
+       'icone_creer_sous_rubrique' => 'dodati novu podrubriku',
+       'icone_deconnecter' => 'odjava',
+       'icone_discussions' => 'diskusije',
+       'icone_doc_rubrique' => 'pridruženi dokumenti',
+       'icone_ecrire_article' => 'napisati novi članak',
+       'icone_edition_site' => 'uređivanje stranica',
+       'icone_gestion_langues' => 'podešavanje jezika',
+       'icone_informations_personnelles' => 'osobni podaci',
+       'icone_interface_complet' => 'potpuni interface',
+       'icone_interface_simple' => 'pojednostavljeni interface',
+       'icone_maintenance_site' => 'održavanje web stranica',
+       'icone_messagerie_personnelle' => 'osobne poruke',
+       'icone_repartition_debut' => 'prikazati raspodjelu od početka',
+       'icone_rubriques' => 'rubrike',
+       'icone_sauver_site' => 'sigurnosna kopija web stranica',
+       'icone_site_entier' => 'sve web stranice',
+       'icone_sites_references' => 'preporučene web stranice',
+       'icone_statistiques' => 'statistika web stranica',
+       'icone_suivi_activite' => 'praćenje aktivnosti na web stranicama',
+       'icone_suivi_actualite' => 'statistika web stranica',
+       'icone_suivi_pettions' => 'upravljanje peticijama',
+       'icone_suivi_revisions' => 'revizije članaka',
+       'icone_supprimer_document' => 'obrisati ovaj dokument',
+       'icone_supprimer_image' => 'obrisati ovu sliku',
+       'icone_tous_articles' => 'svi Vaši članci',
+       'icone_tous_auteur' => 'svi autori',
+       'icone_tous_visiteur' => 'Svi posjetitelji',
+       'icone_visiter_site' => 'posjetiti web stranice',
+       'icone_voir_en_ligne' => 'promatrati on-line',
+       'img_indisponible' => 'slika nije na raspolaganju',
+       'impossible' => 'nije moguće',
+       'info_a_suivre' => 'AKTIVNOSTI»',
+       'info_acces_interdit' => 'pristup zabranjen',
+       'info_acces_refuse' => 'pristup odrečen',
+       'info_action' => 'aktivnost: @action@',
+       'info_administrer_rubriques' => 'Možete obrađivati ovu rubriku i njene podrubrike',
+       'info_adresse_non_indiquee' => 'Niste odredili adresu za testiranje!',
+       'info_aide' => 'POMOĆ:',
+       'info_ajouter_mot' => 'dodati ovu ključnu riječ',
+       'info_annonce' => 'OBJAVA',
+       'info_annonces_generales' => 'opće objave:',
+       'info_article_propose' => 'predložen članak',
+       'info_article_publie' => 'objavljen članak',
+       'info_article_redaction' => 'članak u obradi',
+       'info_article_refuse' => 'odbačen članak',
+       'info_article_supprime' => 'obrisan članak',
+       'info_articles' => 'članci',
+       'info_articles_a_valider' => 'članci za provjeru',
+       'info_articles_nb' => '@nb@ articles',
+       'info_articles_proposes' => 'podnešeni članci',
+       'info_articles_un' => '1 članak',
+       'info_auteurs_nombre' => 'autor(i):',
+       'info_authentification_ftp' => 'provjera identiteta (kroz FTP).',
+       'info_breves_2' => 'vijesti',
+       'info_breves_nb' => '@nb@ kratke vijesti',
+       'info_breves_un' => '1 kratke vijesti',
+       'info_connexion_refusee' => 'priključenje odbijeno',
+       'info_contact_developpeur' => 'Stupite u vezu s programerom.',
+       'info_contenance' => 'Ove stranice sadrže:',
+       'info_contribution' => 'forumski prilozi',
+       'info_copyright' => '@spip@ je besplatan softver u smislu @lien_gpl@.',
+       'info_copyright_doc' => 'Za daljnje informacije, vidi <a href="@spipnet@">http://www.spip.net</a>.',
+       'info_copyright_gpl' => 'GPL dozvole',
+       'info_cours_edition' => 'Vaši članci u obradi',
+       'info_creer_repertoire' => 'Napravite datoteku ili direktorij sa imenom:',
+       'info_creer_repertoire_2' => 'u poddirektoriju <b>@repertoire@</b>, i onda',
+       'info_creer_vignette' => 'automatska izrada male sličice',
+       'info_creerdansrubrique_non_autorise' => 'Nemate dovoljne ovlasti kako biste dodali sadržaj u ovu rubriku',
+       'info_deplier' => 'otvoriti',
+       'info_descriptif_nombre' => 'opis(i):',
+       'info_description' => 'opis:',
+       'info_description_2' => 'opis:',
+       'info_dimension' => 'veličina:',
+       'info_documents_nb' => '@nb@ dokumenti',
+       'info_documents_un' => '1 dokument',
+       'info_ecire_message_prive' => 'napisati privatnu poruku',
+       'info_email_invalide' => 'nepostojeća mail adresa.',
+       'info_en_cours_validation' => 'Vaši članci u obradi',
+       'info_en_ligne' => 'trenutačno on-line (priključeni):',
+       'info_envoyer_message_prive' => 'poslati privatnu poruku ovom autoru',
+       'info_erreur_requete' => 'greška u zahtjevu:',
+       'info_erreur_squelette2' => 'predložak <b>@fichier@</b> ne stoji na raspolaganju...',
+       'info_erreur_systeme' => 'greška u sistemu (broj @errsys@)',
+       'info_erreur_systeme2' => 'Disk je pun ili je baza podataka oštećena. <br />
+<span style="color:red;">pokušajte <a href=\'@script@\'>popraviti bazu podataka</a>, ili stupite u vezu sa Vašim pružateljem usluga.</span>',
+       'info_fini' => 'učinjeno!',
+       'info_format_image' => 'format za stvaranje malih sličica: @gd_formats@.',
+       'info_format_non_defini' => 'nejasan format',
+       'info_grand_ecran' => 'veliki ekran',
+       'info_image_aide' => 'POMOĆ',
+       'info_image_process_titre' => 'kako izraditi male sličice',
+       'info_impossible_lire_page' => '<b>Greška!</b> Stranica <tt><html>@test_proxy@</html></tt> nije mogla biti pročitana preko proxy - računala',
+       'info_installation_systeme_publication' => 'instalacija redakcijskog sistema...',
+       'info_installer_documents' => 'Možete automatski instalirati sve dokumente koji se nalaze u direktoriju @upload@.',
+       'info_installer_ftp' => 'Kao administrator, možete (pomoću FTP) snimiti datoteke u direktorij @upload@, da biste ih poslije ovdje birali.',
+       'info_installer_images' => 'Možete instalirati slike u formatima JPEG, GIF ili PNG.',
+       'info_installer_images_dossier' => 'Snimite slike u direktorij @upload@ da bi ste ih poslije ovdje mogli odabrati.',
+       'info_interface_complete' => 'cjelokupni interface',
+       'info_interface_simple' => 'pojednostavljeni interface',
+       'info_joindre_document_article' => 'Vašem članku možete pridružiti dokumente tipova',
+       'info_joindre_document_rubrique' => 'Ovoj rubrici možete pridružiti dokumente tipova',
+       'info_joindre_documents_article' => 'Vašem članku možete pridružiti dokumente tipova:',
+       'info_l_article' => 'članak',
+       'info_la_breve' => 'vijest',
+       'info_la_rubrique' => 'rubrika',
+       'info_langue_principale' => 'glavni jezik web stranica',
+       'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ točaka',
+       'info_les_auteurs_1' => '- @les_auteurs@',
+       'info_logo_format_interdit' => 'Dozvoljeni su samo logotipovi formata @formats@.',
+       'info_logo_max_poids' => 'Veličina logotipa smije biti najviše @maxi@ (ova datoteka je veličine @actuel@).',
+       'info_mail_fournisseur' => 'vašeime@poslužitelj.hr',
+       'info_message_2' => 'PORUKA',
+       'info_message_supprime' => 'PORUKA OBRISANA',
+       'info_messages_nb' => '@nb@ poruka',
+       'info_messages_un' => '1 poruka',
+       'info_mise_en_ligne' => 'datum objavljivanja:',
+       'info_modification_parametres_securite' => 'promjena sigurnosnih parametara',
+       'info_mois_courant' => 'tjekom mjeseca:',
+       'info_mot_cle_ajoute' => 'slijedeća ključna riječ je pridodana',
+       'info_multi_herit' => 'uobičajeni jezik',
+       'info_multi_langues_soulignees' => '<u>Podvučeni jezici</u> sadrže potpun prijevod svih djelova sučelja. Odaberete li jedan od tih jezika, mnogi dijelovi javnog dijela weba će biti pisani tim jezikom (datumi, obrasci). Pri odabiru jezika koji nisu podvučeni će ti dijelovi biti pisani na glavnom jeziku weba.',
+       'info_multilinguisme' => 'višejezično',
+       'info_nom_non_utilisateurs_connectes' => 'Vaše ime se ne pojavljuje u listi spojenih korisnika.',
+       'info_nom_utilisateurs_connectes' => 'Vaše ime se pojavljuje u listi spojenih korisnika.',
+       'info_nombre_en_ligne' => 'trenutačno spojeni korisnici:',
+       'info_non_resultat' => 'nema rezultata za "@cherche_mot@"',
+       'info_non_utilisation_messagerie' => 'Vi ne koristite interne poruke na ovim web stranicama.',
+       'info_nouveau_message' => 'IMATE NOVU PORUKU',
+       'info_nouveaux_messages' => 'IMATE @total_messages@ NOVIH PORUKA',
+       'info_numero_abbreviation' => 'ne',
+       'info_obligatoire' => 'Ova informacija je neophodna',
+       'info_pense_bete' => 'BILJEŠKA',
+       'info_petit_ecran' => 'mali ekran',
+       'info_petition_close' => 'Peticija zatvorena',
+       'info_pixels' => 'točke',
+       'info_plusieurs_mots_trouves' => 'nekoliko ključnih riječi je pronađeno za "@cherche_mot@":',
+       'info_portfolio_automatique' => 'automatska mapa:',
+       'info_premier_resultat' => '[@debut_limit@ prvih rezultata od ukupno @total@]',
+       'info_premier_resultat_sur' => '[@debut_limit@ prvih rezultata od ukupno @total@]',
+       'info_propose_1' => '[@nom_site_spip@] predloženo od: @titre@',
+       'info_propose_2' => 'predložen članak
+-----------------',
+       'info_propose_3' => 'članak "@titre@" je podnešen za objavljivanje.',
+       'info_propose_4' => 'pozvani ste pregledati ga i dati Vaše mišljenje',
+       'info_propose_5' => 'u odgovarajućem forumu. Nalazi se na adresi:',
+       'info_publie_01' => 'Članak "@titre@" je odobren od @connect_nom@.',
+       'info_publie_1' => '[@nom_site_spip@] OBJAVLJENO: @titre@',
+       'info_publie_2' => 'članak objavljen
+-----------------',
+       'info_rechercher' => 'pretraga',
+       'info_rechercher_02' => 'pretraga:',
+       'info_remplacer_vignette' => 'Zamjenite standardnu sličicu sa Vašim logotipom:',
+       'info_rubriques_nb' => '@nb@ rubrike',
+       'info_rubriques_un' => '1 rubrika',
+       'info_sans_titre_2' => 'bez naslova',
+       'info_selectionner_fichier' => 'možete odabrati datoteku iz direktorija @upload@',
+       'info_selectionner_fichier_2' => 'odaberite datoteku:',
+       'info_sites_nb' => '@nb@ web stranica',
+       'info_sites_un' => '1 web stranica',
+       'info_supprimer_vignette' => 'obrisati sličicu',
+       'info_symbole_bleu' => 'Simbol <b>plave boje</b> označava <b>bilješku</b>: tojest poruku za Vašu osobnu upotrebu.',
+       'info_symbole_jaune' => 'Simbol <b>žute boje</b> označava <b>objavu svim autorima</b>: mogu je mijenjati svi administratori, a vidljiva je za sve autore.',
+       'info_symbole_vert' => 'Simbol <b>zelene boje</b> označava <b>poruke razmjenjene sa drugim korisnicima</b> web sajta.',
+       'info_telecharger_nouveau_logo' => 'otpremiti novi logotip:',
+       'info_telecharger_ordinateur' => 'otpremiti sa Vašeg računala:',
+       'info_tous_resultats_enregistres' => '[svi rezultati su obuhvaćeni]',
+       'info_tout_afficher' => 'pokazati sve',
+       'info_travaux_texte' => 'Ove web stranice još nisu postavljene. Posjetite nas nešto kasnije...',
+       'info_travaux_titre' => 'web stranice u izgradnji',
+       'info_trop_resultat' => 'previše rezultata za "@cherche_mot@"; molimo preciznije podatke.',
+       'info_utilisation_messagerie_interne' => 'Vi koristite interne poruke na ovom sajtu.',
+       'info_valider_lien' => 'odobriti ovaj link',
+       'info_verifier_image' => ', molimo provjerite da li su Vaše slike uspješno prenešene.',
+       'info_vignette_defaut' => 'standardna sličica',
+       'info_vignette_personnalisee' => 'prilagođena sličica',
+       'info_visite' => 'posjeta:',
+       'info_vos_rendez_vous' => 'Vaše zakazane obveze',
+       'infos_vos_pense_bete' => 'Vaše bilješke',
+
+       // L
+       'label_ajout_id_rapide' => 'Brzo dodavanje',
+       'label_poids_fichier' => 'Veličina',
+       'lien_afficher_icones_seuls' => 'prikazati samo sličice',
+       'lien_afficher_texte_icones' => 'prikazati sličice i tekst',
+       'lien_afficher_texte_seul' => 'prikazati samo tekst',
+       'lien_liberer' => 'odobriti',
+       'lien_liberer_tous' => 'odobriti ove članke',
+       'lien_nouvea_pense_bete' => 'NOVA BILJEŠKA',
+       'lien_nouveau_message' => 'NOVA PORUKA',
+       'lien_nouvelle_annonce' => 'NOVA OBJAVA',
+       'lien_petitions' => 'PETICIJA',
+       'lien_popularite' => 'popularnost: @popularite@%',
+       'lien_racine_site' => 'KORIJEN WEBA',
+       'lien_reessayer' => 'pokušati ponovo',
+       'lien_repondre_message' => 'odgovoriti na ovu poruku',
+       'lien_supprimer' => 'obrisati',
+       'lien_tout_afficher' => 'pokazati sve',
+       'lien_visite_site' => 'posjetiti ove web stranice',
+       'lien_visites' => '@visites@ posjeta',
+       'lien_voir_auteur' => 'prikazati ovog autora',
+       'ligne' => 'Linija',
+       'login' => 'Spajanje',
+       'login_acces_prive' => 'pristup redakcijskom sistemu',
+       'login_autre_identifiant' => 'prijava pod drugim imenom',
+       'login_cookie_accepte' => 'molimo, podesite Vaš browser da ih prihvati (barem za ove web stranice).',
+       'login_cookie_oblige' => 'da biste se pouzdano identificirali, Vaš browser mora prihvatiti cookie.',
+       'login_deconnexion_ok' => 'odjavljen.',
+       'login_erreur_pass' => 'pogrešna lozinka.',
+       'login_espace_prive' => 'redakcijski sistem',
+       'login_identifiant_inconnu' => 'korisnik "@login@" je nepoznat.',
+       'login_login' => 'prijava:',
+       'login_login2' => 'prijava (korisničko ime za pristup web stranicama):',
+       'login_login_pass_incorrect' => '(pogrešno korisničko ime ili lozinka).',
+       'login_motpasseoublie' => 'zaboravljena lozinka?',
+       'login_non_securise' => 'Oprez, ovaj formular nije siguran.
+   Ako želite da Vaša lozinka bude nevidljiva u mreži,
+   molimo aktivirajte JavaScript u Vašem browseru i',
+       'login_nouvelle_tentative' => 'novi pokušaj',
+       'login_par_ici' => 'Vi ste registrirani... idite ovamo...',
+       'login_pass2' => 'lozinka:',
+       'login_preferez_refuser' => '<b>Ako ne želite primiti cookie</b>, postoji drugi (manje siguran) način za spajanje:',
+       'login_recharger' => 'osvježiti ovu stranicu',
+       'login_rester_identifie' => 'upamti moj identitet nekoliko dana',
+       'login_retour_public' => 'natrag u javni dio weba',
+       'login_retour_site' => 'natrag u javni dio weba',
+       'login_retoursitepublic' => 'natrag u javni dio weba',
+       'login_sans_cookiie' => 'identifikacija bez cookie',
+       'login_securise' => 'Sigurnosna prijava',
+       'login_sinscrire' => 'prijava',
+       'login_test_navigateur' => 'ispitivanje browsera / ponovno spajanje',
+       'login_verifiez_navigateur' => '(međutim, provjerite da li je Vaš browser možda upamtio Vašu lozinku...)',
+
+       // M
+       'masquer_colonne' => 'Sakriti ovaj stupac',
+       'masquer_trad' => 'sakriti prijevode',
+       'module_fichiers_langues' => 'jezične datoteke',
+
+       // N
+       'navigateur_pas_redirige' => 'Ako Vas Vaš browser ne odvede dalje, kliknite ovdje za nastavak.',
+       'numero' => 'Broj',
+
+       // O
+       'occurence' => 'Instanca',
+       'onglet_affacer_base' => 'obrisati bazu podataka',
+       'onglet_auteur' => 'autor',
+       'onglet_contenu_site' => 'sadržaj weba',
+       'onglet_evolution_visite_mod' => 'razvitak posjeta',
+       'onglet_fonctions_avances' => 'napredne fukcije',
+       'onglet_informations_personnelles' => 'osobne informacije',
+       'onglet_interactivite' => 'interaktivnost',
+       'onglet_messagerie' => 'sistem za poruke',
+       'onglet_repartition_rubrique' => 'raspodjela po rubrikama',
+       'onglet_save_restaur_base' => 'snimiti / povratiti bazu podataka',
+       'onglet_vider_cache' => 'isprazniti cache',
+
+       // P
+       'pass_choix_pass' => 'unesite Vašu novu lozinku:',
+       'pass_erreur' => 'greška',
+       'pass_erreur_acces_refuse' => '<b>greška:</b> Vi nemate više pristup ovim web stranicama.',
+       'pass_erreur_code_inconnu' => '<b>greška:</b> ova oznaka ne odgovara niti jednom korisniku ovih web stranica.',
+       'pass_erreur_non_enregistre' => '<b>greška:</b> adresa <tt>@email_oubli@</tt> nije registrirana na ovim web stranicama.',
+       'pass_erreur_non_valide' => '<b>greška:</b> mail adresa <tt>@email_oubli@</tt> je neispravna!',
+       'pass_erreur_probleme_technique' => '<b>greška:</b> ovaj mail nije mogao biti poslan zbog tehničkih poteškoća.',
+       'pass_espace_prive_bla' => 'Redakcijski sistem je otvoren samo za registrirane korisnike.
+Kad se registrirate, možete pregledati članke u obradi,
+pisati nove članke i sudjelovati u svim forumima.',
+       'pass_forum_bla' => 'Zatražili ste sudjelovanje u forumu koji je
+rezerviran samo za registrirane korisnike.',
+       'pass_indiquez_cidessous' => 'Unesite dolje mail adresu sa kojom se ste
+ranije registrirali. Nakon toga ćete
+dobiti mail sa uputama kako da ponovo
+dobijete pristup.',
+       'pass_mail_passcookie' => '(ovo je automatska poruka)
+
+Da biste ponovo dobili pristup web stranicama
+@nom_site_spip@ (@adresse_site@)
+
+idite na slijedeću adresu:
+    @sendcookie@
+
+Tada možete unijeti novu lozinku i
+ponovo dobiti pristup web stranicama.
+',
+       'pass_mot_oublie' => 'lozinka zaboravljena',
+       'pass_nouveau_enregistre' => 'Vaša nova lozinka je upamćena.',
+       'pass_nouveau_pass' => 'nova lozinka',
+       'pass_ok' => 'OK',
+       'pass_oubli_mot' => 'lozinka zaboravljena',
+       'pass_procedure_changer' => 'Kako bismo promjenili vašu lozinku, moramo prvo provjeriti vaš identitet. Stoga nam morate navesti mail adresu pridruženu vašem korisničkom računu.',
+       'pass_quitter_fenetre' => 'napustiti ovaj prozor',
+       'pass_rappel_login' => 'podsjetnik: Vaše korisničko ime za prijavu (login) je "@login@".',
+       'pass_recevoir_mail' => 'Primit ćete mail sa uputama za povrat pristupa web stranicama.',
+       'pass_retour_public' => 'natrag u javno područje weba',
+       'pass_rien_a_faire_ici' => 'ovdje se nema što raditi.',
+       'pass_vousinscrire' => 'registrirati se na web stranicama',
+       'precedent' => 'prethodno',
+       'previsualisation' => 'provjeriti izgled',
+       'previsualiser' => 'pokazati izgled',
+
+       // R
+       'retour' => 'Povratak',
+
+       // S
+       'spip_conforme_dtd' => 'SPIP nalazi da je ova stranica u skladu sa njenim DOCTYPE:',
+       'squelette' => 'predložak',
+       'squelette_inclus_ligne' => 'sadržani predložak, linija',
+       'squelette_ligne' => 'predložak, linija',
+       'stats_visites_et_popularite' => 'posjete: @visites@; popularnost: @popularite@',
+       'suivant' => 'slijedeće',
+
+       // T
+       'taille_go' => '@taille@ Gb',
+       'taille_ko' => '@taille@ kb',
+       'taille_mo' => '@taille@ Mb',
+       'taille_octets' => '@taille@ bytes',
+       'texte_actualite_site_1' => 'Kad upoznate interface, kliknite na «',
+       'texte_actualite_site_2' => 'potpuni interface',
+       'texte_actualite_site_3' => '» da biste vidjeli više mogućnosti.',
+       'texte_creation_automatique_vignette' => 'Ovaj web automatski pravi male sličice. Ako pomoću ovog formulara instalirate slike formata @gd_formats@, od njih će biti automatski napravljene i male sličice veličine maksimalno @taille_preview@ točaka.',
+       'texte_documents_associes' => 'Slijedeći dokumenti pripadaju članku, ali nisu direkno uključeni u njega. Ovisno o izgledu javnog područja weba, oni se mogu tamo vidjeti kao pridruženi dokumenti.',
+       'texte_erreur_mise_niveau_base' => 'Greška u bazi podataka prilikom unapređenja verzije.
+Slika <b>@fichier@</b> nije mogla biti preuzeta (članak @id_article@).<p>
+Brižljivo zabilježite ove oznake, i zatim ponovo pokušajte unaprediti verziju.
+Nakon toga provjerite da li se slike pojavljuju u člancima.',
+       'texte_erreur_visiteur' => 'Pokušali ste pristupiti privatnoj dijelu koristeći login koji to ne dozvoljava.',
+       'texte_inc_auth_1' => 'Vi se ste predstavili korisničkim imenom
+  <b>@auth_login@</b>, ali to korisničko ime ne postoji (više) u bazi podataka. 
+  Pokušajte',
+       'texte_inc_auth_2' => 'se ponovo spojiti',
+       'texte_inc_auth_3' => ', nakon što ste zatvorili i ponovno pokrenuli Vaš browser.',
+       'texte_inc_config' => 'Izmjene u slijedećim podešavanjima imaju veliki utjecaj na funkcioniranje ovih web stranica. Savjetujemo Vam da ništa ne mijenjate, osim ako dobro poznajete ustrojstvo programa
+SPIP. <br /><br /><b>Uopćeno rečeno, izričito vam savjetujemo da izmjene prepustite glavnom administratoru web stranica.</b>',
+       'texte_inc_meta_1' => 'Dogodila se greška prilikom pokušaja pisanja datoteke <code>@fichier@</code>. Ako ste Vi administrator, molim da',
+       'texte_inc_meta_2' => 'dozvole pristupa',
+       'texte_inc_meta_3' => 'za direktorij <code>@repertoire@</code>.',
+       'texte_statut_en_cours_redaction' => 'obrada u toku',
+       'texte_statut_poubelle' => 'obrisano',
+       'texte_statut_propose_evaluation' => 'podnešeno na provjeru',
+       'texte_statut_publie' => 'objavljeno',
+       'texte_statut_refuse' => 'odbačeno',
+       'titre_ajouter_mot_cle' => 'DODATI KLJUČNU RIJEČ:',
+       'titre_cadre_raccourcis' => 'PREČACI:',
+       'titre_changer_couleur_interface' => 'promjena boje interface-a',
+       'titre_image_admin_article' => 'Vi možete upravljati ovim člankom',
+       'titre_image_administrateur' => 'administrator',
+       'titre_image_aide' => 'pomoć za ovu stavku',
+       'titre_image_auteur_supprime' => 'autor obrisan',
+       'titre_image_redacteur' => 'autor bez pristupa',
+       'titre_image_redacteur_02' => 'autor',
+       'titre_image_selecteur' => 'Prikazati popis',
+       'titre_image_visiteur' => 'posjetitelj',
+       'titre_joindre_document' => 'PRIDRUŽITI DOKUMENT',
+       'titre_mots_cles' => 'KLJUČNE RIJEČI',
+       'titre_probleme_technique' => 'Upozorenje: tehnički problem (SQL poslužitelj) onemogućava pristup ovom dijelu weba.  Hvala na razumijevanju.',
+       'titre_publier_document' => 'OBJAVITI DOKUMENT U OVOJ RUBRICI',
+       'titre_signatures_attente' => 'Potpisi koji čekaju na potvrdu',
+       'titre_signatures_confirmees' => 'Potvrđeni potpisi',
+       'titre_statistiques' => 'statistika web stranica',
+       'titre_titre_document' => 'naslov dokumenta:',
+       'todo' => 'u pripremi',
+       'trad_reference' => '(referentni članak)',
+
+       // Z
+       'zbug_balise_b_aval' => ': tag B se mora nalaziti prije petlje',
+       'zbug_balise_inexistante' => 'greška @from@: oznaka @balise@ ne postoji',
+       'zbug_balise_sans_argument' => 'Nedostaje parametar u oznaci @balise@',
+       'zbug_boucle' => 'petlja',
+       'zbug_boucle_recursive_undef' => 'nedefinirana rekurzivna petlja: @nom@',
+       'zbug_calcul' => 'proračun',
+       'zbug_champ_hors_boucle' => 'polje @champ@ van petlje',
+       'zbug_champ_hors_motif' => 'polje @champ@ van pripadajućeg konteksta (petlje) @motif@',
+       'zbug_code' => 'kod',
+       'zbug_critere_inconnu' => 'nepoznati kriterij @critere@',
+       'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} na tablici bez primarnog ključa',
+       'zbug_distant_interdit' => 'vanjski podaci zabranjeni',
+       'zbug_doublon_table_sans_cle_primaire' => 'Dvostruki zapisi u tablici koja ne posjeduje jednostavan primarni ključ',
+       'zbug_doublon_table_sans_index' => 'Dvostruki zapisi u tablici bez indeksa',
+       'zbug_erreur_boucle_double' => 'Petlja @id@: dvostruka definicija',
+       'zbug_erreur_boucle_fermant' => 'Petlja @id@: nedostaje zatvarajuća oznaka',
+       'zbug_erreur_boucle_syntaxe' => 'Nevaljana sintaksa petlje (BOUCLE) ',
+       'zbug_erreur_compilation' => 'Greška pri kompilaciji',
+       'zbug_erreur_execution_page' => 'Greška pri izvršenju',
+       'zbug_erreur_filtre' => 'Nedefiniran filter @filtre@',
+       'zbug_erreur_meme_parent' => '{meme_parent} je primjenljiv samo na (FORUMS) i (RUBRIQUES)',
+       'zbug_erreur_squelette' => 'greška (greške) u predlošku (template)',
+       'zbug_hors_compilation' => 'Nije kompilirano',
+       'zbug_info_erreur_squelette' => 'greška na web stranicama',
+       'zbug_inversion_ordre_inexistant' => 'Preokretanje nepostojećeg poretka',
+       'zbug_pagination_sans_critere' => 'Oznaka #PAGINATION bez kriterija {pagination}, ili korištena u rekurzivnoj petlji',
+       'zbug_parametres_inclus_incorrects' => 'Pogrešni parametri uključivanja: @param@',
+       'zbug_profile' => 'Vrijeme računanja: @time@',
+       'zbug_resultat' => 'rezultat',
+       'zbug_serveur_indefini' => 'SQL poslužitelj nedefiniran',
+       'zbug_statistiques' => 'Statistika SQL upita po redoslijedu trajanja',
+       'zbug_table_inconnue' => 'nepoznata SQL tabela "@table@"',
+       'zxml_connus_attributs' => 'poznata svojstva',
+       'zxml_de' => 'od',
+       'zxml_inconnu_attribut' => 'nepoznato svojstvo',
+       'zxml_inconnu_balise' => 'nepoznata oznaka',
+       'zxml_inconnu_entite' => 'nepoznati entitet',
+       'zxml_inconnu_id' => 'nepoznat ID',
+       'zxml_mais_de' => 'ali od',
+       'zxml_non_conforme' => 'ne odgovara načelu',
+       'zxml_non_fils' => 'nije dijete od',
+       'zxml_nonvide_balise' => 'oznaka nije prazna',
+       'zxml_obligatoire_attribut' => 'traženo svojstvo nedostaje u',
+       'zxml_succession_fils_incorrecte' => 'pogrešno naslijeđivanje',
+       'zxml_survoler' => 'da biste vidjeli ispravne, postavite kursor iznad ',
+       'zxml_valeur_attribut' => 'vrijednost svojstva',
+       'zxml_vide_balise' => 'prazna oznaka',
+       'zxml_vu' => 'već viđeno'
+);
+
+?>
diff --git a/www/ecrire/lang/spip_oc_ni_mis.php b/www/ecrire/lang/spip_oc_ni_mis.php
new file mode 100644 (file)
index 0000000..c4271d4
--- /dev/null
@@ -0,0 +1,735 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/spip?lang_cible=oc_ni_mis
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // 0
+       '0_URL' => 'http://listes.rezo.net/mailman/listinfo/spip-oc',
+       '0_langue' => 'Nissart (mistralenc) [oc_ni_mis]',
+       '0_liste' => 'spip-oc@rezo.net',
+       '0_mainteneur' => 'Sylvain Oliver : spip -at- oliver-fr.org',
+
+       // A
+       'access_interface_graphique' => 'Retour a l’interfaça gràfica coumpleta',
+       'access_mode_texte' => 'Afichà l’interfaça testuala simplificada',
+       'admin_debug' => 'debug',
+       'admin_modifier_article' => 'Moudificà aquel article',
+       'admin_modifier_auteur' => 'Moudificà aquel autour',
+       'admin_modifier_breve' => 'Moudificà aquela brèva',
+       'admin_modifier_mot' => 'Moudificà aqueu mot clau',
+       'admin_modifier_rubrique' => 'Moudificà aquela rùbrica',
+       'admin_recalculer' => 'Recarculà aquela pàgina',
+       'afficher_calendrier' => 'Afichà lou calendari',
+       'afficher_trad' => 'afichà li traducioun',
+       'alerte_maj_impossible' => '<b>Alèrta !</b> La metuda a jou de la basa SQL vers la versioun @version@ es empoussible ; magara que lì a un proublema relatiéu au drech de moudificà la basa de dounada. Vourguès countatà lou vouòstre aubergadour.',
+       'alerte_modif_info_concourante' => 'MÈFI : Aquela infourmacioun es estada moudificada d’un autre bias. La valour atuala es :',
+       'analyse_xml' => 'Analisa XML',
+       'annuler' => 'Anulà',
+       'antispam_champ_vide' => 'Vourguès laissà aqueu camp vuèi:',
+       'articles_recents' => 'Lu article mai rechent',
+       'avis_1_erreur_saisie' => 'Lì a 1 errour en la vouòstra sesìda, vourguès verificà li infourmacioun.',
+       'avis_archive_incorrect' => 'lou fichié arquivi noun es un fichié SPIP',
+       'avis_archive_invalide' => 'lou fichier arquivi noun es valid',
+       'avis_attention' => 'MÈFI !',
+       'avis_champ_incorrect_type_objet' => 'Noum de camp incourrect @name@ per un ouget de tìpou @type@',
+       'avis_colonne_inexistante' => 'La coulòna @col@ noun esista',
+       'avis_erreur' => 'Errour : veire aquì souta',
+       'avis_erreur_connexion' => 'Errour de counessioun',
+       'avis_erreur_cookie' => 'proublèma de cookie',
+       'avis_erreur_fonction_contexte' => 'Errour de prougramacioun. Noun apelà aquela founcioun en aqueu countest.',
+       'avis_erreur_mysql' => 'Errour SQL ',
+       'avis_erreur_sauvegarde' => 'Errour en la sauvagarda (@type@ @id_objet@) ! ',
+       'avis_erreur_visiteur' => 'Proublèma d’achès a l’espaci privat',
+       'avis_nb_erreurs_saisie' => 'Lì a @nb@ errour en la vouòstra sesìda, vourguès verificà li infourmacioun.',
+
+       // B
+       'barre_a_accent_grave' => 'Inscrì una A achèntou grave maiùscoula',
+       'barre_aide' => 'Utilisà li escourcha tipougràfiqui da enriquì la vouòstra coumpaginacioun',
+       'barre_e_accent_aigu' => 'Inscrì una E achèntou agut maiùscoula',
+       'barre_eo' => 'Inscrì una E en l’O',
+       'barre_eo_maj' => 'Inscrì una E en l’O maiùscoula',
+       'barre_euro' => 'Inscrì lou sìmbolou €',
+       'barre_gras' => 'Metre en {{gras}}',
+       'barre_guillemets' => 'Entourà embé de « virgouleta »',
+       'barre_guillemets_simples' => 'Entourà embé de “virgouleta de segount nivèu”',
+       'barre_intertitre' => 'Trasfourmà en {{{intertitre}}}',
+       'barre_italic' => 'Metre en {itàlicou}',
+       'barre_lien' => 'Trasfourmà en [estac ipertèst->http://...]',
+       'barre_lien_input' => 'Vourguès endicà l’adressa dóu vouòstre estac (poudès endicà una adressa web souta la forma http://www.loumieusit.com o simplamen endicà lou número d’un article d’aqueu sit).',
+       'barre_note' => 'Trasfourmà en [[Nota de bas de pàgina]]',
+       'barre_paragraphe' => 'Creà un paràgrafou',
+       'barre_quote' => '<quote>Cità un message</quote>',
+       'bouton_changer' => 'Cambià',
+       'bouton_chercher' => 'Cercà',
+       'bouton_choisir' => 'Chausì',
+       'bouton_deplacer' => 'Desplaçà',
+       'bouton_download' => 'Telecargà',
+       'bouton_enregistrer' => 'Registrà',
+       'bouton_radio_desactiver_messagerie_interne' => 'Desativà la messagerìa interna',
+       'bouton_radio_envoi_annonces' => 'Mandà lu anounci editourial',
+       'bouton_radio_non_envoi_annonces' => 'Noun mandà d’anounci',
+       'bouton_radio_non_envoi_liste_nouveautes' => 'Noun mandà la lista dei nouvità',
+       'bouton_recharger_page' => 'Recargà aquela pàgina',
+       'bouton_telecharger' => 'Telecargà',
+       'bouton_upload' => 'Televersà',
+       'bouton_valider' => 'Validà',
+
+       // C
+       'cal_apresmidi' => 'predinà',
+       'cal_jour_entier' => 'jou entié',
+       'cal_matin' => 'matin',
+       'cal_par_jour' => 'calendari per jou',
+       'cal_par_mois' => 'calendari per mès',
+       'cal_par_semaine' => 'calendari per semana',
+       'choix_couleur_interface' => 'coulou ',
+       'choix_interface' => 'chausida de l’interfaça',
+       'colonne' => 'Coulòna',
+       'confirm_changer_statut' => 'Mèfi, avès demandat de cambià l’estatut d’aquel elemen. Desiràs countinuà ?',
+       'correcte' => 'courret', # chaine utilisée dans le debugueur : "validation .. impossible" ou "validation .. correcte"
+
+       // D
+       'date_aujourdhui' => 'ancuèi',
+       'date_avant_jc' => 'avant lou Crist',
+       'date_dans' => 'en @delai@',
+       'date_de_mois_1' => '@j@ de genouié',
+       'date_de_mois_10' => '@j@ d’outobre',
+       'date_de_mois_11' => '@j@ de nouvembre',
+       'date_de_mois_12' => '@j@ de decembre',
+       'date_de_mois_2' => '@j@ de febrié',
+       'date_de_mois_3' => '@j@ de mars',
+       'date_de_mois_4' => '@j@ d’abriéu',
+       'date_de_mois_5' => '@j@ de mai',
+       'date_de_mois_6' => '@j@ de jugne',
+       'date_de_mois_7' => '@j@ de julhet',
+       'date_de_mois_8' => '@j@ d’aoust',
+       'date_de_mois_9' => '@j@ de setembre',
+       'date_demain' => 'deman',
+       'date_fmt_heures_minutes' => '@h@h@m@min',
+       'date_fmt_heures_minutes_court' => '@h@h@m@',
+       'date_fmt_jour' => '@nomjour@ @jour@',
+       'date_fmt_jour_heure' => '@jour@ à @heure@',
+       'date_fmt_jour_heure_debut_fin' => 'lou @jour@ de @heure_debut@ fin a @heure_fin@',
+       'date_fmt_jour_heure_debut_fin_abbr' => 'lou @dtstart@@jour@ de @heure_debut@@dtabbr@ fin a @dtend@@heure_fin@@dtabbr@',
+       'date_fmt_jour_mois' => 'lou @jourmois@',
+       'date_fmt_jour_mois_annee' => '@jourmois@ dóu @annee@',
+       'date_fmt_mois_annee' => '@nommois@ dóu @annee@',
+       'date_fmt_nomjour' => '@nomjour@ @date@',
+       'date_fmt_nomjour_date' => 'lou @nomjour@ @date@',
+       'date_fmt_periode' => 'Dau @date_debut@ fin a @date_fin@',
+       'date_fmt_periode_abbr' => 'Dau @dtart@@date_debut@@dtabbr@ fin a @dtend@@date_fin@@dtabbr@',
+       'date_fmt_periode_from' => 'Dau',
+       'date_fmt_periode_to' => 'fin a',
+       'date_fmt_saison_annee' => '@saison@ @annee@',
+       'date_heures' => 'oura',
+       'date_hier' => 'ier',
+       'date_il_y_a' => '@delai@ fa',
+       'date_jnum1' => '1er',
+       'date_jnum10' => '10',
+       'date_jnum11' => '11',
+       'date_jnum12' => '12',
+       'date_jnum13' => '13',
+       'date_jnum14' => '14',
+       'date_jnum15' => '15',
+       'date_jnum16' => '16',
+       'date_jnum17' => '17',
+       'date_jnum18' => '18',
+       'date_jnum19' => '19',
+       'date_jnum2' => '2',
+       'date_jnum20' => '20',
+       'date_jnum21' => '21',
+       'date_jnum22' => '22',
+       'date_jnum23' => '23',
+       'date_jnum24' => '24',
+       'date_jnum25' => '25',
+       'date_jnum26' => '26',
+       'date_jnum27' => '27',
+       'date_jnum28' => '28',
+       'date_jnum29' => '29',
+       'date_jnum3' => '3',
+       'date_jnum30' => '30',
+       'date_jnum31' => '31',
+       'date_jnum4' => '4',
+       'date_jnum5' => '5',
+       'date_jnum6' => '6',
+       'date_jnum7' => '7',
+       'date_jnum8' => '8',
+       'date_jnum9' => '9',
+       'date_jour_1' => 'dimènegue',
+       'date_jour_1_abbr' => 'dmg.',
+       'date_jour_1_initiale' => 'dg.',
+       'date_jour_2' => 'dilun',
+       'date_jour_2_abbr' => 'dil.',
+       'date_jour_2_initiale' => 'dl.',
+       'date_jour_3' => 'dimars',
+       'date_jour_3_abbr' => 'dmr.',
+       'date_jour_3_initiale' => 'dm.',
+       'date_jour_4' => 'dimècre',
+       'date_jour_4_abbr' => 'dmc.',
+       'date_jour_4_initiale' => 'dc.',
+       'date_jour_5' => 'dijòu',
+       'date_jour_5_abbr' => 'dij.',
+       'date_jour_5_initiale' => 'dj.',
+       'date_jour_6' => 'divendre',
+       'date_jour_6_abbr' => 'div.',
+       'date_jour_6_initiale' => 'dv.',
+       'date_jour_7' => 'dissata',
+       'date_jour_7_abbr' => 'dis.',
+       'date_jour_7_initiale' => 'ds.',
+       'date_jours' => 'jou',
+       'date_minutes' => 'minuta',
+       'date_mois' => 'mès',
+       'date_mois_1' => 'genouié',
+       'date_mois_10' => 'outobre',
+       'date_mois_10_abbr' => 'out.',
+       'date_mois_11' => 'nouvembre',
+       'date_mois_11_abbr' => 'nouv.',
+       'date_mois_12' => 'decembre',
+       'date_mois_12_abbr' => 'dec.',
+       'date_mois_1_abbr' => 'gen.',
+       'date_mois_2' => 'febrié',
+       'date_mois_2_abbr' => 'febr.',
+       'date_mois_3' => 'mars',
+       'date_mois_3_abbr' => 'mars',
+       'date_mois_4' => 'abriéu',
+       'date_mois_4_abbr' => 'abr.',
+       'date_mois_5' => 'mai',
+       'date_mois_5_abbr' => 'mai',
+       'date_mois_6' => 'jugne',
+       'date_mois_6_abbr' => 'jugne',
+       'date_mois_7' => 'julhet',
+       'date_mois_7_abbr' => 'julh.',
+       'date_mois_8' => 'aoust',
+       'date_mois_8_abbr' => 'aoust',
+       'date_mois_9' => 'setembre',
+       'date_mois_9_abbr' => 'set.',
+       'date_saison_1' => 'iver',
+       'date_saison_2' => 'prima',
+       'date_saison_3' => 'estiéu',
+       'date_saison_4' => 'autoun',
+       'date_secondes' => 'secounda',
+       'date_semaines' => 'semana',
+       'date_un_mois' => 'mès',
+       'date_une_heure' => 'oura',
+       'date_une_minute' => 'minuta',
+       'date_une_seconde' => 'secounda',
+       'date_une_semaine' => 'semana',
+       'dirs_commencer' => ' per fin de coumençà vertadieramen l’instalacioun',
+       'dirs_preliminaire' => 'Preliminari : <b>Reglà lu drech d’achès</b>',
+       'dirs_probleme_droits' => 'Proublèma de drech d’achès',
+       'dirs_repertoires_absents' => '<p><b>Lu repertori seguent noun soun estat troubat :</b></p><ul>@bad_dirs@.</ul>
+  <p>Si pòu que vengue d’un proublema de maiùscoula o minùscula mau metuda.
+  Verificàs que li minùscula e maiùscoula d’aquelu repertori courrespouòndon ben embé cen qu’es afichat
+  aquì soubre ; s’es pas lou cas, renoumàs lu repertori embé lou vouòstre lougiciau FTP per courregì l’errour.</p>
+  <p>Un còu qu’aurès fach acò, pourès ',
+       'dirs_repertoires_suivants' => '<p><b>Lu repertori seguent noun soun achessible en escritura :</b></p><ul>@bad_dirs@.</ul>
+  <p>Per lì remedià, utilisàs lou vouòstre client FTP per fin de reglà lu drech d’achès de cadun
+  d’aquelu repertori. La guida d’instalacioun espliga en detalh couma prouchedre.</p>
+  <p>Un còu aquesta manipulacioun facha, pourès ',
+       'double_occurrence' => 'Doubla ocurença de @balise@',
+
+       // E
+       'en_cours' => 'en cours',
+       'envoi_via_le_site' => 'Manda vìa lou sit web',
+       'erreur' => 'Errour',
+       'erreur_balise_non_fermee' => 'darrièra balisa noun clàusa :',
+       'erreur_technique_ajaxform' => 'Achident ! Una errour emprouvisa a empedit de soumetre lou fourmulari. Poudès encara prouvà.',
+       'erreur_technique_enregistrement_champs' => 'Una errour tecnicala a empedit de ben registrà lou camp @champs@.',
+       'erreur_technique_enregistrement_impossible' => 'Una errour tecnicala a empedit lou registramen.',
+       'erreur_texte' => 'errour',
+       'etape' => 'Tapa',
+
+       // F
+       'fichier_introuvable' => 'Fichié @fichier@ introuvable',
+       'form_auteur_confirmation' => 'Counfirmàs la vouòstra adressa email',
+       'form_auteur_email_modifie' => 'La vouòstra adressa email a estada moudificada.',
+       'form_auteur_envoi_mail_confirmation' => 'Un courrié electrònicou de counfirmacioun a estat mandat a @email@. Deurès visità l’adressa Web menciounada en aqueu courrié pèr validà la vouòstra adressa mail.',
+       'form_auteur_mail_confirmation' => 'Bouònjou,
+
+Avès demandat à changà la vouòstra adressa e-mail.
+Pèr counfirmà la vouòstra adressa nova, devès vi counetà pèr
+l’adressa aquì souta (senoun la vouòstra demanda
+sera ignourada) :
+
+    @url@
+',
+       'form_deja_inscrit' => 'Sias ja inscrich.',
+       'form_email_non_valide' => 'La vouòstra adressa e-mail noun es valida.',
+       'form_forum_access_refuse' => 'Poudès pu achèdre en estou sit.',
+       'form_forum_bonjour' => 'Bouònjou,',
+       'form_forum_confirmer_email' => 'Pèr counfirmà la vouòstra adressa e-mail, anàs en aquela adressa : @url_confirm@',
+       'form_forum_email_deja_enregistre' => 'Aquela adressa e-mail es ja registrada, poudès dounca utilisà lou vouòstre mot de passa abitual.',
+       'form_forum_identifiant_mail' => 'Lou vouòstre nouvèl identificant ven de v’èstre mandat da e-mail.',
+       'form_forum_identifiants' => 'Identificant persounal',
+       'form_forum_indiquer_nom_email' => 'Endicàs aquí lou vouòstre noum e la vouòstra adressa e-mail. Lou vouòstre identificant persounal arriberà rapidamen, da courrié electrònicou.',
+       'form_forum_login' => 'login :',
+       'form_forum_message_auto' => '(aquò es un message automatic)',
+       'form_forum_pass' => 'mot de passa :',
+       'form_forum_probleme_mail' => 'Proublèma d’e-mail : l’identificant noun pòu estre mandat.',
+       'form_forum_voici1' => 'Vèqui lu vouòstre identificant pèr poudé participà à la vida dóu sit "@nom_site_spip@" (@adresse_site@) :',
+       'form_forum_voici2' => 'Vèqui lu vouòstre identificant pèr proupausà d’article 
+ sus lou sit "@nom_site_spip@" (@adresse_login@) :',
+       'form_indiquer_email' => 'Vourguès endicà la vouòstra adressa e-mail.',
+       'form_indiquer_nom' => 'Vourguès endicà lou vouòstre noum.',
+       'form_indiquer_nom_site' => 'Vourguès endicà lou noum dóu vouòstre sit.',
+       'form_pet_deja_enregistre' => 'Aqueu sit es ja registrat',
+       'form_pet_signature_pasprise' => 'La vouòstra firma es pas pilhada en conte.',
+       'form_prop_confirmer_envoi' => 'Counfirmà l’espedissioun',
+       'form_prop_description' => 'Descricioun/coumentari',
+       'form_prop_enregistre' => 'La vouòstra proupòsta es registrada, apareisserà en ligna après validacioun dei respounsable dóu sit.',
+       'form_prop_envoyer' => 'Mandà un message',
+       'form_prop_indiquer_email' => 'Vourguès endicà una adressa e-mail valida',
+       'form_prop_indiquer_nom_site' => 'Vourguès endicà lou noum dóu sit.',
+       'form_prop_indiquer_sujet' => 'Vourguès endicà un soujet',
+       'form_prop_message_envoye' => 'Message mandat',
+       'form_prop_non_enregistre' => 'La vouòstra proupòsta es pas estada registrada.',
+       'form_prop_sujet' => 'Soujet',
+       'form_prop_url_site' => 'Adressa URL dóu sit',
+       'forum_non_inscrit' => 'Noun sias inscrich, o l’adressa o lou mot de passa es erróneou.',
+       'forum_par_auteur' => 'per @auteur@',
+       'forum_titre_erreur' => 'Errour...',
+
+       // I
+       'ical_texte_rss_articles' => 'Lou fichié « backend » dei article d’estou sit si troba a l’adressa :',
+       'ical_texte_rss_articles2' => 'Poudès finda outenì de fichié « backend » per lu article de cada rùbrica dóu sit :',
+       'ical_texte_rss_breves' => 'Esìsta de mai un fichié countenant li brèva dóu sit. En prechisant un nùmero de rùbrica, outendrès basta li brèva d’aquela rùbrica.',
+       'icone_a_suivre' => 'Da sègre',
+       'icone_admin_site' => 'Aministracioun dóu sit',
+       'icone_agenda' => 'Agenda',
+       'icone_aide_ligne' => 'Ajuda',
+       'icone_articles' => 'Article',
+       'icone_auteurs' => 'Autour',
+       'icone_brouteur' => 'Navigacioun rapida',
+       'icone_configuration_site' => 'Counfiguracioun',
+       'icone_configurer_site' => 'Counfigurà lou vouòstre sit',
+       'icone_creer_nouvel_auteur' => 'Creà un nouvel autour',
+       'icone_creer_rubrique' => 'Creà una rùbrica',
+       'icone_creer_sous_rubrique' => 'Creà una souta-rùbrica',
+       'icone_deconnecter' => 'Si descounetà',
+       'icone_discussions' => 'Discussioun',
+       'icone_doc_rubrique' => 'Doucumen dei rùbrica',
+       'icone_ecrire_article' => 'Escrieure un novèl article',
+       'icone_edition_site' => 'Edicioun',
+       'icone_gestion_langues' => 'Gestioun dei lenga',
+       'icone_informations_personnelles' => 'Infourmacioun persounali',
+       'icone_interface_complet' => 'interfaça coumpleta',
+       'icone_interface_simple' => 'Interfaça simplificada',
+       'icone_maintenance_site' => 'Mantenença dóu sit',
+       'icone_messagerie_personnelle' => 'Messagerìa persounala',
+       'icone_repartition_debut' => 'Afichà la reparticioun despì lou prencìpi',
+       'icone_rubriques' => 'Rùbrica',
+       'icone_sauver_site' => 'Sauvagarda dóu sit',
+       'icone_site_entier' => 'Tout lou sit',
+       'icone_sites_references' => 'Sit referençat',
+       'icone_statistiques' => 'Estatìstica dóu sit',
+       'icone_suivi_activite' => 'Sègre la vida dóu sit',
+       'icone_suivi_actualite' => 'Evoulucioun dóu sit',
+       'icone_suivi_pettions' => 'Sègre/gerà li peticioun',
+       'icone_suivi_revisions' => 'Moudificacioun dei article',
+       'icone_supprimer_document' => 'Suprimà aqueu doucumen',
+       'icone_supprimer_image' => 'Suprimà aquela image',
+       'icone_tous_articles' => 'Toui lu vouòstre article',
+       'icone_tous_auteur' => 'Toui lu autour',
+       'icone_tous_visiteur' => 'Toui lu visitaire',
+       'icone_visiter_site' => 'Veire lou sit pùblicou',
+       'icone_voir_en_ligne' => 'Veire en ligna',
+       'img_indisponible' => 'image indispounible',
+       'impossible' => 'empoussible',
+       'info_a_suivre' => 'DA SÈGRE »',
+       'info_acces_interdit' => 'Achès prouhibit',
+       'info_acces_refuse' => 'Achès refudat',
+       'info_action' => 'Acioun : @action@',
+       'info_administrer_rubriques' => 'Poudès aministrà aquela rùbrica e li sieu souta-rùbrica',
+       'info_adresse_non_indiquee' => 'Noun avès endicat d’adressa a prouvà !',
+       'info_aide' => 'AJUDA:',
+       'info_ajouter_mot' => 'Ajustà aqueu mot',
+       'info_annonce' => 'ANOUNCI',
+       'info_annonces_generales' => 'Anounci general :',
+       'info_article_propose' => 'Article proupausat',
+       'info_article_publie' => 'Article publicat',
+       'info_article_redaction' => 'Article en cours de redacioun',
+       'info_article_refuse' => 'Article refudat',
+       'info_article_supprime' => 'Article suprimat',
+       'info_articles' => 'Article',
+       'info_articles_a_valider' => 'Lu article a validà',
+       'info_articles_nb' => '@nb@ article',
+       'info_articles_proposes' => 'Article proupausat',
+       'info_articles_un' => '1 article',
+       'info_auteurs_nombre' => 'autour',
+       'info_authentification_ftp' => 'autentificacioun (da FTP).',
+       'info_breves_2' => 'brèva',
+       'info_breves_nb' => '@nb@ brèva',
+       'info_breves_un' => '1 brèva',
+       'info_connexion_refusee' => 'Counessioun refusada',
+       'info_contact_developpeur' => 'Vourguès countatà un desfouloupaire.',
+       'info_contenance' => 'Aqueu sit couten :',
+       'info_contribution' => 'countribucioun',
+       'info_copyright' => '@spip@ es un lougiciau lìberou distribuit @lien_gpl@.',
+       'info_copyright_doc' => 'Per mai d’infourmacioun, veire lou sit <a href="@spipnet@">@spipnet_affiche@</a>.',
+       'info_copyright_gpl' => 'souta lichença GPL',
+       'info_cours_edition' => 'Lu vouòstre article en cours de redacioun',
+       'info_creer_repertoire' => 'Vourguès creà un fichié o un repertori noumat',
+       'info_creer_repertoire_2' => 'en dintre dóu souta-repertori <b>@repertoire@</b>, pi :',
+       'info_creer_vignette' => 'creacioun autoumatica de la vigneta',
+       'info_creerdansrubrique_non_autorise' => 'Noun avès lu drech suficient pèr creà un countegut en aquela rùbrica',
+       'info_deplier' => 'Desplegà',
+       'info_descriptif_nombre' => 'descritiéu :',
+       'info_description' => 'Descricioun :',
+       'info_description_2' => 'Descricioun :',
+       'info_dimension' => 'Dimensioun :',
+       'info_documents_nb' => '@nb@ doucumen',
+       'info_documents_un' => '1 doucumen',
+       'info_ecire_message_prive' => 'Escrieure un message privat',
+       'info_email_invalide' => 'Adressa e-mail invalida',
+       'info_en_cours_validation' => 'Lu vouòstre article en cours de redacioun',
+       'info_en_ligne' => 'Ahura en ligna :',
+       'info_envoyer_message_prive' => 'Mandà un message privat en aquel autour',
+       'info_erreur_requete' => 'Errour en la requesta :',
+       'info_erreur_squelette2' => 'Minga d’esquèletrou <b>@fichier@</b> es dispounibla...',
+       'info_erreur_systeme' => 'Errour sistèma (errno @errsys@)',
+       'info_erreur_systeme2' => 'Bessai que lou disc dur es plen, o la basa de dounada es degalhada.<br />
+<span style="color:red;">Prouvàs de <a href=\'@script@\'>reparà la basa</a>, o countatàs lou vouòstre aubergadour.</span>',
+       'info_fini' => 'Es acabat !',
+       'info_format_image' => 'Fourmat d’image que pouòdon èstre utilisat pèr creà de vigneta : @gd_formats@.',
+       'info_format_non_defini' => 'fourmat noun definit',
+       'info_grand_ecran' => 'Gran ecran',
+       'info_image_aide' => 'AJUDA',
+       'info_image_process_titre' => 'Mètodou de fabricacioun dei vigneta',
+       'info_impossible_lire_page' => '<b>Errour !</b> Empoussible de legì la pàgina <tt><html>@test_proxy@</html></tt> pèr lou proxy <tt>',
+       'info_installation_systeme_publication' => 'Instalacioun dóu sistema de publicacioun...',
+       'info_installer_documents' => 'Poudès instalà autoumaticamen toui lu doucumen contengut en lou doussié @upload@.',
+       'info_installer_ftp' => 'En la mesura doun sias aministratour, poudès instalà (per FTP) de fichié en lou doussié @upload@ pi lu seleciounà aquì.',
+       'info_installer_images' => 'Poudès instalà d’image ai fourmat JPEG, GIF e PNG.',
+       'info_installer_images_dossier' => 'Instalà d’image en lou doussié @upload@ per lu poudé seleciounà aquí.',
+       'info_interface_complete' => 'interfaça coumpleta',
+       'info_interface_simple' => 'Interfaça simplificada',
+       'info_joindre_document_article' => 'Poudès jougné en aquel article de doucumen de tìpou',
+       'info_joindre_document_rubrique' => 'Poudès jougné en aquela rùbrica de doucumen de tìpou',
+       'info_joindre_documents_article' => 'Poudès jougné dau vouòstre article de doucumen de tìpou :',
+       'info_l_article' => 'l’article',
+       'info_la_breve' => 'la brèva',
+       'info_la_rubrique' => 'la rùbrica',
+       'info_langue_principale' => 'Lenga principala dóu sit',
+       'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixel',
+       'info_les_auteurs_1' => 'per @les_auteurs@ ',
+       'info_logo_format_interdit' => 'Basta lu logo de fourmat @formats@ soun  autourisat.',
+       'info_logo_max_poids' => 'Lu logo devon oubligatoriamen faire mens de @maxi@ (aquèu fichié fa @actuel@).',
+       'info_mail_fournisseur' => 'vous@fournissur.com',
+       'info_message_2' => 'MESSAGE',
+       'info_message_supprime' => 'MESSAGE SUPRIMAT',
+       'info_messages_nb' => '@nb@ message',
+       'info_messages_un' => '1 message',
+       'info_mise_en_ligne' => 'Data de metuda en ligna :',
+       'info_modification_parametres_securite' => 'modificacioun dei parametre de segurtà',
+       'info_mois_courant' => 'En cours de mes:',
+       'info_mot_cle_ajoute' => 'Lou mot clau seguent es estat ajustat a ',
+       'info_multi_herit' => 'Lenga predefinida',
+       'info_multi_langues_soulignees' => 'Li <u>lenga soulignada</u> beneficioun d’una traducioun toutala o partiala dei test de l’interfaça. Se seleciounàs aqueli lenga, touplen d’elemen dóu sit public (data, fourmulari) seran traduch autoumaticamen. Per li lenga noun soulinhadi, aquelu elemen apareisseran en la lenga principala dóu sit.',
+       'info_multilinguisme' => 'Multilenguisme',
+       'info_nom_non_utilisateurs_connectes' => 'Lou vouòstre noum noun aparèisse en la lista dei utilisaire counetat.',
+       'info_nom_utilisateurs_connectes' => 'Lou vouòstre noum aparèisse en la lista dei utilisaire counetat.',
+       'info_nombre_en_ligne' => 'Ahura en ligna :',
+       'info_non_resultat' => 'Minga de resultat per "@cherche_mot@"',
+       'info_non_utilisation_messagerie' => 'Noun utilisàs la messagerìa interna d’estou sit.',
+       'info_nouveau_message' => 'AVÈS UN NOUVÈU MESSAGE',
+       'info_nouveaux_messages' => 'AVÈS @total_messages@ NOUVÈU MESSAGE',
+       'info_numero_abbreviation' => 'N° ',
+       'info_obligatoire' => 'Aquela infourmacioun es oubligatorìa',
+       'info_pense_bete' => 'NOTA DE RENEMBRANÇA ',
+       'info_petit_ecran' => 'Pichoun ecran',
+       'info_petition_close' => 'Peticioun plugada',
+       'info_pixels' => 'pixel',
+       'info_plusieurs_mots_trouves' => 'Plusiur mot clau troubat per "@cherche_mot@":',
+       'info_portfolio_automatique' => 'Pouòrtafoliò automatic :',
+       'info_premier_resultat' => '[@debut_limit@ premié resultat de @total@]',
+       'info_premier_resultat_sur' => ' [@debut_limit@ premié resultat de @total@]',
+       'info_propose_1' => '[@nom_site_spip@] proupausa : @titre@',
+       'info_propose_2' => 'Article proupausat
+----------------',
+       'info_propose_3' => 'L’article "@titre@" es proupausat a la publicacioun.',
+       'info_propose_4' => 'Sias counvidat a lou venì counsultà e a dounà la vouòstra oupinioun',
+       'info_propose_5' => 'en lou fòrou que li es estacat. Es dispounibla a l’adressa :',
+       'info_publie_01' => 'L’article "@titre@" es estat validat per @connect_nom@.',
+       'info_publie_1' => '[@nom_site_spip@] PUBLICA : @titre@',
+       'info_publie_2' => 'Article publicat
+----------------',
+       'info_rechercher' => 'Recercà',
+       'info_rechercher_02' => 'Recercà :',
+       'info_remplacer_vignette' => 'Remplaçà la vigneta predefinida per un logo persounalisat :',
+       'info_rubriques_nb' => '@nb@ rùbrica',
+       'info_rubriques_un' => '1 rùbrica',
+       'info_sans_titre_2' => 'sensa titre',
+       'info_selectionner_fichier' => 'Poudès seleciounà un fichié dóu doussié @upload@',
+       'info_selectionner_fichier_2' => 'Seleciounà un fichié :',
+       'info_sites_nb' => '@nb@ sit',
+       'info_sites_un' => '1 sit',
+       'info_supprimer_vignette' => 'suprimà la vigneta',
+       'info_symbole_bleu' => 'Lou sìmbolou <b>blu</b> marca una <b>nota de renembrança</b> : es a dire un message dóu vouòstre usage persounal.',
+       'info_symbole_jaune' => 'Lou sìmbolou <b>jaune</b> marca un <b>anounci per toui lu redatour </b>: lu aministratour la pouòdon moudificà, cada redatour la pòu veire.',
+       'info_symbole_vert' => 'Lou sìmbolou <b>vert</b> marca lu <b>message cambiat embé d’autre utilisaire</b> dóu sit.',
+       'info_telecharger_nouveau_logo' => 'Telecargà un  nouvèu logo :',
+       'info_telecharger_ordinateur' => 'Telecargà dau vouòstre ourdinatour :',
+       'info_tous_resultats_enregistres' => '[toui lu resultat soun registrat]',
+       'info_tout_afficher' => 'Tout afichà',
+       'info_travaux_texte' => 'Estou sit es pas encara counfigurat. Tournès pu tardi...',
+       'info_travaux_titre' => 'Sit en obra',
+       'info_trop_resultat' => 'Tròu de resultat per "@cherche_mot@" ; vourguès afinà la recercà.',
+       'info_utilisation_messagerie_interne' => 'Utilisàs la messagerìa interna d’estou sit.',
+       'info_valider_lien' => 'validà aquel estac',
+       'info_verifier_image' => ', vourguès verificà que li vouòstri image soun estadi trasferidi courretamen.',
+       'info_vignette_defaut' => 'Vigneta predefinida',
+       'info_vignette_personnalisee' => 'Vigneta persounalisada',
+       'info_visite' => 'visita :',
+       'info_vos_rendez_vous' => 'Lu vouòstre apountamen a venì',
+       'infos_vos_pense_bete' => 'Li vouòstri nota de renembrança ',
+
+       // L
+       'label_ajout_id_rapide' => 'Ajountamen rapide',
+       'label_poids_fichier' => 'Tàia',
+       'lien_afficher_icones_seuls' => 'Afichà li icona souleti',
+       'lien_afficher_texte_icones' => 'Afichà li icona e lou test',
+       'lien_afficher_texte_seul' => 'Afichà lou test soulet',
+       'lien_liberer' => 'liberà',
+       'lien_liberer_tous' => 'Liberà tout',
+       'lien_nouvea_pense_bete' => 'NOUVÈLA NOTA DE RENEMBRANÇA ',
+       'lien_nouveau_message' => 'NOVÈU MESSAGE',
+       'lien_nouvelle_annonce' => 'NOVÈL ANOUNCI',
+       'lien_petitions' => 'PETICIOUN',
+       'lien_popularite' => 'poupularità : @popularite@%',
+       'lien_racine_site' => 'RAÏS DÓU SIT',
+       'lien_reessayer' => 'reprouvà',
+       'lien_repondre_message' => 'Respouòndre en aqueu message',
+       'lien_supprimer' => 'suprimà',
+       'lien_tout_afficher' => 'Tout afichà',
+       'lien_visite_site' => 'visità aqueu sit',
+       'lien_visites' => '@visites@ visita',
+       'lien_voir_auteur' => 'Veire aquel autour',
+       'ligne' => 'Ligna',
+       'login' => 'Counessioun',
+       'login_acces_prive' => 'achès a l’espaci privat',
+       'login_autre_identifiant' => 'si counetà embé un autre identificant',
+       'login_cookie_accepte' => 'Vourguès counfigurà lou vouòstre navigatour per que lu acheta (au màncou per estou sit).',
+       'login_cookie_oblige' => 'Per v’identificà d’una manièra segura soubre estou sit, vi còu achetà lu cookie.',
+       'login_deconnexion_ok' => 'Descounessioun efetuada',
+       'login_erreur_pass' => 'Errour de mot de passa.',
+       'login_espace_prive' => 'espaci privat',
+       'login_identifiant_inconnu' => 'L’identificant « @login@ » es escounouissut.',
+       'login_login' => 'Login :',
+       'login_login2' => 'Login o adressa email:',
+       'login_login_pass_incorrect' => '(Login o mot de passa incourret.)',
+       'login_motpasseoublie' => 'mot de passa denembrat ?',
+       'login_non_securise' => 'Mèfi, qu’aqueu fourmulari es pas securisat.
+                       Se noun voulès que lou vouòstre mot de passa sigue
+   interchetat sus la taragnina, vourguès ativà Javascript 
+   en lou vouòstre navigatour e',
+       'login_nouvelle_tentative' => 'nouvèla tentativa',
+       'login_par_ici' => 'Sias registrat... per aquì...',
+       'login_pass2' => 'Mot de passa :',
+       'login_preferez_refuser' => '<b>Se preferas refudà lu cookie</b>, un autre mètodou de counessioun (mens securisat) es a la vouòstra dispousicioun :',
+       'login_recharger' => 'Recargà aquela pàgina',
+       'login_rester_identifie' => 'Restà identificat quauqu jou',
+       'login_retour_public' => 'Retour au sit pùblicou',
+       'login_retour_site' => 'Retour au sit pùblicou',
+       'login_retoursitepublic' => 'retour au sit pùblicou',
+       'login_sans_cookiie' => 'Identificacioun sensa cookie',
+       'login_securise' => 'Login securisat',
+       'login_sinscrire' => 's’inscriéure',
+       'login_test_navigateur' => 'prouva navigatour/recounessioun',
+       'login_verifiez_navigateur' => '(verificas pura que lou vouòstre navigatour noun àugue counservat lou mot de passa en memòria...)',
+
+       // M
+       'masquer_colonne' => 'Escoundre aquela coulòna',
+       'masquer_trad' => 'Escoundre li traducioun',
+       'module_fichiers_langues' => 'Fichié de lenga',
+
+       // N
+       'navigateur_pas_redirige' => 'Se lou vouòstre navigatour noun es redirigiat, clicàs aquí per continuà.',
+       'numero' => 'Nùmero',
+
+       // O
+       'occurence' => 'Ocurença',
+       'onglet_affacer_base' => 'Escassà la basa',
+       'onglet_auteur' => 'L’autour',
+       'onglet_contenu_site' => 'Countengut dóu sit',
+       'onglet_evolution_visite_mod' => 'Evoulucioun',
+       'onglet_fonctions_avances' => 'Founcioun avançadi',
+       'onglet_informations_personnelles' => 'Infourmacioun persounali',
+       'onglet_interactivite' => 'Interatività',
+       'onglet_messagerie' => 'Messagerìa',
+       'onglet_repartition_rubrique' => 'Reparticioun da rùbrica',
+       'onglet_save_restaur_base' => 'Sauvagardà/restaurà la basa',
+       'onglet_vider_cache' => 'Vuà l’amagadou',
+
+       // P
+       'pass_choix_pass' => 'Vourguès chausì lou vouòstre nouvèu mot de passa :',
+       'pass_erreur' => 'Errour',
+       'pass_erreur_acces_refuse' => '<b>Errour :</b> poudès plus achèdre en aqueu sit.',
+       'pass_erreur_code_inconnu' => '<b>Errour :</b> aquestou code courrespouònde a mìnga de visitaire qu’an achès en estou sit.',
+       'pass_erreur_non_enregistre' => '<b>Errour :</b> l’adressa <tt>@email_oubli@</tt> noun es registrada soubre estou sit.',
+       'pass_erreur_non_valide' => '<b>Errour :</b> aquel e-mail <tt>@email_oubli@</tt> noun es valid !',
+       'pass_erreur_probleme_technique' => '<b>Errour :</b> per l’encausa d’un proublema tècnicou, l’e-mail noun si pòu estre mandat. ',
+       'pass_espace_prive_bla' => 'L’espaci privat d’estou sit es dubèrt ai
+  visitaire que si soun inscrich. Un còu registrat,
+  pourès counsultà lu article en cours de redacioun,
+  proupausà d’article nouvèu e participà a toui lu fòrou.',
+       'pass_forum_bla' => 'Avès demandat d’intervenì en un fòrou
+  reservat ai visitaire registrat.',
+       'pass_indiquez_cidessous' => 'Endicàs aquì souta l’adressa e-mail qu’avès
+                       prechendetemen registrat.
+                       Receverès un e-mail que v’endiquerà couma
+                       reavé lou vouòstre achès.',
+       'pass_mail_passcookie' => '(acò es un message autoumatic)
+Per reavé lou vouòstre achès au sit
+@nom_site_spip@ (@adresse_site@)
+
+Vourguès anà a l’adressa seguenta:
+
+    @sendcookie@
+
+Pouràs intrà un mot de passa nouvèu
+e vi recounetà au sit.
+
+',
+       'pass_mot_oublie' => 'Mot de passa denembrat',
+       'pass_nouveau_enregistre' => 'Lou vouòstre nouvèu mot de passa es estat registrat.',
+       'pass_nouveau_pass' => 'Mot de passa nouvèu',
+       'pass_ok' => 'OK',
+       'pass_oubli_mot' => 'Denembrança dóu mot de passa',
+       'pass_procedure_changer' => 'Per changà lou vouòstre mot de passa, deven en premié verificà la vouòstra identità. Per acò, endicàs l’adressa e-mail assouciada au vouòstre conte.',
+       'pass_quitter_fenetre' => 'Quitar aquesta fenèstra ',
+       'pass_rappel_login' => 'Renembrança: lo voastre identificant (login) es « @login@ ».',
+       'pass_recevoir_mail' => 'Receverès un e-mail que v’espliquerà couma retroubà lou vouòstre achès au sit.',
+       'pass_retour_public' => 'Retour soubre lou sit pùblicou',
+       'pass_rien_a_faire_ici' => 'Ren à faire aquì.',
+       'pass_vousinscrire' => 'V’inscriéure soubre estou sit',
+       'precedent' => 'prechedent',
+       'previsualisation' => 'Previsualisacioun',
+       'previsualiser' => 'Previsualisà',
+
+       // R
+       'retour' => 'Retour',
+
+       // S
+       'spip_conforme_dtd' => 'SPIP counsidèra aqueu doucumen couma counforme au sieu DOCTYPE :',
+       'squelette' => 'Esquèletrou',
+       'squelette_inclus_ligne' => 'esquèletrou enclus, ligna',
+       'squelette_ligne' => 'esquèletrou, ligna',
+       'stats_visites_et_popularite' => '@visites@ visita ; poupularità : @popularite@',
+       'suivant' => 'seguent',
+
+       // T
+       'taille_go' => '@taille@ Go',
+       'taille_ko' => '@taille@ Ko',
+       'taille_mo' => '@taille@ Mo',
+       'taille_octets' => '@taille@ octet',
+       'texte_actualite_site_1' => 'Quoura serès familharisat embé l’interfaça, pourès clicà sus « ',
+       'texte_actualite_site_2' => 'interfaça coumpleta',
+       'texte_actualite_site_3' => '» per avé mai de poussibilità.',
+       'texte_creation_automatique_vignette' => 'La creacioun autoumatica de vigneta de previsualisacioun es ativada soubre estou sit. S’instalàs d’image ai fourmat @gd_formats@ a partì d’estou fourmulari, seràn acoumpagnadi d’una vinheta d’una talha massimala de @taille_preview@ pixel.',
+       'texte_documents_associes' => 'Lu doucumen seguent soun assouciat dau article,
+                               mà soun pas estat diretamen
+                               inserat. Segoun la coumpaginacioun dóu sit public,
+                               pouran aparèisse souta fourma de doucumen jounch.',
+       'texte_erreur_mise_niveau_base' => 'Errour de basa de dounada dóu tems de la metuda a nivèu.
+               L’image <b>@fichier@</b> es pas passada (article @id_article@).
+               Noutàs ben aquela referença, reprouvàs la metuda a
+               nivèu, e verificàs pi que lu image aparèisson
+               encara en lu article.',
+       'texte_erreur_visiteur' => 'Avès prouvat d’achèdre a l’espaci privat emb’un identificant que noun lou permete.',
+       'texte_inc_auth_1' => 'Sias identificat couma
+               <b>@auth_login@</b>, ma aquèu login noun esista o esista plus en la basa.
+               Prouvàs de vi',
+       'texte_inc_auth_2' => 'recounetà',
+       'texte_inc_auth_3' => ', après avé eventualamen quitat pi
+               relançat lou vouòstre navigatour.',
+       'texte_inc_config' => 'Li moudificacioun fachi en aqueli pàgina influissoun bravamen lou
+ founciounamen dóu vouòstre sit. Vi racoumanden de noun li intervenì tant que noun sias
+ familiarisat au founciounamen dóu sistèma SPIP. <br /><br /><b>
+ En general, es fouòrça counseiat
+ de laissà la carga d’aqueli pàgina au webmestre principal dóu vouòstre sit.</b>',
+       'texte_inc_meta_1' => 'Lou sistèma a rescountrat un errour dóu tems de l’escritura dóu fichié <code>@fichier@</code>. Vourguès, couma aministratour dóu sit,',
+       'texte_inc_meta_2' => 'verificà lu drech d’escritura',
+       'texte_inc_meta_3' => 'sus lou repertori <code>@repertoire@</code>.',
+       'texte_statut_en_cours_redaction' => 'en cours de redacioun',
+       'texte_statut_poubelle' => 'dai rementa',
+       'texte_statut_propose_evaluation' => 'proupausat per evaluacioun',
+       'texte_statut_publie' => 'publicat en ligna',
+       'texte_statut_refuse' => 'refudat',
+       'titre_ajouter_mot_cle' => 'AJUSTÀ UN MOT CLAU :',
+       'titre_cadre_raccourcis' => 'ESCOURCHA :',
+       'titre_changer_couleur_interface' => 'Changià la coulou de l’interfaça',
+       'titre_image_admin_article' => 'Poudès aministrà aquel article',
+       'titre_image_administrateur' => 'Aministratour',
+       'titre_image_aide' => 'D’ajuda sus aquel elemen',
+       'titre_image_auteur_supprime' => 'Autour suprimat',
+       'titre_image_redacteur' => 'Redatour sensa achès',
+       'titre_image_redacteur_02' => 'Redatour',
+       'titre_image_selecteur' => 'Afichà la lista',
+       'titre_image_visiteur' => 'Visitaire',
+       'titre_joindre_document' => 'JOUGNE UN DOUCUMEN',
+       'titre_mots_cles' => 'MOT CLAU',
+       'titre_probleme_technique' => 'Mèfi : un proublema tecnic (servidou SQL) empacha d’achedre en aquela part dóu sit. Mercì de la vouòstra indulgença.',
+       'titre_publier_document' => 'PUBLICÀ UN DOUCUMEN EN AQUELA RÙBRICA',
+       'titre_signatures_attente' => 'Firma en aspèra de validacioun',
+       'titre_signatures_confirmees' => 'Firma counfirmadi',
+       'titre_statistiques' => 'Estatistica dóu sit',
+       'titre_titre_document' => 'Titre dóu doucumen :',
+       'todo' => 'De venì',
+       'trad_definir_reference' => 'Chausì "@titre@" couma referença dei traducioun',
+       'trad_reference' => '(referença dei traducioun)',
+
+       // Z
+       'zbug_balise_b_aval' => ' : balisa B davau',
+       'zbug_balise_inexistante' => 'Balisa @balise@ mau declarada per @from@ ',
+       'zbug_balise_sans_argument' => 'Argumen mancant en la balisa @balise@',
+       'zbug_boucle' => 'blouca',
+       'zbug_boucle_recursive_undef' => 'blouca recursiva noun definida : @nom@',
+       'zbug_calcul' => 'carcul',
+       'zbug_champ_hors_boucle' => 'Camp @champ@ fouòra de blouca',
+       'zbug_champ_hors_motif' => 'Camp @champ@ fouòra d’un counteste @motif@',
+       'zbug_code' => 'code',
+       'zbug_critere_inconnu' => 'critèri escounouissut @critere@',
+       'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} sus una taula sensa clau primari atoumica',
+       'zbug_distant_interdit' => 'Estèrnou prouhibit', # Contexte : une base de données "externe", pas gérée par SPIP, mais que SPIP 1.8 sait utiliser dans ses boucles -- seul problèmes certaines manipulations sont interdites sur ces bases-là.
+       'zbug_doublon_table_sans_cle_primaire' => 'doubloun sus una taula sensa clau primari atoumica',
+       'zbug_doublon_table_sans_index' => 'doubloun sus una taula sensa ìndice',
+       'zbug_erreur_boucle_double' => 'Double definicioun de la blouca @id@',
+       'zbug_erreur_boucle_fermant' => 'Blouca @id@ noun fermada',
+       'zbug_erreur_boucle_syntaxe' => 'Sintassa de la blouca mau courreta',
+       'zbug_erreur_compilation' => 'Errour de coumpilacioun',
+       'zbug_erreur_execution_page' => 'errour d’esecucioun de la pàgina',
+       'zbug_erreur_filtre' => 'Errour : filtre <b>« @filtre@ »</b> noun definit',
+       'zbug_erreur_meme_parent' => '{meme_parent} s’aplica unicamen ai blouca (FORUMS) o (RUBRIQUES)',
+       'zbug_erreur_squelette' => 'Errour en l’esquelètrou',
+       'zbug_hors_compilation' => 'Fouòra Coumpilacioun',
+       'zbug_info_erreur_squelette' => 'Error soubre lou sit',
+       'zbug_inversion_ordre_inexistant' => 'inversioun d’un ordre inesistent',
+       'zbug_pagination_sans_critere' => 'Balisa #PAGINATION sensa critèri {pagination} o emplegada en una blouca recoursiva',
+       'zbug_parametres_inclus_incorrects' => 'Parametre d’enclusioun mau courret : @param@',
+       'zbug_profile' => 'Tems de carcul : @time@',
+       'zbug_resultat' => 'resultat',
+       'zbug_serveur_indefini' => 'servidou SQL indefinit',
+       'zbug_statistiques' => 'Estatìstica dei requesta SQL classificadi per durada',
+       'zbug_table_inconnue' => 'Taula SQL « @table@ » escounouissuda',
+       'zxml_connus_attributs' => 'atribut counouissut',
+       'zxml_de' => 'de',
+       'zxml_inconnu_attribut' => 'atribut escounouissut',
+       'zxml_inconnu_balise' => 'balisa escounouissuda',
+       'zxml_inconnu_entite' => 'entitat escounouissuda',
+       'zxml_inconnu_id' => 'ID escounouissut',
+       'zxml_mais_de' => 'mà de',
+       'zxml_non_conforme' => 'noun es counforme au moutiéu',
+       'zxml_non_fils' => 'noun es un enfant de',
+       'zxml_nonvide_balise' => 'balisa noun vuèia',
+       'zxml_obligatoire_attribut' => 'atribut oubligatori mà assent en',
+       'zxml_succession_fils_incorrecte' => 'suchessioun dei enfant mau courret',
+       'zxml_survoler' => 'survolà per veire lu courret',
+       'zxml_valeur_attribut' => 'valour de l’atribut',
+       'zxml_vide_balise' => 'balisa vuèia',
+       'zxml_vu' => 'vist adé'
+);
+
+?>
index b01cc16..64b57cc 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="spip"
        categorie="outil"
-       version="3.0.17"
+       version="3.0.19"
        etat="stable"
        compatibilite="];["
        schema="19268"
index 468243f..7341b0a 100644 (file)
@@ -72,10 +72,11 @@ function argumenter_inclure($params, $rejet_filtres, $p, &$boucles, $id_boucle,
                                $erreur_p_i_i = array('zbug_parametres_inclus_incorrects',
                                         array('param' => $var->nom_champ));
                                erreur_squelette($erreur_p_i_i, $p);
-                         } else $l[1] = calculer_liste($val, $p->descr, $boucles, $id_boucle);
-                         break;
+                                 break;
+                         }
+                         else $l[1] = calculer_liste($val, $p->descr, $boucles, $id_boucle);
                        } else {
-                               preg_match(",^([^=]*)(=?)(.*)$,", $var->texte,$m);
+                               preg_match(",^([^=]*)(=?)(.*)$,m", $var->texte,$m);
                                $var = $m[1];
                                $auto = false;;
                                if ($m[2]) {
index a742c23..3f615b0 100644 (file)
@@ -50,7 +50,11 @@ function sandbox_composer_filtre($fonc, $code, $arglist, &$p){
        elseif ($f = chercher_filtre($fonc)) {
                // cas particulier : le filtre |set doit acceder a la $Pile
                // proto: filtre_set(&$Pile, $val, $args...)
-               $refl = new ReflectionFunction($f);
+               if (strpbrk($f, ':')) { // Class::method
+                       $refl = new ReflectionMethod($f);
+               } else {
+                       $refl = new ReflectionFunction($f);
+               }
                $refs = $refl->getParameters();
                if (isset($refs[0]) AND $refs[0]->name == 'Pile') {
                        $code = "$f(\$Pile,$code$arglist)";
index 3532ea1..9a450aa 100644 (file)
@@ -182,7 +182,7 @@ function spip_mysql_query($query, $serveur='',$requeter=true) {
        // ajouter un debug utile dans log/mysql-slow.log ?
        $debug = '';
        if (defined('_DEBUG_SLOW_QUERIES') AND _DEBUG_SLOW_QUERIES){
-               if($GLOBALS['debug']['aucasou']){
+               if(isset($GLOBALS['debug']['aucasou'])){
                        list(,$id,, $infos) = $GLOBALS['debug']['aucasou'];
                        $debug .= " BOUCLE$id @ ".$infos[0] ." | ";
                }
@@ -486,9 +486,9 @@ function spip_mysql_create($nom, $champs, $cles, $autoinc=false, $temporary=fals
                return;
 
        $res = spip_mysql_query("SELECT version() as v");
-       if ($row = mysql_fetch_array($res)
-        && (version_compare($row['v'],'5.0','>=')))
-               spip_mysql_query("SET sql_mode=''");
+       if (($row = mysql_fetch_array($res)) && (version_compare($row['v'],'5.0','>='))) {
+               spip_mysql_query("SET sql_mode=''", $serveur);
+       }
 
        foreach($cles as $k => $v) {
                $keys .= "$s\n\t\t$k ($v)";
@@ -639,6 +639,7 @@ function spip_mysql_repair($table, $serveur='',$requeter=true)
        return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
 }
 
+define('_MYSQL_RE_SHOW_TABLE', '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/');
 // Recupere la definition d'une table ou d'une vue MySQL
 // colonnes, indexes, etc.
 // au meme format que la definition des tables de SPIP
@@ -656,11 +657,11 @@ function spip_mysql_showtable($nom_table, $serveur='',$requeter=true)
        if (!$requeter) return $s;
 
        list(,$a) = mysql_fetch_array($s ,MYSQL_NUM);
-       if (preg_match("/^[^(),]*\((([^()]*\([^()]*\)[^()]*)*)\)[^()]*$/", $a, $r)){
+       if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)){
                $desc = $r[1];
                // extraction d'une KEY éventuelle en prenant garde de ne pas
                // relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
-               if (preg_match("/^(.*?),([^,]*KEY[ (].*)$/s", $desc, $r)) {
+               if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
                  $namedkeys = $r[2];
                  $desc = $r[1];
                }
@@ -674,8 +675,8 @@ function spip_mysql_showtable($nom_table, $serveur='',$requeter=true)
                }
                $keys = array();
 
-               foreach(preg_split('/\)\s*,?/',$namedkeys) as $v) {
-                 if (preg_match("/^\s*([^(]*)\((.*)$/",$v,$r)) {
+               foreach(preg_split('/\)\s*(,|$)/',$namedkeys) as $v) {
+                 if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
                        $k = str_replace("`", '', trim($r[1]));
                        $t = strtolower(str_replace("`", '', $r[2]));
                        if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
index 66bd90f..1d62a8f 100644 (file)
@@ -43,15 +43,15 @@ function req_pg_dist($addr, $port, $login, $pass, $db='', $prefixe='') {
        if ($p >0) $port = " port=$p" ; else $port = '';
        $erreurs = array();
        if ($db) {
-               @$link = pg_connect("host=$host$port dbname=$db user=$login password=$pass", PGSQL_CONNECT_FORCE_NEW);
-       } elseif (!@$link = pg_connect("host=$host$port user=$login password=$pass", PGSQL_CONNECT_FORCE_NEW)) {
+               @$link = pg_connect("host=$host$port dbname=$db user=$login password='$pass'", PGSQL_CONNECT_FORCE_NEW);
+       } elseif (!@$link = pg_connect("host=$host$port user=$login password='$pass'", PGSQL_CONNECT_FORCE_NEW)) {
                        $erreurs[] = pg_last_error();
-           if (@$link = pg_connect("host=$host$port dbname=$login user=$login password=$pass", PGSQL_CONNECT_FORCE_NEW)) {
+           if (@$link = pg_connect("host=$host$port dbname=$login user=$login password='$pass'", PGSQL_CONNECT_FORCE_NEW)) {
              $db = $login;
            } else {
                    $erreurs[] = pg_last_error();
              $db = _DEFAULT_DB;
-             $link = pg_connect("host=$host$port dbname=$db user=$login password=$pass", PGSQL_CONNECT_FORCE_NEW);
+             $link = pg_connect("host=$host$port dbname=$db user=$login password='$pass'", PGSQL_CONNECT_FORCE_NEW);
            }
        }
        if (!$link) {
index 2583189..cc5196b 100644 (file)
@@ -1209,7 +1209,7 @@ function spip_sqlite_showbase($match, $serveur = '', $requeter = true){
        return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP "._q($match), $serveur, $requeter);
 }
 
-
+define('_SQLITE_RE_SHOW_TABLE', '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/');
 // http://doc.spip.org/@spip_sqlite_showtable
 function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){
        $query =
@@ -1229,13 +1229,13 @@ function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){
        // c'est une table
        // il faut parser le create
        if (!$vue){
-               if (!preg_match("/^[^(),]*\((([^()]*(\([^()]*\))?[^()]*)*)\)[^()]*$/", array_shift($a), $r))
+               if (!preg_match(_SQLITE_RE_SHOW_TABLE, array_shift($a), $r)){
                        return "";
-               else {
+               else {
                        $desc = $r[1];
                        // extraction d'une KEY éventuelle en prenant garde de ne pas
                        // relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
-                       if (preg_match("/^(.*?),([^,]*KEY[ (].*)$/s", $desc, $r)){
+                       if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)){
                                $namedkeys = $r[2];
                                $desc = $r[1];
                        }
@@ -1282,8 +1282,8 @@ function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){
                                }
                        }
                        // key inclues dans la requete
-                       foreach (preg_split('/\)\s*,?/', $namedkeys) as $v){
-                               if (preg_match("/^\s*([^(]*)\((.*)$/", $v, $r)){
+                       foreach(preg_split('/\)\s*(,|$)/',$namedkeys) as $v) {
+                               if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
                                        $k = str_replace("`", '', trim($r[1]));
                                        $t = trim(strtolower(str_replace("`", '', $r[2])), '"');
                                        if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
@@ -1304,8 +1304,9 @@ function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){
                                $keys['KEY '.$key] = $colonnes;
                        }
                }
-               // c'est une vue, on liste les champs disponibles simplement
-       } else {
+       }
+       // c'est une vue, on liste les champs disponibles simplement
+       else {
                if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)){ // limit 1
                        $fields = array();
                        foreach ($res as $c => $v) $fields[$c] = '';
index 1b7f69f..42f1073 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_editer_breve_dist
+// http://code.spip.net/@action_editer_breve_dist
 function action_editer_breve_dist($arg=null) {
 
        if (is_null($arg)){
@@ -35,7 +35,7 @@ function action_editer_breve_dist($arg=null) {
 
 /**
  * Inserer une breve en base
- * http://doc.spip.org/@insert_breve
+ * http://code.spip.net/@insert_breve
  *
  * @param int $id_rubrique
  * @return int
@@ -89,7 +89,7 @@ function breve_inserer($id_rubrique) {
  * Modifier une breve en base
  * $c est un contenu (par defaut on prend le contenu via _request())
  *
- * http://doc.spip.org/@revisions_breves
+ * http://code.spip.net/@revisions_breves
  *
  * @param int $id_breve
  * @param array $set
index 61b8708..529d748 100644 (file)
@@ -26,7 +26,7 @@ function breves_upgrade($nom_meta_base_version,$version_cible){
        if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
                $trouver_table = charger_fonction('trouver_table','base');
                if ($desc = $trouver_table('spip_breves')
-                 AND isset($desc['exist'])){
+                 AND isset($desc['exist']) AND $desc['exist']){
                        ecrire_meta($nom_meta_base_version,'1.0.0');
                }
                // si pas de table en base, on fera une simple creation de base
index d8da0cb..ddea288 100644 (file)
@@ -28,7 +28,7 @@ function autoriser_brevecreer_menu_dist($faire, $type, $id, $qui, $opt){
 
 
 // Autoriser a creer une breve dans la rubrique $id
-// http://doc.spip.org/@autoriser_rubrique_creerbrevedans_dist
+// http://code.spip.net/@autoriser_rubrique_creerbrevedans_dist
 function autoriser_rubrique_creerbrevedans_dist($faire, $type, $id, $qui, $opt) {
        $r = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=".intval($id));
        return
@@ -42,7 +42,7 @@ function autoriser_rubrique_creerbrevedans_dist($faire, $type, $id, $qui, $opt)
 // Autoriser a modifier la breve $id
 // = admins & redac si la breve n'est pas publiee
 // = admins de rubrique parente si publiee
-// http://doc.spip.org/@autoriser_breve_modifier_dist
+// http://code.spip.net/@autoriser_breve_modifier_dist
 function autoriser_breve_modifier_dist($faire, $type, $id, $qui, $opt) {
        $r = sql_fetsel("id_rubrique,statut", "spip_breves", "id_breve=".intval($id));
        return
index e605756..c47a961 100644 (file)
@@ -54,7 +54,7 @@ function formulaires_editer_breve_verifier_dist($id_breve='new', $id_rubrique=0,
        return $erreurs;
 }
 
-// http://doc.spip.org/@inc_editer_article_dist
+// http://code.spip.net/@inc_editer_article_dist
 function formulaires_editer_breve_traiter_dist($id_breve='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='breves_edit_config', $row=array(), $hidden=''){
        return formulaires_editer_objet_traiter('breve',$id_breve,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
 }
index 8455c2d..1629667 100644 (file)
@@ -224,12 +224,14 @@ function &compresseur_callback_prepare_css(&$css, $is_inline = false, $fonctions
        if (!preg_match(',\.css$,i', $css, $r)) return $css;
 
        $url_absolue_css = url_absolue($css);
+       // retirer le protocole de $url_absolue_css
+       $url_absolue_css_implicite = protocole_implicite($url_absolue_css);
 
        if (!$fonctions) $fonctions = compresseur_liste_fonctions_prepare_css();
        elseif (is_string($fonctions)) $fonctions = array($fonctions);
 
        $sign = implode(",",$fonctions);
-       $sign = substr(md5("$css-$sign"), 0,8);
+       $sign = substr(md5("$url_absolue_css_implicite-$sign"), 0,8);
 
        $file = basename($css,'.css');
        $file = sous_repertoire (_DIR_VAR, 'cache-css')
@@ -251,9 +253,7 @@ function &compresseur_callback_prepare_css(&$css, $is_inline = false, $fonctions
        elseif (!lire_fichier($css, $contenu))
                return $css;
 
-       // retirer le protocole de $url_absolue_css
-       $url_absolue_css = protocole_implicite($url_absolue_css);
-       $contenu = compresseur_callback_prepare_css_inline($contenu, $url_absolue_css, $fonctions);
+       $contenu = compresseur_callback_prepare_css_inline($contenu, $url_absolue_css_implicite, $fonctions);
 
        // ecrire la css
        if (!ecrire_fichier($file, $contenu))
index dcddeda..0d4b9a9 100644 (file)
@@ -86,7 +86,7 @@ function concatener_fichiers($files,$format='js', $callbacks = array()){
 
                                        // preparer le contenu si necessaire
                                        if ($callback_pre)
-                                               $contenu = $callback_pre($contenu, $url_base);
+                                               $contenu = $callback_pre($contenu, url_absolue(_DIR_RESTREINT?generer_url_public($file[0],$file[1]):$url_base));
                                        // enlever le var_mode si present pour retrouver la css minifiee standard
                                        if (strpos($file[1],'var_mode')!==false) {
                                                if (!$files2) $files2 = $files;
index a4db495..fef665f 100644 (file)
@@ -88,7 +88,7 @@ class JavaScriptPacker {
                'High ASCII' => 95
        );
 
-// http://doc.spip.org/@JavaScriptPacker
+// http://code.spip.net/@JavaScriptPacker
        function JavaScriptPacker($_script, $_encoding = 62, $_fastDecode = true, $_specialChars = false)
        {
                $this->_script = $_script . "\n";
@@ -99,7 +99,7 @@ class JavaScriptPacker {
                $this->_specialChars = $_specialChars;
        }
 
-// http://doc.spip.org/@pack
+// http://code.spip.net/@pack
        function pack() {
                $this->_addParser('_basicCompression');
                if ($this->_specialChars)
@@ -112,7 +112,7 @@ class JavaScriptPacker {
        }
 
        // apply all parsing routines
-// http://doc.spip.org/@_pack
+// http://code.spip.net/@_pack
        function _pack($script) {
                for ($i = 0; isset($this->_parsers[$i]); $i++) {
                        $script = call_user_func(array(&$this,$this->_parsers[$i]), $script);
@@ -122,13 +122,13 @@ class JavaScriptPacker {
 
        // keep a list of parsing functions, they'll be executed all at once
        var $_parsers = array();
-// http://doc.spip.org/@_addParser
+// http://code.spip.net/@_addParser
        function _addParser($parser) {
                $this->_parsers[] = $parser;
        }
 
        // zero encoding - just removal of white space and comments
-// http://doc.spip.org/@_basicCompression
+// http://code.spip.net/@_basicCompression
        function _basicCompression($script) {
                $parser = new ParseMaster();
                // make safe
@@ -164,7 +164,7 @@ class JavaScriptPacker {
                return $parser->exec($script);
        }
 
-// http://doc.spip.org/@_encodeSpecialChars
+// http://code.spip.net/@_encodeSpecialChars
        function _encodeSpecialChars($script) {
                $parser = new ParseMaster();
                // replace: $name -> n, $$name -> na
@@ -187,7 +187,7 @@ class JavaScriptPacker {
                return $parser->exec($script);
        }
 
-// http://doc.spip.org/@_encodeKeywords
+// http://code.spip.net/@_encodeKeywords
        function _encodeKeywords($script) {
                // escape high-ascii values already in the script (i.e. in strings)
                if ($this->_encoding > 62)
@@ -217,7 +217,7 @@ class JavaScriptPacker {
                }
        }
 
-// http://doc.spip.org/@_analyze
+// http://code.spip.net/@_analyze
        function _analyze($script, $regexp, $encode) {
                // analyse
                // retreive all words in the script
@@ -292,13 +292,13 @@ class JavaScriptPacker {
        }
 
        var $_count = array();
-// http://doc.spip.org/@_sortWords
+// http://code.spip.net/@_sortWords
        function _sortWords($match1, $match2) {
                return $this->_count[$match2] - $this->_count[$match1];
        }
 
        // build the boot function used for loading and decoding
-// http://doc.spip.org/@_bootStrap
+// http://code.spip.net/@_bootStrap
        function _bootStrap($packed, $keywords) {
                $ENCODE = $this->_safeRegExp('$encode\\($count\\)');
 
@@ -378,17 +378,17 @@ class JavaScriptPacker {
        }
 
        var $buffer;
-// http://doc.spip.org/@_insertFastDecode
+// http://code.spip.net/@_insertFastDecode
        function _insertFastDecode($match) {
                return '{' . $this->buffer . ';';
        }
-// http://doc.spip.org/@_insertFastEncode
+// http://code.spip.net/@_insertFastEncode
        function _insertFastEncode($match) {
                return '{$encode=' . $this->buffer . ';';
        }
 
        // mmm.. ..which one do i need ??
-// http://doc.spip.org/@_getEncoder
+// http://code.spip.net/@_getEncoder
        function _getEncoder($ascii) {
                return $ascii > 10 ? $ascii > 36 ? $ascii > 62 ?
                       '_encode95' : '_encode62' : '_encode36' : '_encode10';
@@ -396,21 +396,21 @@ class JavaScriptPacker {
 
        // zero encoding
        // characters: 0123456789
-// http://doc.spip.org/@_encode10
+// http://code.spip.net/@_encode10
        function _encode10($charCode) {
                return $charCode;
        }
 
        // inherent base36 support
        // characters: 0123456789abcdefghijklmnopqrstuvwxyz
-// http://doc.spip.org/@_encode36
+// http://code.spip.net/@_encode36
        function _encode36($charCode) {
                return base_convert($charCode, 10, 36);
        }
 
        // hitch a ride on base36 and add the upper case alpha characters
        // characters: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
-// http://doc.spip.org/@_encode62
+// http://code.spip.net/@_encode62
        function _encode62($charCode) {
                $res = '';
                if ($charCode >= $this->_encoding) {
@@ -426,7 +426,7 @@ class JavaScriptPacker {
 
        // use high-ascii values
        // characters: ¬°¬¢¬£¬§¬•¬¶¬ß¬®¬©¬™¬´¬¨¬≠¬Æ¬Ø¬∞¬±¬≤¬≥¬¥¬µ¬∂¬∑¬∏¬π¬∫¬ª¬º¬Ω¬æ¬ø√Ä√?√Ç√É√Ñ√Ö√Ü√á√à√â√ä√ã√å√?√é√?√?√ë√í√ì√î√ï√ñ√ó√ò√ô√ö√õ√ú√?√û√ü√†√°√¢√£√§√•√¶√ß√®√©√™√´√¨√≠√Æ√Ø√∞√±√≤√≥√¥√µ√∂√∑√∏√π√∫√ª√º√Ω√æ
-       // http://doc.spip.org/@_encode95
+       // http://code.spip.net/@_encode95
        function _encode95($charCode) {
                $res = '';
                if ($charCode >= $this->_encoding)
@@ -435,24 +435,24 @@ class JavaScriptPacker {
                return $res . chr(($charCode % $this->_encoding) + 161);
        }
 
-// http://doc.spip.org/@_safeRegExp
+// http://code.spip.net/@_safeRegExp
        function _safeRegExp($string) {
                return '/'.preg_replace('/\$/', '\\\$', $string).'/';
        }
 
-// http://doc.spip.org/@_encodePrivate
+// http://code.spip.net/@_encodePrivate
        function _encodePrivate($charCode) {
                return "_" . $charCode;
        }
 
        // protect characters used by the parser
-// http://doc.spip.org/@_escape
+// http://code.spip.net/@_escape
        function _escape($script) {
                return preg_replace('/([\\\\\'])/', '\\\$1', $script);
        }
 
        // protect high-ascii characters already in the script
-// http://doc.spip.org/@_escape95
+// http://code.spip.net/@_escape95
        function _escape95($script) {
                return preg_replace_callback(
                        '/[\\xa1-\\xff]/',
@@ -460,13 +460,13 @@ class JavaScriptPacker {
                        $script
                );
        }
-// http://doc.spip.org/@_escape95Bis
+// http://code.spip.net/@_escape95Bis
        function _escape95Bis($match) {
                return '\x'.((string)dechex(ord($match)));
        }
 
 
-// http://doc.spip.org/@_getJSFunction
+// http://code.spip.net/@_getJSFunction
        function _getJSFunction($aName) {
                $func = 'JSFUNCTION'.$aName;
                if (isset($this->$func)){
@@ -580,7 +580,7 @@ class ParseMaster {
        var $QUOTE = '/\'/';
        var $DELETED = '/\\x01[^\\x01]*\\x01/';//g
 
-// http://doc.spip.org/@add
+// http://code.spip.net/@add
        function add($expression, $replacement = '') {
                // count the number of sub-expressions
                //  - add one because each pattern is itself a sub-expression
@@ -614,7 +614,7 @@ class ParseMaster {
                else $this->_add('/^$/', $replacement, $length);
        }
 
-// http://doc.spip.org/@exec
+// http://code.spip.net/@exec
        function exec($string) {
                // execute the global replacement
                $this->_escaped = array();
@@ -641,7 +641,7 @@ class ParseMaster {
                return preg_replace($this->DELETED, '', $string);
        }
 
-// http://doc.spip.org/@reset
+// http://code.spip.net/@reset
        function reset() {
                // clear the patterns collection so that this object may be re-used
                $this->_patterns = array();
@@ -652,14 +652,14 @@ class ParseMaster {
        var $_patterns = array(); // patterns stored by index
 
        // create and add a new pattern to the patterns collection
-// http://doc.spip.org/@_add
+// http://code.spip.net/@_add
        function _add() {
                $arguments = func_get_args();
                $this->_patterns[] = $arguments;
        }
 
        // this is the global replace function (it's quite complicated)
-// http://doc.spip.org/@_replacement
+// http://code.spip.net/@_replacement
        function _replacement($arguments) {
                if (empty($arguments)) return '';
 
@@ -692,7 +692,7 @@ class ParseMaster {
                }
        }
 
-// http://doc.spip.org/@_backReferences
+// http://code.spip.net/@_backReferences
        function _backReferences($match, $offset) {
                $replacement = $this->buffer['replacement'];
                $quote = $this->buffer['quote'];
@@ -703,14 +703,14 @@ class ParseMaster {
                return $replacement;
        }
 
-// http://doc.spip.org/@_replace_name
+// http://code.spip.net/@_replace_name
        function _replace_name($match, $offset){
                $length = strlen($match[$offset + 2]);
                $start = $length - max($length - strlen($match[$offset + 3]), 0);
                return substr($match[$offset + 1], $start, $length) . $match[$offset + 4];
        }
 
-// http://doc.spip.org/@_replace_encoded
+// http://code.spip.net/@_replace_encoded
        function _replace_encoded($match, $offset) {
                return $this->buffer[$match[$offset]];
        }
@@ -721,7 +721,7 @@ class ParseMaster {
        var $buffer;
 
        // encode escaped characters
-// http://doc.spip.org/@_escape
+// http://code.spip.net/@_escape
        function _escape($string, $escapeChar) {
                if ($escapeChar) {
                        $this->buffer = $escapeChar;
@@ -735,14 +735,14 @@ class ParseMaster {
                        return $string;
                }
        }
-// http://doc.spip.org/@_escapeBis
+// http://code.spip.net/@_escapeBis
        function _escapeBis($match) {
                $this->_escaped[] = $match[1];
                return $this->buffer;
        }
 
        // decode escaped characters
-// http://doc.spip.org/@_unescape
+// http://code.spip.net/@_unescape
        function _unescape($string, $escapeChar) {
                if ($escapeChar) {
                        $regexp = '/'.'\\'.$escapeChar.'/';
@@ -758,7 +758,7 @@ class ParseMaster {
                        return $string;
                }
        }
-// http://doc.spip.org/@_unescapeBis
+// http://code.spip.net/@_unescapeBis
        function _unescapeBis() {
                if (isset($this->_escaped[$this->buffer['i']])
                        && $this->_escaped[$this->buffer['i']] != '')
@@ -771,7 +771,7 @@ class ParseMaster {
                return $this->buffer['escapeChar'] . $temp;
        }
 
-// http://doc.spip.org/@_internalEscape
+// http://code.spip.net/@_internalEscape
        function _internalEscape($string) {
                return preg_replace($this->ESCAPE, '', $string);
        }
index 878d7d0..74318be 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="compresseur"
        categorie="performance"
-       version="1.8.8"
+       version="1.8.11"
        etat="stable"
        compatibilite="[3.0.0;3.1.*]"
        logo="images/compresseur-32.png"
index 79328b2..b750934 100644 (file)
                                [<span class='erreur_message'>(#GET{erreurs})</span>]
                                <div class="choix">
                                        <input type="checkbox" name="tout_sauvegarder" id="tout_sauvegarder" value="oui"[(#ENV{tout_sauvegarder}|oui)checked="checked"]
-                                                                onchange="jQuery(this).prop('checked')?jQuery('#liste_tables').hide('fast'):jQuery('#liste_tables').show('fast');" />
-                                       <label for="tout_sauvegarder"><:dump:tout_sauvegarder:></label>
-                               </div>
-                               <div id="liste_tables"[(#ENV{tout_sauvegarder}|oui)style="display:none;"]>
-                               (#ENV*{_tables})
+                                               onclick="$(this).blur();"
+                                               onchange="jQuery(this).prop('checked')?jQuery('#liste_tables').hide('fast'):jQuery('#liste_tables').show('fast');"
+                                       /><label for="tout_sauvegarder"><:dump:tout_sauvegarder:>[
+                                       <br />\(<:texte_choix_table_prefix:><b> (#ENV{_prefixe}|=={spip}|non|?{#ENV{_prefixe}})</b>\)]</label>
+                                       <div id="liste_tables"[(#ENV{tout_sauvegarder}|oui)style="display:none;"]>
+                                       (#ENV*{_tables})
+                                       </div>
                                </div>
            </li>]
          </ul>
@@ -34,4 +36,4 @@
          <p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:dump:texte_sauvegarde_base:>' /></p>
        </div></form>
        ]
-</div>
\ No newline at end of file
+</div>
index cbbf2e1..6e04049 100644 (file)
@@ -35,6 +35,9 @@ function formulaires_sauvegarder_charger_dist(){
                '_tables' => "<ol class='spip'><li class='choix'>\n" . join("</li>\n<li class='choix'>",
                  base_saisie_tables('tables', $tables, $exclude, _request('nom_sauvegarde')?(_request('tables')?_request('tables'):array()):null)
                        ) . "</li></ol>\n",
+               /* Si la fonction n'existe pas (vieux plugin migration actif), on met 'spip', ca n'affichera rien
+               mais ne perturbe pas la sauvegarde qui utilisera bien le bon prefixe */
+               '_prefixe' => function_exists('base_prefixe_tables')?base_prefixe_tables(''):'spip',
        );
 
        return $valeurs;
index a63b6d4..76778d3 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="dump"
        categorie="maintenance"
-       version="1.6.7"
+       version="1.6.9"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="prive/themes/spip/images/base-backup-32.png"
index 9664d54..b336c5b 100644 (file)
 [(#GET{fin}|oui)
        <h1><:dump:info_sauvegarde:></h1>
 
+       #SET{erreurs,''}
        #SET{taille,#ENV{status}|dump_taille_sauvegarde}
        [(#GET{taille}|non)
        #SET{archive,#VAL{'<b>'}|concat{#ENV{status}|dump_nom_sauvegarde|joli_repertoire}|concat{'</b>'}}
+       #SET{erreurs,' '}
 
        #BOITE_OUVRIR{'','error'}
        <:dump:erreur_taille_sauvegarde{fichier=#GET{archive}}:>
        #BOITE_FERMER
        ]
-       [(#GET{taille}|oui)
+
+       [
+       #BOITE_OUVRIR{'','error'}
+       #SET{erreurs,' '}
+       (#ENV{status}|dump_afficher_erreurs)
+       #BOITE_FERMER
+       ]
+
+       [(#GET{erreurs}|non)
        #BOITE_OUVRIR{'','success'}
 
        [(#SET{archive,[(#VAL{'<b>'}|concat{#ENV{status}|dump_nom_sauvegarde|joli_repertoire}|concat{'</b> ('}|concat{[(#GET{taille}|taille_en_octets)]}|concat{')'})]})]
index 14657d8..8d6ae83 100644 (file)
@@ -43,4 +43,13 @@ function dump_afficher_tables_sauvegardees($status_file) {
        return $corps;
 }
 
+function dump_afficher_erreurs($status_file) {
+       $erreurs = "";
+       $status = dump_lire_status($status_file);
+       if (isset($status['errors'])){
+               $erreurs = implode("<br />",$status['errors']);
+       }
+
+       return $erreurs;
+}
 ?>
index 52baced..683d8d5 100644 (file)
@@ -9,7 +9,7 @@ $file="[(#CHEMIN{apple-touch-icon[-(#ENV{size,''})].png}|sinon{[(#LOGO_SITE_SPIP
                |image_passe_partout{[(#ENV{size,57}|intval)],[(#ENV{size,57}|intval)]}
                |image_recadre{[(#ENV{size,57}|intval)],[(#ENV{size,57}|intval)],center}
                |image_aplatir{png,#ffffff}|extraire_attribut{src})]})]";
-if ($cl = filesize(preg_replace(',[?].*$,','',$file)))
+if ($cl = filesize($file=preg_replace(',[?].*$,','',$file)))
        header("Content-Length: ". $cl);
 
 readfile($file);
index 84e4544..6618334 100644 (file)
@@ -20,7 +20,7 @@ include_spip('inc/filtres_images_lib_mini');
  *  - sont chainables les unes derrieres les autres dans toutes les combinaisons possibles
  */
 
-// http://doc.spip.org/@couleur_extraire
+// http://code.spip.net/@couleur_extraire
 function couleur_extraire ($img, $x=10, $y=6) {
        include_spip('filtres/images_lib');
        return _image_couleur_extraire($img, $x, $y);
@@ -28,7 +28,7 @@ function couleur_extraire ($img, $x=10, $y=6) {
 
 
 
-// http://doc.spip.org/@couleur_web
+// http://code.spip.net/@couleur_web
 function couleur_web($couleur) {
        include_spip('filtres/images_lib');
        $rvb = _couleur_hex_to_dec($couleur);
@@ -38,7 +38,7 @@ function couleur_web($couleur) {
        return _couleur_dec_to_hex($rvb['red'],$rvb['green'],$rvb['blue']);
 }
 
-// http://doc.spip.org/@couleur_4096
+// http://code.spip.net/@couleur_4096
 function couleur_4096($couleur) {
        $r = (substr($couleur, 0, 1));
        $v = (substr($couleur, 2, 1));
@@ -48,7 +48,7 @@ function couleur_4096($couleur) {
 }
 
 
-// http://doc.spip.org/@couleur_extreme
+// http://code.spip.net/@couleur_extreme
 function couleur_extreme ($couleur, $limite=0.5) {
        // force la couleur au noir ou au blanc le plus proche
        // -> donc couleur foncee devient noire
@@ -77,7 +77,7 @@ function couleur_extreme ($couleur, $limite=0.5) {
        return $couleur_texte;
 }
 
-// http://doc.spip.org/@couleur_inverser
+// http://code.spip.net/@couleur_inverser
 function couleur_inverser ($couleur) {
        $couleurs = _couleur_hex_to_dec($couleur);
        $red = 255 - $couleurs["red"];
@@ -89,7 +89,7 @@ function couleur_inverser ($couleur) {
        return $couleur;
 }
 
-// http://doc.spip.org/@couleur_foncer_si_claire
+// http://code.spip.net/@couleur_foncer_si_claire
 function couleur_foncer_si_claire ($couleur, $seuil=122) {
        // ne foncer que les couleurs claires
        // utile pour ecrire sur fond blanc, 
@@ -108,7 +108,7 @@ function couleur_foncer_si_claire ($couleur, $seuil=122) {
        else return $couleur;
 }
 
-// http://doc.spip.org/@couleur_eclaircir_si_foncee
+// http://code.spip.net/@couleur_eclaircir_si_foncee
 function couleur_eclaircir_si_foncee ($couleur, $seuil=123) {
        $couleurs = _couleur_hex_to_dec($couleur);
        $red = $couleurs["red"];
@@ -124,7 +124,7 @@ function couleur_eclaircir_si_foncee ($couleur, $seuil=123) {
        else return $couleur;
 }
 
-// http://doc.spip.org/@couleur_saturation
+// http://code.spip.net/@couleur_saturation
 function couleur_saturation($couleur, $val) {
        if ($couleur == "ffffff") $couleur = "eeeeee";
 
@@ -145,7 +145,7 @@ function couleur_saturation($couleur, $val) {
                
 }
 
-// http://doc.spip.org/@couleur_luminance
+// http://code.spip.net/@couleur_luminance
 function couleur_luminance($couleur, $val) {
        include_spip('filtres/images_lib');
 
index 402ff88..bfe43eb 100644 (file)
@@ -224,7 +224,7 @@ function _couleur_hsl2rgb ($H,$S,$L) {
 // renvoit sous la forme hexadecimale ("F26C4E" par exemple).
 // Par defaut, la couleur choisie se trouve un peu au-dessus du centre de l'image.
 // On peut forcer un point en fixant $x et $y, entre 0 et 20.
-// http://doc.spip.org/@image_couleur_extraire
+// http://code.spip.net/@image_couleur_extraire
 
 function _image_couleur_extraire($img, $x=10, $y=6) {
        static $couleur_extraite = array();
index 0722117..d3233a7 100644 (file)
@@ -28,9 +28,9 @@ include_spip('inc/filtres_images_mini');
 // pour le format gif, $qualite correspond au nombre de couleurs dans la palette (defaut 128)
 // pour le format png, $qualite correspond au nombre de couleur dans la palette ou si 0 a une image truecolor (defaut truecolor)
 // attention, seul 128 est supporte en l'etat (production d'images avec palette reduite pas satisfaisante)
-// http://doc.spip.org/@image_aplatir
+// http://code.spip.net/@image_aplatir
 // 3/ $transparence a "true" permet de conserver la transparence (utile pour conversion GIF)
-// http://doc.spip.org/@image_aplatir
+// http://code.spip.net/@image_aplatir
 function image_aplatir($im, $format='jpg', $coul='000000', $qualite=NULL, $transparence=false)
 {
        if ($qualite===NULL){
@@ -159,7 +159,7 @@ function image_aplatir($im, $format='jpg', $coul='000000', $qualite=NULL, $trans
 // Enregistrer une image dans un format donne
 // (conserve la transparence gif, png, ico)
 // utilise [->@image_aplatir]
-// http://doc.spip.org/@image_format
+// http://code.spip.net/@image_format
 function image_format($img, $format='png') {
        $qualite = null;
        if ($format=='png8') {$format='png';$qualite=128;}
@@ -170,7 +170,7 @@ function image_format($img, $format='png') {
 // Transforme l'image en PNG transparent
 // alpha = 0: aucune transparence
 // alpha = 127: completement transparent
-// http://doc.spip.org/@image_alpha
+// http://code.spip.net/@image_alpha
 function image_alpha($im, $alpha = 63)
 {
        $fonction = array('image_alpha', func_get_args());
@@ -231,7 +231,24 @@ function image_alpha($im, $alpha = 63)
        
 }
 
-// http://doc.spip.org/@image_recadre
+/**
+ *
+ * http://code.spip.net/@image_recadre
+ *
+ * @param string $im
+ * @param string|int $width
+ *   largeur du recadrage
+ *   ou ratio sous la forme "16:9"
+ * @param string|int $height
+ *   hauteur du recadrage
+ *   ou "+" (agrandir) ou "-" (reduire) si un ratio est fourni pour width
+ * @param string $position
+ *   center, left, right, top, bottom, ou combinaisons ("top left")
+ * @param string $background_color
+ *   couleur de fond si on agrandit l'image
+ * @return string
+ *   balise image recadree
+ */
 function image_recadre($im,$width,$height,$position='center', $background_color='white')
 {
        $fonction = array('image_recadre', func_get_args());
@@ -248,6 +265,23 @@ function image_recadre($im,$width,$height,$position='center', $background_color=
                return _image_tag_changer_taille($im,$width,$height);
        }
 
+       // on recadre pour respecter un ratio ?
+       // width : "16:9"
+       // height : "+" pour agrandir l'image et "-" pour la croper
+       if (strpos($width,":")!==false){
+               list($wr,$hr) = explode(":",$width);
+               $hm = $x_i / $wr * $hr;
+               $ym = $y_i / $hr * $wr;
+               if ($height=="+"?($y_i<$hm):($y_i>$hm)){
+                       $width = $x_i;
+                       $height = $hm;
+               }
+               else {
+                       $width = $ym;
+                       $height = $y_i;
+               }
+       }
+
        if ($width==0) $width=$x_i;
        if ($height==0) $height=$y_i;
        
@@ -415,7 +449,7 @@ function image_recadre_mini($im)
 }
 
 
-// http://doc.spip.org/@image_flip_vertical
+// http://code.spip.net/@image_flip_vertical
 function image_flip_vertical($im)
 {
        $fonction = array('image_flip_vertical', func_get_args());
@@ -454,7 +488,7 @@ function image_flip_vertical($im)
        return _image_ecrire_tag($image,array('src'=>$dest));
 }
 
-// http://doc.spip.org/@image_flip_horizontal
+// http://code.spip.net/@image_flip_horizontal
 function image_flip_horizontal($im)
 {
        $fonction = array('image_flip_horizontal', func_get_args());
@@ -492,7 +526,7 @@ function image_flip_horizontal($im)
        return _image_ecrire_tag($image,array('src'=>$dest));
 }
 
-// http://doc.spip.org/@image_masque
+// http://code.spip.net/@image_masque
 function image_masque($im, $masque, $pos="") {
        // Passer, en plus de l'image d'origine,
        // une image de "masque": un fichier PNG24 transparent.
@@ -904,7 +938,7 @@ function image_masque($im, $masque, $pos="") {
 // un noir & blanc "photo" n'est pas "neutre": les composantes de couleur sont
 // ponderees pour obtenir le niveau de gris;
 // on peut ici regler cette ponderation en "pour mille"
-// http://doc.spip.org/@image_nb
+// http://code.spip.net/@image_nb
 function image_nb($im, $val_r = 299, $val_g = 587, $val_b = 114)
 {
        $fonction = array('image_nb', func_get_args());
@@ -960,7 +994,7 @@ function image_nb($im, $val_r = 299, $val_g = 587, $val_b = 114)
        return _image_ecrire_tag($image,array('src'=>$dest));
 }
 
-// http://doc.spip.org/@image_flou
+// http://code.spip.net/@image_flou
 function image_flou($im,$niveau=3)
 {
        // Il s'agit d'une modification du script blur qu'on trouve un peu partout:
@@ -1088,7 +1122,7 @@ function image_flou($im,$niveau=3)
        return _image_ecrire_tag($image,array('src'=>$dest,'width'=>($x_i+$niveau),'height'=>($y_i+$niveau)));
 }
 
-// http://doc.spip.org/@image_RotateBicubic
+// http://code.spip.net/@image_RotateBicubic
 function image_RotateBicubic($src_img, $angle, $bicubic=0) {
        include_spip('filtres/images_lib');
    
@@ -1267,7 +1301,7 @@ function image_RotateBicubic($src_img, $angle, $bicubic=0) {
 
 // permet de faire tourner une image d'un angle quelconque
 // la fonction "crop" n'est pas implementee...
-// http://doc.spip.org/@image_rotation
+// http://code.spip.net/@image_rotation
 function image_rotation($im, $angle, $crop=false)
 {
        $fonction = array('image_rotation', func_get_args());
@@ -1282,7 +1316,7 @@ function image_rotation($im, $angle, $crop=false)
        if ($creer) {
                $effectuer_gd = true;
 
-               if(is_callable(array('Imagick','rotateImage'))){
+               if(method_exists('Imagick','rotateImage')){
                        $imagick = new Imagick();
                        $imagick->readImage($im);
                        $imagick->rotateImage(new ImagickPixel('none'), $angle);
@@ -1338,7 +1372,7 @@ function image_rotation($im, $angle, $crop=false)
 // Permet d'appliquer un filtre php_imagick a une image
 // par exemple: [(#LOGO_ARTICLE|image_imagick{imagick_wave,20,60})]
 // liste des fonctions: http://www.linux-nantes.org/~fmonnier/doc/imagick/
-// http://doc.spip.org/@image_imagick
+// http://code.spip.net/@image_imagick
 function image_imagick () {
        $tous = func_get_args();
        $img = $tous[0];
@@ -1378,7 +1412,7 @@ function image_imagick () {
 // Permet de rendre une image
 // plus claire (gamma > 0)
 // ou plus foncee (gamma < 0)
-// http://doc.spip.org/@image_gamma
+// http://code.spip.net/@image_gamma
 function image_gamma($im, $gamma = 0){
        include_spip('filtres/images_lib');
        $fonction = array('image_gamma', func_get_args());
@@ -1430,7 +1464,7 @@ function image_gamma($im, $gamma = 0){
 // On peut fixer les valeurs RGB 
 // de la couleur "complementaire" pour forcer une dominante
 //function image_sepia($im, $dr = 137, $dv = 111, $db = 94)
-// http://doc.spip.org/@image_sepia
+// http://code.spip.net/@image_sepia
 function image_sepia($im, $rgb = "896f5e"){
        include_spip('filtres/images_lib');
        
@@ -1496,7 +1530,7 @@ function image_sepia($im, $rgb = "896f5e"){
 
 
 // Renforcer la nettete d'une image
-// http://doc.spip.org/@image_renforcement
+// http://code.spip.net/@image_renforcement
 function image_renforcement($im, $k=0.5)
 {
        $fonction = array('image_flou', func_get_args());
index 815e0ba..019a4c7 100644 (file)
@@ -18,7 +18,7 @@ include_spip('inc/filtres_images_mini');
 // Image typographique
 // Fonctions pour l'arabe
 
-// http://doc.spip.org/@rtl_mb_ord
+// http://code.spip.net/@rtl_mb_ord
 function rtl_mb_ord($char){
 
        if (($c = ord($char)) < 216) return $c;
@@ -32,7 +32,7 @@ function rtl_mb_ord($char){
 }
 
 
-// http://doc.spip.org/@rtl_reverse
+// http://code.spip.net/@rtl_reverse
 function rtl_reverse($mot, $rtl_global) {
        $rtl_prec = $rtl_global;
 
@@ -87,7 +87,7 @@ function rtl_reverse($mot, $rtl_global) {
 
 
 
-// http://doc.spip.org/@rtl_visuel
+// http://code.spip.net/@rtl_visuel
 function rtl_visuel($texte, $rtl_global) {
        // hebreu + arabe: 54928 => 56767
        // hebreu + presentation A: 15707294 => 15710140
@@ -395,7 +395,7 @@ function rtl_visuel($texte, $rtl_global) {
 }
 
 
-// http://doc.spip.org/@printWordWrapped
+// http://code.spip.net/@printWordWrapped
 function printWordWrapped($image, $top, $left, $maxWidth, $font, $couleur, $text, $textSize, $align="left", $hauteur_ligne = 0) {
        static $memps = array();
 
@@ -508,7 +508,7 @@ function printWordWrapped($image, $top, $left, $maxWidth, $font, $couleur, $text
 //array imagefttext ( resource image, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo] )
 //array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )
 
-// http://doc.spip.org/@produire_image_typo
+// http://code.spip.net/@produire_image_typo
 function produire_image_typo() {
        /*
        arguments autorises:
index 5fa9d3e..9daae63 100644 (file)
@@ -41,13 +41,13 @@ function image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_cre
 
 // Pour assurer la compatibilite avec les anciens nom des filtres image_xxx
 // commencent par "image_"
-// http://doc.spip.org/@reduire_image
+// http://code.spip.net/@reduire_image
 function reduire_image($texte, $taille = -1, $taille_y = -1) {
        return filtrer('image_graver',
                filtrer('image_reduire',$texte, $taille, $taille_y)
        );
 }
-// http://doc.spip.org/@valeurs_image_trans
+// http://code.spip.net/@valeurs_image_trans
 function valeurs_image_trans($img, $effet, $forcer_format = false) {
        include_spip('inc/filtres_images_lib_mini');
        return _image_valeurs_trans($img, $effet, $forcer_format = false);
index e26ed83..4b23ce7 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="images"
        categorie="multimedia"
-       version="1.1.9"
+       version="1.1.10"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="images/image_filtre-32.png"
index 6a58159..13ae4ac 100644 (file)
                $essais = array (
   0 => 
   array (
-    0 => '739cc8',
+    0 => '759bc8',
     1 => url_absolue(find_in_path('tests/degrade-bleu.jpg'),$GLOBALS['meta']['adresse_site'].'/'),
   ),
   1 => 
   array (
-    0 => '739cc8',
+    0 => '759bc8',
     1 => find_in_path('tests/degrade-bleu.jpg'),
   ),
 );
@@ -49,4 +49,4 @@
 
 
 
-?>
\ No newline at end of file
+?>
index 0e89399..649d3b2 100644 (file)
@@ -15,7 +15,7 @@ include_spip('inc/modifier');
 
 // Nota: quand on edite un forum existant, il est de bon ton d'appeler
 // au prealable conserver_original($id_forum)
-// http://doc.spip.org/@revision_forum
+// http://code.spip.net/@revision_forum
 if(!function_exists('revision_forum')){
        function revision_forum($id_forum, $c=false) {
 
index 633964c..c643bf3 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_instituer_forum_dist
+// http://code.spip.net/@action_instituer_forum_dist
 function action_instituer_forum_dist($arg=null) {
 
        if (is_null($arg)){
index f823ceb..f8a40a7 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_instituer_forum_dist
+// http://code.spip.net/@action_instituer_forum_dist
 function action_instituer_lot_forum_dist($arg=null) {
 
        if (is_null($arg)){
index 8186b1a..41f1c28 100644 (file)
@@ -29,7 +29,7 @@ include_spip('inc/forum');
  * #FORMULAIRE_FORUM seul calcule (objet, id_objet) depuis la boucle parente
  * #FORMULAIRE_FORUM{#SELF} pour forcer l'url de retour
  * #FORMULAIRE_FORUM{#SELF, article, 3} pour forcer l'objet et son identifiant
- * http://doc.spip.org/@balise_FORMULAIRE_FORUM
+ * http://code.spip.net/@balise_FORMULAIRE_FORUM
  *
  * @param Object $p
  * @return Object
@@ -81,7 +81,7 @@ function balise_FORMULAIRE_FORUM ($p) {
 /**
  * Chercher l'objet/id_objet et la configuration du forum
  *
- * http://doc.spip.org/@balise_FORMULAIRE_FORUM_stat
+ * http://code.spip.net/@balise_FORMULAIRE_FORUM_stat
  *
  * @param array $args
  * @param array $context_compil
index e88c6ca..4c2a05a 100644 (file)
@@ -29,7 +29,7 @@ include_spip('inc/forum');
  * #FORMULAIRE_FORUM_PRIVE seul calcule (objet, id_objet) depuis la boucle parente
  * #FORMULAIRE_FORUM_PRIVE{#SELF} pour forcer l'url de retour
  * #FORMULAIRE_FORUM_PRIVE{#SELF, article, 3} pour forcer l'objet et son identifiant
- * http://doc.spip.org/@balise_FORMULAIRE_FORUM_PRIVE
+ * http://code.spip.net/@balise_FORMULAIRE_FORUM_PRIVE
  *
  * @param Object $p
  * @return Object
@@ -79,7 +79,7 @@ function balise_FORMULAIRE_FORUM_PRIVE ($p) {
 /**
  * Chercher l'objet/id_objet et la configuration du forum
  *
- * http://doc.spip.org/@balise_FORMULAIRE_FORUM_PRIVE_stat
+ * http://code.spip.net/@balise_FORMULAIRE_FORUM_PRIVE_stat
  *
  * @param array $args
  * @param array $context_compil
index 2bfa958..2a5950e 100644 (file)
@@ -27,6 +27,7 @@ function forum_declarer_tables_interfaces($interfaces){
        $interfaces['exceptions_des_tables']['forums']['email']='email_auteur';
 
        // il ne faut pas essayer de chercher le forum du mot cle, mais bien le mot cle associe au forum
+       $interfaces['exceptions_des_jointures']['spip_forum']['id_secteur'] = array('spip_articles','id_secteur');
        $interfaces['exceptions_des_jointures']['spip_forum']['id_mot'] = array('spip_mots','id_mot');
        $interfaces['exceptions_des_jointures']['spip_forum']['titre_mot'] = array('spip_mots','titre');
        $interfaces['exceptions_des_jointures']['spip_forum']['type_mot'] = array('spip_mots','type');
index d183ce7..72c52fe 100644 (file)
@@ -13,7 +13,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 // Recuperer le reglage des forums publics de l'article x
-// http://doc.spip.org/@get_forums_publics
+// http://code.spip.net/@get_forums_publics
 function get_forums_publics($id_objet=0, $objet='article') {
 
        if ($objet=='article' AND $id_objet) {
index 9294d71..405073b 100644 (file)
@@ -162,7 +162,7 @@ function formulaires_forum_charger_dist($objet, $id_objet, $id_forum,
  * Ce systeme n'est pas fonctionnel pour les forums sans previsu (notamment\r
  * si $afficher_previsu = 'non')\r
  *\r
- * http://doc.spip.org/@forum_fichier_tmp\r
+ * http://code.spip.net/@forum_fichier_tmp\r
  *\r
  * @param $arg\r
  * @return int\r
@@ -211,6 +211,7 @@ function formulaires_forum_verifier_dist($objet, $id_objet, $id_forum,
        include_spip('base/abstract_sql');\r
 \r
        $erreurs = array();\r
+       $doc = array();\r
 \r
        // desactiver id_rubrique si un id_article ou autre existe dans le contexte\r
        // if ($id_article OR $id_breve OR $id_forum OR $id_syndic)\r
@@ -219,33 +220,34 @@ function formulaires_forum_verifier_dist($objet, $id_objet, $id_forum,
        // stocker un eventuel document dans un espace temporaire\r
        // portant la cle du formulaire ; et ses metadonnees avec\r
 \r
-       if (!isset($GLOBALS['visiteur_session']['tmp_forum_document']))\r
-               session_set('tmp_forum_document',\r
-                       sous_repertoire(_DIR_TMP, 'documents_forum') . md5(uniqid(rand())));\r
-       $tmp = $GLOBALS['visiteur_session']['tmp_forum_document'];\r
-       $doc = &$_FILES['ajouter_document'];\r
        if (isset($_FILES['ajouter_document'])\r
-               AND $_FILES['ajouter_document']['tmp_name']\r
-       ){\r
-               // securite :\r
-               // verifier si on possede la cle (ie on est autorise a poster)\r
-               // (sinon tant pis) ; cf. charger.php pour la definition de la cle\r
-               if (_request('cle_ajouter_document')!=calculer_cle_action($a = "ajouter-document-$objet-$id_objet")){\r
+               AND $_FILES['ajouter_document']['tmp_name']){\r
+\r
+               $acceptes = forum_documents_acceptes();\r
+               if (\r
+                       // si on a poste un $_FILES mais que l'option n'est pas active : cas produit par les bots qui spamment automatiquement\r
+                       !count($acceptes)\r
+                       // securite :\r
+                       // verifier si on possede la cle (ie on est autorise a poster)\r
+                       // (sinon tant pis) ; cf. charger.php pour la definition de la cle\r
+                 OR _request('cle_ajouter_document')!=calculer_cle_action($a = "ajouter-document-$objet-$id_objet")\r
+               ){\r
                        $erreurs['document_forum'] = _T('forum:documents_interdits_forum');\r
                        unset($_FILES['ajouter_document']);\r
                }\r
                else {\r
+                       if (!isset($GLOBALS['visiteur_session']['tmp_forum_document']))\r
+                               session_set('tmp_forum_document', sous_repertoire(_DIR_TMP, 'documents_forum') . md5(uniqid(rand())));\r
+\r
+                       $tmp = $GLOBALS['visiteur_session']['tmp_forum_document'];\r
+                       $doc = &$_FILES['ajouter_document'];\r
+\r
                        include_spip('inc/joindre_document');\r
                        include_spip('action/ajouter_documents');\r
                        list($extension, $doc['name']) = fixer_extension_document($doc);\r
-                       $acceptes = forum_documents_acceptes();\r
 \r
                        if (!in_array($extension, $acceptes)){\r
-                               # normalement on n'arrive pas ici : pas d'upload si aucun format\r
-                               if (!$formats = join(', ', $acceptes)){\r
-                                       $formats = '-'; //_L('aucun');\r
-                               }\r
-                               $erreurs['document_forum'] = _T('public:formats_acceptes', array('formats' => $formats));\r
+                               $erreurs['document_forum'] = _T('public:formats_acceptes', array('formats' => join(', ', $acceptes)));\r
                        }\r
                        else {\r
                                include_spip('inc/getdocument');\r
@@ -261,19 +263,22 @@ function formulaires_forum_verifier_dist($objet, $id_objet, $id_forum,
                        if (isset($erreurs['document_forum'])){\r
                                spip_unlink($tmp . '.bin');\r
                                unset ($_FILES['ajouter_document']);\r
-                       }\r
-                       else {\r
+                       } else {\r
                                $doc['tmp_name'] = $tmp . '.bin';\r
                                ecrire_fichier($tmp . '.txt', serialize($doc));\r
                        }\r
                }\r
-       } // restaurer le document uploade au tour precedent\r
-       elseif (file_exists($tmp . '.bin')){\r
+       }\r
+       // restaurer/supprimer le document eventuellement uploade au tour precedent\r
+       elseif (isset($GLOBALS['visiteur_session']['tmp_forum_document'])\r
+         AND $tmp = $GLOBALS['visiteur_session']['tmp_forum_document']\r
+         AND file_exists($tmp . '.bin')){\r
                if (_request('supprimer_document_ajoute')){\r
                        spip_unlink($tmp . '.bin');\r
                        spip_unlink($tmp . '.txt');\r
                }\r
                elseif (lire_fichier($tmp . '.txt', $meta)){\r
+                       $doc = &$_FILES['ajouter_document'];\r
                        $doc = @unserialize($meta);\r
                }\r
        }\r
@@ -359,7 +364,7 @@ function forum_documents_acceptes(){
 /**\r
  * Preparer la previsu d'un message de forum\r
  *\r
- * http://doc.spip.org/@inclure_previsu\r
+ * http://code.spip.net/@inclure_previsu\r
  *\r
  * @param string $texte\r
  * @param string $titre\r
index 9f3d437..8522428 100644 (file)
@@ -73,8 +73,12 @@ function formulaires_forum_prive_verifier_dist($objet, $id_objet, $id_forum, $af
 
        $erreurs = array();
 
-       if (strlen($texte = _request('texte')) < 10 AND $GLOBALS['meta']['forums_texte'] == 'oui')
-               $erreurs['texte'] = _T('forum:forum_attention_dix_caracteres');
+       $min_length = (defined('_FORUM_LONGUEUR_MINI') ? _FORUM_LONGUEUR_MINI : 10);
+       if (strlen($texte = _request('texte'))<$min_length
+               AND !$ajouter_mot AND $GLOBALS['meta']['forums_texte']=='oui'
+       ){
+               $erreurs['texte'] = _T($min_length==10 ? 'forum:forum_attention_dix_caracteres' : 'forum:forum_attention_nb_caracteres_mini', array('min' => $min_length));
+       }
        else if (defined('_FORUM_LONGUEUR_MAXI')
        AND _FORUM_LONGUEUR_MAXI > 0
        AND strlen($texte) > _FORUM_LONGUEUR_MAXI)
@@ -83,7 +87,6 @@ function formulaires_forum_prive_verifier_dist($objet, $id_objet, $id_forum, $af
                                'compte' => strlen($texte),
                                'max' => _FORUM_LONGUEUR_MAXI
                        ));
-
        if (strlen($titre=_request('titre')) < 3
        AND $GLOBALS['meta']['forums_titre'] == 'oui')
                $erreurs['titre'] = _T('forum:forum_attention_trois_caracteres');
index 36ed090..b86c5fe 100644 (file)
@@ -31,7 +31,7 @@ function autoriser_forumreactions_menu_dist($faire, $type='', $id=0, $qui = NULL
 // Moderer le forum ?
 // = modifier l'objet correspondant (si forum attache a un objet)
 // = droits par defaut sinon (admin complet pour moderation complete)
-// http://doc.spip.org/@autoriser_modererforum_dist
+// http://code.spip.net/@autoriser_modererforum_dist
 function autoriser_modererforum_dist($faire, $type, $id, $qui, $opt) {
        return $type ? autoriser('modifier', $type, $id, $qui, $opt):autoriser('moderer', 'forum', 0, $qui, $opt);
 }
@@ -63,14 +63,14 @@ function autoriser_forum_moderer_dist($faire, $type, $id, $qui, $opt){
 
 // Modifier un forum ?
 // = jamais !
-// http://doc.spip.org/@autoriser_forum_modifier_dist
+// http://code.spip.net/@autoriser_forum_modifier_dist
 function autoriser_forum_modifier_dist($faire, $type, $id, $qui, $opt) {
        return false;
 }
 
 // Consulter le forum des admins ?
 // admins y compris restreints
-// http://doc.spip.org/@autoriser_forum_admin_dist
+// http://code.spip.net/@autoriser_forum_admin_dist
 function autoriser_forum_admin_dist($faire, $type, $id, $qui, $opt) {
        return $qui['statut'] == '0minirezo';
 }
index c1c6be6..1e080f8 100644 (file)
@@ -125,7 +125,7 @@ function forum_afficher_fiche_objet($flux){
                else
                        $n_forums = 0;
                if ($n_forums)
-               $flux['data'] .= icone_verticale(_T('forum:icone_suivi_forum', array('nb_forums' => $n_forums)), generer_url_ecrire("controler_forum","objet=rubrique&id_objet=$id_rubrique"), "forum-24.png", "", 'center');
+               $flux['data'] .= icone_verticale(_T('forum:icone_suivi_forum', array('nb_forums' => $n_forums)), generer_url_ecrire("controler_forum","objet=article&id_secteur=$id_rubrique&statut=prop"), "forum-24.png", "", 'center');
        }
        return $flux;
 }
index 1a96afb..ddc90b4 100644 (file)
 if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/actions');
 
-// recuperer le critere SQL qui selectionne nos forums
-// http://doc.spip.org/@critere_statut_controle_forum
-function critere_statut_controle_forum($type, $id_rubrique=0, $recherche='') {
+/**
+ * recuperer le critere SQL qui selectionne nos forums
+ * http://code.spip.net/@critere_statut_controle_forum
+ *
+ * @param string $type
+ * @param int|array $id_secteur
+ * @param string $recherche
+ * @return array
+ */
+function critere_statut_controle_forum($type, $id_secteur=0, $recherche='') {
 
-       if (is_array($id_rubrique))   $id_rubrique = join(',',$id_rubrique);
-       if (!$id_rubrique) {
+       if (!$id_secteur) {
                $from = 'spip_forum AS F';
                $where = "";
                $and = "";
        } else {
-               if (strpos($id_rubrique,','))
-                 $eq = " IN ($id_rubrique)";
-               else $eq = "=$id_rubrique";
-             
+               if (!is_array($id_secteur)){
+                       $id_secteur = explode(',',$id_secteur);
+               }
                $from = 'spip_forum AS F, spip_articles AS A';
-               $where = "A.id_secteur$eq AND F.objet='article' AND F.id_objet=A.id_article";
+               $where = sql_in("A.id_secteur",$id_secteur)." AND F.objet='article' AND F.id_objet=A.id_article";
                $and = ' AND ';
        }
    
        switch ($type) {
-       case 'public':
-               $and .= "F.statut IN ('publie', 'off', 'prop', 'spam') AND F.texte!=''";
-               break;
-       case 'prop':
-               $and .= "F.statut='prop'";
-               break;
-       case 'spam':
-               $and .= "F.statut='spam'";
-               break;
-       case 'interne':
-               $and .= "F.statut IN ('prive', 'privrac', 'privoff', 'privadm') AND F.texte!=''";
-               break;
-       case 'vide':
-               $and .= "F.statut IN ('publie', 'off', 'prive', 'privrac', 'privoff', 'privadm') AND F.texte=''";
-               break;
-       default:
-               $where = '0=1';
-               $and ='';
-               break;
+               case 'public':
+                       $and .= "F.statut IN ('publie', 'off', 'prop', 'spam') AND F.texte!=''";
+                       break;
+               case 'prop':
+                       $and .= "F.statut='prop'";
+                       break;
+               case 'spam':
+                       $and .= "F.statut='spam'";
+                       break;
+               case 'interne':
+                       $and .= "F.statut IN ('prive', 'privrac', 'privoff', 'privadm') AND F.texte!=''";
+                       break;
+               case 'vide':
+                       $and .= "F.statut IN ('publie', 'off', 'prive', 'privrac', 'privoff', 'privadm') AND F.texte=''";
+                       break;
+               default:
+                       $where = '0=1';
+                       $and ='';
+                       break;
        }
 
        if ($recherche) {
@@ -75,7 +80,7 @@ function critere_statut_controle_forum($type, $id_rubrique=0, $recherche='') {
 // obsolete, remplace par l'appel systematique a 2 invalideurs :
 // - forum/id_forum
 // - objet/id_objet
-// http://doc.spip.org/@calcul_index_forum
+// http://code.spip.net/@calcul_index_forum
 function calcul_index_forum($objet,$id_objet) {
        return substr($objet,0,1).$id_objet;
 }
@@ -83,7 +88,7 @@ function calcul_index_forum($objet,$id_objet) {
 //
 // Recalculer tous les threads
 //
-// http://doc.spip.org/@calculer_threads
+// http://code.spip.net/@calculer_threads
 function calculer_threads() {
        // fixer les id_thread des debuts de discussion
        sql_update('spip_forum', array('id_thread'=>'id_forum'), "id_parent=0");
@@ -107,7 +112,7 @@ function calculer_threads() {
 }
 
 // Calculs des URLs des forums (pour l'espace public)
-// http://doc.spip.org/@racine_forum
+// http://code.spip.net/@racine_forum
 function racine_forum($id_forum){
        if (!$id_forum = intval($id_forum)) return false;
 
@@ -123,7 +128,7 @@ function racine_forum($id_forum){
 } 
 
 
-// http://doc.spip.org/@parent_forum
+// http://code.spip.net/@parent_forum
 function parent_forum($id_forum) {
        if (!$id_forum = intval($id_forum)) return;
        $row = sql_fetsel("id_parent, objet, id_objet", "spip_forum", "id_forum=".$id_forum);
@@ -149,7 +154,7 @@ function generer_url_forum_dist($id_forum, $args='', $ancre='') {
 }
 
 
-// http://doc.spip.org/@generer_url_forum_parent
+// http://code.spip.net/@generer_url_forum_parent
 function generer_url_forum_parent($id_forum) {
        if ($id_forum = intval($id_forum)) {
                list($type, $id) = parent_forum($id_forum);
@@ -162,7 +167,7 @@ function generer_url_forum_parent($id_forum) {
 
 // Quand on edite un forum, on tient a conserver l'original
 // sous forme d'un forum en reponse, de statut 'original'
-// http://doc.spip.org/@conserver_original
+// http://code.spip.net/@conserver_original
 function conserver_original($id_forum) {
        $s = sql_fetsel("id_forum", "spip_forum", "id_parent=".intval($id_forum)." AND statut='original'");
 
@@ -184,7 +189,7 @@ function conserver_original($id_forum) {
 }
 
 // appelle conserver_original(), puis modifie le contenu via l'API inc/modifier
-// http://doc.spip.org/@enregistre_et_modifie_forum
+// http://code.spip.net/@enregistre_et_modifie_forum
 function enregistre_et_modifie_forum($id_forum, $c=false) {
        if ($err = conserver_original($id_forum)) {
                spip_log("erreur de sauvegarde de l'original, $err");
@@ -242,7 +247,7 @@ function forum_recuperer_titre_dist($objet, $id_objet, $id_forum=0, $publie = tr
  * pri: a priori, doivent etre valides par un admin
  * abo: les personnes doivent au prealable etre identifiees
  *
- * http://doc.spip.org/@controler_forum
+ * http://code.spip.net/@controler_forum
  * 
  * @param string $objet
  *   objet a tester
@@ -266,7 +271,7 @@ function controler_forum($objet, $id_objet) {
 
 /**
  * Verifier la presence du jeton de secu post previsu
- * http://doc.spip.org/@forum_insert_noprevisu
+ * http://code.spip.net/@forum_insert_noprevisu
  * @return bool
  */
 function forum_insert_noprevisu(){
@@ -320,7 +325,7 @@ function forum_get_objets_depuis_env() {
 }
 
 
-// http://doc.spip.org/@reduce_strlen
+// http://code.spip.net/@reduce_strlen
 function reduce_strlen($n, $c)
 {
   return $n - (is_string($c) ? strlen($c) : 0);
index 80283fd..a4e1e89 100644 (file)
@@ -17,7 +17,7 @@ include_spip('inc/actions');
 
 // Ce fichier est inclus par dist/formulaires/forum.php
 
-// http://doc.spip.org/@mots_du_forum
+// http://code.spip.net/@mots_du_forum
 function mots_du_forum($ajouter_mot, $id_message)
 {
        include_spip('action/editer_mot');
@@ -26,7 +26,7 @@ function mots_du_forum($ajouter_mot, $id_message)
 
 
 
-// http://doc.spip.org/@tracer_erreur_forum
+// http://code.spip.net/@tracer_erreur_forum
 function tracer_erreur_forum($type='') {
        spip_log("erreur forum ($type): ".print_r($_POST, true));
 
@@ -43,7 +43,7 @@ function tracer_erreur_forum($type='') {
 /**
  * Un parametre permet de forcer le statut (exemple: plugin antispam)
  *
- * http://doc.spip.org/@inc_forum_insert_dist
+ * http://code.spip.net/@inc_forum_insert_dist
  *
  * @param $objet
  * @param $id_objet
@@ -98,7 +98,7 @@ function inc_forum_insert_dist($objet, $id_objet, $id_forum, $force_statut = NUL
 
 }
 
-// http://doc.spip.org/@forum_insert_base
+// http://code.spip.net/@forum_insert_base
 function forum_insert_base($c, $id_forum, $objet, $id_objet, $statut, $ajouter_mot = false)
 {
 
@@ -164,7 +164,7 @@ function forum_insert_base($c, $id_forum, $objet, $id_objet, $statut, $ajouter_m
 }
 
 
-// http://doc.spip.org/@forum_insert_statut
+// http://code.spip.net/@forum_insert_statut
 function forum_insert_statut($champs, $forcer_statut=NULL)
 {
        include_spip('inc/forum');
index 1be47da..2d286e6 100644 (file)
@@ -13,7 +13,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
  * dans ecrire/inc/forum_insert.php ; ici on va notifier ceux qui ne l'ont
  * pas ete a la notification forumposte (sachant que les deux peuvent se
  * suivre si le forum est valide directement ('pos' ou 'abo')
- * http://doc.spip.org/@notifications_forumvalide_dist
+ * http://code.spip.net/@notifications_forumvalide_dist
  *
  * @param string $quoi
  * @param int $id_forum
index e0746e1..11454ef 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="forum"
        categorie="communication"
-       version="1.8.34"
+       version="1.8.37"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="prive/themes/spip/images/forum-32.png"
index 498d398..abc5241 100644 (file)
        #FORMULAIRE_RECHERCHE_ECRIRE{#GET{self},ajax}
        [<h2><:resultats_recherche:> &#171;&nbsp;(#ENV{recherche})&nbsp;&#187;</h2>]
 
-<B_forum>
+<B_forums>
        <h3>[(#GRAND_TOTAL|singulier_ou_pluriel{forum:info_1_message_forum,forum:info_nb_messages_forum}|sinon{<:forum:aucun_message_forum:>})]</h3>
        <div class="clear"></div>
 
        [<p class='pagination'>(#PAGINATION{prive})</p>]
        <ul class='liste-items forums'>
-               <BOUCLE_forum(FORUMS){id_forum?}{id_objet?}{objet?}{id_auteur?}{auteur?}{email_auteur?}{ip?}{!par id_forum}{pagination #ENV{nb,10}}{statut?}{statut LIKE #GET{prive}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?}>
+               <BOUCLE_forums(FORUMS){id_forum?}{id_objet?}{id_secteur?}{objet?}{id_auteur?}{auteur?}{email_auteur?}{ip?}{!par id_forum}{pagination #ENV{nb,10}}{statut?}{statut LIKE #GET{prive}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?}>
                        <li class="item forum[ (#EXPOSE)] statut_#STATUT[ (#COMPTEUR_BOUCLE|alterner{'','odd'})]" id='forum#ID_FORUM' data-id='#ID_FORUM'
                                                        onclick="jQuery(this).toggleClass('hover');">
                        [(#INCLURE{fond=prive/modeles/forum, id_forum, self})]
                        </li>
-               </BOUCLE_forum>
+               </BOUCLE_forums>
        </ul>
        [<p class='pagination'>(#PAGINATION{prive})</p>]
-</B_forum>
+</B_forums>
 
        <h3><:forum:aucun_message_forum:></h3>
 
-<//B_forum>
\ No newline at end of file
+<//B_forums>
\ No newline at end of file
index 7ec68eb..b7a9f46 100644 (file)
@@ -8,19 +8,19 @@
 <li>[(#GET{self}|parametre_url{statut,''}|lien_ou_expose{<:forum:messages_tous:>,#ENV{statut,''}|=={''},ajax})]</li>
 
 #SET{statut,#ENV{type_message,public}|=={interne}|?{'prive','publie'}}
-<BOUCLE_cpt_1(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
+<BOUCLE_cpt_1(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{id_secteur?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
 [(#TOTAL_BOUCLE|oui) <li class='#GET{statut}'>[(#GET{self}|parametre_url{statut,#GET{statut}}|lien_ou_expose{#VAL{forum:messages_#GET{statut}}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{statut,''}|=={#GET{statut}},'ajax'})]</li>]<//B_cpt_1>
 
 #SET{statut,#ENV{type_message,public}|=={interne}|?{'privrac','prop'}}
-<BOUCLE_cpt_2(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
+<BOUCLE_cpt_2(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{id_secteur?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
 [(#TOTAL_BOUCLE|oui) <li class='#GET{statut}'>[(#GET{self}|parametre_url{statut,#GET{statut}}|lien_ou_expose{#VAL{forum:messages_#GET{statut}}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{statut,''}|=={#GET{statut}},'ajax'})]</li>]<//B_cpt_2>
 
 #SET{statut,#ENV{type_message,public}|=={interne}|?{'privadm','spam'}}
-<BOUCLE_cpt_3(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
+<BOUCLE_cpt_3(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{id_secteur?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
 [(#TOTAL_BOUCLE|oui) <li class='#GET{statut}'>[(#GET{self}|parametre_url{statut,#GET{statut}}|lien_ou_expose{#VAL{forum:messages_#GET{statut}}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{statut,''}|=={#GET{statut}},'ajax'})]</li>]<//B_cpt_3>
 
 #SET{statut,#ENV{type_message,public}|=={interne}|?{'privoff','off'}}
-<BOUCLE_cpt_4(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
+<BOUCLE_cpt_4(FORUMS){id_forum?}{id_auteur?}{id_objet?}{objet?}{id_secteur?}{auteur?}{email_auteur?}{ip?}{statut=#GET{statut}}{statut !LIKE #GET{public}}{texte LIKE #GET{vide}}{recherche?} />
 [(#TOTAL_BOUCLE|oui) <li class='#GET{statut}'>[(#GET{self}|parametre_url{statut,#GET{statut}}|lien_ou_expose{#VAL{forum:messages_#GET{statut}}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{statut,''}|=={#GET{statut}},'ajax'})]</li>]<//B_cpt_4>
 </ul>
 </div>
\ No newline at end of file
index 66aa9a3..de76da9 100644 (file)
@@ -15,7 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 //
 // <BOUCLE(FORUMS)>
 //
-// http://doc.spip.org/@boucle_FORUMS_dist
+// http://code.spip.net/@boucle_FORUMS_dist
 function boucle_FORUMS_dist($id_boucle, &$boucles) {
        $boucle = &$boucles[$id_boucle];
        $id_table = $boucle->id_table;
@@ -36,7 +36,7 @@ function boucle_FORUMS_dist($id_boucle, &$boucles) {
 
 // {meme_parent}
 // http://www.spip.net/@meme_parent
-// http://doc.spip.org/@critere_meme_parent_dist
+// http://code.spip.net/@critere_meme_parent_dist
 function critere_FORUMS_meme_parent_dist($idb, &$boucles, $crit) {
        global $exceptions_des_tables;
        $boucle = &$boucles[$idb];
@@ -79,7 +79,7 @@ function public_critere_secteur_forums_dist($idb, &$boucles, $val, $crit)
 // par exemple en tete de inc-forums.html ; impossible donc de
 // savoir a quel objet elle va s'appliquer, ca dependra du contexte
 //
-// http://doc.spip.org/@balise_PARAMETRES_FORUM_dist
+// http://code.spip.net/@balise_PARAMETRES_FORUM_dist
 function balise_PARAMETRES_FORUM_dist($p) {
 
        // s'il y a un id_article dans le contexte, regarder le statut
@@ -213,7 +213,7 @@ function quete_accepter_forum($id_article) {
 // pour une boucle forum sans id_article ou id_rubrique donne par le contexte
 // et c'est signale par un message d'erreur abscons: "table inconnue forum".
 //
-// http://doc.spip.org/@lang_parametres_forum
+// http://code.spip.net/@lang_parametres_forum
 function lang_parametres_forum($qs, $lang) {
        if (is_array($lang) AND preg_match(',id_([a-z_]+)=([0-9]+),', $qs, $r)) {
                $id = 'id_' . $r[1];
@@ -231,7 +231,7 @@ function lang_parametres_forum($qs, $lang) {
 // Pour que le compilo ajoute un invalideur a la balise #PARAMETRES_FORUM
 // Noter l'invalideur de la page contenant ces parametres,
 // en cas de premier post sur le forum
-// http://doc.spip.org/@code_invalideur_forums
+// http://code.spip.net/@code_invalideur_forums
 function code_invalideur_forums_dist($p, $code) {
        return $code;
 }
index 457ca6d..09015c3 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@generer_url_ecrire_forum
+// http://code.spip.net/@generer_url_ecrire_forum
 function urls_generer_url_ecrire_forum_dist($id, $args='', $ancre='', $public=null, $connect='') {
        $a = "id_forum=" . intval($id);
        if (is_null($public) AND !$connect)
index 8f85df2..c46b511 100644 (file)
@@ -3,7 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
-#colorbox {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
         \r
         #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) 0px 0px no-repeat; width:23px; height:23px; text-indent:-9999px;}\r
         #cboxPrevious{left:0px; background-position: -51px -25px;}\r
-        #cboxPrevious.hover{background-position:-51px 0px;}\r
+        #cboxPrevious:hover{background-position:-51px 0px;}\r
         #cboxNext{left:27px; background-position:-75px -25px;}\r
-        #cboxNext.hover{background-position:-75px 0px;}\r
+        #cboxNext:hover{background-position:-75px 0px;}\r
         #cboxClose{right:0; background-position:-100px -25px;}\r
-        #cboxClose.hover{background-position:-100px 0px;}\r
+        #cboxClose:hover{background-position:-100px 0px;}\r
         \r
         .cboxSlideshow_on #cboxSlideshow{background-position:-150px -25px; right:27px;}\r
-        .cboxSlideshow_on #cboxSlideshow.hover{background-position:-150px 0px;}\r
+        .cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}\r
         .cboxSlideshow_off #cboxSlideshow{background-position:-125px -25px; right:27px;}\r
-        .cboxSlideshow_off #cboxSlideshow.hover{background-position:-125px 0px;}
\ No newline at end of file
+        .cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px;}
\ No newline at end of file
index e54df54..b946a1c 100644 (file)
@@ -3,6 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
         \r
         #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) 0px 0px no-repeat; width:23px; height:23px; text-indent:-9999px;}\r
         #cboxPrevious{right:0px; background-position: -75px -25px;}\r
-        #cboxPrevious.hover{background-position:-75px 0px;}\r
+        #cboxPrevious:hover{background-position:-75px 0px;}\r
         #cboxNext{right:27px; background-position:-51px -25px;}\r
-        #cboxNext.hover{background-position:-51px 0px;}\r
+        #cboxNext:hover{background-position:-51px 0px;}\r
         #cboxClose{left:0; background-position:-100px -25px;}\r
-        #cboxClose.hover{background-position:-100px 0px;}\r
+        #cboxClose:hover{background-position:-100px 0px;}\r
         \r
         .cboxSlideshow_on #cboxSlideshow{background-position:-150px -25px; left:27px;}\r
-        .cboxSlideshow_on #cboxSlideshow.hover{background-position:-150px 0px;}\r
+        .cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}\r
         .cboxSlideshow_off #cboxSlideshow{background-position:-225px -25px; left:27px;}\r
-        .cboxSlideshow_off #cboxSlideshow.hover{background-position:-225px 0px;}\r
+        .cboxSlideshow_off #cboxSlideshow:hover{background-position:-225px 0px;}\r
index 8a7e375..ad164f1 100644 (file)
@@ -3,7 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
-#colorbox {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
 #colorbox{}\r
     #cboxContent{margin-top:20px;}\r
         #cboxLoadedContent{background:#000; padding:5px;}\r
-        #cboxTitle{position:absolute; top:-20px; left:0; color:#ccc;}\r
-        #cboxCurrent{position:absolute; top:-20px; right:0px; color:#ccc;}\r
+        #cboxTitle{position:absolute; top:-21px; left:0; right:0;color:#ccc;background:rgba(0,0,0,0.6);padding:1px 5px;padding-right: 50px;float: none !important;}\r
+        #cboxCurrent{position:absolute; top:-20px; right:5px; color:#ccc;}\r
         #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}\r
         #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-32px; background:url(images/controls.png) top left no-repeat; width:28px; height:65px; text-indent:-9999px;}\r
-        #cboxPrevious.hover{background-position:bottom left;}\r
+        #cboxPrevious:hover{background-position:bottom left;}\r
         #cboxNext{position:absolute; top:50%; right:5px; margin-top:-32px; background:url(images/controls.png) top right no-repeat; width:28px; height:65px; text-indent:-9999px;}\r
-        #cboxNext.hover{background-position:bottom right;}\r
+        #cboxNext:hover{background-position:bottom right;}\r
         #cboxLoadingOverlay{background:#000;}\r
         #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}\r
         #cboxClose{position:absolute; top:5px; right:5px; display:block; background:url(images/controls.png) top center no-repeat; width:38px; height:19px; text-indent:-9999px;}\r
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
+        #cboxClose:hover{background-position:bottom center;}
\ No newline at end of file
index a92d19a..a2a689b 100644 (file)
@@ -3,6 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:right;}\r
 #colorbox{}\r
     #cboxContent{margin-top:20px;}\r
         #cboxLoadedContent{background:#000; padding:5px;}\r
-        #cboxTitle{position:absolute; top:-20px; right:0; color:#ccc;}\r
-        #cboxCurrent{position:absolute; top:-20px; left:0px; color:#ccc;}\r
+                               #cboxTitle{position:absolute; top:-21px; left:0; right:0;color:#ccc;background:rgba(0,0,0,0.6);padding:1px 5px;padding-left: 50px;float: none !important;}\r
+                               #cboxCurrent{position:absolute; top:-20px; left:5px; color:#ccc;}\r
         #cboxSlideshow{position:absolute; top:-20px; left:90px; color:#fff;}\r
         #cboxPrevious{position:absolute; top:50%; right:5px; margin-top:-32px; background:url(images/controls.png) top right no-repeat; width:28px; height:65px; text-indent:-9999px;}\r
-        #cboxPrevious.hover{background-position:bottom right;}\r
+        #cboxPrevious:hover{background-position:bottom right;}\r
         #cboxNext{position:absolute; top:50%; left:5px; margin-top:-32px; background:url(images/controls.png) top left no-repeat; width:28px; height:65px; text-indent:-9999px;}\r
-        #cboxNext.hover{background-position:bottom left;}\r
+        #cboxNext:hover{background-position:bottom left;}\r
         #cboxLoadingOverlay{background:#000;}\r
         #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}\r
         #cboxClose{position:absolute; top:5px; left:5px; display:block; background:url(images/controls.png) top center no-repeat; width:38px; height:19px; text-indent:-9999px;}\r
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
+        #cboxClose:hover{background-position:bottom center;}
\ No newline at end of file
index 05c5ea0..071f209 100644 (file)
@@ -3,7 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
-#colorbox {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
         #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}\r
         #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}\r
         #cboxPrevious{position:absolute; bottom:0; left:0px; background:url(images/controls.png) -75px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}\r
-        #cboxPrevious.hover{background-position:-75px -25px;}\r
+        #cboxPrevious:hover{background-position:-75px -25px;}\r
         #cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) -50px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}\r
-        #cboxNext.hover{background-position:-50px -25px;}\r
+        #cboxNext:hover{background-position:-50px -25px;}\r
         #cboxLoadingOverlay{background:url(images/loading_background.png) center center no-repeat;}\r
         #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}\r
         #cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) -25px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}\r
-        #cboxClose.hover{background-position:-25px -25px;}\r
+        #cboxClose:hover{background-position:-25px -25px;}\r
 \r
 /*\r
     The following fixes png-transparency for IE6.  \r
index dc4dd8e..222e4df 100644 (file)
@@ -3,6 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
         #cboxCurrent{position:absolute; bottom:4px; right:58px; color:#949494; font-size: 0.8em;}\r
         #cboxSlideshow{position:absolute; bottom:4px; left:30px; color:#0092ef;}\r
         #cboxPrevious{position:absolute; bottom:0; right:0px; background:url(images/controls.png) -50px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}\r
-        #cboxPrevious.hover{background-position:-50px -25px;}\r
+        #cboxPrevious:hover{background-position:-50px -25px;}\r
         #cboxNext{position:absolute; bottom:0; right:27px; background:url(images/controls.png) -75px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}\r
-        #cboxNext.hover{background-position:-75px -25px;}\r
+        #cboxNext:hover{background-position:-75px -25px;}\r
         #cboxLoadingOverlay{background:url(images/loading_background.png) center center no-repeat;}\r
         #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}\r
         #cboxClose{position:absolute; bottom:0; left:0; background:url(images/controls.png) -25px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}\r
-        #cboxClose.hover{background-position:-25px -25px;}\r
+        #cboxClose:hover{background-position:-25px -25px;}\r
 \r
 /*\r
     The following fixes png-transparency for IE6.  \r
index 0a68929..8ca350e 100644 (file)
@@ -2,7 +2,7 @@
     ColorBox Core Style:\r
     The following CSS is consistent between example themes and should not be altered.\r
 */\r
-#colorbox {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
 #cboxNext,\r
 #cboxSlideshow,\r
 #cboxClose { border: 0; background-color: transparent; background-repeat: no-repeat; background-position: 50% 50%; position: absolute; bottom: 8px; width: 20px; height: 20px; line-height: 20px; text-indent: -9999px; opacity: 0.2; }\r
-#cboxPrevious.hover,\r
-#cboxNext.hover,\r
-#cboxSlideshow.hover,\r
-#cboxClose.hover { opacity: 1 }\r
+#cboxPrevious:hover,\r
+#cboxNext:hover,\r
+#cboxSlideshow:hover,\r
+#cboxClose:hover { opacity: 1 }\r
 #cboxCurrent { position: absolute; bottom: 9px; left: 70px; color: #999; }\r
 #cboxPrevious { background-image: url(images/prev.png); left: 5px; }\r
 #cboxNext { background-image: url(images/next.png); left: 25px; }\r
index 7e6504a..654784d 100644 (file)
@@ -2,6 +2,7 @@
     ColorBox Core Style:\r
     The following CSS is consistent between example themes and should not be altered.\r
 */\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
 #cboxNext,\r
 #cboxSlideshow,\r
 #cboxClose { border: 0; background-color: transparent; background-repeat: no-repeat; background-position: 50% 50%; position: absolute; bottom: 8px; width: 20px; height: 20px; line-height: 20px; text-indent: -9999px; opacity: 0.2; }\r
-#cboxPrevious.hover,\r
-#cboxNext.hover,\r
-#cboxSlideshow.hover,\r
-#cboxClose.hover { opacity: 1 }\r
+#cboxPrevious:hover,\r
+#cboxNext:hover,\r
+#cboxSlideshow:hover,\r
+#cboxClose:hover { opacity: 1 }\r
 #cboxCurrent { position: absolute; bottom: 9px; right: 70px; color: #999; }\r
 #cboxPrevious { background-image: url(images/next.png); right: 5px; }\r
 #cboxNext { background-image: url(images/prev.png); right: 25px; }\r
index dddaa29..0ba39b9 100644 (file)
@@ -3,7 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
-#colorbox {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
@@ -37,9 +37,9 @@
                text-align: center; color: #fff; font-weight: bold; font-size: 0.9em; background-image: url('images/fancy_title_over.png'); }\r
         #cboxCurrent{position: absolute; left: -3000em}\r
         #cboxPrevious{position: absolute; top: 0; left: 15px; width: 35% ; height: 100%; text-indent:-9999px;}\r
-        #cboxPrevious.hover{background:url(images/fancy_shadow-spt1.png) -170px 50% no-repeat;}\r
+        #cboxPrevious:hover{background:url(images/fancy_shadow-spt1.png) -170px 50% no-repeat;}\r
         #cboxNext{position: absolute; top: 0; right: 15px; width: 35% ; height: 100%; text-indent:-9999px;}\r
-        #cboxNext.hover{background:url(images/fancy_right.png) right 50% no-repeat;}\r
+        #cboxNext:hover{background:url(images/fancy_right.png) right 50% no-repeat;}\r
         #cboxSlideshow{position:absolute; top: -12px; left:-15px; width: 30px; height: 30px;\r
                background:url(images/fancy_shadow-spt2.png) -40px -35px no-repeat; text-indent:-9999px;}\r
         #cboxLoadingOverlay{background:#fff;}\r
index 01b85e3..0bd6c95 100644 (file)
@@ -3,6 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
@@ -36,9 +37,9 @@
                text-align: center; color: #fff; font-weight: bold; font-size: 0.9em; background-image: url('images/fancy_title_over.png'); }\r
         #cboxCurrent{position: absolute; right: -3000em}\r
         #cboxPrevious{position: absolute; top: 0; right: 15px; width: 35% ; height: 100%; text-indent:-9999px;}\r
-        #cboxPrevious.hover{background:url(images/fancy_right.png) right 50% no-repeat;}\r
+        #cboxPrevious:hover{background:url(images/fancy_right.png) right 50% no-repeat;}\r
         #cboxNext{position: absolute; top: 0; left: 15px; width: 35% ; height: 100%; text-indent:-9999px;}\r
-        #cboxNext.hover{background:url(images/fancy_shadow-spt1.png) -170px 50% no-repeat;}\r
+        #cboxNext:hover{background:url(images/fancy_shadow-spt1.png) -170px 50% no-repeat;}\r
         #cboxSlideshow{position:absolute; top: -12px; right:-15px; width: 30px; height: 30px;\r
                background:url(images/fancy_shadow-spt2.png) -120px -35px no-repeat; text-indent:-9999px;}\r
         #cboxLoadingOverlay{background:#fff;}\r
index 4711a26..f589e77 100644 (file)
@@ -3,7 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
-#colorbox {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
@@ -36,9 +36,9 @@
         #cboxTitle{position:absolute; bottom:28px; left:0; text-align:left; width:100%; color:#000; font-weight:bold;font-size:0.9em;}\r
         #cboxCurrent{position:absolute; bottom:0px; left:0px; color:#666666;font-size:0.85em;width:65px; text-align:center;}\r
         #cboxPrevious{position:absolute; bottom:0; left:70px; background:url(images/controls.png) 0px 0px no-repeat; width:13px; height:13px; text-indent:-9999px;}\r
-        #cboxPrevious.hover{background-position:0px -13px;}\r
+        #cboxPrevious:hover{background-position:0px -13px;}\r
         #cboxNext{position:absolute; bottom:0; left:90px; background:url(images/controls.png) -13px 0px no-repeat; width:13px; height:13px; text-indent:-9999px;}\r
-        #cboxNext.hover{background-position:-13px -13px;}\r
+        #cboxNext:hover{background-position:-13px -13px;}\r
         #cboxSlideshow{position:absolute; bottom:0px; left:110px; color:#666666;font-size:0.85em;}\r
         #cboxLoadingOverlay{background:#fff;}\r
         #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}\r
index c919b2d..de67a71 100644 (file)
@@ -3,6 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; right:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:right;}\r
@@ -35,9 +36,9 @@
         #cboxTitle{position:absolute; bottom:28px; right:0; text-align:left; width:100%; color:#000; font-weight:bold;font-size:0.9em;}\r
         #cboxCurrent{position:absolute; bottom:0px; right:0px; color:#666666; font-size:0.80em;}\r
         #cboxPrevious{position:absolute; bottom:0; right:40px; background:url(images/controls.png) -13px 0px no-repeat; width:13px; height:13px; text-indent:-9999px;}\r
-        #cboxPrevious.hover{background-position:-13px -13px;}\r
+        #cboxPrevious:hover{background-position:-13px -13px;}\r
         #cboxNext{position:absolute; bottom:0; right:60px; background:url(images/controls.png) 0px 0px no-repeat; width:13px; height:13px; text-indent:-9999px;}\r
-        #cboxNext.hover{background-position:0px -13px;}\r
+        #cboxNext:hover{background-position:0px -13px;}\r
         #cboxSlideshow{position:absolute; bottom:0px; right:80px; color:#666666;font-size:0.85em;}\r
         #cboxLoadingOverlay{background:#fff;}\r
         #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}\r
index 9e55922..983cf74 100644 (file)
@@ -3,7 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
-#colorbox {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
index 0704854..f66a05e 100644 (file)
@@ -3,6 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
index f2a70d9..c7e9fa7 100644 (file)
@@ -3,7 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
-#colorbox {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
         #cboxCurrent{position:absolute; top:-22px; right:205px; text-indent:-9999px;}\r
         #cboxSlideshow, #cboxPrevious, #cboxNext, #cboxClose{text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(images/controls.png) 0 0 no-repeat;}\r
         #cboxPrevious{background-position:0px 0px; right:44px;}\r
-        #cboxPrevious.hover{background-position:0px -25px;}\r
+        #cboxPrevious:hover{background-position:0px -25px;}\r
         #cboxNext{background-position:-25px 0px; right:22px;}\r
-        #cboxNext.hover{background-position:-25px -25px;}\r
+        #cboxNext:hover{background-position:-25px -25px;}\r
         #cboxClose{background-position:-50px 0px; right:0;}\r
-        #cboxClose.hover{background-position:-50px -25px;}\r
+        #cboxClose:hover{background-position:-50px -25px;}\r
         .cboxSlideshow_on #cboxPrevious, .cboxSlideshow_off #cboxPrevious{right:66px;}\r
         .cboxSlideshow_on #cboxSlideshow{background-position:-100px 0px; right:44px;}\r
-        .cboxSlideshow_on #cboxSlideshow.hover{background-position:-100px -25px;}\r
+        .cboxSlideshow_on #cboxSlideshow:hover{background-position:-100px -25px;}\r
         .cboxSlideshow_off #cboxSlideshow{background-position:-75px 0px; right:44px;}\r
-        .cboxSlideshow_off #cboxSlideshow.hover{background-position:-75px -25px;}\r
+        .cboxSlideshow_off #cboxSlideshow:hover{background-position:-75px -25px;}\r
index 5474a1c..8edd1a7 100644 (file)
@@ -3,6 +3,7 @@
     The following rules are the styles that are consistant between themes.\r
     Avoid changing this area to maintain compatability with future versions of ColorBox.\r
 */\r
+#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}\r
 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}\r
 #cboxOverlay{position:fixed; width:100%; height:100%;}\r
 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}\r
         #cboxCurrent{position:absolute; top:-22px; left:205px; text-indent:-9999px;}\r
         #cboxSlideshow, #cboxPrevious, #cboxNext, #cboxClose{text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(images/controls.png) 0 0 no-repeat;}\r
         #cboxPrevious{background-position:-25px 0px; left:44px;}\r
-        #cboxPrevious.hover{background-position:-25px -25px;}\r
+        #cboxPrevious:hover{background-position:-25px -25px;}\r
         #cboxNext{background-position:-0px 0px; left:22px;}\r
-        #cboxNext.hover{background-position:0px -25px;}\r
+        #cboxNext:hover{background-position:0px -25px;}\r
         #cboxClose{background-position:-50px 0px; left:0;}\r
-        #cboxClose.hover{background-position:-50px -25px;}\r
+        #cboxClose:hover{background-position:-50px -25px;}\r
         .cboxSlideshow_on #cboxPrevious, .cboxSlideshow_off #cboxPrevious{left:66px;}\r
         .cboxSlideshow_on #cboxSlideshow{background-position:-100px 0px; left:44px;}\r
-        .cboxSlideshow_on #cboxSlideshow.hover{background-position:-100px -25px;}\r
+        .cboxSlideshow_on #cboxSlideshow:hover{background-position:-100px -25px;}\r
         .cboxSlideshow_off #cboxSlideshow{background-position:-125px 0px; left:44px;}\r
-        .cboxSlideshow_off #cboxSlideshow.hover{background-position:-125px -25px;}\r
+        .cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px -25px;}\r
index 8bb5151..d588171 100644 (file)
                }\r
        }\r
 \r
+       var init_dimensions = false;\r
        function launch(target) {\r
                if (!closing) {\r
-                       \r
+\r
                        element = target;\r
                        \r
                        makeSettings();\r
                        }\r
                        \r
                        if (!open) {\r
+                               if (!init_dimensions) {\r
+                                       init_dimensions = true;\r
+                                       // Cache values needed for size calculations\r
+                                       interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6\r
+                                       interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();\r
+                                       loadedHeight = $loaded.outerHeight(true);\r
+                                       loadedWidth = $loaded.outerWidth(true);\r
+\r
+                                       // Setting padding to remove the need to do size conversions during the animation step.\r
+                                       $box.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth});\r
+                               }\r
+\r
                                open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.\r
                                \r
                                $box.show();\r
                        if (!init) {\r
                                init = true;\r
 \r
-                               // Cache values needed for size calculations\r
-                               interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6\r
-                               interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();\r
-                               loadedHeight = $loaded.outerHeight(true);\r
-                               loadedWidth = $loaded.outerWidth(true);\r
-                               \r
-                               // Setting padding to remove the need to do size conversions during the animation step.\r
-                               $box.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth});\r
-\r
                                // Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.\r
                                $next.click(function () {\r
                                        publicMethod.next();\r
index 478642f..cd27aab 100644 (file)
@@ -1,11 +1,11 @@
 <paquet
        prefix="mediabox"
        categorie="multimedia"
-       version="0.8.5"
+       version="0.8.11"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="prive/themes/spip/images/mediabox-32.png"
-       documentation="http://www.spip-contrib.net/MediaBox"
+       documentation="http://contrib.spip.net/MediaBox"
 >
 
        <nom>MediaBox</nom>
index c5eba15..81336c9 100644 (file)
@@ -19,7 +19,7 @@ include_spip('inc/headers');
 // soit que le document est publie, c'est-a-dire
 // joint a au moins 1 article ou rubrique publie
 
-// http://doc.spip.org/@action_acceder_document_dist
+// http://code.spip.net/@action_acceder_document_dist
 function action_acceder_document_dist() {
        include_spip('inc/documents');
 
index d2fef37..bf203d0 100644 (file)
@@ -52,7 +52,7 @@ function action_ajouter_documents_dist($id_document, $files, $objet, $id_objet,
 /**
  * Ajouter un document (au format $_FILES)
  *
- * http://doc.spip.org/@ajouter_un_document
+ * http://code.spip.net/@ajouter_un_document
  *
  * @param int $id_document
  *   document a remplacer, ou pour une vignette, l'id_document de maman
index b4029fe..9ae5c87 100644 (file)
@@ -16,7 +16,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 /**
  * Cette action permet de basculer du mode image au mode document et vice versa
  *
- * http://doc.spip.org/@action_changer_mode_document_dist
+ * http://code.spip.net/@action_changer_mode_document_dist
  *
  * @param int $id_document
  * @param string $mode
@@ -41,7 +41,7 @@ function action_changer_mode_document_dist($id_document=null, $mode=null){
                action_changer_mode_document_post($id_document, $mode);
 }
 
-// http://doc.spip.org/@action_changer_mode_document_post
+// http://code.spip.net/@action_changer_mode_document_post
 function action_changer_mode_document_post($id_document, $mode){
        // - id_document le doc a modifier
        // - mode le mode a lui donner
index 1191881..c09e02a 100644 (file)
@@ -18,7 +18,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
  * Il s'agit de la partie logique, c'est a dire que cette fonction
  * realise la copie.
  *
- * http://doc.spip.org/@action_copier_local_dist
+ * http://code.spip.net/@action_copier_local_dist
  *
  * @param null $id_document
  * @return bool|mixed|string
@@ -43,7 +43,7 @@ function action_copier_local_dist($id_document=null) {
 }
 
 /**
- * http://doc.spip.org/@action_copier_local_post
+ * http://code.spip.net/@action_copier_local_post
  *
  * @param  $id_document
  * @return bool|mixed|string
index 420c97a..c1b1c9d 100644 (file)
@@ -49,7 +49,7 @@ function action_dissocier_document_dist($arg=null){
        if ($id_objet=intval($id_objet)
                AND (
                        ($id_objet<0 AND $id_objet==-$GLOBALS['visiteur_session']['id_auteur'])
-                       OR autoriser('modifier',$objet,$id_objet)
+                       OR autoriser('dissocierdocuments',$objet,$id_objet)
                ))
                dissocier_document($document, $objet, $id_objet, $suppr, $check);
        else
index dba16f5..e16a562 100644 (file)
@@ -249,12 +249,22 @@ function medias_revision_document_parents($id_document, $parents=null, $ajout=fa
        if (!$ajout){
                foreach($liens as $k=>$lien)
                        if (!isset($objets_parents[$lien['objet']]) OR !in_array($lien['id_objet'],$objets_parents[$lien['objet']])) {
-                               objet_dissocier(array('document'=>$id_document),array($lien['objet']=>$lien['id_objet']));
+                               if (autoriser('dissocierdocuments',$lien['objet'],$lien['id_objet'])){
+                                       objet_dissocier(array('document'=>$id_document),array($lien['objet']=>$lien['id_objet']));
+                               }
                                unset($liens[$k]);
                        }
                        else $deja_parents[$lien['objet']][] = $lien['id_objet'];
        }
 
+       // verifier les droits d'associer
+       foreach($objets_parents as $objet=>$ids){
+               foreach($ids as $k=>$id){
+                       if (!autoriser('associerdocuments',$objet,$id)){
+                               unset($objets_parents[$objet][$k]);
+                       }
+               }
+       }
        objet_associer(array('document'=>$id_document),$objets_parents);
 
 }
index 9114bc4..97326a7 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@supprimer_document
+// http://code.spip.net/@supprimer_document
 function action_supprimer_document_dist($id_document=0) {
        if (!$id_document){
                $securiser_action = charger_fonction('securiser_action','inc');
index bb769c7..48836a9 100644 (file)
@@ -15,7 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 /**
  * Tourner un document
  *
- * http://doc.spip.org/@action_tourner_dist
+ * http://code.spip.net/@action_tourner_dist
  *
  * lorsque les arguments sont passes dans arg en GET :
  * id_document-angle
@@ -46,7 +46,7 @@ function action_tourner_dist($id_document=null, $angle=null) {
 /**
  * Tourner un document
  *
- * http://doc.spip.org/@action_tourner_post
+ * http://code.spip.net/@action_tourner_post
  *
  * @param int $id_document
  * @param int $angle
@@ -131,7 +131,7 @@ function action_tourner_post($id_document,$angle)
 
 // Appliquer l'EXIF orientation
 // cf. http://trac.rezo.net/trac/spip/ticket/1494
-// http://doc.spip.org/@tourner_selon_exif_orientation
+// http://code.spip.net/@tourner_selon_exif_orientation
 function tourner_selon_exif_orientation($id_document, $fichier) {
 
        if (function_exists('exif_read_data')
index 136b23a..1c6c811 100644 (file)
@@ -183,7 +183,7 @@ function medias_declarer_tables_objets_sql($tables){
 /**
  * Creer la table des types de document
  *
- * http://doc.spip.org/@creer_base_types_doc
+ * http://code.spip.net/@creer_base_types_doc
  *
  * @param string $serveur
  * @return void
index 581efa6..85a936d 100644 (file)
@@ -48,7 +48,7 @@
                                [<a href='#ENV{apercu}'>(#ENV{apercu}|image_reduire{300,200})</a>]
                                ]
                        [(#ENV{apercu}|non)
-                                       [(#ENV{_inclus}|=={embed}|?{
+                                       [(#ENV**{_inclus}|=={embed}|?{
                                                [(#MODELE{emb,id_document=#ENV{id_document,''},hauteur=200,largeur=300})]
                                                ,
                                                [(#MODELE{doc,id_document=#ENV{id_document,''},hauteur=200,largeur=300}|extraire_balise{a})]
index fdf2b6a..044fd44 100644 (file)
@@ -121,7 +121,7 @@ function formulaires_editer_document_verifier_dist($id_document='new', $id_paren
        return $erreurs;
 }
 
-// http://doc.spip.org/@inc_editer_article_dist
+// http://code.spip.net/@inc_editer_article_dist
 function formulaires_editer_document_traiter_dist($id_document='new', $id_parent='', $retour='', $lier_trad=0, $config_fonc='documents_edit_config', $row=array(), $hidden=''){
        if (is_null(_request('parents')))
                set_request('parents',array());
@@ -134,6 +134,7 @@ function formulaires_editer_document_traiter_dist($id_document='new', $id_parent
        }
 
        $res = formulaires_editer_objet_traiter('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden);
+       set_request('parents');
        $autoclose = "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>";
        if (_request('copier_local')
          OR _request('joindre_upload')
index 94fa8f2..fbbbb15 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@naviguer_doc
+// http://code.spip.net/@naviguer_doc
 function inc_documenter_objet_dist($id, $type) {
        $serveur = '';
        // avant de documenter un objet, on verifie que ses documents vus sont bien lies !
index bbe38ac..354f14c 100644 (file)
@@ -24,7 +24,7 @@ if (!defined('CHARSET_JOINT')) define('CHARSET_JOINT', 'iso-8859-1');
 // Filtre pour #FICHIER permettant d'incruster le contenu d'un document
 // Si 2e arg fourni, conversion dans le charset du site si possible
 
-// http://doc.spip.org/@contenu_document
+// http://code.spip.net/@contenu_document
 function contenu_document($arg, $charset='')
 {
        if (is_numeric($arg)) {
@@ -53,7 +53,7 @@ function contenu_document($arg, $charset='')
        return $r;
 }
 
-// http://doc.spip.org/@generer_url_document_dist
+// http://code.spip.net/@generer_url_document_dist
 function generer_url_document_dist($id_document, $args='', $ancre='') {
 
        include_spip('inc/autoriser');
@@ -94,7 +94,7 @@ function generer_url_document_dist($id_document, $args='', $ancre='') {
 //
 // A noter : dans le portfolio prive on pousse le vice jusqu'a reduire la taille
 // de la vignette -> c'est a ca que sert la variable $portfolio
-// http://doc.spip.org/@vignette_automatique
+// http://code.spip.net/@vignette_automatique
 function vignette_automatique($img, $doc, $lien, $x=0, $y=0, $align='', $class='spip_logos')
 {
        include_spip('inc/distant');
@@ -150,7 +150,7 @@ function vignette_automatique($img, $doc, $lien, $x=0, $y=0, $align='', $class='
 function image_du_document($document)
 {
        $e = $document['extension'];
-       if ((strpos($GLOBALS['meta']['formats_graphiques'], $e) !== false)
+       if ($e AND (strpos($GLOBALS['meta']['formats_graphiques'], $e) !== false)
          AND (!test_espace_prive() OR $GLOBALS['meta']['creer_preview']=='oui')
          AND $document['fichier']) {
                if ($document['distant'] == 'oui') {
index eb5fa5e..fa10723 100644 (file)
@@ -26,7 +26,7 @@ include_spip('inc/minipres');
 
 // Erreur appelee depuis public.php (la precedente ne fonctionne plus
 // depuis qu'on est sortis de spip_image.php, apparemment).
-// http://doc.spip.org/@erreur_upload_trop_gros
+// http://code.spip.net/@erreur_upload_trop_gros
 function erreur_upload_trop_gros() {
        include_spip('inc/filtres');
        
index 69d9adb..431cd01 100644 (file)
@@ -262,7 +262,7 @@ function joindre_decrire_contenu_zip($zip) {
 \r
 \r
 \r
-// http://doc.spip.org/@joindre_deballes\r
+// http://code.spip.net/@joindre_deballes\r
 function joindre_deballer_lister_zip($path,$tmp_dir) {\r
   include_spip('inc/pclzip');\r
        $archive = new PclZip($path);\r
@@ -291,7 +291,7 @@ if (!function_exists('fixer_extension_document')){
  * @param unknown_type $doc\r
  * @return unknown\r
  */\r
-// http://doc.spip.org/@fixer_extension_document\r
+// http://code.spip.net/@fixer_extension_document\r
 function fixer_extension_document($doc) {\r
        $extension = '';\r
        $name = $doc['name'];\r
@@ -313,7 +313,7 @@ function fixer_extension_document($doc) {
 //\r
 // Gestion des fichiers ZIP\r
 //\r
-// http://doc.spip.org/@accepte_fichier_upload\r
+// http://code.spip.net/@accepte_fichier_upload\r
 \r
 function accepte_fichier_upload ($f) {\r
        if (!preg_match(",.*__MACOSX/,", $f)\r
@@ -326,7 +326,7 @@ function accepte_fichier_upload ($f) {
 \r
 # callback pour le deballage d'un zip telecharge\r
 # http://www.phpconcept.net/pclzip/man/en/?options-pclzip_cb_pre_extractfunction\r
-// http://doc.spip.org/@callback_deballe_fichier\r
+// http://code.spip.net/@callback_deballe_fichier\r
 \r
 function callback_deballe_fichier($p_event, &$p_header) {\r
        if (accepte_fichier_upload($p_header['filename'])) {\r
index 120dbd1..15952dd 100644 (file)
@@ -18,7 +18,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 $GLOBALS['medias_liste_champs'][] = 'texte';\r
 $GLOBALS['medias_liste_champs'][] = 'chapo';\r
  \r
-// http://doc.spip.org/@marquer_doublons_documents\r
+// http://code.spip.net/@marquer_doublons_documents\r
 function inc_marquer_doublons_doc_dist($champs,$id,$type,$id_table_objet,$table_objet,$spip_table_objet, $desc=array(), $serveur=''){\r
        $champs_selection=array();\r
 \r
index b67ae1c..6ce2552 100644 (file)
@@ -74,7 +74,7 @@ function autoriser_document_tailler_dist($faire,$quoi,$id,$qui,$options) {
  * Il faut aussi que les documents aient ete actives sur les objets concernes
  * ou que ce soit un article, sur lequel on peut toujours uploader des images
  *
- * http://doc.spip.org/@autoriser_joindredocument_dist
+ * http://code.spip.net/@autoriser_joindredocument_dist
  *
  * @return bool
  */
@@ -191,7 +191,7 @@ function autoriser_document_supprimer_dist($faire, $type, $id, $qui, $opt){
 // si le document est lie a un element publie
 // (TODO: a revoir car c'est dommage de sortir de l'API true/false)
 //
-// http://doc.spip.org/@autoriser_document_voir_dist
+// http://code.spip.net/@autoriser_document_voir_dist
 function autoriser_document_voir_dist($faire, $type, $id, $qui, $opt) {
 
        if (!isset($GLOBALS['meta']["creer_htaccess"])
@@ -241,4 +241,39 @@ function autoriser_orphelins_supprimer_dist($faire, $type, $id, $qui, $opt){
        if ($qui['statut'] == '0minirezo'
        AND !$qui['restreint'])
                return true;
+}
+
+
+/**
+ * Autoriser a associer des documents a un objet :
+ * il faut avoir le droit de modifier cet objet
+ * @param $faire
+ * @param $type
+ * @param $id
+ * @param $qui
+ * @param $opt
+ * @return bool
+ */
+function autoriser_associerdocuments_dist($faire, $type, $id, $qui, $opt){
+       if ($type=='document') return false; // pas de document sur les documents
+       return autoriser('modifier',$type,$id,$qui,$opt);
+}
+
+/**
+ * Autoriser a dissocier des documents a un objet :
+ * il faut avoir le droit de modifier cet objet
+ * @param $faire
+ * @param $type
+ * @param $id
+ * @param $qui
+ * @param $opt
+ * @return bool
+ */
+function autoriser_dissocierdocuments_dist($faire, $type, $id, $qui, $opt){
+       if ($type=='document') return false; // pas de document sur les documents
+       // cas particulier
+       if (intval($id)<0 AND $id==-$qui['id_auteur']){
+               return true;
+       }
+       return autoriser('modifier',$type,$id,$qui,$opt);
 }
\ No newline at end of file
index 1fe236c..bdd6b26 100644 (file)
@@ -47,7 +47,7 @@ function medias_puce_statut_document($id_document, $statut){
 //
 // <BOUCLE(DOCUMENTS)>
 //
-// http://doc.spip.org/@boucle_DOCUMENTS_dist
+// http://code.spip.net/@boucle_DOCUMENTS_dist
 function boucle_DOCUMENTS($id_boucle, &$boucles) {
        $boucle = &$boucles[$id_boucle];
        $id_table = $boucle->id_table;
index 3fb6cab..92ad33d 100644 (file)
@@ -31,7 +31,7 @@ function metadata_image_dist($fichier){
  * @param bool $strict
  * @return string
  */
-// http://doc.spip.org/@decoder_type_image
+// http://code.spip.net/@decoder_type_image
 function decoder_type_image($type, $strict = false) {
        switch ($type) {
                case 1:
index e340d30..983f0d3 100644 (file)
@@ -22,7 +22,7 @@ include_spip('inc/autoriser');
  * @param string $file
  * @return array
  */
-// http://doc.spip.org/@traite_svg
+// http://code.spip.net/@traite_svg
 function metadata_svg_dist($file){
        $meta = array();
 
index bcf52bf..3ca2708 100644 (file)
                                </div>]
                        <div class="actions">
                                <BOUCLE_compte(documents_liens){id_document}{0,2} />
-                               [(#TOTAL_BOUCLE|=={1}|et{#AUTORISER{modifier,#OBJET,#ID_OBJET}})[(#BOUTON_ACTION{<:medias:bouton_enlever_supprimer_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT-suppr,#SELF},ajax,<:medias:bouton_enlever_supprimer_document_confirmation:>,'',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
-                               [(#ID_OBJET|<{0}|ou{#AUTORISER{modifier,#OBJET,#ID_OBJET}})[(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT,#SELF},ajax,'','',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
+                               [(#TOTAL_BOUCLE|=={1}|et{#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET}})[(#BOUTON_ACTION{<:medias:bouton_enlever_supprimer_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT-suppr,#SELF},ajax,<:medias:bouton_enlever_supprimer_document_confirmation:>,'',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
+                               [(#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET})[(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT,#SELF},ajax,'','',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
+                               [(#AUTORISER{modifier,document,#ID_DOCUMENT}|oui)
                                <a href="#URL_ECRIRE{document_edit,id_document=#ID_DOCUMENT}" target="_blank" class="editbox" tabindex="0" role="button"><:medias:bouton_modifier_document:></a>
-                               <//B_compte>
+                               ]<//B_compte>
                                [(#PIPELINE{document_desc_actions,#ARRAY{args,#ARRAY{id_document,#ID_DOCUMENT,position,document_case},data,''}})]
                        </div>
                        [(#PIPELINE{afficher_metas_document,#ARRAY{args,#ARRAY{'quoi','document_case','id_document',#ID_DOCUMENT},data,''}})]
index 5897ca0..345441b 100644 (file)
@@ -14,7 +14,7 @@
                        [(#BOUTON_ACTION{[(#CHEMIN_IMAGE{tourner-droite-12.png}|balise_img{<:medias:image_tourner_droite:>})],#URL_ACTION_AUTEUR{tourner,#GET{id}|concat{',90'},#SELF},ajax})]
                        [(#BOUTON_ACTION{[(#CHEMIN_IMAGE{tourner-180-12.png}|balise_img{<:medias:image_tourner_180:>})],#URL_ACTION_AUTEUR{tourner,#GET{id}|concat{',180'},#SELF},ajax})]
                </div>]
-               [(#LOGO_DOCUMENT{#URL_DOCUMENT,60,60})]
+               [<div class='vignette'>(#LOGO_DOCUMENT{#URL_DOCUMENT,150,150})</div>]
                <h4 class="titrem">
                        [(#VU|=={oui}|oui)<img src='#CHEMIN_IMAGE{vu-16-10.png}' width='16' height='10' alt='<:medias:document_vu:>' title='<:medias:document_vu:>'/> ]
                        [<span class="fichier">(#FICHIER*|basename)</span>]
                </div>]
                <div class="actions">
                        <BOUCLE_compte(documents_liens){id_document}{0,2} />
-                       [(#TOTAL_BOUCLE|=={1}|et{#AUTORISER{modifier,#OBJET,#ID_OBJET}}|et{#VU|=={non}})[(#BOUTON_ACTION{<:medias:bouton_enlever_supprimer_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT-suppr-safe,#SELF},ajax,<:medias:bouton_enlever_supprimer_document_confirmation:>,'',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
-                       [(#AUTORISER{modifier,#OBJET,#ID_OBJET})[(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT--safe,#SELF},ajax,'','',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
+                       [(#TOTAL_BOUCLE|=={1}|et{#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET}}|et{#VU|=={non}})[(#BOUTON_ACTION{<:medias:bouton_enlever_supprimer_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT-suppr-safe,#SELF},ajax,<:medias:bouton_enlever_supprimer_document_confirmation:>,'',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
+                       [(#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET})[(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT--safe,#SELF},ajax,'','',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
+                       [(#AUTORISER{modifier,document,#ID_DOCUMENT}|oui)
                        <a href="#URL_ECRIRE{document_edit,id_document=#ID_DOCUMENT}" target="_blank" class="editbox" tabindex="0" role="button"><:medias:bouton_modifier_document:></a>
-                       <//B_compte>
+                       ]<//B_compte>
                        [(#PIPELINE{document_desc_actions,#ARRAY{args,#ARRAY{id_document,#ID_DOCUMENT,position,document_desc},data,''}})]
                </div>
                <div class="nettoyeur"></div>
index 2e73532..7762bac 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="medias"
        categorie="multimedia"
-       version="2.7.59"
+       version="2.7.64"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="prive/themes/spip/images/portfolio-32.png"
@@ -12,7 +12,7 @@
        <!-- Gestion des medias dans SPIP -->
 
        <auteur>Collectif SPIP</auteur>
-       <credit>C&#233;dric Morin, Romy Duhem-Verdi&#232;re pour la m&#233;diath&#232;que</credit>
+       <credit>C&#233;dric Morin, Tetue pour la m&#233;diath&#232;que</credit>
 
        <traduire module="medias" reference="fr" gestionnaire="salvatore" />
 
@@ -33,6 +33,7 @@
        <pipeline nom="document_desc_actions" inclure="medias_pipelines.php" />
        <pipeline nom="editer_document_actions" inclure="medias_pipelines.php" />
        <pipeline nom="renseigner_document_distant" inclure="medias_pipelines.php" />
+       <pipeline nom="renseigner_document" action="" />
        <pipeline nom="configurer_liste_metas" inclure="medias_pipelines.php" />
        <pipeline nom="afficher_metas_document" action="" />
        <pipeline nom="medias_documents_visibles" action="" />
index af6d6ac..f7c95e4 100644 (file)
@@ -10,7 +10,7 @@
                        [(#VU|=={oui}|oui)
                        [<span class='vu'>(#CHEMIN_IMAGE{document-vu-24.png}|balise_img|inserer_attribut{title,<:medias:document_vu:>}|inserer_attribut{alt,<:medias:document_vu:>})</span>]
                        ]
-                       [(#AUTORISER{modifier,#OBJET,#ID_OBJET}|oui)
+                       [(#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET}|oui)
                                [(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,[(#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT--safe,#SELF})],ajax,'',''})]
                        ]
                        </li>
index 441cd07..a17554c 100644 (file)
@@ -144,11 +144,11 @@ p.actions {clear:both;}
 #portfolios {}
 #portfolios h3 {background-color:#GET{claire};padding:2px 10px;color:#000;margin-bottom:0;}
 #portfolios .liste_items {margin-top:0;}
-#portfolios .item {clear:both;padding-#GET{left}:82px;padding-#GET{right}:2px;}
+#portfolios .item {clear:both;padding-#GET{left}:160px;padding-#GET{right}:2px;}
 #portfolios .item .tourner {display:block;float:#GET{right};}
 #portfolios .item .tourner button {border:1px solid #999;padding:0;display:block;float:#GET{left};margin-#GET{left}:4px;}
 
-#portfolios .item .spip_logos {margin-#GET{left}:-80px;float:#GET{left};}
+#portfolios .item .vignette {margin-#GET{left}:-160px; width: 150px; text-align: center; float:#GET{left};}
 .ie6 #portfolios .item .spip_logos {display:inline;position:relative;}
 #portfolios .item .titrem {margin:0 0 5px;font-size:1em;}
 #portfolios .item .titrem .fichier {font-weight:normal;font-size:0.9em;font-style:italic;}
index 3b8aac2..18e794f 100644 (file)
@@ -24,7 +24,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
  * @param string $connect
  * @return string
  *
- * http://doc.spip.org/@generer_url_ecrire_document
+ * http://code.spip.net/@generer_url_ecrire_document
  */
 function urls_generer_url_document_dist($id, $args='', $ancre='', $public=null, $connect='') {
        include_spip('inc/documents');
index bbbbe8e..994af1d 100644 (file)
@@ -24,7 +24,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
  * @param string $connect
  * @return string
  *
- * http://doc.spip.org/@generer_url_ecrire_document
+ * http://code.spip.net/@generer_url_ecrire_document
  */
 function urls_generer_url_ecrire_document_dist($id, $args='', $ancre='', $public=null, $connect='') {
        include_spip('inc/documents');
index be0b234..a16bb16 100644 (file)
@@ -15,7 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/filtres');
 
 // Editer (modification) d'un mot-cle
-// http://doc.spip.org/@action_editer_mot_dist
+// http://code.spip.net/@action_editer_mot_dist
 function action_editer_mot_dist($arg=null)
 {
        if (is_null($arg)){
index 70fb41a..e1d2e2c 100644 (file)
@@ -39,7 +39,7 @@ function formulaires_editer_groupe_mot_identifier_dist($id_groupe='new',$retour=
 }
 
 // Choix par defaut des options de presentation
-// http://doc.spip.org/@articles_edit_config
+// http://code.spip.net/@articles_edit_config
 function groupes_mots_edit_config($row)
 {
        global $spip_ecran, $spip_lang;
@@ -56,7 +56,7 @@ function formulaires_editer_groupe_mot_verifier_dist($id_groupe='new',$retour=''
        return $erreurs;
 }
 
-// http://doc.spip.org/@inc_editer_groupe_mot_dist
+// http://code.spip.net/@inc_editer_groupe_mot_dist
 function formulaires_editer_groupe_mot_traiter_dist($id_groupe='new',$retour='', $config_fonc='groupes_mots_edit_config', $row=array(), $hidden=''){
        set_request('redirect','');
        // cas des checkbox : injecter la valeur non si rien de coche
index fef1e15..cfe52c2 100644 (file)
@@ -15,7 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/actions');
 include_spip('inc/editer');
 
-// http://doc.spip.org/@inc_editer_mot_dist
+// http://code.spip.net/@inc_editer_mot_dist
 function formulaires_editer_mot_charger_dist($id_mot='new', $id_groupe=0, $retour='', $associer_objet='', $dummy1='', $dummy2='', $config_fonc='mots_edit_config', $row=array(), $hidden=''){
        $valeurs = formulaires_editer_objet_charger('mot',$id_mot,$id_groupe,'',$retour,$config_fonc,$row,$hidden);
        if ($valeurs['id_parent'] && !$valeurs['id_groupe'])
@@ -50,7 +50,7 @@ function formulaires_editer_mot_identifier_dist($id_mot='new', $id_groupe=0, $re
 }
 
 // Choix par defaut des options de presentation
-// http://doc.spip.org/@articles_edit_config
+// http://code.spip.net/@articles_edit_config
 function mots_edit_config($row)
 {
        global $spip_ecran, $spip_lang;
@@ -79,7 +79,7 @@ function formulaires_editer_mot_verifier_dist($id_mot='new', $id_groupe=0, $reto
        return $erreurs;
 }
 
-// http://doc.spip.org/@inc_editer_mot_dist
+// http://code.spip.net/@inc_editer_mot_dist
 function formulaires_editer_mot_traiter_dist($id_mot='new', $id_groupe=0, $retour='', $associer_objet='', $dummy1='', $dummy2='', $config_fonc='mots_edit_config', $row=array(), $hidden=''){
        $res = array();
        set_request('redirect','');
index 14371a8..a54537d 100644 (file)
@@ -27,9 +27,9 @@ function mots_upgrade($nom_meta_base_version,$version_cible){
        if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
                $trouver_table = charger_fonction('trouver_table','base');
                if ($desc = $trouver_table('spip_mots')
-                 AND isset($desc['exist'])
+                 AND isset($desc['exist']) AND $desc['exist']
                  AND $desc = $trouver_table('spip_mots_articles')
-                       AND isset($desc['exist'])){
+                       AND isset($desc['exist']) AND $desc['exist']){
                        ecrire_meta($nom_meta_base_version,'1.0.0');
                }
                // si pas de table en base, on fera une simple creation de base
index 52fcea0..cc9cfef 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="mots"
        categorie="edition"
-       version="2.4.12"
+       version="2.4.13"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="prive/themes/spip/images/mot-32.png"
index 6b084f5..ab9f852 100644 (file)
@@ -2,7 +2,7 @@
 [(#AUTORISER{creer,groupemots}|oui)
 <p><:mots:info_creation_mots_cles|typo:> #AIDER{mots}</p>
 ]
-<BOUCLE_groupes(GROUPES_MOTS){par multi titre}>[(#AUTORISER{voir,groupemots,#ID_GROUPE}|oui)
+<BOUCLE_groupes(GROUPES_MOTS){par num titre}{par multi titre}>[(#AUTORISER{voir,groupemots,#ID_GROUPE}|oui)
        <div class="groupe_mots" id="groupe_mots-#ID_GROUPE">
                [(#BOITE_OUVRIR{[[(#RANG). ](#TITRE)[(#CHEMIN_IMAGE{groupe_mots-24.png}|balise_img{'',cadre-icone})]],'simple','titrem'})]
                        [(#AUTORISER{modifier,groupemots,#ID_GROUPE})
index de0743b..c00277d 100644 (file)
@@ -3,7 +3,7 @@
        <div class="liste">
                <h4><:mots:titre_groupes_mots:></h4>
                <ul class='liste-items'>
-               <BOUCLE_nav(GROUPES_MOTS){par multi titre}>[(#AUTORISER{voir,groupemots,#ID_GROUPE}|oui)
+               <BOUCLE_nav(GROUPES_MOTS){par num titre}{par multi titre}>[(#AUTORISER{voir,groupemots,#ID_GROUPE}|oui)
                <li class="item"><a href='#groupe_mots-#ID_GROUPE'
                                         onclick='$(".groupe_mots").hide().filter("#groupe_mots-#ID_GROUPE").show();$(this).parent().addClass("on").siblings().removeClass("on").parent().siblings("a.tous").show();return false;'
                                >#TITRE</a></li>
index d8f4dc9..d7ae686 100644 (file)
@@ -24,7 +24,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
  * @param string $ajax
  * @return string
  */
-// http://doc.spip.org/@puce_statut_mot_dist
+// http://code.spip.net/@puce_statut_mot_dist
 function puce_statut_mot_dist($id, $statut, $id_groupe, $type, $ajax='', $menu_rapide=_ACTIVER_PUCE_RAPIDE) {
        return "<img src='" . chemin_image("mot-16.png") . "' width='16' height='16' alt=''  />";
 }
index b919684..4c7bf89 100644 (file)
@@ -13,7 +13,7 @@
 if (!defined('_ECRIRE_INC_VERSION')) return;
 
 include_spip('inc/filtres');
-// http://doc.spip.org/@calendrier_categories
+// http://code.spip.net/@calendrier_categories
 function calendrier_categories($table, $num, $objet)
 {
   if (function_exists('generer_calendrier_class'))
@@ -28,7 +28,7 @@ function calendrier_categories($table, $num, $objet)
 
 // ici on prend en fait le jour, la veille et le lendemain
 
-// http://doc.spip.org/@quete_calendrier_jour
+// http://code.spip.net/@quete_calendrier_jour
 function quete_calendrier_jour($annee,$mois,$jour) {
        $avant = "'" . date("Y-m-d", mktime(0,0,0,$mois,$jour-1,$annee)) . "'";
        $apres = "'" . date("Y-m-d", mktime(1,1,1,$mois,$jour+1,$annee)) .
@@ -40,7 +40,7 @@ function quete_calendrier_jour($annee,$mois,$jour) {
 // - le premier indique les evenements du jour, sans indication de duree
 // - le deuxime indique les evenements commencant ce jour, avec indication de duree
 
-// http://doc.spip.org/@quete_calendrier_interval
+// http://code.spip.net/@quete_calendrier_interval
 function quete_calendrier_interval($limites) {
        include_spip('inc/urls');
        list($avant, $apres) = $limites;
@@ -51,7 +51,7 @@ function quete_calendrier_interval($limites) {
        return array($evt, quete_calendrier_interval_rv($avant, $apres));
 }
 
-// http://doc.spip.org/@quete_calendrier_interval_forums
+// http://code.spip.net/@quete_calendrier_interval_forums
 function  quete_calendrier_interval_forums($limites, &$evenements) {
        list($avant, $apres) = $limites;
        $result=sql_select("DISTINCT titre, date_heure, id_forum",      "spip_forum", "date_heure >= $avant AND date_heure < $apres", '',  "date_heure");
@@ -75,7 +75,7 @@ function  quete_calendrier_interval_forums($limites, &$evenements) {
 # pour faciliter la navigation, ce qu'on obtient utilisant
 # le 4e argument des fonctions generer_url_ecrire_$table
 
-// http://doc.spip.org/@quete_calendrier_interval_articles
+// http://code.spip.net/@quete_calendrier_interval_articles
 function quete_calendrier_interval_articles($avant, $apres, &$evenements) {
 
   $result=sql_select('id_article, titre, date, descriptif, chapo,  lang', 'spip_articles', "statut='publie' AND date >= $avant AND date < $apres", '', "date");
@@ -100,7 +100,7 @@ function quete_calendrier_interval_articles($avant, $apres, &$evenements) {
        }
 }
 
-// http://doc.spip.org/@quete_calendrier_interval_rubriques
+// http://code.spip.net/@quete_calendrier_interval_rubriques
 function quete_calendrier_interval_rubriques($avant, $apres, &$evenements) {
 
   $result=sql_select('DISTINCT R.id_rubrique, titre, descriptif, date', 'spip_rubriques AS R, spip_documents_liens AS L', "statut='publie' AND date >= $avant AND      date < $apres AND       R.id_rubrique = L.id_objet AND L.objet='rubrique'",'', "date");
@@ -117,7 +117,7 @@ function quete_calendrier_interval_rubriques($avant, $apres, &$evenements) {
        }
 }
 
-// http://doc.spip.org/@quete_calendrier_interval_breves
+// http://code.spip.net/@quete_calendrier_interval_breves
 function quete_calendrier_interval_breves($avant, $apres, &$evenements) {
   $result=sql_select("id_breve, titre, date_heure, id_rubrique", 'spip_breves',        "statut='publie' AND date_heure >= $avant AND date_heure < $apres", '', "date_heure");
        while($row=sql_fetch($result)){
@@ -133,7 +133,7 @@ function quete_calendrier_interval_breves($avant, $apres, &$evenements) {
        }
 }
 
-// http://doc.spip.org/@quete_calendrier_interval_rv
+// http://code.spip.net/@quete_calendrier_interval_rv
 function quete_calendrier_interval_rv($avant, $apres) {
        include_spip('inc/session');
        $connect_id_auteur = session_get('id_auteur');
@@ -201,7 +201,7 @@ function quete_calendrier_interval_rv($avant, $apres) {
   return $evenements;
 }
 
-// http://doc.spip.org/@quete_calendrier_agenda
+// http://code.spip.net/@quete_calendrier_agenda
 function quete_calendrier_agenda ($annee, $mois) {
        include_spip('inc/session');
        $connect_id_auteur = session_get('id_auteur');
index e0c0461..97dac23 100644 (file)
@@ -30,6 +30,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'icone_ecrire_nouvelle_annonce' => 'Envoyer une nouvelle annonce',
        'icone_effacer_message' => 'Effacer ce message',
        'icone_modifier_annonce' => 'Modifier cette annonce',
+       'icone_modifier_message' => 'Modifier ce message',
        'icone_modifier_pensebete' => 'Modifier ce pense-bête',
        'icone_supprimer_message' => 'Supprimer ce message',
        'info_1_message_envoye' => '1 message envoyé',
index ad8f380..8e3569e 100644 (file)
@@ -26,7 +26,7 @@ function organiseur_upgrade($nom_meta_base_version,$version_cible){
        if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
                $trouver_table = charger_fonction('trouver_table','base');
                if ($desc = $trouver_table('spip_messages')
-                 AND isset($desc['exist'])){
+                 AND isset($desc['exist']) AND $desc['exist']){
                        ecrire_meta($nom_meta_base_version,'1.0.0');
                }
                // si pas de table en base, on fera une simple creation de base
index d38253c..15eaeb6 100644 (file)
@@ -152,7 +152,7 @@ function organiseur_icone_message($type,$taille=24){
 }
 function organiseur_texte_modifier_message($type){
        $texte = array('pb'=>'organiseur:icone_modifier_pensebete','affich'=>'organiseur:icone_modifier_annonce');
-       $texte = isset($texte[$type])?$texte[$type]:'icone_modifier_message';
+       $texte = isset($texte[$type])?$texte[$type]:'organiseur:icone_modifier_message';
        return _T($texte);
 }
 function organiseur_texte_nouveau_message($type){
@@ -160,4 +160,4 @@ function organiseur_texte_nouveau_message($type){
        $texte = isset($texte[$type])?$texte[$type]:'organiseur:icone_ecrire_nouveau_message';
        return _T($texte);
 }
-?>
\ No newline at end of file
+?>
index b5c12c9..2698358 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="organiseur"
        categorie="date"
-       version="0.8.10"
+       version="0.8.11"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="prive/themes/spip/images/calendrier-32.png"
index 2d18d37..02ceeb4 100644 (file)
@@ -195,7 +195,7 @@ function petition_instituer($id_petition, $c) {
        return ''; // pas d'erreur
 }
 
-// http://doc.spip.org/@revision_petition
+// http://code.spip.net/@revision_petition
 function revision_petition($id_petition, $c=null) {
        return petition_modifier($id_petition,$c);
 }
index f14adf8..4e9f679 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_editer_signature_dist
+// http://code.spip.net/@action_editer_signature_dist
 function action_editer_signature_dist($arg=null) {
 
        if (is_null($arg)){
@@ -117,7 +117,7 @@ function signature_inserer($id_petition) {
 
 // $c est un array ('statut', 'id_petition' = changement de petition)
 // il n'est pas autoriser de deplacer une signature
-// http://doc.spip.org/@signature_instituer
+// http://code.spip.net/@signature_instituer
 function signature_instituer($id_signature, $c, $calcul_rub=true) {
 
        include_spip('inc/autoriser');
@@ -205,7 +205,7 @@ function signature_instituer($id_signature, $c, $calcul_rub=true) {
  * En cas d'acces concurrents il y aura des requetes de retraits d'elements
  * deja detruits. Bizarre ?  C'est mieux que de bloquer!
  *
- * http://doc.spip.org/@signature_entrop
+ * http://code.spip.net/@signature_entrop
  *
  * @param string $where
  * @return array
index 916ad3a..f38b8f6 100644 (file)
@@ -24,13 +24,13 @@ include_spip('base/abstract_sql');
 // car on doit obtenir la jointure avec la table des petitions pour verifier 
 // si une petition est attachee a l'article.
 
-// http://doc.spip.org/@balise_FORMULAIRE_SIGNATURE
+// http://code.spip.net/@balise_FORMULAIRE_SIGNATURE
 function balise_FORMULAIRE_SIGNATURE ($p) {
        return calculer_balise_dynamique($p,'FORMULAIRE_SIGNATURE', array('id_article','petition'));
 }
 
 // Verification des arguments (contexte + filtres)
-// http://doc.spip.org/@balise_FORMULAIRE_SIGNATURE_stat
+// http://code.spip.net/@balise_FORMULAIRE_SIGNATURE_stat
 function balise_FORMULAIRE_SIGNATURE_stat($args, $context_compil) {
 
        // pas d'id_article => erreur de contexte
index 1203bcf..e58aa22 100644 (file)
@@ -140,7 +140,7 @@ function formulaires_signature_traiter_dist($id_article) {
 // les controles devraient mantenant etre faits dans formulaires_signature_verifier()
 // 
 
-// http://doc.spip.org/@inc_controler_signature_dist
+// http://code.spip.net/@inc_controler_signature_dist
 function inc_controler_signature_dist($id_article, $nom, $mail, $message, $site, $url_site, $url_page) {
 
        // tout le monde est la.
@@ -171,7 +171,7 @@ function inc_controler_signature_dist($id_article, $nom, $mail, $message, $site,
        return $ret;
 }
 
-// http://doc.spip.org/@signature_a_confirmer
+// http://code.spip.net/@signature_a_confirmer
 function signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url, $msg, $lang, &$statut)
 {
        include_spip('inc/texte');
@@ -245,7 +245,7 @@ function signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url,
 
 // Creer un mot de passe aleatoire et verifier qu'il est unique
 // dans la table des signatures
-// http://doc.spip.org/@signature_test_pass
+// http://code.spip.net/@signature_test_pass
 function signature_test_pass() {
        include_spip('inc/acces');
        do {
index 8e32483..c0aacf1 100644 (file)
@@ -18,7 +18,7 @@ function petitions_autoriser() {}
 // Moderer la petition ?
 // = modifier l'article correspondant
 // = droits par defaut sinon (admin complet pour moderation de tout)
-// http://doc.spip.org/@autoriser_modererpetition_dist
+// http://code.spip.net/@autoriser_modererpetition_dist
 function autoriser_modererpetition_dist($faire, $type, $id, $qui, $opt) {
        return
                autoriser('modifier', $type, $id, $qui, $opt);
@@ -55,7 +55,7 @@ function autoriser_signature_relancer($faire, $type, $id, $qui, $opt) {
 
 // Modifier une signature ?
 // = jamais !
-// http://doc.spip.org/@autoriser_signature_modifier_dist
+// http://code.spip.net/@autoriser_signature_modifier_dist
 function autoriser_signature_modifier_dist($faire, $type, $id, $qui, $opt) {
        return
                false;
index a3a9356..b18b37e 100644 (file)
@@ -18,7 +18,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
  * le texte de celle-ci sinon (et ' ' si il est vide)
  * cf FORMULAIRE_PETITION
  *
- * http://doc.spip.org/@balise_PETITION_dist
+ * http://code.spip.net/@balise_PETITION_dist
  *
  * @param $p
  * @return
index bda2199..77b84cc 100644 (file)
@@ -5,7 +5,7 @@
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="images/porte-plume-32.png"
-       documentation="http://www.spip-contrib.net/Porte-plume,3117"
+       documentation="http://contrib.spip.net/Porte-plume,3117"
 >      
 
        <nom>Porte plume</nom>
@@ -30,4 +30,4 @@
        <pipeline nom="affiche_milieu" inclure="porte_plume_pipelines.php" />
        <pipeline nom="configurer_liste_metas" inclure="porte_plume_pipelines.php" />
        <pipeline nom="ieconfig_metas" inclure="porte_plume_ieconfig.php" />
-</paquet>
+</paquet>
\ No newline at end of file
index eff74c9..91a0522 100644 (file)
@@ -45,7 +45,7 @@ function afficher_diff_champ_dist($champ,$old,$new,$format='diff'){
 
 
 /**
- * http://doc.spip.org/@afficher_para_modifies
+ * http://code.spip.net/@afficher_para_modifies
  *
  * @param string $texte
  * @param bool $court
index cb6946e..941d1d9 100644 (file)
@@ -19,7 +19,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 // Version ultra-simplifiee : chaque chaine est une permutation de l'autre 
 // et on passe en parametre un des deux tableaux de correspondances
-// http://doc.spip.org/@lcs_opt
+// http://code.spip.net/@lcs_opt
 function lcs_opt($s) {
        $n = count($s);
        if (!$n) return array();
@@ -51,7 +51,7 @@ function lcs_opt($s) {
 
 // Version normale : les deux chaines n'ont pas ete traitees au prealable
 // par la fonction d'appariement
-// http://doc.spip.org/@lcs
+// http://code.spip.net/@lcs
 function lcs($s, $t) {
        $n = count($s);
        $p = count($t);
@@ -102,18 +102,18 @@ function lcs($s, $t) {
 // Generation de diff a plusieurs etages
 //
 
-// http://doc.spip.org/@Diff
+// http://code.spip.net/@Diff
 class Diff {
        var $diff;
        var $fuzzy;
 
-// http://doc.spip.org/@Diff
+// http://code.spip.net/@Diff
        function Diff($diff) {
                $this->diff = $diff;
                $this->fuzzy = true;
        }
 
-// http://doc.spip.org/@comparer
+// http://code.spip.net/@comparer
        function comparer($new, $old) {
                $paras = $this->diff->segmenter($new);
                $paras_old = $this->diff->segmenter($old);
@@ -186,78 +186,78 @@ class Diff {
        }
 }
 
-// http://doc.spip.org/@DiffTexte
+// http://code.spip.net/@DiffTexte
 class DiffTexte {
        var $r;
 
-// http://doc.spip.org/@DiffTexte
+// http://code.spip.net/@DiffTexte
        function DiffTexte() {
                $this->r = "";
        }
 
-// http://doc.spip.org/@_diff
+// http://code.spip.net/@_diff
        function _diff($p, $p_old) {
                $diff = new Diff(new DiffPara);
                return $diff->comparer($p, $p_old);
        }
 
-// http://doc.spip.org/@fuzzy
+// http://code.spip.net/@fuzzy
        function fuzzy() {
                return true;
        }
-// http://doc.spip.org/@segmenter
+// http://code.spip.net/@segmenter
        function segmenter($texte) {
                return separer_paras($texte);
        }
 
        // NB :  rem=\"diff-\" est un signal pour la fonction "afficher_para_modifies"
-// http://doc.spip.org/@ajouter
+// http://code.spip.net/@ajouter
        function ajouter($p) {
                $p = trim($p);
                $this->r .= "\n\n\n<span class=\"diff-para-ajoute\" title=\""._T('revisions:diff_para_ajoute')."\">".$p."</span rem=\"diff-\">";
        }
-// http://doc.spip.org/@supprimer
+// http://code.spip.net/@supprimer
        function supprimer($p_old) {
                $p_old = trim($p_old);
                $this->r .= "\n\n\n<span class=\"diff-para-supprime\" title=\""._T('revisions:diff_para_supprime')."\">".$p_old."</span rem=\"diff-\">";
        }
-// http://doc.spip.org/@deplacer
+// http://code.spip.net/@deplacer
        function deplacer($p, $p_old) {
                $this->r .= "\n\n\n<span class=\"diff-para-deplace\" title=\""._T('revisions:diff_para_deplace')."\">";
                $this->r .= trim($this->_diff($p, $p_old));
                $this->r .= "</span rem=\"diff-\">";
        }
-// http://doc.spip.org/@comparer
+// http://code.spip.net/@comparer
        function comparer($p, $p_old) {
                $this->r .= "\n\n\n".$this->_diff($p, $p_old);
        }
        
-// http://doc.spip.org/@resultat
+// http://code.spip.net/@resultat
        function resultat() {
                return $this->r;
        }
 }
 
-// http://doc.spip.org/@DiffPara
+// http://code.spip.net/@DiffPara
 class DiffPara {
        var $r;
 
-// http://doc.spip.org/@DiffPara
+// http://code.spip.net/@DiffPara
        function DiffPara() {
                $this->r = "";
        }
 
-// http://doc.spip.org/@_diff
+// http://code.spip.net/@_diff
        function _diff($p, $p_old) {
                $diff = new Diff(new DiffPhrase);
                return $diff->comparer($p, $p_old);
        }
 
-// http://doc.spip.org/@fuzzy
+// http://code.spip.net/@fuzzy
        function fuzzy() {
                return true;
        }
-// http://doc.spip.org/@segmenter
+// http://code.spip.net/@segmenter
        function segmenter($texte) {
                $paras = array();
                $texte = trim($texte);
@@ -270,43 +270,43 @@ class DiffPara {
                return $paras;
        }
 
-// http://doc.spip.org/@ajouter
+// http://code.spip.net/@ajouter
        function ajouter($p) {
                $this->r .= "<span class=\"diff-ajoute\" title=\""._T('revisions:diff_texte_ajoute')."\">".$p."</span rem=\"diff-\">";
        }
-// http://doc.spip.org/@supprimer
+// http://code.spip.net/@supprimer
        function supprimer($p_old) {
                $this->r .= "<span class=\"diff-supprime\" title=\""._T('revisions:diff_texte_supprime')."\">".$p_old."</span rem=\"diff-\">";
        }
-// http://doc.spip.org/@deplacer
+// http://code.spip.net/@deplacer
        function deplacer($p, $p_old) {
                $this->r .= "<span class=\"diff-deplace\" title=\""._T('revisions:diff_texte_deplace')."\">".$this->_diff($p, $p_old)."</span rem=\"diff-\">";
        }
-// http://doc.spip.org/@comparer
+// http://code.spip.net/@comparer
        function comparer($p, $p_old) {
                $this->r .= $this->_diff($p, $p_old);
        }
        
-// http://doc.spip.org/@resultat
+// http://code.spip.net/@resultat
        function resultat() {
                return $this->r;
        }
 }
 
-// http://doc.spip.org/@DiffPhrase
+// http://code.spip.net/@DiffPhrase
 class DiffPhrase {
        var $r;
 
-// http://doc.spip.org/@DiffPhrase
+// http://code.spip.net/@DiffPhrase
        function DiffPhrase() {
                $this->r = "";
        }
 
-// http://doc.spip.org/@fuzzy
+// http://code.spip.net/@fuzzy
        function fuzzy() {
                return false;
        }
-// http://doc.spip.org/@segmenter
+// http://code.spip.net/@segmenter
        function segmenter($texte) {
                $paras = array();
                if (test_pcre_unicode()) {
@@ -364,27 +364,27 @@ class DiffPhrase {
                return $paras;
        }
 
-// http://doc.spip.org/@ajouter
+// http://code.spip.net/@ajouter
        function ajouter($p) {
                $this->r .= "<span class=\"diff-ajoute\" title=\""._T('revisions:diff_texte_ajoute')."\">".$p."</span rem=\"diff-\"> ";
        }
-// http://doc.spip.org/@supprimer
+// http://code.spip.net/@supprimer
        function supprimer($p_old) {
                $this->r .= "<span class=\"diff-supprime\" title=\""._T('revisions:diff_texte_supprime')."\">".$p_old."</span rem=\"diff-\"> ";
        }
-// http://doc.spip.org/@comparer
+// http://code.spip.net/@comparer
        function comparer($p, $p_old) {
                $this->r .= $p;
        }
 
-// http://doc.spip.org/@resultat
+// http://code.spip.net/@resultat
        function resultat() {
                return $this->r;
        }
 }
 
 
-// http://doc.spip.org/@preparer_diff
+// http://code.spip.net/@preparer_diff
 function preparer_diff($texte) {
        include_spip('inc/charsets');
 
@@ -394,7 +394,7 @@ function preparer_diff($texte) {
        return unicode_to_utf_8(html2unicode(charset2unicode($texte, $charset, true)));
 }
 
-// http://doc.spip.org/@afficher_diff
+// http://code.spip.net/@afficher_diff
 function afficher_diff($texte) {
        $charset = $GLOBALS['meta']['charset'];
        if ($charset == 'utf-8') return $texte;
index 16d6f86..c4205e0 100644 (file)
@@ -22,7 +22,7 @@ $GLOBALS['agregation_versions'] = 10;
 /** Intervalle de temps (en seconde) separant deux révisions par un même auteur */
 define('_INTERVALLE_REVISIONS', 600); 
 
-// http://doc.spip.org/@separer_paras
+// http://code.spip.net/@separer_paras
 function separer_paras($texte, $paras = "") {
        if (!$paras) $paras = array();
        while (preg_match("/(\r\n?){2,}|\n{2,}/", $texte, $regs)) {
@@ -34,7 +34,7 @@ function separer_paras($texte, $paras = "") {
        return $paras;
 }
 
-// http://doc.spip.org/@replace_fragment
+// http://code.spip.net/@replace_fragment
 function replace_fragment($id_objet,$objet, $version_min, $version_max, $id_fragment, $fragment) {
        $fragment = serialize($fragment);
        $compress = 0;
@@ -62,7 +62,7 @@ function replace_fragment($id_objet,$objet, $version_min, $version_max, $id_frag
                     'fragment' => $fragment);
 }
 
-// http://doc.spip.org/@envoi_replace_fragments
+// http://code.spip.net/@envoi_replace_fragments
 function envoi_replace_fragments($replaces) {
        $desc = $GLOBALS['tables_auxiliaires']['spip_versions_fragments'];
        foreach($replaces as $r)
@@ -70,7 +70,7 @@ function envoi_replace_fragments($replaces) {
 }
 
 
-// http://doc.spip.org/@envoi_delete_fragments
+// http://code.spip.net/@envoi_delete_fragments
 function envoi_delete_fragments($id_objet,$objet, $deletes) {
        if (count($deletes)) {
                sql_delete("spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND ((".  join(") OR (", $deletes)."))");
@@ -81,7 +81,7 @@ function envoi_delete_fragments($id_objet,$objet, $deletes) {
 //
 // Ajouter les fragments de la derniere version (tableau associatif id_fragment => texte)
 //
-// http://doc.spip.org/@ajouter_fragments
+// http://code.spip.net/@ajouter_fragments
 function ajouter_fragments($id_objet,$objet, $id_version, $fragments) {
        global $agregation_versions;
 
@@ -130,7 +130,7 @@ function ajouter_fragments($id_objet,$objet, $id_version, $fragments) {
 // Supprimer tous les fragments d'un objet lies a un intervalle de versions
 // (essaie d'eviter une trop grande fragmentation)
 //
-// http://doc.spip.org/@supprimer_fragments
+// http://code.spip.net/@supprimer_fragments
 function supprimer_fragments($id_objet,$objet, $version_debut, $version_fin) {
        global $agregation_versions;
 
@@ -243,7 +243,7 @@ function supprimer_fragments($id_objet,$objet, $version_debut, $version_fin) {
 // Recuperer les fragments d'une version donnee
 // renvoie un tableau associatif (id_fragment => texte)
 //
-// http://doc.spip.org/@recuperer_fragments
+// http://code.spip.net/@recuperer_fragments
 function recuperer_fragments($id_objet,$objet, $id_version) {
        $fragments = array();
 
@@ -293,7 +293,7 @@ function recuperer_fragments($id_objet,$objet, $id_version) {
 // Apparier des paragraphes deux a deux entre une version originale
 // et une version modifiee
 //
-// http://doc.spip.org/@apparier_paras
+// http://code.spip.net/@apparier_paras
 function apparier_paras($src, $dest, $flou = true) {
        $src_dest = array();
        $dest_src = array();
@@ -369,7 +369,7 @@ function apparier_paras($src, $dest, $flou = true) {
 //
 // Recuperer les champs d'une version donnee
 //
-// http://doc.spip.org/@recuperer_version
+// http://code.spip.net/@recuperer_version
 function recuperer_version($id_objet,$objet, $id_version) {
 
        $champs = sql_getfetsel("champs", "spip_versions", "id_objet=" . intval($id_objet) . " AND objet=".sql_quote($objet)." AND id_version=" . intval($id_version));
@@ -379,7 +379,7 @@ function recuperer_version($id_objet,$objet, $id_version) {
                         recuperer_fragments($id_objet,$objet, $id_version));
 }
 
-// http://doc.spip.org/@reconstuire_version
+// http://code.spip.net/@reconstuire_version
 function reconstuire_version($champs, $fragments, $res=array()) {
 
        static $msg;
@@ -399,7 +399,7 @@ function reconstuire_version($champs, $fragments, $res=array()) {
        return $res;
 }
 
-// http://doc.spip.org/@supprimer_versions
+// http://code.spip.net/@supprimer_versions
 function supprimer_versions($id_objet,$objet, $version_min, $version_max) {
        sql_delete("spip_versions", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version>=$version_min AND id_version<=$version_max");
 
@@ -409,7 +409,7 @@ function supprimer_versions($id_objet,$objet, $version_min, $version_max) {
 //
 // Ajouter une version a un objet
 //
-// http://doc.spip.org/@ajouter_version
+// http://code.spip.net/@ajouter_version
 function ajouter_version($id_objet,$objet, $champs, $titre_version = "", $id_auteur) {
        $paras = $paras_old = $paras_champ = $fragments = array();
 
@@ -451,7 +451,7 @@ function ajouter_version($id_objet,$objet, $champs, $titre_version = "", $id_aut
        // 4. enregistrer une autre modif dans les 15 secondes
 #        sleep(15);
        $delai = $sec-10;
-       while (sql_countsel('spip_versions', "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version < 0 AND 0.0+titre_version < $date AND 0.0+titre_version > $delai")) {
+       while (sql_countsel('spip_versions', "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version < 0 AND 0.0+titre_version < $date AND titre_version<>".sql_quote($date,'','text')." AND 0.0+titre_version > $delai")) {
                spip_log("version $objet $id_objet :insertion en cours avant $date ($delai)");
                sleep(1);
                $delai++;
@@ -547,7 +547,7 @@ function ajouter_version($id_objet,$objet, $champs, $titre_version = "", $id_aut
 
 // les textes "diff" ne peuvent pas passer dans propre directement,
 // car ils contiennent des <span> et <div> parfois mal places
-// http://doc.spip.org/@propre_diff
+// http://code.spip.net/@propre_diff
 function propre_diff($texte) {
 
        $span_diff = array();
index 19f24b6..5fe0d59 100644 (file)
@@ -84,7 +84,7 @@ function retrouver_champ_version_objet($objet,$id_objet,$id_version,$champ,&$cha
  *    - apercu => idem, mais en plus tres cout s'il y en a bcp
  *    - complet => tout, avec surlignage des modifications (page revision)
  *
- * http://doc.spip.org/@revision_comparee
+ * http://code.spip.net/@revision_comparee
  *
  * @param int $id_objet
  * @param string $objet
index 69b71ba..4e3542c 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="revisions"
        categorie="edition"
-       version="1.7.8"
+       version="1.7.9"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="prive/themes/spip/images/revision-32.png"
index 20e7438..a740db6 100644 (file)
@@ -32,7 +32,7 @@ function revisions_upgrade($nom_meta_base_version,$version_cible){
        if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
                $trouver_table = charger_fonction('trouver_table','base');
                if ($desc = $trouver_table('spip_versions')
-                 AND isset($desc['exist'])){
+                 AND isset($desc['exist']) AND $desc['exist']){
                        ecrire_meta($nom_meta_base_version,'1.0.0');
                }
                // si pas de table en base, on fera une simple creation de base
index ad634e2..1a3938b 100644 (file)
@@ -15,7 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 // Controle la presence de la lib safehtml et cree la fonction
 // de transformation du texte qui l'exploite
-// http://doc.spip.org/@inc_safehtml_dist
+// http://code.spip.net/@inc_safehtml_dist
 function inc_safehtml_dist($t) {
        static $process, $test;
 
index 192e0f6..8098114 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_editer_site_dist
+// http://code.spip.net/@action_editer_site_dist
 function action_editer_site_dist($arg=null) {
 
        if (is_null($arg)){
@@ -42,7 +42,7 @@ function action_editer_site_dist($arg=null) {
 /**
  * Inserer un nouveau site en base
  *
- * http://doc.spip.org/@insert_syndic
+ * http://code.spip.net/@insert_syndic
  *
  * @param  $id_rubrique
  * @return bool
@@ -164,7 +164,7 @@ function insert_syndic($id_rubrique) {
 function syndic_set($id_syndic, $set=false) {
        return site_modifier($id_syndic,$set);
 }
-// http://doc.spip.org/@revisions_sites
+// http://code.spip.net/@revisions_sites
 function revisions_sites($id_syndic, $set=false){
        return site_modifier($id_syndic,$set);
 }
index 251e088..364b54e 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_instituer_syndic_article_dist
+// http://code.spip.net/@action_instituer_syndic_article_dist
 function action_instituer_syndic_article_dist() {
 
        $securiser_action = charger_fonction('securiser_action', 'inc');
index 18c8f53..fcaca81 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_editer_site_dist
+// http://code.spip.net/@action_editer_site_dist
 function action_syndiquer_site_dist($id_syndic=null) {
 
        if (is_null($id_syndic)){
index 3380786..71f9cf8 100644 (file)
@@ -15,12 +15,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return;        #securite
 // Le contexte indique dans quelle rubrique le visiteur peut proposer le site
 
 
-// http://doc.spip.org/@balise_FORMULAIRE_SITE
+// http://code.spip.net/@balise_FORMULAIRE_SITE
 function balise_FORMULAIRE_SITE ($p) {
   return calculer_balise_dynamique($p,'FORMULAIRE_SITE', array('id_rubrique'));
 }
 
-// http://doc.spip.org/@balise_FORMULAIRE_SITE_stat
+// http://code.spip.net/@balise_FORMULAIRE_SITE_stat
 function balise_FORMULAIRE_SITE_stat($args, $context_compil) {
 
        // Pas d'id_rubrique ? Erreur de contexte
index 41d346b..17f7789 100644 (file)
@@ -21,7 +21,7 @@ if (!defined('_PERIODE_SYNDICATION_SUSPENDUE'))
        define('_PERIODE_SYNDICATION_SUSPENDUE', 24*60);
 
 
-// http://doc.spip.org/@genie_syndic_dist
+// http://code.spip.net/@genie_syndic_dist
 function genie_syndic_dist($t) {
        return executer_une_syndication();
 }
@@ -31,7 +31,7 @@ function genie_syndic_dist($t) {
 // retourne 0 si aucun a faire ou echec lors de la tentative
 //
 
-// http://doc.spip.org/@executer_une_syndication
+// http://code.spip.net/@executer_une_syndication
 function executer_une_syndication() {
 
        // On va tenter un site 'sus' ou 'off' de plus de 24h, et le passer en 'off'
@@ -64,7 +64,7 @@ function executer_une_syndication() {
  * sur un meme site: un verrouillage a du etre pose en amont.
  * => elle doit toujours etre appelee par job_queue_add
  *
- * http://doc.spip.org/@syndic_a_jour
+ * http://code.spip.net/@syndic_a_jour
  *
  * @param int $now_id_syndic
  * @return bool|string
@@ -141,7 +141,7 @@ function syndic_a_jour($now_id_syndic) {
 // en  verifiant qu'on ne vient pas de l'ecrire avec
 // un autre item du meme feed qui aurait le meme link
 //
-// http://doc.spip.org/@inserer_article_syndique
+// http://code.spip.net/@inserer_article_syndique
 function inserer_article_syndique ($data, $now_id_syndic, $statut, $url_site, $url_syndic, $resume, $documents, &$faits) {
        // Creer le lien s'il est nouveau - cle=(id_syndic,url)
        // On coupe a 255 caracteres pour eviter tout doublon
index eea21e2..85763aa 100644 (file)
@@ -185,7 +185,7 @@ print_r (get_feed_from_url("http://willy.boerland.com/myblog/"));
 *****************************    Resultat *****************************************
 Array
 (
-    [0] => http://www.spip-contrib.net/backend.php
+    [0] => http://contrib.spip.net/backend.php
 )
 Array
 (
index e7d26a7..66775d3 100644 (file)
@@ -13,7 +13,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 
-// http://doc.spip.org/@analyser_site
+// http://code.spip.net/@analyser_site
 function analyser_site($url) {
        include_spip('inc/filtres');
        include_spip('inc/distant');
index 3f9c6bf..8b0ac69 100644 (file)
@@ -21,7 +21,7 @@ include_spip('genie/syndic');
 
 // prend un fichier backend et retourne un tableau des items lus,
 // et une chaine en cas d'erreur
-// http://doc.spip.org/@analyser_backend
+// http://code.spip.net/@analyser_backend
 function analyser_backend($rss, $url_syndic='') {
        include_spip('inc/texte'); # pour couper()
 
@@ -290,7 +290,7 @@ function analyser_backend($rss, $url_syndic='') {
 
 // helas strtotime ne reconnait pas le format W3C
 // http://www.w3.org/TR/NOTE-datetime
-// http://doc.spip.org/@my_strtotime
+// http://code.spip.net/@my_strtotime
 function my_strtotime($la_date, $lang=null) {
        // format complet
        if (preg_match(
@@ -356,7 +356,7 @@ function my_strtotime($la_date, $lang=null) {
 }
 // A partir d'un <dc:subject> ou autre essayer de recuperer
 // le mot et son url ; on cree <a href="url" rel="tag">mot</a>
-// http://doc.spip.org/@creer_tag
+// http://code.spip.net/@creer_tag
 function creer_tag($mot,$type,$url) {
        if (!strlen($mot = trim($mot))) return '';
        $mot = "<a rel=\"tag\">$mot</a>";
@@ -368,7 +368,7 @@ function creer_tag($mot,$type,$url) {
 }
 
 
-// http://doc.spip.org/@ajouter_tags
+// http://code.spip.net/@ajouter_tags
 function ajouter_tags($matches, $item) {
        include_spip('inc/filtres');
        $tags = array();
@@ -430,7 +430,7 @@ function ajouter_tags($matches, $item) {
 
 
 // Lit contenu des blocs [[CDATA]] dans un flux
-// http://doc.spip.org/@cdata_echappe_retour
+// http://code.spip.net/@cdata_echappe_retour
 function cdata_echappe(&$rss, &$echappe_cdata) {
        $echappe_cdata = array();
        if (preg_match_all(',<!\[CDATA\[(.*)]]>,Uims', $rss,
@@ -446,7 +446,7 @@ function cdata_echappe(&$rss, &$echappe_cdata) {
 }
 
 // Retablit le contenu des blocs [[CDATA]] dans une chaine ou un tableau
-// http://doc.spip.org/@cdata_echappe_retour
+// http://code.spip.net/@cdata_echappe_retour
 function cdata_echappe_retour(&$x, &$echappe_cdata) {
        if (is_string($x)) {
                if (strpos($x, '@@@SPIP_CDATA') !== false
index ff3a029..b62a2d3 100644 (file)
@@ -13,7 +13,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 
-// http://doc.spip.org/@puce_statut_site_dist
+// http://code.spip.net/@puce_statut_site_dist
 function puce_statut_site_dist($id, $statut, $id_rubrique, $type, $ajax='', $menu_rapide=_ACTIVER_PUCE_RAPIDE){
 
        $t = sql_getfetsel("syndication", "spip_syndic", "id_syndic=".intval($id));
index ead2bbe..7186378 100644 (file)
@@ -26,7 +26,7 @@ function sites_upgrade($nom_meta_base_version,$version_cible){
        if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
                $trouver_table = charger_fonction('trouver_table','base');
                if ($desc = $trouver_table('spip_syndic')
-                 AND isset($desc['exist'])){
+                 AND isset($desc['exist']) AND $desc['exist']){
                        ecrire_meta($nom_meta_base_version,'1.0.0');
                }
                // si pas de table en base, on fera une simple creation de base
index 31827a6..83a775e 100644 (file)
@@ -35,7 +35,7 @@ function autoriser_sitecreer_menu_dist($faire, $type, $id, $qui, $opt){
 // Moderer la syndication ?
 // = modifier l'objet correspondant (si forum attache a un objet)
 // = droits par defaut sinon (admin complet pour moderation complete)
-// http://doc.spip.org/@autoriser_modererforum_dist
+// http://code.spip.net/@autoriser_modererforum_dist
 function autoriser_site_moderer_dist($faire, $type, $id, $qui, $opt) {
        return
                autoriser('modifier', 'site', $id, $qui, $opt);
@@ -62,7 +62,7 @@ function autoriser_site_creer_dist($faire, $type, $id, $qui, $opt){
 }
 
 // Autoriser a creer un site dans la rubrique $id
-// http://doc.spip.org/@autoriser_rubrique_creersitedans_dist
+// http://code.spip.net/@autoriser_rubrique_creersitedans_dist
 function autoriser_rubrique_creersitedans_dist($faire, $type, $id, $qui, $opt) {
        return
                $id
@@ -76,7 +76,7 @@ function autoriser_rubrique_creersitedans_dist($faire, $type, $id, $qui, $opt) {
 
 
 // Autoriser a modifier un site
-// http://doc.spip.org/@autoriser_site_modifier_dist
+// http://code.spip.net/@autoriser_site_modifier_dist
 function autoriser_site_modifier_dist($faire, $type, $id, $qui, $opt) {
        if ($qui['statut'] == '0minirezo' AND !$qui['restreint'])
                return true;
@@ -91,7 +91,7 @@ function autoriser_site_modifier_dist($faire, $type, $id, $qui, $opt) {
        );
 }
 // Autoriser a voir un site $id_syndic
-// http://doc.spip.org/@autoriser_site_voir_dist
+// http://code.spip.net/@autoriser_site_voir_dist
 function autoriser_site_voir_dist($faire, $type, $id, $qui, $opt) {
        return autoriser_site_modifier_dist($faire, $type, $id, $qui, $opt);
 }
index 8a789b1..88b6226 100644 (file)
@@ -352,6 +352,14 @@ q=
 q=
 (.*\.|)ecosia\.org
 
+[Wow]
+q=
+(.*\.|)wow\.com
+
+[Accentice]
+q=
+(.*\.|)accentice\.com
+
 #
 # Services de mail
 # 
@@ -365,4 +373,4 @@ courrielweb\.cmaisonneuve\.qc\.ca
 webmail([0-9]*)\.wanadoo\.fr
 www\.laposte\.net
 mail([0-9]*)\.voila\.fr
-\/(web)?mail\/
\ No newline at end of file
+\/(web)?mail\/
index ae49798..63f3199 100644 (file)
@@ -32,7 +32,7 @@ function genie_popularite_constantes($duree){
        return array($a,$b);
 }
 
-// http://doc.spip.org/@genie_popularites_dist
+// http://code.spip.net/@genie_popularites_dist
 function genie_popularites_dist($t) {
 
        // Si c'est le premier appel, ne pas calculer
index 6e86451..7f2618a 100644 (file)
@@ -20,7 +20,7 @@ if (!defined('_CRON_LOT_FICHIERS_VISITE')) define('_CRON_LOT_FICHIERS_VISITE', 1
 //
 // prendre en compte un fichier de visite
 //
-// http://doc.spip.org/@compte_fichier_visite
+// http://code.spip.net/@compte_fichier_visite
 function compte_fichier_visite($fichier, &$visites, &$visites_a, &$referers, &$referers_a) {
 
        // Noter la visite du site (article 0)
@@ -50,7 +50,7 @@ function compte_fichier_visite($fichier, &$visites, &$visites_a, &$referers, &$r
 }
 
 
-// http://doc.spip.org/@calculer_visites
+// http://code.spip.net/@calculer_visites
 function calculer_visites($t) {
        include_spip('base/abstract_sql');
 
@@ -210,7 +210,7 @@ function calculer_visites($t) {
 //
 // Calcule les stats en plusieurs etapes
 //
-// http://doc.spip.org/@genie_visites_dist
+// http://code.spip.net/@genie_visites_dist
 function genie_visites_dist($t) {
        $encore = calculer_visites($t);
 
index 11e9ea8..d9497e8 100644 (file)
@@ -17,7 +17,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
  * Adaptees du code des "Visiteurs",
  * par Jean-Paul Dezelus (http://www.phpinfo.net/applis/visiteurs/)
  *
- * http://doc.spip.org/@stats_load_engines
+ * http://code.spip.net/@stats_load_engines
  *
  * @return array
  */
@@ -43,7 +43,7 @@ function stats_load_engines(){
  * Adaptees du code des "Visiteurs",
  * par Jean-Paul Dezelus (http://www.phpinfo.net/applis/visiteurs/)
  *
- * http://doc.spip.org/@stats_show_keywords
+ * http://code.spip.net/@stats_show_keywords
  *
  * @param string $kw_referer
  * @return array
@@ -143,7 +143,7 @@ function stats_show_keywords($kw_referer){
 
 /**
  * Recherche des articles pointes par le referer
- * http://doc.spip.org/@referes
+ * http://code.spip.net/@referes
  *
  * @param  $referermd5
  * @param string $serveur
index 0f36641..fab7ffa 100644 (file)
@@ -38,7 +38,7 @@ function moyenne_glissante($valeur = false, $glisse=0) {
 /**
  * Calculer la moyenne d'un tableau de valeurs
  *
- * http://doc.spip.org/@statistiques_moyenne
+ * http://code.spip.net/@statistiques_moyenne
  *
  * @param array $tab
  * @return float
index 83df512..8959bae 100644 (file)
@@ -1,9 +1,9 @@
 <paquet
        prefix="stats"
        categorie="statistique"
-       version="0.4.23"
+       version="0.4.27"
        etat="stable"
-       compatibilite="[3.0.0;3.0.*]"
+       compatibilite="[3.0.0;3.1.*]"
        logo="prive/themes/spip/images/statistique-32.png"
        schema="1.0.0"
 >      
index 467d8c8..ea7fda5 100644 (file)
@@ -14,7 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/presentation');
 
-// http://doc.spip.org/@statistiques_lang_ok
+// http://code.spip.net/@statistiques_lang_ok
 function affiche_stats_lang($critere) {
        global $spip_lang_right;
 
index 9cb3232..bd07cf9 100644 (file)
@@ -30,7 +30,7 @@
                                                        [(#CLE|=={(email)}|oui)
                                                                #CLE
                                                        ][(#CLE|=={(email)}|non)
-                                                               <a href="[(#VALEUR{url})]" onclick="event.stopPropagation();">[(#CLE)][<span class="miniature"><img src='(#CLE|vigneter_referer)' width="120" height="90" /></span>]</a>[(#VALEUR{visites_racine}|oui)\(#VALEUR{visites_racine}\)]</h3>
+                                                               <a href="[(#VALEUR{url})]" onclick="event.stopPropagation();">[(#CLE)][<span class="miniature"><img src='(#VALEUR{url}|vigneter_referer)' width="120" height="90" /></span>]</a>[(#VALEUR{visites_racine}|oui)\(#VALEUR{visites_racine}\)]</h3>
                                                        ]
 
                                                </h3>
index e2fef2f..70effbe 100644 (file)
@@ -14,7 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/presentation');
 
-// http://doc.spip.org/@enfants
+// http://code.spip.net/@enfants
 function enfants($id_parent, $critere, &$nombre_branche, &$nombre_rub){
        $result = sql_select("id_rubrique", "spip_rubriques", "id_parent=".intval($id_parent));
 
@@ -34,7 +34,7 @@ function enfants($id_parent, $critere, &$nombre_branche, &$nombre_rub){
 }
 
 
-// http://doc.spip.org/@enfants_aff
+// http://code.spip.net/@enfants_aff
 function enfants_aff($id_parent,$decalage, $taille, $critere, $gauche=0) {
        global $spip_lang_right, $spip_lang_left;
        static $total_site=null;
index 01f6255..11a755f 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@public_stats_dist
+// http://code.spip.net/@public_stats_dist
 function public_stats_dist() {
        // $_SERVER["HTTP_REFERER"] ne fonctionne pas partout
        if (isset($_SERVER['HTTP_REFERER'])) $referer = $_SERVER['HTTP_REFERER'];
index 8a74d5c..11a15c4 100644 (file)
@@ -20,7 +20,7 @@ function stats_upgrade($nom_meta_base_version,$version_cible){
        if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
                $trouver_table = charger_fonction('trouver_table','base');
                if ($desc = $trouver_table('spip_visites')
-                 AND isset($desc['exist'])){
+                 AND isset($desc['exist']) AND $desc['exist']){
                        ecrire_meta($nom_meta_base_version,'1.0.0');
                }
                // si pas de table en base, on fera une simple creation de base
index 0528501..ec521fd 100644 (file)
@@ -15,7 +15,7 @@ function autoriser_referers_menu_dist($faire, $type='', $id=0, $qui = NULL, $opt
 
 // Lire les stats ?
 // = tous les admins
-// http://doc.spip.org/@autoriser_voirstats_dist
+// http://code.spip.net/@autoriser_voirstats_dist
 function autoriser_voirstats_dist($faire, $type, $id, $qui, $opt) {
        return (($GLOBALS['meta']["activer_statistiques"] != 'non')
                        AND ($qui['statut'] == '0minirezo'));
index 63f2633..4d9feaa 100644 (file)
@@ -11,9 +11,9 @@ function stats_affichage_entetes_final($entetes){
                // decomptage des visites, on peut forcer a oui ou non avec le header X-Spip-Visites
                // par defaut on ne compte que les pages en html (ce qui exclue les js,css et flux rss)
                $spip_compter_visites = $html?'oui':'non';
-               if (isset($page['entetes']['X-Spip-Visites'])){
+               if (isset($entetes['X-Spip-Visites'])){
                        $spip_compter_visites = in_array($entetes['X-Spip-Visites'],array('oui','non'))
-                               ?$entetes['entetes']['X-Spip-Visites']
+                               ?$entetes['X-Spip-Visites']
                                :$spip_compter_visites;
                        unset($entetes['X-Spip-Visites']);
                }
@@ -68,7 +68,7 @@ function stats_formulaire_admin($flux) {
 
 // calculer les visites et popularite d'un objet/id_objet
 // (uniquement valable pour les articles) ...
-// http://doc.spip.org/@admin_stats
+// http://code.spip.net/@admin_stats
 function admin_stats($objet, $id_objet, $var_preview)
 {
        if ($GLOBALS['meta']["activer_statistiques"] != "non" 
@@ -87,7 +87,7 @@ function admin_stats($objet, $id_objet, $var_preview)
        return false;
 }
 
-// http://doc.spip.org/@generer_url_ecrire_statistiques
+// http://code.spip.net/@generer_url_ecrire_statistiques
 function generer_url_ecrire_statistiques($id_article) {
        return generer_url_ecrire('stats_visites', "id_article=$id_article");
 }
index 29d3496..df33e50 100644 (file)
                                                <label for="etat"><:svp:label_critere_etat:></label>
                                                [<span class="erreur_message">(#ENV{erreurs}|table_valeur{etat})</span>]
                                                <select name="etat" id="etat">
-                                                       <option value="tout_etat"[ (#ENV{etat,stable}|=={tout_etat}|oui)selected="selected"]><:svp:option_etat_tout:></option>
-                                                       <option value="stable"[ (#ENV{etat,stable}|=={stable}|oui)selected="selected"]><:plugin_etat_stable|ucfirst:></option>
-                                                       <option value="test"[ (#ENV{etat,stable}|=={test}|oui)selected="selected"]><:plugin_etat_test|ucfirst:></option>
-                                                       <option value="dev"[ (#ENV{etat,stable}|=={dev}|oui)selected="selected"]><:plugin_etat_developpement|ucfirst:></option>
-                                                       <option value="experimental"[ (#ENV{etat,stable}|=={experimental}|oui)selected="selected"]><:plugin_etat_experimental|ucfirst:></option>
+                                                       <option value="tout_etat"[ (#ENV{etat,tout_etat}|=={tout_etat}|oui)selected="selected"]><:svp:option_etat_tout:></option>
+                                                       <option value="stable"[ (#ENV{etat,tout_etat}|=={stable}|oui)selected="selected"]><:plugin_etat_stable|ucfirst:></option>
+                                                       <option value="test"[ (#ENV{etat,tout_etat}|=={test}|oui)selected="selected"]><:plugin_etat_test|ucfirst:></option>
+                                                       <option value="dev"[ (#ENV{etat,tout_etat}|=={dev}|oui)selected="selected"]><:plugin_etat_developpement|ucfirst:></option>
+                                                       <option value="experimental"[ (#ENV{etat,tout_etat}|=={experimental}|oui)selected="selected"]><:plugin_etat_experimental|ucfirst:></option>
                                                </select>
                                        </li>
                                        <li class="editer_depot obligatoire[(#ENV{erreurs}|table_valeur{depot}|oui) erreur]">
index 2176e40..7c7d562 100644 (file)
@@ -11,7 +11,7 @@
 <div class="liste plugins distants">
        <ul class="liste-items">
 <BOUCLE_plugins_trouves(DATA) {source table, #GET{plugins}}>
-               <li class="item[(#VALEUR{installe}|oui) installe]"[ id="(#VALEUR{prefixe}|strtolower)-#COMPTEUR_BOUCLE-#VALEUR{score}"]>
+               <li class="item[(#VALEUR{installe}|oui) installe][(#VALEUR{etat}|=={stable}|non) nonstable]"[ id="(#VALEUR{prefixe}|strtolower)-#COMPTEUR_BOUCLE-#VALEUR{score}"]>
                [(#REM) <!-- Checkbox action multiple -->]
                [(#VALEUR{installe}|non|et{#VAL|test_plugins_auto})
                        <div class="check">
index 496997b..0955738 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="svp"
        categorie="maintenance"
-       version="0.80.19"
+       version="0.80.22"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="svp-64.png"
index 504ce17..5b72e04 100644 (file)
@@ -1,7 +1,7 @@
 <div class="details"><BOUCLE_plugins(PAQUETS plugins){tout}{id_paquet}>
        <dl class="description">
                <dd class="desc">
-                       [(#DESCRIPTION|extraire_multi|propre)]
+                       #DESCRIPTION
                        [<em class="site">
                                <a href="(#LIEN_DOC)" class="spip_out" title="<:svp:bulle_aller_documentation:>"><:en_savoir_plus:></a>
                        </em>]
index 39c391d..316124a 100644 (file)
@@ -75,6 +75,8 @@
 /* -- installe (donc actif) */
 .installe { color: #999; background: url(#CHEMIN_IMAGE{fond-installe.png}) repeat fixed 0 0 !important; }
 .installe:hover {      background-color:#F0F0F0 !important; }
+/* -- non stable (tous les états différents de stable : à confirmer si on met test aussi dans les non stables) */
+.charger_plugin .nonstable { opacity: 0.5; }
 /* -- verrouille (plugins_dist)
 .verrou { background:url(#CHEMIN_IMAGE{fond-verrou.png}) repeat fixed 0 0 #FDFDFD !important;}
 .verrou:hover {        background-color:#F0F0F0 !important; }
index e20fa26..eeb8e8e 100644 (file)
@@ -609,6 +609,53 @@ function svp_traduire_type_depot($type) {
        return $traduction;
 }
 
+
+/**
+ * Calcule l'url exacte d'un lien de démo en fonction de son écriture
+ *
+ * @param string $url_demo
+ *     URL de démonstration telle que saisie dans le paquet.xml
+ * @param boolean $url_absolue
+ *     Indique que seules les url absolues doivent être retournées par la fonction.
+ *     Tous les autres types d'url renvoient une chaine vide
+ * @return string
+ *     URL calculée en fonction de l'URL d'entrée
+**/
+function svp_calculer_url_demo($url_demo, $url_absolue=false) {
+
+       $url_calculee = '';
+    $url_demo = trim($url_demo);
+    if (strlen($url_demo) > 0) {
+        $url_elements = @parse_url($url_demo);
+        if (isset($url_elements['scheme']) AND $url_elements['scheme']) {
+            // Cas 1 : http://xxxx. C'est donc une url absolue que l'on conserve telle qu'elle.
+            $url_calculee = $url_demo;
+        }
+        else {
+            if (!$url_absolue) {
+                if (isset($url_elements['query']) AND $url_elements['query']) {
+                    // Cas 2 : ?exec=xxx ou ?page=yyy. C'est donc une url relative que l'on transforme
+                    // en url absolue privée ou publique en fonction de la query.
+                    $egal = strpos($url_elements['query'], '=');
+                    $page = substr($url_elements['query'], $egal+1, strlen($url_elements['query']) - $egal - 1);
+                    if (strpos($url_elements['query'], 'exec=') !== false) {
+                        $url_calculee = generer_url_ecrire($page);
+                    }
+                    else {
+                        $url_calculee = generer_url_public($page);
+                    }
+                }
+                elseif (isset($url_elements['path']) AND $url_elements['path']) {
+                    // Cas 3 : xxx/yyy. C'est donc une url relative que l'on transforme
+                    $url_calculee = generer_url_public($url_demo);
+                }
+            }
+        }
+       }
+
+       return $url_calculee;
+}
+
 /**
  * Critère de compatibilité avec une version précise ou une branche de SPIP.
  * 
index 7e24544..2bc6f18 100644 (file)
@@ -29,7 +29,7 @@ D&eacute;p&ocirc;t de tests
        compatibilite="[2.0.0;3.0.99]"
        logo="prive/themes/spip/images/boussole_icone-64.png"
        schema="0.1"
-       documentation="http://www.spip-contrib.net/Boussole,3688"
+       documentation="http://contrib.spip.net/Boussole,3688"
 >
 
        <nom>Boussole &#224; jojo </nom>
@@ -166,7 +166,7 @@ cc by-nc-sa 2.5
                [en]This plugin allows you to link items in a timely manner without having to use keywords of SPIP. It can be used to set up links such as "See also".
                </multi>
        </description>
-       <lien>http://www.spip-contrib.net/a2a</lien>
+       <lien>http://contrib.spip.net/a2a</lien>
        <prefix>a2a</prefix>
        <fonctions>a2a_fonctions.php</fonctions>
        <options>a2a_options.php</options>
@@ -195,7 +195,7 @@ cc by-nc-sa 2.5
 <plugin>
        <categorie>multimedia</categorie>
        <version>0.6.1</version>
-       <lien>http://www.spip-contrib.net/FancyBox</lien>
+       <lien>http://contrib.spip.net/FancyBox</lien>
        <prefix>fancybox</prefix>
        <icon>images/fancybox-32.png</icon>
        <etat>stable</etat>
@@ -226,7 +226,7 @@ cc by-nc-sa 2.5
 <plugin spip='[2.1.0-beta;2.1.99]' >
        <categorie>multimedia</categorie>
        <version>0.6.1</version>
-       <lien>http://www.spip-contrib.net/FancyBox</lien>
+       <lien>http://contrib.spip.net/FancyBox</lien>
        <prefix>fancybox</prefix>
        <icon>images/fancybox-32.png</icon>
        <etat>stable</etat>
@@ -298,7 +298,7 @@ cc by-nc-sa 2.5
        etat="test"
        compatibilite="[2.0.0;3.0.*]"
        logo="images/logo_saisie_48.png"
-       documentation="http://www.spip-contrib.net/Saisies,1347"
+       documentation="http://contrib.spip.net/Saisies,1347"
 >
        <nom>Saisies</nom>
        <auteur lien="http://magraine.net">Matthieu Marcillaud</auteur>
@@ -378,4 +378,4 @@ cc by-nc-sa 2.5
 
 
 </archive>
-</archives>
+</archives>
\ No newline at end of file
index ce6eb6e..a2460d1 100644 (file)
@@ -2,7 +2,7 @@
 
 
 // Les URLs brutes sont converties en <a href='url'>url</a>
-// http://doc.spip.org/@traiter_raccourci_liens
+// http://code.spip.net/@traiter_raccourci_liens
 function tw_autoliens($t) {
 
        defined('_EXTRAIRE_LIENS') || define('_EXTRAIRE_LIENS', ',' . '\[[^\[\]]*(?:<-|->).*?\]' . '|<a\b.*?</a\b' . '|<\w.*?>' . '|((?:https?:/|www\.)[^"\'\s\[\]\}\)<>]*)' .',imsS');
@@ -21,7 +21,7 @@ function tw_autoliens($t) {
 
 
 // callback pour la fonction autoliens()
-// http://doc.spip.org/@autoliens_callback
+// http://code.spip.net/@autoliens_callback
 function tw_traiter_autoliens($r) {
        if (count($r)<2) return reset($r);
        list($tout, $l) = $r;
index fb4b1b1..3441c0c 100644 (file)
@@ -111,7 +111,7 @@ function inc_lien_dist($lien, $texte='', $class='', $title='', $hlang='', $rel='
 // sinon les crochets ne peuvent plus servir qu'a ce type de raccourci
 define('_RACCOURCI_LIEN', "/\[([^][]*?([[][^]>-]*[]][^][]*)*)->(>?)([^]]*)\]/msS");
 
-// http://doc.spip.org/@expanser_liens
+// http://code.spip.net/@expanser_liens
 function expanser_liens($t, $connect='', $env=array())
 {
 
@@ -189,7 +189,7 @@ function expanser_un_lien($reg, $quoi='echappe', $env=null){
 
 // Meme analyse mais pour eliminer les liens
 // et ne laisser que leur titre, a expliciter si ce n'est fait
-// http://doc.spip.org/@nettoyer_raccourcis_typo
+// http://code.spip.net/@nettoyer_raccourcis_typo
 function nettoyer_raccourcis_typo($texte, $connect='')
 {
        $texte = pipeline('nettoyer_raccourcis_typo',$texte);
@@ -238,7 +238,7 @@ function nettoyer_raccourcis_typo($texte, $connect='')
 // pour ne pas confondre avec un autre raccourci
 define('_RACCOURCI_ATTRIBUTS', '/^((?:[^[]*?(?:\[[^]]*\])?)*?)([|]([^<>]*?))?([{]([a-z_]*)[}])?$/');
 
-// http://doc.spip.org/@traiter_raccourci_lien_atts
+// http://code.spip.net/@traiter_raccourci_lien_atts
 function traiter_raccourci_lien_atts($texte) {
 
        $bulle = $hlang = false;
@@ -291,7 +291,7 @@ define('_RACCOURCI_CHAPO', '/^(\W*)(\W*)(\w*\d+([?#].*)?)$/');
  * renvoie l'url reelle de redirection si le $url=true,
  * l'url brute contenue dans le chapo sinon
  *
- * http://doc.spip.org/@chapo_redirige
+ * http://code.spip.net/@chapo_redirige
  *
  * @param string $virtuel
  * @param bool $url
@@ -316,7 +316,7 @@ function virtuel_redirige($virtuel, $url=false){
 // 'titre': seulement T ci-dessus (i.e. le TITRE ci-dessus ou dans table SQL)
 // 'url':   seulement U  (i.e. generer_url_RACCOURCI)
 
-// http://doc.spip.org/@calculer_url
+// http://code.spip.net/@calculer_url
 function calculer_url ($ref, $texte='', $pour='url', $connect='', $echappe_typo = true) {
        $r = traiter_lien_implicite($ref, $texte, $pour, $connect, $echappe_typo);
        $r = ($r ? $r : traiter_lien_explicite($ref, $texte, $pour, $connect, $echappe_typo));
@@ -325,7 +325,7 @@ function calculer_url ($ref, $texte='', $pour='url', $connect='', $echappe_typo
 
 define('_EXTRAIRE_LIEN', ",^\s*(http:?/?/?|mailto:?)\s*$,iS");
 
-// http://doc.spip.org/@traiter_lien_explicite
+// http://code.spip.net/@traiter_lien_explicite
 function traiter_lien_explicite ($ref, $texte='', $pour='url', $connect='', $echappe_typo = true)
 {
        if (preg_match(_EXTRAIRE_LIEN, $ref))
@@ -362,8 +362,9 @@ function traiter_lien_explicite ($ref, $texte='', $pour='url', $connect='', $ech
 }
 
 function liens_implicite_glose_dist($texte,$id,$type,$args,$ancre,$connect=''){
-       if (function_exists($f = 'glossaire_' . $ancre))
-               $url = $f($texte, $id);
+       if ( ($ancre AND function_exists($f = 'glossaire_' . $ancre))
+         OR function_exists($f = 'glossaire_'))
+               $url = $f($texte, $id, $ancre);
        else
                $url = glossaire_std($texte);
        return $url;
@@ -381,7 +382,7 @@ function liens_implicite_glose_dist($texte,$id,$type,$args,$ancre,$connect=''){
  * unset($GLOBALS['lien_implicite_cible_public']);
  *  => retablit le comportement automatique
  *
- * http://doc.spip.org/@traiter_lien_implicite
+ * http://code.spip.net/@traiter_lien_implicite
  *
  * @param string $ref
  * @param string $texte
@@ -417,7 +418,7 @@ function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='')
        // dans le cas d'un lien vers un doc, ajouter le type='mime/type'
        if ($type == 'document'
        AND $mime = sql_getfetsel('mime_type', 'spip_types_documents',
-                       "extension IN (SELECT extension FROM spip_documents where id_document =".intval($id).")",
+                       "extension IN (".sql_get_select("extension","spip_documents","id_document=".sql_quote($id)).")",
                        '','','','',$connect)
        )
                $r['mime'] = $mime;
@@ -429,7 +430,7 @@ function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='')
 
 define('_RACCOURCI_URL', '/^\s*(\w*?)\s*(\d+)(\?(.*?))?(#([^\s]*))?\s*$/S');
 
-// http://doc.spip.org/@typer_raccourci
+// http://code.spip.net/@typer_raccourci
 function typer_raccourci ($lien) {
        if (!preg_match(_RACCOURCI_URL, $lien, $match)) return array();
        $f = $match[1];
@@ -467,7 +468,7 @@ function traiter_raccourci_titre($id, $type, $connect=NULL)
 // Le nom du modele doit faire au moins trois caracteres (evite <h2>)
 // Si $doublons==true, on repere les documents sans calculer les modeles
 // mais on renvoie les params (pour l'indexation par le moteur de recherche)
-// http://doc.spip.org/@traiter_modeles
+// http://code.spip.net/@traiter_modeles
 define('_PREG_MODELE',
        '(<([a-z_-]{3,})' # <modele
  .'\s*([0-9]*)\s*' # id
@@ -482,7 +483,7 @@ define('_RACCOURCI_MODELE',
 
 define('_RACCOURCI_MODELE_DEBUT', '@^' . _RACCOURCI_MODELE .'@isS');
 
-// http://doc.spip.org/@traiter_modeles
+// http://code.spip.net/@traiter_modeles
 function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens = null, $env = array()) {
        // preserver la compatibilite : true = recherche des documents
        if ($doublons===true)
@@ -491,6 +492,7 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens
        if (strpos($texte,"<")!==false AND
          preg_match_all('/<[a-z_-]{3,}\s*[0-9|]+/iS', $texte, $matches, PREG_SET_ORDER)) {
                include_spip('public/assembler');
+               $wrap_embed_html = charger_fonction("wrap_embed_html","inc",true);
                foreach ($matches as $match) {
                        // Recuperer l'appel complet (y compris un eventuel lien)
 
@@ -545,6 +547,9 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens
                                // le remplacer dans le texte
                                if ($modele !== false) {
                                        $modele = protege_js_modeles($modele);
+                                       if ($wrap_embed_html){
+                                               $modele = $wrap_embed_html($mod,$modele);
+                                       }
                                        $rempl = code_echappement($modele, $echap);
                                        $texte = substr($texte, 0, $a)
                                                . $rempl
@@ -570,7 +575,7 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens
 
 define('_RACCOURCI_ANCRE', "/\[#?([^][]*)<-\]/S");
 
-// http://doc.spip.org/@traiter_raccourci_ancre
+// http://code.spip.net/@traiter_raccourci_ancre
 function traiter_raccourci_ancre($letexte)
 {
        if (preg_match_all(_RACCOURCI_ANCRE, $letexte, $m, PREG_SET_ORDER))
@@ -588,7 +593,7 @@ function traiter_raccourci_ancre($letexte)
 define('_RACCOURCI_GLOSSAIRE', "/\[\?+\s*([^][<>]+)\]/S");
 define('_RACCOURCI_GLOSES', '/^([^|#{]*\w[^|#{]*)([^#]*)(#([^|{}]*))?(.*)$/S');
 
-// http://doc.spip.org/@traiter_raccourci_glossaire
+// http://code.spip.net/@traiter_raccourci_glossaire
 function traiter_raccourci_glossaire($texte)
 {
        if (!preg_match_all(_RACCOURCI_GLOSSAIRE,
@@ -618,7 +623,7 @@ function traiter_raccourci_glossaire($texte)
        return $texte;
 }
 
-// http://doc.spip.org/@glossaire_std
+// http://code.spip.net/@glossaire_std
 function glossaire_std($terme)
 {
        global $url_glossaire_externe;
index 1bddbb6..cfafc56 100644 (file)
@@ -159,7 +159,7 @@ function traiter_raccourci_notes($letexte, $marqueur_notes)
 }
 
 
-// http://doc.spip.org/@traiter_les_notes
+// http://code.spip.net/@traiter_les_notes
 function traiter_les_notes($notes,$ignorer_autobr) {
        $mes_notes = '';
        if ($notes) {
index c774195..3ec42c8 100644 (file)
@@ -86,7 +86,7 @@ function paragrapher($t, $toujours_paragrapher = null) {
  * il ne faut pas desactiver globalement la fonction dans l'espace prive car elle protege
  * aussi les balises des squelettes qui ne passent pas forcement par propre ou typo apres
  *
- * http://doc.spip.org/@interdire_scripts
+ * http://code.spip.net/@interdire_scripts
  *
  * @param string $arg
  * @return string
@@ -128,7 +128,7 @@ function interdire_scripts($arg) {
  * Typographie generale
  * avec protection prealable des balises HTML et SPIP
  *
- * http://doc.spip.org/@typo
+ * http://code.spip.net/@typo
  *
  * @param string $letexte
  * @param bool $echapper
@@ -189,7 +189,7 @@ define('_TYPO_PROTECTEUR', "\x1\x2\x3\x4\x5\x6\x7\x8");
 define('_TYPO_BALISE', ",</?[a-z!][^<>]*[".preg_quote(_TYPO_PROTEGER)."][^<>]*>,imsS");
 
 /**
- * http://doc.spip.org/@corriger_typo
+ * http://code.spip.net/@corriger_typo
  *
  * @param string $t
  * @param string $lang
@@ -249,7 +249,7 @@ function corriger_typo($t, $lang='') {
 define('_RACCOURCI_TH_SPAN', '\s*(:?{{[^{}]+}}\s*)?|<');
 
 /**
- * http://doc.spip.org/@traiter_tableau
+ * http://code.spip.net/@traiter_tableau
  *
  * @param sring $bloc
  * @return string
@@ -424,7 +424,7 @@ function traiter_tableau($bloc) {
  * Traitement des listes
  * on utilise la wheel correspondante
  *
- * http://doc.spip.org/@traiter_listes
+ * http://code.spip.net/@traiter_listes
  *
  * @param string $t
  * @return string
@@ -486,7 +486,7 @@ function personnaliser_raccourcis(&$ruleset){
 /**
  * Nettoie un texte, traite les raccourcis autre qu'URL, la typo, etc.
  *
- * http://doc.spip.org/@traiter_raccourcis
+ * http://code.spip.net/@traiter_raccourcis
  *
  * @param string $t
  * @param bool $show_autobr
@@ -557,7 +557,7 @@ function traiter_raccourcis($t, $show_autobr = false) {
 
 /**
  * Filtre a appliquer aux champs du type #TEXTE*
- * http://doc.spip.org/@propre
+ * http://code.spip.net/@propre
  *
  * @param string $t
  * @param string $connect
index fc26b7f..23acd7e 100644 (file)
@@ -86,7 +86,7 @@ class SPIPTextWheelRuleset extends TextWheelRuleSet {
                $key = 'tw-'.md5(_WHEELS_VERSION."-".serialize($ruleset).$callback.$class._DIR_RACINE);
 
                # lecture du cache
-               include_spip('inc/memoization');
+               include_spip('memoization_options');
                if (!function_exists('cache_get')) include_spip('inc/memoization-mini');
                if ((!defined('_VAR_MODE') OR _VAR_MODE!='recalcul')
                  AND $cacheruleset = cache_get($key))
index a3405d8..7a661be 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="tw"
        categorie="edition"
-       version="0.8.26"
+       version="0.8.30"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="textwheel-32.png"
index c7eed18..8aa9634 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_instituer_syndic_article_dist
+// http://code.spip.net/@action_instituer_syndic_article_dist
 function action_urls_actualiser_dist() {
 
        $securiser_action = charger_fonction('securiser_action', 'inc');
index 297aecd..42611db 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_instituer_syndic_article_dist
+// http://code.spip.net/@action_instituer_syndic_article_dist
 function action_urls_liberer_dist() {
 
        $securiser_action = charger_fonction('securiser_action', 'inc');
index 3fefa4c..44d5dc3 100644 (file)
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_instituer_syndic_article_dist
+// http://code.spip.net/@action_instituer_syndic_article_dist
 function action_urls_verrouiller_dist() {
 
        $securiser_action = charger_fonction('securiser_action', 'inc');
index edb1c9f..a63ddd9 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="urls"
        categorie="statistique"
-       version="1.4.23"
+       version="1.4.25"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="prive/themes/spip/images/url-32.png"
index a78e99f..ecd85ea 100644 (file)
@@ -76,9 +76,6 @@ defined('CONFIRMER_MODIFIER_URL') || define('CONFIRMER_MODIFIER_URL', false);
  * 
  */
 
-if (!function_exists('cache_me')) {
-       function cache_me(){return null;}
-}
 
 $config_urls_arbo = isset($GLOBALS['meta']['urls_arbo'])?unserialize($GLOBALS['meta']['urls_arbo']):array();
 if (!defined('_debut_urls_arbo')) define('_debut_urls_arbo', '');
@@ -88,7 +85,7 @@ if (!defined('_terminaison_urls_arbo')) define('_terminaison_urls_arbo', '');
 if (!defined('_url_arbo_sep_id')) define('_url_arbo_sep_id',isset($config_urls_arbo['url_arbo_sep_id'])?$config_urls_arbo['url_arbo_sep_id']:'-');
 // option pour tout passer en minuscules
 if (!defined('_url_arbo_minuscules')) define('_url_arbo_minuscules',isset($config_urls_arbo['url_arbo_minuscules'])?$config_urls_arbo['url_arbo_minuscules']:1);
-if (!defined('_URLS_ARBO_MAX')) define('_URLS_ARBO_MAX', isset($config_urls_arbo['URLS_ARBO_MAX'])?$config_urls_arbo['URLS_ARBO_MAX']:35);
+if (!defined('_URLS_ARBO_MAX')) define('_URLS_ARBO_MAX', isset($config_urls_arbo['URLS_ARBO_MAX'])?$config_urls_arbo['URLS_ARBO_MAX']:80);
 if (!defined('_URLS_ARBO_MIN')) define('_URLS_ARBO_MIN', isset($config_urls_arbo['URLS_ARBO_MIN'])?$config_urls_arbo['URLS_ARBO_MIN']:3);
 
 if (!defined('_url_sep_id')) define('_url_sep_id',_url_arbo_sep_id);
@@ -176,7 +173,7 @@ function url_arbo_type($type){
  * precedent, un tableau indiquant le titre de l'objet, son type, son id,
  * et doit donner en retour une chaine d'url, sans se soucier de la
  * duplication eventuelle, qui sera geree apres
- * http://doc.spip.org/@creer_chaine_url
+ * http://code.spip.net/@creer_chaine_url
  *
  * @param array $x
  * @return array
@@ -201,7 +198,7 @@ function urls_arbo_creer_chaine_url($x) {
 
 /**
  * Boucler sur le parent pour construire l'url complete a partir des segments
- * http://doc.spip.org/@declarer_url_arbo_rec
+ * http://code.spip.net/@declarer_url_arbo_rec
  *
  * @param string $url
  * @param string $type
@@ -266,7 +263,7 @@ function renseigner_url_arbo($type,$id_objet){
 /**
  * Retrouver/Calculer l'ensemble des segments d'url d'un objet
  *
- * http://doc.spip.org/@declarer_url_arbo
+ * http://code.spip.net/@declarer_url_arbo
  *
  * @param string $type
  * @param int $id_objet
@@ -274,9 +271,7 @@ function renseigner_url_arbo($type,$id_objet){
  */
 function declarer_url_arbo($type, $id_objet) {
        static $urls=array();
-       // utiliser un cache memoire pour aller plus vite
-       if(!is_null($C=cache_me())) return $C;
-       
+
        // Se contenter de cette URL si elle existe ;
        // sauf si on invoque par "voir en ligne" avec droit de modifier l'url
 
@@ -373,7 +368,7 @@ function declarer_url_arbo($type, $id_objet) {
 /**
  * Generer l'url arbo complete constituee des segments + debut + fin
  *
- * http://doc.spip.org/@_generer_url_arbo
+ * http://code.spip.net/@_generer_url_arbo
  *
  * @param string $type
  * @param int $id
@@ -422,7 +417,7 @@ function _generer_url_arbo($type, $id, $args='', $ancre='') {
  * ou decoder cette url si c'est une chaine
  * array([contexte],[type],[url_redirect],[fond]) : url decodee
  *
- * http://doc.spip.org/@urls_arbo_dist
+ * http://code.spip.net/@urls_arbo_dist
  *
  * @param string|int $i
  * @param string $entite
@@ -537,7 +532,9 @@ function urls_arbo_dist($i, $entite, $args='', $ancre='') {
                        // d'abord recherche avec prefixe parent, en une requete car aucun risque de colision
                        $row=sql_fetsel('id_objet, type, url',
                                                                                        'spip_urls',
-                                                                                       is_null($type)?"url=".sql_quote($url_segment):sql_in('url',array("$type/$url_segment",$type)),
+                                                                                       is_null($type)
+                                                                                               ? "url=".sql_quote($url_segment, '', 'TEXT')
+                                                                                               : sql_in('url',array("$type/$url_segment",$type)),
                                                                                        '',
                                                                                        // en priorite celui qui a le bon parent et les deux segments
                                                                                        // puis le bon parent avec 1 segment
index 071644b..1864338 100644 (file)
@@ -36,7 +36,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // securiser
 # donner un exemple d'url pour le formulaire de choix
 define('URLS_HTML_EXEMPLE', 'article12.html');
 
-// http://doc.spip.org/@_generer_url_html
+// http://code.spip.net/@_generer_url_html
 function _generer_url_html($type, $id, $args='', $ancre='') {
        if ($generer_url_externe = charger_fonction("generer_url_$type",'urls',true)) {
                $url = $generer_url_externe($id, $args, $ancre);
@@ -47,7 +47,7 @@ function _generer_url_html($type, $id, $args='', $ancre='') {
 }
 
 // retrouver les parametres d'une URL dite "html"
-// http://doc.spip.org/@urls_html_dist
+// http://code.spip.net/@urls_html_dist
 function urls_html_dist($i, $entite, $args='', $ancre='') {
 
        if (is_numeric($i))
index 08867b6..693d74e 100644 (file)
@@ -25,7 +25,7 @@ define('URLS_LIBRES_CONFIG', 'propres');
 if (!defined('_MARQUEUR_URL'))
        define('_MARQUEUR_URL', false);
 
-// http://doc.spip.org/@urls_libres_dist
+// http://code.spip.net/@urls_libres_dist
 function urls_libres_dist($i, &$entite, $args='', $ancre='') {
        $f = charger_fonction('propres', 'urls');
        return $f($i, $entite, $args, $ancre);
index f58e1ef..e06f122 100644 (file)
@@ -53,7 +53,7 @@ $config_urls_propres = isset($GLOBALS['meta']['urls_propres'])?unserialize($GLOB
 if (!defined('_url_propres_sep_id')) define('_url_propres_sep_id',isset($config_urls_propres['url_propres_sep_id'])?$config_urls_propres['url_propres_sep_id']:'-');
 // option pour tout passer en minuscules
 if (!defined('_url_minuscules')) define('_url_minuscules',isset($config_urls_propres['url_minuscules'])?$config_urls_propres['url_minuscules']:0);
-if (!defined('_URLS_PROPRES_MAX')) define('_URLS_PROPRES_MAX', isset($config_urls_propres['URLS_PROPRES_MAX'])?$config_urls_propres['URLS_PROPRES_MAX']:35);
+if (!defined('_URLS_PROPRES_MAX')) define('_URLS_PROPRES_MAX', isset($config_urls_propres['URLS_PROPRES_MAX'])?$config_urls_propres['URLS_PROPRES_MAX']:80);
 if (!defined('_URLS_PROPRES_MIN')) define('_URLS_PROPRES_MIN', isset($config_urls_propres['URLS_PROPRES_MIN'])?$config_urls_propres['URLS_PROPRES_MIN']:3);
 
 if (!defined('_url_sep_id')) define('_url_sep_id',_url_propres_sep_id);
@@ -68,7 +68,7 @@ if (!defined('_MARQUEUR_URL')) define('_MARQUEUR_URL', serialize(array('rubrique
 
 // Retire les marqueurs de type dans une URL propre ancienne maniere
 
-// http://doc.spip.org/@retirer_marqueurs_url_propre
+// http://code.spip.net/@retirer_marqueurs_url_propre
 function retirer_marqueurs_url_propre($url_propre) {
        if (preg_match(',^[+][-](.*?)[-][+]$,', $url_propre, $regs)) {
                return $regs[1];
@@ -85,7 +85,7 @@ function retirer_marqueurs_url_propre($url_propre) {
 // precedent, un tableau indiquant le titre de l'objet, son type, son id,
 // et doit donner en retour une chaine d'url, sans se soucier de la
 // duplication eventuelle, qui sera geree apres
-// http://doc.spip.org/@creer_chaine_url
+// http://code.spip.net/@creer_chaine_url
 function urls_propres_creer_chaine_url($x) {
        // NB: ici url_old ne sert pas, mais un plugin qui ajouterait une date
        // pourrait l'utiliser pour juste ajouter la 
@@ -104,7 +104,7 @@ function urls_propres_creer_chaine_url($x) {
 
 // Trouver l'URL associee a la n-ieme cle primaire d'une table SQL
 
-// http://doc.spip.org/@declarer_url_propre
+// http://code.spip.net/@declarer_url_propre
 function declarer_url_propre($type, $id_objet) {
        $trouver_table = charger_fonction('trouver_table', 'base');
        $desc = $trouver_table(table_objet($type));
@@ -204,7 +204,7 @@ function declarer_url_propre($type, $id_objet) {
        return $set['url'];
 }
 
-// http://doc.spip.org/@_generer_url_propre
+// http://code.spip.net/@_generer_url_propre
 function _generer_url_propre($type, $id, $args='', $ancre='') {
 
        if ($generer_url_externe = charger_fonction("generer_url_$type",'urls',true)) {
@@ -260,7 +260,7 @@ function _generer_url_propre($type, $id, $args='', $ancre='') {
 // retrouve le fond et les parametres d'une URL propre
 // ou produit une URL propre si on donne un parametre
 // @return array([contexte],[type],[url_redirect],[fond]) : url decodee
-// http://doc.spip.org/@urls_propres_dist
+// http://code.spip.net/@urls_propres_dist
 function urls_propres_dist($i, $entite, $args='', $ancre='') {
 
        if (is_numeric($i))
@@ -347,11 +347,11 @@ function urls_propres_dist($i, $entite, $args='', $ancre='') {
 
        // Compatibilite avec les anciens marqueurs d'URL propres
        // Tester l'entree telle quelle (avec 'url_libre' des sites ont pu avoir des entrees avec marqueurs dans la table spip_urls)
-       if (!$row = sql_fetsel('id_objet, type, date, url', 'spip_urls', 'url='.sql_quote($url_propre))) {
+       if (!$row = sql_fetsel('id_objet, type, date, url', 'spip_urls', 'url='.sql_quote($url_propre, '', 'TEXT'))) {
                // Sinon enlever les marqueurs eventuels
                $url_propre2 = retirer_marqueurs_url_propre($url_propre);
 
-               $row = sql_fetsel('id_objet, type, date, url', 'spip_urls', 'url='.sql_quote($url_propre2));
+               $row = sql_fetsel('id_objet, type, date, url', 'spip_urls', 'url='.sql_quote($url_propre2, '', 'TEXT'));
        }
 
        if ($row) {
@@ -362,9 +362,9 @@ function urls_propres_dist($i, $entite, $args='', $ancre='') {
 
                // Si l'url est vieux, donner le nouveau
                if ($recent = sql_fetsel('url, date', 'spip_urls',
-               'type='.sql_quote($row['type']).' AND id_objet='.sql_quote($row['id_objet'])
-               .' AND date>'.sql_quote($row['date'])
-               .' AND url<>'.sql_quote($row['url']), '', 'date DESC', 1)) {
+               'type='.sql_quote($row['type'], '', 'TEXT').' AND id_objet='.sql_quote($row['id_objet'])
+               .' AND date>'.sql_quote($row['date'], '', 'TEXT')
+               .' AND url<>'.sql_quote($row['url'], '', 'TEXT'), '', 'date DESC', 1)) {
                        // Mode compatibilite pour conserver la distinction -Rubrique-
                        if (_MARQUEUR_URL) {
                                $marqueur = unserialize(_MARQUEUR_URL);
@@ -406,4 +406,4 @@ function urls_propres_dist($i, $entite, $args='', $ancre='') {
        return array($contexte, $entite, $url_redirect, $is_qs?$entite:null);
 }
 
-?>
\ No newline at end of file
+?>
index 1804feb..e32a5f5 100644 (file)
@@ -25,7 +25,7 @@ define('URLS_PROPRES2_CONFIG', 'propres');
 if (!defined('_terminaison_urls_propres'))
        define ('_terminaison_urls_propres', '.html');
 
-// http://doc.spip.org/@urls_propres2_dist
+// http://code.spip.net/@urls_propres2_dist
 function urls_propres2_dist($i, &$entite, $args='', $ancre='') {
        $f = charger_fonction('propres', 'urls');
        return $f($i, $entite, $args, $ancre);
index 2e2bd7f..b173fb4 100644 (file)
@@ -34,7 +34,7 @@ if (!defined('_terminaison_urls_propres'))
 
 defined('_debut_urls_propres') || define ('_debut_urls_propres', './?');
 
-// http://doc.spip.org/@urls_propres_qs_dist
+// http://code.spip.net/@urls_propres_qs_dist
 function urls_propres_qs_dist($i, &$entite, $args='', $ancre='') {
        $f = charger_fonction('propres', 'urls');
        return $f($i, $entite, $args, $ancre);
index 9c59431..62b87df 100644 (file)
@@ -39,7 +39,7 @@ function _generer_url_simple($type,$id, $args='', $ancre='') {
 
 // retrouve le fond et les parametres d'une URL abregee
 // le contexte deja existant est fourni dans args sous forme de tableau ou query string
-// http://doc.spip.org/@urls_page_dist
+// http://code.spip.net/@urls_page_dist
 function urls_simple_dist($i, &$entite, $args='', $ancre='')
 {
        if (is_numeric($i)){
index 91e1b7a..5bb69c4 100644 (file)
@@ -22,43 +22,43 @@ define('URLS_STANDARD_EXEMPLE', 'article.php3?id_article=12');
 
 if (!function_exists('generer_url_article')) { // si la place n'est pas prise
 
-// http://doc.spip.org/@generer_url_article
+// http://code.spip.net/@generer_url_article
 function generer_url_article($id_article) {
        return _DIR_RACINE . "article.php3?id_article=$id_article";
 }
 
-// http://doc.spip.org/@generer_url_rubrique
+// http://code.spip.net/@generer_url_rubrique
 function generer_url_rubrique($id_rubrique) {
        return _DIR_RACINE . "rubrique.php3?id_rubrique=$id_rubrique";
 }
 
-// http://doc.spip.org/@generer_url_breve
+// http://code.spip.net/@generer_url_breve
 function generer_url_breve($id_breve) {
        return _DIR_RACINE . "breve.php3?id_breve=$id_breve";
 }
 
-// http://doc.spip.org/@generer_url_mot
+// http://code.spip.net/@generer_url_mot
 function generer_url_mot($id_mot) {
        return _DIR_RACINE . "mot.php3?id_mot=$id_mot";
 }
 
-// http://doc.spip.org/@generer_url_site
+// http://code.spip.net/@generer_url_site
 function generer_url_site($id_syndic) {
        return _DIR_RACINE . "site.php3?id_syndic=$id_syndic";
 }
 
-// http://doc.spip.org/@generer_url_auteur
+// http://code.spip.net/@generer_url_auteur
 function generer_url_auteur($id_auteur) {
        return _DIR_RACINE . "auteur.php3?id_auteur=$id_auteur";
 }
 
-// http://doc.spip.org/@generer_url_document
+// http://code.spip.net/@generer_url_document
 function generer_url_document($id_document) {
        $generer_url_document = charger_fonction("generer_url_document","urls");
        return $generer_url_document($id_document);
 }
 
-// http://doc.spip.org/@recuperer_parametres_url
+// http://code.spip.net/@recuperer_parametres_url
 function recuperer_parametres_url(&$fond, $url) {
        global $contexte;
 
@@ -110,7 +110,7 @@ function recuperer_parametres_url(&$fond, $url) {
 //
 // le format de definition obsolete oblige a referencer explicitement les forums
 // on prevoit leur inexistence possible par un test sur charger_fonction
-// http://doc.spip.org/@generer_url_forum
+// http://code.spip.net/@generer_url_forum
 function generer_url_forum($id, $show_thread=false) {
        if ($generer_url_externe = charger_fonction("generer_url_forum",'urls',true))
                return $generer_url_externe($id, $args, $ancre);
index 661938d..90d9357 100644 (file)
@@ -26,7 +26,7 @@ function urls_upgrade($nom_meta_base_version,$version_cible){
        if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
                $trouver_table = charger_fonction('trouver_table','base');
                if ($desc = $trouver_table('spip_urls')
-                 AND isset($desc['exist'])){
+                 AND isset($desc['exist']) AND $desc['exist']){
                        ecrire_meta($nom_meta_base_version,'1.0.0');
                }
                // si pas de table en base, on fera une simple creation de base
index 4cca599..fc713cc 100644 (file)
@@ -26,7 +26,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 // qui sert de lien vers la meme page, avec la table triee selon ce champ
 // distingue champ numerique et non numerique
 
-// http://doc.spip.org/@vertebrer_sort
+// http://code.spip.net/@vertebrer_sort
 function vertebrer_sort($fields, $direction)
 {
        $res = '';
@@ -37,7 +37,7 @@ function vertebrer_sort($fields, $direction)
 }
 
 // Autant de formulaire que de champs (pour les criteres conditionnels) 
-// http://doc.spip.org/@vertebrer_form
+// http://code.spip.net/@vertebrer_form
 function vertebrer_form($fields)
 {
        $res = '';
@@ -68,7 +68,7 @@ function vertebrer_form($fields)
 
 // Autant de criteres conditionnels que de champs
 
-// http://doc.spip.org/@vertebrer_crit
+// http://code.spip.net/@vertebrer_crit
 function vertebrer_crit($v)
 {
        $res = "";
@@ -86,7 +86,7 @@ function vertebrer_crit($v)
 // Si une colonne reference une table, ajoute un href sur sa page dynamique
 // (il faudrait aller chercher sa def pour ilustrer les jointures en SPIP)
 
-// http://doc.spip.org/@vertebrer_cell
+// http://code.spip.net/@vertebrer_cell
 function vertebrer_cell($fields)
 {
        $res = "";
@@ -108,7 +108,7 @@ function vertebrer_cell($fields)
        return $res;
 }
 
-// http://doc.spip.org/@public_vertebrer_dist
+// http://code.spip.net/@public_vertebrer_dist
 function public_vertebrer_dist($desc)
 {
        $nom = $desc['table'];
index a6b80d5..de19b5f 100644 (file)
@@ -28,7 +28,8 @@
        </div>
 
        <div id="wysiwyg">
-       <INCLURE{fond=prive/objets/contenu/#OBJET,id=#ID_OBJET,env,wysiwyg=1}>
+               <h2 class="invisible"><:previsualisation:></h2>
+               <INCLURE{fond=prive/objets/contenu/#OBJET,id=#ID_OBJET,env,wysiwyg=1}>
        </div>
                                
        [(#AUTORISER{modifier,#OBJET,#ID_OBJET}|et{#OBJET|objet_info{editable}}|oui)
index 589c8fe..b076b93 100644 (file)
@@ -17,7 +17,7 @@
        [(#ENV{editable})
                                <span class="toggle_box_link"[(#ENV{_saisie_en_cours}|oui)style="display:none;"]>&#91;<a href="#"
                                                onclick="var f=jQuery(this).parents('form').eq(0);f.find('li .input').show('fast').siblings('span').hide('fast');f.find('.boutons').show('fast');f.find('input.date').eq(0).focus();return false;"
-                                               ><:bouton_changer:></a>&#93;</span>
+                                               ><:bouton_changer:><i class="over"> \(#ENV{_label_date}\)</i></a>&#93;</span>
                                <span class="input"[(#ENV{_saisie_en_cours}|non)style="display:none;"]>
                                        <input type="text" class="text date" name="#GET{name}_jour" id="#GET{name}_jour" value="#ENV{#GET{name}_jour}" size="10"/>
                                        <input type="text" class="text heure time" name="#GET{name}_heure" id="#GET{name}_heure" value="#ENV{#GET{name}_heure}" size="5"/>
@@ -60,4 +60,4 @@
        </div></form>
        ]
 </div>
-<INCLURE{fond=formulaires/dateur/inc-dateur} />
+<INCLURE{fond=formulaires/dateur/inc-dateur,heure_pas} />
index 37aa374..321f2fc 100644 (file)
@@ -128,6 +128,9 @@ function formulaires_editer_auteur_traiter_dist($id_auteur='new', $retour='', $a
                set_request('webmestre',_request('webmestre')?_request('webmestre'):'non');
        $retour = parametre_url($retour, 'email_confirm','');
 
+       set_request('email', email_valide(_request('email'))); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier :
+       // "Marie@toto.com  " ou encore "Marie Toto <Marie@toto.com>"   
+       
        include_spip('inc/autoriser');
        if (!autoriser('modifier','auteur',$id_auteur,null,array('email'=>'?'))){
                $email_nouveau = _request('email');
index afd0ba1..53e5c32 100644 (file)
@@ -4,53 +4,50 @@
        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
        [(#ENV{editable})
-       #SET{valider,''}
+       #SET{valider,#ENV{valider,''}}
        <form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
                [(#REM) declarer les hidden qui declencheront le service du formulaire 
                parametre : url d'action ]
                #ACTION_FORMULAIRE{#ENV{action}}
                [(#REM) un submit pour attraper la touche entree]
-         <div style="display:none;"><input type='submit' class='submit' value='<:bouton_upload:>' /></div>
+               <div style="display:none;"><input type='submit' class='submit' value='<:bouton_upload:>' /></div>
        ]
-         <ul>
-           <li class="editer editer_logo_on [ (#ENV**{erreurs}|table_valeur{logo_on}|oui)erreur]">
-                       [(#ENV{logo_on}|oui)
-                               [(#INCLURE{fond=formulaires/inc-apercu-logo,env,logo=#ENV{logo_on},quoi=logo_on,editable=#ENV{logo_off}|non|et{#ENV{editable}}})]
-                       ][(#ENV{editable})
-                               [(#ENV{logo_on}|non)
-                                       <label for="logo_on_#ENV{objet}_#ENV{id_objet}">[(#ENV{_options}|table_valeur{label}|sinon{<:info_telecharger_nouveau_logo:>})]</label>[
-                                       <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{logo_on})</span>
-                                       ]<input type='file' class='file' name='logo_on' size="[(#ENV{_options}|table_valeur{size_input}|sinon{12})]" id='logo_on_#ENV{objet}_#ENV{id_objet}' value="" />
-                                       #SET{valider,' '}
+               <ul>
+                       <li class="editer editer_logo_on [ (#ENV**{erreurs}|table_valeur{logo_on}|oui)erreur]">
+                               [(#ENV{logo_on}|oui)
+                                       [(#INCLURE{fond=formulaires/inc-apercu-logo,env,logo=#ENV{logo_on},quoi=logo_on,editable=#ENV{logo_off}|non|et{#ENV{editable}}})]
+                               ][(#ENV{editable})
+                                       [(#ENV{logo_on}|non)
+                                               <label for="logo_on_#ENV{objet}_#ENV{id_objet}">[(#ENV{_options}|table_valeur{label}|sinon{<:info_telecharger_nouveau_logo:>})]</label>[
+                                               <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{logo_on})</span>
+                                               ]<input type='file' class='file' name='logo_on' size="[(#ENV{_options}|table_valeur{size_input}|sinon{12})]" id='logo_on_#ENV{objet}_#ENV{id_objet}' value="" />
+                                               #SET{valider,' '}
+                                       ]
                                ]
-                       ]
-           </li>
-               [(#ENV{logo_survol}|ou{#ENV{logo_off}}|oui)
-           <li class="editer editer_logo_off [ (#ENV**{erreurs}|table_valeur{logo_off}|oui)erreur]">
-                       [(#ENV{logo_off}|oui)
-                               [(#INCLURE{fond=formulaires/inc-apercu-logo,env,logo=#ENV{logo_off},quoi=logo_off,editable=#ENV{editable}})]
-                       ][(#ENV{editable})
-                               [(#ENV{logo_off}|non)
-                                       <div [(#ENV**{erreurs}|table_valeur{logo_off}|non)
-                                               class="ajouter_survol"><a href="#" onclick="jQuery(this).parent().siblings().show().parents('form').find('.boutons').show();return false;"><:logo_survol:></a></div>
-                                       <div [(#ENV{_show_upload_off}|non)style="display:none;" #SET{hide,' '}]]>
-                                       <label for="logo_off"><:info_telecharger_nouveau_logo:></label>[
-                                       <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{logo_off})</span>
-                                       ]<input type='file' class='file' name='logo_off' size="[(#ENV{_options}|table_valeur{size_input}|sinon{12})]" id='logo_off_#ENV{objet}_#ENV{id_objet}' value="" />
-                                       #SET{valider,' '}
-                                       </div>
+                       </li>
+                       [(#ENV{logo_survol}|ou{#ENV{logo_off}}|oui)
+                       <li class="editer editer_logo_off [ (#ENV**{erreurs}|table_valeur{logo_off}|oui)erreur]">
+                               [(#ENV{logo_off}|oui)
+                                       [(#INCLURE{fond=formulaires/inc-apercu-logo,env,logo=#ENV{logo_off},quoi=logo_off,editable=#ENV{editable}})]
+                               ][(#ENV{editable})
+                                       [(#ENV{logo_off}|non)
+                                               <div [(#ENV**{erreurs}|table_valeur{logo_off}|non)
+                                                       class="ajouter_survol"><a href="#" onclick="jQuery(this).parent().siblings().show().parents('form').find('.boutons').show();return false;"><:logo_survol:></a></div>
+                                               <div [(#ENV{_show_upload_off}|non)style="display:none;" #SET{hide,' '}]]>
+                                               <label for="logo_off"><:info_telecharger_nouveau_logo:></label>[
+                                               <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{logo_off})</span>
+                                               ]<input type='file' class='file' name='logo_off' size="[(#ENV{_options}|table_valeur{size_input}|sinon{12})]" id='logo_off_#ENV{objet}_#ENV{id_objet}' value="" />
+                                               #SET{valider,' '}
+                                               </div>
+                                       ]
                                ]
-                       ]
-           </li>
-               ]
-         </ul>
-         [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
-         <!--extra-->
+                       </li>]
+               </ul>
+               [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+               <!--extra-->
        [(#ENV{editable})
                [(#GET{valider})
-         <p class="boutons"[(#GET{hide})style='display:none;']><input type='submit' class='submit' value='<:bouton_upload:>' /></p>
-               ]
-       </div></form>
-       ]
+               <p class="boutons"[(#GET{hide})style='display:none;']><input type='submit' class='submit' value='<:bouton_upload:>' /></p>]
+       </div></form>]
 </div>
 ]
index e79eb0e..289ea94 100644 (file)
@@ -22,7 +22,6 @@
                                         class="image"
                                         alt='<:info_rechercher|attribut_html:>'
                                         onclick="return recherche_submit_#ENV{_id_champ,recherche}.apply(this);"
-                                        onkeypress="return recherche_submit_#ENV{_id_champ,recherche}.apply(this);"
        /><a class="none[ (#ENV{class,''})] refresh" href="[(#ENV{action}|parametre_url{'recherche',''})]"><:info_rechercher:></a>
 </div></form>
 <script type="text/javascript">/*<![CDATA[*/
diff --git a/www/prive/formulaires/selecteur/ajax_fonctions.php b/www/prive/formulaires/selecteur/ajax_fonctions.php
new file mode 100644 (file)
index 0000000..6d8bea3
--- /dev/null
@@ -0,0 +1,5 @@
+<?php
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+include_spip('formulaires/selecteur/generique_fonctions');
diff --git a/www/prive/formulaires/selecteur/inc-nav-rubriques_fonctions.php b/www/prive/formulaires/selecteur/inc-nav-rubriques_fonctions.php
new file mode 100644 (file)
index 0000000..dbdaeb4
--- /dev/null
@@ -0,0 +1,5 @@
+<?php\r
+\r
+if (!defined('_ECRIRE_INC_VERSION')) return;\r
+\r
+include_spip('formulaires/selecteur/generique_fonctions');
\ No newline at end of file
diff --git a/www/prive/formulaires/selecteur/navigateur_fonctions.php b/www/prive/formulaires/selecteur/navigateur_fonctions.php
new file mode 100644 (file)
index 0000000..6d8bea3
--- /dev/null
@@ -0,0 +1,5 @@
+<?php
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+include_spip('formulaires/selecteur/generique_fonctions');
index 0e268e7..6420bb4 100644 (file)
@@ -23,7 +23,7 @@
                                                        f.find('span.toggle_box_link[(#ENV{_langue}|oui),span.affiche]').hide('fast');
                                                        f.find('.boutons,.new_trad,.editer_id_trad').show('fast');
                                                        f.find('#changer_lang').eq(0).focus();return false;"
-                                               ><:bouton_changer:></a>&#93;</span>
+                                               ><:bouton_changer:><i class="over"> \([(#ENV{_langue}|?{[(#ENV{_objet}|objet_info{texte_langue_objet}|_T)],<:info_traductions:>})]\)</i></a>&#93;</span>
                                        [(#ENV{_langue}|oui)
                                        [<span class="input[(#ENV{_saisie_en_cours}|non)none-js]">
                                        <select name="changer_lang" id="changer_lang">(#INCLURE{fond=formulaires/inc-options-langues,name=changer_lang,default=#ENV**{_langue},herit=#ENV**{langue_parent}})</select>
index 8d5d7a0..3cece6e 100644 (file)
@@ -136,7 +136,7 @@ jQuery.fn.positionner = function(force, setfocus) {
 jQuery.spip.virtualbuffer_id='spip_virtualbufferupdate';
 jQuery.spip.initReaderBuffer = function(){
        if (jQuery('#'+jQuery.spip.virtualbuffer_id).length) return;
-       jQuery('body').append('<p style="float:left;width:0;height:0;position:absolute;left:-5000;top:-5000;"><input type="hidden" name="'+jQuery.spip.virtualbuffer_id+'" id="'+jQuery.spip.virtualbuffer_id+'" value="0" /></p>');
+       jQuery('body').append('<p style="float:left;width:0;height:0;position:absolute;left:-5000px;top:-5000px;"><input type="hidden" name="'+jQuery.spip.virtualbuffer_id+'" id="'+jQuery.spip.virtualbuffer_id+'" value="0" /></p>');
 }
 jQuery.spip.updateReaderBuffer = function(){
        var i = jQuery('#'+jQuery.spip.virtualbuffer_id);
@@ -151,7 +151,9 @@ jQuery.fn.formulaire_setARIA = function(){
                // eviter une double execution du js au moment de sa reinsertion dans le DOM par wrap()
                // cf http://bugs.jquery.com/ticket/7447
                this.find('script').remove();
-               this.wrap('<div class="ariaformprop" aria-live="assertive" aria-atomic="true"></div>');
+               this.wrap('<div class="ariaformprop" aria-live="polite" aria-atomic="true" aria-relevant="additions"></div>');
+               // dans un formulaire, le screen reader relit tout a chaque saisie d'un caractere si on est en aria-live
+               jQuery('form',this).not('[aria-live]').attr('aria-live','off');
        }
        return this;
 }
@@ -647,7 +649,12 @@ jQuery.fn.ajaxbloc = function() {
                  if (jQuery.spip.ajaxReload(blocfrag,options))
                                // don't trig reload of parent blocks
                                event.stopPropagation();
-         }).addClass('bind-ajaxReload');
+         }).addClass('bind-ajaxReload')
+                 .attr('aria-live','polite').attr('aria-atomic','true');
+
+               // dans un formulaire, le screen reader relit tout a chaque saisie d'un caractere si on est en aria-live
+         // mettre un aria-live="off" sur les forms inclus dans ce bloc aria-live="polite"
+         jQuery('form',this).not('[aria-live]').attr('aria-live','off');
 
                jQuery(ajaxbloc_selecteur,this).not('.noajax,.bind-ajax')
                        .click(function(){return jQuery.spip.ajaxClick(blocfrag,this.href,{force:jQuery(this).is('.nocache'),history:!(jQuery(this).is('.nohistory')||jQuery(this).closest('.box_modalbox').length)});})
index d6ddb57..91ef1fa 100644 (file)
@@ -82,14 +82,11 @@ function aff_selection (arg, idom, url, event) {
 
 function aff_selection_titre(titre, id, idom, nid)
 {
-       t = findObj_forcer('titreparent');
-       t.value= titre;
-       t=findObj_forcer(nid);
-       t.value=id;
-       jQuery(t).trigger('change'); // declencher le onchange
-       t=findObj_forcer(idom);
-       t.style.display='none';
-       p = $(t).parents('form');
+       var t = jQuery('#titreparent');
+       var p = t.closest('form');
+       t.attr('value',titre);
+       p.find('#'+nid).attr('value',id).trigger('change'); // declencher le onchange
+       p.find("#"+idom).hide('fast');
        if (p.is('.submit_plongeur')) p.get(p.length-1).submit();
 }
 
index 51e3b42..c6153ce 100644 (file)
                        <td class='statut'>[(#STATUT|puce_statut{article,#ID_ARTICLE,#ID_RUBRIQUE})]</td>
                        <td class="trad">[(#ENV{id_trad}|=={#ID_ARTICLE}|oui)[(#CHEMIN_IMAGE{langue-16.png}|balise_img)]]
                                [(#ENV{editable}|oui)
-                               [(#ENV{id_trad}|=={#ID_ARTICLE}|non)<button type='submit' name='changer_reference_trad&#91;#ID_ARTICLE&#93;' value='#ID_ARTICLE'>[(#CHEMIN_IMAGE{langues-off-12.gif}|balise_img)]</button>]
+                               [(#ENV{id_trad}|=={#ID_ARTICLE}|non)
+                               [(#SET{titre,[<:info_numero_abbreviation:>#ID_ARTICLE (#TITRE) - [(#LANG|traduire_nom_langue)]]})]
+                               [(#SET{titre,#VAL{trad_definir_reference}|_T{#ARRAY{titre,#GET{titre}}}})]
+                               <button type='submit'
+                                                               name='changer_reference_trad&#91;#ID_ARTICLE&#93;'
+                                                               title="[(#GET{titre}|attribut_html)]"
+                                                               value='#ID_ARTICLE'>[(#CHEMIN_IMAGE{langues-off-12.gif}
+                                       |balise_img{#GET{titre}})]</button>]
                                ]
                        </td>
                        <td class='titre principale'><span
index 6c46897..c34d224 100644 (file)
@@ -25,7 +25,7 @@
                        <td class='statut'>[(#STATUT|puce_statut{article,#ID_ARTICLE,#ID_RUBRIQUE})]</td>
                        <td class='titre principale'>[(#LOGO_ARTICLE|image_reduire{20,26})]<a href="[(#ID_ARTICLE|generer_url_entite{article})]"
                                                                                                                                                                                                                                                                                                                title="<:info_numero_abbreviation|attribut_html:> #ID_ARTICLE">[(#RANG). ]#TITRE</a> [(#ENV{lang}|=={#LANG}|non) &#40;#LANG&#41;]</td>
-                       <td class='auteur'><BOUCLE_auteurs(AUTEURS){id_article}{', '}><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a></BOUCLE_auteurs></td>
+                       <td class='auteur'><div class="inner"><BOUCLE_auteurs(AUTEURS){id_article}{', '}><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a></BOUCLE_auteurs></div></td>
                        <td class='date secondaire'>[(#DATE|affdate_jourcourt)]</td>
                        <td class='id'>[(#AUTORISER{modifier,article,#ID_ARTICLE}|?{
                                <a href="[(#URL_ECRIRE{article_edit,id_article=#ID_ARTICLE})]">#ID_ARTICLE</a>,
index 540c4d5..b60a4e0 100644 (file)
@@ -44,6 +44,7 @@
 ]
 
 <div id="wysiwyg">
+       <h2 class="invisible"><:previsualisation:></h2>
 <INCLURE{fond=prive/objets/contenu/article,id=#ID_ARTICLE,id_article=#ID_ARTICLE,virtuel=oui,ajax=wysiwyg,wysiwyg=1}>
 </div>
 
index 4184996..701bab1 100644 (file)
@@ -25,7 +25,8 @@
 ]
 
 <div id="wysiwyg">
-<INCLURE{fond=prive/objets/contenu/auteur,id=#ID_AUTEUR,id_auteur=#ID_AUTEUR,exec=#ENV{exec},wysiwyg=1}>
+       <h2 class="invisible"><:previsualisation:></h2>
+       <INCLURE{fond=prive/objets/contenu/auteur,id=#ID_AUTEUR,id_auteur=#ID_AUTEUR,exec=#ENV{exec},wysiwyg=1}>
 </div>
 
 #PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,auteur,id,#ID_AUTEUR},data,'<div class="nettoyeur"></div>'}}
index 878130a..db3a048 100644 (file)
@@ -16,7 +16,8 @@
 ],simple fiche_objet})]
 [(#REM|changer_typo)]
 <div id="wysiwyg">
-<INCLURE{fond=prive/objets/contenu/rubrique,id=#ID_RUBRIQUE,id_rubrique=#ID_RUBRIQUE,ajax=wysiwyg,wysiwyg=1}>
+       <h2 class="invisible"><:previsualisation:></h2>
+       <INCLURE{fond=prive/objets/contenu/rubrique,id=#ID_RUBRIQUE,id_rubrique=#ID_RUBRIQUE,ajax=wysiwyg,wysiwyg=1}>
 </div>
 
 <!--affiche_milieu-->
diff --git a/www/prive/squelettes/hierarchie/infos_perso.html b/www/prive/squelettes/hierarchie/infos_perso.html
new file mode 100644 (file)
index 0000000..e69de29
index 0c40948..8892cc7 100644 (file)
@@ -23,7 +23,7 @@
                        </p>
                        <p class='nom_site_spip'><a
                                   class='info'
-                                        title='Informations sur [(#NOM_SITE|attribut_html)]'
+                                        title='<:titre_identite_site|attribut_html:>'
                                         href='#URL_ECRIRE{configurer_identite}'><strong
                                  class='nom'>[ (#NOM_SITE_SPIP|couper{35}) ]</strong></a>|
                                <a class='voir'
index 72af10f..b1fccf8 100644 (file)
@@ -2,7 +2,7 @@
 
    clear.css
    Classes pour faciliter la composition
-   Cf.: http://www.spip-contrib.net/3820
+   Cf.: http://contrib.spip.net/3820
 
 -------------------------------------------------------------- */
 
index 54e872c..cbddc50 100644 (file)
@@ -33,6 +33,7 @@
 /* alignement */
 .icone.left {float:#ENV{left};}
 .icone.right {float:#ENV{right};}
+.icone.center {clear:both;}
 .icone.center a,.icone.center .submit {margin:0 auto;}
 .icone.clearleft {clear:#ENV{left};}
 .icone.clearright {clear:#ENV{right};}
diff --git a/www/prive/themes/spip/images/aide-rtl-12.png b/www/prive/themes/spip/images/aide-rtl-12.png
deleted file mode 100644 (file)
index f9799e6..0000000
Binary files a/www/prive/themes/spip/images/aide-rtl-12.png and /dev/null differ
diff --git a/www/prive/themes/spip/images/aide-rtl-16.png b/www/prive/themes/spip/images/aide-rtl-16.png
deleted file mode 100644 (file)
index 9b6553a..0000000
Binary files a/www/prive/themes/spip/images/aide-rtl-16.png and /dev/null differ
diff --git a/www/prive/themes/spip/images/aide_rtl-12.png b/www/prive/themes/spip/images/aide_rtl-12.png
new file mode 100644 (file)
index 0000000..f9799e6
Binary files /dev/null and b/www/prive/themes/spip/images/aide_rtl-12.png differ
diff --git a/www/prive/themes/spip/images/aide_rtl-16.png b/www/prive/themes/spip/images/aide_rtl-16.png
new file mode 100644 (file)
index 0000000..9b6553a
Binary files /dev/null and b/www/prive/themes/spip/images/aide_rtl-16.png differ
index ce4233c..8fd83e3 100644 (file)
@@ -47,6 +47,7 @@
 
 .liste-objets tr > .statut,.liste-objets tr > .picto {width: 16px; padding-left:2px;padding-right:2px;text-align:center;}
 .liste-objets tr > .auteur {width: 80px;}
+.liste-objets tr > .auteur > .inner {display: block;max-height: 10em;overflow: auto;border:0;background: none;}
 .liste-objets tr > .date {width: 90px;}
 .liste-objets tr > .id {width: 40px; text-align:#ENV{right};}
 .liste-objets tr > .action {width: 90px; text-align:#ENV{right};}
index 793aeb2..2fd5a1e 100644 (file)
@@ -66,7 +66,7 @@ label {}
 
 .formo,
 input.text,
-input.password { width: 50%; display: block; margin-bottom: 20px; background: #f8f8f9 center bottom; padding: 4px; border: 1px inset; border-radius: 3px; behavior: url(win_width.htc); }
+input.password { width: 50%; display: block; margin-bottom: 20px; background: #f8f8f9 center bottom; padding: 4px; border: 1px inset; border-radius: 3px; }
 .formo,
 input.text,
 input.password,
index 500da27..b1fc774 100644 (file)
@@ -26,7 +26,7 @@
 
    typo.css.html
    Base typographique
-   Cf.: http://www.spip-contrib.net/3820
+   Cf.: http://contrib.spip.net/3820
 
 -------------------------------------------------------------- */
 ]
index 53cf8dc..8680a1f 100644 (file)
@@ -2,7 +2,7 @@
 
    clear.css
    Classes pour faciliter la composition
-   Cf.: http://www.spip-contrib.net/3820
+   Cf.: http://contrib.spip.net/3820
 
 -------------------------------------------------------------- */
 
index 5333494..503586e 100644 (file)
@@ -2,7 +2,7 @@
 
    form.css
    Base pour formulaires
-   Cf.: http://www.spip-contrib.net/3820
+   Cf.: http://contrib.spip.net/3820
 
 -------------------------------------------------------------- */
 
index 36579e9..18d72f1 100644 (file)
@@ -35,7 +35,7 @@ blockquote.spip { min-height: 40px; background: url(img/quote.png) no-repeat; }
 .spip_code,
 .spip_cadre { font-family: 'Courier New', Courier, monospace; font-size: 1em; }
 
-/* Enluminures typo V3 / Cf.: http://www.spip-contrib.net/3118 */
+/* Enluminures typo V3 / Cf.: http://contrib.spip.net/3118 */
 sc, .sc { font-variant: small-caps; }
 .caractencadre-spip { background-color: #FFFFCC; color: purple; }
 .caractencadre2-spip { background-color: #FFFFCC; color: orange; }
index 1f0212b..9074efe 100644 (file)
@@ -2,7 +2,7 @@
 
    typo.css
    Base typographique
-   Cf.: http://www.spip-contrib.net/3820
+   Cf.: http://contrib.spip.net/3820
 
 -------------------------------------------------------------- */
 
index 9b6330a..f0cbf1d 100644 (file)
@@ -3,7 +3,7 @@
 [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
 [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
 [(#ENV{editable})
-<form method='post' action='#ENV{action}#formulaire_ecrire_auteur#ENV{id}' enctype='multipart/form-data'>
+<form method='post' action='[(#ENV{action}|ancre_url{formulaire_ecrire_auteur#ENV{id}})]' enctype='multipart/form-data'>
        [(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ]
        #ACTION_FORMULAIRE{#ENV{action}}
        [(#REM) Previsualisation... ]
index d4a918f..c00b0b5 100644 (file)
@@ -52,7 +52,7 @@ function formulaires_mot_de_passe_charger_dist($id_auteur=null, $jeton=null){
                        $valeurs['_hidden'] = '<input type="hidden" name="p" value="'.$jeton.'" />';
        }
        else {
-               $valeurs['_hidden'] = _T('pass_erreur_code_inconnu');
+               $valeurs['message_erreur'] = _T('pass_erreur_code_inconnu');
                $valeurs['editable'] =  false; // pas de saisie
        }
        $valeurs['oubli']='';
@@ -99,7 +99,8 @@ function formulaires_mot_de_passe_verifier_dist($id_auteur=null, $jeton=null){
  * @param int $id_auteur
  */
 function formulaires_mot_de_passe_traiter_dist($id_auteur=null, $jeton=null){
-       $message = '';
+       $res = array('message_ok'=>'');
+       refuser_traiter_formulaire_ajax(); // puisqu'on va loger l'auteur a la volee (c'est bonus)
 
        // compatibilite anciens appels du formulaire
        if (is_null($jeton)) $jeton = _request('p');
@@ -110,13 +111,20 @@ function formulaires_mot_de_passe_traiter_dist($id_auteur=null, $jeton=null){
         && ($oubli = _request('oubli'))) {
                include_spip('action/editer_auteur');
                include_spip('action/inscrire_auteur');
-               auteurs_set($id_auteur, array('pass'=>$oubli));
-               auteur_effacer_jeton($id_auteur);
+               if ($err = auteur_modifier($id_auteur, array('pass'=>$oubli))){
+                       $res = array('message_erreur'=>$err);
+               }
+               else {
+                       auteur_effacer_jeton($id_auteur);
+                       $login = $row['login'];
+                       $res['message_ok'] = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
+                       "<br />" . _T('pass_rappel_login', array('login' => $login));
 
-               $login = $row['login'];
-               $message = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
-               "<br />" . _T('pass_rappel_login', array('login' => $login));
+                       include_spip('inc/auth');
+                       $row = sql_fetsel("*","spip_auteurs","id_auteur=".intval($id_auteur));
+                       auth_loger($row);
+               }
        }
-       return array('message_ok'=>$message);
+       return $res;
 }
 ?>
index 4bb6ba6..48ba0ea 100644 (file)
@@ -18,7 +18,7 @@ function formulaires_oubli_charger_dist(){
        return $valeurs;
 }
 
-// http://doc.spip.org/@message_oubli
+// http://code.spip.net/@message_oubli
 function message_oubli($email, $param)
 {
        $r = formulaires_oubli_mail($email);
@@ -50,7 +50,7 @@ function formulaires_oubli_traiter_dist(){
 
 
 // fonction qu'on peut redefinir pour filtrer les adresses mail
-// http://doc.spip.org/@test_oubli
+// http://code.spip.net/@test_oubli
 function test_oubli_dist($email)
 {
        include_spip('inc/filtres'); # pour email_valide()
index 99529d4..6339881 100644 (file)
@@ -1,8 +1,8 @@
 <BOUCLE_un_article(ARTICLES){id_article}>
        <item[ xml:lang="(#LANG)"]>
                <title>[(#TITRE|supprimer_tags|texte_backend)]</title>
-               <link>[(#URL_ARTICLE|url_absolue)]</link>
-               [<guid isPermaLink="true">(#URL_ARTICLE|url_absolue)</guid>]
+               <link>[(#URL_ARTICLE|url_absolue|texte_backend)]</link>
+               [<guid isPermaLink="true">(#URL_ARTICLE|url_absolue|texte_backend)</guid>]
                [<dc:date>(#DATE|date_iso)</dc:date>]
                <dc:format>text/html</dc:format>
                [<dc:language>(#LANG)</dc:language>]
        sous forme de "microformats"
 
 ]<BOUCLE_rubrique_mf(RUBRIQUES){id_rubrique}>-
-[&lt;a href="[(#URL_RUBRIQUE|url_absolue)]" rel="directory"&gt;(#TITRE|supprimer_tags|texte_backend)&lt;/a&gt;]
+[&lt;a href="[(#URL_RUBRIQUE|url_absolue|texte_backend)]" rel="directory"&gt;(#TITRE|supprimer_tags|texte_backend)&lt;/a&gt;]
 </BOUCLE_rubrique_mf><B_mots_mf>
 / <BOUCLE_mots_mf(MOTS){id_article}{", "}>
-[&lt;a href="[(#URL_MOT|url_absolue)]" rel="tag"&gt;(#TITRE|texte_backend)&lt;/a&gt;]</BOUCLE_mots_mf>
+[&lt;a href="[(#URL_MOT|url_absolue|texte_backend)]" rel="tag"&gt;(#TITRE|texte_backend)&lt;/a&gt;]</BOUCLE_mots_mf>
 
                </description>
 
@@ -37,7 +37,7 @@
                ][&lt;div class='rss_chapo'&gt;(#CHAPO|texte_backend)&lt;/div&gt;
                ][&lt;div class='rss_texte'&gt;(#TEXTE|
                        image_reduire{500,0}|texte_backend)&lt;/div&gt;
-               ][&lt;div class="hyperlien"&gt;<:voir_en_ligne|html2unicode:> : &lt;a href="(#URL_SITE)" class="spip_out"&gt;[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]}|texte_backend)]&lt;/a&gt;&lt;/div&gt;
+               ][&lt;div class="hyperlien"&gt;<:voir_en_ligne|html2unicode:> : &lt;a href="(#URL_SITE|texte_backend)" class="spip_out"&gt;[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]}|texte_backend)]&lt;/a&gt;&lt;/div&gt;
                ][&lt;hr /&gt;
                &lt;div class='rss_notes'&gt;(#NOTES|texte_backend)&lt;/div&gt;
                ][&lt;div class='rss_ps'&gt;(#PS|texte_backend)&lt;/div&gt;]
@@ -48,7 +48,7 @@
        Le bloc qui suit diffuse l'adresse des documents associes aux articles ;
        ajouter par ex. {extension=mp3} pour limiter a un certain type de document.
 ]              <BOUCLE_documents(DOCUMENTS){id_article}{mode=document}{doublons}>[
-               <enclosure url="(#URL_DOCUMENT|url_absolue|unique)"[ length="(#TAILLE)"][ type="(#MIME_TYPE)"] />]
+               <enclosure url="(#URL_DOCUMENT|url_absolue|texte_backend|unique)"[ length="(#TAILLE)"][ type="(#MIME_TYPE)"] />]
                </BOUCLE_documents>
 
        </item>
index c682f4f..ae52684 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
        prefix="dist"
        categorie="squelette"
-       version="3.0.7"
+       version="3.0.8"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="icon/skel.png"
index 317ea07..b637143 100644 (file)
@@ -6,6 +6,7 @@
 # @template: #SQUELETTE
 
 User-agent: *
+Allow:    /local/cache-css/
 Disallow: /local/
 Disallow: /ecrire/
 Disallow: /plugins-dist/
index 859b671..dc43297 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
-Origine: svn://trac.rezo.net/spip/tags/spip-3.0.17
-Revision: 21515
-Dernier commit: 2014-08-13 14:37:48 +0200 
+Origine: svn://trac.rezo.net/spip/tags/spip-3.0.19
+Revision: 22089
+Dernier commit: 2015-05-09 01:22:56 +0200 
 </text_version>
-<origine>svn://trac.rezo.net/spip/tags/spip-3.0.17</origine>
-<revision>21515</revision>
-<commit>2014-08-13 14:37:48 +0200 </commit>
+<origine>svn://trac.rezo.net/spip/tags/spip-3.0.19</origine>
+<revision>22089</revision>
+<commit>2015-05-09 01:22:56 +0200 </commit>
 </svn_revision>
\ No newline at end of file